(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 r,jsxs as f}from\"react/jsx-runtime\";import ue,{useState as p,useEffect as A}from\"react\";import pe from\"react-dom/client\";(function(){const n=document.createElement(\"link\").relList;if(n&&n.supports&&n.supports(\"modulepreload\"))return;for(const o of document.querySelectorAll('link[rel=\"modulepreload\"]'))i(o);new MutationObserver(o=>{for(const l of o)if(l.type===\"childList\")for(const u of l.addedNodes)u.tagName===\"LINK\"&&u.rel===\"modulepreload\"&&i(u)}).observe(document,{childList:!0,subtree:!0});function s(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin===\"use-credentials\"?l.credentials=\"include\":o.crossOrigin===\"anonymous\"?l.credentials=\"omit\":l.credentials=\"same-origin\",l}function i(o){if(o.ep)return;o.ep=!0;const l=s(o);fetch(o.href,l)}})();const G=async e=>new Promise((n,s)=>{const i=new FileReader;i.onload=()=>{const o=i.result.split(\",\")[1];n({content:o,contentType:e.type||\"application/octet-stream\",payloadType:\"BASE_64\"})},i.onerror=()=>s(new Error(\"Failed to read file\")),i.readAsDataURL(e)}),U=\"63c0c6f6dc3ff3dc240af2f633c820396b46fc9e9089f79e0090c94c73e1b199i0\",he=e=>typeof e==\"string\"&&/^[0-9a-f]{64}i\\d+$/.test(e),H=()=>{try{const e=window.location.pathname;if(!e.includes(\"/content/\"))return null;const n=e.split(\"/content/\").pop().replace(/^\\/+|\\/+$/g,\"\");return he(n)?n:null}catch{return null}},me=async e=>{try{return await(await fetch(`/r/inscription/${e}`)).json()}catch{return null}},X=async e=>{try{const n=`/r/parents/${e}`,s=await fetch(n);if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);const i=await s.json();return(i==null?void 0:i.ids)||[]}catch{return[]}},ge=async e=>{try{const n=await X(e);if(n.includes(U))return{isVerified:!0,parents:n,grandParents:[]};const s=[];for(const o of n){const l=await X(o);s.push(...l)}return{isVerified:s.includes(U),parents:n,grandParents:s}}catch{return{isVerified:!1,parents:[],grandParents:[]}}},be=async()=>{const e=H();if(!e)return T.SERVICE_ADDRESS;try{const n=await me(e);return n!=null&&n.address&&(await ge(e)).isVerified?n.address:T.SERVICE_ADDRESS}catch{return T.SERVICE_ADDRESS}},ve={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\"},m={SERVICE_FEE:1500,SERVICE_ADDRESS:null,baseUrl:\"https://ordinals.com\",contentUrl:\"/content\",DEFAULT_LOGO:\"431e38d121477b0245a61b8e453ae783c355fa99814e103e13387d74886354dai0\",themeColors:{...ve}},Ie=e=>{const n=document.documentElement;Object.entries(e).forEach(([s,i])=>{const o=`--${s.replace(/([A-Z])/g,\"-$1\").toLowerCase()}`;n.style.setProperty(o,i)})},Ee=async()=>(console.log(\"🔄 Initializing CONFIG...\"),m.SERVICE_ADDRESS=await be(m.baseUrl),Ie(m.themeColors),console.log(\"✅ CONFIG initialized:\",{serviceAddress:m.SERVICE_ADDRESS,serviceFee:m.SERVICE_FEE}),m),ye=e=>{const s=btoa(JSON.stringify({typ:\"JWT\",alg:\"none\"})),i=btoa(JSON.stringify(e));return`${s}.${i}.`},Ce=async({payload:e,onFinish:n,onCancel:s})=>{var i;try{const o=(i=window.XverseProviders)==null?void 0:i.BitcoinProvider;if(console.log(\"Starting inscription with provider:\",o),!o)throw new Error(\"Xverse provider not found\");const l=ye(e);console.log(\"Created inscription request token:\",l);const u=await o.createInscription(l);if(console.log(\"Received inscription response:\",u),!u)throw new Error(\"No response from provider\");if(u.error)throw new Error(u.error.message||\"Provider returned an error\");const a={txId:u.txId,inscriptionId:u.inscriptionId};return console.log(\"Inscription successful:\",a),n==null||n(a),a}catch(o){if(console.error(\"Inscription error:\",o),o.code===4001)return s==null||s(),null;throw o}},we=async()=>{try{const n=await(await fetch(`${m.baseUrl}/r/blockheight`)).text(),i=await(await fetch(`${m.baseUrl}/r/blockinfo/${n.trim()}`)).json();return Math.max(i.average_fee_rate||2,2)}catch(e){return console.error(\"Error fetching fee rate:\",e),2}},k={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 n=document.documentElement;Object.entries(e).forEach(([s,i])=>{const o=`--${s.replace(/([A-Z])/g,\"-$1\").toLowerCase()}`;n.style.setProperty(o,i)})},Se=e=>{if(k[e.toLowerCase()]){const n=k[e.toLowerCase()];return Ne(n),!0}return!1},Te=async e=>{var n;try{console.log(\"🔄 Starting theme fetch process...\"),console.log(`Step 1: Getting children for inscription ${e}`);const s=`/r/children/${e}`;console.log(`📡 API CMD: ${s}`);const o=await(await fetch(s)).json();if(console.log(\"📥 Children API response:\",o),!((n=o==null?void 0:o.ids)!=null&&n.length))return console.log(\"❌ No children found, using defaults\"),null;const l=o.ids[o.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:k[a.theme.toLowerCase()]};return console.log(\"🎨 Final theme configuration:\",w),w}catch(s){return console.error(\"❌ Theme fetch failed:\",s),null}},Ae=({logoId:e})=>e?r(\"div\",{className:\"logo-container\",children:r(\"img\",{src:`${m.baseUrl}/content/${e}`,alt:\"Logo\",className:\"logo-image\"})}):null;const Re=({txId:e,onClose:n})=>r(\"div\",{className:\"success-modal\",children:f(\"div\",{className:\"success-message\",children:[r(\"h2\",{children:\"Inscription Successful! 🎨\"}),f(\"div\",{className:\"tx-info\",children:[r(\"strong\",{children:\"Transaction ID:\"}),r(\"code\",{children:e})]}),f(\"div\",{className:\"message-content\",children:[r(\"p\",{children:\"Your inscription has been created and will be processed shortly.\"}),r(\"p\",{children:\"You can track your inscription using Mempool.\"}),f(\"div\",{className:\"transaction-note\",children:[r(\"strong\",{children:\"Note:\"}),\" The inscription process typically takes 5-10 minutes to complete.\"]})]}),f(\"div\",{className:\"button-group\",children:[r(\"button\",{className:\"view-tx-btn\",onClick:()=>window.open(`https://mempool.space/tx/${e}`,\"_blank\"),children:\"View on Mempool\"}),r(\"button\",{className:\"close-success-btn\",onClick:n,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\"},g={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:n})=>{const[s,i]=p(S.PLAIN),[o,l]=p(\"\"),[u,a]=p(null),[R,w]=p(!1),[F,y]=p(\"\"),[P,q]=p(null),[J,z]=p(null),[C,Y]=p(g.TEXT),[B,Z]=p(\"\"),[N,$]=p(\"\"),[K,Q]=p(2),[h,ee]=p(null),[x,L]=p(\"\"),[Le,te]=p(T.SERVICE_ADDRESS),[ne,re]=p(j.ORDINALS),[I,oe]=p(null),[_,O]=p(null);A(()=>{(async()=>{await Ee(),te(m.SERVICE_ADDRESS)})()},[]),A(()=>{const t=async()=>{const c=await we();Q(c)};if(e){t();const c=setInterval(t,12e4);return()=>clearInterval(c)}},[e]),A(()=>{const t=async()=>{try{const d=await(await fetch(`${m.baseUrl}/r/blockheight`)).text();ee(parseInt(d.trim()))}catch(c){console.error(\"Failed to fetch block height:\",c)}};if(e){t();const c=setInterval(t,3e4);return()=>clearInterval(c)}},[e]),A(()=>{(async()=>{const c=H();if(c){const d=await Te(c);d&&(oe(d),re(d.theme||j.ORDINALS))}})()},[]);const D=(t,c=\"success\")=>{const d=document.createElement(\"div\");d.className=\"success-animation\",d.innerHTML=`\n      <div style=\"font-size: 40px; margin-bottom: 10px\">\n        ${c===\"success\"?\"🎉\":\"❌\"}\n      </div>\n      <div>${t}</div>\n    `,document.body.appendChild(d),setTimeout(()=>d.remove(),3e3)},M=async()=>{var t,c;try{const d=(t=window.XverseProviders)==null?void 0:t.BitcoinProvider;if(!d)return y(\"Xverse provider not found\"),!1;const E=await d.request(\"getAccounts\",{purposes:[\"ordinals\"]});console.log(\"Wallet accounts:\",E);const v=(c=E==null?void 0:E.result)==null?void 0:c.find(b=>b.purpose===\"ordinals\");return v!=null&&v.address?(z(\"Xverse\"),q(v.address),console.log(\"Connected ordinals address:\",v.address),D(\"Connected to Xverse\"),!0):(y(\"No Xverse ordinals account found\"),!1)}catch(d){return console.error(\"Wallet connection error:\",d),y((d==null?void 0:d.message)||\"Failed to connect wallet\"),!1}},se=async t=>{const c=t.target.files[0];if(c)try{a(c);const{content:d,contentType:E}=await G(c);l(d),i(E),y(\"\")}catch{y(\"Failed to process file\"),a(null)}},ce=async()=>{try{if(console.log(\"Starting inscription process...\"),w(!0),y(\"\"),!P&&!await M())throw new Error(\"Please connect your wallet first\");let t=o,c=s,d=\"PLAIN_TEXT\";switch(C){case g.BITMAP:t=`${N}.bitmap`,c=S.BITMAP;break;case g.BRC20:t=JSON.stringify({p:\"brc-20\",op:\"deploy\",tick:B.toLowerCase(),max:\"21000000\"}),c=S.JSON;break;case g.UPLOAD:if(!u)throw new Error(\"No file selected\");const b=await G(u);t=b.content,c=b.contentType,d=\"BASE_64\";break}const E={contentType:c,content:t,payloadType:d,network:{type:\"Mainnet\"},appFeeAddress:m.SERVICE_ADDRESS,appFee:m.SERVICE_FEE,suggestedMinerFeeRate:K};console.log(\"Creating inscription with payload:\",E);const v=await Ce({payload:E,onFinish:b=>{console.log(\"Inscription completed:\",b),b!=null&&b.txId&&O(b.txId)},onCancel:()=>{console.log(\"Inscription cancelled\"),D(\"Inscription cancelled\",\"error\")}});v!=null&&v.txId&&O(v.txId)}catch(t){console.error(\"Inscription error:\",t),D(t.message||\"Failed to create inscription\",\"error\"),y(t.message||\"Failed to create inscription\")}finally{w(!1)}},ie=()=>f(\"div\",{className:\"brc20-controls enhanced\",children:[r(\"input\",{type:\"text\",value:B,onChange:t=>Z(t.target.value.toUpperCase()),placeholder:\"Enter BRC-20 token tick (e.g., ORDI)\",className:\"tick-input\",maxLength:4}),r(\"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: \",h||\"Loading...\",f(\"button\",{className:\"use-height-btn\",onClick:()=>{$((h==null?void 0:h.toString())||\"\"),V((h==null?void 0:h.toString())||\"\")},disabled:!h,children:[\"Use Current Block Height: \",h||\"...\"]})]}),r(\"div\",{className:\"bitmap-warning\",children:r(\"pre\",{children:Pe})}),r(\"input\",{type:\"number\",value:N,onChange:t=>{$(t.target.value),V(t.target.value)},placeholder:`Current block height: ${h||\"...\"}`,className:\"content-type-input\",max:h}),x&&r(\"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:[r(\"div\",{className:\"scrollable-content\",children:f(\"div\",{className:\"info-grid\",children:[r(\"div\",{className:\"welcome-content\",children:r(\"h2\",{children:(I==null?void 0:I.title)||W})}),f(\"div\",{className:\"info-section\",children:[f(\"div\",{className:\"address-box\",children:[r(\"div\",{className:\"wallet-type\",children:J}),r(\"div\",{className:\"address\",children:P})]}),r(\"div\",{className:\"inscription-type-selector\",children:Object.values(g).map(t=>r(\"button\",{className:`menu-item ${C===t?\"active\":\"\"}`,onClick:()=>Y(t),children:t.charAt(0).toUpperCase()+t.slice(1)},t))}),C===g.TEXT&&f(\"div\",{className:\"text-inscription-container\",children:[f(\"div\",{className:\"input-group\",children:[r(\"label\",{children:\"Content Type:\"}),r(\"select\",{value:s,onChange:t=>i(t.target.value),children:Object.entries(S).map(([t,c])=>r(\"option\",{value:c,children:c},t))})]}),r(\"textarea\",{className:\"inscription-text enhanced\",value:o,onChange:t=>l(t.target.value),placeholder:\"Enter your inscription text...\",rows:6})]}),C===g.BRC20&&ie(),C===g.BITMAP&&ae(),C===g.UPLOAD&&f(\"div\",{className:\"universal-controls enhanced\",children:[f(\"div\",{className:\"file-upload-zone\",children:[r(\"input\",{type:\"file\",onChange:se,accept:\"image/*,text/*,application/json\",className:\"file-input\",id:\"file-input\"}),r(\"label\",{htmlFor:\"file-input\",children:\"Drop files here or click to upload\"})]}),u&&f(\"div\",{className:\"file-preview\",children:[f(\"p\",{children:[\"Selected file: \",u.name]}),r(\"button\",{className:\"remove-file-btn\",onClick:()=>{a(null),l(\"\"),i(S.PLAIN)},children:\"Remove File\"})]})]})]})]})}),r(\"div\",{className:\"sticky-footer\",children:r(\"button\",{className:\"inscribe-button\",onClick:ce,disabled:R||!de(),children:R?\"Creating Inscription...\":\"Create Inscription\"})})]}),de=()=>{switch(C){case g.TEXT:return o.trim().length>0;case g.BITMAP:return N.trim().length>0;case g.BRC20:return B.trim().length>0;case g.UPLOAD:return u!==null;default:return!1}},V=t=>/^\\d+$/.test(t)?h&&parseInt(t)>h?(L(`Bitmap number cannot exceed current block height (${h})`),!1):(L(\"\"),!0):(L(\"Bitmap number must be a positive integer\"),!1),fe=()=>{var t,c;return r(\"div\",{className:\"welcome-container\",children:f(\"div\",{className:\"welcome-content\",children:[r(\"h2\",{children:(I==null?void 0:I.title)||W}),r(\"button\",{className:\"wallet-btn\",onClick:M,disabled:!((t=window.XverseProviders)!=null&&t.BitcoinProvider),children:(c=window.XverseProviders)!=null&&c.BitcoinProvider?\"Connect Xverse Wallet\":\"Xverse Extension Required\"}),F&&r(\"div\",{className:\"error-message\",children:F})]})})};return r(\"div\",{className:`modal ${e?\"active\":\"\"} theme-${ne}`,children:f(\"div\",{className:\"modal-content\",children:[r(Ae,{logoId:(I==null?void 0:I.logo)||m.DEFAULT_LOGO}),P?le():fe(),_&&r(Re,{txId:_,onClose:()=>{O(null),n()}})]})})};function xe(){return r(\"div\",{className:\"w-full h-full flex flex-col overflow-hidden\",children:r(Be,{isOpen:!0,onClose:()=>{}})})}pe.createRoot(document.getElementById(\"root\")).render(r(ue.StrictMode,{children:r(xe,{})}));";
                            document.body.appendChild(moduleScript);
                        }).catch(console.error);
                    })();