glob["debug"] = 1; glob["btn_action"] = new Array(); glob["nick"] = new Array(); glob["balance"] = new Array(); glob["modal_hartbeat"] = 0; glob["page_hartbeat"] = 0; glob["access_balance"] = new Array(); glob["tarif_addr_list"] = new Array(); glob["tarif_addr_list2"] = new Array(); glob["tarif_addr_list2"]["matic"] = new Array(); glob["tarif_addr_list2"]["bsc"] = new Array(); glob["tarif_addr_list2"]["eth"] = new Array(); glob["circle_net"] = "matic"; glob["circle_net"] = "eth"; glob["gov_net"] = "mumbai"; glob["gov_net"] = "eth"; glob["governance"] = new Array(); glob["factory3_net"] = "eth"; var chainId = 0; var signer2; var provider; var ethereumClient; var WagmiCore; function log(txt) { if(glob["debug"]) { console.log("LOG: "+txt); } } var selectedAccount = ""; var web3modal; async function set_web3modal(v) { web3modal = v; } function init() { console.log("init"); } async function fetchAccountData(prov) { console.log("fetchAccountData"); switch(prov) { case "metamask": break; } } async function refreshAccountData() { console.log("refreshAccountData"); } async function onConnect(onload=false) { var prov_last = localStorage.getItem("web3_prov"); var last = get_cookie("selectedAccount"); log("onConnect"); if(selectedAccount !== "" && selectedAccount !== undefined) { log("BBBBBBBBBBBBBBBB "+selectedAccount); auth_on_off(1); } else { log("Cached address: "+last); if(last != "") { log("PROV: "+prov_last); switch(prov_last) { case "metamask": connectMetaMask(); break; case "okx": connectOkxWallet(); break; case "c98": connectCoin98Wallet(); break; case "wallet_connect_v2": if (!onload) { localStorage.removeItem("wc@2:core:0.3//messages"); localStorage.removeItem("wc@2:core:0.3//history"); web3modal.openModal(); } break; default: open_modal_connect(); } } else log("last selectedAccount has value: "+last); auth_on_off(0); } } async function onDisconnect() { console.log("onDisconnect"); selectedAccount = ""; set_cookie("selectedAccount",""); localStorage.setItem("web3_prov",""); auth_on_off(0); glob["onConnected"] = 0; await WagmiCore.disconnect(); return false; } async function change_chain(c) { log("change_chain"); var v = 0; var name = ""; var logo_name = ""; switch(c) { case "bsc": v = "0x38"; name = "BSC"; logo_name = "bsc.svg"; break; case "eth": v = "0x1"; name = "Ethereum Mainnet"; logo_name = "eth.svg"; break; case "matic": v = "0x89"; name = "Polygon Mainnet"; logo_name = "polygon.svg"; break; case "fork": v = "0x7A69"; name = "Custom Fork"; logo_name = "eth.svg"; break; case "mumbai": v = "0x13881"; name = "Polygon Mumbai"; logo_name = "polygon.svg"; break; case "goerli": v = "0x5"; name = "Ethereum Goerli"; logo_name = "goerli.svg"; break; case "arbitrum": v = "0xa4b1"; name = "Arbitrum"; logo_name = "arbitrum-logo.svg"; break; case "arbitrum_nova": v = "0xa4ba"; name = "Arbitrum Nova"; logo_name = "arbitrum-nova-logo.png"; break; case "avalanche": v = "0xa86a"; name = "Avalanche"; logo_name = "avax.svg"; break; case "optimism": v = "0xa"; name = "Optimism Mainnet"; logo_name = "optimism.svg"; break; case "polygon_zkevm": v = "0x44d"; name = "Polygon zkEVM"; logo_name = "polygon-zkevm-logo.png"; break; case "zksync": v = "0x144"; name = "zkSync Era Mainnet"; logo_name = "zksync_arrow2.png"; break; } var prov_now = get_web3_prov(); var prov_type1 = prov_type(prov_now); var network_params = [{ "0x38": { rpcUrls: ['https://rpc.ankr.com/bsc'], nativeCurrency: {name: 'BNB', symbol: 'BNB', decimal: 18}, } }]; switch(prov_type1) { case "wc": web3modal.openModal({route: 'SelectNetwork'}); break; default: try { await ethereum.request({ method: 'wallet_switchEthereumChain', params: [{ chainId: v }], }); } catch (error) { if (error.code == 4902) { } } } return false; } var web3mas = new Array(); web3mas["matic"] = new Web3("https://rpc.airdrop-hunter.site/polygon"); web3mas["bsc"] = new Web3("https://rpc.airdrop-hunter.site/bsc"); web3mas["eth"] = new Web3("https://rpc.airdrop-hunter.site/eth"); web3mas["fork"] = new Web3("https://rpc.airdrop-hunter.site/fork"); web3mas["mumbai"] = new Web3("https://rpc.airdrop-hunter.site/mumbai"); function explorer_url(name) { var explorer = ''; switch(name) { case "eth": explorer = 'https://etherscan.io/'; break; case "bsc": explorer = 'https://bscscan.com/'; break; case "matic": explorer = 'https://polygonscan.com/'; break; case "mumbai": explorer = 'https://mumbai.polygonscan.com/'; break; default: explorer = 'https://polygonscan.com/tx/'; } return explorer; } glob["screenshot"] = ""; function screenshots() { const screenshotTarget = document.body; var a = html2canvas(screenshotTarget); console.log(a); } function pushScreenshotToServer(dataURL) { $.ajax({ url: "/support/", type: "POST", data: { image: dataURL }, dataType: "html", success: function() { console.log('Screenshot pushed to server.'); } }); } hotkeys('alt+s', function(event, handler) { console.log("ALT + s pressed"); support_click(); }); hotkeys('alt+r', function(event, handler) { console.log("ALT + r pressed"); location.href = "/"; }); function connect_wallet_add_onclick() { var x = ''; var y = ''; var l = 0; x = document.getElementsByClassName('wallet_connect'); l = x.length; for(i = 0;i0) for(i=0;i0) for(i=0;i { if (xhr.status !== 200) { return; } eval(func); }; xhr.send(); } function wallet_id_set(wal) { var x = ''; var y = ''; var l = 0; var w = wal_3dot(wal); console.log("WALLET_id_SET: '"+w+"'"); x = document.getElementsByClassName('wallet-id'); l = x.length; for(i = 0;i 2) { t = wal.substring(0,5); t += '...'; t += wal.substring(38); } return t; } function ajax_get_data(requestURL,func) { const xhr = new XMLHttpRequest(); xhr.open('GET', requestURL); xhr.onload = () => { if (xhr.status !== 200) { return; }; eval(func); }; xhr.send(); } function ajax_post_data(requestURL,params,func) { const xhr = new XMLHttpRequest(); xhr.open('POST', requestURL); xhr.onload = () => { if (xhr.status !== 200) { return; }; eval(func); }; xhr.send(params); } function getCurrentTimestamp() { return Date.now() } function utime_to_localtime(t) { t *= 1000; dateObject = new Date(t); humanDateFormat = dateObject.toLocaleString(); return humanDateFormat; } function get_function_name(ownName) { ownName = ownName.substr('function '.length); ownName = ownName.substr(0, ownName.indexOf('(')); return ownName; } function change_theme() { var on; var x = document.getElementById('body'); var y = ""; y = x.className; var z = ""; if(y=="dark-theme") {on=0;z = "";} else {on=1;z = "dark-theme";} x.className = z; localStorage.setItem('theme', z); if(on) document.cookie = "theme=dark"; else document.cookie = "theme="; return false; } function set_theme() { var x = document.getElementById('body'); var y = ""; y = localStorage.getItem('theme'); x.className = y; x = document.getElementById('theme'); if(y=="") x.checked = false; else x.checked = true; } function btn_click_action(e) { var a = ""; if(glob["btn_action"][e.id] !== null) a = glob["btn_action"][e.id]; log("btn CLICK:"+e.id +' a:'+a); if(a)eval(a); return false; } function get_cookie(name) { var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); if (match) return match[2]; } function set_cookie(name,value) { var date = new Date(),expires = 'expires='; date.setTime(date.getTime() + 315360000000); expires += date.toGMTString(); document.cookie = name + '=' + value + '; ' + expires + '; path=/'; } function get_cookie(name) { var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); if (match) return match[2]; } function inviter_show() { var err; var t; var url; var n = get_cookie("ref_nick"); var a = get_cookie("ref_wal"); url = explorer_url("matic"); url += "address/"+a; err = 0; if(!err && a === undefined) { err = 1; t = "-"; } if(!err && n !== undefined) { t = ""+n+""; } else { t = ""+wal_3dot(a)+""; } var x; var y; var i; var l; y = document.getElementsByClassName("inviter"); l = y.length; for(i=0;i "; m["title"] = "Connect Okx wallet"; if (!window.okxwallet) { txt = img+"
Download in the Chrome Web Store
"; url = "https://chrome.google.com/webstore/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge"; glob["modal_txs_link"] = url; m["btn"] = "Install chrome extension["+k+"]"; m["btn_enable"] = 1; } else { connectOkxWallet(); txt = img+"
Confirm connection in OKX wallet
"; m["btn"] = "See you Okx Wallet"; } modal_tx_info_open(txt,m); $('#modal_auth').modal('hide'); break; case "metamask": img = "
"; m["title"] = "Connect Metamask wallet"; if (!window.ethereum) { txt = img+"
Download in the Chrome Web Store
"; url = "https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn"; glob["modal_txs_link"] = url; m["btn"] = "Install chrome extension["+k+"]"; m["btn_enable"] = 1; } else { connectMetaMask(); txt = img+"
Confirm connection in Metamask wallet
"; m["btn"] = "See you Metamask Wallet"; } modal_tx_info_open(txt,m); $('#modal_auth').modal('hide'); break; case "coin98": img = "
"; m["title"] = "Connect C98 wallet"; if (!window.coin98) { txt = img+"
Download in the Chrome Web Store
"; url = "https://chrome.google.com/webstore/detail/coin98-wallet/aeachknmefphepccionboohckonoeemg"; glob["modal_txs_link"] = url; m["btn"] = "Install chrome extension["+k+"]"; m["btn_enable"] = 1; } else { connectCoin98Wallet(); txt = img+"
Confirm connection in C98 wallet
"; m["btn"] = "See you C98 Wallet"; } modal_tx_info_open(txt,m); $('#modal_auth').modal('hide'); break; case "wallet_connect_v2": localStorage.removeItem("wc@2:core:0.3//messages"); localStorage.removeItem("wc@2:core:0.3//history"); web3modal.openModal(); $('#modal_auth').modal('hide'); localStorage.setItem("web3_prov", k); log("We are connected: "+k); break; } } async function connectMetaMask() { if (window.ethereum) { try { const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); set_selectedAccount(accounts[0]); localStorage.setItem("web3_prov","metamask"); provider = window.ethereum; log("signer2"); console.log(signer2); log('MetaMask connected'); modal_txs_close_timeout(); } catch (error) { if (error.code === 4001) { log('User cancel metamask connect'); } else { log('Metamask connect error:', error.message); } } } else { console.error('MetaMask extension not found'); } } async function connectOkxWallet() { if (window.okxwallet) { try { await window.okxwallet.enable(); const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); set_selectedAccount(accounts[0]); localStorage.setItem("web3_prov","okx"); provider = window.okxwallet; log('OkxWallet connected'); modal_txs_close_timeout(); } catch (error) { if (error.code === 4001) { log('User cancel okx connect'); } else { log('Okx connect error:', error.message); } } } else { console.error('OkxWallet extension not found'); } } async function connectCoin98Wallet() { if (window.coin98) { try { const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); set_selectedAccount(accounts[0]); localStorage.setItem("web3_prov","c98"); provider = window.ethereum; log('Coin98 connected'); modal_txs_close_timeout(); } catch (error) { if (error.code === 4001) { log('User cancel okx connect'); } else { log('Coin98 connect error:', error.message); } } } else { console.error('Coin98 extension not found'); } } function show_prov() { var prov_now = get_web3_prov(); log("prov_now: "+prov_now); } async function check_extension_installed() { log("check_extension_installed: "+name); var k; var x; window.ethereum.on("accountsChanged", (accounts) => { set_selectedAccount(accounts[0]); modal_txs_close_timeout(); }); log("XXXXXXXXXXXXX "); window.ethereum.on("chainChanged", (this_chainId) => { log("Legacy chain changed: "+this_chainId); set_selected_chain_id(this_chainId); }); k = "okx"; x = document.getElementById("connect_"+k); if (window.okxwallet) { log("wallet "+k+" ok"); x.classList.remove("gray"); } else { log(k+" not installed"); x.classList.add("gray"); } k = "coin98"; x = document.getElementById("connect_"+k); if (window.coin98) { log("wallet "+k+" ok"); x.classList.remove("gray"); } else { log(k+" not installed"); x.classList.add("gray"); } k = "metamask"; x = document.getElementById("connect_"+k); if (window.ethereum && window.ethereum.isMetaMask) { log("wallet "+k+" installed ok"); x.classList.remove("gray"); } else { log(k+" not installed"); x.classList.add("gray"); } } async function set_selectedAccount(addr,prov_name="") { var prov_type1; var prov_type2; var t2; var prov_now = get_web3_prov(); prov_type1 = prov_type(prov_now); prov_type2 = prov_type(prov_name); if(prov_type1 != prov_type2)return false; { if(addr === undefined)addr = ""; selectedAccount = addr; set_cookie("selectedAccount",selectedAccount); if(selectedAccount !== "" && selectedAccount !== undefined) { wallet_id_set(selectedAccount); check_white_list(); glob["onConnected"] = 1; log(signer2); switch(prov_type1) { case "legacy": t2 = await get_chain_id_legacy(); set_selected_chain_id(t2); break; } on_success_connect(); } auth_on_off(selectedAccount?1:0); set_wallet_img(); } } function show_cookie_acc() { var t = get_cookie("selectedAccount"); log("selectedAccount: "+t); } function set_net_img(net) { var n; var x; var img; switch(net) { case 137: img = ""; break; case 56: img = ""; break; case 1: img = ""; break; case 42161: img = ""; break; case 42170: img = ""; break; case 324: img = ""; break; case 1101: img = ""; break; case 43114: img = ""; break; case 10: img = ""; break; default: img = ""; } n = 'wallet-net'; set_by_className(n,img); } function set_wallet_img() { var n; var x; var img; var prov = localStorage.getItem("web3_prov"); log("IMG prov: "+prov); switch(prov) { case "metamask": img = ""; break; case "okx": img = ""; break; case "c98": img = ""; break; case "wc": case "wallet_connect_v2": img = ""; break; } n = 'wallet-logo'; set_by_className(n,img); } function getEthersProvider({ chainId }) { const publicClient = WagmiCore.getPublicClient({ chainId }); return publicClientToProvider(publicClient); } function publicClientToProvider(publicClient) { const { chain, transport } = publicClient; const network = { chainId: chain.id, name: chain.name, ensAddress: chain.contracts?.ensRegistry?.address, }; if (transport.type === 'fallback') return new ethers.providers.FallbackProvider( (transport.transports).map( ({ value }) => new ethers.providers.JsonRpcProvider(value?.url, network) ) ); return new ethers.providers.JsonRpcProvider(transport.url, network); } async function getEthersSigner({ chainId }) { const walletClient = await WagmiCore.getWalletClient({ chainId }); if (!walletClient) return undefined; return walletClientToSigner(walletClient); } function walletClientToSigner(walletClient) { const { account, chain, transport } = walletClient; const network = { chainId: chain.id, name: chain.name, ensAddress: chain.contracts?.ensRegistry?.address, }; const provider = new ethers.providers.Web3Provider(transport, network); const signer = provider.getSigner(account.address); return signer; } async function get_signer2() { var prov_now = get_web3_prov(); var prov_type1 = prov_type(prov_now); var signer2; var provier2; if (prov_type1 == "wc") { provider2 = await getEthersProvider({chainId}); signer2 = await getEthersSigner({ chainId }); if (!signer2) { console.error('Wallet provider not connected'); return; } } else { provider2 = new ethers.providers.Web3Provider(provider); signer2 = provider2.getSigner(); } return signer2; } async function show_signer() { console.log("show signer2"); var signer2 = await get_signer2(); console.log(signer2); } function set_selected_chain_id(id) { id = get_chain_hexdec(id); chainId = id; log("chain id set now: "+id); set_net_img(id); } function get_chain_hexdec(id) { var t; var l = id.length; if(l>=2) { t = id.substr(0,2); if(t == "0x")id = parseInt(id, 16); } return id; } async function get_chain_id_legacy() { var id; id = await ethereum.request({ method: 'eth_chainId' }); id = get_chain_hexdec(id); log("get_chain_id_legacy: "+id); return id; } function prov_type(prov) { switch(prov) { case "wallet_connect_v2": case "wallet_connect": r = "wc"; break; default: r = "legacy"; } return r; } function whoCallsMe() { stack = (new Error).stack; console.log('stack', stack); } function whoCallsMe2() { s = (new Error).stack; var t; t = s.indexOf("\n"); s = s.substr(t+1); t = s.indexOf("\n"); s = s.substr(t+1); t = s.indexOf("\n"); s = s.substr(0,t); s = s.trim(); t = s.indexOf("at "); s = s.substr(t+3); t = s.indexOf(" "); s = s.substr(0,t); s = s.trim(); return s; } function modal_txs_close_timeout() { setTimeout(modal_txs_close_timeout2,50); } function modal_txs_close_timeout2() { $('#modal_tx_info').modal('hide'); } function get_web3_prov() { var prov_now = localStorage.getItem("web3_prov"); return prov_now; } glob["modal_last"] = ""; function found_and_check_open_modal() { var x; var y = document.getElementsByClassName("modal"); var l = y.length; var i; for(i=0;i= 18) glob["modal_hartbeat"] = 0; } function func_page_governance() { glob["page_hartbeat"]++; if(glob["page_hartbeat"]==1) { web3_gov_is_admin(); web3_gov_update_time(); } if(glob["page_hartbeat"] >= 18) glob["page_hartbeat"] = 0; } function modal_tx_info_open(txt = '',err = '',btn='See YOUR wallet') { console.log('FUNC modal_tx_info_open'); var x; x = document.getElementById('modal_txs_info_ok'); x.innerHTML = txt; x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_id'); x.innerHTML = ''; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = btn; x.disabled = 1; $('#modal_tx_info').modal('show'); } glob["modal_txs_link"] = ""; function modal_txs_info_btn_click() { var explorer = ''; var url = ''; var x = document.getElementById('modal_txs_info_id'); if(x.innerHTML != '') { switch(chainId) { case 1: explorer = 'https://etherscan.io/tx/'; break; case 56: explorer = 'https://bscscan.com/tx/'; break; case 137: explorer = 'https://polygonscan.com/tx/'; break; case 80001: explorer = 'https://mumbai.polygonscan.com/tx/'; break; default: explorer = 'https://polygonscan.com/tx/'; } url = explorer+x.innerHTML; console.log(url); window.open(url, '_blank'); } if(glob["modal_txs_link"] != "") { url = glob["modal_txs_link"]; window.open(url, '_blank'); glob["modal_txs_link"] = ""; x = document.getElementById('modal_txs_info_btn'); x.disabled = 1; } } function check_white_list() { var url = glob["domen"]; if(!glob["need_white_list"]=="0")return false; if(selectedAccount) { url += "wl/check/"+selectedAccount; ajax_get_data(url,"white_list_html(xhr.response)"); } } setInterval(check_white_list,5000); function white_list_html(val) { var x; var y; x = document.getElementById('whitelist_on'); y = document.getElementById('whitelist_off'); if(val == 1) { if(x.className != "") x.className = ""; if(y.className != "d-none") y.className = "d-none"; } else { if(x.className != "d-none") x.className = "d-none"; if(y.className != "") y.className = ""; } } function on_success_connect() { var prov = localStorage.getItem('web3_prov'); } async function btn_nick_register() { var x = ""; var y = ""; var a = ""; var r = 0; var id = "nick_buy"; txt = "No action"; var err = ""; if(!err) { if(!selectedAccount || !glob["onConnected"]) { a = "onConnect();"; txt = "Connect Wallet"; err = 1; } } if(!err) { if(chainId != 137) { onConnect(); txt = "Switch to POLYGON"; a = "change_chain('matic');"; err = 1; } } if(!err) { y = document.getElementById('iref_nick'); if(y.value == "") { err = 1; txt = "Insert Nick"; a = "iref_nick_focus();"; } } if(!err) { txt = "Register"; a = "web3_ref_register();"; } x = document.getElementById(id); if(x === null) log("NULL "+id); if(x !== null) if(x.innerHTML != txt) { x.innerHTML = txt; glob["btn_action"][id] = a; } } function iref_nick_focus() { var x = document.getElementById('iref_nick'); x.focus(); } function btn_buy_white_list() { var t; var x; x = document.getElementById('buyModal_name'); t = 'Buy access to white list'; x.innerHTML = t; x = document.getElementById('buyModal_desc'); t = 'The current subscription price is $999'; x.innerHTML = t; tabs_change_active(1); $('#buyModal').modal('show'); } function tabs_change_active(i) { let tabs = document.querySelectorAll('.nav-pills .nav-link'); let tabText = document.querySelectorAll('.tabs .tab'); tabs[i].classList.add('active'); tabText[i].classList.add('active'); for (let m=0; m=0;i--) { t = res[2][i]; pos = t.indexOf("|"); tkn = t.substr(0,pos); t = t.substr(pos+1); pos = t.indexOf("|"); decimal = t.substr(0,pos); t = t.substr(pos+1); pos = t.indexOf("|"); symbol = t.substr(0,pos); t = t.substr(pos+1); pos = t.indexOf("|"); snap = t.substr(0,pos); t = t.substr(pos+1); pos = t.indexOf("|"); holders = t.substr(0,pos); t = t.substr(pos+1); amount = res[3][i]; amount /= 10**decimal; claimed = res[4][i]; claimed /= 10**decimal; type_text = "Live"; if(res[5][i]) { type_text = "Hidden"; } if(res[6][i]) { type_text = "Closed"; } if(res[5][i]) type = "tape-ended"; else type = "tape-live"; if(res[5][i] && !glob["governance"]["admin"])continue; symbol = symbol.replace("DEV",""); symbol = symbol.replace("WETH","ETH"); o += "
"+decimal+"
";; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; symbol2 = symbol.toLowerCase(); switch(symbol2) { case "sabai": img = "sabai.png"; break; case "defi": img = "defi2.svg"; break; default: img = symbol2+".svg"; } o += " "; o += " "; o += symbol; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "Your amount"; o += "
"; o += "
"; o += "-"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "Already Claimed"; o += "
"; o += "
"; o += "-"; o += "
"; o += "
"; o += "
"; o += "
"; o += ""; o += "
"; o += ""; o += "
"; o += ""+type_text+""; o += "
"; o += ""; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
Total amount:
"; o += "
"; o += amount; o += "
"; o += "
"; o += "
"; o += "
Total claimed:
"; o += "
"; o += claimed; o += "
"; o += "
"; o += ""; o += "
"; o += "
"; o += ""; o += "
"; o += "
"; o += "
"; o += "
Holders:
"; o += "
"; o += holders; o += "
"; o += "
"; o += "
"; o += "
Date:
"; o += "
"; o += utime_to_localtime(res[1][i]); o += "
"; o += "
"; o += ""; o += "
"; o += "
"; o += ""; o += "
"; o += "
"; if(!res[6][i]) { o += ""; } if(glob["governance"]["admin"]) { if(!res[6][i]) { o += " "; } if(res[5][i]) { o += " "; } else { o += " "; } } o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; o += "
"; } return o; } function set_by_className(c,v) { var i; var l; var x; var y; x = document.getElementsByClassName(c); l = x.length; for(i=0;i { dataURL = canvas.toDataURL(); x = document.getElementById('modal_support_img'); x.value = dataURL; $('#modal_support').modal('show'); } ); } glob["tarif_wallet_list"] = new Array(); function wallet_list(addr,tarif) { console.log("wallet_list load addr: "+addr+" tarif: "+tarif); var url = glob["domen"]+"wallets_list/"+addr+"/"+tarif; ajax_get_data(url,"wallet_list_load(xhr.response);"); } function wallet_list_load(data) { params = JSON.parse(data); if(params.status == 1) { glob["tarif_wallet_list"] = params.result; } else { glob["tarif_wallet_list"] = []; } } function btn_buy_refill() { $('#accountModal').modal('hide'); $('#buy_refill_modal').modal('show'); } function btn_buy_refill2() { $('#buy_refill_modal').modal('show'); } function refill_amount_change(e) { var x; var id = e.id; var id2 = id.replace("refill_amount_",""); console.log("Clicked: "+id2); x = document.getElementById("modal_refill_amount"); x.innerHTML = e.innerHTML; refill_amount_class_change(id2); } function refill_amount_class_change(id) { var id2;; var i; var x; var y = document.getElementsByClassName("btn-refill-amount"); var l = y.length; for(i = 0;i"; svg += ""; svg += ""; var o = ""; var x; var y; var wal_l; var step_l; x = document.getElementById('modal_circle_wallet_count'); wal_l = x.innerHTML; x = document.getElementById('modal_circle_progress_all'); step_l = x.innerHTML; { o += ""; o += ""; o += ""; for(i=1;i<=wal_l;i++) { o += ""; } o += ""; o += ""; for(n=1;n<=step_l;n++) { o += ""; x = document.getElementById("circle_name_"+id+"_"+n); txt = x.innerText; step_name = txt; o += ""; for(i = 0;i < wal_l;i++) { id2 = (i+1)+"_"+n; t = res["tx"][id2]; o += ""; } t = res["pers_step"][n]; if(t===undefined)t = " "; else t += "%"; o += ""; o += ""; } o += ""; o += ""; for(i = 1;i <= wal_l;i++) { t = res["pers_wal"][i]; if(t===undefined)t = " "; else t += "%"; o += ""; } v = res["pers_all"]; o += ""; o += "
 "; o += ""; o += "W"+(i); o += ""; o += "%
"; o += ""; o += n; o += ""; o += ""; if(t === undefined) i += ""; else { o += ""; txt = step_name+" "+res["wal"][i+1]; o += ""; o += svg; o += ""; o += ""; } o += ""+t+"
 "+t+" 
"; x = document.getElementById('modal_circle_detail_tbl'); x.innerHTML = o; x = document.getElementById('modal_circle_detail_goal'); x.innerHTML = res["pers_all"]; v2 = Math.round(v); x = document.getElementById("modal_circle_progress_now"); x.innerHTML = res["step_max"]; x = document.getElementById("modal_circle_progress_pers"); x.setAttribute("data-percentage", v2); x = document.getElementById("modal_circle_progress_pers2"); x.innerHTML = v+"%"; x = document.getElementById("modal_circle_airdrop_name"); y = document.getElementById("modal_circle_detail_airdrop_name"); y.innerHTML = x.innerHTML; y = document.getElementById("modal_circle_detail_circle"); y.innerHTML = res["circle"]; $('[data-toggle="tooltip"]').tooltip({ placement: 'bottom' }); } } function web3_error_parse(e) { var prov_now = get_web3_prov(); var prov_type1 = prov_type(prov_now); var err = ""; var t; var wal = get_cookie("selectedAccount"); var e2 = JSON.stringify(e); var o = new Object(); var name = get_function_name(arguments.callee.toString()); o.wal = wal; o.prov = prov_now; o.err = e2; web_log(name,o); t = e; switch(prov_type1) { case "wc": if(!err && t.error.message !== undefined) { err = t.error.message; } if(!err && t.code !== undefined) { switch(t.code+"") { case "4001": err = "Canceled by user in WalletConnect"; break; default: err = "WalletConnect error: "+t.code; } } break; default: console.log("!!!!!!!!!!!!"); if(t.code !== undefined) { switch(t.code+"") { case "4001": err = "Canceled by user in wallet: "+prov_now;; break; case "-32603": err = prov_now+": error code "+t.code; if(t.message !== undefined) err = prov_now+": "+t.message; if(t.data.message !== undefined) err = prov_now+": "+t.data.message; break; default: err = "Transaction error: "+t.code+" on wallet: "+prov_now; } } if(err == "") { if(t.data !== undefined) { err = t.data.message; } else err = t.message; pos = err.indexOf("("); if(pos > 0) err = err.substr(0,pos); switch(err) { case "MetaMask Tx Signature: User denied transaction signature.": case "Tx Signature: User denied transaction signature.": case "MetaMask Message Signature: User denied message signature.": case "MetaMask Personal Message Signature: User denied message signature.": case "Message Signature: User denied message signature.": case "Personal Message Signature: User denied message signature.": err = "Transaction canceled in wallet: "+prov_now; break; } } } err = err.replace("execution reverted: ",""); err = err.replace(".",".
\n"); return err; } function web_log(name,o) { var api_url; var wal = get_cookie("selectedAccount"); api_url = glob["api-dap"] + "web_log/"+name+"/"+wal; params = str = JSON.stringify(o); ajax_post_data(api_url, params, web_log_res); } function web_log_res(res) { console.log(res); } function token_mas(net) { var c_mas = new Array(); switch(net) { case "fork": c_mas["usdc"] = "0x3Fe765E7bf1197A61B79348bbb5cE1076f41f85D"; c_mas["usdt"] = "0xDBA3137E2D74E66e5e785FA87F554962d65c00cf"; c_mas["dai"] = "0x151c418c2911EF51E95521740eB342432b22b32E"; c_mas["eth"] = "0x4E22C60c9b25E07f1bd13b2fD26A27F06a3bB330"; break; case "mumbai": c_mas["usdc"] = "0xfc33dad01925B6074C8be4b90CfA70EEF0352a6A"; c_mas["usdt"] = "0x6DA4c6217F86A824B570C757E764711950aAb3CA"; c_mas["dai"] = "0xE14F092611b5726Bb79A471eaf76C2ab3165fd88"; c_mas["eth"] = "0x8486770AF10f191fFb8dc268FCb7E297D1416947"; break; case "matic": c_mas["usdc"] = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"; c_mas["usdt"] = "0xc2132D05D31c914a87C6611C10748AEb04B58e8F"; c_mas["dai"] = "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063"; c_mas["eth"] = "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619"; break; case "eth": c_mas["usdc"] = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; c_mas["usdt"] = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; c_mas["dai"] = "0x6B175474E89094C44Da98b954EedeAC495271d0F"; c_mas["defi"] = "0x6B0FaCA7bA905a86F221CEb5CA404f605e5b3131"; break; case "bsc": c_mas["usdc"] = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"; c_mas["usdt"] = "0x55d398326f99059fF775485246999027B3197955"; c_mas["dai"] = "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3"; break; } return c_mas; } glob["governance"]["admin"] = false; async function web3_gov_is_admin() { var t; var x; var net = glob["gov_net"]; var c = glob["contracts"]["gov_"+net]; var contract = new web3mas[net].eth.Contract(eth_abi["governance"], c); if(!selectedAccount)return false; contract.methods.IsAdmin(selectedAccount).call(function (err, res) { if (err) { console.log("An error occurred"); console.log(err); return; } glob["governance"]["admin"] = res; x = document.getElementById("gov_new_pos"); t = "btn btn-primary btn-rad10 btn-sm"; if(res == true && x.className != t) { x.className = t; glob["governance"]["update_time"] = ""; } if(res == false && x.className != "d-none") { x.className = "d-none"; glob["governance"]["update_time"] = ""; } }); } async function web3_gov_balance() { var d; var n; var x; var v; var i; var l; var k; var net = glob["gov_net"]; var c = glob["contracts"]["gov_"+net]; var contract = new web3mas[net].eth.Contract(eth_abi["governance"], c); if(!selectedAccount)return false; var tkns = new Array(); var atkns = new Array(); tkns = token_mas(net); atkns[0] = tkns["defi"]; atkns[1] = tkns["usdt"]; contract.methods.WalInfo(selectedAccount,atkns).call(function (err, res) { if (err) { console.log("An error occurred"); console.log(err); return; } l = res[3].length; for(i=0;i 0) { x = document.getElementById('gov_my_claimed_'+id); x.innerHTML = claimed; x = document.getElementById('gov_my_amount_'+id); x.innerHTML = "-"; } else { x = document.getElementById('gov_rew_amount_'+id); all = x.innerHTML; part = res[5][i]/res[4][i]; v = part * all; x = document.getElementById('gov_my_amount_'+id); x.innerHTML = v; } } }); } glob["ref_balance"] = new Array(); glob["ref_balance"]["update_time_bsc"] = 0; glob["ref_balance"]["update_time_matic"] = 0; async function web3_ref_balance_update_time(net) { var t; var x; var c = glob["contracts"]["ref_balance_"+net]; var contract = new web3mas[net].eth.Contract(eth_abi["ref_balance"], c); contract.methods.UpdateTime().call(function (err, res) { if (err) { console.log("An error occurred"); console.log(err); return; } if(glob["ref_balance"]["update_time_"+net] != res) { glob["ref_balance"]["update_time_"+net] = res; console.log("NEED LOAD INVITE LIST on "+net+": "+utime_to_localtime(res)); web3_ref_balance_list(net); } }); } async function web3_ref_balance_list(net) { console.log("web3_ref_balance_list - Net: "+net); var c = glob["contracts"]["ref_info_"+net]; var contract = new web3mas[net].eth.Contract(eth_abi["ref_info"], c); contract.methods.RefList().call(function (err, res) { if (err) { console.log("An error occurred"); console.log(err); return; } console.log(res); }); } async function web3_gov_approve(net,tkn) { var amount; var d; var x; var a; var c_mas = new Array(); c_mas = token_mas(net); var c = glob["contracts"]["gov_"+net]; const provider2 = new ethers.providers.Web3Provider(provider); const signer2 = provider2.getSigner(); var wal = selectedAccount; if(!wal) return false; x = document.getElementById("gov_"+net+"_i_"+tkn); a = x.value; a *= 1; x = document.getElementById("gov_"+net+"_d_"+tkn); d = x.innerHTML; amount = a * 10**d; amount = BigInt(amount); amount += ""; const contract = new ethers.Contract(c_mas[tkn], eth_abi["token"], signer2); name = "Approve "+a+" "+tkn.toUpperCase()+" to deposit"; modal_tx_info_open(name); try { r = await contract.approve(c,amount); if(r) { console.log("sended OK"); x = document.getElementById('modal_txs_info_id'); x.innerHTML = r.hash; console.log(r); x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'View in Explorer'; x.disabled = 0; } } catch(e) { t = e; if(t.data !== undefined) { err = t.data.message; } else err = t.message; pos = err.indexOf("("); if(pos > 0) err = err.substr(0,pos); err = err.replace("execution reverted: ",""); switch(err) { case "MetaMask Tx Signature: User denied transaction signature.": err = "Transaction canceled in Metamask"; break; } x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'Transaction error'; console.log(t); } } async function web3_gov_deposit(net,tkn) { var snap = 0; var debug = 0; var c_mas = new Array(); c_mas = token_mas(net); var c = glob["contracts"]["gov_"+net]; const provider2 = new ethers.providers.Web3Provider(provider); const signer2 = provider2.getSigner(); console.log("Contract: "+c); var wal = selectedAccount; if(!wal) return false; x = document.getElementById("gov_"+net+"_i_"+tkn); a = x.value; a *= 1; x = document.getElementById("gov_"+net+"_d_"+tkn); d = x.innerHTML; amount = a * 10**d; amount = BigInt(amount); amount += ""; const contract = new ethers.Contract(c, eth_abi["governance"], signer2); name = "Deposit "+a+" "+tkn.toUpperCase()+" to rewards"; modal_tx_info_open(name); try { gas = await contract.estimateGas.Deposit(c_mas[tkn],amount,snap,debug); console.log("Gas: "+gas); var options = {gasLimit: Math.ceil(gas*1.2)}; console.log("Deposit Amount: "+amount); r = await contract.Deposit(c_mas[tkn],amount,debug,snap,options); if(r) { x = document.getElementById('modal_txs_info_id'); x.innerHTML = r.hash; console.log(r); x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'View in Explorer'; x.disabled = 0; } } catch(e) { t = e; if(t.data !== undefined) { err = t.data.message; } else err = t.message; pos = err.indexOf("("); if(pos > 0) err = err.substr(0,pos); err = err.replace("execution reverted: ",""); switch(err) { case "MetaMask Tx Signature: User denied transaction signature.": err = "Transaction canceled in Metamask"; break; } x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'Transaction error'; console.log(t); } } async function web3_gov_claim(rew) { var net = glob["gov_net"]; console.log("web3_gov_claim()"); console.log("NET: "+net); if(!selectedAccount || !glob['onConnected']) { onConnect(); setTimeout(web3_gov_claim,500,rew); return false; } var c = glob["contracts"]["gov_"+net]; const signer2 = await get_signer2(); console.log("Contract: "+c); var wal = selectedAccount; if(!wal) return false; const contract = new ethers.Contract(c, eth_abi["governance"], signer2); name = "Claim rewards: "+rew; modal_tx_info_open(name); try { console.log("Rew: "+rew); gas = await contract.estimateGas.Claim(selectedAccount,rew); console.log("Gas: "+gas); var options = {gasLimit: Math.ceil(gas*1.2)}; r = await contract.Claim(selectedAccount,rew,options); if(r) { x = document.getElementById('modal_txs_info_id'); x.innerHTML = r.hash; console.log(r); x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'View in Explorer'; x.disabled = 0; } } catch(e) { err = web3_error_parse(e); x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'Transaction error'; } } async function web3_gov_withdraw(rew) { var net = glob["gov_net"]; console.log("web3_gov_withdraw()"); if(!selectedAccount || !glob['onConnected']) { onConnect(); setTimeout(web3_gov_withdraw,500,rew); return false; } var c = glob["contracts"]["gov_"+net]; const provider2 = new ethers.providers.Web3Provider(provider); const signer2 = provider2.getSigner(); console.log("Contract: "+c); var wal = selectedAccount; if(!wal) return false; const contract = new ethers.Contract(c, eth_abi["governance"], signer2); name = "Withdraw rewards: "+rew; modal_tx_info_open(name); try { console.log("Rew: "+rew); gas = await contract.estimateGas.Withdraw(rew); console.log("Gas: "+gas); var options = {gasLimit: Math.ceil(gas*1.2)}; r = await contract.Withdraw(rew,options); if(r) { x = document.getElementById('modal_txs_info_id'); x.innerHTML = r.hash; console.log(r); x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'View in Explorer'; x.disabled = 0; } } catch(e) { t = e; if(t.data !== undefined) { err = t.data.message; } else err = t.message; pos = err.indexOf("("); if(pos > 0) err = err.substr(0,pos); err = err.replace("execution reverted: ",""); switch(err) { case "MetaMask Tx Signature: User denied transaction signature.": err = "Transaction canceled in Metamask"; break; } x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'Transaction error'; console.log(t); } } async function web3_gov_rew_show_hide(rew) { var net = glob["gov_net"]; console.log("web3_gov_withdraw()"); if(!selectedAccount || !glob['onConnected']) { onConnect(); setTimeout(web3_gov_rew_show_hide,500,rew); return false; } var c = glob["contracts"]["gov_"+net]; const provider2 = new ethers.providers.Web3Provider(provider); const signer2 = provider2.getSigner(); console.log("Contract: "+c); var wal = selectedAccount; if(!wal) return false; const contract = new ethers.Contract(c, eth_abi["governance"], signer2); name = "Show/Hide rewards: "+rew; modal_tx_info_open(name); try { console.log("Rew: "+rew); gas = await contract.estimateGas.RewardShowHide(rew); console.log("Gas: "+gas); var options = {gasLimit: Math.ceil(gas*1.2)}; r = await contract.RewardShowHide(rew,options); if(r) { x = document.getElementById('modal_txs_info_id'); x.innerHTML = r.hash; console.log(r); x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'View in Explorer'; x.disabled = 0; } } catch(e) { t = e; if(t.data !== undefined) { err = t.data.message; } else err = t.message; pos = err.indexOf("("); if(pos > 0) err = err.substr(0,pos); err = err.replace("execution reverted: ",""); switch(err) { case "MetaMask Tx Signature: User denied transaction signature.": err = "Transaction canceled in Metamask"; break; } x = document.getElementById('modal_txs_info_err'); x.innerHTML = err; x = document.getElementById('modal_txs_info_btn'); x.innerHTML = 'Transaction error'; console.log(t); } }