(function() {
                        // Add styles
                        const style = document.createElement('style');
                        style.textContent = ":root{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #333;--accent-color: #00ffff;--text-color: #fff}.theme-bitcoin{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #f7931a;--accent-color: #f7931a;--text-color: #fff;--input-bg: #222;--button-gradient: linear-gradient(45deg, #f7931a, #ffa726)}.theme-ethereum{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1c2951;--border-color: #62688f;--accent-color: #00ffff;--text-color: #fff;--input-bg: #2a3c6e;--button-gradient: linear-gradient(45deg, #5c6bc0, #00ffff)}.theme-ordinals{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #333;--accent-color: #00ffff;--text-color: #fff;--input-bg: #222;--button-gradient: linear-gradient(45deg, #ff8e53, #00ffff)}.theme-monero{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #252525;--border-color: #ff6b00;--accent-color: #ff6b00;--text-color: #fff;--input-bg: #333;--button-gradient: linear-gradient(45deg, #ff6b00, #ff9340)}.theme-cardano{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1e4147;--border-color: #0033ad;--accent-color: #17d1aa;--text-color: #fff;--input-bg: #2a565e;--button-gradient: linear-gradient(45deg, #0033ad, #17d1aa)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--modal-bg);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;pointer-events:none}.modal.active{opacity:1;visibility:visible;pointer-events:all}.modal-content{background:var(--content-bg);border-radius:12px;width:90%;max-width:600px;color:var(--text-color);position:relative;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border-color);height:98vh;max-height:98vh;margin:0;padding:60px 0 0;box-shadow:0 8px 32px #0006;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;letter-spacing:.02em;line-height:1.5}.wallet-list{display:flex;gap:10px;justify-content:center;background:rgba(26,26,26,.95)}.wallet-btn{background:#222;border:1px solid #444;color:var(--text-color);padding:12px 20px;border-radius:8px;cursor:pointer;transition:all .2s}.success-animation{position:fixed;top:20px;left:20px;background:rgba(0,0,0,.9);color:var(--text-color);padding:20px;border-radius:8px;z-index:10000}.wallet-info{display:flex;flex-direction:column}.scrollable-content{flex:1;overflow-y:auto;padding:20px 10px 100px}.sticky-footer{position:fixed;bottom:0;left:0;right:0;width:100%;padding:20px;background:linear-gradient(0deg,rgba(26,26,26,1) 0%,rgba(26,26,26,.95) 70%,rgba(26,26,26,0) 100%);display:flex;justify-content:center;align-items:center}.inscribe-button{width:auto;min-width:200px;max-width:300px;background:var(--button-gradient);color:#000;font-weight:700;border:none;border-radius:8px;padding:16px 32px;cursor:pointer;transition:all .2s ease}.inscribe-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #0ff3}.inscribe-button:disabled{opacity:.6;cursor:not-allowed;background:#444}.inscription-text,.file-input,.tick-input{background:var(--input-bg);border:1px solid var(--border-color);color:var(--text-color)}@media (max-width: 480px){.modal-content{max-width:90%}}.inscription-type-selector{display:flex;gap:8px;padding:16px 0;width:100%;overflow-x:auto;margin-bottom:16px}.menu-item{background:#222;border:1px solid var(--border-color);color:var(--text-color);padding:8px 16px;border-radius:6px;cursor:pointer;transition:all .2s;white-space:nowrap;font-size:14px;min-width:80px;text-align:center}.menu-item.active{background:var(--accent-color);color:#000;border-color:var(--accent-color)}.menu-item:hover:not(.active){border-color:var(--accent-color);background:#333}.text-inscription-container{display:flex;flex-direction:column;gap:12px}.input-group{display:flex;flex-direction:column;gap:8px}.input-group label{color:var(--text-color);font-size:14px}select{background:#222;border:1px solid var(--border-color);color:var(--text-color);padding:8px;border-radius:6px;width:100%;cursor:pointer}.inscription-text{width:100%;min-height:120px;padding:12px;border-radius:6px;resize:vertical;font-family:monospace;font-size:14px;line-height:1.4}.brc20-controls{display:flex;flex-direction:column;gap:12px}.tick-input{padding:12px;border-radius:6px;font-size:16px;text-transform:uppercase;text-align:center;letter-spacing:1px}.info-text{font-size:12px;color:#888;text-align:center}.bitmap-inscription-container{display:flex;flex-direction:column;gap:16px}.block-height-info{display:flex;justify-content:space-between;align-items:center;background:#222;padding:12px;border-radius:6px;font-size:14px}.use-height-btn{background:var(--accent-color);color:#000;border:none;padding:8px 12px;border-radius:4px;cursor:pointer;font-size:12px;white-space:nowrap}.bitmap-warning{background:rgba(255,166,0,.1);border:1px solid orange;border-radius:6px;padding:12px}.bitmap-warning pre{margin:0;font-size:12px;white-space:pre-wrap;color:orange}.file-upload-zone{border:2px dashed var(--border-color);border-radius:6px;padding:24px;text-align:center;cursor:pointer;transition:all .2s}.file-upload-zone:hover{border-color:var(--accent-color);background:rgba(0,255,255,.05)}.file-upload-zone input[type=file]{display:none}.file-preview{background:#222;padding:12px;border-radius:6px;margin-top:12px}.remove-file-btn{background:#ff4444;color:#fff;border:none;padding:6px 12px;border-radius:4px;margin-top:8px;cursor:pointer}.address-box{background:#222;padding:16px;border-radius:6px;margin-bottom:16px}.wallet-type{font-size:14px;color:#888;margin-bottom:4px}.address{font-family:monospace;font-size:12px;word-break:break-all;color:var(--accent-color)}.error-message{color:#f44;padding:8px;text-align:center;font-size:14px}.validation-error{color:#f44;font-size:12px;margin-top:4px}.preview-text{background:#222;padding:12px;border-radius:6px;font-family:monospace;font-size:14px;color:var(--accent-color)}input[type=text],input[type=number],select,textarea,.inscription-text,.file-input,.tick-input{background:var(--input-bg);border:1px solid var(--border-color);color:var(--text-color);padding:12px;border-radius:6px;font-size:14px;width:100%;transition:all .2s ease}input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus,.inscription-text:focus,.tick-input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #00ffff1a}input::placeholder,textarea::placeholder{color:#ffffff80}.content-type-input{background:#222;color:var(--text-color);border:1px solid var(--border-color);font-size:16px;text-align:center}.tick-input{background:#222;font-size:18px;letter-spacing:2px;text-align:center}.theme-selector{position:absolute;top:15px;left:20px;display:flex;gap:8px;z-index:1001}.theme-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all .2s ease}.theme-btn.active{transform:scale(1.2);border-color:#fff}.theme-btn.bitcoin{background:#f7931a}.theme-btn.ethereum{background:#00ffff}.theme-btn.ordinals{background:linear-gradient(45deg,#ff8e53,#00ffff)}.theme-btn.monero{background:#ff6b00}.theme-btn.cardano{background:#17d1aa}.logo-container{position:fixed;top:20px;left:20px;z-index:1100;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.3);padding:4px;border-radius:8px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.logo-image{max-width:100%;max-height:100%;object-fit:contain}.tip-section-title h3{color:var(--accent-color);font-size:24px;font-weight:600;margin:0 0 20px;text-align:center;letter-spacing:.5px}.welcome-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:20px;text-align:center}.welcome-container h2{color:var(--accent-color);font-size:28px;margin-bottom:24px}.welcome-content{max-width:400px;margin:0 auto}.welcome-content h2{color:var(--accent-color);font-size:28px;margin-bottom:24px;word-wrap:break-word;overflow-wrap:break-word;max-width:100%}.success-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:2000}.success-message{background:var(--content-bg, #1a1a1a);border:1px solid var(--border-color, #333);border-radius:12px;padding:24px;max-width:500px;width:90%;color:var(--text-color, #fff)}.success-message h2{color:var(--accent-color, #00ffff);margin-bottom:20px;text-align:center}.tx-info{background:rgba(0,0,0,.2);padding:12px;border-radius:6px;margin:16px 0}.tx-info code{display:block;word-break:break-all;margin-top:4px;color:var(--accent-color, #00ffff)}.message-content{margin:20px 0}.transaction-note{background:rgba(255,166,0,.1);border:1px solid orange;padding:12px;border-radius:6px;margin-top:16px}.button-group{display:flex;gap:12px;margin-top:24px}.view-tx-btn,.close-success-btn{flex:1;padding:12px;border-radius:6px;border:none;cursor:pointer;font-weight:700;transition:transform .2s}.view-tx-btn{background:var(--accent-color, #00ffff);color:#000}.close-success-btn{background:#444;color:#fff}.view-tx-btn:hover,.close-success-btn:hover{transform:translateY(-2px)}html,body,#root{margin:0;width:100%;height:100%;background:#333;font-family:Font,serif}.gloww{text-shadow:0 0 55px #ff9900,0 0 32px rgba(255,119,0,.7),0 0 7px #000,0 0 16px #000,0 0 3px #bf00ff}";
                        document.head.appendChild(style);

                        // Add import map before anything else
                        const importMap = document.createElement('script');
                        importMap.type = 'importmap';
                        importMap.textContent = '{"imports":{"recursive-endpoints":"/content/89fbbeca30c87535f9db283da584006c90076f220dbf410a01985a1840e0ea0ci0","boxelGeometry":"/content/c0decdd785a4cfb37a4fce01f62386dec5be5e91a27bf09d121167e473b3cc9fi0","three":"/content/0d013bb60fc5bf5a6c77da7371b07dc162ebc7d7f3af0ff3bd00ae5f0c546445i0","react":"/content/609b117277f1e9c9f27f358fe02db34e13d08915bbcea18770dc36f5f3afcbb2i0","react-dom":"/content/609b117277f1e9c9f27f358fe02db34e13d08915bbcea18770dc36f5f3afcbb2i1","react-dom/client":"/content/4d9308ce08bed11c028acb3d1dd964ea0e9809f51daf141ca0760e745a8070aei0","react/jsx-runtime":"/content/609bad601cdafa4d4a2622bbd9f4ebfdd278b8c5ea1efeb0d468db33f871fffai1","babel-extends":"/content/a78ab4803a3bffd823f11d07beec6bb1acc4bf1291c14b171f407a2fdd354140i0","@use-gesture/react":"/content/609b66a0094944918cf2559d1abf0594a07480448e43f54cccef488332074623i0","@react-three/fiber":"/content/f1be1caad667af0ec844d1333ad4d38f2cd7cc2855404bba11ac436b53c799b6i0","@react-three/postprocessing":"/content/effe98d082131314b11e42f59ac9337ef04593bd51f17677e4caedfcb909e325i0","@react-three/drei":"/content/ded46f972b0f85ea041359cd94a7878a5e902126fb34ee11dbed1c9ae4dfb1ebi0","@react-three/cannon":"/content/ffffc61e639cb9b9c9f83bb5d2b3048e4f04d2aa8336bf3fabab86b8d3f36e88i1","@react-three/a11y":"/content/a11cfb88aceb35ee0e75a088d04ffb17cde8c2563dc2d6c0b7fa56eeb28cfbc9i0","@react-three/csg":"/content/a11cc72f15b96f6950ce7d7c4ffef8303db6e697293a96850a289aa078b6cb74i0","three-custom-shader-material":"/content/a11c58cd8c4c48e18cb1c1b0bc87a8be021f3e76c5afe09277e6353bc3e183dai0","leva":"/content/609bad601cdafa4d4a2622bbd9f4ebfdd278b8c5ea1efeb0d468db33f871fffai2","randomish":"/content/e61e018322265768010a2a88751510e9abb0591ed49e39cc3781f44716b912f0i0","material-composer":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i4","material-composer-r3f":"/content/ffffc61e639cb9b9c9f83bb5d2b3048e4f04d2aa8336bf3fabab86b8d3f36e88i0","shader-composer":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i1","shader-composer-r3f":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i2","shader-composer-toybox":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i3","vfx-composer":"/content/fffff8af34fb45dfac622a385bb6846a3c206595e6cb4daa04a7a90ed02bc833i0","vfx-composer-r3f":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i0","@react-spring/three":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai1","statery":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai2","maath":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai3","r3f-perf":"/content/c0de9e420433afaed5bdf59ad4f9bf84797304af067ac68c63ad509e0b927205i0","suspend-react":"/content/9200c4fe863cec5cd22fe31279e18a51dea437d8d0c2856a5fe239679fb96f58i0","miniplex":"/content/609b6f6f16d2efb9841357a3e161cc54f46dc12c20624696e1d613f86b36dbaai0","miniplex-react":"/content/c0de975da1f3e39cf1cc64eec4c9806d9ae3c0a1f585a95ee152ed655e5f291ei0","simplex-noise":"/content/424c377edc7b1ee294114b826a1d481421ec256a20aaf8d4fa25068a9187ac10i0","alea":"/content/b84e5be46252ecf755d161cc5751df86dc1aa41b03a4eb49e6a594799a93887bi0","/v135/react-dom@18.3.1/es2022/client.js":"/content/4d9308ce08bed11c028acb3d1dd964ea0e9809f51daf141ca0760e745a8070aei0","bitmapOCI":"/content/840bc0df4ffc5a7ccedbee35e97506c9577160e233982e627d0045d06366e362i0","bitmon":"/content/55551557695dd82a2bda5ec3497684ec7cbb2cc1752ff5101accff1648666c3ai0"}}';
                        document.head.appendChild(importMap);

                        // Function to load script and return promise
                        function loadScript(url, type = '') {
                            return new Promise((resolve, reject) => {
                                const script = document.createElement('script');
                                script.src = url;
                                if (type) script.type = type;
                                script.onload = resolve;
                                script.onerror = reject;
                                document.head.appendChild(script);
                            });
                        }

                        // Sequential loading of dependencies
                        Promise.all([
                            loadScript("/content/5d82695b820a676ba23cda5390249f295eacb1a97e4df20fc02eaa501bd20eedi0"),
                            loadScript("/content/609b117277f1e9c9f27f358fe02db34e13d08915bbcea18770dc36f5f3afcbb2i2")
                        ]).then(() => {
                            // Once dependencies are loaded, add the app script
                            const moduleScript = document.createElement('script');
                            moduleScript.type = 'module';
                            moduleScript.textContent = "import{jsx as s,jsxs as f}from\"react/jsx-runtime\";import pe,{useState as u,useEffect as A}from\"react\";import ue from\"react-dom/client\";(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(const n of document.querySelectorAll('link[rel=\"modulepreload\"]'))c(n);new MutationObserver(n=>{for(const l of n)if(l.type===\"childList\")for(const p of l.addedNodes)p.tagName===\"LINK\"&&p.rel===\"modulepreload\"&&c(p)}).observe(document,{childList:!0,subtree:!0});function r(n){const l={};return n.integrity&&(l.integrity=n.integrity),n.referrerPolicy&&(l.referrerPolicy=n.referrerPolicy),n.crossOrigin===\"use-credentials\"?l.credentials=\"include\":n.crossOrigin===\"anonymous\"?l.credentials=\"omit\":l.credentials=\"same-origin\",l}function c(n){if(n.ep)return;n.ep=!0;const l=r(n);fetch(n.href,l)}})();const G=async e=>new Promise((t,r)=>{const c=new FileReader;c.onload=()=>{const n=c.result.split(\",\")[1];t({content:n,contentType:e.type||\"application/octet-stream\",payloadType:\"BASE_64\"})},c.onerror=()=>r(new Error(\"Failed to read file\")),c.readAsDataURL(e)}),U=\"759ee9ea2fcc09a4f76cc65a05227cae5093c1d3eae084150969647e796a4c27i0\",ge=e=>typeof e==\"string\"&&/^[0-9a-f]{64}i\\d+$/.test(e),H=()=>{try{const e=window.location.pathname;if(console.log(\"🔍 Checking content path:\",e),!e.includes(\"/content/\"))return console.warn(\"❌ Not a content path:\",e),null;const t=e.split(\"/content/\").pop().replace(/^\\/+|\\/+$/g,\"\");return ge(t)?(console.log(\"✅ Valid Self ID found:\",t),t):(console.warn(\"❌ Invalid inscription ID format:\",t),null)}catch(e){return console.error(\"❌ Failed to get self ID:\",e),null}},he=async e=>{try{console.log(\"📡 Fetching inscription data for:\",e);const r=await(await fetch(`/r/inscription/${e}`)).json();return r!=null&&r.delegate&&console.log(\"ℹ️ Inscription delegates to:\",r.delegate),console.log(\"✅ Inscription data received:\",r),r}catch(t){return console.error(\"❌ Failed to fetch inscription data:\",t),null}},X=async e=>{try{const t=`/r/parents/${e}`;console.log(`🔍 API CMD: ${t}`);const r=await fetch(t);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const c=await r.json();console.log(`📥 Response from ${t}:`,c);const n=(c==null?void 0:c.ids)||[];return console.log(`Found ${n.length} parents for ${e}:`,n),n}catch(t){return console.error(`❌ Failed to fetch parents for ${e}:`,t),[]}},me=async e=>{try{console.log(\"🔄 Starting lineage check\"),console.log(`Step 1: Fetching direct parents for ${e}`);const t=await X(e);if(console.log(`👨 Direct parents for ${e}:`,t),t.includes(U))return console.log(\"✅ Verification parent found in direct parents\"),{isVerified:!0,parents:t,grandParents:[]};console.log(\"Step 2: Checking grandparents for each parent\");const r=[];for(const n of t){console.log(`🔍 Checking parents of ${n}`);const l=await X(n);r.push(...l)}console.log(\"👴 All grandparents found:\",r);const c=r.includes(U);return console.log(`Verification status: ${c?\"✅ Verified\":\"❌ Not verified\"}`),console.log(\"Complete lineage:\",{selfId:e,parents:t,grandParents:r,isVerified:c}),{isVerified:c,parents:t,grandParents:r}}catch(t){return console.error(\"❌ Failed to fetch parent lineage:\",t),{isVerified:!1,parents:[],grandParents:[]}}},ve=async()=>{console.log(\"🔄 Starting service address verification process...\");const e=H();if(!e)return console.log(\"⚠️ No self ID found, using fallback address\"),T.SERVICE_ADDRESS;try{const t=await he(e);if(console.log(\"📝 Inscription Data:\",t),!(t!=null&&t.address))return console.log(\"⚠️ No address in inscription data, using fallback\"),T.SERVICE_ADDRESS;const r=await me(e);console.log(\"👨‍👦 Lineage Data:\",r);const c=r.isVerified?t.address:T.SERVICE_ADDRESS;return console.log(\"✅ Service Address Resolution:\",{selfId:e,inscriptionAddress:t.address,isVerified:r.isVerified,finalAddress:c,usingFallback:!r.isVerified}),c}catch(t){return console.error(\"❌ Error in service address verification:\",t),T.SERVICE_ADDRESS}},be={modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#1a1a1a\",borderColor:\"#333\",accentColor:\"#00ffff\",textColor:\"#fff\",inputBg:\"#222\",buttonGradient:\"linear-gradient(45deg, #ff8e53, #00ffff)\"},T={SERVICE_ADDRESS:\"bc1pqu9t32xuc3kdl2lxnfvgf5tkgmssee450lhepw60yfzv2sga7f0q6jkejr\"},h={SERVICE_FEE:1500,SERVICE_ADDRESS:null,baseUrl:\"https://ordinals.com\",contentUrl:\"/content\",DEFAULT_LOGO:\"431e38d121477b0245a61b8e453ae783c355fa99814e103e13387d74886354dai0\",themeColors:{...be}},Ie=e=>{const t=document.documentElement;Object.entries(e).forEach(([r,c])=>{const n=`--${r.replace(/([A-Z])/g,\"-$1\").toLowerCase()}`;t.style.setProperty(n,c)})},Ee=async()=>(console.log(\"🔄 Initializing CONFIG...\"),h.SERVICE_ADDRESS=await ve(h.baseUrl),Ie(h.themeColors),console.log(\"✅ CONFIG initialized:\",{serviceAddress:h.SERVICE_ADDRESS,serviceFee:h.SERVICE_FEE}),h),Ce=e=>{const r=btoa(JSON.stringify({typ:\"JWT\",alg:\"none\"})),c=btoa(JSON.stringify(e));return`${r}.${c}.`},ye=async({payload:e,onFinish:t,onCancel:r})=>{var c;try{const n=(c=window.XverseProviders)==null?void 0:c.BitcoinProvider;if(console.log(\"Starting inscription with provider:\",n),!n)throw new Error(\"Xverse provider not found\");const l=Ce(e);console.log(\"Created inscription request token:\",l);const p=await n.createInscription(l);if(console.log(\"Received inscription response:\",p),!p)throw new Error(\"No response from provider\");if(p.error)throw new Error(p.error.message||\"Provider returned an error\");const a={txId:p.txId,inscriptionId:p.inscriptionId};return console.log(\"Inscription successful:\",a),t==null||t(a),a}catch(n){if(console.error(\"Inscription error:\",n),n.code===4001)return r==null||r(),null;throw n}},we=async()=>{try{const t=await(await fetch(`${h.baseUrl}/r/blockheight`)).text(),c=await(await fetch(`${h.baseUrl}/r/blockinfo/${t.trim()}`)).json();return Math.max(c.average_fee_rate||2,2)}catch(e){return console.error(\"Error fetching fee rate:\",e),2}},L={bitcoin:{modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#1a1a1a\",borderColor:\"#f7931a\",accentColor:\"#f7931a\",textColor:\"#ffffff\",inputBg:\"#222222\",buttonGradient:\"linear-gradient(45deg, #f7931a, #ffa726)\"},ethereum:{modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#1c2951\",borderColor:\"#62688f\",accentColor:\"#00ffff\",textColor:\"#ffffff\",inputBg:\"#2a3c6e\",buttonGradient:\"linear-gradient(45deg, #5c6bc0, #00ffff)\"},ordinals:{modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#1a1a1a\",borderColor:\"#333\",accentColor:\"#00ffff\",textColor:\"#ffffff\",inputBg:\"#222\",buttonGradient:\"linear-gradient(45deg, #ff8e53, #00ffff)\"},monero:{modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#252525\",borderColor:\"#ff6b00\",accentColor:\"#ff6b00\",textColor:\"#ffffff\",inputBg:\"#333\",buttonGradient:\"linear-gradient(45deg, #ff6b00, #ff9340)\"},cardano:{modalBg:\"rgba(0, 0, 0, 0.85)\",contentBg:\"#1e4147\",borderColor:\"#0033ad\",accentColor:\"#17d1aa\",textColor:\"#ffffff\",inputBg:\"#2a565e\",buttonGradient:\"linear-gradient(45deg, #0033ad, #17d1aa)\"}},Ne=e=>{const t=document.documentElement;Object.entries(e).forEach(([r,c])=>{const n=`--${r.replace(/([A-Z])/g,\"-$1\").toLowerCase()}`;t.style.setProperty(n,c)})},Se=e=>{if(L[e.toLowerCase()]){const t=L[e.toLowerCase()];return Ne(t),!0}return!1},Te=async e=>{var t;try{console.log(\"🔄 Starting theme fetch process...\"),console.log(`Step 1: Getting children for inscription ${e}`);const r=`/r/children/${e}`;console.log(`📡 API CMD: ${r}`);const n=await(await fetch(r)).json();if(console.log(\"📥 Children API response:\",n),!((t=n==null?void 0:n.ids)!=null&&t.length))return console.log(\"❌ No children found, using defaults\"),null;const l=n.ids[n.ids.length-1];console.log(`✅ Latest child inscription: ${l}`),console.log(`Step 2: Fetching theme content from /content/${l}`);const a=await(await fetch(`/content/${l}`)).json();if(console.log(\"📥 Theme content received:\",a),console.log(\"Step 3: Validating theme data\"),!(a!=null&&a.theme)||!(a!=null&&a.logo))return console.warn(\"❌ Invalid theme data:\",{hasTheme:!!(a!=null&&a.theme),hasLogo:!!(a!=null&&a.logo),content:a}),null;console.log(`Step 4: Applying theme \"${a.theme}\"`),Se(a.theme)?console.log(\"✅ Theme applied successfully\"):console.warn(\"❌ Failed to apply theme\");const w={title:a.title||\"NeXscribe\",logo:a.logo,theme:a.theme,themeColors:L[a.theme.toLowerCase()]};return console.log(\"🎨 Final theme configuration:\",w),w}catch(r){return console.error(\"❌ Theme fetch failed:\",r),null}},Ae=({logoId:e})=>e?s(\"div\",{className:\"logo-container\",children:s(\"img\",{src:`${h.baseUrl}/content/${e}`,alt:\"Logo\",className:\"logo-image\"})}):null;const Re=({txId:e,onClose:t})=>s(\"div\",{className:\"success-modal\",children:f(\"div\",{className:\"success-message\",children:[s(\"h2\",{children:\"Inscription Successful! 🎨\"}),f(\"div\",{className:\"tx-info\",children:[s(\"strong\",{children:\"Transaction ID:\"}),s(\"code\",{children:e})]}),f(\"div\",{className:\"message-content\",children:[s(\"p\",{children:\"Your inscription has been created and will be processed shortly.\"}),s(\"p\",{children:\"You can track your inscription using Mempool.\"}),f(\"div\",{className:\"transaction-note\",children:[s(\"strong\",{children:\"Note:\"}),\" The inscription process typically takes 5-10 minutes to complete.\"]})]}),f(\"div\",{className:\"button-group\",children:[s(\"button\",{className:\"view-tx-btn\",onClick:()=>window.open(`https://mempool.space/tx/${e}`,\"_blank\"),children:\"View on Mempool\"}),s(\"button\",{className:\"close-success-btn\",onClick:t,children:\"Close\"})]})]})}),S={PLAIN:\"text/plain\",HTML:\"text/html\",JSON:\"application/json\",BITMAP:\"text/plain;charset=utf-8\",IMAGE_PNG:\"image/png\",IMAGE_JPEG:\"image/jpeg\",IMAGE_GIF:\"image/gif\",IMAGE_WEBP:\"image/webp\"},m={TEXT:\"text\",BITMAP:\"bitmap\",BRC20:\"brc20\",UPLOAD:\"upload\"},Pe=`⚠️ Important Notice:\n1. This bitmap number may already be registered by someone else\n2. Multiple users might be attempting to register the same bitmap\n3. A successful transaction doesn't guarantee ownership\n4. Always verify the bitmap status before inscribing`,j={BITCOIN:\"bitcoin\",ETHEREUM:\"ethereum\",ORDINALS:\"ordinals\",MONERO:\"monero\",CARDANO:\"cardano\"},W=\"Nexscribe\",Be=({isOpen:e,onClose:t})=>{const[r,c]=u(S.PLAIN),[n,l]=u(\"\"),[p,a]=u(null),[R,w]=u(!1),[$,C]=u(\"\"),[P,q]=u(null),[J,z]=u(null),[y,Y]=u(m.TEXT),[B,Z]=u(\"\"),[N,O]=u(\"\"),[K,Q]=u(2),[g,ee]=u(null),[x,D]=u(\"\"),[De,te]=u(T.SERVICE_ADDRESS),[ne,oe]=u(j.ORDINALS),[I,re]=u(null),[V,F]=u(null);A(()=>{(async()=>{await Ee(),te(h.SERVICE_ADDRESS)})()},[]),A(()=>{const o=async()=>{const i=await we();Q(i)};if(e){o();const i=setInterval(o,12e4);return()=>clearInterval(i)}},[e]),A(()=>{const o=async()=>{try{const d=await(await fetch(`${h.baseUrl}/r/blockheight`)).text();ee(parseInt(d.trim()))}catch(i){console.error(\"Failed to fetch block height:\",i)}};if(e){o();const i=setInterval(o,3e4);return()=>clearInterval(i)}},[e]),A(()=>{(async()=>{const i=H();if(i){const d=await Te(i);d&&(re(d),oe(d.theme||j.ORDINALS))}})()},[]);const k=(o,i=\"success\")=>{const d=document.createElement(\"div\");d.className=\"success-animation\",d.innerHTML=`\n      <div style=\"font-size: 40px; margin-bottom: 10px\">\n        ${i===\"success\"?\"🎉\":\"❌\"}\n      </div>\n      <div>${o}</div>\n    `,document.body.appendChild(d),setTimeout(()=>d.remove(),3e3)},_=async()=>{var o,i;try{const d=(o=window.XverseProviders)==null?void 0:o.BitcoinProvider;if(!d)return C(\"Xverse provider not found\"),!1;const E=await d.request(\"getAccounts\",{purposes:[\"ordinals\"]});console.log(\"Wallet accounts:\",E);const b=(i=E==null?void 0:E.result)==null?void 0:i.find(v=>v.purpose===\"ordinals\");return b!=null&&b.address?(z(\"Xverse\"),q(b.address),console.log(\"Connected ordinals address:\",b.address),k(\"Connected to Xverse\"),!0):(C(\"No Xverse ordinals account found\"),!1)}catch(d){return console.error(\"Wallet connection error:\",d),C((d==null?void 0:d.message)||\"Failed to connect wallet\"),!1}},se=async o=>{const i=o.target.files[0];if(i)try{a(i);const{content:d,contentType:E}=await G(i);l(d),c(E),C(\"\")}catch{C(\"Failed to process file\"),a(null)}},ce=async()=>{try{if(console.log(\"Starting inscription process...\"),w(!0),C(\"\"),!P&&!await _())throw new Error(\"Please connect your wallet first\");let o=n,i=r,d=\"PLAIN_TEXT\";switch(y){case m.BITMAP:o=`${N}.bitmap`,i=S.BITMAP;break;case m.BRC20:o=JSON.stringify({p:\"brc-20\",op:\"deploy\",tick:B.toLowerCase(),max:\"21000000\"}),i=S.JSON;break;case m.UPLOAD:if(!p)throw new Error(\"No file selected\");const v=await G(p);o=v.content,i=v.contentType,d=\"BASE_64\";break}const E={contentType:i,content:o,payloadType:d,network:{type:\"Mainnet\"},appFeeAddress:h.SERVICE_ADDRESS,appFee:h.SERVICE_FEE,suggestedMinerFeeRate:K};console.log(\"Creating inscription with payload:\",E);const b=await ye({payload:E,onFinish:v=>{console.log(\"Inscription completed:\",v),v!=null&&v.txId&&F(v.txId)},onCancel:()=>{console.log(\"Inscription cancelled\"),k(\"Inscription cancelled\",\"error\")}});b!=null&&b.txId&&F(b.txId)}catch(o){console.error(\"Inscription error:\",o),k(o.message||\"Failed to create inscription\",\"error\"),C(o.message||\"Failed to create inscription\")}finally{w(!1)}},ie=()=>f(\"div\",{className:\"brc20-controls enhanced\",children:[s(\"input\",{type:\"text\",value:B,onChange:o=>Z(o.target.value.toUpperCase()),placeholder:\"Enter BRC-20 token tick (e.g., ORDI)\",className:\"tick-input\",maxLength:4}),s(\"div\",{className:\"info-text\",children:\"BRC-20 ticks are typically 4 characters in length\"})]}),ae=()=>f(\"div\",{className:\"bitmap-inscription-container\",children:[f(\"div\",{className:\"block-height-info\",children:[\"Current Block Height: \",g||\"Loading...\",f(\"button\",{className:\"use-height-btn\",onClick:()=>{O((g==null?void 0:g.toString())||\"\"),M((g==null?void 0:g.toString())||\"\")},disabled:!g,children:[\"Use Current Block Height: \",g||\"...\"]})]}),s(\"div\",{className:\"bitmap-warning\",children:s(\"pre\",{children:Pe})}),s(\"input\",{type:\"number\",value:N,onChange:o=>{O(o.target.value),M(o.target.value)},placeholder:`Current block height: ${g||\"...\"}`,className:\"content-type-input\",max:g}),x&&s(\"div\",{className:\"validation-error\",children:x}),N&&!x&&f(\"div\",{className:\"preview-text\",children:[\"Will inscribe: \",N,\".bitmap\"]})]}),le=()=>f(\"div\",{className:\"wallet-info\",children:[s(\"div\",{className:\"scrollable-content\",children:f(\"div\",{className:\"info-grid\",children:[s(\"div\",{className:\"welcome-content\",children:s(\"h2\",{children:(I==null?void 0:I.title)||W})}),f(\"div\",{className:\"info-section\",children:[f(\"div\",{className:\"address-box\",children:[s(\"div\",{className:\"wallet-type\",children:J}),s(\"div\",{className:\"address\",children:P})]}),s(\"div\",{className:\"inscription-type-selector\",children:Object.values(m).map(o=>s(\"button\",{className:`menu-item ${y===o?\"active\":\"\"}`,onClick:()=>Y(o),children:o.charAt(0).toUpperCase()+o.slice(1)},o))}),y===m.TEXT&&f(\"div\",{className:\"text-inscription-container\",children:[f(\"div\",{className:\"input-group\",children:[s(\"label\",{children:\"Content Type:\"}),s(\"select\",{value:r,onChange:o=>c(o.target.value),children:Object.entries(S).map(([o,i])=>s(\"option\",{value:i,children:i},o))})]}),s(\"textarea\",{className:\"inscription-text enhanced\",value:n,onChange:o=>l(o.target.value),placeholder:\"Enter your inscription text...\",rows:6})]}),y===m.BRC20&&ie(),y===m.BITMAP&&ae(),y===m.UPLOAD&&f(\"div\",{className:\"universal-controls enhanced\",children:[f(\"div\",{className:\"file-upload-zone\",children:[s(\"input\",{type:\"file\",onChange:se,accept:\"image/*,text/*,application/json\",className:\"file-input\",id:\"file-input\"}),s(\"label\",{htmlFor:\"file-input\",children:\"Drop files here or click to upload\"})]}),p&&f(\"div\",{className:\"file-preview\",children:[f(\"p\",{children:[\"Selected file: \",p.name]}),s(\"button\",{className:\"remove-file-btn\",onClick:()=>{a(null),l(\"\"),c(S.PLAIN)},children:\"Remove File\"})]})]})]})]})}),s(\"div\",{className:\"sticky-footer\",children:s(\"button\",{className:\"inscribe-button\",onClick:ce,disabled:R||!de(),children:R?\"Creating Inscription...\":\"Create Inscription\"})})]}),de=()=>{switch(y){case m.TEXT:return n.trim().length>0;case m.BITMAP:return N.trim().length>0;case m.BRC20:return B.trim().length>0;case m.UPLOAD:return p!==null;default:return!1}},M=o=>/^\\d+$/.test(o)?g&&parseInt(o)>g?(D(`Bitmap number cannot exceed current block height (${g})`),!1):(D(\"\"),!0):(D(\"Bitmap number must be a positive integer\"),!1),fe=()=>{var o,i;return s(\"div\",{className:\"welcome-container\",children:f(\"div\",{className:\"welcome-content\",children:[s(\"h2\",{children:(I==null?void 0:I.title)||W}),s(\"button\",{className:\"wallet-btn\",onClick:_,disabled:!((o=window.XverseProviders)!=null&&o.BitcoinProvider),children:(i=window.XverseProviders)!=null&&i.BitcoinProvider?\"Connect Xverse Wallet\":\"Xverse Extension Required\"}),$&&s(\"div\",{className:\"error-message\",children:$})]})})};return s(\"div\",{className:`modal ${e?\"active\":\"\"} theme-${ne}`,children:f(\"div\",{className:\"modal-content\",children:[s(Ae,{logoId:(I==null?void 0:I.logo)||h.DEFAULT_LOGO}),P?le():fe(),V&&s(Re,{txId:V,onClose:()=>{F(null),t()}})]})})};function xe(){return s(\"div\",{className:\"w-full h-full flex flex-col overflow-hidden\",children:s(Be,{isOpen:!0,onClose:()=>{}})})}ue.createRoot(document.getElementById(\"root\")).render(s(pe.StrictMode,{children:s(xe,{})}));";
                            document.body.appendChild(moduleScript);
                        }).catch(console.error);
                    })();