@kimafinance/kima-transaction-widget 1.2.13-beta.1 → 1.2.15-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/assets/icons/Cross.tsx","../src/assets/icons/Minimize.tsx","../src/assets/icons/FooterLogo.tsx","../src/assets/icons/Check.tsx","../src/assets/icons/Warning.tsx","../src/assets/icons/ArrowRight.tsx","../src/assets/icons/Arrow.tsx","../src/assets/icons/Ethereum.tsx","../src/assets/icons/Solana.tsx","../src/assets/icons/Polygon.tsx","../src/assets/icons/Avalanche.tsx","../src/assets/icons/Arbitrum.tsx","../src/assets/icons/Optimism.tsx","../src/assets/icons/USDT.tsx","../src/assets/icons/Copy.tsx","../src/assets/icons/Bank.tsx","../src/assets/icons/BSC.tsx","../src/assets/icons/KEUR.tsx","../src/assets/icons/Tron.tsx","../src/utils/config.tsx","../src/utils/constants.tsx","../src/interface.tsx","../src/store/optionSlice.tsx","../src/store/index.tsx","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/store/selectors.tsx","../src/assets/loading/180-ring.tsx","../src/components/reusable/Progressbar.tsx","../src/components/reusable/ExternalLink.tsx","../src/components/reusable/NetworkLabel.tsx","../src/components/reusable/PrimaryButton.tsx","../src/components/reusable/SecondaryButton.tsx","../src/helpers/fetch-wrapper.tsx","../src/hooks/useNetworkOptions.tsx","../src/components/reusable/NetworkSelect.tsx","../src/components/reusable/SolanaWalletSelect.tsx","../src/components/reusable/TronWalletSelect.tsx","../src/hooks/useIsWalletReady.tsx","../src/utils/functions.tsx","../src/utils/testId.tsx","../src/utils/solana/createAssociatedTokenAccountInstruction.ts","../src/utils/solana/getAccountInfo.ts","../src/utils/solana/getAssociatedTokenAddress.ts","../src/utils/solana/getOrCreateAssociatedTokenAccount.ts","../src/tronweb.tsx","../src/helpers/functions.tsx","../src/hooks/useBalance.tsx","../src/components/reusable/WalletButton.tsx","../src/components/reusable/CoinDropdown.tsx","../src/components/reusable/NetworkDropdown.tsx","../src/components/reusable/ConfirmDetails.tsx","../src/components/reusable/AddressInput.tsx","../src/components/reusable/CustomCheckbox.tsx","../src/components/reusable/CopyButton.tsx","../src/components/reusable/StepBox.tsx","../src/components/reusable/BankInput.tsx","../src/components/modals/HelpPopup.tsx","../src/components/modals/HashPopup.tsx","../src/components/modals/SolanaWalletConnectModal.tsx","../src/components/modals/TronWalletConnectModal.tsx","../src/components/modals/BankPopup.tsx","../src/components/TransactionWidget.tsx","../src/components/reusable/SingleForm.tsx","../src/components/reusable/CoinSelect.tsx","../src/hooks/useServiceFee.tsx","../node_modules/bn.js/lib/bn.js","../src/utils/solana/createTransferInstruction.ts","../src/utils/func/bytes.js","../src/utils/func/code.js","../src/utils/func/base58.js","../src/utils/func/index.js","../src/hooks/useAllowance.tsx","../src/components/reusable/AddressInputWizard.tsx","../src/hooks/useCurrencyOptions.tsx","../src/hooks/useWidth.tsx","../src/hooks/useSign.tsx","../src/components/TransferWidget.tsx","../src/components/KimaTransactionWidget.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react'\r\n\r\nconst Cross = ({ width = 32, height = 32, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M9.656 1.688L5.944 5.4L9.656 9.112L8.712 10.056L5 6.344L1.288 10.056L0.344 9.112L4.056 5.4L0.344 1.688L1.288 0.743999L5 4.456L8.712 0.743999L9.656 1.688Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Cross\r\n","import React from 'react'\r\n\r\nconst Minimize = ({ width = 16, height = 1, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 1'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='11' height='1' fill={fill} />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Minimize\r\n","import React from 'react'\r\n\r\nconst FooterLogo = ({ width = 32, height = 32, fill = '#C5C5C5', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 103 20'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M91.483 10.2491C91.483 9.61748 91.8537 9.0958 92.54 9.0958C93.1091 9.11485 93.5697 9.63311 93.5697 10.2491V14.2164C93.5697 14.24 93.5744 14.2633 93.5834 14.2851C93.5924 14.3069 93.6057 14.3266 93.6224 14.3433C93.6391 14.36 93.6589 14.3731 93.6807 14.3821C93.7025 14.3911 93.7259 14.3957 93.7495 14.3956H95.5465C95.5941 14.3956 95.6397 14.3767 95.6733 14.3431C95.7069 14.3095 95.7258 14.2639 95.7258 14.2164V9.80993C95.7258 8.20338 94.7782 7.15953 93.2678 7.15953C92.224 7.15953 91.5377 7.61282 91.0986 8.10519C91.0971 8.10731 91.0951 8.10904 91.0928 8.11023C91.0905 8.11142 91.088 8.11205 91.0854 8.11205C91.0828 8.11205 91.0802 8.11142 91.0779 8.11023C91.0757 8.10904 91.0737 8.10731 91.0722 8.10519C90.6731 7.57326 90.0415 7.16099 89.1349 7.16099C88.3109 7.16099 87.6109 7.50292 87.2661 8.00848L87.2539 8.00506V7.50389C87.2539 7.48031 87.2493 7.45695 87.2404 7.43514C87.2314 7.41334 87.2182 7.39352 87.2015 7.37682C87.1849 7.36012 87.1651 7.34687 87.1433 7.33783C87.1215 7.32879 87.0982 7.32414 87.0746 7.32414H85.2912C85.244 7.32491 85.199 7.34417 85.1658 7.37778C85.1327 7.4114 85.114 7.45668 85.1139 7.50389V14.2164C85.1139 14.2639 85.1328 14.3095 85.1664 14.3431C85.2 14.3767 85.2456 14.3956 85.2932 14.3956H87.0766C87.1241 14.3956 87.1697 14.3767 87.2033 14.3431C87.2369 14.3095 87.2558 14.2639 87.2558 14.2164V10.2491C87.2558 9.61748 87.6266 9.0958 88.2997 9.0958C88.8756 9.11485 89.343 9.63311 89.343 10.2491V14.2164C89.343 14.2639 89.3619 14.3095 89.3955 14.3431C89.4292 14.3767 89.4748 14.3956 89.5223 14.3956H91.3057C91.3532 14.3956 91.3988 14.3767 91.4324 14.3431C91.4661 14.3095 91.4849 14.2639 91.4849 14.2164L91.483 10.2491ZM100.927 14.2164C100.927 14.2639 100.946 14.3095 100.979 14.3431C101.013 14.3767 101.059 14.3956 101.106 14.3956H102.821C102.868 14.3956 102.914 14.3767 102.947 14.3431C102.981 14.3095 103 14.2639 103 14.2164V10.0156C103 8.20338 101.819 7.15953 99.801 7.15953C99.0649 7.15367 98.0533 7.36712 97.4691 7.64555C97.4394 7.66035 97.4145 7.68324 97.3972 7.71158C97.3799 7.73993 97.371 7.77257 97.3714 7.80577V9.2526C97.3714 9.28314 97.3792 9.31319 97.3941 9.33986C97.409 9.36654 97.4304 9.38895 97.4565 9.40497C97.4825 9.42099 97.5122 9.43008 97.5427 9.43136C97.5732 9.43265 97.6035 9.4261 97.6308 9.41232C98.1364 9.16467 98.7142 8.98589 99.3214 8.98589C100.209 8.96831 100.928 9.46654 100.928 10.0981V10.147C100.928 10.17 100.923 10.1927 100.911 10.2128C100.9 10.2328 100.883 10.2494 100.863 10.261C100.844 10.2725 100.821 10.2784 100.798 10.2782C100.775 10.278 100.752 10.2717 100.733 10.2598C100.402 10.0644 99.8577 9.89053 99.2779 9.89053C97.7812 9.89053 96.5454 10.7966 96.5454 12.1697C96.5454 13.6527 97.7812 14.5593 99.209 14.5593C100.033 14.5593 100.678 14.2296 100.925 13.955L100.927 14.2164ZM100.954 12.1712C100.954 12.7344 100.336 13.0362 99.7463 13.0362C99.1284 13.0362 98.5252 12.7344 98.5252 12.1712C98.5252 11.6221 99.1294 11.3203 99.7463 11.3203C100.336 11.3203 100.954 11.6221 100.954 12.1712Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M81.6947 14.3956H83.478C83.5256 14.3956 83.5712 14.3767 83.6048 14.3431C83.6384 14.3095 83.6573 14.2639 83.6573 14.2164V7.5039C83.6573 7.45635 83.6384 7.41075 83.6048 7.37713C83.5712 7.34352 83.5256 7.32463 83.478 7.32463H81.6947C81.6471 7.32463 81.6015 7.34352 81.5679 7.37713C81.5343 7.41075 81.5154 7.45635 81.5154 7.5039V14.2164C81.5154 14.2639 81.5343 14.3095 81.5679 14.3431C81.6015 14.3767 81.6471 14.3956 81.6947 14.3956Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M82.6003 4.00014H82.5705C82.3972 3.99758 82.2252 4.02978 82.0646 4.09482C81.904 4.15987 81.7581 4.25645 81.6355 4.37885C81.5129 4.50125 81.416 4.647 81.3507 4.80747C81.2853 4.96794 81.2528 5.13988 81.255 5.31313C81.2544 5.4851 81.288 5.65548 81.354 5.81429C81.4199 5.97311 81.5169 6.11718 81.6392 6.23807C81.7615 6.35896 81.9067 6.45425 82.0662 6.51837C82.2258 6.58248 82.3966 6.61413 82.5685 6.61147H82.5983C82.7698 6.61147 82.9396 6.5777 83.098 6.51208C83.2564 6.44647 83.4003 6.35029 83.5216 6.22905C83.6428 6.10781 83.739 5.96387 83.8046 5.80546C83.8702 5.64705 83.904 5.47727 83.904 5.30581C83.904 5.13434 83.8702 4.96456 83.8046 4.80615C83.739 4.64774 83.6428 4.5038 83.5216 4.38256C83.4003 4.26132 83.2564 4.16515 83.098 4.09953C82.9396 4.03391 82.7698 4.00014 82.5983 4.00014'\r\n fill={fill}\r\n />\r\n <path\r\n d='M79.7198 12.3895C79.4939 12.1693 79.196 12.0384 78.8811 12.0207C77.7161 11.9836 77.5481 11.016 77.5481 10.7717C77.5481 10.5055 77.7332 9.57205 78.8792 9.53542C79.2181 9.51481 79.5358 9.3633 79.7651 9.11289C79.9944 8.86248 80.1175 8.53275 80.1083 8.19331C80.0991 7.85388 79.9584 7.53129 79.7158 7.29366C79.4733 7.05602 79.1479 6.92193 78.8083 6.91969H78.7995C78.4598 6.92039 78.1336 7.05357 77.8905 7.29092C77.6131 7.56153 77.4963 7.92593 77.4963 8.28397C77.4963 8.59903 77.2877 9.46264 76.3196 9.46264C75.9552 9.46264 75.5727 9.56863 75.2938 9.85341C75.2816 9.86562 75.2723 9.87978 75.2611 9.89297V9.8876C75.1937 9.95745 75.1805 9.90225 75.1815 9.86464V4.59704C75.1815 4.54958 75.1627 4.50406 75.1291 4.47046C75.0956 4.43685 75.0502 4.41791 75.0027 4.41778H73.1793C73.1317 4.41778 73.0861 4.43666 73.0525 4.47028C73.0189 4.5039 73 4.5495 73 4.59704V14.2618C73 14.3093 73.0189 14.3549 73.0525 14.3886C73.0861 14.4222 73.1317 14.4411 73.1793 14.4411H75.0027C75.0502 14.4409 75.0957 14.422 75.1293 14.3884C75.1629 14.3548 75.1818 14.3093 75.182 14.2618V11.691C75.182 11.6534 75.1942 11.5982 75.2616 11.6681V11.6637C75.2723 11.6764 75.2816 11.6895 75.2933 11.7018C75.5723 11.988 75.9493 12.0925 76.3191 12.0925C77.2877 12.0925 77.4963 13.0695 77.4963 13.2712C77.4963 13.5501 77.6131 13.9936 77.8905 14.2642C78.1346 14.5025 78.4623 14.6357 78.8034 14.6355C79.1505 14.6361 79.4836 14.499 79.7296 14.2542C79.9757 14.0093 80.1144 13.6769 80.1155 13.3298V13.3215C80.115 13.1473 80.0798 12.975 80.0118 12.8146C79.9439 12.6542 79.8446 12.5091 79.7198 12.3876'\r\n fill={fill}\r\n />\r\n <path\r\n d='M6.516 8.084C6.516 8.78 6.276 9.36 5.796 9.824C5.324 10.28 4.6 10.508 3.624 10.508H2.016V14H0.924V5.636H3.624C4.568 5.636 5.284 5.864 5.772 6.32C6.268 6.776 6.516 7.364 6.516 8.084ZM3.624 9.608C4.232 9.608 4.68 9.476 4.968 9.212C5.256 8.948 5.4 8.572 5.4 8.084C5.4 7.052 4.808 6.536 3.624 6.536H2.016V9.608H3.624ZM10.5412 14.108C9.92522 14.108 9.36522 13.968 8.86122 13.688C8.36522 13.408 7.97322 13.012 7.68522 12.5C7.40522 11.98 7.26522 11.38 7.26522 10.7C7.26522 10.028 7.40922 9.436 7.69722 8.924C7.99322 8.404 8.39322 8.008 8.89722 7.736C9.40122 7.456 9.96522 7.316 10.5892 7.316C11.2132 7.316 11.7772 7.456 12.2812 7.736C12.7852 8.008 13.1812 8.4 13.4692 8.912C13.7652 9.424 13.9132 10.02 13.9132 10.7C13.9132 11.38 13.7612 11.98 13.4572 12.5C13.1612 13.012 12.7572 13.408 12.2452 13.688C11.7332 13.968 11.1652 14.108 10.5412 14.108ZM10.5412 13.148C10.9332 13.148 11.3012 13.056 11.6452 12.872C11.9892 12.688 12.2652 12.412 12.4732 12.044C12.6892 11.676 12.7972 11.228 12.7972 10.7C12.7972 10.172 12.6932 9.724 12.4852 9.356C12.2772 8.988 12.0052 8.716 11.6692 8.54C11.3332 8.356 10.9692 8.264 10.5772 8.264C10.1772 8.264 9.80922 8.356 9.47322 8.54C9.14522 8.716 8.88122 8.988 8.68122 9.356C8.48122 9.724 8.38122 10.172 8.38122 10.7C8.38122 11.236 8.47722 11.688 8.66922 12.056C8.86922 12.424 9.13322 12.7 9.46122 12.884C9.78922 13.06 10.1492 13.148 10.5412 13.148ZM23.909 7.424L21.857 14H20.729L19.145 8.78L17.561 14H16.433L14.369 7.424H15.485L16.997 12.944L18.629 7.424H19.745L21.341 12.956L22.829 7.424H23.909ZM30.7927 10.46C30.7927 10.668 30.7807 10.888 30.7567 11.12H25.5007C25.5407 11.768 25.7607 12.276 26.1607 12.644C26.5687 13.004 27.0607 13.184 27.6367 13.184C28.1087 13.184 28.5007 13.076 28.8127 12.86C29.1327 12.636 29.3567 12.34 29.4847 11.972H30.6608C30.4848 12.604 30.1327 13.12 29.6047 13.52C29.0767 13.912 28.4207 14.108 27.6367 14.108C27.0127 14.108 26.4527 13.968 25.9567 13.688C25.4687 13.408 25.0847 13.012 24.8047 12.5C24.5247 11.98 24.3847 11.38 24.3847 10.7C24.3847 10.02 24.5207 9.424 24.7927 8.912C25.0647 8.4 25.4447 8.008 25.9327 7.736C26.4287 7.456 26.9967 7.316 27.6367 7.316C28.2607 7.316 28.8127 7.452 29.2927 7.724C29.7727 7.996 30.1407 8.372 30.3967 8.852C30.6607 9.324 30.7927 9.86 30.7927 10.46ZM29.6647 10.232C29.6647 9.816 29.5727 9.46 29.3887 9.164C29.2047 8.86 28.9527 8.632 28.6327 8.48C28.3207 8.32 27.9727 8.24 27.5887 8.24C27.0367 8.24 26.5647 8.416 26.1727 8.768C25.7887 9.12 25.5687 9.608 25.5127 10.232H29.6647ZM33.1262 8.492C33.3182 8.116 33.5902 7.824 33.9422 7.616C34.3022 7.408 34.7382 7.304 35.2502 7.304V8.432H34.9622C33.7382 8.432 33.1262 9.096 33.1262 10.424V14H32.0342V7.424H33.1262V8.492ZM42.3107 10.46C42.3107 10.668 42.2987 10.888 42.2747 11.12H37.0187C37.0587 11.768 37.2787 12.276 37.6787 12.644C38.0867 13.004 38.5787 13.184 39.1547 13.184C39.6267 13.184 40.0187 13.076 40.3307 12.86C40.6507 12.636 40.8747 12.34 41.0027 11.972H42.1787C42.0027 12.604 41.6507 13.12 41.1227 13.52C40.5947 13.912 39.9387 14.108 39.1547 14.108C38.5307 14.108 37.9707 13.968 37.4747 13.688C36.9867 13.408 36.6027 13.012 36.3227 12.5C36.0427 11.98 35.9027 11.38 35.9027 10.7C35.9027 10.02 36.0387 9.424 36.3107 8.912C36.5827 8.4 36.9627 8.008 37.4507 7.736C37.9467 7.456 38.5147 7.316 39.1547 7.316C39.7787 7.316 40.3307 7.452 40.8107 7.724C41.2907 7.996 41.6587 8.372 41.9147 8.852C42.1787 9.324 42.3107 9.86 42.3107 10.46ZM41.1827 10.232C41.1827 9.816 41.0907 9.46 40.9067 9.164C40.7227 8.86 40.4707 8.632 40.1507 8.48C39.8387 8.32 39.4907 8.24 39.1067 8.24C38.5547 8.24 38.0827 8.416 37.6907 8.768C37.3067 9.12 37.0867 9.608 37.0307 10.232H41.1827ZM43.1441 10.688C43.1441 10.016 43.2801 9.428 43.5521 8.924C43.8241 8.412 44.1961 8.016 44.6681 7.736C45.1481 7.456 45.6841 7.316 46.2761 7.316C46.7881 7.316 47.2641 7.436 47.7041 7.676C48.1441 7.908 48.4801 8.216 48.7121 8.6V5.12H49.8161V14H48.7121V12.764C48.4961 13.156 48.1761 13.48 47.7521 13.736C47.3281 13.984 46.8321 14.108 46.2641 14.108C45.6801 14.108 45.1481 13.964 44.6681 13.676C44.1961 13.388 43.8241 12.984 43.5521 12.464C43.2801 11.944 43.1441 11.352 43.1441 10.688ZM48.7121 10.7C48.7121 10.204 48.6121 9.772 48.4121 9.404C48.2121 9.036 47.9401 8.756 47.5961 8.564C47.2601 8.364 46.8881 8.264 46.4801 8.264C46.0721 8.264 45.7001 8.36 45.3641 8.552C45.0281 8.744 44.7601 9.024 44.5601 9.392C44.3601 9.76 44.2601 10.192 44.2601 10.688C44.2601 11.192 44.3601 11.632 44.5601 12.008C44.7601 12.376 45.0281 12.66 45.3641 12.86C45.7001 13.052 46.0721 13.148 46.4801 13.148C46.8881 13.148 47.2601 13.052 47.5961 12.86C47.9401 12.66 48.2121 12.376 48.4121 12.008C48.6121 11.632 48.7121 11.196 48.7121 10.7ZM55.5527 8.648C55.7767 8.256 56.1047 7.936 56.5367 7.688C56.9687 7.44 57.4607 7.316 58.0127 7.316C58.6047 7.316 59.1367 7.456 59.6087 7.736C60.0807 8.016 60.4527 8.412 60.7247 8.924C60.9967 9.428 61.1327 10.016 61.1327 10.688C61.1327 11.352 60.9967 11.944 60.7247 12.464C60.4527 12.984 60.0767 13.388 59.5967 13.676C59.1247 13.964 58.5967 14.108 58.0127 14.108C57.4447 14.108 56.9447 13.984 56.5127 13.736C56.0887 13.488 55.7687 13.172 55.5527 12.788V14H54.4607V5.12H55.5527V8.648ZM60.0167 10.688C60.0167 10.192 59.9167 9.76 59.7167 9.392C59.5167 9.024 59.2447 8.744 58.9007 8.552C58.5647 8.36 58.1927 8.264 57.7847 8.264C57.3847 8.264 57.0127 8.364 56.6687 8.564C56.3327 8.756 56.0607 9.04 55.8527 9.416C55.6527 9.784 55.5527 10.212 55.5527 10.7C55.5527 11.196 55.6527 11.632 55.8527 12.008C56.0607 12.376 56.3327 12.66 56.6687 12.86C57.0127 13.052 57.3847 13.148 57.7847 13.148C58.1927 13.148 58.5647 13.052 58.9007 12.86C59.2447 12.66 59.5167 12.376 59.7167 12.008C59.9167 11.632 60.0167 11.192 60.0167 10.688ZM68.0341 7.424L64.0741 17.096H62.9461L64.2421 13.928L61.5901 7.424H62.8021L64.8661 12.752L66.9061 7.424H68.0341Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default FooterLogo\r\n","import React from 'react'\r\n\r\nconst Check = ({ width = 15, height = 11, fill = '#03a932', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 15 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.7319 0.295798C13.639 0.20207 13.5284 0.127675 13.4065 0.0769067C13.2846 0.026138 13.1539 0 13.0219 0C12.8899 0 12.7592 0.026138 12.6373 0.0769067C12.5155 0.127675 12.4049 0.20207 12.3119 0.295798L4.86192 7.7558L1.73192 4.6158C1.6354 4.52256 1.52146 4.44925 1.3966 4.40004C1.27175 4.35084 1.13843 4.32671 1.00424 4.32903C0.870064 4.33135 0.737655 4.36008 0.614576 4.41357C0.491498 4.46706 0.380161 4.54428 0.286922 4.6408C0.193684 4.73732 0.12037 4.85126 0.0711659 4.97612C0.0219619 5.10097 -0.00216855 5.2343 0.000152918 5.36848C0.00247438 5.50266 0.0312022 5.63507 0.0846957 5.75814C0.138189 5.88122 0.215401 5.99256 0.311922 6.0858L4.15192 9.9258C4.24489 10.0195 4.35549 10.0939 4.47735 10.1447C4.59921 10.1955 4.72991 10.2216 4.86192 10.2216C4.99393 10.2216 5.12464 10.1955 5.2465 10.1447C5.36836 10.0939 5.47896 10.0195 5.57192 9.9258L13.7319 1.7658C13.8334 1.67216 13.9144 1.5585 13.9698 1.432C14.0252 1.30551 14.0539 1.1689 14.0539 1.0308C14.0539 0.892697 14.0252 0.756091 13.9698 0.629592C13.9144 0.503092 13.8334 0.389441 13.7319 0.295798Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Check\r\n","import React from 'react'\r\n\r\nconst Warning = ({ width = 14, height = 13, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 13'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.8418 11.0561L8.16007 0.683372C8.04697 0.476647 7.87973 0.304041 7.67598 0.183764C7.47223 0.0634876 7.23954 0 7.00245 0C6.76537 0 6.53267 0.0634876 6.32893 0.183764C6.12518 0.304041 5.95794 0.476647 5.84484 0.683372L0.167185 11.0561C0.05491 11.2556 -0.00270098 11.4807 9.72867e-05 11.7091C0.00289555 11.9376 0.0660053 12.1613 0.183133 12.358C0.300261 12.5546 0.467315 12.7174 0.667636 12.8301C0.867956 12.9427 1.09454 13.0013 1.3248 13H12.6842C12.9121 12.9997 13.1361 12.9408 13.3342 12.829C13.5323 12.7172 13.6977 12.5563 13.8144 12.3621C13.931 12.1678 13.9949 11.9469 13.9997 11.7208C14.0045 11.4947 13.9501 11.2713 13.8418 11.0723V11.0561ZM6.47887 3.26032C6.47887 3.10964 6.5392 2.96513 6.6466 2.85858C6.754 2.75203 6.89966 2.69218 7.05154 2.69218C7.20342 2.69218 7.34908 2.75203 7.45648 2.85858C7.56388 2.96513 7.62421 3.10964 7.62421 3.26032V8.13015C7.62421 8.28083 7.56388 8.42534 7.45648 8.53189C7.34908 8.63844 7.20342 8.6983 7.05154 8.6983C6.89966 8.6983 6.754 8.63844 6.6466 8.53189C6.5392 8.42534 6.47887 8.28083 6.47887 8.13015V3.26032ZM7.05154 11.3158C6.90592 11.3158 6.76356 11.273 6.64248 11.1927C6.52139 11.1125 6.42702 10.9984 6.37129 10.8649C6.31556 10.7314 6.30098 10.5845 6.32939 10.4428C6.3578 10.3011 6.42793 10.171 6.5309 10.0688C6.63387 9.96667 6.76507 9.8971 6.9079 9.86892C7.05072 9.84073 7.19877 9.8552 7.33331 9.91048C7.46785 9.96577 7.58284 10.0594 7.66375 10.1795C7.74465 10.2997 7.78783 10.4409 7.78783 10.5854C7.78783 10.6813 7.76879 10.7763 7.73179 10.8649C7.69479 10.9535 7.64055 11.034 7.57218 11.1019C7.50381 11.1697 7.42264 11.2235 7.33331 11.2602C7.24398 11.2969 7.14823 11.3158 7.05154 11.3158Z'\r\n fill='#FFB03A'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Warning\r\n","import React from 'react'\r\n\r\nconst ArrowRight = ({ width = 12, height = 9, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 12 9'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M11.3536 4.85355C11.5488 4.65829 11.5488 4.34171 11.3536 4.14645L8.17157 0.964466C7.97631 0.769204 7.65973 0.769204 7.46447 0.964466C7.2692 1.15973 7.2692 1.47631 7.46447 1.67157L10.2929 4.5L7.46447 7.32843C7.2692 7.52369 7.2692 7.84027 7.46447 8.03553C7.65973 8.2308 7.97631 8.2308 8.17157 8.03553L11.3536 4.85355ZM0.5 5H11V4H0.5V5Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default ArrowRight\r\n","import React from 'react'\r\n\r\nconst Arrow = ({ width = 27, height = 51, fill = 'black', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 51'\r\n xmlns='http://www.w3.org/2000/svg'\r\n fill='transparent'\r\n {...rest}\r\n >\r\n <path\r\n d='M25 49L2 25.5L25 2'\r\n stroke={fill}\r\n strokeWidth='4'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Arrow\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern0)' />\r\n <defs>\r\n <pattern\r\n id='pattern0'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_184_1295' transform='scale(0.00520833)' />\r\n </pattern>\r\n <image\r\n id='image0_184_1295'\r\n width='192'\r\n height='192'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAACBFBMVEUAAADv7//09PTy8vXx9Pbz9Pjy9ffy9fjy9Pfx9Pfy9Pby9Pfx8/Xz8/Py8vTx9Pjv7/fy9Pfy9Pfy9ffz9ffy8/b09vjy9fXz9Pb09/ry9Pjz9fnv7/Tv9PTk5uiCg4Ssra9jZGWQkpTIycw7PDza296QkZIvMDBgYWK6vL21t7lHSUnm6OqEhojNz9Ly9PSztLednqB4envBw8Xv8vWen6Hv8/NsbW7x8/bP0NOpqqyJiovz8/dUVVXv7++lpqjy8/jz9Pbx9PZ9fn9bXF01NjYdHh4sLCw5Ojo0NTUwMTETExNucHBISElgYWE+Pz9zdHUaGhomJyfv7/oWFxckJSUtLi7x8vV4eXpRUlMhISHx8/Z1d3fy9PdnaGlERkaEhYZ6fHxrbW1AQUGDhYVWV1cqKipERUVOT1BcXV6LjI1iY2QyMzNMTU7Fx8lLTU2Sk5ba3N+HiIpKS0zW2Nt7fH4vLy+6vL6rrK6ChIXk5umfoKJYWVpXWVmQkpPd3+GTlJaXmJnOz9Lm5+qFhoepq6y6u77r7fB1dneRkpQ7PT2EhoeQkZPIysxISUnW2NrW19uztLa3uLqXmJp4enpTVVVvcHKsrrBmZ2g8PT2eoKJsbm+en6A9PT7v8/dsbm7BwsXd3+KEhYfx8/fy9fbP0dPx9Pjx8/bv8veJiozy9fnv8vQEFD2BAAAArHRSTlMAEDBQcI+fr7/f7/+AQGDPIJ9g33+vb1CPX+9/MDD//////////////////////2D/////UP9A/5D///9A/xD/r8/P/////////////////////zD///+g////sP/f/////////////////////////////////////////////////////////////////////////////////////0D/////gK//cO9g/1BgIk4dsgAACKdJREFUeNrM1YV1wEAMA9BjsMJOGfYfszBA0YnyJ5De6fmcPR9iyqW23gWfpPfWypBi8O7afEi5Cb4gLafxouGnPOOH5hyXa4Ufc8cvzWu8SvrUBH9Tt4U/nIZ/aZt3PGMW/JusI206MKIbIf4uMKTr4s60ZIG1EyssKwwYVGCMh19hFxxI09GHU3EwjUeu5wYGeDu6FRig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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Solana = ({ width = 14, height = 14, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 14'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M4.19214 0L4.10059 0.311195V9.34137L4.19214 9.43276L8.38385 6.95506L4.19214 0Z'\r\n fill='#343434'\r\n />\r\n <path d='M4.1917 0L0 6.95505L4.1917 9.43279V5.04982V0Z' fill='#8C8C8C' />\r\n <path\r\n d='M4.19222 10.2264L4.14062 10.2893V13.506L4.19222 13.6568L8.38641 7.74994L4.19222 10.2264Z'\r\n fill='#3C3C3B'\r\n />\r\n <path\r\n d='M4.1917 13.6567V10.2264L0 7.74991L4.1917 13.6567Z'\r\n fill='#8C8C8C'\r\n />\r\n <path\r\n d='M4.19141 9.43272L8.38305 6.95504L4.19141 5.0498V9.43272Z'\r\n fill='#141414'\r\n />\r\n <path d='M0 6.95503L4.19164 9.4327V5.04979L0 6.95503Z' fill='#393939' />\r\n <rect width='14' height='14' fill='url(#pattern1)' />\r\n <defs>\r\n <pattern\r\n id='pattern1'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_4_722' transform='scale(0.00316456)' />\r\n </pattern>\r\n <image\r\n id='image0_4_722'\r\n width='316'\r\n height='316'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Solana\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 27, height = 27, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 27'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <mask\r\n id='mask0_214_508'\r\n style={{ maskType: 'alpha' }}\r\n maskUnits='userSpaceOnUse'\r\n x='0'\r\n y='0'\r\n width='27'\r\n height='27'\r\n >\r\n <circle cx='13.0357' cy='13.0357' r='13.0357' fill='#D9D9D9' />\r\n </mask>\r\n <g mask='url(#mask0_214_508)'></g>\r\n <g clipPath='url(#clip0_214_508)'>\r\n <path\r\n d='M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26Z'\r\n fill='#8247E5'\r\n />\r\n <path\r\n d='M17.3028 10.2187C16.991 10.0373 16.5856 10.0373 16.2426 10.2187L13.8105 11.6094L12.1579 12.5164L9.72584 13.9071C9.41401 14.0885 9.00868 14.0885 8.66568 13.9071L6.73246 12.8187C6.42066 12.6373 6.2024 12.3048 6.2024 11.9419V9.79545C6.2024 9.43266 6.38948 9.1001 6.73246 8.91871L8.6345 7.86055C8.94629 7.67916 9.35165 7.67916 9.69466 7.86055L11.5967 8.91871C11.9085 9.1001 12.1267 9.43266 12.1267 9.79545V11.1861L13.7793 10.2489V8.85823C13.7793 8.49545 13.5922 8.16288 13.2493 7.98149L9.72584 5.98614C9.41401 5.80475 9.00868 5.80475 8.66568 5.98614L5.07988 7.98149C4.73688 8.16288 4.5498 8.49545 4.5498 8.85823V12.8792C4.5498 13.2419 4.73688 13.5745 5.07988 13.7559L8.66568 15.7512C8.9775 15.9327 9.38283 15.9327 9.72584 15.7512L12.1579 14.3908L13.8105 13.4536L16.2426 12.0931C16.5544 11.9117 16.9598 11.9117 17.3028 12.0931L19.2048 13.1512C19.5166 13.3327 19.7349 13.6652 19.7349 14.028V16.1745C19.7349 16.5373 19.5478 16.8699 19.2048 17.0512L17.3028 18.1396C16.991 18.321 16.5856 18.321 16.2426 18.1396L14.3406 17.0815C14.0288 16.9001 13.8105 16.5675 13.8105 16.2048V14.8141L12.1579 15.7512V17.1419C12.1579 17.5048 12.345 17.8373 12.688 18.0187L16.2738 20.0141C16.5856 20.1954 16.991 20.1954 17.3339 20.0141L20.9197 18.0187C21.2315 17.8373 21.4498 17.5048 21.4498 17.1419V13.121C21.4498 12.7582 21.2627 12.4257 20.9197 12.2443L17.3028 10.2187Z'\r\n fill='white'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_214_508'>\r\n <rect width='26' height='26' fill='white' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Avalanche = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern2)' />\r\n <defs>\r\n <pattern\r\n id='pattern2'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_494' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_494'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAOZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAhAAAAZgEyAAIAAAAUAAAAiIdpAAQAAAABAAAAnAAAAAAAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkAADIwMjA6MDY6MjEgMTI6MTc6MjUAAASQBAACAAAAFAAAANKgAQADAAAAAQABAACgAgAEAAAAAQAAAQCgAwAEAAAAAQAAAQAAAAAAMjAyMDowNjoyMSAxMjoxNDoyNQAyPGR9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKn2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCAyMS4wIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDIwLTA2LTIxVDEyOjE0OjI1LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAyMC0wNi0yMVQxMjoxNzoyNS0wNDowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGVhNTMzNjMtYzY2OS00YWVjLWE5ZmUtNzQ5YzUzMmFjZGZiPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZTZmNGEzOTctM2ZkNC00NDEzLWE2YTMtOWIzYzExNTMxOTFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOkQwMTE4NzY2OEUxMjExRUE5MEFDQkVFRjMyM0M3OUNFPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZDQ3ZTdiMy02YjIyLTFkNDAtOTc2MC02MDFjYjljYmY4YzY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6NUYwRTAyRDU4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6NUYwRTAyRDY4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ZTZmNGEzOTctM2ZkNC00NDEzLWE2YTMtOWIzYzExNTMxOTFhPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8cGhvdG9zaG9wOklDQ1Byb2ZpbGU+c1JHQiBJRUM2MTk2Ni0yLjE8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KGwGVcAAAQABJREFUeAHtfQl8HMWV/uvumdE18n1jjiyHIRyBGAiXzUg2JhjIckRADjA4gRyQJU5IFgMGcQTIPwcsSTYh2YQr2d8Sb7IJZxC2NLExt8NlbIM57GBs+ZZtyYdmpvv/fdXd8kiWLGk091T9bE1PTx9Vr9736tV7r14ZokteUaBexLylrs6QDRuMKGpWE43Ge6pg87RpVXY8PiJoWyMTRnyc4ZhjbcMeZTjGKDFlhOM4QwyRIWIYgx1HqvCcSnyvwGcQ/y3vPz4k4f2POSI7cbzDMKRNHGcrvrcYhtEitmx0DGe96ZjrHcNeazmBNTEzscEMBDaOaWho40O6K02RSCDCH0aOdG6dO9epFzxJl7yhAPhBl1xSwKmvN6PRqBlhJaLRBDoEmOtc1kciY2zDOBC/TXAc4wjDlEMcWw4UwxnviDE0ZBjlZaYpFlBr4j/ADpQ56kE2viTwn6jjMT8hGPZ6CRkBQIfcgATyPv3n8TdTDPzuPoPP223b0u44u/C2LeIYq1GnVajTe4bhLMPr3zEdZ9WoaLQZt3Yq+M2QSMSK4mwkErGN+notEDpRKLtf2Le6ZJECCgB1dSZHeKOb0Z1gdyRwlC32RIDqWFTtSKD1oJBpVpd7ICcA4/gfw38FbiLaHVn52VHYuep9CtsUDI7f3/5nx7XegbofggCXqkPe4B51vpL3mxAUBoVEEP8D+M9j1mcXhYNtbwfUV+K6tyEYXjfFXGxIfEm3QgFaAjUEmTvX5vs6v0p/yyQFemKETL6z5J7NUR6juzkXTH7R3LlUtzvKutragx3DOMGxnckYfU8E90+otKwwAK9GaoyyBBNHbgzggNKeAvgppLIPc9WPqLoSFgRtB3BxDrUXk22AdqI0C7ZhRyLRioq+g0a8bJjGAtz5yujGxvf3NEnkj3V1Vh2Eo2jtIJksGTvOFeNkrEH58mAf9F3V+rWTJo00AoGTobpPBfFPR30/OSgQCFDFbge+qVpjFCXQFdhxjQFkUTMvtL6i9mCj7r5gMKEhmJyqhKDacIqyLR6nfWMpLvg79JN5Tjz+wtiFCzfgnCo4r6YLWhj4FEn/Z6ExVfopkMYngmFNMCtHe6qyHaP1hilTDoPKPg1npmNAPCVsWYMDAALBviuhFIK4hxL2RyGCva9UZDNJF38uEii3LKFQiIMWrYnEVig8z4MCT2FK0TBy/vx3/Qf3RFv/d/2ZGgW0AEiNbh13gTGNKIxaEaj3RpJ6v2byZBjrAp8zDfkcLv7M4EDQSmDUgxrMEZ6oJwgKdXTvaP8AD5K1BNoTLEx/4J4wZGs8Rhq9BBXiMceOPzZuwYJl/rscTBOimCZEejCa+tfpz94poAVA7zTq9gp/REo25K2ORMZj3nseAH4xZr6nDgkGjRhGtjZvlCexcR/db5ru3VJVCcUEaMQSqIIwCEI7aInR3OksgoB4FLaEv4yPRle7l4CeNCB20bj83/Rn7xTQjNg7jTpd4Y8+vn+eDLjONM+CgX0G2HH60GCwwgc9iEu/OlX6YlbrO9EnjV8oB9RUCgdBXxhsicUQp2A8BdvjQ6Nt+2lfAKt4gy5aWBrrUrSP0gKgb11rAOhW8kizNhI5SAzrMhivLsOc/mD6zjGHpamehi3SVYO+b7Tty1VKGOBCB3QOgN4qpgH0fh/G1IfFSTw8NhpdyQcpgQs7DASDmmbxnC49U0ALgJ5pQ2ZSVmh/lOGlayKR00zTvBqHFwwNBEOc08OY5zObVu/3Qc80/URhQHobMB4qm8GWeKwd3/9s2/YvxkWjz/nv8aYH3QZX+deU+qcWAN1wQLfAr6m5EK66WWC6UxmQAxcW76SKT9BztNcl+xTgFIHCIAhXqgpAgjBeBBfjPeOamv7kV0cLAp8Se39qAdCZJkrV90d8BqVM3rhxBgabWdUBROfBFAWDnu+j16N9Z9rl8puvFZiwFTBCUbbH40swIbhnwYgRD/nBVxQEemrQuZu0APDokTxKKOBv2jQTP31vsBU4lFFsCG+lr570IvB1yV8KKJUfWlqAkYhbE/EVqOqPFgwf/jsKAtWHsOf4Qj5/m5GdmpW8AKBVfy5o7Y8Sa2prLzVtmTMkGDh0J4APlTIOItFfr4GfHZ5My1vQZwS7gylboEK5EuMrbFNuH9fY+AhfoEKO8Zkcu5GWFxfYQ0pWANRj3n6Lay1Wk/nmyJRzoDnePihgHasi9AB89CXn9np+X2BM3aW6aspGjYARh9viidcxk5szJjr/CV5Hze9WxBHUJ0Vudrm/qL+WpAB4deLE4PGLF8fYs+unTj3OTth3w7U0jZwCq74GfnGyvBIEiDTEuguhy7bBtMzrR82b9xqbm8wTxdn87ltVUgKA6r6flOKjk88cFiqP3YHosm9UwK8MoxGtySxa1XfpUKx/VT/DqGvtdMOyf9m+K3jT/i88s7meWiGSsZTStKAkBAANP4snTgz4o/66mqlXITXGXQjVHcYwU3A6mSJQrByv29UtBajpWQzXBg9sRiqU2aOb5v2aV1IbmLh4MW0/5I2iLkUvAJowx6vxEm+smzLlGAaLDA2GTmuFHx8x+0Q/02PpUqIUAABi0AKDYcQRbIm1P8cgr9Hz579JciTzTrGSp2gFQNdRvzlSezscxDdVwhCE+V8cWSqYcUMb+IqVs/vTLsNA7JBjww4U2AHPj207d4yJNs7hI4pdGyhKAcC5vj+PW1tbeyJ8eL/FIp2jsJCEjnz687W63x+AlMi1Pm+AV6ANxJZgrfJXxjY2vszmJ/NUMZGj6ASAg/mb4Vn419bU3IrsMzdzSSms+7T6E/hF1+ZiYsg8aAvn/XF4C4Jc1YksTbeNbWq6hfVK5q08qGdaqlA0YKDKH0WEF+f7688441A7lvjD0FDwBEhydihdQNq6nxaWKZmH0DBsQhswtrTHXjGD1pdGPfvsCtoFiikRSVEIgGRjDVT+K0xH7kdMeBBzfT3qlwxeM9JQpQ3ANhDEGpAYVh59DVOCB/imZJ7LyJuz9NCCFwC+WuZAMq83zN9hVdil2/esy9dz/SwxUpG/Js48BNWIF8Eq0EdGOfZMriXwea+Q216wAoAqv3iLOrBG/3AY9f9vWDB4OFR+beEvZI7M17p7ngJMCQKbY7HlcBqcj9wDyznwIFFMweYcKEg3mEq5DUahFG6ORC62DPMtqPyHb4nHmRgioN17+YqiAq6X6zIOkMfIa+Q58h55kK3yebLQWlhwGkDy3Ku5Zsqd1QFrNpNueqm4tMpfaBxYmPVVUwIIAoSQJ+4a0zT/BjYjmTcLpVkFJQD8BRucezUPHvzn4YHgOVDHaK1lOwpSmykURtH13IsC9Cw5mHZam+KxJ8Zs3XoB3c8+j+51dZ6eKBgB4BtcPqqt3S/oSMOQQOCTLfG4tvLnKWOVSLWUlwC8GAQvLo0ZMm3/xsaPfV4tBBoUhADwCbqmpmYi8vI1QPUa1mbb7ZjrhwqByLqORU4Bw2ivMs0QpqKbEVM8DfkIF/s8m+8tz3u1mSoVVav1NTXTAf5XkNRhmIrq0+DPd94qnfqBF8mT5E0YB18mr/rTgXwnQt5qAMluvvWRKTNClvEg94ehsQ+/aWNfvnNWCdYPYFLGQW6X3p5wLh8Vnf9QvrsJ81IDUOCvq+PmDnGo/bOqgtaD3HMe4GeeNw3+EgRXITSZvEkeJa+SZ8m7yk0IXlY8nYeNyDsBQELNJfiRwRWLeeZg842fIrLPxvJdbjWt4/nzkIl0lfZQQPEoeJU8S94lD5OXydP5KATyagqgCFRfbxj19XZzTc0PhgRDNyBbi1qUARLnVV33dHmBHcF3LQH8h5oq3OKAG5xgaqVL2ilAotrIOGS1xGM/GNPYeJMKFqqv547IeUPwvAEVwU8pyfTcSN5xF1byXY+wXg3+dPAlAY417oKsN87GTSIfrhRnU4sY/3KAGPuPF6msFNm1SwuCdNC68zOUEED4sIUVhXcjychslY587lzuaJQXQiAvBADBL57az5EfKbs48tPYR5U/L+rYuV8L6BvBX1Ehzpq14rzxmgSumCmBo48SA6C3m5slFv272NEmMadMRSgVZoRImqK0gwJqYp5XlSN+AppAACnH7hzT1HQjk4tIngiBvAAXLaU0lqg5fzB0m1b708TSBD+B/tSTErz6GglfdaWUTZiAXTXLOl6Q2LxZdixYIG033YxrK8QYNkxk924tBDoolJYDdIQ7HYAQuBkJRm73eT4tTx/AQ3IuAPzQyeba2m9jG657trrpuWmczHndBkDX3N+aBP6KX/9aBl9+uRicBrDwNxbaAbzSvnKltHzve2K/974Yo0drIeATJn2fSggMRjpybFc2CzaBe33eT98r+v+kPRzQ/3sHfIcfLbU2Unv5oGDgAWXtd6gxafAPiLhJ4K/87W9l8MyZ6nEO3FMG1fzkgmvVeRgH4+vXy+avXin2ho1iVIddA2Hytfp4oBRwIHQd5BUwt8XiV4yNNj7oY2CgD071/pwJAL/hjJoKmdaT9J2COMzO2oVDU21aCd8XComDkTx4ycUy/Pbb3JGeQiFpxO9KHQcrKg0IgfYVK2Tz6TViwE6g7AFdL9TfB0YBj8e5xXy7nTh7VFPTUz4WBvbg1O7OCdj88F7G9juG+Tgj/CCJEhr8qXVip7sIcrj2jEGDZPA1V7ugd4Vrp8u6fiH4qQmEDj1Uqn5+n9gNzyibQMd0oesN+ntqFMAAR14nz5P3iYFchg1nXQBwzTR36OGqPi7sCSGVjxfeS4u/LgOhAEd5WPzt+fOk8pY5EhgzRoFaWff78FzD0xDC06dL4NJLXZchXIe6pJcC6CWLPE/eJwaIBWKC2Ejvm3p/WlYFAAMhamDtp8rDJb1c1ddu20zbm/WG906aAryCfv5NmyTwxS9K1RlnqAb4oO5TaygAaCcoL5fw1VeL89KLIvQYULDoklYKkOfJ+8QAsUBMKGwAI2l9US8PQ49np6DB6l3448Di/9gQK3BuSyKhl/Smi/wEaVWV2E8+IYOff14qTz7ZNe51Nfr1432b5syR2KN/RMDQv4i0M9uaLmmnAJYSD7GsUEsi/jg8A59Lxkna39XNA7MnbZjAk+BHGq9hgeC5KpmHXtLbTZekeMoz/IWuny2VJ52kHrKXxb+vj6bNAKV6xgyRD/65T+NhXx+pr+uBAsAAsUBMEBvEiAArPVyd9tNZEQDKygnVn0kUw8jh56Xx0mp/OruTMf7vLJPwFZfvMfyl+nxqDdAoQoccIuU/v0fsvzWIYFqgS8YowEzDCew/MNtPNErMZOxtSQ/OuACgYYNWTi919++ROIGv53SA/3VJBwUATruhCWD9hZQddpgCb18Nf729PnzhhWKe9BkdGNQboQb2u8LDDhuuWMP8vcJKloyCGQUh5zN4gcOwx2YvdTcEANMo69F/YAyz525SmP+3bpXhTzwuAUbx0R7AcwMtnApAG9j+179K63nniXn2OSJtbel59kDrVpz3c0/CAFKLLR/j2EczPN7HUKaam1ENIOrNZdaJ+QBWRB2uUnlp8KevLwn0Coz+dPvdMFuBn778tICftfSESNUZ0+BZ+JLyMHBFoS4Zo0CAGCFWuMsV3+JjKFNvTMMw0X3V1Lwfagz36oPF/3eI8dcjf/ekSv0sg3cwIpsHHCAjfvtfYsILkLbR36+VpwXseOFF2XrKyVoL8OmS2c841gwE4BmYyb0IfSxl4pUZ0QDUXuoAP3fp5Uad3KsPo0lG3pUJohTEMzn6w0fvvPC8hL91jQJ/Wkd/nwg0CKJUwg4Qmn2DCjEWeBx0ySAFgBVihtghhmhDU0uIM/DKtINSzVmQ1IN15RbdCHQIMuoJI1Pa35UBehTOI+n2++ADCX3/+8rnz4qn7PbrrdXetCJ8+Qx4Gt5BHFvWvFS91aw4fwdWiBmFHWCIjWRaMWIr3Q1OOygXT5yoJolY238rsvqckLRFd7rrXrrP4+hPEC5bCrffTDeRB0GaqUItAO+kh6H8Fz9THgftFswUsTueGyB2iCFiiWd9bHVckYaDtAoAP84f8/4TQ4Z5M1J6gVO1xT8N/dT5ETT8NS2U8vt+JmWHT3Dn/Z6q3vnC9H8Lf/7zYn76aDcyMB2ehvRXsZieiCxCMYdYIqYysV4gbQKA6kkN3BakvuHIb4MuQ3JYSrvaUkw93O+2EHTYAd084lAJ132+37enfAPeSxtDYNQoqZx9vfI8cOGRMjqm/FB9Yy8UIHZsYomY4rXEWDqnAmkTAL56goSet8ONcZTn8tOTxV56uF8/+26/ec9K5Y03qNV+XLzju+v69awULvYXFlWdeaZYl1wiDtKJabdgCoTs3y2W5xo8itjirT7W+veY7q9Oy+isrP4wUqybMuUYSKo3YMDg2/gnLc/vvuoleJZa1c6dYowbJyMefCAzbr/eyEqBg3rsWPS8bD3tVO0W7I1e6fldYcmkFmbIp0bPn/+mj7mBPj4tI7SxdKkRBeC/e9BB/4t45gOQ7IBTgbQ8e6ANLJr7KVSZ4LNxvgz61f0qTl+N/u5UK3vN9Ob9wfH7Sfuu3ZJ48SU3kWgmjZDZa12+volUp1fA3G0njv7JypUP+JgbaIUHPAVgdp96zFPW1Uy9Cum8T0MYo17fP9Be6e5+uv2Qzz/43euk8tRT3CuyDX6/Xp4WEJ55hcjypdot6NMlg58Q/wwRRpRg6DRirR6YI/YG+soBCQBUwlTZfU4+cxi27byrFcF+jmHokX+gvdLd/XT7LV0i1V+ZmXm3X3fvTz5HwUO3IFKMl/8MbsH5C7BaEIlDdMkoBYgthTFgreW0s4cSe/XghoG8dEA33xKJqPtD5bE7sPHBsITjxHTAz0C6o4d7GfG38Hkpu/deKTviCNfynqvRv0sVw3V1Yh4JV2S73lCkC2nS/xUBQsQYsbY7uPMHfIGPwVRflrIAUEYIuCTWT516nGUY38BmHpylDlglSbUhRXufmv0hyecnDpTqiy7Kn2aiXsotiNWHlTfO9tyCyBngGoDzp55FVhNijFgj5og9g25B7jSUYklZAMz1Xmgn7Lsr3NBQFf6bYj30bT1RgGv94farmHOjBMaOxcwve26/nqrkn+9wC372s2LVXSTOlhZtD/CJk9nPBDFH7PE1PhZTeWVKbjqu76fkaY5MOSccMB9HyCLBn7IUSqXiJXEP1HwHm3aaCL4Z8fBDYoaxWQdHWGoF+VJ8t+Bzz8nWSZO0WzB7/cIMQrAJ2OeOic5/wsdkf1+figZgSDSqRnvw4e0M9dMlAxQg0DH6O4uek/C3r3XBn0ejf0eLPVtE5SmnSOi66+Cp+FD0asEO6mT0gNgjBtVLPEz294X9FgCQNCq555ra2ksHBaxjEaWkff79pXpfrqfbb9UqCc6aBbffqe4deWL426v6HW7BmfBUvK2nAXsRKCMnGCEYJwaJReiEKvNWf9/ULwGglE+o/tzj3LRlzm52/ADdEP2tcMlcH0CyjyVvwe33FRdQLq3zs/kUTNBY6KEou/c/xF6wyN1PID9rW0y1QmCQLcQiMakMgv2Mvu2XABAvxdfkTZtmDgkGDsXL4fsZmB+ymHojbW1RiT5elvKf/lTKjjzSnffn6+jfpdHVF8EtePBB7sai+WSr6FLPIvlqYk/NOLFITKo29TOleJ+tSZ7pyaGkwcuWlRkmBQBVgP4JkSKhfMaaQdDAwut8vEaGP/uMBBH3n3eGv54aT3aAoNo+d660wmVpTj9brV3o6XJ9Pi0UsMtM09zt2CsWDB9+xEVe4hBOCfry9L6D1x/9N26cMdhSoz/n/n2/vy+10dcow5/9bINU3nyTAn9G0nxlis7eiF911lliXXChOMhUnK705JmqchE8l9OAODE5GdhU7emHFtBXABucX7jEMmZhTzMu8+uz9lAERM5OE6jmb9sm1r+eJ9ygk8X3tWenAgN8CwUA56RwV4av/TflwVCZg3Rw0AAJu+/biUViEh+zeKWH1T7hs08CgJZ/PhhbGV9YHQgcxXkH9Avt9ydR0lU8t5/93EKpotuvujqvgn763EzPVkHPRfA73xFn5SrtFuwz8VK7kFgkJolNYpRP8THb2xP7JADg9/fM/cYsrvXHC/skXXp7uf49iQJ0+330kQSvvVYqTzvN/aFADH9JrXAPORrBjhGeOVOct99Sx3tdo0+klQLEJLGJ3EFKC/Ax29tLehUAKuYfY9G6mppTYWw4FUsSKQz06N8bZfv7O7f2fvMNqf7qV8Xg5htKpevvQ/Lkek9wlcODUXbb7eIsRyZhCDhdMkoBi9gkRolVjNB2X9YI9CoAohs2qNEeSxGvKXc7VmkDGW1KqT2cbr9XFkv5j34sZUcdVVBuvx67yhNgleeeg+jA97UW0COh0vqDTYwSq3yqj919vWGfqjzUCpOSZG0kchByzr+DdF8hnMM/PQXYF1H79RsNZwz6WfWRDJ//rAT3288VAJ5FvV/PyqeLadNAG7iWYePXvyGJZcvEGDRIxN0cNp9qWkx1QcYw5A81pB3eowljo9GVPoZ7auS+NQBvvb9pWJcNCQSpwzHwZ59Co6cX6fPdUMA3/DXA7XfLHBf8HDkLHfxsKtuAthhYz1B2xlRxXn4JC1n1avFuuCCdp4jNmMIqMKse7GG4p5f0KACU/Ibrj2mHYPa7bCckN87puX9PlEzlPJdRb98u1jnnSvhsBM2wFAP43ZZ0/A0djX0EdMkKBYhRYhW612X+CkFiuaeX9ygAop7rb/zgwZ/FssODEWzAFYA9Xt/TC/T5Hijgj/4LF0jVrG+LSfW4WEZ/v8meMAuOHy9m7RQ3KrAIBZzf3Dz5ZGAQlwofvM40z2KdfCx3V78eAR0ZORKCg9NRYwbTEfOQf3RJEwWgDjurP5bgNd+SysmT3YcWGzi89liDB4t17LHibNykjYFpYp9eHuOoFOKOM4PX+Vju7p5uBQCQbnIzwtWRyHjgfjoSfvBerf53R8FUznH0pwB44zUJX5nk9is2AUDasK2Y6gQOPlicFR9oAZAKv/T/HsvFrDGdGPY2Fu0W692eFD/Zp2meNzQQrOBOpahDj/OI/tevxO9goo/Fr0n5D38o5ccc44IE7puiLBQAKNY4pDPb3YqhpUjbmV+dx6CgOLFrAcOqaj0YA7vvDS/yDxlIL445sEpr8Ke3eznXr6qU8Be+4D7XA0l6X5JfT1M2jvyqUrHXxlDYBYZVQz1Md230XgLAqa9Xvv81kycfYYjByD/es9d1XR+kv/eBAgQ6NtS0G56RylvrJbj//q7hrwRGRXPIkD4QSF+SRgqYxC4x7GIZkYHAdtfn73UCMcTqnGEGPof845yVat9/V6ql+p1uv9ZWsc6aLlWIkFOlGOf93dDH6AgFdqcE3VyiT6WXAgq7CsPAsnq0h+3k13QnANwh35DPxaCqorv2vib5Cfq4bxTg6M8U3wv+LlXfmSW0jBed268vlND47wuV0nINsUsMQ6X3BYDCdvLDO4HbU/+dDVOmHIabT9LqfzKpBnhMqz+y/AS/8U2pPP1092ElMvp3opw2JXciR4a/qGkA3vGZ1cA0SO90nQZ0EgC++h93nGkIJ+Rv2vqfjh7i6E8B8Po/JPy1q8TAcamN/lwT4BYtAdLBUn18BokdHxwIWhYwre7pMg3oJADmesE/Yst0Bv7qruojmXu7DBtnOq+/IWV33SXln/qUe3UJGP6SyWK3YNcgXbJOAWJYBfED03x5B8a9mmDhuVswRhkMGFg7adJIaKanIOe4jv33iTPQTxvUxRr/6i9+0X0S3YClJgCYH1CXrFMAnMf9A7jE5BRie+zcuRsU1jEdYGX2aAB1deoYyShORhzxYMQA0GCglYCBdFmS26/i9tskeMABJeP26yCbZ+eIf/yxGENGuO3v+FEfZIECBrFMTBPb6n0e1nm8RwD4iT/EmBow1GklIbJQweJ9BUf5tjYxp50p4c+d67az1Ax/aK8Tj0vivfdEDkTcgxtXUrx9np8tc4hpTOqnqup5WOdxxxTAz/qLIf905Bjn0I/8H7qkTAGO/pWVYj/5hAx6pkEsBsKUmupPGkAAJLZskcSr/xBj+DAtAFJmqNRvJJaJaQxHk/kUH+s8dod6L0JoXW3twTj3yV3u/F/9xot0SYECtPqvXSvBr31NKiOnuw8otdGfAgAl9s9/iv0CtgtDHIRaHORSQ//NEgXQC6aH6SM9jIvvDlQgj3quAcc2ThgUYEZK7f4bUN+Q8SkA/rEYbr+viYqC4+hfagLAa287PCCqeAJhQLTVN6dCAdrysJFoIECM8wE+5pUAiPAMimM4k5FW2DUPuqf031QowCSfby2Rsjt+IOXHHec+ocSs/mqkhwCwYQPZ/cwzYp5yqkh7eyrU1PekgQLUxRS2gXE+LsI/KK6a7+0tji8nIpsgz1Ni6DIQCmAaVf3lL7lP4OhfasUb7XcvWSKJuX8U8W0gpUaH/GmvQWwT46pKPubrIQSAdmd9JDIGUmIC0gnxd1cwqCv1n35RgKv9nvmbVPzgDgkeeKA75y210Z8EY5shBHb831/EOAI7HMMToEtOKaC2EifGiXVivp69dEtdnRrtHQkcVWFZYfgMKQG0BpBKX3HOu2OHmFOmSvhf3fUXqTym4O/xNJ6d//iHtP/wbjE+cRAsgVxUqksOKcB4AJsYJ9ZZD2LfFM8naIs9EbuK8HwJ6qts9gALVV6O/tEmqbruOrGGDpWC2tl3gM3vuJ10AB85u3dL6y9/JcbE4zX4O4iT8wPuHASA2xNVTYB9M+rVCaLgWMebt+W8moVYAVr9m5sl8NUrpaq2RrWgoHb2TRfNPR5qmz9f4r/9LzHGjNECIF20TcNziHFinY+K4n+Hqt9cW/tmhWkdDX9hAjJcJwAlhfpayPRI8WU/+aQMWbxYKj796dIL+iGtSAdMgxKbNsnGC7BJLROgcFrkCYW+klNflxkKoCcS5ZZl7bQTb41pbEQySs/YR6MAfH8HcY9xKnCZeX0RP5VuvyVLsRHmbS74FWVLl4ytf/6zSnyiA3/yi+eJbWKcWFeYR/UUlyKH+IEh06zGT9oAmGqfte2Q8Je/7N7tGcFSfVRB3sc2Y7Rvf/992Xn1LDE/iz0pOnIAFGSLirHSBjGusA7Ms4FKAGDZ3wS186/rASjGhmeuTRVI80W33w/vlNAnPuGqu64xNXPvzMcne23e/uCDWPSzn1b787GPUCfYANQOwpgOTGAVlQDA7j9HqJ1E8rTSeVst5fbbKWakRsLnnZe31cx0xZS3Ay/Z8eKL0n7HHWJMOAx7AOzO9Gv181OkgLtrkHEEb1erAWEVPAQbCaT4uBK9jfTyVvtVP/mUWMOw0o1qcKmN/qADto4XG/EPbT/7mRgnYck5wU/hqEteUoBYJ+ZZOVcDgNKGPID8rnuNVOhLodtv3XoJXDFTqqbUuneUItO7fCNtWPIc/+//xpLf4Trqry/8k7trDGId4X7KBmA0T5tWhSitFUHTGhujDcBxlFDIXf0K5M3e6D/klVek4ngEu5To6M+RPr5unWw6G/scMN6fAsETCgXSk6VVTcOwsdsH0oUnsFY9eKhpx+MjoBAMRZggO05rAH1hh1BInKXLpOyWehf8vKfUVP8kOrX+8Y9iL1kuEkK2Yw3+JMrk4SEwTqwT8yHbHm4GbWtkyDDKMS/gHEALgL70GVX9zS0SvuxS9+oSdvvtXrZcdv7bv4lZO1lkp5/6uy9E1NfkiALcONQh5nfFjVGBhBEfV2EGJJZIwIKlIwB77RS6/Z56Sip/8xsJ/cu/uCNeKY7+bDOWPG9nuO+RWFvCXH+laAPplWHy8gKuCbBiTnycaTjmWMvtOGoAuuyLAqQTRjlz8ukSPv/8fV1Z3L95Gs+ORYsk9pOfiHHQQTrZR2H1uEPME/sBx3RG0i+oSy8U4AzJd/s98YRYsHbT/00XWEkV0gFttrdvl9Z77hXztEluxJ/moYJiAxULQOwj+He0mv0XVPVzUFmkSnQ2bJDAjMvh9puiKlDKq/1asfAp8Zf/Exk0SGf6zQE7DvSVCvPAvolIgBFqCdBAn1jM95NaXPDz8ksS/uY3xGB2W6rBpTbqsc0Y/WPY5GNH/W1inoHt5nbuLD06FAGve8v+RpgwCA7h5F9PAvbRqwT/O+9KaM7NUnGim1KtJN1+nsBrRcCPbGlxl/vug2z6p/ykALFOzBP7zAc4hKGBOKFlQE/9RcZf0yzVMy5zr/CMYD1dXpTnPY1n15tvyq7vf1+M45HzQK/2K8iuJtZVODCwH4Aay30A2RAtALrrTqj79tNPS8X9v5LQwdg3hbQqUcOfg7x+rfffL8axAD9z/JXaFKg7/ijMcyoYiNjHFECqGABQkgat3jqPDI6FLcxpH77ggt6uLtrf3RgxrPaLRiX2n/8pxn7jdJqvAu5tYp2YJ/YDYPEKNQXQYcCdu5Qjvef2Cz/2mARGjChZtx9dnYmWFmn98U/EPD2Se7cfQrFVujG/xzg9oUZSilMznwb9+IRAZ2IQqvwVXA5cyS+6dKEA3X4bN0rgy5dK1dSp6seS1JIoCDFitP71r2I3YIef6Wer1OdZV/9ZDwIfXOssf0ecVR8mdVgAguk0JbC1XSKJLPs49DBfaTTX1O4GTUMgry4+BchsVVVqZ98hSHJR8ZnPlOZqP46oGP3bV66UzSefJsanjs5NxB/7AynXnZWrsAZji4S+9U0JTZwoFrQy5iGILV8uu/+EPIQUUExFxi3IeI8uPVIAmOc0oJ0agKVJ1YVOZVjt9+4KCd14Y2m7/TxjZ+sjjyAOAqNvLgqBzKkY1l+EsN9C9Te+7q7BSK7L5MmSuOgipaXsuPxyMaee4QoAPSVIplKnY2IeQsCiBqDx34k0+EK//9/mybB335bQoYeW9Oi/89VXpeWEE8Tken9s9JlV1b8D/E9Kxc9/IUO+/jV37s/zXUd4T1jteG6RbPvXC7AhCVLfc4FS1+u69nWJfy+xQPY+9Dbdfn9rkPJf3ueCnwzkMVcf7i6OS7w2O/Dzt9LqfwKCn6hWZ9Ptxzpwp6XGhVKOBUdDrv6mC36O6qwH+yT5P67n2ozK006VQX/5X7GfbVCCXAuAfbMkBQDEpC6KAmQsuv1OPAFuP2xsUaqF4ENRu/s88IAYo0Zl3+3HlGtce/GFC2XINwF+Fs8m4X7p8hd9p4y0FAKTJkklshPbTz/lGga99nS5Q38F9mkDSHAu4HZ5CdOETOK7/f7yFwmMGrlvhitWUpEOGFkT8IC03fVDMWux8CkX8f7wwsirr8ighx/as/aiN00sSUOprquT9oYGSXzwoRjhsDsdKNY+S6FdwDyNgAlqADHPvVXaMoBuP2xpFfjCF6XqDBiRWJIYyj1ROn+3/+lPYi96LjdqNKdhzzZJ+c9+LmVHIHu1J5T6RH30GacCJoR5GJmKnBdfyE0b+lTZnF3kEPMQAjEKgB38U9KFDEbDH5il6lvXKOYp2dV+YIz2FStk1zeuhUvts9mP96fQhb3BPO5oCV9UlxJb+jkauHArdONNaiFXzrwYKbUg8zd5mN9hgvV3MjkAJELpagBM8vneexK6frZUnnSSS/3e1M3M91H238A2Qxhuf+BBkcM+kX0LOgUxDX/z50nljTdgGjZKjeYpaWK0F4Cvq2fMEHl/FY5Lfpjr4CdiXSUE8bDfRtL48d4dV5XSgQUKvLNcwldc7qr9ZJ4SKx27+7zwgrTfdacYhxyS/d19/OjLL31ZwtOmqR7wpqf97w1PmIUOPUTK//NeeHaeEbVZaf+fVHR3EOvEPOQjsO84W0s6JyDnmw2Yb/4c883DDuvffLNYWAMM4e/u03ofdvc5+ZTs7+7D0Z/TsJdelDCmYQY0gXRNw8IXXijmSYjm1DsW+RyrcgIS+5wCtKgpAFjf/7VkPpPnm5//fMk0e6+GEnwobX/7myQe/R8xuM1ZPL7XZRk90ZF0ZY4bes2XDXQahv6lZhMYOVIqr/93xBTMV1MMTnNKucDK4k8BiH2jBSdKD/1kAqb45nzzhtkSGD06bSNOQTEX6QCgxZubZcftP3DDaHPh9qMwXrfBnbOTgGmahvlTiKppZ0jgi19Snh6hi7GEC8UfMU/sMynoRlN9LTGKkAmwsMS6+BKp8uabKRmbioRs2x99FIbQD0WCoEu2R0ga/v6GpCv3/Cj9SVcoWCBMzIpKqbrmau0W9PhVYV5h35R1pFFJFTI4VE77hefVfNPEyj9lBCs1QnCURZt3L10qu779bTEmYWffXdjZN5uFaj40DrXFeqb2WvCmEvTwhGbPVh4ftbQ4m+3Ms3cpVgf2TcM2NjAhSEkVuv0++FBCyG1XeTKYHsX3HZcUHQgM7u7zX9jd56hjsh8tR76jEbapUarQFx1brGdCEHvCLozVgvT4CD0/JVxUTkBg30RukLUllxPQssRZ9jbcfle4hqY0zTcLip+8NrctXCixe+4R48AD3AU/2WwE4/2b10ngyiszv8U6hR0EDj095b/4hdjPNJayW9DdIBTYNy0nsGa3ywylIRI54kSfk4r77pOyww9357ueiphN3s/puzjyos32tm3S9tN7crO7D+uA3YSdxa9gjT/2WmC2H2+UzjRtwvD4mBM/lf0VjpluWN+fbxLzNrBvxszEhnbH2UV3AO4v7rkAm4jcccbhh0gYi0VKthB8KK1PYHefxx9zd/fxNIKs0QSC2HnjLSn7wZ1Sftxx7mszLYjZ/2gnIwwrZ1+vPED0BGXd6Jk1Inf7IroADWK+POCsN81AYCO8pVtUMFAxhwOT6en2m/esVDHMdMyYrI043XZDrk4S6ABabPVq2XHzzWJOO9Nd7Zft+rAeVkCqv/wl983ZEkCefaHqzDPFuuQSceAJKim3IDCuNgYF5ttNc5M5pqGhDZbg1UESppjjgen2w2421ufrpIqLXFg8ZnC/lMhfbgWDsv0Pf4AKsMO1gWSz6UoQw+2H/H2Vd9wqwQNge/CEUlaqgT7vWC34rW+JA08QPUIlowUA4y7WjdXEvpr3gyVWBVwwFOcUgExHt9/zi7BE9FtCt1+25ptZYeq+vkSNsobsev0N2X399UibBdU727v7wAAr21vFQnbhqnPPdWueZUHse3yUW/D7/y7O+x+4GYf7SsfCvs4h1rE2ahWboQSAY8t7DAcu2kK338qVEvrudVJ56qluMzM938w3YlIIos1OO3b3+dWvxDguB7v7sA40wi78u1R99ztiDR6cO0HsaR3hmVeILF+K6QgEU4kUYp2YZ3NdDcBwlhV1LAA79+0lEv7KTFflzdZ8M58YiuBDaWtqkhi2OTPGjctNmq+PPpIgEnVUIpOvKrkaeDgAgCZlEyZIORZA2fMXlIxbUMUAAPOkvxIAYI13dhEURhEumi7HCrPnXpSye+/tf3YZl0UL/683+ie2bJG2H/3I3d0n2/H+rAPCjJ0335DqK68SgzYZl+dyTt9wHdyCR04oCbcgHAAmsU7Mk/BKAGCDwFXttr0d4yS/u0NFzrslDRXg6BLDqraD9pdq5I0v9dKKXIdc/CRVldk3etHt9/xLUv7Tn0rZUUe678/1NIz8ATDQI1R54+wkt2DRcooDgJvEOjHPVioBMCoabcZ6oJUhdAhJUhTN54jjuf0qb7pRAmPH5s2Ik1X6eqNs+4cfys7rrhfzTHhAdu7KahXUy7i8ePw4qYbrLa+KNwWhZ8hibAg8RRIoTnsAsU2ME+sK8+gIsykSgS6mytshEAOwKQ4NgJ3YslWs8y+Q8HRsF8Xidbb7pUT+eqNs68MPiwyuzn6jlSCG24/xF4g7yDtBTJ6HkKRniElE6SkqVrcgsU2Mo7zNP8S+GeERCqyCr7vBgO73gv5LpiuDtRlZbauuRXJLpoX2RsKCblc/K69WOOKena+8Irvr68X4JDLsMitONgvXXWBnYRV/kaeCuMMteMopavsx58OVResWJMaJdbJABP9NGTlSjfimmIuLZk0A3X6r/inBWbOkCjvFqJLr+aZbi+z9hRAkY6vdfbCtlnFiDlJiURCruT/iLyiI8zn+ggME6BWeOVNk6ZJidQuqNQDEumJEYN+8de5cJQAMiS/ZmUi0IkwQk4QCnwZA/XeWvCnVX/mK25Hs3BIrflBn67PPSpybayAtVtbTfFEQv/++hP7936XyFHfZNUGWl4X1gsDiPgRl9/4HYhUQIQgPUhEVhgCbxDixznYR+2pCAAnAmYGzrqb21QrLmrgjwV0VpTAtIcwt9/KrUgar7tDvzFKdWnJzf4686NE4ttba9K/nuXnw2OM8n81CF+zTT8vQd95xE656o2w2q9Cvd/l0W7tWNn12uoi/O1S26davSvf54kSlZVkQAItHNzUe72PeFceRiAI7xsmXQ24oQJY5pc+N2PeFFGOUXWNGS/iSi91ri6Pz9t3uHn5t/V9skvniq7kxajHi7+l5SMn9n4WTbZn8AyFFQ2XlTTcow2URrRaEAZAZAOVlxS4e5pUAiHoMZDjGAoYIKLWgB6bK29MEOpkOu8JWzrlJgoh0U0awfFU5M0VIjrJg5N3vviu7vnm1mJ+dmv14fwKJm6yedLxw7X1BFdYdpeqss8TiBrHwJBWDW5CtUtgGxtm+KP+gKAEQiUTUJNkwnVe2xVU+aLoGC0sLYLgvElxYUHnDZ0N9Qykar4ZqTR//UOBBCLT+7ncih8Pqr2Zzfbw3HZdREDPJJ1JwVyL/HlNyF5QHxtMC6DkKXwu3oNofseBzBhDLAWKbGGc3d2C+a58319S+ATvAMbtgB8BdhWEHINPBwmw/+YQMQqx7VSSiRn/fvdO1jcX6nRoP27xj0SLZetppYp59DoL/21wLT7YaTbcfBfHhE2TE/fe7O/uyf7yRNVvVSMt7IDw3IldhvGEe1k4gkAzJZAqxYPRPlGP+D0y/gfn/scltUBoATzheQBC66u9lmCvgE/8KpDC3nFpkcq1UgvFZSm70B8gIfhuAb/2P+8Q4Be7PbO+EQ6ArI+xLEr4Gu/tgSlZQo38yu3MqBWFGTxI9SoU8DSCWiWm0aAGb6GOdxx0CwI8HQJjAvDgiBVDcyRCP8rmQ6SgAsMgkfOVX82qRSVbJRjqgtMHqnpj7RzGGDs2+24/gX7pMym6pl4oTTnCbD6FUkIX1Bk3LPvlJtX7BeRGaM9pXoMUgpoltVX8v9ofHe3pn7lyFeicef6E1keB+gVT/Xa5Sd+XpHwaavLJYyn/0Yyk/6ijVaXnra84UCTlagWHjcF+13XaHmFPPcNN85ULt3rZdwjMuc1vKehVBCV8Mj9LY0a49JRc0HRgN6f+3iGliWz3KwzqPOwQAhnvnj3V11tiFCzdA8D0PnyFVAMYD5HehkWvoEAl/wVtk4o2E+V3pNNfOY8rt//M/mAp9nLvdfZ75m1T8v7sl9IlPFIcgJl0hxOhRomeJHiZ6mrIeTzEAdiGGiWVimtgmxnGuY2DvEAB8R92GDfgNxZSnCP+Oq9TJPPtDoNPaTLdf/c0S3G8/d75ZqCpnquTlKAtG3f3227LrO98R8xSE/OZid58dO8ScMlXC5yPwqJiKJ1zD06crDxM9TYWUPYgYVkM5MM1u6cC410edBIB47kDkDGtoiceov+WvOxBSTbZvF+ucc+H2O9ttjtdZXttK4wMCD6qdbP/1b8Q4Brnus72rLwUx4y+i8L5873ti0fbgCaWi6ADwlFotWF0tVd++VuznFhaSFkD8B7bGY4kEMK36w8O43zfuiO9/wyfuIIwYFrwIqsMpbfkYFkym891+8+dLVW1t6Y7+EABtjU2ybUptbtx+yOzjbNokARj9ht/3H+4GH+yfYhLGXnsoaDddd53EG6Ni0CbAZDP5XRJVcP8htP95uP9O9bGdXOXOGgB/8cOCHXksCOaCMMg/Sw6t/shrH4SrKee55ZKpmc1jMiX6x966Fbv7/FTMSZPdiL9sA4998Y/FEv7617O6u082Sa2EGbQapjELf/Wr4rz1BsbVYN7bAohdYtgGlhW9PGwn0647AaAA79jxx1piMbIZWppH5gBVIzDdG6/D7Xel6hQV8pttxk+mYi6OSQeU7Y8/IQkEQAlU1KxH/dHt99rrUnb33VJ+LKYfLGC4oixsF2hOT1P5j38szktYY0GDYP4WhRSFYWBZVbOL+s9ze00BeJJjC6XH2pqahWErcFpeTQPIdP8A03332zIUUVrKIltq4OccGwwZ++dHsmlyRIwJh+YmSo2j/3sfyPDofAnuv3/xT8N8un/8sWyqnepuqJptmwsB2rei1P/WRPy5sU1Nk3xMd721e3Ediajz8B8+GkQEEYo73HS9Oxff2QlM3/SFL7hv90bCXFQlZ+/0Rtntf/g9jH4IT832qEtuoAeGu/vcXl8a4Gdnk87gP3qc6HlSbkHQIU/dgtgBCPUFhhWfephWx0l/9qkBrI5ExluG+S4EQQVyibPbu70+6XmZPSTTPfWkVD3yexnEPeU8iZzZl+bZ070273rtNdny6U+LiR12hCm+s1kIhPZ2MYYMkRG/f0TMQYNKRxMjDKBxcmfljV/6sjiwwQgSnyhezGYf7PtdagNQDJU74nZiwvhodDVqrbT6rrep4b3rSar/DgIGeCNa+1SYLrdcBwWR6ej2++xZ2FIKi1xYSk31J/OBDg7At/2X2Nxj4vHZV/1ZB7r9Fi6QKiRcIfhLygZDnoMQZrurZn1b0SEPg4MSxKzj2E8r8LvBP8q25wJnz99uBQB/jnpBQdhM9CFv16Dcjf6K6bC3H5ku11tK7aFd9o9IB5S2xkaJ/+bXYnCH42yvUFP5Fle5+RYnTVL1KbmFV97AQw9UkBuMYiEa16PkUTHc3X+Mh1gnH8vd1a9HUIPV2Ezn1YkTg+MHDV5WZpoHI2kopUiPQqO7F6TlHKXZ5s3F7WvujVAEP3okAZ/7RiaqoFamesgVCr3dnrbfOfo//ZQMW7JEyo48sjSnYSSmPxV74w3ZcuyxYp6FHBTZ3mi1+061gVUm/3x/tGMfbkSjcR/L3V3eI5gJfi4bPH7x4hgWmj6MHAE0AORmbQBHHfiaKzHvN/z5lieFu2tU0Z3zwM92bXvgAay4W56bNF8hWP3fXSFl9fUu+FkhTs1KsXjtLj/mGAlhp2WVShxbn+W6EKPEKjGrwA8ME8s91WvfvReNuvMGJ/EwQoPb8ZDsxwSQ0Ewwcd75Uv4pz9dcSuAH0Tsy/DY0yC6E2xqfwVLbXIw2FqL+3l8hFUiXpYpSCN3DkvzL9oMXK7BOwOEOwwwOym0h0IMKq8CsqoqP4R7qtU8BAMlhc/eQsdHoStz/52pu6JhtLQBzK/u1tySEcF+TwS5JoyErU+zFz/Kz6/XXpfXMc8Td2gtW/2wLQQriNiz4OWOahA47zCV7tuuQb53ttT+EHYbNE0/KTSRmZ5okBrkY/TMxS+wSw50v6fxtnwKAl0a85AGG4/w8JxuHKMZrkSBSTKniGcLcL8X91wf/7mXLpOXiL4hRA6Mblz/nggZUK9c1S+D448UaPNglfKkLAI/9LLhDrYmfFge7L+d4SqR2/iVWWTUfu141u/3oVQAYc+cyN6A5uqlpEQTAIiwu4D1ZtwUoX3O3TSjCkwQ4/jPF16433pQt518Iiz8Wn1C65yryDHVx1q4HI6AeBH4uhFC+dbVHB9qlzPFYjr5hUy6XCjPyj8a/RcQqMUvs9kayXgWAeoAXRYS0wveYaPS+jAq9vVD/3gsFvHklQdaGBKctx5+MlWdw9zEdFV1+ZLpcFQ36vSnv9YeTgKatxsa9L8nGGWKS2CRG1ft6iPzrWpc+CQBYE5UkGdfU9Kft8fiSctPk3KJX6dL1ZQP5nti4cSC35/+93qivAn1g4Nv6m9/INtg9jNpJ7sifa/BDMBn7jcUCkTWuCyyXgihfetMTiNx/0f7gA+wkNMqdomW5fsQiMUlsEqN8vY/Z3qrSJwGAhyiXoPsw5x7uMU4ltbeHp+V3qLzGhCNk9/PPu4+jTaCYCpkoadTfvXy5bLz6atlx1VXu+n6q/Jz35xpw7If9xkn8mQa15ZjqAta7hIvvnYmtWSOJP/1VjGFIhsK+ynIhFolJfKjR38v62yd89h1NnhawYMSIh7Ym4isQbECXQOY5ACOf8YmDJHbnnbLrrbfwSjQzB0RWL07nH4KH4Cew0XlxaDgtGPW3YHPKBOb9KsafOf29USadr07pWawHPTKvvyZtcEeyKA7Ll/ql1KgB3IR2+xGQbX/5K8KjsR4gN4WBPwFikthUVfCw2pfqgPv6XihZoFrEm2trrxxiBX7dsmcXob4/JJUraYFubRUTq7CG/+qXYo0Y4Y6afBYBlOvRsbc2+SDxP5O0GE5tONffed/PVLopE2sd1CiSa5W/pzYxKAtr4Qc3PNWR+lt5KwqhH3pqU3/Oow858vubzrQ1PCvbzpwmqt+4D0P2S3xIIBBoScSvGtPY+Bsfo32tRv8EgAs1lT148oZNy8ot89Bd2QgPJnDIeM3NYh5+uAy+7TYpm+D5ov2W+uDyv+fLZzfCiYt52j/8UHYuWCC7H3pYbT9l1tS6CSZyEeDTH1pReBEEK1dJ9f2/lKopUzoL4Hzth/60sadrk/rSgYBuffxxabvkMjEip+bKO2Nj7m/uStgrFowcfsRFrseOtVTKWU/NSD7fLwHAG30Js6a29tKhVuDhrdnSAshYTAZCX+uKD6T8tpulAkay4AEHCPdxy+dCwCcQzRhHIon2pUtl998XSOL+X6GXDDFrawB8rCkn8AsFPBQCYDN73rMSQlKWivPPVzsA0x+eYz94RtmAOQET4L/dby+VnY8+KjFooyowi9pabvouPhij/5ZE/LJxjY2P+NjsDxH6LQD4cEBRSZl1NVNeq7DMY5F0kJYPtWa4Py/v97UkMn3hnBI896I4bS3YwfUCsY46GtOC4WJUVqJmfTdr9Pv9/bkBdXV27UTOvm1i//OfksDiGbXRJJ5hfHqiGLQYs0A45Ih53Pen+pccQIG8ahXWJrwt5uk1Yp2AICHsoacEMsKGFafQaVzgxUHSFQdL0RMfrZbECy+K/fKLbh8yJiJ3Ghvz/Vs7E/bro5vmH+djsr+kTql3fEnTHJlyTjhgPo5dR7IjAJJbR784mJAbUUrzOpGNm5GcAdpBFuySydXY53F4KJJmIFnGqBFiMHqugptK4A6OGMVgyKRA5jJY/se+AM76DSL472xCPzhcOlIkxaoQYzi0m9GjxBgJ+xNzAVJw00NDQZibwjX/VmvcPndMdP4TPib7W5WUa88dRjjnwG7Cz2CNwDT4IJkjmWI/u4XqKDSCvFU9CRKC3bf6Z5c62XsbgeD3Q+5Akbn2sh/Zh+xLHue2xIE5+v0bxjQ1nuljMZUqpQzYOu9tpmVevzORmIavmZ8CdNdCdgr/65JbChAUagzIbTVK5O1Q/RNC7LG9PhZTaXvKE2a1RgBuwVHz5r2WcJxfDgkGKfeh2+qiKaApkCkKEGPEGjFH7CnVvw8x/z3VJ2UBwAfe6q01bt8VvAn5xzcjeWgQcyI9HPdEbX1eU2AgFAC2iDFirSxWcSMf5WMw1ccOSADUQ/lmyrD9X3hmMxxas8Ow0GMpIg2CumgKaAqkmQLElsKYOLOHPPfkFmKvHhgcyGugUQy81MMEh/9qI5FqdyMR5iFL2b4w8BrpJ2gKFBcFANQ4lvsGtnsbfdR7mBtoKwekAfgvv6WuTgkSBCVdvQMGOQ/8OTeV+vXTn5oCBU4BmlgDxBYxxrb4mBtou9IiAGgQpDoyev78N23buWMo/cKQWAOtnL5fU0BTQFEgTkwRW8QYsdaXZB99oV1apgB8ESQUvQBq1EdswFuIUjoqaxGCfWmpvkZToDApoCL+gKUl8PkfzSYkY22gTUqLBsBKEPxNcAvy2DHkK39TN7sAAA65SURBVDHXN8/nK6HA87poCmgK9IsCxI5JLBFTvJMY8wfafj2ph4vTJgD4/BosFaZ6Mrax8eV2x74Nags1DD0V6IH4+rSmQC8UoOpvEEvEFLFFjPVyT79+JkDTWpLVk+ZI7cvhgHUC1grkJkw4rS3TD9MUyCoF4oj1R7hv4pWx0cYT+eZkbKWrJmnVAFgpqifcWJTHZtD6UlsiEUOyQgQI6AAh0kQXTYFeKQCsEDPEjgUM8XpiKp2qv1+HtAsAPliFCUNdGfXssytsQ75WzUUi2KrUf6n+1BTQFNgHBYAVYobYIYacNFr9u741IwKALzGwpyANFpi7PLAtHn8E8cs0EOq1Al17QH/XFOhMAcb6B4gZYkcZ/YClzpek71vabQDJVfPnLA4EQbNhvoVIpsPhztD2gGQi6WNNgT0UiMN9TtV/+RjHPtroZWffPbelfpQxDYBV4pxFSTA2xLHPxxLGuLIHDDB+OfXm6js1BfKWAmreT4wQKwS/wg4wlMkaZ1QD8Cuu5jBQY5ojkYvDgdD/tCbiXDBE4ZOV9/v10J+aAnlKAYLcxkIfqzXWfsmYaPRRHzOZrm9GNQC/8rQHcBrAhsEleNewYJBegrT6M/136U9NgQKkQJyYaI0n7lLgZ7BPBuf9yfTJ2ghMewBfjD8O9hV4DPsKnNuSSLTDO5CzHRWSCaGPNQVyQgHDaB9iWSFk9n0CRr9zk3GSjfpkRQNgQwh8qa9XQmD01q0XYlORpVWmGcKJjFk4s0FA/Q5NgVQpQN4nBoiFMVu3XqCeA4worKT60H7epwDZz3sGdDkNGwxn/Ki2dr+gI29iW6Nh7bat8wcMiKr65kKjAIAXx35+AWznvTlmyDH7NzZ+7GMjm23JugBg4xjTfDzmOGtqaiZahvky1BDTRrYTqD8qgjCbBNDv0hTINgUAugS8YRYi4+yEY5+IHX0X+5jIQV2y/Ur3fb6Vc31NzfSQaT2JLcYwT0C4sONkbVqSm5brt5Y0BTwex5Ze0m4nzh7V1PSUj4Vc0CVnYFOeAYYLgwDY3eQK5Dn320+XiC6aAsVIAcXb5PX2hHN5rsFPAudMAPDlFAJq+XC08UHkOps12LJYH64Z0EKABNKlmChAnrbJ4+T1UdH5D5H3s+Xu64mQObEBdK0MYwQY+bS2pmbO0GDoNqQ91oFCXYmkvxcyBRT4EeNvbYm13zy2qel2n+dz3aicagAdjY9GE1zuSMK0xNrvRBIELn2kENCaQAeR9EGBUgDJfCRBnm6Jx36gwM/l8uD5fGhPXggAEMiRuXNt7nE2pqnpxi3tsbu91YN6OpAPXKLrkCoF/JE/QJ4e09h4E3mcvK54PtWnpvG+vBAAbA8JUgfCOPX15pho4+wtkJZUmfCTFgJp7HD9qKxRwAe/RV4mT5O3yeP5An5SAnXJrwKqGXPr6kzuPEybwJBA8LatiQSFAESEdhHmV2/p2nRLAS/7FQ1+UPvVnJ8jf76Bn3XPOwHASlEICIQAMwshWGjW4EDwp9gKmZXVwUIkkC55SwGfR+nq2xqPfQdBPveoFHl5NvL7BMxLAcDKKSEQiVj0DqyPTJkRsowHY9gfBRGDOmzY7z39mVcUAJhUvgvuk638/HD10dpPgx9+45Qg70re2AC6UoYEI/jpK6XPlFFTmAfYjJ/Gb3oBUVeC6e85pQB5krxJHlURfr6fHzycr+AnwVC3/C9+qCTXDphiNCC12LA229ZLifO/60qjhljSy1V9SOW1GbHs0xjb7/NsvhMgbzWAZML5YcMkLFdOgdBLuYYa11ATyEvVKrn++rhoKUDei5EXyZPkzUICP3ulIAQAK+qHDXPZ5OhtW49lAgVkUeEupPQQuF4CXqiLpkB2KKD4jjy4JRZ/gjxJ3syH8N7+NL8gpgDJDUpeM91cM+XO6oA1G9JXGQdxXceKouR79LGmQJopoIx9mIoKdu65a0zT/Bv4/GTeTPP7Mva4gtEAfAowmQgDKuglIOG3I4miA88A0yljOXG7f53+1BTICAXAY+Q18hx5jzxIXiRPkjcz8s4MPrTgNACfFiS6eG7CNZHI4YZh/h/UscO3xGIIGDBMHTTkU0p/poUC7jp+GzH9gc2x2HKm7h4XjS7Pdzdfb20vWAHgN8y3trIj1hvm7wYFApdu11MCnzz6Mz0UUCo/t+vijj2jHHsmXdQ+76XnFbl5SsELAJItee61trb2CswP7sf8LIgU5PQS0C5QFO1kW3XJKgVo5ecuvUHYmWLcq4/bdbEGyTyX1Rql+WVFAwxOCaKYEnAetv6MMw61Y4k/DA0FT8CUgJ1Ii63ON5hm5inyx6mcFFD5jc3tsVe4Sy836iTwI3kc2dffPikaAeA3PFktw2KiW0OGeXMQ+dewJ6HWBnwi6c99UUCN+jD0BWPIU9nu2LdhDf8tvCGZt/b1gEL6reC8AL0RVwUNcc01CjsO4YKfAfiXQJIzZoA51wvOUttbm/Xv6aGAxxsGeYU8Q97pAD94Ktfpu9LTys5PKToNwG8epwSLJ04MMP04zzVHam83TeOmSmgDsA1oT4FPKP3JYYHZqG3M9QM7MOrbtnMH1u/PIWkY2DNx8eK8jucfSBcWnQbgEwOSzSH4OWfjOXYocjN9CgkZn2O2IZw0cY0SDv49+rP0KEAeIC+QJ8gb5BEf/OQd8hB5qVgpg7YVf+mqDayrqbnKEeMudPowJCBl59LgowRF8VNDt9CjAKeCFnjAAA9sNsSZPbqp6df8rdhHfa/96qNoNYDkRlKCU5IzMUM9pD07ujxWccjWWOyXAcMwkLyB4KcQ4H9dipsCqp/Z5+x78gB5gTxRD94gjxT7qJ/cvSWhASQ3mMeU8OxkHq+fOvU4O2HfjfnfNPoKYfzhyEDBWBLCEe0slaIW7zCMlx0LO1CDaZnXj5o37zUSIJknSoUgbGdJCgA2vB4AvyUSMRnRxe/NkSnnwEVw+6CAdSw2bBRsVaYFAQlT+EUBH1txBbARLSL5Eq8jsdScMdH5T7BpDub5t0ajdn2JrigtWQHg8zVVvrn4wiSkPLemtvZS05Y5Q4KBQ3dCEEAY0AJswFCgA4l8ohXAJ/qM+SMdgD5QAeC3xOIrbFNuH9fY+Airr5J04pN5JwugORmrYskLAJ+yHAn83G1kjsmbNs3Eb98bbAUOxfblSiOgMRHntCDwiZafnyr/Hkd8pOiSrYn4ClTzRwuGD/8dhbzqQ28RWX5WP7u10gKgC70pCPxpgRIEGzfOAO5nwWh0FBKSCmLClUqJ2ygINP260C9HX4FrZcA1sQYE4R4G1unHl0ABuGfBiBEP+dpdct/mqJ5591rNwN10SXejBPIRXoh8hLOgUp7KrZ2xKox30odIQaANht3QMQunuMkGVfggVoFSS+OUbRGieu5Baq4/+e9P1u78c/rTpYAWAPvghO4EAWIITnUM4xoM/hcMDQRC8BqQ6ciEHIW0VrAPeqbpJ9KZ9DYgjC1Y9WVLPI5EMM6fDcf5Odx5i/z3aOD7lOj5UwuAnmmT/IsBZuKGjhxxOAWQtZHIQWJYlyGA5DK4EA+m2gnXkp+ajHSlVqDpS2INvBD0pLsDOgdAb9KZ9H4fAV0Pi5N4eGw0upKvwYWmuN4dXyjztC49UEAzaA+E6ek0vQbRDRsMLjvmNRxl1pnmWUgRNQN4n46FJBVcRcY8hSAupwgUBFoY9ETQns8r0IOGNg6CzL/HVZ1Y3r0TVH8KMTwPjbbtp317TRP6ITJypFPqVv2eydn9L1oAdE+XXs8qYCfFEfCG1ZHIeJigzsPCkosNMU5lmKkvDPAz3YkcofQ0gcTqvqittIl8lIAPeoZrO+IswqKdRxO2/Zfx0ehq9xJXACdrZv55/dk3CmgB0Dc69XgVmFUlIuk6+qyZPPkIwwx8DiuOPoebP4P9Da0E4E+bQcJxlHoK4jO+oJS1AwKeIzwxb1iGoeb0FnQn7KtHGr2EHx9z7Phj4xYsWOZ3gq+FFVNiDr9t2f7UAiCNFFdghlbQdURaPWXKYZbjTEOA0XRw/CmYww4OQJ1VEYcQCCjc75CF/VHMAoHNVHN5j/EC5VDtGaEXx7QJc/qtkIjPI2DnqYRhNIyfP/9dEoWlJ9q6v+q/qVJAC4BUKdfLfUwTDUHA/502hlw7adJIIxA4GcarqUD6ZDD2kXBhIT4dG0o6yo1FDcGPNaBEKFQtIXl0J7VMjPAmwY4sTZACDl2pnBa9jcYugDF1nhOPvzB24cINPmlBG5X5WSIR26ivJ010STMFtABIM0G7e5wvDObCSOUHpfjXrautPdixjRMcw5kMgXAimH4CXFthRrHBsAihgP8YHcH9MHwrweDfCjuYAc8XcaY0B/98Nj/hEWUVUElXjVfvxjnUXky2IQTvCL6rNmD604rKvoO2vGw4xgLDdF4Z3dj4fnKFVYgujKwa9MlUydyxFgCZo223T1ajWl2dKWBy34KdfOH6SGSMI4g6FHsiBspj8duRGCwPApiqGYCEUZQaAuYMDlwMjjqmZMB1HCH52VHYuep9EBAEIS7z+9v/7LjWO1D341oP09ihGY/o9FD3Qt7PiDvO24XbYWNpbUfdGJADobUdYmklrnsbYut1U8zFhsSXjIpGm91H7Pmr/PUQjjJ3Lt2s3bxuz7X6KL0U6IkR0vsW/bQeKUDtIIqpQoRXdJku8BQLhYJtGAeisyYAwzAuyiEA1YGYHIzHVGIoRtlyqtYEI+MRiFiq2EQS/eUUGJQOPFZSAp9dUUZGoJCgAYLP4Kf/PP7GKQpOdzyP9gtoJ7vwti0QE6tRp1Wo03uQHcvw7HdMx1nVLdg9tT6KZ0a0ag8q5Lawb3XJIwrUA2u31NUZ1BCiqJcfb9BdFZunTasK2fbwXXFjlGnExxmOOdYxnZFA+WggdgSG8SHo4CFA7mBgvgrPqMT3CgA0iE+6I/mfhZZI/mfcAvzssgNgb4Mk2YrvLRAMLXjmRjxznWEbGxzDXms5gTXYIGt9u2luGtPQ0IZ7ui3KP89fMMLfOneuU0/ZpEveUOD/AxUorR9SD6yXAAAAAElFTkSuQmCC'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Avalanche\r\n","import React from 'react'\r\n\r\nconst Arbitrum = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='124.983'\r\n height='140.32'\r\n viewBox='0 0 124.983 140.32'\r\n >\r\n <g id='symbol' transform='translate(-177.491 -53.193)' {...rest}>\r\n <path\r\n id='Path_153'\r\n data-name='Path 153'\r\n d='M266.978,128.665l10.305-17.485,27.776,43.262.013,8.3-.091-57.131a4.3,4.3,0,0,0-1.99-3.428L252.984,73.42a4.408,4.408,0,0,0-3.821.018,4.352,4.352,0,0,0-.448.259l-.174.11L200,101.935l-.189.085a4.417,4.417,0,0,0-.717.418,4.29,4.29,0,0,0-1.729,2.731,4.419,4.419,0,0,0-.062.505l.076,46.556,25.872-40.1c3.257-5.317,10.354-7.03,16.942-6.937l7.732.2-45.56,73.064,5.371,3.092,46.106-76.083,20.379-.074-45.987,78L247.4,194.422l2.29,1.317a4.4,4.4,0,0,0,3.087.061l50.71-29.387-9.7,5.618Zm3.932,56.627-19.356-30.379,11.815-20.049,25.42,40.066Z'\r\n transform='translate(-11.186 -11.178)'\r\n fill='#2d374b'\r\n />\r\n <path\r\n id='Path_154'\r\n data-name='Path 154'\r\n d='M321.883,235.122,341.239,265.5l17.88-10.362L333.7,215.073Z'\r\n transform='translate(-81.515 -91.387)'\r\n fill='#28a0f0'\r\n />\r\n <path\r\n id='Path_155'\r\n data-name='Path 155'\r\n d='M395.4,212.248l-.013-8.3-27.776-43.262L357.3,178.169l26.814,43.366,9.7-5.618a4.3,4.3,0,0,0,1.587-3.129Z'\r\n transform='translate(-101.511 -60.683)'\r\n fill='#28a0f0'\r\n />\r\n <path\r\n id='Path_156'\r\n data-name='Path 156'\r\n d='M177.491,212.312l13.691,7.889,45.56-73.064-7.732-.2c-6.588-.093-13.685,1.619-16.942,6.937l-25.872,40.1-8.7,13.373v4.969Z'\r\n transform='translate(0 -52.917)'\r\n fill='#fff'\r\n />\r\n <path\r\n id='Path_157'\r\n data-name='Path 157'\r\n d='M287.75,147.406l-20.378.074-46.106,76.083,16.115,9.279,4.382-7.433Z'\r\n transform='translate(-24.713 -53.187)'\r\n fill='#fff'\r\n />\r\n <path\r\n id='Path_158'\r\n data-name='Path 158'\r\n d='M302.474,94.114a12.98,12.98,0,0,0-6.093-10.435L245.719,54.545a13.178,13.178,0,0,0-11.624,0c-.423.213-49.268,28.542-49.268,28.542a13.016,13.016,0,0,0-1.94,1.148,12.881,12.881,0,0,0-5.4,9.854v60.338l8.7-13.373L186.12,94.5a4.325,4.325,0,0,1,1.791-3.236c.23-.165,49.909-28.921,50.067-29a4.408,4.408,0,0,1,3.821-.018l50.007,28.765a4.3,4.3,0,0,1,1.99,3.428v57.672a4.2,4.2,0,0,1-1.495,3.129l-9.7,5.618-5,2.9-17.88,10.362-18.133,10.509a4.395,4.395,0,0,1-3.087-.061l-21.453-12.339-4.382,7.432,19.28,11.1c.638.362,1.206.684,1.672.946.722.4,1.214.675,1.387.759a12.528,12.528,0,0,0,5.118,1.053,12.89,12.89,0,0,0,4.72-.888l52.667-30.5a12.876,12.876,0,0,0,4.962-9.7Z'\r\n transform='translate(-0.001)'\r\n fill='#96bedc'\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Arbitrum\r\n","import React from 'react'\r\n\r\nconst Optimism = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"40.000000pt\" height=\"40.000000pt\" viewBox=\"0 0 40.000000 40.000000\"\r\n preserveAspectRatio=\"xMidYMid meet\" {...rest}>\r\n\r\n <g transform=\"translate(0.000000,40.000000) scale(0.100000,-0.100000)\"\r\n fill=\"#000000\" stroke=\"none\">\r\n <path d=\"M109 372 c-43 -22 -59 -38 -81 -81 -36 -68 -36 -114 0 -182 22 -43\r\n 38 -59 81 -81 68 -36 114 -36 182 0 43 22 59 38 81 81 36 68 36 114 0 182 -22\r\n 43 -38 59 -81 81 -31 16 -69 28 -91 28 -22 0 -60 -12 -91 -28z m79 -124 c16\r\n -16 15 -60 -1 -82 -9 -12 -23 -17 -42 -14 -26 3 -30 8 -33 36 -5 54 44 92 76\r\n 60z m96 -1 c26 -19 13 -54 -24 -62 -17 -4 -30 -13 -30 -21 0 -8 -6 -14 -14\r\n -14 -10 0 -12 9 -5 43 4 23 8 48 9 55 0 16 41 16 64 -1z\"/>\r\n <path d=\"M140 219 c-14 -24 -7 -49 14 -49 15 0 28 34 19 56 -7 20 -21 17 -33\r\n -7z\"/>\r\n <path d=\"M247 233 c-12 -11 -8 -23 8 -23 8 0 15 7 15 15 0 16 -12 20 -23 8z\"/>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Optimism\r\n","import React from 'react'\r\n\r\nconst USDT = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='37' height='37' fill='url(#pattern5)' />\r\n <defs>\r\n <pattern\r\n id='pattern5'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_312' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_312'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default USDT\r\n","import React from 'react'\r\n\r\nconst Copy = ({ width = 20, height = 20, fill = '#979797', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 330 330'\r\n xmlSpace='preserve'\r\n xmlns='http://www.w3.org/2000/svg'\r\n fill={fill}\r\n {...rest}\r\n >\r\n <g>\r\n <path\r\n d='M35,270h45v45c0,8.284,6.716,15,15,15h200c8.284,0,15-6.716,15-15V75c0-8.284-6.716-15-15-15h-45V15\r\n c0-8.284-6.716-15-15-15H35c-8.284,0-15,6.716-15,15v240C20,263.284,26.716,270,35,270z M280,300H110V90h170V300z M50,30h170v30H95\r\n c-8.284,0-15,6.716-15,15v165H50V30z'\r\n />\r\n <path d='M155,120c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15s-6.716-15-15-15H155z' />\r\n <path d='M235,180h-80c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15S243.284,180,235,180z' />\r\n <path\r\n d='M235,240h-80c-8.284,0-15,6.716-15,15c0,8.284,6.716,15,15,15h80c8.284,0,15-6.716,15-15C250,246.716,243.284,240,235,240z\r\n '\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Copy\r\n","import React from 'react'\r\n\r\nconst Bank = ({ width = 32, height = 32, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 256 256'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <defs>\r\n </defs>\r\n <g style={{\r\n stroke: 'none',\r\n strokeWidth: 0,\r\n strokeDasharray: 'none',\r\n strokeLinecap: 'butt',\r\n strokeLinejoin: 'miter', strokeMiterlimit: 10, fill: 'none', fillRule: 'nonzero', opacity: 1\r\n }} transform='translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)'\r\n >\r\n <path d=\"M 84.668 38.004 v -6.27 H 90 V 20 L 45 3.034 L 0 20 v 11.734 h 5.332 v 6.27 h 4.818 v 30.892 H 5.332 v 6.271 H 0 v 11.8 h 90 v -11.8 h -5.332 v -6.271 H 79.85 V 38.004 H 84.668 z M 81.668 35.004 H 66.332 v -3.27 h 15.336 V 35.004 z M 63.332 68.896 v 6.271 h -7.664 v -6.271 H 50.85 V 38.004 h 4.818 v -6.27 h 7.664 v 6.27 h 4.818 v 30.892 H 63.332 z M 26.668 38.004 v -6.27 h 7.664 v 6.27 h 4.818 v 30.892 h -4.818 v 6.271 h -7.664 v -6.271 H 21.85 V 38.004 H 26.668 z M 42.15 68.896 V 38.004 h 5.7 v 30.892 H 42.15 z M 37.332 35.004 v -3.27 h 15.336 v 3.27 H 37.332 z M 37.332 71.896 h 15.336 v 3.271 H 37.332 V 71.896 z M 3 22.075 L 45 6.24 l 42 15.835 v 6.659 H 3 V 22.075 z M 8.332 31.734 h 15.336 v 3.27 H 8.332 V 31.734 z M 13.15 38.004 h 5.7 v 30.892 h -5.7 V 38.004 z M 8.332 71.896 h 15.336 v 3.271 H 8.332 V 71.896 z M 87 83.966 H 3 v -5.8 h 84 V 83.966 z M 81.668 75.166 H 66.332 v -3.271 h 15.336 V 75.166 z M 76.85 68.896 H 71.15 V 38.004 h 5.699 V 68.896 z\"\r\n style={{ stroke: 'none', strokeWidth: 1, strokeDasharray: 'none', strokeLinecap: 'butt', strokeLinejoin: 'miter', strokeMiterlimit: 10, fill: 'rgb(0,0,0)', fillRule: 'nonzero', opacity: 1, }} transform=\" matrix(1 0 0 1 0 0) \" strokeLinecap=\"round\" />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Bank\r\n","import React from 'react'\r\n\r\nconst BNB = ({ width = 59, height = 58, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox=\"0 0 59 58\"\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <defs>\r\n <clipPath id=\"clip-path\">\r\n <rect id=\"Rectangle_23\" data-name=\"Rectangle 23\" width=\"59\" height=\"58\" transform=\"translate(3362.627 192.855)\" fill=\"#f0b90b\" />\r\n </clipPath>\r\n </defs>\r\n <g id=\"bnb\" transform=\"translate(-3602 -272)\">\r\n <g id=\"bnb-2\" data-name=\"bnb\" transform=\"translate(239.373 79.145)\" clipPath=\"url(#clip-path)\">\r\n <g id=\"chain-smart-h\" transform=\"translate(3362.962 192.954)\">\r\n <path id=\"Path_87\" data-name=\"Path 87\" d=\"M81.839,29.014H71.154V6.54H81.609c4.605,0,7.415,2.3,7.415,5.8v.046a5.171,5.171,0,0,1-2.947,4.836c2.579,1.013,4.191,2.487,4.191,5.527V22.8C90.267,26.988,86.951,29.014,81.839,29.014ZM84.1,13.172c0-1.474-1.151-2.3-3.224-2.3H75.99v4.744h4.559c2.165,0,3.546-.691,3.546-2.395ZM85.339,22.2c0-1.52-1.105-2.441-3.638-2.441H75.99v4.928h5.895c2.165,0,3.5-.783,3.5-2.441V22.2ZM95.7,29.014V6.54h4.928V29.014Zm27.31,0L112.143,14.737V29.014h-4.882V6.54h4.559L122.367,20.4V6.54h4.882V29.014Zm26.435,0-2.072-5.02h-9.487l-2.072,5.02h-5.02L140.42,6.356h4.559l9.625,22.659Zm-6.816-16.672-2.994,7.277h5.987Zm31.363,16.672L163.125,14.737V29.014h-4.882V6.54H162.8L173.349,20.4V6.54h4.882V29.014Zm20.494.414a11.328,11.328,0,0,1-11.514-11.56v-.046A11.42,11.42,0,0,1,194.719,6.217a11.626,11.626,0,0,1,8.842,3.454L200.43,13.31a8.357,8.357,0,0,0-5.757-2.533c-3.776,0-6.54,3.132-6.54,7v.046c0,3.869,2.671,7.046,6.54,7.046,2.579,0,4.145-1.013,5.895-2.625l3.132,3.178A11.5,11.5,0,0,1,194.488,29.429Zm13.218-.414V6.54h16.948v4.421h-12.02V15.52h10.593v4.421H212.634v4.744h12.2v4.421H207.706ZM6.54,22.475,0,29.014l6.54,6.54,6.54-6.54Zm22.475-9.349L40.252,24.363l6.54-6.54L29.014,0,11.237,17.777l6.54,6.54Zm22.475,9.349-6.54,6.54,6.54,6.54,6.54-6.54ZM29.014,44.949,17.777,33.712l-6.54,6.54L29.014,58.029,46.791,40.252l-6.54-6.54Zm0-9.4,6.54-6.54-6.54-6.54-6.54,6.54Z\" fill=\"#f0b90b\" />\r\n <path id=\"Path_88\" data-name=\"Path 88\" d=\"M154.609,82.187c0-1.039.928-1.857,2.52-1.857a7.028,7.028,0,0,1,4.2,1.592l1.459-2.056a8.577,8.577,0,0,0-5.615-1.945c-3.073,0-5.283,1.813-5.283,4.51,0,2.874,1.857,3.846,5.151,4.642,2.874.663,3.493,1.26,3.493,2.387,0,1.194-1.061,1.967-2.741,1.967a7.126,7.126,0,0,1-4.885-2.012l-1.636,1.945a9.532,9.532,0,0,0,6.455,2.476c3.25,0,5.527-1.724,5.527-4.642,0-2.586-1.7-3.758-4.974-4.554C155.316,83.933,154.609,83.4,154.609,82.187Z\" transform=\"translate(-81.604 -42.034)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_89\" data-name=\"Path 89\" d=\"M195.76,82.777v11.1h2.719V78.4h-2.9l-4.709,7.317L186.166,78.4h-2.9V93.874h2.675V82.821l4.841,7.251h.088Z\" transform=\"translate(-98.866 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_90\" data-name=\"Path 90\" d=\"M230.431,78.16h-2.52L221.1,93.745h2.785l1.592-3.736H232.8l1.57,3.736h2.874ZM231.8,87.6h-5.328l2.653-6.19Z\" transform=\"translate(-119.274 -42.164)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_91\" data-name=\"Path 91\" d=\"M274.074,93.874,269.9,88.016a4.634,4.634,0,0,0,3.692-4.709c0-3.029-2.189-4.908-5.748-4.908h-6.9V93.874h2.719V88.481h3.4l3.8,5.394Zm-3.25-10.412c0,1.592-1.238,2.609-3.183,2.609h-3.979V80.876h3.957C269.631,80.876,270.824,81.76,270.824,83.463Z\" transform=\"translate(-140.767 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_92\" data-name=\"Path 92\" d=\"M299.779,80.92h4.908V78.4H292.13v2.52h4.908V93.874h2.741Z\" transform=\"translate(-157.591 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_93\" data-name=\"Path 93\" d=\"M350.786,91.088l-1.746-1.769a6.066,6.066,0,0,1-4.443,2.012,5.52,5.52,0,0,1,0-11.009,6.154,6.154,0,0,1,4.333,1.923l1.746-2.012a8.066,8.066,0,0,0-6.057-2.41,8,8,0,0,0-.111,16A7.984,7.984,0,0,0,350.786,91.088Z\" transform=\"translate(-181.601 -41.983)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_94\" data-name=\"Path 94\" d=\"M382.706,87.353v6.521h2.719V78.4h-2.719v6.433h-7.383V78.4H372.6V93.874h2.719V87.353Z\" transform=\"translate(-201.002 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_95\" data-name=\"Path 95\" d=\"M414.561,78.16h-2.52l-6.809,15.585h2.785l1.592-3.736h7.317l1.57,3.736h2.874Zm1.371,9.439H410.6l2.653-6.19Z\" transform=\"translate(-218.604 -42.164)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_96\" data-name=\"Path 96\" d=\"M445.41,78.4V93.874h2.719V78.4Z\" transform=\"translate(-240.278 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_97\" data-name=\"Path 97\" d=\"M470.158,89.1l-8.29-10.7h-2.52V93.874h2.675V82.866l8.533,11.009h2.277V78.4h-2.675Z\" transform=\"translate(-247.797 -42.293)\" fill=\"#f0b90b\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default BNB\r\n","import React from 'react'\r\n\r\nconst KEUR = ({ width = 32, height = 32, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 32 32'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <g fill='none' fillRule='evenodd'>\r\n <circle cx='16' cy='16' fill='#0f8ff8' r='16' />\r\n <path\r\n d='M8 19.004L8.81 17h.857a16.279 16.279 0 01-.034-1.03c0-.448.019-.864.056-1.25H8l.81-2.003h1.274C11.27 8.906 13.944 7 18.103 7c1.367 0 2.666.177 3.897.532v2.524a8.92 8.92 0 00-3.683-.776c-2.493 0-4.096 1.146-4.81 3.438h7.423l-.81 2.003h-7.097a6.938 6.938 0 00-.056.995c0 .479.015.907.045 1.285h6.183l-.8 2.003H13.44c.533 1.389 1.183 2.355 1.949 2.9.765.544 1.858.816 3.277.816 1.014 0 2.125-.247 3.334-.741v2.373c-1.149.432-2.515.648-4.1.648-4.167 0-6.803-1.999-7.906-5.996z'\r\n fill='#ffffff'\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default KEUR\r\n","import React from 'react'\r\n\r\nconst Celo = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 610 610'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <circle cx='305' cy='305' r='305' fill='#FF060A' />\r\n <path\r\n d='M505.4 214.7c-17.3-12.1-35.8-25-53.9-37.8-.4-.3-.8-.6-1.3-.9-2-1.5-4.3-3.1-7.1-4l-.2-.1c-48.4-11.7-97.6-23.7-145.2-35.3-43.2-10.5-86.3-21-129.5-31.5-1.1-.3-2.2-.6-3.4-.9-3.9-1.1-8.4-2.3-13.2-1.7-1.4.2-2.6.7-3.7 1.4l-1.2 1c-1.9 1.8-2.9 4.1-3.4 5.4l-.3.8v4.6l.2.7c27.3 76.5 55.3 154.1 82.3 229.2 20.8 57.8 42.4 117.7 63.5 176.5 1.3 4 5 6.6 9.6 7h1c4.3 0 8.1-2.1 10-5.5l79.2-115.5c19.3-28.1 38.6-56.3 57.9-84.4 7.9-11.5 15.8-23.1 23.7-34.6 13-19 26.4-38.6 39.7-57.7l.7-1v-1.2c.3-3.5.4-10.7-5.4-14.5m-92.8 42.1c-18.6 9.7-37.6 19.7-56.7 29.6 11.1-11.9 22.3-23.9 33.4-35.8 13.9-15 28.4-30.5 42.6-45.7l.3-.3c1.2-1.6 2.7-3.1 4.3-4.7 1.1-1.1 2.3-2.2 3.4-3.5 7.4 5.1 14.9 10.3 22.1 15.4 5.2 3.7 10.5 7.4 15.9 11.1-22 11.2-44 22.7-65.3 33.9m-47.8-4.8c-14.3 15.5-29.1 31.4-43.8 47.1-28.5-34.6-57.6-69.7-85.8-103.6-12.8-15.4-25.7-30.9-38.5-46.3l-.1-.1c-2.9-3.3-5.7-6.9-8.5-10.3-1.8-2.3-3.7-4.5-5.6-6.8 11.6 3 23.3 5.8 34.8 8.5 10.1 2.4 20.6 4.9 30.9 7.5 58 14.1 116.1 28.2 174.1 42.3-19.3 20.6-38.7 41.5-57.5 61.7m-50.3 194.9c1.1-10.5 2.3-21.3 3.3-31.9.9-8.5 1.8-17.2 2.7-25.5 1.4-13.3 2.9-27.1 4.1-40.6l.3-2.4c1-8.6 2-17.5 2.6-26.4 1.1-.6 2.3-1.2 3.6-1.7 1.5-.7 3-1.3 4.5-2.2 23.1-12.1 46.2-24.2 69.4-36.2 23.1-12 46.8-24.4 70.3-36.7-21.4 31-42.9 62.3-63.7 92.8-17.9 26.1-36.3 53-54.6 79.5-7.2 10.6-14.7 21.4-21.8 31.8-8 11.6-16.2 23.5-24.2 35.4 1-12 2.2-24.1 3.5-35.9M175.1 155.6c-1.3-3.6-2.7-7.3-3.9-10.8 27 32.6 54.2 65.4 80.7 97.2 13.7 16.5 27.4 32.9 41.1 49.5 2.7 3.1 5.4 6.4 8 9.6 3.4 4.1 6.8 8.4 10.5 12.5-1.2 10.3-2.2 20.7-3.3 30.7-.7 7-1.4 14-2.2 21.1v.1c-.3 4.5-.9 9-1.4 13.4-.7 6.1-2.3 19.9-2.3 19.9l-.1.7c-1.8 20.2-4 40.6-6.1 60.4-.9 8.2-1.7 16.6-2.6 25-.5-1.5-1.1-3-1.6-4.4-1.5-4-3-8.2-4.4-12.3l-10.7-29.7C242.9 344.2 209 250 175.1 155.6'\r\n fill='#ffffff'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Celo\r\n","export const SOLANA_USDK_ADDRESS =\r\n '9YSFWfU9Ram6mAo2QP9zsTnA8yFkkkFGEs3kGgjtQKvp'\r\nexport const ETHEREUM_USDK_ADDRESS =\r\n '0x5FF59Bf2277A1e6bA9bB8A38Ea3F9ABfd3d9345a'\r\nexport const POLYGON_USDK_ADDRESS = '0x95A94Fc761F98fcC60DA07C55F8ECDDD8B381CfF'\r\nexport const AVAX_USDK_ADDRESS = '0x5d8598Ce65f15f14c58aD3a4CD285223c8e76a2E'\r\nexport const BSC_USDK_ADDRESS = '0x3eb36be2c3FD244139756F681420637a2a9464e3'\r\nexport const OPTIMISM_USDK_ADDRESS =\r\n '0x2cf79df2879902a2fc06329b1760e0f2ad9a3a47'\r\nexport const ARBITRUM_USDK_ADDRESS =\r\n '0x2cf79df2879902a2fc06329b1760e0f2ad9a3a47'\r\nexport const POLYGON_ZKEVM_ADDRESS =\r\n '0x3eb36be2c3FD244139756F681420637a2a9464e3'\r\n\r\nexport const ETHEREUM_KEUR_ADDRESS =\r\n '0xAFc823fcbe5945f5f38f144314663c87dA713E06'\r\nexport const POLYGON_KEUR_ADDRESS = '0x7D4325eE3A80778Af01498ca32E0C30e233ffB0d'\r\nexport const TRON_USDK_ADDRESS = 'TEuRmCALTUY2syY1EE6mMYnyfmNfFfMpYz'\r\nexport const TRON_USDK_OWNER_ADDRESS = 'TBVn4bsBN4DhtZ7D3vEVpAyqkvdFn7zmpU'\r\n","import { clusterApiUrl } from '@solana/web3.js'\r\nimport {\r\n EthereumIcon,\r\n PolygonIcon,\r\n AvalancheIcon,\r\n USDTIcon,\r\n SolanaIcon,\r\n BSCIcon,\r\n ArbitrumIcon,\r\n OptimismIcon,\r\n BankIcon,\r\n KEURICON,\r\n TronIcon\r\n} from '../assets/icons'\r\nimport { POLYGON_KEUR_ADDRESS, ETHEREUM_KEUR_ADDRESS } from './config'\r\n\r\nexport enum ChainName {\r\n ETHEREUM = 'ETH',\r\n POLYGON = 'POL',\r\n AVALANCHE = 'AVX',\r\n SOLANA = 'SOL',\r\n BSC = 'BSC',\r\n ARBITRUM = 'ARB',\r\n OPTIMISM = 'OPT',\r\n POLYGON_ZKEVM = 'ZKE',\r\n TRON = 'TRX',\r\n FIAT = 'FIAT'\r\n}\r\n\r\nexport enum SupportedChainId {\r\n ETHEREUM = 11155111,\r\n POLYGON = 80002,\r\n AVALANCHE = 43113,\r\n BSC = 97,\r\n ARBITRUM = 421614,\r\n OPTIMISM = 11155420,\r\n POLYGON_ZKEM = 2442\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_IDS: { [chainName: string]: SupportedChainId } = {\r\n [ChainName.ETHEREUM]: SupportedChainId.ETHEREUM,\r\n [ChainName.POLYGON]: SupportedChainId.POLYGON,\r\n [ChainName.AVALANCHE]: SupportedChainId.AVALANCHE,\r\n [ChainName.BSC]: SupportedChainId.BSC,\r\n [ChainName.OPTIMISM]: SupportedChainId.OPTIMISM,\r\n [ChainName.ARBITRUM]: SupportedChainId.ARBITRUM,\r\n [ChainName.POLYGON_ZKEVM]: SupportedChainId.POLYGON_ZKEM\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_STRING: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'Ethereum',\r\n [ChainName.POLYGON]: 'Polygon',\r\n [ChainName.AVALANCHE]: 'Avalanche',\r\n [ChainName.SOLANA]: 'Solana',\r\n [ChainName.BSC]: 'BNB Smart Chain',\r\n [ChainName.OPTIMISM]: 'Optimism',\r\n [ChainName.ARBITRUM]: 'Arbitrum',\r\n [ChainName.POLYGON_ZKEVM]: 'Polygon zkEVM',\r\n [ChainName.TRON]: 'Tron',\r\n [ChainName.FIAT]: 'Pay with FIAT'\r\n}\r\n\r\nexport const CHAIN_STRING_TO_NAME: { [chainName: string]: ChainName } = {\r\n ['Ethereum']: ChainName.ETHEREUM,\r\n ['Polygon']: ChainName.POLYGON,\r\n ['Avalanche']: ChainName.AVALANCHE,\r\n ['Solana']: ChainName.SOLANA,\r\n ['Binance']: ChainName.BSC,\r\n ['Optimism']: ChainName.OPTIMISM,\r\n ['Arbitrum']: ChainName.ARBITRUM,\r\n ['Polygon zkEVM']: ChainName.POLYGON_ZKEVM,\r\n ['Tron']: ChainName.TRON,\r\n ['Pay with FIAT']: ChainName.FIAT\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_EXPLORER: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'sepolia.etherscan.io',\r\n [ChainName.POLYGON]: 'www.oklink.com/amoy',\r\n [ChainName.AVALANCHE]: 'testnet.snowtrace.io',\r\n [ChainName.SOLANA]: 'solscan.io',\r\n [ChainName.BSC]: 'testnet.bscscan.com',\r\n [ChainName.OPTIMISM]: 'sepolia-optimism.etherscan.io',\r\n [ChainName.ARBITRUM]: 'sepolia.arbiscan.io',\r\n [ChainName.POLYGON_ZKEVM]: 'cardona-zkevm.polygonscan.com',\r\n [ChainName.TRON]: 'nile.tronscan.org/#'\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_GECKO_ID: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'ethereum',\r\n [ChainName.POLYGON]: 'matic-network',\r\n [ChainName.AVALANCHE]: 'avalanche-2',\r\n [ChainName.SOLANA]: 'solana',\r\n [ChainName.BSC]: 'binancecoin',\r\n [ChainName.OPTIMISM]: 'ethereum',\r\n [ChainName.ARBITRUM]: 'ethereum',\r\n [ChainName.POLYGON_ZKEVM]: 'matic-network',\r\n [ChainName.TRON]: 'tron'\r\n}\r\n\r\nexport const CHAIN_IDS_TO_NAMES: { [chainId: number]: string } = {\r\n [SupportedChainId.ETHEREUM]: ChainName.ETHEREUM,\r\n [SupportedChainId.POLYGON]: ChainName.POLYGON,\r\n [SupportedChainId.AVALANCHE]: ChainName.AVALANCHE,\r\n [SupportedChainId.BSC]: ChainName.BSC,\r\n [SupportedChainId.OPTIMISM]: ChainName.OPTIMISM,\r\n [SupportedChainId.ARBITRUM]: ChainName.ARBITRUM,\r\n [SupportedChainId.POLYGON_ZKEM]: ChainName.POLYGON_ZKEVM\r\n}\r\n\r\nexport const networkOptions = [\r\n {\r\n id: ChainName.ARBITRUM,\r\n label: 'Arbitrum',\r\n icon: ArbitrumIcon\r\n },\r\n {\r\n id: ChainName.AVALANCHE,\r\n label: 'Avalanche',\r\n icon: AvalancheIcon\r\n },\r\n {\r\n id: ChainName.BSC,\r\n label: 'Binance',\r\n icon: BSCIcon\r\n },\r\n {\r\n id: ChainName.ETHEREUM,\r\n label: 'Ethereum',\r\n icon: EthereumIcon\r\n },\r\n {\r\n id: ChainName.FIAT,\r\n label: 'Pay with FIAT',\r\n icon: BankIcon\r\n },\r\n {\r\n id: ChainName.OPTIMISM,\r\n label: 'Optimism',\r\n icon: OptimismIcon\r\n },\r\n {\r\n id: ChainName.POLYGON,\r\n label: 'Polygon',\r\n icon: PolygonIcon\r\n },\r\n {\r\n id: ChainName.POLYGON_ZKEVM,\r\n label: 'Polygon zkEVM',\r\n icon: PolygonIcon\r\n },\r\n {\r\n id: ChainName.SOLANA,\r\n label: 'Solana',\r\n icon: SolanaIcon\r\n },\r\n {\r\n id: ChainName.TRON,\r\n label: 'Tron',\r\n icon: TronIcon\r\n }\r\n]\r\nexport const getNetworkOption = (id: string) => {\r\n const index = networkOptions.findIndex((item) => item.id === id)\r\n if (index < 0) return\r\n return networkOptions[index]\r\n}\r\n\r\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet'\r\nexport const CLUSTER: Cluster = 'devnet'\r\nexport const SOLANA_HOST = clusterApiUrl(CLUSTER)\r\nexport const isEVMChain = (chainId: string) =>\r\n chainId === ChainName.ETHEREUM ||\r\n chainId === ChainName.POLYGON ||\r\n chainId === ChainName.AVALANCHE ||\r\n chainId === ChainName.BSC ||\r\n chainId === ChainName.OPTIMISM ||\r\n chainId === ChainName.ARBITRUM ||\r\n chainId === ChainName.POLYGON_ZKEVM\r\n\r\ntype CoinOptions = {\r\n [key: string]: any\r\n}\r\n\r\nexport const COIN_LIST: CoinOptions = {\r\n USDK: {\r\n symbol: 'USDK',\r\n icon: USDTIcon\r\n },\r\n KEUR: {\r\n symbol: 'KEUR',\r\n icon: KEURICON,\r\n address: {\r\n ETH: ETHEREUM_KEUR_ADDRESS,\r\n POL: POLYGON_KEUR_ADDRESS\r\n }\r\n }\r\n}\r\n\r\nexport enum TransactionStatus {\r\n AVAILABLE = 'Available',\r\n CONFIRMED = 'Confirmed',\r\n PAID = 'Paid',\r\n COMPLETED = 'Completed',\r\n FAILEDTOPAY = 'FailedToPay',\r\n FAILEDTOPULL = 'FailedToPull',\r\n UNAVAILABLE = 'UnAvailable',\r\n KEYSIGNED = 'KeySigned'\r\n}\r\n\r\nexport const tooltipInfo = [\r\n ['Initialize Kima transaction'],\r\n ['Transfer liquidity from source chain'],\r\n ['Key signing'],\r\n ['Transfer liquidity to target chain'],\r\n []\r\n]\r\n","export { ChainName as SupportNetworks } from './utils/constants'\r\nexport { CHAIN_STRING_TO_NAME, CHAIN_NAMES_TO_STRING } from './utils/constants'\r\nimport {\r\n ChainName as SupportNetworks,\r\n TransactionStatus\r\n} from './utils/constants'\r\n\r\nexport enum FontSizeOptions {\r\n large = 'large',\r\n medium = 'medium',\r\n small = 'small'\r\n}\r\n\r\nexport enum ModeOptions {\r\n payment = 'payment',\r\n bridge = 'bridge',\r\n status = 'status'\r\n}\r\n\r\nexport enum CurrencyOptions {\r\n USDK = 'USDK',\r\n G$ = 'GDOLLAR'\r\n}\r\n\r\nexport enum ColorModeOptions {\r\n light = 'light',\r\n dark = 'dark'\r\n}\r\n\r\nexport enum DAppOptions {\r\n None = 'none',\r\n LPAdd = 'LPAdd',\r\n LPDrain = 'LPDrain'\r\n}\r\n\r\nexport interface TransactionOption {\r\n targetChain: SupportNetworks\r\n targetAddress: string\r\n amount: number\r\n}\r\n\r\nexport interface TitleOption {\r\n initialTitle?: string\r\n confirmTitle?: string\r\n}\r\n\r\nexport interface PaymentTitleOption {\r\n title?: string\r\n style?: object\r\n}\r\n\r\nexport interface CompliantOption {\r\n checkCompliant: boolean\r\n xploriskBaseUrl?: string\r\n xploriskApiKey?: string\r\n}\r\n\r\nexport interface ThemeOptions {\r\n colorMode?: ColorModeOptions\r\n fontSize?: FontSizeOptions\r\n fontFamily?: string\r\n backgroundColorLight?: string\r\n backgroundColorDark?: string\r\n}\r\n\r\nexport interface TransactionData {\r\n status?: TransactionStatus\r\n sourceChain?: string\r\n targetChain?: string\r\n tssPullHash?: string\r\n tssReleaseHash?: string\r\n symbol?: string\r\n amount?: number\r\n kimaTxHash?: string\r\n failReason?: string\r\n}\r\n\r\nexport interface Web3ModalAccountInfo {\r\n address?: string | undefined\r\n isConnected?: boolean | undefined\r\n chainId?: number | undefined\r\n}\r\n","import * as toolkitRaw from '@reduxjs/toolkit'\r\nimport { PayloadAction } from '@reduxjs/toolkit'\r\nconst { createSlice } = toolkitRaw\r\n// import { WalletName } from '@solana/wallet-adapter-base'\r\nimport {\r\n DAppOptions,\r\n ModeOptions,\r\n ThemeOptions,\r\n TransactionOption\r\n} from '../interface'\r\n\r\ntype BankDetails = {\r\n iban: string\r\n recipient: string\r\n}\r\n\r\nexport type AddressOption = {\r\n [key: string]: string\r\n}\r\n\r\nexport type TokenOptions = {\r\n [key: string]: AddressOption\r\n}\r\n\r\nexport interface OptionState {\r\n theme: ThemeOptions // light or dark\r\n mode: ModeOptions // payment or bridge\r\n sourceChain: string // origin network on UI\r\n targetChain: string // target network on UI\r\n targetAddress: string // target address on UI\r\n tokenOptions: TokenOptions // token options from blockchain endpoint\r\n solanaConnectModal: boolean // solana wallet connection modal state - open or closed\r\n tronConnectModal: boolean // tron wallet connection modal state - open or closed\r\n helpPopup: boolean // shows popup to show help instructions\r\n hashPopup: boolean // shows popup to show hashes of transactions (kima tx, pull & release hashes)\r\n bankPopup: boolean // shows popup to simulate bank transfer\r\n walletAutoConnect: boolean // propmpt metamask connect automatically\r\n provider: any // Ethereum wallet provider\r\n dAppOption: DAppOptions // specify which dApp is using this widget\r\n solanaProvider: any // selected solana wallet provider - phantom, solflare or ...\r\n submitted: boolean // if transaction is submitted, shows Transaction Widget to monitor status\r\n amount: number // amount input\r\n feeDeduct: boolean // whether deduct fee from amount or not\r\n transactionOption?: TransactionOption // input option from dApp\r\n errorHandler: Function // error callback function from dApp\r\n keplrHandler: Function // keplr wallet integration function from dApp\r\n closeHandler: Function // callback function for close event\r\n successHandler: Function // callback function for success event\r\n switchChainHandler: Function // callback function to switch chain request\r\n initChainFromProvider: boolean // chainId is initialized from provider or not\r\n serviceFee: number // service fee from kima node\r\n backendUrl: string // URL for kima-transaction-backend component\r\n nodeProviderQuery: string // REST API endpoint to query kima node\r\n kimaExplorerUrl: string // URL for kima explore (testnet, staging or demo)\r\n txId: number // transaction id to monitor it's status\r\n selectedToken: string // Currently selected token\r\n avilableTokenList: Array<string> // Available token list by source, target chain\r\n compliantOption: boolean // option to check compliant addresses\r\n sourceCompliant: string // source address is compliant or not\r\n targetCompliant: string // target address is compliant or not\r\n useFIAT: boolean // use FIAT Payment mockup or not?\r\n bankDetails: BankDetails\r\n targetNetworkFetching: boolean // is fetching available chains according to current source network or not\r\n signature: string // off-chain proof of target address for on-ramping fiat transaction\r\n uuid: string // uuid for depasify KYC\r\n kycStatus: string // kyc status from depasify\r\n}\r\n\r\nconst initialState: OptionState = {\r\n theme: {},\r\n tokenOptions: {},\r\n kimaExplorerUrl: 'explorer.kima.finance',\r\n mode: ModeOptions.bridge,\r\n sourceChain: '',\r\n targetChain: '',\r\n targetAddress: '',\r\n solanaConnectModal: false,\r\n tronConnectModal: false,\r\n helpPopup: false,\r\n hashPopup: false,\r\n bankPopup: false,\r\n walletAutoConnect: true,\r\n provider: undefined,\r\n dAppOption: DAppOptions.None,\r\n solanaProvider: undefined,\r\n submitted: false,\r\n amount: 0,\r\n feeDeduct: false,\r\n errorHandler: () => void 0,\r\n closeHandler: () => void 0,\r\n successHandler: () => void 0,\r\n switchChainHandler: () => void 0,\r\n keplrHandler: () => void 0,\r\n initChainFromProvider: false,\r\n serviceFee: -1,\r\n backendUrl: '',\r\n nodeProviderQuery: '',\r\n txId: -1,\r\n selectedToken: 'USDK',\r\n avilableTokenList: ['USDK'],\r\n compliantOption: true,\r\n sourceCompliant: 'low',\r\n targetCompliant: 'low',\r\n useFIAT: false,\r\n bankDetails: {\r\n iban: '',\r\n recipient: ''\r\n },\r\n targetNetworkFetching: false,\r\n signature: '',\r\n uuid: '',\r\n kycStatus: ''\r\n}\r\n\r\nexport const optionSlice = createSlice({\r\n name: 'option',\r\n initialState,\r\n reducers: {\r\n initialize: (state) => {\r\n state.submitted = false\r\n state.txId = -1\r\n state.serviceFee = -1\r\n state.amount = 0\r\n state.targetAddress = ''\r\n state.compliantOption = true\r\n state.sourceCompliant = 'low'\r\n state.targetCompliant = 'low'\r\n state.useFIAT = false\r\n ;(state.tokenOptions = {}),\r\n (state.bankDetails = {\r\n iban: '',\r\n recipient: ''\r\n })\r\n state.initChainFromProvider = false\r\n state.targetNetworkFetching = false\r\n state.signature = ''\r\n },\r\n setTokenOptions: (state, action: PayloadAction<TokenOptions>) => {\r\n state.tokenOptions = action.payload\r\n },\r\n setTheme: (state, action: PayloadAction<ThemeOptions>) => {\r\n state.theme = action.payload\r\n },\r\n setKimaExplorer: (state, action: PayloadAction<string>) => {\r\n state.kimaExplorerUrl = action.payload\r\n },\r\n setSourceChain: (state, action: PayloadAction<string>) => {\r\n state.sourceChain = action.payload\r\n },\r\n setTargetChain: (state, action: PayloadAction<string>) => {\r\n state.targetChain = action.payload\r\n },\r\n setTargetAddress: (state, action: PayloadAction<string>) => {\r\n state.targetAddress = action.payload\r\n },\r\n setSolanaConnectModal: (state, action: PayloadAction<boolean>) => {\r\n state.solanaConnectModal = action.payload\r\n },\r\n setTronConnectModal: (state, action: PayloadAction<boolean>) => {\r\n state.tronConnectModal = action.payload\r\n },\r\n setHelpPopup: (state, action: PayloadAction<boolean>) => {\r\n state.helpPopup = action.payload\r\n },\r\n setHashPopup: (state, action: PayloadAction<boolean>) => {\r\n state.hashPopup = action.payload\r\n },\r\n setBankPopup: (state, action: PayloadAction<boolean>) => {\r\n state.bankPopup = action.payload\r\n },\r\n setProvider: (state, action: PayloadAction<any>) => {\r\n state.provider = action.payload\r\n },\r\n setDappOption: (state, action: PayloadAction<DAppOptions>) => {\r\n state.dAppOption = action.payload\r\n },\r\n setWalletAutoConnect: (state, action: PayloadAction<boolean>) => {\r\n state.walletAutoConnect = action.payload\r\n },\r\n setSolanaProvider: (state, action: PayloadAction<any>) => {\r\n state.solanaProvider = action.payload\r\n },\r\n setSubmitted: (state, action: PayloadAction<boolean>) => {\r\n state.submitted = action.payload\r\n },\r\n setTransactionOption: (state, action: PayloadAction<TransactionOption>) => {\r\n state.transactionOption = action.payload\r\n },\r\n setAmount: (state, action: PayloadAction<number>) => {\r\n state.amount = action.payload\r\n },\r\n setErrorHandler: (state, action: PayloadAction<Function>) => {\r\n state.errorHandler = action.payload\r\n },\r\n setKeplrHandler: (state, action: PayloadAction<Function>) => {\r\n state.keplrHandler = action.payload\r\n },\r\n setCloseHandler: (state, action: PayloadAction<Function>) => {\r\n state.closeHandler = action.payload\r\n },\r\n setSwitchChainHandler: (state, action: PayloadAction<Function>) => {\r\n state.switchChainHandler = action.payload\r\n },\r\n setInitChainFromProvider: (state, action: PayloadAction<boolean>) => {\r\n state.initChainFromProvider = action.payload\r\n },\r\n setSuccessHandler: (state, action: PayloadAction<Function>) => {\r\n state.successHandler = action.payload\r\n },\r\n setServiceFee: (state, action: PayloadAction<number>) => {\r\n state.serviceFee = action.payload\r\n },\r\n setMode: (state, action: PayloadAction<ModeOptions>) => {\r\n state.mode = action.payload\r\n },\r\n setFeeDeduct: (state, action: PayloadAction<boolean>) => {\r\n state.feeDeduct = action.payload\r\n },\r\n setBackendUrl: (state, action: PayloadAction<string>) => {\r\n state.backendUrl = action.payload\r\n },\r\n setNodeProviderQuery: (state, action: PayloadAction<string>) => {\r\n state.nodeProviderQuery = action.payload\r\n },\r\n setTxId: (state, action: PayloadAction<number>) => {\r\n state.txId = action.payload\r\n },\r\n setSelectedToken: (state, action: PayloadAction<string>) => {\r\n state.selectedToken = action.payload\r\n },\r\n setAvailableTokenList: (state, action: PayloadAction<Array<string>>) => {\r\n state.avilableTokenList = action.payload\r\n },\r\n setCompliantOption: (state, action: PayloadAction<boolean>) => {\r\n state.compliantOption = action.payload\r\n },\r\n setSourceCompliant: (state, action: PayloadAction<string>) => {\r\n state.sourceCompliant = action.payload\r\n },\r\n setTargetCompliant: (state, action: PayloadAction<string>) => {\r\n state.targetCompliant = action.payload\r\n },\r\n setUseFIAT: (state, action: PayloadAction<boolean>) => {\r\n state.useFIAT = action.payload\r\n },\r\n setBankDetails: (state, action: PayloadAction<BankDetails>) => {\r\n state.bankDetails = action.payload\r\n },\r\n setTargetChainFetching: (state, action: PayloadAction<boolean>) => {\r\n state.targetNetworkFetching = action.payload\r\n },\r\n setSignature: (state, action: PayloadAction<string>) => {\r\n state.signature = action.payload\r\n },\r\n setUuid: (state, action: PayloadAction<string>) => {\r\n state.uuid = action.payload\r\n },\r\n setKYCStatus: (state, action: PayloadAction<string>) => {\r\n state.kycStatus = action.payload\r\n }\r\n }\r\n})\r\n\r\nexport const {\r\n initialize,\r\n setTokenOptions,\r\n setKimaExplorer,\r\n setTheme,\r\n setSourceChain,\r\n setTargetChain,\r\n setTargetAddress,\r\n setSolanaConnectModal,\r\n setTronConnectModal,\r\n setHelpPopup,\r\n setHashPopup,\r\n setBankPopup,\r\n setSolanaProvider,\r\n setProvider,\r\n setDappOption,\r\n setWalletAutoConnect,\r\n setSubmitted,\r\n setTransactionOption,\r\n setAmount,\r\n setErrorHandler,\r\n setKeplrHandler,\r\n setCloseHandler,\r\n setSuccessHandler,\r\n setSwitchChainHandler,\r\n setInitChainFromProvider,\r\n setServiceFee,\r\n setMode,\r\n setFeeDeduct,\r\n setBackendUrl,\r\n setNodeProviderQuery,\r\n setTxId,\r\n setSelectedToken,\r\n setAvailableTokenList,\r\n setCompliantOption,\r\n setSourceCompliant,\r\n setTargetCompliant,\r\n setUseFIAT,\r\n setBankDetails,\r\n setTargetChainFetching,\r\n setSignature,\r\n setUuid,\r\n setKYCStatus\r\n} = optionSlice.actions\r\n\r\nexport default optionSlice.reducer\r\n","import * as toolkitRaw from '@reduxjs/toolkit'\r\nconst { configureStore } = toolkitRaw\r\nimport optionReducer from './optionSlice'\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n option: optionReducer\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false\r\n })\r\n})\r\n\r\n// Infer the `RootState` and `AppDispatch` types from the store itself\r\nexport type RootState = ReturnType<typeof store.getState>\r\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\r\nexport type AppDispatch = typeof store.dispatch\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { RootState } from '.'\r\n\r\n/*\r\n * Option\r\n */\r\n\r\nexport const selectTokenOptions = (state: RootState) =>\r\n state.option.tokenOptions\r\nexport const selectTheme = (state: RootState) => state.option.theme\r\nexport const selectKimaExplorer = (state: RootState) =>\r\n state.option.kimaExplorerUrl\r\nexport const selectSourceChain = (state: RootState) => state.option.sourceChain\r\nexport const selectTargetChain = (state: RootState) => state.option.targetChain\r\nexport const selectTargetAddress = (state: RootState) =>\r\n state.option.targetAddress\r\nexport const selectSolanaConnectModal = (state: RootState) =>\r\n state.option.solanaConnectModal\r\nexport const selectTronConnectModal = (state: RootState) =>\r\n state.option.tronConnectModal\r\nexport const selectHelpPopup = (state: RootState) => state.option.helpPopup\r\nexport const selectHashPopup = (state: RootState) => state.option.hashPopup\r\nexport const selectBankPopup = (state: RootState) => state.option.bankPopup\r\nexport const selectSolanaProvider = (state: RootState) =>\r\n state.option.solanaProvider\r\nexport const selectProvider = (state: RootState) => state.option.provider\r\nexport const selectDappOption = (state: RootState) => state.option.dAppOption\r\nexport const selectWalletAutoConnect = (state: RootState) =>\r\n state.option.walletAutoConnect\r\nexport const selectSubmitted = (state: RootState) => state.option.submitted\r\nexport const selectTransactionOption = (state: RootState) =>\r\n state.option.transactionOption\r\nexport const selectAmount = (state: RootState) => state.option.amount\r\nexport const selectErrorHandler = (state: RootState) =>\r\n state.option.errorHandler\r\nexport const selectKeplrHandler = (state: RootState) =>\r\n state.option.keplrHandler\r\nexport const selectCloseHandler = (state: RootState) =>\r\n state.option.closeHandler\r\nexport const selectSuccessHandler = (state: RootState) =>\r\n state.option.successHandler\r\nexport const selectSwitchChainHandler = (state: RootState) =>\r\n state.option.switchChainHandler\r\nexport const selectInitChainFromProvider = (state: RootState) =>\r\n state.option.initChainFromProvider\r\nexport const selectServiceFee = (state: RootState) => state.option.serviceFee\r\nexport const selectMode = (state: RootState) => state.option.mode\r\nexport const selectFeeDeduct = (state: RootState) => state.option.feeDeduct\r\nexport const selectBackendUrl = (state: RootState) => state.option.backendUrl\r\nexport const selectNodeProviderQuery = (state: RootState) =>\r\n state.option.nodeProviderQuery\r\nexport const selectTxId = (state: RootState) => state.option.txId\r\nexport const selectSelectedToken = (state: RootState) =>\r\n state.option.selectedToken\r\nexport const selectAvailableTokenList = (state: RootState) =>\r\n state.option.avilableTokenList\r\nexport const selectCompliantOption = (state: RootState) =>\r\n state.option.compliantOption\r\nexport const selectSourceCompliant = (state: RootState) =>\r\n state.option.sourceCompliant\r\nexport const selectTargetCompliant = (state: RootState) =>\r\n state.option.targetCompliant\r\nexport const selectUseFIAT = (state: RootState) => state.option.useFIAT\r\nexport const selectBankDetails = (state: RootState) => state.option.bankDetails\r\nexport const selectTargetChainFetching = (state: RootState) =>\r\n state.option.targetNetworkFetching\r\nexport const selectSignature = (state: RootState) => state.option.signature\r\nexport const selectUuid = (state: RootState) => state.option.uuid\r\nexport const selectKycStatus = (state: RootState) => state.option.kycStatus\r\n","import React from 'react'\r\n\r\ninterface Loading180RingProps {\r\n width?: number\r\n height?: number\r\n fill?: string\r\n}\r\n\r\n/**\r\n * Loading180Ring component.\r\n *\r\n * @param {Object} props - The component properties.\r\n * @param {number} props.width - The width of the SVG.\r\n * @param {number} props.height - The height of the SVG.\r\n * @param {string} [props.fill='white'] - The fill color of the SVG.\r\n * @returns {JSX.Element} React JSX element.\r\n */\r\n\r\nconst Loading180Ring = ({\r\n width = 24,\r\n height = 24,\r\n fill = 'white'\r\n}: Loading180RingProps) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n fill={fill}\r\n viewBox='0 0 24 24'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <path d='M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z'>\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n dur='0.75s'\r\n values='0 12 12;360 12 12'\r\n repeatCount='indefinite'\r\n />\r\n </path>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Loading180Ring\r\n","import React, { Dispatch, SetStateAction } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\nimport { Loading180Ring } from '../../assets/loading'\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\ninterface Props {\r\n step: number\r\n focus: number\r\n setFocus: Dispatch<SetStateAction<number>>\r\n errorStep: number\r\n loadingStep: number\r\n}\r\n\r\nconst stepInfo = [\r\n {\r\n title: 'Initialize'\r\n },\r\n {\r\n title: 'Source Transfer'\r\n },\r\n {\r\n title: 'Validation'\r\n },\r\n {\r\n title: 'Target Transfer'\r\n },\r\n {\r\n title: 'Finalize'\r\n }\r\n]\r\n\r\nconst Progressbar = ({ step, errorStep, setFocus, loadingStep }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className='kima-progressbar'>\r\n <div\r\n className='value'\r\n style={{\r\n width: `calc(${(step * 100) / 4}% + ${\r\n step > 0 && step < 3 ? 0.5 : 0\r\n }em)`\r\n }}\r\n />\r\n <div className='step-indicators'>\r\n {stepInfo.map((item, index) => (\r\n <div\r\n key={item.title}\r\n className={`step ${step >= index ? 'active' : ''}`}\r\n onClick={() => {\r\n if (index < 4) setFocus(index)\r\n }}\r\n >\r\n <div className='step-info'>\r\n {index === loadingStep ? (\r\n <Loading180Ring\r\n fill={theme.colorMode === 'dark' ? 'white' : '#5aa0db'}\r\n />\r\n ) : step >= index ? (\r\n index === errorStep ? (\r\n <WarningIcon data-tooltip-id='error-tooltip' />\r\n ) : (\r\n <CheckIcon />\r\n )\r\n ) : null}\r\n <span>{item.title}</span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Progressbar\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n to: string\r\n children?: any\r\n className?: string\r\n rest?: any\r\n}\r\n\r\nconst ExternalLink = ({ to, children, className, rest }: Props) => (\r\n <a\r\n className={className}\r\n href={to}\r\n target='_blank'\r\n rel='noreferrer noopener'\r\n {...rest}\r\n >\r\n {children}\r\n </a>\r\n)\r\n\r\nexport default ExternalLink\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { ArrowRightIcon, WarningIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport { getNetworkOption } from '../../utils/constants'\r\n\r\ninterface Props {\r\n hasError: boolean\r\n sourceChain: string\r\n targetChain: string\r\n}\r\n\r\nconst NetworkLabel = ({ sourceChain, targetChain, hasError }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const SourceInfo = getNetworkOption(sourceChain)\r\n const TargetInfo = getNetworkOption(targetChain)\r\n\r\n return (\r\n <div className='kima-card-network-label'>\r\n <div className='label'>\r\n <div className='icon-wrapper'>{SourceInfo && <SourceInfo.icon />}</div>\r\n {SourceInfo?.label}\r\n </div>\r\n <ArrowRightIcon fill={theme.colorMode === 'light' ? 'black' : 'white'} />\r\n <div className='label'>\r\n <div className='icon-wrapper'>{TargetInfo && <TargetInfo.icon />}</div>\r\n {TargetInfo?.label}\r\n </div>\r\n {hasError && (\r\n <div className='warning-container' data-tooltip-id='error-tooltip'>\r\n <WarningIcon />\r\n <span>1 issue</span>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default NetworkLabel\r\n","import React from 'react'\r\nimport { Loading180Ring } from '../../assets/loading'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n isLoading?: boolean\r\n disabled?: boolean\r\n ref?: React.LegacyRef<HTMLButtonElement>\r\n}\r\n\r\nconst PrimaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n isLoading = false,\r\n disabled = false,\r\n ref\r\n}: Props) => {\r\n return (\r\n <button\r\n className={`primary-button ${className}`}\r\n onClick={clickHandler}\r\n ref={ref}\r\n disabled={disabled}\r\n >\r\n {isLoading && (\r\n <div className='loading-indicator'>\r\n <Loading180Ring width={24} height={24} fill='white' />\r\n </div>\r\n )}\r\n {children}\r\n </button>\r\n )\r\n}\r\n\r\nexport default PrimaryButton\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n theme?: string\r\n style?: any\r\n disabled?: boolean\r\n}\r\n\r\nconst SecondaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n theme,\r\n style,\r\n disabled = false\r\n}: Props) => (\r\n <button\r\n className={`secondary-button ${className} ${theme}`}\r\n onClick={clickHandler}\r\n {...style}\r\n disabled={disabled}\r\n >\r\n {children}\r\n </button>\r\n)\r\n\r\nexport default SecondaryButton\r\n","export const fetchWrapper = {\r\n get,\r\n post\r\n}\r\n\r\nfunction get(url: string) {\r\n const requestOptions: any = {\r\n method: 'GET'\r\n }\r\n\r\n requestOptions.headers = {\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction post(url: string, body: any) {\r\n const requestOptions: any = {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n // Authorization: `Bearer ${token}`\r\n },\r\n body: body\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction handleResponse(response: Response) {\r\n return response.text().then((text) => {\r\n let data = text\r\n\r\n try {\r\n data = JSON.parse(text)\r\n } catch (error) {\r\n data = text\r\n }\r\n\r\n if (!response.ok) {\r\n if ([401, 403].includes(response.status)) {\r\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\r\n }\r\n\r\n // const error = (data && data.message) || response.statusText;\r\n const error = data || response.statusText\r\n\r\n return Promise.reject({ status: response.status, error })\r\n }\r\n\r\n return data\r\n })\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { selectNodeProviderQuery, selectUseFIAT } from '../store/selectors'\r\nimport { ChainName, networkOptions } from '../utils/constants'\r\nimport { useDispatch } from 'react-redux'\r\nimport { TokenOptions, setTokenOptions } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useNetworkOptions() {\r\n const dispatch = useDispatch()\r\n const useFIAT = useSelector(selectUseFIAT)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const [options, setOptions] = useState<Array<any>>(networkOptions)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/chain`\r\n )\r\n\r\n setOptions(\r\n networkOptions.filter(\r\n (network) =>\r\n networks.Chain.findIndex(\r\n (chain: any) => chain.symbol === network.id && !chain.disabled\r\n ) >= 0 ||\r\n (network.id === ChainName.FIAT && useFIAT)\r\n )\r\n )\r\n\r\n let tokenOptions: TokenOptions = {}\r\n\r\n for (const network of networks.Chain) {\r\n for (const token of network.tokens) {\r\n if (!tokenOptions[token.symbol]) {\r\n tokenOptions[token.symbol] = {}\r\n }\r\n tokenOptions[token.symbol][network.symbol] = token.address\r\n }\r\n }\r\n\r\n dispatch(setTokenOptions(tokenOptions))\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery])\r\n\r\n return useMemo(\r\n () => ({\r\n options\r\n }),\r\n [options]\r\n )\r\n}\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport useNetworkOptions from '../../hooks/useNetworkOptions'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport {\r\n selectDappOption,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport {\r\n setSourceChain,\r\n setServiceFee,\r\n setTargetChain\r\n} from '../../store/optionSlice'\r\nimport { ChainName } from '../../utils/constants'\r\nimport { ModeOptions } from '../../interface'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport toast from 'react-hot-toast'\r\n\r\ninterface Props {\r\n isOriginChain?: boolean\r\n}\r\n\r\nconst Network = ({ isOriginChain = true }: Props) => {\r\n const sourceChangeRef = useRef<boolean>(false)\r\n const theme = useSelector(selectTheme)\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const dispatch = useDispatch()\r\n const sliderRef = useRef<any>()\r\n const [availableNetworks, setAvailableNetworks] = useState<Array<ChainName>>(\r\n []\r\n )\r\n const { options: networkOptions } = useNetworkOptions()\r\n const selectedNetwork = useMemo(() => {\r\n const index = networkOptions.findIndex(\r\n (option) => option.id === (isOriginChain ? originNetwork : targetNetwork)\r\n )\r\n if (index >= 0) return networkOptions[index]\r\n return networkOptions[3]\r\n }, [originNetwork, targetNetwork, networkOptions])\r\n const networks = useMemo(() => {\r\n if (isOriginChain && mode === ModeOptions.bridge) {\r\n return networkOptions\r\n }\r\n\r\n return networkOptions.filter(\r\n (network) =>\r\n availableNetworks.findIndex((id: any) => id === network.id) >= 0\r\n )\r\n }, [networkOptions, isOriginChain, availableNetworks, dAppOption])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.bridge) return\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${originNetwork}`\r\n )\r\n\r\n setAvailableNetworks(networks.Chains)\r\n if (isOriginChain && !targetNetwork) {\r\n dispatch(setTargetChain(networks.Chains[0]))\r\n }\r\n if (sourceChangeRef.current) {\r\n sourceChangeRef.current = false\r\n dispatch(setTargetChain(networks.Chains[0]))\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, originNetwork, targetNetwork, mode, isOriginChain])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`network-select`}>\r\n <p>\r\n {isOriginChain\r\n ? 'Which network are you funding from?'\r\n : 'Which network are you funding to?'}\r\n </p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='network-container'>\r\n {networks.map((network) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n network.id === selectedNetwork.id ? 'active' : ''\r\n }`}\r\n key={network.id}\r\n onClick={() => {\r\n if (isOriginChain) {\r\n dispatch(setSourceChain(network.id))\r\n sourceChangeRef.current = true\r\n } else {\r\n dispatch(setTargetChain(network.id))\r\n dispatch(setServiceFee(-1))\r\n }\r\n }}\r\n >\r\n <network.icon />\r\n <span>{network.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Network\r\n","import React, { useEffect, useMemo, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { WalletReadyState } from '@solana/wallet-adapter-base'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport { selectSolanaProvider, selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\nimport { setSolanaProvider } from '../../store/optionSlice'\r\n\r\nconst SolanaWalletSelect = () => {\r\n const theme = useSelector(selectTheme)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const sliderRef = useRef<any>()\r\n\r\n const dispatch = useDispatch()\r\n const { wallets } = useWallet()\r\n const [detected, undetected] = useMemo(() => {\r\n const detected: any[] = []\r\n const undetected: any[] = []\r\n for (const wallet of wallets) {\r\n if (\r\n wallet.readyState === WalletReadyState.Installed ||\r\n wallet.readyState === WalletReadyState.Loadable\r\n ) {\r\n detected.push(wallet)\r\n } else if (wallet.readyState === WalletReadyState.NotDetected) {\r\n undetected.push(wallet)\r\n }\r\n }\r\n return [detected, undetected]\r\n }, [wallets])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`wallet-select`}>\r\n <p>Please select:</p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='wallet-container'>\r\n {detected.map((wallet, index) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n wallet.adapter.name === selectedProvider ? 'active' : ''\r\n }`}\r\n onClick={() => dispatch(setSolanaProvider(wallet.adapter.name))}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>{wallet.adapter.name}</span>\r\n </div>\r\n ))}\r\n {undetected.map((wallet, index) => (\r\n <ExternalLink\r\n to={wallet.adapter.url}\r\n className={`card-item ${theme.colorMode}`}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>\r\n Install\r\n <br />\r\n {wallet.adapter.name}\r\n </span>\r\n </ExternalLink>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SolanaWalletSelect\r\n","import React, { useEffect, useMemo, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { AdapterState } from '@tronweb3/tronwallet-abstract-adapter'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport { selectSolanaProvider, selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\nimport { setSolanaProvider } from '../../store/optionSlice'\r\n\r\nconst WalletSelect = () => {\r\n const theme = useSelector(selectTheme)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const sliderRef = useRef<any>()\r\n\r\n const dispatch = useDispatch()\r\n const { wallets } = useWallet()\r\n const [detected, undetected] = useMemo(() => {\r\n const detected: any[] = []\r\n const undetected: any[] = []\r\n for (const wallet of wallets) {\r\n if (\r\n wallet.state === AdapterState.Connected ||\r\n wallet.state === AdapterState.Disconnect ||\r\n wallet.state === AdapterState.Loading\r\n ) {\r\n detected.push(wallet)\r\n } else if (wallet.state === AdapterState.NotFound) {\r\n undetected.push(wallet)\r\n }\r\n }\r\n return [detected, undetected]\r\n }, [wallets])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`wallet-select`}>\r\n <p>Please select:</p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='wallet-container'>\r\n {detected.map((wallet, index) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n wallet.adapter.name === selectedProvider ? 'active' : ''\r\n }`}\r\n onClick={() => dispatch(setSolanaProvider(wallet.adapter.name))}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>{wallet.adapter.name}</span>\r\n </div>\r\n ))}\r\n {undetected.map((wallet, index) => (\r\n <ExternalLink\r\n to={wallet.adapter.url}\r\n className={`card-item ${theme.colorMode}`}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>\r\n Install\r\n <br />\r\n {wallet.adapter.name}\r\n </span>\r\n </ExternalLink>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletSelect\r\n","import { useCallback, useEffect, useMemo } from 'react'\r\nimport { useWallet as useSolanaWallet } from '@solana/wallet-adapter-react'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport {\r\n isEVMChain,\r\n ChainName,\r\n CHAIN_NAMES_TO_IDS,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_STRING,\r\n SupportedChainId\r\n} from '../utils/constants'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectErrorHandler,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTargetChainFetching,\r\n selectWalletAutoConnect\r\n} from '../store/selectors'\r\nimport {\r\n useSwitchNetwork,\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider,\r\n useWeb3ModalEvents\r\n} from '@web3modal/ethers5/react'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setSourceChain } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nconst createWalletStatus = (\r\n isReady: boolean,\r\n statusMessage: string = '',\r\n forceNetworkSwitch: () => void,\r\n walletAddress?: string\r\n) => ({\r\n isReady,\r\n statusMessage,\r\n forceNetworkSwitch,\r\n walletAddress\r\n})\r\n\r\nfunction useIsWalletReady(): {\r\n isReady: boolean\r\n statusMessage: string\r\n walletAddress?: string\r\n forceNetworkSwitch: () => void\r\n} {\r\n const dispatch = useDispatch()\r\n const autoSwitch = useSelector(selectWalletAutoConnect)\r\n const { publicKey: solanaAddress } = useSolanaWallet()\r\n const { address: tronAddress } = useTronWallet()\r\n const { walletProvider: evmProvider } = useWeb3ModalProvider()\r\n const { switchNetwork } = useSwitchNetwork()\r\n\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const {\r\n address: evmAddress,\r\n chainId: evmChainId,\r\n isConnected\r\n } = web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetChain = useSelector(selectTargetChain)\r\n const targetNetworkFetching = useSelector(selectTargetChainFetching)\r\n const correctChain = useMemo(() => {\r\n if (sourceChain === ChainName.FIAT && !targetNetworkFetching)\r\n return targetChain\r\n return sourceChain\r\n }, [sourceChain, targetChain, targetNetworkFetching])\r\n const hasEthInfo = isConnected && !!evmAddress\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const correctEvmNetwork = CHAIN_NAMES_TO_IDS[correctChain]\r\n const hasCorrectEvmNetwork = evmChainId === correctEvmNetwork\r\n const events = useWeb3ModalEvents()\r\n\r\n useEffect(() => {\r\n if (\r\n events.data?.event === 'SELECT_WALLET' ||\r\n events.data?.event === 'CONNECT_SUCCESS'\r\n ) {\r\n localStorage.setItem('wallet', events.data?.properties?.name)\r\n }\r\n }, [events])\r\n\r\n const forceNetworkSwitch = useCallback(async () => {\r\n if (evmProvider && correctEvmNetwork) {\r\n if (!isEVMChain(correctChain)) {\r\n return\r\n }\r\n\r\n try {\r\n const wallet = localStorage.getItem('wallet')\r\n if (wallet === 'Phantom' && correctEvmNetwork !== 11155111) return\r\n await switchNetwork(correctEvmNetwork)\r\n } catch (e) {\r\n errorHandler(e)\r\n }\r\n }\r\n }, [evmProvider, correctEvmNetwork, correctChain])\r\n\r\n return useMemo(() => {\r\n if (correctChain === ChainName.SOLANA) {\r\n if (solanaAddress) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n solanaAddress.toBase58()\r\n )\r\n }\r\n return createWalletStatus(\r\n false,\r\n 'Wallet not connected',\r\n forceNetworkSwitch,\r\n ''\r\n )\r\n } else if (correctChain === ChainName.TRON) {\r\n if (tronAddress) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n tronAddress\r\n )\r\n }\r\n return createWalletStatus(\r\n false,\r\n 'Wallet not connected',\r\n forceNetworkSwitch,\r\n ''\r\n )\r\n } else if (isEVMChain(correctChain) && hasEthInfo && evmAddress) {\r\n if (hasCorrectEvmNetwork) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n evmAddress\r\n )\r\n } else {\r\n if (evmProvider && correctEvmNetwork) {\r\n if (autoSwitch) {\r\n forceNetworkSwitch()\r\n } else {\r\n dispatch(\r\n setSourceChain(\r\n CHAIN_IDS_TO_NAMES[evmChainId || SupportedChainId.ETHEREUM]\r\n )\r\n )\r\n toast.success(\r\n `Wallet connected to ${\r\n CHAIN_NAMES_TO_STRING[\r\n CHAIN_IDS_TO_NAMES[evmChainId || SupportedChainId.ETHEREUM]\r\n ]\r\n }`\r\n )\r\n }\r\n }\r\n\r\n if (evmChainId && autoSwitch)\r\n return createWalletStatus(\r\n false,\r\n `Wallet not connected to ${\r\n CHAIN_NAMES_TO_STRING[CHAIN_IDS_TO_NAMES[correctEvmNetwork]]\r\n }`,\r\n forceNetworkSwitch,\r\n evmAddress\r\n )\r\n }\r\n }\r\n\r\n return createWalletStatus(false, '', forceNetworkSwitch, undefined)\r\n }, [\r\n correctChain,\r\n autoSwitch,\r\n forceNetworkSwitch,\r\n solanaAddress,\r\n tronAddress,\r\n hasEthInfo,\r\n correctEvmNetwork,\r\n hasCorrectEvmNetwork,\r\n evmProvider,\r\n evmAddress,\r\n evmChainId\r\n ])\r\n}\r\n\r\nexport default useIsWalletReady\r\n","// Return shortened address for EVM, Solana wallet address\r\n\r\nexport const getShortenedAddress = (address: string) => {\r\n const is0x = (addr: string) => addr?.startsWith('0x')\r\n return `${address?.substring(0, is0x(address) ? 6 : 3)}...${address?.substr(\r\n address.length - (is0x(address) ? 4 : 3)\r\n )}`\r\n}\r\n","export const connectWalletBtn = 'connect-wallet-btn'\r\n","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY } from '@solana/web3.js'\r\n\r\nexport function createAssociatedTokenAccountInstruction(\r\n payer: PublicKey,\r\n associatedToken: PublicKey,\r\n owner: PublicKey,\r\n mint: PublicKey,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const keys = [\r\n { pubkey: payer, isSigner: true, isWritable: true },\r\n { pubkey: associatedToken, isSigner: false, isWritable: true },\r\n { pubkey: owner, isSigner: false, isWritable: false },\r\n { pubkey: mint, isSigner: false, isWritable: false },\r\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\r\n { pubkey: programId, isSigner: false, isWritable: false },\r\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\r\n ]\r\n\r\n return new TransactionInstruction({\r\n keys,\r\n programId: associatedTokenProgramId,\r\n data: Buffer.alloc(0),\r\n })\r\n}","import { TOKEN_PROGRAM_ID, AccountLayout } from '@solana/spl-token'\r\nimport { Connection, PublicKey, Commitment } from '@solana/web3.js'\r\n\r\nexport enum AccountState {\r\n Uninitialized = 0,\r\n Initialized = 1,\r\n Frozen = 2,\r\n}\r\n\r\nexport async function getAccountInfo(\r\n connection: Connection,\r\n address: PublicKey,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID\r\n) {\r\n const info = await connection.getAccountInfo(address, commitment)\r\n if (!info) throw new Error('TokenAccountNotFoundError')\r\n if (!info.owner.equals(programId)) throw new Error('TokenInvalidAccountOwnerError')\r\n if (info.data.length != AccountLayout.span) throw new Error('TokenInvalidAccountSizeError')\r\n\r\n const rawAccount = AccountLayout.decode(Buffer.from(info.data))\r\n\r\n return {\r\n address,\r\n mint: rawAccount.mint,\r\n owner: rawAccount.owner,\r\n amount: rawAccount.amount,\r\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\r\n delegatedAmount: rawAccount.delegatedAmount,\r\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\r\n isFrozen: rawAccount.state === AccountState.Frozen,\r\n isNative: !!rawAccount.isNativeOption,\r\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\r\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\r\n }\r\n}","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey } from '@solana/web3.js'\r\n\r\nexport async function getAssociatedTokenAddress(\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n allowOwnerOffCurve = false,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): Promise<PublicKey> {\r\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new Error('TokenOwnerOffCurveError')\r\n\r\n const [address] = await PublicKey.findProgramAddress(\r\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\r\n associatedTokenProgramId\r\n )\r\n\r\n return address\r\n}","import {\r\n TOKEN_PROGRAM_ID,\r\n ASSOCIATED_TOKEN_PROGRAM_ID\r\n} from '@solana/spl-token'\r\n// import { SignerWalletAdapterProps } from '@solana/wallet-adapter-base'\r\nimport { Connection, PublicKey, Commitment, Transaction } from '@solana/web3.js'\r\nimport { createAssociatedTokenAccountInstruction } from './createAssociatedTokenAccountInstruction'\r\nimport { getAccountInfo } from './getAccountInfo'\r\nimport { getAssociatedTokenAddress } from './getAssociatedTokenAddress'\r\n\r\nexport async function getOrCreateAssociatedTokenAccount(\r\n connection: Connection,\r\n payer: PublicKey,\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n signTransaction: /*SignerWalletAdapterProps['signTransaction']*/ any,\r\n allowOwnerOffCurve = false,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n) {\r\n const associatedToken = await getAssociatedTokenAddress(\r\n mint,\r\n owner,\r\n allowOwnerOffCurve,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n\r\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\r\n // Sadly we can't do this atomically.\r\n let account\r\n try {\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n } catch (error) {\r\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\r\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\r\n // TokenInvalidAccountOwnerError in this code path.\r\n const err = error as { message: string }\r\n if (\r\n err.message === 'TokenAccountNotFoundError' ||\r\n err.message === 'TokenInvalidAccountOwnerError'\r\n ) {\r\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\r\n try {\r\n const transaction = new Transaction().add(\r\n createAssociatedTokenAccountInstruction(\r\n payer,\r\n associatedToken,\r\n owner,\r\n mint,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n )\r\n\r\n const blockHash = await connection.getRecentBlockhash()\r\n transaction.feePayer = await payer\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signTransaction(transaction)\r\n\r\n const signature = await connection.sendRawTransaction(\r\n signed.serialize()\r\n )\r\n\r\n await connection.confirmTransaction(signature)\r\n } catch (error) {\r\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\r\n // instruction error if the associated account exists already.\r\n }\r\n\r\n // Now this should always succeed\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n } else {\r\n throw error\r\n }\r\n }\r\n\r\n if (!account.mint.equals(mint)) throw Error('TokenInvalidMintError')\r\n if (!account.owner.equals(owner)) throw new Error('TokenInvalidOwnerError')\r\n\r\n return account\r\n}\r\n","import { TronWeb } from 'tronweb'\r\nimport { TRON_USDK_OWNER_ADDRESS } from './utils/config'\r\nexport const tronWeb: any = new TronWeb({\r\n fullHost: 'https://api.nileex.io'\r\n})\r\ntronWeb.setAddress(TRON_USDK_OWNER_ADDRESS)\r\n","export const formatterInt = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 0\r\n})\r\n\r\nexport const formatterFloat = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 2\r\n})\r\n\r\nexport function isEmptyObject(arg) {\r\n return typeof arg === 'object' && Object.keys(arg).length === 0\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Contract } from '@ethersproject/contracts'\r\nimport { formatUnits } from '@ethersproject/units'\r\nimport {\r\n useConnection,\r\n useWallet as useSolanaWallet\r\n} from '@solana/wallet-adapter-react'\r\nimport {\r\n ChainName,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_IDS,\r\n isEVMChain\r\n} from '../utils/constants'\r\nimport ERC20ABI from '../utils/ethereum/erc20ABI.json'\r\nimport {\r\n selectSelectedToken,\r\n selectErrorHandler,\r\n selectSourceChain,\r\n selectTokenOptions\r\n} from '../store/selectors'\r\nimport { getOrCreateAssociatedTokenAccount } from '../utils/solana/getOrCreateAssociatedTokenAccount'\r\nimport { PublicKey } from '@solana/web3.js'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { tronWeb } from '../tronweb'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { isEmptyObject } from '../helpers/functions'\r\n\r\ntype ParsedAccountData = {\r\n /** Name of the program that owns this account */\r\n program: string\r\n /** Parsed account data */\r\n parsed: any\r\n /** Space used by account data */\r\n space: number\r\n}\r\n\r\nexport default function useBalance() {\r\n const [balance, setBalance] = useState<number>(0)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const { address: signerAddress, chainId: evmChainId } =\r\n web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const sourceChain = useMemo(() => {\r\n if (\r\n selectedNetwork === ChainName.SOLANA ||\r\n selectedNetwork === ChainName.TRON\r\n )\r\n return selectedNetwork\r\n if (CHAIN_NAMES_TO_IDS[selectedNetwork] !== evmChainId) {\r\n return CHAIN_IDS_TO_NAMES[evmChainId as number]\r\n }\r\n\r\n return selectedNetwork\r\n }, [selectedNetwork, evmChainId])\r\n const { publicKey: solanaAddress, signTransaction } = useSolanaWallet()\r\n const { address: tronAddress } = useTronWallet()\r\n const { connection } = useConnection()\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenOptions = useSelector(selectTokenOptions)\r\n const tokenAddress = useMemo(() => {\r\n if (isEmptyObject(tokenOptions) || sourceChain === ChainName.FIAT) return ''\r\n\r\n console.log(tokenOptions)\r\n if (tokenOptions && typeof tokenOptions === 'object') {\r\n const coinOptions = tokenOptions[selectedCoin]\r\n if (coinOptions && typeof coinOptions === 'object') {\r\n return tokenOptions[selectedCoin][sourceChain]\r\n }\r\n }\r\n\r\n return ''\r\n }, [selectedCoin, sourceChain, tokenOptions])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n if (!isEVMChain(sourceChain)) {\r\n if (solanaAddress && tokenAddress && connection) {\r\n const mint = new PublicKey(tokenAddress)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n\r\n const parsedAccountInfo = accountInfo?.value\r\n ?.data as ParsedAccountData\r\n\r\n setBalance(\r\n +formatUnits(\r\n parsedAccountInfo.parsed?.info?.tokenAmount?.amount,\r\n parsedAccountInfo.parsed?.info?.tokenAmount?.decimals\r\n )\r\n )\r\n return\r\n }\r\n\r\n if (tronAddress && tokenAddress) {\r\n let trc20Contract = await tronWeb.contract(\r\n ERC20ABI.abi,\r\n tokenAddress\r\n )\r\n\r\n const decimals = await trc20Contract.decimals().call()\r\n const userBalance = await trc20Contract\r\n .balanceOf(tronAddress)\r\n .call()\r\n setBalance(+formatUnits(userBalance.balance, decimals))\r\n return\r\n }\r\n }\r\n\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n\r\n if (!tokenAddress || !signer || !signerAddress) return\r\n\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n const decimals = await erc20Contract.decimals()\r\n const userBalance = await erc20Contract.balanceOf(signerAddress)\r\n\r\n setBalance(+formatUnits(userBalance, decimals))\r\n } catch (error) {\r\n errorHandler(error)\r\n }\r\n })()\r\n }, [\r\n signerAddress,\r\n tokenAddress,\r\n sourceChain,\r\n solanaAddress,\r\n tronAddress,\r\n walletProvider\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n balance\r\n }),\r\n [balance]\r\n )\r\n}\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { toast } from 'react-hot-toast'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n setSolanaConnectModal,\r\n setTronConnectModal\r\n} from '../../store/optionSlice'\r\nimport {\r\n selectCompliantOption,\r\n selectSelectedToken,\r\n selectSourceChain,\r\n selectSourceCompliant,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport PrimaryButton from './PrimaryButton'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { ChainName } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport { connectWalletBtn } from '../../utils/testId'\r\nimport useBalance from '../../hooks/useBalance'\r\nimport { formatterFloat } from '../../helpers/functions'\r\nimport { useWeb3Modal } from '@web3modal/ethers5/react'\r\n\r\nconst WalletButton = ({ errorBelow = false }: { errorBelow?: boolean }) => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const sourceCompliant = useSelector(selectSourceCompliant)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const { isReady, statusMessage, walletAddress } = useIsWalletReady()\r\n const { balance } = useBalance()\r\n const { open } = useWeb3Modal()\r\n\r\n const handleClick = () => {\r\n if (selectedNetwork === ChainName.SOLANA) {\r\n dispatch(setSolanaConnectModal(true))\r\n return\r\n }\r\n\r\n if (selectedNetwork === ChainName.TRON) {\r\n dispatch(setTronConnectModal(true))\r\n return\r\n }\r\n\r\n open()\r\n }\r\n\r\n const errorMessage = useMemo(() => {\r\n if (!isReady) return statusMessage\r\n if (sourceCompliant !== 'low' && compliantOption)\r\n return `Source address has ${sourceCompliant} risk`\r\n return ''\r\n }, [isReady, statusMessage, sourceCompliant, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!errorMessage) return\r\n toast.error(errorMessage)\r\n }, [errorMessage])\r\n\r\n return (\r\n <div\r\n className={`wallet-button ${theme.colorMode} ${\r\n errorBelow ? 'error-below' : ''\r\n }`}\r\n data-testid={connectWalletBtn}\r\n >\r\n <PrimaryButton clickHandler={handleClick}>\r\n {isReady ? `${getShortenedAddress(walletAddress || '')}` : 'Wallet'}\r\n </PrimaryButton>\r\n\r\n {isReady ? (\r\n <p className='balance-info'>\r\n {formatterFloat.format(balance)} {selectedCoin} available\r\n </p>\r\n ) : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletButton\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectAvailableTokenList,\r\n selectSelectedToken,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport { COIN_LIST } from '../../utils/constants'\r\n\r\nconst CoinDropdown = () => {\r\n const ref = useRef<any>()\r\n const [collapsed, setCollapsed] = useState(true)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenList = useSelector(selectAvailableTokenList)\r\n const theme = useSelector(selectTheme)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n useEffect(() => {\r\n const bodyMouseDowntHandler = (e: any) => {\r\n if (ref?.current && !ref.current.contains(e.target)) {\r\n setCollapsed(true)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', bodyMouseDowntHandler)\r\n return () => {\r\n document.removeEventListener('mousedown', bodyMouseDowntHandler)\r\n }\r\n }, [setCollapsed])\r\n\r\n return (\r\n <div\r\n className={`coin-dropdown ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n onClick={() => setCollapsed((prev) => !prev)}\r\n ref={ref}\r\n >\r\n <div className='coin-wrapper'>\r\n {<Icon />}\r\n {selectedCoin}\r\n </div>\r\n <div\r\n className={`coin-menu ${theme.colorMode} ${collapsed ? 'collapsed' : ''}`}\r\n >\r\n {tokenList.map((token) => {\r\n const CoinIcon = COIN_LIST[token].icon\r\n return (\r\n <div className='coin-item' key={COIN_LIST[token].symbol}>\r\n {<CoinIcon />}\r\n <p>{COIN_LIST[token].symbol}</p>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinDropdown\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { ChainName } from '../../utils/constants'\r\nimport {\r\n selectDappOption,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTheme,\r\n selectUseFIAT,\r\n selectWalletAutoConnect\r\n} from '../../store/selectors'\r\nimport {\r\n setSourceChain,\r\n setServiceFee,\r\n setTargetChain,\r\n setTargetChainFetching\r\n} from '../../store/optionSlice'\r\nimport useNetworkOptions from '../../hooks/useNetworkOptions'\r\nimport { DAppOptions, ModeOptions } from '../../interface'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport toast from 'react-hot-toast'\r\n\r\nconst NetworkDropdown = React.memo(\r\n ({ isOriginChain = true }: { isOriginChain?: boolean }) => {\r\n const [collapsed, setCollapsed] = useState(true)\r\n const [availableNetworks, setAvailableNetworks] = useState<\r\n Array<ChainName>\r\n >([])\r\n const ref = useRef<any>()\r\n const sourceChangeRef = useRef<boolean>(false)\r\n const mode = useSelector(selectMode)\r\n const autoSwitchChain = useSelector(selectWalletAutoConnect)\r\n const useFIAT = useSelector(selectUseFIAT)\r\n const dAppOption = useSelector(selectDappOption)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const { options: networkOptions } = useNetworkOptions()\r\n const selectedNetwork = useMemo(() => {\r\n const index = networkOptions.findIndex(\r\n (option) =>\r\n option.id === (isOriginChain ? originNetwork : targetNetwork)\r\n )\r\n if (index >= 0) return networkOptions[index]\r\n return networkOptions[3]\r\n }, [originNetwork, targetNetwork, networkOptions])\r\n\r\n const networks = useMemo(() => {\r\n if (isOriginChain && mode === ModeOptions.bridge) {\r\n return networkOptions\r\n }\r\n\r\n return networkOptions.filter(\r\n (network) =>\r\n availableNetworks.findIndex((id: any) => id === network.id) >= 0\r\n )\r\n }, [\r\n networkOptions,\r\n isOriginChain,\r\n availableNetworks,\r\n dAppOption,\r\n originNetwork\r\n ])\r\n const theme = useSelector(selectTheme)\r\n const dispatch = useDispatch()\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.bridge) return\r\n ;(async function () {\r\n try {\r\n let chains: ChainName[] = []\r\n if (originNetwork === ChainName.FIAT) {\r\n chains = [ChainName.ETHEREUM, ChainName.POLYGON]\r\n } else {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${originNetwork}`\r\n )\r\n\r\n chains = networks.Chains\r\n if (useFIAT) chains.push(ChainName.FIAT)\r\n }\r\n\r\n setAvailableNetworks(chains)\r\n\r\n if (isOriginChain && !targetNetwork) {\r\n dispatch(setTargetChain(chains[0]))\r\n }\r\n\r\n if (sourceChangeRef.current) {\r\n sourceChangeRef.current = false\r\n dispatch(\r\n setTargetChain(\r\n chains.findIndex((chain) => chain === targetNetwork) < 0 ||\r\n targetNetwork === originNetwork\r\n ? chains[0]\r\n : targetNetwork\r\n )\r\n )\r\n dispatch(setTargetChainFetching(false))\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [\r\n nodeProviderQuery,\r\n originNetwork,\r\n targetNetwork,\r\n mode,\r\n isOriginChain,\r\n useFIAT\r\n ])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.payment) return\r\n ;(async function () {\r\n try {\r\n if (\r\n dAppOption === DAppOptions.LPAdd ||\r\n dAppOption === DAppOptions.LPDrain\r\n ) {\r\n setAvailableNetworks([targetNetwork as ChainName])\r\n } else {\r\n if (targetNetwork === ChainName.FIAT) {\r\n setAvailableNetworks([ChainName.ETHEREUM, ChainName.POLYGON])\r\n return\r\n }\r\n\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${targetNetwork}`\r\n )\r\n\r\n setAvailableNetworks(networks.Chains)\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, mode, targetNetwork, dAppOption])\r\n\r\n useEffect(() => {\r\n const bodyMouseDowntHandler = (e: any) => {\r\n if (ref?.current && !ref.current.contains(e.target)) {\r\n setCollapsed(true)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', bodyMouseDowntHandler)\r\n return () => {\r\n document.removeEventListener('mousedown', bodyMouseDowntHandler)\r\n }\r\n }, [setCollapsed])\r\n\r\n return (\r\n <div\r\n className={`network-dropdown ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n onClick={() => {\r\n if (!autoSwitchChain && isOriginChain) return\r\n setCollapsed((prev) => !prev)\r\n }}\r\n ref={ref}\r\n >\r\n <div className='network-wrapper'>\r\n {<selectedNetwork.icon />}\r\n <span>{selectedNetwork.label}</span>\r\n </div>\r\n <div\r\n className={`network-menu custom-scrollbar ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n >\r\n {networks.map((network) => (\r\n <div\r\n className='network-menu-item'\r\n key={network.label}\r\n onClick={async () => {\r\n if (isOriginChain) {\r\n dispatch(setTargetChainFetching(true))\r\n dispatch(setSourceChain(network.id))\r\n sourceChangeRef.current = true\r\n } else {\r\n dispatch(setTargetChain(network.id))\r\n dispatch(setServiceFee(-1))\r\n }\r\n }}\r\n >\r\n {<network.icon />}\r\n <p>{network.label}</p>\r\n </div>\r\n ))}\r\n {/* {useFIAT ? (\r\n <div\r\n className='network-menu-item'\r\n onClick={() => {\r\n dispatch(setBankPopup(true))\r\n }}\r\n >\r\n <BankIcon />\r\n <p>pay with FIAT</p>\r\n </div>\r\n ) : null} */}\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nexport default NetworkDropdown\r\n","import React, { useMemo } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { formatterFloat } from '../../helpers/functions'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { DAppOptions, ModeOptions } from '../../interface'\r\nimport {\r\n selectAmount,\r\n selectBankDetails,\r\n selectFeeDeduct,\r\n selectMode,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectSignature,\r\n selectTargetAddress,\r\n selectTargetChain,\r\n selectTheme,\r\n selectTransactionOption,\r\n selectDappOption,\r\n selectSelectedToken\r\n} from '../../store/selectors'\r\nimport { ChainName, networkOptions } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\n\r\nconst ConfirmDetails = ({ isApproved }: { isApproved: boolean }) => {\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const bankDetails = useSelector(selectBankDetails)\r\n const signature = useSelector(selectSignature)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const { walletAddress } = useIsWalletReady()\r\n const originNetworkOption = useMemo(\r\n () => networkOptions.filter((network) => network.id === originNetwork)[0],\r\n [networkOptions, originNetwork]\r\n )\r\n const targetNetworkOption = useMemo(\r\n () =>\r\n networkOptions.filter(\r\n (network) =>\r\n network.id ===\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetChain\r\n : targetNetwork)\r\n )[0],\r\n [networkOptions, originNetwork]\r\n )\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n\r\n const sourceWalletAddress = useMemo(() => {\r\n return getShortenedAddress(walletAddress || '')\r\n }, [walletAddress])\r\n\r\n const targetWalletAddress = useMemo(() => {\r\n return getShortenedAddress(\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress\r\n : targetAddress) || ''\r\n )\r\n }, [mode, transactionOption, targetAddress])\r\n\r\n return (\r\n <div className={`confirm-details ${theme.colorMode}`}>\r\n <p>\r\n Step {isApproved ? '2' : '1'}&nbsp;of 2&nbsp;&nbsp;&nbsp;\r\n {isApproved\r\n ? 'Submit transaction'\r\n : originNetwork === ChainName.FIAT\r\n ? 'Bank Details'\r\n : 'Approval'}\r\n </p>\r\n {originNetwork === ChainName.FIAT ? (\r\n <div>\r\n <div className='detail-item'>\r\n <span className='label'>IBAN:</span>\r\n <p>ES6621000418401234567891</p>\r\n <span className='kima-card-network-label'>\r\n <originNetworkOption.icon />\r\n FIAT\r\n </span>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Recipient:</span>\r\n <p>Kima Sandbox</p>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>BIC:</span>\r\n <p>CAIXESBBXXX</p>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Description:</span>\r\n <p className='signature'>{signature}</p>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className='detail-item'>\r\n <span className='label'>Source wallet:</span>\r\n <p>\r\n {dAppOption === DAppOptions.LPDrain\r\n ? targetWalletAddress\r\n : sourceWalletAddress}\r\n </p>\r\n <span className='kima-card-network-label'>\r\n <originNetworkOption.icon />\r\n {originNetworkOption.label}\r\n </span>\r\n </div>\r\n )}\r\n <div className='detail-item'>\r\n <span className='label'>Amount:</span>\r\n <p>\r\n {formatterFloat.format(feeDeduct ? amount : amount + serviceFee)}{' '}\r\n {selectedCoin}\r\n </p>\r\n </div>\r\n {targetNetwork === ChainName.FIAT ? (\r\n <div>\r\n <div className='detail-item'>\r\n <span className='label'>IBAN:</span>\r\n <p>{bankDetails.iban}</p>\r\n <span className='kima-card-network-label'>\r\n <targetNetworkOption.icon />\r\n FIAT\r\n </span>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Recipient:</span>\r\n <p>{bankDetails.recipient}</p>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className='detail-item'>\r\n <span className='label'>Target wallet:</span>\r\n <p>\r\n {dAppOption === DAppOptions.LPDrain\r\n ? sourceWalletAddress\r\n : targetWalletAddress}\r\n </p>\r\n <span className='kima-card-network-label'>\r\n <targetNetworkOption.icon />\r\n {targetNetworkOption.label}\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmDetails\r\n","import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { setTargetAddress } from '../../store/optionSlice'\r\nimport { selectTargetAddress } from '../../store/selectors'\r\n\r\n/**\r\n * Component for target address input\r\n * @component\r\n * @props\r\n * @returns\r\n */\r\n\r\nconst AddressInput = () => {\r\n const dispatch = useDispatch()\r\n const targetAddress = useSelector(selectTargetAddress)\r\n\r\n return (\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={targetAddress}\r\n onChange={(e) => dispatch(setTargetAddress(e.target.value))}\r\n />\r\n )\r\n}\r\n\r\nexport default AddressInput\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\ninterface Props {\r\n text: string\r\n checked: boolean\r\n setCheck: (e: any) => void\r\n}\r\n\r\nconst CustomCheckbox = ({ text, checked, setCheck }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className='kima-custom-checkbox'>\r\n <div\r\n className='custom-checkbox-content'\r\n onClick={() => setCheck(!checked)}\r\n >\r\n <div className={`custom-checkbox-icon-wrapper ${theme.colorMode}`}>\r\n {checked && <CheckIcon />}\r\n </div>\r\n <span>{text}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomCheckbox\r\n","import React, { useEffect, useState } from 'react'\r\nimport { CheckIcon, CopyIcon } from '../../assets/icons'\r\n\r\ninterface Props {\r\n text: string\r\n}\r\n\r\nconst CopyButton = ({ text }: Props) => {\r\n const [copyClicked, setCopyClicked] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!copyClicked) return\r\n\r\n setTimeout(() => {\r\n setCopyClicked(false)\r\n }, 2000)\r\n }, [copyClicked])\r\n\r\n return (\r\n <span\r\n className='copy-btn'\r\n onClick={() => {\r\n setCopyClicked(true)\r\n navigator.clipboard.writeText(text)\r\n }}\r\n >\r\n {copyClicked ? <CheckIcon fill='#979797' /> : <CopyIcon />}\r\n </span>\r\n )\r\n}\r\n\r\nexport default CopyButton\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\nimport { Loading180Ring } from '../../assets/loading'\r\nimport { TransactionData } from '../../interface'\r\nimport { selectKimaExplorer, selectTheme } from '../../store/selectors'\r\nimport {\r\n ChainName,\r\n CHAIN_NAMES_TO_EXPLORER,\r\n CHAIN_NAMES_TO_STRING\r\n} from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport CopyButton from './CopyButton'\r\nimport ExternalLink from './ExternalLink'\r\n\r\ninterface Props {\r\n step: number\r\n errorStep: number\r\n loadingStep: number\r\n data?: TransactionData\r\n}\r\n\r\nconst stepInfo = [\r\n {\r\n title: 'Initialize'\r\n },\r\n {\r\n title: 'Source Transfer'\r\n },\r\n {\r\n title: 'Validation'\r\n },\r\n {\r\n title: 'Target Transfer'\r\n },\r\n {\r\n title: 'Finalize'\r\n }\r\n]\r\n\r\nconst StepBox = ({ step, errorStep, loadingStep, data }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const explorerUrl = useSelector(selectKimaExplorer)\r\n\r\n return (\r\n <div className='kima-stepbox'>\r\n <div className='content-wrapper'>\r\n {stepInfo.map((item, index) => (\r\n <div key={item.title} className='step-item'>\r\n <div className='info-item'>\r\n {index === loadingStep ? (\r\n <Loading180Ring\r\n fill={theme.colorMode === 'dark' ? 'white' : '#5aa0db'}\r\n />\r\n ) : step >= index ? (\r\n index === errorStep ? (\r\n <WarningIcon data-tooltip-id='error-tooltip' />\r\n ) : (\r\n <CheckIcon />\r\n )\r\n ) : null}\r\n <p>{item.title}</p>\r\n </div>\r\n {index === 0 && data?.kimaTxHash ? (\r\n <div className='info-item'>\r\n <p>\r\n Kima TX ID:{' '}\r\n <ExternalLink\r\n to={`https://${explorerUrl}/transactions/${data?.kimaTxHash}`}\r\n >\r\n {getShortenedAddress(data?.kimaTxHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.kimaTxHash} />\r\n </p>\r\n </div>\r\n ) : null}\r\n {index === 1 && data?.tssPullHash ? (\r\n <div className='info-item'>\r\n <p>\r\n {\r\n CHAIN_NAMES_TO_STRING[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }{' '}\r\n TX ID:\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }/${data?.sourceChain === ChainName.TRON ? 'transaction' : 'tx'}/${data?.tssPullHash}${\r\n data?.sourceChain === ChainName.SOLANA\r\n ? '?cluster=devnet'\r\n : ''\r\n }`}\r\n >\r\n {getShortenedAddress(data?.tssPullHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.tssPullHash || ''} />\r\n </p>\r\n </div>\r\n ) : null}\r\n {index === 3 && data?.tssReleaseHash ? (\r\n <div className='info-item'>\r\n <p>\r\n {\r\n CHAIN_NAMES_TO_STRING[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }{' '}\r\n TX ID:\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }/${data?.targetChain === ChainName.TRON ? 'transaction' : 'tx'}/${data?.tssReleaseHash}${\r\n data?.targetChain === ChainName.SOLANA\r\n ? '?cluster=devnet'\r\n : ''\r\n }`}\r\n >\r\n {getShortenedAddress(data?.tssReleaseHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.tssReleaseHash || ''} />\r\n </p>\r\n </div>\r\n ) : null}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default StepBox\r\n","import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { setBankDetails } from '../../store/optionSlice'\r\nimport { selectBankDetails, selectTheme } from '../../store/selectors'\r\n\r\nconst BankInput = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const bankDetails = useSelector(selectBankDetails)\r\n\r\n return (\r\n <div className='bank-input'>\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>IBAN:</span>\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={bankDetails.iban}\r\n onChange={(e) =>\r\n dispatch(setBankDetails({ ...bankDetails, iban: e.target.value }))\r\n }\r\n />\r\n </div>\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Recipient:</span>\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={bankDetails.recipient}\r\n onChange={(e) =>\r\n dispatch(\r\n setBankDetails({ ...bankDetails, recipient: e.target.value })\r\n )\r\n }\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default BankInput\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setHelpPopup } from '../../store/optionSlice'\r\nimport { selectHelpPopup, selectTheme } from '../../store/selectors'\r\n\r\nconst HelpPopup = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const helpPopup = useSelector(selectHelpPopup)\r\n\r\n return (\r\n <div\r\n className={`kima-modal help-popup ${theme.colorMode} ${\r\n helpPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setHelpPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Help</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setHelpPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <p>\r\n The SDK enables dApp developers to process Kima transactions on\r\n behalf of their clients. It will include visual and API components\r\n that communicate with the Kima RPC nodes. The developers can pick\r\n and choose the right level of integration, based on their usage\r\n scenario.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default HelpPopup\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { TransactionData } from '../../interface'\r\nimport { setHashPopup } from '../../store/optionSlice'\r\nimport { selectHashPopup, selectTheme } from '../../store/selectors'\r\nimport { ChainName, CHAIN_NAMES_TO_EXPLORER } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport { ExternalLink } from '../reusable'\r\n\r\ninterface Props {\r\n data?: TransactionData\r\n}\r\n\r\nconst HashPopup = ({ data }: Props) => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const hashPopup = useSelector(selectHashPopup)\r\n\r\n return (\r\n <div\r\n className={`kima-modal hash-popup ${theme.colorMode} ${\r\n hashPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setHashPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Transaction Hashes</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setHashPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <div className='hash-container'>\r\n <div className='hash-item'>\r\n <span>Kima tx:</span>\r\n <ExternalLink to='https://explorer.kima.finance/transactions/718ABEE14755C1ACA617607F9353A55013EF855B0EA6E92EFD31A2F50A362524'>\r\n 718A...2524\r\n </ExternalLink>\r\n </div>\r\n <div className='hash-item'>\r\n <span>Source tx:</span>\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }/tx/${data?.tssPullHash}`}\r\n >\r\n {getShortenedAddress(data?.tssPullHash || '')}\r\n </ExternalLink>\r\n </div>\r\n <div className='hash-item'>\r\n <span>Target tx:</span>\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }/tx/${data?.tssReleaseHash}`}\r\n >\r\n {getShortenedAddress(data?.tssReleaseHash || '')}\r\n </ExternalLink>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default HashPopup\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setSolanaConnectModal } from '../../store/optionSlice'\r\nimport {\r\n selectSolanaConnectModal,\r\n selectSolanaProvider,\r\n selectTheme\r\n} from '../../store/selectors'\r\n\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { PrimaryButton, SecondaryButton, SolanaWalletSelect } from '../reusable'\r\n\r\nconst SolanaWalletConnectModal = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const connectModal = useSelector(selectSolanaConnectModal)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const { select, connect } = useWallet()\r\n\r\n const handleConnect = () => {\r\n select(selectedProvider)\r\n connect()\r\n dispatch(setSolanaConnectModal(false))\r\n }\r\n\r\n return (\r\n <div\r\n className={`kima-modal wallet-connect ${theme.colorMode} ${\r\n connectModal ? 'open' : ''\r\n }`}\r\n >\r\n <div className='modal-overlay' />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Connect Wallet</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setSolanaConnectModal(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <SolanaWalletSelect />\r\n </div>\r\n <div\r\n className='kima-card-footer'\r\n style={{ justifyContent: 'flex-end', marginTop: '2em' }}\r\n >\r\n <SecondaryButton\r\n clickHandler={() => dispatch(setSolanaConnectModal(false))}\r\n theme={theme.colorMode}\r\n >\r\n Cancel\r\n </SecondaryButton>\r\n <PrimaryButton clickHandler={handleConnect}>Connect</PrimaryButton>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SolanaWalletConnectModal\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setTronConnectModal } from '../../store/optionSlice'\r\nimport {\r\n selectTronConnectModal,\r\n selectSolanaProvider,\r\n selectTheme\r\n} from '../../store/selectors'\r\n\r\nimport { useWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { PrimaryButton, SecondaryButton, TronWalletSelect } from '../reusable'\r\n\r\nconst TronWalletConnectModal = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const connectModal = useSelector(selectTronConnectModal)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const { select, connect } = useWallet()\r\n\r\n const handleConnect = async () => {\r\n try {\r\n select(selectedProvider)\r\n await connect()\r\n dispatch(setTronConnectModal(false))\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n className={`kima-modal wallet-connect ${theme.colorMode} ${\r\n connectModal ? 'open' : ''\r\n }`}\r\n >\r\n <div className='modal-overlay' />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Connect Wallet</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setTronConnectModal(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <TronWalletSelect />\r\n </div>\r\n <div\r\n className='kima-card-footer'\r\n style={{ justifyContent: 'flex-end', marginTop: '2em' }}\r\n >\r\n <SecondaryButton\r\n clickHandler={() => dispatch(setTronConnectModal(false))}\r\n theme={theme.colorMode}\r\n >\r\n Cancel\r\n </SecondaryButton>\r\n <PrimaryButton clickHandler={handleConnect}>Connect</PrimaryButton>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TronWalletConnectModal\r\n","import React, { useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { setBankPopup, setKYCStatus } from '../../store/optionSlice'\r\nimport {\r\n selectBackendUrl,\r\n selectBankPopup,\r\n selectTheme,\r\n selectUuid\r\n} from '../../store/selectors'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport { toast } from 'react-hot-toast'\r\n\r\ntype KYCResult = {\r\n id: string\r\n status: string\r\n name: string\r\n surname: string\r\n external_uuid: string\r\n account_id: string\r\n created_at: number\r\n}\r\n\r\nconst BankPopup = ({\r\n setVerifying,\r\n isVerifying\r\n}: {\r\n setVerifying?: any\r\n isVerifying?: boolean\r\n}) => {\r\n const dispatch = useDispatch()\r\n const uuid = useSelector(selectUuid)\r\n const theme = useSelector(selectTheme)\r\n const bankPopup = useSelector(selectBankPopup)\r\n const kimaBackendUrl = useSelector(selectBackendUrl)\r\n\r\n useEffect(() => {\r\n if (!kimaBackendUrl || !uuid || !isVerifying) return\r\n const timerId = setInterval(async () => {\r\n try {\r\n const res: any = await fetchWrapper.post(\r\n `${kimaBackendUrl}/kyc`,\r\n JSON.stringify({\r\n uuid\r\n })\r\n )\r\n const kycResult: Array<KYCResult> = res.data\r\n console.log(kycResult)\r\n\r\n if (!kycResult.length) {\r\n console.log('failed to check kyc status')\r\n toast.error('failed to check kyc status')\r\n } else if (kycResult[0].status === 'approved') {\r\n setVerifying(false)\r\n dispatch(setKYCStatus('approved'))\r\n toast.success('KYC is verified')\r\n }\r\n } catch (e) {\r\n console.log('failed to check kyc status')\r\n toast.error('failed to check kyc status')\r\n }\r\n }, 3000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n }, [kimaBackendUrl, uuid, isVerifying])\r\n\r\n return (\r\n <div\r\n className={`kima-modal bank-popup ${theme.colorMode} ${\r\n bankPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setBankPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'></div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setBankPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <iframe\r\n src={`https://sandbox.depasify.com/widgets/kyc?partner=kimastage&user_uuid=${uuid}`}\r\n width='100%'\r\n height='100%'\r\n frameBorder='0'\r\n allow='camera'\r\n ></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default BankPopup\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Tooltip } from 'react-tooltip'\r\nimport { CrossIcon, FooterLogo, MinimizeIcon } from '../assets/icons'\r\nimport Progressbar from './reusable/Progressbar'\r\nimport { ExternalLink, NetworkLabel, StepBox } from './reusable'\r\nimport '../index.css'\r\nimport {\r\n ColorModeOptions,\r\n DAppOptions,\r\n ThemeOptions,\r\n TransactionData\r\n} from '../interface'\r\nimport { Provider } from 'react-redux'\r\nimport { store } from '../store'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { TransactionStatus } from '../utils/constants'\r\nimport { formatterFloat } from '../helpers/functions'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectCloseHandler,\r\n selectDappOption,\r\n selectNodeProviderQuery,\r\n selectSuccessHandler,\r\n selectTxId\r\n} from '../store/selectors'\r\nimport { useDispatch } from 'react-redux'\r\nimport { toast, Toaster } from 'react-hot-toast'\r\nimport { initialize } from '../store/optionSlice'\r\nimport { HashPopup, HelpPopup } from './modals'\r\n\r\nexport const TransactionWidget = ({ theme }: { theme: ThemeOptions }) => {\r\n const [step, setStep] = useState(0)\r\n const [focus, setFocus] = useState(-1)\r\n const [errorStep, setErrorStep] = useState(-1)\r\n const [errorMessage, setErrorMessage] = useState('')\r\n const [loadingStep, setLoadingStep] = useState(-1)\r\n const [minimized, setMinimized] = useState(false)\r\n const [percent, setPercent] = useState(0)\r\n const [data, setData] = useState<TransactionData>()\r\n const dispatch = useDispatch()\r\n const txId = useSelector(selectTxId)\r\n const dAppOption = useSelector(selectDappOption)\r\n const closeHandler = useSelector(selectCloseHandler)\r\n const successHandler = useSelector(selectSuccessHandler)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || txId < 0) return\r\n const timerId = setInterval(async () => {\r\n // Monitor last transaction for now until transaction_data endpoint is ready\r\n try {\r\n let data\r\n let result: any\r\n const isLP =\r\n dAppOption === DAppOptions.LPAdd || dAppOption === DAppOptions.LPDrain\r\n\r\n if (isLP) {\r\n result = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/transaction/liquidity_transaction_data/${txId}`\r\n )\r\n data = result?.LiquidityTransactionData\r\n } else {\r\n result = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/transaction/transaction_data/${txId}`\r\n )\r\n data = result?.transactionData\r\n }\r\n\r\n if (!data) return\r\n\r\n // Status of last transaction\r\n if (isLP) {\r\n setData({\r\n status: data.status,\r\n sourceChain: data.chain,\r\n targetChain: data.chain,\r\n tssPullHash:\r\n dAppOption === DAppOptions.LPAdd ? data.tssReleaseHash : '',\r\n tssReleaseHash:\r\n dAppOption === DAppOptions.LPDrain ? data.tssReleaseHash : '',\r\n failReason: data.failReason,\r\n amount: +data.amount,\r\n symbol: data.symbol,\r\n kimaTxHash: data.kimaTxHash\r\n })\r\n } else {\r\n setData({\r\n status: data.status,\r\n sourceChain: data.originChain,\r\n targetChain: data.targetChain,\r\n tssPullHash: data.tssPullHash,\r\n tssReleaseHash: data.tssReleaseHash,\r\n failReason: data.failReason,\r\n amount: +data.amount,\r\n symbol: data.symbol,\r\n kimaTxHash: data.kimaTxHash\r\n })\r\n }\r\n\r\n if (data.status === TransactionStatus.COMPLETED) {\r\n clearInterval(timerId)\r\n setTimeout(() => {\r\n successHandler({\r\n txId\r\n })\r\n }, 3000)\r\n }\r\n } catch (e) {\r\n toast.error('rpc disconnected')\r\n console.log('rpc disconnected', e)\r\n }\r\n }, 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n }, [nodeProviderQuery, txId, dAppOption])\r\n\r\n useEffect(() => {\r\n if (!data) {\r\n setStep(0)\r\n setLoadingStep(0)\r\n return\r\n }\r\n\r\n console.log(data.status)\r\n setErrorStep(-1)\r\n const status = data.status as string\r\n\r\n if (status === TransactionStatus.AVAILABLE) {\r\n setStep(1)\r\n setPercent(25)\r\n setLoadingStep(1)\r\n } else if (status === TransactionStatus.CONFIRMED) {\r\n setStep(2)\r\n setPercent(50)\r\n setLoadingStep(2)\r\n } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {\r\n setStep(1)\r\n setPercent(25)\r\n setErrorStep(1)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Unavailable')\r\n setErrorMessage('Unavailable')\r\n } else if (status === TransactionStatus.KEYSIGNED) {\r\n setStep(3)\r\n setPercent(75)\r\n setLoadingStep(3)\r\n } else if (status === TransactionStatus.PAID) {\r\n setStep(3)\r\n setPercent(90)\r\n setLoadingStep(3)\r\n } else if (status === TransactionStatus.FAILEDTOPAY) {\r\n setStep(3)\r\n setPercent(90)\r\n setErrorStep(3)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Failed to release tokens to target!')\r\n setErrorMessage('Failed to release tokens to target!')\r\n } else if (status === TransactionStatus.FAILEDTOPULL) {\r\n setStep(1)\r\n setPercent(25)\r\n setErrorStep(1)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Failed to pull tokens from source!')\r\n setErrorMessage('Failed to pull tokens from source!')\r\n } else if (status === TransactionStatus.COMPLETED) {\r\n setStep(4)\r\n setPercent(100)\r\n setLoadingStep(-1)\r\n }\r\n }, [data?.status])\r\n\r\n return (\r\n <Provider store={store}>\r\n <div\r\n className={`kima-card transaction-card ${theme.colorMode} font-${\r\n theme.fontSize\r\n } ${minimized ? 'minimized' : ''}`}\r\n style={{\r\n fontFamily: theme.fontFamily,\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? theme.backgroundColorLight\r\n : theme.backgroundColorDark\r\n }}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>\r\n Transferring {formatterFloat.format(data?.amount || 0)}{' '}\r\n {data?.symbol || 'USDK'}&nbsp;&nbsp;\r\n {`(${percent}%)`}\r\n </h3>\r\n </div>\r\n\r\n {!minimized ? (\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n setMinimized(true)\r\n }}\r\n >\r\n <MinimizeIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n {loadingStep < 0 ? (\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n dispatch(initialize())\r\n closeHandler()\r\n }}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : (\r\n <div className='control-buttons'>\r\n <div className='maximize' onClick={() => setMinimized(false)}>\r\n View\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {data?.sourceChain && data?.targetChain && (\r\n <NetworkLabel\r\n sourceChain={data?.sourceChain}\r\n targetChain={data?.targetChain}\r\n hasError={errorStep >= 0}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-content'>\r\n <Progressbar\r\n step={step}\r\n focus={focus}\r\n errorStep={errorStep}\r\n setFocus={setFocus}\r\n loadingStep={loadingStep}\r\n />\r\n {/* <Tooltip\r\n step={step}\r\n focus={focus}\r\n errorStep={errorStep}\r\n loadingStep={loadingStep}\r\n data={data}\r\n /> */}\r\n <StepBox\r\n step={step}\r\n errorStep={errorStep}\r\n loadingStep={loadingStep}\r\n data={data}\r\n />\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <ExternalLink to={'https://kima.finance'}>\r\n <FooterLogo\r\n fill={theme.colorMode === 'light' ? 'black' : '#C5C5C5'}\r\n />\r\n </ExternalLink>\r\n </div>\r\n <HelpPopup />\r\n <HashPopup data={data} />\r\n <Toaster\r\n position='top-right'\r\n reverseOrder={false}\r\n containerStyle={{\r\n position: 'absolute'\r\n }}\r\n toastOptions={{\r\n duration: 10 * 1000,\r\n style: {\r\n position: 'relative',\r\n top: '3rem',\r\n right: '1.5rem',\r\n margin: '5px 0',\r\n padding: '.7rem 1.5rem',\r\n color:\r\n theme.colorMode === ColorModeOptions.light ? 'black' : 'white',\r\n fontSize: '1em',\r\n borderRadius: '1em',\r\n border: '1px solid #66aae5',\r\n background: 'transparent'\r\n }\r\n }}\r\n />\r\n <Tooltip\r\n id='error-tooltip'\r\n className={`error-tooltip ${theme.colorMode}`}\r\n content={errorMessage}\r\n style={{ zIndex: 10000 }}\r\n />\r\n </div>\r\n </Provider>\r\n )\r\n}\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { toast } from 'react-hot-toast'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n selectAmount,\r\n selectCompliantOption,\r\n selectMode,\r\n selectSourceChain,\r\n selectTargetCompliant,\r\n selectTargetChain,\r\n selectTheme,\r\n selectTransactionOption,\r\n selectSelectedToken,\r\n selectServiceFee,\r\n selectFeeDeduct\r\n} from '../../store/selectors'\r\nimport { BankInput, CoinDropdown, CustomCheckbox, WalletButton } from './'\r\nimport { setAmount, setFeeDeduct } from '../../store/optionSlice'\r\nimport { ModeOptions, PaymentTitleOption } from '../../interface'\r\nimport AddressInput from './AddressInput'\r\nimport NetworkDropdown from './NetworkDropdown'\r\nimport { COIN_LIST, ChainName } from '../../utils/constants'\r\nimport { formatterFloat } from '../../helpers/functions'\r\n\r\nconst SingleForm = ({\r\n paymentTitleOption\r\n}: {\r\n paymentTitleOption?: PaymentTitleOption\r\n}) => {\r\n const dispatch = useDispatch()\r\n const mode = useSelector(selectMode)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const targetCompliant = useSelector(selectTargetCompliant)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const sourceNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n const errorMessage = useMemo(\r\n () =>\r\n compliantOption && targetCompliant !== 'low'\r\n ? `Target address has ${targetCompliant} risk`\r\n : '',\r\n [compliantOption, targetCompliant]\r\n )\r\n\r\n useEffect(() => {\r\n if (!errorMessage) return\r\n toast.error(errorMessage)\r\n }, [errorMessage])\r\n\r\n return (\r\n <div className='single-form'>\r\n {mode === ModeOptions.payment ? (\r\n <p className='payment-title' style={paymentTitleOption?.style}>\r\n {paymentTitleOption?.title}\r\n </p>\r\n ) : null}\r\n <div className='form-item'>\r\n <span className='label'>Source Network</span>\r\n <NetworkDropdown />\r\n </div>\r\n\r\n <div\r\n className={`dynamic-area ${\r\n sourceNetwork === ChainName.FIAT ? 'reverse' : ''\r\n }`}\r\n >\r\n <div className='form-item wallet-button-item'>\r\n <span className='label'>Connect wallet:</span>\r\n <WalletButton />\r\n </div>\r\n\r\n {mode === ModeOptions.bridge && (\r\n <div className='form-item'>\r\n <span className='label'>Target Network:</span>\r\n <NetworkDropdown isOriginChain={false} />\r\n </div>\r\n )}\r\n </div>\r\n\r\n {mode === ModeOptions.bridge && sourceNetwork !== ChainName.FIAT ? (\r\n targetNetwork === ChainName.FIAT ? (\r\n <BankInput />\r\n ) : (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Target Address:</span>\r\n <AddressInput />\r\n </div>\r\n )\r\n ) : null}\r\n\r\n {mode === ModeOptions.bridge ? (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Amount:</span>\r\n <div className='amount-label-container'>\r\n <input\r\n type='number'\r\n value={amount || ''}\r\n onChange={(e) => {\r\n let _amount = +e.target.value\r\n dispatch(setAmount(parseFloat(_amount.toFixed(2))))\r\n }}\r\n />\r\n <CoinDropdown />\r\n </div>\r\n </div>\r\n ) : (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Amount:</span>\r\n <div className={`amount-label ${theme.colorMode}`}>\r\n <span>{transactionOption?.amount || ''}</span>\r\n <div className='coin-wrapper'>\r\n {<Icon />}\r\n {selectedCoin}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {mode === ModeOptions.bridge && serviceFee > 0? (\r\n <CustomCheckbox\r\n text={`Deduct ${formatterFloat.format(serviceFee)} USDK fee`}\r\n checked={feeDeduct}\r\n setCheck={(value: boolean) => dispatch(setFeeDeduct(value))}\r\n />\r\n ) : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default SingleForm\r\n","import React from 'react'\r\nimport {\r\n selectAmount,\r\n selectSelectedToken,\r\n selectMode,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport { useSelector } from 'react-redux'\r\nimport { ModeOptions } from '../../interface'\r\nimport { setAmount } from '../../store/optionSlice'\r\nimport { useDispatch } from 'react-redux'\r\nimport { COIN_LIST } from '../../utils/constants'\r\n\r\nconst CoinSelect = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const mode = useSelector(selectMode)\r\n const amount = useSelector(selectAmount)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n return (\r\n <div className={`coin-select`}>\r\n <p>Select Amount of Token for Funding</p>\r\n {/* <div className='coin-list-container'>\r\n {coinList.map((coin, index) => (\r\n <div\r\n className={`card-item ${theme} ${\r\n index === selectedCoin ? 'active' : ''\r\n }`}\r\n key={coin.symbol}\r\n onClick={() => setCoin(index)}\r\n >\r\n {coin.icon}\r\n <span>{coin.symbol}</span>\r\n </div>\r\n ))}\r\n </div> */}\r\n <div className={`amount-input ${theme.colorMode}`}>\r\n <span>Amount:</span>\r\n <div className='input-wrapper'>\r\n <input\r\n type='number'\r\n value={amount || ''}\r\n readOnly={mode === ModeOptions.payment}\r\n onChange={(e) => {\r\n const _amount = +e.target.value\r\n dispatch(setAmount(parseFloat(_amount.toFixed(2))))\r\n }}\r\n />\r\n <div className='coin-label'>\r\n {<Icon />}\r\n <span>{selectedCoin}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinSelect\r\n","import { useEffect, useMemo } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { ModeOptions } from '../interface'\r\nimport { setServiceFee } from '../store/optionSlice'\r\nimport {\r\n selectAmount,\r\n selectMode,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectTargetAddress,\r\n selectTargetChain,\r\n selectTransactionOption\r\n} from '../store/selectors'\r\nimport { ChainName } from '../utils/constants'\r\nimport useIsWalletReady from './useIsWalletReady'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useServiceFee(\r\n isConfirming: boolean = false,\r\n feeURL: string\r\n) {\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const dispatch = useDispatch()\r\n const serviceFee = useSelector(selectServiceFee)\r\n const mode = useSelector(selectMode)\r\n const amount_ = useSelector(selectAmount)\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const targetAddress_ = useSelector(selectTargetAddress)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const targetChain = useMemo(\r\n () =>\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetChain || ''\r\n : targetNetwork,\r\n [transactionOption, mode, targetNetwork]\r\n )\r\n const targetAddress = useMemo(\r\n () =>\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress || ''\r\n : targetAddress_,\r\n [transactionOption, mode, targetAddress_]\r\n )\r\n const amount = useMemo(\r\n () => (mode === ModeOptions.payment ? transactionOption?.amount : amount_),\r\n [transactionOption, mode, amount_]\r\n )\r\n\r\n const getServiceFee = async () => {\r\n if (\r\n !sourceChain ||\r\n !targetChain ||\r\n !isReady ||\r\n !walletAddress ||\r\n !targetAddress ||\r\n !amount\r\n )\r\n return\r\n\r\n try {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n dispatch(setServiceFee(0))\r\n return\r\n }\r\n\r\n const sourceChainResult: any = await fetchWrapper.get(\r\n `${feeURL}/fee/${sourceChain}`\r\n )\r\n const sourceFee = sourceChainResult.fee.split('-')[0]\r\n const targetChainResult: any = await fetchWrapper.get(\r\n `${feeURL}/fee/${targetChain}`\r\n )\r\n const targetFee = targetChainResult.fee.split('-')[0]\r\n\r\n let fee = +sourceFee + +targetFee\r\n dispatch(setServiceFee(parseFloat(fee.toFixed(2))))\r\n } catch (e) {\r\n dispatch(setServiceFee(0))\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isConfirming) return\r\n getServiceFee()\r\n const timerId = setInterval(() => {\r\n getServiceFee()\r\n }, 20 * 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [\r\n sourceChain,\r\n targetChain,\r\n isReady,\r\n walletAddress,\r\n isConfirming,\r\n targetAddress,\r\n amount\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n serviceFee\r\n }),\r\n [serviceFee]\r\n )\r\n}\r\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport {\r\n AccountMeta,\r\n PublicKey,\r\n Signer,\r\n TransactionInstruction\r\n} from '@solana/web3.js'\r\nimport BN from 'bn.js'\r\nimport BufferLayout from 'buffer-layout'\r\n\r\n\r\n\r\nexport enum TokenInstruction {\r\n InitializeMint = 0,\r\n InitializeAccount = 1,\r\n InitializeMultisig = 2,\r\n Transfer = 3,\r\n Approve = 4,\r\n Revoke = 5,\r\n SetAuthority = 6,\r\n MintTo = 7,\r\n Burn = 8,\r\n CloseAccount = 9,\r\n FreezeAccount = 10,\r\n ThawAccount = 11,\r\n TransferChecked = 12,\r\n ApproveChecked = 13,\r\n MintToChecked = 14,\r\n BurnChecked = 15,\r\n InitializeAccount2 = 16,\r\n SyncNative = 17,\r\n InitializeAccount3 = 18,\r\n InitializeMultisig2 = 19,\r\n InitializeMint2 = 20\r\n}\r\n\r\n/**\r\n * Construct a Transfer instruction\r\n *\r\n * @param source Source account\r\n * @param destination Destination account\r\n * @param owner Owner of the source account\r\n * @param amount Number of tokens to transfer\r\n * @param multiSigners Signing accounts if `owner` is a multisig\r\n * @param programId SPL Token program account\r\n *\r\n * @return Instruction to add to a transaction\r\n */\r\nexport function createTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Transfer,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function createApproveTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Approve,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function addSigners(\r\n keys: AccountMeta[],\r\n ownerOrAuthority: PublicKey,\r\n multiSigners: Signer[]\r\n): AccountMeta[] {\r\n if (multiSigners.length) {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false })\r\n for (const signer of multiSigners) {\r\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false })\r\n }\r\n } else {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false })\r\n }\r\n return keys\r\n}\r\n\r\nclass TokenAmount extends BN {\r\n /**\r\n * Convert to Buffer representation\r\n */\r\n toBuffer(): Buffer {\r\n const a = super.toArray().reverse()\r\n const b = Buffer.from(a)\r\n if (b.length === 8) {\r\n return b\r\n }\r\n\r\n if (b.length >= 8) {\r\n throw new Error('TokenAmount too large')\r\n }\r\n\r\n const zeroPad = Buffer.alloc(8)\r\n b.copy(zeroPad)\r\n return zeroPad\r\n }\r\n\r\n /**\r\n * Construct a TokenAmount from Buffer representation\r\n */\r\n // static fromBuffer(buffer: Buffer): TokenAmount {\r\n // if (buffer.length !== 8) {\r\n // throw new Error(`Invalid buffer length: ${buffer.length}`)\r\n // }\r\n\r\n // return new BN(\r\n // [...buffer]\r\n // .reverse()\r\n // .map((i) => `00${i.toString(16)}`.slice(-2))\r\n // .join(''),\r\n // 16\r\n // )\r\n // }\r\n}\r\n","export function byte2hexStr(byte) {\r\n if (typeof byte !== \"number\") throw new Error(\"Input must be a number\");\r\n\r\n if (byte < 0 || byte > 255) throw new Error(\"Input must be a byte\");\r\n\r\n const hexByteMap = \"0123456789ABCDEF\";\r\n\r\n let str = \"\";\r\n str += hexByteMap.charAt(byte >> 4);\r\n str += hexByteMap.charAt(byte & 0x0f);\r\n\r\n return str;\r\n}\r\n\r\nexport function byteArray2hexStr(byteArray) {\r\n let str = \"\";\r\n\r\n for (let i = 0; i < byteArray.length; i++) str += byte2hexStr(byteArray[i]);\r\n\r\n return str;\r\n}\r\n","export function isHexChar(c) {\r\n if (\r\n (c >= \"A\" && c <= \"F\") ||\r\n (c >= \"a\" && c <= \"f\") ||\r\n (c >= \"0\" && c <= \"9\")\r\n ) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport function hexChar2byte(c) {\r\n let d;\r\n\r\n if (c >= \"A\" && c <= \"F\") d = c.charCodeAt(0) - \"A\".charCodeAt(0) + 10;\r\n else if (c >= \"a\" && c <= \"f\") d = c.charCodeAt(0) - \"a\".charCodeAt(0) + 10;\r\n else if (c >= \"0\" && c <= \"9\") d = c.charCodeAt(0) - \"0\".charCodeAt(0);\r\n\r\n if (typeof d === \"number\") return d;\r\n else throw new Error(\"The passed hex char is not a valid hex char\");\r\n}\r\n\r\nexport function hexStr2byteArray(str, strict = false) {\r\n if (typeof str !== \"string\")\r\n throw new Error(\"The passed string is not a string\");\r\n\r\n let len = str.length;\r\n\r\n if (strict) {\r\n if (len % 2) {\r\n str = `0${str}`;\r\n len++;\r\n }\r\n }\r\n const byteArray = [];\r\n let d = 0;\r\n let j = 0;\r\n let k = 0;\r\n\r\n for (let i = 0; i < len; i++) {\r\n const c = str.charAt(i);\r\n\r\n if (isHexChar(c)) {\r\n d <<= 4;\r\n d += hexChar2byte(c);\r\n j++;\r\n\r\n if (0 === j % 2) {\r\n byteArray[k++] = d;\r\n d = 0;\r\n }\r\n } else throw new Error(\"The passed hex char is not a valid hex string\");\r\n }\r\n\r\n return byteArray;\r\n}\r\n\r\n","const ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\r\nconst ALPHABET_MAP = {};\r\n\r\nfor (let i = 0; i < ALPHABET.length; i++) ALPHABET_MAP[ALPHABET.charAt(i)] = i;\r\n\r\nconst BASE = 58;\r\n\r\nexport function encode58(buffer) {\r\n if (buffer.length === 0) return \"\";\r\n\r\n let i;\r\n let j;\r\n\r\n const digits = [0];\r\n\r\n for (i = 0; i < buffer.length; i++) {\r\n for (j = 0; j < digits.length; j++) digits[j] <<= 8;\r\n\r\n digits[0] += buffer[i];\r\n let carry = 0;\r\n\r\n for (j = 0; j < digits.length; ++j) {\r\n digits[j] += carry;\r\n carry = (digits[j] / BASE) | 0;\r\n digits[j] %= BASE;\r\n }\r\n\r\n while (carry) {\r\n digits.push(carry % BASE);\r\n carry = (carry / BASE) | 0;\r\n }\r\n }\r\n\r\n for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0);\r\n\r\n return digits\r\n .reverse()\r\n .map((digit) => ALPHABET[digit])\r\n .join(\"\");\r\n}\r\n\r\nexport function decode58(string) {\r\n if (string.length === 0) return [];\r\n\r\n let i;\r\n let j;\r\n\r\n const bytes = [0];\r\n\r\n for (i = 0; i < string.length; i++) {\r\n const c = string[i];\r\n\r\n if (!(c in ALPHABET_MAP)) throw new Error(\"Non-base58 character\");\r\n\r\n for (j = 0; j < bytes.length; j++) bytes[j] *= BASE;\r\n\r\n bytes[0] += ALPHABET_MAP[c];\r\n let carry = 0;\r\n\r\n for (j = 0; j < bytes.length; ++j) {\r\n bytes[j] += carry;\r\n carry = bytes[j] >> 8;\r\n bytes[j] &= 0xff;\r\n }\r\n\r\n while (carry) {\r\n bytes.push(carry & 0xff);\r\n carry >>= 8;\r\n }\r\n }\r\n\r\n for (i = 0; string[i] === \"1\" && i < string.length - 1; i++) bytes.push(0);\r\n\r\n return bytes.reverse();\r\n}\r\n","/* eslint-disable eqeqeq */\r\nimport { utils as ethersUtils } from \"ethers\";\r\nimport { byteArray2hexStr } from \"./bytes\";\r\nimport { hexStr2byteArray } from \"./code\";\r\nimport { encode58, decode58 } from \"./base58\";\r\n\r\nconst ADDRESS_PREFIX = \"41\";\r\n\r\nfunction isHex(string) {\r\n return (\r\n typeof string === \"string\" &&\r\n !isNaN(parseInt(string, 16)) &&\r\n /^(0x|)[a-fA-F0-9]+$/.test(string)\r\n );\r\n}\r\n\r\nfunction SHA256(msgBytes) {\r\n const msgHex = byteArray2hexStr(msgBytes);\r\n const hashHex = ethersUtils.sha256(\"0x\" + msgHex).replace(/^0x/, \"\");\r\n return hexStr2byteArray(hashHex);\r\n}\r\n\r\nfunction getBase58CheckAddress(addressBytes) {\r\n const hash0 = SHA256(addressBytes);\r\n const hash1 = SHA256(hash0);\r\n\r\n let checkSum = hash1.slice(0, 4);\r\n checkSum = addressBytes.concat(checkSum);\r\n\r\n return encode58(checkSum);\r\n}\r\n\r\nfunction decodeBase58Address(base58Sting) {\r\n if (typeof base58Sting != \"string\") return false;\r\n\r\n if (base58Sting.length <= 4) return false;\r\n\r\n let address = decode58(base58Sting);\r\n\r\n if (base58Sting.length <= 4) return false;\r\n\r\n const len = address.length;\r\n const offset = len - 4;\r\n const checkSum = address.slice(offset);\r\n\r\n address = address.slice(0, offset);\r\n\r\n const hash0 = SHA256(address);\r\n const hash1 = SHA256(hash0);\r\n const checkSum1 = hash1.slice(0, 4);\r\n\r\n if (\r\n checkSum[0] == checkSum1[0] &&\r\n checkSum[1] == checkSum1[1] &&\r\n checkSum[2] == checkSum1[2] &&\r\n checkSum[3] == checkSum1[3]\r\n ) {\r\n return address;\r\n }\r\n\r\n throw new Error(\"Invalid address provided\");\r\n}\r\n\r\n/// EXPORTED\r\n\r\nexport function fromHex(address) {\r\n if (!isHex(address)) return address;\r\n\r\n return getBase58CheckAddress(\r\n hexStr2byteArray(address.replace(/^0x/, ADDRESS_PREFIX))\r\n );\r\n}\r\n\r\nexport function toHex(address) {\r\n if (isHex(address))\r\n return address.toLowerCase().replace(/^0x/, ADDRESS_PREFIX);\r\n\r\n return byteArray2hexStr(decodeBase58Address(address)).toLowerCase();\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Contract } from '@ethersproject/contracts'\r\nimport { formatUnits, parseUnits } from '@ethersproject/units'\r\nimport {\r\n useConnection,\r\n useWallet as useSolanaWallet\r\n} from '@solana/wallet-adapter-react'\r\nimport {\r\n ChainName,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_IDS,\r\n isEVMChain\r\n} from '../utils/constants'\r\nimport ERC20ABI from '../utils/ethereum/erc20ABI.json'\r\nimport {\r\n selectAmount,\r\n selectSelectedToken,\r\n selectDappOption,\r\n selectErrorHandler,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectTokenOptions\r\n} from '../store/selectors'\r\nimport { getOrCreateAssociatedTokenAccount } from '../utils/solana/getOrCreateAssociatedTokenAccount'\r\nimport { PublicKey, Transaction } from '@solana/web3.js'\r\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { createApproveTransferInstruction } from '../utils/solana/createTransferInstruction'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { tronWeb } from '../tronweb'\r\nimport { fromHex } from '../utils/func'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\nimport { isEmptyObject } from '../helpers/functions'\r\nimport toast from 'react-hot-toast'\r\n\r\ntype ParsedAccountData = {\r\n /** Name of the program that owns this account */\r\n program: string\r\n /** Parsed account data */\r\n parsed: any\r\n /** Space used by account data */\r\n space: number\r\n}\r\n\r\nconst sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))\r\n\r\nexport default function useAllowance({ setApproving }: { setApproving: any }) {\r\n const [allowance, setAllowance] = useState<number>(0)\r\n const [decimals, setDecimals] = useState<number | null>(null)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const { address: signerAddress, chainId: evmChainId } =\r\n web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const dAppOption = useSelector(selectDappOption)\r\n const sourceChain = useMemo(() => {\r\n if (\r\n selectedNetwork === ChainName.SOLANA ||\r\n selectedNetwork === ChainName.TRON\r\n )\r\n return selectedNetwork\r\n if (CHAIN_NAMES_TO_IDS[selectedNetwork] !== evmChainId) {\r\n return CHAIN_IDS_TO_NAMES[evmChainId as number]\r\n }\r\n\r\n return selectedNetwork\r\n }, [selectedNetwork, evmChainId])\r\n const amount = useSelector(selectAmount)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const { connection } = useConnection()\r\n const { publicKey: solanaAddress, signTransaction: signSolanaTransaction } =\r\n useSolanaWallet()\r\n const { address: tronAddress, signTransaction: signTronTransaction } =\r\n useTronWallet()\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenOptions = useSelector(selectTokenOptions)\r\n const tokenAddress = useMemo(() => {\r\n if (isEmptyObject(tokenOptions) || sourceChain === ChainName.FIAT) return ''\r\n\r\n if (tokenOptions && typeof tokenOptions === 'object') {\r\n const coinOptions = tokenOptions[selectedCoin]\r\n if (coinOptions && typeof coinOptions === 'object') {\r\n return tokenOptions[selectedCoin][sourceChain]\r\n }\r\n }\r\n\r\n return ''\r\n }, [selectedCoin, sourceChain, tokenOptions])\r\n const [targetAddress, setTargetAddress] = useState<string>()\r\n const isApproved = useMemo(() => {\r\n return allowance >= amount + serviceFee\r\n }, [allowance, amount, serviceFee, dAppOption])\r\n\r\n const updatePoolAddress = async () => {\r\n try {\r\n const result: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/kima/tss_pubkey`\r\n )\r\n if (result?.tssPubkey?.length < 1) {\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.SOLANA && !result.tssPubkey[0].eddsa) {\r\n console.log('solana pool address is missing')\r\n toast.error('solana pool address is missing')\r\n }\r\n setTargetAddress(\r\n sourceChain === ChainName.SOLANA\r\n ? result.tssPubkey[0].eddsa\r\n : sourceChain === ChainName.TRON\r\n ? fromHex(result.tssPubkey[0].ecdsa)\r\n : result.tssPubkey[0].ecdsa\r\n )\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n updatePoolAddress()\r\n }, [nodeProviderQuery, sourceChain])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n if (!isEVMChain(sourceChain)) {\r\n if (solanaAddress && tokenAddress && connection) {\r\n const mint = new PublicKey(tokenAddress)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signSolanaTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n console.log('solana token account: ', accountInfo)\r\n\r\n const parsedAccountInfo = accountInfo?.value\r\n ?.data as ParsedAccountData\r\n\r\n setDecimals(parsedAccountInfo.parsed?.info?.tokenAmount?.decimals)\r\n setAllowance(\r\n parsedAccountInfo.parsed?.info?.delegate === targetAddress\r\n ? parsedAccountInfo.parsed?.info?.delegatedAmount?.uiAmount\r\n : 0\r\n )\r\n } else if (tronAddress && tokenAddress) {\r\n let trc20Contract = await tronWeb.contract(\r\n ERC20ABI.abi,\r\n tokenAddress\r\n )\r\n\r\n const decimals = await trc20Contract.decimals().call()\r\n const userAllowance = await trc20Contract\r\n .allowance(tronAddress, targetAddress)\r\n .call()\r\n\r\n setDecimals(+decimals)\r\n setAllowance(+formatUnits(userAllowance, decimals))\r\n } else {\r\n setAllowance(0)\r\n }\r\n return\r\n }\r\n\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n if (!tokenAddress || !targetAddress || !signer || !signerAddress) return\r\n\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n const decimals = await erc20Contract.decimals()\r\n const userAllowance = await erc20Contract.allowance(\r\n signerAddress,\r\n targetAddress\r\n )\r\n\r\n setDecimals(+decimals)\r\n setAllowance(+formatUnits(userAllowance, decimals))\r\n } catch (error) {\r\n errorHandler(error)\r\n }\r\n })()\r\n }, [\r\n signerAddress,\r\n tokenAddress,\r\n targetAddress,\r\n sourceChain,\r\n solanaAddress,\r\n tronAddress,\r\n walletProvider\r\n ])\r\n\r\n const approve = useCallback(async () => {\r\n if (isEVMChain(sourceChain)) {\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider.getSigner()\r\n if (!decimals || !tokenAddress || !signer || !targetAddress) return\r\n\r\n try {\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n\r\n setApproving(true)\r\n const approve = await erc20Contract.approve(\r\n targetAddress,\r\n parseUnits((amount + serviceFee).toString(), decimals)\r\n )\r\n\r\n await approve.wait()\r\n setApproving(false)\r\n setAllowance(amount + serviceFee)\r\n } catch (error) {\r\n errorHandler(error)\r\n setApproving(false)\r\n }\r\n\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.TRON) {\r\n if (!decimals || !tokenAddress || !targetAddress || !signTronTransaction)\r\n return\r\n\r\n try {\r\n setApproving(true)\r\n const functionSelector = 'approve(address,uint256)'\r\n const parameter = [\r\n { type: 'address', value: targetAddress },\r\n {\r\n type: 'uint256',\r\n value: parseUnits(\r\n (amount + serviceFee).toString(),\r\n decimals\r\n ).toString()\r\n }\r\n ]\r\n\r\n const tx = await tronWeb.transactionBuilder.triggerSmartContract(\r\n tronWeb.address.toHex(tokenAddress),\r\n functionSelector,\r\n {},\r\n parameter,\r\n tronWeb.address.toHex(tronAddress)\r\n )\r\n const signedTx = await signTronTransaction(tx.transaction)\r\n const result = await tronWeb.trx.sendRawTransaction(signedTx)\r\n console.log(result)\r\n\r\n setApproving(false)\r\n setAllowance(amount + serviceFee)\r\n } catch (error) {\r\n errorHandler(error)\r\n setApproving(false)\r\n }\r\n return\r\n }\r\n\r\n // Solana\r\n if (!signSolanaTransaction) return\r\n\r\n try {\r\n setApproving(true)\r\n const mint = new PublicKey(tokenAddress)\r\n const toPublicKey = new PublicKey(targetAddress as string)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signSolanaTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const transaction = new Transaction().add(\r\n createApproveTransferInstruction(\r\n fromTokenAccount.address, // source\r\n toPublicKey, // dest\r\n solanaAddress as PublicKey,\r\n +(amount + serviceFee).toFixed(2) * Math.pow(10, decimals ?? 6), // amount * LAMPORTS_PER_SOL,\r\n [],\r\n TOKEN_PROGRAM_ID\r\n )\r\n )\r\n\r\n const blockHash = await connection.getLatestBlockhash()\r\n transaction.feePayer = solanaAddress as PublicKey\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signSolanaTransaction(transaction)\r\n\r\n await connection.sendRawTransaction(signed.serialize())\r\n\r\n let accountInfo\r\n let allowAmount = 0\r\n let retryCount = 0\r\n\r\n do {\r\n accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n\r\n const parsedAccountInfo = accountInfo?.value?.data as ParsedAccountData\r\n allowAmount =\r\n parsedAccountInfo.parsed?.info?.delegate === targetAddress\r\n ? parsedAccountInfo.parsed?.info?.delegatedAmount?.uiAmount\r\n : 0\r\n\r\n await sleep(1000)\r\n } while (allowAmount < amount + serviceFee || retryCount++ < 5)\r\n\r\n setAllowance(amount + serviceFee)\r\n setApproving(false)\r\n } catch (e) {\r\n errorHandler(e)\r\n setApproving(false)\r\n }\r\n }, [\r\n decimals,\r\n tokenAddress,\r\n walletProvider,\r\n amount,\r\n targetAddress,\r\n tronAddress,\r\n signSolanaTransaction,\r\n signTronTransaction,\r\n serviceFee\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n isApproved,\r\n approve\r\n }),\r\n [isApproved, approve]\r\n )\r\n}\r\n","import React from 'react'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport { useSelector } from 'react-redux'\r\nimport AddressInput from './AddressInput'\r\n\r\nconst AddressInputWizard = () => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className={`coin-select`}>\r\n <p>Select Target Address for Funding</p>\r\n\r\n <div className={`address-input ${theme.colorMode}`}>\r\n <span>Target Address:</span>\r\n <AddressInput />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default AddressInputWizard\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport {\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain\r\n} from '../store/selectors'\r\nimport { ChainName } from '../utils/constants'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setAvailableTokenList } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useCurrencyOptions() {\r\n const dispatch = useDispatch()\r\n const [options, setOptions] = useState('USDK')\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || !originNetwork || !targetNetwork) return\r\n ;(async function () {\r\n try {\r\n if (\r\n originNetwork === ChainName.FIAT ||\r\n targetNetwork === ChainName.FIAT\r\n ) {\r\n setOptions('KEUR')\r\n return\r\n }\r\n const coins: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_currencies/${originNetwork}/${targetNetwork}`\r\n )\r\n\r\n dispatch(setAvailableTokenList(coins.Currencies || ['USDK']))\r\n setOptions(coins.Currencies?.length ? coins.Currencies[0] : 'USDK')\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, originNetwork, targetNetwork])\r\n\r\n return useMemo(\r\n () => ({\r\n options\r\n }),\r\n [options]\r\n )\r\n}\r\n","import { useEffect, useState } from 'react';\r\n\r\nconst useWidth = () => {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWidth(window.innerWidth);\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return width;\r\n};\r\n\r\nexport default useWidth;\r\n","import { useCallback, useMemo, useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport sha256 from 'crypto-js/sha256.js'\r\nimport Base64 from 'crypto-js/enc-base64.js'\r\nimport { ChainName } from '../utils/constants'\r\nimport {\r\n selectAmount,\r\n selectErrorHandler,\r\n selectSourceChain\r\n} from '../store/selectors'\r\nimport { setSignature } from '../store/optionSlice'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\n\r\nexport default function useSign({ setSigning }: { setSigning: any }) {\r\n const dispatch = useDispatch()\r\n const [isSigned, setIsSigned] = useState<boolean>(false)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n const { address: signerAddress } = web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const sourceNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const amount = useSelector(selectAmount)\r\n\r\n const sign = useCallback(async () => {\r\n if (sourceNetwork !== ChainName.FIAT) {\r\n errorHandler('Failed to sign')\r\n return\r\n }\r\n try {\r\n setSigning(true)\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n const message = `${amount} | ${signerAddress}`\r\n const signature = await signer?.signMessage(message)\r\n const hash = Base64.stringify(sha256(signature || ''))\r\n setIsSigned(true)\r\n dispatch(setSignature(hash))\r\n setSigning(false)\r\n } catch (error) {\r\n errorHandler(error)\r\n setSigning(false)\r\n }\r\n }, [walletProvider, amount, sourceNetwork, signerAddress])\r\n\r\n return useMemo(\r\n () => ({\r\n isSigned,\r\n sign\r\n }),\r\n [isSigned, sign]\r\n )\r\n}\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon, FooterLogo } from '../assets/icons'\r\nimport {\r\n ConfirmDetails,\r\n ExternalLink,\r\n NetworkSelect,\r\n PrimaryButton,\r\n SecondaryButton,\r\n WalletButton\r\n} from './reusable'\r\nimport {\r\n ColorModeOptions,\r\n DAppOptions,\r\n ModeOptions,\r\n PaymentTitleOption,\r\n ThemeOptions,\r\n TitleOption\r\n} from '../interface'\r\nimport SingleForm from './reusable/SingleForm'\r\nimport CoinSelect from './reusable/CoinSelect'\r\n\r\n// store\r\nimport {\r\n initialize,\r\n setBankPopup,\r\n setSelectedToken,\r\n setSourceCompliant,\r\n setSubmitted,\r\n setTargetAddress,\r\n setTargetCompliant,\r\n setTheme,\r\n setTxId\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport {\r\n selectAmount,\r\n selectBackendUrl,\r\n selectBankDetails,\r\n selectCloseHandler,\r\n selectCompliantOption,\r\n selectDappOption,\r\n selectErrorHandler,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectSourceCompliant,\r\n selectTargetAddress,\r\n selectTargetCompliant,\r\n selectTargetChain,\r\n selectKycStatus,\r\n selectKeplrHandler,\r\n selectTransactionOption,\r\n selectFeeDeduct\r\n} from '../store/selectors'\r\nimport useIsWalletReady from '../hooks/useIsWalletReady'\r\nimport useServiceFee from '../hooks/useServiceFee'\r\nimport useAllowance from '../hooks/useAllowance'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport AddressInputWizard from './reusable/AddressInputWizard'\r\nimport { HelpPopup, BankPopup, SolanaWalletConnectModal } from './modals'\r\nimport useCurrencyOptions from '../hooks/useCurrencyOptions'\r\nimport { ChainName, CHAIN_NAMES_TO_STRING } from '../utils/constants'\r\nimport { toast, Toaster } from 'react-hot-toast'\r\nimport useBalance from '../hooks/useBalance'\r\nimport useWidth from '../hooks/useWidth'\r\nimport useSign from '../hooks/useSign'\r\nimport TronWalletConnectModal from './modals/TronWalletConnectModal'\r\n\r\ninterface Props {\r\n theme: ThemeOptions\r\n feeURL: string\r\n helpURL?: string\r\n titleOption?: TitleOption\r\n paymentTitleOption?: PaymentTitleOption\r\n}\r\n\r\nexport const TransferWidget = ({\r\n theme,\r\n feeURL,\r\n helpURL,\r\n titleOption,\r\n paymentTitleOption\r\n}: Props) => {\r\n const dispatch = useDispatch()\r\n const mainRef = useRef<HTMLDivElement>(null)\r\n\r\n // State variables for UI\r\n const [isWizard, setWizard] = useState(false)\r\n const [formStep, setFormStep] = useState(0)\r\n const [wizardStep, setWizardStep] = useState(0)\r\n\r\n // Redux variables\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const amount = useSelector(selectAmount)\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const targetChain = useSelector(selectTargetChain)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const sourceCompliant = useSelector(selectSourceCompliant)\r\n const targetCompliant = useSelector(selectTargetCompliant)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const keplrHandler = useSelector(selectKeplrHandler)\r\n const closeHandler = useSelector(selectCloseHandler)\r\n const { options: selectedToken } = useCurrencyOptions()\r\n const backendUrl = useSelector(selectBackendUrl)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const bankDetails = useSelector(selectBankDetails)\r\n const kycStatus = useSelector(selectKycStatus)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n\r\n // Hooks for wallet connection, allowance\r\n const [isApproving, setApproving] = useState(false)\r\n const [isSubmitting, setSubmitting] = useState(false)\r\n const [isSigning, setSigning] = useState(false)\r\n const [isConfirming, setConfirming] = useState(false)\r\n const [isVerifying, setVerifying] = useState(false)\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const { isApproved, approve } = useAllowance({ setApproving })\r\n const { isSigned, sign } = useSign({ setSigning })\r\n const { serviceFee: fee } = useServiceFee(isConfirming, feeURL)\r\n const { balance } = useBalance()\r\n const windowWidth = useWidth()\r\n\r\n useEffect(() => {\r\n if (!walletAddress) return\r\n dispatch(setTargetAddress(walletAddress))\r\n\r\n if (!compliantOption) return\r\n ;(async function () {\r\n try {\r\n const res = await fetchWrapper.post(\r\n `${backendUrl}/compliant`,\r\n JSON.stringify({\r\n address: walletAddress\r\n })\r\n )\r\n dispatch(setSourceCompliant(res))\r\n toast.error('xplorisk check failed')\r\n } catch (e) {\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }, [walletAddress, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!targetAddress || !compliantOption) return\r\n ;(async function () {\r\n try {\r\n const res = await fetchWrapper.post(\r\n `${backendUrl}/compliant`,\r\n JSON.stringify({\r\n address: targetAddress\r\n })\r\n )\r\n dispatch(setTargetCompliant(res))\r\n toast.error('xplorisk check failed')\r\n } catch (e) {\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }, [targetAddress, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n ;(async function () {\r\n const res: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/pool_balance`\r\n )\r\n\r\n let poolsTable: any = []\r\n\r\n for (const pool of res.poolBalance) {\r\n for (const token of pool.balance) {\r\n poolsTable.push({\r\n chain: CHAIN_NAMES_TO_STRING[pool.chainName],\r\n symbol: token.tokenSymbol,\r\n balance: +token.amount\r\n })\r\n }\r\n }\r\n console.table(poolsTable)\r\n })()\r\n }, [nodeProviderQuery])\r\n\r\n useEffect(() => {\r\n dispatch(setSelectedToken(selectedToken))\r\n }, [selectedToken])\r\n\r\n useEffect(() => {\r\n if (!isReady) {\r\n if (formStep > 0) setFormStep(0)\r\n if (wizardStep > 0) setWizardStep(1)\r\n }\r\n }, [isReady, wizardStep, formStep, dAppOption])\r\n\r\n const checkPoolBalance = async () => {\r\n const res: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/pool_balance`\r\n )\r\n\r\n const poolBalance = res.poolBalance\r\n for (let i = 0; i < poolBalance.length; i++) {\r\n if (poolBalance[i].chainName === targetChain) {\r\n for (let j = 0; j < poolBalance[i].balance.length; j++) {\r\n if (poolBalance[i].balance[j].tokenSymbol !== selectedToken) continue\r\n if (+poolBalance[i].balance[j].amount >= amount + fee) {\r\n return true\r\n }\r\n\r\n const symbol = selectedToken\r\n const errorString = `Tried to transfer ${amount} ${symbol}, but ${\r\n CHAIN_NAMES_TO_STRING[targetChain]\r\n } pool has only ${+poolBalance[i].balance[j].amount} ${symbol}`\r\n console.log(errorString)\r\n toast.error(errorString)\r\n\r\n toast.error(\r\n `${CHAIN_NAMES_TO_STRING[targetChain]} pool has insufficient balance!`\r\n )\r\n errorHandler(errorString)\r\n return false\r\n }\r\n return false\r\n }\r\n }\r\n console.log(`${CHAIN_NAMES_TO_STRING[targetChain]} pool error`)\r\n return false\r\n }\r\n\r\n const handleSubmit = async () => {\r\n if (fee < 0) {\r\n toast.error('Fee is not calculated!')\r\n errorHandler('Fee is not calculated!')\r\n return\r\n }\r\n\r\n if (dAppOption !== DAppOptions.LPDrain && balance < amount) {\r\n toast.error('Insufficient balance!')\r\n errorHandler('Insufficient balance!')\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n if (kycStatus !== 'approved') {\r\n setVerifying(true)\r\n dispatch(setBankPopup(true))\r\n return\r\n }\r\n }\r\n\r\n if (sourceChain === ChainName.FIAT) {\r\n if (!isSigned) {\r\n sign()\r\n return\r\n }\r\n } else if (!isApproved && dAppOption !== DAppOptions.LPDrain) {\r\n approve()\r\n return\r\n }\r\n\r\n try {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT)\r\n return\r\n\r\n setSubmitting(true)\r\n\r\n if (\r\n dAppOption === DAppOptions.LPDrain ||\r\n dAppOption === DAppOptions.LPAdd\r\n ) {\r\n keplrHandler(walletAddress)\r\n return\r\n }\r\n\r\n if (!(await checkPoolBalance())) {\r\n setSubmitting(false)\r\n return\r\n }\r\n\r\n const params = JSON.stringify({\r\n originAddress: walletAddress,\r\n originChain: sourceChain,\r\n targetAddress:\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress\r\n : targetAddress,\r\n targetChain: targetChain,\r\n symbol: selectedToken,\r\n amount: amount,\r\n fee\r\n })\r\n\r\n console.log(params)\r\n await fetchWrapper.post(`${backendUrl}/auth`, params)\r\n const result: any = await fetchWrapper.post(\r\n `${backendUrl}/submit`,\r\n params\r\n )\r\n\r\n console.log(result)\r\n\r\n if (result?.code !== 0) {\r\n errorHandler(result)\r\n toast.error('Failed to submit transaction!')\r\n setSubmitting(false)\r\n return\r\n }\r\n\r\n let txId = -1\r\n\r\n for (const event of result.events) {\r\n if (event.type === 'transaction_requested') {\r\n for (const attr of event.attributes) {\r\n if (attr.key === 'txId') {\r\n txId = attr.value\r\n }\r\n }\r\n }\r\n }\r\n\r\n console.log(txId)\r\n setSubmitting(false)\r\n dispatch(setTxId(txId))\r\n dispatch(setSubmitted(true))\r\n } catch (e) {\r\n errorHandler(e)\r\n setSubmitting(false)\r\n console.log(e?.status !== 500 ? 'rpc disconnected' : '', e)\r\n toast.error('rpc disconnected')\r\n toast.error('Failed to submit transaction')\r\n }\r\n }\r\n\r\n const onNext = () => {\r\n if (isWizard && wizardStep < 5) {\r\n if (wizardStep === 1 && !isReady) {\r\n toast.error('Wallet is not connected!')\r\n errorHandler('Wallet is not connected!')\r\n return\r\n }\r\n if (wizardStep === 3) {\r\n if (targetAddress) {\r\n setWizardStep(4)\r\n }\r\n return\r\n }\r\n if (wizardStep === 4) {\r\n if (fee >= 0 && amount > 0) {\r\n setWizardStep(5)\r\n }\r\n return\r\n }\r\n\r\n if (fee > 0 && fee > amount && feeDeduct) {\r\n toast.error('Fee is greater than amount to transfer!')\r\n errorHandler('Fee is greater than amount to transfer!')\r\n return\r\n }\r\n\r\n if (\r\n mode === ModeOptions.payment &&\r\n wizardStep === 1 &&\r\n fee >= 0 &&\r\n (!compliantOption ||\r\n (sourceCompliant === 'low' && targetCompliant === 'low'))\r\n ) {\r\n setConfirming(true)\r\n setWizardStep(5)\r\n } else setWizardStep((step) => step + 1)\r\n }\r\n\r\n if (!isWizard && !formStep) {\r\n if (isReady) {\r\n if (targetChain === ChainName.FIAT) {\r\n if (!bankDetails.iban) {\r\n toast.error('Invalid IBAN!')\r\n errorHandler('Invalid IBAN!')\r\n return\r\n }\r\n if (!bankDetails.recipient) {\r\n toast.error('Invalid Recipient Address!')\r\n errorHandler('Invalid Recipient Address!')\r\n return\r\n }\r\n }\r\n if (amount <= 0) {\r\n toast.error('Invalid amount!')\r\n errorHandler('Invalid amount!')\r\n return\r\n }\r\n\r\n if (fee < 0) {\r\n toast.error('Fee is not calculated!')\r\n errorHandler('Fee is not calculated!')\r\n return\r\n }\r\n if (\r\n compliantOption &&\r\n (sourceCompliant !== 'low' || targetCompliant !== 'low')\r\n )\r\n return\r\n\r\n if (fee > 0 && fee > amount && feeDeduct) {\r\n toast.error('Fee is greater than amount to transfer!')\r\n errorHandler('Fee is greater than amount to transfer!')\r\n return\r\n }\r\n\r\n if (mode === ModeOptions.payment || (targetAddress && amount > 0)) {\r\n setConfirming(true)\r\n setFormStep(1)\r\n }\r\n return\r\n } else {\r\n toast.error('Wallet is not connected!')\r\n errorHandler('Wallet is not connected!')\r\n }\r\n }\r\n\r\n if ((isWizard && wizardStep === 5) || (!isWizard && formStep > 0)) {\r\n handleSubmit()\r\n }\r\n\r\n mainRef.current?.click()\r\n }\r\n\r\n const onBack = () => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n if (isWizard && wizardStep > 0) {\r\n if (mode === ModeOptions.payment && wizardStep === 5) setWizardStep(1)\r\n else setWizardStep((step) => step - 1)\r\n setConfirming(false)\r\n }\r\n\r\n if (!isWizard && formStep > 0) {\r\n setFormStep(0)\r\n setConfirming(false)\r\n }\r\n\r\n if ((isWizard && wizardStep === 0) || (!isWizard && formStep === 0)) {\r\n closeHandler()\r\n }\r\n }\r\n\r\n const getButtonLabel = () => {\r\n if ((isWizard && wizardStep === 5) || (!isWizard && formStep === 1)) {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n if (isVerifying) return 'KYC Verifying...'\r\n if (kycStatus !== 'approved') {\r\n return 'KYC Verify'\r\n }\r\n }\r\n if (\r\n (sourceChain !== ChainName.FIAT && isApproved) ||\r\n dAppOption === DAppOptions.LPDrain ||\r\n (sourceChain === ChainName.FIAT && isSigned)\r\n ) {\r\n return isSubmitting ? 'Submitting...' : 'Submit'\r\n } else if (sourceChain === ChainName.FIAT) {\r\n return isSigning ? 'Signing...' : 'Sign'\r\n } else {\r\n return isApproving ? 'Approving...' : 'Approve'\r\n }\r\n }\r\n\r\n return 'Next'\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n }, [theme])\r\n\r\n return (\r\n <div\r\n className={`kima-card ${theme.colorMode} font-${theme.fontSize}`}\r\n style={{\r\n fontFamily: theme.fontFamily,\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? theme.backgroundColorLight\r\n : theme.backgroundColorDark\r\n }}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>\r\n {(isWizard && wizardStep === 3) || (!isWizard && formStep > 0)\r\n ? titleOption?.confirmTitle\r\n ? titleOption?.confirmTitle\r\n : 'Transfer Details'\r\n : titleOption?.initialTitle\r\n ? titleOption?.initialTitle\r\n : 'New Transfer'}\r\n </h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <ExternalLink to={helpURL ?? 'https://docs.kima.finance/demo'}>\r\n <div className='menu-button'>I need help</div>\r\n </ExternalLink>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n dispatch(initialize())\r\n closeHandler()\r\n }}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className='kima-card-content' ref={mainRef}>\r\n {isWizard ? (\r\n wizardStep === 0 ? (\r\n <NetworkSelect />\r\n ) : wizardStep === 1 ? (\r\n <div className='connect-wallet-step'>\r\n <p>Connect your wallet</p>\r\n <WalletButton errorBelow={true} />\r\n </div>\r\n ) : wizardStep === 2 ? (\r\n <NetworkSelect isOriginChain={false} />\r\n ) : wizardStep === 3 ? (\r\n <AddressInputWizard />\r\n ) : wizardStep === 4 ? (\r\n <CoinSelect />\r\n ) : (\r\n <ConfirmDetails\r\n isApproved={\r\n sourceChain === ChainName.FIAT ? isSigned : isApproved\r\n }\r\n />\r\n )\r\n ) : formStep === 0 ? (\r\n <SingleForm paymentTitleOption={paymentTitleOption} />\r\n ) : (\r\n <ConfirmDetails\r\n isApproved={sourceChain === ChainName.FIAT ? isSigned : isApproved}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <ExternalLink to={'https://kima.finance'}>\r\n <FooterLogo\r\n fill={theme.colorMode === 'light' ? 'black' : '#C5C5C5'}\r\n />\r\n </ExternalLink>\r\n <div className='button-group'>\r\n <SecondaryButton\r\n clickHandler={() => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n setWizard((prev) => !prev)\r\n }}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n theme={theme.colorMode}\r\n style={{ style: { width: '12em', marginLeft: 'auto' } }}\r\n >\r\n Switch to {isWizard ? 'Form' : 'Wizard'}\r\n </SecondaryButton>\r\n <SecondaryButton\r\n clickHandler={onBack}\r\n theme={theme.colorMode}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n {(isWizard && wizardStep > 0) || (!isWizard && formStep > 0)\r\n ? 'Back'\r\n : 'Cancel'}\r\n </SecondaryButton>\r\n <PrimaryButton\r\n clickHandler={onNext}\r\n isLoading={isApproving || isSubmitting || isSigning}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n {getButtonLabel()}\r\n </PrimaryButton>\r\n </div>\r\n </div>\r\n <SolanaWalletConnectModal />\r\n <TronWalletConnectModal />\r\n <HelpPopup />\r\n {sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT ? (\r\n <BankPopup setVerifying={setVerifying} isVerifying={isVerifying} />\r\n ) : null}\r\n <Toaster\r\n position='top-right'\r\n reverseOrder={false}\r\n containerStyle={{\r\n position: 'absolute'\r\n }}\r\n toastOptions={{\r\n duration: 3 * 1000,\r\n style: {\r\n position: 'relative',\r\n top: windowWidth > 768 ? '3rem' : '1.5rem',\r\n right: windowWidth > 768 ? '1.5rem' : '0rem',\r\n margin: '5px 0',\r\n padding: '.7rem 1.5rem',\r\n color:\r\n theme.colorMode === ColorModeOptions.light ? 'black' : 'white',\r\n fontSize: '1em',\r\n borderRadius: '1em',\r\n border: '1px solid #66aae5',\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? 'white'\r\n : theme.backgroundColorDark ?? '#1b1e25'\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n TransactionOption,\r\n ThemeOptions,\r\n ModeOptions,\r\n TitleOption,\r\n PaymentTitleOption,\r\n DAppOptions,\r\n ColorModeOptions\r\n} from '../interface'\r\n\r\n// store\r\nimport {\r\n setCloseHandler,\r\n setErrorHandler,\r\n setMode,\r\n setTheme,\r\n setTxId,\r\n setSubmitted,\r\n setTransactionOption,\r\n setAmount,\r\n setSuccessHandler,\r\n setBackendUrl,\r\n setNodeProviderQuery,\r\n setTargetChain,\r\n setTargetAddress,\r\n setSourceChain,\r\n setTargetCompliant,\r\n setCompliantOption,\r\n setUseFIAT,\r\n setProvider,\r\n setWalletAutoConnect,\r\n setDappOption,\r\n setSwitchChainHandler,\r\n setUuid,\r\n setKeplrHandler,\r\n setKimaExplorer,\r\n setSelectedToken\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport { selectSubmitted } from '../store/selectors'\r\nimport { TransactionWidget } from './TransactionWidget'\r\nimport { TransferWidget } from './TransferWidget'\r\nimport { ChainName } from '../utils/constants'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { Web3Provider } from '@ethersproject/providers'\r\nimport { useWeb3ModalTheme } from '@web3modal/ethers5/react'\r\nimport toast from 'react-hot-toast'\r\n\r\ninterface Props {\r\n theme: ThemeOptions\r\n mode: ModeOptions\r\n txId?: number\r\n useFIAT?: boolean\r\n defaultToken?: string\r\n autoSwitchChain?: boolean\r\n dAppOption?: DAppOptions\r\n provider?: Web3Provider\r\n titleOption?: TitleOption\r\n compliantOption?: boolean\r\n helpURL?: string\r\n feeURL?: string\r\n transactionOption?: TransactionOption\r\n paymentTitleOption?: PaymentTitleOption\r\n kimaBackendUrl: string\r\n kimaNodeProviderQuery: string\r\n kimaExplorer?: string\r\n errorHandler?: (e: any) => void\r\n closeHandler?: (e: any) => void\r\n successHandler?: (e: any) => void\r\n switchChainHandler?: (chainId: number) => void\r\n keplrHandler?: (e: any) => void\r\n}\r\n\r\n/**\r\n * Returns the average of two numbers.\r\n *\r\n * @remarks\r\n * This method is part of the {@link core-library#Statistics | Statistics subsystem}.\r\n *\r\n * @param x - The first input number\r\n * @param y - The second input number\r\n * @returns The arithmetic mean of `x` and `y`\r\n *\r\n * @beta\r\n */\r\n\r\nexport const KimaTransactionWidget = ({\r\n mode,\r\n txId,\r\n autoSwitchChain = true,\r\n defaultToken = 'USDK',\r\n provider,\r\n dAppOption = DAppOptions.None,\r\n theme,\r\n titleOption,\r\n paymentTitleOption,\r\n useFIAT = false,\r\n helpURL = '',\r\n compliantOption = true,\r\n transactionOption,\r\n kimaBackendUrl,\r\n kimaNodeProviderQuery,\r\n kimaExplorer = 'explorer.kima.finance',\r\n feeURL = 'https://fee.kima.finance',\r\n errorHandler = () => void 0,\r\n closeHandler = () => void 0,\r\n successHandler = () => void 0,\r\n switchChainHandler = () => void 0,\r\n keplrHandler = () => void 0\r\n}: Props) => {\r\n const submitted = useSelector(selectSubmitted)\r\n const dispatch = useDispatch()\r\n const { setThemeMode } = useWeb3ModalTheme()\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n setThemeMode(theme.colorMode === ColorModeOptions.light ? 'light' : 'dark')\r\n\r\n if (transactionOption) dispatch(setTransactionOption(transactionOption))\r\n\r\n dispatch(setKimaExplorer(kimaExplorer))\r\n dispatch(setCompliantOption(compliantOption))\r\n dispatch(setErrorHandler(errorHandler))\r\n dispatch(setKeplrHandler(keplrHandler))\r\n dispatch(setCloseHandler(closeHandler))\r\n dispatch(setSuccessHandler(successHandler))\r\n dispatch(setSwitchChainHandler(switchChainHandler))\r\n dispatch(setBackendUrl(kimaBackendUrl))\r\n dispatch(setNodeProviderQuery(kimaNodeProviderQuery))\r\n dispatch(setMode(mode))\r\n dispatch(setProvider(provider))\r\n dispatch(setDappOption(dAppOption))\r\n dispatch(setWalletAutoConnect(autoSwitchChain))\r\n dispatch(setSelectedToken(defaultToken))\r\n dispatch(setUseFIAT(useFIAT))\r\n if (useFIAT) {\r\n dispatch(setTxId(txId || -1))\r\n ;(async function () {\r\n try {\r\n const uuid = await fetchWrapper.get(`${kimaBackendUrl}/uuid`)\r\n dispatch(setUuid(uuid))\r\n console.log('depasify uuid: ', uuid)\r\n } catch (e) {\r\n console.log('uuid generate failed', e)\r\n }\r\n })()\r\n }\r\n\r\n if (mode === ModeOptions.payment) {\r\n dispatch(\r\n setTargetChain(transactionOption?.targetChain || ChainName.ETHEREUM)\r\n )\r\n\r\n if (\r\n dAppOption === DAppOptions.LPAdd ||\r\n dAppOption === DAppOptions.LPDrain\r\n ) {\r\n dispatch(\r\n setSourceChain(transactionOption?.targetChain || ChainName.ETHEREUM)\r\n )\r\n } else {\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${kimaNodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${\r\n transactionOption?.targetChain || ChainName.ETHEREUM\r\n }`\r\n )\r\n dispatch(setSourceChain(networks.Chains[0]))\r\n } catch (e) {\r\n toast.error('rpc disconnected!')\r\n console.log('rpc disconnected', e)\r\n }\r\n\r\n try {\r\n if (transactionOption?.targetAddress) {\r\n const compliantRes = await fetchWrapper.post(\r\n `${kimaBackendUrl}/compliant`,\r\n JSON.stringify({\r\n address: transactionOption?.targetAddress\r\n })\r\n )\r\n dispatch(setTargetCompliant(compliantRes))\r\n toast.error('xplorisk check failed')\r\n }\r\n } catch (e) {\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }\r\n dispatch(setTargetAddress(transactionOption?.targetAddress || ''))\r\n dispatch(setAmount(transactionOption?.amount || 0))\r\n } else if (mode === ModeOptions.status) {\r\n dispatch(setTxId(txId || 1))\r\n dispatch(setSubmitted(true))\r\n }\r\n }, [provider, theme, transactionOption, errorHandler, closeHandler, mode])\r\n\r\n useEffect(() => {\r\n if (dAppOption === DAppOptions.None && mode === ModeOptions.bridge) {\r\n dispatch(setTargetChain(''))\r\n dispatch(setSourceChain('ETH'))\r\n }\r\n }, [dAppOption, mode])\r\n\r\n return submitted ? (\r\n <TransactionWidget theme={theme} />\r\n ) : (\r\n <TransferWidget\r\n theme={theme}\r\n feeURL={feeURL}\r\n helpURL={helpURL}\r\n titleOption={titleOption}\r\n paymentTitleOption={paymentTitleOption}\r\n />\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport { store } from './store'\r\nimport { Provider } from 'react-redux'\r\n\r\nimport * as SolanaAdapter from '@solana/wallet-adapter-react'\r\nimport {\r\n PhantomWalletAdapter,\r\n SolflareWalletAdapter,\r\n CloverWalletAdapter,\r\n Coin98WalletAdapter,\r\n SolongWalletAdapter,\r\n TorusWalletAdapter\r\n} from '@solana/wallet-adapter-wallets'\r\nimport { LedgerAdapter } from '@tronweb3/tronwallet-adapter-ledger'\r\nimport { TronLinkAdapter } from '@tronweb3/tronwallet-adapter-tronlink'\r\nimport { OkxWalletAdapter } from '@tronweb3/tronwallet-adapter-okxwallet'\r\nimport { TokenPocketAdapter } from '@tronweb3/tronwallet-adapter-tokenpocket'\r\nimport { WalletProvider as TronWalletProvider } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport {\r\n WalletDisconnectedError,\r\n WalletError,\r\n WalletNotFoundError\r\n} from '@tronweb3/tronwallet-abstract-adapter'\r\nimport { toast } from 'react-hot-toast'\r\nimport { SOLANA_HOST } from './utils/constants'\r\nimport { createWeb3Modal, defaultConfig } from '@web3modal/ethers5/react'\r\n\r\nconst { ConnectionProvider, WalletProvider: SolanaWalletProvider } =\r\n SolanaAdapter\r\n\r\nexport {\r\n FontSizeOptions,\r\n ColorModeOptions,\r\n ThemeOptions,\r\n SupportNetworks,\r\n CurrencyOptions,\r\n ModeOptions,\r\n DAppOptions,\r\n CHAIN_STRING_TO_NAME,\r\n CHAIN_NAMES_TO_STRING\r\n} from './interface'\r\nexport { KimaTransactionWidget } from './components/KimaTransactionWidget'\r\n\r\n// 1. Get projectId\r\nconst projectId = '90c9315fb25e62e202ce09985f70bcf3'\r\n\r\n// 2. Set chains\r\nconst ethereum = {\r\n chainId: 11155111,\r\n name: 'Ethereum Sepolia',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia.etherscan.io',\r\n rpcUrl: 'https://ethereum-sepolia-rpc.publicnode.com'\r\n}\r\n\r\nconst bsc = {\r\n chainId: 97,\r\n name: 'BNB Smart Chain Testnet',\r\n currency: 'tBNB',\r\n explorerUrl: 'https://testnet.bscscan.com',\r\n rpcUrl: 'https://endpoints.omniatech.io/v1/bsc/testnet/public'\r\n}\r\n\r\nconst polygon = {\r\n chainId: 80002,\r\n name: 'Amoy',\r\n currency: 'MATIC',\r\n explorerUrl: 'https://www.oklink.com/amoy',\r\n rpcUrl: 'https://rpc-amoy.polygon.technology'\r\n}\r\n\r\nconst arbitrum = {\r\n chainId: 421614,\r\n name: 'Arbitrum Sepolia Testnet',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia.arbiscan.io/',\r\n rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc'\r\n}\r\n\r\nconst optimism = {\r\n chainId: 11155420,\r\n name: 'OP Sepolia',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia-optimism.etherscan.io',\r\n rpcUrl: 'https://sepolia.optimism.io'\r\n}\r\n\r\nconst avalanche = {\r\n chainId: 43113,\r\n name: 'Avalanche Fuji Testnet',\r\n currency: 'AVAX',\r\n explorerUrl: 'https://testnet.snowtrace.io',\r\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc'\r\n}\r\n\r\nconst zkEVM = {\r\n chainId: 2442,\r\n name: 'Polygon zkEVM Cardona Testnet',\r\n currency: 'ETH',\r\n explorerUrl: 'https://cardona-zkevm.polygonscan.com',\r\n rpcUrl: 'https://polygon-zkevm-cardona.blockpi.network/v1/rpc/public'\r\n}\r\n\r\n// 3. Create modal\r\nconst metadata = {\r\n name: 'Kima Transaction Widget',\r\n description: 'Frontend widget for Kima integration for dApps',\r\n url: 'https://kima.finance',\r\n icons: ['https://avatars.githubusercontent.com/u/37784886']\r\n}\r\n\r\ncreateWeb3Modal({\r\n ethersConfig: defaultConfig({ metadata }),\r\n chains: [ethereum, bsc, polygon, arbitrum, optimism, avalanche, zkEVM],\r\n projectId,\r\n enableAnalytics: false,\r\n featuredWalletIds: [\r\n 'c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96',\r\n 'a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393',\r\n '4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0'\r\n ]\r\n})\r\n\r\nexport const KimaProvider = ({ children }: any) => {\r\n const wallets = [\r\n new PhantomWalletAdapter(),\r\n new SolflareWalletAdapter(),\r\n new CloverWalletAdapter(),\r\n new Coin98WalletAdapter(),\r\n new SolongWalletAdapter(),\r\n new TorusWalletAdapter()\r\n ]\r\n\r\n const adapters = useMemo(function () {\r\n const tronLinkAdapter = new TronLinkAdapter()\r\n const ledger = new LedgerAdapter({\r\n accountNumber: 2\r\n })\r\n const tokenPocketAdapter = new TokenPocketAdapter()\r\n const okxwalletAdapter = new OkxWalletAdapter()\r\n\r\n return [tronLinkAdapter, tokenPocketAdapter, okxwalletAdapter, ledger]\r\n }, [])\r\n\r\n function onError(e: WalletError) {\r\n if (e instanceof WalletNotFoundError) {\r\n toast.error(e.message)\r\n } else if (e instanceof WalletDisconnectedError) {\r\n toast.error(e.message)\r\n } else toast.error(e.message)\r\n }\r\n\r\n const onChainChanged = (chainData: any) => {\r\n toast.error('Please switch to Tron Nile Testnet!')\r\n if (chainData.chainId !== '0xcd8690dc') {\r\n adapters[0].switchChain('0xcd8690dc')\r\n }\r\n }\r\n\r\n return (\r\n <Provider store={store}>\r\n <ConnectionProvider endpoint={SOLANA_HOST}>\r\n <SolanaWalletProvider wallets={wallets}>\r\n <TronWalletProvider\r\n onError={onError}\r\n autoConnect={false}\r\n disableAutoConnectOnLoad={true}\r\n adapters={adapters}\r\n onChainChanged={onChainChanged}\r\n >\r\n {children}\r\n </TronWalletProvider>\r\n </SolanaWalletProvider>\r\n </ConnectionProvider>\r\n </Provider>\r\n )\r\n}\r\n"],"names":["Cross","_ref","width","_ref$width","_ref$height","height","_ref$fill","fill","rest","_objectWithoutPropertiesLoose","_excluded","React","viewBox","xmlns","d","Minimize","FooterLogo","Check","Warning","ArrowRight","Arrow","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Ethereum","x","y","id","patternContentUnits","href","transform","Solana","style","maskType","maskUnits","cx","cy","r","mask","clipPath","Avalanche","Arbitrum","Optimism","version","preserveAspectRatio","USDT","Copy","xmlSpace","Bank","strokeDasharray","strokeMiterlimit","fillRule","opacity","BNB","KEUR","Celo","ETHEREUM_KEUR_ADDRESS","POLYGON_KEUR_ADDRESS","TRON_USDK_OWNER_ADDRESS","ChainName","SupportedChainId","CHAIN_NAMES_TO_IDS","_CHAIN_NAMES_TO_IDS","ETHEREUM","POLYGON","AVALANCHE","BSC","OPTIMISM","ARBITRUM","POLYGON_ZKEVM","POLYGON_ZKEM","CHAIN_NAMES_TO_STRING","_CHAIN_NAMES_TO_STRIN","SOLANA","TRON","FIAT","CHAIN_STRING_TO_NAME","_CHAIN_STRING_TO_NAME","CHAIN_NAMES_TO_EXPLORER","_CHAIN_NAMES_TO_EXPLO","CHAIN_NAMES_TO_GECKO_ID","_CHAIN_NAMES_TO_GECKO","CHAIN_IDS_TO_NAMES","_CHAIN_IDS_TO_NAMES","networkOptions","label","icon","ArbitrumIcon","AvalancheIcon","BSCIcon","EthereumIcon","BankIcon","OptimismIcon","PolygonIcon","SolanaIcon","TronIcon","getNetworkOption","index","findIndex","item","CLUSTER","SOLANA_HOST","clusterApiUrl","isEVMChain","chainId","COIN_LIST","USDK","symbol","USDTIcon","KEURICON","address","ETH","POL","TransactionStatus","FontSizeOptions","ModeOptions","CurrencyOptions","ColorModeOptions","DAppOptions","createSlice","toolkitRaw","initialState","theme","tokenOptions","kimaExplorerUrl","mode","bridge","sourceChain","targetChain","targetAddress","solanaConnectModal","tronConnectModal","helpPopup","hashPopup","bankPopup","walletAutoConnect","provider","undefined","dAppOption","None","solanaProvider","submitted","amount","feeDeduct","errorHandler","closeHandler","successHandler","switchChainHandler","keplrHandler","initChainFromProvider","serviceFee","backendUrl","nodeProviderQuery","txId","selectedToken","avilableTokenList","compliantOption","sourceCompliant","targetCompliant","useFIAT","bankDetails","iban","recipient","targetNetworkFetching","signature","uuid","kycStatus","optionSlice","name","reducers","initialize","state","setTokenOptions","action","payload","setTheme","setKimaExplorer","setSourceChain","setTargetChain","setTargetAddress","setSolanaConnectModal","setTronConnectModal","setHelpPopup","setHashPopup","setBankPopup","setProvider","setDappOption","setWalletAutoConnect","setSolanaProvider","setSubmitted","setTransactionOption","transactionOption","setAmount","setErrorHandler","setKeplrHandler","setCloseHandler","setSwitchChainHandler","setInitChainFromProvider","setSuccessHandler","setServiceFee","setMode","setFeeDeduct","setBackendUrl","setNodeProviderQuery","setTxId","setSelectedToken","setAvailableTokenList","setCompliantOption","setSourceCompliant","setTargetCompliant","setUseFIAT","setBankDetails","setTargetChainFetching","setSignature","setUuid","setKYCStatus","_optionSlice$actions","actions","reducer","configureStore","store","option","optionReducer","middleware","getDefaultMiddleware","serializableCheck","selectTokenOptions","selectTheme","selectKimaExplorer","selectSourceChain","selectTargetChain","selectTargetAddress","selectSolanaConnectModal","selectTronConnectModal","selectHelpPopup","selectHashPopup","selectBankPopup","selectSolanaProvider","selectDappOption","selectWalletAutoConnect","selectSubmitted","selectTransactionOption","selectAmount","selectErrorHandler","selectKeplrHandler","selectCloseHandler","selectSuccessHandler","selectServiceFee","selectMode","selectFeeDeduct","selectBackendUrl","selectNodeProviderQuery","selectTxId","selectSelectedToken","selectAvailableTokenList","selectCompliantOption","selectSourceCompliant","selectTargetCompliant","selectUseFIAT","selectBankDetails","selectTargetChainFetching","selectSignature","selectUuid","selectKycStatus","Loading180Ring","attributeName","type","dur","values","repeatCount","stepInfo","title","Progressbar","step","errorStep","setFocus","loadingStep","useSelector","className","map","key","onClick","colorMode","WarningIcon","CheckIcon","ExternalLink","to","children","target","rel","NetworkLabel","hasError","SourceInfo","TargetInfo","ArrowRightIcon","PrimaryButton","clickHandler","_ref$isLoading","isLoading","_ref$disabled","disabled","ref","SecondaryButton","fetchWrapper","get","post","url","requestOptions","method","headers","fetch","then","handleResponse","body","credentials","response","text","data","JSON","parse","error","ok","statusText","Promise","reject","status","useNetworkOptions","dispatch","useDispatch","_useState","useState","options","setOptions","useEffect","resolve","networks","filter","network","Chain","chain","_iterator","_createForOfIteratorHelperLoose","_step","done","value","_iterator2","tokens","_step2","token","e","console","log","toast","_temp","useMemo","Network","isOriginChain","_ref$isOriginChain","sourceChangeRef","useRef","originNetwork","targetNetwork","sliderRef","availableNetworks","setAvailableNetworks","_useNetworkOptions","selectedNetwork","Chains","current","isDown","startX","scrollLeft","_sliderRef$current","addEventListener","_sliderRef$current2","classList","add","pageX","_sliderRef$current3","offsetLeft","_sliderRef$current4","_sliderRef$current5","remove","_sliderRef$current6","_sliderRef$current7","preventDefault","walk","slideLeft","temp","timerId","setInterval","clearInterval","slideRight","ArrowIcon","SolanaWalletSelect","selectedProvider","_useWallet","useWallet","wallets","_useMemo","detected","undetected","wallet","readyState","WalletReadyState","Installed","Loadable","push","NotDetected","adapter","src","alt","WalletSelect","AdapterState","Connected","Disconnect","Loading","NotFound","createWalletStatus","isReady","statusMessage","forceNetworkSwitch","walletAddress","useIsWalletReady","autoSwitch","_useSolanaWallet","useSolanaWallet","solanaAddress","publicKey","_useTronWallet","useTronWallet","tronAddress","_useWeb3ModalProvider","useWeb3ModalProvider","evmProvider","walletProvider","_useSwitchNetwork","useSwitchNetwork","switchNetwork","web3ModalAccountInfo","useWeb3ModalAccount","isConnected","evmAddress","evmChainId","correctChain","hasEthInfo","correctEvmNetwork","hasCorrectEvmNetwork","events","useWeb3ModalEvents","_events$data","event","_events$data2","_events$data3","_events$data3$propert","localStorage","setItem","properties","useCallback","_catch","getItem","toBase58","success","getShortenedAddress","is0x","addr","startsWith","substring","substr","length","connectWalletBtn","createAssociatedTokenAccountInstruction","payer","associatedToken","owner","mint","programId","associatedTokenProgramId","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","keys","pubkey","isSigner","isWritable","SystemProgram","SYSVAR_RENT_PUBKEY","TransactionInstruction","Buffer","alloc","getAccountInfo","connection","commitment","info","Error","equals","AccountLayout","span","rawAccount","decode","from","delegate","delegateOption","delegatedAmount","isInitialized","AccountState","Uninitialized","isFrozen","Frozen","isNative","isNativeOption","rentExemptReserve","closeAuthority","closeAuthorityOption","getAssociatedTokenAddress","allowOwnerOffCurve","PublicKey","isOnCurve","toBuffer","findProgramAddress","getOrCreateAssociatedTokenAccount","signTransaction","_exit","_temp4","_result","account","_temp3","_getAccountInfo","err","message","_temp2","_getAccountInfo2","transaction","Transaction","getRecentBlockhash","blockHash","_payer","feePayer","blockhash","_blockHash$blockhash","recentBlockhash","signed","sendRawTransaction","serialize","confirmTransaction","tronWeb","TronWeb","fullHost","setAddress","formatterFloat","Intl","NumberFormat","maximumFractionDigits","isEmptyObject","arg","Object","useBalance","balance","setBalance","signerAddress","_useConnection","useConnection","selectedCoin","tokenAddress","coinOptions","_result3","ethers","providers","Web3Provider","signer","getSigner","erc20Contract","Contract","ERC20ABI","abi","decimals","balanceOf","userBalance","formatUnits","contract","trc20Contract","call","fromTokenAccount","getParsedAccountInfo","accountInfo","_accountInfo$value","_parsedAccountInfo$pa","_parsedAccountInfo$pa2","_parsedAccountInfo$pa3","_parsedAccountInfo$pa4","_parsedAccountInfo$pa5","_parsedAccountInfo$pa6","parsedAccountInfo","parsed","tokenAmount","WalletButton","errorBelow","_ref$errorBelow","_useIsWalletReady","_useBalance","_useWeb3Modal","useWeb3Modal","open","handleClick","errorMessage","format","CoinDropdown","collapsed","setCollapsed","tokenList","Icon","bodyMouseDowntHandler","contains","document","removeEventListener","prev","CoinIcon","NetworkDropdown","memo","_useState2","autoSwitchChain","chains","payment","LPAdd","LPDrain","ConfirmDetails","isApproved","originNetworkOption","targetNetworkOption","sourceWalletAddress","targetWalletAddress","AddressInput","onChange","CustomCheckbox","checked","setCheck","CopyButton","copyClicked","setCopyClicked","setTimeout","navigator","clipboard","writeText","CopyIcon","StepBox","explorerUrl","kimaTxHash","tssPullHash","tssReleaseHash","BankInput","_extends","HelpPopup","CrossIcon","HashPopup","SolanaWalletConnectModal","connectModal","select","connect","handleConnect","justifyContent","marginTop","TronWalletConnectModal","TronWalletSelect","BankPopup","setVerifying","isVerifying","kimaBackendUrl","stringify","res","kycResult","frameBorder","allow","TransactionWidget","setStep","focus","_useState3","setErrorStep","_useState4","setErrorMessage","_useState5","setLoadingStep","_useState6","minimized","setMinimized","_useState7","percent","setPercent","_useState8","setData","isLP","failReason","originChain","COMPLETED","result","_fetchWrapper$get","_result2","LiquidityTransactionData","_fetchWrapper$get2","transactionData","AVAILABLE","CONFIRMED","UNAVAILABLE","KEYSIGNED","PAID","FAILEDTOPAY","FAILEDTOPULL","Provider","fontSize","fontFamily","background","light","backgroundColorLight","backgroundColorDark","MinimizeIcon","Toaster","position","reverseOrder","containerStyle","toastOptions","duration","top","right","margin","padding","color","borderRadius","border","Tooltip","content","zIndex","SingleForm","paymentTitleOption","sourceNetwork","_amount","parseFloat","toFixed","CoinSelect","readOnly","useServiceFee","isConfirming","feeURL","amount_","targetAddress_","getServiceFee","sourceChainResult","sourceFee","fee","split","targetChainResult","targetFee","this","TokenInstruction","createApproveTransferInstruction","source","destination","multiSigners","dataLayout","BufferLayout","struct","u8","blob","addSigners","encode","instruction","Approve","TokenAmount","ownerOrAuthority","_BN","_inheritsLoose","apply","arguments","_proto","prototype","a","toArray","reverse","b","zeroPad","copy","BN","byte2hexStr","byte","hexByteMap","str","charAt","byteArray2hexStr","byteArray","i","isHexChar","c","hexChar2byte","charCodeAt","hexStr2byteArray","strict","len","j","k","ALPHABET","BASE","encode58","buffer","digits","carry","digit","join","ADDRESS_PREFIX","isHex","string","isNaN","parseInt","test","SHA256","msgBytes","msgHex","hashHex","ethersUtils","sha256","replace","getBase58CheckAddress","addressBytes","hash0","hash1","checkSum","slice","concat","fromHex","sleep","delay","useAllowance","setApproving","allowance","setAllowance","setDecimals","_ref2","signSolanaTransaction","signTronTransaction","updatePoolAddress","_result$tssPubkey","tssPubkey","eddsa","ecdsa","_temp5","userAllowance","_parsedAccountInfo$pa7","_parsedAccountInfo$pa8","uiAmount","_temp6","approve","_temp13","toPublicKey","Math","pow","getLatestBlockhash","_temp12","allowAmount","retryCount","_temp11","_do","_connection$getParsed","_accountInfo","_accountInfo$value2","_parsedAccountInfo$pa9","_parsedAccountInfo$pa10","_parsedAccountInfo$pa11","_parsedAccountInfo$pa12","_parsedAccountInfo$pa13","_temp14","_temp10","_exit3","_temp9","functionSelector","parameter","parseUnits","toString","transactionBuilder","triggerSmartContract","toHex","tx","signedTx","trx","_temp15","_exit2","_temp16","_temp8","_temp7","wait","_temp17","AddressInputWizard","useCurrencyOptions","coins","_coins$Currencies","Currencies","useWidth","window","innerWidth","setWidth","handleResize","useSign","setSigning","isSigned","setIsSigned","sign","signMessage","hash","Base64","TransferWidget","helpURL","titleOption","mainRef","isWizard","setWizard","formStep","setFormStep","wizardStep","setWizardStep","_useCurrencyOptions","isApproving","isSubmitting","setSubmitting","isSigning","setConfirming","_useAllowance","_useSign","_useServiceFee","windowWidth","poolsTable","poolBalance","pool","chainName","tokenSymbol","table","checkPoolBalance","errorString","handleSubmit","_checkPoolBalance","params","originAddress","code","_iterator3","_step3","_iterator4","attributes","_step4","attr","onNext","_mainRef$current","click","onBack","getButtonLabel","confirmTitle","initialTitle","NetworkSelect","marginLeft","_theme$backgroundColo","KimaTransactionWidget","_ref$autoSwitchChain","_ref$defaultToken","defaultToken","_ref$dAppOption","_ref$useFIAT","_ref$helpURL","_ref$compliantOption","kimaNodeProviderQuery","_ref$kimaExplorer","kimaExplorer","_ref$feeURL","_ref$errorHandler","_ref$closeHandler","_ref$successHandler","_ref$switchChainHandl","_ref$keplrHandler","_useWeb3ModalTheme","useWeb3ModalTheme","setThemeMode","compliantRes","ConnectionProvider","SolanaAdapter","SolanaWalletProvider","projectId","ethereum","currency","rpcUrl","bsc","polygon","arbitrum","optimism","avalanche","zkEVM","metadata","description","icons","createWeb3Modal","ethersConfig","defaultConfig","enableAnalytics","featuredWalletIds","KimaProvider","PhantomWalletAdapter","SolflareWalletAdapter","CloverWalletAdapter","Coin98WalletAdapter","SolongWalletAdapter","TorusWalletAdapter","adapters","tronLinkAdapter","TronLinkAdapter","ledger","LedgerAdapter","accountNumber","tokenPocketAdapter","TokenPocketAdapter","okxwalletAdapter","OkxWalletAdapter","onError","WalletNotFoundError","WalletDisconnectedError","onChainChanged","chainData","switchChain","endpoint","TronWalletProvider","autoConnect","disableAutoConnectOnLoad"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,KAAK,GAAG,SAARA,KAAKA,CAAAC,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,SAAA;EAC/D,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,2JAA2J;IAC7JP,IAAI,EAAEA;IACN,CACE;AAEV,CAAC;;;ACjBD,AAEA,IAAMQ,QAAQ,GAAG,SAAXA,QAAQA,CAAAd,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACjE,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,UAAU;IAClBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAMT,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,GAAG;IAACE,IAAI,EAAEA;IAAQ,CACtC;AAEV,CAAC;;;ACdD,AAEA,IAAMS,UAAU,GAAG,SAAbA,UAAUA,CAAAf,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,SAAS,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACtE,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,YAAY;IACpBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,k4FAAk4F;IACp4FP,IAAI,EAAEA;IACN,EACFI;IACEG,CAAC,EAAC,+aAA+a;IACjbP,IAAI,EAAEA;IACN,EACFI;IACEG,CAAC,EAAC,ixBAAixB;IACnxBP,IAAI,EAAEA;IACN,EACFI;IACEG,CAAC,EAAC,6gDAA6gD;IAC/gDP,IAAI,EAAEA;IACN,EACFI;IACEG,CAAC,EAAC,wmLAAwmL;IAC1mLP,IAAI,EAAEA;IACN,CACE;AAEV,CAAC;;;ACjCD,AAEA,IAAMU,KAAK,GAAG,SAARA,KAAKA,CAAAhB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,SAAS,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACjE,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,6hCAA6hC;IAC/hCP,IAAI,EAAEA;IACN,CACE;AAEV,CAAC;;;ACjBD,AAEA,IAAMW,OAAO,GAAG,SAAVA,OAAOA,CAAAjB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACjD,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,smDAAsmD;IACxmDP,IAAI,EAAC;IACL,CACE;AAEV,CAAC;;;ACjBD,AAEA,IAAMY,UAAU,GAAG,SAAbA,UAAUA,CAAAlB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACnE,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,UAAU;IAClBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,+UAA+U;IACjVP,IAAI,EAAEA;IACN,CACE;AAEV,CAAC;;;ACjBD,AAEA,IAAMa,KAAK,GAAG,SAARA,KAAKA,CAAAnB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC/D,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC,4BAA4B;IAClCN,IAAI,EAAC;KACDC,IAAI,GAERG;IACEG,CAAC,EAAC,oBAAoB;IACtBO,MAAM,EAAEd,IAAI;IACZe,WAAW,EAAC,GAAG;IACfC,aAAa,EAAC,OAAO;IACrBC,cAAc,EAAC;IACf,CACE;AAEV,CAAC;;;ACrBD,AAEA,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAAxB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAClD,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAMe,CAAC,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACzB,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAACE,IAAI,EAAC;IAAmB,EACjEI,2CACEA;IACEiB,EAAE,EAAC,UAAU;IACbC,mBAAmB,EAAC,mBAAmB;IACvC3B,KAAK,EAAC,GAAG;IACTG,MAAM,EAAC;KAEPM;IAAKmB,IAAI,EAAC,kBAAkB;IAACC,SAAS,EAAC;IAAsB,CACrD,EACVpB;IACEiB,EAAE,EAAC,iBAAiB;IACpB1B,KAAK,EAAC,KAAK;IACXG,MAAM,EAAC,KAAK;IACZyB,IAAI,EAAC;IACL,CACG,CACH;AAEV,CAAC;;;AC9BD,AAEA,IAAME,MAAM,GAAG,SAATA,MAAMA,CAAA/B,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAChD,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEG,CAAC,EAAC,gFAAgF;IAClFP,IAAI,EAAC;IACL,EACFI;IAAMG,CAAC,EAAC,+CAA+C;IAACP,IAAI,EAAC;IAAY,EACzEI;IACEG,CAAC,EAAC,0FAA0F;IAC5FP,IAAI,EAAC;IACL,EACFI;IACEG,CAAC,EAAC,mDAAmD;IACrDP,IAAI,EAAC;IACL,EACFI;IACEG,CAAC,EAAC,0DAA0D;IAC5DP,IAAI,EAAC;IACL,EACFI;IAAMG,CAAC,EAAC,8CAA8C;IAACP,IAAI,EAAC;IAAY,EACxEI;IAAMT,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAACE,IAAI,EAAC;IAAmB,EACrDI,2CACEA;IACEiB,EAAE,EAAC,UAAU;IACbC,mBAAmB,EAAC,mBAAmB;IACvC3B,KAAK,EAAC,GAAG;IACTG,MAAM,EAAC;KAEPM;IAAKmB,IAAI,EAAC,eAAe;IAACC,SAAS,EAAC;IAAsB,CAClD,EACVpB;IACEiB,EAAE,EAAC,cAAc;IACjB1B,KAAK,EAAC,KAAK;IACXG,MAAM,EAAC,KAAK;IACZyB,IAAI,EAAC;IACL,CACG,CACH;AAEV,CAAC;;;AChDD,AAEA,IAAML,UAAQ,GAAG,SAAXA,QAAQA,CAAAxB,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAClD,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IACEiB,EAAE,EAAC,eAAe;IAClBK,KAAK,EAAE;MAAEC,QAAQ,EAAE;KAAS;IAC5BC,SAAS,EAAC,gBAAgB;IAC1BT,CAAC,EAAC,GAAG;IACLC,CAAC,EAAC,GAAG;IACLzB,KAAK,EAAC,IAAI;IACVG,MAAM,EAAC;KAEPM;IAAQyB,EAAE,EAAC,SAAS;IAACC,EAAE,EAAC,SAAS;IAACC,CAAC,EAAC,SAAS;IAAC/B,IAAI,EAAC;IAAY,CAC1D,EACPI;IAAG4B,IAAI,EAAC;IAA0B,EAClC5B;IAAG6B,QAAQ,EAAC;KACV7B;IACEG,CAAC,EAAC,+GAA+G;IACjHP,IAAI,EAAC;IACL,EACFI;IACEG,CAAC,EAAC,g0CAAg0C;IACl0CP,IAAI,EAAC;IACL,CACA,EACJI,2CACEA;IAAUiB,EAAE,EAAC;KACXjB;IAAMT,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAACE,IAAI,EAAC;IAAU,CACnC,CACN,CACH;AAEV,CAAC;;;ACxCD,AAEA,IAAMkC,SAAS,GAAG,SAAZA,SAASA,CAAAxC,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EACnD,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAMe,CAAC,EAAC,GAAG;IAACC,CAAC,EAAC,GAAG;IAACzB,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAACE,IAAI,EAAC;IAAmB,EACjEI,2CACEA;IACEiB,EAAE,EAAC,UAAU;IACbC,mBAAmB,EAAC,mBAAmB;IACvC3B,KAAK,EAAC,GAAG;IACTG,MAAM,EAAC;KAEPM;IAAKmB,IAAI,EAAC,iBAAiB;IAACC,SAAS,EAAC;IAAsB,CACpD,EACVpB;IACEiB,EAAE,EAAC,gBAAgB;IACnB1B,KAAK,EAAC,KAAK;IACXG,MAAM,EAAC,KAAK;IACZyB,IAAI,EAAC;IACL,CACG,CACH;AAEV,CAAC;;;AC9BD,AAEA,IAAMY,QAAQ,GAAG,SAAXA,QAAQA,CAAAzC,IAAA;MAAkCO,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAClD,OACEC;IACEE,KAAK,EAAC,4BAA4B;IAClCX,KAAK,EAAC,SAAS;IACfG,MAAM,EAAC,QAAQ;IACfO,OAAO,EAAC;KAERD;IAAGiB,EAAE,EAAC,QAAQ;IAACG,SAAS,EAAC;KAAkCvB,IAAI,GAC7DG;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,mhBAAmhB;IACrhBiB,SAAS,EAAC,4BAA4B;IACtCxB,IAAI,EAAC;IACL,EACFI;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,4DAA4D;IAC9DiB,SAAS,EAAC,4BAA4B;IACtCxB,IAAI,EAAC;IACL,EACFI;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,yGAAyG;IAC3GiB,SAAS,EAAC,6BAA6B;IACvCxB,IAAI,EAAC;IACL,EACFI;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,0HAA0H;IAC5HiB,SAAS,EAAC,sBAAsB;IAChCxB,IAAI,EAAC;IACL,EACFI;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,qEAAqE;IACvEiB,SAAS,EAAC,4BAA4B;IACtCxB,IAAI,EAAC;IACL,EACFI;IACEiB,EAAE,EAAC,UAAU;iBACH,UAAU;IACpBd,CAAC,EAAC,8oBAA8oB;IAChpBiB,SAAS,EAAC,mBAAmB;IAC7BxB,IAAI,EAAC;IACL,CACA,CACA;AAEV,CAAC;;;ACxDD,AAEA,IAAMoC,QAAQ,GAAG,SAAXA,QAAQA,CAAA1C,IAAA;MAAkCO,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAClD,OACEC;IAAKiC,OAAO,EAAC,KAAK;IAAC/B,KAAK,EAAC,4BAA4B;IACrDX,KAAK,EAAC,aAAa;IAACG,MAAM,EAAC,aAAa;IAACO,OAAO,EAAC,yBAAyB;IAC1EiC,mBAAmB,EAAC;KAAoBrC,IAAI,GAE5CG;IAAGoB,SAAS,EAAC,yDAAyD;IACtExB,IAAI,EAAC,SAAS;IAACc,MAAM,EAAC;KACtBV;IAAMG,CAAC,EAAC;IAKiD,EACzDH;IAAMG,CAAC,EAAC;IACF,EACNH;IAAMG,CAAC,EAAC;IAAoE,CACxE,CACE;AAEV,CAAC;;;ACtBD,AAEA,IAAMgC,IAAI,GAAG,SAAPA,IAAIA,CAAA7C,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC9C,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAMT,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAACE,IAAI,EAAC;IAAmB,EACrDI,2CACEA;IACEiB,EAAE,EAAC,UAAU;IACbC,mBAAmB,EAAC,mBAAmB;IACvC3B,KAAK,EAAC,GAAG;IACTG,MAAM,EAAC;KAEPM;IAAKmB,IAAI,EAAC,iBAAiB;IAACC,SAAS,EAAC;IAAsB,CACpD,EACVpB;IACEiB,EAAE,EAAC,gBAAgB;IACnB1B,KAAK,EAAC,KAAK;IACXG,MAAM,EAAC,KAAK;IACZyB,IAAI,EAAC;IACL,CACG,CACH;AAEV,CAAC;;;AC9BD,AAEA,IAAMiB,IAAI,GAAG,SAAPA,IAAIA,CAAA9C,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CAAEM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,SAAS,GAAAA,SAAA;IAAKE,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAChE,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,aAAa;IACrBoC,QAAQ,EAAC,UAAU;IACnBnC,KAAK,EAAC,4BAA4B;IAClCN,IAAI,EAAEA;KACFC,IAAI,GAERG,wCACEA;IACEG,CAAC,EAAC;IAGF,EACFH;IAAMG,CAAC,EAAC;IAAmG,EAC3GH;IAAMG,CAAC,EAAC;IAAuG,EAC/GH;IACEG,CAAC,EAAC;IAEF,CACA,CACA;AAEV,CAAC;;;AC5BD,AAEA,IAAMmC,IAAI,GAAG,SAAPA,IAAIA,CAAAhD,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC9C,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,aAAa;IACrBC,KAAK,EAAC;KACFL,IAAI,GAERG,0CACO,EACPA;IAAGsB,KAAK,EAAE;MACRZ,MAAM,EAAE,MAAM;MACdC,WAAW,EAAE,CAAC;MACd4B,eAAe,EAAE,MAAM;MACvB3B,aAAa,EAAE,MAAM;MACrBC,cAAc,EAAE,OAAO;MAAE2B,gBAAgB,EAAE,EAAE;MAAE5C,IAAI,EAAE,MAAM;MAAE6C,QAAQ,EAAE,SAAS;MAAEC,OAAO,EAAE;KAC5F;IAAEtB,SAAS,EAAC;KAEXpB;IAAMG,CAAC,EAAC,48BAA48B;IACl9BmB,KAAK,EAAE;MAAEZ,MAAM,EAAE,MAAM;MAAEC,WAAW,EAAE,CAAC;MAAE4B,eAAe,EAAE,MAAM;MAAE3B,aAAa,EAAE,MAAM;MAAEC,cAAc,EAAE,OAAO;MAAE2B,gBAAgB,EAAE,EAAE;MAAE5C,IAAI,EAAE,YAAY;MAAE6C,QAAQ,EAAE,SAAS;MAAEC,OAAO,EAAE;KAAI;IAAEtB,SAAS,EAAC,uBAAuB;IAACR,aAAa,EAAC;IAAU,CAC1P,CACA;AAEV,CAAC;;;AC1BD,AAEA,IAAM+B,GAAG,GAAG,SAANA,GAAGA,CAAArD,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC7C,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG,2CACEA;IAAUiB,EAAE,EAAC;KACXjB;IAAMiB,EAAE,EAAC,cAAc;iBAAW,cAAc;IAAC1B,KAAK,EAAC,IAAI;IAACG,MAAM,EAAC,IAAI;IAAC0B,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,CACxH,CACN,EACPI;IAAGiB,EAAE,EAAC,KAAK;IAACG,SAAS,EAAC;KACpBpB;IAAGiB,EAAE,EAAC,OAAO;iBAAW,KAAK;IAACG,SAAS,EAAC,2BAA2B;IAACS,QAAQ,EAAC;KAC3E7B;IAAGiB,EAAE,EAAC,eAAe;IAACG,SAAS,EAAC;KAC9BpB;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,qzCAAqzC;IAACP,IAAI,EAAC;IAAY,EACh3CI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,uaAAua;IAACiB,SAAS,EAAC,4BAA4B;IAACxB,IAAI,EAAC;IAAY,EACzgBI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,0GAA0G;IAACiB,SAAS,EAAC,4BAA4B;IAACxB,IAAI,EAAC;IAAY,EAC5MI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,2GAA2G;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EAC9MI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,kPAAkP;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EACrVI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,2DAA2D;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EAC9JI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,gNAAgN;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EACnTI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,sFAAsF;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EACzLI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,4GAA4G;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EAC/MI;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,iCAAiC;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,EACpII;IAAMiB,EAAE,EAAC,SAAS;iBAAW,SAAS;IAACd,CAAC,EAAC,oFAAoF;IAACiB,SAAS,EAAC,6BAA6B;IAACxB,IAAI,EAAC;IAAY,CACrL,CACF,CACF,CACA;AAEV,CAAC;;;ACnCD,AAEA,IAAMgD,IAAI,GAAG,SAAPA,IAAIA,CAAAtD,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC9C,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAGJ,IAAI,EAAC,MAAM;IAAC6C,QAAQ,EAAC;KACtBzC;IAAQyB,EAAE,EAAC,IAAI;IAACC,EAAE,EAAC,IAAI;IAAC9B,IAAI,EAAC,SAAS;IAAC+B,CAAC,EAAC;IAAO,EAChD3B;IACEG,CAAC,EAAC,0dAA0d;IAC5dP,IAAI,EAAC;IACL,CACA,CACA;AAEV,CAAC;;;ACpBD,AAEA,IAAMiD,IAAI,GAAG,SAAPA,IAAIA,CAAAvD,IAAA;wBAAMC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAKI,IAAI,GAAAC,6BAAA,CAAAR,IAAA,EAAAS,WAAA;EAC9C,OACEC;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdO,OAAO,EAAC,aAAa;IACrBC,KAAK,EAAC;KACFL,IAAI,GAERG;IAAQyB,EAAE,EAAC,KAAK;IAACC,EAAE,EAAC,KAAK;IAACC,CAAC,EAAC,KAAK;IAAC/B,IAAI,EAAC;IAAY,EACnDI;IACEG,CAAC,EAAC,4sDAA4sD;IAC9sDP,IAAI,EAAC;IACL,CACE;AAEV,CAAC;;ACJM,IAAMkD,qBAAqB,GAChC,4CAA4C;AAC9C,AAAO,IAAMC,oBAAoB,GAAG,4CAA4C;AAChF,AACO,IAAMC,uBAAuB,GAAG,oCAAoC;;;AClB3E,AAgBA,WAAYC,SAAS;EACnBA,6BAAgB;EAChBA,4BAAe;EACfA,8BAAiB;EACjBA,2BAAc;EACdA,wBAAW;EACXA,6BAAgB;EAChBA,6BAAgB;EAChBA,kCAAqB;EACrBA,yBAAY;EACZA,0BAAa;AACf,CAAC,EAXWA,uBAAS,KAATA,uBAAS;AAarB,AAAA,IAAYC,gBAQX;AARD,WAAYA,gBAAgB;EAC1BA,sEAAmB;EACnBA,iEAAe;EACfA,qEAAiB;EACjBA,sDAAQ;EACRA,oEAAiB;EACjBA,sEAAmB;EACnBA,0EAAmB;AACrB,CAAC,EARWA,gBAAgB,KAAhBA,gBAAgB;AAU5B,AAAO,IAAMC,kBAAkB,IAAAC,mBAAA,OAAAA,mBAAA,CAC5BH,uBAAS,CAACI,QAAQ,IAAGH,gBAAgB,CAACG,QAAQ,EAAAD,mBAAA,CAC9CH,uBAAS,CAACK,OAAO,IAAGJ,gBAAgB,CAACI,OAAO,EAAAF,mBAAA,CAC5CH,uBAAS,CAACM,SAAS,IAAGL,gBAAgB,CAACK,SAAS,EAAAH,mBAAA,CAChDH,uBAAS,CAACO,GAAG,IAAGN,gBAAgB,CAACM,GAAG,EAAAJ,mBAAA,CACpCH,uBAAS,CAACQ,QAAQ,IAAGP,gBAAgB,CAACO,QAAQ,EAAAL,mBAAA,CAC9CH,uBAAS,CAACS,QAAQ,IAAGR,gBAAgB,CAACQ,QAAQ,EAAAN,mBAAA,CAC9CH,uBAAS,CAACU,aAAa,IAAGT,gBAAgB,CAACU,YAAY,EAAAR,mBAAA,CACzD;AAED,IAAaS,qBAAqB,IAAAC,qBAAA,OAAAA,qBAAA,CAC/Bb,uBAAS,CAACI,QAAQ,IAAG,UAAU,EAAAS,qBAAA,CAC/Bb,uBAAS,CAACK,OAAO,IAAG,SAAS,EAAAQ,qBAAA,CAC7Bb,uBAAS,CAACM,SAAS,IAAG,WAAW,EAAAO,qBAAA,CACjCb,uBAAS,CAACc,MAAM,IAAG,QAAQ,EAAAD,qBAAA,CAC3Bb,uBAAS,CAACO,GAAG,IAAG,iBAAiB,EAAAM,qBAAA,CACjCb,uBAAS,CAACQ,QAAQ,IAAG,UAAU,EAAAK,qBAAA,CAC/Bb,uBAAS,CAACS,QAAQ,IAAG,UAAU,EAAAI,qBAAA,CAC/Bb,uBAAS,CAACU,aAAa,IAAG,eAAe,EAAAG,qBAAA,CACzCb,uBAAS,CAACe,IAAI,IAAG,MAAM,EAAAF,qBAAA,CACvBb,uBAAS,CAACgB,IAAI,IAAG,eAAe,EAAAH,qBAAA,CAClC;AAED,IAAaI,oBAAoB,IAAAC,qBAAA,OAAAA,qBAAA,CAC9B,UAAU,IAAGlB,uBAAS,CAACI,QAAQ,EAAAc,qBAAA,CAC/B,SAAS,IAAGlB,uBAAS,CAACK,OAAO,EAAAa,qBAAA,CAC7B,WAAW,IAAGlB,uBAAS,CAACM,SAAS,EAAAY,qBAAA,CACjC,QAAQ,IAAGlB,uBAAS,CAACc,MAAM,EAAAI,qBAAA,CAC3B,SAAS,IAAGlB,uBAAS,CAACO,GAAG,EAAAW,qBAAA,CACzB,UAAU,IAAGlB,uBAAS,CAACQ,QAAQ,EAAAU,qBAAA,CAC/B,UAAU,IAAGlB,uBAAS,CAACS,QAAQ,EAAAS,qBAAA,CAC/B,eAAe,IAAGlB,uBAAS,CAACU,aAAa,EAAAQ,qBAAA,CACzC,MAAM,IAAGlB,uBAAS,CAACe,IAAI,EAAAG,qBAAA,CACvB,eAAe,IAAGlB,uBAAS,CAACgB,IAAI,EAAAE,qBAAA,CAClC;AAED,AAAO,IAAMC,uBAAuB,IAAAC,qBAAA,OAAAA,qBAAA,CACjCpB,uBAAS,CAACI,QAAQ,IAAG,sBAAsB,EAAAgB,qBAAA,CAC3CpB,uBAAS,CAACK,OAAO,IAAG,qBAAqB,EAAAe,qBAAA,CACzCpB,uBAAS,CAACM,SAAS,IAAG,sBAAsB,EAAAc,qBAAA,CAC5CpB,uBAAS,CAACc,MAAM,IAAG,YAAY,EAAAM,qBAAA,CAC/BpB,uBAAS,CAACO,GAAG,IAAG,qBAAqB,EAAAa,qBAAA,CACrCpB,uBAAS,CAACQ,QAAQ,IAAG,+BAA+B,EAAAY,qBAAA,CACpDpB,uBAAS,CAACS,QAAQ,IAAG,qBAAqB,EAAAW,qBAAA,CAC1CpB,uBAAS,CAACU,aAAa,IAAG,+BAA+B,EAAAU,qBAAA,CACzDpB,uBAAS,CAACe,IAAI,IAAG,qBAAqB,EAAAK,qBAAA,CACxC;AAED,AAAO,IAAMC,uBAAuB,IAAAC,qBAAA,OAAAA,qBAAA,CACjCtB,uBAAS,CAACI,QAAQ,IAAG,UAAU,EAAAkB,qBAAA,CAC/BtB,uBAAS,CAACK,OAAO,IAAG,eAAe,EAAAiB,qBAAA,CACnCtB,uBAAS,CAACM,SAAS,IAAG,aAAa,EAAAgB,qBAAA,CACnCtB,uBAAS,CAACc,MAAM,IAAG,QAAQ,EAAAQ,qBAAA,CAC3BtB,uBAAS,CAACO,GAAG,IAAG,aAAa,EAAAe,qBAAA,CAC7BtB,uBAAS,CAACQ,QAAQ,IAAG,UAAU,EAAAc,qBAAA,CAC/BtB,uBAAS,CAACS,QAAQ,IAAG,UAAU,EAAAa,qBAAA,CAC/BtB,uBAAS,CAACU,aAAa,IAAG,eAAe,EAAAY,qBAAA,CACzCtB,uBAAS,CAACe,IAAI,IAAG,MAAM,EAAAO,qBAAA,CACzB;AAED,AAAO,IAAMC,kBAAkB,IAAAC,mBAAA,OAAAA,mBAAA,CAC5BvB,gBAAgB,CAACG,QAAQ,IAAGJ,uBAAS,CAACI,QAAQ,EAAAoB,mBAAA,CAC9CvB,gBAAgB,CAACI,OAAO,IAAGL,uBAAS,CAACK,OAAO,EAAAmB,mBAAA,CAC5CvB,gBAAgB,CAACK,SAAS,IAAGN,uBAAS,CAACM,SAAS,EAAAkB,mBAAA,CAChDvB,gBAAgB,CAACM,GAAG,IAAGP,uBAAS,CAACO,GAAG,EAAAiB,mBAAA,CACpCvB,gBAAgB,CAACO,QAAQ,IAAGR,uBAAS,CAACQ,QAAQ,EAAAgB,mBAAA,CAC9CvB,gBAAgB,CAACQ,QAAQ,IAAGT,uBAAS,CAACS,QAAQ,EAAAe,mBAAA,CAC9CvB,gBAAgB,CAACU,YAAY,IAAGX,uBAAS,CAACU,aAAa,EAAAc,mBAAA,CACzD;AAED,AAAO,IAAMC,cAAc,GAAG,CAC5B;EACEzD,EAAE,EAAEgC,uBAAS,CAACS,QAAQ;EACtBiB,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAEC;CACP,EACD;EACE5D,EAAE,EAAEgC,uBAAS,CAACM,SAAS;EACvBoB,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAEE;CACP,EACD;EACE7D,EAAE,EAAEgC,uBAAS,CAACO,GAAG;EACjBmB,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAEG;CACP,EACD;EACE9D,EAAE,EAAEgC,uBAAS,CAACI,QAAQ;EACtBsB,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAEI;CACP,EACD;EACE/D,EAAE,EAAEgC,uBAAS,CAACgB,IAAI;EAClBU,KAAK,EAAE,eAAe;EACtBC,IAAI,EAAEK;CACP,EACD;EACEhE,EAAE,EAAEgC,uBAAS,CAACQ,QAAQ;EACtBkB,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAEM;CACP,EACD;EACEjE,EAAE,EAAEgC,uBAAS,CAACK,OAAO;EACrBqB,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAEO;CACP,EACD;EACElE,EAAE,EAAEgC,uBAAS,CAACU,aAAa;EAC3BgB,KAAK,EAAE,eAAe;EACtBC,IAAI,EAAEO;CACP,EACD;EACElE,EAAE,EAAEgC,uBAAS,CAACc,MAAM;EACpBY,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAEQ;CACP,EACD;EACEnE,EAAE,EAAEgC,uBAAS,CAACe,IAAI;EAClBW,KAAK,EAAE,MAAM;EACbC,IAAI,EAAES;CACP,CACF;AACD,AAAO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIrE,EAAU;EACzC,IAAMsE,KAAK,GAAGb,cAAc,CAACc,SAAS,CAAC,UAACC,IAAI;IAAA,OAAKA,IAAI,CAACxE,EAAE,KAAKA,EAAE;IAAC;EAChE,IAAIsE,KAAK,GAAG,CAAC,EAAE;EACf,OAAOb,cAAc,CAACa,KAAK,CAAC;AAC9B,CAAC;AAGD,AAAO,IAAMG,OAAO,GAAY,QAAQ;AACxC,AAAO,IAAMC,WAAW,GAAGC,qBAAa,CAACF,OAAO,CAAC;AACjD,AAAO,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAIC,OAAe;EAAA,OACxCA,OAAO,KAAK7C,uBAAS,CAACI,QAAQ,IAC9ByC,OAAO,KAAK7C,uBAAS,CAACK,OAAO,IAC7BwC,OAAO,KAAK7C,uBAAS,CAACM,SAAS,IAC/BuC,OAAO,KAAK7C,uBAAS,CAACO,GAAG,IACzBsC,OAAO,KAAK7C,uBAAS,CAACQ,QAAQ,IAC9BqC,OAAO,KAAK7C,uBAAS,CAACS,QAAQ,IAC9BoC,OAAO,KAAK7C,uBAAS,CAACU,aAAa;AAAA;AAMrC,AAAO,IAAMoC,SAAS,GAAgB;EACpCC,IAAI,EAAE;IACJC,MAAM,EAAE,MAAM;IACdrB,IAAI,EAAEsB;GACP;EACDtD,IAAI,EAAE;IACJqD,MAAM,EAAE,MAAM;IACdrB,IAAI,EAAEuB,IAAQ;IACdC,OAAO,EAAE;MACPC,GAAG,EAAEvD,qBAAqB;MAC1BwD,GAAG,EAAEvD;;;CAGV;AAED,AAAA,IAAYwD,iBASX;AATD,WAAYA,iBAAiB;EAC3BA,4CAAuB;EACvBA,4CAAuB;EACvBA,kCAAa;EACbA,4CAAuB;EACvBA,gDAA2B;EAC3BA,kDAA6B;EAC7BA,gDAA2B;EAC3BA,4CAAuB;AACzB,CAAC,EATWA,iBAAiB,KAAjBA,iBAAiB;;AC/L7B,WAAYC,eAAe;EACzBA,kCAAe;EACfA,oCAAiB;EACjBA,kCAAe;AACjB,CAAC,EAJWA,uBAAe,KAAfA,uBAAe;AAM3B,AAAA,WAAYC,WAAW;EACrBA,kCAAmB;EACnBA,gCAAiB;EACjBA,gCAAiB;AACnB,CAAC,EAJWA,mBAAW,KAAXA,mBAAW;AAMvB,AAAA,WAAYC,eAAe;EACzBA,gCAAa;EACbA,iCAAc;AAChB,CAAC,EAHWA,uBAAe,KAAfA,uBAAe;AAK3B,AAAA,WAAYC,gBAAgB;EAC1BA,mCAAe;EACfA,iCAAa;AACf,CAAC,EAHWA,wBAAgB,KAAhBA,wBAAgB;AAK5B,AAAA,WAAYC,WAAW;EACrBA,4BAAa;EACbA,8BAAe;EACfA,kCAAmB;AACrB,CAAC,EAJWA,mBAAW,KAAXA,mBAAW;;AC3BvB,IAAQC,WAAW,GAAKC,sBAAL;AAEnB,AAgEA,IAAMC,YAAY,GAAgB;EAChCC,KAAK,EAAE,EAAE;EACTC,YAAY,EAAE,EAAE;EAChBC,eAAe,EAAE,uBAAuB;EACxCC,IAAI,EAAEV,mBAAW,CAACW,MAAM;EACxBC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAE,EAAE;EACfC,aAAa,EAAE,EAAE;EACjBC,kBAAkB,EAAE,KAAK;EACzBC,gBAAgB,EAAE,KAAK;EACvBC,SAAS,EAAE,KAAK;EAChBC,SAAS,EAAE,KAAK;EAChBC,SAAS,EAAE,KAAK;EAChBC,iBAAiB,EAAE,IAAI;EACvBC,QAAQ,EAAEC,SAAS;EACnBC,UAAU,EAAEpB,mBAAW,CAACqB,IAAI;EAC5BC,cAAc,EAAEH,SAAS;EACzBI,SAAS,EAAE,KAAK;EAChBC,MAAM,EAAE,CAAC;EACTC,SAAS,EAAE,KAAK;EAChBC,YAAY,EAAE,SAAAA;IAAA,OAAM,KAAK,CAAC;;EAC1BC,YAAY,EAAE,SAAAA;IAAA,OAAM,KAAK,CAAC;;EAC1BC,cAAc,EAAE,SAAAA;IAAA,OAAM,KAAK,CAAC;;EAC5BC,kBAAkB,EAAE,SAAAA;IAAA,OAAM,KAAK,CAAC;;EAChCC,YAAY,EAAE,SAAAA;IAAA,OAAM,KAAK,CAAC;;EAC1BC,qBAAqB,EAAE,KAAK;EAC5BC,UAAU,EAAE,CAAC,CAAC;EACdC,UAAU,EAAE,EAAE;EACdC,iBAAiB,EAAE,EAAE;EACrBC,IAAI,EAAE,CAAC,CAAC;EACRC,aAAa,EAAE,MAAM;EACrBC,iBAAiB,EAAE,CAAC,MAAM,CAAC;EAC3BC,eAAe,EAAE,IAAI;EACrBC,eAAe,EAAE,KAAK;EACtBC,eAAe,EAAE,KAAK;EACtBC,OAAO,EAAE,KAAK;EACdC,WAAW,EAAE;IACXC,IAAI,EAAE,EAAE;IACRC,SAAS,EAAE;GACZ;EACDC,qBAAqB,EAAE,KAAK;EAC5BC,SAAS,EAAE,EAAE;EACbC,IAAI,EAAE,EAAE;EACRC,SAAS,EAAE;CACZ;AAED,AAAO,IAAMC,WAAW,GAAGhD,WAAW,CAAC;EACrCiD,IAAI,EAAE,QAAQ;EACd/C,YAAY,EAAZA,YAAY;EACZgD,QAAQ,EAAE;IACRC,UAAU,EAAE,SAAAA,WAACC,KAAK;MAChBA,KAAK,CAAC9B,SAAS,GAAG,KAAK;MACvB8B,KAAK,CAAClB,IAAI,GAAG,CAAC,CAAC;MACfkB,KAAK,CAACrB,UAAU,GAAG,CAAC,CAAC;MACrBqB,KAAK,CAAC7B,MAAM,GAAG,CAAC;MAChB6B,KAAK,CAAC1C,aAAa,GAAG,EAAE;MACxB0C,KAAK,CAACf,eAAe,GAAG,IAAI;MAC5Be,KAAK,CAACd,eAAe,GAAG,KAAK;MAC7Bc,KAAK,CAACb,eAAe,GAAG,KAAK;MAC7Ba,KAAK,CAACZ,OAAO,GAAG,KAAK;MACnBY,KAAK,CAAChD,YAAY,GAAG,EAAE,EACtBgD,KAAK,CAACX,WAAW,GAAG;QACnBC,IAAI,EAAE,EAAE;QACRC,SAAS,EAAE;OACX;MACJS,KAAK,CAACtB,qBAAqB,GAAG,KAAK;MACnCsB,KAAK,CAACR,qBAAqB,GAAG,KAAK;MACnCQ,KAAK,CAACP,SAAS,GAAG,EAAE;KACrB;IACDQ,eAAe,EAAE,SAAAA,gBAACD,KAAK,EAAEE,MAAmC;MAC1DF,KAAK,CAAChD,YAAY,GAAGkD,MAAM,CAACC,OAAO;KACpC;IACDC,QAAQ,EAAE,SAAAA,SAACJ,KAAK,EAAEE,MAAmC;MACnDF,KAAK,CAACjD,KAAK,GAAGmD,MAAM,CAACC,OAAO;KAC7B;IACDE,eAAe,EAAE,SAAAA,gBAACL,KAAK,EAAEE,MAA6B;MACpDF,KAAK,CAAC/C,eAAe,GAAGiD,MAAM,CAACC,OAAO;KACvC;IACDG,cAAc,EAAE,SAAAA,eAACN,KAAK,EAAEE,MAA6B;MACnDF,KAAK,CAAC5C,WAAW,GAAG8C,MAAM,CAACC,OAAO;KACnC;IACDI,cAAc,EAAE,SAAAA,eAACP,KAAK,EAAEE,MAA6B;MACnDF,KAAK,CAAC3C,WAAW,GAAG6C,MAAM,CAACC,OAAO;KACnC;IACDK,gBAAgB,EAAE,SAAAA,iBAACR,KAAK,EAAEE,MAA6B;MACrDF,KAAK,CAAC1C,aAAa,GAAG4C,MAAM,CAACC,OAAO;KACrC;IACDM,qBAAqB,EAAE,SAAAA,sBAACT,KAAK,EAAEE,MAA8B;MAC3DF,KAAK,CAACzC,kBAAkB,GAAG2C,MAAM,CAACC,OAAO;KAC1C;IACDO,mBAAmB,EAAE,SAAAA,oBAACV,KAAK,EAAEE,MAA8B;MACzDF,KAAK,CAACxC,gBAAgB,GAAG0C,MAAM,CAACC,OAAO;KACxC;IACDQ,YAAY,EAAE,SAAAA,aAACX,KAAK,EAAEE,MAA8B;MAClDF,KAAK,CAACvC,SAAS,GAAGyC,MAAM,CAACC,OAAO;KACjC;IACDS,YAAY,EAAE,SAAAA,aAACZ,KAAK,EAAEE,MAA8B;MAClDF,KAAK,CAACtC,SAAS,GAAGwC,MAAM,CAACC,OAAO;KACjC;IACDU,YAAY,EAAE,SAAAA,aAACb,KAAK,EAAEE,MAA8B;MAClDF,KAAK,CAACrC,SAAS,GAAGuC,MAAM,CAACC,OAAO;KACjC;IACDW,WAAW,EAAE,SAAAA,YAACd,KAAK,EAAEE,MAA0B;MAC7CF,KAAK,CAACnC,QAAQ,GAAGqC,MAAM,CAACC,OAAO;KAChC;IACDY,aAAa,EAAE,SAAAA,cAACf,KAAK,EAAEE,MAAkC;MACvDF,KAAK,CAACjC,UAAU,GAAGmC,MAAM,CAACC,OAAO;KAClC;IACDa,oBAAoB,EAAE,SAAAA,qBAAChB,KAAK,EAAEE,MAA8B;MAC1DF,KAAK,CAACpC,iBAAiB,GAAGsC,MAAM,CAACC,OAAO;KACzC;IACDc,iBAAiB,EAAE,SAAAA,kBAACjB,KAAK,EAAEE,MAA0B;MACnDF,KAAK,CAAC/B,cAAc,GAAGiC,MAAM,CAACC,OAAO;KACtC;IACDe,YAAY,EAAE,SAAAA,aAAClB,KAAK,EAAEE,MAA8B;MAClDF,KAAK,CAAC9B,SAAS,GAAGgC,MAAM,CAACC,OAAO;KACjC;IACDgB,oBAAoB,EAAE,SAAAA,qBAACnB,KAAK,EAAEE,MAAwC;MACpEF,KAAK,CAACoB,iBAAiB,GAAGlB,MAAM,CAACC,OAAO;KACzC;IACDkB,SAAS,EAAE,SAAAA,UAACrB,KAAK,EAAEE,MAA6B;MAC9CF,KAAK,CAAC7B,MAAM,GAAG+B,MAAM,CAACC,OAAO;KAC9B;IACDmB,eAAe,EAAE,SAAAA,gBAACtB,KAAK,EAAEE,MAA+B;MACtDF,KAAK,CAAC3B,YAAY,GAAG6B,MAAM,CAACC,OAAO;KACpC;IACDoB,eAAe,EAAE,SAAAA,gBAACvB,KAAK,EAAEE,MAA+B;MACtDF,KAAK,CAACvB,YAAY,GAAGyB,MAAM,CAACC,OAAO;KACpC;IACDqB,eAAe,EAAE,SAAAA,gBAACxB,KAAK,EAAEE,MAA+B;MACtDF,KAAK,CAAC1B,YAAY,GAAG4B,MAAM,CAACC,OAAO;KACpC;IACDsB,qBAAqB,EAAE,SAAAA,sBAACzB,KAAK,EAAEE,MAA+B;MAC5DF,KAAK,CAACxB,kBAAkB,GAAG0B,MAAM,CAACC,OAAO;KAC1C;IACDuB,wBAAwB,EAAE,SAAAA,yBAAC1B,KAAK,EAAEE,MAA8B;MAC9DF,KAAK,CAACtB,qBAAqB,GAAGwB,MAAM,CAACC,OAAO;KAC7C;IACDwB,iBAAiB,EAAE,SAAAA,kBAAC3B,KAAK,EAAEE,MAA+B;MACxDF,KAAK,CAACzB,cAAc,GAAG2B,MAAM,CAACC,OAAO;KACtC;IACDyB,aAAa,EAAE,SAAAA,cAAC5B,KAAK,EAAEE,MAA6B;MAClDF,KAAK,CAACrB,UAAU,GAAGuB,MAAM,CAACC,OAAO;KAClC;IACD0B,OAAO,EAAE,SAAAA,QAAC7B,KAAK,EAAEE,MAAkC;MACjDF,KAAK,CAAC9C,IAAI,GAAGgD,MAAM,CAACC,OAAO;KAC5B;IACD2B,YAAY,EAAE,SAAAA,aAAC9B,KAAK,EAAEE,MAA8B;MAClDF,KAAK,CAAC5B,SAAS,GAAG8B,MAAM,CAACC,OAAO;KACjC;IACD4B,aAAa,EAAE,SAAAA,cAAC/B,KAAK,EAAEE,MAA6B;MAClDF,KAAK,CAACpB,UAAU,GAAGsB,MAAM,CAACC,OAAO;KAClC;IACD6B,oBAAoB,EAAE,SAAAA,qBAAChC,KAAK,EAAEE,MAA6B;MACzDF,KAAK,CAACnB,iBAAiB,GAAGqB,MAAM,CAACC,OAAO;KACzC;IACD8B,OAAO,EAAE,SAAAA,QAACjC,KAAK,EAAEE,MAA6B;MAC5CF,KAAK,CAAClB,IAAI,GAAGoB,MAAM,CAACC,OAAO;KAC5B;IACD+B,gBAAgB,EAAE,SAAAA,iBAAClC,KAAK,EAAEE,MAA6B;MACrDF,KAAK,CAACjB,aAAa,GAAGmB,MAAM,CAACC,OAAO;KACrC;IACDgC,qBAAqB,EAAE,SAAAA,sBAACnC,KAAK,EAAEE,MAAoC;MACjEF,KAAK,CAAChB,iBAAiB,GAAGkB,MAAM,CAACC,OAAO;KACzC;IACDiC,kBAAkB,EAAE,SAAAA,mBAACpC,KAAK,EAAEE,MAA8B;MACxDF,KAAK,CAACf,eAAe,GAAGiB,MAAM,CAACC,OAAO;KACvC;IACDkC,kBAAkB,EAAE,SAAAA,mBAACrC,KAAK,EAAEE,MAA6B;MACvDF,KAAK,CAACd,eAAe,GAAGgB,MAAM,CAACC,OAAO;KACvC;IACDmC,kBAAkB,EAAE,SAAAA,mBAACtC,KAAK,EAAEE,MAA6B;MACvDF,KAAK,CAACb,eAAe,GAAGe,MAAM,CAACC,OAAO;KACvC;IACDoC,UAAU,EAAE,SAAAA,WAACvC,KAAK,EAAEE,MAA8B;MAChDF,KAAK,CAACZ,OAAO,GAAGc,MAAM,CAACC,OAAO;KAC/B;IACDqC,cAAc,EAAE,SAAAA,eAACxC,KAAK,EAAEE,MAAkC;MACxDF,KAAK,CAACX,WAAW,GAAGa,MAAM,CAACC,OAAO;KACnC;IACDsC,sBAAsB,EAAE,SAAAA,uBAACzC,KAAK,EAAEE,MAA8B;MAC5DF,KAAK,CAACR,qBAAqB,GAAGU,MAAM,CAACC,OAAO;KAC7C;IACDuC,YAAY,EAAE,SAAAA,aAAC1C,KAAK,EAAEE,MAA6B;MACjDF,KAAK,CAACP,SAAS,GAAGS,MAAM,CAACC,OAAO;KACjC;IACDwC,OAAO,EAAE,SAAAA,QAAC3C,KAAK,EAAEE,MAA6B;MAC5CF,KAAK,CAACN,IAAI,GAAGQ,MAAM,CAACC,OAAO;KAC5B;IACDyC,YAAY,EAAE,SAAAA,aAAC5C,KAAK,EAAEE,MAA6B;MACjDF,KAAK,CAACL,SAAS,GAAGO,MAAM,CAACC,OAAO;;;CAGrC,CAAC;AAEK,IAAA0C,oBAAA,GA2CHjD,WAAW,CAACkD,OAAO;EA1CrB/C,UAAU,GAAA8C,oBAAA,CAAV9C,UAAU;EACVE,eAAe,GAAA4C,oBAAA,CAAf5C,eAAe;EACfI,eAAe,GAAAwC,oBAAA,CAAfxC,eAAe;EACfD,QAAQ,GAAAyC,oBAAA,CAARzC,QAAQ;EACRE,cAAc,GAAAuC,oBAAA,CAAdvC,cAAc;EACdC,cAAc,GAAAsC,oBAAA,CAAdtC,cAAc;EACdC,gBAAgB,GAAAqC,oBAAA,CAAhBrC,gBAAgB;EAChBC,qBAAqB,GAAAoC,oBAAA,CAArBpC,qBAAqB;EACrBC,mBAAmB,GAAAmC,oBAAA,CAAnBnC,mBAAmB;EACnBC,YAAY,GAAAkC,oBAAA,CAAZlC,YAAY;EACZC,YAAY,GAAAiC,oBAAA,CAAZjC,YAAY;EACZC,YAAY,GAAAgC,oBAAA,CAAZhC,YAAY;EACZI,iBAAiB,GAAA4B,oBAAA,CAAjB5B,iBAAiB;EACjBH,WAAW,GAAA+B,oBAAA,CAAX/B,WAAW;EACXC,aAAa,GAAA8B,oBAAA,CAAb9B,aAAa;EACbC,oBAAoB,GAAA6B,oBAAA,CAApB7B,oBAAoB;EACpBE,YAAY,GAAA2B,oBAAA,CAAZ3B,YAAY;EACZC,oBAAoB,GAAA0B,oBAAA,CAApB1B,oBAAoB;EACpBE,SAAS,GAAAwB,oBAAA,CAATxB,SAAS;EACTC,eAAe,GAAAuB,oBAAA,CAAfvB,eAAe;EACfC,eAAe,GAAAsB,oBAAA,CAAftB,eAAe;EACfC,eAAe,GAAAqB,oBAAA,CAAfrB,eAAe;EACfG,iBAAiB,GAAAkB,oBAAA,CAAjBlB,iBAAiB;EACjBF,qBAAqB,GAAAoB,oBAAA,CAArBpB,qBAAqB;EACrBC,AACAE,aAAa,GAAAiB,oBAAA,CAAbjB,aAAa;EACbC,OAAO,GAAAgB,oBAAA,CAAPhB,OAAO;EACPC,YAAY,GAAAe,oBAAA,CAAZf,YAAY;EACZC,aAAa,GAAAc,oBAAA,CAAbd,aAAa;EACbC,oBAAoB,GAAAa,oBAAA,CAApBb,oBAAoB;EACpBC,OAAO,GAAAY,oBAAA,CAAPZ,OAAO;EACPC,gBAAgB,GAAAW,oBAAA,CAAhBX,gBAAgB;EAChBC,qBAAqB,GAAAU,oBAAA,CAArBV,qBAAqB;EACrBC,kBAAkB,GAAAS,oBAAA,CAAlBT,kBAAkB;EAClBC,kBAAkB,GAAAQ,oBAAA,CAAlBR,kBAAkB;EAClBC,kBAAkB,GAAAO,oBAAA,CAAlBP,kBAAkB;EAClBC,UAAU,GAAAM,oBAAA,CAAVN,UAAU;EACVC,cAAc,GAAAK,oBAAA,CAAdL,cAAc;EACdC,sBAAsB,GAAAI,oBAAA,CAAtBJ,sBAAsB;EACtBC,YAAY,GAAAG,oBAAA,CAAZH,YAAY;EACZC,OAAO,GAAAE,oBAAA,CAAPF,OAAO;EACPC,YAAY,GAAAC,oBAAA,CAAZD,YAAY;AACS,AAEvB,oBAAehD,WAAW,CAACmD,OAAO;;ACnTlC,IAAQC,cAAc,GAAKnG,yBAAL;AACtB,AAEO,IAAMoG,KAAK,GAAGD,cAAc,CAAC;EAClCD,OAAO,EAAE;IACPG,MAAM,EAAEC;GACT;EACDC,UAAU,EAAE,SAAAA,WAACC,oBAAoB;IAAA,OAC/BA,oBAAoB,CAAC;MACnBC,iBAAiB,EAAE;KACpB,CAAC;;CACL,CAAC;;ACZF;AACA,AAAO,MAAM,KAAK,gBAAgB,CAAC,WAAW;AAC9C,CAAC,SAAS,KAAK,GAAG,EAAE;AACpB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,WAAW,EAAE,UAAU,EAAE;AAC1D,EAAE,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;AAC7B,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC;AACzD,GAAG,IAAI,QAAQ,EAAE;AACjB,IAAI,IAAI;AACR,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,MAAM;AACV,IAAI,OAAO,IAAI,CAAC;AAChB,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,GAAG,SAAS,KAAK,EAAE;AAC3B,GAAG,IAAI;AACP,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;AACrB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAClE,KAAK,MAAM,IAAI,UAAU,EAAE;AAC3B,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM;AACX,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,CAAC,OAAO,CAAC,EAAE;AACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,OAAO,MAAM,CAAC;AAChB,GAAE;AACF,CAAC,OAAO,KAAK,CAAC;AACd,CAAC,GAAG,CAAC;AACL;AACA;AACA,AAAO,SAAS,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACd,EAAE,IAAI,KAAK,YAAY,KAAK,EAAE;AAC9B,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE;AAChB,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACpB,IAAI,MAAM;AACV,IAAI,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;AAC3B,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,GAAG,OAAO;AACV,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AACjB,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;AACjB,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClB,GAAG;AACH,EAAE;AACF,CAAC;AACD;AACA,AAAO,SAAS,cAAc,CAAC,QAAQ,EAAE;AACzC,CAAC,OAAO,QAAQ,YAAY,KAAK,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACpD,CAAC;AACD,AA+FA;AACA,AAAO,MAAM,eAAe,iBAAiB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC;AAC/J,AA2DA;AACA,AAAO,MAAM,oBAAoB,iBAAiB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,iBAAiB,CAAC;AACxL,AAkHA;AACA;AACA,AAAO,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE;AAChC,CAAC,IAAI,SAAS,CAAC;AACf,CAAC,GAAG;AACJ,EAAE,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;AACtB,EAAE,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AAC7B,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,IAAI,MAAM;AACV,IAAI,SAAS,GAAG,IAAI,CAAC;AACrB,IAAI,MAAM;AACV,IAAI;AACJ,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC;AAC9B,EAAE,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE;AACtC,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;AACrC,GAAG;AACH,EAAE,IAAI,CAAC,cAAc,EAAE;AACvB,GAAG,OAAO,MAAM,CAAC;AACjB,GAAG;AACH,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE;AAChC,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;AAC1B,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1G,CAAC,OAAO,IAAI,CAAC;AACb,CAAC,SAAS,gBAAgB,CAAC,KAAK,EAAE;AAClC,EAAE,MAAM,GAAG,KAAK,CAAC;AACjB,EAAE,SAAS;AACX,GAAG,cAAc,GAAG,IAAI,EAAE,CAAC;AAC3B,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE;AACvC,IAAI,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;AACtC,IAAI;AACJ,GAAG,IAAI,CAAC,cAAc,EAAE;AACxB,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE;AAC5B,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/D,IAAI,OAAO;AACX,IAAI;AACJ,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;AACnB,GAAG,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AAC9B,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AAChC,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,KAAK,MAAM;AACX,KAAK,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACxD,KAAK,OAAO;AACZ,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE;AACF,CAAC,SAAS,gBAAgB,CAAC,cAAc,EAAE;AAC3C,EAAE,IAAI,cAAc,EAAE;AACtB,GAAG,GAAG;AACN,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AAC/B,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,MAAM,MAAM;AACZ,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,MAAM,OAAO;AACb,MAAM;AACN,KAAK;AACL,IAAI,cAAc,GAAG,IAAI,EAAE,CAAC;AAC5B,IAAI,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE;AACxC,KAAK,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,EAAE;AACzB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9B,KAAK,OAAO;AACZ,KAAK;AACL,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE;AAClC,GAAG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9D,GAAG,MAAM;AACT,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE;AACF,CAAC;AACD,AA6IA;AACA;AACA,AAAO,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AACtC,CAAC,IAAI;AACL,EAAE,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;AACtB,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ,EAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf,CAAC;;ACtjBM,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIvD,KAAgB;EAAA,OACjDA,KAAK,CAACkD,MAAM,CAAClG,YAAY;AAAA;AAC3B,AAAO,IAAMwG,WAAW,GAAG,SAAdA,WAAWA,CAAIxD,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACnG,KAAK;AAAA;AACnE,AAAO,IAAM0G,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIzD,KAAgB;EAAA,OACjDA,KAAK,CAACkD,MAAM,CAACjG,eAAe;AAAA;AAC9B,AAAO,IAAMyG,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI1D,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC9F,WAAW;AAAA;AAC/E,AAAO,IAAMuG,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI3D,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC7F,WAAW;AAAA;AAC/E,AAAO,IAAMuG,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAI5D,KAAgB;EAAA,OAClDA,KAAK,CAACkD,MAAM,CAAC5F,aAAa;AAAA;AAC5B,AAAO,IAAMuG,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAI7D,KAAgB;EAAA,OACvDA,KAAK,CAACkD,MAAM,CAAC3F,kBAAkB;AAAA;AACjC,AAAO,IAAMuG,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAI9D,KAAgB;EAAA,OACrDA,KAAK,CAACkD,MAAM,CAAC1F,gBAAgB;AAAA;AAC/B,AAAO,IAAMuG,eAAe,GAAG,SAAlBA,eAAeA,CAAI/D,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACzF,SAAS;AAAA;AAC3E,AAAO,IAAMuG,eAAe,GAAG,SAAlBA,eAAeA,CAAIhE,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACxF,SAAS;AAAA;AAC3E,AAAO,IAAMuG,eAAe,GAAG,SAAlBA,eAAeA,CAAIjE,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACvF,SAAS;AAAA;AAC3E,AAAO,IAAMuG,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIlE,KAAgB;EAAA,OACnDA,KAAK,CAACkD,MAAM,CAACjF,cAAc;AAAA;AAC7B,AACO,IAAMkG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAInE,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACnF,UAAU;AAAA;AAC7E,AAAO,IAAMqG,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIpE,KAAgB;EAAA,OACtDA,KAAK,CAACkD,MAAM,CAACtF,iBAAiB;AAAA;AAChC,AAAO,IAAMyG,eAAe,GAAG,SAAlBA,eAAeA,CAAIrE,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAChF,SAAS;AAAA;AAC3E,AAAO,IAAMoG,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAItE,KAAgB;EAAA,OACtDA,KAAK,CAACkD,MAAM,CAAC9B,iBAAiB;AAAA;AAChC,AAAO,IAAMmD,YAAY,GAAG,SAAfA,YAAYA,CAAIvE,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC/E,MAAM;AAAA;AACrE,AAAO,IAAMqG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIxE,KAAgB;EAAA,OACjDA,KAAK,CAACkD,MAAM,CAAC7E,YAAY;AAAA;AAC3B,AAAO,IAAMoG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIzE,KAAgB;EAAA,OACjDA,KAAK,CAACkD,MAAM,CAACzE,YAAY;AAAA;AAC3B,AAAO,IAAMiG,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAI1E,KAAgB;EAAA,OACjDA,KAAK,CAACkD,MAAM,CAAC5E,YAAY;AAAA;AAC3B,AAAO,IAAMqG,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAI3E,KAAgB;EAAA,OACnDA,KAAK,CAACkD,MAAM,CAAC3E,cAAc;AAAA;AAC7B,AAIO,IAAMqG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAI5E,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACvE,UAAU;AAAA;AAC7E,AAAO,IAAMkG,UAAU,GAAG,SAAbA,UAAUA,CAAI7E,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAChG,IAAI;AAAA;AACjE,AAAO,IAAM4H,eAAe,GAAG,SAAlBA,eAAeA,CAAI9E,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC9E,SAAS;AAAA;AAC3E,AAAO,IAAM2G,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAI/E,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACtE,UAAU;AAAA;AAC7E,AAAO,IAAMoG,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIhF,KAAgB;EAAA,OACtDA,KAAK,CAACkD,MAAM,CAACrE,iBAAiB;AAAA;AAChC,AAAO,IAAMoG,UAAU,GAAG,SAAbA,UAAUA,CAAIjF,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACpE,IAAI;AAAA;AACjE,AAAO,IAAMoG,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIlF,KAAgB;EAAA,OAClDA,KAAK,CAACkD,MAAM,CAACnE,aAAa;AAAA;AAC5B,AAAO,IAAMoG,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAInF,KAAgB;EAAA,OACvDA,KAAK,CAACkD,MAAM,CAAClE,iBAAiB;AAAA;AAChC,AAAO,IAAMoG,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIpF,KAAgB;EAAA,OACpDA,KAAK,CAACkD,MAAM,CAACjE,eAAe;AAAA;AAC9B,AAAO,IAAMoG,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIrF,KAAgB;EAAA,OACpDA,KAAK,CAACkD,MAAM,CAAChE,eAAe;AAAA;AAC9B,AAAO,IAAMoG,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAItF,KAAgB;EAAA,OACpDA,KAAK,CAACkD,MAAM,CAAC/D,eAAe;AAAA;AAC9B,AAAO,IAAMoG,aAAa,GAAG,SAAhBA,aAAaA,CAAIvF,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC9D,OAAO;AAAA;AACvE,AAAO,IAAMoG,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIxF,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAAC7D,WAAW;AAAA;AAC/E,AAAO,IAAMoG,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIzF,KAAgB;EAAA,OACxDA,KAAK,CAACkD,MAAM,CAAC1D,qBAAqB;AAAA;AACpC,AAAO,IAAMkG,eAAe,GAAG,SAAlBA,eAAeA,CAAI1F,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACzD,SAAS;AAAA;AAC3E,AAAO,IAAMkG,UAAU,GAAG,SAAbA,UAAUA,CAAI3F,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACxD,IAAI;AAAA;AACjE,AAAO,IAAMkG,eAAe,GAAG,SAAlBA,eAAeA,CAAI5F,KAAgB;EAAA,OAAKA,KAAK,CAACkD,MAAM,CAACvD,SAAS;AAAA;;ACjD3E,IAAMkG,cAAc,GAAG,SAAjBA,cAAcA,CAAAxQ,IAAA;wBAClBC,KAAK;IAALA,KAAK,GAAAC,UAAA,cAAG,EAAE,GAAAA,UAAA;IAAAC,WAAA,GAAAH,IAAA,CACVI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,EAAE,GAAAA,WAAA;IAAAE,SAAA,GAAAL,IAAA,CACXM,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,OAAO,GAAAA,SAAA;EAEd,OACEK;IACET,KAAK,EAAEA,KAAK;IACZG,MAAM,EAAEA,MAAM;IACdE,IAAI,EAAEA,IAAI;IACVK,OAAO,EAAC,WAAW;IACnBC,KAAK,EAAC;KAENF;IAAMG,CAAC,EAAC;KACNH;IACE+P,aAAa,EAAC,WAAW;IACzBC,IAAI,EAAC,QAAQ;IACbC,GAAG,EAAC,OAAO;IACXC,MAAM,EAAC,mBAAmB;IAC1BC,WAAW,EAAC;IACZ,CACG,CACH;AAEV,CAAC;;AC5BD,IAAMC,QAAQ,GAAG,CACf;EACEC,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,CACF;AAED,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAAhR,IAAA;MAAMiR,IAAI,GAAAjR,IAAA,CAAJiR,IAAI;IAAEC,SAAS,GAAAlR,IAAA,CAATkR,SAAS;IAAEC,QAAQ,GAAAnR,IAAA,CAARmR,QAAQ;IAAEC,WAAW,GAAApR,IAAA,CAAXoR,WAAW;EAC3D,IAAM1J,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EAEtC,OACEzN;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,OAAO;IACjBtP,KAAK,EAAE;MACL/B,KAAK,YAAWgR,IAAI,GAAG,GAAG,GAAI,CAAC,aAC7BA,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAC/B;;IAEF,EACFvQ;IAAK4Q,SAAS,EAAC;KACZR,QAAQ,CAACS,GAAG,CAAC,UAACpL,IAAI,EAAEF,KAAK;IAAA,OACxBvF;MACE8Q,GAAG,EAAErL,IAAI,CAAC4K,KAAK;MACfO,SAAS,aAAUL,IAAI,IAAIhL,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAE;MAClDwL,OAAO,EAAE,SAAAA;QACP,IAAIxL,KAAK,GAAG,CAAC,EAAEkL,QAAQ,CAAClL,KAAK,CAAC;;OAGhCvF;MAAK4Q,SAAS,EAAC;OACZrL,KAAK,KAAKmL,WAAW,GACpB1Q,6BAAC8P,cAAc;MACblQ,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,MAAM,GAAG,OAAO,GAAG;MAC7C,GACAT,IAAI,IAAIhL,KAAK,GACfA,KAAK,KAAKiL,SAAS,GACjBxQ,6BAACiR,OAAW;yBAAiB;MAAkB,GAE/CjR,6BAACkR,KAAS,OACX,GACC,IAAI,EACRlR,2CAAOyF,IAAI,CAAC4K,KAAK,CAAQ,CACrB,CACF;GACP,CAAC,CACE,CACF;AAEV,CAAC;;AChED,IAAMc,YAAY,GAAG,SAAfA,YAAYA,CAAA7R,IAAA;EAAA,IAAM8R,EAAE,GAAA9R,IAAA,CAAF8R,EAAE;IAAEC,QAAQ,GAAA/R,IAAA,CAAR+R,QAAQ;IAAET,SAAS,GAAAtR,IAAA,CAATsR,SAAS;IAAE/Q,IAAI,GAAAP,IAAA,CAAJO,IAAI;EAAA,OACnDG;IACE4Q,SAAS,EAAEA,SAAS;IACpBzP,IAAI,EAAEiQ,EAAE;IACRE,MAAM,EAAC,QAAQ;IACfC,GAAG,EAAC;KACA1R,IAAI,GAEPwR,QAAQ,CACP;AAAA,CACL;;ACPD,IAAMG,YAAY,GAAG,SAAfA,YAAYA,CAAAlS,IAAA;MAAM+H,WAAW,GAAA/H,IAAA,CAAX+H,WAAW;IAAEC,WAAW,GAAAhI,IAAA,CAAXgI,WAAW;IAAEmK,QAAQ,GAAAnS,IAAA,CAARmS,QAAQ;EACxD,IAAMzK,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMiE,UAAU,GAAGpM,gBAAgB,CAAC+B,WAAW,CAAC;EAChD,IAAMsK,UAAU,GAAGrM,gBAAgB,CAACgC,WAAW,CAAC;EAEhD,OACEtH;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KAAgBc,UAAU,IAAI1R,6BAAC0R,UAAU,CAAC9M,IAAI,OAAG,CAAO,EACtE8M,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE/M,KAAK,CACd,EACN3E,6BAAC4R,UAAc;IAAChS,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAAW,EACzEhR;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KAAgBe,UAAU,IAAI3R,6BAAC2R,UAAU,CAAC/M,IAAI,OAAG,CAAO,EACtE+M,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEhN,KAAK,CACd,EACL8M,QAAQ,IACPzR;IAAK4Q,SAAS,EAAC,mBAAmB;uBAAiB;KACjD5Q,6BAACiR,OAAW,OAAG,EACfjR,qDAAoB,CAEvB,CACG;AAEV,CAAC;;ACxBD,IAAM6R,aAAa,GAAG,SAAhBA,aAAaA,CAAAvS,IAAA;MACjBsR,SAAS,GAAAtR,IAAA,CAATsR,SAAS;IACTkB,YAAY,GAAAxS,IAAA,CAAZwS,YAAY;IACZT,QAAQ,GAAA/R,IAAA,CAAR+R,QAAQ;IAAAU,cAAA,GAAAzS,IAAA,CACR0S,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IAAAE,aAAA,GAAA3S,IAAA,CACjB4S,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,KAAK,GAAAA,aAAA;IAChBE,GAAG,GAAA7S,IAAA,CAAH6S,GAAG;EAEH,OACEnS;IACE4Q,SAAS,sBAAoBA,SAAW;IACxCG,OAAO,EAAEe,YAAY;IACrBK,GAAG,EAAEA,GAAG;IACRD,QAAQ,EAAEA;KAETF,SAAS,IACRhS;IAAK4Q,SAAS,EAAC;KACb5Q,6BAAC8P,cAAc;IAACvQ,KAAK,EAAE,EAAE;IAAEG,MAAM,EAAE,EAAE;IAAEE,IAAI,EAAC;IAAU,CAEzD,EACAyR,QAAQ,CACF;AAEb,CAAC;;ACxBD,IAAMe,eAAe,GAAG,SAAlBA,eAAeA,CAAA9S,IAAA;EAAA,IACnBsR,SAAS,GAAAtR,IAAA,CAATsR,SAAS;IACTkB,YAAY,GAAAxS,IAAA,CAAZwS,YAAY;IACZT,QAAQ,GAAA/R,IAAA,CAAR+R,QAAQ;IACRrK,KAAK,GAAA1H,IAAA,CAAL0H,KAAK;IACL1F,KAAK,GAAAhC,IAAA,CAALgC,KAAK;IAAA2Q,aAAA,GAAA3S,IAAA,CACL4S,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,KAAK,GAAAA,aAAA;EAAA,OAEhBjS;IACE4Q,SAAS,wBAAsBA,SAAS,SAAI5J,KAAO;IACnD+J,OAAO,EAAEe;KACLxQ,KAAK;IACT4Q,QAAQ,EAAEA;MAETb,QAAQ,CACF;AAAA,CACV;;AC3BM,IAAMgB,YAAY,GAAG;EAC1BC,GAAG,EAAHA,GAAG;EACHC,IAAI,EAAJA;CACD;AAED,SAASD,GAAGA,CAACE,GAAW;EACtB,IAAMC,cAAc,GAAQ;IAC1BC,MAAM,EAAE;GACT;EAEDD,cAAc,CAACE,OAAO,GAAG;IACvB,cAAc,EAAE;GACjB;EAED,OAAOC,KAAK,CAACJ,GAAG,EAAEC,cAAc,CAAC,CAACI,IAAI,CAACC,cAAc,CAAC;AACxD;AAEA,SAASP,IAAIA,CAACC,GAAW,EAAEO,IAAS;EAClC,IAAMN,cAAc,GAAQ;IAC1BC,MAAM,EAAE,MAAM;IACdM,WAAW,EAAE,SAAS;IACtBL,OAAO,EAAE;MACP,cAAc,EAAE;KAEjB;IACDI,IAAI,EAAEA;GACP;EAED,OAAOH,KAAK,CAACJ,GAAG,EAAEC,cAAc,CAAC,CAACI,IAAI,CAACC,cAAc,CAAC;AACxD;AAEA,SAASA,cAAcA,CAACG,QAAkB;EACxC,OAAOA,QAAQ,CAACC,IAAI,EAAE,CAACL,IAAI,CAAC,UAACK,IAAI;IAC/B,IAAIC,IAAI,GAAGD,IAAI;IAEf,IAAI;MACFC,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC;KACxB,CAAC,OAAOI,KAAK,EAAE;MACdH,IAAI,GAAGD,IAAI;;IAGb,IAAI,CAACD,QAAQ,CAACM,EAAE,EAAE;MAMhB,IAAMD,KAAK,GAAGH,IAAI,IAAIF,QAAQ,CAACO,UAAU;MAEzC,OAAOC,OAAO,CAACC,MAAM,CAAC;QAAEC,MAAM,EAAEV,QAAQ,CAACU,MAAM;QAAEL,KAAK,EAALA;OAAO,CAAC;;IAG3D,OAAOH,IAAI;GACZ,CAAC;AACJ;;SC7CwBS,iBAAiBA;EACvC,IAAMC,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMzK,OAAO,GAAGsH,sBAAW,CAACnB,aAAa,CAAC;EAC1C,IAAM1G,iBAAiB,GAAG6H,sBAAW,CAAC1B,uBAAuB,CAAC;EAC9D,IAAA8E,SAAA,GAA8BC,cAAQ,CAAatP,cAAc,CAAC;IAA3DuP,OAAO,GAAAF,SAAA;IAAEG,UAAU,GAAAH,SAAA;EAE1BI,eAAS,CAAC;IACR,IAAI,CAACrL,iBAAiB,EAAE;IACvB;MAAA;uCACK;UAAA,OAAA2K,OAAA,CAAAW,OAAA,CAC0B/B,YAAY,CAACC,GAAG,CACvCxJ,iBAAiB,+CAA4C,CACjE,EAAA+J,IAAA,WAFKwB,QAAQ;YAIdH,UAAU,CACRxP,cAAc,CAAC4P,MAAM,CACnB,UAACC,OAAO;cAAA,OACNF,QAAQ,CAACG,KAAK,CAAChP,SAAS,CACtB,UAACiP,KAAU;gBAAA,OAAKA,KAAK,CAACxO,MAAM,KAAKsO,OAAO,CAACtT,EAAE,IAAI,CAACwT,KAAK,CAACvC,QAAQ;gBAC/D,IAAI,CAAC,IACLqC,OAAO,CAACtT,EAAE,KAAKgC,uBAAS,CAACgB,IAAI,IAAIoF,OAAQ;cAC7C,CACF;YAED,IAAIpC,YAAY,GAAiB,EAAE;YAEnC,SAAAyN,SAAA,GAAAC,+BAAA,CAAsBN,QAAQ,CAACG,KAAK,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;cAAA,IAA3BN,OAAO,GAAAK,KAAA,CAAAE,KAAA;cAChB,SAAAC,UAAA,GAAAJ,+BAAA,CAAoBJ,OAAO,CAACS,MAAM,GAAAC,MAAA,IAAAA,MAAA,GAAAF,UAAA,IAAAF,IAAA,GAAE;gBAAA,IAAzBK,KAAK,GAAAD,MAAA,CAAAH,KAAA;gBACd,IAAI,CAAC7N,YAAY,CAACiO,KAAK,CAACjP,MAAM,CAAC,EAAE;kBAC/BgB,YAAY,CAACiO,KAAK,CAACjP,MAAM,CAAC,GAAG,EAAE;;gBAEjCgB,YAAY,CAACiO,KAAK,CAACjP,MAAM,CAAC,CAACsO,OAAO,CAACtO,MAAM,CAAC,GAAGiP,KAAK,CAAC9O,OAAO;;;YAI9DyN,QAAQ,CAAC3J,eAAe,CAACjD,YAAY,CAAC,CAAC;;SACxC,YAAQkO,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;UAClCG,cAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;SAChC;QAAA,OAAAiC,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA;OACF,QAAAsC,CAAA;QAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;QAAG;GACL,EAAE,CAACrM,iBAAiB,CAAC,CAAC;EAEvB,OAAO0M,aAAO,CACZ;IAAA,OAAO;MACLvB,OAAO,EAAPA;KACD;GAAC,EACF,CAACA,OAAO,CAAC,CACV;AACH;;AChCA,IAAMwB,OAAO,GAAG,SAAVA,OAAOA,CAAAnW,IAAA;gCAAMoW,aAAa;IAAbA,aAAa,GAAAC,kBAAA,cAAG,IAAI,GAAAA,kBAAA;EACrC,IAAMC,eAAe,GAAGC,YAAM,CAAU,KAAK,CAAC;EAC9C,IAAM7O,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMtG,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAM9G,UAAU,GAAG2I,sBAAW,CAACvC,gBAAgB,CAAC;EAChD,IAAM0H,aAAa,GAAGnF,sBAAW,CAAChD,iBAAiB,CAAC;EACpD,IAAMoI,aAAa,GAAGpF,sBAAW,CAAC/C,iBAAiB,CAAC;EACpD,IAAM9E,iBAAiB,GAAG6H,sBAAW,CAAC1B,uBAAuB,CAAC;EAC9D,IAAM4E,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMkC,SAAS,GAAGH,YAAM,EAAO;EAC/B,IAAA9B,SAAA,GAAkDC,cAAQ,CACxD,EAAE,CACH;IAFMiC,iBAAiB,GAAAlC,SAAA;IAAEmC,oBAAoB,GAAAnC,SAAA;EAG9C,IAAAoC,kBAAA,GAAoCvC,iBAAiB,EAAE;IAAtClP,cAAc,GAAAyR,kBAAA,CAAvBlC,OAAO;EACf,IAAMmC,eAAe,GAAGZ,aAAO,CAAC;IAC9B,IAAMjQ,KAAK,GAAGb,cAAc,CAACc,SAAS,CACpC,UAAC2H,MAAM;MAAA,OAAKA,MAAM,CAAClM,EAAE,MAAMyU,aAAa,GAAGI,aAAa,GAAGC,aAAa,CAAC;MAC1E;IACD,IAAIxQ,KAAK,IAAI,CAAC,EAAE,OAAOb,cAAc,CAACa,KAAK,CAAC;IAC5C,OAAOb,cAAc,CAAC,CAAC,CAAC;GACzB,EAAE,CAACoR,aAAa,EAAEC,aAAa,EAAErR,cAAc,CAAC,CAAC;EAClD,IAAM2P,QAAQ,GAAGmB,aAAO,CAAC;IACvB,IAAIE,aAAa,IAAIvO,IAAI,KAAKV,mBAAW,CAACW,MAAM,EAAE;MAChD,OAAO1C,cAAc;;IAGvB,OAAOA,cAAc,CAAC4P,MAAM,CAC1B,UAACC,OAAO;MAAA,OACN0B,iBAAiB,CAACzQ,SAAS,CAAC,UAACvE,EAAO;QAAA,OAAKA,EAAE,KAAKsT,OAAO,CAACtT,EAAE;QAAC,IAAI,CAAC;MACnE;GACF,EAAE,CAACyD,cAAc,EAAEgR,aAAa,EAAEO,iBAAiB,EAAEjO,UAAU,CAAC,CAAC;EAElEmM,eAAS,CAAC;IACR,IAAI,CAACrL,iBAAiB,IAAI3B,IAAI,KAAKV,mBAAW,CAACW,MAAM,EAAE;IACtD;MAAA;uCACK;UAAA,OAAAqM,OAAA,CAAAW,OAAA,CAC0B/B,YAAY,CAACC,GAAG,CACvCxJ,iBAAiB,kEAA6DgN,aAAe,CACjG,EAAAjD,IAAA,WAFKwB,QAAQ;YAId6B,oBAAoB,CAAC7B,QAAQ,CAACgC,MAAM,CAAC;YACrC,IAAIX,aAAa,IAAI,CAACK,aAAa,EAAE;cACnClC,QAAQ,CAACrJ,cAAc,CAAC6J,QAAQ,CAACgC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;YAC7C,IACGT,eAAe,CAACU,OAAO;cACzBV,eAAe,CAACU,OAAO,GAAG,KAAK;cAC/BzC,QAAQ,CAACrJ,cAAc,CAAC6J,QAAQ,CAACgC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;;SAE/C,YAAQlB,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;UAClCG,cAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;SAChC;QAAA,OAAAiC,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA;OACF,QAAAsC,CAAA;QAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;QAAG;GACL,EAAE,CAACrM,iBAAiB,EAAEgN,aAAa,EAAEC,aAAa,EAAE5O,IAAI,EAAEuO,aAAa,CAAC,CAAC;EAE1EvB,eAAS,CAAC;;IACR,IAAIoC,MAAM,GAAG,KAAK;IAClB,IAAIC,MAAc;IAClB,IAAIC,UAAkB;IAEtB,CAAAC,kBAAA,GAAAV,SAAS,CAACM,OAAO,cAAAI,kBAAA,uBAAjBA,kBAAA,CAAmBC,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;;MACtDoB,MAAM,GAAG,IAAI;MACb,CAAAK,mBAAA,GAAAZ,SAAS,CAACM,OAAO,cAAAM,mBAAA,uBAAjBA,mBAAA,CAAmBC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC1CN,MAAM,GAAGrB,CAAC,CAAC4B,KAAK,KAAAC,mBAAA,GAAGhB,SAAS,CAACM,OAAO,cAAAU,mBAAA,uBAAjBA,mBAAA,CAAmBC,UAAU;MAChDR,UAAU,IAAAS,mBAAA,GAAGlB,SAAS,CAACM,OAAO,cAAAY,mBAAA,uBAAjBA,mBAAA,CAAmBT,UAAU;KAC3C,CAAC;IACF,CAAAU,mBAAA,GAAAnB,SAAS,CAACM,OAAO,cAAAa,mBAAA,uBAAjBA,mBAAA,CAAmBR,gBAAgB,CAAC,YAAY,EAAE;MAChDJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAC,mBAAA,GAAArB,SAAS,CAACM,OAAO,cAAAe,mBAAA,uBAAjBA,mBAAA,CAAmBV,gBAAgB,CAAC,SAAS,EAAE;MAC7CJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAE,mBAAA,GAAAtB,SAAS,CAACM,OAAO,cAAAgB,mBAAA,uBAAjBA,mBAAA,CAAmBX,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;MACtD,IAAI,CAACoB,MAAM,EAAE;MACbpB,CAAC,CAACoC,cAAc,EAAE;MAClB,IAAMxW,CAAC,GAAGoU,CAAC,CAAC4B,KAAK,GAAGf,SAAS,CAACM,OAAO,CAACW,UAAU;MAChD,IAAMO,IAAI,GAAG,CAACzW,CAAC,GAAGyV,MAAM,IAAI,CAAC;MAC7BR,SAAS,CAACM,OAAO,CAACG,UAAU,GAAGA,UAAU,GAAGe,IAAI;KACjD,CAAC;GACH,CAAC;EAEF,IAAMC,SAAS,GAAG,SAAZA,SAASA;IACb,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,IAAMG,UAAU,GAAG,SAAbA,UAAUA;IACd,IAAIJ,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,OACE3X;IAAK4Q,SAAS;KACZ5Q,wCACG0V,aAAa,GACV,qCAAqC,GACrC,mCAAmC,CACrC,EACJ1V;IAAK4Q,SAAS,EAAC;KACb5Q,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE0G;IACT,EACFzX,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE+G;IACT,CACE,EACN9X;IAAK4Q,SAAS,EAAC,2BAA2B;IAACuB,GAAG,EAAE6D;KAC9ChW;IAAK4Q,SAAS,EAAC;KACZyD,QAAQ,CAACxD,GAAG,CAAC,UAAC0D,OAAO;IAAA,OACpBvU;MACE4Q,SAAS,iBAAe5J,KAAK,CAACgK,SAAS,UACrCuD,OAAO,CAACtT,EAAE,KAAKmV,eAAe,CAACnV,EAAE,GAAG,QAAQ,GAAG,EACjD,CAAE;MACF6P,GAAG,EAAEyD,OAAO,CAACtT,EAAE;MACf8P,OAAO,EAAE,SAAAA;QACP,IAAI2E,aAAa,EAAE;UACjB7B,QAAQ,CAACtJ,cAAc,CAACgK,OAAO,CAACtT,EAAE,CAAC,CAAC;UACpC2U,eAAe,CAACU,OAAO,GAAG,IAAI;SAC/B,MAAM;UACLzC,QAAQ,CAACrJ,cAAc,CAAC+J,OAAO,CAACtT,EAAE,CAAC,CAAC;UACpC4S,QAAQ,CAAChI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;;;OAI/B7L,6BAACuU,OAAO,CAAC3P,IAAI,OAAG,EAChB5E,2CAAOuU,OAAO,CAAC5P,KAAK,CAAQ,CACxB;GACP,CAAC,CACE,CACF,CACF;AAEV,CAAC;;AC/JD,IAAMqT,kBAAkB,GAAG,SAArBA,kBAAkBA;EACtB,IAAMhR,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMwK,gBAAgB,GAAGtH,sBAAW,CAACxC,oBAAoB,CAAC;EAC1D,IAAM6H,SAAS,GAAGH,YAAM,EAAO;EAE/B,IAAMhC,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAAoE,UAAA,GAAoBC,uBAAS,EAAE;IAAvBC,OAAO,GAAAF,UAAA,CAAPE,OAAO;EACf,IAAAC,QAAA,GAA+B7C,aAAO,CAAC;MACrC,IAAM8C,QAAQ,GAAU,EAAE;MAC1B,IAAMC,UAAU,GAAU,EAAE;MAC5B,SAAA7D,SAAA,GAAAC,+BAAA,CAAqByD,OAAO,GAAAxD,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;QAAA,IAAnB2D,MAAM,GAAA5D,KAAA,CAAAE,KAAA;QACf,IACE0D,MAAM,CAACC,UAAU,KAAKC,kCAAgB,CAACC,SAAS,IAChDH,MAAM,CAACC,UAAU,KAAKC,kCAAgB,CAACE,QAAQ,EAC/C;UACAN,QAAQ,CAACO,IAAI,CAACL,MAAM,CAAC;SACtB,MAAM,IAAIA,MAAM,CAACC,UAAU,KAAKC,kCAAgB,CAACI,WAAW,EAAE;UAC7DP,UAAU,CAACM,IAAI,CAACL,MAAM,CAAC;;;MAG3B,OAAO,CAACF,QAAQ,EAAEC,UAAU,CAAC;KAC9B,EAAE,CAACH,OAAO,CAAC,CAAC;IAdNE,QAAQ,GAAAD,QAAA;IAAEE,UAAU,GAAAF,QAAA;EAgB3BlE,eAAS,CAAC;;IACR,IAAIoC,MAAM,GAAG,KAAK;IAClB,IAAIC,MAAc;IAClB,IAAIC,UAAkB;IAEtB,CAAAC,kBAAA,GAAAV,SAAS,CAACM,OAAO,cAAAI,kBAAA,uBAAjBA,kBAAA,CAAmBC,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;;MACtDoB,MAAM,GAAG,IAAI;MACb,CAAAK,mBAAA,GAAAZ,SAAS,CAACM,OAAO,cAAAM,mBAAA,uBAAjBA,mBAAA,CAAmBC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC1CN,MAAM,GAAGrB,CAAC,CAAC4B,KAAK,KAAAC,mBAAA,GAAGhB,SAAS,CAACM,OAAO,cAAAU,mBAAA,uBAAjBA,mBAAA,CAAmBC,UAAU;MAChDR,UAAU,IAAAS,mBAAA,GAAGlB,SAAS,CAACM,OAAO,cAAAY,mBAAA,uBAAjBA,mBAAA,CAAmBT,UAAU;KAC3C,CAAC;IACF,CAAAU,mBAAA,GAAAnB,SAAS,CAACM,OAAO,cAAAa,mBAAA,uBAAjBA,mBAAA,CAAmBR,gBAAgB,CAAC,YAAY,EAAE;MAChDJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAC,mBAAA,GAAArB,SAAS,CAACM,OAAO,cAAAe,mBAAA,uBAAjBA,mBAAA,CAAmBV,gBAAgB,CAAC,SAAS,EAAE;MAC7CJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAE,mBAAA,GAAAtB,SAAS,CAACM,OAAO,cAAAgB,mBAAA,uBAAjBA,mBAAA,CAAmBX,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;MACtD,IAAI,CAACoB,MAAM,EAAE;MACbpB,CAAC,CAACoC,cAAc,EAAE;MAClB,IAAMxW,CAAC,GAAGoU,CAAC,CAAC4B,KAAK,GAAGf,SAAS,CAACM,OAAO,CAACW,UAAU;MAChD,IAAMO,IAAI,GAAG,CAACzW,CAAC,GAAGyV,MAAM,IAAI,CAAC;MAC7BR,SAAS,CAACM,OAAO,CAACG,UAAU,GAAGA,UAAU,GAAGe,IAAI;KACjD,CAAC;GACH,CAAC;EAEF,IAAMC,SAAS,GAAG,SAAZA,SAASA;IACb,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,IAAMG,UAAU,GAAG,SAAbA,UAAUA;IACd,IAAIJ,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,OACE3X;IAAK4Q,SAAS;KACZ5Q,yDAAqB,EACrBA;IAAK4Q,SAAS,EAAC;KACb5Q,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE0G;IACT,EACFzX,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE+G;IACT,CACE,EACN9X;IAAK4Q,SAAS,EAAC,2BAA2B;IAACuB,GAAG,EAAE6D;KAC9ChW;IAAK4Q,SAAS,EAAC;KACZ0H,QAAQ,CAACzH,GAAG,CAAC,UAAC2H,MAAM,EAAEjT,KAAK;IAAA,OAC1BvF;MACE4Q,SAAS,iBAAe5J,KAAK,CAACgK,SAAS,UACrCwH,MAAM,CAACO,OAAO,CAACjP,IAAI,KAAKmO,gBAAgB,GAAG,QAAQ,GAAG,EACxD,CAAE;MACFlH,OAAO,EAAE,SAAAA;QAAA,OAAM8C,QAAQ,CAAC3I,iBAAiB,CAACsN,MAAM,CAACO,OAAO,CAACjP,IAAI,CAAC,CAAC;;MAC/DgH,GAAG,EAAK0H,MAAM,CAACO,OAAO,CAACjP,IAAI,SAAIvE;OAE/BvF;MAAKgZ,GAAG,EAAER,MAAM,CAACO,OAAO,CAACnU,IAAI;MAAEqU,GAAG,EAAET,MAAM,CAACO,OAAO,CAACjP;MAAQ,EAC3D9J,2CAAOwY,MAAM,CAACO,OAAO,CAACjP,IAAI,CAAQ,CAC9B;GACP,CAAC,EACDyO,UAAU,CAAC1H,GAAG,CAAC,UAAC2H,MAAM,EAAEjT,KAAK;IAAA,OAC5BvF,6BAACmR,YAAY;MACXC,EAAE,EAAEoH,MAAM,CAACO,OAAO,CAACvG,GAAG;MACtB5B,SAAS,iBAAe5J,KAAK,CAACgK,SAAW;MACzCF,GAAG,EAAK0H,MAAM,CAACO,OAAO,CAACjP,IAAI,SAAIvE;OAE/BvF;MAAKgZ,GAAG,EAAER,MAAM,CAACO,OAAO,CAACnU,IAAI;MAAEqU,GAAG,EAAET,MAAM,CAACO,OAAO,CAACjP;MAAQ,EAC3D9J,sDAEEA,wCAAM,EACLwY,MAAM,CAACO,OAAO,CAACjP,IAAI,CACf,CACM;GAChB,CAAC,CACE,CACF,CACF;AAEV,CAAC;;AChHD,IAAMoP,YAAY,GAAG,SAAfA,YAAYA;EAChB,IAAMlS,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMwK,gBAAgB,GAAGtH,sBAAW,CAACxC,oBAAoB,CAAC;EAC1D,IAAM6H,SAAS,GAAGH,YAAM,EAAO;EAE/B,IAAMhC,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAAoE,UAAA,GAAoBC,qCAAS,EAAE;IAAvBC,OAAO,GAAAF,UAAA,CAAPE,OAAO;EACf,IAAAC,QAAA,GAA+B7C,aAAO,CAAC;MACrC,IAAM8C,QAAQ,GAAU,EAAE;MAC1B,IAAMC,UAAU,GAAU,EAAE;MAC5B,SAAA7D,SAAA,GAAAC,+BAAA,CAAqByD,OAAO,GAAAxD,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;QAAA,IAAnB2D,MAAM,GAAA5D,KAAA,CAAAE,KAAA;QACf,IACE0D,MAAM,CAACvO,KAAK,KAAKkP,sCAAY,CAACC,SAAS,IACvCZ,MAAM,CAACvO,KAAK,KAAKkP,sCAAY,CAACE,UAAU,IACxCb,MAAM,CAACvO,KAAK,KAAKkP,sCAAY,CAACG,OAAO,EACrC;UACAhB,QAAQ,CAACO,IAAI,CAACL,MAAM,CAAC;SACtB,MAAM,IAAIA,MAAM,CAACvO,KAAK,KAAKkP,sCAAY,CAACI,QAAQ,EAAE;UACjDhB,UAAU,CAACM,IAAI,CAACL,MAAM,CAAC;;;MAG3B,OAAO,CAACF,QAAQ,EAAEC,UAAU,CAAC;KAC9B,EAAE,CAACH,OAAO,CAAC,CAAC;IAfNE,QAAQ,GAAAD,QAAA;IAAEE,UAAU,GAAAF,QAAA;EAiB3BlE,eAAS,CAAC;;IACR,IAAIoC,MAAM,GAAG,KAAK;IAClB,IAAIC,MAAc;IAClB,IAAIC,UAAkB;IAEtB,CAAAC,kBAAA,GAAAV,SAAS,CAACM,OAAO,cAAAI,kBAAA,uBAAjBA,kBAAA,CAAmBC,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;;MACtDoB,MAAM,GAAG,IAAI;MACb,CAAAK,mBAAA,GAAAZ,SAAS,CAACM,OAAO,cAAAM,mBAAA,uBAAjBA,mBAAA,CAAmBC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC1CN,MAAM,GAAGrB,CAAC,CAAC4B,KAAK,KAAAC,mBAAA,GAAGhB,SAAS,CAACM,OAAO,cAAAU,mBAAA,uBAAjBA,mBAAA,CAAmBC,UAAU;MAChDR,UAAU,IAAAS,mBAAA,GAAGlB,SAAS,CAACM,OAAO,cAAAY,mBAAA,uBAAjBA,mBAAA,CAAmBT,UAAU;KAC3C,CAAC;IACF,CAAAU,mBAAA,GAAAnB,SAAS,CAACM,OAAO,cAAAa,mBAAA,uBAAjBA,mBAAA,CAAmBR,gBAAgB,CAAC,YAAY,EAAE;MAChDJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAC,mBAAA,GAAArB,SAAS,CAACM,OAAO,cAAAe,mBAAA,uBAAjBA,mBAAA,CAAmBV,gBAAgB,CAAC,SAAS,EAAE;MAC7CJ,MAAM,GAAG,KAAK;MACdP,SAAS,CAACM,OAAO,CAACO,SAAS,CAACO,MAAM,CAAC,QAAQ,CAAC;KAC7C,CAAC;IACF,CAAAE,mBAAA,GAAAtB,SAAS,CAACM,OAAO,cAAAgB,mBAAA,uBAAjBA,mBAAA,CAAmBX,gBAAgB,CAAC,WAAW,EAAE,UAACxB,CAAM;MACtD,IAAI,CAACoB,MAAM,EAAE;MACbpB,CAAC,CAACoC,cAAc,EAAE;MAClB,IAAMxW,CAAC,GAAGoU,CAAC,CAAC4B,KAAK,GAAGf,SAAS,CAACM,OAAO,CAACW,UAAU;MAChD,IAAMO,IAAI,GAAG,CAACzW,CAAC,GAAGyV,MAAM,IAAI,CAAC;MAC7BR,SAAS,CAACM,OAAO,CAACG,UAAU,GAAGA,UAAU,GAAGe,IAAI;KACjD,CAAC;GACH,CAAC;EAEF,IAAMC,SAAS,GAAG,SAAZA,SAASA;IACb,IAAIC,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,IAAMG,UAAU,GAAG,SAAbA,UAAUA;IACd,IAAIJ,IAAI,GAAG,CAAC;IACZ,IAAMC,OAAO,GAAGC,WAAW,CAAC;MAC1B5B,SAAS,CAACM,OAAO,CAACG,UAAU,IAAI,EAAE;MAClC,IAAIiB,IAAI,EAAE,KAAK,EAAE,EAAEG,aAAa,CAACF,OAAO,CAAC;KAC1C,EAAE,EAAE,CAAC;GACP;EAED,OACE3X;IAAK4Q,SAAS;KACZ5Q,yDAAqB,EACrBA;IAAK4Q,SAAS,EAAC;KACb5Q,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE0G;IACT,EACFzX,6BAAC+X,KAAS;IACRnY,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;IACrDD,OAAO,EAAE+G;IACT,CACE,EACN9X;IAAK4Q,SAAS,EAAC,2BAA2B;IAACuB,GAAG,EAAE6D;KAC9ChW;IAAK4Q,SAAS,EAAC;KACZ0H,QAAQ,CAACzH,GAAG,CAAC,UAAC2H,MAAM,EAAEjT,KAAK;IAAA,OAC1BvF;MACE4Q,SAAS,iBAAe5J,KAAK,CAACgK,SAAS,UACrCwH,MAAM,CAACO,OAAO,CAACjP,IAAI,KAAKmO,gBAAgB,GAAG,QAAQ,GAAG,EACxD,CAAE;MACFlH,OAAO,EAAE,SAAAA;QAAA,OAAM8C,QAAQ,CAAC3I,iBAAiB,CAACsN,MAAM,CAACO,OAAO,CAACjP,IAAI,CAAC,CAAC;;MAC/DgH,GAAG,EAAK0H,MAAM,CAACO,OAAO,CAACjP,IAAI,SAAIvE;OAE/BvF;MAAKgZ,GAAG,EAAER,MAAM,CAACO,OAAO,CAACnU,IAAI;MAAEqU,GAAG,EAAET,MAAM,CAACO,OAAO,CAACjP;MAAQ,EAC3D9J,2CAAOwY,MAAM,CAACO,OAAO,CAACjP,IAAI,CAAQ,CAC9B;GACP,CAAC,EACDyO,UAAU,CAAC1H,GAAG,CAAC,UAAC2H,MAAM,EAAEjT,KAAK;IAAA,OAC5BvF,6BAACmR,YAAY;MACXC,EAAE,EAAEoH,MAAM,CAACO,OAAO,CAACvG,GAAG;MACtB5B,SAAS,iBAAe5J,KAAK,CAACgK,SAAW;MACzCF,GAAG,EAAK0H,MAAM,CAACO,OAAO,CAACjP,IAAI,SAAIvE;OAE/BvF;MAAKgZ,GAAG,EAAER,MAAM,CAACO,OAAO,CAACnU,IAAI;MAAEqU,GAAG,EAAET,MAAM,CAACO,OAAO,CAACjP;MAAQ,EAC3D9J,sDAEEA,wCAAM,EACLwY,MAAM,CAACO,OAAO,CAACjP,IAAI,CACf,CACM;GAChB,CAAC,CACE,CACF,CACF;AAEV,CAAC;;AC5FD,IAAM0P,kBAAkB,GAAG,SAArBA,kBAAkBA,CACtBC,OAAgB,EAChBC,eACAC,kBAA8B,EAC9BC,aAAsB;EAAA,IAFtBF;IAAAA,gBAAwB,EAAE;;EAAA,OAGtB;IACJD,OAAO,EAAPA,OAAO;IACPC,aAAa,EAAbA,aAAa;IACbC,kBAAkB,EAAlBA,kBAAkB;IAClBC,aAAa,EAAbA;GACD;AAAA,CAAC;AAEF,SAASC,gBAAgBA;EAMvB,IAAMhG,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMgG,UAAU,GAAGnJ,sBAAW,CAACtC,uBAAuB,CAAC;EACvD,IAAA0L,gBAAA,GAAqCC,uBAAe,EAAE;IAAnCC,aAAa,GAAAF,gBAAA,CAAxBG,SAAS;EACjB,IAAAC,cAAA,GAAiCC,qCAAa,EAAE;IAA/BC,WAAW,GAAAF,cAAA,CAApB/T,OAAO;EACf,IAAAkU,qBAAA,GAAwCC,0BAAoB,EAAE;IAAtCC,WAAW,GAAAF,qBAAA,CAA3BG,cAAc;EACtB,IAAAC,iBAAA,GAA0BC,sBAAgB,EAAE;IAApCC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;EAErB,IAAMC,oBAAoB,GAAyBC,yBAAmB,EAAE;EAExE,IAAAxb,IAAA,GAIIub,oBAAoB,IAAI;MAC1BzU,OAAO,EAAE,IAAI;MACbN,OAAO,EAAE,IAAI;MACbiV,WAAW,EAAE;KACd;IAPUC,UAAU,GAAA1b,IAAA,CAAnB8G,OAAO;IACE6U,UAAU,GAAA3b,IAAA,CAAnBwG,OAAO;IACPiV,WAAW,GAAAzb,IAAA,CAAXyb,WAAW;EAOb,IAAM1T,WAAW,GAAGsJ,sBAAW,CAAChD,iBAAiB,CAAC;EAClD,IAAMrG,WAAW,GAAGqJ,sBAAW,CAAC/C,iBAAiB,CAAC;EAClD,IAAMnE,qBAAqB,GAAGkH,sBAAW,CAACjB,yBAAyB,CAAC;EACpE,IAAMwL,YAAY,GAAG1F,aAAO,CAAC;IAC3B,IAAInO,WAAW,KAAKpE,uBAAS,CAACgB,IAAI,IAAI,CAACwF,qBAAqB,EAC1D,OAAOnC,WAAW;IACpB,OAAOD,WAAW;GACnB,EAAE,CAACA,WAAW,EAAEC,WAAW,EAAEmC,qBAAqB,CAAC,CAAC;EACrD,IAAM0R,UAAU,GAAGJ,WAAW,IAAI,CAAC,CAACC,UAAU;EAC9C,IAAM1S,YAAY,GAAGqI,sBAAW,CAAClC,kBAAkB,CAAC;EACpD,IAAM2M,iBAAiB,GAAGjY,kBAAkB,CAAC+X,YAAY,CAAC;EAC1D,IAAMG,oBAAoB,GAAGJ,UAAU,KAAKG,iBAAiB;EAC7D,IAAME,MAAM,GAAGC,wBAAkB,EAAE;EAEnCpH,eAAS,CAAC;;IACR,IACE,EAAAqH,YAAA,GAAAF,MAAM,CAACnI,IAAI,cAAAqI,YAAA,uBAAXA,YAAA,CAAaC,KAAK,MAAK,eAAe,IACtC,EAAAC,aAAA,GAAAJ,MAAM,CAACnI,IAAI,cAAAuI,aAAA,uBAAXA,aAAA,CAAaD,KAAK,MAAK,iBAAiB,EACxC;MAAA,IAAAE,aAAA,EAAAC,qBAAA;MACAC,YAAY,CAACC,OAAO,CAAC,QAAQ,GAAAH,aAAA,GAAEL,MAAM,CAACnI,IAAI,cAAAwI,aAAA,wBAAAC,qBAAA,GAAXD,aAAA,CAAaI,UAAU,cAAAH,qBAAA,uBAAvBA,qBAAA,CAAyB9R,IAAI,CAAC;;GAEhE,EAAE,CAACwR,MAAM,CAAC,CAAC;EAEZ,IAAM3B,kBAAkB,GAAGqC,iBAAW;IAAA;;YAChCxB,WAAW,IAAIY,iBAAiB;UAClC,IAAI,CAACvV,UAAU,CAACqV,YAAY,CAAC,EAAE;YAC7B;;UACD,OAAAe,MAAA,aAEG;YACF,IAAMzD,MAAM,GAAGqD,YAAY,CAACK,OAAO,CAAC,QAAQ,CAAC;YAC7C,IAAI1D,MAAM,KAAK,SAAS,IAAI4C,iBAAiB,KAAK,QAAQ,EAAE;YAAM,OAAA3H,OAAA,CAAAW,OAAA,CAC5DwG,aAAa,CAACQ,iBAAiB,CAAC,EAAAvI,IAAA;WACvC,YAAQsC,CAAC,EAAE;YACV7M,YAAY,CAAC6M,CAAC,CAAC;WAChB;;;KAEJ,QAAAA,CAAA;MAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;KAAE,CAACqF,WAAW,EAAEY,iBAAiB,EAAEF,YAAY,CAAC,CAAC;EAElD,OAAO1F,aAAO,CAAC;IACb,IAAI0F,YAAY,KAAKjY,uBAAS,CAACc,MAAM,EAAE;MACrC,IAAIkW,aAAa,EAAE;QACjB,OAAOT,kBAAkB,CACvB,IAAI,EACJzR,SAAS,EACT4R,kBAAkB,EAClBM,aAAa,CAACkC,QAAQ,EAAE,CACzB;;MAEH,OAAO3C,kBAAkB,CACvB,KAAK,EACL,sBAAsB,EACtBG,kBAAkB,EAClB,EAAE,CACH;KACF,MAAM,IAAIuB,YAAY,KAAKjY,uBAAS,CAACe,IAAI,EAAE;MAC1C,IAAIqW,WAAW,EAAE;QACf,OAAOb,kBAAkB,CACvB,IAAI,EACJzR,SAAS,EACT4R,kBAAkB,EAClBU,WAAW,CACZ;;MAEH,OAAOb,kBAAkB,CACvB,KAAK,EACL,sBAAsB,EACtBG,kBAAkB,EAClB,EAAE,CACH;KACF,MAAM,IAAI9T,UAAU,CAACqV,YAAY,CAAC,IAAIC,UAAU,IAAIH,UAAU,EAAE;MAC/D,IAAIK,oBAAoB,EAAE;QACxB,OAAO7B,kBAAkB,CACvB,IAAI,EACJzR,SAAS,EACT4R,kBAAkB,EAClBqB,UAAU,CACX;OACF,MAAM;QACL,IAAIR,WAAW,IAAIY,iBAAiB,EAAE;UACpC,IAAItB,UAAU,EAAE;YACdH,kBAAkB,EAAE;WACrB,MAAM;YACL9F,QAAQ,CACNtJ,cAAc,CACZ/F,kBAAkB,CAACyW,UAAU,IAAI/X,gBAAgB,CAACG,QAAQ,CAAC,CAC5D,CACF;YACDiS,cAAK,CAAC8G,OAAO,0BAETvY,qBAAqB,CACnBW,kBAAkB,CAACyW,UAAU,IAAI/X,gBAAgB,CAACG,QAAQ,CAAC,CAE7D,CACH;;;QAIL,IAAI4X,UAAU,IAAInB,UAAU,EAC1B,OAAON,kBAAkB,CACvB,KAAK,+BAEH3V,qBAAqB,CAACW,kBAAkB,CAAC4W,iBAAiB,CAAC,CAC7D,EACAzB,kBAAkB,EAClBqB,UAAU,CACX;;;IAIP,OAAOxB,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAEG,kBAAkB,EAAE5R,SAAS,CAAC;GACpE,EAAE,CACDmT,YAAY,EACZpB,UAAU,EACVH,kBAAkB,EAClBM,aAAa,EACbI,WAAW,EACXc,UAAU,EACVC,iBAAiB,EACjBC,oBAAoB,EACpBb,WAAW,EACXQ,UAAU,EACVC,UAAU,CACX,CAAC;AACJ;;AC7LO,IAAMoB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIjW,OAAe;EACjD,IAAMkW,IAAI,GAAG,SAAPA,IAAIA,CAAIC,IAAY;IAAA,OAAKA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,UAAU,CAAC,IAAI,CAAC;;EACrD,QAAUpW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqW,SAAS,CAAC,CAAC,EAAEH,IAAI,CAAClW,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAMA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsW,MAAM,CACzEtW,OAAO,CAACuW,MAAM,IAAIL,IAAI,CAAClW,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACzC;AACH,CAAC;;ACPM,IAAMwW,gBAAgB,GAAG,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SCGpCC,uCAAuCA,CACnDC,KAAgB,EAChBC,eAA0B,EAC1BC,KAAgB,EAChBC,IAAe,EACfC,SAAS,EACTC,wBAAwB;MADxBD,SAAS;IAATA,SAAS,GAAGE,yBAAgB;;EAAA,IAC5BD,wBAAwB;IAAxBA,wBAAwB,GAAGE,oCAA2B;;EAEtD,IAAMC,IAAI,GAAG,CACT;IAAEC,MAAM,EAAET,KAAK;IAAEU,QAAQ,EAAE,IAAI;IAAEC,UAAU,EAAE;GAAM,EACnD;IAAEF,MAAM,EAAER,eAAe;IAAES,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAM,EAC9D;IAAEF,MAAM,EAAEP,KAAK;IAAEQ,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAO,EACrD;IAAEF,MAAM,EAAEN,IAAI;IAAEO,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAO,EACpD;IAAEF,MAAM,EAAEG,qBAAa,CAACR,SAAS;IAAEM,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAO,EACvE;IAAEF,MAAM,EAAEL,SAAS;IAAEM,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAO,EACzD;IAAEF,MAAM,EAAEI,0BAAkB;IAAEH,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;GAAO,CACrE;EAED,OAAO,IAAIG,8BAAsB,CAAC;IAC9BN,IAAI,EAAJA,IAAI;IACJJ,SAAS,EAAEC,wBAAwB;IACnChK,IAAI,EAAE0K,MAAM,CAACC,KAAK,CAAC,CAAC;GACvB,CAAC;AACN;;ICjBsBC,cAAc,YAAdA,cAAcA,CAChCC,UAAsB,EACtB5X,OAAkB,EAClB6X,UAAuB,EACvBf,SAAS;EAAA,IAATA,SAAS;IAATA,SAAS,GAAGE,yBAAgB;;EAAA;2BAETY,UAAU,CAACD,cAAc,CAAC3X,OAAO,EAAE6X,UAAU,CAAC,EAAApL,IAAA,WAA3DqL,IAAI;MACV,IAAI,CAACA,IAAI,EAAE,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;MACvD,IAAI,CAACD,IAAI,CAAClB,KAAK,CAACoB,MAAM,CAAClB,SAAS,CAAC,EAAE,MAAM,IAAIiB,KAAK,CAAC,+BAA+B,CAAC;MACnF,IAAID,IAAI,CAAC/K,IAAI,CAACwJ,MAAM,IAAI0B,sBAAa,CAACC,IAAI,EAAE,MAAM,IAAIH,KAAK,CAAC,8BAA8B,CAAC;MAE3F,IAAMI,UAAU,GAAGF,sBAAa,CAACG,MAAM,CAACX,MAAM,CAACY,IAAI,CAACP,IAAI,CAAC/K,IAAI,CAAC,CAAC;MAE/D,OAAO;QACH/M,OAAO,EAAPA,OAAO;QACP6W,IAAI,EAAEsB,UAAU,CAACtB,IAAI;QACrBD,KAAK,EAAEuB,UAAU,CAACvB,KAAK;QACvB5U,MAAM,EAAEmW,UAAU,CAACnW,MAAM;QACzBsW,QAAQ,EAAEH,UAAU,CAACI,cAAc,GAAGJ,UAAU,CAACG,QAAQ,GAAG,IAAI;QAChEE,eAAe,EAAEL,UAAU,CAACK,eAAe;QAC3CC,aAAa,EAAEN,UAAU,CAACtU,KAAK,KAAK6U,YAAY,CAACC,aAAa;QAC9DC,QAAQ,EAAET,UAAU,CAACtU,KAAK,KAAK6U,YAAY,CAACG,MAAM;QAClDC,QAAQ,EAAE,CAAC,CAACX,UAAU,CAACY,cAAc;QACrCC,iBAAiB,EAAEb,UAAU,CAACY,cAAc,GAAGZ,UAAU,CAACW,QAAQ,GAAG,IAAI;QACzEG,cAAc,EAAEd,UAAU,CAACe,oBAAoB,GAAGf,UAAU,CAACc,cAAc,GAAG;OACjF;;GACJ,QAAAlK,CAAA;IAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;AAAA;AAhCD,AAAA,IAAY2J,YAIX;AAJD,WAAYA,YAAY;EACpBA,iEAAiB;EACjBA,6DAAe;EACfA,mDAAU;AACd,CAAC,EAJWA,YAAY,KAAZA,YAAY;;ICAFS,yBAAyB,YAAzBA,yBAAyBA,CAC3CtC,IAAe,EACfD,KAAgB,EAChBwC,kBAAkB,EAClBtC,SAAS,EACTC,wBAAwB;EAAA,IAFxBqC,kBAAkB;IAAlBA,kBAAkB,GAAG,KAAK;;EAAA,IAC1BtC,SAAS;IAATA,SAAS,GAAGE,yBAAgB;;EAAA,IAC5BD,wBAAwB;IAAxBA,wBAAwB,GAAGE,oCAA2B;;EAAA;IAEtD,IAAI,CAACmC,kBAAkB,IAAI,CAACC,iBAAS,CAACC,SAAS,CAAC1C,KAAK,CAAC2C,QAAQ,EAAE,CAAC,EAAE,MAAM,IAAIxB,KAAK,CAAC,yBAAyB,CAAC;IAAA,OAAA1K,OAAA,CAAAW,OAAA,CAErFqL,iBAAS,CAACG,kBAAkB,CAChD,CAAC5C,KAAK,CAAC2C,QAAQ,EAAE,EAAEzC,SAAS,CAACyC,QAAQ,EAAE,EAAE1C,IAAI,CAAC0C,QAAQ,EAAE,CAAC,EACzDxC,wBAAwB,CAC3B,EAAAtK,IAAA,WAAAvT,IAAA;MAAA,IAHM8G,OAAO,GAAA9G,IAAA;MAKd,OAAO8G,OAAO;;GACjB,QAAA+O,CAAA;IAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;AAAA;;ICRqB0K,iCAAiC,YAAjCA,iCAAiCA,CACrD7B,UAAsB,EACtBlB,KAAgB,EAChBG,IAAe,EACfD,KAAgB,EAChB8C,eAAoE,EACpEN,kBAAkB,EAClBvB,UAAuB,EACvBf,SAAS,EACTC,wBAAwB;EAAA,IAHxBqC,kBAAkB;IAAlBA,kBAAkB,GAAG,KAAK;;EAAA,IAE1BtC,SAAS;IAATA,SAAS,GAAGE,yBAAgB;;EAAA,IAC5BD,wBAAwB;IAAxBA,wBAAwB,GAAGE,oCAA2B;;EAAA;2BAExBkC,yBAAyB,CACrDtC,IAAI,EACJD,KAAK,EACLwC,kBAAkB,EAClBtC,SAAS,EACTC,wBAAwB,CACzB,EAAAtK,IAAA,WANKkK,eAAe;MAAA,IAAAgD,KAAA;MAAA,SAAAC,OAAAC,OAAA;QAAA,IAAAF,KAAA,SAAAE,OAAA;QAoErB,IAAI,CAACC,OAAO,CAACjD,IAAI,CAACmB,MAAM,CAACnB,IAAI,CAAC,EAAE,MAAMkB,KAAK,CAAC,uBAAuB,CAAC;QACpE,IAAI,CAAC+B,OAAO,CAAClD,KAAK,CAACoB,MAAM,CAACpB,KAAK,CAAC,EAAE,MAAM,IAAImB,KAAK,CAAC,wBAAwB,CAAC;QAE3E,OAAO+B,OAAO;;MA7Dd,IAAIA,OAAO;MAAA,IAAAC,MAAA,GAAAlE,MAAA,aACP;QAAA,OAAAxI,OAAA,CAAAW,OAAA,CACc2J,cAAc,CAC5BC,UAAU,EACVjB,eAAe,EACfkB,UAAU,EACVf,SAAS,CACV,EAAArK,IAAA,WAAAuN,eAAA;UALDF,OAAO,GAAAE,eAKN;;OAEF,YAAQ9M,KAAK,EAAE;QAId,IAAM+M,GAAG,GAAG/M,KAA4B;QAAA;UAAA,IAEtC+M,GAAG,CAACC,OAAO,KAAK,2BAA2B,IAC3CD,GAAG,CAACC,OAAO,KAAK,+BAA+B;YAAA,IAAAC,MAAA,YAAAA;cAAA,OAAA9M,OAAA,CAAAW,OAAA,CA+B/B2J,cAAc,CAC5BC,UAAU,EACVjB,eAAe,EACfkB,UAAU,EACVf,SAAS,CACV,EAAArK,IAAA,WAAA2N,gBAAA;gBALDN,OAAO,GAAAM,gBAKN;;;YAAA,IAAAjL,KAAA,GAAA0G,MAAA,aAjCG;cACF,IAAMwE,WAAW,GAAG,IAAIC,mBAAW,EAAE,CAAC5J,GAAG,CACvC+F,uCAAuC,CACrCC,KAAK,EACLC,eAAe,EACfC,KAAK,EACLC,IAAI,EACJC,SAAS,EACTC,wBAAwB,CACzB,CACF;cAAA,OAAA1J,OAAA,CAAAW,OAAA,CAEuB4J,UAAU,CAAC2C,kBAAkB,EAAE,EAAA9N,IAAA,WAAjD+N,SAAS;gBAAA,OAAAnN,OAAA,CAAAW,OAAA,CACc0I,KAAK,EAAAjK,IAAA,WAAAgO,MAAA;kBAAlCJ,WAAW,CAACK,QAAQ,GAAAD,MAAc;kBAAA,OAAApN,OAAA,CAAAW,OAAA,CACEwM,SAAS,CAACG,SAAS,EAAAlO,IAAA,WAAAmO,oBAAA;oBAAvDP,WAAW,CAACQ,eAAe,GAAAD,oBAA4B;oBAAA,OAAAvN,OAAA,CAAAW,OAAA,CAClC0L,eAAe,CAACW,WAAW,CAAC,EAAA5N,IAAA,WAA3CqO,MAAM;sBAAA,OAAAzN,OAAA,CAAAW,OAAA,CAEY4J,UAAU,CAACmD,kBAAkB,CACnDD,MAAM,CAACE,SAAS,EAAE,CACnB,EAAAvO,IAAA,WAFKnJ,SAAS;wBAAA,OAAA+J,OAAA,CAAAW,OAAA,CAIT4J,UAAU,CAACqD,kBAAkB,CAAC3X,SAAS,CAAC,EAAAmJ,IAAA;;;;;;aAC/C;YAAA,OAAA0C,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA,CAAA0N,MAAA,IAAAA,MAAA,CAAAhL,KAAA;;YAaD,MAAMjC,KAAK;;;OAEd;MAAA,OAAA6M,MAAA,IAAAA,MAAA,CAAAtN,IAAA,GAAAsN,MAAA,CAAAtN,IAAA,CAAAmN,MAAA,IAAAA,MAAA,CAAAG,MAAA;;GAMF,QAAAhL,CAAA;IAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;AAAA;;AC3FM,IAAMmM,OAAO,GAAQ,IAAIC,eAAO,CAAC;EACtCC,QAAQ,EAAE;CACX,CAAC;AACFF,OAAO,CAACG,UAAU,CAACze,uBAAuB,CAAC;;ACDpC,IAAM0e,cAAc,GAAG,IAAIC,IAAI,CAACC,YAAY,CAAC,OAAO,EAAE;EAC3DC,qBAAqB,EAAE;CACxB,CAAC;AAEF,SAAgBC,aAAaA,CAACC,GAAG;EAC/B,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAIC,MAAM,CAAC1E,IAAI,CAACyE,GAAG,CAAC,CAACpF,MAAM,KAAK,CAAC;AACjE;;SCiCwBsF,UAAUA;EAChC,IAAAlO,SAAA,GAA8BC,cAAQ,CAAS,CAAC,CAAC;IAA1CkO,OAAO,GAAAnO,SAAA;IAAEoO,UAAU,GAAApO,SAAA;EAC1B,IAAM8G,oBAAoB,GAAyBC,yBAAmB,EAAE;EAExE,IAAAxb,IAAA,GACEub,oBAAoB,IAAI;MACtBzU,OAAO,EAAE,IAAI;MACbN,OAAO,EAAE,IAAI;MACbiV,WAAW,EAAE;KACd;IALcqH,aAAa,GAAA9iB,IAAA,CAAtB8G,OAAO;IAA0B6U,UAAU,GAAA3b,IAAA,CAAnBwG,OAAO;EAOvC,IAAAwU,qBAAA,GAA2BC,0BAAoB,EAAE;IAAzCE,cAAc,GAAAH,qBAAA,CAAdG,cAAc;EACtB,IAAMrE,eAAe,GAAGzF,sBAAW,CAAChD,iBAAiB,CAAC;EACtD,IAAMrF,YAAY,GAAGqI,sBAAW,CAAClC,kBAAkB,CAAC;EACpD,IAAMpH,WAAW,GAAGmO,aAAO,CAAC;IAC1B,IACEY,eAAe,KAAKnT,uBAAS,CAACc,MAAM,IACpCqS,eAAe,KAAKnT,uBAAS,CAACe,IAAI,EAElC,OAAOoS,eAAe;IACxB,IAAIjT,kBAAkB,CAACiT,eAAe,CAAC,KAAK6E,UAAU,EAAE;MACtD,OAAOzW,kBAAkB,CAACyW,UAAoB,CAAC;;IAGjD,OAAO7E,eAAe;GACvB,EAAE,CAACA,eAAe,EAAE6E,UAAU,CAAC,CAAC;EACjC,IAAAlB,gBAAA,GAAsDC,uBAAe,EAAE;IAApDC,aAAa,GAAAF,gBAAA,CAAxBG,SAAS;IAAiB4F,eAAe,GAAA/F,gBAAA,CAAf+F,eAAe;EACjD,IAAA3F,cAAA,GAAiCC,qCAAa,EAAE;IAA/BC,WAAW,GAAAF,cAAA,CAApB/T,OAAO;EACf,IAAAic,cAAA,GAAuBC,2BAAa,EAAE;IAA9BtE,UAAU,GAAAqE,cAAA,CAAVrE,UAAU;EAClB,IAAMuE,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EACrD,IAAMlI,YAAY,GAAG0J,sBAAW,CAACnD,kBAAkB,CAAC;EACpD,IAAMgV,YAAY,GAAGhN,aAAO,CAAC;IAC3B,IAAIsM,aAAa,CAAC7a,YAAY,CAAC,IAAII,WAAW,KAAKpE,uBAAS,CAACgB,IAAI,EAAE,OAAO,EAAE;IAE5EmR,OAAO,CAACC,GAAG,CAACpO,YAAY,CAAC;IACzB,IAAIA,YAAY,IAAI,OAAOA,YAAY,KAAK,QAAQ,EAAE;MACpD,IAAMwb,WAAW,GAAGxb,YAAY,CAACsb,YAAY,CAAC;MAC9C,IAAIE,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;QAClD,OAAOxb,YAAY,CAACsb,YAAY,CAAC,CAAClb,WAAW,CAAC;;;IAIlD,OAAO,EAAE;GACV,EAAE,CAACkb,YAAY,EAAElb,WAAW,EAAEJ,YAAY,CAAC,CAAC;EAE7CkN,eAAS,CAAC;IACP;MAAA;;kCACK;UAAA,SAAA6L,OAAA0C,QAAA;YAAA,IAAA3C,KAAA,SAAA2C,QAAA;YA2CF,IAAM5a,QAAQ,GAAG,IAAI6a,aAAM,CAACC,SAAS,CAACC,YAAY,CAChDpI,cAAqD,CACtD;YACD,IAAMqI,MAAM,GAAGhb,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEib,SAAS,EAAE;YAEpC,IAAI,CAACP,YAAY,IAAI,CAACM,MAAM,IAAI,CAACV,aAAa,EAAE;YAEhD,IAAMY,aAAa,GAAG,IAAIC,kBAAQ,CAACT,YAAY,EAAEU,QAAQ,CAACC,GAAG,EAAEL,MAAM,CAAC;YAAA,OAAArP,OAAA,CAAAW,OAAA,CAC/C4O,aAAa,CAACI,QAAQ,EAAE,EAAAvQ,IAAA,WAAzCuQ,QAAQ;cAAA,OAAA3P,OAAA,CAAAW,OAAA,CACY4O,aAAa,CAACK,SAAS,CAACjB,aAAa,CAAC,EAAAvP,IAAA,WAA1DyQ,WAAW;gBAEjBnB,UAAU,CAAC,CAACoB,iBAAW,CAACD,WAAW,EAAEF,QAAQ,CAAC,CAAC;;;;UAAA,IAAAjD,MAAA;YAAA,IArD3C,CAACta,UAAU,CAACwB,WAAW,CAAC;cAAA,IAAAkZ,MAAA,YAAAA,OAAAN,OAAA;gBAAA,OAAAF,KAAA,GAAAE,OAAA;kBAAA,IA2BtB5F,WAAW,IAAImI,YAAY;oBAAA,OAAA/O,OAAA,CAAAW,OAAA,CACHkN,OAAO,CAACkC,QAAQ,CACxCN,QAAQ,CAACC,GAAG,EACZX,YAAY,CACb,EAAA3P,IAAA,WAHG4Q,aAAa;sBAAA,OAAAhQ,OAAA,CAAAW,OAAA,CAKMqP,aAAa,CAACL,QAAQ,EAAE,CAACM,IAAI,EAAE,EAAA7Q,IAAA,WAAhDuQ,QAAQ;wBAAA,OAAA3P,OAAA,CAAAW,OAAA,CACYqP,aAAa,CACpCJ,SAAS,CAAChJ,WAAW,CAAC,CACtBqJ,IAAI,EAAE,EAAA7Q,IAAA,WAFHyQ,WAAW;0BAGjBnB,UAAU,CAAC,CAACoB,iBAAW,CAACD,WAAW,CAACpB,OAAO,EAAEkB,QAAQ,CAAC,CAAC;0BAAArD,KAAA;;;;;;;cAAA,IAAAxK,KAAA;gBAAA,IApCrD0E,aAAa,IAAIuI,YAAY,IAAIxE,UAAU;kBAC7C,IAAMf,IAAI,GAAG,IAAIwC,iBAAS,CAAC+C,YAAY,CAAC;kBAAA,OAAA/O,OAAA,CAAAW,OAAA,CACTyL,iCAAiC,CAC9D7B,UAAU,EACV/D,aAA0B,EAC1BgD,IAAI,EACJhD,aAA0B,EAC1B6F,eAAmE,CACpE,EAAAjN,IAAA,WANK8Q,gBAAgB;oBAAA,OAAAlQ,OAAA,CAAAW,OAAA,CAQI4J,UAAU,CAAC4F,oBAAoB,CACvDD,gBAAgB,CAACvd,OAAO,CACzB,EAAAyM,IAAA,WAFKgR,WAAW;sBAAA,IAAAC,kBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;sBAIjB,IAAMC,iBAAiB,GAAGR,WAAW,aAAXA,WAAW,wBAAAC,kBAAA,GAAXD,WAAW,CAAE/O,KAAK,cAAAgP,kBAAA,uBAAlBA,kBAAA,CACtB3Q,IAAyB;sBAE7BgP,UAAU,CACR,CAACoB,iBAAW,EAAAQ,qBAAA,GACVM,iBAAiB,CAACC,MAAM,cAAAP,qBAAA,wBAAAC,sBAAA,GAAxBD,qBAAA,CAA0B7F,IAAI,cAAA8F,sBAAA,wBAAAC,sBAAA,GAA9BD,sBAAA,CAAgCO,WAAW,cAAAN,sBAAA,uBAA3CA,sBAAA,CAA6C7b,MAAM,GAAA8b,sBAAA,GACnDG,iBAAiB,CAACC,MAAM,cAAAJ,sBAAA,wBAAAC,sBAAA,GAAxBD,sBAAA,CAA0BhG,IAAI,cAAAiG,sBAAA,wBAAAC,sBAAA,GAA9BD,sBAAA,CAAgCI,WAAW,cAAAH,sBAAA,uBAA3CA,sBAAA,CAA6ChB,QAAQ,CACtD,CACF;sBAAArD,KAAA;;;;;cAAA,OAAAxK,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA,CAAA0N,MAAA,IAAAA,MAAA,CAAAhL,KAAA;;;UAAA,OAAA4K,MAAA,IAAAA,MAAA,CAAAtN,IAAA,GAAAsN,MAAA,CAAAtN,IAAA,CAAAmN,MAAA,IAAAA,MAAA,CAAAG,MAAA;SA+BN,YAAQ7M,KAAK,EAAE;UACdhL,YAAY,CAACgL,KAAK,CAAC;SACpB;OACF,QAAA6B,CAAA;QAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;QAAG;GACL,EAAE,CACDiN,aAAa,EACbI,YAAY,EACZnb,WAAW,EACX4S,aAAa,EACbI,WAAW,EACXI,cAAc,CACf,CAAC;EAEF,OAAOjF,aAAO,CACZ;IAAA,OAAO;MACL0M,OAAO,EAAPA;KACD;GAAC,EACF,CAACA,OAAO,CAAC,CACV;AACH;;AC7IA,IAAMsC,YAAY,GAAG,SAAfA,YAAYA,CAAAllB,IAAA;6BAAMmlB,UAAU;IAAVA,UAAU,GAAAC,eAAA,cAAG,KAAK,GAAAA,eAAA;EACxC,IAAM7Q,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM8U,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EACrD,IAAMhG,eAAe,GAAGwH,sBAAW,CAACrB,qBAAqB,CAAC;EAC1D,IAAMpG,eAAe,GAAGyH,sBAAW,CAACtB,qBAAqB,CAAC;EAC1D,IAAM+G,eAAe,GAAGzF,sBAAW,CAAChD,iBAAiB,CAAC;EACtD,IAAAgX,iBAAA,GAAkD9K,gBAAgB,EAAE;IAA5DJ,OAAO,GAAAkL,iBAAA,CAAPlL,OAAO;IAAEC,aAAa,GAAAiL,iBAAA,CAAbjL,aAAa;IAAEE,aAAa,GAAA+K,iBAAA,CAAb/K,aAAa;EAC7C,IAAAgL,WAAA,GAAoB3C,UAAU,EAAE;IAAxBC,OAAO,GAAA0C,WAAA,CAAP1C,OAAO;EACf,IAAA2C,aAAA,GAAiBC,kBAAY,EAAE;IAAvBC,IAAI,GAAAF,aAAA,CAAJE,IAAI;EAEZ,IAAMC,WAAW,GAAG,SAAdA,WAAWA;IACf,IAAI5O,eAAe,KAAKnT,uBAAS,CAACc,MAAM,EAAE;MACxC8P,QAAQ,CAACnJ,qBAAqB,CAAC,IAAI,CAAC,CAAC;MACrC;;IAGF,IAAI0L,eAAe,KAAKnT,uBAAS,CAACe,IAAI,EAAE;MACtC6P,QAAQ,CAAClJ,mBAAmB,CAAC,IAAI,CAAC,CAAC;MACnC;;IAGFoa,IAAI,EAAE;GACP;EAED,IAAME,YAAY,GAAGzP,aAAO,CAAC;IAC3B,IAAI,CAACiE,OAAO,EAAE,OAAOC,aAAa;IAClC,IAAIvQ,eAAe,KAAK,KAAK,IAAID,eAAe,EAC9C,+BAA6BC,eAAe;IAC9C,OAAO,EAAE;GACV,EAAE,CAACsQ,OAAO,EAAEC,aAAa,EAAEvQ,eAAe,EAAED,eAAe,CAAC,CAAC;EAE9DiL,eAAS,CAAC;IACR,IAAI,CAAC8Q,YAAY,EAAE;IACnB3P,WAAK,CAAChC,KAAK,CAAC2R,YAAY,CAAC;GAC1B,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,OACEjlB;IACE4Q,SAAS,qBAAmB5J,KAAK,CAACgK,SAAS,UACzCyT,UAAU,GAAG,aAAa,GAAG,EAC/B,CAAE;mBACW7H;KAEb5c,6BAAC6R,aAAa;IAACC,YAAY,EAAEkT;KAC1BvL,OAAO,QAAM4C,mBAAmB,CAACzC,aAAa,IAAI,EAAE,CAAC,GAAK,QAAQ,CACrD,EAEfH,OAAO,GACNzZ;IAAG4Q,SAAS,EAAC;KACV8Q,cAAc,CAACwD,MAAM,CAAChD,OAAO,CAAC,OAAGK,YAAY,eAC5C,GACF,IAAI,CACJ;AAEV,CAAC;;ACrED,IAAM4C,YAAY,GAAG,SAAfA,YAAYA;EAChB,IAAMhT,GAAG,GAAG0D,YAAM,EAAO;EACzB,IAAA9B,SAAA,GAAkCC,cAAQ,CAAC,IAAI,CAAC;IAAzCoR,SAAS,GAAArR,SAAA;IAAEsR,YAAY,GAAAtR,SAAA;EAC9B,IAAMwO,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EACrD,IAAMmW,SAAS,GAAG3U,sBAAW,CAACvB,wBAAwB,CAAC;EACvD,IAAMpI,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM8X,IAAI,GAAGxf,SAAS,CAACwc,YAAY,IAAI,MAAM,CAAC,CAAC3d,IAAI;EAEnDuP,eAAS,CAAC;IACR,IAAMqR,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIrQ,CAAM;MACnC,IAAIhD,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEmE,OAAO,IAAI,CAACnE,GAAG,CAACmE,OAAO,CAACmP,QAAQ,CAACtQ,CAAC,CAAC7D,MAAM,CAAC,EAAE;QACnD+T,YAAY,CAAC,IAAI,CAAC;;KAErB;IAEDK,QAAQ,CAAC/O,gBAAgB,CAAC,WAAW,EAAE6O,qBAAqB,CAAC;IAC7D,OAAO;MACLE,QAAQ,CAACC,mBAAmB,CAAC,WAAW,EAAEH,qBAAqB,CAAC;KACjE;GACF,EAAE,CAACH,YAAY,CAAC,CAAC;EAElB,OACErlB;IACE4Q,SAAS,qBAAmB5J,KAAK,CAACgK,SAAS,UACzCoU,SAAS,GAAG,WAAW,GAAG,EAC5B,CAAE;IACFrU,OAAO,EAAE,SAAAA;MAAA,OAAMsU,YAAY,CAAC,UAACO,IAAI;QAAA,OAAK,CAACA,IAAI;QAAC;;IAC5CzT,GAAG,EAAEA;KAELnS;IAAK4Q,SAAS,EAAC;KACZ5Q,6BAACulB,IAAI,OAAG,EACRhD,YAAY,CACT,EACNviB;IACE4Q,SAAS,iBAAe5J,KAAK,CAACgK,SAAS,UAAIoU,SAAS,GAAG,WAAW,GAAG,EAAE;KAEtEE,SAAS,CAACzU,GAAG,CAAC,UAACqE,KAAK;IACnB,IAAM2Q,QAAQ,GAAG9f,SAAS,CAACmP,KAAK,CAAC,CAACtQ,IAAI;IACtC,OACE5E;MAAK4Q,SAAS,EAAC,WAAW;MAACE,GAAG,EAAE/K,SAAS,CAACmP,KAAK,CAAC,CAACjP;OAC9CjG,6BAAC6lB,QAAQ,OAAG,EACb7lB,wCAAI+F,SAAS,CAACmP,KAAK,CAAC,CAACjP,MAAM,CAAK,CAC5B;GAET,CAAC,CACE,CACF;AAEV,CAAC;;ACjCD,IAAM6f,eAAe,GAAG9lB,cAAK,CAAC+lB,IAAI,CAChC,UAAAzmB,IAAA;gCAAGoW,aAAa;IAAbA,aAAa,GAAAC,kBAAA,cAAG,IAAI,GAAAA,kBAAA;EACrB,IAAA5B,SAAA,GAAkCC,cAAQ,CAAC,IAAI,CAAC;IAAzCoR,SAAS,GAAArR,SAAA;IAAEsR,YAAY,GAAAtR,SAAA;EAC9B,IAAAiS,UAAA,GAAkDhS,cAAQ,CAExD,EAAE,CAAC;IAFEiC,iBAAiB,GAAA+P,UAAA;IAAE9P,oBAAoB,GAAA8P,UAAA;EAG9C,IAAM7T,GAAG,GAAG0D,YAAM,EAAO;EACzB,IAAMD,eAAe,GAAGC,YAAM,CAAU,KAAK,CAAC;EAC9C,IAAM1O,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAMmX,eAAe,GAAGtV,sBAAW,CAACtC,uBAAuB,CAAC;EAC5D,IAAMhF,OAAO,GAAGsH,sBAAW,CAACnB,aAAa,CAAC;EAC1C,IAAMxH,UAAU,GAAG2I,sBAAW,CAACvC,gBAAgB,CAAC;EAChD,IAAM0H,aAAa,GAAGnF,sBAAW,CAAChD,iBAAiB,CAAC;EACpD,IAAMoI,aAAa,GAAGpF,sBAAW,CAAC/C,iBAAiB,CAAC;EACpD,IAAM9E,iBAAiB,GAAG6H,sBAAW,CAAC1B,uBAAuB,CAAC;EAC9D,IAAAkH,kBAAA,GAAoCvC,iBAAiB,EAAE;IAAtClP,cAAc,GAAAyR,kBAAA,CAAvBlC,OAAO;EACf,IAAMmC,eAAe,GAAGZ,aAAO,CAAC;IAC9B,IAAMjQ,KAAK,GAAGb,cAAc,CAACc,SAAS,CACpC,UAAC2H,MAAM;MAAA,OACLA,MAAM,CAAClM,EAAE,MAAMyU,aAAa,GAAGI,aAAa,GAAGC,aAAa,CAAC;MAChE;IACD,IAAIxQ,KAAK,IAAI,CAAC,EAAE,OAAOb,cAAc,CAACa,KAAK,CAAC;IAC5C,OAAOb,cAAc,CAAC,CAAC,CAAC;GACzB,EAAE,CAACoR,aAAa,EAAEC,aAAa,EAAErR,cAAc,CAAC,CAAC;EAElD,IAAM2P,QAAQ,GAAGmB,aAAO,CAAC;IACvB,IAAIE,aAAa,IAAIvO,IAAI,KAAKV,mBAAW,CAACW,MAAM,EAAE;MAChD,OAAO1C,cAAc;;IAGvB,OAAOA,cAAc,CAAC4P,MAAM,CAC1B,UAACC,OAAO;MAAA,OACN0B,iBAAiB,CAACzQ,SAAS,CAAC,UAACvE,EAAO;QAAA,OAAKA,EAAE,KAAKsT,OAAO,CAACtT,EAAE;QAAC,IAAI,CAAC;MACnE;GACF,EAAE,CACDyD,cAAc,EACdgR,aAAa,EACbO,iBAAiB,EACjBjO,UAAU,EACV8N,aAAa,CACd,CAAC;EACF,IAAM9O,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMoG,QAAQ,GAAGC,sBAAW,EAAE;EAE9BK,eAAS,CAAC;IACR,IAAI,CAACrL,iBAAiB,IAAI3B,IAAI,KAAKV,mBAAW,CAACW,MAAM,EAAE;IACtD;MAAA;wCACK;UAAA,SAAAmZ;YAaFrK,oBAAoB,CAACgQ,MAAM,CAAC;YAE5B,IAAIxQ,aAAa,IAAI,CAACK,aAAa,EAAE;cACnClC,QAAQ,CAACrJ,cAAc,CAAC0b,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;YACpC,IAEGtQ,eAAe,CAACU,OAAO;cACzBV,eAAe,CAACU,OAAO,GAAG,KAAK;cAC/BzC,QAAQ,CACNrJ,cAAc,CACZ0b,MAAM,CAAC1gB,SAAS,CAAC,UAACiP,KAAK;gBAAA,OAAKA,KAAK,KAAKsB,aAAa;gBAAC,GAAG,CAAC,IACtDA,aAAa,KAAKD,aAAa,GAC7BoQ,MAAM,CAAC,CAAC,CAAC,GACTnQ,aAAa,CAClB,CACF;cACDlC,QAAQ,CAACnH,sBAAsB,CAAC,KAAK,CAAC,CAAC;;;UA5BzC,IAAIwZ,MAAM,GAAgB,EAAE;UAAA,IAAA3Q,KAAA;YAAA,IACxBO,aAAa,KAAK7S,uBAAS,CAACgB,IAAI;cAClCiiB,MAAM,GAAG,CAACjjB,uBAAS,CAACI,QAAQ,EAAEJ,uBAAS,CAACK,OAAO,CAAC;;cAAA,OAAAmQ,OAAA,CAAAW,OAAA,CAEpB/B,YAAY,CAACC,GAAG,CACvCxJ,iBAAiB,kEAA6DgN,aAAe,CACjG,EAAAjD,IAAA,WAFKwB,QAAQ;gBAId6R,MAAM,GAAG7R,QAAQ,CAACgC,MAAM;gBACxB,IAAIhN,OAAO,EAAE6c,MAAM,CAACrN,IAAI,CAAC5V,uBAAS,CAACgB,IAAI,CAAC;;;;UAAA,OAAAsR,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA,CAAA0N,MAAA,IAAAA,MAAA,CAAAhL,KAAA;SAqB3C,YAAQJ,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;UAClCG,cAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;SAChC;QAAA,OAAA6M,MAAA,IAAAA,MAAA,CAAAtN,IAAA,GAAAsN,MAAA,CAAAtN,IAAA;OACF,QAAAsC,CAAA;QAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;QAAG;GACL,EAAE,CACDrM,iBAAiB,EACjBgN,aAAa,EACbC,aAAa,EACb5O,IAAI,EACJuO,aAAa,EACbrM,OAAO,CACR,CAAC;EAEF8K,eAAS,CAAC;IACR,IAAI,CAACrL,iBAAiB,IAAI3B,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,EAAE;IACvD;MAAA;;cAGKne,UAAU,KAAKpB,mBAAW,CAACwf,KAAK,IAChCpe,UAAU,KAAKpB,mBAAW,CAACyf,OAAO;YAElCnQ,oBAAoB,CAAC,CAACH,aAA0B,CAAC,CAAC;;YAElD,IAAIA,aAAa,KAAK9S,uBAAS,CAACgB,IAAI,EAAE;cACpCiS,oBAAoB,CAAC,CAACjT,uBAAS,CAACI,QAAQ,EAAEJ,uBAAS,CAACK,OAAO,CAAC,CAAC;cAC7D;;YACD,OAAAmQ,OAAA,CAAAW,OAAA,CAE2B/B,YAAY,CAACC,GAAG,CACvCxJ,iBAAiB,kEAA6DiN,aAAe,CACjG,EAAAlD,IAAA,WAFKwB,QAAQ;cAId6B,oBAAoB,CAAC7B,QAAQ,CAACgC,MAAM,CAAC;;;qBAEhClB,CAAC,EAAE;UACVC,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;UAClCG,cAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;SAChC;OACF,QAAA6B,CAAA;QAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;QAAG;GACL,EAAE,CAACrM,iBAAiB,EAAE3B,IAAI,EAAE4O,aAAa,EAAE/N,UAAU,CAAC,CAAC;EAExDmM,eAAS,CAAC;IACR,IAAMqR,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIrQ,CAAM;MACnC,IAAIhD,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEmE,OAAO,IAAI,CAACnE,GAAG,CAACmE,OAAO,CAACmP,QAAQ,CAACtQ,CAAC,CAAC7D,MAAM,CAAC,EAAE;QACnD+T,YAAY,CAAC,IAAI,CAAC;;KAErB;IAEDK,QAAQ,CAAC/O,gBAAgB,CAAC,WAAW,EAAE6O,qBAAqB,CAAC;IAC7D,OAAO;MACLE,QAAQ,CAACC,mBAAmB,CAAC,WAAW,EAAEH,qBAAqB,CAAC;KACjE;GACF,EAAE,CAACH,YAAY,CAAC,CAAC;EAElB,OACErlB;IACE4Q,SAAS,wBAAsB5J,KAAK,CAACgK,SAAS,UAC5CoU,SAAS,GAAG,WAAW,GAAG,EAC5B,CAAE;IACFrU,OAAO,EAAE,SAAAA;MACP,IAAI,CAACkV,eAAe,IAAIvQ,aAAa,EAAE;MACvC2P,YAAY,CAAC,UAACO,IAAI;QAAA,OAAK,CAACA,IAAI;QAAC;KAC9B;IACDzT,GAAG,EAAEA;KAELnS;IAAK4Q,SAAS,EAAC;KACZ5Q,6BAACoW,eAAe,CAACxR,IAAI,OAAG,EACzB5E,2CAAOoW,eAAe,CAACzR,KAAK,CAAQ,CAChC,EACN3E;IACE4Q,SAAS,qCAAmC5J,KAAK,CAACgK,SAAS,UACzDoU,SAAS,GAAG,WAAW,GAAG,EAC5B;KAEC/Q,QAAQ,CAACxD,GAAG,CAAC,UAAC0D,OAAO;IAAA,OACpBvU;MACE4Q,SAAS,EAAC,mBAAmB;MAC7BE,GAAG,EAAEyD,OAAO,CAAC5P,KAAK;MAClBoM,OAAO;QAAA;UACL,IAAI2E,aAAa,EAAE;YACjB7B,QAAQ,CAACnH,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACtCmH,QAAQ,CAACtJ,cAAc,CAACgK,OAAO,CAACtT,EAAE,CAAC,CAAC;YACpC2U,eAAe,CAACU,OAAO,GAAG,IAAI;WAC/B,MAAM;YACLzC,QAAQ,CAACrJ,cAAc,CAAC+J,OAAO,CAACtT,EAAE,CAAC,CAAC;YACpC4S,QAAQ,CAAChI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;;UAC5B,OAAA4H,OAAA,CAAAW,OAAA;SACF,QAAAe,CAAA;UAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;;OAEAnV,6BAACuU,OAAO,CAAC3P,IAAI,OAAG,EACjB5E,wCAAIuU,OAAO,CAAC5P,KAAK,CAAK,CAClB;GACP,CAAC,CAYE,CACF;AAEV,CAAC,CACF;;AC5LD,IAAM2hB,cAAc,GAAG,SAAjBA,cAAcA,CAAAhnB,IAAA;MAAMinB,UAAU,GAAAjnB,IAAA,CAAVinB,UAAU;EAClC,IAAMle,SAAS,GAAGsI,sBAAW,CAAC5B,eAAe,CAAC;EAC9C,IAAM5H,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAM9G,UAAU,GAAG2I,sBAAW,CAACvC,gBAAgB,CAAC;EAChD,IAAMpH,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMrF,MAAM,GAAGuI,sBAAW,CAACnC,YAAY,CAAC;EACxC,IAAM5F,UAAU,GAAG+H,sBAAW,CAAC9B,gBAAgB,CAAC;EAChD,IAAMiH,aAAa,GAAGnF,sBAAW,CAAChD,iBAAiB,CAAC;EACpD,IAAMoI,aAAa,GAAGpF,sBAAW,CAAC/C,iBAAiB,CAAC;EACpD,IAAMrG,aAAa,GAAGoJ,sBAAW,CAAC9C,mBAAmB,CAAC;EACtD,IAAMvE,WAAW,GAAGqH,sBAAW,CAAClB,iBAAiB,CAAC;EAClD,IAAM/F,SAAS,GAAGiH,sBAAW,CAAChB,eAAe,CAAC;EAC9C,IAAMtE,iBAAiB,GAAGsF,sBAAW,CAACpC,uBAAuB,CAAC;EAC9D,IAAAoW,iBAAA,GAA0B9K,gBAAgB,EAAE;IAApCD,aAAa,GAAA+K,iBAAA,CAAb/K,aAAa;EACrB,IAAM4M,mBAAmB,GAAGhR,aAAO,CACjC;IAAA,OAAM9Q,cAAc,CAAC4P,MAAM,CAAC,UAACC,OAAO;MAAA,OAAKA,OAAO,CAACtT,EAAE,KAAK6U,aAAa;MAAC,CAAC,CAAC,CAAC;KACzE,CAACpR,cAAc,EAAEoR,aAAa,CAAC,CAChC;EACD,IAAM2Q,mBAAmB,GAAGjR,aAAO,CACjC;IAAA,OACE9Q,cAAc,CAAC4P,MAAM,CACnB,UAACC,OAAO;MAAA,OACNA,OAAO,CAACtT,EAAE,MACTkG,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GACzB9a,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAE/D,WAAW,GAC9ByO,aAAa,CAAC;MACrB,CAAC,CAAC,CAAC;KACN,CAACrR,cAAc,EAAEoR,aAAa,CAAC,CAChC;EACD,IAAMyM,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EAErD,IAAMuX,mBAAmB,GAAGlR,aAAO,CAAC;IAClC,OAAO6G,mBAAmB,CAACzC,aAAa,IAAI,EAAE,CAAC;GAChD,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnB,IAAM+M,mBAAmB,GAAGnR,aAAO,CAAC;IAClC,OAAO6G,mBAAmB,CACxB,CAAClV,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GACzB9a,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAE9D,aAAa,GAChCA,aAAa,KAAK,EAAE,CACzB;GACF,EAAE,CAACJ,IAAI,EAAEkE,iBAAiB,EAAE9D,aAAa,CAAC,CAAC;EAE5C,OACEvH;IAAK4Q,SAAS,uBAAqB5J,KAAK,CAACgK;KACvChR,iDACQumB,UAAU,GAAG,GAAG,GAAG,GAAG,0BAC3BA,UAAU,GACP,oBAAoB,GACpBzQ,aAAa,KAAK7S,uBAAS,CAACgB,IAAI,GAC9B,cAAc,GACd,UAAU,CACd,EACH6R,aAAa,KAAK7S,uBAAS,CAACgB,IAAI,GAC/BjE,0CACEA;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;aAAoB,EACpC5Q,mEAA+B,EAC/BA;IAAM4Q,SAAS,EAAC;KACd5Q,6BAACwmB,mBAAmB,CAAC5hB,IAAI,OAAG,SAEvB,CACH,EACN5E;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;kBAAyB,EACzC5Q,uDAAmB,CACf,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;YAAmB,EACnC5Q,sDAAkB,CACd,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;oBAA2B,EAC3C5Q;IAAG4Q,SAAS,EAAC;KAAalH,SAAS,CAAK,CACpC,CACF,GAEN1J;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;sBAA6B,EAC7C5Q,wCACGgI,UAAU,KAAKpB,mBAAW,CAACyf,OAAO,GAC/BM,mBAAmB,GACnBD,mBAAmB,CACrB,EACJ1mB;IAAM4Q,SAAS,EAAC;KACd5Q,6BAACwmB,mBAAmB,CAAC5hB,IAAI,OAAG,EAC3B4hB,mBAAmB,CAAC7hB,KAAK,CACrB,CAEV,EACD3E;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;eAAsB,EACtC5Q,wCACG0hB,cAAc,CAACwD,MAAM,CAAC7c,SAAS,GAAGD,MAAM,GAAGA,MAAM,GAAGQ,UAAU,CAAC,EAAE,GAAG,EACpE2Z,YAAY,CACX,CACA,EACLxM,aAAa,KAAK9S,uBAAS,CAACgB,IAAI,GAC/BjE,0CACEA;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;aAAoB,EACpC5Q,wCAAIsJ,WAAW,CAACC,IAAI,CAAK,EACzBvJ;IAAM4Q,SAAS,EAAC;KACd5Q,6BAACymB,mBAAmB,CAAC7hB,IAAI,OAAG,SAEvB,CACH,EACN5E;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;kBAAyB,EACzC5Q,wCAAIsJ,WAAW,CAACE,SAAS,CAAK,CAC1B,CACF,GAENxJ;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;sBAA6B,EAC7C5Q,wCACGgI,UAAU,KAAKpB,mBAAW,CAACyf,OAAO,GAC/BK,mBAAmB,GACnBC,mBAAmB,CACrB,EACJ3mB;IAAM4Q,SAAS,EAAC;KACd5Q,6BAACymB,mBAAmB,CAAC7hB,IAAI,OAAG,EAC3B6hB,mBAAmB,CAAC9hB,KAAK,CACrB,CAEV,CACG;AAEV,CAAC;;AC1ID,IAAMiiB,YAAY,GAAG,SAAfA,YAAYA;EAChB,IAAM/S,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMvM,aAAa,GAAGoJ,sBAAW,CAAC9C,mBAAmB,CAAC;EAEtD,OACE7N;IACE4Q,SAAS,EAAC,oBAAoB;IAC9BZ,IAAI,EAAC,MAAM;IACX8E,KAAK,EAAEvN,aAAa;IACpBsf,QAAQ,EAAE,SAAAA,SAAC1R,CAAC;MAAA,OAAKtB,QAAQ,CAACpJ,gBAAgB,CAAC0K,CAAC,CAAC7D,MAAM,CAACwD,KAAK,CAAC,CAAC;;IAC3D;AAEN,CAAC;;ACdD,IAAMgS,cAAc,GAAG,SAAjBA,cAAcA,CAAAxnB,IAAA;MAAM4T,IAAI,GAAA5T,IAAA,CAAJ4T,IAAI;IAAE6T,OAAO,GAAAznB,IAAA,CAAPynB,OAAO;IAAEC,QAAQ,GAAA1nB,IAAA,CAAR0nB,QAAQ;EAC/C,IAAMhgB,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EAEtC,OACEzN;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,yBAAyB;IACnCG,OAAO,EAAE,SAAAA;MAAA,OAAMiW,QAAQ,CAAC,CAACD,OAAO,CAAC;;KAEjC/mB;IAAK4Q,SAAS,oCAAkC5J,KAAK,CAACgK;KACnD+V,OAAO,IAAI/mB,6BAACkR,KAAS,OAAG,CACrB,EACNlR,2CAAOkT,IAAI,CAAQ,CACf,CACF;AAEV,CAAC;;ACpBD,IAAM+T,UAAU,GAAG,SAAbA,UAAUA,CAAA3nB,IAAA;MAAM4T,IAAI,GAAA5T,IAAA,CAAJ4T,IAAI;EACxB,IAAAa,SAAA,GAAsCC,cAAQ,CAAC,KAAK,CAAC;IAA9CkT,WAAW,GAAAnT,SAAA;IAAEoT,cAAc,GAAApT,SAAA;EAElCI,eAAS,CAAC;IACR,IAAI,CAAC+S,WAAW,EAAE;IAElBE,UAAU,CAAC;MACTD,cAAc,CAAC,KAAK,CAAC;KACtB,EAAE,IAAI,CAAC;GACT,EAAE,CAACD,WAAW,CAAC,CAAC;EAEjB,OACElnB;IACE4Q,SAAS,EAAC,UAAU;IACpBG,OAAO,EAAE,SAAAA;MACPoW,cAAc,CAAC,IAAI,CAAC;MACpBE,SAAS,CAACC,SAAS,CAACC,SAAS,CAACrU,IAAI,CAAC;;KAGpCgU,WAAW,GAAGlnB,6BAACkR,KAAS;IAACtR,IAAI,EAAC;IAAY,GAAGI,6BAACwnB,IAAQ,OAAG,CACrD;AAEX,CAAC;;ACPD,IAAMpX,UAAQ,GAAG,CACf;EACEC,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,EACD;EACEA,KAAK,EAAE;CACR,CACF;AAED,IAAMoX,OAAO,GAAG,SAAVA,OAAOA,CAAAnoB,IAAA;MAAMiR,IAAI,GAAAjR,IAAA,CAAJiR,IAAI;IAAEC,SAAS,GAAAlR,IAAA,CAATkR,SAAS;IAAEE,WAAW,GAAApR,IAAA,CAAXoR,WAAW;IAAEyC,IAAI,GAAA7T,IAAA,CAAJ6T,IAAI;EACnD,IAAMnM,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMia,WAAW,GAAG/W,sBAAW,CAACjD,kBAAkB,CAAC;EAEnD,OACE1N;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACZR,UAAQ,CAACS,GAAG,CAAC,UAACpL,IAAI,EAAEF,KAAK;IAAA,OACxBvF;MAAK8Q,GAAG,EAAErL,IAAI,CAAC4K,KAAK;MAAEO,SAAS,EAAC;OAC9B5Q;MAAK4Q,SAAS,EAAC;OACZrL,KAAK,KAAKmL,WAAW,GACpB1Q,6BAAC8P,cAAc;MACblQ,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,MAAM,GAAG,OAAO,GAAG;MAC7C,GACAT,IAAI,IAAIhL,KAAK,GACfA,KAAK,KAAKiL,SAAS,GACjBxQ,6BAACiR,OAAW;yBAAiB;MAAkB,GAE/CjR,6BAACkR,KAAS,OACX,GACC,IAAI,EACRlR,wCAAIyF,IAAI,CAAC4K,KAAK,CAAK,CACf,EACL9K,KAAK,KAAK,CAAC,IAAI4N,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEwU,UAAU,GAC9B3nB;MAAK4Q,SAAS,EAAC;OACb5Q,uDACc,GAAG,EACfA,6BAACmR,YAAY;MACXC,EAAE,eAAasW,WAAW,uBAAiBvU,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEwU,UAAU;OAE1DtL,mBAAmB,CAAC,CAAAlJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEwU,UAAU,KAAI,EAAE,CAAC,CAC/B,EACf3nB,6BAACinB,UAAU;MAAC/T,IAAI,EAAEC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEwU;MAAc,CACpC,CACA,GACJ,IAAI,EACPpiB,KAAK,KAAK,CAAC,IAAI4N,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEyU,WAAW,GAC/B5nB;MAAK4Q,SAAS,EAAC;OACb5Q,wCAEI6D,qBAAqB,CACnB,CAAAsP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,KAAIpE,uBAAS,CAACI,QAAQ,CACxC,EACD,GAAG,YAELrD,6BAACmR,YAAY;MACXC,EAAE,eACAhN,uBAAuB,CACrB,CAAA+O,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,KAAIpE,uBAAS,CAACI,QAAQ,CAE3C,UAAI,CAAA8P,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,MAAKpE,uBAAS,CAACe,IAAI,GAAG,aAAa,GAAG,IAAI,WAAImP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyU,WAAW,KAClF,CAAAzU,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,MAAKpE,uBAAS,CAACc,MAAM,GAClC,iBAAiB,GACjB,EACN;OAECsY,mBAAmB,CAAC,CAAAlJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyU,WAAW,KAAI,EAAE,CAAC,CAChC,EACf5nB,6BAACinB,UAAU;MAAC/T,IAAI,EAAE,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyU,WAAW,KAAI;MAAM,CAC3C,CACA,GACJ,IAAI,EACPriB,KAAK,KAAK,CAAC,IAAI4N,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAE0U,cAAc,GAClC7nB;MAAK4Q,SAAS,EAAC;OACb5Q,wCAEI6D,qBAAqB,CACnB,CAAAsP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,KAAIrE,uBAAS,CAACI,QAAQ,CACxC,EACD,GAAG,YAELrD,6BAACmR,YAAY;MACXC,EAAE,eACAhN,uBAAuB,CACrB,CAAA+O,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,KAAIrE,uBAAS,CAACI,QAAQ,CAE3C,UAAI,CAAA8P,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,MAAKrE,uBAAS,CAACe,IAAI,GAAG,aAAa,GAAG,IAAI,WAAImP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0U,cAAc,KACrF,CAAA1U,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,MAAKrE,uBAAS,CAACc,MAAM,GAClC,iBAAiB,GACjB,EACN;OAECsY,mBAAmB,CAAC,CAAAlJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0U,cAAc,KAAI,EAAE,CAAC,CACnC,EACf7nB,6BAACinB,UAAU;MAAC/T,IAAI,EAAE,CAAAC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0U,cAAc,KAAI;MAAM,CAC9C,CACA,GACJ,IAAI,CACJ;GACP,CAAC,CACE,CACF;AAEV,CAAC;;AC/HD,IAAMC,SAAS,GAAG,SAAZA,SAASA;EACb,IAAMjU,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMnE,WAAW,GAAGqH,sBAAW,CAAClB,iBAAiB,CAAC;EAElD,OACEzP;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,iBAAe5J,KAAK,CAACgK;KACjChR;IAAM4Q,SAAS,EAAC;aAAoB,EACpC5Q;IACE4Q,SAAS,EAAC,oBAAoB;IAC9BZ,IAAI,EAAC,MAAM;IACX8E,KAAK,EAAExL,WAAW,CAACC,IAAI;IACvBsd,QAAQ,EAAE,SAAAA,SAAC1R,CAAC;MAAA,OACVtB,QAAQ,CAACpH,cAAc,CAAAsb,QAAA,KAAMze,WAAW;QAAEC,IAAI,EAAE4L,CAAC,CAAC7D,MAAM,CAACwD;QAAO,CAAC,CAAC;;IAEpE,CACE,EACN9U;IAAK4Q,SAAS,iBAAe5J,KAAK,CAACgK;KACjChR;IAAM4Q,SAAS,EAAC;kBAAyB,EACzC5Q;IACE4Q,SAAS,EAAC,oBAAoB;IAC9BZ,IAAI,EAAC,MAAM;IACX8E,KAAK,EAAExL,WAAW,CAACE,SAAS;IAC5Bqd,QAAQ,EAAE,SAAAA,SAAC1R,CAAC;MAAA,OACVtB,QAAQ,CACNpH,cAAc,CAAAsb,QAAA,KAAMze,WAAW;QAAEE,SAAS,EAAE2L,CAAC,CAAC7D,MAAM,CAACwD;QAAO,CAAC,CAC9D;;IAEH,CACE,CACF;AAEV,CAAC;;ACjCD,IAAMkT,SAAS,GAAG,SAAZA,SAASA;EACb,IAAMnU,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM/F,SAAS,GAAGiJ,sBAAW,CAAC3C,eAAe,CAAC;EAE9C,OACEhO;IACE4Q,SAAS,6BAA2B5J,KAAK,CAACgK,SAAS,UACjDtJ,SAAS,GAAG,MAAM,GAAG,EACvB;KAEA1H;IACE4Q,SAAS,EAAC,eAAe;IACzBG,OAAO,EAAE,SAAAA;MACP8C,QAAQ,CAACjJ,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE/B,EACF5K;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,gDAAa,CACT,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MAAA,OAAM8C,QAAQ,CAACjJ,YAAY,CAAC,KAAK,CAAC,CAAC;;KAE5C5K,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,CACL,CACF,CACF,EACNhR;IAAK4Q,SAAS,EAAC;KACb5Q,yTAMI,CACA,CACF,CACF;AAEV,CAAC;;ACvCD,IAAMkoB,SAAS,GAAG,SAAZA,SAASA,CAAA5oB,IAAA;MAAM6T,IAAI,GAAA7T,IAAA,CAAJ6T,IAAI;EACvB,IAAMU,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM9F,SAAS,GAAGgJ,sBAAW,CAAC1C,eAAe,CAAC;EAE9C,OACEjO;IACE4Q,SAAS,6BAA2B5J,KAAK,CAACgK,SAAS,UACjDrJ,SAAS,GAAG,MAAM,GAAG,EACvB;KAEA3H;IACE4Q,SAAS,EAAC,eAAe;IACzBG,OAAO,EAAE,SAAAA;MACP8C,QAAQ,CAAChJ,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE/B,EACF7K;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,8DAA2B,CACvB,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MAAA,OAAM8C,QAAQ,CAAChJ,YAAY,CAAC,KAAK,CAAC,CAAC;;KAE5C7K,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,CACL,CACF,CACF,EACNhR;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,sDAAqB,EACrBA,6BAACmR,YAAY;IAACC,EAAE,EAAC;mBAEF,CACX,EACNpR;IAAK4Q,SAAS,EAAC;KACb5Q,wDAAuB,EACvBA,6BAACmR,YAAY;IACXC,EAAE,eACAhN,uBAAuB,CACrB,CAAA+O,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,KAAIpE,uBAAS,CAACI,QAAQ,CAE3C,aAAO8P,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyU,WAAW;KAEvBvL,mBAAmB,CAAC,CAAAlJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEyU,WAAW,KAAI,EAAE,CAAC,CAChC,CACX,EACN5nB;IAAK4Q,SAAS,EAAC;KACb5Q,wDAAuB,EACvBA,6BAACmR,YAAY;IACXC,EAAE,eACAhN,uBAAuB,CACrB,CAAA+O,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,KAAIrE,uBAAS,CAACI,QAAQ,CAE3C,aAAO8P,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0U,cAAc;KAE1BxL,mBAAmB,CAAC,CAAAlJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE0U,cAAc,KAAI,EAAE,CAAC,CACnC,CACX,CACF,CACF,CACF,CACF;AAEV,CAAC;;ACzED,IAAMM,wBAAwB,GAAG,SAA3BA,wBAAwBA;EAC5B,IAAMtU,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM2a,YAAY,GAAGzX,sBAAW,CAAC7C,wBAAwB,CAAC;EAC1D,IAAMmK,gBAAgB,GAAGtH,sBAAW,CAACxC,oBAAoB,CAAC;EAC1D,IAAA+J,UAAA,GAA4BC,uBAAS,EAAE;IAA/BkQ,MAAM,GAAAnQ,UAAA,CAANmQ,MAAM;IAAEC,OAAO,GAAApQ,UAAA,CAAPoQ,OAAO;EAEvB,IAAMC,aAAa,GAAG,SAAhBA,aAAaA;IACjBF,MAAM,CAACpQ,gBAAgB,CAAC;IACxBqQ,OAAO,EAAE;IACTzU,QAAQ,CAACnJ,qBAAqB,CAAC,KAAK,CAAC,CAAC;GACvC;EAED,OACE1K;IACE4Q,SAAS,iCAA+B5J,KAAK,CAACgK,SAAS,UACrDoX,YAAY,GAAG,MAAM,GAAG,EAC1B;KAEApoB;IAAK4Q,SAAS,EAAC;IAAkB,EACjC5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,0DAAuB,CACnB,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MAAA,OAAM8C,QAAQ,CAACnJ,qBAAqB,CAAC,KAAK,CAAC,CAAC;;KAErD1K,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,CACL,CACF,CACF,EACNhR;IAAK4Q,SAAS,EAAC;KACb5Q,6BAACgY,kBAAkB,OAAG,CAClB,EACNhY;IACE4Q,SAAS,EAAC,kBAAkB;IAC5BtP,KAAK,EAAE;MAAEknB,cAAc,EAAE,UAAU;MAAEC,SAAS,EAAE;;KAEhDzoB,6BAACoS,eAAe;IACdN,YAAY,EAAE,SAAAA;MAAA,OAAM+B,QAAQ,CAACnJ,qBAAqB,CAAC,KAAK,CAAC,CAAC;;IAC1D1D,KAAK,EAAEA,KAAK,CAACgK;cAGG,EAClBhR,6BAAC6R,aAAa;IAACC,YAAY,EAAEyW;eAAsC,CAC/D,CACF,CACF;AAEV,CAAC;;ACxDD,IAAMG,sBAAsB,GAAG,SAAzBA,sBAAsBA;EAC1B,IAAM7U,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM2a,YAAY,GAAGzX,sBAAW,CAAC5C,sBAAsB,CAAC;EACxD,IAAMkK,gBAAgB,GAAGtH,sBAAW,CAACxC,oBAAoB,CAAC;EAC1D,IAAA+J,UAAA,GAA4BC,qCAAS,EAAE;IAA/BkQ,MAAM,GAAAnQ,UAAA,CAANmQ,MAAM;IAAEC,OAAO,GAAApQ,UAAA,CAAPoQ,OAAO;EAEvB,IAAMC,aAAa,YAAbA,aAAaA;IAAA;qCACb;QACFF,MAAM,CAACpQ,gBAAgB,CAAC;QAAA,OAAAxE,OAAA,CAAAW,OAAA,CAClBkU,OAAO,EAAE,EAAAzV,IAAA;UACfgB,QAAQ,CAAClJ,mBAAmB,CAAC,KAAK,CAAC,CAAC;;OACrC,YAAQwK,CAAC,EAAE;QACVC,OAAO,CAACC,GAAG,CAACF,CAAC,CAAC;OACf;MAAA,OAAA1B,OAAA,CAAAW,OAAA,CAAAmB,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA;KACF,QAAAsC,CAAA;MAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;;EAED,OACEnV;IACE4Q,SAAS,iCAA+B5J,KAAK,CAACgK,SAAS,UACrDoX,YAAY,GAAG,MAAM,GAAG,EAC1B;KAEApoB;IAAK4Q,SAAS,EAAC;IAAkB,EACjC5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,0DAAuB,CACnB,EACNA;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MAAA,OAAM8C,QAAQ,CAAClJ,mBAAmB,CAAC,KAAK,CAAC,CAAC;;KAEnD3K,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,CACL,CACF,CACF,EACNhR;IAAK4Q,SAAS,EAAC;KACb5Q,6BAAC2oB,YAAgB,OAAG,CAChB,EACN3oB;IACE4Q,SAAS,EAAC,kBAAkB;IAC5BtP,KAAK,EAAE;MAAEknB,cAAc,EAAE,UAAU;MAAEC,SAAS,EAAE;;KAEhDzoB,6BAACoS,eAAe;IACdN,YAAY,EAAE,SAAAA;MAAA,OAAM+B,QAAQ,CAAClJ,mBAAmB,CAAC,KAAK,CAAC,CAAC;;IACxD3D,KAAK,EAAEA,KAAK,CAACgK;cAGG,EAClBhR,6BAAC6R,aAAa;IAACC,YAAY,EAAEyW;eAAsC,CAC/D,CACF,CACF;AAEV,CAAC;;AClDD,IAAMK,SAAS,GAAG,SAAZA,SAASA,CAAAtpB,IAAA;MACbupB,YAAY,GAAAvpB,IAAA,CAAZupB,YAAY;IACZC,WAAW,GAAAxpB,IAAA,CAAXwpB,WAAW;EAKX,IAAMjV,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMnK,IAAI,GAAGgH,sBAAW,CAACf,UAAU,CAAC;EACpC,IAAM5I,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAM7F,SAAS,GAAG+I,sBAAW,CAACzC,eAAe,CAAC;EAC9C,IAAM6a,cAAc,GAAGpY,sBAAW,CAAC3B,gBAAgB,CAAC;EAEpDmF,eAAS,CAAC;IACR,IAAI,CAAC4U,cAAc,IAAI,CAACpf,IAAI,IAAI,CAACmf,WAAW,EAAE;IAC9C,IAAMnR,OAAO,GAAGC,WAAW;MAAA;uCACrB;UAAA,OAAAnE,OAAA,CAAAW,OAAA,CACqB/B,YAAY,CAACE,IAAI,CACnCwW,cAAc,WACjB3V,IAAI,CAAC4V,SAAS,CAAC;YACbrf,IAAI,EAAJA;WACD,CAAC,CACH,EAAAkJ,IAAA,WALKoW,GAAG;YAMT,IAAMC,SAAS,GAAqBD,GAAG,CAAC9V,IAAI;YAC5CiC,OAAO,CAACC,GAAG,CAAC6T,SAAS,CAAC;YAAA,IAElB,CAACA,SAAS,CAACvM,MAAM;cACnBvH,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;cACzCC,WAAK,CAAChC,KAAK,CAAC,4BAA4B,CAAC;mBACpC,IAAI4V,SAAS,CAAC,CAAC,CAAC,CAACvV,MAAM,KAAK,UAAU,EAAE;cAC7CkV,YAAY,CAAC,KAAK,CAAC;cACnBhV,QAAQ,CAAChH,YAAY,CAAC,UAAU,CAAC,CAAC;cAClCyI,WAAK,CAAC8G,OAAO,CAAC,iBAAiB,CAAC;;;SAEnC,cAAW;UACVhH,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;UACzCC,WAAK,CAAChC,KAAK,CAAC,4BAA4B,CAAC;SAC1C;QAAA,OAAAG,OAAA,CAAAW,OAAA,CAAAmB,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA;OACF,QAAAsC,CAAA;QAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;OAAE,IAAI,CAAC;IAER,OAAO;MACL0C,aAAa,CAACF,OAAO,CAAC;KACvB;GACF,EAAE,CAACoR,cAAc,EAAEpf,IAAI,EAAEmf,WAAW,CAAC,CAAC;EAEvC,OACE9oB;IACE4Q,SAAS,6BAA2B5J,KAAK,CAACgK,SAAS,UACjDpJ,SAAS,GAAG,MAAM,GAAG,EACvB;KAEA5H;IACE4Q,SAAS,EAAC,eAAe;IACzBG,OAAO,EAAE,SAAAA;MACP8C,QAAQ,CAAC/I,YAAY,CAAC,KAAK,CAAC,CAAC;;IAE/B,EACF9K;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;IAAc,EAC7B5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MAAA,OAAM8C,QAAQ,CAAC/I,YAAY,CAAC,KAAK,CAAC,CAAC;;KAE5C9K,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,CACL,CACF,CACF,EACNhR;IAAK4Q,SAAS,EAAC;KACb5Q;IACEgZ,GAAG,4EAA0ErP,IAAM;IACnFpK,KAAK,EAAC,MAAM;IACZG,MAAM,EAAC,MAAM;IACbypB,WAAW,EAAC,GAAG;IACfC,KAAK,EAAC;IACE,CACN,CACF,CACF;AAEV,CAAC;;AC9EM,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA/pB,IAAA;MAAM0H,KAAK,GAAA1H,IAAA,CAAL0H,KAAK;EACvC,IAAA+M,SAAA,GAAwBC,cAAQ,CAAC,CAAC,CAAC;IAA5BzD,IAAI,GAAAwD,SAAA;IAAEuV,OAAO,GAAAvV,SAAA;EACpB,IAAAiS,UAAA,GAA0BhS,cAAQ,CAAC,CAAC,CAAC,CAAC;IAA/BuV,KAAK,GAAAvD,UAAA;IAAEvV,QAAQ,GAAAuV,UAAA;EACtB,IAAAwD,UAAA,GAAkCxV,cAAQ,CAAC,CAAC,CAAC,CAAC;IAAvCxD,SAAS,GAAAgZ,UAAA;IAAEC,YAAY,GAAAD,UAAA;EAC9B,IAAAE,UAAA,GAAwC1V,cAAQ,CAAC,EAAE,CAAC;IAA7CiR,YAAY,GAAAyE,UAAA;IAAEC,eAAe,GAAAD,UAAA;EACpC,IAAAE,UAAA,GAAsC5V,cAAQ,CAAC,CAAC,CAAC,CAAC;IAA3CtD,WAAW,GAAAkZ,UAAA;IAAEC,cAAc,GAAAD,UAAA;EAClC,IAAAE,UAAA,GAAkC9V,cAAQ,CAAC,KAAK,CAAC;IAA1C+V,SAAS,GAAAD,UAAA;IAAEE,YAAY,GAAAF,UAAA;EAC9B,IAAAG,UAAA,GAA8BjW,cAAQ,CAAC,CAAC,CAAC;IAAlCkW,OAAO,GAAAD,UAAA;IAAEE,UAAU,GAAAF,UAAA;EAC1B,IAAAG,UAAA,GAAwBpW,cAAQ,EAAmB;IAA5Cb,IAAI,GAAAiX,UAAA;IAAEC,OAAO,GAAAD,UAAA;EACpB,IAAMvW,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM/K,IAAI,GAAG4H,sBAAW,CAACzB,UAAU,CAAC;EACpC,IAAMlH,UAAU,GAAG2I,sBAAW,CAACvC,gBAAgB,CAAC;EAChD,IAAM7F,YAAY,GAAGoI,sBAAW,CAAChC,kBAAkB,CAAC;EACpD,IAAMnG,cAAc,GAAGmI,sBAAW,CAAC/B,oBAAoB,CAAC;EACxD,IAAM9F,iBAAiB,GAAG6H,sBAAW,CAAC1B,uBAAuB,CAAC;EAE9DkF,eAAS,CAAC;IACR,IAAI,CAACrL,iBAAiB,IAAIC,IAAI,GAAG,CAAC,EAAE;IACpC,IAAM4O,OAAO,GAAGC,WAAW;MAAA;kDAErB;UAAA,SAAA2I;YAkBF,IAAI,CAACpN,IAAI,EAAE;YAGX,IAAImX,IAAI,EAAE;cACRD,OAAO,CAAC;gBACN1W,MAAM,EAAER,IAAI,CAACQ,MAAM;gBACnBtM,WAAW,EAAE8L,IAAI,CAACsB,KAAK;gBACvBnN,WAAW,EAAE6L,IAAI,CAACsB,KAAK;gBACvBmT,WAAW,EACT5f,UAAU,KAAKpB,mBAAW,CAACwf,KAAK,GAAGjT,IAAI,CAAC0U,cAAc,GAAG,EAAE;gBAC7DA,cAAc,EACZ7f,UAAU,KAAKpB,mBAAW,CAACyf,OAAO,GAAGlT,IAAI,CAAC0U,cAAc,GAAG,EAAE;gBAC/D0C,UAAU,EAAEpX,IAAI,CAACoX,UAAU;gBAC3BniB,MAAM,EAAE,CAAC+K,IAAI,CAAC/K,MAAM;gBACpBnC,MAAM,EAAEkN,IAAI,CAAClN,MAAM;gBACnB0hB,UAAU,EAAExU,IAAI,CAACwU;eAClB,CAAC;aACH,MAAM;cACL0C,OAAO,CAAC;gBACN1W,MAAM,EAAER,IAAI,CAACQ,MAAM;gBACnBtM,WAAW,EAAE8L,IAAI,CAACqX,WAAW;gBAC7BljB,WAAW,EAAE6L,IAAI,CAAC7L,WAAW;gBAC7BsgB,WAAW,EAAEzU,IAAI,CAACyU,WAAW;gBAC7BC,cAAc,EAAE1U,IAAI,CAAC0U,cAAc;gBACnC0C,UAAU,EAAEpX,IAAI,CAACoX,UAAU;gBAC3BniB,MAAM,EAAE,CAAC+K,IAAI,CAAC/K,MAAM;gBACpBnC,MAAM,EAAEkN,IAAI,CAAClN,MAAM;gBACnB0hB,UAAU,EAAExU,IAAI,CAACwU;eAClB,CAAC;;YACH,IAEGxU,IAAI,CAACQ,MAAM,KAAKpN,iBAAiB,CAACkkB,SAAS;cAC7C5S,aAAa,CAACF,OAAO,CAAC;cACtByP,UAAU,CAAC;gBACT5e,cAAc,CAAC;kBACbO,IAAI,EAAJA;iBACD,CAAC;eACH,EAAE,IAAI,CAAC;;;UAtDV,IAAIoK,IAAI;UACR,IAAIuX,MAAW;UACf,IAAMJ,IAAI,GACRtiB,UAAU,KAAKpB,mBAAW,CAACwf,KAAK,IAAIpe,UAAU,KAAKpB,mBAAW,CAACyf,OAAO;UAAA,IAAA9Q,KAAA;YAAA,IAEpE+U,IAAI;cAAA,OAAA7W,OAAA,CAAAW,OAAA,CACS/B,YAAY,CAACC,GAAG,CAC1BxJ,iBAAiB,6EAAwEC,IAAM,CACnG,EAAA8J,IAAA,WAAA8X,iBAAA;gBAAA,IAAAC,QAAA;gBAFDF,MAAM,GAAAC,iBAEL;gBACDxX,IAAI,IAAAyX,QAAA,GAAGF,MAAM,cAAAE,QAAA,uBAANA,QAAA,CAAQC,wBAAwB;;;cAAA,OAAApX,OAAA,CAAAW,OAAA,CAExB/B,YAAY,CAACC,GAAG,CAC1BxJ,iBAAiB,mEAA8DC,IAAM,CACzF,EAAA8J,IAAA,WAAAiY,kBAAA;gBAAA,IAAApI,QAAA;gBAFDgI,MAAM,GAAAI,kBAEL;gBACD3X,IAAI,IAAAuP,QAAA,GAAGgI,MAAM,cAAAhI,QAAA,uBAANA,QAAA,CAAQqI,eAAe;;;;UAAA,OAAAxV,KAAA,IAAAA,KAAA,CAAA1C,IAAA,GAAA0C,KAAA,CAAA1C,IAAA,CAAA0N,MAAA,IAAAA,MAAA,CAAAhL,KAAA;SA0CjC,YAAQJ,CAAC,EAAE;UACVG,WAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;UAC/B8B,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;SACnC;OACF,QAAAA,CAAA;QAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;OAAE,IAAI,CAAC;IAER,OAAO;MACL0C,aAAa,CAACF,OAAO,CAAC;KACvB;GACF,EAAE,CAAC7O,iBAAiB,EAAEC,IAAI,EAAEf,UAAU,CAAC,CAAC;EAEzCmM,eAAS,CAAC;IACR,IAAI,CAAChB,IAAI,EAAE;MACTmW,OAAO,CAAC,CAAC,CAAC;MACVO,cAAc,CAAC,CAAC,CAAC;MACjB;;IAGFzU,OAAO,CAACC,GAAG,CAAClC,IAAI,CAACQ,MAAM,CAAC;IACxB8V,YAAY,CAAC,CAAC,CAAC,CAAC;IAChB,IAAM9V,MAAM,GAAGR,IAAI,CAACQ,MAAgB;IAEpC,IAAIA,MAAM,KAAKpN,iBAAiB,CAACykB,SAAS,EAAE;MAC1C1B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdN,cAAc,CAAC,CAAC,CAAC;KAClB,MAAM,IAAIlW,MAAM,KAAKpN,iBAAiB,CAAC0kB,SAAS,EAAE;MACjD3B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdN,cAAc,CAAC,CAAC,CAAC;KAClB,MAAM,IAAIlW,MAAM,CAAC6I,UAAU,CAACjW,iBAAiB,CAAC2kB,WAAW,CAAC,EAAE;MAC3D5B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdV,YAAY,CAAC,CAAC,CAAC;MACfI,cAAc,CAAC,CAAC,CAAC,CAAC;MAClBzU,OAAO,CAAC9B,KAAK,CAACH,IAAI,CAACoX,UAAU,CAAC;MAC9BjV,WAAK,CAAChC,KAAK,CAAC,aAAa,CAAC;MAC1BqW,eAAe,CAAC,aAAa,CAAC;KAC/B,MAAM,IAAIhW,MAAM,KAAKpN,iBAAiB,CAAC4kB,SAAS,EAAE;MACjD7B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdN,cAAc,CAAC,CAAC,CAAC;KAClB,MAAM,IAAIlW,MAAM,KAAKpN,iBAAiB,CAAC6kB,IAAI,EAAE;MAC5C9B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdN,cAAc,CAAC,CAAC,CAAC;KAClB,MAAM,IAAIlW,MAAM,KAAKpN,iBAAiB,CAAC8kB,WAAW,EAAE;MACnD/B,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdV,YAAY,CAAC,CAAC,CAAC;MACfI,cAAc,CAAC,CAAC,CAAC,CAAC;MAClBzU,OAAO,CAAC9B,KAAK,CAACH,IAAI,CAACoX,UAAU,CAAC;MAC9BjV,WAAK,CAAChC,KAAK,CAAC,qCAAqC,CAAC;MAClDqW,eAAe,CAAC,qCAAqC,CAAC;KACvD,MAAM,IAAIhW,MAAM,KAAKpN,iBAAiB,CAAC+kB,YAAY,EAAE;MACpDhC,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,EAAE,CAAC;MACdV,YAAY,CAAC,CAAC,CAAC;MACfI,cAAc,CAAC,CAAC,CAAC,CAAC;MAClBzU,OAAO,CAAC9B,KAAK,CAACH,IAAI,CAACoX,UAAU,CAAC;MAC9BjV,WAAK,CAAChC,KAAK,CAAC,oCAAoC,CAAC;MACjDqW,eAAe,CAAC,oCAAoC,CAAC;KACtD,MAAM,IAAIhW,MAAM,KAAKpN,iBAAiB,CAACkkB,SAAS,EAAE;MACjDnB,OAAO,CAAC,CAAC,CAAC;MACVa,UAAU,CAAC,GAAG,CAAC;MACfN,cAAc,CAAC,CAAC,CAAC,CAAC;;GAErB,EAAE,CAAC1W,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEQ,MAAM,CAAC,CAAC;EAElB,OACE3T,6BAACurB,mBAAQ;IAACre,KAAK,EAAEA;KACflN;IACE4Q,SAAS,kCAAgC5J,KAAK,CAACgK,SAAS,cACtDhK,KAAK,CAACwkB,QACR,UAAIzB,SAAS,GAAG,WAAW,GAAG,EAAE,CAAE;IAClCzoB,KAAK,EAAE;MACLmqB,UAAU,EAAEzkB,KAAK,CAACykB,UAAU;MAC5BC,UAAU,EACR1kB,KAAK,CAACgK,SAAS,KAAKrK,wBAAgB,CAACglB,KAAK,GACtC3kB,KAAK,CAAC4kB,oBAAoB,GAC1B5kB,KAAK,CAAC6kB;;KAGd7rB;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC;KACb5Q,0DACgB0hB,cAAc,CAACwD,MAAM,CAAC,CAAA/R,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE/K,MAAM,KAAI,CAAC,CAAC,EAAE,GAAG,EAC1D,CAAA+K,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAElN,MAAM,KAAI,MAAM,oBAClBikB,OAAO,OAAI,CACb,CACD,EAEL,CAACH,SAAS,GACT/pB;IAAK4Q,SAAS,EAAC;KACb5Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MACPiZ,YAAY,CAAC,IAAI,CAAC;;KAGpBhqB,6BAAC8rB,QAAY;IACXlsB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,EACRN,WAAW,GAAG,CAAC,GACd1Q;IACE4Q,SAAS,EAAC,aAAa;IACvBG,OAAO,EAAE,SAAAA;MACP8C,QAAQ,CAAC7J,UAAU,EAAE,CAAC;MACtBzB,YAAY,EAAE;;KAGhBvI,6BAACioB,KAAS;IACRroB,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACK,GACP,IAAI,CACJ,GAENhR;IAAK4Q,SAAS,EAAC;KACb5Q;IAAK4Q,SAAS,EAAC,UAAU;IAACG,OAAO,EAAE,SAAAA;MAAA,OAAMiZ,YAAY,CAAC,KAAK,CAAC;;YAEtD,CAET,CACG,EACL,CAAA7W,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW,MAAI8L,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW,KACrCtH,6BAACwR,YAAY;IACXnK,WAAW,EAAE8L,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE9L,WAAW;IAC9BC,WAAW,EAAE6L,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE7L,WAAW;IAC9BmK,QAAQ,EAAEjB,SAAS,IAAI;IAE1B,CACG,EAENxQ;IAAK4Q,SAAS,EAAC;KACb5Q,6BAACsQ,WAAW;IACVC,IAAI,EAAEA,IAAI;IACVgZ,KAAK,EAAEA,KAAK;IACZ/Y,SAAS,EAAEA,SAAS;IACpBC,QAAQ,EAAEA,QAAQ;IAClBC,WAAW,EAAEA;IACb,EAQF1Q,6BAACynB,OAAO;IACNlX,IAAI,EAAEA,IAAI;IACVC,SAAS,EAAEA,SAAS;IACpBE,WAAW,EAAEA,WAAW;IACxByC,IAAI,EAAEA;IACN,CACE,EAENnT;IAAK4Q,SAAS,EAAC;KACb5Q,6BAACmR,YAAY;IAACC,EAAE,EAAE;KAChBpR,6BAACK,UAAU;IACTT,IAAI,EAAEoH,KAAK,CAACgK,SAAS,KAAK,OAAO,GAAG,OAAO,GAAG;IAC9C,CACW,CACX,EACNhR,6BAACgoB,SAAS,OAAG,EACbhoB,6BAACkoB,SAAS;IAAC/U,IAAI,EAAEA;IAAQ,EACzBnT,6BAAC+rB,aAAO;IACNC,QAAQ,EAAC,WAAW;IACpBC,YAAY,EAAE,KAAK;IACnBC,cAAc,EAAE;MACdF,QAAQ,EAAE;KACX;IACDG,YAAY,EAAE;MACZC,QAAQ,EAAE,EAAE,GAAG,IAAI;MACnB9qB,KAAK,EAAE;QACL0qB,QAAQ,EAAE,UAAU;QACpBK,GAAG,EAAE,MAAM;QACXC,KAAK,EAAE,QAAQ;QACfC,MAAM,EAAE,OAAO;QACfC,OAAO,EAAE,cAAc;QACvBC,KAAK,EACHzlB,KAAK,CAACgK,SAAS,KAAKrK,wBAAgB,CAACglB,KAAK,GAAG,OAAO,GAAG,OAAO;QAChEH,QAAQ,EAAE,KAAK;QACfkB,YAAY,EAAE,KAAK;QACnBC,MAAM,EAAE,mBAAmB;QAC3BjB,UAAU,EAAE;;;IAGhB,EACF1rB,6BAAC4sB,oBAAO;IACN3rB,EAAE,EAAC,eAAe;IAClB2P,SAAS,qBAAmB5J,KAAK,CAACgK,SAAW;IAC7C6b,OAAO,EAAE5H,YAAY;IACrB3jB,KAAK,EAAE;MAAEwrB,MAAM,EAAE;;IACjB,CACE,CACG;AAEf,CAAC;;AC3RD,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAztB,IAAA;MACd0tB,kBAAkB,GAAA1tB,IAAA,CAAlB0tB,kBAAkB;EAIlB,IAAMnZ,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM3M,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAM9H,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMrF,MAAM,GAAGuI,sBAAW,CAACnC,YAAY,CAAC;EACxC,IAAMnG,SAAS,GAAGsI,sBAAW,CAAC5B,eAAe,CAAC;EAC9C,IAAMnG,UAAU,GAAG+H,sBAAW,CAAC9B,gBAAgB,CAAC;EAChD,IAAM3F,eAAe,GAAGyH,sBAAW,CAACtB,qBAAqB,CAAC;EAC1D,IAAMjG,eAAe,GAAGuH,sBAAW,CAACpB,qBAAqB,CAAC;EAC1D,IAAMlE,iBAAiB,GAAGsF,sBAAW,CAACpC,uBAAuB,CAAC;EAC9D,IAAMgU,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EACrD,IAAM8d,aAAa,GAAGtc,sBAAW,CAAChD,iBAAiB,CAAC;EACpD,IAAMoI,aAAa,GAAGpF,sBAAW,CAAC/C,iBAAiB,CAAC;EACpD,IAAM2X,IAAI,GAAGxf,SAAS,CAACwc,YAAY,IAAI,MAAM,CAAC,CAAC3d,IAAI;EAEnD,IAAMqgB,YAAY,GAAGzP,aAAO,CAC1B;IAAA,OACEtM,eAAe,IAAIE,eAAe,KAAK,KAAK,2BAClBA,eAAe,aACrC,EAAE;KACR,CAACF,eAAe,EAAEE,eAAe,CAAC,CACnC;EAED+K,eAAS,CAAC;IACR,IAAI,CAAC8Q,YAAY,EAAE;IACnB3P,WAAK,CAAChC,KAAK,CAAC2R,YAAY,CAAC;GAC1B,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,OACEjlB;IAAK4Q,SAAS,EAAC;KACZzJ,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GAC3BnmB;IAAG4Q,SAAS,EAAC,eAAe;IAACtP,KAAK,EAAE0rB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE1rB;KACrD0rB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE3c,KAAK,CACxB,GACF,IAAI,EACRrQ;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;sBAA6B,EAC7C5Q,6BAAC8lB,eAAe,OAAG,CACf,EAEN9lB;IACE4Q,SAAS,qBACPqc,aAAa,KAAKhqB,uBAAS,CAACgB,IAAI,GAAG,SAAS,GAAG,EACjD;KAEAjE;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;uBAA8B,EAC9C5Q,6BAACwkB,YAAY,OAAG,CACZ,EAELrd,IAAI,KAAKV,mBAAW,CAACW,MAAM,IAC1BpH;IAAK4Q,SAAS,EAAC;KACb5Q;IAAM4Q,SAAS,EAAC;uBAA8B,EAC9C5Q,6BAAC8lB,eAAe;IAACpQ,aAAa,EAAE;IAAS,CAE5C,CACG,EAELvO,IAAI,KAAKV,mBAAW,CAACW,MAAM,IAAI6lB,aAAa,KAAKhqB,uBAAS,CAACgB,IAAI,GAC9D8R,aAAa,KAAK9S,uBAAS,CAACgB,IAAI,GAC9BjE,6BAAC8nB,SAAS,OAAG,GAEb9nB;IAAK4Q,SAAS,iBAAe5J,KAAK,CAACgK;KACjChR;IAAM4Q,SAAS,EAAC;uBAA8B,EAC9C5Q,6BAAC4mB,YAAY,OAAG,CAEnB,GACC,IAAI,EAEPzf,IAAI,KAAKV,mBAAW,CAACW,MAAM,GAC1BpH;IAAK4Q,SAAS,iBAAe5J,KAAK,CAACgK;KACjChR;IAAM4Q,SAAS,EAAC;eAAsB,EACtC5Q;IAAK4Q,SAAS,EAAC;KACb5Q;IACEgQ,IAAI,EAAC,QAAQ;IACb8E,KAAK,EAAE1M,MAAM,IAAI,EAAE;IACnBye,QAAQ,EAAE,SAAAA,SAAC1R,CAAC;MACV,IAAI+X,OAAO,GAAG,CAAC/X,CAAC,CAAC7D,MAAM,CAACwD,KAAK;MAC7BjB,QAAQ,CAACvI,SAAS,CAAC6hB,UAAU,CAACD,OAAO,CAACE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;IAErD,EACFptB,6BAACmlB,YAAY,OAAG,CACZ,CACF,GAENnlB;IAAK4Q,SAAS,iBAAe5J,KAAK,CAACgK;KACjChR;IAAM4Q,SAAS,EAAC;eAAsB,EACtC5Q;IAAK4Q,SAAS,oBAAkB5J,KAAK,CAACgK;KACpChR,2CAAO,CAAAqL,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEjD,MAAM,KAAI,EAAE,CAAQ,EAC9CpI;IAAK4Q,SAAS,EAAC;KACZ5Q,6BAACulB,IAAI,OAAG,EACRhD,YAAY,CACT,CACF,CAET,EAEApb,IAAI,KAAKV,mBAAW,CAACW,MAAM,IAAIwB,UAAU,GAAG,CAAC,GAC1C5I,6BAAC8mB,cAAc;IACb5T,IAAI,cAAYwO,cAAc,CAACwD,MAAM,CAACtc,UAAU,CAAC,cAAW;IAC5Dme,OAAO,EAAE1e,SAAS;IAClB2e,QAAQ,EAAE,SAAAA,SAAClS,KAAc;MAAA,OAAKjB,QAAQ,CAAC9H,YAAY,CAAC+I,KAAK,CAAC,CAAC;;IAC3D,GACA,IAAI,CACN;AAEV,CAAC;;ACzHD,IAAMuY,UAAU,GAAG,SAAbA,UAAUA;EACd,IAAMxZ,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM9M,KAAK,GAAG2J,sBAAW,CAAClD,WAAW,CAAC;EACtC,IAAMtG,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAM1G,MAAM,GAAGuI,sBAAW,CAACnC,YAAY,CAAC;EACxC,IAAM+T,YAAY,GAAG5R,sBAAW,CAACxB,mBAAmB,CAAC;EACrD,IAAMoW,IAAI,GAAGxf,SAAS,CAACwc,YAAY,IAAI,MAAM,CAAC,CAAC3d,IAAI;EAEnD,OACE5E;IAAK4Q,SAAS;KACZ5Q,6EAAyC,EAezCA;IAAK4Q,SAAS,oBAAkB5J,KAAK,CAACgK;KACpChR,qDAAoB,EACpBA;IAAK4Q,SAAS,EAAC;KACb5Q;IACEgQ,IAAI,EAAC,QAAQ;IACb8E,KAAK,EAAE1M,MAAM,IAAI,EAAE;IACnBklB,QAAQ,EAAEnmB,IAAI,KAAKV,mBAAW,CAAC0f,OAAO;IACtCU,QAAQ,EAAE,SAAAA,SAAC1R,CAAC;MACV,IAAM+X,OAAO,GAAG,CAAC/X,CAAC,CAAC7D,MAAM,CAACwD,KAAK;MAC/BjB,QAAQ,CAACvI,SAAS,CAAC6hB,UAAU,CAACD,OAAO,CAACE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;IAErD,EACFptB;IAAK4Q,SAAS,EAAC;KACZ5Q,6BAACulB,IAAI,OAAG,EACTvlB,2CAAOuiB,YAAY,CAAQ,CACvB,CACF,CACF,CACF;AAEV,CAAC;;SCvCuBgL,aAAaA,CACnCC,cACAC,MAAc;MADdD;IAAAA,eAAwB,KAAK;;EAG7B,IAAA7I,iBAAA,GAAmC9K,gBAAgB,EAAE;IAA7CD,aAAa,GAAA+K,iBAAA,CAAb/K,aAAa;IAAEH,OAAO,GAAAkL,iBAAA,CAAPlL,OAAO;EAC9B,IAAM5F,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMlL,UAAU,GAAG+H,sBAAW,CAAC9B,gBAAgB,CAAC;EAChD,IAAM1H,IAAI,GAAGwJ,sBAAW,CAAC7B,UAAU,CAAC;EACpC,IAAM4e,OAAO,GAAG/c,sBAAW,CAACnC,YAAY,CAAC;EACzC,IAAMnH,WAAW,GAAGsJ,sBAAW,CAAChD,iBAAiB,CAAC;EAClD,IAAMoI,aAAa,GAAGpF,sBAAW,CAAC/C,iBAAiB,CAAC;EACpD,IAAM+f,cAAc,GAAGhd,sBAAW,CAAC9C,mBAAmB,CAAC;EACvD,IAAMxC,iBAAiB,GAAGsF,sBAAW,CAACpC,uBAAuB,CAAC;EAC9D,IAAMjH,WAAW,GAAGkO,aAAO,CACzB;IAAA,OACErO,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GACxB,CAAA9a,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAE/D,WAAW,KAAI,EAAE,GACpCyO,aAAa;KACnB,CAAC1K,iBAAiB,EAAElE,IAAI,EAAE4O,aAAa,CAAC,CACzC;EACD,IAAMxO,aAAa,GAAGiO,aAAO,CAC3B;IAAA,OACErO,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GACxB,CAAA9a,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAE9D,aAAa,KAAI,EAAE,GACtComB,cAAc;KACpB,CAACtiB,iBAAiB,EAAElE,IAAI,EAAEwmB,cAAc,CAAC,CAC1C;EACD,IAAMvlB,MAAM,GAAGoN,aAAO,CACpB;IAAA,OAAOrO,IAAI,KAAKV,mBAAW,CAAC0f,OAAO,GAAG9a,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEjD,MAAM,GAAGslB,OAAO;GAAC,EAC1E,CAACriB,iBAAiB,EAAElE,IAAI,EAAEumB,OAAO,CAAC,CACnC;EAED,IAAME,aAAa,YAAbA,aAAaA;IAAA;MACjB,IACE,CAACvmB,WAAW,IACZ,CAACC,WAAW,IACZ,CAACmS,OAAO,IACR,CAACG,aAAa,IACd,CAACrS,aAAa,IACd,CAACa,MAAM,EAEP,OAAAqL,OAAA,CAAAW,OAAA;MAAM,OAAAX,OAAA,CAAAW,OAAA,CAAA6H,MAAA,aAEJ;QACF,IAAI5U,WAAW,KAAKpE,uBAAS,CAACgB,IAAI,IAAIqD,WAAW,KAAKrE,uBAAS,CAACgB,IAAI,EAAE;UACpE4P,QAAQ,CAAChI,aAAa,CAAC,CAAC,CAAC,CAAC;UAC1B;;QACD,OAAA4H,OAAA,CAAAW,OAAA,CAEoC/B,YAAY,CAACC,GAAG,CAChDmb,MAAM,aAAQpmB,WAAa,CAC/B,EAAAwL,IAAA,WAFKgb,iBAAiB;UAGvB,IAAMC,SAAS,GAAGD,iBAAiB,CAACE,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAAA,OAAAva,OAAA,CAAAW,OAAA,CAChB/B,YAAY,CAACC,GAAG,CAChDmb,MAAM,aAAQnmB,WAAa,CAC/B,EAAAuL,IAAA,WAFKob,iBAAiB;YAGvB,IAAMC,SAAS,GAAGD,iBAAiB,CAACF,GAAG,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAErD,IAAID,GAAG,GAAG,CAACD,SAAS,GAAG,CAACI,SAAS;YACjCra,QAAQ,CAAChI,aAAa,CAACshB,UAAU,CAACY,GAAG,CAACX,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;OACpD,YAAQjY,CAAC,EAAE;QACVtB,QAAQ,CAAChI,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1BuJ,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,CAAC,CAAC;QAClCG,cAAK,CAAChC,KAAK,CAAC,kBAAkB,CAAC;OAChC;KACF,QAAA6B,CAAA;MAAA,OAAA1B,OAAA,CAAAC,MAAA,CAAAyB,CAAA;;;EAEDhB,eAAS,CAAC;IACR,IAAIqZ,YAAY,EAAE;IAClBI,aAAa,EAAE;IACf,IAAMjW,OAAO,GAAGC,WAAW,CAAC;MAC1BgW,aAAa,EAAE;KAChB,EAAE,EAAE,GAAG,IAAI,CAAC;IAEb,OAAO;MACL/V,aAAa,CAACF,OAAO,CAAC;KACvB;GAGF,EAAE,CACDtQ,WAAW,EACXC,WAAW,EACXmS,OAAO,EACPG,aAAa,EACb4T,YAAY,EACZjmB,aAAa,EACba,MAAM,CACP,CAAC;EAEF,OAAOoN,aAAO,CACZ;IAAA,OAAO;MACL5M,UAAU,EAAVA;KACD;GAAC,EACF,CAACA,UAAU,CAAC,CACb;AACH;;;;;;;;;;;;;;;;;;;;;;AClHA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAC5B,AACA;AACA;AACA,EAAE,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AACzD,GAAG;AACH;AACA;AACA;AACA,EAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;AACtC,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC5B,IAAI,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;AAClC,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AACpC,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;AACtC,GAAG;AACH;AACA;AACA;AACA,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzB,MAAM,OAAO,MAAM,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAC1C,QAAQ,MAAM,GAAG,IAAI,CAAC;AACtB,QAAQ,IAAI,GAAG,EAAE,CAAC;AAClB,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;AAC1D,KAAK;AACL,GAAG;AACH,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,IAAI,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;AACxB,GAAG,MAAM;AACT,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AACpB,GAAG;AACH;AACA,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;AAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,UAAiB,CAAC,MAAM,CAAC;AACxC,KAAK;AACL,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,GAAG;AACH;AACA,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,IAAI,IAAI,GAAG,YAAY,EAAE,EAAE;AAC3B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAClD,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3E,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5D,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,KAAK;AACL;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AAC3D;AACA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3B,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;AAC/B,MAAM,IAAI,IAAI,KAAK,EAAE,EAAE;AACvB,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACxD,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACzE,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,SAAS,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK,MAAM,IAAI,MAAM,GAAG,gBAAgB,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,GAAG;AACnB,QAAQ,MAAM,GAAG,SAAS;AAC1B,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,KAAK,GAAG;AACnB,QAAQ,MAAM,GAAG,SAAS;AAC1B,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,SAAS;AACxC,QAAQ,CAAC;AACT,OAAO,CAAC;AACR,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO;AAChC;AACA;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACvE;AACA,IAAI,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAC9C,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;AAC5B,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;AAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;AAClB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAChC,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACpD,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC;AAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;AAClB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,OAAO;AACP,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AAC5B,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;AACA,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE;AACnC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB;AACA,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;AACpC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;AACpB,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC,CAAC;AACtD,KAAK;AACL,GAAG;AACH;AACA,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;AACpD,IAAI,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzC,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,UAAU,EAAE;AACjC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AACtE;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;AACA,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE;AACzB,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,SAAS,MAAM;AACf,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,SAAS;AACT,OAAO;AACP,KAAK,MAAM;AACX,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAC9C,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrF,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;AAClD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACvC,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,IAAI,CAAC,CAAC;AACjB,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,SAAS,MAAM;AACf,UAAU,GAAG,IAAI,CAAC,CAAC;AACnB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrC;AACA,MAAM,CAAC,IAAI,GAAG,CAAC;AACf;AACA;AACA,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AACnB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE;AAC1B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzB;AACA;AACA,OAAO,MAAM;AACb,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd,OAAO;AACP,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,mBAAmB,CAAC,CAAC;AACrD,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACtE;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;AACA;AACA,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;AAC9E,MAAM,OAAO,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AAC9B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AACnD;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE;AAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACvD;AACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,GAAG,IAAI,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AACvB,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACjD,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;AAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,KAAK,IAAI;AAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE;AACzE,IAAI,IAAI;AACR,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,GAAG,OAAO,CAAC;AACvE,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AACrC,KAAK;AACL,GAAG,MAAM;AACT,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AACnC,GAAG;AACH;AACA,EAAE,SAAS,OAAO,IAAI;AACtB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACtE,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG;AACd,IAAI,EAAE;AACN,IAAI,GAAG;AACP,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,kBAAkB;AACtB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAC1B,IAAI,uBAAuB;AAC3B,IAAI,wBAAwB;AAC5B,IAAI,yBAAyB;AAC7B,IAAI,0BAA0B;AAC9B,IAAI,2BAA2B;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;AACvE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;AACtE,IAAI,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACrE,IAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACxE,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5D,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AACvC,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,QAAQ,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;AAC9C,QAAQ,GAAG,IAAI,CAAC,CAAC;AACjB,QAAQ,IAAI,GAAG,IAAI,EAAE,EAAE;AACvB,UAAU,GAAG,IAAI,EAAE,CAAC;AACpB,UAAU,CAAC,EAAE,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAClD,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC;AACpD,SAAS,MAAM;AACf,UAAU,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,OAAO;AACP,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACvC,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE;AACxD;AACA,MAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,MAAM,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,MAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,MAAM,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClD,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,UAAU,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtD,SAAS,MAAM;AACf,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACxB,SAAS;AACT,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE;AACzC,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC/B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,OAAO;AACP,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;AACrD,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;AAC/C,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACvC,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5D;AACA,MAAM,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAC5D,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,MAAM,MAAM,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAC9C,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAChC,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/D,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3D,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,QAAQ,GAAG,SAAS,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;AACrD,IAAI,IAAI,SAAS,CAAC,WAAW,EAAE;AAC/B,MAAM,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;AACA,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,IAAI,IAAI,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE,uCAAuC,CAAC,CAAC;AAC7E,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACzD;AACA,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC7C,IAAI,IAAI,OAAO,GAAG,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD,IAAI,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACpD,IAAI,OAAO,GAAG,CAAC;AACf,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1E,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;AACA,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7C,OAAO;AACP,MAAM,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACjC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;AAC9C,OAAO;AACP;AACA,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACnC,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;AAChD,SAAS;AACT,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,OAAO,MAAM;AACb,QAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC5B,QAAQ,KAAK,IAAI,CAAC,CAAC;AACnB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AAC/B,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,MAAM,OAAO,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACpC,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE;AAC1E,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAClD;AACA,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,MAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7C,OAAO;AACP,MAAM,IAAI,QAAQ,IAAI,CAAC,EAAE;AACzB,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;AAC9C,OAAO;AACP;AACA,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,QAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC3B,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC;AAChD,SAAS;AACT,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,OAAO,MAAM;AACb,QAAQ,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC5B,QAAQ,KAAK,IAAI,CAAC,CAAC;AACnB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;AAC9B;AACA,MAAM,OAAO,QAAQ,IAAI,CAAC,EAAE;AAC5B,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,MAAM,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,GAAG,MAAM;AACT,IAAI,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,CAAC,EAAE;AACtD,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE;AACvB,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChB,QAAQ,CAAC,MAAM,EAAE,CAAC;AAClB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE;AACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjB,OAAO;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE;AAClD;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE;AAC5B,MAAM,CAAC,IAAI,EAAE,CAAC;AACd,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;AAC1B,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,CAAC,MAAM,CAAC,CAAC;AACf,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACzB,MAAM,CAAC,EAAE,CAAC;AACV,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,IAAI;AACjD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,EAAE,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACvC;AACA,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;AAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,MAAM,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1B;AACA,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;AAChD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;AAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,MAAM,CAAC,IAAI,CAAC,CAAC;AACb,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM;AAC1B,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;AACnD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,KAAK,EAAE;AAChD,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;AACpD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACxB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AACrC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AACxB,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;AACA,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C;AACA,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE;AAC9C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACpD;AACA,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,IAAI,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;AAC9B;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,MAAM,WAAW,EAAE,CAAC;AACpB,KAAK;AACL;AACA;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACjD,KAAK;AACL;AACA;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;AAC5C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7B,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACxB;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1B;AACA,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACtD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;AACvD,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,IAAI,IAAI,CAAC,CAAC;AACV;AACA;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AACzB,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B;AACA;AACA,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC3B,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACtC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACpB;AACA,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;AACxB,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC1D,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE;AACA,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;AACA,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,MAAM,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA;AACA,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACpC,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC9B,KAAK;AACL;AACA;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;AACnB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE;AACjB,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACtD,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AACnC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACpC,KAAK;AACL;AACA;AACA,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACnD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACpB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,GAAG,CAAC;AACJ;AACA;AACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AACrB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC;AACA;AACA,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,EAAE,CAAC;AAChC,MAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrE,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC1B,QAAQ,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;AAC9B,OAAO;AACP,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,KAAK;AACL;AACA,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;AACxB,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI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GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,C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"}
1
+ {"version":3,"file":"index.js","sources":["../src/assets/icons/Cross.tsx","../src/assets/icons/Minimize.tsx","../src/assets/icons/FooterLogo.tsx","../src/assets/icons/Check.tsx","../src/assets/icons/Warning.tsx","../src/assets/icons/ArrowRight.tsx","../src/assets/icons/Arrow.tsx","../src/assets/icons/Ethereum.tsx","../src/assets/icons/Solana.tsx","../src/assets/icons/Polygon.tsx","../src/assets/icons/Avalanche.tsx","../src/assets/icons/Arbitrum.tsx","../src/assets/icons/Optimism.tsx","../src/assets/icons/USDT.tsx","../src/assets/icons/Copy.tsx","../src/assets/icons/Bank.tsx","../src/assets/icons/BSC.tsx","../src/assets/icons/KEUR.tsx","../src/assets/icons/Tron.tsx","../src/utils/config.tsx","../src/utils/constants.tsx","../src/interface.tsx","../src/store/optionSlice.tsx","../src/store/index.tsx","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/store/selectors.tsx","../src/assets/loading/180-ring.tsx","../src/components/reusable/Progressbar.tsx","../src/components/reusable/ExternalLink.tsx","../src/components/reusable/NetworkLabel.tsx","../src/components/reusable/PrimaryButton.tsx","../src/components/reusable/SecondaryButton.tsx","../src/helpers/fetch-wrapper.tsx","../src/hooks/useNetworkOptions.tsx","../src/components/reusable/NetworkSelect.tsx","../src/components/reusable/SolanaWalletSelect.tsx","../src/components/reusable/TronWalletSelect.tsx","../src/hooks/useIsWalletReady.tsx","../src/utils/functions.tsx","../src/utils/testId.tsx","../src/utils/solana/createAssociatedTokenAccountInstruction.ts","../src/utils/solana/getAccountInfo.ts","../src/utils/solana/getAssociatedTokenAddress.ts","../src/utils/solana/getOrCreateAssociatedTokenAccount.ts","../src/tronweb.tsx","../src/helpers/functions.tsx","../src/hooks/useBalance.tsx","../src/components/reusable/WalletButton.tsx","../src/components/reusable/CoinDropdown.tsx","../src/components/reusable/NetworkDropdown.tsx","../src/components/reusable/ConfirmDetails.tsx","../src/components/reusable/AddressInput.tsx","../src/components/reusable/CustomCheckbox.tsx","../src/components/reusable/CopyButton.tsx","../src/components/reusable/StepBox.tsx","../src/components/reusable/BankInput.tsx","../src/components/modals/HelpPopup.tsx","../src/components/modals/HashPopup.tsx","../src/components/modals/SolanaWalletConnectModal.tsx","../src/components/modals/TronWalletConnectModal.tsx","../src/components/modals/BankPopup.tsx","../src/components/TransactionWidget.tsx","../src/components/reusable/SingleForm.tsx","../src/components/reusable/CoinSelect.tsx","../src/hooks/useServiceFee.tsx","../node_modules/bn.js/lib/bn.js","../src/utils/solana/createTransferInstruction.ts","../src/utils/func/bytes.js","../src/utils/func/code.js","../src/utils/func/base58.js","../src/utils/func/index.js","../src/hooks/useAllowance.tsx","../src/components/reusable/AddressInputWizard.tsx","../src/hooks/useCurrencyOptions.tsx","../src/hooks/useWidth.tsx","../src/hooks/useSign.tsx","../src/components/TransferWidget.tsx","../src/components/KimaTransactionWidget.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react'\r\n\r\nconst Cross = ({ width = 32, height = 32, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M9.656 1.688L5.944 5.4L9.656 9.112L8.712 10.056L5 6.344L1.288 10.056L0.344 9.112L4.056 5.4L0.344 1.688L1.288 0.743999L5 4.456L8.712 0.743999L9.656 1.688Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Cross\r\n","import React from 'react'\r\n\r\nconst Minimize = ({ width = 16, height = 1, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 11 1'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='11' height='1' fill={fill} />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Minimize\r\n","import React from 'react'\r\n\r\nconst FooterLogo = ({ width = 32, height = 32, fill = '#C5C5C5', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 103 20'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M91.483 10.2491C91.483 9.61748 91.8537 9.0958 92.54 9.0958C93.1091 9.11485 93.5697 9.63311 93.5697 10.2491V14.2164C93.5697 14.24 93.5744 14.2633 93.5834 14.2851C93.5924 14.3069 93.6057 14.3266 93.6224 14.3433C93.6391 14.36 93.6589 14.3731 93.6807 14.3821C93.7025 14.3911 93.7259 14.3957 93.7495 14.3956H95.5465C95.5941 14.3956 95.6397 14.3767 95.6733 14.3431C95.7069 14.3095 95.7258 14.2639 95.7258 14.2164V9.80993C95.7258 8.20338 94.7782 7.15953 93.2678 7.15953C92.224 7.15953 91.5377 7.61282 91.0986 8.10519C91.0971 8.10731 91.0951 8.10904 91.0928 8.11023C91.0905 8.11142 91.088 8.11205 91.0854 8.11205C91.0828 8.11205 91.0802 8.11142 91.0779 8.11023C91.0757 8.10904 91.0737 8.10731 91.0722 8.10519C90.6731 7.57326 90.0415 7.16099 89.1349 7.16099C88.3109 7.16099 87.6109 7.50292 87.2661 8.00848L87.2539 8.00506V7.50389C87.2539 7.48031 87.2493 7.45695 87.2404 7.43514C87.2314 7.41334 87.2182 7.39352 87.2015 7.37682C87.1849 7.36012 87.1651 7.34687 87.1433 7.33783C87.1215 7.32879 87.0982 7.32414 87.0746 7.32414H85.2912C85.244 7.32491 85.199 7.34417 85.1658 7.37778C85.1327 7.4114 85.114 7.45668 85.1139 7.50389V14.2164C85.1139 14.2639 85.1328 14.3095 85.1664 14.3431C85.2 14.3767 85.2456 14.3956 85.2932 14.3956H87.0766C87.1241 14.3956 87.1697 14.3767 87.2033 14.3431C87.2369 14.3095 87.2558 14.2639 87.2558 14.2164V10.2491C87.2558 9.61748 87.6266 9.0958 88.2997 9.0958C88.8756 9.11485 89.343 9.63311 89.343 10.2491V14.2164C89.343 14.2639 89.3619 14.3095 89.3955 14.3431C89.4292 14.3767 89.4748 14.3956 89.5223 14.3956H91.3057C91.3532 14.3956 91.3988 14.3767 91.4324 14.3431C91.4661 14.3095 91.4849 14.2639 91.4849 14.2164L91.483 10.2491ZM100.927 14.2164C100.927 14.2639 100.946 14.3095 100.979 14.3431C101.013 14.3767 101.059 14.3956 101.106 14.3956H102.821C102.868 14.3956 102.914 14.3767 102.947 14.3431C102.981 14.3095 103 14.2639 103 14.2164V10.0156C103 8.20338 101.819 7.15953 99.801 7.15953C99.0649 7.15367 98.0533 7.36712 97.4691 7.64555C97.4394 7.66035 97.4145 7.68324 97.3972 7.71158C97.3799 7.73993 97.371 7.77257 97.3714 7.80577V9.2526C97.3714 9.28314 97.3792 9.31319 97.3941 9.33986C97.409 9.36654 97.4304 9.38895 97.4565 9.40497C97.4825 9.42099 97.5122 9.43008 97.5427 9.43136C97.5732 9.43265 97.6035 9.4261 97.6308 9.41232C98.1364 9.16467 98.7142 8.98589 99.3214 8.98589C100.209 8.96831 100.928 9.46654 100.928 10.0981V10.147C100.928 10.17 100.923 10.1927 100.911 10.2128C100.9 10.2328 100.883 10.2494 100.863 10.261C100.844 10.2725 100.821 10.2784 100.798 10.2782C100.775 10.278 100.752 10.2717 100.733 10.2598C100.402 10.0644 99.8577 9.89053 99.2779 9.89053C97.7812 9.89053 96.5454 10.7966 96.5454 12.1697C96.5454 13.6527 97.7812 14.5593 99.209 14.5593C100.033 14.5593 100.678 14.2296 100.925 13.955L100.927 14.2164ZM100.954 12.1712C100.954 12.7344 100.336 13.0362 99.7463 13.0362C99.1284 13.0362 98.5252 12.7344 98.5252 12.1712C98.5252 11.6221 99.1294 11.3203 99.7463 11.3203C100.336 11.3203 100.954 11.6221 100.954 12.1712Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M81.6947 14.3956H83.478C83.5256 14.3956 83.5712 14.3767 83.6048 14.3431C83.6384 14.3095 83.6573 14.2639 83.6573 14.2164V7.5039C83.6573 7.45635 83.6384 7.41075 83.6048 7.37713C83.5712 7.34352 83.5256 7.32463 83.478 7.32463H81.6947C81.6471 7.32463 81.6015 7.34352 81.5679 7.37713C81.5343 7.41075 81.5154 7.45635 81.5154 7.5039V14.2164C81.5154 14.2639 81.5343 14.3095 81.5679 14.3431C81.6015 14.3767 81.6471 14.3956 81.6947 14.3956Z'\r\n fill={fill}\r\n />\r\n <path\r\n d='M82.6003 4.00014H82.5705C82.3972 3.99758 82.2252 4.02978 82.0646 4.09482C81.904 4.15987 81.7581 4.25645 81.6355 4.37885C81.5129 4.50125 81.416 4.647 81.3507 4.80747C81.2853 4.96794 81.2528 5.13988 81.255 5.31313C81.2544 5.4851 81.288 5.65548 81.354 5.81429C81.4199 5.97311 81.5169 6.11718 81.6392 6.23807C81.7615 6.35896 81.9067 6.45425 82.0662 6.51837C82.2258 6.58248 82.3966 6.61413 82.5685 6.61147H82.5983C82.7698 6.61147 82.9396 6.5777 83.098 6.51208C83.2564 6.44647 83.4003 6.35029 83.5216 6.22905C83.6428 6.10781 83.739 5.96387 83.8046 5.80546C83.8702 5.64705 83.904 5.47727 83.904 5.30581C83.904 5.13434 83.8702 4.96456 83.8046 4.80615C83.739 4.64774 83.6428 4.5038 83.5216 4.38256C83.4003 4.26132 83.2564 4.16515 83.098 4.09953C82.9396 4.03391 82.7698 4.00014 82.5983 4.00014'\r\n fill={fill}\r\n />\r\n <path\r\n d='M79.7198 12.3895C79.4939 12.1693 79.196 12.0384 78.8811 12.0207C77.7161 11.9836 77.5481 11.016 77.5481 10.7717C77.5481 10.5055 77.7332 9.57205 78.8792 9.53542C79.2181 9.51481 79.5358 9.3633 79.7651 9.11289C79.9944 8.86248 80.1175 8.53275 80.1083 8.19331C80.0991 7.85388 79.9584 7.53129 79.7158 7.29366C79.4733 7.05602 79.1479 6.92193 78.8083 6.91969H78.7995C78.4598 6.92039 78.1336 7.05357 77.8905 7.29092C77.6131 7.56153 77.4963 7.92593 77.4963 8.28397C77.4963 8.59903 77.2877 9.46264 76.3196 9.46264C75.9552 9.46264 75.5727 9.56863 75.2938 9.85341C75.2816 9.86562 75.2723 9.87978 75.2611 9.89297V9.8876C75.1937 9.95745 75.1805 9.90225 75.1815 9.86464V4.59704C75.1815 4.54958 75.1627 4.50406 75.1291 4.47046C75.0956 4.43685 75.0502 4.41791 75.0027 4.41778H73.1793C73.1317 4.41778 73.0861 4.43666 73.0525 4.47028C73.0189 4.5039 73 4.5495 73 4.59704V14.2618C73 14.3093 73.0189 14.3549 73.0525 14.3886C73.0861 14.4222 73.1317 14.4411 73.1793 14.4411H75.0027C75.0502 14.4409 75.0957 14.422 75.1293 14.3884C75.1629 14.3548 75.1818 14.3093 75.182 14.2618V11.691C75.182 11.6534 75.1942 11.5982 75.2616 11.6681V11.6637C75.2723 11.6764 75.2816 11.6895 75.2933 11.7018C75.5723 11.988 75.9493 12.0925 76.3191 12.0925C77.2877 12.0925 77.4963 13.0695 77.4963 13.2712C77.4963 13.5501 77.6131 13.9936 77.8905 14.2642C78.1346 14.5025 78.4623 14.6357 78.8034 14.6355C79.1505 14.6361 79.4836 14.499 79.7296 14.2542C79.9757 14.0093 80.1144 13.6769 80.1155 13.3298V13.3215C80.115 13.1473 80.0798 12.975 80.0118 12.8146C79.9439 12.6542 79.8446 12.5091 79.7198 12.3876'\r\n fill={fill}\r\n />\r\n <path\r\n d='M6.516 8.084C6.516 8.78 6.276 9.36 5.796 9.824C5.324 10.28 4.6 10.508 3.624 10.508H2.016V14H0.924V5.636H3.624C4.568 5.636 5.284 5.864 5.772 6.32C6.268 6.776 6.516 7.364 6.516 8.084ZM3.624 9.608C4.232 9.608 4.68 9.476 4.968 9.212C5.256 8.948 5.4 8.572 5.4 8.084C5.4 7.052 4.808 6.536 3.624 6.536H2.016V9.608H3.624ZM10.5412 14.108C9.92522 14.108 9.36522 13.968 8.86122 13.688C8.36522 13.408 7.97322 13.012 7.68522 12.5C7.40522 11.98 7.26522 11.38 7.26522 10.7C7.26522 10.028 7.40922 9.436 7.69722 8.924C7.99322 8.404 8.39322 8.008 8.89722 7.736C9.40122 7.456 9.96522 7.316 10.5892 7.316C11.2132 7.316 11.7772 7.456 12.2812 7.736C12.7852 8.008 13.1812 8.4 13.4692 8.912C13.7652 9.424 13.9132 10.02 13.9132 10.7C13.9132 11.38 13.7612 11.98 13.4572 12.5C13.1612 13.012 12.7572 13.408 12.2452 13.688C11.7332 13.968 11.1652 14.108 10.5412 14.108ZM10.5412 13.148C10.9332 13.148 11.3012 13.056 11.6452 12.872C11.9892 12.688 12.2652 12.412 12.4732 12.044C12.6892 11.676 12.7972 11.228 12.7972 10.7C12.7972 10.172 12.6932 9.724 12.4852 9.356C12.2772 8.988 12.0052 8.716 11.6692 8.54C11.3332 8.356 10.9692 8.264 10.5772 8.264C10.1772 8.264 9.80922 8.356 9.47322 8.54C9.14522 8.716 8.88122 8.988 8.68122 9.356C8.48122 9.724 8.38122 10.172 8.38122 10.7C8.38122 11.236 8.47722 11.688 8.66922 12.056C8.86922 12.424 9.13322 12.7 9.46122 12.884C9.78922 13.06 10.1492 13.148 10.5412 13.148ZM23.909 7.424L21.857 14H20.729L19.145 8.78L17.561 14H16.433L14.369 7.424H15.485L16.997 12.944L18.629 7.424H19.745L21.341 12.956L22.829 7.424H23.909ZM30.7927 10.46C30.7927 10.668 30.7807 10.888 30.7567 11.12H25.5007C25.5407 11.768 25.7607 12.276 26.1607 12.644C26.5687 13.004 27.0607 13.184 27.6367 13.184C28.1087 13.184 28.5007 13.076 28.8127 12.86C29.1327 12.636 29.3567 12.34 29.4847 11.972H30.6608C30.4848 12.604 30.1327 13.12 29.6047 13.52C29.0767 13.912 28.4207 14.108 27.6367 14.108C27.0127 14.108 26.4527 13.968 25.9567 13.688C25.4687 13.408 25.0847 13.012 24.8047 12.5C24.5247 11.98 24.3847 11.38 24.3847 10.7C24.3847 10.02 24.5207 9.424 24.7927 8.912C25.0647 8.4 25.4447 8.008 25.9327 7.736C26.4287 7.456 26.9967 7.316 27.6367 7.316C28.2607 7.316 28.8127 7.452 29.2927 7.724C29.7727 7.996 30.1407 8.372 30.3967 8.852C30.6607 9.324 30.7927 9.86 30.7927 10.46ZM29.6647 10.232C29.6647 9.816 29.5727 9.46 29.3887 9.164C29.2047 8.86 28.9527 8.632 28.6327 8.48C28.3207 8.32 27.9727 8.24 27.5887 8.24C27.0367 8.24 26.5647 8.416 26.1727 8.768C25.7887 9.12 25.5687 9.608 25.5127 10.232H29.6647ZM33.1262 8.492C33.3182 8.116 33.5902 7.824 33.9422 7.616C34.3022 7.408 34.7382 7.304 35.2502 7.304V8.432H34.9622C33.7382 8.432 33.1262 9.096 33.1262 10.424V14H32.0342V7.424H33.1262V8.492ZM42.3107 10.46C42.3107 10.668 42.2987 10.888 42.2747 11.12H37.0187C37.0587 11.768 37.2787 12.276 37.6787 12.644C38.0867 13.004 38.5787 13.184 39.1547 13.184C39.6267 13.184 40.0187 13.076 40.3307 12.86C40.6507 12.636 40.8747 12.34 41.0027 11.972H42.1787C42.0027 12.604 41.6507 13.12 41.1227 13.52C40.5947 13.912 39.9387 14.108 39.1547 14.108C38.5307 14.108 37.9707 13.968 37.4747 13.688C36.9867 13.408 36.6027 13.012 36.3227 12.5C36.0427 11.98 35.9027 11.38 35.9027 10.7C35.9027 10.02 36.0387 9.424 36.3107 8.912C36.5827 8.4 36.9627 8.008 37.4507 7.736C37.9467 7.456 38.5147 7.316 39.1547 7.316C39.7787 7.316 40.3307 7.452 40.8107 7.724C41.2907 7.996 41.6587 8.372 41.9147 8.852C42.1787 9.324 42.3107 9.86 42.3107 10.46ZM41.1827 10.232C41.1827 9.816 41.0907 9.46 40.9067 9.164C40.7227 8.86 40.4707 8.632 40.1507 8.48C39.8387 8.32 39.4907 8.24 39.1067 8.24C38.5547 8.24 38.0827 8.416 37.6907 8.768C37.3067 9.12 37.0867 9.608 37.0307 10.232H41.1827ZM43.1441 10.688C43.1441 10.016 43.2801 9.428 43.5521 8.924C43.8241 8.412 44.1961 8.016 44.6681 7.736C45.1481 7.456 45.6841 7.316 46.2761 7.316C46.7881 7.316 47.2641 7.436 47.7041 7.676C48.1441 7.908 48.4801 8.216 48.7121 8.6V5.12H49.8161V14H48.7121V12.764C48.4961 13.156 48.1761 13.48 47.7521 13.736C47.3281 13.984 46.8321 14.108 46.2641 14.108C45.6801 14.108 45.1481 13.964 44.6681 13.676C44.1961 13.388 43.8241 12.984 43.5521 12.464C43.2801 11.944 43.1441 11.352 43.1441 10.688ZM48.7121 10.7C48.7121 10.204 48.6121 9.772 48.4121 9.404C48.2121 9.036 47.9401 8.756 47.5961 8.564C47.2601 8.364 46.8881 8.264 46.4801 8.264C46.0721 8.264 45.7001 8.36 45.3641 8.552C45.0281 8.744 44.7601 9.024 44.5601 9.392C44.3601 9.76 44.2601 10.192 44.2601 10.688C44.2601 11.192 44.3601 11.632 44.5601 12.008C44.7601 12.376 45.0281 12.66 45.3641 12.86C45.7001 13.052 46.0721 13.148 46.4801 13.148C46.8881 13.148 47.2601 13.052 47.5961 12.86C47.9401 12.66 48.2121 12.376 48.4121 12.008C48.6121 11.632 48.7121 11.196 48.7121 10.7ZM55.5527 8.648C55.7767 8.256 56.1047 7.936 56.5367 7.688C56.9687 7.44 57.4607 7.316 58.0127 7.316C58.6047 7.316 59.1367 7.456 59.6087 7.736C60.0807 8.016 60.4527 8.412 60.7247 8.924C60.9967 9.428 61.1327 10.016 61.1327 10.688C61.1327 11.352 60.9967 11.944 60.7247 12.464C60.4527 12.984 60.0767 13.388 59.5967 13.676C59.1247 13.964 58.5967 14.108 58.0127 14.108C57.4447 14.108 56.9447 13.984 56.5127 13.736C56.0887 13.488 55.7687 13.172 55.5527 12.788V14H54.4607V5.12H55.5527V8.648ZM60.0167 10.688C60.0167 10.192 59.9167 9.76 59.7167 9.392C59.5167 9.024 59.2447 8.744 58.9007 8.552C58.5647 8.36 58.1927 8.264 57.7847 8.264C57.3847 8.264 57.0127 8.364 56.6687 8.564C56.3327 8.756 56.0607 9.04 55.8527 9.416C55.6527 9.784 55.5527 10.212 55.5527 10.7C55.5527 11.196 55.6527 11.632 55.8527 12.008C56.0607 12.376 56.3327 12.66 56.6687 12.86C57.0127 13.052 57.3847 13.148 57.7847 13.148C58.1927 13.148 58.5647 13.052 58.9007 12.86C59.2447 12.66 59.5167 12.376 59.7167 12.008C59.9167 11.632 60.0167 11.192 60.0167 10.688ZM68.0341 7.424L64.0741 17.096H62.9461L64.2421 13.928L61.5901 7.424H62.8021L64.8661 12.752L66.9061 7.424H68.0341Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default FooterLogo\r\n","import React from 'react'\r\n\r\nconst Check = ({ width = 15, height = 11, fill = '#03a932', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 15 11'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.7319 0.295798C13.639 0.20207 13.5284 0.127675 13.4065 0.0769067C13.2846 0.026138 13.1539 0 13.0219 0C12.8899 0 12.7592 0.026138 12.6373 0.0769067C12.5155 0.127675 12.4049 0.20207 12.3119 0.295798L4.86192 7.7558L1.73192 4.6158C1.6354 4.52256 1.52146 4.44925 1.3966 4.40004C1.27175 4.35084 1.13843 4.32671 1.00424 4.32903C0.870064 4.33135 0.737655 4.36008 0.614576 4.41357C0.491498 4.46706 0.380161 4.54428 0.286922 4.6408C0.193684 4.73732 0.12037 4.85126 0.0711659 4.97612C0.0219619 5.10097 -0.00216855 5.2343 0.000152918 5.36848C0.00247438 5.50266 0.0312022 5.63507 0.0846957 5.75814C0.138189 5.88122 0.215401 5.99256 0.311922 6.0858L4.15192 9.9258C4.24489 10.0195 4.35549 10.0939 4.47735 10.1447C4.59921 10.1955 4.72991 10.2216 4.86192 10.2216C4.99393 10.2216 5.12464 10.1955 5.2465 10.1447C5.36836 10.0939 5.47896 10.0195 5.57192 9.9258L13.7319 1.7658C13.8334 1.67216 13.9144 1.5585 13.9698 1.432C14.0252 1.30551 14.0539 1.1689 14.0539 1.0308C14.0539 0.892697 14.0252 0.756091 13.9698 0.629592C13.9144 0.503092 13.8334 0.389441 13.7319 0.295798Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Check\r\n","import React from 'react'\r\n\r\nconst Warning = ({ width = 14, height = 13, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 13'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M13.8418 11.0561L8.16007 0.683372C8.04697 0.476647 7.87973 0.304041 7.67598 0.183764C7.47223 0.0634876 7.23954 0 7.00245 0C6.76537 0 6.53267 0.0634876 6.32893 0.183764C6.12518 0.304041 5.95794 0.476647 5.84484 0.683372L0.167185 11.0561C0.05491 11.2556 -0.00270098 11.4807 9.72867e-05 11.7091C0.00289555 11.9376 0.0660053 12.1613 0.183133 12.358C0.300261 12.5546 0.467315 12.7174 0.667636 12.8301C0.867956 12.9427 1.09454 13.0013 1.3248 13H12.6842C12.9121 12.9997 13.1361 12.9408 13.3342 12.829C13.5323 12.7172 13.6977 12.5563 13.8144 12.3621C13.931 12.1678 13.9949 11.9469 13.9997 11.7208C14.0045 11.4947 13.9501 11.2713 13.8418 11.0723V11.0561ZM6.47887 3.26032C6.47887 3.10964 6.5392 2.96513 6.6466 2.85858C6.754 2.75203 6.89966 2.69218 7.05154 2.69218C7.20342 2.69218 7.34908 2.75203 7.45648 2.85858C7.56388 2.96513 7.62421 3.10964 7.62421 3.26032V8.13015C7.62421 8.28083 7.56388 8.42534 7.45648 8.53189C7.34908 8.63844 7.20342 8.6983 7.05154 8.6983C6.89966 8.6983 6.754 8.63844 6.6466 8.53189C6.5392 8.42534 6.47887 8.28083 6.47887 8.13015V3.26032ZM7.05154 11.3158C6.90592 11.3158 6.76356 11.273 6.64248 11.1927C6.52139 11.1125 6.42702 10.9984 6.37129 10.8649C6.31556 10.7314 6.30098 10.5845 6.32939 10.4428C6.3578 10.3011 6.42793 10.171 6.5309 10.0688C6.63387 9.96667 6.76507 9.8971 6.9079 9.86892C7.05072 9.84073 7.19877 9.8552 7.33331 9.91048C7.46785 9.96577 7.58284 10.0594 7.66375 10.1795C7.74465 10.2997 7.78783 10.4409 7.78783 10.5854C7.78783 10.6813 7.76879 10.7763 7.73179 10.8649C7.69479 10.9535 7.64055 11.034 7.57218 11.1019C7.50381 11.1697 7.42264 11.2235 7.33331 11.2602C7.24398 11.2969 7.14823 11.3158 7.05154 11.3158Z'\r\n fill='#FFB03A'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Warning\r\n","import React from 'react'\r\n\r\nconst ArrowRight = ({ width = 12, height = 9, fill = 'white', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 12 9'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M11.3536 4.85355C11.5488 4.65829 11.5488 4.34171 11.3536 4.14645L8.17157 0.964466C7.97631 0.769204 7.65973 0.769204 7.46447 0.964466C7.2692 1.15973 7.2692 1.47631 7.46447 1.67157L10.2929 4.5L7.46447 7.32843C7.2692 7.52369 7.2692 7.84027 7.46447 8.03553C7.65973 8.2308 7.97631 8.2308 8.17157 8.03553L11.3536 4.85355ZM0.5 5H11V4H0.5V5Z'\r\n fill={fill}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default ArrowRight\r\n","import React from 'react'\r\n\r\nconst Arrow = ({ width = 27, height = 51, fill = 'black', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 51'\r\n xmlns='http://www.w3.org/2000/svg'\r\n fill='transparent'\r\n {...rest}\r\n >\r\n <path\r\n d='M25 49L2 25.5L25 2'\r\n stroke={fill}\r\n strokeWidth='4'\r\n strokeLinecap='round'\r\n strokeLinejoin='round'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Arrow\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern0)' />\r\n <defs>\r\n <pattern\r\n id='pattern0'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_184_1295' transform='scale(0.00520833)' />\r\n </pattern>\r\n <image\r\n id='image0_184_1295'\r\n width='192'\r\n height='192'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAACBFBMVEUAAADv7//09PTy8vXx9Pbz9Pjy9ffy9fjy9Pfx9Pfy9Pby9Pfx8/Xz8/Py8vTx9Pjv7/fy9Pfy9Pfy9ffz9ffy8/b09vjy9fXz9Pb09/ry9Pjz9fnv7/Tv9PTk5uiCg4Ssra9jZGWQkpTIycw7PDza296QkZIvMDBgYWK6vL21t7lHSUnm6OqEhojNz9Ly9PSztLednqB4envBw8Xv8vWen6Hv8/NsbW7x8/bP0NOpqqyJiovz8/dUVVXv7++lpqjy8/jz9Pbx9PZ9fn9bXF01NjYdHh4sLCw5Ojo0NTUwMTETExNucHBISElgYWE+Pz9zdHUaGhomJyfv7/oWFxckJSUtLi7x8vV4eXpRUlMhISHx8/Z1d3fy9PdnaGlERkaEhYZ6fHxrbW1AQUGDhYVWV1cqKipERUVOT1BcXV6LjI1iY2QyMzNMTU7Fx8lLTU2Sk5ba3N+HiIpKS0zW2Nt7fH4vLy+6vL6rrK6ChIXk5umfoKJYWVpXWVmQkpPd3+GTlJaXmJnOz9Lm5+qFhoepq6y6u77r7fB1dneRkpQ7PT2EhoeQkZPIysxISUnW2NrW19uztLa3uLqXmJp4enpTVVVvcHKsrrBmZ2g8PT2eoKJsbm+en6A9PT7v8/dsbm7BwsXd3+KEhYfx8/fy9fbP0dPx9Pjx8/bv8veJiozy9fnv8vQEFD2BAAAArHRSTlMAEDBQcI+fr7/f7/+AQGDPIJ9g33+vb1CPX+9/MDD//////////////////////2D/////UP9A/5D///9A/xD/r8/P/////////////////////zD///+g////sP/f/////////////////////////////////////////////////////////////////////////////////////0D/////gK//cO9g/1BgIk4dsgAACKdJREFUeNrM1YV1wEAMA9BjsMJOGfYfszBA0YnyJ5De6fmcPR9iyqW23gWfpPfWypBi8O7afEi5Cb4gLafxouGnPOOH5hyXa4Ufc8cvzWu8SvrUBH9Tt4U/nIZ/aZt3PGMW/JusI206MKIbIf4uMKTr4s60ZIG1EyssKwwYVGCMh19hFxxI09GHU3EwjUeu5wYGeDu6FRig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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Solana = ({ width = 14, height = 14, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 14 14'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <path\r\n d='M4.19214 0L4.10059 0.311195V9.34137L4.19214 9.43276L8.38385 6.95506L4.19214 0Z'\r\n fill='#343434'\r\n />\r\n <path d='M4.1917 0L0 6.95505L4.1917 9.43279V5.04982V0Z' fill='#8C8C8C' />\r\n <path\r\n d='M4.19222 10.2264L4.14062 10.2893V13.506L4.19222 13.6568L8.38641 7.74994L4.19222 10.2264Z'\r\n fill='#3C3C3B'\r\n />\r\n <path\r\n d='M4.1917 13.6567V10.2264L0 7.74991L4.1917 13.6567Z'\r\n fill='#8C8C8C'\r\n />\r\n <path\r\n d='M4.19141 9.43272L8.38305 6.95504L4.19141 5.0498V9.43272Z'\r\n fill='#141414'\r\n />\r\n <path d='M0 6.95503L4.19164 9.4327V5.04979L0 6.95503Z' fill='#393939' />\r\n <rect width='14' height='14' fill='url(#pattern1)' />\r\n <defs>\r\n <pattern\r\n id='pattern1'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_4_722' transform='scale(0.00316456)' />\r\n </pattern>\r\n <image\r\n id='image0_4_722'\r\n width='316'\r\n height='316'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATwAAAE8CAYAAABdBQ0GAAAAY3pUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja40qtyEzjUgADMyMuE1NzCzNLMzMDIDCxNLE0SgQyLAwgwNDAwMzSwtzABMIGCyUaoAIjEE404EJWZJwMZRkDVWMThwIuANwzHAZfZ3w9AAAACXBIWXMAACxLAAAsSwGlPZapAABuQ0lEQVR4nO2dd7wlR3Xnv9X3vvcmjzQjTVIaBZRACCMEIhmbZJONWWSS1+RgwMRdsFljkwWL8doYMPZiDAuLMCIYlmCCMUZkJAQSIKEckDSa0eSZl+7t2j+qq+qc6r5v0gv3vlu/+fTcft0VTlV3/fp3qqq7DBnDjAIw1S/AdI9wLWAZsAJYWv0eC2wE1gDHVH+vAo4GVlbh/TYCjFXptKs8ASzQAbrAFDAJTAD7gHFgN7AD2AVsq7btwB3AVmAvsL8Kv79Kpwkj1W9Z5VnOWCsZixbmwEEyFglMsm+rTaINbMAR2XrgOGBz9fcGYBOO2I6pwi4kOjgCvAtHgHdWvzcBvwa2VH9voU7khlgHHmldZCxCZMJbnPANGmZWM/cAzgbOqLaTgXU4sjvmAHlINZWSaZM9B4Mm0ulFSq0DpLUVR4ZbgRuAa6rtF8C1M8TzarfpgZAx4MiEt3hQEBtrJzk3AqwG7gncD7gvcB8cqa3EuakpLI7ULJFAJZEu9L1jxa/cDI4Mm+wbB/bglOEVwOXAj4GrcO5zqgS9ii3JbvCiwELftBlHBt//ZtAktwznfp4B3B94QPV7dI90fL9WL3IbNDSRoK+nJmwHfgT8APghTgnejusX9Gij6yljADGoN/SwIr1esuGtA87Dkdt5wG/g+uCakDbYYbkPDrbct+PU32U4Erwc1xfYK14mwAHBsNzogwyvTppGF08GHgk8FOeinoZ2T30/mxyJzahDqkHQ/YPjwPU40vs28HXcwIiEV49Z/fU5MuH1Lwpcw+sQG9EYcCLwKOCJwPnAUWgymyYSXCa5w4Pvs7PEKS3++E6c+/t54GvALbjpNB4juAdN7vPrQ2TC6z94opJ9cvcCHgw8AUd2o0kcr+Rm6qfKODxIZZ2ODE/hSO8LwHeAnxMfTm3yYEffITeO/oCciOtxPPA7OIJ7OG7+Gw3h8jWcX/Sq+63Av+MI8N+A2xrCZXd3gZEby8LBu52y36fA9cc9C3gYbp6cR4fspvYjvIqTE7GvBb4FfBz4T7TKa5H7+jKGCAb9ehW4NxleiJsTNkHsQC9xfXJd6lMt8tZfW7e6VqU4NlFd0xfhpgl5NN0DGfOAXOHzC6/oPB4MPAmn6DaK4z7MIM+FG1Z4skuv3R04xfc5XH+fR3pPZGQMNNIbvwVcCHwWN7FVKgSpDvK2OLYSrdD3V9f+QvQgSH64ZQw0/LQSjzHgecD3caN7vgGkblDeFufmuyf831PA93D3xBIiWuR+2owBgkHP3fL9c79AN4BMdMO5pcRncdNZXozu1hghK76MPod8Mm8CXgb8En1zZ9c1b5a6q2tx7/C+FP1KYFZ7GX2F9LWt5cCrgZ8Sb+QOmeTy1nsriW/UWOBnwGtxH4HwyJPKMxYccu7VKPBc3M3qb9w8pSRvh7L5qS3+75/i7in5Zs1Cf3g1Ywgh++nauKkllxJv1PSJnbe8HcqWegTfwd1jnuxy/17GvEHeaA8BPkm8MeVL53nL25Fu6f30Sdw955FJL2POIKeYbALei/twpCX30eVtbjfpMWzH3XvyzY0Dfe4+I+OgIQclxoAXADcSb8Z0ikHe8jZXm7zXbsRNd/Jz+PKgRsYRQz45zwe+TLzhuuQBibzN/5bed1/BrVPikdVexiFDvuazGng78TWw3E+Xt37Y5H24H3ePrsYhv6aWcdCQT8gnoKeZ5JHXvPXbls7fezwRWe1l9IT/ZA/AWuA9xHde86BE3vp5k4Mak7h7dy0O+TNUGTXIG+IRxE91W3I/Xd4GZ5P36pW4BZ48MullqBHY5cBFxL66THR5G9TN37vjwDtw9zbkkdyhhvxc+j1xs9nTGyZveRvUTX6k4lLcPQ55mYChhO/MLXCf384TiPO2GLd0wvILiWSXBzSGBH5gYg3wIeLNkVVd3hbrJu/tD+HufcgfIljUkHOTzsd9ediSVV3ehmOTau/7wP1xyHP2FiFkn8VzgbtxFz6/Fpa3Ydv8Pb8d1xY8cr/eIoHvqxjDjcL6C58nEedtWDd571+EaxuQ+/UGHv6ptQn4DPEi5/66vA37JtvAZ4hfX8lKb0DhL9z9gKtwFzarurzlTW++TVxF/AjBoiW9xVgwg5PmJfBE3Nck7onru8iSPSNDo4VrG/fEtZUn4tpOizyY0feQ78O+CDfT3JIHJ/KWtwNtvo2M49oO5Pdw+xpyeP2NxAuZ++vylreD22RbeSMOedpKH8K7qgb4APHi5fl1ecvboW1yvdz3E7EouoMWA3O3cBdoGfDPwFOrv/OL0hkZhwdPfC3gEuCPcB/V8G1tYDHohFDgLsyxwMeAR+NGnXKHa0bGkcHiyK0NfBV4FrCV2OYGEoNMCr7iNwGfxb0q02WRSO+MjD6Bb1M/BH4PuIMBJr1BnZbSxlX4ZuBfyWSXkTFX8G7s/XFt7WRc2xvIDw8MIuG1cG7rKcCncZMlp8hkl5ExV2jh2tj5uD69U4hdRwOFQXNpvZTejCO7++IqfiCfNhkZAwbf1i4HngLcxIC5t4NEeJLsPg+cU/09iCo1I2NQ4dvclbhV/W5mgEhvUMjCvyq2EfgXHNl1GBz7MzIWCwpc2zsH1xY3Eqew9D0GgTAKXKfp0bgKPh/Xn5Dd2IyMhUEb1wbvD3wS1zb93Ne+Rr+7tN6+5bipJ48k99llZPQLfFv8BvAk3ORkcHP4+hL9Tngen8XNAcpTTzIy+gu+TX4W+P0FtuWA6FcJKr968kEc2eXPO2Vk9B/856WejGur0MdfWelHwvNk1wHejFtazr/ikpGR0X9o49roC3Ft1ru6fUd6fWcQcYj7RcQvn+RP1GRk9Df811YM8BKc2uu76Sr9RiK+gh6HG5FdWh3vNzszMjLq8IMV48CFwBfpM9LrJyLx7+ydC3wN9wWUPLE4I2Ow4NvsVtzXi66gjz4r1S+E5ytkLfCfwNnk6ScZGYMK33Z/CTwEtwZuX5BeP6gnT7pLgA/jyC4PUmRkDC78IMZZwEfoo66pfiA8/ybFX+Dezctz7TIyBh9e0T0e17b74k2MhWZc36H5LOD/kPvsMjIWG3yb/q+4Nr6ggxgLSXj+CXAO8B1gBW6UJxNeRsbiQYnjmb3Ag3ALfi9Yf95CkYvPdyOO9VeS1V1GxmKEV3QrcevObBTHF8SY+YafROz77c5lQL+empGRcVDwXyk/l9iftyAvEyyES+sZ/9m4Udk8/SQjYzjg2/pzcW1/3vvz5pvwfAHPxq2CtJz4OkpGRsbihm/r+3Df0vsF80x68+nSGlyBlwH/SCa7jIxhg+eA5TgOWMo8c8B8El4bV7g34kZrpslkl5ExbDC4tv8gXH+eZR67tOaLcLxsfTTw/4gDFHlUNiNj+OBd2A7uZYOvMk+u7XwQns9jGfBd4N7ktykyMoYdngOuBB7IPH0efj4Ulvfb34kju4FZ4SgjI2PO4FciPAe4iHnqy5vrDLxMfRTx21iZ7DIyMjy6OLJ7AvAV5ti1nUvCK6r0jwIuBc4ku7IZGRkanhOuxn1KaheO8OaE9ObSpfVvU7yGTHYHAQMmD1pnzDL6/57y79WeieOKDnMoxOYqYV+I+wDfwg1YtOYwv8GGMWBjX60pWhTtEazt9ZCbobvDgO2WYMveYQ4iRf+3xWLEGW+lqfbC38Zgy1KVIyPjIGFxfLEfeBhz+JXkuSAg/45cAXwZt3h2/jBAL1RkZ4qC9ec/guMe+iTGjllP0WpT0o1DVsaRj79i1kB1xP36K1mA7XRCWBuYLIbxsUKaIj2Vtgzv0zchtg5nDLbbCSQd4ppIgLaKr9I0II5om8QdE8ojUzO2ytcRvA4j6sToMvu/rB9O82Uysvxoe1R9V8ethTJeIyvTl/UlvgEUr1j1d2GjDdZA4R9yJtRdrG8bhgBtt1t9W8iKfEPJoN3Ctgx87kfwkW9Widg+XiI7cMQ3gN+t/vYLA80a5mrCn39XNpPdTKjIbmTFUZz7x29j44OfQDk1zvT4HmzZdY1KNLhw+xtTHbOqMYQb35iqxm28Y1RjtlW6cZ8qjGpcWKypdJ4kLpmWjFMQbatssSmJGKc8Yxgbyyjt8/GVXcJWYQdFVU8Gx/DGCPuT+gnpWnqRvMuzIm5Mlb/ISxJfy18LdDo1wq3KLcjVgiOs5KHkyxEJP4kT6rriShMJ3Phw1mLG2tgnPADWroB3fx4K7Un0GfxgxSNw3877J+ZAkM12gj699cDlwIY5ymfgYUyBtSWtJcu4/3/7ezY84FHsvPEqbLcDLfccCk90qkedEQ88I4/Vb/xaI6kRSWzoBig9efg0qn13TsdNiadOlC5cKYjaCIKJZOvCG2FzKfIIZcRiqvRCWFupI59OCF/lVpGUD6/VpdhPlGisM0navesuWF31lSk1GPL1Z8TDKqQtVVz94aNJWVwz66+ZreUdfqemYcNR2FYBD/0fcMs2KAoo+2YRsRT+gt4J3BfYkhw/Ysy2wmvjXhv5cxzZCTGfEWCMc4eA33jJO1l/3sPZcc0VFKMjmJElvtmHRllF0aqhuqlDP5t42ksCCWFEWjHdGK8QjdSn6fMqRKP06RjREEtlh6kIwF342GBNRcguT223sEMSXVUWb39BLKMzwpci5msqRRrrBgxldReaYLN/ePi6MiK/SLienNy+Idqv6tETjqrrqudTKEVZfk96xoh8Qy1Xaan0I5mZUL5wpSplb0O1WMAsMdjxaczRy7EbjnaE19/Sw+BU3gYch7wUGMFxyqxgNsmohTPsgcDTmUVWXmwoihZguffz3syJv/Vf2H3jL2iNjGJMC6yN7Uj5b/6Y34/njPz17dO6BhHCy+PWD0M4+RLDiH18WBHf2yTCCxlW5V+RlAjnbLEijA9vqvOm2qJN/niar4sv8sWnY3uU1wobraiDmI5pLBvhWrh0rbbJxxe/pqzSLoHSuvilsEPEl3VryjTfJP3Sht9gd2lUedx5UX5jYLKLOWo53L4Drr+DdHCsj2FxHPJAHKfM2uyO2SI83+aWAq8FjqZPFu3oOxQFZbfDmU99Bac/8UXsuvHnGNOqyI5ARJ7sHDmFo9Uv8UZPwwdNhHrkyJFWf07Gj8djvqjzRoQXaXtxUcU1Io2YsiYrk6Yh9gMJSLuTcEK8NtpkMOrG8wScipsoUk0tv5hvQujo6xBI1tdCkp5KW5VRXyMTOu9MjOPJVtaVTdLxeciHgSkwkx1YvQxWLoX//lG4e6+T8WXfE55f1OtoHJfM6opnsyVw5ccBvoy7PHnOXQJTtLBll1Me/Yfc9yXvZtctV2NtF1pFePJKV1S7sCD7x1L3tmlENfYP6Q709FzIt6kvToZVeejRQW+TD19Lx9vcFMckdoRjSXlUOXSfoo8rcg6d/mk99hzsOWA96nxVX1xiZ7BfdSXo8sq6SOtb5TVjXUm7LbYwMN2FJSPY0zdSvuDvsB/71iCpOw//VeTHMIsfF5gtBWaBUeDtxDcsMgSK9gi27HLiQ57MfZ9/EXtvuw66HUzR8t08gKg4rxQalIl0iWqKMMSNv1EjJufS+1+qmB5qLtpohLrRcb2KE1ozuHP6mBVxhf1JXrLLLqpJec6IdHwBjHAfU3WqFa1SY7KMVoRPFWooT10JSkXb1C3h3VWZh7FJXaW2SWVrk7rydhuDme5Cy8AZx2Ff/1FHdu3WoJEduOIVOE4ZpX63HhZmg/B8X/LTgfOq/ezKCphWi7Izzcb7/Dbnv+Q97N92G93J/RSt0aqPKWkYzc5Xg5tJID8rwmr3LEgIRRYqTemWqb40mWK9gdZslcQQXDxFtyHdtMnKBh3daplOs006HLX8UlJoJFRffhvDhceEJbW+dqxmgyhnPCftlg8NRNnk0dg9EK+b0elYnTZddyOYe56EfddnKP/mC86N7fbtqOxM8LxyHvA0ZolXjlSJ+WuxDDcN5R44w7LC8zAF2JK1p/0Gv/mGi+lMjzO5ayvF6BKsLbXb0+AmNbm0VrW65qkoMZyDnHZSxVYuk58CU3NFE3dY2mQTG1L3rNEFTOJK90/n28vdlOmR5N/sSvtyl6pu0zqtRmzxvG2byyPsqPOwrdeRrEdvjxr11nXcuyvBJvnLOrBgLbbTgXtvpvvRf6f7sg9UmdlB6LfrBc8l1wL3wy31GB5Nh4MjZcw2zq/+Y+Bkot+dAZiiBbZk9fFn8uDXfBjb7TK5YxvFyBJsaePTu1JVYUQQlNrwTxUjlE8cLXQxChvVlFJtictkQrgqrrLBCFtMtEd0sCtbrRHpCYVio92pC+hvVx8+xJd2CPUZ1ZewCxk+5ofIV7mbVtguVS/RpjhoIK6DTcpMvD7B/lA2G+vI25fWo1ChyLL565zWkRrRjfnG8gpVPNWhOPtE7Bd+SPfV/7tKY6DJDlzxSuAU4AXV/hFNpTsSwitwL/puBP7wSA1ZbPADFEvXbOTBr/rfjIytYP+222mNLnXTCxDiw/8v3SpiQ5HPNOn6xgYkMhYNT7tl0mVSsYUl6dPKNOarYJNyBFvqpCcctVo85bLZmF90L4V11v2X1oWsR1232l5fHiPiku7LfKWMi7JME7og4Xq+CYkJW6JY1NdApKqJMqQtrB+fxpxxAuV3rmb6+X8LE1OVuBtosvOwuAHQP8JxTYcj4K0jJTwLPAW4F7M8X2agYQps2WVk2Uoe+soPsWLdSezdciPtkSVgS/Fkp5mEFIH5s6IxCRWAjy0USL0fyyTpxV+THrNpjEQNhTwEUYFQHEbbFfKVRGfq+TbZKtNWFBDTSwdXasQoVF1QZzYNLyyV5Ur4QtJuOnCg6svG8GpgKZTH1PKLyjCxP5TD7wsbKGB8iuK04+CaXzP1nPfAvgk36j/Yyk7Cz+89B8c1liPgrR6P7QPCDxGvwS23eAr5S8YOpmpUrRF+89UfZeO5v82Om6+iNTbW/CJ/j/6u2Odjk3vdxjbVdM6nGTjRivaj4zblW5seImyMcevh9BSJdDqFyE/1X/kXwcRxwaCxbA02iXIiwvmzVrBWWlfBfoMOX+2XBvU2hL5GaZ3K+jmIOlX9gbJsSR0Hm0Q6sn+vADsxiTlxHXbPfiYe/+fYW+5yZDeYgxQzwc/pvR63vOMODnOayuEypa/53wdOJcrOIYcBa7HWcsHz/5rjz30kO2/+Oe3RJcL1qdCotBIXqjomUke5bKovSoaoq4yYRz1uqr5UXuHXqDR0vlJpNSlMWV6Rlo0ThBOnNSl33SafSrPCE3nK/koVzujwwv7Ch7G6/FKJoc401CmyDoQa9X2F6fUP/Zkk50S3hD9vjFN2G9ZgypLJp77Fkd3gjsgeCO7VJDgNp/Kgpr8PDkdCeCPA64FD+/DaYoUxFNVL//d75ls59WHPYPvNV9Fqj2pXS7hnqnOclJBE0qIDXjbaeC456POwcb/WeOJfNSLWeSXut8hXWKiyj0c18Sr3LSXe0KCl69fLJp2vqd36TWGpPXRSAmu6ieN1CqWo8hTXralPT9rekEf9UVIrVYgvczZFARNTmLWrMcuXMvGsd1Jec9tic2ObYHBc8wYc98wb4fk4f4hTd3miMQZTtCm709z7Sa/l7Me9nB03XUXRGsGYMN1fKAEgbXpSIQVCbKjWxgYq+rUkeaa/SePxCggicdYaq4+v7CPEiYpEknhDXjWbpGqsl1OOXgZbvU1eJYZ61AM8oQaFuotfWoqkL1WbzqM+UOCJK+TbYFcoW8NDSz549IPEqHDh2vqHoUrHwGSHYuVyzLqjmXjBX9P93i8WqxubwuC4ZjOOe+Aw+OtwiKqotu/h5sYM/ffu/KeeznjE87jg2e9m5+3X0LUdiqIV+m98n07kOj0vq9angzxuid/AS/qEZF9Uj3lo+jWmw3t9Ku1jaooLbr6fkenIvHqUV3nDMl1035rtUVeRM3rPZ4t5NL0als7tmzl8rb+xoU5VHKPLr21tnmupr1sVpltiR9oU99jE+Cvfy/THvtbvn3uabXiuuQy4gMNY++JQicrPu3sycG51bKjVnSlaWFty8gN+nwv+8J3s3XIDttuhMG2hCohKKsZEtJeakmly3dKYKn6Vh0nCeEWoFE6D+tIKRfZXybBGlKPu0gFuPuAB89JucpOyTO1Scb1Nqu+xsj5yWGMc5VantSXrMbluKryNqtLHr7mePfOqK13tkgv17f8yBtN1D73W6Scw8ZaPOrJrx3ewhwS+6s7BcdAhz8s7FMLzD+4R3GtkI8zxghv9Dj/X7rh7PYKHPO997Lv7dqYn9ztX1trkxo4N1N3gVpxLGpWXgmLCa+omRfdNunf0JA0b8pUWESe3qkYrfhOXzpNT2lib5pepMEkeMlwgELwbVyci/YCQxKbLb2Q5m8qT2CDdW2VTLV5iR0Ks8gGg800GolRd1B5Por+wKpsBU1ooS1pnbWbqvZcw9TeXgDHQGbo1RAyOc0aJHGQ5BA46FMLzi2rcn/jp9qEdmTWFm2t3zMn34bde8k9Mje9iav9OWq1R/LfZ6v02+maOo2/uTHr7FyTx0w7xNE0fW/TLhaOCVJSi1DEFwRl9XKLHJGTTK3xNQfljWg0hftNJvD0VLKL+JHF56mxU2AlpiYeHJidP1pLYo02yjsRRVY/y2qaDK5qcTeO+scDUNO2zT2Hq419l/C//2bmxwwu/gPcjgfM5xNUQD7bmDHE09onASob4NTJjCmxZsnr9qTzy5Z/AlpaJnXfRGlmilh6RrxWlr1GpJz2ohuXj2KCUjCA7MTgg0jKigbrzMV21L2mpCl94AhRxZR6hLD4O0taYDiqveFwRukjHh9P5xrRQZTQxjMg7XBNBerV8RdxA9qndoIi4PjLbkI66Dkm9J9dA2e/Lr9KI9hNSACamaZ11KtNf/j7j//0D7kso2GFTdhIGxz0rcVwkuemgIh9sOIt7teNnwNpDjL9o4Acolqw8hse97kssX7OJXVuupzW2DPzr6Yakk9p6oYbqdJcd9Onk2sCJPcLY3nF8q1Gd/g02HbjTXaevyubDqDzqZQu2yXQa8gVbrZ2h8+1Zj6I+ZNliHpEQZL6RT2aY5B3qwh/r8XGEtN5J7Ba/4qyeFC3rPaQJFFCOT9I680Q6P7ma3U/7c+zEFAP4Xbu5gK+Au4F7A3cQOWpGHGof3mOBYzhEv3mxwJPdyJIVPPrlF7PqmJPZveUG2mPL3E3Yy+USrVTN31JumWplwgVTLbwKmzhSiTsoWrXqA0xanlIxCiFOEl6dEwpIumJJmaUbl7qFSSkoVDmjsow2GH1Li/IqpSzTCMeEopK5ayYTx1LVl8RDK+C0PKqPVbrTPkitPDKMwY5P0D7leMrrb2fPc9/myK6/Vx2bT3hyOwbHSQfNRQdLeN7J+BOGmOwwhvboUh7xwn/m2M3ns/P2q2mPLAUxQBFqysabHty+X4LU/S3CC+fJuzjIX9lYEzcuJViT5CsblSaf2IcoiUkOGnjSk+SnLLV1WzXpxbxSumgc7KD+afa0bJ4YtXuOIkLpkqcklBKiJm9vv75uwZr0QSBttShiVXbLOGpUWvep+jNmYpLWCZuwO3az+zlvoty+27myi3ti8aHCk57npIOqnIMhPH99Hoz7SIC8e4cD1Rw4W3Z56LP+hhPv/Rh23HYVrfbSqELCjSyaYQP5xEYR+/ekQqt9JaRpFDXkJ9KxIm+RrjzuCVNP5zBhcKT29oDVDTP2QYqyeRt9fj58sJ9QHtX3psgyEq+fJCz7vZrqJaTt++JqZRPhhc2ynDoP2T8pBp0simB79SXqBw6xjpI+PVWP2JBvwMQUxfo1mG6XXc95M92b73SDFN1Mdgk8D90Lx00HxUsHQ3j+PbYXVgkOzSxHBWt50FPfyRkPfBZ333olrdZoQjDU1J3o7hbPoKYO8VS5Vdeu5kom7lGMofJGhq/ZFc/H36SzvEFZpqpGKhNns44b95MGrepEuvcCQiU2KUZZDhlO5iDVsFSlTSOlSnX5PVlX8mGR2uf3SlnfQj16O2R9Jw8SwHkQUx2Ko1dSLFvOrpe8g87Pr69eGRvOJncQ8IMVL8TV7AFHaw9EeP6bd+uABxFl5JDAuCUVreW8x76ecx/9Crb/+ue0/Cpj0kGVioeECAT5hBCSJH0qDe5qfcoKze5R0sBMYpO0MyXk1OVtdulEg+/xIK2puiRuJMiEiIISksTQ5Pppdep/ZyQ/pQxlnOSBos4JG8SDqne+JrSMUKvqgaIfWiYtvzGO7JYtpb3uWHa98n8ydekVlbLLZDcDLK4aHwSs5yC+lXcgwvOzmJ9E/KLxcMy9M+5GLMsu93zo83jAk/6CHXdc7T7eaYrg9sgv0ar+rqRxR9cX4XKa+CtdJaUUUO6g7MvT7hE1QgikJzfZ5JSr6I4Wyr4YJiWBaLP49eTlbUbY7esI/xCoak24qAVJOQXp1fdjvaXz5dJ6rLuVoszhWhmRd4MKlw+u6tcmtuqHibSzSlOSrOwymO5iRkZobd7Erje8l4kvXTpsr4wdLvzc4JOBJ1THZnzzYibCMzjGbAOPIE74GwoU1Yjsqb/xezzsGX/Lrq03UE5PURQjKBUn3TqoKYTYcFMdhnZBfXjiseiWKS1R09iSYHyoJIa3WOftw8h8E3ctdcukwlTlVXWQqDVBhKniAaG+pDsc7NRk22i/+pUPAEmyJty9Btyi2TKeqg+VGqpGLeHzUYUI4UMF21K3FvHACXXgFJzB0L7HSey96J/Y/3+/BCNt8mjsQcO/APEIHFfN+PbXTITnP7B3ZpXYQfnIiwGmaFGWXY4742E86jn/zL7tv2Z6fC+t1hggVn+PMeoqRjUYFDGkLqNparw2vWZRDSl1lpBEbLxacchz0vVsujOMOmdqJFUjPUXEQsWpsjlFVKi6ErD6iH4waLINSk8QjFSzCvJBYAQhGW1nmm8oo38o2YZQQs2GM1JNqnLVrydY6FhGzj6Vfe+/mD3vuxhaLeh0MuEdPHzf0iOAMzjAx0xmIjxf4/fHzXc5om/JDwpM9Xn2tcfdi8e+4JNM7dvJxL4dtEfGwJZJR3jSCIJSaW6gUsGZpAHURzhF40lVZKLg9FSLumJB/F2jY+kaJ2F1B3vIrTmcIoGE9IhN3qLTMUIJhS1VftAz3xrp+XgNXQPahY+10fQQCmQmcxbKMSV51f8q0o32iPwoMBbs5BSj9zyN/Z/4Erve8Y/uVLdbv3YZM8GPMxwLPKA61rMGexGYwTHlKPDUA4RdNCiqL5+sPvY0nvSSL2C7Jft23enWoijFxwBC/5MRfVqEY+kUBkmAzX1srln5V8lkA5Iqrqm/SjY4I8NU+7H/zquVhn6qhn4s2S/nm70k4uieSffeJGWS6WubVFeAsE9OcYl1TDhXoOu2Ni1EkR618sTrJ+KG66P346sZsSZUX5zoo6uXzYhyJbZai52YYvSs0xj/6nfZ8T/+xvXZeQWacajw3PRUHGf1fNXsQCS2kSFxZ41xbuzyVRt4/PP/hbGlq9iz/RZGRqu3KHwD8OGTX9CKRLuwqPhxeoNWA4VQFjqPXvlKlSF+1b6Iq1SPtykqq1ocC8Za5Zam/ZXaGpT9JOWp9+kJQqOuvmQ3gVRZvfoSG114CVGWtMugpvD8cWMw/v1omq+bScrZkLIm4okpRu9xEpM/voq7X/FW7NS0u8eyG3u4kG7tppkCHmjQ4jG4T7Aschis7TI6torHPff/ctS6U9l513WMerKTN3ODeyRfY5KjdE2Nr+Ye0dx40n4jPR0jIQZE2MQVi6oEFd+YlIhSJzvWTcyr+jvNV7qKMqpyPRObBME0oqc76IlS0awilTRffRUa1KAoqVKd0g6/36NbIhKmUfmGBCyuu2RyivZJxzN9w23c/fK3YPdPOHWXyW42MAL8Lj3UHRy4D+9ps21R/8FgjGFkdDmP+aMPs3HzBey481pGRpZiK7JLlVDaSR2P6X6dGIYGxQeUzaoixjaKrNK5fYi8YhNuUEygyCXED3aK+NKVRqfT1Pi13fEBIJ1hGbepb9E05CsJSoZNIae46H48SUxEVz61xeryy7LEOuih4OQDylsr7xfp2hqDnZikfdwGyl172PbyN9O96+48/WT28TRmeJQ2zVnxj6VNuC8RLF4YwBqsLXnQY/6SU895Enfd9jPa7dGqP62SQdYSe/CsG+2zbt8ad1Nb49wlawwGG+Njq2O4OIbqnA35x+vjXmFT+VZhjE+nSoOQniNlF8u3PFN54W6xausO1Wz2eQjTkvK4jPy++1CHKA9WmhBJo2aTMNiYWP6qnLbqvHS2WkGisV5Q6fi/bFIXPkpiv69Z4/rPQpr+olgZXZQt1JO/cK6wtqoL/HWuvmBiqY5XdRSuqCmwExO0jl2LKWHrS/+C6RtucRclk91s497AccCvURLboUnh+UV5Hgesro71lIiDDPe2RMnR607nrPOfwe5tt1Q3b+yMT5/eNSWWqimhuKJqQlW7Uj7hiN/TyqQ2AdbblChDqYjk5F+Zei0d9VdDXOnGBpuEUgr7aV9icw5K+SRlNg2hScpWvwn9tarn29jvmV4/qdqS0WIf3oeTqjm9L5Sit0lcU8DkJK1VqyhWLOeuV72ZyauugXYru7GzC3/ZVuO4y9Aw7tBEeJ4VH16d786RgX2DsSWrKYoW3c4UxhZJU/ENQTYU/7desK02wtcUX3TSq2kOIU3Z02V0Wn5EEUP4rog1GOtG+EySp5v+4PMtRDoFsa/QhLhunpoRLqknQRPCUYWLdlXpVl+T8edDHlTxjNj3dWsKkU8V3viyGRXfiPCx/CakA97+IthmECOf3j6Zjknzdb/WX9sqvP9SjtxCXWEazhWujizY/RMUK1bS3rieba+7iPHv/Bgz0obOom9WCwG/YPfD6eHWpi6tn9NyDG6hjMWNssSYgh13/YpdW69j/Qn34a7br8aYdmB9d9OXFTdU7p8B7+TairHiQ96GB3fjClYiHbUf+Ef+LTv84ipXWLBFlY9/ZJXVBzSdj+VsVmIpWFzLk9KGX2iytzpaJuFDuS1WeGZWpSPslnmKuklXKovPBpWLSietKzBYU4ZwNvjZfrU3X35fLzF8rB933JgyirraLOnK1dXyEIlgV6vF6PHHYY5eyZbXvZ29X/kmFAV2ukPGnOJs3EeK7ya+QAFIeeLgX814LPAZwL1aUA+3eGAKsCXrjrsvT3j2x1i19lQ6nUk8MaSNH9+YKuVgQwNwSxRCSoLxF1P1gXmS8n10pgpnqc7ZQKpaWFZ9YOFcssSh+NtWPqlV5GEqIog2RBttaLhWkFLYL6pMVF3YUH6fR+2rxPGrnkFQYpK/BaHph0rpPnqJTN/HLx2Byfr1Ybz4tPKBYzWJFdW1kNeoqKyyUbz6axYELdJG/QAMdlYPI9uZYvrWX7Ptf/0j+7713TxAMffwF2EKeArwRSKnAb1ftD0PR3bTLPZpKdbNUbzr15fz8b9+CJvPfDStkSWU3Sm8d29jj39QCq3WSNUwxDqsBFGh9LRsfC6N+BSJesVoApMQBFG02pVqkQlE0o3qyQ8AyDwINtSO2digZZ4h51bbrXpPamPMKznq+VGTQfLotNjgdXoqcMrZYq3FtApMq11PX6pGYbMfrFHlsPXwkuiMgdJa75G7k0WBabd0eiEtmY5U+hWKAtvtMHH1tUxccRXl/vFMdvMDg+OsMeC+OMJTaCeBO8AS3ALbi1vZKbgvoEzs387Vl1+80MZkLDZksptP+EfWeTgumxDHaoRncUO696/+XvSvk3lYW8YO7oyM2UQmu/mEH816AI7LrqcH4XmcCmxgmL5955GnCWRkDDr8zJINOC67Pj3p4R9DD5wfuzIyMjLmFJ7LgsROXda2CJT9u4yMjEGE564HknixYtwQCxwN3Eh8wyIjIyNjULEL9/n3HVQclyq8e5HJLiMjY3FgNY7TAjzheaX3AGqTmzIyMjIGEha4oNo3UO/Dux9y/mpGRkbGYMLPI76vPOjnrNhqf/G/P5uRkTFMuDfxi8hGEt4puIUwMjIyMhYLjgU2kxAeuM69lQtkVEZGRsZcYCXRczUFsR/vdNy7Z7n/LiMjYzHA4jjtjOpvIwctzqp+u+RJxxkZGYMNQ/x4sSI8/wmozQtgVEZGRsZcYzOO4zpe4W0A1lX7Wd1lZGQsBnguWwesR7xpIQlvaD4JlZGRsajhuWw91QLdbXFgDXnAokIWuQeNXFW9kT831g+wOG5bB5HwNuHYcPF/0n0GFIX7/J8dyBu1+fPwRoVohjnA+cPGoXwz+3C+r93n18m03FKMNn8AdKHgP/k+gvsYaCC8kxfKon6BMQVlufiWzjsYSphT2jiUxPubvwJMUURTBVHLZcRtWWK71f2UP/HeD9gMjvBawMYFNWWBYYzB2pITN/8Wp5/xeIrWKGU5FRbvCQu7JEv1xQTcT4ml3RrBGr/YjRUL+sQVtKx8W1mtxAUitFiYpyE/sZiMxbpFhYqYr16sR+RTxVcL64Rj0U5fXlutEKZWTyPGL4oWtuXf3GlIx/hFLoXhojzSphBH1LkV56xcLMgYipEWWPd1R1MrX7rAklxsyKiFfkpRvtSekL+vM2Pi4j6yXkN4gykM5fQU4zfdyO7vfpfxa64JNve7Kl3E2Ai0DLAK+BTwaIbws+5F0aIsu5x9zz/gKU/7IN1yBdPTE5E8qvVN1fKCgTCsWr6vOquWSIznkiUfk+UDVUM3gbaQSye6X9FQ/bqq1RKMpSQMbLUUYcwjXfM22Cbyc+tti3VnhZ2hJEYQkrHU1tkVhFpbstI/REL6CTkHEq+WvUyIJ6Yjrgs+Xbl0o6xjwjXBL1VplBUh3zKp52CTQSzXKM8l1xNRH0vGsN0Od118MXd+4ANVXWfSm2d4Tvsq8NQ2sJyo8IaqC9q7scuXb+CRj3oj05OwfcfVbinECoEoJKmJtVBrikCQRY3UICGH2Fh8brEB15VhWFZQ2KBUYBVG2u0VZmyUmkCR9srjPclO22wTmxHh63VkKzUmyUGXUa9T25vsteqN4UM9Fzaq1BBD2JaSvcpXh48PpPQh5UkyWarT3y9FgVkyxqYXv5j2qlXc9q53ERaKyqQ3X/BXeiOwvA0sJU5JGSo4VxbWrDmNZcuOY9++XbSKEQrTUje9WtM0UUeq8csbP12UuyE8xMW7lcJL820gTqMIKZJgyKU659VaT+JtIDCSuFLdGKU+ox1pXIjrvMpVa4sqX5PmUdlnQrn9uXjM9Mw31revB29nzEvW80z5NuUX44b0iXVfVOUO2lU+NPZPMPHLq1n3BxfS3bWLO/7+7zGtlhvIyKQ3n1gHLC1wCm9tdXCo5uD50didO25kavJuxkaXY0snC0x1N5tq34SOHHGsOm4qdjHWn6/2IaZjjQgfbSii1+bi+t+Qh0/bnzf1NMVGOOfTNZ4zhQ2+ZDFdz4q+PD5uyN8kYZA21eMaX1fCblGjokxEm6xMl1Cnsc7EvrRNxpXltCIveS1FHeOvlThu5XVDxhXXNORLyCPWgee82N83cf1NbHzBCzn2aX/gBjOMIS8LOi/wnLYWWFbgJh23ie+dDQ2sLSmKFnv2/ppv/+dfsWrF0bQK9/SNDSsSkm9QDpLQiI1H7osGYkQcIYMIxKXPRvmAaHAi79QOdTzIMkIjlPnJxp3aHOSgECqK0EJ8WaLEPi2m1PF6fRkVB6trKsbTD4r0fD1urAtFsPJK2MTG6u9C2ZTkK+2PgjqWXx1zv0W7jZ3uMHHTzRz/mtdw1O/+rhu1LYZKXywkujiO21gwpO6sR1l2MabgRz96P9/6j3exYf1pYLtgbY1k1M0cGo8IURt6JJ73DSVRQzKuBfyohUo5aURBuXkLmhp63TrRwAVdJCpIWW2bbZBxdb1IdSfDSFKtE3GIJYgylCvx+iJRNyjGBjvVMR9fQvQLpOQr1aauR5l3Qx4iHYOB0jrSm5xg+o4tbH7jG1l1wQXQ7WbSm1+sL4BjFtqKhYa1FmMM3/jGn/LDH3yIjRvOoNPtVH0svqlW+1IlOIZKFIC/2WUYTQxpA/EodKeUJiGp2kJeSb5SuSX5KpXl44hj8VygG0FcwtUUaCTWRAE16LU6akpLk0rMTyvJ6MInitGKdIR9RqSDNTW16dI04ldYlSjMRlUZugIaSmwtRXuU7u69dHfu4uR3vpNlZ50JZekmKGfMB9ZIwjvAXbmYYbEWiqLNF7/4x/z8qi+wcf1pdDoTTumJvjPf8GW/jur3qs4XyMbjj/l+J+0aSqUn+/RUGAyxv0j0aTU0XIMjT9Vfp1xSYYfoc0xdeJK4XoUFe0RdhL64pE8PC6ZE16GqzwbXE63wQh35dKX9CCIKfXomkI8PR1rvoWyiHEGFy+smyd5E2xHlTPsPkWWM4bGWYnSUzvbtlFPTnPqev2bJSSdhu91MenML38COLXDvmWVgsbakLKe45JILuemG77Ju3T3pdiaaXUahLqSiCIquQT2kCq92TjYqpZAa8pINPWl8MbhR6SqbEaqnQTUaVYYk32CvJu5EQ0XXHQ3tHibpENVdakdzGrH8phZeKryolGuuslDDkfQa8mxSeOFvo65RDaFslmJsCdN3bqFYuoxT3v1u2mvWuIGM7N7ONdYUuMW3MwBrS4wp6HQm+OS/PJVtW67imLX3oNOZwFQflpGjd2qvdpNrRaKOy7+kGjJokoHoJqlclbNV37MpKSVxasRnBCnIRt9ESChCSgk0HkusbXAz6652g3uo7Bb0KdR2KIWou3BOdBOYBiJtfHiEY17pybqVDwqTlDJVmEaVKxBraWktWcLUrbcyuvE4TnnPe2itXOkGMvLI7Vzi6AI4qvoj1zSe9Az792/h4ot/j337buHoo05QpOcgSMU3Ea9olDKKjSa6QYmbpFSSNyRtWITGExWKUeE0rSZNUeQl3blmNdKgUIXLCZXLLGwNYayuF0XWKekZFLFJBarJTrqtipJEXlX4RGH78kg7VNo2zSva59KTpJVaJfMU5RTlkddN5klpKZYsZfLGm1h+xllsfvs7aC1f7nLJpDfb8BW6usC9WpYh4AYxCrbvuJ6LP/E0yu5uVq1YR6czibGF6O+JJBZculpfD6qxurMxvEmOBSLyYWSfkErDBIJN+7ZCI6v1PyHsi+nU5rQRlUyqUCShexc+JeFAqlaEEbaG8pTeVu2S1uY1JjYrt9QaimpD1KlPJ31o6LmDsb7r/bTSJp+nOK6uX4xPEhdRF5I8jTXuFeXRUcavv4FVF1zACa9/PfgPE2TSmwusKoBlC21FP8LaklZrhDvuuIxPfeo5jI62WLp0Fd3uFAbp3kaEBksql3WDloow/ArXyx2LiiBOxJUqMSUkqSC0CxZ/E9KsqSkj1J12y3QfolQ4DerJavtrJVf1JlJLlaVUX5JYaIB0jzGN9VhTZjVbYlo6nUiGImatHuV+fBDqfNO5hAZD0W4zce11rHns4zjula8iv4ExZ1iWCW8GdLvTFEWLG274Kp/+9PNZvfJYRkeWUXY7ivRM0gD0AIRPTSixhrx6NWJ5ttZAZf+UOBcVZGVDE0EJRZrGlSSGSqXu6oX8ExVbCyPylK5xowur4qQEG+1TfXqh3CRhRV2oB0tap0JV1lLVUG9hiBHdEF7sh/Tl9UgfbqbAmBbj117Humc+kw3Pex7VtIFa3hlHhGUFbhmzjB5wE5MNv/zlp/nc517E2jUn0G6NRNIT7poRjUa6nOnrYMr9lFMmkvDKvVNKSCjJphFO6ZYFmxC/qZslXGnp7qmyyfCE/IpAOsJNFkSkp6MIO4Rak657sN+m9kvbYjhUOKGAZb2HMFEBR7ISZQs2J+VvvH4ivvhNuxmUuy5sqNVLq8Bgmbz+Bo576cs45ilPyW9jzB7802ZZAYwlBzMSWOu+N3fFFR/m3/7tz1i/bjMFBltqpQepNtL72j3ToYKySt0mZAMy1Ty9olkFpW5dOOfTbnLstE1KaamG21SSmH84o1xfeV4qThFHELR+UyPVc7qODEkJEpe7PuoayVopWqm6U9JLr6XVYWK4er1L7akVbVPtV6RXtGF6mombbuaE1/0pRz3ikW5icrtNxqxgpABGF9qKQUC326EoRvjOd97Bt771V6zfcBplWWJtN+nAriAbUXKzK/KRfVLCVQp/NxGptYIgtHuUkl9QTT7nZCBFunQpaZvaX5JEU6WXhoe62xiJJBJMTFaTra4DpVQTm2tP6qCoYrh6PabHpE26xHFLyDNA26aut8hDPthi+iLfEhgZody/n+k77mTzW97Civudj+10IE9Mng2MFQzZBz8PHxZrOxhj+OpXX8tlP/4Ymzacge1WH+FU/WkJCdHQGKBGhJLopCspTKjC6X6gRDs198spxRXJNlVcTSPKalpMWk5DjVTUPD1iOrq/q5k8pOKqlV+Vs4G41AOgFioJlyjJJiKWrnOSu6yjA13nmrqz1PINKC3F6BK6e3ZT7t7Fqe96F0tPP929d5tHbo8ULQPsxX0iKuMg4L+h126PcuGFl3DGGY/jzi2/otV2ax+5+zf5ujH+/tYfmgwiSbQO/dFL/ZFLlaYIF703/Y23eE5/sy586UnYYoXNyo4qrbRsTTZH22QbbyqbDj9TviodUQZ3rmJb0yN8LQ+ZdmJrj3M+vyjObe2T8ulHXaMdyfUTaUTx2SNfYyinJhhZv57u9CTXvfRlTNx4g/uWXnfoPmw0W9hX0OARZPSG/4ZepzPJpz/9LG6++T849phT6UxPAkJRNLppsfNbK5N6PmruWXI+KhNTU0F+33o3S+Wr9ElzX6JULYlSVCURrrhSlmIwQdqj95tVVS1fEceoNIUyO4Cy9EpUO5GouEbEbVLU6ritPrAm3dUmhZqqXqUm6/mmNmMtZnQJU3feSXvZck6+6CJG16/Pr6AdGUyuucOCxZgWk5O7uORTf8Td267kmDUn0JmeijdxmbhuNmm8bi/8No5wqlAJMUjSSEY4ZdyUPNJGFidMRwewPtVGNtAe6STPTRmm5rpbmW9aRyKdZJAlupnEdPw5ST5V+k39fagUPXnKI/Xy6+uny+zStD0fWomgV6Qdr1F9pNgdtxSjY0zeehtLjj+ezW97O60V+RW0I4FbqSbjkGFtl6JosXvPrfzLvzyL8fGtHL16PZ3OlH41SPlr8XDT6J5Jn/a1uAkZijRqo5K1Rmt6XmlPTk2KT9nYoErSaSrKytSmHvkq0iOxNelDiw8NSfhp/DQ0mEqZqz625BqYpL5NWiJJfqpsFXUKskWXpuF6E4nOlzPkG38NhmJ0jIkbb2LFOfdm81veQjFWTazIpHeosAXQWWgrBhX+46Fbt/2Cj33894GSlcuPoTs1SWGKqDJC4zFCwflzRqkR3WiiGgpqQriNcqTUpxdUlf+7YZ6esf7zUUmaeGUk4oq8TJqHb5RyUCPY1BTeqPSl+yrnvoX8ZKMPttTVcBrf17MsTyiBnFOXXANPZGokO7EpErssGzqMvG5VGvGBFvMCGU9eKxGmSrMYGWXi2us46qG/yQl/+qeEtzEy6R0KOgVD+Gn32YT7THybLVuu4BOfeCpLlqxm6bJVTE9P4uboicYdImmlUXfLYgPwqM+Tk0RE0iB9fkbtq76lmHIkh+S4/98I2+RxpT5T0ktsSsvhUy6ixiG1okmVxrpqUM1+Rz48JKQqm1EZzlBOUY/RPqPTkflKQpe/oU4j8VoZPp6J17ndZvxXv+KYJ/4ex1evoJncn3co6BbA5EJbMegoyw6t1ig33fxNPnXJMzhq5TrGRpfT7UxGZaQUi4N2fZBnRH9XMwk1EhsJOdkkDuJ4Yos/3pRf2gemJ/CaKDKapq+kNqnyu6SNDJ/mJUmvaWABqYzqZ1Ob1bG6RYnLq4nbE1dKjPKhVVdugtCTczI8VB+NlfYkD0lMAaZg4ppfsf6//hEbnv1s9/HQPDH5YDFVANMLbcViQLc7RVG0+OUvL+Ffv/ByjllzAu3WEsqyE1f8gujeyGYjVMAB529JFadS0UQlF6KR7hr4htWkvIQbmA66+PwalV4TeYg8KnuLJgJWRNicV+oa+/g1whblaFLOMobPqWhQ2nqQISFiaam8XqFu1aNH2STrp/YAUg85amTr4xStNtbC5HXXs+nlr2DtE5/kJiZn13Ym+Ks0WQD7k4MZh4mydAMZl13293z1a3/OunUnUZiW6+vDqL4uECRXncMQ+7qIx+Pn4mMfVWzIsV9K9rlFt4uQlg8bp0UY0SdmMP4NDrQKi31b1RnpcktCleWBeM4vUOttLo0oZ72/Sr+7SiQblW/c1LvHso6SPr34UBF2hzxMGFmXNklVl9qkqc3FseE6+PqLJCavUyiPVKcyDCDvl1BH1YJAZafL5M23cNIb3sDRD3+4c2/z2xgHwoQkvIxZgB/I+Pa338q3L/0r1h97Cra02LLqKk07xEEpuah8pAIUjSZRFqnikggNt8oj0U9Jo63+l538aR9YiKMJSpJnfKm/ys2I8lFXZilpSJt69UOGdJR7GW2iMR1BGoi6CKQTHwoqTFpvyiZNVrJ8Ulk2dkvIOkLnoewPtokwfhW0/eNMb7mLzW96M6secEF2bw+M/Znw5gjuFbTX85OffIQN6+5BWb2CFtyklKgSEouKIh7z4cTRxnN1d7UX6enw6bQUHzeQWRonsSclsXQkNyUw2aBVWjZN39RsBRkWRXC6vzC1O8krhdV5RLdU0HStHDKPOrnF+DGuslA+PBK7XRx9/QxAaTGjo3R37aa7Zx+b3/o2lp11dnZvZ8b+Ati90FYsNlhbAgZru/y/L76Ca3/1RTasP5nu1DSyeWhXTBADCPdOKAYRpsk9iquixbgehVSJYrpEmOpBTEdOzYC4H1cfS443TesI6jVROkHZpGHqLl59ekjqonpFphWXItgZ3Vtpd6zfmopNyyZtQta3KMNM9SjKGa+tuJ6yfhvc21DOsloQ6O67oTCc8q7/yZITTsD51Zn0GrCrAHZVf/R65mUcBtzaGDA1tYtPffoPue3WH3HssSfRmZoQN7pDOlUknbga54IZFa4W3zcOqYeEO1XoXBOlBTW1kpKVEXEFEYOOW8sjVWg+P5+HCC/Tkg8ApX2UEkyUYqinhDx9KklcbZMgPYSa8mGEzbGOGhThjPUoaicQakOtCRdZn0nquLS0xpbS+fWdtFet5pR3vZuRtWvJHxBV8DW8swB2LKQlixl+bYyJiR3834ufwo7tN7J2zYlMT00QxlFlx7lqYCSNQZBB2g+FJj33t3SJEHEFMSTkUyOe9KhqtJKcZGhNBjJ8bMhJXJs2bGFzSM3UzteJoaEETQSXPCB0ulFt1fsNRZxa/2Zqs7ZH5tukvdSAiAoVVXjTYBcAZUkxNsbkzTczdsKJnPz2izBLxvIraHXsLIDtC23FYoafmLxv3518/BNPZnJyF0etXk9nejw+r5ObneqYSZpxbPbaFUvR2Kenzkt1F5zZmG9QezHfkFKiVKRLpsk2yVWkqRqrDylcN2FpyMsIu6TSkcSq6kikk84JVKGFe6tsJSl/UpepqjQiXOOvJO0wMCRUqMxD/kqS82G80k/qsTU2xsQNN7DyPr/ByW97B2ZkBGOKTHoR2wtga/VHdmnnCG4uXovt26/hYx97PK2ixYoVG+lMT6AadWiAvfuGZOMKjS/p3/LEVO9X0o3akw818jTRFt9nZGNTV401hIn5IQgq9hE2EIHsZ0v7q5IyR6tkOHR/YFpHwm5fHmx6HO0CJ0Qk+ziNsBURNxBmcKGbrp8RNhHyCNdCEW+ab4PdQuFGuwuKsTHGf/Ur1vzWb3Pi614fZwcMNzy3bcsKb55grZuucueWn/CJT/4By5YcxbKlayg70xTVZ+J79Qf5v6KLpYlCZ4RWjNKFpN4w/dmwKQILVlRpC0dLkadUqloRhvS9WyZUVZJ6KGOqLBVZJXWhFF6T6ynTTVWzUp0NijBRbtJaVUey3L0IXdrp48+Qr7JR11Cjm+7ysRgKipFR9l99Dcc++fc57qUvJ/fnBWwrgC0LbcWwwLu3N9zwb3z6M0/nqFVHMzq6jG4nLv2olBepW+QbbTgTjimVUMVR8ZM+IJ1Cj79Ef5VqWCFfTVbRbkHUtkcuiVuN3G+IK/OPSjPmG9WUyKyJGHxq4UEg6iXkZ+s2JWWPKjiUXNvZCEm3WukZkbysx5REw9GGsoXymwLTcqugbXz2c1h34YVubYxMencVwB24L6bkadrzAD8x+aqfX8wXvvgqjllzHO3WWLUKmr/B60TSOMiQ9F1RxU16uGKDkMkK1y322+meNZlXPGcE6UpXTNgtXTmfhlQ+iQ2ilPEv6ZY22JQOoNRVpRH/C/uTh0eau3QVJSSlpX1rIa1QfmG/IsZoe40erYnTipK6CGnqGoolTBWktRha2Oku01u3sv5Zf8TIscdih3cQo4XjuDv9xOO7qxPlgpk0NLBYaymKFj/80fv5xr+/iXXHnoQxBWXXfakrNHQrG7Too5LqxprkGErtqHOlJyGDsVa4iZEk0/6zkA6EhgwG6/dNqkY1yaHSEX1ckhCkey5cz1ieuk2+VkCQtcwv2GGCTaZWL8Q6FoQuFV+t/0zUV9p1oAnaJF0Pui7UAE61H774ZJNN1m1C9rrvF1FHYIqC7vgErWXLGd2w0cUZvm/+ek67G9jXBsaBu4D1C2bS0MFSliWFafEf33oLS5eu4aEP+RPu2nYH09P7KG0JxPUvonByd3oUEtqvsdUxY0zYd0cN1pRYTBQMtnraG7mmRLUOho0yqG4DIY4FKG2DXSEktrCuIQePPdpqfH6k59yvUWV0+xbCmhzBdiwYo+rDGkNcdaJKR8aryDqEMTqvUB++PMZ6o4Md+LSS6xHWpbDxvKnqIF3jJPKrqPNQd6IeQ7lEHSdStbYOR7fL6FFHM719G5O33uqO26HVNHcB421gH86tPYeakM+YO9hAbF/68isY37+TBz3oRbRWnMJ0ZwpLKRpoFUM18Oqmrs5bbPX9atfYZePWceOxUjaQKOMocQ0qEE4guIpYgmSJ+9EONLEAFGLBG5+zMbEcwtcr8VwRzykiJCV8T+iCuAUJKdKq/rI1crPhePzb51HFUsSr7XPhTUhnpnjqYZGUX11LQYSqvGlelYsa7DeufksLxZJRrIHb3vd3dHbuwBSFc2uHC/4C3EGl8DzhgZN/uS9v3lBJBizf/NZf8Mur/5VTT/sdjj32bFrtMayNUwp8I1NfmkI/1cEl1y2n3I2drNetGpFPwZOjLat0jG5wQtmEPKtGHFY/82mXHcqyI71CRdiSqAmKx+doNNEI5aWVj4lnjc+3S9ntCMKSv1aWVhBEmdhpffEFIcU0/DXA14mrNLrdKVnDsc5E2rKssRTx4RHKYhMiVoRY1ZXLlrIzTXxwRBtDWdoj2O40O7/zbfZe9TOX1/CRHUROC4TXJRJexrzDk0fBnVsu584tl1fHDfImzsg4bBSFe+tiuHEH0PXfkrlxIS3JoHr3toUxhrLscmRkZw4cpCnKTFnKJHuFM427M0aT2R4JxZsZy9wr5+ZQpocV8WjooIupHKjKZSFnsK5XMqlFB5OdqeTgkCq7FDcCeMK7HVdHbZQDkzGfsLZbjdTJHun5yvwIzydhDpa4bI/9Q4U95Ni9wx84JekI24ONdFDhZimZQ0prEcNzWonjuEB4d+HeuFhLrqc+QL4EGRmzBIObkrIFwmQBbgfurPaz/s3IyFgM8Fx2FxW/+YWStlQHIcuLjIyMxQHPZYrw2riVy25aGJsyMjIy5hQ34ThupCCy4DXVb4us8jIyMgYbljin+Jf+YEp48QNtGRkZGYMNg+O0X1V/l5LwrgT2LIRVGRkZGXOEPThuA9zryX7e3U3Erx9nZGRkLAZsxU06NiSE1wV+toCGZWRkZMw2roT4TYr041iXk9+0yMjIGHz49/9+LA96wvP9eN8nk11GRsbigAF+UO1biITncRVxYe6MjIyMQcYuHKcFpApvD07lQX7FLCMjYzDhuesHxJknjQqvA3xPBsjIyMgYMPhvuH4Xx2kBRcP+98jIyMgYbBgilwWeazcEvB73ou0GnDQcumWOFg7miD6C2ZeI38rMWCjYRXVHHQj+k+5bcFymIAnP18qvcb7vE8mEN28wpsDacnGRHSSLW2QsCEwBw7NamZ9z9wMcl4G4+1LCa+PePbsMeBL5Np0XGNPC2i5jo6vZvOmBbFp3X4rWiPsCslqgxy014xecCVxiUH+XZQdLF+SyjHKZQZdYiGEb1FdcoQzkbRBXyhK3RrX6TbfsYG0HudhzCC+WftTnGm4yY926t3KltZqtNuRrbUlZTutaUXmFJXrUokSy/lR6admqxXWMPGeoFvGZVuHCwkENyrax7tK/TFrjqMWNPMrudMggLgJkgx2m3aY7PcmOH13K9J5d8Rosfvha/zGOy9qIfrwmlxbcBORJYJTaZcuYTRRFi7LscvapT+SxD30ra48+h3ZbrG0VVg+LK1rFv4l/Q1imz1qxLqtfiqtaAlEupejjhPQkvaTpq3Vdq17haplEv+Si/1dfUtHqOIKEfYn0mq5xBTOVjlpDt8rRAKbE2pieMZbSRPrz9kebq7+No7BSkhRxWUcTbIxlDHZ7GyrlpNbvDXbK8sUyhzouCGsAp+vj1q65AbewpqmucbeWplqa0kAxMsL4ltu46s2vYu91vxyGxXwsMILjrsuaAqREVuAk4Vrgm7i1arvkpRvnBF7ZPeCcF/OMx3yAfRP72bV3N107lRBTtXC0XNRaNHClfqoGV8USqiI2XkeklfI3oqERSUYvdu1lQ9KQg0qSa7pWdli5Tqpc51U3Tr14tv/V5BLTrdKp6sD6ehHlrtuj13FVdlSEB1CGxbkrAgr1bMVDwQYi9J0PBoMtbHU9tA36oSQJXdSd0WWQ4eJ7UFanY6jKVMar33BNym6H5aedwd5f/Zwr/ttz6O7f71JYvErPc9XPgd8CthE5DagrvLI6djfwCxzhZcwBWsUI3XKa+5zxTJ726PexbcdW9k+MMzI6QsuMBnfONbBINKX3zIiNzpNK6T1YE7RAIBGvYghqLCGToAa96pNqUmi/JtIz1nmKnjSlG9dAaCoP5VoKG7CO1DzDGW0XNRuhl6Ly9WDSMgk7C6UwdblNWl6glZAqSX2H4/6CVG3OJHVNUKL+4pWBiOuLp8fjLi/5sSPCPRN7FAwTt93K0k0nsOz4k9l9zZWYogViveNFiitxZKfcWeg9IGGAfycvzD0n8GR35kmP51m/8w/s3L2DickJxkbGwFaqo2roxlYKwLrGXy0+j7WhV8qpEFuRTvUED7RWPc2Nf6pbf8xW7bT6W+3HzYhfaVcl+Ny5EpG2y8uEPKQNsQ4MFr/IofF/Cxtc27eBpLx9pko/2BziijIk4aNNMby0P4azRL4SYVT4WJdGxTWhjFHYmpiuNa68lurXxHiq3EZcDyHArSHWY3gqVOkmrlp4gpQUo6PYTpfpfXuSk4sSLRxn/TvIDt2IJsLzi6J+kfia2aKupfmEMYZuOc2J6x/Isx/3T0xMWafsWmOBqIw1jtxKdysLbzE2OimNMJE8ZMeb7oQThBPjxkZI0mjlSq+650P+JQScOGfEuaTXJMq5UBZ5d4XmK8PJ8vtQ/niSh6+j+DBAhEvysySljHUh02giE182FSaQl67TpAZEmib5ba4LI+tWEGAtjiJbCyUsW388W772r4zfdhMUxWJ2Z33BduG4y9LwtlgT4Tnt7IZ08+eiZhFu6oll/Zp78YInfALDKnbv3cloa7RSIPEmLnADFl4FRBUhnu5VYzBiHwhqwsh9rwaqtEJ4KxoWXkkEny7G9WQg7AmNXuZrY14g8zI1OwGKQFymyhsdB5mfCYQVy4YoW7Q/krZUVbI+jDpGUgaCChO/xHxD2QRxG9wDzddmIE15DdDljIQo8kjrwhqK5HpIu2V5vG12aooVm09n63e/wQ0feS9hlHbxEp7Hz3CrMB60wvMwwMVzZNTQwQ1QlKxevpnnP/aTLB87ie27tzHaHolhQCmfIlFN/gkv1ZfWD7HRSHdIqwZ0eHyjIio8vzWooUhYSsvFfFXq1W+qLK0Mb5UyCeWp2d6jxLrDUJfN6hhNaatUZT011JkkxkabaopV1JFQflJZhmvaoCw1BIGq6y/LY8AYyskJlp94D3b98gp+/o7X0J0YHxayA8dZzVXIzIRnga/gVvvJOAIYCjfPbuQonv/Yj7P+6LO4a8dtjLZGXYBAIGmjNoqEVMMSDVS5pfRoNClxqUYpXLlACpL8kgZNVHc636hQYlgjwmu7glKq7LHSPhIFJ8uAcfP0aumkeYhyWl3G6PppxSyhFFpKnjYtU/JAkvkm5RbWqfjxugq17SEfAOphIJSqMXQnJli+6WTGb7+JK9/8cjr792GKoXl3YBrHWT2Z/UA1cTvwDdw1WfRDO3MBYwwYaLeW8rzf/RSnbngQd9x9B6PtJVUvgwmLA8+sDqjd7PKcJj3f1S9dMZM0lETBmaZziWIS+yHMDMpIhVEkS80W91hIFBjCBt+4K6IpQiydbyRdYat8ANQUo3OrVSmF66v7SdOYIn2rw6h8lTucqjJRRpmyfHgkFsguiHC9TEE5McGydcfR2beXK/7yj5ncsRXTamEX99w7wM+y5xs4zuqJXoRnq3NTwKeqY4u+1uYC1lqsLXnmb32Yc09+JL/edqdTdtI19erDRHUg+6xUnxzG9XsJ11AqC9/IfBillPCK0feppX1gMT+MVjexQYu+MsTxpC+qkGQr4of+rBBHqEHr3PiQL9J+0QcW4hhoIoQk3yYSk/Xn4+g+zbivlZ5J4mnVR5qOJD3ZNyjrPbnm0r0Ndst7IYw4V3GNoZycZMmadRhTcPn/eA77b78ZUxTY7lDoFM9Nn8Jxlp6vI3CgPjxw76Rtxc1pyaR30DAUhZvm+F8e/F4ecvYfcNvWO2m32uGGT91B2UcTUxGqoZfiShpZ02hsqjJ0KjFcVI31xlpXb8I1lHb4NPDkI8khUZYpiUnyTFw6rbiSuvNhgiIUlqmHi4gn7A72y7zSfK2Op1WgvHJJXr7cYkvtq135mmKUiCSJKSgnpxhdeRTt5av4yVteyp6bfoUphkLZQZw7vA34YXWsudqYmfD8hwOuIbu1hwhDuxihLDs89rw38bv3fRm/3raVwrRVQ9LuDIFkfBpNbpnpRXro49K9je4eCRER1E50j4SyqtEvmjxqecnQWgWRnJfuWOOzWBC1zg9FQppAYtkisRtVtmgb9CI/EUqZJPPSxFQncVl7kqjlaG/aFaDJUytmGTfEMQV2eor2suUsXbuRn73r1Wz/2fcqN3Zomqp0Z68mebMixYEGLfxM5W9UCQ9N7+fhw7kYnXKK3zz75fz+BW/k9u07XB+BKRobWY3ElPJDKw60opHp4I+lCk01PhlW51uI/TSMb+iFTcJIpSYVXI8yKhfQ9FBSlaXizSoisUpFampEl6I+X86EY8rGhPRrfaNpn55FPZAiLWuylSGa1XYDeaY2gXhoRdvKTodWe4zlG0/mqvf/OXd+9yvOjR0OZedR4Ljp6ziuatPDnYUZpJ9IrATWA5cCp5HfrZ0RhSkobcl5pz6TFz/qn9i6Z5LJziStVgv9Yr3BCpkR24KNv+G4PwZWtEzdn5+8/hXyQaUT23NsTVa0rvSl/+bwwqqGOCq/YGN1XLBhmocPr169qvJTZUvS9jaE/EPasj7Tc8m7p6LelT1JGWVdpPWu35PVdiDsa7xuJrFblk9cGxfWYK17P2DlyWdy9UffxbWf/DvnxtqSIZl+ApGLrgMegvsG3mErPIj+8Rbc55JdS81oRFG0KW3J2cc/nuf/9j+wY1/J1PQkI61WTS2AUAi9FJFQEL7ipUIxifpSbllwPbXS8/kpbadUi2qNShsF9Jhqod0yHUKrGF1+Fcrb3eCiytAWo8sgVKwMFyfnEuxK85XnZD+ed6d9+t7+VK3JKSs9r7Eou8pfqr6gzqOdab259EtsWbLypDO54bP/yLWf/DtHgmV3mMgOXPVYHDdt4SDGGQ7GRfU+8j9UiWe3tgGFKSjLDice8yBe/MgPMzE1wv6JvbSLdvwUXEI0EF00PSu/gnQTq79DrIQsk2ZJo1uGSCshFUW6icsc4voR3spOda5WrvScH4xIXcpe5KdtQtVh3YYQJhBDjCzjaTI2zXmQlEnWo4k1Hfvt6tfDh4ll09fGNF1L9XhRocX/YKenWbX5LG77xiX8/H+/BfG1gGGDH439B1zVHLDj8lBr6qfEL6gMbS2n8J95OnbVmbzu8V9hyehGtu3dzUhrJHH/6u6S/mKJDpO6Ual7pNxMGbfJ5aq5YD1cz0R+VEIn7NOQb+0rJyJOPY/mr6nU3T1bqwMf3iZxEXHT8tAQvpcLKcvWVI8+vLZJ5tuQn7924rzKN9gkjs9wf3Snxll18j3Z8pNv8uN3vpiyMw3V1Kchg6/SK4FzDzbSwao1fxn+ligjMwD/FsXKJcfxykd/mZVjJ3H37r2MqbcoKih3yVdqvTPc/zaqJr8fXD8d1tRD6nNCBfl4VrpZyrWSKihRH7LjHanQ5HEjbJOueL1U8pxUtLUxWpuUJ9RZkpcML22zSR3VFF4SpkERGhXXiDpN0gvn5EBUXZWm9SaeMnEOHobu1ASrTjidnddezmXvfhndqYkwz3MIYdGcdFAC7FDcUwt8CfetvEx64KYFUDLaWsErHvlZNqzazJaddzPaHgmfdPKuV/2K1F2qtNGreWG2V2PVjTucTfqiGhtWRVxF2NdhfLhC5qXFjc43PafcO132lChl/Dqp6LTVRwWULaKOJAmJtEL5S11SSZ66C6D+kErtS+vUJDanNgQaF3mhUkhsMobu5DgrN57M/jtv4wdvfz6d8b24DwIMNdltw3HSQXPRoRBegVvN7ENVZp2Zgy9uGFNgMIy0VvLSh3+ae2w4n9t3bK/IztW/7HtJJ7fGhkNjo0nJBHFcqZgGkozpJETTQGj6OPVbx1YKUNoQ9up2ppOTU5VkVPioYlT4Kt+ChuMyb5GOeqAk9emJNdSJNWBIFKfpWS86/aT8ct/GXE0SRhJ1WpdKVdYeWk7ZrTj2RDr79vL9i57L5K673efah2uAQqKDq6J/wnHSQfPYwQa0xA7Cf8Wt5t1iSFWeMa7arC149gM/yHknPZpb797JSHiLwkQ3RrqvYUKsaBxhfpeJKs7G5hfihfRimNAQJen5MBiRjxww8PGl++hdY6E8gisl7BHpy3d0jSifL4cRtkn7UeEReSRlpPomYIPNrvLjp6WC7T4MMXxUmpKQhGKU6Yr8wr9wztTCmySPmvoUdityl/dFIMGkHqv8y6kplh61DjB87x3PZe/tNwzD2hQzweK4Zw/weTQ3HRCHovD8nJcf4yb5+Ql/QwjXb/L08/+Kh5/xdG65ezcjpoWx7jMA6gmuRiZp6DMSvzJ2cEXrbpeeOuKPqdg11SbdMhFLEUKjipOjsUqJxUZbK1c4l2qmSHrKzU7S9fEjmSe6So96JDloW6TKjkTUkI4v/4zXqVlxBnq3SXjkNZNqL9GKoS6EO0xB2ZlidMVqRpet5ofv+WN23vAz94n24SU7iC9AfB33KlmLQ+ChQ+3DM7iXcz9R/c44q3nxwVAULay1PPGcN/GEc17OLdv30aJwX0VBKzoXA7UnXZ8QBx/HhF/VjIU7HFKzstkkDbfRvU3cLKsboYyr009KIVWWopNY7lqa4pyvoxohJApInU3IIIQDnXaNOKWrmBxP05GkLxRt7aGkVGVD2j3CI8PZWs2JdCp125mmPbqMZWs28eP3vZItP/2P6v3YIdUYDhbHOdM4DprGVdhBc9ChzqnrVHE+ixsO9kYMAYz7BE/Z5bdPfwVPP++N3L5zEmxJYVIlZmh+yutGSknSZ1MF9I2v1CThfxWdSPe2RkQNaVb7shFKd0rmFd3EHurOWx5I2sS/vWsZ7DGiQUd79CBDqnxEWUT4cE641bqLICHmNC/SOpQPK030iUUJsRr9EGosL0l964dDqrANBsouRdFm5cZT+MmH3sCt3/m8GyAbbrKDWKM/xXFQwSGOJRzuJOIO8P4jTGOgUBg3/eR+Jz6DF1zwTu7aM850d5KWaYmJxaL/CN//Y6AUasEaRRCxH8g1hEKmYbQSi/1TMe1an57qQ5LxRIMOv9reml24ND10X1rs31JqKHGzjTgW062atiQiQei+HIWsH5LyGAKxpapKqlP1+SVRdyj7Ndnq/lcj0pB56bjyusY+vcRmQcb6wRCvse12wcLqE8/iqk+8k+u/+hFMq72Y16I4FHiu+QCHOWia+gCHghHgV8CJeB2+SFGYFqXtctb6x/Cnj/gse6dgz9Q07SJ5PzaImPrkYVu1SCUO/Fk5+TQIA6unwREn7tby8emFv2OY1K7qbNwXNrq/tQ1exNjA6pAu7xiFW49JzuJcz4nWSRltmpfYt0leTeGabWqo37SubSxzCCnrqFc6TXkldaDKn4Rz+ZV0ux2OPuUcrv7C+/nJR9/oyG74XhlrgtfCNwJncZhfYj9cdWaqDN/GIYyQDCJMRXbHrz6f1z7sEiamx9gz2WGkcN9PUL0wQhUp5YRULlXwoAIgtiUT44aWnD5JpPsmXSVU/lJlSFUCOk9pY0isRzoqLxqO69qI56w+FuIqm6UBsZ6apqzIEWWXlq25lmm+wTqLstEFa6hrxaaJ3bVrHcObNLy4F3x5mgawDNCdnubok+7Fjf/xSX7y0Te6IN1MdhUsjmsuIvbdHTKOhPAAPo37UoFhEY7YFtUrY+uWn8mfPfyzFGaMnfv3MVK09D2oGkqdbFRDlb+SHlVnvVXnlXsUGouXJEY1nODWNTQ+RXTJsfBrNYXJpoutHRENWaRr0/De3nr8GgmlDw0i6RlRl4jwYcaeImK/b1QcdU2qB0dRCyEfOZrEFayuPzl9RV9/ty8/rZXeA93JSY4+8Z7c8ZOv86MPvqpaGsCgL+7Qwr/Pfx3wmerYvBKe/4rKDuBvqswX1Vh5YdqUtstRS07idQ/7HKvGjuOuPZOMtNqhXyn2yxhBFvFXNgSjmk8kL5MQZDpvrdbPFtLTxKn71UxFyKJ/KDnv7VR9eoJg5YBFnCxtBPkkfVuyTEk4ZwmiTPVyyXl60Sb5kBBlF/17NVUlHghxtFooK1nPVbhYXtEXZ4Eykqyqo6BsxXXxdeDLmtokbfVXrcqrOznB6uNPZ/v1l/Od976IbmfKqc6s7DxKXJX+DbCdI/j6+pEMOHgjPo0bsR1hkag8Q0FpOyxpr+U1D/4Ex686g9t37WdJqyVIhsQlMUmDiw1KNjrfmFKV46eo1N0wVMNRpCQbrrTHikbX60Eo3VtJjGI/2kcghqhkdJ7qGOIYgtRr+dZVp6m18R7ubU0tE4nIilKJ+k/jpm5poh2Ta1J/iMU8knoR5Je6yXKgBFNQTk2yav0p7N1yM9/+X89jev9uN9duOF8Za0IXxy1X4bjmiMTVkRJeG7gD+AhRdg40TFWfo61VvOqBH+OsYx/IrbsmGGu1VV+PCxtj6TTqakOnjyIsnWYaL2k4NjbPQB1S6UkrRINWYURaNeuF26hGE1U6zU6vVmqoxq7JJ6q1JmIIqSki1IpRhUxcSdIQycMnqNvkHE3nFGGKOpfXSeRrRHn064Sp3YZyapzla49nenwf3/7b57F/++15rl0dBjci+1Ec1xzR2jpHSlD+/lmBewPjHrhLPZDE596PBcsYLz3/Qzzi1Kdz484pWgUYYxDf2gUj72d9HOIIYInFKA6LLbv2ld4CaiOm1OPGkT2ZVgyv4ip7mo7Vy1NZJvmN3qOUDeUXZU/rQ47KWv+3zDekK/OI5RZ8XBtR9unFMuprUkqBaHqVJ63jxH6Zr03j6zg+TWvASPuModOZYMnqY2mNLuXr7/ovbLv+MjBFVnYankuuBe4L7K+OHbavf6Rz6HzGu3EjtgMLU1FdaUv+8JyLePQpT+fmHeO0TdUlLl0TqSz8r3A7gyKxMa6KKcKrjviSxP2TucVj+j1Wod7SfKSNNbu16pPlCDHSDni0belTTYWxDV9ZEe6eimdjOFe+NI9mZRnrQ5VYpW/Ecf/uLSbNI+ZrknS02hTnGpqcCf90GH0NWnQ7k4wtW83osqP5z797PtuuvwzTamey6423AXur/cMmO5idScO+L+8TwGXV/sBdOTcia3nyGW/iwrP+hJt3TWJoU8gqEi6Rdsuk69Tc2FQnedrga6FFc7PpMZG2cvnq+UTSM45MVUpJ+jbZV7bp/fRdXj3RV0RodAcRhE+sxzQPYh46hHzQCHqJQk7ZltokB0d0HkrCKVs16enyxEGaJE9dCpemMZSdKdqjy1mx5gS++48v5/Yrv0HRHsF2h/rjQ03wvHIZjltmhVdm6y0Jg3u39s+oXpiapXTnBQZD13Z4+OZX8txz38ite7pQtmlXq4w1Eh1oNZQ2aJV+M3lJVaNJQauvONInG6Uk2XpcaauME2yStjQpQ1FeWVajctMNmqb9hrLK+qg/PCSZNihBH7uB2HqTkEnKngxAyNhS+aV1HtLWGlJBKXDivWMMZbdLqzXC0RtO5/sfeQ03fv8STNFyXy3OSGFxXPJnOG6pifvDwWwRnsV9teDbwOeq/YG4ioVpY7H8xroL+ZPz/pote6aZ7lhaBk1QYgqHfqXKH6N+Puz7xi1GQMOUDvQ0C5VGJMMYVwwMyGkSiV36nVIjbE3UYFUuRHnU61dIW2M40jIj8/eN3iTHRJ2hSa9mh7AvfYUt2t9cJ5HgRDrqwSJJT4RP6xBTTYWr15sK6/fDVRLXr9r3r4ytOf6eXHbJm7j6m/+c34/tjWkch3wOxymz9im62SQ8gHHg3bj5eS363LU11fuxq0aP5/nnvpnxacu+aRgp4lRUSTpVrPibHFOuV+K6KpWWKAyq/Xp/lFAqPo1aPohmVlcptTKnSpJmBRp+awovsSVRbrJe6qOsddvqyleoN215Q740qklJsFpZyprSD6BwxmgirvVVCrKt2dZQ7wUGay1lt8vaE8/hqn/7O674/Lspivawfpr9QChx3LEDxyXj1fG+IjyI82W+R/S5+xqGAotl04p7sXbJieybwr0yFlSVaISIv61unIV0Y1S8+Dfo44TfhKzQaYcwXv1YI2xLqE65wTFeUEGSxEPsQuRYCNXiidmg32SIbn7UQf64VDkmHle2+BiFsCN5wISyF5F8wsNC1qSsN6OsQdngyTaqTvDpJfvhQRVJMvbpJYQpbE0HeNxgrFsUu5ye4JgTz+G671zM9z/+OsBQ2qzsZoDBccj3mOX5ve3ZSqiC//TyW4AnAxtwt2ifkp9jiO0Tt9ApdzNajLFnumS0KNwL6NaFCW3AQpjmYMUUCVu6tmINGBu/bOGnXFjfTpM0Ab8YdxAiliAVrLEiLvHFdqzLv5oYqxb0tj6utFXm6Y6VXZkPIOIFe0jy9GXx8ap0S0OYemNtLHPIK5VJVqyG5j9KUBKne5RVfoEHLZY4LSi8geB5ydsu6hUjr4+uz1o9W3nOYCndr6//GerH14f1CYk66k5NUbTarDvl/tx8xRe59COvcKYZk9VdMzxX3InjEMMsLyUxF0Tkb/fn4ta/KOnbT0iZ4NY+9fS38uL7vIFdkzBZQvUVd93n7X+Js6xTkVD7FXHEQGio+TA3LIlbijwDfxg9ImRTu6LIUB51IL/0uI8rzru0TCSMKk7peyeMWCKy+t8YKJvmAIp9RZr0ICcfPtSTxRpLSYnBBGLpuaShTD+dh1jlI+tY2SbmEtpAomWVRyxPeIildoh9S4kpWowsW0VrZIwbLvss3/4/r2By346K7GbFO1uM8FzxPNx6FeHWny3MFeE5nwW+AjyCfic9wJhRfuek53PBpgvpsiw2cGIDgThWXrTa4XHkGovRE3Bd0unAqmo8cqJuRR21SasiJrYAQxv/Urk1+o7QZEEkA6FoJDEGG/FqMWnY4TyYonDfBPT5WBlX2CnIyu/rCdE+B0eqpShfJG5b1bWlKApM0a7ysVV5NXHVCFOUsTaBmBgn2IetEaopCvfWgy+fLIMibp2/6+MoKLvT7N15O9f98FPccuWXsWVZyeBMdj3gOeLrwGOIz/a+JzyI35m/D/AtYFl1bK7yy1ikMMZUC50Lt9g3gTm5mxwpGWMwxWGuYGAKbHeasozemPMkshvbAxbHF/uBhwFXcIhrVRwsZrsPz8Mv+HMF8D7gT8WxPoVR6iGjP+AWmq6II700c3ipnEc7C91HVedmJrsZ4d/Lfx9zSHYwt4qrqLbVwKXAmfQ96WVkZMwzPCdcDTwE2Il7lM3JE2Iu+9XKarsbeBVDvnB3RkZGT0wDf4LjijkjO5j7gQTfEfkV4O8ZgMnIGRkZ8wY/yfgfgK/huGJO+WE+BhF8HstwEwnPIbu2GRnDDs8BPwMehBuwgDntmZ2fqSJ+9sY+4LXEF4Gz0svIGE742V1TOE7YxxzMuWvCfM2NK3GviHwV+Osq3/xuTUbGcKKL44C/wrmyI8yTAJrPeXE+ryW4yYUPIqq/jIyM4YBv898FHglMiONzjvkmG98peTbwQ2A5mfQyMoYFsnvr/sAvmIeBCon5ft3Lj9r+Anh5dSy7thkZwwHf1l/GApAdLMz7rRY3OvNh4IO4GdZ5jl5GxuJGB9fWPwj8M7P4Uc9DwUK5kv7DP+uALwPnkqeqZGQsVvi2/VPchwHuYo4nGPfCQvad+ffl7oXrwFyBq4Q+/apKRkbGYcBPQdkLPBi4kjl8V/ZAWEhy8UPTVwF/TB64yMhYrDC4Nn4lCzwlbaHVlH+15GPAReT5eRkZiwle1FyEa+ML/mppP6gq/7HQUeCTwBPI/XkZGYMO34a/AFyI+0DAgi/h2g+EB9GnX4P7lNRZxFGdjIyMwYJvu78AfhP3FZQF67eTWGiX1sM/DbYDzwC24iosv2+bkTFY8B/zvAvXlvuG7KB/CA+iv38F8Bzc1xPm5YXijIyMWYF/k2I/rg3/lD7rl+8nwoP4JsYXgVdXx2Z9IY+MjIxZh2ynrwa+xAK8SXEg9Bvhgau0EdyM7LcSKy2TXkZGf8JPIi5wbfaDuDbcd222XwYtUhic39/BfSn5RbhRnpGFNCojI6MRvm3+A66ttnFubCa8w8RngCeTp6tkZPQbfJv8HK6N9jX6nfD8ot5LgX/FLeqdp6tkZPQHfFv8Oo7s9lXH+07ZefRjH56Er7h9wFOBb+MqeGrBLMrIyADXBtu4NvlU3LuyfT+rot8Vnoefx7MRp/TOJyu9jIyFgm97PwKeBNxBH821mwmDQngQR2s3A5/HrX7mR4YyMjLmB77NXQk8EbiJPpx+0guDRBa+om/CVfTl1d/546EZGfODDq7NXc4Akh0MFuFB/LrKTbh+g8vJfXoZGfMB32d3Oa7t3UQffP3kUDFILq2E/yz8ybgvrJxPnrKSkTFX8G3rx7gvn9zIgC7NMKiEB1FKb8TNAbo/mfQyMmYbvk39EDf15HYGzI2VGDSXVsL36d0BPB63yLd/O6Ovh8YzMgYAFteWWri29XgGnOxgsAkPYp/eVtzT5xLiZ6Uy6WVkHB78u7Ft4FO4trWVAeyzSzHohAdRcu/HdaZ+gLgEXCa9jIxDg283Ldx77Bfi2tZAzLMbJvjX0ADeSLxwXbGft7zlrfcm28obcZDtKqPPYIhvX7wIGMddvGkW/mbKW976efNtZBzXdsC1pUx2fQ7/aSlwkyO34S7kFAt/U+Utb/24+baxDddmwLWhTHYDBN8/eT/c2reWOIKbt7zlzW2+TVyFayuwOPr2hxL+wm3CfVPPX+Tcr5e3Yd9kG/gMro1AJruBh3dvx4B3Ei9yVnt5G9ZN3vsX4doG5En7iwbyqfVc3HKQljyYkbfh2/w9fzeuLXhkZbfIIIfX7w98H3fhO8SJynnL22LdSqKy+z7u/XPI004WPfy0lTXAh4g3RO7Xy9ti3eS9/SHcvQ/5A7pDA99XUQAvJLq4We3lbTFtUtVtx93r3nXN/XVDhoJ48e8JXEq8SbLay9ugb/IevhR3j4O+7zOGDIZ48ZcD7yC+nZFJL2+Duvl7dz9uFHY5DgW5vy4DfRM8Eve9/vTmyVve+n2T9+rPccuaemSiy1CQ7+GuBd4DTOJunty3l7d+3mRf3RTu3l2LQ34fNmNGyM7cxwM/I95YebJy3vptk/fkz4AnEJEHJjIOCnJu0mrg7bj+EIt7mma1l7eF3uR9uB93j67GIc+tyzgsyCfk/YAvE2+4Lrl/L2/zv6X33ZeJk4ghq7qMI4QcyR3DzWW6kXjD5dfT8jZfm7zXbgReQHwPNo/AZswq5JNzE/Be8oTlvM3Plk4gfi/x6yaQVV3GHEI+RR+CWxdX3piZ+PI2W1t6P30Sd895ZEWXMS8wwEi13waeBHwHfaPmEd28He6WegyX4u4xP21qhEx2GQsA+fL1KO5zOz8l3qjT5IGNvB381kX30/0MeB7u3vLIL/xnLCjkoAbAMuC11OfvZVc3b7221CP4KfBq4ithkAclMvoQkviOA14GXIO+ubtk8stb80cqfom7Z+SARH7RP6OvIfv3ADYCLyYuJOS3aTLxDeNWUp/K9AvcdKcNROR+uoyBQoGeLjCG64/5HnrJyEx8w7GlRDeF+/Lw84hz6cDdM1nVZQws0td8WsCFwGeJr6tZsqu7WLfUdd1fXfsL0Q/E/DrYPCBX8PyiwDUAjwcDvwc8E+f6evjGkRvB4MFfO9BK7Q7g48DncFOYEGHkPZGRsajgP0MliWwT8CLgx8AEdTcoT23p/81PKZEqfaK6pi9EP9Ca7oGMeUCu8IWDn87SFccK4Ddxiu9hwD3EuQ7589z9CP82hJwfdy3wLeBjwLfRCq5FJMWMeUYmvP6Avw6yERwP/A7wKODhwLHinAyXr+H8olfd3wV8E/ga8G/AbQ3hMsktMHJj6T94Fdep/ja4BVgejPu446PQM+8hqsQ8OXX24bsWoP6S/jTwVeALuH65q8S5NlH9ZfQJcuPoX/hpLdPi2BhwIo70noj7DtpRaDd3muguZ/f38CBf2h9Jju8EfgR8HqfmbsEtBQCxb86PuGf0GTLh9T88eUml4bEZt+jQQ4H7AqcCS8V5r/wMecR3JsjBB9BKbhy4DrgC1x/3ddy36CS8ss59c32O3AAGC+n1ko1rPY70HgCcV+1vohlpoxyW++Bgy/1r4CfAZcAPqt+7ZoiXSW5AMCw3+mKFV3+G2OcH7gMGm4AzgPvjSPB8YE2PdLx6tGg1OKj3RzplRNZTE7bj3NQfAD/Evf98O26SsEcbXU8ZA4hBvaEz6pB9dp3k3AiwCrgXbm2O+wL3AY4BVqLdYA8/t6wXCS70vWPFb0puLZrtGwf2ANtwLurluHlyPwd2oftLIU41yYMPiwQLfdNmzA0kMc3UUO8BnI1TgmcAp+Cmv6xDT4Npgpw/aHrsz3SsCU3KyfbYP9BnzbcBW3Cu6A3Ar3DK7Re4eXK94B8ask8vY5EgE97wICWlpgY9gusL3Fj9HocbGNmI+5LHRhwZHsPCf4iygyO1rTj3807c61s34frgtlR/30ld8foHQi8yzVikyIQ33PD9Wl7VpC6dRwvXL7i8+l2BU4Abcf2Cx1TbqurvVTg3eTmwBDedZrRKR75SZXFk1MVN7ZjG9Zv5bQ+uf203jty2VX/fgSO6vTg3dW8VXqpOCT+1xPe/Zfd0SPH/AXkSr26wuXMoAAAAAElFTkSuQmCC'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Solana\r\n","import React from 'react'\r\n\r\nconst Ethereum = ({ width = 27, height = 27, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 27 27'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <mask\r\n id='mask0_214_508'\r\n style={{ maskType: 'alpha' }}\r\n maskUnits='userSpaceOnUse'\r\n x='0'\r\n y='0'\r\n width='27'\r\n height='27'\r\n >\r\n <circle cx='13.0357' cy='13.0357' r='13.0357' fill='#D9D9D9' />\r\n </mask>\r\n <g mask='url(#mask0_214_508)'></g>\r\n <g clipPath='url(#clip0_214_508)'>\r\n <path\r\n d='M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26Z'\r\n fill='#8247E5'\r\n />\r\n <path\r\n d='M17.3028 10.2187C16.991 10.0373 16.5856 10.0373 16.2426 10.2187L13.8105 11.6094L12.1579 12.5164L9.72584 13.9071C9.41401 14.0885 9.00868 14.0885 8.66568 13.9071L6.73246 12.8187C6.42066 12.6373 6.2024 12.3048 6.2024 11.9419V9.79545C6.2024 9.43266 6.38948 9.1001 6.73246 8.91871L8.6345 7.86055C8.94629 7.67916 9.35165 7.67916 9.69466 7.86055L11.5967 8.91871C11.9085 9.1001 12.1267 9.43266 12.1267 9.79545V11.1861L13.7793 10.2489V8.85823C13.7793 8.49545 13.5922 8.16288 13.2493 7.98149L9.72584 5.98614C9.41401 5.80475 9.00868 5.80475 8.66568 5.98614L5.07988 7.98149C4.73688 8.16288 4.5498 8.49545 4.5498 8.85823V12.8792C4.5498 13.2419 4.73688 13.5745 5.07988 13.7559L8.66568 15.7512C8.9775 15.9327 9.38283 15.9327 9.72584 15.7512L12.1579 14.3908L13.8105 13.4536L16.2426 12.0931C16.5544 11.9117 16.9598 11.9117 17.3028 12.0931L19.2048 13.1512C19.5166 13.3327 19.7349 13.6652 19.7349 14.028V16.1745C19.7349 16.5373 19.5478 16.8699 19.2048 17.0512L17.3028 18.1396C16.991 18.321 16.5856 18.321 16.2426 18.1396L14.3406 17.0815C14.0288 16.9001 13.8105 16.5675 13.8105 16.2048V14.8141L12.1579 15.7512V17.1419C12.1579 17.5048 12.345 17.8373 12.688 18.0187L16.2738 20.0141C16.5856 20.1954 16.991 20.1954 17.3339 20.0141L20.9197 18.0187C21.2315 17.8373 21.4498 17.5048 21.4498 17.1419V13.121C21.4498 12.7582 21.2627 12.4257 20.9197 12.2443L17.3028 10.2187Z'\r\n fill='white'\r\n />\r\n </g>\r\n <defs>\r\n <clipPath id='clip0_214_508'>\r\n <rect width='26' height='26' fill='white' />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Ethereum\r\n","import React from 'react'\r\n\r\nconst Avalanche = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect x='0' y='0' width='37' height='37' fill='url(#pattern2)' />\r\n <defs>\r\n <pattern\r\n id='pattern2'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_494' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_494'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAOZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAhAAAAZgEyAAIAAAAUAAAAiIdpAAQAAAABAAAAnAAAAAAAAABIAAAAAQAAAEgAAAABQWRvYmUgUGhvdG9zaG9wIDIxLjAgKE1hY2ludG9zaCkAADIwMjA6MDY6MjEgMTI6MTc6MjUAAASQBAACAAAAFAAAANKgAQADAAAAAQABAACgAgAEAAAAAQAAAQCgAwAEAAAAAQAAAQAAAAAAMjAyMDowNjoyMSAxMjoxNDoyNQAyPGR9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKn2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCAyMS4wIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDIwLTA2LTIxVDEyOjE0OjI1LTA0OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAyMC0wNi0yMVQxMjoxNzoyNS0wNDowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGVhNTMzNjMtYzY2OS00YWVjLWE5ZmUtNzQ5YzUzMmFjZGZiPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjAtMDYtMjFUMTI6MTc6MjUtMDQ6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6ZTZmNGEzOTctM2ZkNC00NDEzLWE2YTMtOWIzYzExNTMxOTFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOkQwMTE4NzY2OEUxMjExRUE5MEFDQkVFRjMyM0M3OUNFPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZDQ3ZTdiMy02YjIyLTFkNDAtOTc2MC02MDFjYjljYmY4YzY8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6NUYwRTAyRDU4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6NUYwRTAyRDY4RTExMTFFQTkwQUNCRUVGMzIzQzc5Q0U8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgIDwv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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Avalanche\r\n","import React from 'react'\r\n\r\nconst Arbitrum = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n width='124.983'\r\n height='140.32'\r\n viewBox='0 0 124.983 140.32'\r\n >\r\n <g id='symbol' transform='translate(-177.491 -53.193)' {...rest}>\r\n <path\r\n id='Path_153'\r\n data-name='Path 153'\r\n d='M266.978,128.665l10.305-17.485,27.776,43.262.013,8.3-.091-57.131a4.3,4.3,0,0,0-1.99-3.428L252.984,73.42a4.408,4.408,0,0,0-3.821.018,4.352,4.352,0,0,0-.448.259l-.174.11L200,101.935l-.189.085a4.417,4.417,0,0,0-.717.418,4.29,4.29,0,0,0-1.729,2.731,4.419,4.419,0,0,0-.062.505l.076,46.556,25.872-40.1c3.257-5.317,10.354-7.03,16.942-6.937l7.732.2-45.56,73.064,5.371,3.092,46.106-76.083,20.379-.074-45.987,78L247.4,194.422l2.29,1.317a4.4,4.4,0,0,0,3.087.061l50.71-29.387-9.7,5.618Zm3.932,56.627-19.356-30.379,11.815-20.049,25.42,40.066Z'\r\n transform='translate(-11.186 -11.178)'\r\n fill='#2d374b'\r\n />\r\n <path\r\n id='Path_154'\r\n data-name='Path 154'\r\n d='M321.883,235.122,341.239,265.5l17.88-10.362L333.7,215.073Z'\r\n transform='translate(-81.515 -91.387)'\r\n fill='#28a0f0'\r\n />\r\n <path\r\n id='Path_155'\r\n data-name='Path 155'\r\n d='M395.4,212.248l-.013-8.3-27.776-43.262L357.3,178.169l26.814,43.366,9.7-5.618a4.3,4.3,0,0,0,1.587-3.129Z'\r\n transform='translate(-101.511 -60.683)'\r\n fill='#28a0f0'\r\n />\r\n <path\r\n id='Path_156'\r\n data-name='Path 156'\r\n d='M177.491,212.312l13.691,7.889,45.56-73.064-7.732-.2c-6.588-.093-13.685,1.619-16.942,6.937l-25.872,40.1-8.7,13.373v4.969Z'\r\n transform='translate(0 -52.917)'\r\n fill='#fff'\r\n />\r\n <path\r\n id='Path_157'\r\n data-name='Path 157'\r\n d='M287.75,147.406l-20.378.074-46.106,76.083,16.115,9.279,4.382-7.433Z'\r\n transform='translate(-24.713 -53.187)'\r\n fill='#fff'\r\n />\r\n <path\r\n id='Path_158'\r\n data-name='Path 158'\r\n d='M302.474,94.114a12.98,12.98,0,0,0-6.093-10.435L245.719,54.545a13.178,13.178,0,0,0-11.624,0c-.423.213-49.268,28.542-49.268,28.542a13.016,13.016,0,0,0-1.94,1.148,12.881,12.881,0,0,0-5.4,9.854v60.338l8.7-13.373L186.12,94.5a4.325,4.325,0,0,1,1.791-3.236c.23-.165,49.909-28.921,50.067-29a4.408,4.408,0,0,1,3.821-.018l50.007,28.765a4.3,4.3,0,0,1,1.99,3.428v57.672a4.2,4.2,0,0,1-1.495,3.129l-9.7,5.618-5,2.9-17.88,10.362-18.133,10.509a4.395,4.395,0,0,1-3.087-.061l-21.453-12.339-4.382,7.432,19.28,11.1c.638.362,1.206.684,1.672.946.722.4,1.214.675,1.387.759a12.528,12.528,0,0,0,5.118,1.053,12.89,12.89,0,0,0,4.72-.888l52.667-30.5a12.876,12.876,0,0,0,4.962-9.7Z'\r\n transform='translate(-0.001)'\r\n fill='#96bedc'\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Arbitrum\r\n","import React from 'react'\r\n\r\nconst Optimism = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"40.000000pt\" height=\"40.000000pt\" viewBox=\"0 0 40.000000 40.000000\"\r\n preserveAspectRatio=\"xMidYMid meet\" {...rest}>\r\n\r\n <g transform=\"translate(0.000000,40.000000) scale(0.100000,-0.100000)\"\r\n fill=\"#000000\" stroke=\"none\">\r\n <path d=\"M109 372 c-43 -22 -59 -38 -81 -81 -36 -68 -36 -114 0 -182 22 -43\r\n 38 -59 81 -81 68 -36 114 -36 182 0 43 22 59 38 81 81 36 68 36 114 0 182 -22\r\n 43 -38 59 -81 81 -31 16 -69 28 -91 28 -22 0 -60 -12 -91 -28z m79 -124 c16\r\n -16 15 -60 -1 -82 -9 -12 -23 -17 -42 -14 -26 3 -30 8 -33 36 -5 54 44 92 76\r\n 60z m96 -1 c26 -19 13 -54 -24 -62 -17 -4 -30 -13 -30 -21 0 -8 -6 -14 -14\r\n -14 -10 0 -12 9 -5 43 4 23 8 48 9 55 0 16 41 16 64 -1z\"/>\r\n <path d=\"M140 219 c-14 -24 -7 -49 14 -49 15 0 28 34 19 56 -7 20 -21 17 -33\r\n -7z\"/>\r\n <path d=\"M247 233 c-12 -11 -8 -23 8 -23 8 0 15 7 15 15 0 16 -12 20 -23 8z\"/>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Optimism\r\n","import React from 'react'\r\n\r\nconst USDT = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 37 37'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <rect width='37' height='37' fill='url(#pattern5)' />\r\n <defs>\r\n <pattern\r\n id='pattern5'\r\n patternContentUnits='objectBoundingBox'\r\n width='1'\r\n height='1'\r\n >\r\n <use href='#image0_214_312' transform='scale(0.00390625)' />\r\n </pattern>\r\n <image\r\n id='image0_214_312'\r\n width='256'\r\n height='256'\r\n href='data:image/png;base64,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'\r\n />\r\n </defs>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default USDT\r\n","import React from 'react'\r\n\r\nconst Copy = ({ width = 20, height = 20, fill = '#979797', ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 330 330'\r\n xmlSpace='preserve'\r\n xmlns='http://www.w3.org/2000/svg'\r\n fill={fill}\r\n {...rest}\r\n >\r\n <g>\r\n <path\r\n d='M35,270h45v45c0,8.284,6.716,15,15,15h200c8.284,0,15-6.716,15-15V75c0-8.284-6.716-15-15-15h-45V15\r\n c0-8.284-6.716-15-15-15H35c-8.284,0-15,6.716-15,15v240C20,263.284,26.716,270,35,270z M280,300H110V90h170V300z M50,30h170v30H95\r\n c-8.284,0-15,6.716-15,15v165H50V30z'\r\n />\r\n <path d='M155,120c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15s-6.716-15-15-15H155z' />\r\n <path d='M235,180h-80c-8.284,0-15,6.716-15,15s6.716,15,15,15h80c8.284,0,15-6.716,15-15S243.284,180,235,180z' />\r\n <path\r\n d='M235,240h-80c-8.284,0-15,6.716-15,15c0,8.284,6.716,15,15,15h80c8.284,0,15-6.716,15-15C250,246.716,243.284,240,235,240z\r\n '\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Copy\r\n","import React from 'react'\r\n\r\nconst Bank = ({ width = 32, height = 32, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 256 256'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <defs>\r\n </defs>\r\n <g style={{\r\n stroke: 'none',\r\n strokeWidth: 0,\r\n strokeDasharray: 'none',\r\n strokeLinecap: 'butt',\r\n strokeLinejoin: 'miter', strokeMiterlimit: 10, fill: 'none', fillRule: 'nonzero', opacity: 1\r\n }} transform='translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)'\r\n >\r\n <path d=\"M 84.668 38.004 v -6.27 H 90 V 20 L 45 3.034 L 0 20 v 11.734 h 5.332 v 6.27 h 4.818 v 30.892 H 5.332 v 6.271 H 0 v 11.8 h 90 v -11.8 h -5.332 v -6.271 H 79.85 V 38.004 H 84.668 z M 81.668 35.004 H 66.332 v -3.27 h 15.336 V 35.004 z M 63.332 68.896 v 6.271 h -7.664 v -6.271 H 50.85 V 38.004 h 4.818 v -6.27 h 7.664 v 6.27 h 4.818 v 30.892 H 63.332 z M 26.668 38.004 v -6.27 h 7.664 v 6.27 h 4.818 v 30.892 h -4.818 v 6.271 h -7.664 v -6.271 H 21.85 V 38.004 H 26.668 z M 42.15 68.896 V 38.004 h 5.7 v 30.892 H 42.15 z M 37.332 35.004 v -3.27 h 15.336 v 3.27 H 37.332 z M 37.332 71.896 h 15.336 v 3.271 H 37.332 V 71.896 z M 3 22.075 L 45 6.24 l 42 15.835 v 6.659 H 3 V 22.075 z M 8.332 31.734 h 15.336 v 3.27 H 8.332 V 31.734 z M 13.15 38.004 h 5.7 v 30.892 h -5.7 V 38.004 z M 8.332 71.896 h 15.336 v 3.271 H 8.332 V 71.896 z M 87 83.966 H 3 v -5.8 h 84 V 83.966 z M 81.668 75.166 H 66.332 v -3.271 h 15.336 V 75.166 z M 76.85 68.896 H 71.15 V 38.004 h 5.699 V 68.896 z\"\r\n style={{ stroke: 'none', strokeWidth: 1, strokeDasharray: 'none', strokeLinecap: 'butt', strokeLinejoin: 'miter', strokeMiterlimit: 10, fill: 'rgb(0,0,0)', fillRule: 'nonzero', opacity: 1, }} transform=\" matrix(1 0 0 1 0 0) \" strokeLinecap=\"round\" />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Bank\r\n","import React from 'react'\r\n\r\nconst BNB = ({ width = 59, height = 58, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox=\"0 0 59 58\"\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <defs>\r\n <clipPath id=\"clip-path\">\r\n <rect id=\"Rectangle_23\" data-name=\"Rectangle 23\" width=\"59\" height=\"58\" transform=\"translate(3362.627 192.855)\" fill=\"#f0b90b\" />\r\n </clipPath>\r\n </defs>\r\n <g id=\"bnb\" transform=\"translate(-3602 -272)\">\r\n <g id=\"bnb-2\" data-name=\"bnb\" transform=\"translate(239.373 79.145)\" clipPath=\"url(#clip-path)\">\r\n <g id=\"chain-smart-h\" transform=\"translate(3362.962 192.954)\">\r\n <path id=\"Path_87\" data-name=\"Path 87\" d=\"M81.839,29.014H71.154V6.54H81.609c4.605,0,7.415,2.3,7.415,5.8v.046a5.171,5.171,0,0,1-2.947,4.836c2.579,1.013,4.191,2.487,4.191,5.527V22.8C90.267,26.988,86.951,29.014,81.839,29.014ZM84.1,13.172c0-1.474-1.151-2.3-3.224-2.3H75.99v4.744h4.559c2.165,0,3.546-.691,3.546-2.395ZM85.339,22.2c0-1.52-1.105-2.441-3.638-2.441H75.99v4.928h5.895c2.165,0,3.5-.783,3.5-2.441V22.2ZM95.7,29.014V6.54h4.928V29.014Zm27.31,0L112.143,14.737V29.014h-4.882V6.54h4.559L122.367,20.4V6.54h4.882V29.014Zm26.435,0-2.072-5.02h-9.487l-2.072,5.02h-5.02L140.42,6.356h4.559l9.625,22.659Zm-6.816-16.672-2.994,7.277h5.987Zm31.363,16.672L163.125,14.737V29.014h-4.882V6.54H162.8L173.349,20.4V6.54h4.882V29.014Zm20.494.414a11.328,11.328,0,0,1-11.514-11.56v-.046A11.42,11.42,0,0,1,194.719,6.217a11.626,11.626,0,0,1,8.842,3.454L200.43,13.31a8.357,8.357,0,0,0-5.757-2.533c-3.776,0-6.54,3.132-6.54,7v.046c0,3.869,2.671,7.046,6.54,7.046,2.579,0,4.145-1.013,5.895-2.625l3.132,3.178A11.5,11.5,0,0,1,194.488,29.429Zm13.218-.414V6.54h16.948v4.421h-12.02V15.52h10.593v4.421H212.634v4.744h12.2v4.421H207.706ZM6.54,22.475,0,29.014l6.54,6.54,6.54-6.54Zm22.475-9.349L40.252,24.363l6.54-6.54L29.014,0,11.237,17.777l6.54,6.54Zm22.475,9.349-6.54,6.54,6.54,6.54,6.54-6.54ZM29.014,44.949,17.777,33.712l-6.54,6.54L29.014,58.029,46.791,40.252l-6.54-6.54Zm0-9.4,6.54-6.54-6.54-6.54-6.54,6.54Z\" fill=\"#f0b90b\" />\r\n <path id=\"Path_88\" data-name=\"Path 88\" d=\"M154.609,82.187c0-1.039.928-1.857,2.52-1.857a7.028,7.028,0,0,1,4.2,1.592l1.459-2.056a8.577,8.577,0,0,0-5.615-1.945c-3.073,0-5.283,1.813-5.283,4.51,0,2.874,1.857,3.846,5.151,4.642,2.874.663,3.493,1.26,3.493,2.387,0,1.194-1.061,1.967-2.741,1.967a7.126,7.126,0,0,1-4.885-2.012l-1.636,1.945a9.532,9.532,0,0,0,6.455,2.476c3.25,0,5.527-1.724,5.527-4.642,0-2.586-1.7-3.758-4.974-4.554C155.316,83.933,154.609,83.4,154.609,82.187Z\" transform=\"translate(-81.604 -42.034)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_89\" data-name=\"Path 89\" d=\"M195.76,82.777v11.1h2.719V78.4h-2.9l-4.709,7.317L186.166,78.4h-2.9V93.874h2.675V82.821l4.841,7.251h.088Z\" transform=\"translate(-98.866 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_90\" data-name=\"Path 90\" d=\"M230.431,78.16h-2.52L221.1,93.745h2.785l1.592-3.736H232.8l1.57,3.736h2.874ZM231.8,87.6h-5.328l2.653-6.19Z\" transform=\"translate(-119.274 -42.164)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_91\" data-name=\"Path 91\" d=\"M274.074,93.874,269.9,88.016a4.634,4.634,0,0,0,3.692-4.709c0-3.029-2.189-4.908-5.748-4.908h-6.9V93.874h2.719V88.481h3.4l3.8,5.394Zm-3.25-10.412c0,1.592-1.238,2.609-3.183,2.609h-3.979V80.876h3.957C269.631,80.876,270.824,81.76,270.824,83.463Z\" transform=\"translate(-140.767 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_92\" data-name=\"Path 92\" d=\"M299.779,80.92h4.908V78.4H292.13v2.52h4.908V93.874h2.741Z\" transform=\"translate(-157.591 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_93\" data-name=\"Path 93\" d=\"M350.786,91.088l-1.746-1.769a6.066,6.066,0,0,1-4.443,2.012,5.52,5.52,0,0,1,0-11.009,6.154,6.154,0,0,1,4.333,1.923l1.746-2.012a8.066,8.066,0,0,0-6.057-2.41,8,8,0,0,0-.111,16A7.984,7.984,0,0,0,350.786,91.088Z\" transform=\"translate(-181.601 -41.983)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_94\" data-name=\"Path 94\" d=\"M382.706,87.353v6.521h2.719V78.4h-2.719v6.433h-7.383V78.4H372.6V93.874h2.719V87.353Z\" transform=\"translate(-201.002 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_95\" data-name=\"Path 95\" d=\"M414.561,78.16h-2.52l-6.809,15.585h2.785l1.592-3.736h7.317l1.57,3.736h2.874Zm1.371,9.439H410.6l2.653-6.19Z\" transform=\"translate(-218.604 -42.164)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_96\" data-name=\"Path 96\" d=\"M445.41,78.4V93.874h2.719V78.4Z\" transform=\"translate(-240.278 -42.293)\" fill=\"#f0b90b\" />\r\n <path id=\"Path_97\" data-name=\"Path 97\" d=\"M470.158,89.1l-8.29-10.7h-2.52V93.874h2.675V82.866l8.533,11.009h2.277V78.4h-2.675Z\" transform=\"translate(-247.797 -42.293)\" fill=\"#f0b90b\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default BNB\r\n","import React from 'react'\r\n\r\nconst KEUR = ({ width = 32, height = 32, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 32 32'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <g fill='none' fillRule='evenodd'>\r\n <circle cx='16' cy='16' fill='#0f8ff8' r='16' />\r\n <path\r\n d='M8 19.004L8.81 17h.857a16.279 16.279 0 01-.034-1.03c0-.448.019-.864.056-1.25H8l.81-2.003h1.274C11.27 8.906 13.944 7 18.103 7c1.367 0 2.666.177 3.897.532v2.524a8.92 8.92 0 00-3.683-.776c-2.493 0-4.096 1.146-4.81 3.438h7.423l-.81 2.003h-7.097a6.938 6.938 0 00-.056.995c0 .479.015.907.045 1.285h6.183l-.8 2.003H13.44c.533 1.389 1.183 2.355 1.949 2.9.765.544 1.858.816 3.277.816 1.014 0 2.125-.247 3.334-.741v2.373c-1.149.432-2.515.648-4.1.648-4.167 0-6.803-1.999-7.906-5.996z'\r\n fill='#ffffff'\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default KEUR\r\n","import React from 'react'\r\n\r\nconst Celo = ({ width = 37, height = 37, ...rest }) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n viewBox='0 0 610 610'\r\n xmlns='http://www.w3.org/2000/svg'\r\n {...rest}\r\n >\r\n <circle cx='305' cy='305' r='305' fill='#FF060A' />\r\n <path\r\n d='M505.4 214.7c-17.3-12.1-35.8-25-53.9-37.8-.4-.3-.8-.6-1.3-.9-2-1.5-4.3-3.1-7.1-4l-.2-.1c-48.4-11.7-97.6-23.7-145.2-35.3-43.2-10.5-86.3-21-129.5-31.5-1.1-.3-2.2-.6-3.4-.9-3.9-1.1-8.4-2.3-13.2-1.7-1.4.2-2.6.7-3.7 1.4l-1.2 1c-1.9 1.8-2.9 4.1-3.4 5.4l-.3.8v4.6l.2.7c27.3 76.5 55.3 154.1 82.3 229.2 20.8 57.8 42.4 117.7 63.5 176.5 1.3 4 5 6.6 9.6 7h1c4.3 0 8.1-2.1 10-5.5l79.2-115.5c19.3-28.1 38.6-56.3 57.9-84.4 7.9-11.5 15.8-23.1 23.7-34.6 13-19 26.4-38.6 39.7-57.7l.7-1v-1.2c.3-3.5.4-10.7-5.4-14.5m-92.8 42.1c-18.6 9.7-37.6 19.7-56.7 29.6 11.1-11.9 22.3-23.9 33.4-35.8 13.9-15 28.4-30.5 42.6-45.7l.3-.3c1.2-1.6 2.7-3.1 4.3-4.7 1.1-1.1 2.3-2.2 3.4-3.5 7.4 5.1 14.9 10.3 22.1 15.4 5.2 3.7 10.5 7.4 15.9 11.1-22 11.2-44 22.7-65.3 33.9m-47.8-4.8c-14.3 15.5-29.1 31.4-43.8 47.1-28.5-34.6-57.6-69.7-85.8-103.6-12.8-15.4-25.7-30.9-38.5-46.3l-.1-.1c-2.9-3.3-5.7-6.9-8.5-10.3-1.8-2.3-3.7-4.5-5.6-6.8 11.6 3 23.3 5.8 34.8 8.5 10.1 2.4 20.6 4.9 30.9 7.5 58 14.1 116.1 28.2 174.1 42.3-19.3 20.6-38.7 41.5-57.5 61.7m-50.3 194.9c1.1-10.5 2.3-21.3 3.3-31.9.9-8.5 1.8-17.2 2.7-25.5 1.4-13.3 2.9-27.1 4.1-40.6l.3-2.4c1-8.6 2-17.5 2.6-26.4 1.1-.6 2.3-1.2 3.6-1.7 1.5-.7 3-1.3 4.5-2.2 23.1-12.1 46.2-24.2 69.4-36.2 23.1-12 46.8-24.4 70.3-36.7-21.4 31-42.9 62.3-63.7 92.8-17.9 26.1-36.3 53-54.6 79.5-7.2 10.6-14.7 21.4-21.8 31.8-8 11.6-16.2 23.5-24.2 35.4 1-12 2.2-24.1 3.5-35.9M175.1 155.6c-1.3-3.6-2.7-7.3-3.9-10.8 27 32.6 54.2 65.4 80.7 97.2 13.7 16.5 27.4 32.9 41.1 49.5 2.7 3.1 5.4 6.4 8 9.6 3.4 4.1 6.8 8.4 10.5 12.5-1.2 10.3-2.2 20.7-3.3 30.7-.7 7-1.4 14-2.2 21.1v.1c-.3 4.5-.9 9-1.4 13.4-.7 6.1-2.3 19.9-2.3 19.9l-.1.7c-1.8 20.2-4 40.6-6.1 60.4-.9 8.2-1.7 16.6-2.6 25-.5-1.5-1.1-3-1.6-4.4-1.5-4-3-8.2-4.4-12.3l-10.7-29.7C242.9 344.2 209 250 175.1 155.6'\r\n fill='#ffffff'\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Celo\r\n","export const SOLANA_USDK_ADDRESS =\r\n '9YSFWfU9Ram6mAo2QP9zsTnA8yFkkkFGEs3kGgjtQKvp'\r\nexport const ETHEREUM_USDK_ADDRESS =\r\n '0x5FF59Bf2277A1e6bA9bB8A38Ea3F9ABfd3d9345a'\r\nexport const POLYGON_USDK_ADDRESS = '0x95A94Fc761F98fcC60DA07C55F8ECDDD8B381CfF'\r\nexport const AVAX_USDK_ADDRESS = '0x5d8598Ce65f15f14c58aD3a4CD285223c8e76a2E'\r\nexport const BSC_USDK_ADDRESS = '0x3eb36be2c3FD244139756F681420637a2a9464e3'\r\nexport const OPTIMISM_USDK_ADDRESS =\r\n '0x2cf79df2879902a2fc06329b1760e0f2ad9a3a47'\r\nexport const ARBITRUM_USDK_ADDRESS =\r\n '0x2cf79df2879902a2fc06329b1760e0f2ad9a3a47'\r\nexport const POLYGON_ZKEVM_ADDRESS =\r\n '0x3eb36be2c3FD244139756F681420637a2a9464e3'\r\n\r\nexport const ETHEREUM_KEUR_ADDRESS =\r\n '0xAFc823fcbe5945f5f38f144314663c87dA713E06'\r\nexport const POLYGON_KEUR_ADDRESS = '0x7D4325eE3A80778Af01498ca32E0C30e233ffB0d'\r\nexport const TRON_USDK_ADDRESS = 'TEuRmCALTUY2syY1EE6mMYnyfmNfFfMpYz'\r\nexport const TRON_USDK_OWNER_ADDRESS = 'TBVn4bsBN4DhtZ7D3vEVpAyqkvdFn7zmpU'\r\n","import { clusterApiUrl } from '@solana/web3.js'\r\nimport {\r\n EthereumIcon,\r\n PolygonIcon,\r\n AvalancheIcon,\r\n USDTIcon,\r\n SolanaIcon,\r\n BSCIcon,\r\n ArbitrumIcon,\r\n OptimismIcon,\r\n BankIcon,\r\n KEURICON,\r\n TronIcon\r\n} from '../assets/icons'\r\nimport { POLYGON_KEUR_ADDRESS, ETHEREUM_KEUR_ADDRESS } from './config'\r\n\r\nexport enum ChainName {\r\n ETHEREUM = 'ETH',\r\n POLYGON = 'POL',\r\n AVALANCHE = 'AVX',\r\n SOLANA = 'SOL',\r\n BSC = 'BSC',\r\n ARBITRUM = 'ARB',\r\n OPTIMISM = 'OPT',\r\n POLYGON_ZKEVM = 'ZKE',\r\n TRON = 'TRX',\r\n FIAT = 'FIAT'\r\n}\r\n\r\nexport enum SupportedChainId {\r\n ETHEREUM = 11155111,\r\n POLYGON = 80002,\r\n AVALANCHE = 43113,\r\n BSC = 97,\r\n ARBITRUM = 421614,\r\n OPTIMISM = 11155420,\r\n POLYGON_ZKEM = 2442\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_IDS: { [chainName: string]: SupportedChainId } = {\r\n [ChainName.ETHEREUM]: SupportedChainId.ETHEREUM,\r\n [ChainName.POLYGON]: SupportedChainId.POLYGON,\r\n [ChainName.AVALANCHE]: SupportedChainId.AVALANCHE,\r\n [ChainName.BSC]: SupportedChainId.BSC,\r\n [ChainName.OPTIMISM]: SupportedChainId.OPTIMISM,\r\n [ChainName.ARBITRUM]: SupportedChainId.ARBITRUM,\r\n [ChainName.POLYGON_ZKEVM]: SupportedChainId.POLYGON_ZKEM\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_STRING: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'Ethereum',\r\n [ChainName.POLYGON]: 'Polygon',\r\n [ChainName.AVALANCHE]: 'Avalanche',\r\n [ChainName.SOLANA]: 'Solana',\r\n [ChainName.BSC]: 'BNB Smart Chain',\r\n [ChainName.OPTIMISM]: 'Optimism',\r\n [ChainName.ARBITRUM]: 'Arbitrum',\r\n [ChainName.POLYGON_ZKEVM]: 'Polygon zkEVM',\r\n [ChainName.TRON]: 'Tron',\r\n [ChainName.FIAT]: 'Pay with FIAT'\r\n}\r\n\r\nexport const CHAIN_STRING_TO_NAME: { [chainName: string]: ChainName } = {\r\n ['Ethereum']: ChainName.ETHEREUM,\r\n ['Polygon']: ChainName.POLYGON,\r\n ['Avalanche']: ChainName.AVALANCHE,\r\n ['Solana']: ChainName.SOLANA,\r\n ['Binance']: ChainName.BSC,\r\n ['Optimism']: ChainName.OPTIMISM,\r\n ['Arbitrum']: ChainName.ARBITRUM,\r\n ['Polygon zkEVM']: ChainName.POLYGON_ZKEVM,\r\n ['Tron']: ChainName.TRON,\r\n ['Pay with FIAT']: ChainName.FIAT\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_EXPLORER: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'sepolia.etherscan.io',\r\n [ChainName.POLYGON]: 'www.oklink.com/amoy',\r\n [ChainName.AVALANCHE]: 'testnet.snowtrace.io',\r\n [ChainName.SOLANA]: 'solscan.io',\r\n [ChainName.BSC]: 'testnet.bscscan.com',\r\n [ChainName.OPTIMISM]: 'sepolia-optimism.etherscan.io',\r\n [ChainName.ARBITRUM]: 'sepolia.arbiscan.io',\r\n [ChainName.POLYGON_ZKEVM]: 'cardona-zkevm.polygonscan.com',\r\n [ChainName.TRON]: 'nile.tronscan.org/#'\r\n}\r\n\r\nexport const CHAIN_NAMES_TO_GECKO_ID: { [chainName: string]: string } = {\r\n [ChainName.ETHEREUM]: 'ethereum',\r\n [ChainName.POLYGON]: 'matic-network',\r\n [ChainName.AVALANCHE]: 'avalanche-2',\r\n [ChainName.SOLANA]: 'solana',\r\n [ChainName.BSC]: 'binancecoin',\r\n [ChainName.OPTIMISM]: 'ethereum',\r\n [ChainName.ARBITRUM]: 'ethereum',\r\n [ChainName.POLYGON_ZKEVM]: 'matic-network',\r\n [ChainName.TRON]: 'tron'\r\n}\r\n\r\nexport const CHAIN_IDS_TO_NAMES: { [chainId: number]: string } = {\r\n [SupportedChainId.ETHEREUM]: ChainName.ETHEREUM,\r\n [SupportedChainId.POLYGON]: ChainName.POLYGON,\r\n [SupportedChainId.AVALANCHE]: ChainName.AVALANCHE,\r\n [SupportedChainId.BSC]: ChainName.BSC,\r\n [SupportedChainId.OPTIMISM]: ChainName.OPTIMISM,\r\n [SupportedChainId.ARBITRUM]: ChainName.ARBITRUM,\r\n [SupportedChainId.POLYGON_ZKEM]: ChainName.POLYGON_ZKEVM\r\n}\r\n\r\nexport const networkOptions = [\r\n {\r\n id: ChainName.ARBITRUM,\r\n label: 'Arbitrum',\r\n icon: ArbitrumIcon\r\n },\r\n {\r\n id: ChainName.AVALANCHE,\r\n label: 'Avalanche',\r\n icon: AvalancheIcon\r\n },\r\n {\r\n id: ChainName.BSC,\r\n label: 'Binance',\r\n icon: BSCIcon\r\n },\r\n {\r\n id: ChainName.ETHEREUM,\r\n label: 'Ethereum',\r\n icon: EthereumIcon\r\n },\r\n {\r\n id: ChainName.FIAT,\r\n label: 'Pay with FIAT',\r\n icon: BankIcon\r\n },\r\n {\r\n id: ChainName.OPTIMISM,\r\n label: 'Optimism',\r\n icon: OptimismIcon\r\n },\r\n {\r\n id: ChainName.POLYGON,\r\n label: 'Polygon',\r\n icon: PolygonIcon\r\n },\r\n {\r\n id: ChainName.POLYGON_ZKEVM,\r\n label: 'Polygon zkEVM',\r\n icon: PolygonIcon\r\n },\r\n {\r\n id: ChainName.SOLANA,\r\n label: 'Solana',\r\n icon: SolanaIcon\r\n },\r\n {\r\n id: ChainName.TRON,\r\n label: 'Tron',\r\n icon: TronIcon\r\n }\r\n]\r\nexport const getNetworkOption = (id: string) => {\r\n const index = networkOptions.findIndex((item) => item.id === id)\r\n if (index < 0) return\r\n return networkOptions[index]\r\n}\r\n\r\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet'\r\nexport const CLUSTER: Cluster = 'devnet'\r\nexport const SOLANA_HOST = clusterApiUrl(CLUSTER)\r\nexport const isEVMChain = (chainId: string) =>\r\n chainId === ChainName.ETHEREUM ||\r\n chainId === ChainName.POLYGON ||\r\n chainId === ChainName.AVALANCHE ||\r\n chainId === ChainName.BSC ||\r\n chainId === ChainName.OPTIMISM ||\r\n chainId === ChainName.ARBITRUM ||\r\n chainId === ChainName.POLYGON_ZKEVM\r\n\r\ntype CoinOptions = {\r\n [key: string]: any\r\n}\r\n\r\nexport const COIN_LIST: CoinOptions = {\r\n USDK: {\r\n symbol: 'USDK',\r\n icon: USDTIcon\r\n },\r\n KEUR: {\r\n symbol: 'KEUR',\r\n icon: KEURICON,\r\n address: {\r\n ETH: ETHEREUM_KEUR_ADDRESS,\r\n POL: POLYGON_KEUR_ADDRESS\r\n }\r\n }\r\n}\r\n\r\nexport enum TransactionStatus {\r\n AVAILABLE = 'Available',\r\n CONFIRMED = 'Confirmed',\r\n PAID = 'Paid',\r\n COMPLETED = 'Completed',\r\n FAILEDTOPAY = 'FailedToPay',\r\n FAILEDTOPULL = 'FailedToPull',\r\n UNAVAILABLE = 'UnAvailable',\r\n KEYSIGNED = 'KeySigned'\r\n}\r\n\r\nexport const tooltipInfo = [\r\n ['Initialize Kima transaction'],\r\n ['Transfer liquidity from source chain'],\r\n ['Key signing'],\r\n ['Transfer liquidity to target chain'],\r\n []\r\n]\r\n","export { ChainName as SupportNetworks } from './utils/constants'\r\nexport { CHAIN_STRING_TO_NAME, CHAIN_NAMES_TO_STRING } from './utils/constants'\r\nimport {\r\n ChainName as SupportNetworks,\r\n TransactionStatus\r\n} from './utils/constants'\r\n\r\nexport enum FontSizeOptions {\r\n large = 'large',\r\n medium = 'medium',\r\n small = 'small'\r\n}\r\n\r\nexport enum ModeOptions {\r\n payment = 'payment',\r\n bridge = 'bridge',\r\n status = 'status'\r\n}\r\n\r\nexport enum CurrencyOptions {\r\n USDK = 'USDK',\r\n G$ = 'GDOLLAR'\r\n}\r\n\r\nexport enum ColorModeOptions {\r\n light = 'light',\r\n dark = 'dark'\r\n}\r\n\r\nexport enum DAppOptions {\r\n None = 'none',\r\n LPAdd = 'LPAdd',\r\n LPDrain = 'LPDrain'\r\n}\r\n\r\nexport interface TransactionOption {\r\n targetChain: SupportNetworks\r\n targetAddress: string\r\n amount: number\r\n}\r\n\r\nexport interface TitleOption {\r\n initialTitle?: string\r\n confirmTitle?: string\r\n}\r\n\r\nexport interface PaymentTitleOption {\r\n title?: string\r\n style?: object\r\n}\r\n\r\nexport interface CompliantOption {\r\n checkCompliant: boolean\r\n xploriskBaseUrl?: string\r\n xploriskApiKey?: string\r\n}\r\n\r\nexport interface ThemeOptions {\r\n colorMode?: ColorModeOptions\r\n fontSize?: FontSizeOptions\r\n fontFamily?: string\r\n backgroundColorLight?: string\r\n backgroundColorDark?: string\r\n}\r\n\r\nexport interface TransactionData {\r\n status?: TransactionStatus\r\n sourceChain?: string\r\n targetChain?: string\r\n tssPullHash?: string\r\n tssReleaseHash?: string\r\n symbol?: string\r\n amount?: number\r\n kimaTxHash?: string\r\n failReason?: string\r\n}\r\n\r\nexport interface Web3ModalAccountInfo {\r\n address?: string | undefined\r\n isConnected?: boolean | undefined\r\n chainId?: number | undefined\r\n}\r\n","import * as toolkitRaw from '@reduxjs/toolkit'\r\nimport { PayloadAction } from '@reduxjs/toolkit'\r\nconst { createSlice } = toolkitRaw\r\n// import { WalletName } from '@solana/wallet-adapter-base'\r\nimport {\r\n DAppOptions,\r\n ModeOptions,\r\n ThemeOptions,\r\n TransactionOption\r\n} from '../interface'\r\n\r\ntype BankDetails = {\r\n iban: string\r\n recipient: string\r\n}\r\n\r\nexport type AddressOption = {\r\n [key: string]: string\r\n}\r\n\r\nexport type TokenOptions = {\r\n [key: string]: AddressOption\r\n}\r\n\r\nexport interface OptionState {\r\n theme: ThemeOptions // light or dark\r\n mode: ModeOptions // payment or bridge\r\n sourceChain: string // origin network on UI\r\n targetChain: string // target network on UI\r\n targetAddress: string // target address on UI\r\n tokenOptions: TokenOptions // token options from blockchain endpoint\r\n solanaConnectModal: boolean // solana wallet connection modal state - open or closed\r\n tronConnectModal: boolean // tron wallet connection modal state - open or closed\r\n helpPopup: boolean // shows popup to show help instructions\r\n hashPopup: boolean // shows popup to show hashes of transactions (kima tx, pull & release hashes)\r\n bankPopup: boolean // shows popup to simulate bank transfer\r\n walletAutoConnect: boolean // propmpt metamask connect automatically\r\n provider: any // Ethereum wallet provider\r\n dAppOption: DAppOptions // specify which dApp is using this widget\r\n solanaProvider: any // selected solana wallet provider - phantom, solflare or ...\r\n submitted: boolean // if transaction is submitted, shows Transaction Widget to monitor status\r\n amount: number // amount input\r\n feeDeduct: boolean // whether deduct fee from amount or not\r\n transactionOption?: TransactionOption // input option from dApp\r\n errorHandler: Function // error callback function from dApp\r\n keplrHandler: Function // keplr wallet integration function from dApp\r\n closeHandler: Function // callback function for close event\r\n successHandler: Function // callback function for success event\r\n switchChainHandler: Function // callback function to switch chain request\r\n initChainFromProvider: boolean // chainId is initialized from provider or not\r\n serviceFee: number // service fee from kima node\r\n backendUrl: string // URL for kima-transaction-backend component\r\n nodeProviderQuery: string // REST API endpoint to query kima node\r\n kimaExplorerUrl: string // URL for kima explore (testnet, staging or demo)\r\n txId: number // transaction id to monitor it's status\r\n selectedToken: string // Currently selected token\r\n avilableTokenList: Array<string> // Available token list by source, target chain\r\n compliantOption: boolean // option to check compliant addresses\r\n sourceCompliant: string // source address is compliant or not\r\n targetCompliant: string // target address is compliant or not\r\n useFIAT: boolean // use FIAT Payment mockup or not?\r\n bankDetails: BankDetails\r\n targetNetworkFetching: boolean // is fetching available chains according to current source network or not\r\n signature: string // off-chain proof of target address for on-ramping fiat transaction\r\n uuid: string // uuid for depasify KYC\r\n kycStatus: string // kyc status from depasify\r\n}\r\n\r\nconst initialState: OptionState = {\r\n theme: {},\r\n tokenOptions: {},\r\n kimaExplorerUrl: 'explorer.kima.finance',\r\n mode: ModeOptions.bridge,\r\n sourceChain: '',\r\n targetChain: '',\r\n targetAddress: '',\r\n solanaConnectModal: false,\r\n tronConnectModal: false,\r\n helpPopup: false,\r\n hashPopup: false,\r\n bankPopup: false,\r\n walletAutoConnect: true,\r\n provider: undefined,\r\n dAppOption: DAppOptions.None,\r\n solanaProvider: undefined,\r\n submitted: false,\r\n amount: 0,\r\n feeDeduct: false,\r\n errorHandler: () => void 0,\r\n closeHandler: () => void 0,\r\n successHandler: () => void 0,\r\n switchChainHandler: () => void 0,\r\n keplrHandler: () => void 0,\r\n initChainFromProvider: false,\r\n serviceFee: -1,\r\n backendUrl: '',\r\n nodeProviderQuery: '',\r\n txId: -1,\r\n selectedToken: 'USDK',\r\n avilableTokenList: ['USDK'],\r\n compliantOption: true,\r\n sourceCompliant: 'low',\r\n targetCompliant: 'low',\r\n useFIAT: false,\r\n bankDetails: {\r\n iban: '',\r\n recipient: ''\r\n },\r\n targetNetworkFetching: false,\r\n signature: '',\r\n uuid: '',\r\n kycStatus: ''\r\n}\r\n\r\nexport const optionSlice = createSlice({\r\n name: 'option',\r\n initialState,\r\n reducers: {\r\n initialize: (state) => {\r\n state.submitted = false\r\n state.txId = -1\r\n state.serviceFee = -1\r\n state.amount = 0\r\n state.targetAddress = ''\r\n state.compliantOption = true\r\n state.sourceCompliant = 'low'\r\n state.targetCompliant = 'low'\r\n state.useFIAT = false\r\n ;(state.tokenOptions = {}),\r\n (state.bankDetails = {\r\n iban: '',\r\n recipient: ''\r\n })\r\n state.initChainFromProvider = false\r\n state.targetNetworkFetching = false\r\n state.signature = ''\r\n },\r\n setTokenOptions: (state, action: PayloadAction<TokenOptions>) => {\r\n state.tokenOptions = action.payload\r\n },\r\n setTheme: (state, action: PayloadAction<ThemeOptions>) => {\r\n state.theme = action.payload\r\n },\r\n setKimaExplorer: (state, action: PayloadAction<string>) => {\r\n state.kimaExplorerUrl = action.payload\r\n },\r\n setSourceChain: (state, action: PayloadAction<string>) => {\r\n state.sourceChain = action.payload\r\n },\r\n setTargetChain: (state, action: PayloadAction<string>) => {\r\n state.targetChain = action.payload\r\n },\r\n setTargetAddress: (state, action: PayloadAction<string>) => {\r\n state.targetAddress = action.payload\r\n },\r\n setSolanaConnectModal: (state, action: PayloadAction<boolean>) => {\r\n state.solanaConnectModal = action.payload\r\n },\r\n setTronConnectModal: (state, action: PayloadAction<boolean>) => {\r\n state.tronConnectModal = action.payload\r\n },\r\n setHelpPopup: (state, action: PayloadAction<boolean>) => {\r\n state.helpPopup = action.payload\r\n },\r\n setHashPopup: (state, action: PayloadAction<boolean>) => {\r\n state.hashPopup = action.payload\r\n },\r\n setBankPopup: (state, action: PayloadAction<boolean>) => {\r\n state.bankPopup = action.payload\r\n },\r\n setProvider: (state, action: PayloadAction<any>) => {\r\n state.provider = action.payload\r\n },\r\n setDappOption: (state, action: PayloadAction<DAppOptions>) => {\r\n state.dAppOption = action.payload\r\n },\r\n setWalletAutoConnect: (state, action: PayloadAction<boolean>) => {\r\n state.walletAutoConnect = action.payload\r\n },\r\n setSolanaProvider: (state, action: PayloadAction<any>) => {\r\n state.solanaProvider = action.payload\r\n },\r\n setSubmitted: (state, action: PayloadAction<boolean>) => {\r\n state.submitted = action.payload\r\n },\r\n setTransactionOption: (state, action: PayloadAction<TransactionOption>) => {\r\n state.transactionOption = action.payload\r\n },\r\n setAmount: (state, action: PayloadAction<number>) => {\r\n state.amount = action.payload\r\n },\r\n setErrorHandler: (state, action: PayloadAction<Function>) => {\r\n state.errorHandler = action.payload\r\n },\r\n setKeplrHandler: (state, action: PayloadAction<Function>) => {\r\n state.keplrHandler = action.payload\r\n },\r\n setCloseHandler: (state, action: PayloadAction<Function>) => {\r\n state.closeHandler = action.payload\r\n },\r\n setSwitchChainHandler: (state, action: PayloadAction<Function>) => {\r\n state.switchChainHandler = action.payload\r\n },\r\n setInitChainFromProvider: (state, action: PayloadAction<boolean>) => {\r\n state.initChainFromProvider = action.payload\r\n },\r\n setSuccessHandler: (state, action: PayloadAction<Function>) => {\r\n state.successHandler = action.payload\r\n },\r\n setServiceFee: (state, action: PayloadAction<number>) => {\r\n state.serviceFee = action.payload\r\n },\r\n setMode: (state, action: PayloadAction<ModeOptions>) => {\r\n state.mode = action.payload\r\n },\r\n setFeeDeduct: (state, action: PayloadAction<boolean>) => {\r\n state.feeDeduct = action.payload\r\n },\r\n setBackendUrl: (state, action: PayloadAction<string>) => {\r\n state.backendUrl = action.payload\r\n },\r\n setNodeProviderQuery: (state, action: PayloadAction<string>) => {\r\n state.nodeProviderQuery = action.payload\r\n },\r\n setTxId: (state, action: PayloadAction<number>) => {\r\n state.txId = action.payload\r\n },\r\n setSelectedToken: (state, action: PayloadAction<string>) => {\r\n state.selectedToken = action.payload\r\n },\r\n setAvailableTokenList: (state, action: PayloadAction<Array<string>>) => {\r\n state.avilableTokenList = action.payload\r\n },\r\n setCompliantOption: (state, action: PayloadAction<boolean>) => {\r\n state.compliantOption = action.payload\r\n },\r\n setSourceCompliant: (state, action: PayloadAction<string>) => {\r\n state.sourceCompliant = action.payload\r\n },\r\n setTargetCompliant: (state, action: PayloadAction<string>) => {\r\n state.targetCompliant = action.payload\r\n },\r\n setUseFIAT: (state, action: PayloadAction<boolean>) => {\r\n state.useFIAT = action.payload\r\n },\r\n setBankDetails: (state, action: PayloadAction<BankDetails>) => {\r\n state.bankDetails = action.payload\r\n },\r\n setTargetChainFetching: (state, action: PayloadAction<boolean>) => {\r\n state.targetNetworkFetching = action.payload\r\n },\r\n setSignature: (state, action: PayloadAction<string>) => {\r\n state.signature = action.payload\r\n },\r\n setUuid: (state, action: PayloadAction<string>) => {\r\n state.uuid = action.payload\r\n },\r\n setKYCStatus: (state, action: PayloadAction<string>) => {\r\n state.kycStatus = action.payload\r\n }\r\n }\r\n})\r\n\r\nexport const {\r\n initialize,\r\n setTokenOptions,\r\n setKimaExplorer,\r\n setTheme,\r\n setSourceChain,\r\n setTargetChain,\r\n setTargetAddress,\r\n setSolanaConnectModal,\r\n setTronConnectModal,\r\n setHelpPopup,\r\n setHashPopup,\r\n setBankPopup,\r\n setSolanaProvider,\r\n setProvider,\r\n setDappOption,\r\n setWalletAutoConnect,\r\n setSubmitted,\r\n setTransactionOption,\r\n setAmount,\r\n setErrorHandler,\r\n setKeplrHandler,\r\n setCloseHandler,\r\n setSuccessHandler,\r\n setSwitchChainHandler,\r\n setInitChainFromProvider,\r\n setServiceFee,\r\n setMode,\r\n setFeeDeduct,\r\n setBackendUrl,\r\n setNodeProviderQuery,\r\n setTxId,\r\n setSelectedToken,\r\n setAvailableTokenList,\r\n setCompliantOption,\r\n setSourceCompliant,\r\n setTargetCompliant,\r\n setUseFIAT,\r\n setBankDetails,\r\n setTargetChainFetching,\r\n setSignature,\r\n setUuid,\r\n setKYCStatus\r\n} = optionSlice.actions\r\n\r\nexport default optionSlice.reducer\r\n","import * as toolkitRaw from '@reduxjs/toolkit'\r\nconst { configureStore } = toolkitRaw\r\nimport optionReducer from './optionSlice'\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n option: optionReducer\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false\r\n })\r\n})\r\n\r\n// Infer the `RootState` and `AppDispatch` types from the store itself\r\nexport type RootState = ReturnType<typeof store.getState>\r\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\r\nexport type AppDispatch = typeof store.dispatch\r\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import { RootState } from '.'\r\n\r\n/*\r\n * Option\r\n */\r\n\r\nexport const selectTokenOptions = (state: RootState) =>\r\n state.option.tokenOptions\r\nexport const selectTheme = (state: RootState) => state.option.theme\r\nexport const selectKimaExplorer = (state: RootState) =>\r\n state.option.kimaExplorerUrl\r\nexport const selectSourceChain = (state: RootState) => state.option.sourceChain\r\nexport const selectTargetChain = (state: RootState) => state.option.targetChain\r\nexport const selectTargetAddress = (state: RootState) =>\r\n state.option.targetAddress\r\nexport const selectSolanaConnectModal = (state: RootState) =>\r\n state.option.solanaConnectModal\r\nexport const selectTronConnectModal = (state: RootState) =>\r\n state.option.tronConnectModal\r\nexport const selectHelpPopup = (state: RootState) => state.option.helpPopup\r\nexport const selectHashPopup = (state: RootState) => state.option.hashPopup\r\nexport const selectBankPopup = (state: RootState) => state.option.bankPopup\r\nexport const selectSolanaProvider = (state: RootState) =>\r\n state.option.solanaProvider\r\nexport const selectProvider = (state: RootState) => state.option.provider\r\nexport const selectDappOption = (state: RootState) => state.option.dAppOption\r\nexport const selectWalletAutoConnect = (state: RootState) =>\r\n state.option.walletAutoConnect\r\nexport const selectSubmitted = (state: RootState) => state.option.submitted\r\nexport const selectTransactionOption = (state: RootState) =>\r\n state.option.transactionOption\r\nexport const selectAmount = (state: RootState) => state.option.amount\r\nexport const selectErrorHandler = (state: RootState) =>\r\n state.option.errorHandler\r\nexport const selectKeplrHandler = (state: RootState) =>\r\n state.option.keplrHandler\r\nexport const selectCloseHandler = (state: RootState) =>\r\n state.option.closeHandler\r\nexport const selectSuccessHandler = (state: RootState) =>\r\n state.option.successHandler\r\nexport const selectSwitchChainHandler = (state: RootState) =>\r\n state.option.switchChainHandler\r\nexport const selectInitChainFromProvider = (state: RootState) =>\r\n state.option.initChainFromProvider\r\nexport const selectServiceFee = (state: RootState) => state.option.serviceFee\r\nexport const selectMode = (state: RootState) => state.option.mode\r\nexport const selectFeeDeduct = (state: RootState) => state.option.feeDeduct\r\nexport const selectBackendUrl = (state: RootState) => state.option.backendUrl\r\nexport const selectNodeProviderQuery = (state: RootState) =>\r\n state.option.nodeProviderQuery\r\nexport const selectTxId = (state: RootState) => state.option.txId\r\nexport const selectSelectedToken = (state: RootState) =>\r\n state.option.selectedToken\r\nexport const selectAvailableTokenList = (state: RootState) =>\r\n state.option.avilableTokenList\r\nexport const selectCompliantOption = (state: RootState) =>\r\n state.option.compliantOption\r\nexport const selectSourceCompliant = (state: RootState) =>\r\n state.option.sourceCompliant\r\nexport const selectTargetCompliant = (state: RootState) =>\r\n state.option.targetCompliant\r\nexport const selectUseFIAT = (state: RootState) => state.option.useFIAT\r\nexport const selectBankDetails = (state: RootState) => state.option.bankDetails\r\nexport const selectTargetChainFetching = (state: RootState) =>\r\n state.option.targetNetworkFetching\r\nexport const selectSignature = (state: RootState) => state.option.signature\r\nexport const selectUuid = (state: RootState) => state.option.uuid\r\nexport const selectKycStatus = (state: RootState) => state.option.kycStatus\r\n","import React from 'react'\r\n\r\ninterface Loading180RingProps {\r\n width?: number\r\n height?: number\r\n fill?: string\r\n}\r\n\r\n/**\r\n * Loading180Ring component.\r\n *\r\n * @param {Object} props - The component properties.\r\n * @param {number} props.width - The width of the SVG.\r\n * @param {number} props.height - The height of the SVG.\r\n * @param {string} [props.fill='white'] - The fill color of the SVG.\r\n * @returns {JSX.Element} React JSX element.\r\n */\r\n\r\nconst Loading180Ring = ({\r\n width = 24,\r\n height = 24,\r\n fill = 'white'\r\n}: Loading180RingProps) => {\r\n return (\r\n <svg\r\n width={width}\r\n height={height}\r\n fill={fill}\r\n viewBox='0 0 24 24'\r\n xmlns='http://www.w3.org/2000/svg'\r\n >\r\n <path d='M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z'>\r\n <animateTransform\r\n attributeName='transform'\r\n type='rotate'\r\n dur='0.75s'\r\n values='0 12 12;360 12 12'\r\n repeatCount='indefinite'\r\n />\r\n </path>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default Loading180Ring\r\n","import React, { Dispatch, SetStateAction } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\nimport { Loading180Ring } from '../../assets/loading'\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\ninterface Props {\r\n step: number\r\n focus: number\r\n setFocus: Dispatch<SetStateAction<number>>\r\n errorStep: number\r\n loadingStep: number\r\n}\r\n\r\nconst stepInfo = [\r\n {\r\n title: 'Initialize'\r\n },\r\n {\r\n title: 'Source Transfer'\r\n },\r\n {\r\n title: 'Validation'\r\n },\r\n {\r\n title: 'Target Transfer'\r\n },\r\n {\r\n title: 'Finalize'\r\n }\r\n]\r\n\r\nconst Progressbar = ({ step, errorStep, setFocus, loadingStep }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className='kima-progressbar'>\r\n <div\r\n className='value'\r\n style={{\r\n width: `calc(${(step * 100) / 4}% + ${\r\n step > 0 && step < 3 ? 0.5 : 0\r\n }em)`\r\n }}\r\n />\r\n <div className='step-indicators'>\r\n {stepInfo.map((item, index) => (\r\n <div\r\n key={item.title}\r\n className={`step ${step >= index ? 'active' : ''}`}\r\n onClick={() => {\r\n if (index < 4) setFocus(index)\r\n }}\r\n >\r\n <div className='step-info'>\r\n {index === loadingStep ? (\r\n <Loading180Ring\r\n fill={theme.colorMode === 'dark' ? 'white' : '#5aa0db'}\r\n />\r\n ) : step >= index ? (\r\n index === errorStep ? (\r\n <WarningIcon data-tooltip-id='error-tooltip' />\r\n ) : (\r\n <CheckIcon />\r\n )\r\n ) : null}\r\n <span>{item.title}</span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Progressbar\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n to: string\r\n children?: any\r\n className?: string\r\n rest?: any\r\n}\r\n\r\nconst ExternalLink = ({ to, children, className, rest }: Props) => (\r\n <a\r\n className={className}\r\n href={to}\r\n target='_blank'\r\n rel='noreferrer noopener'\r\n {...rest}\r\n >\r\n {children}\r\n </a>\r\n)\r\n\r\nexport default ExternalLink\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { ArrowRightIcon, WarningIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport { getNetworkOption } from '../../utils/constants'\r\n\r\ninterface Props {\r\n hasError: boolean\r\n sourceChain: string\r\n targetChain: string\r\n}\r\n\r\nconst NetworkLabel = ({ sourceChain, targetChain, hasError }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const SourceInfo = getNetworkOption(sourceChain)\r\n const TargetInfo = getNetworkOption(targetChain)\r\n\r\n return (\r\n <div className='kima-card-network-label'>\r\n <div className='label'>\r\n <div className='icon-wrapper'>{SourceInfo && <SourceInfo.icon />}</div>\r\n {SourceInfo?.label}\r\n </div>\r\n <ArrowRightIcon fill={theme.colorMode === 'light' ? 'black' : 'white'} />\r\n <div className='label'>\r\n <div className='icon-wrapper'>{TargetInfo && <TargetInfo.icon />}</div>\r\n {TargetInfo?.label}\r\n </div>\r\n {hasError && (\r\n <div className='warning-container' data-tooltip-id='error-tooltip'>\r\n <WarningIcon />\r\n <span>1 issue</span>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default NetworkLabel\r\n","import React from 'react'\r\nimport { Loading180Ring } from '../../assets/loading'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n isLoading?: boolean\r\n disabled?: boolean\r\n ref?: React.LegacyRef<HTMLButtonElement>\r\n}\r\n\r\nconst PrimaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n isLoading = false,\r\n disabled = false,\r\n ref\r\n}: Props) => {\r\n return (\r\n <button\r\n className={`primary-button ${className}`}\r\n onClick={clickHandler}\r\n ref={ref}\r\n disabled={disabled}\r\n >\r\n {isLoading && (\r\n <div className='loading-indicator'>\r\n <Loading180Ring width={24} height={24} fill='white' />\r\n </div>\r\n )}\r\n {children}\r\n </button>\r\n )\r\n}\r\n\r\nexport default PrimaryButton\r\n","import React from 'react'\r\n\r\ninterface Props {\r\n clickHandler?: any\r\n children?: any\r\n className?: string\r\n theme?: string\r\n style?: any\r\n disabled?: boolean\r\n}\r\n\r\nconst SecondaryButton = ({\r\n className,\r\n clickHandler,\r\n children,\r\n theme,\r\n style,\r\n disabled = false\r\n}: Props) => (\r\n <button\r\n className={`secondary-button ${className} ${theme}`}\r\n onClick={clickHandler}\r\n {...style}\r\n disabled={disabled}\r\n >\r\n {children}\r\n </button>\r\n)\r\n\r\nexport default SecondaryButton\r\n","export const fetchWrapper = {\r\n get,\r\n post\r\n}\r\n\r\nfunction get(url: string) {\r\n const requestOptions: any = {\r\n method: 'GET'\r\n }\r\n\r\n requestOptions.headers = {\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction post(url: string, body: any) {\r\n const requestOptions: any = {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n // Authorization: `Bearer ${token}`\r\n },\r\n body: body\r\n }\r\n\r\n return fetch(url, requestOptions).then(handleResponse)\r\n}\r\n\r\nfunction handleResponse(response: Response) {\r\n return response.text().then((text) => {\r\n let data = text\r\n\r\n try {\r\n data = JSON.parse(text)\r\n } catch (error) {\r\n data = text\r\n }\r\n\r\n if (!response.ok) {\r\n if ([401, 403].includes(response.status)) {\r\n // auto logout if 401 Unauthorized or 403 Forbidden response returned from api\r\n }\r\n\r\n // const error = (data && data.message) || response.statusText;\r\n const error = data || response.statusText\r\n\r\n return Promise.reject({ status: response.status, error })\r\n }\r\n\r\n return data\r\n })\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { selectNodeProviderQuery, selectUseFIAT } from '../store/selectors'\r\nimport { ChainName, networkOptions } from '../utils/constants'\r\nimport { useDispatch } from 'react-redux'\r\nimport { TokenOptions, setTokenOptions } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useNetworkOptions() {\r\n const dispatch = useDispatch()\r\n const useFIAT = useSelector(selectUseFIAT)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const [options, setOptions] = useState<Array<any>>(networkOptions)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/chain`\r\n )\r\n\r\n setOptions(\r\n networkOptions.filter(\r\n (network) =>\r\n networks.Chain.findIndex(\r\n (chain: any) => chain.symbol === network.id && !chain.disabled\r\n ) >= 0 ||\r\n (network.id === ChainName.FIAT && useFIAT)\r\n )\r\n )\r\n\r\n let tokenOptions: TokenOptions = {}\r\n\r\n for (const network of networks.Chain) {\r\n for (const token of network.tokens) {\r\n if (!tokenOptions[token.symbol]) {\r\n tokenOptions[token.symbol] = {}\r\n }\r\n tokenOptions[token.symbol][network.symbol] = token.address\r\n }\r\n }\r\n\r\n dispatch(setTokenOptions(tokenOptions))\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery])\r\n\r\n return useMemo(\r\n () => ({\r\n options\r\n }),\r\n [options]\r\n )\r\n}\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport useNetworkOptions from '../../hooks/useNetworkOptions'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport {\r\n selectDappOption,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport {\r\n setSourceChain,\r\n setServiceFee,\r\n setTargetChain\r\n} from '../../store/optionSlice'\r\nimport { ChainName } from '../../utils/constants'\r\nimport { ModeOptions } from '../../interface'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport toast from 'react-hot-toast'\r\n\r\ninterface Props {\r\n isOriginChain?: boolean\r\n}\r\n\r\nconst Network = ({ isOriginChain = true }: Props) => {\r\n const sourceChangeRef = useRef<boolean>(false)\r\n const theme = useSelector(selectTheme)\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const dispatch = useDispatch()\r\n const sliderRef = useRef<any>()\r\n const [availableNetworks, setAvailableNetworks] = useState<Array<ChainName>>(\r\n []\r\n )\r\n const { options: networkOptions } = useNetworkOptions()\r\n const selectedNetwork = useMemo(() => {\r\n const index = networkOptions.findIndex(\r\n (option) => option.id === (isOriginChain ? originNetwork : targetNetwork)\r\n )\r\n if (index >= 0) return networkOptions[index]\r\n return networkOptions[3]\r\n }, [originNetwork, targetNetwork, networkOptions])\r\n const networks = useMemo(() => {\r\n if (isOriginChain && mode === ModeOptions.bridge) {\r\n return networkOptions\r\n }\r\n\r\n return networkOptions.filter(\r\n (network) =>\r\n availableNetworks.findIndex((id: any) => id === network.id) >= 0\r\n )\r\n }, [networkOptions, isOriginChain, availableNetworks, dAppOption])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.bridge) return\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${originNetwork}`\r\n )\r\n\r\n setAvailableNetworks(networks.Chains)\r\n if (isOriginChain && !targetNetwork) {\r\n dispatch(setTargetChain(networks.Chains[0]))\r\n }\r\n if (sourceChangeRef.current) {\r\n sourceChangeRef.current = false\r\n dispatch(setTargetChain(networks.Chains[0]))\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, originNetwork, targetNetwork, mode, isOriginChain])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`network-select`}>\r\n <p>\r\n {isOriginChain\r\n ? 'Which network are you funding from?'\r\n : 'Which network are you funding to?'}\r\n </p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='network-container'>\r\n {networks.map((network) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n network.id === selectedNetwork.id ? 'active' : ''\r\n }`}\r\n key={network.id}\r\n onClick={() => {\r\n if (isOriginChain) {\r\n dispatch(setSourceChain(network.id))\r\n sourceChangeRef.current = true\r\n } else {\r\n dispatch(setTargetChain(network.id))\r\n dispatch(setServiceFee(-1))\r\n }\r\n }}\r\n >\r\n <network.icon />\r\n <span>{network.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Network\r\n","import React, { useEffect, useMemo, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { WalletReadyState } from '@solana/wallet-adapter-base'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport { selectSolanaProvider, selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\nimport { setSolanaProvider } from '../../store/optionSlice'\r\n\r\nconst SolanaWalletSelect = () => {\r\n const theme = useSelector(selectTheme)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const sliderRef = useRef<any>()\r\n\r\n const dispatch = useDispatch()\r\n const { wallets } = useWallet()\r\n const [detected, undetected] = useMemo(() => {\r\n const detected: any[] = []\r\n const undetected: any[] = []\r\n for (const wallet of wallets) {\r\n if (\r\n wallet.readyState === WalletReadyState.Installed ||\r\n wallet.readyState === WalletReadyState.Loadable\r\n ) {\r\n detected.push(wallet)\r\n } else if (wallet.readyState === WalletReadyState.NotDetected) {\r\n undetected.push(wallet)\r\n }\r\n }\r\n return [detected, undetected]\r\n }, [wallets])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`wallet-select`}>\r\n <p>Please select:</p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='wallet-container'>\r\n {detected.map((wallet, index) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n wallet.adapter.name === selectedProvider ? 'active' : ''\r\n }`}\r\n onClick={() => dispatch(setSolanaProvider(wallet.adapter.name))}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>{wallet.adapter.name}</span>\r\n </div>\r\n ))}\r\n {undetected.map((wallet, index) => (\r\n <ExternalLink\r\n to={wallet.adapter.url}\r\n className={`card-item ${theme.colorMode}`}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>\r\n Install\r\n <br />\r\n {wallet.adapter.name}\r\n </span>\r\n </ExternalLink>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SolanaWalletSelect\r\n","import React, { useEffect, useMemo, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { useWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { AdapterState } from '@tronweb3/tronwallet-abstract-adapter'\r\nimport { ArrowIcon } from '../../assets/icons'\r\nimport { selectSolanaProvider, selectTheme } from '../../store/selectors'\r\nimport ExternalLink from './ExternalLink'\r\nimport { setSolanaProvider } from '../../store/optionSlice'\r\n\r\nconst WalletSelect = () => {\r\n const theme = useSelector(selectTheme)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const sliderRef = useRef<any>()\r\n\r\n const dispatch = useDispatch()\r\n const { wallets } = useWallet()\r\n const [detected, undetected] = useMemo(() => {\r\n const detected: any[] = []\r\n const undetected: any[] = []\r\n for (const wallet of wallets) {\r\n if (\r\n wallet.state === AdapterState.Connected ||\r\n wallet.state === AdapterState.Disconnect ||\r\n wallet.state === AdapterState.Loading\r\n ) {\r\n detected.push(wallet)\r\n } else if (wallet.state === AdapterState.NotFound) {\r\n undetected.push(wallet)\r\n }\r\n }\r\n return [detected, undetected]\r\n }, [wallets])\r\n\r\n useEffect(() => {\r\n let isDown = false\r\n let startX: number\r\n let scrollLeft: number\r\n\r\n sliderRef.current?.addEventListener('mousedown', (e: any) => {\r\n isDown = true\r\n sliderRef.current?.classList.add('active')\r\n startX = e.pageX - sliderRef.current?.offsetLeft\r\n scrollLeft = sliderRef.current?.scrollLeft\r\n })\r\n sliderRef.current?.addEventListener('mouseleave', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mouseup', () => {\r\n isDown = false\r\n sliderRef.current.classList.remove('active')\r\n })\r\n sliderRef.current?.addEventListener('mousemove', (e: any) => {\r\n if (!isDown) return\r\n e.preventDefault()\r\n const x = e.pageX - sliderRef.current.offsetLeft\r\n const walk = (x - startX) * 1 //scroll-fast\r\n sliderRef.current.scrollLeft = scrollLeft - walk\r\n })\r\n })\r\n\r\n const slideLeft = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft -= 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n const slideRight = () => {\r\n let temp = 0\r\n const timerId = setInterval(() => {\r\n sliderRef.current.scrollLeft += 10\r\n if (temp++ === 20) clearInterval(timerId)\r\n }, 10)\r\n }\r\n\r\n return (\r\n <div className={`wallet-select`}>\r\n <p>Please select:</p>\r\n <div className='scroll-button'>\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideLeft}\r\n />\r\n <ArrowIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n onClick={slideRight}\r\n />\r\n </div>\r\n <div className='slide-area hide-scrollbar' ref={sliderRef}>\r\n <div className='wallet-container'>\r\n {detected.map((wallet, index) => (\r\n <div\r\n className={`card-item ${theme.colorMode} ${\r\n wallet.adapter.name === selectedProvider ? 'active' : ''\r\n }`}\r\n onClick={() => dispatch(setSolanaProvider(wallet.adapter.name))}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>{wallet.adapter.name}</span>\r\n </div>\r\n ))}\r\n {undetected.map((wallet, index) => (\r\n <ExternalLink\r\n to={wallet.adapter.url}\r\n className={`card-item ${theme.colorMode}`}\r\n key={`${wallet.adapter.name}-${index}`}\r\n >\r\n <img src={wallet.adapter.icon} alt={wallet.adapter.name} />\r\n <span>\r\n Install\r\n <br />\r\n {wallet.adapter.name}\r\n </span>\r\n </ExternalLink>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletSelect\r\n","import { useCallback, useEffect, useMemo } from 'react'\r\nimport { useWallet as useSolanaWallet } from '@solana/wallet-adapter-react'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport {\r\n isEVMChain,\r\n ChainName,\r\n CHAIN_NAMES_TO_IDS,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_STRING,\r\n SupportedChainId\r\n} from '../utils/constants'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectErrorHandler,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTargetChainFetching,\r\n selectWalletAutoConnect\r\n} from '../store/selectors'\r\nimport {\r\n useSwitchNetwork,\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider,\r\n useWeb3ModalEvents\r\n} from '@web3modal/ethers5/react'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setSourceChain } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nconst createWalletStatus = (\r\n isReady: boolean,\r\n statusMessage: string = '',\r\n forceNetworkSwitch: () => void,\r\n walletAddress?: string\r\n) => ({\r\n isReady,\r\n statusMessage,\r\n forceNetworkSwitch,\r\n walletAddress\r\n})\r\n\r\nfunction useIsWalletReady(): {\r\n isReady: boolean\r\n statusMessage: string\r\n walletAddress?: string\r\n forceNetworkSwitch: () => void\r\n} {\r\n const dispatch = useDispatch()\r\n const autoSwitch = useSelector(selectWalletAutoConnect)\r\n const { publicKey: solanaAddress } = useSolanaWallet()\r\n const { address: tronAddress } = useTronWallet()\r\n const { walletProvider: evmProvider } = useWeb3ModalProvider()\r\n const { switchNetwork } = useSwitchNetwork()\r\n\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const {\r\n address: evmAddress,\r\n chainId: evmChainId,\r\n isConnected\r\n } = web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetChain = useSelector(selectTargetChain)\r\n const targetNetworkFetching = useSelector(selectTargetChainFetching)\r\n const correctChain = useMemo(() => {\r\n if (sourceChain === ChainName.FIAT && !targetNetworkFetching)\r\n return targetChain\r\n return sourceChain\r\n }, [sourceChain, targetChain, targetNetworkFetching])\r\n const hasEthInfo = isConnected && !!evmAddress\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const correctEvmNetwork = CHAIN_NAMES_TO_IDS[correctChain]\r\n const hasCorrectEvmNetwork = evmChainId === correctEvmNetwork\r\n const events = useWeb3ModalEvents()\r\n\r\n useEffect(() => {\r\n if (\r\n events.data?.event === 'SELECT_WALLET' ||\r\n events.data?.event === 'CONNECT_SUCCESS'\r\n ) {\r\n localStorage.setItem('wallet', events.data?.properties?.name)\r\n }\r\n }, [events])\r\n\r\n const forceNetworkSwitch = useCallback(async () => {\r\n if (evmProvider && correctEvmNetwork) {\r\n if (!isEVMChain(correctChain)) {\r\n return\r\n }\r\n\r\n try {\r\n const wallet = localStorage.getItem('wallet')\r\n if (wallet === 'Phantom' && correctEvmNetwork !== 11155111) return\r\n await switchNetwork(correctEvmNetwork)\r\n } catch (e) {\r\n errorHandler(e)\r\n }\r\n }\r\n }, [evmProvider, correctEvmNetwork, correctChain])\r\n\r\n return useMemo(() => {\r\n if (correctChain === ChainName.SOLANA) {\r\n if (solanaAddress) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n solanaAddress.toBase58()\r\n )\r\n }\r\n return createWalletStatus(\r\n false,\r\n 'Wallet not connected',\r\n forceNetworkSwitch,\r\n ''\r\n )\r\n } else if (correctChain === ChainName.TRON) {\r\n if (tronAddress) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n tronAddress\r\n )\r\n }\r\n return createWalletStatus(\r\n false,\r\n 'Wallet not connected',\r\n forceNetworkSwitch,\r\n ''\r\n )\r\n } else if (isEVMChain(correctChain) && hasEthInfo && evmAddress) {\r\n if (hasCorrectEvmNetwork) {\r\n return createWalletStatus(\r\n true,\r\n undefined,\r\n forceNetworkSwitch,\r\n evmAddress\r\n )\r\n } else {\r\n if (evmProvider && correctEvmNetwork) {\r\n if (autoSwitch) {\r\n forceNetworkSwitch()\r\n } else {\r\n dispatch(\r\n setSourceChain(\r\n CHAIN_IDS_TO_NAMES[evmChainId || SupportedChainId.ETHEREUM]\r\n )\r\n )\r\n toast.success(\r\n `Wallet connected to ${\r\n CHAIN_NAMES_TO_STRING[\r\n CHAIN_IDS_TO_NAMES[evmChainId || SupportedChainId.ETHEREUM]\r\n ]\r\n }`\r\n )\r\n }\r\n }\r\n\r\n if (evmChainId && autoSwitch)\r\n return createWalletStatus(\r\n false,\r\n `Wallet not connected to ${\r\n CHAIN_NAMES_TO_STRING[CHAIN_IDS_TO_NAMES[correctEvmNetwork]]\r\n }`,\r\n forceNetworkSwitch,\r\n evmAddress\r\n )\r\n }\r\n }\r\n\r\n return createWalletStatus(false, '', forceNetworkSwitch, undefined)\r\n }, [\r\n correctChain,\r\n autoSwitch,\r\n forceNetworkSwitch,\r\n solanaAddress,\r\n tronAddress,\r\n hasEthInfo,\r\n correctEvmNetwork,\r\n hasCorrectEvmNetwork,\r\n evmProvider,\r\n evmAddress,\r\n evmChainId\r\n ])\r\n}\r\n\r\nexport default useIsWalletReady\r\n","// Return shortened address for EVM, Solana wallet address\r\n\r\nexport const getShortenedAddress = (address: string) => {\r\n const is0x = (addr: string) => addr?.startsWith('0x')\r\n return `${address?.substring(0, is0x(address) ? 6 : 3)}...${address?.substr(\r\n address.length - (is0x(address) ? 4 : 3)\r\n )}`\r\n}\r\n","export const connectWalletBtn = 'connect-wallet-btn'\r\n","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey, TransactionInstruction, SystemProgram, SYSVAR_RENT_PUBKEY } from '@solana/web3.js'\r\n\r\nexport function createAssociatedTokenAccountInstruction(\r\n payer: PublicKey,\r\n associatedToken: PublicKey,\r\n owner: PublicKey,\r\n mint: PublicKey,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const keys = [\r\n { pubkey: payer, isSigner: true, isWritable: true },\r\n { pubkey: associatedToken, isSigner: false, isWritable: true },\r\n { pubkey: owner, isSigner: false, isWritable: false },\r\n { pubkey: mint, isSigner: false, isWritable: false },\r\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\r\n { pubkey: programId, isSigner: false, isWritable: false },\r\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\r\n ]\r\n\r\n return new TransactionInstruction({\r\n keys,\r\n programId: associatedTokenProgramId,\r\n data: Buffer.alloc(0),\r\n })\r\n}","import { TOKEN_PROGRAM_ID, AccountLayout } from '@solana/spl-token'\r\nimport { Connection, PublicKey, Commitment } from '@solana/web3.js'\r\n\r\nexport enum AccountState {\r\n Uninitialized = 0,\r\n Initialized = 1,\r\n Frozen = 2,\r\n}\r\n\r\nexport async function getAccountInfo(\r\n connection: Connection,\r\n address: PublicKey,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID\r\n) {\r\n const info = await connection.getAccountInfo(address, commitment)\r\n if (!info) throw new Error('TokenAccountNotFoundError')\r\n if (!info.owner.equals(programId)) throw new Error('TokenInvalidAccountOwnerError')\r\n if (info.data.length != AccountLayout.span) throw new Error('TokenInvalidAccountSizeError')\r\n\r\n const rawAccount = AccountLayout.decode(Buffer.from(info.data))\r\n\r\n return {\r\n address,\r\n mint: rawAccount.mint,\r\n owner: rawAccount.owner,\r\n amount: rawAccount.amount,\r\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\r\n delegatedAmount: rawAccount.delegatedAmount,\r\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\r\n isFrozen: rawAccount.state === AccountState.Frozen,\r\n isNative: !!rawAccount.isNativeOption,\r\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\r\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\r\n }\r\n}","import { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { PublicKey } from '@solana/web3.js'\r\n\r\nexport async function getAssociatedTokenAddress(\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n allowOwnerOffCurve = false,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n): Promise<PublicKey> {\r\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new Error('TokenOwnerOffCurveError')\r\n\r\n const [address] = await PublicKey.findProgramAddress(\r\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\r\n associatedTokenProgramId\r\n )\r\n\r\n return address\r\n}","import {\r\n TOKEN_PROGRAM_ID,\r\n ASSOCIATED_TOKEN_PROGRAM_ID\r\n} from '@solana/spl-token'\r\n// import { SignerWalletAdapterProps } from '@solana/wallet-adapter-base'\r\nimport { Connection, PublicKey, Commitment, Transaction } from '@solana/web3.js'\r\nimport { createAssociatedTokenAccountInstruction } from './createAssociatedTokenAccountInstruction'\r\nimport { getAccountInfo } from './getAccountInfo'\r\nimport { getAssociatedTokenAddress } from './getAssociatedTokenAddress'\r\n\r\nexport async function getOrCreateAssociatedTokenAccount(\r\n connection: Connection,\r\n payer: PublicKey,\r\n mint: PublicKey,\r\n owner: PublicKey,\r\n signTransaction: /*SignerWalletAdapterProps['signTransaction']*/ any,\r\n allowOwnerOffCurve = false,\r\n commitment?: Commitment,\r\n programId = TOKEN_PROGRAM_ID,\r\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\r\n) {\r\n const associatedToken = await getAssociatedTokenAddress(\r\n mint,\r\n owner,\r\n allowOwnerOffCurve,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n\r\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\r\n // Sadly we can't do this atomically.\r\n let account\r\n try {\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n } catch (error) {\r\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\r\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\r\n // TokenInvalidAccountOwnerError in this code path.\r\n const err = error as { message: string }\r\n if (\r\n err.message === 'TokenAccountNotFoundError' ||\r\n err.message === 'TokenInvalidAccountOwnerError'\r\n ) {\r\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\r\n try {\r\n const transaction = new Transaction().add(\r\n createAssociatedTokenAccountInstruction(\r\n payer,\r\n associatedToken,\r\n owner,\r\n mint,\r\n programId,\r\n associatedTokenProgramId\r\n )\r\n )\r\n\r\n const blockHash = await connection.getRecentBlockhash()\r\n transaction.feePayer = await payer\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signTransaction(transaction)\r\n\r\n const signature = await connection.sendRawTransaction(\r\n signed.serialize()\r\n )\r\n\r\n await connection.confirmTransaction(signature)\r\n } catch (error) {\r\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\r\n // instruction error if the associated account exists already.\r\n }\r\n\r\n // Now this should always succeed\r\n account = await getAccountInfo(\r\n connection,\r\n associatedToken,\r\n commitment,\r\n programId\r\n )\r\n } else {\r\n throw error\r\n }\r\n }\r\n\r\n if (!account.mint.equals(mint)) throw Error('TokenInvalidMintError')\r\n if (!account.owner.equals(owner)) throw new Error('TokenInvalidOwnerError')\r\n\r\n return account\r\n}\r\n","import { TronWeb } from 'tronweb'\r\nimport { TRON_USDK_OWNER_ADDRESS } from './utils/config'\r\nexport const tronWeb: any = new TronWeb({\r\n fullHost: 'https://api.nileex.io'\r\n})\r\ntronWeb.setAddress(TRON_USDK_OWNER_ADDRESS)\r\n","export const formatterInt = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 0\r\n})\r\n\r\nexport const formatterFloat = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 2\r\n})\r\n\r\nexport function isEmptyObject(arg) {\r\n return typeof arg === 'object' && Object.keys(arg).length === 0\r\n}\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Contract } from '@ethersproject/contracts'\r\nimport { formatUnits } from '@ethersproject/units'\r\nimport {\r\n useConnection,\r\n useWallet as useSolanaWallet\r\n} from '@solana/wallet-adapter-react'\r\nimport {\r\n ChainName,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_IDS,\r\n isEVMChain\r\n} from '../utils/constants'\r\nimport ERC20ABI from '../utils/ethereum/erc20ABI.json'\r\nimport {\r\n selectSelectedToken,\r\n selectErrorHandler,\r\n selectSourceChain,\r\n selectTokenOptions\r\n} from '../store/selectors'\r\nimport { getOrCreateAssociatedTokenAccount } from '../utils/solana/getOrCreateAssociatedTokenAccount'\r\nimport { PublicKey } from '@solana/web3.js'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { tronWeb } from '../tronweb'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { isEmptyObject } from '../helpers/functions'\r\n\r\ntype ParsedAccountData = {\r\n /** Name of the program that owns this account */\r\n program: string\r\n /** Parsed account data */\r\n parsed: any\r\n /** Space used by account data */\r\n space: number\r\n}\r\n\r\nexport default function useBalance() {\r\n const [balance, setBalance] = useState<number>(0)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const { address: signerAddress, chainId: evmChainId } =\r\n web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const sourceChain = useMemo(() => {\r\n if (\r\n selectedNetwork === ChainName.SOLANA ||\r\n selectedNetwork === ChainName.TRON\r\n )\r\n return selectedNetwork\r\n if (CHAIN_NAMES_TO_IDS[selectedNetwork] !== evmChainId) {\r\n return CHAIN_IDS_TO_NAMES[evmChainId as number]\r\n }\r\n\r\n return selectedNetwork\r\n }, [selectedNetwork, evmChainId])\r\n const { publicKey: solanaAddress, signTransaction } = useSolanaWallet()\r\n const { address: tronAddress } = useTronWallet()\r\n const { connection } = useConnection()\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenOptions = useSelector(selectTokenOptions)\r\n const tokenAddress = useMemo(() => {\r\n if (isEmptyObject(tokenOptions) || sourceChain === ChainName.FIAT) return ''\r\n\r\n if (tokenOptions && typeof tokenOptions === 'object') {\r\n const coinOptions = tokenOptions[selectedCoin]\r\n if (coinOptions && typeof coinOptions === 'object') {\r\n return tokenOptions[selectedCoin][sourceChain]\r\n }\r\n }\r\n\r\n return ''\r\n }, [selectedCoin, sourceChain, tokenOptions])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n if (!isEVMChain(sourceChain)) {\r\n if (solanaAddress && tokenAddress && connection) {\r\n const mint = new PublicKey(tokenAddress)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n\r\n const parsedAccountInfo = accountInfo?.value\r\n ?.data as ParsedAccountData\r\n\r\n setBalance(\r\n +formatUnits(\r\n parsedAccountInfo.parsed?.info?.tokenAmount?.amount,\r\n parsedAccountInfo.parsed?.info?.tokenAmount?.decimals\r\n )\r\n )\r\n return\r\n }\r\n\r\n if (tronAddress && tokenAddress) {\r\n let trc20Contract = await tronWeb.contract(\r\n ERC20ABI.abi,\r\n tokenAddress\r\n )\r\n\r\n const decimals = await trc20Contract.decimals().call()\r\n const userBalance = await trc20Contract\r\n .balanceOf(tronAddress)\r\n .call()\r\n setBalance(+formatUnits(userBalance.balance, decimals))\r\n return\r\n }\r\n }\r\n\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n\r\n if (!tokenAddress || !signer || !signerAddress) return\r\n\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n const decimals = await erc20Contract.decimals()\r\n const userBalance = await erc20Contract.balanceOf(signerAddress)\r\n\r\n setBalance(+formatUnits(userBalance, decimals))\r\n } catch (error) {\r\n errorHandler(error)\r\n }\r\n })()\r\n }, [\r\n signerAddress,\r\n tokenAddress,\r\n sourceChain,\r\n solanaAddress,\r\n tronAddress,\r\n walletProvider\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n balance\r\n }),\r\n [balance]\r\n )\r\n}\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { toast } from 'react-hot-toast'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n setSolanaConnectModal,\r\n setTronConnectModal\r\n} from '../../store/optionSlice'\r\nimport {\r\n selectCompliantOption,\r\n selectSelectedToken,\r\n selectSourceChain,\r\n selectSourceCompliant,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport PrimaryButton from './PrimaryButton'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { ChainName } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport { connectWalletBtn } from '../../utils/testId'\r\nimport useBalance from '../../hooks/useBalance'\r\nimport { formatterFloat } from '../../helpers/functions'\r\nimport { useWeb3Modal } from '@web3modal/ethers5/react'\r\n\r\nconst WalletButton = ({ errorBelow = false }: { errorBelow?: boolean }) => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const sourceCompliant = useSelector(selectSourceCompliant)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const { isReady, statusMessage, walletAddress } = useIsWalletReady()\r\n const { balance } = useBalance()\r\n const { open } = useWeb3Modal()\r\n\r\n const handleClick = () => {\r\n if (selectedNetwork === ChainName.SOLANA) {\r\n dispatch(setSolanaConnectModal(true))\r\n return\r\n }\r\n\r\n if (selectedNetwork === ChainName.TRON) {\r\n dispatch(setTronConnectModal(true))\r\n return\r\n }\r\n\r\n open()\r\n }\r\n\r\n const errorMessage = useMemo(() => {\r\n if (!isReady) return statusMessage\r\n if (sourceCompliant !== 'low' && compliantOption)\r\n return `Source address has ${sourceCompliant} risk`\r\n return ''\r\n }, [isReady, statusMessage, sourceCompliant, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!errorMessage) return\r\n toast.error(errorMessage)\r\n }, [errorMessage])\r\n\r\n return (\r\n <div\r\n className={`wallet-button ${theme.colorMode} ${\r\n errorBelow ? 'error-below' : ''\r\n }`}\r\n data-testid={connectWalletBtn}\r\n >\r\n <PrimaryButton clickHandler={handleClick}>\r\n {isReady ? `${getShortenedAddress(walletAddress || '')}` : 'Wallet'}\r\n </PrimaryButton>\r\n\r\n {isReady ? (\r\n <p className='balance-info'>\r\n {formatterFloat.format(balance)} {selectedCoin} available\r\n </p>\r\n ) : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default WalletButton\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectAvailableTokenList,\r\n selectSelectedToken,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport { COIN_LIST } from '../../utils/constants'\r\n\r\nconst CoinDropdown = () => {\r\n const ref = useRef<any>()\r\n const [collapsed, setCollapsed] = useState(true)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenList = useSelector(selectAvailableTokenList)\r\n const theme = useSelector(selectTheme)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n useEffect(() => {\r\n const bodyMouseDowntHandler = (e: any) => {\r\n if (ref?.current && !ref.current.contains(e.target)) {\r\n setCollapsed(true)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', bodyMouseDowntHandler)\r\n return () => {\r\n document.removeEventListener('mousedown', bodyMouseDowntHandler)\r\n }\r\n }, [setCollapsed])\r\n\r\n return (\r\n <div\r\n className={`coin-dropdown ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n onClick={() => setCollapsed((prev) => !prev)}\r\n ref={ref}\r\n >\r\n <div className='coin-wrapper'>\r\n {<Icon />}\r\n {selectedCoin}\r\n </div>\r\n <div\r\n className={`coin-menu ${theme.colorMode} ${collapsed ? 'collapsed' : ''}`}\r\n >\r\n {tokenList.map((token) => {\r\n const CoinIcon = COIN_LIST[token].icon\r\n return (\r\n <div className='coin-item' key={COIN_LIST[token].symbol}>\r\n {<CoinIcon />}\r\n <p>{COIN_LIST[token].symbol}</p>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinDropdown\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { ChainName } from '../../utils/constants'\r\nimport {\r\n selectDappOption,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain,\r\n selectTheme,\r\n selectUseFIAT,\r\n selectWalletAutoConnect\r\n} from '../../store/selectors'\r\nimport {\r\n setSourceChain,\r\n setServiceFee,\r\n setTargetChain,\r\n setTargetChainFetching\r\n} from '../../store/optionSlice'\r\nimport useNetworkOptions from '../../hooks/useNetworkOptions'\r\nimport { DAppOptions, ModeOptions } from '../../interface'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport toast from 'react-hot-toast'\r\n\r\nconst NetworkDropdown = React.memo(\r\n ({ isOriginChain = true }: { isOriginChain?: boolean }) => {\r\n const [collapsed, setCollapsed] = useState(true)\r\n const [availableNetworks, setAvailableNetworks] = useState<\r\n Array<ChainName>\r\n >([])\r\n const ref = useRef<any>()\r\n const sourceChangeRef = useRef<boolean>(false)\r\n const mode = useSelector(selectMode)\r\n const autoSwitchChain = useSelector(selectWalletAutoConnect)\r\n const useFIAT = useSelector(selectUseFIAT)\r\n const dAppOption = useSelector(selectDappOption)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const { options: networkOptions } = useNetworkOptions()\r\n const selectedNetwork = useMemo(() => {\r\n const index = networkOptions.findIndex(\r\n (option) =>\r\n option.id === (isOriginChain ? originNetwork : targetNetwork)\r\n )\r\n if (index >= 0) return networkOptions[index]\r\n return networkOptions[3]\r\n }, [originNetwork, targetNetwork, networkOptions])\r\n\r\n const networks = useMemo(() => {\r\n if (isOriginChain && mode === ModeOptions.bridge) {\r\n return networkOptions\r\n }\r\n\r\n return networkOptions.filter(\r\n (network) =>\r\n availableNetworks.findIndex((id: any) => id === network.id) >= 0\r\n )\r\n }, [\r\n networkOptions,\r\n isOriginChain,\r\n availableNetworks,\r\n dAppOption,\r\n originNetwork\r\n ])\r\n const theme = useSelector(selectTheme)\r\n const dispatch = useDispatch()\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.bridge) return\r\n ;(async function () {\r\n try {\r\n let chains: ChainName[] = []\r\n if (originNetwork === ChainName.FIAT) {\r\n chains = [ChainName.ETHEREUM, ChainName.POLYGON]\r\n } else {\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${originNetwork}`\r\n )\r\n\r\n chains = networks.Chains\r\n if (useFIAT) chains.push(ChainName.FIAT)\r\n }\r\n\r\n setAvailableNetworks(chains)\r\n\r\n if (isOriginChain && !targetNetwork) {\r\n dispatch(setTargetChain(chains[0]))\r\n }\r\n\r\n if (sourceChangeRef.current) {\r\n sourceChangeRef.current = false\r\n dispatch(\r\n setTargetChain(\r\n chains.findIndex((chain) => chain === targetNetwork) < 0 ||\r\n targetNetwork === originNetwork\r\n ? chains[0]\r\n : targetNetwork\r\n )\r\n )\r\n dispatch(setTargetChainFetching(false))\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [\r\n nodeProviderQuery,\r\n originNetwork,\r\n targetNetwork,\r\n mode,\r\n isOriginChain,\r\n useFIAT\r\n ])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || mode !== ModeOptions.payment) return\r\n ;(async function () {\r\n try {\r\n if (\r\n dAppOption === DAppOptions.LPAdd ||\r\n dAppOption === DAppOptions.LPDrain\r\n ) {\r\n setAvailableNetworks([targetNetwork as ChainName])\r\n } else {\r\n if (targetNetwork === ChainName.FIAT) {\r\n setAvailableNetworks([ChainName.ETHEREUM, ChainName.POLYGON])\r\n return\r\n }\r\n\r\n const networks: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${targetNetwork}`\r\n )\r\n\r\n setAvailableNetworks(networks.Chains)\r\n }\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, mode, targetNetwork, dAppOption])\r\n\r\n useEffect(() => {\r\n const bodyMouseDowntHandler = (e: any) => {\r\n if (ref?.current && !ref.current.contains(e.target)) {\r\n setCollapsed(true)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', bodyMouseDowntHandler)\r\n return () => {\r\n document.removeEventListener('mousedown', bodyMouseDowntHandler)\r\n }\r\n }, [setCollapsed])\r\n\r\n return (\r\n <div\r\n className={`network-dropdown ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n onClick={() => {\r\n if (!autoSwitchChain && isOriginChain) return\r\n setCollapsed((prev) => !prev)\r\n }}\r\n ref={ref}\r\n >\r\n <div className='network-wrapper'>\r\n {<selectedNetwork.icon />}\r\n <span>{selectedNetwork.label}</span>\r\n </div>\r\n <div\r\n className={`network-menu custom-scrollbar ${theme.colorMode} ${\r\n collapsed ? 'collapsed' : ''\r\n }`}\r\n >\r\n {networks.map((network) => (\r\n <div\r\n className='network-menu-item'\r\n key={network.label}\r\n onClick={async () => {\r\n if (isOriginChain) {\r\n dispatch(setTargetChainFetching(true))\r\n dispatch(setSourceChain(network.id))\r\n sourceChangeRef.current = true\r\n } else {\r\n dispatch(setTargetChain(network.id))\r\n dispatch(setServiceFee(-1))\r\n }\r\n }}\r\n >\r\n {<network.icon />}\r\n <p>{network.label}</p>\r\n </div>\r\n ))}\r\n {/* {useFIAT ? (\r\n <div\r\n className='network-menu-item'\r\n onClick={() => {\r\n dispatch(setBankPopup(true))\r\n }}\r\n >\r\n <BankIcon />\r\n <p>pay with FIAT</p>\r\n </div>\r\n ) : null} */}\r\n </div>\r\n </div>\r\n )\r\n }\r\n)\r\n\r\nexport default NetworkDropdown\r\n","import React, { useMemo } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { formatterFloat } from '../../helpers/functions'\r\nimport useIsWalletReady from '../../hooks/useIsWalletReady'\r\nimport { DAppOptions, ModeOptions } from '../../interface'\r\nimport {\r\n selectAmount,\r\n selectBankDetails,\r\n selectFeeDeduct,\r\n selectMode,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectSignature,\r\n selectTargetAddress,\r\n selectTargetChain,\r\n selectTheme,\r\n selectTransactionOption,\r\n selectDappOption,\r\n selectSelectedToken\r\n} from '../../store/selectors'\r\nimport { ChainName, networkOptions } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\n\r\nconst ConfirmDetails = ({ isApproved }: { isApproved: boolean }) => {\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const bankDetails = useSelector(selectBankDetails)\r\n const signature = useSelector(selectSignature)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const { walletAddress } = useIsWalletReady()\r\n const originNetworkOption = useMemo(\r\n () => networkOptions.filter((network) => network.id === originNetwork)[0],\r\n [networkOptions, originNetwork]\r\n )\r\n const targetNetworkOption = useMemo(\r\n () =>\r\n networkOptions.filter(\r\n (network) =>\r\n network.id ===\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetChain\r\n : targetNetwork)\r\n )[0],\r\n [networkOptions, originNetwork]\r\n )\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n\r\n const sourceWalletAddress = useMemo(() => {\r\n return getShortenedAddress(walletAddress || '')\r\n }, [walletAddress])\r\n\r\n const targetWalletAddress = useMemo(() => {\r\n return getShortenedAddress(\r\n (mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress\r\n : targetAddress) || ''\r\n )\r\n }, [mode, transactionOption, targetAddress])\r\n\r\n return (\r\n <div className={`confirm-details ${theme.colorMode}`}>\r\n <p>\r\n Step {isApproved ? '2' : '1'}&nbsp;of 2&nbsp;&nbsp;&nbsp;\r\n {isApproved\r\n ? 'Submit transaction'\r\n : originNetwork === ChainName.FIAT\r\n ? 'Bank Details'\r\n : 'Approval'}\r\n </p>\r\n {originNetwork === ChainName.FIAT ? (\r\n <div>\r\n <div className='detail-item'>\r\n <span className='label'>IBAN:</span>\r\n <p>ES6621000418401234567891</p>\r\n <span className='kima-card-network-label'>\r\n <originNetworkOption.icon />\r\n FIAT\r\n </span>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Recipient:</span>\r\n <p>Kima Sandbox</p>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>BIC:</span>\r\n <p>CAIXESBBXXX</p>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Description:</span>\r\n <p className='signature'>{signature}</p>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className='detail-item'>\r\n <span className='label'>Source wallet:</span>\r\n <p>\r\n {dAppOption === DAppOptions.LPDrain\r\n ? targetWalletAddress\r\n : sourceWalletAddress}\r\n </p>\r\n <span className='kima-card-network-label'>\r\n <originNetworkOption.icon />\r\n {originNetworkOption.label}\r\n </span>\r\n </div>\r\n )}\r\n <div className='detail-item'>\r\n <span className='label'>Amount:</span>\r\n <p>\r\n {formatterFloat.format(feeDeduct ? amount : amount + serviceFee)}{' '}\r\n {selectedCoin}\r\n </p>\r\n </div>\r\n {targetNetwork === ChainName.FIAT ? (\r\n <div>\r\n <div className='detail-item'>\r\n <span className='label'>IBAN:</span>\r\n <p>{bankDetails.iban}</p>\r\n <span className='kima-card-network-label'>\r\n <targetNetworkOption.icon />\r\n FIAT\r\n </span>\r\n </div>\r\n <div className='detail-item'>\r\n <span className='label'>Recipient:</span>\r\n <p>{bankDetails.recipient}</p>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className='detail-item'>\r\n <span className='label'>Target wallet:</span>\r\n <p>\r\n {dAppOption === DAppOptions.LPDrain\r\n ? sourceWalletAddress\r\n : targetWalletAddress}\r\n </p>\r\n <span className='kima-card-network-label'>\r\n <targetNetworkOption.icon />\r\n {targetNetworkOption.label}\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ConfirmDetails\r\n","import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { setTargetAddress } from '../../store/optionSlice'\r\nimport { selectTargetAddress } from '../../store/selectors'\r\n\r\n/**\r\n * Component for target address input\r\n * @component\r\n * @props\r\n * @returns\r\n */\r\n\r\nconst AddressInput = () => {\r\n const dispatch = useDispatch()\r\n const targetAddress = useSelector(selectTargetAddress)\r\n\r\n return (\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={targetAddress}\r\n onChange={(e) => dispatch(setTargetAddress(e.target.value))}\r\n />\r\n )\r\n}\r\n\r\nexport default AddressInput\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon } from '../../assets/icons'\r\nimport { selectTheme } from '../../store/selectors'\r\n\r\ninterface Props {\r\n text: string\r\n checked: boolean\r\n setCheck: (e: any) => void\r\n}\r\n\r\nconst CustomCheckbox = ({ text, checked, setCheck }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className='kima-custom-checkbox'>\r\n <div\r\n className='custom-checkbox-content'\r\n onClick={() => setCheck(!checked)}\r\n >\r\n <div className={`custom-checkbox-icon-wrapper ${theme.colorMode}`}>\r\n {checked && <CheckIcon />}\r\n </div>\r\n <span>{text}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CustomCheckbox\r\n","import React, { useEffect, useState } from 'react'\r\nimport { CheckIcon, CopyIcon } from '../../assets/icons'\r\n\r\ninterface Props {\r\n text: string\r\n}\r\n\r\nconst CopyButton = ({ text }: Props) => {\r\n const [copyClicked, setCopyClicked] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!copyClicked) return\r\n\r\n setTimeout(() => {\r\n setCopyClicked(false)\r\n }, 2000)\r\n }, [copyClicked])\r\n\r\n return (\r\n <span\r\n className='copy-btn'\r\n onClick={() => {\r\n setCopyClicked(true)\r\n navigator.clipboard.writeText(text)\r\n }}\r\n >\r\n {copyClicked ? <CheckIcon fill='#979797' /> : <CopyIcon />}\r\n </span>\r\n )\r\n}\r\n\r\nexport default CopyButton\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { CheckIcon, WarningIcon } from '../../assets/icons'\r\nimport { Loading180Ring } from '../../assets/loading'\r\nimport { TransactionData } from '../../interface'\r\nimport { selectKimaExplorer, selectTheme } from '../../store/selectors'\r\nimport {\r\n ChainName,\r\n CHAIN_NAMES_TO_EXPLORER,\r\n CHAIN_NAMES_TO_STRING\r\n} from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport CopyButton from './CopyButton'\r\nimport ExternalLink from './ExternalLink'\r\n\r\ninterface Props {\r\n step: number\r\n errorStep: number\r\n loadingStep: number\r\n data?: TransactionData\r\n}\r\n\r\nconst stepInfo = [\r\n {\r\n title: 'Initialize'\r\n },\r\n {\r\n title: 'Source Transfer'\r\n },\r\n {\r\n title: 'Validation'\r\n },\r\n {\r\n title: 'Target Transfer'\r\n },\r\n {\r\n title: 'Finalize'\r\n }\r\n]\r\n\r\nconst StepBox = ({ step, errorStep, loadingStep, data }: Props) => {\r\n const theme = useSelector(selectTheme)\r\n const explorerUrl = useSelector(selectKimaExplorer)\r\n\r\n return (\r\n <div className='kima-stepbox'>\r\n <div className='content-wrapper'>\r\n {stepInfo.map((item, index) => (\r\n <div key={item.title} className='step-item'>\r\n <div className='info-item'>\r\n {index === loadingStep ? (\r\n <Loading180Ring\r\n fill={theme.colorMode === 'dark' ? 'white' : '#5aa0db'}\r\n />\r\n ) : step >= index ? (\r\n index === errorStep ? (\r\n <WarningIcon data-tooltip-id='error-tooltip' />\r\n ) : (\r\n <CheckIcon />\r\n )\r\n ) : null}\r\n <p>{item.title}</p>\r\n </div>\r\n {index === 0 && data?.kimaTxHash ? (\r\n <div className='info-item'>\r\n <p>\r\n Kima TX ID:{' '}\r\n <ExternalLink\r\n to={`https://${explorerUrl}/transactions/${data?.kimaTxHash}`}\r\n >\r\n {getShortenedAddress(data?.kimaTxHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.kimaTxHash} />\r\n </p>\r\n </div>\r\n ) : null}\r\n {index === 1 && data?.tssPullHash ? (\r\n <div className='info-item'>\r\n <p>\r\n {\r\n CHAIN_NAMES_TO_STRING[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }{' '}\r\n TX ID:\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }/${data?.sourceChain === ChainName.TRON ? 'transaction' : 'tx'}/${data?.tssPullHash}${\r\n data?.sourceChain === ChainName.SOLANA\r\n ? '?cluster=devnet'\r\n : ''\r\n }`}\r\n >\r\n {getShortenedAddress(data?.tssPullHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.tssPullHash || ''} />\r\n </p>\r\n </div>\r\n ) : null}\r\n {index === 3 && data?.tssReleaseHash ? (\r\n <div className='info-item'>\r\n <p>\r\n {\r\n CHAIN_NAMES_TO_STRING[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }{' '}\r\n TX ID:\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }/${data?.targetChain === ChainName.TRON ? 'transaction' : 'tx'}/${data?.tssReleaseHash}${\r\n data?.targetChain === ChainName.SOLANA\r\n ? '?cluster=devnet'\r\n : ''\r\n }`}\r\n >\r\n {getShortenedAddress(data?.tssReleaseHash || '')}\r\n </ExternalLink>\r\n <CopyButton text={data?.tssReleaseHash || ''} />\r\n </p>\r\n </div>\r\n ) : null}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default StepBox\r\n","import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { setBankDetails } from '../../store/optionSlice'\r\nimport { selectBankDetails, selectTheme } from '../../store/selectors'\r\n\r\nconst BankInput = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const bankDetails = useSelector(selectBankDetails)\r\n\r\n return (\r\n <div className='bank-input'>\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>IBAN:</span>\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={bankDetails.iban}\r\n onChange={(e) =>\r\n dispatch(setBankDetails({ ...bankDetails, iban: e.target.value }))\r\n }\r\n />\r\n </div>\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Recipient:</span>\r\n <input\r\n className='kima-address-input'\r\n type='text'\r\n value={bankDetails.recipient}\r\n onChange={(e) =>\r\n dispatch(\r\n setBankDetails({ ...bankDetails, recipient: e.target.value })\r\n )\r\n }\r\n />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default BankInput\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setHelpPopup } from '../../store/optionSlice'\r\nimport { selectHelpPopup, selectTheme } from '../../store/selectors'\r\n\r\nconst HelpPopup = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const helpPopup = useSelector(selectHelpPopup)\r\n\r\n return (\r\n <div\r\n className={`kima-modal help-popup ${theme.colorMode} ${\r\n helpPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setHelpPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Help</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setHelpPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <p>\r\n The SDK enables dApp developers to process Kima transactions on\r\n behalf of their clients. It will include visual and API components\r\n that communicate with the Kima RPC nodes. The developers can pick\r\n and choose the right level of integration, based on their usage\r\n scenario.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default HelpPopup\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { TransactionData } from '../../interface'\r\nimport { setHashPopup } from '../../store/optionSlice'\r\nimport { selectHashPopup, selectTheme } from '../../store/selectors'\r\nimport { ChainName, CHAIN_NAMES_TO_EXPLORER } from '../../utils/constants'\r\nimport { getShortenedAddress } from '../../utils/functions'\r\nimport { ExternalLink } from '../reusable'\r\n\r\ninterface Props {\r\n data?: TransactionData\r\n}\r\n\r\nconst HashPopup = ({ data }: Props) => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const hashPopup = useSelector(selectHashPopup)\r\n\r\n return (\r\n <div\r\n className={`kima-modal hash-popup ${theme.colorMode} ${\r\n hashPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setHashPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Transaction Hashes</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setHashPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <div className='hash-container'>\r\n <div className='hash-item'>\r\n <span>Kima tx:</span>\r\n <ExternalLink to='https://explorer.kima.finance/transactions/718ABEE14755C1ACA617607F9353A55013EF855B0EA6E92EFD31A2F50A362524'>\r\n 718A...2524\r\n </ExternalLink>\r\n </div>\r\n <div className='hash-item'>\r\n <span>Source tx:</span>\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.sourceChain || ChainName.ETHEREUM\r\n ]\r\n }/tx/${data?.tssPullHash}`}\r\n >\r\n {getShortenedAddress(data?.tssPullHash || '')}\r\n </ExternalLink>\r\n </div>\r\n <div className='hash-item'>\r\n <span>Target tx:</span>\r\n <ExternalLink\r\n to={`https://${\r\n CHAIN_NAMES_TO_EXPLORER[\r\n data?.targetChain || ChainName.ETHEREUM\r\n ]\r\n }/tx/${data?.tssReleaseHash}`}\r\n >\r\n {getShortenedAddress(data?.tssReleaseHash || '')}\r\n </ExternalLink>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default HashPopup\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setSolanaConnectModal } from '../../store/optionSlice'\r\nimport {\r\n selectSolanaConnectModal,\r\n selectSolanaProvider,\r\n selectTheme\r\n} from '../../store/selectors'\r\n\r\nimport { useWallet } from '@solana/wallet-adapter-react'\r\nimport { PrimaryButton, SecondaryButton, SolanaWalletSelect } from '../reusable'\r\n\r\nconst SolanaWalletConnectModal = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const connectModal = useSelector(selectSolanaConnectModal)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const { select, connect } = useWallet()\r\n\r\n const handleConnect = () => {\r\n select(selectedProvider)\r\n connect()\r\n dispatch(setSolanaConnectModal(false))\r\n }\r\n\r\n return (\r\n <div\r\n className={`kima-modal wallet-connect ${theme.colorMode} ${\r\n connectModal ? 'open' : ''\r\n }`}\r\n >\r\n <div className='modal-overlay' />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Connect Wallet</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setSolanaConnectModal(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <SolanaWalletSelect />\r\n </div>\r\n <div\r\n className='kima-card-footer'\r\n style={{ justifyContent: 'flex-end', marginTop: '2em' }}\r\n >\r\n <SecondaryButton\r\n clickHandler={() => dispatch(setSolanaConnectModal(false))}\r\n theme={theme.colorMode}\r\n >\r\n Cancel\r\n </SecondaryButton>\r\n <PrimaryButton clickHandler={handleConnect}>Connect</PrimaryButton>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default SolanaWalletConnectModal\r\n","import React from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { setTronConnectModal } from '../../store/optionSlice'\r\nimport {\r\n selectTronConnectModal,\r\n selectSolanaProvider,\r\n selectTheme\r\n} from '../../store/selectors'\r\n\r\nimport { useWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { PrimaryButton, SecondaryButton, TronWalletSelect } from '../reusable'\r\n\r\nconst TronWalletConnectModal = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const connectModal = useSelector(selectTronConnectModal)\r\n const selectedProvider = useSelector(selectSolanaProvider)\r\n const { select, connect } = useWallet()\r\n\r\n const handleConnect = async () => {\r\n try {\r\n select(selectedProvider)\r\n await connect()\r\n dispatch(setTronConnectModal(false))\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n\r\n return (\r\n <div\r\n className={`kima-modal wallet-connect ${theme.colorMode} ${\r\n connectModal ? 'open' : ''\r\n }`}\r\n >\r\n <div className='modal-overlay' />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>Connect Wallet</h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setTronConnectModal(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <TronWalletSelect />\r\n </div>\r\n <div\r\n className='kima-card-footer'\r\n style={{ justifyContent: 'flex-end', marginTop: '2em' }}\r\n >\r\n <SecondaryButton\r\n clickHandler={() => dispatch(setTronConnectModal(false))}\r\n theme={theme.colorMode}\r\n >\r\n Cancel\r\n </SecondaryButton>\r\n <PrimaryButton clickHandler={handleConnect}>Connect</PrimaryButton>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default TronWalletConnectModal\r\n","import React, { useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { setBankPopup, setKYCStatus } from '../../store/optionSlice'\r\nimport {\r\n selectBackendUrl,\r\n selectBankPopup,\r\n selectTheme,\r\n selectUuid\r\n} from '../../store/selectors'\r\nimport { CrossIcon } from '../../assets/icons'\r\nimport { fetchWrapper } from '../../helpers/fetch-wrapper'\r\nimport { toast } from 'react-hot-toast'\r\n\r\ntype KYCResult = {\r\n id: string\r\n status: string\r\n name: string\r\n surname: string\r\n external_uuid: string\r\n account_id: string\r\n created_at: number\r\n}\r\n\r\nconst BankPopup = ({\r\n setVerifying,\r\n isVerifying\r\n}: {\r\n setVerifying?: any\r\n isVerifying?: boolean\r\n}) => {\r\n const dispatch = useDispatch()\r\n const uuid = useSelector(selectUuid)\r\n const theme = useSelector(selectTheme)\r\n const bankPopup = useSelector(selectBankPopup)\r\n const kimaBackendUrl = useSelector(selectBackendUrl)\r\n\r\n useEffect(() => {\r\n if (!kimaBackendUrl || !uuid || !isVerifying) return\r\n const timerId = setInterval(async () => {\r\n try {\r\n const res: any = await fetchWrapper.post(\r\n `${kimaBackendUrl}/kyc`,\r\n JSON.stringify({\r\n uuid\r\n })\r\n )\r\n const kycResult: Array<KYCResult> = res.data\r\n console.log(kycResult)\r\n\r\n if (!kycResult.length) {\r\n console.log('failed to check kyc status')\r\n toast.error('failed to check kyc status')\r\n } else if (kycResult[0].status === 'approved') {\r\n setVerifying(false)\r\n dispatch(setKYCStatus('approved'))\r\n toast.success('KYC is verified')\r\n }\r\n } catch (e) {\r\n console.log('failed to check kyc status')\r\n toast.error('failed to check kyc status')\r\n }\r\n }, 3000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n }, [kimaBackendUrl, uuid, isVerifying])\r\n\r\n return (\r\n <div\r\n className={`kima-modal bank-popup ${theme.colorMode} ${\r\n bankPopup ? 'open' : ''\r\n }`}\r\n >\r\n <div\r\n className='modal-overlay'\r\n onClick={() => {\r\n dispatch(setBankPopup(false))\r\n }}\r\n />\r\n <div className='modal-content-container'>\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'></div>\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => dispatch(setBankPopup(false))}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className='modal-content'>\r\n <iframe\r\n src={`https://sandbox.depasify.com/widgets/kyc?partner=kimastage&user_uuid=${uuid}`}\r\n width='100%'\r\n height='100%'\r\n frameBorder='0'\r\n allow='camera'\r\n ></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default BankPopup\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Tooltip } from 'react-tooltip'\r\nimport { CrossIcon, FooterLogo, MinimizeIcon } from '../assets/icons'\r\nimport Progressbar from './reusable/Progressbar'\r\nimport { ExternalLink, NetworkLabel, StepBox } from './reusable'\r\nimport '../index.css'\r\nimport {\r\n ColorModeOptions,\r\n DAppOptions,\r\n ThemeOptions,\r\n TransactionData\r\n} from '../interface'\r\nimport { Provider } from 'react-redux'\r\nimport { store } from '../store'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { TransactionStatus } from '../utils/constants'\r\nimport { formatterFloat } from '../helpers/functions'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n selectCloseHandler,\r\n selectDappOption,\r\n selectNodeProviderQuery,\r\n selectSuccessHandler,\r\n selectTxId\r\n} from '../store/selectors'\r\nimport { useDispatch } from 'react-redux'\r\nimport { toast, Toaster } from 'react-hot-toast'\r\nimport { initialize } from '../store/optionSlice'\r\nimport { HashPopup, HelpPopup } from './modals'\r\n\r\nexport const TransactionWidget = ({ theme }: { theme: ThemeOptions }) => {\r\n const [step, setStep] = useState(0)\r\n const [focus, setFocus] = useState(-1)\r\n const [errorStep, setErrorStep] = useState(-1)\r\n const [errorMessage, setErrorMessage] = useState('')\r\n const [loadingStep, setLoadingStep] = useState(-1)\r\n const [minimized, setMinimized] = useState(false)\r\n const [percent, setPercent] = useState(0)\r\n const [data, setData] = useState<TransactionData>()\r\n const dispatch = useDispatch()\r\n const txId = useSelector(selectTxId)\r\n const dAppOption = useSelector(selectDappOption)\r\n const closeHandler = useSelector(selectCloseHandler)\r\n const successHandler = useSelector(selectSuccessHandler)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || txId < 0) return\r\n const timerId = setInterval(async () => {\r\n // Monitor last transaction for now until transaction_data endpoint is ready\r\n try {\r\n let data\r\n let result: any\r\n const isLP =\r\n dAppOption === DAppOptions.LPAdd || dAppOption === DAppOptions.LPDrain\r\n\r\n if (isLP) {\r\n result = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/transaction/liquidity_transaction_data/${txId}`\r\n )\r\n data = result?.LiquidityTransactionData\r\n } else {\r\n result = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/transaction/transaction_data/${txId}`\r\n )\r\n data = result?.transactionData\r\n }\r\n\r\n if (!data) return\r\n\r\n // Status of last transaction\r\n if (isLP) {\r\n setData({\r\n status: data.status,\r\n sourceChain: data.chain,\r\n targetChain: data.chain,\r\n tssPullHash:\r\n dAppOption === DAppOptions.LPAdd ? data.tssReleaseHash : '',\r\n tssReleaseHash:\r\n dAppOption === DAppOptions.LPDrain ? data.tssReleaseHash : '',\r\n failReason: data.failReason,\r\n amount: +data.amount,\r\n symbol: data.symbol,\r\n kimaTxHash: data.kimaTxHash\r\n })\r\n } else {\r\n setData({\r\n status: data.status,\r\n sourceChain: data.originChain,\r\n targetChain: data.targetChain,\r\n tssPullHash: data.tssPullHash,\r\n tssReleaseHash: data.tssReleaseHash,\r\n failReason: data.failReason,\r\n amount: +data.amount,\r\n symbol: data.symbol,\r\n kimaTxHash: data.kimaTxHash\r\n })\r\n }\r\n\r\n if (data.status === TransactionStatus.COMPLETED) {\r\n clearInterval(timerId)\r\n setTimeout(() => {\r\n successHandler({\r\n txId\r\n })\r\n }, 3000)\r\n }\r\n } catch (e) {\r\n toast.error('rpc disconnected')\r\n console.log('rpc disconnected', e)\r\n }\r\n }, 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n }, [nodeProviderQuery, txId, dAppOption])\r\n\r\n useEffect(() => {\r\n if (!data) {\r\n setStep(0)\r\n setLoadingStep(0)\r\n return\r\n }\r\n\r\n console.log(data.status)\r\n setErrorStep(-1)\r\n const status = data.status as string\r\n\r\n if (status === TransactionStatus.AVAILABLE) {\r\n setStep(1)\r\n setPercent(25)\r\n setLoadingStep(1)\r\n } else if (status === TransactionStatus.CONFIRMED) {\r\n setStep(2)\r\n setPercent(50)\r\n setLoadingStep(2)\r\n } else if (status.startsWith(TransactionStatus.UNAVAILABLE)) {\r\n setStep(1)\r\n setPercent(25)\r\n setErrorStep(1)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Unavailable')\r\n setErrorMessage('Unavailable')\r\n } else if (status === TransactionStatus.KEYSIGNED) {\r\n setStep(3)\r\n setPercent(75)\r\n setLoadingStep(3)\r\n } else if (status === TransactionStatus.PAID) {\r\n setStep(3)\r\n setPercent(90)\r\n setLoadingStep(3)\r\n } else if (status === TransactionStatus.FAILEDTOPAY) {\r\n setStep(3)\r\n setPercent(90)\r\n setErrorStep(3)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Failed to release tokens to target!')\r\n setErrorMessage('Failed to release tokens to target!')\r\n } else if (status === TransactionStatus.FAILEDTOPULL) {\r\n setStep(1)\r\n setPercent(25)\r\n setErrorStep(1)\r\n setLoadingStep(-1)\r\n console.error(data.failReason)\r\n toast.error('Failed to pull tokens from source!')\r\n setErrorMessage('Failed to pull tokens from source!')\r\n } else if (status === TransactionStatus.COMPLETED) {\r\n setStep(4)\r\n setPercent(100)\r\n setLoadingStep(-1)\r\n }\r\n }, [data?.status])\r\n\r\n return (\r\n <Provider store={store}>\r\n <div\r\n className={`kima-card transaction-card ${theme.colorMode} font-${\r\n theme.fontSize\r\n } ${minimized ? 'minimized' : ''}`}\r\n style={{\r\n fontFamily: theme.fontFamily,\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? theme.backgroundColorLight\r\n : theme.backgroundColorDark\r\n }}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>\r\n Transferring {formatterFloat.format(data?.amount || 0)}{' '}\r\n {data?.symbol || 'USDK'}&nbsp;&nbsp;\r\n {`(${percent}%)`}\r\n </h3>\r\n </div>\r\n\r\n {!minimized ? (\r\n <div className='control-buttons'>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n setMinimized(true)\r\n }}\r\n >\r\n <MinimizeIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n {loadingStep < 0 ? (\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n dispatch(initialize())\r\n closeHandler()\r\n }}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : (\r\n <div className='control-buttons'>\r\n <div className='maximize' onClick={() => setMinimized(false)}>\r\n View\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n {data?.sourceChain && data?.targetChain && (\r\n <NetworkLabel\r\n sourceChain={data?.sourceChain}\r\n targetChain={data?.targetChain}\r\n hasError={errorStep >= 0}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-content'>\r\n <Progressbar\r\n step={step}\r\n focus={focus}\r\n errorStep={errorStep}\r\n setFocus={setFocus}\r\n loadingStep={loadingStep}\r\n />\r\n {/* <Tooltip\r\n step={step}\r\n focus={focus}\r\n errorStep={errorStep}\r\n loadingStep={loadingStep}\r\n data={data}\r\n /> */}\r\n <StepBox\r\n step={step}\r\n errorStep={errorStep}\r\n loadingStep={loadingStep}\r\n data={data}\r\n />\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <ExternalLink to={'https://kima.finance'}>\r\n <FooterLogo\r\n fill={theme.colorMode === 'light' ? 'black' : '#C5C5C5'}\r\n />\r\n </ExternalLink>\r\n </div>\r\n <HelpPopup />\r\n <HashPopup data={data} />\r\n <Toaster\r\n position='top-right'\r\n reverseOrder={false}\r\n containerStyle={{\r\n position: 'absolute'\r\n }}\r\n toastOptions={{\r\n duration: 10 * 1000,\r\n style: {\r\n position: 'relative',\r\n top: '3rem',\r\n right: '1.5rem',\r\n margin: '5px 0',\r\n padding: '.7rem 1.5rem',\r\n color:\r\n theme.colorMode === ColorModeOptions.light ? 'black' : 'white',\r\n fontSize: '1em',\r\n borderRadius: '1em',\r\n border: '1px solid #66aae5',\r\n background: 'transparent'\r\n }\r\n }}\r\n />\r\n <Tooltip\r\n id='error-tooltip'\r\n className={`error-tooltip ${theme.colorMode}`}\r\n content={errorMessage}\r\n style={{ zIndex: 10000 }}\r\n />\r\n </div>\r\n </Provider>\r\n )\r\n}\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport { toast } from 'react-hot-toast'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n selectAmount,\r\n selectCompliantOption,\r\n selectMode,\r\n selectSourceChain,\r\n selectTargetCompliant,\r\n selectTargetChain,\r\n selectTheme,\r\n selectTransactionOption,\r\n selectSelectedToken,\r\n selectServiceFee,\r\n selectFeeDeduct\r\n} from '../../store/selectors'\r\nimport { BankInput, CoinDropdown, CustomCheckbox, WalletButton } from './'\r\nimport { setAmount, setFeeDeduct } from '../../store/optionSlice'\r\nimport { ModeOptions, PaymentTitleOption } from '../../interface'\r\nimport AddressInput from './AddressInput'\r\nimport NetworkDropdown from './NetworkDropdown'\r\nimport { COIN_LIST, ChainName } from '../../utils/constants'\r\nimport { formatterFloat } from '../../helpers/functions'\r\n\r\nconst SingleForm = ({\r\n paymentTitleOption\r\n}: {\r\n paymentTitleOption?: PaymentTitleOption\r\n}) => {\r\n const dispatch = useDispatch()\r\n const mode = useSelector(selectMode)\r\n const theme = useSelector(selectTheme)\r\n const amount = useSelector(selectAmount)\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const targetCompliant = useSelector(selectTargetCompliant)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const sourceNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n const errorMessage = useMemo(\r\n () =>\r\n compliantOption && targetCompliant !== 'low'\r\n ? `Target address has ${targetCompliant} risk`\r\n : '',\r\n [compliantOption, targetCompliant]\r\n )\r\n\r\n useEffect(() => {\r\n if (!errorMessage) return\r\n toast.error(errorMessage)\r\n }, [errorMessage])\r\n\r\n return (\r\n <div className='single-form'>\r\n {mode === ModeOptions.payment ? (\r\n <p className='payment-title' style={paymentTitleOption?.style}>\r\n {paymentTitleOption?.title}\r\n </p>\r\n ) : null}\r\n <div className='form-item'>\r\n <span className='label'>Source Network</span>\r\n <NetworkDropdown />\r\n </div>\r\n\r\n <div\r\n className={`dynamic-area ${\r\n sourceNetwork === ChainName.FIAT ? 'reverse' : ''\r\n }`}\r\n >\r\n <div className='form-item wallet-button-item'>\r\n <span className='label'>Connect wallet:</span>\r\n <WalletButton />\r\n </div>\r\n\r\n {mode === ModeOptions.bridge && (\r\n <div className='form-item'>\r\n <span className='label'>Target Network:</span>\r\n <NetworkDropdown isOriginChain={false} />\r\n </div>\r\n )}\r\n </div>\r\n\r\n {mode === ModeOptions.bridge && sourceNetwork !== ChainName.FIAT ? (\r\n targetNetwork === ChainName.FIAT ? (\r\n <BankInput />\r\n ) : (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Target Address:</span>\r\n <AddressInput />\r\n </div>\r\n )\r\n ) : null}\r\n\r\n {mode === ModeOptions.bridge ? (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Amount:</span>\r\n <div className='amount-label-container'>\r\n <input\r\n type='number'\r\n value={amount || ''}\r\n onChange={(e) => {\r\n let _amount = +e.target.value\r\n dispatch(setAmount(parseFloat(_amount.toFixed(2))))\r\n }}\r\n />\r\n <CoinDropdown />\r\n </div>\r\n </div>\r\n ) : (\r\n <div className={`form-item ${theme.colorMode}`}>\r\n <span className='label'>Amount:</span>\r\n <div className={`amount-label ${theme.colorMode}`}>\r\n <span>{transactionOption?.amount || ''}</span>\r\n <div className='coin-wrapper'>\r\n {<Icon />}\r\n {selectedCoin}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {mode === ModeOptions.bridge && serviceFee > 0? (\r\n <CustomCheckbox\r\n text={`Deduct ${formatterFloat.format(serviceFee)} USDK fee`}\r\n checked={feeDeduct}\r\n setCheck={(value: boolean) => dispatch(setFeeDeduct(value))}\r\n />\r\n ) : null}\r\n </div>\r\n )\r\n}\r\n\r\nexport default SingleForm\r\n","import React from 'react'\r\nimport {\r\n selectAmount,\r\n selectSelectedToken,\r\n selectMode,\r\n selectTheme\r\n} from '../../store/selectors'\r\nimport { useSelector } from 'react-redux'\r\nimport { ModeOptions } from '../../interface'\r\nimport { setAmount } from '../../store/optionSlice'\r\nimport { useDispatch } from 'react-redux'\r\nimport { COIN_LIST } from '../../utils/constants'\r\n\r\nconst CoinSelect = () => {\r\n const dispatch = useDispatch()\r\n const theme = useSelector(selectTheme)\r\n const mode = useSelector(selectMode)\r\n const amount = useSelector(selectAmount)\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const Icon = COIN_LIST[selectedCoin || 'USDK'].icon\r\n\r\n return (\r\n <div className={`coin-select`}>\r\n <p>Select Amount of Token for Funding</p>\r\n {/* <div className='coin-list-container'>\r\n {coinList.map((coin, index) => (\r\n <div\r\n className={`card-item ${theme} ${\r\n index === selectedCoin ? 'active' : ''\r\n }`}\r\n key={coin.symbol}\r\n onClick={() => setCoin(index)}\r\n >\r\n {coin.icon}\r\n <span>{coin.symbol}</span>\r\n </div>\r\n ))}\r\n </div> */}\r\n <div className={`amount-input ${theme.colorMode}`}>\r\n <span>Amount:</span>\r\n <div className='input-wrapper'>\r\n <input\r\n type='number'\r\n value={amount || ''}\r\n readOnly={mode === ModeOptions.payment}\r\n onChange={(e) => {\r\n const _amount = +e.target.value\r\n dispatch(setAmount(parseFloat(_amount.toFixed(2))))\r\n }}\r\n />\r\n <div className='coin-label'>\r\n {<Icon />}\r\n <span>{selectedCoin}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CoinSelect\r\n","import { useEffect, useMemo } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { ModeOptions } from '../interface'\r\nimport { setServiceFee } from '../store/optionSlice'\r\nimport {\r\n selectAmount,\r\n selectMode,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectTargetAddress,\r\n selectTargetChain,\r\n selectTransactionOption\r\n} from '../store/selectors'\r\nimport { ChainName } from '../utils/constants'\r\nimport useIsWalletReady from './useIsWalletReady'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useServiceFee(\r\n isConfirming: boolean = false,\r\n feeURL: string\r\n) {\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const dispatch = useDispatch()\r\n const serviceFee = useSelector(selectServiceFee)\r\n const mode = useSelector(selectMode)\r\n const amount_ = useSelector(selectAmount)\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n const targetAddress_ = useSelector(selectTargetAddress)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n const targetChain = useMemo(\r\n () =>\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetChain || ''\r\n : targetNetwork,\r\n [transactionOption, mode, targetNetwork]\r\n )\r\n const targetAddress = useMemo(\r\n () =>\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress || ''\r\n : targetAddress_,\r\n [transactionOption, mode, targetAddress_]\r\n )\r\n const amount = useMemo(\r\n () => (mode === ModeOptions.payment ? transactionOption?.amount : amount_),\r\n [transactionOption, mode, amount_]\r\n )\r\n\r\n const getServiceFee = async () => {\r\n if (\r\n !sourceChain ||\r\n !targetChain ||\r\n !isReady ||\r\n !walletAddress ||\r\n !targetAddress ||\r\n !amount\r\n )\r\n return\r\n\r\n try {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n dispatch(setServiceFee(0))\r\n return\r\n }\r\n\r\n const sourceChainResult: any = await fetchWrapper.get(\r\n `${feeURL}/fee/${sourceChain}`\r\n )\r\n const sourceFee = sourceChainResult.fee.split('-')[0]\r\n const targetChainResult: any = await fetchWrapper.get(\r\n `${feeURL}/fee/${targetChain}`\r\n )\r\n const targetFee = targetChainResult.fee.split('-')[0]\r\n\r\n let fee = +sourceFee + +targetFee\r\n dispatch(setServiceFee(parseFloat(fee.toFixed(2))))\r\n } catch (e) {\r\n dispatch(setServiceFee(0))\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isConfirming) return\r\n getServiceFee()\r\n const timerId = setInterval(() => {\r\n getServiceFee()\r\n }, 20 * 1000)\r\n\r\n return () => {\r\n clearInterval(timerId)\r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [\r\n sourceChain,\r\n targetChain,\r\n isReady,\r\n walletAddress,\r\n isConfirming,\r\n targetAddress,\r\n amount\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n serviceFee\r\n }),\r\n [serviceFee]\r\n )\r\n}\r\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","import { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport {\r\n AccountMeta,\r\n PublicKey,\r\n Signer,\r\n TransactionInstruction\r\n} from '@solana/web3.js'\r\nimport BN from 'bn.js'\r\nimport BufferLayout from 'buffer-layout'\r\n\r\n\r\n\r\nexport enum TokenInstruction {\r\n InitializeMint = 0,\r\n InitializeAccount = 1,\r\n InitializeMultisig = 2,\r\n Transfer = 3,\r\n Approve = 4,\r\n Revoke = 5,\r\n SetAuthority = 6,\r\n MintTo = 7,\r\n Burn = 8,\r\n CloseAccount = 9,\r\n FreezeAccount = 10,\r\n ThawAccount = 11,\r\n TransferChecked = 12,\r\n ApproveChecked = 13,\r\n MintToChecked = 14,\r\n BurnChecked = 15,\r\n InitializeAccount2 = 16,\r\n SyncNative = 17,\r\n InitializeAccount3 = 18,\r\n InitializeMultisig2 = 19,\r\n InitializeMint2 = 20\r\n}\r\n\r\n/**\r\n * Construct a Transfer instruction\r\n *\r\n * @param source Source account\r\n * @param destination Destination account\r\n * @param owner Owner of the source account\r\n * @param amount Number of tokens to transfer\r\n * @param multiSigners Signing accounts if `owner` is a multisig\r\n * @param programId SPL Token program account\r\n *\r\n * @return Instruction to add to a transaction\r\n */\r\nexport function createTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Transfer,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function createApproveTransferInstruction(\r\n source: PublicKey,\r\n destination: PublicKey,\r\n owner: PublicKey,\r\n amount: number,\r\n multiSigners: Signer[] = [],\r\n programId = TOKEN_PROGRAM_ID\r\n): TransactionInstruction {\r\n const dataLayout = BufferLayout.struct([\r\n BufferLayout.u8('instruction'),\r\n BufferLayout.blob(8, 'amount')\r\n ])\r\n\r\n const keys = addSigners(\r\n [\r\n { pubkey: source, isSigner: false, isWritable: true },\r\n { pubkey: destination, isSigner: false, isWritable: true }\r\n ],\r\n owner,\r\n multiSigners\r\n )\r\n\r\n const data = Buffer.alloc(dataLayout.span)\r\n dataLayout.encode(\r\n {\r\n instruction: TokenInstruction.Approve,\r\n amount: new TokenAmount(amount).toBuffer()\r\n },\r\n data\r\n )\r\n\r\n return new TransactionInstruction({ keys, programId, data })\r\n}\r\n\r\nexport function addSigners(\r\n keys: AccountMeta[],\r\n ownerOrAuthority: PublicKey,\r\n multiSigners: Signer[]\r\n): AccountMeta[] {\r\n if (multiSigners.length) {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false })\r\n for (const signer of multiSigners) {\r\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false })\r\n }\r\n } else {\r\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false })\r\n }\r\n return keys\r\n}\r\n\r\nclass TokenAmount extends BN {\r\n /**\r\n * Convert to Buffer representation\r\n */\r\n toBuffer(): Buffer {\r\n const a = super.toArray().reverse()\r\n const b = Buffer.from(a)\r\n if (b.length === 8) {\r\n return b\r\n }\r\n\r\n if (b.length >= 8) {\r\n throw new Error('TokenAmount too large')\r\n }\r\n\r\n const zeroPad = Buffer.alloc(8)\r\n b.copy(zeroPad)\r\n return zeroPad\r\n }\r\n\r\n /**\r\n * Construct a TokenAmount from Buffer representation\r\n */\r\n // static fromBuffer(buffer: Buffer): TokenAmount {\r\n // if (buffer.length !== 8) {\r\n // throw new Error(`Invalid buffer length: ${buffer.length}`)\r\n // }\r\n\r\n // return new BN(\r\n // [...buffer]\r\n // .reverse()\r\n // .map((i) => `00${i.toString(16)}`.slice(-2))\r\n // .join(''),\r\n // 16\r\n // )\r\n // }\r\n}\r\n","export function byte2hexStr(byte) {\r\n if (typeof byte !== \"number\") throw new Error(\"Input must be a number\");\r\n\r\n if (byte < 0 || byte > 255) throw new Error(\"Input must be a byte\");\r\n\r\n const hexByteMap = \"0123456789ABCDEF\";\r\n\r\n let str = \"\";\r\n str += hexByteMap.charAt(byte >> 4);\r\n str += hexByteMap.charAt(byte & 0x0f);\r\n\r\n return str;\r\n}\r\n\r\nexport function byteArray2hexStr(byteArray) {\r\n let str = \"\";\r\n\r\n for (let i = 0; i < byteArray.length; i++) str += byte2hexStr(byteArray[i]);\r\n\r\n return str;\r\n}\r\n","export function isHexChar(c) {\r\n if (\r\n (c >= \"A\" && c <= \"F\") ||\r\n (c >= \"a\" && c <= \"f\") ||\r\n (c >= \"0\" && c <= \"9\")\r\n ) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport function hexChar2byte(c) {\r\n let d;\r\n\r\n if (c >= \"A\" && c <= \"F\") d = c.charCodeAt(0) - \"A\".charCodeAt(0) + 10;\r\n else if (c >= \"a\" && c <= \"f\") d = c.charCodeAt(0) - \"a\".charCodeAt(0) + 10;\r\n else if (c >= \"0\" && c <= \"9\") d = c.charCodeAt(0) - \"0\".charCodeAt(0);\r\n\r\n if (typeof d === \"number\") return d;\r\n else throw new Error(\"The passed hex char is not a valid hex char\");\r\n}\r\n\r\nexport function hexStr2byteArray(str, strict = false) {\r\n if (typeof str !== \"string\")\r\n throw new Error(\"The passed string is not a string\");\r\n\r\n let len = str.length;\r\n\r\n if (strict) {\r\n if (len % 2) {\r\n str = `0${str}`;\r\n len++;\r\n }\r\n }\r\n const byteArray = [];\r\n let d = 0;\r\n let j = 0;\r\n let k = 0;\r\n\r\n for (let i = 0; i < len; i++) {\r\n const c = str.charAt(i);\r\n\r\n if (isHexChar(c)) {\r\n d <<= 4;\r\n d += hexChar2byte(c);\r\n j++;\r\n\r\n if (0 === j % 2) {\r\n byteArray[k++] = d;\r\n d = 0;\r\n }\r\n } else throw new Error(\"The passed hex char is not a valid hex string\");\r\n }\r\n\r\n return byteArray;\r\n}\r\n\r\n","const ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\r\nconst ALPHABET_MAP = {};\r\n\r\nfor (let i = 0; i < ALPHABET.length; i++) ALPHABET_MAP[ALPHABET.charAt(i)] = i;\r\n\r\nconst BASE = 58;\r\n\r\nexport function encode58(buffer) {\r\n if (buffer.length === 0) return \"\";\r\n\r\n let i;\r\n let j;\r\n\r\n const digits = [0];\r\n\r\n for (i = 0; i < buffer.length; i++) {\r\n for (j = 0; j < digits.length; j++) digits[j] <<= 8;\r\n\r\n digits[0] += buffer[i];\r\n let carry = 0;\r\n\r\n for (j = 0; j < digits.length; ++j) {\r\n digits[j] += carry;\r\n carry = (digits[j] / BASE) | 0;\r\n digits[j] %= BASE;\r\n }\r\n\r\n while (carry) {\r\n digits.push(carry % BASE);\r\n carry = (carry / BASE) | 0;\r\n }\r\n }\r\n\r\n for (i = 0; buffer[i] === 0 && i < buffer.length - 1; i++) digits.push(0);\r\n\r\n return digits\r\n .reverse()\r\n .map((digit) => ALPHABET[digit])\r\n .join(\"\");\r\n}\r\n\r\nexport function decode58(string) {\r\n if (string.length === 0) return [];\r\n\r\n let i;\r\n let j;\r\n\r\n const bytes = [0];\r\n\r\n for (i = 0; i < string.length; i++) {\r\n const c = string[i];\r\n\r\n if (!(c in ALPHABET_MAP)) throw new Error(\"Non-base58 character\");\r\n\r\n for (j = 0; j < bytes.length; j++) bytes[j] *= BASE;\r\n\r\n bytes[0] += ALPHABET_MAP[c];\r\n let carry = 0;\r\n\r\n for (j = 0; j < bytes.length; ++j) {\r\n bytes[j] += carry;\r\n carry = bytes[j] >> 8;\r\n bytes[j] &= 0xff;\r\n }\r\n\r\n while (carry) {\r\n bytes.push(carry & 0xff);\r\n carry >>= 8;\r\n }\r\n }\r\n\r\n for (i = 0; string[i] === \"1\" && i < string.length - 1; i++) bytes.push(0);\r\n\r\n return bytes.reverse();\r\n}\r\n","/* eslint-disable eqeqeq */\r\nimport { utils as ethersUtils } from \"ethers\";\r\nimport { byteArray2hexStr } from \"./bytes\";\r\nimport { hexStr2byteArray } from \"./code\";\r\nimport { encode58, decode58 } from \"./base58\";\r\n\r\nconst ADDRESS_PREFIX = \"41\";\r\n\r\nfunction isHex(string) {\r\n return (\r\n typeof string === \"string\" &&\r\n !isNaN(parseInt(string, 16)) &&\r\n /^(0x|)[a-fA-F0-9]+$/.test(string)\r\n );\r\n}\r\n\r\nfunction SHA256(msgBytes) {\r\n const msgHex = byteArray2hexStr(msgBytes);\r\n const hashHex = ethersUtils.sha256(\"0x\" + msgHex).replace(/^0x/, \"\");\r\n return hexStr2byteArray(hashHex);\r\n}\r\n\r\nfunction getBase58CheckAddress(addressBytes) {\r\n const hash0 = SHA256(addressBytes);\r\n const hash1 = SHA256(hash0);\r\n\r\n let checkSum = hash1.slice(0, 4);\r\n checkSum = addressBytes.concat(checkSum);\r\n\r\n return encode58(checkSum);\r\n}\r\n\r\nfunction decodeBase58Address(base58Sting) {\r\n if (typeof base58Sting != \"string\") return false;\r\n\r\n if (base58Sting.length <= 4) return false;\r\n\r\n let address = decode58(base58Sting);\r\n\r\n if (base58Sting.length <= 4) return false;\r\n\r\n const len = address.length;\r\n const offset = len - 4;\r\n const checkSum = address.slice(offset);\r\n\r\n address = address.slice(0, offset);\r\n\r\n const hash0 = SHA256(address);\r\n const hash1 = SHA256(hash0);\r\n const checkSum1 = hash1.slice(0, 4);\r\n\r\n if (\r\n checkSum[0] == checkSum1[0] &&\r\n checkSum[1] == checkSum1[1] &&\r\n checkSum[2] == checkSum1[2] &&\r\n checkSum[3] == checkSum1[3]\r\n ) {\r\n return address;\r\n }\r\n\r\n throw new Error(\"Invalid address provided\");\r\n}\r\n\r\n/// EXPORTED\r\n\r\nexport function fromHex(address) {\r\n if (!isHex(address)) return address;\r\n\r\n return getBase58CheckAddress(\r\n hexStr2byteArray(address.replace(/^0x/, ADDRESS_PREFIX))\r\n );\r\n}\r\n\r\nexport function toHex(address) {\r\n if (isHex(address))\r\n return address.toLowerCase().replace(/^0x/, ADDRESS_PREFIX);\r\n\r\n return byteArray2hexStr(decodeBase58Address(address)).toLowerCase();\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { Contract } from '@ethersproject/contracts'\r\nimport { formatUnits, parseUnits } from '@ethersproject/units'\r\nimport {\r\n useConnection,\r\n useWallet as useSolanaWallet\r\n} from '@solana/wallet-adapter-react'\r\nimport {\r\n ChainName,\r\n CHAIN_IDS_TO_NAMES,\r\n CHAIN_NAMES_TO_IDS,\r\n isEVMChain\r\n} from '../utils/constants'\r\nimport ERC20ABI from '../utils/ethereum/erc20ABI.json'\r\nimport {\r\n selectAmount,\r\n selectSelectedToken,\r\n selectDappOption,\r\n selectErrorHandler,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectServiceFee,\r\n selectTokenOptions\r\n} from '../store/selectors'\r\nimport { getOrCreateAssociatedTokenAccount } from '../utils/solana/getOrCreateAssociatedTokenAccount'\r\nimport { PublicKey, Transaction } from '@solana/web3.js'\r\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token'\r\nimport { createApproveTransferInstruction } from '../utils/solana/createTransferInstruction'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { useWallet as useTronWallet } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport { tronWeb } from '../tronweb'\r\nimport { fromHex } from '../utils/func'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\nimport { isEmptyObject } from '../helpers/functions'\r\nimport toast from 'react-hot-toast'\r\n\r\ntype ParsedAccountData = {\r\n /** Name of the program that owns this account */\r\n program: string\r\n /** Parsed account data */\r\n parsed: any\r\n /** Space used by account data */\r\n space: number\r\n}\r\n\r\nconst sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))\r\n\r\nexport default function useAllowance({ setApproving }: { setApproving: any }) {\r\n const [allowance, setAllowance] = useState<number>(0)\r\n const [decimals, setDecimals] = useState<number | null>(null)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n\r\n const { address: signerAddress, chainId: evmChainId } =\r\n web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const selectedNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const dAppOption = useSelector(selectDappOption)\r\n const sourceChain = useMemo(() => {\r\n if (\r\n selectedNetwork === ChainName.SOLANA ||\r\n selectedNetwork === ChainName.TRON\r\n )\r\n return selectedNetwork\r\n if (CHAIN_NAMES_TO_IDS[selectedNetwork] !== evmChainId) {\r\n return CHAIN_IDS_TO_NAMES[evmChainId as number]\r\n }\r\n\r\n return selectedNetwork\r\n }, [selectedNetwork, evmChainId])\r\n const amount = useSelector(selectAmount)\r\n const serviceFee = useSelector(selectServiceFee)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const { connection } = useConnection()\r\n const { publicKey: solanaAddress, signTransaction: signSolanaTransaction } =\r\n useSolanaWallet()\r\n const { address: tronAddress, signTransaction: signTronTransaction } =\r\n useTronWallet()\r\n const selectedCoin = useSelector(selectSelectedToken)\r\n const tokenOptions = useSelector(selectTokenOptions)\r\n const tokenAddress = useMemo(() => {\r\n if (isEmptyObject(tokenOptions) || sourceChain === ChainName.FIAT) return ''\r\n\r\n if (tokenOptions && typeof tokenOptions === 'object') {\r\n const coinOptions = tokenOptions[selectedCoin]\r\n if (coinOptions && typeof coinOptions === 'object') {\r\n return tokenOptions[selectedCoin][sourceChain]\r\n }\r\n }\r\n\r\n return ''\r\n }, [selectedCoin, sourceChain, tokenOptions])\r\n const [targetAddress, setTargetAddress] = useState<string>()\r\n const isApproved = useMemo(() => {\r\n return allowance >= amount + serviceFee\r\n }, [allowance, amount, serviceFee, dAppOption])\r\n\r\n const updatePoolAddress = async () => {\r\n try {\r\n const result: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/kima/tss_pubkey`\r\n )\r\n if (result?.tssPubkey?.length < 1) {\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.SOLANA && !result.tssPubkey[0].eddsa) {\r\n console.log('solana pool address is missing')\r\n toast.error('solana pool address is missing')\r\n }\r\n setTargetAddress(\r\n sourceChain === ChainName.SOLANA\r\n ? result.tssPubkey[0].eddsa\r\n : sourceChain === ChainName.TRON\r\n ? fromHex(result.tssPubkey[0].ecdsa)\r\n : result.tssPubkey[0].ecdsa\r\n )\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n updatePoolAddress()\r\n }, [nodeProviderQuery, sourceChain])\r\n\r\n useEffect(() => {\r\n ;(async () => {\r\n try {\r\n if (!isEVMChain(sourceChain)) {\r\n if (solanaAddress && tokenAddress && connection) {\r\n const mint = new PublicKey(tokenAddress)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signSolanaTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n console.log('solana token account: ', accountInfo)\r\n\r\n const parsedAccountInfo = accountInfo?.value\r\n ?.data as ParsedAccountData\r\n\r\n setDecimals(parsedAccountInfo.parsed?.info?.tokenAmount?.decimals)\r\n setAllowance(\r\n parsedAccountInfo.parsed?.info?.delegate === targetAddress\r\n ? parsedAccountInfo.parsed?.info?.delegatedAmount?.uiAmount\r\n : 0\r\n )\r\n } else if (tronAddress && tokenAddress) {\r\n let trc20Contract = await tronWeb.contract(\r\n ERC20ABI.abi,\r\n tokenAddress\r\n )\r\n\r\n const decimals = await trc20Contract.decimals().call()\r\n const userAllowance = await trc20Contract\r\n .allowance(tronAddress, targetAddress)\r\n .call()\r\n\r\n setDecimals(+decimals)\r\n setAllowance(+formatUnits(userAllowance, decimals))\r\n } else {\r\n setAllowance(0)\r\n }\r\n return\r\n }\r\n\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n if (!tokenAddress || !targetAddress || !signer || !signerAddress) return\r\n\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n const decimals = await erc20Contract.decimals()\r\n const userAllowance = await erc20Contract.allowance(\r\n signerAddress,\r\n targetAddress\r\n )\r\n\r\n setDecimals(+decimals)\r\n setAllowance(+formatUnits(userAllowance, decimals))\r\n } catch (error) {\r\n errorHandler(error)\r\n }\r\n })()\r\n }, [\r\n signerAddress,\r\n tokenAddress,\r\n targetAddress,\r\n sourceChain,\r\n solanaAddress,\r\n tronAddress,\r\n walletProvider\r\n ])\r\n\r\n const approve = useCallback(async () => {\r\n if (isEVMChain(sourceChain)) {\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider.getSigner()\r\n if (!decimals || !tokenAddress || !signer || !targetAddress) return\r\n\r\n try {\r\n const erc20Contract = new Contract(tokenAddress, ERC20ABI.abi, signer)\r\n\r\n setApproving(true)\r\n const approve = await erc20Contract.approve(\r\n targetAddress,\r\n parseUnits((amount + serviceFee).toString(), decimals)\r\n )\r\n\r\n await approve.wait()\r\n setApproving(false)\r\n setAllowance(amount + serviceFee)\r\n } catch (error) {\r\n errorHandler(error)\r\n setApproving(false)\r\n }\r\n\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.TRON) {\r\n if (!decimals || !tokenAddress || !targetAddress || !signTronTransaction)\r\n return\r\n\r\n try {\r\n setApproving(true)\r\n const functionSelector = 'approve(address,uint256)'\r\n const parameter = [\r\n { type: 'address', value: targetAddress },\r\n {\r\n type: 'uint256',\r\n value: parseUnits(\r\n (amount + serviceFee).toString(),\r\n decimals\r\n ).toString()\r\n }\r\n ]\r\n\r\n const tx = await tronWeb.transactionBuilder.triggerSmartContract(\r\n tronWeb.address.toHex(tokenAddress),\r\n functionSelector,\r\n {},\r\n parameter,\r\n tronWeb.address.toHex(tronAddress)\r\n )\r\n const signedTx = await signTronTransaction(tx.transaction)\r\n const result = await tronWeb.trx.sendRawTransaction(signedTx)\r\n console.log(result)\r\n\r\n setApproving(false)\r\n setAllowance(amount + serviceFee)\r\n } catch (error) {\r\n errorHandler(error)\r\n setApproving(false)\r\n }\r\n return\r\n }\r\n\r\n // Solana\r\n if (!signSolanaTransaction) return\r\n\r\n try {\r\n setApproving(true)\r\n const mint = new PublicKey(tokenAddress)\r\n const toPublicKey = new PublicKey(targetAddress as string)\r\n const fromTokenAccount = await getOrCreateAssociatedTokenAccount(\r\n connection,\r\n solanaAddress as PublicKey,\r\n mint,\r\n solanaAddress as PublicKey,\r\n signSolanaTransaction /* as SignerWalletAdapterProps['signTransaction']*/\r\n )\r\n\r\n const transaction = new Transaction().add(\r\n createApproveTransferInstruction(\r\n fromTokenAccount.address, // source\r\n toPublicKey, // dest\r\n solanaAddress as PublicKey,\r\n +(amount + serviceFee).toFixed(2) * Math.pow(10, decimals ?? 6), // amount * LAMPORTS_PER_SOL,\r\n [],\r\n TOKEN_PROGRAM_ID\r\n )\r\n )\r\n\r\n const blockHash = await connection.getLatestBlockhash()\r\n transaction.feePayer = solanaAddress as PublicKey\r\n transaction.recentBlockhash = await blockHash.blockhash\r\n const signed = await signSolanaTransaction(transaction)\r\n\r\n await connection.sendRawTransaction(signed.serialize())\r\n\r\n let accountInfo\r\n let allowAmount = 0\r\n let retryCount = 0\r\n\r\n do {\r\n accountInfo = await connection.getParsedAccountInfo(\r\n fromTokenAccount.address\r\n )\r\n\r\n const parsedAccountInfo = accountInfo?.value?.data as ParsedAccountData\r\n allowAmount =\r\n parsedAccountInfo.parsed?.info?.delegate === targetAddress\r\n ? parsedAccountInfo.parsed?.info?.delegatedAmount?.uiAmount\r\n : 0\r\n\r\n await sleep(1000)\r\n } while (allowAmount < amount + serviceFee || retryCount++ < 5)\r\n\r\n setAllowance(amount + serviceFee)\r\n setApproving(false)\r\n } catch (e) {\r\n errorHandler(e)\r\n setApproving(false)\r\n }\r\n }, [\r\n decimals,\r\n tokenAddress,\r\n walletProvider,\r\n amount,\r\n targetAddress,\r\n tronAddress,\r\n signSolanaTransaction,\r\n signTronTransaction,\r\n serviceFee\r\n ])\r\n\r\n return useMemo(\r\n () => ({\r\n isApproved,\r\n approve\r\n }),\r\n [isApproved, approve]\r\n )\r\n}\r\n","import React from 'react'\r\nimport { selectTheme } from '../../store/selectors'\r\nimport { useSelector } from 'react-redux'\r\nimport AddressInput from './AddressInput'\r\n\r\nconst AddressInputWizard = () => {\r\n const theme = useSelector(selectTheme)\r\n\r\n return (\r\n <div className={`coin-select`}>\r\n <p>Select Target Address for Funding</p>\r\n\r\n <div className={`address-input ${theme.colorMode}`}>\r\n <span>Target Address:</span>\r\n <AddressInput />\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default AddressInputWizard\r\n","import { useEffect, useMemo, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport {\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectTargetChain\r\n} from '../store/selectors'\r\nimport { ChainName } from '../utils/constants'\r\nimport { useDispatch } from 'react-redux'\r\nimport { setAvailableTokenList } from '../store/optionSlice'\r\nimport toast from 'react-hot-toast'\r\n\r\nexport default function useCurrencyOptions() {\r\n const dispatch = useDispatch()\r\n const [options, setOptions] = useState('USDK')\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const originNetwork = useSelector(selectSourceChain)\r\n const targetNetwork = useSelector(selectTargetChain)\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery || !originNetwork || !targetNetwork) return\r\n ;(async function () {\r\n try {\r\n if (\r\n originNetwork === ChainName.FIAT ||\r\n targetNetwork === ChainName.FIAT\r\n ) {\r\n setOptions('KEUR')\r\n return\r\n }\r\n const coins: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/get_currencies/${originNetwork}/${targetNetwork}`\r\n )\r\n\r\n dispatch(setAvailableTokenList(coins.Currencies || ['USDK']))\r\n setOptions(coins.Currencies?.length ? coins.Currencies[0] : 'USDK')\r\n } catch (e) {\r\n console.log('rpc disconnected', e)\r\n toast.error('rpc disconnected')\r\n }\r\n })()\r\n }, [nodeProviderQuery, originNetwork, targetNetwork])\r\n\r\n return useMemo(\r\n () => ({\r\n options\r\n }),\r\n [options]\r\n )\r\n}\r\n","import { useEffect, useState } from 'react';\r\n\r\nconst useWidth = () => {\r\n const [width, setWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWidth(window.innerWidth);\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return width;\r\n};\r\n\r\nexport default useWidth;\r\n","import { useCallback, useMemo, useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport sha256 from 'crypto-js/sha256.js'\r\nimport Base64 from 'crypto-js/enc-base64.js'\r\nimport { ChainName } from '../utils/constants'\r\nimport {\r\n selectAmount,\r\n selectErrorHandler,\r\n selectSourceChain\r\n} from '../store/selectors'\r\nimport { setSignature } from '../store/optionSlice'\r\nimport {\r\n useWeb3ModalAccount,\r\n useWeb3ModalProvider\r\n} from '@web3modal/ethers5/react'\r\nimport { Web3ModalAccountInfo } from '../interface'\r\nimport { ethers } from 'ethers'\r\nimport { ExternalProvider, JsonRpcFetchFunc } from '@ethersproject/providers'\r\n\r\nexport default function useSign({ setSigning }: { setSigning: any }) {\r\n const dispatch = useDispatch()\r\n const [isSigned, setIsSigned] = useState<boolean>(false)\r\n const web3ModalAccountInfo: Web3ModalAccountInfo = useWeb3ModalAccount()\r\n const { address: signerAddress } = web3ModalAccountInfo || {\r\n address: null,\r\n chainId: null,\r\n isConnected: null\r\n }\r\n\r\n const { walletProvider } = useWeb3ModalProvider()\r\n const sourceNetwork = useSelector(selectSourceChain)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const amount = useSelector(selectAmount)\r\n\r\n const sign = useCallback(async () => {\r\n if (sourceNetwork !== ChainName.FIAT) {\r\n errorHandler('Failed to sign')\r\n return\r\n }\r\n try {\r\n setSigning(true)\r\n const provider = new ethers.providers.Web3Provider(\r\n walletProvider as ExternalProvider | JsonRpcFetchFunc\r\n )\r\n const signer = provider?.getSigner()\r\n const message = `${amount} | ${signerAddress}`\r\n const signature = await signer?.signMessage(message)\r\n const hash = Base64.stringify(sha256(signature || ''))\r\n setIsSigned(true)\r\n dispatch(setSignature(hash))\r\n setSigning(false)\r\n } catch (error) {\r\n errorHandler(error)\r\n setSigning(false)\r\n }\r\n }, [walletProvider, amount, sourceNetwork, signerAddress])\r\n\r\n return useMemo(\r\n () => ({\r\n isSigned,\r\n sign\r\n }),\r\n [isSigned, sign]\r\n )\r\n}\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { CrossIcon, FooterLogo } from '../assets/icons'\r\nimport {\r\n ConfirmDetails,\r\n ExternalLink,\r\n NetworkSelect,\r\n PrimaryButton,\r\n SecondaryButton,\r\n WalletButton\r\n} from './reusable'\r\nimport {\r\n ColorModeOptions,\r\n DAppOptions,\r\n ModeOptions,\r\n PaymentTitleOption,\r\n ThemeOptions,\r\n TitleOption\r\n} from '../interface'\r\nimport SingleForm from './reusable/SingleForm'\r\nimport CoinSelect from './reusable/CoinSelect'\r\n\r\n// store\r\nimport {\r\n initialize,\r\n setBankPopup,\r\n setSelectedToken,\r\n setSourceCompliant,\r\n setSubmitted,\r\n setTargetAddress,\r\n setTargetCompliant,\r\n setTheme,\r\n setTxId\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport {\r\n selectAmount,\r\n selectBackendUrl,\r\n selectBankDetails,\r\n selectCloseHandler,\r\n selectCompliantOption,\r\n selectDappOption,\r\n selectErrorHandler,\r\n selectMode,\r\n selectNodeProviderQuery,\r\n selectSourceChain,\r\n selectSourceCompliant,\r\n selectTargetAddress,\r\n selectTargetCompliant,\r\n selectTargetChain,\r\n selectKycStatus,\r\n selectKeplrHandler,\r\n selectTransactionOption,\r\n selectFeeDeduct\r\n} from '../store/selectors'\r\nimport useIsWalletReady from '../hooks/useIsWalletReady'\r\nimport useServiceFee from '../hooks/useServiceFee'\r\nimport useAllowance from '../hooks/useAllowance'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport AddressInputWizard from './reusable/AddressInputWizard'\r\nimport { HelpPopup, BankPopup, SolanaWalletConnectModal } from './modals'\r\nimport useCurrencyOptions from '../hooks/useCurrencyOptions'\r\nimport { ChainName, CHAIN_NAMES_TO_STRING } from '../utils/constants'\r\nimport { toast, Toaster } from 'react-hot-toast'\r\nimport useBalance from '../hooks/useBalance'\r\nimport useWidth from '../hooks/useWidth'\r\nimport useSign from '../hooks/useSign'\r\nimport TronWalletConnectModal from './modals/TronWalletConnectModal'\r\n\r\ninterface Props {\r\n theme: ThemeOptions\r\n feeURL: string\r\n helpURL?: string\r\n titleOption?: TitleOption\r\n paymentTitleOption?: PaymentTitleOption\r\n}\r\n\r\nexport const TransferWidget = ({\r\n theme,\r\n feeURL,\r\n helpURL,\r\n titleOption,\r\n paymentTitleOption\r\n}: Props) => {\r\n const dispatch = useDispatch()\r\n const mainRef = useRef<HTMLDivElement>(null)\r\n\r\n // State variables for UI\r\n const [isWizard, setWizard] = useState(false)\r\n const [formStep, setFormStep] = useState(0)\r\n const [wizardStep, setWizardStep] = useState(0)\r\n\r\n // Redux variables\r\n const mode = useSelector(selectMode)\r\n const dAppOption = useSelector(selectDappOption)\r\n const amount = useSelector(selectAmount)\r\n const feeDeduct = useSelector(selectFeeDeduct)\r\n const sourceChain = useSelector(selectSourceChain)\r\n const targetAddress = useSelector(selectTargetAddress)\r\n const targetChain = useSelector(selectTargetChain)\r\n const compliantOption = useSelector(selectCompliantOption)\r\n const sourceCompliant = useSelector(selectSourceCompliant)\r\n const targetCompliant = useSelector(selectTargetCompliant)\r\n const errorHandler = useSelector(selectErrorHandler)\r\n const keplrHandler = useSelector(selectKeplrHandler)\r\n const closeHandler = useSelector(selectCloseHandler)\r\n const { options: selectedToken } = useCurrencyOptions()\r\n const backendUrl = useSelector(selectBackendUrl)\r\n const nodeProviderQuery = useSelector(selectNodeProviderQuery)\r\n const bankDetails = useSelector(selectBankDetails)\r\n const kycStatus = useSelector(selectKycStatus)\r\n const transactionOption = useSelector(selectTransactionOption)\r\n\r\n // Hooks for wallet connection, allowance\r\n const [isApproving, setApproving] = useState(false)\r\n const [isSubmitting, setSubmitting] = useState(false)\r\n const [isSigning, setSigning] = useState(false)\r\n const [isConfirming, setConfirming] = useState(false)\r\n const [isVerifying, setVerifying] = useState(false)\r\n const { walletAddress, isReady } = useIsWalletReady()\r\n const { isApproved, approve } = useAllowance({ setApproving })\r\n const { isSigned, sign } = useSign({ setSigning })\r\n const { serviceFee: fee } = useServiceFee(isConfirming, feeURL)\r\n const { balance } = useBalance()\r\n const windowWidth = useWidth()\r\n\r\n useEffect(() => {\r\n if (!walletAddress) return\r\n dispatch(setTargetAddress(walletAddress))\r\n\r\n if (!compliantOption) return\r\n ;(async function () {\r\n try {\r\n const res = await fetchWrapper.post(\r\n `${backendUrl}/compliant`,\r\n JSON.stringify({\r\n address: walletAddress\r\n })\r\n )\r\n dispatch(setSourceCompliant(res))\r\n } catch (e) {\r\n toast.error('xplorisk check failed')\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }, [walletAddress, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!targetAddress || !compliantOption) return\r\n ;(async function () {\r\n try {\r\n const res = await fetchWrapper.post(\r\n `${backendUrl}/compliant`,\r\n JSON.stringify({\r\n address: targetAddress\r\n })\r\n )\r\n dispatch(setTargetCompliant(res))\r\n } catch (e) {\r\n toast.error('xplorisk check failed')\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }, [targetAddress, compliantOption])\r\n\r\n useEffect(() => {\r\n if (!nodeProviderQuery) return\r\n ;(async function () {\r\n const res: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/pool_balance`\r\n )\r\n\r\n let poolsTable: any = []\r\n\r\n for (const pool of res.poolBalance) {\r\n for (const token of pool.balance) {\r\n poolsTable.push({\r\n chain: CHAIN_NAMES_TO_STRING[pool.chainName],\r\n symbol: token.tokenSymbol,\r\n balance: +token.amount\r\n })\r\n }\r\n }\r\n console.table(poolsTable)\r\n })()\r\n }, [nodeProviderQuery])\r\n\r\n useEffect(() => {\r\n dispatch(setSelectedToken(selectedToken))\r\n }, [selectedToken])\r\n\r\n useEffect(() => {\r\n if (!isReady) {\r\n if (formStep > 0) setFormStep(0)\r\n if (wizardStep > 0) setWizardStep(1)\r\n }\r\n }, [isReady, wizardStep, formStep, dAppOption])\r\n\r\n const checkPoolBalance = async () => {\r\n const res: any = await fetchWrapper.get(\r\n `${nodeProviderQuery}/kima-finance/kima-blockchain/chains/pool_balance`\r\n )\r\n\r\n const poolBalance = res.poolBalance\r\n for (let i = 0; i < poolBalance.length; i++) {\r\n if (poolBalance[i].chainName === targetChain) {\r\n for (let j = 0; j < poolBalance[i].balance.length; j++) {\r\n if (poolBalance[i].balance[j].tokenSymbol !== selectedToken) continue\r\n if (+poolBalance[i].balance[j].amount >= amount + fee) {\r\n return true\r\n }\r\n\r\n const symbol = selectedToken\r\n const errorString = `Tried to transfer ${amount} ${symbol}, but ${\r\n CHAIN_NAMES_TO_STRING[targetChain]\r\n } pool has only ${+poolBalance[i].balance[j].amount} ${symbol}`\r\n console.log(errorString)\r\n toast.error(errorString)\r\n\r\n toast.error(\r\n `${CHAIN_NAMES_TO_STRING[targetChain]} pool has insufficient balance!`\r\n )\r\n errorHandler(errorString)\r\n return false\r\n }\r\n return false\r\n }\r\n }\r\n console.log(`${CHAIN_NAMES_TO_STRING[targetChain]} pool error`)\r\n return false\r\n }\r\n\r\n const handleSubmit = async () => {\r\n if (fee < 0) {\r\n toast.error('Fee is not calculated!')\r\n errorHandler('Fee is not calculated!')\r\n return\r\n }\r\n\r\n if (dAppOption !== DAppOptions.LPDrain && balance < amount) {\r\n toast.error('Insufficient balance!')\r\n errorHandler('Insufficient balance!')\r\n return\r\n }\r\n\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n if (kycStatus !== 'approved') {\r\n setVerifying(true)\r\n dispatch(setBankPopup(true))\r\n return\r\n }\r\n }\r\n\r\n if (sourceChain === ChainName.FIAT) {\r\n if (!isSigned) {\r\n sign()\r\n return\r\n }\r\n } else if (!isApproved && dAppOption !== DAppOptions.LPDrain) {\r\n approve()\r\n return\r\n }\r\n\r\n try {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT)\r\n return\r\n\r\n setSubmitting(true)\r\n\r\n if (\r\n dAppOption === DAppOptions.LPDrain ||\r\n dAppOption === DAppOptions.LPAdd\r\n ) {\r\n keplrHandler(walletAddress)\r\n return\r\n }\r\n\r\n if (!(await checkPoolBalance())) {\r\n setSubmitting(false)\r\n return\r\n }\r\n\r\n const params = JSON.stringify({\r\n originAddress: walletAddress,\r\n originChain: sourceChain,\r\n targetAddress:\r\n mode === ModeOptions.payment\r\n ? transactionOption?.targetAddress\r\n : targetAddress,\r\n targetChain: targetChain,\r\n symbol: selectedToken,\r\n amount: amount,\r\n fee\r\n })\r\n\r\n console.log(params)\r\n await fetchWrapper.post(`${backendUrl}/auth`, params)\r\n const result: any = await fetchWrapper.post(\r\n `${backendUrl}/submit`,\r\n params\r\n )\r\n\r\n console.log(result)\r\n\r\n if (result?.code !== 0) {\r\n errorHandler(result)\r\n toast.error('Failed to submit transaction!')\r\n setSubmitting(false)\r\n return\r\n }\r\n\r\n let txId = -1\r\n\r\n for (const event of result.events) {\r\n if (event.type === 'transaction_requested') {\r\n for (const attr of event.attributes) {\r\n if (attr.key === 'txId') {\r\n txId = attr.value\r\n }\r\n }\r\n }\r\n }\r\n\r\n console.log(txId)\r\n setSubmitting(false)\r\n dispatch(setTxId(txId))\r\n dispatch(setSubmitted(true))\r\n } catch (e) {\r\n errorHandler(e)\r\n setSubmitting(false)\r\n console.log(e?.status !== 500 ? 'rpc disconnected' : '', e)\r\n toast.error('rpc disconnected')\r\n toast.error('Failed to submit transaction')\r\n }\r\n }\r\n\r\n const onNext = () => {\r\n if (isWizard && wizardStep < 5) {\r\n if (wizardStep === 1 && !isReady) {\r\n toast.error('Wallet is not connected!')\r\n errorHandler('Wallet is not connected!')\r\n return\r\n }\r\n if (wizardStep === 3) {\r\n if (targetAddress) {\r\n setWizardStep(4)\r\n }\r\n return\r\n }\r\n if (wizardStep === 4) {\r\n if (fee >= 0 && amount > 0) {\r\n setWizardStep(5)\r\n }\r\n return\r\n }\r\n\r\n if (fee > 0 && fee > amount && feeDeduct) {\r\n toast.error('Fee is greater than amount to transfer!')\r\n errorHandler('Fee is greater than amount to transfer!')\r\n return\r\n }\r\n\r\n if (\r\n mode === ModeOptions.payment &&\r\n wizardStep === 1 &&\r\n fee >= 0 &&\r\n (!compliantOption ||\r\n (sourceCompliant === 'low' && targetCompliant === 'low'))\r\n ) {\r\n setConfirming(true)\r\n setWizardStep(5)\r\n } else setWizardStep((step) => step + 1)\r\n }\r\n\r\n if (!isWizard && !formStep) {\r\n if (isReady) {\r\n if (targetChain === ChainName.FIAT) {\r\n if (!bankDetails.iban) {\r\n toast.error('Invalid IBAN!')\r\n errorHandler('Invalid IBAN!')\r\n return\r\n }\r\n if (!bankDetails.recipient) {\r\n toast.error('Invalid Recipient Address!')\r\n errorHandler('Invalid Recipient Address!')\r\n return\r\n }\r\n }\r\n if (amount <= 0) {\r\n toast.error('Invalid amount!')\r\n errorHandler('Invalid amount!')\r\n return\r\n }\r\n\r\n if (fee < 0) {\r\n toast.error('Fee is not calculated!')\r\n errorHandler('Fee is not calculated!')\r\n return\r\n }\r\n if (\r\n compliantOption &&\r\n (sourceCompliant !== 'low' || targetCompliant !== 'low')\r\n )\r\n return\r\n\r\n if (fee > 0 && fee > amount && feeDeduct) {\r\n toast.error('Fee is greater than amount to transfer!')\r\n errorHandler('Fee is greater than amount to transfer!')\r\n return\r\n }\r\n\r\n if (mode === ModeOptions.payment || (targetAddress && amount > 0)) {\r\n setConfirming(true)\r\n setFormStep(1)\r\n }\r\n return\r\n } else {\r\n toast.error('Wallet is not connected!')\r\n errorHandler('Wallet is not connected!')\r\n }\r\n }\r\n\r\n if ((isWizard && wizardStep === 5) || (!isWizard && formStep > 0)) {\r\n handleSubmit()\r\n }\r\n\r\n mainRef.current?.click()\r\n }\r\n\r\n const onBack = () => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n if (isWizard && wizardStep > 0) {\r\n if (mode === ModeOptions.payment && wizardStep === 5) setWizardStep(1)\r\n else setWizardStep((step) => step - 1)\r\n setConfirming(false)\r\n }\r\n\r\n if (!isWizard && formStep > 0) {\r\n setFormStep(0)\r\n setConfirming(false)\r\n }\r\n\r\n if ((isWizard && wizardStep === 0) || (!isWizard && formStep === 0)) {\r\n closeHandler()\r\n }\r\n }\r\n\r\n const getButtonLabel = () => {\r\n if ((isWizard && wizardStep === 5) || (!isWizard && formStep === 1)) {\r\n if (sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT) {\r\n if (isVerifying) return 'KYC Verifying...'\r\n if (kycStatus !== 'approved') {\r\n return 'KYC Verify'\r\n }\r\n }\r\n if (\r\n (sourceChain !== ChainName.FIAT && isApproved) ||\r\n dAppOption === DAppOptions.LPDrain ||\r\n (sourceChain === ChainName.FIAT && isSigned)\r\n ) {\r\n return isSubmitting ? 'Submitting...' : 'Submit'\r\n } else if (sourceChain === ChainName.FIAT) {\r\n return isSigning ? 'Signing...' : 'Sign'\r\n } else {\r\n return isApproving ? 'Approving...' : 'Approve'\r\n }\r\n }\r\n\r\n return 'Next'\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n }, [theme])\r\n\r\n return (\r\n <div\r\n className={`kima-card ${theme.colorMode} font-${theme.fontSize}`}\r\n style={{\r\n fontFamily: theme.fontFamily,\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? theme.backgroundColorLight\r\n : theme.backgroundColorDark\r\n }}\r\n >\r\n <div className='kima-card-header'>\r\n <div className='topbar'>\r\n <div className='title'>\r\n <h3>\r\n {(isWizard && wizardStep === 3) || (!isWizard && formStep > 0)\r\n ? titleOption?.confirmTitle\r\n ? titleOption?.confirmTitle\r\n : 'Transfer Details'\r\n : titleOption?.initialTitle\r\n ? titleOption?.initialTitle\r\n : 'New Transfer'}\r\n </h3>\r\n </div>\r\n <div className='control-buttons'>\r\n <ExternalLink to={helpURL ?? 'https://docs.kima.finance/demo'}>\r\n <div className='menu-button'>I need help</div>\r\n </ExternalLink>\r\n <button\r\n className='icon-button'\r\n onClick={() => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n dispatch(initialize())\r\n closeHandler()\r\n }}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n <CrossIcon\r\n fill={theme.colorMode === 'light' ? 'black' : 'white'}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className='kima-card-content' ref={mainRef}>\r\n {isWizard ? (\r\n wizardStep === 0 ? (\r\n <NetworkSelect />\r\n ) : wizardStep === 1 ? (\r\n <div className='connect-wallet-step'>\r\n <p>Connect your wallet</p>\r\n <WalletButton errorBelow={true} />\r\n </div>\r\n ) : wizardStep === 2 ? (\r\n <NetworkSelect isOriginChain={false} />\r\n ) : wizardStep === 3 ? (\r\n <AddressInputWizard />\r\n ) : wizardStep === 4 ? (\r\n <CoinSelect />\r\n ) : (\r\n <ConfirmDetails\r\n isApproved={\r\n sourceChain === ChainName.FIAT ? isSigned : isApproved\r\n }\r\n />\r\n )\r\n ) : formStep === 0 ? (\r\n <SingleForm paymentTitleOption={paymentTitleOption} />\r\n ) : (\r\n <ConfirmDetails\r\n isApproved={sourceChain === ChainName.FIAT ? isSigned : isApproved}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className='kima-card-footer'>\r\n <ExternalLink to={'https://kima.finance'}>\r\n <FooterLogo\r\n fill={theme.colorMode === 'light' ? 'black' : '#C5C5C5'}\r\n />\r\n </ExternalLink>\r\n <div className='button-group'>\r\n <SecondaryButton\r\n clickHandler={() => {\r\n if (isApproving || isSubmitting || isSigning) return\r\n setWizard((prev) => !prev)\r\n }}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n theme={theme.colorMode}\r\n style={{ style: { width: '12em', marginLeft: 'auto' } }}\r\n >\r\n Switch to {isWizard ? 'Form' : 'Wizard'}\r\n </SecondaryButton>\r\n <SecondaryButton\r\n clickHandler={onBack}\r\n theme={theme.colorMode}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n {(isWizard && wizardStep > 0) || (!isWizard && formStep > 0)\r\n ? 'Back'\r\n : 'Cancel'}\r\n </SecondaryButton>\r\n <PrimaryButton\r\n clickHandler={onNext}\r\n isLoading={isApproving || isSubmitting || isSigning}\r\n disabled={isApproving || isSubmitting || isSigning}\r\n >\r\n {getButtonLabel()}\r\n </PrimaryButton>\r\n </div>\r\n </div>\r\n <SolanaWalletConnectModal />\r\n <TronWalletConnectModal />\r\n <HelpPopup />\r\n {sourceChain === ChainName.FIAT || targetChain === ChainName.FIAT ? (\r\n <BankPopup setVerifying={setVerifying} isVerifying={isVerifying} />\r\n ) : null}\r\n <Toaster\r\n position='top-right'\r\n reverseOrder={false}\r\n containerStyle={{\r\n position: 'absolute'\r\n }}\r\n toastOptions={{\r\n duration: 3 * 1000,\r\n style: {\r\n position: 'relative',\r\n top: windowWidth > 768 ? '3rem' : '1.5rem',\r\n right: windowWidth > 768 ? '1.5rem' : '0rem',\r\n margin: '5px 0',\r\n padding: '.7rem 1.5rem',\r\n color:\r\n theme.colorMode === ColorModeOptions.light ? 'black' : 'white',\r\n fontSize: '1em',\r\n borderRadius: '1em',\r\n border: '1px solid #66aae5',\r\n background:\r\n theme.colorMode === ColorModeOptions.light\r\n ? 'white'\r\n : theme.backgroundColorDark ?? '#1b1e25'\r\n }\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n","import React, { useEffect } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n TransactionOption,\r\n ThemeOptions,\r\n ModeOptions,\r\n TitleOption,\r\n PaymentTitleOption,\r\n DAppOptions,\r\n ColorModeOptions\r\n} from '../interface'\r\n\r\n// store\r\nimport {\r\n setCloseHandler,\r\n setErrorHandler,\r\n setMode,\r\n setTheme,\r\n setTxId,\r\n setSubmitted,\r\n setTransactionOption,\r\n setAmount,\r\n setSuccessHandler,\r\n setBackendUrl,\r\n setNodeProviderQuery,\r\n setTargetChain,\r\n setTargetAddress,\r\n setSourceChain,\r\n setTargetCompliant,\r\n setCompliantOption,\r\n setUseFIAT,\r\n setProvider,\r\n setWalletAutoConnect,\r\n setDappOption,\r\n setSwitchChainHandler,\r\n setUuid,\r\n setKeplrHandler,\r\n setKimaExplorer,\r\n setSelectedToken\r\n} from '../store/optionSlice'\r\nimport '../index.css'\r\nimport { selectSubmitted } from '../store/selectors'\r\nimport { TransactionWidget } from './TransactionWidget'\r\nimport { TransferWidget } from './TransferWidget'\r\nimport { ChainName } from '../utils/constants'\r\nimport { fetchWrapper } from '../helpers/fetch-wrapper'\r\nimport { Web3Provider } from '@ethersproject/providers'\r\nimport { useWeb3ModalTheme } from '@web3modal/ethers5/react'\r\nimport toast from 'react-hot-toast'\r\n\r\ninterface Props {\r\n theme: ThemeOptions\r\n mode: ModeOptions\r\n txId?: number\r\n useFIAT?: boolean\r\n defaultToken?: string\r\n autoSwitchChain?: boolean\r\n dAppOption?: DAppOptions\r\n provider?: Web3Provider\r\n titleOption?: TitleOption\r\n compliantOption?: boolean\r\n helpURL?: string\r\n feeURL?: string\r\n transactionOption?: TransactionOption\r\n paymentTitleOption?: PaymentTitleOption\r\n kimaBackendUrl: string\r\n kimaNodeProviderQuery: string\r\n kimaExplorer?: string\r\n errorHandler?: (e: any) => void\r\n closeHandler?: (e: any) => void\r\n successHandler?: (e: any) => void\r\n switchChainHandler?: (chainId: number) => void\r\n keplrHandler?: (e: any) => void\r\n}\r\n\r\n/**\r\n * Returns the average of two numbers.\r\n *\r\n * @remarks\r\n * This method is part of the {@link core-library#Statistics | Statistics subsystem}.\r\n *\r\n * @param x - The first input number\r\n * @param y - The second input number\r\n * @returns The arithmetic mean of `x` and `y`\r\n *\r\n * @beta\r\n */\r\n\r\nexport const KimaTransactionWidget = ({\r\n mode,\r\n txId,\r\n autoSwitchChain = true,\r\n defaultToken = 'USDK',\r\n provider,\r\n dAppOption = DAppOptions.None,\r\n theme,\r\n titleOption,\r\n paymentTitleOption,\r\n useFIAT = false,\r\n helpURL = '',\r\n compliantOption = true,\r\n transactionOption,\r\n kimaBackendUrl,\r\n kimaNodeProviderQuery,\r\n kimaExplorer = 'explorer.kima.finance',\r\n feeURL = 'https://fee.kima.finance',\r\n errorHandler = () => void 0,\r\n closeHandler = () => void 0,\r\n successHandler = () => void 0,\r\n switchChainHandler = () => void 0,\r\n keplrHandler = () => void 0\r\n}: Props) => {\r\n const submitted = useSelector(selectSubmitted)\r\n const dispatch = useDispatch()\r\n const { setThemeMode } = useWeb3ModalTheme()\r\n\r\n useEffect(() => {\r\n dispatch(setTheme(theme))\r\n setThemeMode(theme.colorMode === ColorModeOptions.light ? 'light' : 'dark')\r\n\r\n if (transactionOption) dispatch(setTransactionOption(transactionOption))\r\n\r\n dispatch(setKimaExplorer(kimaExplorer))\r\n dispatch(setCompliantOption(compliantOption))\r\n dispatch(setErrorHandler(errorHandler))\r\n dispatch(setKeplrHandler(keplrHandler))\r\n dispatch(setCloseHandler(closeHandler))\r\n dispatch(setSuccessHandler(successHandler))\r\n dispatch(setSwitchChainHandler(switchChainHandler))\r\n dispatch(setBackendUrl(kimaBackendUrl))\r\n dispatch(setNodeProviderQuery(kimaNodeProviderQuery))\r\n dispatch(setMode(mode))\r\n dispatch(setProvider(provider))\r\n dispatch(setDappOption(dAppOption))\r\n dispatch(setWalletAutoConnect(autoSwitchChain))\r\n dispatch(setSelectedToken(defaultToken))\r\n dispatch(setUseFIAT(useFIAT))\r\n if (useFIAT) {\r\n dispatch(setTxId(txId || -1))\r\n ;(async function () {\r\n try {\r\n const uuid = await fetchWrapper.get(`${kimaBackendUrl}/uuid`)\r\n dispatch(setUuid(uuid))\r\n console.log('depasify uuid: ', uuid)\r\n } catch (e) {\r\n console.log('uuid generate failed', e)\r\n }\r\n })()\r\n }\r\n\r\n if (mode === ModeOptions.payment) {\r\n dispatch(\r\n setTargetChain(transactionOption?.targetChain || ChainName.ETHEREUM)\r\n )\r\n\r\n if (\r\n dAppOption === DAppOptions.LPAdd ||\r\n dAppOption === DAppOptions.LPDrain\r\n ) {\r\n dispatch(\r\n setSourceChain(transactionOption?.targetChain || ChainName.ETHEREUM)\r\n )\r\n } else {\r\n ;(async function () {\r\n try {\r\n const networks: any = await fetchWrapper.get(\r\n `${kimaNodeProviderQuery}/kima-finance/kima-blockchain/chains/get_available_chains/${\r\n transactionOption?.targetChain || ChainName.ETHEREUM\r\n }`\r\n )\r\n dispatch(setSourceChain(networks.Chains[0]))\r\n } catch (e) {\r\n toast.error('rpc disconnected!')\r\n console.log('rpc disconnected', e)\r\n }\r\n\r\n try {\r\n if (transactionOption?.targetAddress) {\r\n const compliantRes = await fetchWrapper.post(\r\n `${kimaBackendUrl}/compliant`,\r\n JSON.stringify({\r\n address: transactionOption?.targetAddress\r\n })\r\n )\r\n dispatch(setTargetCompliant(compliantRes))\r\n }\r\n } catch (e) {\r\n toast.error('xplorisk check failed')\r\n console.log('xplorisk check failed', e)\r\n }\r\n })()\r\n }\r\n dispatch(setTargetAddress(transactionOption?.targetAddress || ''))\r\n dispatch(setAmount(transactionOption?.amount || 0))\r\n } else if (mode === ModeOptions.status) {\r\n dispatch(setTxId(txId || 1))\r\n dispatch(setSubmitted(true))\r\n }\r\n }, [provider, theme, transactionOption, errorHandler, closeHandler, mode])\r\n\r\n useEffect(() => {\r\n if (dAppOption === DAppOptions.None && mode === ModeOptions.bridge) {\r\n dispatch(setTargetChain(''))\r\n dispatch(setSourceChain('ETH'))\r\n }\r\n }, [dAppOption, mode])\r\n\r\n return submitted ? (\r\n <TransactionWidget theme={theme} />\r\n ) : (\r\n <TransferWidget\r\n theme={theme}\r\n feeURL={feeURL}\r\n helpURL={helpURL}\r\n titleOption={titleOption}\r\n paymentTitleOption={paymentTitleOption}\r\n />\r\n )\r\n}\r\n","import React, { useMemo } from 'react'\r\nimport { store } from './store'\r\nimport { Provider } from 'react-redux'\r\n\r\nimport * as SolanaAdapter from '@solana/wallet-adapter-react'\r\nimport {\r\n PhantomWalletAdapter,\r\n SolflareWalletAdapter,\r\n CloverWalletAdapter,\r\n Coin98WalletAdapter,\r\n SolongWalletAdapter,\r\n TorusWalletAdapter\r\n} from '@solana/wallet-adapter-wallets'\r\nimport { LedgerAdapter } from '@tronweb3/tronwallet-adapter-ledger'\r\nimport { TronLinkAdapter } from '@tronweb3/tronwallet-adapter-tronlink'\r\nimport { OkxWalletAdapter } from '@tronweb3/tronwallet-adapter-okxwallet'\r\nimport { TokenPocketAdapter } from '@tronweb3/tronwallet-adapter-tokenpocket'\r\nimport { WalletProvider as TronWalletProvider } from '@tronweb3/tronwallet-adapter-react-hooks'\r\nimport {\r\n WalletDisconnectedError,\r\n WalletError,\r\n WalletNotFoundError\r\n} from '@tronweb3/tronwallet-abstract-adapter'\r\nimport { toast } from 'react-hot-toast'\r\nimport { SOLANA_HOST } from './utils/constants'\r\nimport { createWeb3Modal, defaultConfig } from '@web3modal/ethers5/react'\r\n\r\nconst { ConnectionProvider, WalletProvider: SolanaWalletProvider } =\r\n SolanaAdapter\r\n\r\nexport {\r\n FontSizeOptions,\r\n ColorModeOptions,\r\n ThemeOptions,\r\n SupportNetworks,\r\n CurrencyOptions,\r\n ModeOptions,\r\n DAppOptions,\r\n CHAIN_STRING_TO_NAME,\r\n CHAIN_NAMES_TO_STRING\r\n} from './interface'\r\nexport { KimaTransactionWidget } from './components/KimaTransactionWidget'\r\n\r\n// 1. Get projectId\r\nconst projectId = '90c9315fb25e62e202ce09985f70bcf3'\r\n\r\n// 2. Set chains\r\nconst ethereum = {\r\n chainId: 11155111,\r\n name: 'Ethereum Sepolia',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia.etherscan.io',\r\n rpcUrl: 'https://ethereum-sepolia-rpc.publicnode.com'\r\n}\r\n\r\nconst bsc = {\r\n chainId: 97,\r\n name: 'BNB Smart Chain Testnet',\r\n currency: 'tBNB',\r\n explorerUrl: 'https://testnet.bscscan.com',\r\n rpcUrl: 'https://endpoints.omniatech.io/v1/bsc/testnet/public'\r\n}\r\n\r\nconst polygon = {\r\n chainId: 80002,\r\n name: 'Amoy',\r\n currency: 'MATIC',\r\n explorerUrl: 'https://www.oklink.com/amoy',\r\n rpcUrl: 'https://rpc-amoy.polygon.technology'\r\n}\r\n\r\nconst arbitrum = {\r\n chainId: 421614,\r\n name: 'Arbitrum Sepolia Testnet',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia.arbiscan.io/',\r\n rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc'\r\n}\r\n\r\nconst optimism = {\r\n chainId: 11155420,\r\n name: 'OP Sepolia',\r\n currency: 'ETH',\r\n explorerUrl: 'https://sepolia-optimism.etherscan.io',\r\n rpcUrl: 'https://sepolia.optimism.io'\r\n}\r\n\r\nconst avalanche = {\r\n chainId: 43113,\r\n name: 'Avalanche Fuji Testnet',\r\n currency: 'AVAX',\r\n explorerUrl: 'https://testnet.snowtrace.io',\r\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc'\r\n}\r\n\r\nconst zkEVM = {\r\n chainId: 2442,\r\n name: 'Polygon zkEVM Cardona Testnet',\r\n currency: 'ETH',\r\n explorerUrl: 'https://cardona-zkevm.polygonscan.com',\r\n rpcUrl: 'https://polygon-zkevm-cardona.blockpi.network/v1/rpc/public'\r\n}\r\n\r\n// 3. Create modal\r\nconst metadata = {\r\n name: 'Kima Transaction Widget',\r\n description: 'Frontend widget for Kima integration for dApps',\r\n url: 'https://kima.finance',\r\n icons: ['https://avatars.githubusercontent.com/u/37784886']\r\n}\r\n\r\ncreateWeb3Modal({\r\n ethersConfig: defaultConfig({ metadata }),\r\n chains: [ethereum, bsc, polygon, arbitrum, optimism, avalanche, zkEVM],\r\n projectId,\r\n enableAnalytics: false,\r\n featuredWalletIds: [\r\n 'c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96',\r\n 'a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393',\r\n '4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0'\r\n ]\r\n})\r\n\r\nexport const KimaProvider = ({ children }: any) => {\r\n const wallets = [\r\n new PhantomWalletAdapter(),\r\n new SolflareWalletAdapter(),\r\n new CloverWalletAdapter(),\r\n new Coin98WalletAdapter(),\r\n new SolongWalletAdapter(),\r\n new TorusWalletAdapter()\r\n ]\r\n\r\n const adapters = useMemo(function () {\r\n const tronLinkAdapter = new TronLinkAdapter()\r\n const ledger = new LedgerAdapter({\r\n accountNumber: 2\r\n })\r\n const tokenPocketAdapter = new TokenPocketAdapter()\r\n const okxwalletAdapter = new OkxWalletAdapter()\r\n\r\n return [tronLinkAdapter, tokenPocketAdapter, okxwalletAdapter, ledger]\r\n }, [])\r\n\r\n function onError(e: WalletError) {\r\n if (e instanceof WalletNotFoundError) {\r\n toast.error(e.message)\r\n } else if (e instanceof WalletDisconnectedError) {\r\n toast.error(e.message)\r\n } else toast.error(e.message)\r\n }\r\n\r\n const onChainChanged = (chainData: any) => {\r\n toast.error('Please switch to Tron Nile Testnet!')\r\n if (chainData.chainId !== '0xcd8690dc') {\r\n adapters[0].switchChain('0xcd8690dc')\r\n }\r\n }\r\n\r\n return (\r\n <Provider store={store}>\r\n <ConnectionProvider endpoint={SOLANA_HOST}>\r\n <SolanaWalletProvider wallets={wallets}>\r\n <TronWalletProvider\r\n onError={onError}\r\n autoConnect={false}\r\n disableAutoConnectOnLoad={true}\r\n adapters={adapters}\r\n onChainChanged={onChainChanged}\r\n >\r\n {children}\r\n </TronWalletProvider>\r\n </SolanaWalletProvider>\r\n </ConnectionProvider>\r\n </Provider>\r\n )\r\n}\r\n"],"names":["Cross","_ref","width","_ref$width","_ref$height","height","_ref$fill","fill","rest","_objectWithoutPropertiesLoose","_excluded","React","viewBox","xmlns","d","Minimize","FooterLogo","Check","Warning","ArrowRight","Arrow","stroke","strokeWidth","strokeLinecap","strokeLinejoin","Ethereum","x","y","id","patternContentUnits","href","transform","Solana","style","maskType","maskUnits","cx","cy","r","mask","clipPath","Avalanche","Arbitrum","Optimism","version","preserveAspectRatio","USDT","Copy","xmlSpace","Bank","strokeDasharray","strokeMiterlimit","fillRule","opacity","BNB","KEUR","Celo","ETHEREUM_KEUR_ADDRESS","POLYGON_KEUR_ADDRESS","TRON_USDK_OWNER_ADDRESS","ChainName","SupportedChainId","CHAIN_NAMES_TO_IDS","_CHAIN_NAMES_TO_IDS","ETHEREUM","POLYGON","AVALANCHE","BSC","OPTIMISM","ARBITRUM","POLYGON_ZKEVM","POLYGON_ZKEM","CHAIN_NAMES_TO_STRING","_CHAIN_NAMES_TO_STRIN","SOLANA","TRON","FIAT","CHAIN_STRING_TO_NAME","_CHAIN_STRING_TO_NAME","CHAIN_NAMES_TO_EXPLORER","_CHAIN_NAMES_TO_EXPLO","CHAIN_NAMES_TO_GECKO_ID","_CHAIN_NAMES_TO_GECKO","CHAIN_IDS_TO_NAMES","_CHAIN_IDS_TO_NAMES","networkOptions","label","icon","ArbitrumIcon","AvalancheIcon","BSCIcon","EthereumIcon","BankIcon","OptimismIcon","PolygonIcon","SolanaIcon","TronIcon","getNetworkOption","index","findIndex","item","CLUSTER","SOLANA_HOST","clusterApiUrl","isEVMChain","chainId","COIN_LIST","USDK","symbol","USDTIcon","KEURICON","address","ETH","POL","TransactionStatus","FontSizeOptions","ModeOptions","CurrencyOptions","ColorModeOptions","DAppOptions","createSlice","toolkitRaw","initialState","theme","tokenOptions","kimaExplorerUrl","mode","bridge","sourceChain","targetChain","targetAddress","solanaConnectModal","tronConnectModal","helpPopup","hashPopup","bankPopup","walletAutoConnect","provider","undefined","dAppOption","None","solanaProvider","submitted","amount","feeDeduct","errorHandler","closeHandler","successHandler","switchChainHandler","keplrHandler","initChainFromProvider","serviceFee","backendUrl","nodeProviderQuery","txId","selectedToken","avilableTokenList","compliantOption","sourceCompliant","targetCompliant","useFIAT","bankDetails","iban","recipient","targetNetworkFetching","signature","uuid","kycStatus","optionSlice","name","reducers","initialize","state","setTokenOptions","action","payload","setTheme","setKimaExplorer","setSourceChain","setTargetChain","setTargetAddress","setSolanaConnectModal","setTronConnectModal","setHelpPopup","setHashPopup","setBankPopup","setProvider","setDappOption","setWalletAutoConnect","setSolanaProvider","setSubmitted","setTransactionOption","transactionOption","setAmount","setErrorHandler","setKeplrHandler","setCloseHandler","setSwitchChainHandler","setInitChainFromProvider","setSuccessHandler","setServiceFee","setMode","setFeeDeduct","setBackendUrl","setNodeProviderQuery","setTxId","setSelectedToken","setAvailableTokenList","setCompliantOption","setSourceCompliant","setTargetCompliant","setUseFIAT","setBankDetails","setTargetChainFetching","setSignature","setUuid","setKYCStatus","_optionSlice$actions","actions","reducer","configureStore","store","option","optionReducer","middleware","getDefaultMiddleware","serializableCheck","selectTokenOptions","selectTheme","selectKimaExplorer","selectSourceChain","selectTargetChain","selectTargetAddress","selectSolanaConnectModal","selectTronConnectModal","selectHelpPopup","selectHashPopup","selectBankPopup","selectSolanaProvider","selectDappOption","selectWalletAutoConnect","selectSubmitted","selectTransactionOption","selectAmount","selectErrorHandler","selectKeplrHandler","selectCloseHandler","selectSuccessHandler","selectServiceFee","selectMode","selectFeeDeduct","selectBackendUrl","selectNodeProviderQuery","selectTxId","selectSelectedToken","selectAvailableTokenList","selectCompliantOption","selectSourceCompliant","selectTargetCompliant","selectUseFIAT","selectBankDetails","selectTargetChainFetching","selectSignature","selectUuid","selectKycStatus","Loading180Ring","attributeName","type","dur","values","repeatCount","stepInfo","title","Progressbar","step","errorStep","setFocus","loadingStep","useSelector","className","map","key","onClick","colorMode","WarningIcon","CheckIcon","ExternalLink","to","children","target","rel","NetworkLabel","hasError","SourceInfo","TargetInfo","ArrowRightIcon","PrimaryButton","clickHandler","_ref$isLoading","isLoading","_ref$disabled","disabled","ref","SecondaryButton","fetchWrapper","get","post","url","requestOptions","method","headers","fetch","then","handleResponse","body","credentials","response","text","data","JSON","parse","error","ok","statusText","Promise","reject","status","useNetworkOptions","dispatch","useDispatch","_useState","useState","options","setOptions","useEffect","resolve","networks","filter","network","Chain","chain","_iterator","_createForOfIteratorHelperLoose","_step","done","value","_iterator2","tokens","_step2","token","e","console","log","toast","_temp","useMemo","Network","isOriginChain","_ref$isOriginChain","sourceChangeRef","useRef","originNetwork","targetNetwork","sliderRef","availableNetworks","setAvailableNetworks","_useNetworkOptions","selectedNetwork","Chains","current","isDown","startX","scrollLeft","_sliderRef$current","addEventListener","_sliderRef$current2","classList","add","pageX","_sliderRef$current3","offsetLeft","_sliderRef$current4","_sliderRef$current5","remove","_sliderRef$current6","_sliderRef$current7","preventDefault","walk","slideLeft","temp","timerId","setInterval","clearInterval","slideRight","ArrowIcon","SolanaWalletSelect","selectedProvider","_useWallet","useWallet","wallets","_useMemo","detected","undetected","wallet","readyState","WalletReadyState","Installed","Loadable","push","NotDetected","adapter","src","alt","WalletSelect","AdapterState","Connected","Disconnect","Loading","NotFound","createWalletStatus","isReady","statusMessage","forceNetworkSwitch","walletAddress","useIsWalletReady","autoSwitch","_useSolanaWallet","useSolanaWallet","solanaAddress","publicKey","_useTronWallet","useTronWallet","tronAddress","_useWeb3ModalProvider","useWeb3ModalProvider","evmProvider","walletProvider","_useSwitchNetwork","useSwitchNetwork","switchNetwork","web3ModalAccountInfo","useWeb3ModalAccount","isConnected","evmAddress","evmChainId","correctChain","hasEthInfo","correctEvmNetwork","hasCorrectEvmNetwork","events","useWeb3ModalEvents","_events$data","event","_events$data2","_events$data3","_events$data3$propert","localStorage","setItem","properties","useCallback","_catch","getItem","toBase58","success","getShortenedAddress","is0x","addr","startsWith","substring","substr","length","connectWalletBtn","createAssociatedTokenAccountInstruction","payer","associatedToken","owner","mint","programId","associatedTokenProgramId","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","keys","pubkey","isSigner","isWritable","SystemProgram","SYSVAR_RENT_PUBKEY","TransactionInstruction","Buffer","alloc","getAccountInfo","connection","commitment","info","Error","equals","AccountLayout","span","rawAccount","decode","from","delegate","delegateOption","delegatedAmount","isInitialized","AccountState","Uninitialized","isFrozen","Frozen","isNative","isNativeOption","rentExemptReserve","closeAuthority","closeAuthorityOption","getAssociatedTokenAddress","allowOwnerOffCurve","PublicKey","isOnCurve","toBuffer","findProgramAddress","getOrCreateAssociatedTokenAccount","signTransaction","_exit","_temp4","_result","account","_temp3","_getAccountInfo","err","message","_temp2","_getAccountInfo2","transaction","Transaction","getRecentBlockhash","blockHash","_payer","feePayer","blockhash","_blockHash$blockhash","recentBlockhash","signed","sendRawTransaction","serialize","confirmTransaction","tronWeb","TronWeb","fullHost","setAddress","formatterFloat","Intl","NumberFormat","maximumFractionDigits","isEmptyObject","arg","Object","useBalance","balance","setBalance","signerAddress","_useConnection","useConnection","selectedCoin","tokenAddress","coinOptions","_result3","ethers","providers","Web3Provider","signer","getSigner","erc20Contract","Contract","ERC20ABI","abi","decimals","balanceOf","userBalance","formatUnits","contract","trc20Contract","call","fromTokenAccount","getParsedAccountInfo","accountInfo","_accountInfo$value","_parsedAccountInfo$pa","_parsedAccountInfo$pa2","_parsedAccountInfo$pa3","_parsedAccountInfo$pa4","_parsedAccountInfo$pa5","_parsedAccountInfo$pa6","parsedAccountInfo","parsed","tokenAmount","WalletButton","errorBelow","_ref$errorBelow","_useIsWalletReady","_useBalance","_useWeb3Modal","useWeb3Modal","open","handleClick","errorMessage","format","CoinDropdown","collapsed","setCollapsed","tokenList","Icon","bodyMouseDowntHandler","contains","document","removeEventListener","prev","CoinIcon","NetworkDropdown","memo","_useState2","autoSwitchChain","chains","payment","LPAdd","LPDrain","ConfirmDetails","isApproved","originNetworkOption","targetNetworkOption","sourceWalletAddress","targetWalletAddress","AddressInput","onChange","CustomCheckbox","checked","setCheck","CopyButton","copyClicked","setCopyClicked","setTimeout","navigator","clipboard","writeText","CopyIcon","StepBox","explorerUrl","kimaTxHash","tssPullHash","tssReleaseHash","BankInput","_extends","HelpPopup","CrossIcon","HashPopup","SolanaWalletConnectModal","connectModal","select","connect","handleConnect","justifyContent","marginTop","TronWalletConnectModal","TronWalletSelect","BankPopup","setVerifying","isVerifying","kimaBackendUrl","stringify","res","kycResult","frameBorder","allow","TransactionWidget","setStep","focus","_useState3","setErrorStep","_useState4","setErrorMessage","_useState5","setLoadingStep","_useState6","minimized","setMinimized","_useState7","percent","setPercent","_useState8","setData","isLP","failReason","originChain","COMPLETED","result","_fetchWrapper$get","_result2","LiquidityTransactionData","_fetchWrapper$get2","transactionData","AVAILABLE","CONFIRMED","UNAVAILABLE","KEYSIGNED","PAID","FAILEDTOPAY","FAILEDTOPULL","Provider","fontSize","fontFamily","background","light","backgroundColorLight","backgroundColorDark","MinimizeIcon","Toaster","position","reverseOrder","containerStyle","toastOptions","duration","top","right","margin","padding","color","borderRadius","border","Tooltip","content","zIndex","SingleForm","paymentTitleOption","sourceNetwork","_amount","parseFloat","toFixed","CoinSelect","readOnly","useServiceFee","isConfirming","feeURL","amount_","targetAddress_","getServiceFee","sourceChainResult","sourceFee","fee","split","targetChainResult","targetFee","this","TokenInstruction","createApproveTransferInstruction","source","destination","multiSigners","dataLayout","BufferLayout","struct","u8","blob","addSigners","encode","instruction","Approve","TokenAmount","ownerOrAuthority","_BN","_inheritsLoose","apply","arguments","_proto","prototype","a","toArray","reverse","b","zeroPad","copy","BN","byte2hexStr","byte","hexByteMap","str","charAt","byteArray2hexStr","byteArray","i","isHexChar","c","hexChar2byte","charCodeAt","hexStr2byteArray","strict","len","j","k","ALPHABET","BASE","encode58","buffer","digits","carry","digit","join","ADDRESS_PREFIX","isHex","string","isNaN","parseInt","test","SHA256","msgBytes","msgHex","hashHex","ethersUtils","sha256","replace","getBase58CheckAddress","addressBytes","hash0","hash1","checkSum","slice","concat","fromHex","sleep","delay","useAllowance","setApproving","allowance","setAllowance","setDecimals","_ref2","signSolanaTransaction","signTronTransaction","updatePoolAddress","_result$tssPubkey","tssPubkey","eddsa","ecdsa","_temp5","userAllowance","_parsedAccountInfo$pa7","_parsedAccountInfo$pa8","uiAmount","_temp6","approve","_temp13","toPublicKey","Math","pow","getLatestBlockhash","_temp12","allowAmount","retryCount","_temp11","_do","_connection$getParsed","_accountInfo","_accountInfo$value2","_parsedAccountInfo$pa9","_parsedAccountInfo$pa10","_parsedAccountInfo$pa11","_parsedAccountInfo$pa12","_parsedAccountInfo$pa13","_temp14","_temp10","_exit3","_temp9","functionSelector","parameter","parseUnits","toString","transactionBuilder","triggerSmartContract","toHex","tx","signedTx","trx","_temp15","_exit2","_temp16","_temp8","_temp7","wait","_temp17","AddressInputWizard","useCurrencyOptions","coins","_coins$Currencies","Currencies","useWidth","window","innerWidth","setWidth","handleResize","useSign","setSigning","isSigned","setIsSigned","sign","signMessage","hash","Base64","TransferWidget","helpURL","titleOption","mainRef","isWizard","setWizard","formStep","setFormStep","wizardStep","setWizardStep","_useCurrencyOptions","isApproving","isSubmitting","setSubmitting","isSigning","setConfirming","_useAllowance","_useSign","_useServiceFee","windowWidth","poolsTable","poolBalance","pool","chainName","tokenSymbol","table","checkPoolBalance","errorString","handleSubmit","_checkPoolBalance","params","originAddress","code","_iterator3","_step3","_iterator4","attributes","_step4","attr","onNext","_mainRef$current","click","onBack","getButtonLabel","confirmTitle","initialTitle","NetworkSelect","marginLeft","_theme$backgroundColo","KimaTransactionWidget","_ref$autoSwitchChain","_ref$defaultToken","defaultToken","_ref$dAppOption","_ref$useFIAT","_ref$helpURL","_ref$compliantOption","kimaNodeProviderQuery","_ref$kimaExplorer","kimaExplorer","_ref$feeURL","_ref$errorHandler","_ref$closeHandler","_ref$successHandler","_ref$switchChainHandl","_ref$keplrHandler","_useWeb3ModalTheme","useWeb3ModalTheme","setThemeMode","compliantRes","ConnectionProvider","SolanaAdapter","SolanaWalletProvider","projectId","ethereum","currency","rpcUrl","bsc","polygon","arbitrum","optimism","avalanche","zkEVM","metadata","description","icons","createWeb3Modal","ethersConfig","defaultConfig","enableAnalytics","featuredWalletIds","KimaProvider","PhantomWalletAdapter","SolflareWalletAdapter","CloverWalletAdapter","Coin98WalletAdapter","SolongWalletAdapter","TorusWalletAdapter","adapters","tronLinkAdapter","TronLinkAdapter","ledger","LedgerAdapter","accountNumber","tokenPocketAdapter","TokenPocketAdapter","okxwalletAdapter","OkxWalletAdapter","onError","WalletNotFoundError","WalletDisconnectedError","onChainChanged","chainData","switchChain","endpoint","TronWalletProvider","autoConnect","disableAutoConnectOnLoad"],"mappings":"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AC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,IAA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GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACtD,IAAI,EAAE,IAAI,SAAS,CAAC;AACpB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,IAAI,GAAG,IAAI,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GA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"}