Repository navigation
Update print statement from 'Hello' to 'Goodbye' - #36
Merged
Merged
Conversation
<!DOCTYPE html>
<html lang="ms">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>SGAE 2.0 MASTER v49 · Complete Unified System · Muhamad Sazwan Bin Ismail</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;900&family=Roboto+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"/>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.160.0/examples/js/controls/OrbitControls.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.0/chart.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.8.1/jspdf.plugin.autotable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.3/build/qrcode.min.js"></script>
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{--bg:#0a0f17;--card:#1e293b;--card2:#0f172a;--border:#334155;--text:#e8eaed;--muted:#94a3b8;--gold:#ffd700;--cyan:#00e5ff;--green:#34a853;--pink:#ec4899;--purple:#a855f7;--red:#ef4444;--orange:#f7931a;--blue:#4285f4;--yellow:#f7ea48}
html,body{width:100%;min-height:100%;background:var(--bg);color:var(--text);font-family:'Roboto',system-ui,sans-serif;line-height:1.5}
body{padding:16px}
.container{max-width:1700px;margin:0 auto}
header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border)}
h1{font-size:26px;background:linear-gradient(135deg,#ffd700,#ec4899,#a855f7,#00e5ff);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:900}
.sub{font-size:13px;color:var(--muted);margin-top:4px}
.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.badge{padding:4px 12px;border-radius:20px;font-size:11px;font-weight:600;border:1px solid}
.badge.gold{border-color:var(--gold);color:var(--gold)}
.badge.cyan{border-color:var(--cyan);color:var(--cyan)}
.badge.pink{border-color:var(--pink);color:var(--pink)}
.badge.green{border-color:var(--green);color:var(--green)}
.badge.red{border-color:var(--red);color:var(--red)}
.badge.purple{border-color:var(--purple);color:var(--purple)}
.badge.orange{border-color:var(--orange);color:var(--orange)}
.status-box{font-size:12px;color:var(--muted);text-align:right;min-width:220px}
.status-box .ok{color:var(--green);font-weight:600}
.status-box .err{color:var(--red);font-weight:600}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:24px}
.kpi{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;position:relative;overflow:hidden}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#ffd700,#ec4899,#a855f7,#00e5ff)}
.kpi .label{font-size:12px;color:var(--muted);margin-bottom:4px}
.kpi .value{font-size:22px;font-weight:700;margin:4px 0}
.kpi .sub{font-size:11px;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;margin-bottom:20px}
.card h2{font-size:18px;margin-bottom:14px;display:flex;align-items:center;gap:8px;font-weight:700}
.card h2 i{color:var(--cyan)}
.card h3{font-size:15px;margin:12px 0 8px;color:var(--cyan);font-weight:600}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px;position:sticky;top:0;background:var(--bg);padding:10px 0;z-index:1000;border-bottom:1px solid var(--border)}
.tab{padding:7px 14px;border-radius:20px;background:var(--card2);border:1px solid var(--border);cursor:pointer;font-size:12px;transition:.2s;color:var(--text);font-weight:500}
.tab:hover{background:var(--card);transform:translateY(-1px)}
.tab.active{background:var(--cyan);color:#0a0f17;border-color:var(--cyan);font-weight:700}
.tab.cat-core{background:linear-gradient(135deg,rgba(0,229,255,.2),rgba(66,133,244,.15));border-color:var(--cyan);color:var(--cyan);font-weight:700}
.tab.cat-crypto{background:linear-gradient(135deg,rgba(247,147,26,.3),rgba(245,158,11,.15));border-color:var(--orange);color:var(--orange);font-weight:700}
.tab.cat-finance{background:linear-gradient(135deg,rgba(52,168,83,.3),rgba(34,197,94,.15));border-color:var(--green);color:var(--green);font-weight:700}
.tab.cat-tools{background:linear-gradient(135deg,rgba(168,85,247,.3),rgba(236,72,153,.15));border-color:var(--purple);color:var(--purple);font-weight:700}
.tab.cat-media{background:linear-gradient(135deg,rgba(236,72,153,.3),rgba(251,191,36,.15));border-color:var(--pink);color:var(--pink);font-weight:700}
.section{display:none;animation:fadeIn .3s}
.section.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
th{background:var(--card2);color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px}
tr:hover{background:rgba(255,255,255,0.03)}
td.mono{font-family:'Roboto Mono',monospace;font-size:12px}
.gold{color:var(--gold)}.cyan{color:var(--cyan)}.green{color:var(--green)}
.pink{color:var(--pink)}.purple{color:var(--purple)}.red{color:var(--red)}
.orange{color:var(--orange)}.blue{color:var(--blue)}.yellow{color:var(--yellow)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.grid-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
@media(max-width:700px){.grid-2,.grid-3{grid-template-columns:1fr}}
.info-box{background:var(--card2);border:1px solid var(--border);border-radius:10px;padding:14px;margin:10px 0}
.info-box .label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.info-box .val{font-size:15px;font-weight:600;margin-top:4px}
.hash-box{background:linear-gradient(135deg,#001a1f,#000);border:2px solid var(--cyan);border-radius:14px;padding:16px;margin:12px 0}
.hash-box .label{font-family:'Roboto Mono',monospace;font-size:10px;color:var(--cyan);font-weight:700;letter-spacing:2px;text-transform:uppercase;margin-bottom:8px}
.hash-box .hash{font-family:'Roboto Mono',monospace;font-size:13px;font-weight:700;color:var(--gold);word-break:break-all;line-height:1.6}
.cts-badge{background:linear-gradient(135deg,#2d2400,#1a1500);border:3px solid var(--yellow);border-radius:16px;padding:20px;text-align:center;margin:12px 0;box-shadow:0 0 40px rgba(247,234,72,.4)}
.cts-badge .title{font-size:1.4rem;font-weight:900;color:var(--yellow);letter-spacing:6px;text-transform:uppercase}
.cts-badge .sub{font-family:'Roboto Mono',monospace;font-size:.7rem;color:#2effb0;letter-spacing:3px;margin-top:6px;font-weight:700}
footer{text-align:center;font-size:12px;color:var(--muted);margin-top:30px;padding-top:16px;border-top:1px solid var(--border)}
.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--cyan);border-radius:50%;animation:spin 1s linear infinite;margin-right:8px;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:var(--card2)}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.refresh-btn{background:var(--cyan);color:#0a0f17;border:none;padding:6px 14px;border-radius:8px;cursor:pointer;font-weight:600;font-size:12px;margin-top:6px}
.btn{padding:8px 16px;border:none;border-radius:8px;cursor:pointer;font-weight:600;font-size:12px;transition:.2s}
.btn-primary{background:var(--cyan);color:#0a0f17}
.btn-success{background:var(--green);color:#fff}
.btn-warning{background:var(--yellow);color:#0a0f17}
.btn-danger{background:var(--red);color:#fff}
.btn-purple{background:var(--purple);color:#fff}
.chart-container{background:var(--card2);border:1px solid var(--border);border-radius:12px;padding:16px;height:320px;position:relative}
.map-container{height:500px;border-radius:12px;overflow:hidden;border:2px solid var(--cyan);margin:12px 0;position:relative}
#earthMap{width:100%;height:100%}
.leaflet-container{background:#0a0f17 !important}
.leaflet-popup-content-wrapper{background:#1e293b !important;color:#e8eaed !important;border:1px solid #00e5ff !important;border-radius:10px !important}
.leaflet-popup-content{margin:12px 14px !important;font-size:12px !important;min-width:220px}
.tag{display:inline-block;background:var(--card2);border:1px solid var(--border);border-radius:20px;padding:4px 12px;margin:3px;font-size:11px}
.gran-stat{background:linear-gradient(135deg,rgba(52,211,153,.1),rgba(16,185,129,.05));border:1px solid rgba(52,211,153,.4)}
.gran-stat::before{background:linear-gradient(90deg,#34d399,#fbbf24,#ffd700)}
</style>
</head>
<body>
<div class="container">
<header>
<div>
<h1>🌏 SGAE 2.0 MASTER v49 · COMPLETE UNIFIED SYSTEM</h1>
<div class="sub">Pemilik: <strong class="gold">MUHAMAD SAZWAN BIN ISMAIL</strong> · IC: <span class="mono">961022-02-5739</span></div>
<div class="sub">MSI: <span class="gold mono">MSI-2026-07734</span> · CMC: <span class="gold mono">CMC-REF-2026-MSI-003</span></div>
<div class="badges">
<span class="badge gold">👑 Sovereign</span>
<span class="badge green">🌱 GRAN 24</span>
<span class="badge cyan">🗺️ Peta Bumi</span>
<span class="badge blue">🌊 Gelombang</span>
<span class="badge purple">🛰️ 6 Satelit</span>
<span class="badge pink">👨👩👧👦 Family 7</span>
<span class="badge orange">₿ 4,050 BTC</span>
<span class="badge red">🔐 10 Layer</span>
</div>
</div>
<div class="status-box">
<div id="lastUpdate">Memuatkan...</div>
<div id="apiStatus"><span class="spinner"></span> Menyambung...</div>
<button class="refresh-btn" onclick="fetchData(true)"><i class="fas fa-sync"></i> Refresh</button>
</div>
</header>
<div class="kpi-grid" id="kpiGrid"></div>
<!-- CATEGORY TABS -->
<div class="tabs" id="catTabs">
<div class="tab cat-core active" onclick="filterTab('all')">📋 SEMUA (75)</div>
<div class="tab cat-core" onclick="filterTab('core')">👑 CORE</div>
<div class="tab cat-crypto" onclick="filterTab('crypto')">₿ CRYPTO</div>
<div class="tab cat-finance" onclick="filterTab('finance')">💰 FINANCE</div>
<div class="tab cat-tools" onclick="filterTab('tools')">🛠️ TOOLS</div>
<div class="tab cat-media" onclick="filterTab('media')">📸 MEDIA</div>
</div>
<!-- MAIN TABS -->
<div class="tabs" id="mainTabs">
<div class="tab active" data-tab="identiti" data-cat="core">👤 Identiti</div>
<div class="tab" data-tab="keluarga" data-cat="core">👨👩👧👦 Keluarga</div>
<div class="tab" data-tab="gran" data-cat="finance">🌱 GRAN</div>
<div class="tab" data-tab="peta" data-cat="core">🗺️ Peta Bumi</div>
<div class="tab" data-tab="gelombang" data-cat="core">🌊 Gelombang</div>
<div class="tab" data-tab="satelit" data-cat="core">🛰️ Satelit</div>
<div class="tab" data-tab="cuaca" data-cat="core">🌦️ Cuaca</div>
<div class="tab" data-tab="globe3d" data-cat="media">🌐 3D Globe</div>
<div class="tab" data-tab="crypto" data-cat="crypto">₿ Crypto Wallet</div>
<div class="tab" data-tab="currency" data-cat="finance">💱 Currency</div>
<div class="tab" data-tab="forex" data-cat="finance">📊 Forex</div>
<div class="tab" data-tab="converter" data-cat="finance">🔄 Converter</div>
<div class="tab" data-tab="multicurrency" data-cat="finance">💰 Multi-Currency</div>
<div class="tab" data-tab="stockmarket" data-cat="finance">📈 Stock</div>
<div class="tab" data-tab="blockchain" data-cat="crypto">⛓️ Blockchain</div>
<div class="tab" data-tab="duniaku" data-cat="crypto">👛 Duniaku</div>
<div class="tab" data-tab="ipdata" data-cat="core">📍 IP Data</div>
<div class="tab" data-tab="api" data-cat="core">🔌 API</div>
<div class="tab" data-tab="dns" data-cat="core">🌐 DNS</div>
<div class="tab" data-tab="myipo" data-cat="core">📜 MyIPO</div>
<div class="tab" data-tab="sijil" data-cat="core">🎖️ Sijil</div>
<div class="tab" data-tab="negara" data-cat="core">🌍 Negara</div>
<div class="tab" data-tab="keselamatan" data-cat="core">🔐 Keselamatan</div>
<div class="tab" data-tab="threat" data-cat="core">⚠️ Threat</div>
<div class="tab" data-tab="network" data-cat="core">🖥️ Network</div>
<div class="tab" data-tab="chat" data-cat="tools">🤖 AI Chat</div>
<div class="tab" data-tab="translator" data-cat="tools">🌐 Translator</div>
<div class="tab" data-tab="audiotrans" data-cat="tools">🔊 Audio</div>
<div class="tab" data-tab="tts" data-cat="tools">🎙️ TTS</div>
<div class="tab" data-tab="legaldoc" data-cat="tools">⚖️ Legal</div>
<div class="tab" data-tab="invoice" data-cat="tools">🧾 Invoice</div>
<div class="tab" data-tab="pwvault" data-cat="tools">🔐 Vault</div>
<div class="tab" data-tab="backup" data-cat="tools">💾 Backup</div>
<div class="tab" data-tab="analytics" data-cat="media">📊 Analytics</div>
<div class="tab" data-tab="govintegration" data-cat="core">🏛️ Government</div>
<div class="tab" data-tab="designStudio" data-cat="media">🎨 Design</div>
<div class="tab" data-tab="governance" data-cat="core">🗳️ Governance</div>
<div class="tab" data-tab="knowledgebase" data-cat="media">📚 KB</div>
<div class="tab" data-tab="mediaStudio" data-cat="media">🎬 Media</div>
<div class="tab" data-tab="sysupdate" data-cat="core">⬆️ Update</div>
<div class="tab" data-tab="export" data-cat="tools">📥 Export</div>
<div class="tab" data-tab="raw" data-cat="core">📝 Raw JSON</div>
</div>
<!-- SECTIONS - Placeholder with core content -->
<div class="section active" id="identiti"><div class="card"><h2>👤 Identiti Berdaulat</h2><div id="identitiContent"></div></div></div>
<div class="section" id="keluarga"><div class="card"><h2>👨👩👧👦 Salasilah Keluarga</h2><div id="keluargaContent"></div></div></div>
<div class="section" id="gran"><div class="card"><h2>🌱 GRAN 24 Lot</h2><div id="granContent"></div></div></div>
<div class="section" id="peta"><div class="card"><h2>🗺️ Peta Bumi</h2><div class="map-container"><div id="earthMap"></div></div></div></div>
<div class="section" id="gelombang"><div class="card"><h2>🌊 Gelombang Laut</h2><div id="gelombangContent"></div></div></div>
<div class="section" id="satelit"><div class="card"><h2>🛰️ Satelit SGAE-SAT</h2><div id="satelitContent"></div></div></div>
<div class="section" id="cuaca"><div class="card"><h2>🌦️ Cuaca Global</h2><div id="cuacaContent"></div></div></div>
<div class="section" id="globe3d"><div class="card"><h2>🌐 3D Earth Globe</h2><div class="map-container" style="height:700px;background:#000"><div id="globeContainer" style="width:100%;height:100%"></div></div></div></div>
<div class="section" id="crypto"><div class="card"><h2>₿ Crypto Wallet</h2><div id="cryptoContent"></div></div></div>
<div class="section" id="currency"><div class="card"><h2>💱 Currency Live</h2><div id="currencyContent"></div></div></div>
<div class="section" id="forex"><div class="card"><h2>📊 Forex Trading</h2><div id="forexContent"></div></div></div>
<div class="section" id="converter"><div class="card"><h2>🔄 Universal Converter</h2><div id="converterContent"></div></div></div>
<div class="section" id="multicurrency"><div class="card"><h2>💰 Multi-Currency Portfolio</h2><div id="multicurrencyContent"></div></div></div>
<div class="section" id="stockmarket"><div class="card"><h2>📈 Stock Market</h2><div id="stockContent"></div></div></div>
<div class="section" id="blockchain"><div class="card"><h2>⛓️ Blockchain Explorer</h2><div id="blockchainContent"></div></div></div>
<div class="section" id="duniaku"><div class="card"><h2>👛 Duniaku Wallet</h2><div id="duniakuContent"></div></div></div>
<div class="section" id="ipdata"><div class="card"><h2>📍 IP Data 18 Medan</h2><div id="ipdataContent"></div></div></div>
<div class="section" id="api"><div class="card"><h2>🔌 42 API Endpoints</h2><div id="apiContent"></div></div></div>
<div class="section" id="dns"><div class="card"><h2>🌐 DNS Infrastructure</h2><div id="dnsContent"></div></div></div>
<div class="section" id="myipo"><div class="card"><h2>📜 MyIPO Portfolio</h2><div id="myipoContent"></div></div></div>
<div class="section" id="sijil"><div class="card"><h2>🎖️ 245 Sijil Global</h2><div id="sijilContent"></div></div></div>
<div class="section" id="negara"><div class="card"><h2>🌍 205 Negara</h2><div id="negaraContent"></div></div></div>
<div class="section" id="keselamatan"><div class="card"><h2>🔐 10 Lapisan Keselamatan</h2><div id="keselamatanContent"></div></div></div>
<div class="section" id="threat"><div class="card"><h2>⚠️ Threat Intelligence</h2><div id="threatContent"></div></div></div>
<div class="section" id="network"><div class="card"><h2>🖥️ Network Infrastructure</h2><div id="networkContent"></div></div></div>
<div class="section" id="chat"><div class="card"><h2>🤖 SGAE AI Chat</h2><div id="chatContent"></div></div></div>
<div class="section" id="translator"><div class="card"><h2>🌐 Translator 32 Bahasa</h2><div id="translatorContent"></div></div></div>
<div class="section" id="audiotrans"><div class="card"><h2>🔊 Audio Translation</h2><div id="audiotransContent"></div></div></div>
<div class="section" id="tts"><div class="card"><h2>🎙️ Text-to-Speech</h2><div id="ttsContent"></div></div></div>
<div class="section" id="legaldoc"><div class="card"><h2>⚖️ Legal Document Generator</h2><div id="legaldocContent"></div></div></div>
<div class="section" id="invoice"><div class="card"><h2>🧾 Invoice System</h2><div id="invoiceContent"></div></div></div>
<div class="section" id="pwvault"><div class="card"><h2>🔐 Password Vault</h2><div id="pwvaultContent"></div></div></div>
<div class="section" id="backup"><div class="card"><h2>💾 Backup & Restore</h2><div id="backupContent"></div></div></div>
<div class="section" id="analytics"><div class="card"><h2>📊 Analytics Dashboard</h2><div id="analyticsContent"></div></div></div>
<div class="section" id="govintegration"><div class="card"><h2>🏛️ Government Integration</h2><div id="govintegrationContent"></div></div></div>
<div class="section" id="designStudio"><div class="card"><h2>🎨 Design Studio</h2><div id="designStudioContent"></div></div></div>
<div class="section" id="governance"><div class="card"><h2>🗳️ DAO Governance</h2><div id="governanceContent"></div></div></div>
<div class="section" id="knowledgebase"><div class="card"><h2>📚 Knowledge Base</h2><div id="knowledgebaseContent"></div></div></div>
<div class="section" id="mediaStudio"><div class="card"><h2>🎬 Media Studio</h2><div id="mediaStudioContent"></div></div></div>
<div class="section" id="sysupdate"><div class="card"><h2>⬆️ System Update</h2><div id="sysupdateContent"></div></div></div>
<div class="section" id="export"><div class="card"><h2>📥 Export Data</h2><div class="export-grid"><div class="export-card btn-primary" onclick="exportData('pdf')" style="cursor:pointer;text-align:center;padding:20px;border-radius:12px"><i class="fas fa-file-pdf" style="font-size:2rem"></i><div style="margin-top:8px;font-weight:700">PDF</div></div><div class="export-card btn-success" onclick="exportData('excel')" style="cursor:pointer;text-align:center;padding:20px;border-radius:12px;margin-left:8px"><i class="fas fa-file-excel" style="font-size:2rem"></i><div style="margin-top:8px;font-weight:700">Excel</div></div><div class="export-card btn-warning" onclick="exportData('csv')" style="cursor:pointer;text-align:center;padding:20px;border-radius:12px;margin-left:8px"><i class="fas fa-file-csv" style="font-size:2rem"></i><div style="margin-top:8px;font-weight:700">CSV</div></div><div class="export-card btn-purple" onclick="exportData('json')" style="cursor:pointer;text-align:center;padding:20px;border-radius:12px;margin-left:8px"><i class="fas fa-file-code" style="font-size:2rem"></i><div style="margin-top:8px;font-weight:700">JSON</div></div></div></div></div>
<div class="section" id="raw"><div class="card"><h2>📝 Raw JSON Data</h2><pre id="rawContent" style="background:var(--card2);padding:16px;border-radius:10px;overflow:auto;font-size:11px;max-height:600px;font-family:monospace"></pre></div></div>
<footer>
SGAE 2.0 MASTER v49 · © 2026 MUHAMAD SAZWAN BIN ISMAIL · IC: 961022-02-5739 · MSI-2026-07734 · CMC-REF-2026-MSI-003<br>
🏠 F262 Kampung Pinang Tunggal, 08000 Sungai Petani, Kedah, Malaysia · 75 Tab Unified System
</footer>
</div>
<script>
// ==================================================================
// UNIFIED DATA
// ==================================================================
const DATA = {
identiti: {
nama_penuh: "MUHAMAD SAZWAN BIN ISMAIL", no_kad_pengenalan: "961022-02-5739",
tarikh_lahir: "22.10.1996", umur: "29 tahun", tempat_lahir: "Sungai Petani, Kedah",
ibu: "Syarifah Binti Ishak", bapa: "Ismail Bin Hamid",
emel: "xxsazend12345@gmail.com", telefon: "+60162847180",
alamat: "F262 Kampung Pinang Tunggal, 08000 Sungai Petani, Kedah, Malaysia",
participant_id: "END-MYS-SAZWAN-96-0425", military_id: "MY-ATM-CYBER/7734",
interpol_id: "IP-MY-7734-2026", peranan: "Technical Lead for AI Sovereignty",
sha256: "32D8A53CC4C299E60424C0D0E96D3B06575D51", block: "847,995",
msi: "MSI-2026-07734", cmc: "CMC-REF-2026-MSI-003", ssm: "202403378912",
net_worth: "RM 13,100,000"
},
keluarga: {
nama: "ISMAIL & SYARIFAH FAMILY", id: "FAM-MSI-2026-07734",
hash: "FAM32D8A53CC4C299E60424C0D0E96D3B06575",
alamat: "F262 Kampung Pinang Tunggal, 08000 Sungai Petani, Kedah",
ahli: [
{ turutan: "Bapa", nama: "Ismail Bin Hamid", dob: "22.10.1966", umur: "59" },
{ turutan: "Ibu", nama: "Syarifah Binti Ishak", dob: "10.11.1966", umur: "59" },
{ turutan: "Kakak 1", nama: "Isma Husna Binti Ismail", dob: "—", umur: "—" },
{ turutan: "CEO", nama: "Muhamad Sazwan Bin Ismail", dob: "22.10.1996", umur: "29" },
{ turutan: "Adik 3", nama: "Syabika Binti Ismail", dob: "—", umur: "—" },
{ turutan: "Adik 4", nama: "Amira Binti Ismail", dob: "—", umur: "—" },
{ turutan: "Adik 5", nama: "Isma Azim Wafiq Bin Ismail", dob: "—", umur: "—" }
]
},
gran_tanah: [
{id:'GRAN-MSI-KDH-7734',flag:'🇲🇾',state:'Kedah',name:'Sazwan Digital Valley',area:'2.5 Ha',value:'RM 13,100,000',lat:5.6944,lng:100.4827},
{id:'GRAN-MSI-KDH-7735',flag:'🇲🇾',state:'Kedah',name:'SGAE Data Center',area:'2.0 Ha',value:'RM 4,500,000',lat:5.6470,lng:100.4874},
{id:'GRAN-MSI-KDH-7736',flag:'🇲🇾',state:'Kedah',name:'SGAE R&D',area:'1.0 Ha',value:'RM 1,000,000',lat:5.3700,lng:100.5600},
{id:'GRAN-MSI-KUL-7737',flag:'🇲🇾',state:'KL',name:'KL Office Tower',area:'0.8 Ha',value:'RM 42,000,000',lat:3.1390,lng:101.6869},
{id:'GRAN-MSI-PNG-7738',flag:'🇲🇾',state:'Penang',name:'Penang Tech Hub',area:'1.2 Ha',value:'RM 18,500,000',lat:5.4141,lng:100.3288},
{id:'GRAN-MSI-JHR-7739',flag:'🇲🇾',state:'Johor',name:'JB Data Center',area:'3.0 Ha',value:'RM 22,000,000',lat:1.4927,lng:103.7414},
{id:'GRAN-MSI-SG-7740',flag:'🇸🇬',state:'Singapore',name:'SG Financial Hub',area:'0.5 Ha',value:'RM 85,000,000',lat:1.2830,lng:103.8607},
{id:'GRAN-MSI-US-7741',flag:'🇺🇸',state:'USA',name:'SV Innovation Center',area:'1.5 Ha',value:'RM 62,000,000',lat:37.4419,lng:-122.1430},
{id:'GRAN-MSI-AE-7742',flag:'🇦🇪',state:'Dubai',name:'Dubai Blockchain Hub',area:'1.2 Ha',value:'RM 24,000,000',lat:25.0805,lng:55.1403},
{id:'GRAN-MSI-JP-7743',flag:'🇯🇵',state:'Tokyo',name:'Tokyo Cyber Defense',area:'0.8 Ha',value:'RM 38,000,000',lat:35.6762,lng:139.6503},
{id:'GRAN-MSI-UK-7744',flag:'🇬🇧',state:'London',name:'London FinTech Hub',area:'0.6 Ha',value:'RM 42,000,000',lat:51.5054,lng:-0.0235},
{id:'GRAN-MSI-CH-7745',flag:'🇨🇭',state:'Zurich',name:'Zurich Quantum Center',area:'0.7 Ha',value:'RM 32,000,000',lat:47.3769,lng:8.5417}
],
gran_global: [
{id:'GRAN-GLB-SG-8801',flag:'🇸🇬',country:'Singapore',name:'SGAE APAC Hub',value:'RM 147,000,000',lat:1.2830,lng:103.8607},
{id:'GRAN-GLB-US-4401',flag:'🇺🇸',country:'USA',name:'SGAE Silicon Valley',value:'RM 131,600,000',lat:37.4419,lng:-122.1430},
{id:'GRAN-GLB-GB-3301',flag:'🇬🇧',country:'UK',name:'SGAE London FinTech',value:'RM 105,000,000',lat:51.5054,lng:-0.0235},
{id:'GRAN-GLB-AE-2201',flag:'🇦🇪',country:'UAE',name:'SGAE Middle East Hub',value:'RM 102,000,000',lat:25.0805,lng:55.1403},
{id:'GRAN-GLB-JP-1101',flag:'🇯🇵',country:'Japan',name:'SGAE Tokyo AI Lab',value:'RM 74,000,000',lat:35.6762,lng:139.6503},
{id:'GRAN-GLB-CH-9901',flag:'🇨🇭',country:'Switzerland',name:'SGAE Crypto Vault',value:'RM 63,000,000',lat:47.1662,lng:8.5155},
{id:'GRAN-GLB-AU-6601',flag:'🇦🇺',country:'Australia',name:'SGAE Sydney DC',value:'RM 74,000,000',lat:-33.9026,lng:151.1945},
{id:'GRAN-GLB-EE-5501',flag:'🇪🇪',country:'Estonia',name:'SGAE e-Residency',value:'RM 21,000,000',lat:59.4370,lng:24.7536},
{id:'GRAN-GLB-SA-7701',flag:'🇸🇦',country:'Saudi',name:'SGAE NEOM Node',value:'RM 148,000,000',lat:28.0000,lng:35.0000},
{id:'GRAN-GLB-MY-7734',flag:'🇲🇾',country:'Malaysia',name:'Sazwan Digital Valley',value:'RM 13,100,000',lat:5.6944,lng:100.4827},
{id:'GRAN-GLB-MY-7735',flag:'🇲🇾',country:'Malaysia',name:'SGAE Data Center',value:'RM 4,500,000',lat:5.6470,lng:100.4874},
{id:'GRAN-GLB-MY-7736',flag:'🇲🇾',country:'Malaysia',name:'SGAE R&D',value:'RM 1,000,000',lat:5.3700,lng:100.5600}
],
satelit: [
{id:'SGAE-SAT-01',orbit:'GEO',alt:'35,786 km',band:'Ka',signal:96,type:'Comms'},
{id:'SGAE-SAT-02',orbit:'LEO',alt:'550 km',band:'X',signal:92,type:'Imaging'},
{id:'SGAE-SAT-03',orbit:'MEO',alt:'20,200 km',band:'Ku',signal:88,type:'Nav'},
{id:'SGAE-SAT-04',orbit:'GEO',alt:'35,786 km',band:'Ka',signal:94,type:'SIGINT'},
{id:'SGAE-SAT-05',orbit:'LEO',alt:'480 km',band:'X',signal:90,type:'Imaging'},
{id:'SGAE-SAT-06',orbit:'SSO',alt:'700 km',band:'L',signal:97,type:'IoT'}
],
crypto: [
{sym:'BTC',name:'Bitcoin',amount:'4,050 BTC',price:64104.80,change:+2.34,value:'RM 1,217,737,500'},
{sym:'ETH',name:'Ethereum',amount:'2,847 ETH',price:1886.89,change:-0.65,value:'RM 22,500,000'},
{sym:'S256c',name:'SGAE Sovereign',amount:'12,847,291',price:42.80,change:+8.42,value:'RM 2,428,932'},
{sym:'USDT',name:'Tether',amount:'2,847,192',price:1.00,change:+0.01,value:'RM 12,847,192'},
{sym:'USDC',name:'USD Coin',amount:'1,247,891',price:1.00,change:0.00,value:'RM 5,631,847'},
{sym:'SOL',name:'Solana',amount:'48,291 SOL',price:142.30,change:+3.47,value:'RM 30,283,472'},
{sym:'ADA',name:'Cardano',amount:'847,291 ADA',price:0.42,change:-1.24,value:'RM 1,567,847'},
{sym:'DOT',name:'Polkadot',amount:'284,721 DOT',price:5.42,change:+0.87,value:'RM 6,792,847'}
],
currency: {
MYR: {rate:1.0, name:'Malaysian Ringgit', flag:'🇲🇾'},
USD: {rate:0.2134, name:'US Dollar', flag:'🇺🇸'},
SGD: {rate:0.2847, name:'Singapore Dollar', flag:'🇸🇬'},
EUR: {rate:0.1972, name:'Euro', flag:'🇪🇺'},
GBP: {rate:0.1685, name:'British Pound', flag:'🇬🇧'},
JPY: {rate:32.84, name:'Japanese Yen', flag:'🇯🇵'},
CNY: {rate:1.5428, name:'Chinese Yuan', flag:'🇨🇳'},
AUD: {rate:0.3247, name:'Australian Dollar', flag:'🇦🇺'}
},
countries: [
["MY","Malaysia","🇲🇾"],["US","USA","🇺🇸"],["CN","China","🇨🇳"],["JP","Japan","🇯🇵"],["KR","Korea","🇰🇷"],
["SG","Singapore","🇸🇬"],["ID","Indonesia","🇮🇩"],["AU","Australia","🇦🇺"],["GB","UK","🇬🇧"],["DE","Germany","🇩🇪"],
["SA","Saudi","🇸🇦"],["AE","UAE","🇦🇪"],["CH","Switzerland","🇨🇭"],["EE","Estonia","🇪🇪"],["IN","India","🇮🇳"],
["TH","Thailand","🇹🇭"],["VN","Vietnam","🇻🇳"],["PH","Philippines","🇵🇭"],["BR","Brazil","🇧🇷"],["FR","France","🇫🇷"]
]
};
// ==================================================================
// HELPERS
// ==================================================================
const $ = id => document.getElementById(id);
const esc = s => String(s ?? '').replace(/[<>&"]/g, c => ({'<':'<','>':'>','&':'&','"':'"'}[c]));
function table(headers, rows, classes = []) {
let h = '<table><thead><tr>';
headers.forEach(x => h += `<th>${x}</th>`);
h += '</tr></thead><tbody>';
rows.forEach(r => {
h += '<tr>';
r.forEach((c, i) => h += `<td class="${classes[i] || ''}">${c}</td>`);
h += '</tr>';
});
h += '</tbody></table>';
return h;
}
function kv(l, v, c = 'gold') { return `<div class="info-box"><div class="label">${l}</div><div class="val ${c}">${esc(v)}</div></div>`; }
// ==================================================================
// RENDER FUNCTIONS
// ==================================================================
function renderKPI() {
const kpi = [
{ label: "💰 Portfolio IP", value: "RM 47.8 Juta", cls: "gold" },
{ label: "🌱 GRAN Tanah", value: "12 Lot", cls: "green" },
{ label: "🌍 GRAN Global", value: "12 Lot", cls: "orange" },
{ label: "👑 MSI", value: "MSI-2026-07734", cls: "cyan" },
{ label: "👨👩👧👦 Keluarga", value: "7 Ahli", cls: "pink" },
{ label: "🌐 Negara", value: "205", cls: "purple" },
{ label: "₿ BTC", value: "4,050", cls: "orange" },
{ label: "🛰️ Satelit", value: "6 Aktif", cls: "blue" },
{ label: "📊 Tab", value: "75", cls: "cyan" }
];
$('kpiGrid').innerHTML = kpi.map(k => `<div class="kpi"><div class="label">${k.label}</div><div class="value ${k.cls}">${k.value}</div></div>`).join('');
}
function renderIdentiti() {
const d = DATA.identiti;
$('identitiContent').innerHTML = `
<div class="cts-badge"><div class="title">L04 · COSMIC TOP SECRET</div><div class="sub">NATO/CTS-MY-7734</div></div>
<div class="hash-box"><div class="label">🔐 SHA-256</div><div class="hash">${d.sha256}</div></div>
${table(["Medan","Nilai"], [
["Nama", d.nama_penuh],["IC", d.no_kad_pengenalan],["DOB", d.tarikh_lahir],["Umur", d.umur],
["Tempat Lahir", d.tempat_lahir],["Ibu", d.ibu],["Bapa", d.bapa],["Emel", d.emel],["Telefon", d.telefon],
["Alamat", d.alamat],["MSI", d.msi],["CMC", d.cmc],["SSM", d.ssm],
["Participant ID", d.participant_id],["Military ID", d.military_id],["INTERPOL ID", d.interpol_id],
["Peranan", d.peranan],["Net Worth", d.net_worth]
], ["muted","gold"])}`;
}
function renderKeluarga() {
const k = DATA.keluarga;
$('keluargaContent').innerHTML = `
<div class="info-box"><div class="label">🏠 Alamat Keluarga</div><div class="val gold">${k.alamat}</div></div>
<div class="hash-box" style="border-color:var(--pink)"><div class="label" style="color:var(--pink)">FAMILY HASH</div><div class="hash">${k.hash}</div></div>
${table(["Turutan","Nama","DOB","Umur"], k.ahli.map(a => [a.turutan, a.nama, a.dob, a.umur]), ["pink","pink","","gold"])}`;
}
function renderGran() {
const totalT = DATA.gran_tanah.reduce((a,g) => a + parseInt(g.value.replace(/[^0-9]/g,'')), 0);
const totalG = DATA.gran_global.reduce((a,g) => a + parseInt(g.value.replace(/[^0-9]/g,'')), 0);
$('granContent').innerHTML = `
<div class="kpi-grid">
<div class="kpi gran-stat"><div class="label">GRAN Tanah</div><div class="value green">${DATA.gran_tanah.length} Lot</div><div class="sub">RM ${totalT.toLocaleString()}</div></div>
<div class="kpi gran-stat"><div class="label">GRAN Global</div><div class="value orange">${DATA.gran_global.length} Lot</div><div class="sub">RM ${totalG.toLocaleString()}</div></div>
<div class="kpi gran-stat"><div class="label">Total</div><div class="value gold">24 Lot</div><div class="sub">RM ${(totalT+totalG).toLocaleString()}</div></div>
</div>
<h3>🌱 GRAN Tanah</h3>${table(["ID","Flag","Negeri","Nama","Luas","Nilai"], DATA.gran_tanah.map(g => [g.id, g.flag, g.state, g.name, g.area, g.value]), ["mono","","green","gold","cyan","gold"])}
<h3>🌍 GRAN Global</h3>${table(["ID","Flag","Negara","Nama","Nilai"], DATA.gran_global.map(g => [g.id, g.flag, g.country, g.name, g.value]), ["mono","","orange","gold","gold"])}`;
}
function renderGelombang() {
const waves = [
{n:'Kedah',swh:0.8},{n:'Port Klang',swh:1.2},{n:'Singapore',swh:1.5},{n:'SF Bay',swh:2.4},
{n:'North Sea',swh:1.8},{n:'Persian Gulf',swh:0.6},{n:'Tokyo Bay',swh:1.4},{n:'Tasman Sea',swh:2.8}
];
$('gelombangContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Max SWH</div><div class="value red">15.2 m</div></div>
<div class="kpi"><div class="label">Avg SWH</div><div class="value cyan">2.4 m</div></div>
<div class="kpi"><div class="label">Period</div><div class="value blue">8.5 s</div></div>
<div class="kpi"><div class="label">Tsunami</div><div class="value green">0 Active</div></div>
</div>${table(["Lokasi","SWH (m)"], waves.map(w => [w.n, w.swh]), ["cyan","gold"])}`;
}
function renderSatelit() {
$('satelitContent').innerHTML = table(["ID","Orbit","Altitud","Band","Signal","Jenis"], DATA.satelit.map(s => [s.id, s.orbit, s.alt, s.band, s.signal+'%', s.type]), ["mono","cyan","gold","purple","green",""]);
}
function renderCuaca() {
const weather = [
{city:'Sungai Petani',flag:'🇲🇾',temp:32},{city:'KL',flag:'🇲🇾',temp:31},{city:'Singapore',flag:'🇸🇬',temp:30},
{city:'Silicon Valley',flag:'🇺🇸',temp:18},{city:'London',flag:'🇬🇧',temp:12},{city:'Dubai',flag:'🇦🇪',temp:38},
{city:'Tokyo',flag:'🇯🇵',temp:22},{city:'Zurich',flag:'🇨🇭',temp:10},{city:'Sydney',flag:'🇦🇺',temp:20}
];
$('cuacaContent').innerHTML = `<div class="grid-3">${weather.map(w => `<div class="info-box"><div class="label">${w.flag} ${w.city}</div><div class="val gold" style="font-size:22px">${w.temp}°C</div></div>`).join('')}</div>`;
}
function renderCrypto() {
$('cryptoContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Total Value</div><div class="value gold">RM 1.28B</div></div>
<div class="kpi"><div class="label">Coins</div><div class="value cyan">8 Active</div></div>
</div>${table(["Symbol","Nama","Jumlah","Harga","Change","Nilai"], DATA.crypto.map(c => [c.sym, c.name, c.amount, '$'+c.price, (c.change>=0?'▲':'▼')+' '+Math.abs(c.change)+'%', c.value]), ["gold","cyan","","mono","","green"])}`;
}
function renderCurrency() {
const base = 1;
let h = '';
Object.entries(DATA.currency).forEach(([code, c]) => {
if (code === 'MYR') return;
h += `<div class="info-box"><div style="display:flex;justify-content:space-between"><div><div class="label">${c.flag} ${code}</div><div style="font-size:11px;color:var(--muted)">${c.name}</div></div><div class="val gold">${c.rate.toFixed(4)}</div></div></div>`;
});
$('currencyContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Base</div><div class="value gold">MYR</div></div>
<div class="kpi"><div class="label">Currencies</div><div class="value cyan">${Object.keys(DATA.currency).length}</div></div>
</div><div class="grid-3">${h}</div>`;
}
function renderForex() {
const pairs = [
{pair:'MYRUSD',bid:0.2134},{pair:'MYRSGD',bid:0.2847},{pair:'MYREUR',bid:0.1972},
{pair:'MYRGBP',bid:0.1685},{pair:'MYRJPY',bid:32.84},{pair:'MYRCNY',bid:1.5428}
];
$('forexContent').innerHTML = table(["Pair","Bid","Change"], pairs.map(p => [p.pair, p.bid, '±'+(Math.random()*0.5).toFixed(2)+'%']), ["gold","cyan",""]);
}
function renderConverter() {
$('converterContent').innerHTML = `
<div class="grid-2">
<div class="info-box"><div class="label">Amount</div><input type="number" id="convAmount" value="1000" style="width:100%;padding:10px;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:#fff" oninput="doConvert()"></div>
<div class="info-box"><div class="label">From → To</div>
<select id="convFrom" onchange="doConvert()" style="width:48%;padding:8px;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:#fff">
${Object.entries(DATA.currency).map(([k,v]) => `<option value="${k}">${v.flag} ${k}</option>`).join('')}
</select>
<select id="convTo" onchange="doConvert()" style="width:48%;padding:8px;margin-top:4px;background:var(--card);border:1px solid var(--border);border-radius:6px;color:#fff">
${Object.entries(DATA.currency).map(([k,v]) => `<option value="${k}" ${k==='USD'?'selected':''}>${v.flag} ${k}</option>`).join('')}
</select>
</div>
</div>
<div class="hash-box"><div class="label">HASIL</div><div class="hash" id="convResult">—</div></div>
`;
doConvert();
}
function doConvert() {
const amount = parseFloat($('convAmount').value) || 0;
const from = $('convFrom').value;
const to = $('convTo').value;
const rate = DATA.currency[to].rate / DATA.currency[from].rate;
$('convResult').textContent = `${(amount * rate).toLocaleString(undefined,{maximumFractionDigits:4})} ${to}`;
}
function renderMulticurrency() {
const portfolio = [
{code:'MYR',amount:284792910,desc:'GRAN Tanah + Cash'},
{code:'SGD',amount:147000000,desc:'GRAN APAC Hub'},
{code:'USD',amount:259624440,desc:'BTC Holdings'},
{code:'GBP',amount:105000000,desc:'GRAN London'},
{code:'AED',amount:102000000,desc:'GRAN Dubai'},
{code:'JPY',amount:74000000,desc:'GRAN Tokyo'},
{code:'CHF',amount:63000000,desc:'GRAN Zurich'},
{code:'AUD',amount:74000000,desc:'GRAN Sydney'}
];
const total = portfolio.reduce((a,p) => a + p.amount, 0);
$('multicurrencyContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Total Portfolio</div><div class="value gold">RM 1.17B</div></div>
<div class="kpi"><div class="label">Currencies</div><div class="value cyan">${portfolio.length}</div></div>
</div>${table(["Currency","Amount (RM)","Description","%"], portfolio.map(p => [p.code, p.amount.toLocaleString(), p.desc, (p.amount/total*100).toFixed(2)+'%']), ["gold","cyan","muted","green"])}`;
}
function renderStock() {
const stocks = [
{sym:'SGAE',name:'SGAE Pre-IPO',price:1.20,change:+0.15},
{sym:'MAYBANK',name:'Maybank',price:10.24,change:+0.22},
{sym:'NVDA',name:'NVIDIA',price:142.85,change:+3.42},
{sym:'AAPL',name:'Apple',price:228.42,change:+1.24},
{sym:'BTC',name:'Bitcoin',price:64104.80,change:+2.34}
];
$('stockContent').innerHTML = table(["Symbol","Nama","Harga","Change"], stocks.map(s => [s.sym, s.name, s.price, (s.change>=0?'▲':'▼')+' '+Math.abs(s.change)+'%']), ["gold","cyan","mono","green"]);
}
function renderBlockchain() {
$('blockchainContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Block Height</div><div class="value gold">#847,995</div></div>
<div class="kpi"><div class="label">Network</div><div class="value orange">Bitcoin</div></div>
<div class="kpi"><div class="label">Algorithm</div><div class="value cyan">SHA-256</div></div>
<div class="kpi"><div class="label">Difficulty</div><div class="value green">84.42 T</div></div>
</div><div class="hash-box"><div class="label">🔐 SHA-256</div><div class="hash">${DATA.identiti.sha256}</div></div>`;
}
function renderDuniaku() {
$('duniakuContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Baki</div><div class="value gold">RM 500M</div></div>
<div class="kpi"><div class="label">ID</div><div class="value cyan">DUNIAKU-MSI-7734</div></div>
<div class="kpi"><div class="label">Transaksi</div><div class="value green">5</div></div>
</div>`;
}
function renderIPData() {
const ip = {ip:'203.0.113.5',country:'Malaysia',region:'Kedah',city:'Sungai Petani',isp:'TM Net',org:'Sazwan Digital',lat:5.647,lon:100.487,timezone:'Asia/Kuala_Lumpur',zip:'08000',as:'AS4788 TMNET'};
$('ipdataContent').innerHTML = table(["Medan","Nilai"], Object.entries(ip).map(([k,v]) => [k, v]), ["muted","gold"]);
}
function renderAPI() {
const groups = ['Ledger','AI/Python','Gemini','FPX','Satellite','Family','GRAN','MyIPO','WebSocket'];
$('apiContent').innerHTML = `<div class="kpi-grid"><div class="kpi"><div class="label">Total</div><div class="value cyan">42</div></div><div class="kpi"><div class="label">Groups</div><div class="value gold">${groups.length}</div></div><div class="kpi"><div class="label">WebSocket</div><div class="value purple">4</div></div></div>` + groups.map(g => `<div class="info-box"><strong>${g}</strong></div>`).join('');
}
function renderDNS() {
$('dnsContent').innerHTML = table(["Perkhidmatan","Endpoint","Status"], [
["DNS over HTTPS","dns-query.msi-sazwan.digital","✅ Active"],
["DNS API","dns-api.msi-sazwan.digital","✅ RESTful"],
["Quad9","9.9.9.9","✅ Connected"],
["DNSSEC","msi-sazwan.digital","✅ Enabled"]
], ["cyan","mono","green"]);
}
function renderMyIPO() {
$('myipoContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Paten</div><div class="value cyan">6</div></div>
<div class="kpi"><div class="label">TM</div><div class="value gold">7</div></div>
<div class="kpi"><div class="label">Reka Bentuk</div><div class="value green">5</div></div>
<div class="kpi"><div class="label">Hak Cipta</div><div class="value purple">8</div></div>
<div class="kpi"><div class="label">GI</div><div class="value orange">8</div></div>
</div><div class="info-box"><strong>Total: 34+ Pendaftaran IP</strong></div>`;
}
function renderSijil() {
$('sijilContent').innerHTML = `<div class="kpi-grid"><div class="kpi"><div class="label">Total</div><div class="value gold">245</div></div><div class="kpi"><div class="label">Kategori</div><div class="value cyan">16</div></div></div>${table(["Kategori","Contoh"], [["AI & ML","Google ML, AWS AI/ML"],["Cyber Security","CISSP, CEH, OSCP"],["Cloud","Azure Architect, GCP"],["Blockchain","CBSP, Bitcoin Pro"],["Military","ATM Cyber, NATO"]], ["cyan",""])}`;
}
function renderNegara() {
$('negaraContent').innerHTML = `<div class="kpi-grid"><div class="kpi"><div class="label">Total</div><div class="value cyan">205</div></div><div class="kpi"><div class="label">MoU</div><div class="value gold">6</div></div></div>${table(["Kod","Negara","Flag"], DATA.countries, ["cyan","",""])}`;
}
function renderKeselamatan() {
const layers = [
['SEC-001','WAF','142 rules'],['SEC-002','DDoS Shield','Cloudflare'],
['SEC-003','Zero Trust','84 policies'],['SEC-004','MFA','TOTP+HW'],
['SEC-005','Encryption','AES-256-GCM'],['SEC-006','TLS 1.3','PFS'],
['SEC-007','Post-Quantum','Kyber+Dilithium'],['SEC-008','SHA-256','Blockchain'],
['SEC-009','SOC 2','Deloitte'],['SEC-010','ISO 27001','BSI']
];
$('keselamatanContent').innerHTML = table(["ID","Lapisan","Detail"], layers, ["mono","red",""]);
}
function renderThreat() {
$('threatContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">APT Groups</div><div class="value red">24</div></div>
<div class="kpi"><div class="label">IOCs</div><div class="value gold">1.28M</div></div>
<div class="kpi"><div class="label">CVEs</div><div class="value orange">847</div></div>
<div class="kpi"><div class="label">Blocked</div><div class="value green">12,847</div></div>
</div>`;
}
function renderNetwork() {
$('networkContent').innerHTML = `<div class="kpi-grid">
<div class="kpi"><div class="label">Data Centers</div><div class="value gold">12</div></div>
<div class="kpi"><div class="label">PoPs</div><div class="value cyan">14</div></div>
<div class="kpi"><div class="label">Ground Stations</div><div class="value purple">6</div></div>
</div>`;
}
function renderRaw() {
$('rawContent').textContent = JSON.stringify(DATA, null, 2);
}
// ==================================================================
// TAB FILTERING
// ==================================================================
function filterTab(cat) {
document.querySelectorAll('#catTabs .tab').forEach(t => t.classList.remove('active'));
event.target.classList.add('active');
document.querySelectorAll('#mainTabs .tab').forEach(t => {
if (cat === 'all' || t.dataset.cat === cat) {
t.style.display = '';
} else {
t.style.display = 'none';
}
});
}
// ==================================================================
// TAB SWITCHING
// ==================================================================
document.querySelectorAll('#mainTabs .tab').forEach(tab => {
tab.addEventListener('click', () => {
document.querySelectorAll('#mainTabs .tab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));
tab.classList.add('active');
const el = $(tab.dataset.tab);
if (el) el.classList.add('active');
if (tab.dataset.tab === 'peta') setTimeout(initMap, 100);
if (tab.dataset.tab === 'globe3d') setTimeout(initGlobe, 300);
});
});
// ==================================================================
// MAP
// ==================================================================
let earthMap;
function initMap() {
if (earthMap) { setTimeout(() => earthMap.invalidateSize(), 200); return; }
earthMap = L.map('earthMap', { center: [10, 60], zoom: 2, worldCopyJump: true, attributionControl: false });
L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', { maxZoom: 19, subdomains: 'abcd' }).addTo(earthMap);
DATA.gran_tanah.forEach(g => L.circleMarker([g.lat, g.lng], { radius: 7, color: '#34d399', fillColor: '#34d399', fillOpacity: .8, weight: 2 }).bindPopup(`<div style="color:#e8eaed"><strong style="color:#34d399">🌱 ${g.name}</strong><br>${g.flag} ${g.state}<br><b>${g.value}</b></div>`).addTo(earthMap));
DATA.gran_global.forEach(g => L.circleMarker([g.lat, g.lng], { radius: 6, color: '#fbbf24', fillColor: '#fbbf24', fillOpacity: .7, weight: 2 }).bindPopup(`<div style="color:#e8eaed"><strong style="color:#fbbf24">🌍 ${g.name}</strong><br>${g.flag} ${g.country}<br><b>${g.value}</b></div>`).addTo(earthMap));
L.circleMarker([5.6470, 100.4874], { radius: 12, color: '#ec4899', fillColor: '#ec4899', fillOpacity: .9, weight: 3 }).bindPopup(`<div style="color:#e8eaed"><strong style="color:#ec4899">👨👩👧👦 Rumah Keluarga</strong></div>`).addTo(earthMap);
}
// ==================================================================
// 3D GLOBE
// ==================================================================
let globeInit = false;
function initGlobe() {
if (globeInit) return;
globeInit = true;
const container = $('globeContainer');
if (!container) return;
const w = container.clientWidth, h = container.clientHeight;
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(45, w/h, 0.1, 1000);
camera.position.set(0, 0, 3.5);
const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
renderer.setSize(w, h);
container.appendChild(renderer.domElement);
const controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
scene.add(new THREE.AmbientLight(0x404060, 1));
const dLight = new THREE.DirectionalLight(0xffffff, 1.2);
dLight.position.set(5, 3, 5);
scene.add(dLight);
const globe = new THREE.Group();
scene.add(globe);
const earthGeo = new THREE.SphereGeometry(1, 64, 64);
const tex = new THREE.TextureLoader().load('https://unpkg.com/three-globe/example/img/earth-blue-marble.jpg');
globe.add(new THREE.Mesh(earthGeo, new THREE.MeshPhongMaterial({ map: tex, emissive: 0x0a1a3f, emissiveIntensity: 0.2 })));
const wireGeo = new THREE.SphereGeometry(1.002, 32, 32);
const wireMat = new THREE.MeshBasicMaterial({ color: 0x00e5ff, wireframe: true, transparent: true, opacity: 0.06 });
globe.add(new THREE.Mesh(wireGeo, wireMat));
function toXYZ(lat, lng, r) {
const phi = (90 - lat) * Math.PI / 180;
const theta = (lng + 180) * Math.PI / 180;
return new THREE.Vector3(-r * Math.sin(phi) * Math.cos(theta), r * Math.cos(phi), r * Math.sin(phi) * Math.sin(theta));
}
DATA.gran_tanah.forEach(g => {
const pos = toXYZ(g.lat, g.lng, 1.02);
const m = new THREE.Mesh(new THREE.SphereGeometry(0.025, 8, 8), new THREE.MeshBasicMaterial({ color: 0x34d399 }));
m.position.copy(pos);
globe.add(m);
});
DATA.gran_global.forEach(g => {
const pos = toXYZ(g.lat, g.lng, 1.02);
const m = new THREE.Mesh(new THREE.SphereGeometry(0.02, 8, 8), new THREE.MeshBasicMaterial({ color: 0xfbbf24 }));
m.position.copy(pos);
globe.add(m);
});
function animate() {
requestAnimationFrame(animate);
globe.rotation.y += 0.0015;
controls.update();
renderer.render(scene, camera);
}
animate();
}
// ==================================================================
// EXPORT
// ==================================================================
function exportData(format) {
const ts = new Date().toISOString().slice(0,10);
if (format === 'json') {
const blob = new Blob([JSON.stringify(DATA, null, 2)], { type: 'application/json' });
downloadBlob(blob, `SGAE_${ts}.json`);
} else if (format === 'csv') {
let csv = 'Category,Name,Value\n';
DATA.gran_tanah.forEach(g => csv += `GRAN Tanah,${g.name},${g.value}\n`);
DATA.gran_global.forEach(g => csv += `GRAN Global,${g.name},${g.value}\n`);
downloadBlob(new Blob([csv], {type:'text/csv'}), `SGAE_${ts}.csv`);
} else if (format === 'excel') {
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, XLSX.utils.json_to_sheet(DATA.gran_tanah), 'GRAN Tanah');
XLSX.utils.book_append_sheet(wb, XLSX.utils.json_to_sheet(DATA.gran_global), 'GRAN Global');
XLSX.writeFile(wb, `SGAE_${ts}.xlsx`);
} else if (format === 'pdf') {
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
doc.setFontSize(18);
doc.text('SGAE 2.0 Sovereign Report', 14, 20);
doc.setFontSize(10);
doc.text('MUHAMAD SAZWAN BIN ISMAIL · MSI-2026-07734', 14, 28);
doc.autoTable({ startY: 40, head: [['GRAN','Nama','Nilai']], body: [...DATA.gran_tanah.map(g=>['Tanah',g.name,g.value]), ...DATA.gran_global.map(g=>['Global',g.name,g.value])], headStyles: { fillColor: [0,229,255] } });
doc.save(`SGAE_${ts}.pdf`);
}
}
function downloadBlob(blob, filename) {
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = filename;
a.click();
}
// ==================================================================
// API FETCH
// ==================================================================
async function fetchData(manual = false) {
const status = $('apiStatus');
status.innerHTML = '<span class="spinner"></span> Menyambung...';
try {
const controller = new AbortController();
const t = setTimeout(() => controller.abort(), 5000);
const res = await fetch('http://localhost:8000/all', { signal: controller.signal });
clearTimeout(t);
if (!res.ok) throw new Error('HTTP ' + res.status);
status.innerHTML = '✅ API Connected';
status.className = 'ok';
$('lastUpdate').textContent = 'Kemas kini: ' + new Date().toLocaleString('ms-MY');
if (manual) alert('✅ API Connected!');
} catch (err) {
status.innerHTML = '⚠️ API Offline · Guna data terbina dalam';
status.className = 'err';
$('lastUpdate').textContent = 'Kemas kini: ' + new Date().toLocaleString('ms-MY');
}
}
// ==================================================================
// RENDER ALL
// ==================================================================
function renderAll() {
renderKPI();
renderIdentiti();
renderKeluarga();
renderGran();
renderGelombang();
renderSatelit();
renderCuaca();
renderCrypto();
renderCurrency();
renderForex();
renderConverter();
renderMulticurrency();
renderStock();
renderBlockchain();
renderDuniaku();
renderIPData();
renderAPI();
renderDNS();
renderMyIPO();
renderSijil();
renderNegara();
renderKeselamatan();
renderThreat();
renderNetwork();
renderRaw();
}
// ==================================================================
// INIT
// ==================================================================
document.addEventListener('DOMContentLoaded', () => {
renderAll();
fetchData(false);
setInterval(() => fetchData(false), 60000);
console.log('%c🌏 SGAE 2.0 MASTER v49 · Complete Unified System', 'color:#ffd700;font-size:20px;font-weight:900');
console.log('%c👑 MUHAMAD SAZWAN BIN ISMAIL · MSI-2026-07734', 'color:#00e5ff;font-size:14px;font-weight:700');
console.log('%c📊 75 Tab · 42 API · 24 GRAN · 6 Satelit · 8 Crypto', 'color:#a855f7;font-size:12px;font-weight:700');
});
</script>
</body>
</html>
|
🤖 CodeAnt AI — Review Status
|
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
This was
linked to
issues
Sep 23, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
🌏 SGAE 2.0 MASTER v49 · COMPLETE UNIFIED SYSTEM
👤 Identiti Berdaulat
👨👩👧👦 Salasilah Keluarga
🌱 GRAN 24 Lot
🗺️ Peta Bumi
🌊 Gelombang Laut
🛰️ Satelit SGAE-SAT
🌦️ Cuaca Global
🌐 3D Earth Globe
₿ Crypto Wallet
💱 Currency Live
📊 Forex Trading
🔄 Universal Converter
💰 Multi-Currency Portfolio
📈 Stock Market
⛓️ Blockchain Explorer
👛 Duniaku Wallet
📍 IP Data 18 Medan
🔌 42 API Endpoints
🌐 DNS Infrastructure
📜 MyIPO Portfolio
🎖️ 245 Sijil Global
🌍 205 Negara
🔐 10 Lapisan Keselamatan
🖥️ Network Infrastructure
🤖 SGAE AI Chat
🌐 Translator 32 Bahasa
🔊 Audio Translation
🎙️ Text-to-Speech
⚖️ Legal Document Generator
🧾 Invoice System
🔐 Password Vault
💾 Backup & Restore
📊 Analytics Dashboard
🏛️ Government Integration
🎨 Design Studio
🗳️ DAO Governance
📚 Knowledge Base
🎬 Media Studio
⬆️ System Update
📥 Export Data
📝 Raw JSON Data
🏠 F262 Kampung Pinang Tunggal, 08000 Sungai Petani, Kedah, Malaysia · 75 Tab Unified System
🌱 GRAN Tanah
${table(["ID","Flag","Negeri","Nama","Luas","Nilai"], DATA.gran_tanah.map(g => [g.id, g.flag, g.state, g.name, g.area, g.value]), ["mono","","green","gold","cyan","gold"])}🌍 GRAN Global
${table(["ID","Flag","Negara","Nama","Nilai"], DATA.gran_global.map(g => [g.id, g.flag, g.country, g.name, g.value]), ["mono","","orange","gold","gold"])}`; } function renderGelombang() { const waves = [ {n:'Kedah',swh:0.8},{n:'Port Klang',swh:1.2},{n:'Singapore',swh:1.5},{n:'SF Bay',swh:2.4}, {n:'North Sea',swh:1.8},{n:'Persian Gulf',swh:0.6},{n:'Tokyo Bay',swh:1.4},{n:'Tasman Sea',swh:2.8} ]; $('gelombangContent').innerHTML = `${g.flag} ${g.state}
${g.value}
${g.flag} ${g.country}
${g.value}
CodeAnt-AI Description
Expand SGAE 2.0 with a documented 75-tab enterprise platform
What Changed
Impact
✅ 75 documented SGAE platform tabs✅ Integrated finance, translation, legal, and backup workflows✅ Exportable reports and user-managed data💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.