let msgMagicHashDigest,v_btc,r_btc,s_btc,sig,messageHash,btcPublicKey,ordAddress,provider,chainId,computedEthAddressFromPubkey,qAicontract,recoverEthAddressFromVRS,signMsg,solWallet,signedSol,signedSolMessage,ethAddress,characterCount=0,word="",wordContext="",qAIColor="#39FF14";const enableQG=window.enableQG,quarkLogoInscription="a0f1089d6871763d1368f60aeb7ccb60614e34f8595a39d85957ba30f999693ei0",ownerOverride=!1,updateQAColor=()=>{try{document.getElementById("btnEthAi").style.color=qAIColor,document.getElementById("btnEthAi").style.border=`1px solid ${qAIColor}`,document.getElementById("preInputText").style.color=qAIColor,document.getElementById("inputDivAi").style.color=qAIColor,document.getElementById("inputDivAi").style.border=`1px solid ${qAIColor}`,document.getElementById("btnAiSubmit").style.color=qAIColor,document.getElementById("btnAiSubmit").style.border=`1px solid ${qAIColor}`,document.getElementById("aiNotif").style.color=qAIColor}catch(e){}},initGate=async()=>{if(document.body.style="overflow: hidden;margin: 0 !important;padding: 0 !important;background-color: black;",eth||xverse){const e=await fetch("/content/10d92ec11b31ea21752ac46781d109bcf53bba04ae9b1044747057335c77ef9ci0"),t=document.createElement("script");t.innerHTML=await e.text(),document.body.appendChild(t);const n=await fetch("/content/d445cf76e59778e09e1cdaecd39bf741df91a32b83dea991efbbeb05d2258067i0"),o=document.createElement("script");o.innerHTML=await n.text(),document.body.appendChild(o);const r=await fetch("/content/49f52053c42a613dbf37b34d41d2c6684eb63ae22856549c6cab983c0f28e0adi0"),s=document.createElement("script");s.innerHTML=await r.text(),document.body.appendChild(s),window.enableApp&&setup()}},xverse=window.XverseProviders,tsk=(new Date).toJSON().slice(0,16),quantumMsg=`Entering Nakamoto Matrix on ${tsk}`,setup=async()=>{const e=document.createElement("div");e.setAttribute("id","ordOsDiv0"),e.style="color: white; position: absolute;width: 100% !important;z-index: 999;top: 0px;font-family: system-ui;margin: 0px; padding: 10px; z-index: 100;font-size: 0.9em;line-height: 150%;",document.body.appendChild(e);const t=document.createElement("div");t.setAttribute("id","info0"),t.style.width="50%",t.style.marginLeft="10px",t.style.marginBottom="20px",t.style.fontSize=".9em",e.appendChild(t);let n=0;if(setInterval((function(){if(n<word.length){const e=word[n%word.length];document.getElementById("info0").innerHTML+=">"===e?"<br/>":e,n++}}),30),xverse||eth?enableQG?(document.getElementById("info0").innerHTML="",word=`${window.introMsg}>>Connect a ${xverse&&eth?"BTC":"ETH"} wallet to continue...>`):(document.getElementById("info0").innerHTML="",word=`${window.introMsg}`):(document.getElementById("info0").innerHTML="",word=">Xverse and ETH wallet required to continue>>"),xverse){const t=document.createElement("button");t.setAttribute("id","btnXverse"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.backdropFilter="blur(4px)",t.style.marginLeft="10px",t.style.display="none",t.onclick=()=>(async()=>{document.getElementById("btnXverse").disable=!0,document.getElementById("btnXverse").style.display="none",document.getElementById("btnEth").style.display="none",document.getElementById("info0").innerHTML="<p>Connecting to Bitcoin via Xverse...</p>";const e=await xverse.BitcoinProvider.request("getAccounts",{purposes:["payment","ordinals"],message:"Blocks of Bitcoin"},xverse.BitcoinProvider);if(e.error&&(document.getElementById("btnXverse").style.display="",document.getElementById("info0").innerHTML="<p>Connect a BTC wallet to continue...</p>"),e.result){const t=e.result.find((e=>"ordinals"===e.purpose)),n=e.result.find((e=>"payment"===e.purpose));btcAddress=n?.address,ordAddress=t?.address,btcPublicKey=n?.publicKey,window.sid=Number(window.selfSat).toString(16).toUpperCase(),signMsg=`${window.sid} ${quantumMsg} with BTC address ${btcAddress}`,document.getElementById("info0").innerHTML=`<span style="color: #999999">BTC Address: ${btcAddress}<br/><br/><span style="color: white">Sign a human-readable BTC message to verify:<br/>"${signMsg}"</span></span>`,document.getElementById("btnXverse").style.display="none";const o=await signBTC(signMsg,btcAddress);if(o&&o.address===btcAddress)if(ordAddress===window.ownerAddress){document.getElementById("info0").style.color=qAIColor,document.getElementById("info0").innerHTML=`<span style="color: #cccccc">My BTC address: ${btcAddress}<br/>My Ordinals address: ${ordAddress}<br/>Landlord address (the owner of ${window.assetName}): ${window.ownerAddress}</span><p>You are verified on Bitcoin.<br/><br/>Connect an ETH wallet to continue...</p>`,document.getElementById("btnEthAi").style.display="",messageHash=o.messageHash,msgMagicHashDigest=ethers.hexlify(ethers.decodeBase64(o.messageHash));const e=Point.fromHex(`${btcPublicKey}`);computedEthAddressFromPubkey=ethers.computeAddress(`0x${e.toHex(!1)}`),sig=ethers.decodeBase64(o.signature),v_btc=Number(ethers.dataSlice(sig,0,1))-27&!1?27:28,r_btc=ethers.zeroPadValue(ethers.dataSlice(sig,1,33),32),s_btc=ethers.zeroPadValue(ethers.dataSlice(sig,33,65),32)}else if(document.getElementById("info0").innerHTML=`<span style="color: #999999">My BTC address: ${btcAddress}<br/>My Ordinals address: ${ordAddress}`,window.ownerAddress)if(document.getElementById("info0").innerHTML+=`<br/>Landlord address (the owner of ${window.assetName}): ${window.ownerAddress}</span><p>`,eth){document.getElementById("btnEth").style.display="";try{document.getElementById("btnEthAi").style.display=""}catch(e){}document.getElementById("info0").innerHTML+="You do not own this land. However, you can still mint Quark20 or enter the Nakamoto Matrix!</p>"}else window.tipRecipient=window.ownerAddress,document.getElementById("btnXverseTip").style.display="",document.getElementById("btnXverseTip").onclick=()=>sendBtc(window.tipRecipient,window.tipSatAmount),document.getElementById("info0").innerHTML="</span><p>Quark20 mining requires both BTC and ETH wallets...<br/><br/>Would you tip the landlord?</p>";else if(eth){document.getElementById("btnEth").style.display="";try{document.getElementById("btnEthAi").style.display=""}catch(e){}document.getElementById("info0").innerHTML="</span><p>You do not own this land. However, you can still mint Quark20 or enter the Nakamoto Matrix!</p>"}else window.tipRecipient=window.tipCreator,document.getElementById("btnXverseTip").style.display="",document.getElementById("btnXverseTip").onclick=()=>sendBtc(window.tipRecipient,window.tipSatAmount),document.getElementById("info0").innerHTML="</span><p>Quark20 mining requires both BTC and ETH wallets...<br/><br/>Would you tip the creator?</p>";else document.getElementById("info0").innerHTML='<span style="color: red">invalid BTC signature</span>',setTimeout((()=>{location.reload()}),5e3)}})(),t.innerHTML="Connect Xverse",e.appendChild(t),setTimeout((()=>{t.style.display=""}),Math.floor(33*word.length))}if(xverse){const t=document.createElement("button");t.setAttribute("id","btnXverseTip"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.backdropFilter="blur(4px)",t.style.marginLeft="10px",t.style.display="none",t.innerHTML=`Tip ${window.tipSatAmount} sats`,e.appendChild(t)}if(eth){const t=document.createElement("button");t.setAttribute("id","btnEth"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.backdropFilter="blur(4px)",t.style.marginLeft="10px",t.style.display="none",t.onclick=async()=>{try{document.getElementById("btnEthAi").style.display="none"}catch(e){}xverse&&eth&&ordAddress===window.ownerAddress?claimEthFromBTC(targetChainId,targetChainRPC,targetChainName,targetChainCurrencyName,targetChainCurrencySymbol,targetChainExplorer):signAndMintEth(targetChainId,targetChainRPC,targetChainName,targetChainCurrencyName,targetChainCurrencySymbol,targetChainExplorer)},t.innerHTML="Connect MetaMask",e.appendChild(t),enableQG&&(xverse&&eth||setTimeout((()=>{t.style.display=""}),Math.floor(33*word.length)))}const o=e=>(e=e.replace(/["']/g,""))[0].toUpperCase()+e.slice(1),r=async()=>{const e=8453,t="Base Mainnet";document.getElementById("btnEth").style.display="none",document.getElementById("info0").innerHTML=`Connect to Nakamoto Matrix on ${t} via ETH wallet...`;const n=await window.ethereum.request({method:"eth_requestAccounts"}).catch((e=>{document.getElementById("info0").innerHTML='<span style="color: white">Please connect to ETH wallet to proceed...</span>',4001===e.code||(document.getElementById("btnEthAi").style.display="",console.error(e))}));ethAddress=n[0],document.getElementById("info0").style.color=qAIColor,document.getElementById("info0").innerHTML="AI + Blockchains + Metaverse = ?";const o=new ethers.BrowserProvider(window.ethereum),r=(await o.getNetwork()).chainId;if(Number(r)!=e){try{await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${e.toString(16)}`}]})}catch(t){if(4902===t.code)try{await window.ethereum.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${e.toString(16)}`,rpcUrls:["https://developer-access-mainnet.base.org"],chainName:"Base",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},blockExplorerUrls:["https://basescan.org"]}]})}catch(e){console.error(e),setTimeout((()=>{location.reload()}),5e3)}}return}document.getElementById("btnEthAi").style.display="none";const i=await o.getSigner(),d=ethers.formatEther(await o.getBalance(i.address));if(qAicontract=new ethers.Contract("0xDa51EF69a99a4ead76b5E7e04CDdF6761eEa04c7",["function balanceOf(address) view returns (uint256)","function query(string, address, string, uint8, bytes32, bytes32)","function ask(string)","function check(address) view returns (string)","function peek(address) view returns (string)","function recover(bytes32, uint8, bytes32, bytes32) pure returns (address)"],i),!xverse){if(ethers.formatEther(await qAicontract.balanceOf(i.address))<1e3)return document.getElementById("info0").innerHTML=`<span style="color: red">need at least 1000.0 $qAI balance on ${t}</span>`,void setTimeout((()=>{location.reload()}),5e3)}if(!(d>=5e-4))return document.getElementById("info0").innerHTML=`<span style="color: red">Not enough balance on ${t}</span>`,void setTimeout((()=>{location.reload()}),5e3);if(await s("Wake up, Neo...",!1),msgMagicHashDigest){const e=await qAicontract.recover(msgMagicHashDigest,27,r_btc,s_btc),t=await qAicontract.recover(msgMagicHashDigest,28,r_btc,s_btc);computedEthAddressFromPubkey===e?(v_btc=27,recoverEthAddressFromVRS=e):computedEthAddressFromPubkey===t?(v_btc=28,recoverEthAddressFromVRS=t):(document.getElementById("info0").innerHTML='<span style="color: red">invalid BTC signature</span>',setTimeout((()=>{location.reload()}),5e3)),console.log("recoverEthAddressFromVRS",recoverEthAddressFromVRS)}const a=await qAicontract.check(ethAddress);if(a){const e=await qAicontract.peek(ethAddress);if(e){for(const t in colorCodes)if(e.toLowerCase().includes(t)){updateParcelColor(t);break}setTimeout((()=>{s(`Nakamoto Matrix: ${e}`,!0)}),3e3)}else{let e;e=a.includes("Please infer based on")?"Nakamoto Matrix: I like this topic. However, what do you think about metaverse built on Bitcoin?":`Nakamoto Matrix: You said "${a}". Anything else?`,setTimeout((()=>{s(e,!0)}),3e3)}}else setTimeout((()=>{wordContext="Imaging it is the year 2030. How are AI, blockchains, and metaverse integrated together?";s(`Nakamoto Matrix: ${wordContext}`,!0)}),3e3);setTimeout((async()=>{document.getElementById("preInputText").style.display="none",document.getElementById("inputDivAi").style.display="none",document.getElementById("btnAiSubmit").style.display="none",document.getElementById("aiNotif").style.display="none",await s("Nakamoto Matrix session terminated...>>TIME'S UP!",!1),setTimeout((()=>{location.reload()}),2e4)}),2e5)},s=async(e,t)=>{const n=(e=>{if("?"===e[e.length-1])return o(e);const t=e.split(".");if(t.length>=1){t[t.length-1].length<13&&t.length>1&&delete t[t.length-1];let e=t.join(".");const n=o(e);return`${n}${"."===n[n.length-1]?"":"."}`}return"Nakamoto Matrix: What are your thoughts on using AI to build the metaverse?"})(e);let r=0;setInterval((function(){if(r<n.length){const e=n[r%n.length];document.getElementById("info0").innerHTML+=">"===e?"<br/>":e,r++}}),30),document.getElementById("info0").innerHTML="",setTimeout((()=>{t&&(document.getElementById("preInputText").style.display="",document.getElementById("inputDivAi").style.display="",document.getElementById("btnAiSubmit").style.display="",document.getElementById("aiNotif").style.display="",document.getElementById("btnAiSubmit").onclick=async()=>{document.getElementById("preInputText").innerHTML="Submitting...";try{await i()}catch(e){document.getElementById("preInputText").innerHTML="30 sec. cooldown",setTimeout((()=>{document.getElementById("preInputText").innerHTML="What say you?<br/>",document.getElementById("preInputText").style.display="",document.getElementById("inputDivAi").style.display="",document.getElementById("btnAiSubmit").style.display="",document.getElementById("aiNotif").style.display=""}),3e4)}})}),Math.floor(31.5*n.length))},i=async()=>{let e;document.getElementById("inputDivAi").style.display="none",document.getElementById("btnAiSubmit").style.display="none",document.getElementById("aiNotif").style.display="none",document.getElementById("btnAddQuark").style.display="none",wordContext+="Please infer based on:"+document.getElementById("inputDivAi").value,document.getElementById("inputDivAi").value="";try{e=msgMagicHashDigest?await qAicontract.query(wordContext,recoverEthAddressFromVRS,signMsg,v_btc,r_btc,s_btc):await qAicontract.ask(wordContext),document.getElementById("preInputText").innerHTML="Pending fulfillment..."}catch(e){document.getElementById("preInputText").innerHTML="TX failed...terminating...",setTimeout((()=>{location.reload()}),1e4)}const t=await qAicontract.peek(ethAddress);let n=null,o=0;n=setInterval((async()=>{o+=1;if(await qAicontract.check(ethAddress)!==wordContext)return;document.getElementById("preInputText").innerHTML="Fulfilling...";const e=await qAicontract.peek(ethAddress);if(t!==e){clearInterval(n),wordContext=e;for(const e in colorCodes)if(wordContext.toLowerCase().includes(e)){updateParcelColor(e);break}word=`Nakamoto Matrix: ${e}`,document.getElementById("preInputText").style.display="none",document.getElementById("preInputText").innerHTML="What say you?<br/>",await s(word,!0)}o>15&&(clearInterval(n),word=`Nakamoto Matrix: ${t}`,document.getElementById("preInputText").style.display="none",document.getElementById("preInputText").innerHTML="What say you? (try again?)<br/>",await s(word,!0))}),2e3)};if(eth){const t=document.createElement("button");t.setAttribute("id","btnEthAi"),t.style.padding="7px",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.color=qAIColor,t.style.border=`1px solid ${qAIColor}`,t.style.backgroundColor="transparent",t.style.backdropFilter="blur(4px)",t.style.marginLeft="10px",t.style.display="none",t.onclick=async()=>{if(window.solana&&!solWallet){const e=await window.solana.connect();solWallet=e.publicKey,qAIColor="#cabdfc",updateQAColor()}else{if(window.solana&&solWallet&&!signedSol){const e=`Enable qAI (SOL) bonus in Nakamoto Matrix (${Math.floor(Date.now()/1e3)}) for Sol wallet: ${solWallet}`,t=(new TextEncoder).encode(e);try{signedSolMessage=await window.solana.request({method:"signMessage",params:{message:t,display:"utf8"}}),signedSol=!0}catch(e){qAIColor="#39FF14",updateQAColor()}}await r(targetChainId)}},t.innerHTML="Enter Nakamoto Matrix",e.appendChild(t),xverse||setTimeout((()=>{t.style.display=""}),Math.floor(33*word.length));const n=document.createElement("div");n.setAttribute("id","preInputText"),n.style.marginTop="5px",n.style.marginBottom="5px",n.style.marginLeft="10px",n.style.fontSize=".8em",n.style.color=qAIColor,n.style.display="none",n.innerHTML="What say you?<br/>",e.appendChild(n);const o=document.createElement("textarea");o.setAttribute("id","inputDivAi"),o.setAttribute("maxlength","140"),o.setAttribute("rows","4"),o.setAttribute("cols","40"),o.setAttribute("wrap","hard"),o.placeholder="Enter texts (max: 140 characters)",o.style.textAlign="left",o.style.verticalAlign="top",o.style.width="240px",o.style.height="80px",o.style.padding="10px",o.style.marginLeft="10px",o.style.color=qAIColor,o.style.fontSize=".9em",o.style.resize="none",o.style.border=`1px solid ${qAIColor}`,o.style.backgroundColor="transparent",o.style.backdropFilter="blur(4px)",o.style.display="none",e.appendChild(o);const s=document.createElement("button");s.setAttribute("id","btnAiSubmit"),s.style.padding="7px",s.style.color=qAIColor,s.style.verticalAlign="top",s.style.cursor="pointer",s.style.fontSize=".7em",s.style.width="80px",s.style.height="80px",s.style.padding="10px",s.style.border=`1px solid ${qAIColor}`,s.style.backdropFilter="blur(4px)",s.style.backgroundColor="transparent",s.style.marginLeft="10px",s.style.display="none",s.innerHTML="SUBMIT",e.appendChild(s),e.appendChild(document.createElement("br"));const i=document.createElement("div");i.setAttribute("id","aiNotif"),i.style.marginTop="5px",i.style.marginLeft="10px",i.style.fontSize=".7em",i.style.color=qAIColor,i.style.display="none",i.innerHTML='Onchain submissions will be fulfilled by qAI operators. <span style="text-decoration: underline;cursor:pointer">Add $qAI</span><br/>',i.onclick=async()=>{document.getElementById("info0").style.display="none",document.getElementById("preInputText").style.display="none",document.getElementById("inputDivAi").style.display="none",document.getElementById("btnAiSubmit").style.display="none",document.getElementById("aiNotif").style.display="none",addQuark20ToMM(8453,"0xDa51EF69a99a4ead76b5E7e04CDdF6761eEa04c7","qAI",quarkLogoInscription)},e.appendChild(i)}if(eth){const t=document.createElement("button");t.setAttribute("id","btnAddQuark"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.backdropFilter="blur(4px)",t.style.marginLeft="10px",t.style.display="none",t.innerHTML="Add Quark20 ($Q) to MetaMask",e.appendChild(t),e.appendChild(document.createElement("br")),e.appendChild(document.createElement("br"));const n=document.createElement("div");n.setAttribute("id","inscribeInfo0"),n.style.marginLeft="10px",n.style.fontSize=".9em",n.style.display="none",e.appendChild(n),e.appendChild(document.createElement("br"));const o=document.createElement("textarea");o.setAttribute("id","inputDiv0"),o.setAttribute("maxlength","140"),o.setAttribute("rows","4"),o.setAttribute("cols","40"),o.setAttribute("wrap","hard"),o.placeholder="Enter texts (max: 140 characters)",o.style.textAlign="left",o.style.verticalAlign="top",o.style.width="240px",o.style.height="80px",o.style.padding="10px",o.style.marginLeft="10px",o.style.color="#cccccc",o.style.fontSize=".9em",o.style.resize="none",o.style.border="1px solid white",o.style.backgroundColor="transparent",o.style.backdropFilter="blur(4px)",o.style.display="none",e.appendChild(o);const r=document.createElement("button");r.setAttribute("id","btnInscribe"),r.style.padding="7px",r.style.color="#cccccc",r.style.verticalAlign="top",r.style.cursor="pointer",r.style.fontSize=".7em",r.style.width="80px",r.style.height="80px",r.style.padding="10px",r.style.border="1px solid white",r.style.backgroundColor="transparent",r.style.backdropFilter="blur(4px)",r.style.marginLeft="10px",r.style.display="none",r.innerHTML="INSCRIBE",e.appendChild(r),e.appendChild(document.createElement("br"));const s=document.createElement("div");s.setAttribute("id","inscribeNotif"),s.style.marginLeft="10px",s.style.fontSize=".9em",s.style.display="none",e.appendChild(s)}},eth=window.ethereum;