{"version":3,"sources":["hooks/Language/languages sync /^/.//.*$","pages/_Layouts/Swap/styles.ts","pages/_Layouts/Swap/index.tsx","routes/Route.tsx","pages/NotFoundPage/styles.ts","assets/logo/logo-p-purple.svg","assets/defaults/not-found-image.png","pages/NotFoundPage/index.tsx","services/api/index.ts","assets/animations/frown.gif","utils/swalError.ts","components/WalletAvatarPageswap/styles.ts","assets/logo/logo-swap.png","components/WalletAvatarPageswap/index.tsx","store.tsx","utils/format.ts","pages/PageSwap/styles.ts","components/InputMask/styles.ts","components/InputMask/index.tsx","components/Loading/styles.ts","components/Loading/index.tsx","components/ModalExchangeSuccessful/styles.ts","assets/defaults/wallet-exchange.png","components/ModalExchangeSuccessful/index.tsx","components/ModalClearApproval/styles.ts","assets/defaults/update-required.png","assets/defaults/update-complete.png","components/ModalClearApproval/index.tsx","components/ModalNetworkSwitch/index.tsx","assets/logo/logo-usdpi.svg","assets/logo/logo-eth.svg","assets/logo/logo-usdt.svg","assets/icons/arrow.svg","assets/logo/swap-right.svg","assets/icons/refresh-balances.svg","pages/PageSwap/index.tsx","routes/index.tsx","styles/global.ts","hooks/Resize.tsx","hooks/Language/index.tsx","hooks/index.tsx","App.tsx","index.tsx"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","Wrapper","styled","div","props","userProfile","DefaultLayout","children","useLocation","useState","Route","isPrivate","Component","component","rest","Layout","useMemo","Swap","render","location","Container","NotFoundPage","className","src","logo","alt","notFound","to","process","api","axios","create","baseURL","swalError","a","message","textButton","heading","Swal","fire","title","html","frown","customClass","confirmButtonText","BtnAvatar","button","isFunnel","Avatar","WalletAvatarPageswap","selectedAddress","useRef","useHistory","setBalance","disconnect","setDisconnect","useCallback","setTimeout","type","logoSwap","pathname","truncate","web3store","createStore","setState","formatPrice","Intl","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","format","RefreshBtn","ConnectBtn","darken","Card","background","SelectCoin","left","right","active","isErrored","css","isFilled","isFocuses","MaskInput","kind","name","onChange","onFocus","onBlur","value","placeholder","options","required","maskRef","undefined","newValue","setNewValue","setIsFocuses","setIsFilled","useField","fieldName","error","registerField","useEffect","ref","current","path","handleChange","data","target","handleFocus","handleBlur","onChangeText","Loading","text","srcImg","processText","displayText","setDisplayText","length","startsWith","Modal","ModalComponent","ModalExchangeSuccessful","show","handleClose","hash","size","onHide","onClick","Header","walletExchange","Body","href","rel","Footer","ModalUpdate","ModalClearApproval","showUpdate","showUpdateComplete","handleCloseUpdate","handleCloseUpdateComplete","handleUpdateBtn","handleSwapBtn","updateRequired","updateComplete","networkSwitch","newNetwork","Promise","reject","nativeCurrency","network","provider","window","ethereum","request","method","then","currentNetworkId","symbol","decimals","parseInt","chainId","chainName","rpcUrls","blockExplorerUrls","params","console","log","catch","neterror","PageSwap","formRef","setShow","invertCard","setInvertCard","exchangeValue","setExchangeValue","exchangeValueEth","setExchangeValueEth","feeValue","setFeeValue","receiveValue","setReceiveValue","setError","debouncedValue","setDebouncedValue","loading","setLoading","setType","pollingEnabled","selectedMode","setSelectedMode","account","setAccount","ethBalance","setEthBalance","ethValue","setEthValue","setUsdpiBalance","balbusd","balusdpi","setBalusdpi","balusdt","setBalusdt","liqusdt","setLiqusdt","liqbusd","setLiqbusd","isValidSwap","setIsValidSwap","placeHolder","setPlaceHolder","actionBtnText","setActionBtnText","setProcessText","showCongrat","setShowCongrat","congratHash","setCongratHash","setShowUpdate","setShowUpdateComplete","usdtAllowance","setUsdtAllowance","tokenETH","logoEth","descriptionBnb","descriptionEth","priceEth","priceBnb","cardStyle","tokenUSDT","logoUsdt","tokens","setTokens","tokenSelected","setTokenSelected","networks","networkSelected","setNetworkSelected","busd","parseFloat","toFixed","usdt","ethBal_f","truncatedValue","Math","floor","usdpi","usdt_liq_f","usdt_allowance_f","usdValueInWei","usdtWeiNumber","utils","formatUnits","formatUSDValueFromWei","toString","eth_value_f","ethValueNumber","parsedLiqusdt","formattedPrice","newPriceEth","prevTokens","token","updateTokenPrice","handler","clearTimeout","replaceAll","amt","get","response","fee","estimate","net","feeerror","valueAsETH","valueAsETHString","weiAmountString","ethers","parseUnits","ethValueInWei","Number","fromWei","formatEthValue","handleChangePrice","slice","coinUsdpi","coinUsdt","liqUsdt","showMaxBtn","handleMax","fetchBalances","balances","wallet_eth","wallet_usdpi","wallet_usdt","fetchLiquidity","liquidity","fetchAllBalances","executeSwapUsdpi","hashData","sig","deadline","amt2authorize","nonce","chain","post","owner","amount","signature","sallresponse","sellerror","getUsdtAllowance","allowance","usdValueStr","priceResult","priceError","handleApproveUsdt","usdtWeiString","tprovider","providers","Web3Provider","tsigner","getSigner","contractusdt","Contract","erc20Abi","overrides","gasLimit","getAddress","BigNumber","from","gte","gt","connect","approve","trxapprove","wait","receipt","executeSwapUsdt","accounts","contract","usdtBank","usdtAmount","depositUsdt","trx","nft_id","wallet","tx_hash","intentResponse","eventId","event_id","JSON","stringify","userMessage","reason","includes","status","txHash","transactionHash","tx","logExchange","acctresponse","logError","handleSubmitExchange","usdpiWeiString","wallet_address","domainData","version","verifyingContract","types","Permit","val","spender","_signTypedData","sellResult","sellError","sigerror","hasheserror","switchError","swapBank","EthUsdtSwapV3Abi","ethExchangeValueFloat","ethExchangeValue","swapEth4Usdt","intervalId","setInterval","getTransactionReceipt","confirmations","clearInterval","logResult","ethSwapError","replace","approvalResponse","swapTX","swapTXString","swapError","errorMessage","approvalError","handleClick","typeData","state","handleSelectToken","handleSelectNetwork","handleModeChange","event","handleMetamask","walletexistserror","signer","walletconnecterror","handleAccountsChanged","checksumAddress","on","removeListener","interval","handleCloseCongrats","handleC14PurchaseClick","c14url","open","mmerror","handleImportUsdt","tokenSymbol","chainInt","address","image","addresponse","adderror","swerr","disabled","preventDefault","style","cursor","refreshBalances","role","tabIndex","onKeyDown","key","checked","htmlFor","width","height","swapRight","logoUsdpi","data-tooltip","color","onSubmit","InputMask","unit","delimiter","separator","arrow","index","routes","exact","NotFound","createGlobalStyle","ResizeContext","createContext","ResizeProvider","innerWidth","setWidth","updateSize","useLayoutEffect","addEventListener","removeEventListener","Provider","LanguageContext","LanguageProvider","localStorage","getItem","idiom","setIdiom","handleSelectIdiom","idiomSelected","language","setItem","require","AppProvider","App","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.65956036.chunk.js","sourcesContent":["var map = {\n\t\"./en\": 195,\n\t\"./en.json\": 195,\n\t\"./es\": 196,\n\t\"./es.json\": 196\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 368;","import styled from 'styled-components';\n\ninterface Props {\n userProfile: boolean;\n}\nexport const Wrapper = styled.div`\n display: flex;\n flex-direction: column; /* Stack child elements vertically */\n align-items: center;\n width: 100%;\n background: #18191a;\n min-height: 100vh;\n\n @media screen and (max-width: 991px) {\n display: block;\n }\n`;\n\nexport const HeaderSpacer = styled.div`\n width: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n background-color: #1d2023;\n\n @media screen and (max-width: 991px) {\n width: 100%;\n height: 60px;\n justify-content: flex-start;\n }\n`;\n\nexport const Separator = styled.div`\n background-color: #18191a;\n width: calc(${(props) => (props.userProfile ? '100%' : '100% - 160px')});\n padding: ${(props) => (props.userProfile ? '0' : '20px')};\n\n @media screen and (max-width: 991px) {\n width: 100%;\n padding: 10px 0;\n }\n`;\n\nexport const FooterSpacer = styled.div`\n width: 35%;\n background: #202020;\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// import Header from '~/components/HeaderPrivate'; // ************\n// import ModalDisconnected from '~/components/ModalDisconnected';\n\nimport { Wrapper, HeaderSpacer, Separator } from './styles';\n\nconst DefaultLayout: React.FC = ({ children }) => {\n const location = useLocation();\n const [unshowMenu, setUnshowMenu] = useState(false);\n\n return {children};\n};\n\nexport default DefaultLayout;\n","import React, { FC, ComponentType, useMemo, useEffect } from 'react';\nimport {\n Route as ReactDOMRoute,\n RouteProps as ReactDOMRouterProps,\n Redirect,\n} from 'react-router-dom';\n\n// import { useAuth } from '../hooks/Auth';\n\n// import Auth from '~/pages/_Layouts/Auth';\n// import Default from '~/pages/_Layouts/Default';\nimport Swap from '~/pages/_Layouts/Swap';\n\ninterface RouteProps extends ReactDOMRouterProps {\n isPrivate?: boolean;\n component: ComponentType;\n}\n\nconst Route: FC = ({\n isPrivate = false,\n component: Component,\n ...rest\n}) => {\n // const { connected, user } = useAuth();\n // console.log('+++++ rest +++++');\n // console.log(rest);\n // useEffect(() => {\n // // console.log(connected);\n // // console.log(isPrivate);\n // }, [connected, isPrivate]);\n\n const Layout = useMemo(() => {\n return Swap;\n }, [isPrivate]);\n\n return (\n {\n return isPrivate ? (\n \n \n \n ) : (\n \n \n \n );\n }}\n />\n );\n};\n\nexport default Route;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n h1 {\n font-weight: 400;\n font-size: 36px;\n line-height: 44px;\n color: #5c5c5c;\n }\n\n .gradient-home {\n background: linear-gradient(\n 270.04deg,\n #fb5a43 0.03%,\n #c341ae 50.77%,\n #9445c2 100%\n );\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n text-fill-color: transparent;\n }\n\n .border-underline {\n border: none;\n padding: 0 0 2px 0;\n background-image: linear-gradient(180deg, #18191a, #18191a),\n linear-gradient(270.04deg, #fb5a43 0.03%, #c341ae 50.77%, #9445c2 100%);\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n -webkit-transition-duration: 0.3s;\n -webkit-transition-duration: 0.3s;\n transition-duration: 0.3s;\n }\n\n .start-text {\n font-weight: 400;\n font-size: 20px;\n\n color: #ffffff;\n }\n`;\n","export default __webpack_public_path__ + \"static/media/logo-p-purple.6ad0b4f8.svg\";","export default __webpack_public_path__ + \"static/media/not-found-image.7e6324c8.png\";","import React from 'react';\n\nimport { Link } from 'react-router-dom';\nimport { Container } from './styles';\nimport logo from '~/assets/logo/logo-p-purple.svg';\nimport notFound from '~/assets/defaults/not-found-image.png';\n\nconst NotFoundPage: React.FC = () => {\n return (\n \n
\n
\n
\n \"Logo\"\n
\n
\n \n
\n

\n It looks like this page doesn't exist, but don't let that stop you.\n

\n
\n Start at \n \n Home\n \n
\n
\n
\n
\n );\n};\n\nexport default NotFoundPage;\n","import axios from 'axios';\n\n// const api = axios.create({ baseURL: 'http://api.pcode.pro' });\nconst api = axios.create({ baseURL: process.env.REACT_APP_API });\n\nexport default api;\n","export default __webpack_public_path__ + \"static/media/frown.240659c6.gif\";","import Swal, { SweetAlertResult } from 'sweetalert2';\nimport frown from '~/assets/animations/frown.gif';\n\ninterface ISwalError {\n message: string;\n textButton: string;\n heading?: string; // Optional heading parameter\n}\n\nexport default async function swalError({\n message,\n textButton,\n heading = 'Something went wrong...', // Default value for backward compatibility\n}: ISwalError): Promise> {\n return Swal.fire({\n title: '', // Keeping this empty as in original\n html: `\n
\n \"frown\"\n

${heading}

\n

${message}

\n
\n `,\n customClass: 'error-swal-box',\n confirmButtonText: textButton,\n });\n}\n\n// Optional: Export the original version with a different name if you need both\nexport const originalSwalError = async ({\n message,\n textButton,\n}: Omit) => swalError({ message, textButton });\n","import styled from 'styled-components';\n\ninterface IBtnAvatar {\n isFunnel: boolean;\n}\n\ninterface IAvatar {\n src: string;\n}\n\nexport const Container = styled.div`\n img {\n width: 42px;\n height: 42px;\n }\n\n hr {\n background: #383939;\n height: 1px;\n border: none;\n }\n\n .disconnect-tooltip {\n position: relative;\n }\n\n .disconnect-tooltip:after {\n background-color: #212122;\n color: #8c8c8c;\n border: 1px solid #262626;\n border-radius: 15px;\n box-sizing: border-box;\n content: attr(data-tooltip);\n display: none;\n padding: 15px;\n font-size: 10px;\n position: absolute;\n right: 0px;\n bottom: 42px;\n width: 120px;\n z-index: 10000;\n text-align: justify;\n }\n\n .disconnect-tooltip:hover:after {\n display: block;\n }\n\n .reference span:nth-child(1) {\n font-weight: 300;\n font-size: 14px;\n color: #7d7777;\n span {\n font-weight: 300;\n font-size: 16px;\n color: #ffffff;\n }\n }\n\n .avatar-token {\n background: transparent;\n }\n\n .wallet-num {\n font-weight: 600;\n font-size: 18px;\n color: #161616;\n }\n\n .avatar {\n height: 49px;\n width: 49px;\n padding: 3px;\n background-image: linear-gradient(180deg, #242526, #242526),\n linear-gradient(\n 239.23deg,\n #9df3ff 7.84%,\n #bcffe5 28.62%,\n #deefd1 38.94%,\n #ffe0be 49.96%,\n #fbc2d3 64.82%,\n #fabcd6 67.63%,\n #f281ff 91.88%\n ) !important;\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n border-radius: 15px;\n -webkit-transition-duration: 0.3s;\n transition-duration: 0.3s;\n cursor: unset;\n }\n\n .bg-values {\n background-color: #f9f8fb;\n border-radius: 24px 10px 10px 24px;\n }\n\n .bg-values span {\n min-width: 130px;\n font-weight: 600;\n }\n\n .disconnect,\n .token {\n top: 60px;\n right: 0;\n background: #18191a;\n border: 1px solid #373737;\n box-shadow: 4px 15px 40px rgba(0, 0, 0, 0.25);\n border-radius: 25px;\n width: 350px;\n z-index: 1055;\n }\n\n .token .title {\n background: #1d1e1f;\n border-radius: 16px;\n font-weight: 300;\n font-size: 15px;\n }\n\n .token .check {\n width: 20px;\n height: 14px;\n }\n\n .token .coin {\n background: transparent;\n border-radius: 14px;\n :hover {\n background: #1c1c1c;\n }\n }\n\n .token span {\n font-family: 'Poppins';\n font-weight: 500;\n font-size: 20px;\n color: #7d7777;\n }\n\n .btn-back span {\n font-family: 'Inter';\n font-weight: 300;\n font-size: 16px;\n color: #7d7777;\n }\n\n .text-balance {\n font-weight: 400;\n font-size: 16px;\n color: #7d7777;\n }\n\n .balance {\n font-weight: 400;\n font-size: 40px;\n color: #dadada;\n }\n\n .btn-logout {\n background: rgba(152, 148, 148, 0.1);\n border-radius: 16px;\n transition: all 0.3s ease;\n :hover {\n opacity: 0.9;\n }\n }\n\n .btn-view {\n background: #5a57ee;\n //background: #666;\n border-radius: 15px;\n border: none;\n font-weight: 600;\n font-size: 22px;\n color: #f0ebeb;\n transition: all 0.3s ease;\n :hover {\n opacity: 0.9;\n //cursor: not-allowed;\n }\n }\n\n .btns-color {\n transition: all 0.3s ease;\n :hover {\n opacity: 0.9;\n }\n }\n\n .btns-color:disabled {\n :hover {\n cursor: not-allowed;\n }\n }\n\n .btns-color span {\n font-weight: 400;\n font-size: 16px;\n color: #7d7777;\n }\n\n .btns-color:disabled {\n span {\n color: #444;\n }\n }\n\n .btns-color span svg {\n rotate: -90deg;\n }\n\n .text-disconnect {\n font-weight: 600;\n font-size: 36px;\n color: #dadada;\n }\n\n .btn-yes {\n background: #ff1a50;\n border-radius: 15px;\n font-weight: 600;\n font-size: 22px;\n color: #f0ebeb;\n border: none;\n transition: all 0.3s ease;\n :hover {\n opacity: 0.9;\n }\n }\n\n .btn-no {\n background: #2b3247;\n border-radius: 15px;\n font-weight: 600;\n font-size: 22px;\n color: #f0ebeb;\n border: none;\n transition: all 0.3s ease;\n :hover {\n opacity: 0.9;\n }\n }\n\n @media screen and (max-width: 1799px) {\n .zoom {\n zoom: 0.8;\n }\n }\n\n @media screen and (max-width: 1399px) {\n .zoom {\n zoom: 0.7;\n }\n }\n`;\n\nexport const BtnAvatar = styled.button`\n background: ${(props) => (props.isFunnel ? 'transparent' : '#f9f8fb')};\n border: 1px solid ${(props) => (props.isFunnel ? 'transparent' : '#dadada')};\n border-radius: 30px 10px 10px 30px;\n padding: 2px;\n transition: all 0.2s ease;\n margin-left: auto;\n\n :hover {\n border-color: #484848;\n }\n`;\n\nexport const Avatar = styled.div`\n width: 100%;\n height: 100%;\n background-image: url(${(props) => props.src});\n background-size: cover;\n background-position: top;\n`;\n","export default \"data:image/png;base64,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\"","import React, {\n useCallback,\n useMemo,\n useState,\n useEffect,\n useRef,\n} from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { IoMdLogOut } from 'react-icons/io';\nimport { truncate } from 'truncate-ethereum-address';\n// import { IoIosArrowDown } from 'react-icons/io';\n// import { MdOutlineLightMode } from 'react-icons/md';\n// import { useAuth } from '~/hooks/Auth';\n\n// import { web3store } from '~/store';\n// import ModalSwap from '../ModalSwap';\nimport { Container, BtnAvatar, Avatar } from './styles';\nimport logoUsdpi from '~/assets/logo/logo-usdpi.svg';\nimport logoSwap from '~/assets/logo/logo-swap.png';\n// import { formatPrice } from '~/utils/format';\n\ninterface WidgetProps {\n selectedAddress: string;\n}\n\nconst WalletAvatarPageswap: React.FC = ({ selectedAddress }) => {\n const btnDisconnect = useRef(null);\n const disconnectRef = useRef(null);\n const disconnectBalanceRef = useRef(null);\n // const chooseTokenRef = useRef(null);\n // const closeAddBusdRef = useRef(null);\n // const closeAddUsdtRef = useRef(null);\n // const closeAddUsdcRef = useRef(null);\n // const closeAddGusdRef = useRef(null);\n // const closeAddDaiRef = useRef(null);\n // const { user, signOut } = useAuth();\n const location = useLocation();\n const history = useHistory();\n // const [account] = web3store.useState('account');\n // const [balusdpi] = web3store.useState('balusdpi');\n // const [reference] = web3store.useState('reference');\n const [balance, setBalance] = useState(false);\n const [chooseToken, setChooseToken] = useState(false);\n const [disconnect, setDisconnect] = useState(false);\n const [imgURL] = useState('');\n // const [nftimg] = web3store.useState('nftimg');\n const [avatar, setAvatar] = useState('');\n const [selected, setSelected] = useState('');\n const [addMetamask, setAddMetamask] = useState('');\n\n // useEffect(() => {\n // setAvatar(imgURL);\n // }, [imgURL, location.pathname, nftimg, user]);\n\n const locationBar = [\n '/get-your-free-nft',\n '/how-to-participate',\n '/activate-your-profit-centers',\n '/activate-your-profit-centers/skip',\n '/earn-even-more',\n '/final-step',\n '/ai-avatar',\n '/what-to-expect',\n '/autoaffiliate-member/order',\n ];\n\n // const handleNoAddMetamask = useCallback(() => {\n // setTimeout(() => {\n // setChooseToken(true);\n // setSelected('');\n // }, 100);\n // }, []);\n\n // const signOut2 = useCallback(() => {\n // // do something\n // console.log('Signing out...');\n // history.push({\n // pathname: `/aa/${refCode}/${placement}/${username}`,\n // });\n // }, []);\n\n // const handleOutsideClick = useCallback(\n // (e) => {\n // const modalElement = document.querySelector('.modal-backdrop');\n // if (\n // disconnect &&\n // disconnectRef.current &&\n // e.target !== disconnectRef.current &&\n // !disconnectRef.current.contains(e.target)\n // ) {\n // setDisconnect(false);\n // }\n // },\n // [addMetamask, balance, chooseToken, disconnect, handleNoAddMetamask]\n // );\n\n // useEffect(() => {\n // document.addEventListener('click', handleOutsideClick);\n // }, [handleOutsideClick]);\n\n // const balanceData = useMemo(() => {\n // return {\n // usdpi: formatPrice(\n // parseFloat((parseInt(balusdpi, 10) / 10 ** 18).toFixed(2))\n // ),\n // };\n // }, [balusdpi]);\n\n // const handleBalance = useCallback(() => {\n // setTimeout(() => {\n // setBalance(!balance);\n // setDisconnect(false);\n // }, 100);\n // }, [balance]);\n\n const handleDisconnect = useCallback(() => {\n setTimeout(() => {\n setBalance(false);\n setDisconnect(!disconnect);\n }, 100);\n }, [disconnect]);\n\n return (\n \n
\n \n
\n \n
\n {location.pathname !== '/products/cube' && (\n
\n \n {truncate(selectedAddress)}\n \n
\n )}\n \n\n {/* {balance && (\n \n
\n
\n \n
\n {truncate(selectedAddress)}\n \n \n \n
\n
\n )} */}\n\n {/* {disconnect && (\n
\n

\n Disconnect Wallet?\n

\n\n \n Yes\n \n \n No\n \n
\n )} */}\n \n
\n );\n};\n\nexport default WalletAvatarPageswap;\n","import { createStore } from 'state-pool';\n\nconst web3store = createStore();\n\n// URL Params\nweb3store.setState('reference', null);\nweb3store.setState('placementRef', null);\nweb3store.setState('username', null);\n\n// Funnel\nweb3store.setState('funnelType', null);\n\n// Wallet\n// web3store.setState('w3', null);\nweb3store.setState('account', '');\nweb3store.setState('contractbusd', null);\nweb3store.setState('contractusdpi', null);\nweb3store.setState('contractbank', null);\nweb3store.setState('refW3', false); // Signal to refresh wallet connection\nweb3store.setState('provider', null);\nweb3store.setState('signer', null);\n// Current network\nweb3store.setState('currentChain', null);\n// Required network\nweb3store.setState('reqChainHex', null);\n// web3store.setState('reqChainInt', null);\nweb3store.setState('chainMode', null);\nweb3store.setState('skipModal', false);\n// Balances\nweb3store.setState('balusdpi', '');\nweb3store.setState('balbusd', '');\nweb3store.setState('balprfti', '');\nweb3store.setState('balbnb', '');\nweb3store.setState('baleth', '');\nweb3store.setState('balusdt', '');\nweb3store.setState('refBalances', false); // Signal to refresh balances\n// Authorizations\nweb3store.setState('authBusd2Bank', 0);\nweb3store.setState('authUsdpi2Subs', 0);\n// Intake funnel\nweb3store.setState('ref', '');\nweb3store.setState('nftimg', ''); // Image to be minted\nweb3store.setState('showNftConfirm', false);\nweb3store.setState('nftselected', 0);\nweb3store.setState('imgCommand', '');\nweb3store.setState('imgURL', '/static/media/logo-p-purple.6ad0b4f8.svg');\nweb3store.setState('imgSeed', '');\nweb3store.setState('invalidRef', false);\n// Activation shopping cart\nweb3store.setState('cartProfitCenters', 1);\nweb3store.setState('cartPrepayMonths', 12);\nweb3store.setState('cartAmt', 0);\nweb3store.setState('cartPurchase', false);\nweb3store.setState('cartHashes', '');\nweb3store.setState('cartPurchaseTX', '');\n// USDPI Exchange\nweb3store.setState('usdpiPurchaseAmt', 0);\nweb3store.setState('usdpiPurchaseAmtEth', 0);\nweb3store.setState('usdpiPurchaseAmtUsdt', 0);\nweb3store.setState('usdpiSaleAmt', 0);\nweb3store.setState('usdpiPurchaseTX', '');\nweb3store.setState('usdpiAction', 'BUY');\nweb3store.setState('usdpiPurchaseFee', 0);\nweb3store.setState('usdpiPurchaseToken', '');\n// Staking shopping cart\nweb3store.setState('buyStakingAmt', 0);\nweb3store.setState('cartPurchaseStake', false);\nweb3store.setState('buyStakingHashes', '');\nweb3store.setState('cartPurchaseStakeTX', '');\n// Member / session\nweb3store.setState('nftlist', []);\nweb3store.setState('connectedMember', null); // Logged in member's account NFT\nweb3store.setState('memberStatus', 'entry');\nweb3store.setState('refNftList', false); // Signal - set to true to refresh member nft list\nweb3store.setState('wrongChain', false);\n// Workflow flags\nweb3store.setState('activating', false);\nweb3store.setState('mintOnly', false);\nweb3store.setState('lastPageServed', '');\nweb3store.setState('processText', '');\n// HarvestStake\nweb3store.setState('harvestStake', 0);\n// No Wallet\nweb3store.setState('noWallet', false);\n// Withdraw\nweb3store.setState('runWithdrawal', false);\nweb3store.setState('withdrawalResult', '');\n// Claim Revenue Pool USDPI rewards\nweb3store.setState('runClaimPoolUsdpi', false);\nweb3store.setState('withdrawalPoolUsdpiResult', '');\n// Claim Perf Pool USDPI rewards\nweb3store.setState('runClaimPerfPoolUsdpi', false);\nweb3store.setState('withdrawalPerfPoolUsdpiResult', '');\n// Claim Drip Prfti rewards\nweb3store.setState('runClaimDripPrfti', '');\nweb3store.setState('withdrawalDripResult', '');\n// Claim Staking Prfti rewards\nweb3store.setState('runClaimStakingPrfti', '');\nweb3store.setState('withdrawalStakingResult', '');\n// Add tokens to wallet\nweb3store.setState('walletAddPRFTI', false);\nweb3store.setState('walletAddUSDPI', false);\n// AI Image generator\nweb3store.setState('aiigSeed', '');\nweb3store.setState('aiigPrompt', '');\nweb3store.setState('aiigResult', []);\nweb3store.setState('aiigCount', 1);\nweb3store.setState('aiigCreate', false);\n// Balance polling\nweb3store.setState('balanceInterval', 60000);\nweb3store.setState('balanceId', null);\n\nexport { web3store };\n","import { fromWei } from 'web3-utils';\nimport { utils } from 'ethers';\n\nexport const { format: formatPrice } = new Intl.NumberFormat('en', {\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n});\nexport function formatUSDValueFromWei(usdValueInWei: string): string {\n const usdtWeiNumber = parseFloat(utils.formatUnits(usdValueInWei, 6));\n const formattedUSDValue = formatPrice(usdtWeiNumber);\n return formattedUSDValue;\n}\nexport function formatEthValue(ethValueInWei: string): string {\n const ethValue = Number(fromWei(ethValueInWei, 'ether')); // Convert from wei to ETH\n const formattedEthValue = Intl.NumberFormat('en', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 6,\n }).format(ethValue); // Format the ETH value with 18 decimal places\n\n return formattedEthValue;\n}\n","import { darken } from 'polished';\nimport styled from 'styled-components';\n\ninterface ISelectCoin {\n active: boolean;\n left?: string;\n right?: string;\n}\n\ninterface ICard {\n background: string;\n}\n\nexport const RefreshBtn = styled.button`\n background-color: transparent;\n border: none !important;\n img {\n width: 20px;\n height: 20px;\n margin-right: 5px;\n padding-bottom: 2px;\n }\n`;\n\nexport const ConnectBtn = styled.button`\n font-family: 'Barlow', sans-serif;\n font-style: normal;\n font-weight: 700;\n font-size: 24px;\n cursor: pointer;\n border: none;\n padding: 0;\n background-color: transparent;\n height: 55px;\n display: flex;\n align-items: center;\n span {\n padding: 5px 10px;\n margin: 0 18px;\n display: block;\n }\n @media screen and (max-width: 1399px) {\n font-size: 20px;\n }\n`;\n\nexport const Container = styled.div`\n font-family: 'Poppins', sans-serif;\n background: #ffffff;\n min-height: 100vh;\n\n .container-fluid {\n max-width: 1600px;\n }\n\n .radio-buy-sell {\n display: flex;\n align-items: center;\n input[type='radio'] {\n width: 24px;\n height: 24px;\n }\n label {\n color: #959595;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: normal;\n }\n input:checked + label {\n color: #000;\n }\n }\n\n .btn-wallet {\n background: #171719;\n border: 2px solid #837d7d;\n border-radius: 200px;\n color: #ffffff;\n transition-duration: 0.3s;\n height: 55px;\n width: 253px;\n margin-left: auto;\n display: block;\n\n :hover {\n color: #3ac8a8;\n }\n }\n\n .logo-usdpi {\n width: 60px;\n height: 60px;\n }\n\n h2 {\n color: #3a3a3a;\n font-size: 40px;\n }\n\n .title {\n color: #3a3a3a;\n font-weight: 600;\n font-size: 64px;\n padding-left: 25px;\n margin-top: 25px;\n }\n\n h4 {\n font-weight: 600;\n font-size: 14px;\n\n color: #dadada;\n }\n\n .buy-text {\n font-weight: 600;\n font-size: 14px;\n color: #262728;\n font-style: normal;\n line-height: normal;\n }\n\n .buy-here {\n background: #0982f2;\n border-radius: 10px;\n font-weight: 600;\n font-size: 14px;\n border: none;\n color: #ffffff;\n }\n\n .import-usdpi {\n background: linear-gradient(85deg, #2fbf7f 10.36%, #3cc9ad 97.55%), #0982f2;\n border-radius: 10px;\n font-weight: 600;\n font-size: 14px;\n border: none;\n color: #000;\n }\n\n .w-45 {\n width: 45%;\n }\n\n .w-10 {\n width: 10%;\n }\n\n .text-table {\n font-weight: 600;\n font-size: 18px;\n color: #8d8d8d;\n }\n\n .wm-tooltip {\n position: relative;\n }\n\n .wm-tooltip:after {\n background-color: #212122;\n color: #8c8c8c;\n border: 1px solid #262626;\n border-radius: 15px;\n box-sizing: border-box;\n content: attr(data-tooltip);\n display: none;\n padding: 15px;\n font-size: 10px;\n position: absolute;\n right: -109px;\n bottom: 60px;\n z-index: 10000;\n text-align: justify;\n }\n\n .wm-tooltip:hover:after {\n display: block;\n }\n\n .estimate {\n font-weight: 400;\n font-size: 12px;\n display: block;\n color: #505253;\n }\n\n .values {\n font-weight: 600;\n font-size: 20px;\n color: #5e5e5e;\n }\n\n .text-enough {\n font-weight: 400;\n font-size: 12px;\n line-height: 15px;\n color: #ff1a50;\n }\n\n .bg-number {\n background: rgba(239, 238, 240, 0.3);\n border: 1px solid rgba(57, 60, 61, 0.3);\n border-radius: 20px;\n\n button {\n top: calc(50% - 16px);\n right: 5%;\n background: #fff;\n border: 1px solid #219653;\n border-radius: 10px;\n font-weight: 700;\n font-size: 12px;\n color: #000;\n padding: 6px 19px;\n }\n }\n\n .number {\n font-size: 64px;\n color: #262728;\n border-bottom: 1px solid #c4c4c4;\n }\n\n .color {\n border-top: 1px solid #393c3d;\n color: #5e5e5e;\n width: 300px;\n display: block;\n margin: 0 auto;\n }\n\n .values span {\n font-weight: 400;\n font-size: 16px;\n color: #505253;\n }\n\n .color-negative {\n color: #ff1a50;\n }\n\n .color-positive {\n color: #219653;\n }\n\n .btn-exchange {\n background: #00f9ab;\n border-radius: 20px;\n transition-duration: 0.3s;\n width: 100%;\n height: 80px;\n font-size: 34px;\n }\n\n .btn-exchange:hover {\n background: ${darken(0.03, '#00F9AB')};\n }\n\n .btn-exchange[disabled] {\n background: #ccc; /* Grey background color when disabled */\n cursor: not-allowed; /* Change cursor to \"not-allowed\" when disabled */\n pointer-events: none; /* Disable pointer events when disabled */\n border: none;\n opacity: 1;\n }\n\n .cards-shadow {\n filter: drop-shadow(9px 12px 80px rgba(0, 0, 0, 0.25));\n }\n\n .arrows {\n background-color: #262728;\n padding: 10px 8px;\n }\n\n .value {\n font-weight: 700;\n font-size: 32px;\n color: #171719;\n }\n\n .bd-bottom {\n border-bottom: 1px solid #c4c4c4;\n }\n\n .btn-swap {\n font-weight: 600;\n font-size: 14px;\n background-color: transparent;\n color: #7d7777;\n border: none;\n border-bottom: 2px solid tranparent;\n margin-bottom: -1px;\n transition-duration: 0.3s;\n }\n\n .btn-swap:disabled {\n color: #7d7777; /* Set the color to the desired disabled color */\n pointer-events: none; /* Disable pointer events on the button */\n border-bottom: 2px solid transparent; /* Remove the border */\n }\n\n .btn-swap:hover,\n .btn-swap.active {\n border-bottom: 2px solid #96ffd9;\n color: #000;\n }\n\n .modal-close {\n color: #e9e9e9;\n height: 50px;\n width: 50px;\n }\n\n .modal-xl {\n width: 1140px;\n }\n\n .input-mask {\n opacity: 1;\n\n input {\n font-weight: bold;\n text-align: center;\n font-size: 64px;\n color: #262728;\n\n ::placeholder {\n color: rgba(38, 39, 40, 0.15);\n font-weight: 800;\n }\n }\n }\n\n .box {\n background: #f9f8fb;\n border-radius: 25px;\n padding: 25px 19px;\n\n h3 {\n font-weight: 500;\n font-size: 20px;\n color: #161616;\n }\n\n .tokens-information {\n height: 492px;\n border-radius: 20px;\n\n ::-webkit-scrollbar {\n background-color: transparent;\n width: 5px;\n height: 5px;\n }\n\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background: rgba(57, 60, 61, 0.3);\n }\n }\n\n .subbox {\n background: #ffffff;\n border-radius: 20px;\n padding: 16px 22px;\n margin-top: 20px;\n\n .coin {\n .coin-name {\n font-size: 20px;\n line-height: 30px;\n font-weight: 500;\n color: #161616;\n margin-left: 3px;\n margin-right: 6px;\n }\n }\n\n small {\n color: #7d7777;\n font-size: 10px;\n line-height: 15px;\n display: block;\n margin: 11px 0 7px 7px;\n }\n\n .price {\n font-weight: 600;\n font-size: 20px;\n line-height: 30px;\n color: #171719;\n margin-left: 7px;\n margin-bottom: 0;\n }\n }\n\n .token-information {\n div.space {\n width: 42px;\n margin-left: 3px;\n }\n\n .coin {\n width: 115px;\n\n .coin-name {\n font-size: 20px;\n line-height: 30px;\n font-weight: 500;\n color: #161616;\n margin-left: 3px;\n margin-right: 6px;\n }\n }\n\n .arrow-down {\n transform: rotateZ(90deg);\n }\n\n small {\n font-size: 10px;\n color: #505253;\n }\n }\n\n + .box {\n margin-top: 13px;\n }\n }\n\n @media screen and (max-width: 1799px) {\n .modal-dialog {\n zoom: 0.75;\n }\n }\n\n @media screen and (max-width: 1399px) {\n .modal-dialog {\n zoom: 0.65;\n }\n }\n`;\n\nexport const Card = styled.div`\n background: ${(props) => props.background};\n border-radius: 20px;\n\n h2 {\n font-weight: 700;\n font-size: 40px;\n color: #ffffff;\n }\n\n h3 {\n font-weight: 400;\n font-size: 14px;\n color: #ffffff;\n margin-bottom: 0;\n }\n`;\n\nexport const LoadingDiscover = styled.div`\n z-index: 2000;\n position: fixed;\n\n .loading-box {\n height: 100%;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.25) -38.97%,\n rgba(0, 0, 0, 0.25) 75.53%\n );\n backdrop-filter: blur(25px);\n span {\n font-weight: 400;\n font-size: 20px;\n color: #fff;\n text-align: center;\n }\n }\n\n .animation-loading {\n height: 152px;\n width: 152px;\n\n img {\n position: relative;\n z-index: 300;\n top: 10px;\n left: 10px;\n height: 134px;\n width: 134px;\n background: rgba(0, 0, 0);\n backdrop-filter: blur(5px);\n }\n }\n\n .box-1 {\n position: absolute;\n width: 114px;\n height: 37px;\n background: #fff;\n animation: position-box-1 3s linear infinite;\n z-index: 200;\n }\n\n @keyframes position-box-1 {\n 0% {\n top: 0;\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n\n 25% {\n top: calc(100% - 37px);\n left: calc(100% - 114px);\n width: 114px;\n height: 37px;\n }\n\n 50% {\n top: calc(100% - 114px);\n left: 0;\n width: 37px;\n height: 114px;\n }\n\n 75% {\n top: 0;\n left: 0;\n width: 114px;\n height: 37px;\n }\n\n 100% {\n top: 0;\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n }\n\n .box-2 {\n position: absolute;\n width: 114px;\n height: 37px;\n background: #fff;\n animation: position-box-2 3s linear infinite;\n z-index: 200;\n }\n\n @keyframes position-box-2 {\n 0% {\n top: calc(100% - 37px);\n left: 0;\n width: 114px;\n height: 37px;\n }\n\n 25% {\n top: 0;\n left: 0;\n width: 37px;\n height: 114px;\n }\n\n 50% {\n top: 0;\n left: calc(100% - 114px);\n width: 114px;\n height: 37px;\n }\n\n 75% {\n top: calc(100% - 114px);\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n\n 100% {\n top: calc(100% - 37px);\n left: 0;\n width: 114px;\n height: 37px;\n }\n }\n`;\n\nexport const SelectCoin = styled.div`\n width: 150px;\n background: #ffffff;\n border-radius: 20px;\n display: flex;\n flex-direction: column;\n align-items: center;\n left: ${(props) => props.left || 'unset'};\n right: ${(props) => props.right || 'unset'};\n padding: 10px 20px;\n border: 1px solid rgba(57, 60, 61, 0.3);\n opacity: ${(props) => (props.active ? 1 : 0)};\n visibility: ${(props) => (props.active ? 'visible' : 'hidden')};\n\n hr {\n height: 1px;\n width: 100%;\n background-color: rgba(57, 60, 61, 0.3);\n margin: 5px 0;\n }\n\n button {\n transition-duration: 0.3s;\n padding: 5px;\n border-radius: 5px;\n\n :hover {\n background-color: ${darken(0.05, '#ffffff')} !important;\n }\n }\n`;\n","import styled, { css } from 'styled-components';\n\ninterface ContainerProps {\n isFilled: boolean;\n isFocuses: boolean;\n isErrored: boolean;\n}\n\nexport const Container = styled.div`\n background: #17171a;\n opacity: 0.8;\n border-radius: 10px;\n border: 1.5px solid #333333;\n padding: 5px 10px;\n width: 100%;\n display: flex;\n align-items: center;\n\n + div {\n margin-top: 8px;\n }\n\n div {\n width: 100%;\n position: relative;\n\n .button-show {\n position: absolute;\n top: -6px;\n right: -10px;\n width: 70px;\n text-align: center;\n background: none;\n border: 0;\n border-left: 1px solid rgba(224, 224, 224, 0.8);\n padding: 6px 6px 6px;\n color: #cbccce;\n }\n }\n\n input {\n width: 100%;\n flex: 1;\n background: transparent;\n border: 0;\n color: #efefef;\n transition-duration: 0.2s;\n\n ::placeholder {\n color: #efefef;\n }\n }\n\n svg {\n margin-right: 16px;\n color: #666360;\n transition-duration: 0.2s;\n }\n\n ${(props) =>\n props.isErrored &&\n css`\n border-color: #c53030 !important;\n `}\n\n ${(props) =>\n props.isFilled &&\n css`\n svg {\n color: #fff;\n }\n `}\n\n ${(props) =>\n props.isFocuses &&\n css`\n color: #fff;\n border-color: #fff !important;\n\n svg {\n color: #fff;\n }\n `}\n`;\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { useField } from '@unform/core';\nimport TextInputMask from 'react-masked-text';\n\nimport { Container } from './styles';\n\ninterface MaskInputProps {\n kind: string;\n name: string;\n onChange?(event: any): void;\n onFocus?(event: any): void;\n onBlur?(event: any): void;\n value?: string;\n placeholder?: string;\n id?: string;\n className?: string;\n options?: {\n mask?: string;\n format?: string;\n unit?: string;\n separator?: string;\n delimiter?: string;\n };\n required?: boolean;\n}\n\nconst MaskInput: React.FC = ({\n kind,\n name,\n onChange,\n onFocus,\n onBlur,\n value,\n placeholder,\n id,\n className,\n options,\n required,\n}) => {\n const maskRef = useRef(null);\n const [newValue, setNewValue] = useState(undefined);\n const [isFocuses, setIsFocuses] = useState(false);\n const [isFilled, setIsFilled] = useState(false);\n\n const { fieldName, error, registerField } = useField(name);\n\n useEffect(() => {\n registerField({\n name: fieldName,\n ref: maskRef.current,\n path: 'props.value',\n });\n }, [fieldName, registerField]);\n\n useEffect(() => {\n setNewValue(value);\n }, [value]);\n\n const handleChange = useCallback(\n (e) => {\n if (onChange && maskRef.current) {\n const data = {\n target: {\n name: maskRef.current.props.name,\n value: e,\n },\n };\n onChange(data);\n }\n setNewValue(e);\n },\n [onChange]\n );\n\n const handleFocus = useCallback(\n (e) => {\n setIsFocuses(true);\n if (onFocus) {\n onFocus(e);\n }\n },\n [onFocus]\n );\n\n const handleBlur = useCallback(\n (e) => {\n setIsFocuses(false);\n if (onBlur) {\n onBlur(e);\n }\n setIsFilled(!!e.target.value);\n },\n [onBlur]\n );\n\n return (\n <>\n \n \n \n {error && {error}}\n \n );\n};\n\nexport default MaskInput;\n","import styled from 'styled-components';\n\ninterface IContainer {\n active: boolean;\n type: 'dark' | 'white';\n}\n\nexport const Container = styled.div`\n z-index: 2000;\n position: fixed;\n opacity: ${(props) => (props.active ? 1 : 0)};\n visibility: ${(props) => (props.active ? 'visible' : 'hidden')};\n\n .loading-box {\n height: 100%;\n background: ${(props) =>\n props.type === 'dark'\n ? 'linear-gradient(180deg, rgba(0, 0, 0, 0.25) -38.97%, rgba(0, 0, 0, 0.25) 75.53%)'\n : 'rgba(214, 203, 210, 0.69)'};\n backdrop-filter: blur(25px);\n\n span,\n small {\n font-weight: 400;\n color: ${(props) => (props.type === 'dark' ? '#fff' : '#6f51c4')};\n text-align: center;\n }\n\n span {\n font-size: 20px;\n }\n }\n\n .animation-loading {\n height: 152px;\n width: 152px;\n\n img {\n position: relative;\n z-index: 300;\n top: 10px;\n left: 10px;\n height: 134px;\n width: 134px;\n background: ${(props) =>\n props.type === 'dark' ? 'rgba(0, 0, 0)' : '#ddd'};\n backdrop-filter: blur(5px);\n }\n }\n\n .box-1 {\n position: absolute;\n width: 114px;\n height: 37px;\n background: ${(props) => (props.type === 'dark' ? '#fff' : '#6f51c4')};\n animation: position-box-1 3s linear infinite;\n z-index: 200;\n }\n\n @keyframes position-box-1 {\n 0% {\n top: 0;\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n\n 25% {\n top: calc(100% - 37px);\n left: calc(100% - 114px);\n width: 114px;\n height: 37px;\n }\n\n 50% {\n top: calc(100% - 114px);\n left: 0;\n width: 37px;\n height: 114px;\n }\n\n 75% {\n top: 0;\n left: 0;\n width: 114px;\n height: 37px;\n }\n\n 100% {\n top: 0;\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n }\n\n .box-2 {\n position: absolute;\n width: 114px;\n height: 37px;\n background: ${(props) => (props.type === 'dark' ? '#fff' : '#6f51c4')};\n animation: position-box-2 3s linear infinite;\n z-index: 200;\n }\n\n @keyframes position-box-2 {\n 0% {\n top: calc(100% - 37px);\n left: 0;\n width: 114px;\n height: 37px;\n }\n\n 25% {\n top: 0;\n left: 0;\n width: 37px;\n height: 114px;\n }\n\n 50% {\n top: 0;\n left: calc(100% - 114px);\n width: 114px;\n height: 37px;\n }\n\n 75% {\n top: calc(100% - 114px);\n left: calc(100% - 37px);\n width: 37px;\n height: 114px;\n }\n\n 100% {\n top: calc(100% - 37px);\n left: 0;\n width: 114px;\n height: 37px;\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport Typist from 'react-typist';\nimport { web3store } from '~/store';\n\nimport { Container } from './styles';\n\ninterface IText {\n type: 'dark' | 'white';\n text: string;\n srcImg: string;\n active: boolean;\n className?: string;\n}\n\nconst Loading: React.FC = ({\n type,\n text,\n srcImg,\n className,\n active,\n}) => {\n const [processText] = web3store.useState('processText');\n const [displayText, setDisplayText] = useState(text);\n useEffect(() => {\n if (processText.length > 0) {\n setDisplayText(processText);\n }\n }, [processText, displayText]);\n return (\n \n
\n
\n
\n
\n \"Logo\"\n
\n {active && (\n <>\n {displayText.startsWith('THE FUTURE IS HERE') ||\n displayText.startsWith('PLEASE WAIT...') ? (\n \n {displayText}\n \n ) : (\n \n {displayText}\n
\n \n (Please do not refresh or close this window)\n \n
\n )}\n \n )}\n
\n \n );\n};\n\nexport default Loading;\n","import styled from 'styled-components';\n\nimport { Modal as ModalComponent } from 'react-bootstrap';\n\nexport const Modal = styled(ModalComponent)`\n .modal-content {\n background: #171719 !important;\n border-radius: 40px;\n position: relative;\n\n h2 {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-size: 48px;\n color: #dadada;\n }\n\n .modal-close {\n color: #e9e9e9;\n position: absolute;\n right: 20px;\n top: 20px;\n }\n\n .texts p:nth-child(1) {\n font-family: 'Poppins';\n font-weight: 400;\n font-size: 24px;\n line-height: 118%;\n color: #a6a2a2;\n }\n\n .texts p:nth-child(2) {\n font-family: 'Poppins';\n font-weight: 400;\n font-size: 20px;\n color: #7d7777;\n }\n\n .texts div:nth-child(3) {\n border: 1px solid #4f4f4f;\n border-radius: 20px;\n font-weight: 300;\n font-size: 14px;\n align-items: center;\n text-align: center;\n\n padding: 23px;\n a {\n color: #8767ed;\n }\n }\n\n .texts .terms {\n background: #1d1d1f;\n border-radius: 12px;\n font-weight: 300;\n font-size: 16px;\n padding: 10px;\n span {\n font-weight: 300;\n font-size: 16px;\n line-height: 32px;\n color: #7d7777;\n }\n }\n\n .color-span {\n color: #a6a2a2 !important;\n font-weight: 500 !important;\n }\n\n .btn-confirm {\n background: #696ffd;\n border-radius: 20px;\n border: none;\n color: #fff;\n font-weight: 700;\n font-size: 24px;\n padding: 20px;\n transition-duraton: 0.3s;\n :hover {\n opacity: 0.8;\n }\n }\n }\n\n @media screen and (max-width: 1799px) {\n .modal-dialog {\n zoom: 0.7;\n }\n }\n\n @media screen and (max-width: 991px) {\n h2 {\n font-size: 24px;\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/wallet-exchange.afae791a.png\";","import React from 'react';\n\nimport { Modal } from './styles';\n\nimport walletExchange from '~/assets/defaults/wallet-exchange.png';\n\ninterface IShow {\n show: boolean;\n handleClose(): void;\n hash: string | null;\n}\n\nconst ModalExchangeSuccessful: React.FC = ({\n show,\n handleClose,\n hash,\n}) => {\n const explorerURL = process.env.REACT_APP_PAY_BLOCK_EXPLORER_URLS;\n\n return (\n \n \n x\n \n \n
\n \"Wallet\"\n
\n
\n \n

\n Exchange Successful!\n

\n
\n

\n Your exchange was successfully completed and funds should arrive in\n your wallet in a few moments.\n

\n\n {hash !== null && (\n \n

Here is the transaction hash:

\n
\n \n {hash}\n \n
\n
\n )}\n \n Back\n \n
\n
\n \n \n );\n};\n\nexport default ModalExchangeSuccessful;\n","import styled from 'styled-components';\nimport { Modal as ModalComponent } from 'react-bootstrap';\n\nexport const Button = styled.button`\n :disabled {\n opacity: 0.7;\n }\n`;\n\nexport const ModalUpdate = styled(ModalComponent)`\n // .modal-dialog {\n // position: fixed;\n // top: 0;\n // left: 0;\n // width: 100%;\n // height: 100% !important;\n // // backdrop-filter: blur(5px) !important;\n // // z-index: 10 !important;\n // }\n .modal-content {\n background-color: #f4f7fd !important;\n border-radius: 40px;\n position: relative;\n padding-left: 80px;\n padding-right: 80px;\n\n p {\n /* width: 894px; */\n text-align: center;\n color: #303030;\n text-align: center;\n font-family: Poppins;\n font-size: 22px;\n font-style: normal;\n font-weight: 400;\n line-height: 118%; /* 25.96px */\n }\n\n h1 {\n color: #000;\n text-align: center;\n font-family: Poppins;\n font-size: 48px;\n font-style: normal;\n font-weight: 700;\n line-height: 124%; /* 59.52px */\n letter-spacing: 0.96px;\n margin-bottom: 28px;\n }\n\n h2 {\n color: #000;\n text-align: center;\n font-family: Poppins;\n font-size: 22px;\n font-style: normal;\n font-weight: 600;\n line-height: 118%; /* 25.96px */\n }\n\n .header-image {\n width: 265px;\n height: 194px;\n }\n\n img {\n width: 750px;\n margin: -4rem;\n }\n\n .modal-close {\n color: #000;\n position: absolute;\n right: 20px;\n top: 20px;\n }\n\n .my-n5 {\n margin: -3rem 0;\n }\n\n .modal-footer {\n z-index: 1;\n\n p {\n font-family: 'Poppins';\n color: #c4c4c4;\n font-size: 22px;\n line-height: 33px;\n }\n\n button {\n width: 768.41px;\n max-width: 100%;\n background: #0081f9;\n border-radius: 20px;\n font-size: 24px;\n transition-duration: 0.3s;\n :hover {\n opacity: 0.9;\n }\n }\n }\n }\n\n @media screen and (max-width: 1799px) {\n .modal-dialog {\n zoom: 0.7;\n }\n }\n\n @media screen and (max-width: 991px) {\n .modal-content img {\n margin: -1rem 0 -4rem 0;\n }\n }\n`;\n","export default __webpack_public_path__ + \"static/media/update-required.27b32741.png\";","export default __webpack_public_path__ + \"static/media/update-complete.01360628.png\";","import React, { useCallback, useState } from 'react';\n\nimport { ModalUpdate } from './styles';\n\nimport aiverifyGif from '~/assets/animations/aiverify.gif';\nimport updateRequired from '~/assets/defaults/update-required.png';\nimport updateComplete from '~/assets/defaults/update-complete.png';\n\ninterface IProps {\n showUpdate: boolean;\n showUpdateComplete: boolean;\n handleCloseUpdate: () => void;\n handleCloseUpdateComplete: () => void;\n handleUpdateBtn: () => void;\n handleSwapBtn: () => void;\n}\n\nconst ModalClearApproval: React.FC = ({\n showUpdate,\n showUpdateComplete,\n handleCloseUpdate,\n handleCloseUpdateComplete,\n handleUpdateBtn,\n handleSwapBtn,\n}) => {\n return (\n <>\n \n \n x\n \n \n \n x\n \n
\n \"aiverify\"\n
\n
\n \n

Update Required

\n

\n We've noticed that there's an existing approval for USDT in your\n wallet that needs to be updated before you can proceed with\n exchanging USDT for USDPI. This is a standard security step to\n ensure that your transaction occurs smoothly\n

\n

\n What Needs to Happen:\n

\n

\n First, we need to reset your current USDT approval to zero. This is\n a necessary step to accurately set it to the new amount required for\n your exchange.\n

\n

\n How to Proceed:\n

\n

\n Simply click the 'Reset Approval' button below. This will reset the\n existing approval and allow you to move forward with your\n transaction securely and efficiently.\n

\n

\n Why This Step Is Important:\n

\n

\n This ensures that only the correct amount of USDT is approved for\n exchange, aligning with your intended transaction and enhancing\n security.\n

\n

\n After you've cleared the existing approval, you'll be all set to\n proceed with your USDT to USDPI exchange. Thank you for your\n understanding and cooperation!\n

\n
\n \n \n CLICK HERE TO RESET APPROVAL\n \n \n \n \n \n x\n \n \n {/*
*/}\n \n x\n \n
\n \"aiverify\"\n
\n \n \n

Great Job!

\n

\n You've successfully reset your USDT approval. Your wallet is now\n ready for the USDT to USDPI exchange. We appreciate your quick\n action in making sure everything is set up correctly for your\n transaction.\n

\n

Next Step:

\n

\n You're all set to proceed with your exchange. Just click the\n 'Proceed with Exchange' button below to start the process. We're\n here to ensure your transaction is safe and seamless.\n

\n

\n Why This Matters:\n

\n

\n Resetting your approval ensures that your exchange is processed with\n the correct parameters, reflecting your current transaction needs.\n It's all about keeping your transactions secure and aligned with\n your intentions.\n

\n

\n We're excited to assist you in this exchange and are here for any\n questions or assistance you might need. Let's go ahead and complete\n your transaction!\n

\n
\n \n \n Proceed with Exchange\n \n \n \n \n );\n};\n\nexport default ModalClearApproval;\n","import React, { useCallback, useState, useEffect } from 'react';\nimport { web3store } from '../../store';\n\nimport { Modal } from './styles';\n\nimport aiverifyGif from '~/assets/animations/aiverify.gif';\n\nconst ModalNetworkSwitch: React.FC = () => {\n return null;\n};\n\nexport const networkSwitch = async (newNetwork: string): Promise => {\n return new Promise((resolve, reject) => {\n let nativeCurrency: any;\n let network: any;\n let buttonTxt: any;\n const provider = (window as any).ethereum;\n\n provider\n .request({\n method: 'eth_chainId',\n })\n .then((currentNetworkId: string) => {\n if (newNetwork === 'PAY') {\n nativeCurrency = {\n name: process.env.REACT_APP_PAY_CURRENCY_NAME as string,\n symbol: process.env.REACT_APP_PAY_CURRENCY_SYMBOL as string,\n decimals: parseInt(\n process.env.REACT_APP_PAY_CURRENCY_DECIMALS as string,\n 10\n ),\n };\n network = {\n chainId: process.env.REACT_APP_PAY_CHAIN_ID as string,\n chainName: process.env.REACT_APP_PAY_CHAIN_NAME as string,\n rpcUrls: [process.env.REACT_APP_PAY_RPC_URLS as string],\n blockExplorerUrls: [\n process.env.REACT_APP_PAY_BLOCK_EXPLORER_URLS as string,\n ],\n nativeCurrency,\n };\n buttonTxt = process.env.REACT_APP_PAY_BUTTON_TEXT;\n } else {\n nativeCurrency = {\n name: process.env.REACT_APP_NATIVE_CURRENCY_NAME as string,\n symbol: process.env.REACT_APP_NATIVE_CURRENCY_SYMBOL as string,\n decimals: parseInt(\n process.env.REACT_APP_NATIVE_CURRENCY_DECIMALS as string,\n 10\n ),\n };\n network = {\n chainId: process.env.REACT_APP_NETWORK_CHAIN_ID as string,\n chainName: process.env.REACT_APP_NETWORK_CHAIN_NAME as string,\n rpcUrls: [process.env.REACT_APP_NETWORK_RPC_URLS as string],\n blockExplorerUrls: [\n process.env.REACT_APP_NETWORK_BLOCK_EXPLORER_URLS as string,\n ],\n nativeCurrency,\n };\n buttonTxt = process.env.REACT_APP_NETWORK_BUTTON_TEXT;\n }\n // console.log('++++++++++++++++++++++++++++++++++++++++++');\n // console.log('++++++++++++++++++++++++++++++++++++++++++');\n // console.log('++++++++++++++++++++++++++++++++++++++++++');\n // console.log('++++++++++++++++++++++++++++++++++++++++++');\n // console.log('++++++++++++++++++++++++++++++++++++++++++');\n // console.log('newNetwork: %s', newNetwork);\n // console.log('currentNetworkId: %s', currentNetworkId);\n // console.log('nativeCurrency:');\n // console.log(nativeCurrency);\n // console.log('network:');\n // console.log(network);\n // console.log('buttonTxt: %s', buttonTxt);\n if (currentNetworkId === network.chainId) {\n // Network is already correct, no need to switch\n resolve(true);\n }\n\n // const provider = (window as any).ethereum;\n\n provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: network.chainId }],\n })\n .then(() => {\n console.log('Network switch complete');\n resolve(true);\n })\n .catch((neterror: any) => {\n console.error('Failed to switch network:', neterror);\n provider\n .request({\n method: 'wallet_addEthereumChain',\n params: [network],\n })\n .then(() => {\n console.log('New network added successfully!');\n resolve(true);\n })\n .catch((error: any) => {\n console.error('Failed to add new network:', error);\n reject(error);\n });\n });\n // reject(new Error('ERROR'));\n }) // Get current network Id\n .catch((error: Error) => {\n reject(error);\n });\n });\n};\n\nexport default ModalNetworkSwitch;\n","export default __webpack_public_path__ + \"static/media/logo-usdpi.37572878.svg\";","export default __webpack_public_path__ + \"static/media/logo-eth.401a8869.svg\";","export default __webpack_public_path__ + \"static/media/logo-usdt.13ff7f0c.svg\";","export default __webpack_public_path__ + \"static/media/arrow.8614a1ec.svg\";","export default __webpack_public_path__ + \"static/media/swap-right.365d9e12.svg\";","export default __webpack_public_path__ + \"static/media/refresh-balances.21dd400f.svg\";","import React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n ethers,\n utils,\n ContractReceipt,\n ContractTransaction,\n BigNumber,\n} from 'ethers';\nimport { truncate } from 'truncate-ethereum-address';\nimport { Form } from '@unform/web';\nimport { useLocation } from 'react-router-dom';\nimport { FormHandles } from '@unform/core';\nimport * as Yup from 'yup';\nimport { HiOutlineInformationCircle, HiArrowNarrowRight } from 'react-icons/hi';\n\nimport Swal from 'sweetalert2';\nimport getValidationErros from '~/utils/getValidationsErrors';\n\nimport api from '~/services/api';\nimport swalError from '~/utils/swalError';\nimport WalletAvatarPageswap from '~/components/WalletAvatarPageswap';\nimport { web3store } from '~/store';\nimport {\n formatPrice,\n formatUSDValueFromWei,\n formatEthValue,\n} from '~/utils/format';\n\nimport { Container, Card, SelectCoin, ConnectBtn, RefreshBtn } from './styles';\nimport InputMask from '~/components/InputMask';\n// import ModalConfirmation from '~/pages/Sales/ModalConfirmation';\nimport Loading from '~/components/Loading';\nimport ModalExchangeSuccessful from '~/components/ModalExchangeSuccessful';\nimport ModalClearApproval from '~/components/ModalClearApproval';\n\nimport ModalNetworkSwitch, {\n networkSwitch,\n} from '~/components/ModalNetworkSwitch';\nimport { abi as EthUsdtSwapV3Abi } from '~/abi/EthUsdtSwapV3.json';\n\nimport arrows from '~/assets/icons/arrows-swap.svg';\nimport logoSwap from '~/assets/logo/logo-swap.png';\nimport logoBusd from '~/assets/logo/logo-busd.svg';\nimport logoUsdpi from '~/assets/logo/logo-usdpi.svg';\nimport logoEth from '~/assets/logo/logo-eth.svg';\nimport logoBnb from '~/assets/logo/logo-bnb.svg';\nimport logoUsdt from '~/assets/logo/logo-usdt.svg';\nimport logoUsdc from '~/assets/logo/logo-usdc.svg';\nimport logoGusd from '~/assets/logo/logo-gusd.svg';\nimport arrow from '~/assets/icons/arrow.svg';\nimport swapRight from '~/assets/logo/swap-right.svg';\nimport refreshBalances from '~/assets/icons/refresh-balances.svg';\nimport logoWhite from '~/assets/logo/logo-p-white.svg';\nimport WalletLink from '~/components/WalletLink';\nimport { abi as erc20Abi } from '~/abi/erc20.json';\nimport { abi as usdtBank } from '~/abi/EthUsdtSwapV3.json';\n\ninterface IToken {\n logo: string;\n name: string;\n descriptionBnb: string;\n descriptionEth: string;\n priceBnb: string;\n priceEth: string;\n cardStyle: string;\n}\n\ninterface INetwork {\n logo: string;\n name: string;\n}\n\ninterface HashData {\n amt2authorize: string;\n chain: number;\n deadline: number;\n name: string;\n nonce: number;\n}\n\n/* eslint no-underscore-dangle: 0 */\nconst PageSwap: React.FC = () => {\n const location = useLocation();\n const formRef = useRef(null);\n const [show, setShow] = useState(false);\n const [total, setTotal] = useState(0);\n const [invertCard, setInvertCard] = useState(false);\n const [exchangeValue, setExchangeValue] = useState('0,00');\n const [exchangeValueEth, setExchangeValueEth] = useState('0,00');\n const [feeValue, setFeeValue] = useState('0,00');\n const [receiveValue, setReceiveValue] = useState('0,00');\n const [error, setError] = useState('');\n const [isAlertOpen, setIsAlertOpen] = useState(true);\n const [debouncedValue, setDebouncedValue] = useState('');\n const [loading, setLoading] = useState(false);\n const [errorExchange, setErrorExchange] = useState('');\n const [type, setType] = useState('');\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const [pollingEnabled, setPollingEnabled] = useState(false);\n const [selectedMode, setSelectedMode] = useState('BUY');\n const [account, setAccount] = useState(null);\n const [ethBalance, setEthBalance] = useState(null);\n const [ethValue, setEthValue] = useState('0');\n const [usdpiBalance, setUsdpiBalance] = useState('0');\n const [lastUsdpiBalance, setLastUsdpiBalance] = useState('0');\n const [balbusd, setBalbusd] = useState(null);\n const [balusdpi, setBalusdpi] = useState(null);\n const [balusdt, setBalusdt] = useState(null);\n const [liqusdt, setLiqusdt] = useState(null);\n const [liqbusd, setLiqbusd] = useState(null);\n const [isValidSwap, setIsValidSwap] = useState(false);\n const [placeHolder, setPlaceHolder] = useState('PLEASE CONNECT WALLET');\n // const [placeHolder, setPlaceHolder] = useState('Enter amount here');\n const [actionBtnText, setActionBtnText] = useState('Exchange');\n const inputMaskRef = useRef(null);\n const [processText, setProcessText] = web3store.useState('processText');\n const [showCongrat, setShowCongrat] = useState(false);\n // const [congratHash, setCongratHash] = useState(null);\n const [congratHash, setCongratHash] = useState(null);\n\n const [showUpdate, setShowUpdate] = useState(false);\n const [showUpdateComplete, setShowUpdateComplete] = useState(false);\n const [usdtAllowance, setUsdtAllowance] = useState(null);\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const tokenETH: IToken = {\n logo: logoEth,\n name: 'ETH',\n descriptionBnb: '',\n descriptionEth: '',\n priceEth: '-',\n priceBnb: '$0.00',\n cardStyle: 'linear-gradient(85deg, #0554BB 10.36%, #0B65DB 97.55%);',\n };\n const tokenUSDT: IToken = {\n logo: logoUsdt,\n name: 'USDT',\n descriptionBnb:\n 'USDT In the Binance Smart Chain (BEP20) network liquidity in reserves:',\n descriptionEth:\n 'USDT In the Ethereum (ERC20) network liquidity in reserves:',\n priceEth: '-',\n priceBnb: '$0.00',\n cardStyle: 'linear-gradient(84.9deg, #26A183 10.36%, #25A07A 97.55%)',\n };\n const [tokens, setTokens] = useState([tokenUSDT, tokenETH]);\n const [tokenSelected, setTokenSelected] = useState(tokenUSDT);\n const [networks, setNetworks] = useState([\n {\n logo: logoEth,\n name: 'ETH',\n },\n // {\n // logo: logoBnb,\n // name: 'BNB',\n // },\n ]);\n const [networkSelected, setNetworkSelected] = useState({\n logo: logoEth,\n name: 'ETH',\n });\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // FORMATTED VALUES\n const busd = useMemo(() => {\n if (balbusd === null) {\n ('-');\n } else {\n formatPrice(parseFloat((parseInt(balbusd, 10) / 10 ** 18).toFixed(2)));\n }\n }, [balbusd]);\n\n const usdt = useMemo(() => {\n // console.log('balusdt: %s', balusdt);\n if (balusdt === null) {\n return '-';\n }\n return formatPrice(\n parseFloat((parseInt(balusdt, 10) / 10 ** 6).toFixed(2))\n );\n }, [balusdt]);\n\n const ethBal_f = useMemo(() => {\n if (ethBalance === null) {\n return '-';\n }\n const truncatedValue =\n Math.floor((parseInt(ethBalance, 10) / 10 ** 18) * 10000) / 10000;\n const formattedEthValue = Intl.NumberFormat('en', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 6,\n }).format(truncatedValue); // Format the ETH value with 18 decimal places\n return formattedEthValue;\n // return formatEthValue(truncatedValue.toString());\n // console.log('truncatedValue: %s', truncatedValue);\n // return ethBalance;\n }, [ethBalance]);\n\n const usdpi = useMemo(() => {\n if (balusdpi === null) {\n return '-';\n }\n const truncatedValue =\n Math.floor((parseInt(balusdpi, 10) / 10 ** 18) * 100) / 100;\n return formatPrice(truncatedValue);\n }, [balusdpi]);\n\n const usdt_liq_f = useMemo(() => {\n if (liqusdt === null) {\n return '-';\n }\n return formatPrice(\n parseFloat((parseInt(liqusdt, 10) / 10 ** 6).toFixed(2))\n );\n }, [liqusdt]);\n\n const busd_liq_f = useMemo(() => {\n if (liqbusd === null) {\n return '-';\n }\n return formatPrice(\n parseFloat((parseInt(liqbusd, 10) / 10 ** 18).toFixed(2))\n );\n }, [liqbusd]);\n\n const usdt_allowance_f = useMemo(() => {\n if (usdtAllowance === null) {\n return '-';\n }\n return formatUSDValueFromWei(usdtAllowance.toString());\n }, [usdtAllowance]);\n\n const eth_value_f = useMemo(() => {\n // console.log('ethValue: %s type %s', ethValue, typeof ethValue);\n if (ethValue === '0.00') {\n return '-';\n }\n const ethValueNumber = parseFloat(utils.formatUnits(ethValue, 6));\n const formattedValue = Intl.NumberFormat('en', {\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(ethValueNumber); // Format the ETH value with 18 decimal places\n return formattedValue;\n // return 'xxx';\n }, [ethValue]);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const updatePriceEthByName = (name: string, newPriceEth: string) => {\n setTokens((prevTokens) =>\n prevTokens.map((token) =>\n token.name === name ? { ...token, priceEth: newPriceEth } : token\n )\n );\n };\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n useEffect(() => {\n const updateTokenPrice = () => {\n // Check if liqusdt is not null and is a valid string\n if (liqusdt !== null && typeof liqusdt === 'string') {\n // Parse the wei string to a number, divide by 10^6, and format it\n const parsedLiqusdt = (parseFloat(liqusdt) / 10 ** 6).toFixed(2);\n const formattedPrice = `$${formatPrice(parseFloat(parsedLiqusdt))}`;\n updatePriceEthByName('USDT', formattedPrice); // Update token state array\n }\n };\n // Call the callback function\n updateTokenPrice();\n }, [liqusdt]);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const getEthPrice = (usdValueStr: number): Promise => {\n return new Promise((resolve, reject) => {\n (async () => {\n try {\n const response = await api.get(\n `v1/exchange/quote/eth/usdpi/${usdValueStr}`\n );\n resolve(response.data.estimate.net.toString());\n // reject(0);\n } catch (ethPriceError) {\n reject(ethPriceError);\n }\n })();\n });\n };\n\n useEffect(() => {\n // console.log('+++++ exchangeValue changed to: %s +++++', exchangeValue);\n const handler = setTimeout(() => {\n setDebouncedValue(exchangeValue);\n }, 1000);\n\n return () => {\n clearTimeout(handler);\n };\n }, [exchangeValue]);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // Update send/receive information section following\n // pause for user to stop entering data\n useEffect(() => {\n if (debouncedValue) {\n console.log(\n '+++++ debouncedValue: %s type: %s +++++',\n debouncedValue,\n typeof debouncedValue\n );\n const value = parseFloat(debouncedValue.replaceAll(',', ''));\n // console.log('+++++ value: %s +++++', value);\n if (value === 0) {\n setReceiveValue(formatPrice(value));\n setFeeValue(formatPrice(0));\n setExchangeValueEth('0');\n } else if (invertCard) {\n const amt = value * 10 ** 6;\n console.log('getting fee');\n // let transFees = 0;\n api\n .get(`v1/usdpi/fee/estimate/usdt/${amt}`)\n .then((response) => {\n const fee = response.data.estimate.fee / 10 ** 6;\n const net = response.data.estimate.net / 10 ** 6;\n setFeeValue(formatPrice(fee));\n setReceiveValue(formatPrice(net));\n if (net === 0) {\n setError(\n 'The value entered does not cover the fees for this transaction'\n );\n setIsValidSwap(false);\n }\n })\n .catch((feeerror) => {\n console.error('Error fetching data:', feeerror);\n });\n } else if (tokenSelected.name === 'ETH') {\n // ETH values have to be validated here\n const valueAsETH = value / (parseFloat(ethValue) / 10 ** 6);\n // console.log('valueAsETH: %s', valueAsETH);\n const valueAsETHString = valueAsETH.toFixed(18);\n // console.log('valueAsETHString: %s', valueAsETHString);\n const weiAmountString = ethers.utils\n .parseUnits(valueAsETHString, 'ether')\n .toString();\n // console.log('weiAmount: %s', weiAmountString);\n if (value === 0) {\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (ethBalance !== null) {\n const ethBalFloat = parseFloat(ethBalance) / 10 ** 18;\n // console.log('+++++ ethBalFloat: %s +++++', ethBalFloat);\n if (valueAsETH > ethBalFloat) {\n setError('The value entered exceeds your ETH balance');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else {\n setError('');\n setActionBtnText(`Send ${exchangeValueEth} ETH and purchase USDPI`);\n setIsValidSwap(true);\n }\n // validate\n setFeeValue(formatPrice(0));\n setReceiveValue(formatPrice(value));\n setExchangeValueEth(formatEthValue(weiAmountString));\n }\n setFeeValue(formatPrice(0));\n } else {\n setFeeValue(formatPrice(0));\n setReceiveValue(formatPrice(value));\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n debouncedValue,\n invertCard,\n tokenSelected,\n ethValue,\n ethBalance,\n exchangeValueEth,\n ]);\n\n const handleInvertCard = useCallback(() => {\n setError('');\n setInvertCard(!invertCard);\n }, [busd, exchangeValue, invertCard, usdpi]);\n\n // Called by changes in inputmask\n // Will pre-validate amount against balance and\n // avail liquidity before passing up for display\n // in the send/receive section\n const handleChangePrice = useCallback(\n async (e) => {\n setError('');\n console.log('handleChangePrice');\n // console.log('+++++ account: %s +++++', account);\n const value = parseFloat(e.target.value.slice(1).replaceAll(',', ''));\n if (account === null) {\n // console.log('Not connected - clearing value');\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setExchangeValueEth('0');\n } else if (!invertCard && tokenSelected.name === 'ETH') {\n // ETH validation takes place in debouncedValue effect\n console.log('ETH - skipping validation');\n if (value === 0) {\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setExchangeValue('0.00');\n } else {\n setExchangeValue(e.target.value.slice(1));\n }\n } else {\n // console.log('+++++ handleChangePrice - value: %s +++++', value);\n // const coinBusd = parseFloat(busd.replaceAll(',', ''));\n const coinUsdpi = parseFloat(usdpi.replaceAll(',', ''));\n const coinUsdt = parseFloat(usdt.replaceAll(',', ''));\n const liqUsdt = parseFloat(usdt_liq_f.replaceAll(',', ''));\n // console.log('+++++ handleChangePrice - coinUsdpi: %s +++++', coinUsdpi);\n // console.log('+++++ handleChangePrice - coinUsdt: %s +++++', coinUsdt);\n // console.log('+++++ handleChangePrice - liqUsdt: %s +++++', liqUsdt);\n if (value === 0) {\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setExchangeValue('0.00');\n } else if (invertCard && value > coinUsdpi) {\n setError(\n 'The value entered must be less than or equal to your amount of coins USDPI'\n );\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (invertCard && value > liqUsdt) {\n setError(\n 'The value entered must be less than or equal to avail USDPI liquidity'\n );\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (invertCard && value < 2) {\n setError('Minimum value to exchange is $2.00');\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (!invertCard && value > coinUsdt) {\n setError(\n 'The value entered must be less than or equal to your amount of coins USDT'\n );\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (!invertCard) {\n setActionBtnText(`Authorize $${value.toFixed(2)} and Buy USDPI`);\n setExchangeValue(e.target.value.slice(1));\n setIsValidSwap(true);\n } else if (invertCard) {\n setActionBtnText(`Sell $${value.toFixed(2)} USDPI`);\n setExchangeValue(e.target.value.slice(1));\n setIsValidSwap(true);\n // } else {\n // setActionBtnText('Exchange');\n // setExchangeValue(e.target.value.slice(1));\n }\n }\n },\n [\n invertCard,\n usdpi,\n usdt,\n usdt_liq_f,\n account,\n exchangeValueEth,\n tokenSelected,\n ]\n );\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const showMaxBtn = useCallback((): boolean => {\n // return account !== null && tokenSelected.name !== 'ETH';\n return false;\n }, [account, tokenSelected]);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const handleMax = useCallback(() => {\n setError('');\n // Get float versions of balances & liquidity\n const coinUsdpi = parseFloat(usdpi.replaceAll(',', ''));\n // console.log('+++++ coinUsdpi: %s +++++', coinUsdpi);\n const liqUsdt = parseFloat(usdt_liq_f.replaceAll(',', ''));\n const coinUsdt = parseFloat(usdt.replaceAll(',', ''));\n const allowanceUsdt = parseFloat(usdt_allowance_f.replaceAll(',', ''));\n if (invertCard) {\n console.log('+++++ coinUsdpi: %s +++++', coinUsdpi);\n const amt = coinUsdpi * 1000000;\n console.log('+++++ amt: %s +++++', amt);\n api\n .get(`v1/usdpi/fee/estimate/usdt/${amt}`)\n .then((response) => {\n const fee = response.data.estimate.fee / 10 ** 6;\n const net = response.data.estimate.net / 10 ** 6;\n setFeeValue(formatPrice(fee));\n setReceiveValue(formatPrice(net));\n if (net === 0) {\n setError(\n 'The value entered does not cover the fees for this transaction'\n );\n setIsValidSwap(false);\n }\n })\n .catch((feeerror) => {\n console.error('Error fetching data:', feeerror);\n });\n if (coinUsdpi === 0) {\n setError('Zero balance available available.');\n setActionBtnText(`Exchange`);\n setIsValidSwap(false);\n setExchangeValue('0.00');\n } else if (liqUsdt === 0) {\n setError('There is currently no USDT liquidity available.');\n setExchangeValue(usdpi);\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (coinUsdpi > liqUsdt) {\n setError(\n 'The value entered must be less than or equal to available USDT liquidity'\n );\n setExchangeValue(usdpi);\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else if (coinUsdpi < 2) {\n setError('Minimum value to exchange is $2.00');\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n } else {\n setActionBtnText(`Sell $${usdpi} USDPI`);\n setIsValidSwap(true);\n setExchangeValue(usdpi);\n }\n } else if (tokenSelected.name === 'ETH') {\n // do nothing\n } else if (!invertCard && coinUsdt === 0) {\n // console.log('+++++ HIT +++++');\n setExchangeValue('0.00');\n setActionBtnText(`Exchange`);\n setIsValidSwap(false);\n } else if (!invertCard) {\n setExchangeValue(usdt);\n setActionBtnText(`Authorize $${usdt} & Buy USDPI`);\n setIsValidSwap(true);\n }\n }, [invertCard, usdpi, usdt, usdt_liq_f, exchangeValue, tokenSelected]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const fetchBalances = async () => {\n // console.log('+++++ FETCH BALANCES +++++');\n try {\n if (account) {\n const response = await api.get(`v2/member/tokenBalances/${account}`);\n // console.log(response);\n if (response.data.balances.wallet_eth !== ethBalance) {\n setEthBalance(response.data.balances.wallet_eth);\n }\n if (response.data.balances.wallet_usdpi !== balusdpi) {\n // console.log(\n // 'response.data.balances.wallet_usdpi: %s',\n // response.data.balances.wallet_usdpi\n // );\n setBalusdpi(response.data.balances.wallet_usdpi);\n }\n if (response.data.balances.wallet_usdt !== balusdt) {\n setBalusdt(response.data.balances.wallet_usdt);\n }\n return { balances: response.data.balances };\n }\n } catch (balanceError) {\n console.log(balanceError);\n setEthBalance('0');\n setUsdpiBalance('0');\n setLoading(false);\n throw balanceError;\n }\n return { balances: {} };\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const fetchLiquidity = async () => {\n // console.log('+++++ FETCH LIQUIDITY +++++');\n try {\n if (account) {\n const response = await api.get(`v1/exchange/liquidity`);\n // console.log(response);\n if (response.data.liquidity.usdt !== liqusdt) {\n setLiqusdt(response.data.liquidity.usdt);\n // setLiqusdt('125000000'); // +++++ TEST ONLY\n }\n if (response.data.liquidity.busd !== liqbusd) {\n setLiqbusd(response.data.liquidity.busd);\n }\n return { liquidity: response.data.liquidity };\n }\n } catch (balanceError) {\n console.log(balanceError);\n setEthBalance('0');\n setUsdpiBalance('0');\n setLoading(false);\n throw balanceError;\n }\n return { balances: {} };\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const fetchAllBalances = async () => {\n fetchBalances();\n fetchLiquidity();\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const getSignature = (hashData: HashData) => {\n return new Promise((resolve, reject) => {\n (async () => {\n setProcessText('Waiting for signature in wallet');\n // console.log(hashData);\n // console.log(process.env.REACT_APP_USDPI_BURNER);\n const { deadline, amt2authorize, nonce, name, chain } = hashData;\n const version = '1';\n const domainData = {\n name,\n version,\n chainId: chain,\n verifyingContract: process.env.REACT_APP_BSC_USDPI,\n };\n const types = {\n Permit: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'value',\n type: 'uint256',\n },\n {\n name: 'nonce',\n type: 'uint256',\n },\n {\n name: 'deadline',\n type: 'uint256',\n },\n ],\n };\n const val = {\n owner: account,\n spender: process.env.REACT_APP_USDPI_BURNER,\n value: amt2authorize,\n nonce,\n deadline,\n };\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n const tsigner = tprovider.getSigner();\n let sig;\n try {\n sig = await tsigner._signTypedData(domainData, types, val);\n resolve(sig);\n } catch (sigerror) {\n // code to handle errors during signing of typed data\n console.error(sigerror); // log the error message to the console\n reject(sigerror);\n }\n })();\n });\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const executeSwapUsdpi = (hashData: HashData, sig: string) => {\n return new Promise((resolve, reject) => {\n (async () => {\n const { deadline, amt2authorize, nonce, name, chain } = hashData;\n api\n .post('/v1/exchange/sell4usdt', {\n owner: account,\n amount: amt2authorize,\n deadline,\n signature: sig,\n })\n .then(function (sallresponse) {\n // console.log(sallresponse);\n resolve('OK');\n })\n .catch(function (sellerror) {\n console.log('================= ERROR ===================');\n console.error(sellerror);\n reject(sellerror);\n });\n })();\n });\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // Get current approved USDT amount\n // ++++++++++++++++++++++++++++++++++++++\n const getUsdtAllowance = useCallback(async () => {\n // console.log('+++++ getUsdtAllowance +++++');\n // console.log(process.env.REACT_APP_ETH_SWAP);\n if (account !== null) {\n const response = await api.get(`v1/exchange/allowance/usdt/${account}`);\n // console.log(response.data.allowance);\n setUsdtAllowance(parseInt(response.data.allowance, 10));\n }\n }, [account]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // Get current ETH price\n // ++++++++++++++++++++++++++++++++++++++\n useEffect(() => {\n getUsdtAllowance();\n getEthPrice(1000000000000000000)\n .then((priceResult) => {\n console.log('+++++ ETH PRICE: %s +++++', priceResult);\n setEthValue(priceResult);\n })\n .catch((priceError) => {\n setEthValue('0.00');\n });\n // setEthValue\n }, [account]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleApproveUsdt = (usdtWeiString: string) => {\n return new Promise((resolve, reject) => {\n (async () => {\n try {\n // console.log(usdtWeiString);\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n const tsigner = tprovider.getSigner();\n const contractusdt = new ethers.Contract(\n process.env.REACT_APP_BSC_USDT as string,\n erc20Abi,\n tprovider\n );\n const overrides = { gasLimit: 50000 };\n\n const allowance = await contractusdt.allowance(\n await tsigner.getAddress(),\n process.env.REACT_APP_ETH_SWAP\n );\n\n if (BigNumber.from(allowance).gte(BigNumber.from(usdtWeiString))) {\n // If the allowance is greater than or equal to the desired amount, no need to approve again\n console.log('Approval already exists');\n resolve('EXISTS'); // Resolve the promise without initiating approval\n } else if (BigNumber.from(allowance).gt(BigNumber.from('0'))) {\n // User has existing allowance > 0...reset to 0\n console.log('Must reset approval');\n resolve('RESET');\n } else {\n setProcessText('Requesting approval, please confirm transaction.');\n // If the allowance is less than the desired amount, proceed with approval\n const trxapprove = await contractusdt\n .connect(tsigner)\n .approve(process.env.REACT_APP_ETH_SWAP, usdtWeiString, {\n from: await tsigner.getAddress(),\n ...overrides,\n });\n\n // console.log(trxapprove);\n setProcessText('Waiting for approval transaction to complete');\n\n const receipt = await trxapprove.wait(3);\n\n // console.log('***********************');\n // console.log(receipt);\n // console.log('***********************');\n resolve(receipt); // Resolve the promise when the approval is successful\n }\n } catch (approveerror) {\n console.error(approveerror);\n // setUsdpiPurchaseAmt('');\n // setUsdpiPurchaseTX('ERROR: Approval error');\n reject(approveerror); // Reject the promise when there is an error\n }\n })();\n });\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const executeSwapUsdt = async (usdtWeiString: string) => {\n try {\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n const accounts = await window.ethereum.request({\n method: 'eth_requestAccounts',\n });\n if (!accounts || !accounts[0]) {\n throw new Error('User wallet not connected');\n }\n const owner = accounts[0];\n const tsigner = tprovider.getSigner(owner);\n const contract = new ethers.Contract(\n process.env.REACT_APP_ETH_SWAP as string,\n usdtBank,\n tprovider\n );\n const usdtAmount = parseFloat(ethers.utils.formatUnits(usdtWeiString, 6));\n\n setProcessText(\n 'Ready to swap. Please confirm the transaction in your wallet'\n );\n\n let trx;\n let eventId;\n try {\n // Submit the transaction and immediately check its status\n trx = await contract\n .connect(tsigner)\n .depositUsdt(owner, usdtWeiString, { gasLimit: 100000 });\n // Log intent after successful submission\n setProcessText('Transaction submitted, logging intent...');\n const intentResponse = await api.post('/v1/usdpi/deposit/usdt/init', {\n nft_id: 0,\n wallet: owner,\n amount: usdtAmount,\n tx_hash: trx.hash,\n });\n eventId = intentResponse.data.event_id;\n } catch (depositError) {\n console.log('----------------------');\n console.log(\n 'Full depositError:',\n JSON.stringify(depositError, null, 2)\n );\n console.log('----------------------');\n\n let userMessage =\n 'An error occurred with the transaction. Please contact support for assistance.';\n if (depositError.code === 'ACTION_REJECTED') {\n console.log('+++');\n userMessage = 'You canceled the transaction.';\n } else if (depositError.reason) {\n if (\n depositError.reason.includes(\n 'ERC20: transfer amount exceeds balance'\n )\n ) {\n userMessage =\n 'Insufficient USDT balance. Please add funds and try again.';\n } else if (depositError.reason.includes('out of gas')) {\n userMessage =\n 'Transaction failed due to insufficient gas. Please ensure you have enough ETH and try again.';\n }\n } else if (depositError.code === 'CALL_EXCEPTION') {\n // Fallback to message if reason isn’t available\n if (\n depositError.message &&\n depositError.message.includes('transfer amount exceeds balance')\n ) {\n userMessage =\n 'Insufficient USDT balance. Please add funds and try again.';\n } else if (\n depositError.message &&\n depositError.message.includes('insufficient funds')\n ) {\n userMessage =\n 'Insufficient ETH for gas. Please add ETH and try again.';\n } else if (\n depositError.message &&\n depositError.message.includes('out of gas')\n ) {\n userMessage =\n 'Transaction failed due to insufficient gas. Please ensure you have enough ETH and try again.';\n }\n } else if (depositError.message) {\n // Generic fallback for any Ethers.js message\n if (depositError.message.includes('user rejected')) {\n userMessage = 'You canceled the transaction.';\n } else {\n userMessage =\n 'An error occurred with the transaction. Please contact support for assistance.';\n }\n }\n\n console.log('--- User message:', userMessage);\n setProcessText(userMessage);\n throw new Error(userMessage);\n }\n\n // Before waiting for confirmations, verify the transaction didn’t revert\n try {\n const receipt = await trx.wait(1); // Check for at least 1 confirmation\n if (receipt.status === 0) {\n throw new Error(\n 'Transaction reverted on-chain. Please contact support.'\n );\n }\n } catch (waitError) {\n console.log('----------------------');\n console.log('Wait error:', JSON.stringify(waitError, null, 2));\n console.log('----------------------');\n let userMessage =\n 'The transaction failed on the blockchain. Please contact support for assistance.';\n if (waitError.reason && waitError.reason.includes('timeout')) {\n userMessage =\n 'Transaction timed out. Please check your wallet and try again.';\n }\n setProcessText(userMessage);\n throw new Error(userMessage);\n }\n\n setProcessText('Waiting for transaction on blockchain (3 confirmations)');\n const receipt = await trx.wait(3); // Now wait for 3 confirmations\n const txHash = receipt.transactionHash.toString();\n console.log('Transaction confirmed:', txHash);\n\n try {\n await api.post('/v2/usdpi/deposit/usdt/tx', {\n event_id: eventId,\n nft_id: 0,\n tx: txHash,\n });\n console.log('Transaction successfully recorded in backend');\n } catch (swapError) {\n throw new Error(\n 'Transaction was confirmed, but failed to update in backend. Please contact support.'\n );\n }\n return txHash;\n } catch (exchangeError) {\n console.error('Swap failed:', exchangeError);\n if (exchangeError instanceof Error) {\n throw exchangeError;\n } else {\n throw new Error(exchangeError.message || 'An unknown error occurred.');\n }\n }\n };\n\n const executeSwapUsdtOld = (usdtWeiString: string) => {\n return new Promise((resolve, reject) => {\n try {\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n\n // Check if the user is connected and has provided access\n window.ethereum\n .request({ method: 'eth_requestAccounts' })\n .then((accounts: string[]) => {\n if (!accounts || !accounts[0]) {\n reject(new Error('User denied access or not connected'));\n return;\n }\n\n const owner = accounts[0];\n const tsigner = tprovider.getSigner(owner);\n\n const contract = new ethers.Contract(\n process.env.REACT_APP_ETH_SWAP as string,\n usdtBank, // Replace with your contract ABI\n tprovider\n );\n\n const overrides = { gasLimit: 100000 };\n setProcessText(\n 'Ready to swap. Please confirm the transaction in your wallet'\n );\n\n contract\n .connect(tsigner)\n .depositUsdt(owner, usdtWeiString, overrides)\n .then((trx: any) => {\n // console.log(trx);\n setProcessText('Waiting for transaction on blockchain');\n\n trx\n .wait(3)\n .then((receipt: any) => {\n // console.log('***********************');\n // console.log(receipt);\n // console.log('***********************');\n const txHash = receipt.transactionHash.toString();\n api\n .post('/v1/usdpi/deposit/usdt/tx', {\n nft_id: null,\n tx: txHash,\n })\n .then(function (acctresponse) {\n resolve(txHash); // Resolve the promise when the swap is successful\n })\n .catch(function (logerror) {\n console.error(logerror);\n reject(logerror); // Reject the promise when there is an error\n });\n })\n .catch((waiterror: Error) => {\n console.error(waiterror);\n reject(waiterror); // Reject the promise when there is an error\n });\n })\n .catch((depositerror: Error) => {\n console.error(depositerror);\n reject(depositerror); // Reject the promise when there is an error\n });\n })\n .catch((accounterror: Error) => {\n console.error(accounterror);\n reject(accounterror); // Reject the promise when there is an error\n });\n } catch (promiserror) {\n console.error(promiserror);\n reject(promiserror); // Reject the promise when there is an error\n }\n });\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const logExchange = useCallback((hash: string): Promise => {\n return new Promise((resolve, reject) => {\n console.log('+++++ logExchange +++++');\n api\n .post('/v1/usdpi/deposit/usdt/tx', {\n nft_id: 0,\n tx: hash,\n })\n .then(function (acctresponse) {\n setProcessText(\n 'Exchange accepted. Waiting for bridged USDPI to arrive.'\n );\n resolve('Complete');\n })\n .catch(function (logError) {\n console.log('== ERROR ==');\n console.error(logError);\n reject(logError);\n });\n });\n }, []);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const handleSubmitExchange = useCallback(async () => {\n setShowUpdateComplete(false);\n if (invertCard) {\n // Selling USDPI for USDT\n setProcessText('Preparing Swap');\n setLoading(true);\n console.log('Selling usdpi');\n console.log('debouncedValue: ', debouncedValue);\n const usdpiWeiString = Math.floor(\n parseFloat(debouncedValue) * 10 ** 18\n ).toString();\n console.log('usdtWeiString: ', usdpiWeiString);\n\n networkSwitch('NETWORK')\n .then(async (response) => {\n // console.log('+++++ network switched +++++');\n api\n .get('/v1/usdpi/sell/', {\n params: {\n wallet_address: account,\n amt2authorize: usdpiWeiString,\n },\n })\n .then(function (acctresponse) {\n const { data } = acctresponse;\n // console.log(data);\n getSignature(data)\n .then((signature) => {\n // console.log('+++++ signature: %s +++++', signature);\n setProcessText('Sending signed transaction');\n executeSwapUsdpi(data, signature as string)\n .then((sellResult) => {\n // congratHash\n setExchangeValue('0,00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setLoading(false);\n setCongratHash(null);\n setShowCongrat(true);\n fetchAllBalances();\n })\n .catch((sellError) => {\n setLoading(false);\n swalError({\n message: 'Swap transaction failed.',\n textButton: 'Try Again',\n });\n });\n })\n .catch((sigerror) => {\n console.log('+++++ sigerror: %s +++++', sigerror);\n setLoading(false);\n swalError({\n message: 'There was a problem getting your signature.',\n textButton: 'Try Again',\n });\n });\n // setLoading(false);\n })\n .catch(function (hasheserror) {\n console.log('================= ERROR ===================');\n console.log(hasheserror);\n setLoading(false);\n });\n })\n .catch((switchError) => {\n console.log(switchError);\n setLoading(false);\n swalError({\n message: 'There was a problem switching networks in your wallet',\n textButton: 'Try Again',\n });\n });\n } else if (tokenSelected.name === 'ETH') {\n console.log('+++++ SWAP ETH +++++');\n setProcessText(\n 'Preparing Swap. Please confirm transaction in your wallet.'\n );\n setLoading(true);\n\n networkSwitch('PAY')\n .then(async (response) => {\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n const tsigner = tprovider.getSigner();\n const swapBank = new ethers.Contract(\n process.env.REACT_APP_ETH_SWAP as string,\n EthUsdtSwapV3Abi,\n tprovider\n );\n // Execute exchange\n const ethExchangeValueFloat = parseFloat(exchangeValueEth) * 10 ** 18;\n const ethExchangeValue = ethExchangeValueFloat.toString();\n console.log(\n '+++++ ethExchangeValueFloat: %s +++++',\n ethExchangeValueFloat\n );\n console.log('+++++ ethExchangeValue: %s +++++', ethExchangeValue);\n swapBank\n .connect(tsigner)\n .swapEth4Usdt(ethExchangeValue, 0, {\n value: ethExchangeValue,\n })\n // .swapEth4Usdt('1000000000000000', 0, {\n // value: '1000000000000000',\n // })\n .then((tx: ContractTransaction) => {\n // console.log('+++++ ContractTransaction +++++');\n // console.log(tx);\n setProcessText('Exchange - waiting for transaction to complete');\n console.log('Transaction sent successfully:', tx);\n\n // Start polling for the transaction receipt\n const interval = 10000; // Check every 10 seconds\n const timeout = 300000; // Stop checking after 5 minutes\n const intervalId = setInterval(async () => {\n try {\n console.log('+++++ Getting receipt +++++');\n const receipt = await tsigner.provider.getTransactionReceipt(\n tx.hash\n );\n if (receipt && receipt.confirmations > 0) {\n console.log(receipt);\n clearInterval(intervalId);\n setProcessText('Exchange - bridging funds');\n logExchange(tx.hash)\n .then((logResult) => {\n setTimeout(() => {\n setExchangeValue('0,00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setLoading(false);\n setCongratHash(tx.hash);\n setShowCongrat(true);\n fetchBalances();\n }, 10000);\n })\n .catch((logError) => {\n console.error(logError);\n setLoading(false);\n // reject(logError);\n });\n }\n } catch (seekError) {\n setLoading(false);\n console.error(\n 'Error while checking transaction status:',\n seekError\n );\n }\n }, interval);\n\n // Set a timeout to stop checking\n setTimeout(() => {\n clearInterval(intervalId);\n // Handle the case where the transaction is not mined within the timeout\n console.error(\n 'Transaction was not mined within the specified timeout.'\n );\n logExchange(tx.hash)\n .then((logResult) => {\n // resolve('Complete');\n setLoading(false);\n })\n .catch((logError) => {\n // reject(logError);\n setLoading(false);\n });\n }, timeout);\n })\n .catch((ethSwapError: Error) => {\n console.error('Error during swap:', ethSwapError);\n setLoading(false);\n // reject(error);\n });\n })\n .catch((switchError) => {\n console.log(switchError);\n setLoading(false);\n swalError({\n message: 'There was a problem switching networks in your wallet',\n textButton: 'Try Again',\n });\n });\n } else {\n // Buying USDPI with USDT\n setProcessText('Preparing Swap');\n setLoading(true);\n // console.log('Buying usdpi');\n // console.log('debouncedValue: ', debouncedValue);\n const usdtWeiString = Math.floor(\n // parseFloat(debouncedValue) * 10 ** 6\n parseFloat(debouncedValue.replace(/[^0-9.]/g, '')) * 10 ** 6\n ).toString();\n // console.log('usdtWeiString: ', usdtWeiString);\n\n networkSwitch('PAY')\n .then(async (response) => {\n // console.log('+++++ network switched +++++');\n handleApproveUsdt(usdtWeiString)\n .then((approvalResponse) => {\n // console.log('Approval response: %s', approvalResponse);\n if (approvalResponse === 'RESET') {\n setLoading(false);\n setShowUpdate(true);\n } else {\n executeSwapUsdt(usdtWeiString)\n .then((swapTX) => {\n const swapTXString = swapTX as string;\n setExchangeValue('0,00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setLoading(false);\n setCongratHash(swapTXString);\n setShowCongrat(true);\n fetchBalances();\n })\n .catch((swapError) => {\n console.log('Swap failed:', swapError);\n setLoading(false);\n const errorMessage =\n swapError.message || 'Unknown error occurred';\n // Check for user rejection\n if (errorMessage === 'You canceled the transaction.') {\n swalError({\n message: errorMessage,\n textButton: 'Try Again',\n heading: 'Bridge Transaction Cancelled', // Custom heading\n });\n } else {\n swalError({\n message: errorMessage,\n textButton: 'Try Again',\n heading: 'Bridge Transaction Failed', // Default heading\n });\n }\n });\n }\n })\n .catch((approvalError) => {\n console.log('Approval failed');\n setLoading(false);\n swalError({\n message: 'Approval failed.',\n textButton: 'Try Again',\n heading: 'Bridge Transaction Failed',\n });\n });\n })\n .catch((switchError) => {\n console.log(switchError);\n setLoading(false);\n swalError({\n message: 'There was a problem switching networks in your wallet',\n textButton: 'Try Again',\n heading: 'Wallet Error',\n });\n });\n }\n }, [invertCard, debouncedValue, tokenSelected, exchangeValueEth]);\n\n const handleShow = useCallback(() => {\n setShow(true);\n }, []);\n\n const handleClick = useCallback((typeData) => {\n setType((state) => (state === typeData ? '' : typeData));\n }, []);\n\n const handleSelectToken = useCallback(\n (token) => {\n console.log('+++++ handleSelectToken: %s +++++', token.name);\n console.log(actionBtnText);\n setType('');\n setExchangeValue('0.00');\n setActionBtnText('Exchange');\n setIsValidSwap(false);\n setExchangeValueEth('0');\n setTokenSelected(token);\n },\n [actionBtnText]\n );\n\n const handleSelectNetwork = useCallback((network) => {\n setNetworkSelected(network);\n setType('');\n }, []);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const handleModeChange = (event: React.ChangeEvent) => {\n const { value } = event.target;\n setError('');\n setTokenSelected(tokenUSDT);\n setSelectedMode(value);\n setInvertCard(value === 'SELL');\n setActionBtnText(`Exchange`);\n setExchangeValue('0.00');\n setIsValidSwap(false);\n };\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n const handleMetamask = useCallback(() => {\n // Wrap the asynchronous logic in a Promise\n return new Promise((resolve, reject) => {\n (async () => {\n // Check if the account is already set (not null)\n if (account !== null) {\n resolve(account); // Resolve the promise with the existing account\n return;\n }\n\n // Check if MetaMask is available\n if (typeof window.ethereum === 'undefined') {\n const walletexistserror = new Error('MetaMask is not available.');\n swalError({\n message: 'MetaMask is not available.',\n textButton: 'Try Again',\n });\n reject(walletexistserror);\n return;\n }\n\n // Request access to the MetaMask accounts\n try {\n await window.ethereum.request({ method: 'eth_requestAccounts' });\n const provider = new ethers.providers.Web3Provider(window.ethereum);\n // Get the selected account address\n const signer = provider.getSigner();\n const selectedAddress = await signer.getAddress();\n setAccount(selectedAddress);\n resolve(selectedAddress); // Resolve the promise with the selected address\n } catch (walletError) {\n setAccount(null);\n const walletconnecterror = new Error(\n 'Connection to MetaMask failed.'\n );\n swalError({\n message: 'Connection to MetaMask failed.',\n textButton: 'Try Again',\n });\n reject(walletconnecterror); // Reject the promise with the error\n console.error(walletError);\n }\n })();\n });\n }, [account]);\n\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++++++\n // Add a listener for account changes when the component mounts\n useEffect(() => {\n const handleAccountsChanged = (accounts: string[]) => {\n // console.log('Account change detected');\n setExchangeValue('0.00');\n setError('');\n if (accounts.length > 0) {\n const checksumAddress = ethers.utils.getAddress(accounts[0]);\n setAccount(checksumAddress); // Assuming you want to use the first account\n } else {\n setAccount(null);\n }\n };\n\n if (window.ethereum) {\n window.ethereum.on('accountsChanged', handleAccountsChanged);\n }\n\n return () => {\n // Remove the listener when the component unmounts\n if (window.ethereum) {\n window.ethereum.removeListener(\n 'accountsChanged',\n handleAccountsChanged\n );\n }\n };\n }, []);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // BALANCE POLLING\n useEffect(() => {\n if (account !== null) {\n // Initial fetch\n fetchBalances();\n fetchLiquidity();\n\n // POLL BALANCES\n if (pollingEnabled) {\n const interval = setInterval(() => {\n fetchBalances();\n }, 30000);\n // Cleanup function: Clear the interval when the component unloads\n return () => {\n clearInterval(interval);\n };\n }\n }\n return undefined;\n }, [pollingEnabled, account]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // Changes input placeholder once user connects wallet\n useEffect(() => {\n if (account !== null) {\n setPlaceHolder('ENTER AMOUNT HERE');\n }\n }, [account]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleCloseCongrats = useCallback(() => {\n // console.log('Close modal');\n setShowCongrat(false);\n }, [showCongrat, congratHash]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleC14PurchaseClick = useCallback(() => {\n handleMetamask()\n .then((selectedAddress) => {\n // const ethId = '5f86f8ad-f546-4aeb-b77e-d75733834b39';\n // const usdtId = '70b9c29c-0b0e-4497-bf7b-a38a47221c84';\n const usdpiId = '5910b23a-0fa6-46f8-ab1c-6e6a71cc0a69';\n const c14url = `https://pay.c14.money/?targetAssetId=${usdpiId}&targetAddress=${selectedAddress}&bgColor=282828&mainColor=17171a&targetAssetIdLock=true`;\n window.open(c14url, '_blank');\n })\n .catch((mmerror) => {\n // something\n });\n }, []);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleImportUsdt = useCallback(async () => {\n handleMetamask()\n .then((selectedAddress) => {\n networkSwitch('NETWORK')\n .then(async (response) => {\n // console.log('response: %s', response);\n // console.log('import to wallet');\n\n const tokenName = 'USDPI';\n const tokenAddress = process.env.REACT_APP_BSC_USDPI;\n const tokenSymbol = 'USDPI';\n const tokenDecimals = '18';\n const tokenImage = '';\n const chainNo = process.env.REACT_APP_NETWORK_CHAIN_ID;\n const chainInt = parseInt(chainNo || '0', 16);\n const tprovider = (window as any).ethereum;\n const token = {\n type: 'ERC20',\n options: {\n address: tokenAddress,\n symbol: tokenSymbol,\n decimals: tokenDecimals,\n image: tokenImage,\n },\n };\n tprovider\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: token.options,\n chainId: chainInt,\n token,\n },\n })\n .then((addresponse: any) => {\n // console.log(`Added ${tokenName} (${tokenSymbol}) to MetaMask`);\n // console.log(addresponse);\n })\n .catch((adderror: Error) => {\n console.error(\n `Error adding ${tokenName} (${tokenSymbol}) to MetaMask`,\n adderror\n );\n });\n })\n .catch((swerr) => {\n // something\n });\n })\n .catch((mmerror) => {\n // something\n });\n }, []);\n\n // Function to handle keyboard events\n const handleKeyDown: React.KeyboardEventHandler = (e) => {\n if (e.key === 'Enter') {\n // Handle Enter key press\n // handleClick();\n }\n };\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleCloseUpdate = useCallback(() => {\n setShowUpdate(false);\n }, [showUpdate]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n const handleCloseUpdateComplete = useCallback(() => {\n setShowUpdateComplete(false);\n }, [showUpdateComplete]);\n\n // ++++++++++++++++++++++++++++++++++++++\n // ++++++++++++++++++++++++++++++++++++++\n // Called from ModalClearApproval\n // ++++++++++++++++++++++++++++++++++++++\n const handleUpdateBtn = useCallback(async () => {\n // pass\n console.log('UPDATING APPROVAL');\n setShowUpdate(false);\n setProcessText('Reset approval');\n setLoading(true);\n\n try {\n const tprovider = new ethers.providers.Web3Provider(window.ethereum);\n const tsigner = tprovider.getSigner();\n const contractusdt = new ethers.Contract(\n process.env.REACT_APP_BSC_USDT as string,\n erc20Abi,\n tprovider\n );\n const overrides = { gasLimit: 50000 };\n\n setProcessText('Clearing approval, please confirm transaction.');\n\n const trxapprove = await contractusdt\n .connect(tsigner)\n .approve(process.env.REACT_APP_ETH_SWAP, '0', {\n from: await tsigner.getAddress(),\n ...overrides,\n });\n\n // console.log(trxapprove);\n setProcessText('Waiting for approval transaction to complete');\n\n const receipt = await trxapprove.wait(3);\n\n setLoading(false);\n setShowUpdateComplete(true);\n // setShowUpdateComplete\n } catch (resetError) {\n setLoading(false);\n swalError({\n message: 'Approval reset failed.',\n textButton: 'Try Again',\n });\n }\n }, []);\n\n return (\n <>\n \n
\n
\n
\n \"Logo\n
\n
\n

USDPI

\n
\n
\n {account === null ? (\n \n Connect Wallet\n \n ) : (\n \n )}\n
\n {/*
\n

Swap

\n
*/}\n
\n
\n\n
\n
\n
\n
\n
\n
\n \n \n ORDER HISTORY\n \n \n Buy USDPI with Debit Card\n {' '}\n {\n e.preventDefault(); // Prevent the default link behavior\n handleC14PurchaseClick();\n }}\n >\n BUY INSTANTLY\n \n {/* {\n e.preventDefault(); // Prevent the default link behavior\n handleImportUsdt();\n }}\n >\n IMPORT USDPI TO WALLET\n */}\n
\n
\n
\n
\n \n \n Your USDPI Balance\n \n
\n
\n \n ${usdpi}\n \n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n \"Logo\n
\n

{tokenSelected.name}

\n
\n
\n {/* $1 */}\n {tokenSelected.name === 'ETH'\n ? `$ ${eth_value_f}`\n : `$1`}\n
\n
\n {tokenSelected.name === 'ETH'\n ? `${ethBal_f} ${tokenSelected.name}`\n : `${usdt} ${tokenSelected.name}`}\n
\n
\n
\n
\n {tokenSelected.name === 'ETH'\n ? '\\u00A0'\n : 'Spending Limit'}\n
\n
\n {tokenSelected.name === 'ETH'\n ? `\\u00A0`\n : `${usdt_allowance_f} ${tokenSelected.name}`}\n
\n
\n \n
\n
\n \n \n \n
\n \n
\n \n \n
\n \"Logo\n
\n

USDPI

\n
\n
$1
\n
\n {usdpi} USDPI\n
\n
\n
\n
 
\n
 
\n
\n \n
\n
\n
\n
\n
\n
\n \n Network Fees{' '}\n \n
\n \n Estimate only, fees will vary\n \n \n
\n

\n ${feeValue}\n
\n \n {feeValue} {invertCard ? 'USDPI' : tokenSelected.name}\n \n

\n
\n
\n Send\n

\n -${exchangeValue}\n
\n \n -\n {tokenSelected.name === 'ETH'\n ? exchangeValueEth\n : exchangeValue}{' '}\n {/* -{exchangeValue}{' '} */}\n {invertCard ? 'USDPI' : tokenSelected.name}\n \n

\n
\n
\n \n Receive (estimated)\n \n
\n

\n ${receiveValue}\n

\n
\n
\n
\n
\n \n
\n
\n {showMaxBtn() ? (\n \n Max\n \n ) : null}\n \n
\n\n {error && (\n \n {error}\n \n )}\n
\n
\n \n {actionBtnText}\n \n
\n \n
\n
\n {selectedMode === 'BUY' && (\n
\n

Choose Token & Network

\n
\n
\n
\n
\n Token\n
\n
\n
\n Network\n
\n
\n
\n
\n handleClick('token')}\n >\n \n

{tokenSelected.name}

\n \"Arrow\"\n \n \n {tokens.map((token, index) => (\n \n {index !== 0 &&
}\n handleSelectToken(token)}\n >\n {token.name}\n

{token.name}

\n \n
\n ))}\n \n
\n {/* \"Arrow\" */}\n
\n handleClick('network')}\n >\n \n

\n {networkSelected.name}\n

\n {/* \"Arrow\" */}\n \n \n {networks.map((network, index) => (\n \n {index !== 0 &&
}\n handleSelectNetwork(network)}\n >\n {network.name}\n

{network.name}

\n \n
\n ))}\n \n
\n
\n
\n
\n )}\n {selectedMode === 'SELL' && (\n
\n

Available Liquidity

\n
\n {tokens.map((token) => {\n if (token.name === 'ETH') {\n return null;\n }\n return (\n
\n
\n
\n {token.name}\n

{token.name}

\n
\n {/* \"Arrow\" */}\n
\n \n

\n {networkSelected.name}\n

\n
\n
\n \n {networkSelected.name === 'ETH'\n ? token.descriptionEth\n : token.descriptionBnb}\n \n

\n {/* {networkSelected.name === 'BNB'\n ? token.priceEth\n : token.priceBnb} */}\n {token.priceEth}\n

\n
\n );\n })}\n
\n
\n )}\n
\n
\n
\n \n \n \n \n \n );\n};\n\nexport default PageSwap;\n","import React from 'react';\nimport { Switch } from 'react-router-dom';\n\nimport Route from './Route';\n\n// import Home from '~/pages/Home';\n\n// import Sales from '~/pages/Sales';\n// import ActivateNft from '~/pages/ActivateNft';\n// import TokenUp from '~/pages/TokenUp';\n// import Order from '~/pages/Order';\n// import Payment from '~/pages/Payment';\n// import Register from '~/pages/Register';\n// import Dashboard from '~/pages/Dashboard';\n// import Resources from '~/pages/Resources';\n// import Referrers from '~/pages/Referrers';\n// import Learderboard from '~/pages/Learderboard';\n// import Wallet from '~/pages/Wallet';\n// import Winnings from '~/pages/Winnings';\n// import Links from '~/pages/Links';\n// import Training from '~/pages/Training';\n// import TrainingDetails from '~/pages/TrainingDetails';\n// import Profit from '~/pages/Profit';\n// import News from '~/pages/News';\n// import Nft from '~/pages/Nft';\n// import NftHistory from '~/pages/NftHistory';\n// import NftSaved from '~/pages/NftSaved';\n// import NftCollectionsPrivate from '~/pages/NftCollectionsPrivate';\n// import NftCollections from '~/pages/NftCollections';\n// import Matrix5X6 from '~/pages/Matrix5X6';\n// import UserProfile from '~/pages/UserProfile';\n// import Game from '~/pages/Game';\n// import TokenVault from '~/pages/TokenVault';\n// import ValueCrypto from '~/pages/ValueCrypto';\n// import Subscriptions from '~/pages/Subscriptions';\n// import Chatbot from '~/pages/Chatbot';\n// import LpNft from '~/pages/LpNft';\nimport NotFound from '~/pages/NotFoundPage';\n\n// import MyNfts from '~/pages/MyNfts';\nimport PageSwap from '~/pages/PageSwap';\n// import Launchpad from '~/pages/Launchpad';\n// import ProductRoadmap from '~/pages/ProductRoadmap';\n// import Discover from '~/pages/Discover';\n// import AiAvatar from '~/pages/AiAvatar';\n// import AiExpect from '~/pages/AiExpect';\n// import SignupAutoaffiliate from '~/pages/SignupAutoaffiliate';\n// import OrderOption from '~/pages/OrderOption';\n\nconst routes: React.FC = () => {\n return (\n \n \n {/* */}\n {/* */}\n \n {/* \n\n \n\n \n \n \n \n \n\n \n\n \n\n \n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n\n \n\n \n\n \n\n */}\n\n \n \n );\n};\n\nexport default routes;\n","import { createGlobalStyle } from 'styled-components';\n\nexport default createGlobalStyle`\n ::-webkit-scrollbar {\n background-color: #18191a;\n width: 5px;\n height: 5px;\n }\n\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background: #1d2023;\n }\n\n *{\n margin: 0;\n padding: 0;\n outline: 0;\n box-sizing: border-box;\n }\n\n body{\n -webkit-font-smoothing: antialiased;\n padding: 0 !important;\n background-color: #000;\n\n\n }\n\n body, input, button {\n font-family: 'Inter', sans-serif;\n font-size: 16px;\n color: #606060;\n }\n\n h1, h2, h3, h4, h5, h6, strong{\n font-weight: 500\n }\n\n button {\n cursor: pointer;\n }\n\n button:focus{\n outline: none;\n box-shadow: none !important;\n }\n\n a {\n text-decoration: none;\n }\n\n #qrCode{\n position: absolute;\n top: -10000px;\n }\n\n .font-weight-300{\n font-weight: 300 !important;\n }\n\n .font-weight-400{\n font-weight: 400 !important;\n }\n\n .font-weight-600{\n font-weight: 600 !important;\n }\n\n .h-42{\n height: 42px;\n }\n\n // inicio estlilização datepicker\n\n .react-datepicker {\n border-radius: 15px !important;\n }\n\n .react-datepicker__month-container {\n background: #17171a !important;\n border-radius: 15px !important;\n }\n\n .react-datepicker__header {\n background: #17171a !important;\n border-radius: 15px 15px 0 0 !important;\n }\n\n .react-datepicker__current-month,\n .react-datepicker-time__header,\n .react-datepicker-year-header {\n color: #bdbdbd !important;\n }\n\n .react-datepicker__month {\n border-radius: 15px !important;\n }\n\n .react-datepicker__day-name,\n .react-datepicker__day,\n .react-datepicker__time-name {\n color: #bdbdbd !important;\n :hover {\n color: #17171a !important;\n }\n }\n\n .react-datepicker__month-select,\n .react-datepicker__year-select {\n color: #bdbdbd !important;\n background: #17171a !important;\n }\n\n // fim estilização datepicker\n\n\n\n .border-silver {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(0deg, #242526, #242526),\n linear-gradient(180deg, #4A4B4B 0%, #c3c3c3 100%);\n background-origin: border-box;\n background-clip: content-box, border-box;\n border-image-slice: 1;\n border-radius: 10px;\n color: #e4e4e4;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n a.border-silver:hover, a.border-silver.active, button.border-silver:hover, button.border-silver.active {\n background-image: linear-gradient(180deg, #4A4B4B, #c3c3c3),\n linear-gradient(180deg, #4A4B4B, #c3c3c3);\n color: #fff;\n text-decoration: none;\n }\n\n .border-golden {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(180deg, #242526, #242526),\n linear-gradient(180deg, rgba(168, 107, 15), rgba(242, 201, 76, 1));\n background-origin: border-box;\n background-clip: content-box, border-box;\n border-image-slice: 1;\n border-radius: 10px;\n transition-duration: 0.3s;\n color: #fff;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n a.border-golden:hover:not([disabled]), a.border-golden.active, button.border-golden:hover:not([disabled]), button.border-golden.active {\n background-image: linear-gradient(180deg, rgba(168, 107, 15), rgba(242, 201, 76, 1)),\n linear-gradient(180deg, rgba(168, 107, 15), rgba(242, 201, 76, 1));\n color: #fff;\n text-decoration: none;\n }\n\n a.border-golden:disabled, button.border-golden:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .btn-gradient {\n background: linear-gradient(269.95deg, #e323ff 0.02%, #6A9AAE 97.45%);\n border-radius: 15px;\n color: #fff;\n border: none;\n height: 52px;\n transition-duration: 0.3s;\n font-size: 1.5rem;\n\n :hover {\n background: linear-gradient(\n 269.95deg,\n rgba(227, 35, 255, 0.8) 0.02%,\n rgba(121, 209, 248, 0.8) 97.45%\n ) !important;\n color: #fff;\n }\n\n :disabled{\n background: linear-gradient(269.95deg, #e323ff 0.02%, #79d1f8 97.45%) !important;\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n .border-gradient {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(180deg, #242526, #242526),\n linear-gradient(239.23deg, #9DF3FF 7.84%, #BCFFE5 28.62%, #DEEFD1 38.94%, #FFE0BE 49.96%, #FBC2D3 64.82%, #FABCD6 67.63%, #F281FF 91.88%) !important;\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n border-radius: 15px;\n transition-duration: 0.3s;\n color: #fff;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n .border-gradient-light {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(180deg, #323336, #323336),\n linear-gradient(239.23deg, #9DF3FF 7.84%, #BCFFE5 28.62%, #DEEFD1 38.94%, #FFE0BE 49.96%, #FBC2D3 64.82%, #FABCD6 67.63%, #F281FF 91.88%) !important;\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n border-radius: 10px;\n transition-duration: 0.3s;\n color: #fff;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n .border-gradient-cancel {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(180deg, #242526, #242526),\n linear-gradient(269.95deg, #E323FF 0.02%, #6A9AAE 97.45%) !important;\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n border-radius: 15px;\n transition-duration: 0.3s;\n color: #fff;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n\n\n .border-noGradient {\n cursor: pointer;\n border: none;\n padding: 2px;\n background-image: linear-gradient(180deg, #323336, #323336),\n linear-gradient(269.95deg, #323336 0.02%, #323336 97.45% ) !important;\n background-origin: border-box !important;\n background-clip: content-box, border-box !important;\n border-image-slice: 1 !important;\n border-radius: 10px;\n transition-duration: 0.3s;\n color: #A3A3A4;\n\n span {\n padding: 5px 10px;\n display: block;\n }\n }\n\n button.border-gradient,\n button.border-gradient-cancel {\n transition-duration: 0.3;\n height: 50px;\n\n :hover{\n opacity: 0.7;\n }\n\n :disabled{\n opacity: 0.7;\n cursor: no-drop;\n }\n }\n\n label.border-noGradient {\n transition-duration: 0.3;\n\n :hover{\n background-image: linear-gradient(180deg, #323336, #323336),\n linear-gradient(239.23deg, #9DF3FF 7.84%, #BCFFE5 28.62%, #DEEFD1 38.94%, #FFE0BE 49.96%, #FBC2D3 64.82%, #FABCD6 67.63%, #F281FF 91.88%) !important;\n color: #fff;\n }\n }\n\n .error-input{\n border-color: #c53030 !important;\n }\n\n .loading-box {\n position: fixed;\n width: 100%;\n height: 100vh;\n z-index: 2000;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n top: 0;\n left: 0;\n background: #00000055;\n }\n\n .zoom-1-3{\n zoom: 1.3;\n }\n\n .gradient-parts {\n background: linear-gradient(\n 239.23deg,\n #9df3ff 7.84%,\n #bcffe5 28.62%,\n #deefd1 38.94%,\n #ffe0be 49.96%,\n #fbc2d3 64.82%,\n #fabcd6 67.63%,\n #f281ff 91.88%\n );\n background-clip: text;\n -webkit-background-clip: text;\n color: transparent;\n -webkit-text-fill-color: transparent;\n\n b {\n font-weight: bold;\n }\n\n span {\n background-clip: unset;\n -webkit-background-clip: unset;\n color: #fff;\n -webkit-text-fill-color: #fff;\n }\n }\n\n .modal-wrong-network{\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.75) -38.97%,\n rgba(0, 0, 0, 0.85) 75.53%\n );\n backdrop-filter: blur(10px);\n\n .modal-content {\n background: #030303;\n box-shadow: 19px 49px 112px rgba(0, 0, 0, 0.4),\n }\n }\n\n .modal-update {\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.75) -38.97%,\n rgba(0, 0, 0, 0.85) 75.53%\n );\n backdrop-filter: blur(10px);\n\n .modal-content {\n background: #030303;\n box-shadow: 19px 49px 112px rgba(0, 0, 0, 0.4);\n }\n }\n\n .modal-signin-auto {\n background: rgba(0, 0, 0, 0.60);\n backdrop-filter: blur(10px);\n\n .modal-content {\n background: #171719;\n box-shadow: 19px 49px 112px rgba(0, 0, 0, 0.4),\n inset 1px 1px 2px rgba(107, 107, 107, 0.3),\n inset -1px -1px 2px rgba(43, 43, 43, 0.5);\n border-radius: 40px;\n\n .close{\n color: #fff;\n }\n }\n }\n\n .modal-signin, .modal-news {\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.15) -38.97%,\n rgba(0, 0, 0, 0.15) 75.53%\n );\n backdrop-filter: blur(10px);\n\n .modal-content {\n background: #17171a;\n box-shadow: 19px 49px 112px rgba(0, 0, 0, 0.4),\n inset 1px 1px 2px rgba(107, 107, 107, 0.3),\n inset -1px -1px 2px rgba(43, 43, 43, 0.5);\n border-radius: 30px;\n\n .close{\n color: #fff;\n }\n }\n }\n\n .modal-history-nft {\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.15) -38.97%,\n rgba(0, 0, 0, 0.15) 75.53%\n );\n backdrop-filter: blur(10px);\n\n .modal-content {\n background: #171719;\n border-radius: 40px;\n border: none;\n .close{\n color: #fff;\n }\n }\n }\n\n .modal-backdrop{\n background-color: transparent!important;\n }\n\n .modal-news .modal-dialog .modal-content {\n box-shadow: none !important;\n }\n\n .modal-nft {\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) -38.97%, rgba(0, 0, 0, 0.25) 75.53%);\n backdrop-filter: blur(25px);\n .modal-dialog .modal-content {\n box-shadow: none !important;\n border-radius: 25px;\n border: none!important;\n background: #212122;\n }\n }\n\n .choose-nft{\n .modal-content{\n width: 1300px;\n }\n }\n\n .modal-user-profile {\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) -38.97%, rgba(0, 0, 0, 0.25) 75.53%);\n backdrop-filter: blur(25px);\n .modal-dialog .modal-content {\n box-shadow: none !important;\n background: #1D2023;\n border-radius: 42px;\n border: none!important;\n }\n }\n\n .modal-img-upload {\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) -38.97%, rgba(0, 0, 0, 0.25) 75.53%);\n backdrop-filter: blur(25px);\n .modal-dialog .modal-content {\n box-shadow: none !important;\n border-radius: 25px;\n\n background: #212122;\n }\n\n /* .modal-dialog{\n width: 80%;\n } */\n\n }\n\n\n\n .modal-connect-wallet {\n background: rgba(214, 203, 210, 0.69);\n backdrop-filter: blur(7.5px);\n\n .modal-content {\n background: rgba(244, 247, 253, 0.42) !important;\n backdrop-filter: blur(10px);\n border-radius: 30px;\n border: none!important;\n }\n }\n\n .modal-news {\n .bg-title {\n background: rgba(0, 0, 0, 0.5);\n }\n\n .slick-prev {\n left: 15px;\n z-index: 100;\n top: 75%;\n }\n .slick-next {\n right: 15px;\n z-index: 100;\n top: 75%;\n }\n\n .slick-dots li.slick-active button:before {\n color: #cbccce !important;\n font-size: 13px !important;\n }\n\n .slick-dots li button:before {\n color: #4f4f4f !important;\n font-size: 13px !important;\n }\n\n .slick-dots {\n bottom: 25px;\n }\n\n .slick-dots li {\n margin: 0 !important;\n }\n\n .slick-prev:before,\n .slick-next:before {\n color: #cbccce;\n }\n }\n\n .font-weight-tiny{\n font-weight: 100 !important;\n }\n\n .opacity-0 {\n opacity: 0 !important;\n }\n\n .error-swal-box{\n padding-bottom: 76px;\n\n img{\n width: 230px;\n }\n\n p.h1{\n color: #DADADA;\n font-weight: 700;\n margin-bottom: 20px;\n }\n\n p {\n color: #A6A2A2;\n }\n\n .swal2-actions{\n width: 100%;\n\n button.swal2-confirm{\n width: 75%;\n height: 50px;\n background: #6D50D0 !important;\n border-radius: 10px !important;\n }\n }\n\n @media screen and (min-width: 992px) {\n width: 630px;\n padding: 0 40px 76px;\n }\n }\n\n .swal2-container{\n z-index: 2000 !important;\n }\n\n .swal2-popup{\n background: #17171a !important;\n box-shadow: 19px 49px 112px rgba(0, 0, 0, 0.4),\n inset 1px 1px 2px rgba(107, 107, 107, 0.3),\n inset -1px -1px 2px rgba(43, 43, 43, 0.5) !important;\n border-radius: 30px;\n\n .swal2-title {\n color: #fff;\n }\n\n .swal2-html-container{\n color: #949494;\n }\n\n .swal2-confirm{\n background: linear-gradient(269.95deg, #e323ff 0.02%, #79d1f8 97.45%) !important;\n border-radius: 20px !important;\n color: #fff;\n border: none;\n height: 45px;\n transition-duration: 0.3s;\n width: 100%;\n font-weight: 600;\n\n :hover {\n background: linear-gradient(\n 269.95deg,\n rgba(227, 35, 255, 0.8) 0.02%,\n rgba(121, 209, 248, 0.8) 97.45%\n ) !important;\n color: #fff;\n }\n\n :disabled{\n background: linear-gradient(269.95deg, #e323ff 0.02%, #79d1f8 97.45%) !important;\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n }\n\n .btn-filter{\n background: #1D2023;\n border: 1px solid #4A4B4B;\n padding: 0 25px;\n height: 40px;\n }\n\n @media screen and (max-width: 1399px){\n .btn-gradient{\n font-size: 1.3rem;\n }\n }\n\n @media screen and (max-width: 1199px){\n\n }\n\n @media screen and (max-width: 991px){\n .btn-gradient{\n height: 50px;\n }\n\n .modal-signin {\n .modal-content {\n .close{\n position: absolute;\n right: 1rem;\n }\n }\n }\n }\n\n /* COMPLEMENTO BS5 */\n body{\n .fw-medium {\n font-weight: 500 !important;\n }\n\n .fw-semibold {\n font-weight: 600 !important;\n }\n\n .h1, .h2, .h3, .h4, .h5, .h6,\n .h1-sm, .h2-sm, .h3-sm, .h4-sm, .h5-sm, .h6-sm,\n .h1-md, .h2-md, .h3-md, .h4-md, .h5-md, .h6-md,\n .h1-lg, .h2-lg, .h3-lg, .h4-lg, .h5-lg, .h6-lg,\n .h1-xl, .h2-xl, .h3-xl, .h4-xl, .h5-xl, .h6-xl,\n .h1-xxl, .h2-xxl, .h3-xxl, .h4-xxl, .h5-xxl, .h6-xxl {\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n }\n\n .display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1 {\n font-size: 2.5rem;\n }\n\n .h2 {\n font-size: 2rem;\n }\n\n .h3 {\n font-size: 1.75rem;\n }\n\n .h4 {\n font-size: 1.5rem;\n }\n\n .h5 {\n font-size: 1.25rem;\n }\n\n .h6 {\n font-size: 1rem;\n }\n\n .w-20 {\n width: 20% !important;\n }\n\n .w-25 {\n width: 25% !important;\n }\n\n .w-30 {\n width: 30% !important;\n }\n\n .w-35 {\n width: 35% !important;\n }\n\n .w-40 {\n width: 40% !important;\n }\n\n .w-45 {\n width: 45% !important;\n }\n\n .w-50 {\n width: 50% !important;\n }\n\n .w-55 {\n width: 55% !important;\n }\n\n .w-60 {\n width: 60% !important;\n }\n\n .w-65 {\n width: 65% !important;\n }\n\n .w-70 {\n width: 70% !important;\n }\n\n .w-75 {\n width: 75% !important;\n }\n\n .w-80 {\n width: 80% !important;\n }\n\n .w-85 {\n width: 85% !important;\n }\n\n .w-90 {\n width: 90% !important;\n }\n\n .w-95 {\n width: 95% !important;\n }\n\n .w-100 {\n width: 100% !important;\n }\n\n .w-auto {\n width: auto !important;\n }\n\n .h-25 {\n height: 25% !important;\n }\n\n .h-50 {\n height: 50% !important;\n }\n\n .h-75 {\n height: 75% !important;\n }\n\n .h-100 {\n height: 100% !important;\n }\n\n .h-auto {\n height: auto !important;\n }\n\n .mw-100 {\n max-width: 100% !important;\n }\n\n .mh-100 {\n max-height: 100% !important;\n }\n\n .min-vw-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-100 {\n min-height: 100vh !important;\n }\n\n .vw-100 {\n width: 100vw !important;\n }\n\n .vh-100 {\n height: 100vh !important;\n }\n\n .small {\n font-size: 90%;\n font-weight: 400;\n }\n\n .normal{\n font-size: 100%;\n }\n\n .big{\n font-size: 120%;\n }\n\n .m-n1 {\n margin: -0.25rem !important;\n }\n .m-n2 {\n margin: -0.5rem !important;\n }\n .m-n3 {\n margin: -1rem !important;\n }\n .m-n4 {\n margin: -1.5rem !important;\n }\n .m-n5 {\n margin: -3rem !important;\n }\n\n .mt-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-n3 {\n margin-top: -1rem !important;\n }\n .mt-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-n5 {\n margin-top: -3rem !important;\n }\n\n .me-n1 {\n margin-right: -0.25rem !important;\n }\n .me-n2 {\n margin-right: -0.5rem !important;\n }\n .me-n3 {\n margin-right: -1rem !important;\n }\n .me-n4 {\n margin-right: -1.5rem !important;\n }\n .me-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-n3 {\n margin-left: -1rem !important;\n }\n .ms-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-n5 {\n margin-left: -3rem !important;\n }\n\n @media (min-width: 576px) {\n .fw-sm-medium {\n font-weight: 500 !important;\n }\n\n .fw-sm-semibold {\n font-weight: 600 !important;\n }\n\n .display-sm-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-sm-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-sm-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-sm-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1-sm {\n font-size: 2.5rem;\n }\n\n .h2-sm {\n font-size: 2rem;\n }\n\n .h3-sm {\n font-size: 1.75rem;\n }\n\n .h4-sm {\n font-size: 1.5rem;\n }\n\n .h5-sm {\n font-size: 1.25rem;\n }\n\n .h6-sm {\n font-size: 1rem;\n }\n\n .w-sm-25 {\n width: 25% !important;\n }\n\n .w-sm-50 {\n width: 50% !important;\n }\n\n .w-sm-75 {\n width: 75% !important;\n }\n\n .w-sm-100 {\n width: 100% !important;\n }\n\n .w-sm-auto {\n width: auto !important;\n }\n\n .h-sm-25 {\n height: 25% !important;\n }\n\n .h-sm-50 {\n height: 50% !important;\n }\n\n .h-sm-75 {\n height: 75% !important;\n }\n\n .h-sm-100 {\n height: 100% !important;\n }\n\n .h-sm-auto {\n height: auto !important;\n }\n\n .mw-sm-100 {\n max-width: 100% !important;\n }\n\n .mh-sm-100 {\n max-height: 100% !important;\n }\n\n .min-vw-sm-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-sm-100 {\n min-height: 100vh !important;\n }\n\n .vw-sm-100 {\n width: 100vw !important;\n }\n\n .vh-sm-100 {\n height: 100vh !important;\n }\n\n .small-sm {\n font-size: 80%;\n font-weight: 400;\n }\n\n .normal-sm {\n font-size: 100%;\n }\n\n .big-sm {\n font-size: 120%;\n }\n\n .m-sm-n1 {\n margin: -0.25rem !important;\n }\n .m-sm-n2 {\n margin: -0.5rem !important;\n }\n .m-sm-n3 {\n margin: -1rem !important;\n }\n .m-sm-n4 {\n margin: -1.5rem !important;\n }\n .m-sm-n5 {\n margin: -3rem !important;\n }\n\n .mt-sm-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-sm-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-sm-n3 {\n margin-top: -1rem !important;\n }\n .mt-sm-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-sm-n5 {\n margin-top: -3rem !important;\n }\n\n .me-sm-n1 {\n margin-right: -0.25rem !important;\n }\n .me-sm-n2 {\n margin-right: -0.5rem !important;\n }\n .me-sm-n3 {\n margin-right: -1rem !important;\n }\n .me-sm-n4 {\n margin-right: -1.5rem !important;\n }\n .me-sm-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-sm-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-sm-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-sm-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-sm-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-sm-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-sm-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-sm-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-sm-n3 {\n margin-left: -1rem !important;\n }\n .ms-sm-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-sm-n5 {\n margin-left: -3rem !important;\n }\n }\n\n @media (min-width: 768px) {\n .fw-md-medium {\n font-weight: 500 !important;\n }\n\n .fw-md-semibold {\n font-weight: 600 !important;\n }\n\n .display-md-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-md-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-md-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-md-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1-md {\n font-size: 2.5rem;\n }\n\n .h2-md {\n font-size: 2rem;\n }\n\n .h3-md {\n font-size: 1.75rem;\n }\n\n .h4-md {\n font-size: 1.5rem;\n }\n\n .h5-md {\n font-size: 1.25rem;\n }\n\n .h6-md {\n font-size: 1rem;\n }\n\n .w-md-25 {\n width: 25% !important;\n }\n\n .w-md-50 {\n width: 50% !important;\n }\n\n .w-md-75 {\n width: 75% !important;\n }\n\n .w-md-100 {\n width: 100% !important;\n }\n\n .w-md-auto {\n width: auto !important;\n }\n\n .h-md-25 {\n height: 25% !important;\n }\n\n .h-md-50 {\n height: 50% !important;\n }\n\n .h-md-75 {\n height: 75% !important;\n }\n\n .h-md-100 {\n height: 100% !important;\n }\n\n .h-md-auto {\n height: auto !important;\n }\n\n .mw-md-100 {\n max-width: 100% !important;\n }\n\n .mh-md-100 {\n max-height: 100% !important;\n }\n\n .min-vw-md-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-md-100 {\n min-height: 100vh !important;\n }\n\n .vw-md-100 {\n width: 100vw !important;\n }\n\n .vh-md-100 {\n height: 100vh !important;\n }\n\n .small-md {\n font-size: 80%;\n font-weight: 400;\n }\n\n .normal-md {\n font-size: 100%;\n }\n\n .big-md {\n font-size: 120%;\n }\n\n .m-md-n1 {\n margin: -0.25rem !important;\n }\n .m-md-n2 {\n margin: -0.5rem !important;\n }\n .m-md-n3 {\n margin: -1rem !important;\n }\n .m-md-n4 {\n margin: -1.5rem !important;\n }\n .m-md-n5 {\n margin: -3rem !important;\n }\n\n .mt-md-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-md-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-md-n3 {\n margin-top: -1rem !important;\n }\n .mt-md-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-md-n5 {\n margin-top: -3rem !important;\n }\n\n .me-md-n1 {\n margin-right: -0.25rem !important;\n }\n .me-md-n2 {\n margin-right: -0.5rem !important;\n }\n .me-md-n3 {\n margin-right: -1rem !important;\n }\n .me-md-n4 {\n margin-right: -1.5rem !important;\n }\n .me-md-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-md-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-md-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-md-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-md-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-md-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-md-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-md-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-md-n3 {\n margin-left: -1rem !important;\n }\n .ms-md-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-md-n5 {\n margin-left: -3rem !important;\n }\n }\n\n @media (min-width: 992px) {\n .fw-lg-medium {\n font-weight: 500 !important;\n }\n\n .fw-lg-semibold {\n font-weight: 600 !important;\n }\n\n .display-lg-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-lg-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-lg-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-lg-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1-lg {\n font-size: 2.5rem;\n }\n\n .h2-lg {\n font-size: 2rem;\n }\n\n .h3-lg {\n font-size: 1.75rem;\n }\n\n .h4-lg {\n font-size: 1.5rem;\n }\n\n .h5-lg {\n font-size: 1.25rem;\n }\n\n .h6-lg {\n font-size: 1rem;\n }\n\n .w-lg-25 {\n width: 25% !important;\n }\n\n .w-lg-50 {\n width: 50% !important;\n }\n\n .w-lg-75 {\n width: 75% !important;\n }\n\n .w-lg-100 {\n width: 100% !important;\n }\n\n .w-lg-auto {\n width: auto !important;\n }\n\n .h-lg-25 {\n height: 25% !important;\n }\n\n .h-lg-50 {\n height: 50% !important;\n }\n\n .h-lg-75 {\n height: 75% !important;\n }\n\n .h-lg-100 {\n height: 100% !important;\n }\n\n .h-lg-auto {\n height: auto !important;\n }\n\n .mw-lg-100 {\n max-width: 100% !important;\n }\n\n .mh-lg-100 {\n max-height: 100% !important;\n }\n\n .min-vw-lg-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-lg-100 {\n min-height: 100vh !important;\n }\n\n .vw-lg-100 {\n width: 100vw !important;\n }\n\n .vh-lg-100 {\n height: 100vh !important;\n }\n\n .small-lg {\n font-size: 80%;\n font-weight: 400;\n }\n\n .normal-lg {\n font-size: 100%;\n }\n\n .big-lg {\n font-size: 120%;\n }\n\n .m-lg-n1 {\n margin: -0.25rem !important;\n }\n .m-lg-n2 {\n margin: -0.5rem !important;\n }\n .m-lg-n3 {\n margin: -1rem !important;\n }\n .m-lg-n4 {\n margin: -1.5rem !important;\n }\n .m-lg-n5 {\n margin: -3rem !important;\n }\n\n .mt-lg-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-lg-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-lg-n3 {\n margin-top: -1rem !important;\n }\n .mt-lg-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-lg-n5 {\n margin-top: -3rem !important;\n }\n\n .me-lg-n1 {\n margin-right: -0.25rem !important;\n }\n .me-lg-n2 {\n margin-right: -0.5rem !important;\n }\n .me-lg-n3 {\n margin-right: -1rem !important;\n }\n .me-lg-n4 {\n margin-right: -1.5rem !important;\n }\n .me-lg-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-lg-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-lg-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-lg-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-lg-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-lg-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-lg-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-lg-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-lg-n3 {\n margin-left: -1rem !important;\n }\n .ms-lg-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-lg-n5 {\n margin-left: -3rem !important;\n }\n }\n\n @media (min-width: 1200px) {\n .fw-xl-medium {\n font-weight: 500 !important;\n }\n\n .fw-xl-semibold {\n font-weight: 600 !important;\n }\n\n .display-xl-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xl-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xl-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xl-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1-xl {\n font-size: 2.5rem;\n }\n\n .h2-xl {\n font-size: 2rem;\n }\n\n .h3-xl {\n font-size: 1.75rem;\n }\n\n .h4-xl {\n font-size: 1.5rem;\n }\n\n .h5-xl {\n font-size: 1.25rem;\n }\n\n .h6-xl {\n font-size: 1rem;\n }\n\n .w-xl-25 {\n width: 25% !important;\n }\n\n .w-xl-50 {\n width: 50% !important;\n }\n\n .w-xl-75 {\n width: 75% !important;\n }\n\n .w-xl-100 {\n width: 100% !important;\n }\n\n .w-xl-auto {\n width: auto !important;\n }\n\n .h-xl-25 {\n height: 25% !important;\n }\n\n .h-xl-50 {\n height: 50% !important;\n }\n\n .h-xl-75 {\n height: 75% !important;\n }\n\n .h-xl-100 {\n height: 100% !important;\n }\n\n .h-xl-auto {\n height: auto !important;\n }\n\n .mw-xl-100 {\n max-width: 100% !important;\n }\n\n .mh-xl-100 {\n max-height: 100% !important;\n }\n\n .min-vw-xl-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-xl-100 {\n min-height: 100vh !important;\n }\n\n .vw-xl-100 {\n width: 100vw !important;\n }\n\n .vh-xl-100 {\n height: 100vh !important;\n }\n\n .small-xl {\n font-size: 80%;\n font-weight: 400;\n }\n\n .normal-xl {\n font-size: 100%;\n }\n\n .big-xl {\n font-size: 120%;\n }\n\n .m-xl-n1 {\n margin: -0.25rem !important;\n }\n .m-xl-n2 {\n margin: -0.5rem !important;\n }\n .m-xl-n3 {\n margin: -1rem !important;\n }\n .m-xl-n4 {\n margin: -1.5rem !important;\n }\n .m-xl-n5 {\n margin: -3rem !important;\n }\n\n .mt-xl-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-xl-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-xl-n3 {\n margin-top: -1rem !important;\n }\n .mt-xl-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-xl-n5 {\n margin-top: -3rem !important;\n }\n\n .me-xl-n1 {\n margin-right: -0.25rem !important;\n }\n .me-xl-n2 {\n margin-right: -0.5rem !important;\n }\n .me-xl-n3 {\n margin-right: -1rem !important;\n }\n .me-xl-n4 {\n margin-right: -1.5rem !important;\n }\n .me-xl-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-xl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-xl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-xl-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-xl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-xl-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-xl-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-xl-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-xl-n3 {\n margin-left: -1rem !important;\n }\n .ms-xl-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-xl-n5 {\n margin-left: -3rem !important;\n }\n }\n\n @media (min-width: 1400px) {\n .fw-xxl-medium {\n font-weight: 500 !important;\n }\n\n .fw-xxl-semibold {\n font-weight: 600 !important;\n }\n\n .display-xxl-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xxl-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xxl-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .display-xxl-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n }\n\n .h1-xxl {\n font-size: 2.5rem;\n }\n\n .h2-xxl {\n font-size: 2rem;\n }\n\n .h3-xxl {\n font-size: 1.75rem;\n }\n\n .h4-xxl {\n font-size: 1.5rem;\n }\n\n .h5-xxl {\n font-size: 1.25rem;\n }\n\n .h6-xxl {\n font-size: 1rem;\n }\n\n .w-xxl-25 {\n width: 25% !important;\n }\n\n .w-xxl-50 {\n width: 50% !important;\n }\n\n .w-xxl-75 {\n width: 75% !important;\n }\n\n .w-xxl-100 {\n width: 100% !important;\n }\n\n .w-xxl-auto {\n width: auto !important;\n }\n\n .h-xxl-25 {\n height: 25% !important;\n }\n\n .h-xxl-50 {\n height: 50% !important;\n }\n\n .h-xxl-75 {\n height: 75% !important;\n }\n\n .h-xxl-100 {\n height: 100% !important;\n }\n\n .h-xxl-auto {\n height: auto !important;\n }\n\n .mw-xxl-100 {\n max-width: 100% !important;\n }\n\n .mh-xxl-100 {\n max-height: 100% !important;\n }\n\n .min-vw-xxl-100 {\n min-width: 100vw !important;\n }\n\n .min-vh-xxl-100 {\n min-height: 100vh !important;\n }\n\n .vw-xxl-100 {\n width: 100vw !important;\n }\n\n .vh-xxl-100 {\n height: 100vh !important;\n }\n\n .small-xxl {\n font-size: 80%;\n font-weight: 400;\n }\n\n .normal-xxl {\n font-size: 100%;\n }\n\n .big-xxl {\n font-size: 120%;\n }\n\n .m-xxl-n1 {\n margin: -0.25rem !important;\n }\n .m-xxl-n2 {\n margin: -0.5rem !important;\n }\n .m-xxl-n3 {\n margin: -1rem !important;\n }\n .m-xxl-n4 {\n margin: -1.5rem !important;\n }\n .m-xxl-n5 {\n margin: -3rem !important;\n }\n\n .mt-xxl-n1 {\n margin-top: -0.25rem !important;\n }\n .mt-xxl-n2 {\n margin-top: -0.5rem !important;\n }\n .mt-xxl-n3 {\n margin-top: -1rem !important;\n }\n .mt-xxl-n4 {\n margin-top: -1.5rem !important;\n }\n .mt-xxl-n5 {\n margin-top: -3rem !important;\n }\n\n .me-xxl-n1 {\n margin-right: -0.25rem !important;\n }\n .me-xxl-n2 {\n margin-right: -0.5rem !important;\n }\n .me-xxl-n3 {\n margin-right: -1rem !important;\n }\n .me-xxl-n4 {\n margin-right: -1.5rem !important;\n }\n .me-xxl-n5 {\n margin-right: -3rem !important;\n }\n\n .mb-xxl-n1 {\n margin-bottom: -0.25rem !important;\n }\n .mb-xxl-n2 {\n margin-bottom: -0.5rem !important;\n }\n .mb-xxl-n3 {\n margin-bottom: -1rem !important;\n }\n .mb-xxl-n4 {\n margin-bottom: -1.5rem !important;\n }\n .mb-xxl-n5 {\n margin-bottom: -3rem !important;\n }\n\n .ms-xxl-n1 {\n margin-left: -0.25rem !important;\n }\n .ms-xxl-n2 {\n margin-left: -0.5rem !important;\n }\n .ms-xxl-n3 {\n margin-left: -1rem !important;\n }\n .ms-xxl-n4 {\n margin-left: -1.5rem !important;\n }\n .ms-xxl-n5 {\n margin-left: -3rem !important;\n }\n }\n }\n`;\n","import React, {\n createContext,\n useCallback,\n useState,\n useContext,\n useLayoutEffect,\n} from 'react';\n\ninterface ResizeContextData {\n width: number;\n}\n\nexport const ResizeContext = createContext(\n {} as ResizeContextData\n);\n\nexport const ResizeProvider: React.FC = ({ children }) => {\n const [width, setWidth] = useState(window.innerWidth);\n\n const updateSize = useCallback(() => {\n setWidth(window.innerWidth);\n }, []);\n\n useLayoutEffect(() => {\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, [updateSize]);\n\n return (\n \n {children}\n \n );\n};\n\nexport function useResize(): ResizeContextData {\n const context = useContext(ResizeContext);\n\n if (!context) {\n throw new Error('useResize must be used within an ResizeProvider');\n }\n\n return context;\n}\n","/* eslint-disable global-require */\n/* eslint-disable import/no-dynamic-require */\nimport React, {\n createContext,\n useCallback,\n useState,\n useContext,\n useMemo,\n} from 'react';\n\ninterface ILanguage {\n sign_in: {\n h1: string;\n h2: string;\n p: string;\n label_1: string;\n label_2: string;\n a: string;\n button: string;\n erro_1: string;\n erro_2: string;\n erro_3: string;\n erro_4: string;\n img_1: string;\n img_2: string;\n img_3: string;\n img_4: string;\n };\n sign_up: {\n h1: string;\n h2: string;\n p: string;\n label_1: string;\n label_2: string;\n label_3: string;\n button_1: string;\n label_4: string;\n button_2: string;\n erro_1: string;\n erro_2: string;\n erro_3: string;\n erro_4: string;\n erro_5: string;\n erro_6: string;\n img_1: string;\n img_2: string;\n img_3: string;\n img_4: string;\n };\n forgot_password: {\n h1: string;\n h2: string;\n label_1: string;\n a: string;\n button: string;\n erro_1: string;\n erro_2: string;\n success: string;\n img_1: string;\n img_2: string;\n img_3: string;\n img_4: string;\n };\n change_password: {\n h1: string;\n label_1: string;\n label_2: string;\n a: string;\n button: string;\n erro_1: string;\n erro_2: string;\n success: string;\n erro_3: string;\n img_1: string;\n img_2: string;\n img_3: string;\n img_4: string;\n };\n header: {\n small_1: string;\n small_2: string;\n small_3: string;\n small_4: string;\n small_5: string;\n small_6: string;\n small_7: string;\n small_8: string;\n };\n courses: {\n h1: string;\n button_1: string;\n button_2: string;\n button_3: string;\n button_4: string;\n button_5: string;\n };\n course: {\n p_1: string;\n p_2: string;\n p_3: string;\n button: string;\n h2: string;\n p_4: string;\n h4: string;\n };\n dashboard: {\n h3_1: string;\n h3_2: string;\n };\n discover: {\n p: string;\n };\n my_courses: {\n p: string;\n };\n upcoming: {\n b: string;\n p: string;\n };\n certificates: {\n p: string;\n };\n lesson: {\n p_1: string;\n small: string;\n button_1: string;\n button_2: string;\n button_3: string;\n button_5: string;\n h2_1: string;\n h2_2: string;\n p_2: string;\n h2_3: string;\n h3: string;\n p_3: string;\n };\n profile: {\n h1: string;\n button_1: string;\n button_2: string;\n button_3: string;\n };\n my_profile: {\n label_1: string;\n h3_1: string;\n label_2: string;\n label_3: string;\n label_4: string;\n h3_2: string;\n label_5: string;\n label_6: string;\n label_7: string;\n label_8: string;\n h3_3: string;\n label_9: string;\n label_10: string;\n label_11: string;\n button_1: string;\n button_2: string;\n };\n subscriptions_cards: {\n h2: string;\n th_1: string;\n th_2: string;\n th_3: string;\n th_4: string;\n th_5: string;\n th_6: string;\n button_1: string;\n button_2: string;\n h4_1: string;\n input_1: string;\n input_2: string;\n input_3: string;\n input_4: string;\n input_5: string;\n button_3: string;\n button_4: string;\n h4_2: string;\n p: string;\n button_5: string;\n button_6: string;\n };\n receipts: {\n b_1: string;\n b_2: string;\n b_3: string;\n };\n resources: {\n h1: string;\n p: string;\n button_1: string;\n button_2: string;\n button_3: string;\n };\n become_affiliate: {\n h1: string;\n h2_1: string;\n p_1: string;\n p_2: string;\n h3: string;\n img_1: string;\n h2_2: string;\n p_3: string;\n p_4: string;\n p_5: string;\n p_6: string;\n p_7: string;\n p_8: string;\n p_9: string;\n p_10: string;\n p_11: string;\n p_12: string;\n p_13: string;\n p_14: string;\n a_1: string;\n button_1: string;\n img_2: string;\n h2_3: string;\n p_15: string;\n p_16: string;\n p_17: string;\n p_18: string;\n p_19: string;\n p_20: string;\n p_21: string;\n p_22: string;\n p_23: string;\n p_24: string;\n p_25: string;\n p_26: string;\n a_2: string;\n button_2: string;\n };\n products: {\n h1: string;\n };\n faq: {\n h1: string;\n input: string;\n img: string;\n };\n footer: {\n h3_1: string;\n h3_2: string;\n h2: string;\n p_1: string;\n small: string;\n button: string;\n h4: string;\n b: string;\n p_2: string;\n img_1: string;\n img_2: string;\n img_3: string;\n img_4: string;\n };\n buy_component: {\n button_1: string;\n button_2: string;\n h4: string;\n b_1: string;\n b_2: string;\n button_3: string;\n button_4: string;\n button_5: string;\n error_message: string;\n };\n credit_card_component: {\n input_1: string;\n input_2: string;\n input_3: string;\n input_4: string;\n input_5: string;\n };\n quiz_component: {\n button_1: string;\n button_2: string;\n h4: string;\n p: string;\n button_3: string;\n error_message: string;\n };\n select_component: {\n input: string;\n };\n password_component: {\n button_1: string;\n button_2: string;\n };\n}\n\ninterface LanguageContextData {\n language: ILanguage;\n handleSelectIdiom(idiom: string): void;\n idiom: string;\n}\n\nexport const LanguageContext = createContext(\n {} as LanguageContextData\n);\n\nexport const LanguageProvider: React.FC = ({ children }) => {\n const [idiom, setIdiom] = useState(\n localStorage.getItem('@Membership:language') || 'en'\n );\n\n const handleSelectIdiom = useCallback((idiomSelected) => {\n setIdiom(idiomSelected);\n }, []);\n\n const language = useMemo(() => {\n localStorage.setItem('@Membership:language', idiom);\n return require(`./languages/${idiom}`);\n }, [idiom]);\n\n return (\n \n {children}\n \n );\n};\n\nexport function useLanguage(): LanguageContextData {\n const context = useContext(LanguageContext);\n\n if (!context) {\n throw new Error('useLanguage must be used within an LanguageProvider');\n }\n\n return context;\n}\n","import React from 'react';\n\nimport { ResizeProvider } from './Resize';\n// import { AuthProvider } from './Auth';\nimport { LanguageProvider } from './Language';\n\nconst AppProvider: React.FC = ({ children }) => (\n \n {/* */}\n {children}\n {/* */}\n \n);\n\nexport default AppProvider;\n","import React from 'react';\nimport { BrowserRouter } from 'react-router-dom';\nimport HttpsRedirect from 'react-https-redirect';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport '@animxyz/core';\nimport 'react-dropdown/style.css';\n\nimport Routes from '~/routes';\nimport GlobalStyles from './styles/global';\n\nimport AppProvider from './hooks';\n\nconst App: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}