guidefall.com Ads.txt file

<!DOCTYPE html>
<html lang="id">

<head>

<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>
MERDEKATOPUP — Tempat Top Up Game Termurah Indonesia
</title>
<meta name="description"
content="Merdeka Top Up merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY.">
<meta name="keywords"
content="">
<link rel="icon" type="image/x-icon" href="https://assets.merdekatopup.com/2025/08/ffdb7c2610db329835e5524a39d106a2.png">
<meta name="author" content="MERDEKATOPUP">
<meta name="theme-color"
content="#990000" />
<meta name="robots" content="index, follow">
<meta content="desktop" name="device">
<meta name="coverage" content="Worldwide">
<meta name="apple-mobile-web-app-title" content="MERDEKATOPUP — Tempat Top Up Game Termurah Indonesia">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta property="og:locale" content="id_id" />
<meta property="og:site_name" content="MERDEKATOPUP" />

<!-- Open Graph / Facebook -->

<meta property="og:type" content="website">
<meta property="og:url" content="https://merdekatopup.com/">
<meta property="og:title" content="MERDEKATOPUP — Tempat Top Up Game Termurah Indonesia">
<meta property="og:description"
content="MERDEKATOPUP - Merdeka Top Up merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY.">
<meta property="og:image"
content="">

<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://merdekatopup.com/" />
<meta property="twitter:title" content="MERDEKATOPUP — Tempat Top Up Game Termurah Indonesia" />
<meta property="twitter:description"
content="MERDEKATOPUP - Merdeka Top Up merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY." />
<meta property="twitter:image"
content="" />
<link rel="canonical" href="https://merdekatopup.com/" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.tokovoucher.net" crossorigin>
<link rel="dns-prefetch" href="//cdn.tokovoucher.net">
<link rel="dns-prefetch" href="//assets.tokovoucher.id">

<!-- Resource hints for performance -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta http-equiv="Content-Security-Policy"
content="img-src * data: blob:; default-src 'self' 'unsafe-inline' 'unsafe-eval' *;">

<!-- Preload critical resources -->
<link rel="modulepreload" href="/js/vue.js?v=2.7.3">
<link rel="modulepreload" href="/js/axios.js?v=1.0">

<link rel="preload"
href="https://fonts.googleapis.com/css2?family=Plus Jakarta Sans:wght@300;400;500&display=swap"
as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Plus Jakarta Sans:wght@300;400;500&display=swap">
</noscript>

<link rel="preload" href="/css/app.css?v=1.2.8" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="/css/app.css?v=1.2.8">
</noscript>

<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" as="style"
onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">
</noscript>

<link rel="manifest" href="/manifest.json">
<script src="/js/vue.js?v=2.7.3"></script>
<script src="/js/axios.js?v=1.0"></script>
<style>
#app {
background: url('/img/bg.png') repeat center center fixed;
}

html {
scroll-behavior: smooth !important;
}

.t-title {
font-family: 'Plus Jakarta Sans',
"Arial",
sans-serif;
}

.text-dot {
text-overflow: ellipsis;
overflow: hidden;
min-width: 240px;
height: 1.2em;
white-space: nowrap;
}

.VueCarousel-pagination {
display: none;
}

/* Critical CSS for LCP optimization */
.rounded-xl {
border-radius: 0.75rem;
}

.w-full {
width: 100%;
}

.h-40 {
height: 10rem;
}

.object-cover {
object-fit: cover;
}

.mb-4 {
margin-bottom: 1rem;
}

.max-w-\[600px\] {
max-width: 600px;
}

.mx-auto {
margin-left: auto;
margin-right: auto;
}

.grid {
display: grid;
}

.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (min-width: 768px) {
.md\:grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
}

.gap-3 {
gap: 0.75rem;
}

.p-2 {
padding: 0.5rem;
}

.bg-white {
background-color: white;
}

.border {
border-width: 1px;
}

.rounded-lg {
border-radius: 0.5rem;
}
</style>
<style>
:root {
--primary-color: #990000;
--secondary-color: #0000FF;
--background-color: #ffffff;
}
</style>
<script>
window.dataLayer = window.dataLayer || [];
</script>
<meta name='google-site-verification' content='rAN7uFAGHTnkC5svyaQGlekXwZ8h8jUNP1WIhIrpp44' /> <!-- Google tag (gtag.js) --> <script async src='https://www.googletagmanager.com/gtag/js?id=AW-17491800793'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-17491800793'); </script>

</head>

<body>
<div id="loader"
class="fixed z-[9999] top-0 transition-opacity duration-1000 ease-out left-0 w-screen h-screen bg-primary flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
style="margin: auto; background: none; display: block; shape-rendering: auto;" width="60px" height="60px"
viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<circle cx="50" cy="50" fill="none"
stroke="#0000FF"
stroke-width="5" r="35" stroke-dasharray="164.93361431346415 56.97787143782138">
<animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="1s"
values="0 50 50;360 50 50" keyTimes="0;1"></animateTransform>
</circle>
<!-- [ldio] generated by https://loading.io/ -->
</svg>
</div>

<div id="pwa" class="max-w-[600px] bg-slate-100 mx-auto p-3 hidden">
<div class="flex justify-between items-center">
<div class="flex items-center">
<button onclick="closePwa()">
<i class="iconify ph--x-light text-gray-700"></i>
</button>
<img src="https://assets.merdekatopup.com/2025/08/ffdb7c2610db329835e5524a39d106a2.png" class="h-6 rounded-md ml-6"
alt="">

<span class="text-xs text-primary ml-2 w-full">Akses
MERDEKATOPUP
dari
Homescreen </span>
</div>

<button id="installApp" class="bg-primary text-white rounded-md text-sm px-6 py-2">
Install
</button>

</div>
</div>
<script>
window.addEventListener('beforeinstallprompt', (e) => {
const el = document.getElementById("pwa")
el.classList.remove('hidden')
deferredPrompt = e;
});

// const installApp = document.getElementById('installApp');

// installApp.addEventListener('click', async () => {
// if (deferredPrompt !== null) {
// deferredPrompt.prompt();
// const {
// outcome
// } = await deferredPrompt.userChoice;
// if (outcome === 'accepted') {
// deferredPrompt = null;
// }
// }
// });

function closePwa() {
const el = document.getElementById("pwa")
el.classList.add('hidden')
}
</script>
<div id="app">
<div class="max-w-[600px] mx-auto bg-bg">
<div class="">
<div class="h-24 flex bg-primary justify-between">
<div class="h-max w-max p-4 z-[999]">
<div>
<span class="cursor-pointer text-white text-xl iconify tabler--menu-2" onclick="openMenu()"></span>
</div>
</div>
<div class="w-full flex justify-center items-center">
<a href="/">
<img class="h-7 -mt-8 " src=" https://assets.merdekatopup.com/2025/08/c866540ddfd566649c3077ea9885d180.png" alt="">
</a>
</div>

<div class="h-max w-max p-4 z-[999]">
<a href="/search">
<span class="iconify tabler--search cursor-pointer text-white text-xl"></span>
</a>
</div>

</div>

<div id="menu" class="w-0 top-0 text-white t-title fixed h-screen z-[9999] ease-in-out duration-300 ">
<div id="menu_wrapper" class="w-0 min-h-screen bg-primary ease-in-out duration-300 ">
<div id="menu_content" class="hidden">
<div class="text-right px-4 py-2 mb-6">
<button onclick="closeMenu()">

<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 18L18 6m0 12L6 6"/></svg>
</button>

</div>
<div>
<ul class="text-sm">
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/" class="flex gap-x-2 items-center">
<i class="fas fa-home"></i>
<p>Beranda</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/blog" class="flex gap-x-2 items-center">
<i class="fas fa-newspaper"></i>
<p>Promo &amp; News</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/pricelist" class="flex gap-x-2 items-center">
<i class="fas fa-tags"></i>
<p>Pricelist</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/claim-voucher" class="flex gap-x-2 items-center">
<i class="fas fa-gift"></i>
<p>Klaim Voucher</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/tukar-poin" class="flex gap-x-2 items-center">
<i class="fas fa-coins"></i>
<p>Tukar Poin</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/contact-us" class="flex gap-x-2 items-center">
<i class="fas fa-coins"></i>
<p>Contact Us</p>
</a>
</li>
<li class="px-4 py-2 mb-2 flex gap-x-2 items-center cursor-pointer">
<a href="/blog/about-us" class="flex gap-x-2 items-center">
<i class="fas fa-info-circle"></i>
<p>About Us</p>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>

<div v-if="contact && contact.length" class="fixed bottom-20 z-[110] left-0 w-full">
<div id="chat"
class="max-w-[600px] hidden animate__animated animate__fadeInUp mb-3 mx-auto justify-end pr-4 pl-24">
<div class="rounded-lg bg-white w-full shadow">
<div class="p-4 bg-primary rounded-t-lg text-white mb-2 relative">
<span class="font-bold text-lg"> Butuh Bantuan ?</span>
<span class="text-sm block">Silahkan klik link di bawah ini </span>
<div onclick="openChat()" class="absolute top-3 right-3 cursor-pointer">
<i class="iconify tabler--xbox-x text-white text-2xl"></i>
</div>

</div>
<div v-for="(c, i) in contact" :key="i">
<a class="flex justify-start my-2 border-b" :href="c.url" target="new_tab">
<div class="px-2 py-1 bg-white text-sm rounded-md flex items-center gap-2">
<img :src="c.icon.replaceAll('assets.tokovoucher.id', 'cdn.tokovoucher.net') + '?auto_optimize=medium'"
class="h-8 w-auto rounded-md" alt="">
<span class="t-title">
{{ c.username }}
</span>
</div>
</a>
</div>
</div>
</div>
<div class="max-w-[600px] mx-auto flex justify-end pr-4">
<div onclick="openChat()" class="cursor-pointer">
<svg height="40" viewBox="0 0 778 333" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="778" height="333" rx="117"
fill="#990000" />
<path
d="M319 209V140H350.7C360.9 140 366 145.1 366 155.3V162.2C366 164.467 365.333 166.4 364 168L360.5 172.2L364.7 175.7C366.9 177.5 368 180.167 368 183.7V193.7C368 203.9 362.9 209 352.7 209H319ZM327.4 201.4H352.8C357.333 201.4 359.6 199.133 359.6 194.6V183.4C359.6 178.867 357.333 176.6 352.8 176.6H327.4V201.4ZM327.4 169H350.8C355.333 169 357.6 166.733 357.6 162.2V154.4C357.6 149.867 355.333 147.6 350.8 147.6H327.4V169Z"
fill="white" />
<path
d="M394.655 209C384.589 209 379.555 203.967 379.555 193.9C379.555 183.833 384.589 178.8 394.655 178.8H412.955V171C412.955 166.333 410.622 164 405.955 164H384.555V160L388.555 157H405.955C415.955 157 420.955 162 420.955 172V209H394.655ZM387.555 195C387.555 199.667 389.889 202 394.555 202H412.955V185.8H394.555C389.889 185.8 387.555 188.133 387.555 192.8V195Z"
fill="white" />
<path
d="M436.555 209V157H464.555C474.555 157 479.555 162 479.555 172V209H471.555V171C471.555 166.333 469.221 164 464.555 164H444.555V209H436.555Z"
fill="white" />
<path
d="M494.748 194V140H502.748V157H521.748V164H502.748V195C502.748 199.667 505.082 202 509.748 202H522.748V206L518.748 209H509.748C499.748 209 494.748 204 494.748 194Z"
fill="white" />
<path
d="M533.909 194V157H541.909V195C541.909 199.667 544.242 202 548.909 202H568.909V157H576.909V209H548.909C538.909 209 533.909 204 533.909 194Z"
fill="white" />
<path
d="M605.202 209C595.136 209 590.102 203.967 590.102 193.9C590.102 183.833 595.136 178.8 605.202 178.8H623.502V171C623.502 166.333 621.169 164 616.502 164H595.102V160L599.102 157H616.502C626.502 157 631.502 162 631.502 172V209H605.202ZM598.102 195C598.102 199.667 600.436 202 605.102 202H623.502V185.8H605.102C600.436 185.8 598.102 188.133 598.102 192.8V195Z"
fill="white" />
<path
d="M647.102 209V157H675.102C685.102 157 690.102 162 690.102 172V209H682.102V171C682.102 166.333 679.768 164 675.102 164H655.102V209H647.102Z"
fill="white" />
<path
d="M169.348 73.4825C149.954 76.5141 133.048 86.8136 121.815 102.438C118.667 106.829 113.809 116.391 112.215 121.404C110.816 125.679 109.106 133.88 109.106 136.096V137.65L105.919 137.883C101.566 138.233 98.6512 139.01 94.7257 140.954C92.1217 142.197 90.7614 143.247 88.0797 145.89C85.2425 148.688 84.4263 149.815 82.9494 152.924C80.151 158.677 79.879 160.736 80.0344 174.767C80.1899 186.31 80.1899 186.621 81.2393 189.653C83.4935 196.415 88.3517 202.284 94.1816 205.277C99.4285 208.036 102.421 208.658 109.883 208.697C115.674 208.697 116.452 208.619 117.851 207.881C118.706 207.414 119.755 206.482 120.183 205.743C120.921 204.461 120.96 203.528 121.193 170.025C121.388 136.834 121.427 135.513 122.204 132.015C126.44 113.437 137.634 99.0563 153.996 91.1277C161.847 87.3188 168.26 85.7642 177.121 85.4144C186.061 85.1035 192.784 86.1528 200.635 89.2232C216.57 95.4029 229.435 108.928 234.798 125.213C235.381 126.962 236.237 130.032 236.703 132.015C237.48 135.513 237.519 136.834 237.713 170.025C237.985 208.308 237.791 205.938 240.589 207.687C241.794 208.425 242.494 208.503 248.712 208.503C254.193 208.503 256.097 208.347 258.507 207.725C267.485 205.432 274.636 198.708 277.668 189.653C278.717 186.621 278.717 186.31 278.872 174.767C279.028 160.736 278.756 158.677 275.957 152.924C274.481 149.815 273.664 148.688 270.827 145.89C265.775 140.876 260.411 138.466 253.065 137.922L249.917 137.65L249.645 134.968C249.334 131.354 248.052 125.563 246.653 121.249C245.02 116.313 240.162 106.752 237.092 102.399C233.827 97.8515 226.209 90.0783 221.817 86.8524C212.761 80.2063 202.617 75.7756 191.891 73.8323C186.76 72.8996 174.323 72.7052 169.348 73.4825Z"
fill="white" />
<path
d="M106.502 217.558C106.852 220.123 108.873 225.681 110.622 228.946C116.257 239.401 125.857 246.941 137.4 249.972C140.315 250.75 142.492 251.022 146.806 251.138L152.48 251.333V247.796L152.519 244.259H148.594C143.696 244.259 140.509 243.754 136.428 242.355C125.818 238.701 117.229 229.723 114.158 219.035L113.226 215.887H109.766H106.269L106.502 217.558Z"
fill="white" />
<path
d="M168.571 235.825C157.611 238.896 156.25 254.015 166.472 259.067C168.338 260 168.532 260 179.453 260C190.258 260 190.569 259.961 192.357 259.106C199.819 255.414 201.801 245.736 196.321 239.634C195.311 238.507 193.639 237.225 192.357 236.603L190.141 235.514L180.231 235.437C173.196 235.359 169.815 235.476 168.571 235.825Z"
fill="white" />
</svg>
</div>
</div>
</div>
</div>
<style>
.w-600 {
width: 600px !important;
}
</style>
<script>
function openMenu() {
const menu = document.getElementById('menu')
const menuContent = document.getElementById('menu_content')
const menuWrapper = document.getElementById('menu_wrapper')
menu.classList.add('w-600')
menuWrapper.classList.remove('w-0')
menuWrapper.classList.add('w-48')
setTimeout((e) => {
menuContent.classList.remove('hidden')
}, 200)
}

function closeMenu() {
const menuContent = document.getElementById('menu_content')
const menu = document.getElementById('menu')
const menuWrapper = document.getElementById('menu_wrapper')
menuWrapper.classList.add('w-0')
menu.classList.add('w-0')
menu.classList.remove('w-600')
menuContent.classList.add('hidden')
menuWrapper.classList.remove('w-48')
}

function openChat() {
const chat = document.getElementById('chat')
if (chat.classList.contains('hidden')) {
chat.classList.remove('hidden')
} else {
chat.classList.add('hidden')
}
}

function openChatMobile() {
const chat = document.getElementById('chatMobile')
if (chat.classList.contains('hidden')) {
chat.classList.remove('hidden')
} else {
chat.classList.add('hidden')
}
}
</script>
<div class="p-4 gap-2 bg-bg rounded-t-xl -mt-10 animate__animated animate__fadeInUp">
<div class="mb-3" v-if="config.style && config.style==='2'">
<div
class="p-2 bg-gray-100 rounded-lg flex gap-2 w-full overflow-scroll cursor-pointer animate__animated animate__fadeInUp">
<a v-for="(op,os) in operator" :key="os"
class="px-4 py-2 flex-shrink-0 rounded-lg bg-white t-title text-xs" :href="`#tp${os}`"
v-show="op.produk_kategori && op.produk_kategori.status===1">
{{ op.produk_kategori && op.produk_kategori.name ? op.produk_kategori.name : 'Unknown' }}
</a>
</div>
</div>

<div v-if="slider.length && !loadingSlider" class="mb-4 rounded-xl">
<carousel :autoplay="true" :per-page="1" :autoplayHoverPause="true"
:loop="true" :paginationEnabled="true" :paginationSize="10">
<slide v-for="(item, index) in slider" :key="index">
<a :href="item.url" target="_blank" rel="noopener noreferrer">
<img :src="item.image.replaceAll('assets.tokovoucher.id', 'cdn.tokovoucher.net') +
'?auto_optimize=medium&format=webp'"
class="rounded-xl w-full" :alt="item.title || 'MERDEKATOPUP — Tempat Top Up Game Termurah Indonesia'"
:loading="index === 0 ? 'eager' : 'lazy'"
:fetchpriority="index === 0 ? 'high' : 'low'" decoding="async" />
</a>
</slide>
</carousel>
</div>

<div v-if="loadingSlider" class="mb-4 bg-gray-300 animate animate-pulse h-40 rounded-xl">
</div>

<div v-if="!loadingFlashSale && flashSale && flashSale.length" class="mb-2">
<div class="flex justify-between gap-2 pb-1">
<h1 class="font-bold text-sm flex items-center text-white ">
<span class="iconify-color meteocons--lightning-bolt-fill text-xl"></span>
<span class="text-yellow-500 font-semibold">
FLASH SALE
</span>
</h1>
<div>
<vue-countdown :time="(moment(expiredFlash).unix() * 1000) - (moment().unix() * 1000)"
v-slot="{ days,hours, minutes, seconds }">
<div class="flex gap-1 text-xs items-center">
<div class="px-1 text-red-600 border border-red-200 rounded-lg relative">
{{ days || '0' }}
</div>
<div class="px-1 text-red-600 border border-red-200 rounded-lg relative">
{{ hours > 9 ? hours : '0' + hours }}
</div>
<div class="px-1 text-red-600 border border-red-200 rounded-lg relative">
{{ minutes > 9 ? minutes : '0' + minutes }}
</div>
<div class="px-1 text-red-600 border border-red-200 rounded-lg relative">
{{ seconds > 9 ? seconds : '0' + seconds }}
</div>
</div>
</vue-countdown>
</div>
</div>
<div class=" gap-2 w-full cursor-pointer animate__animated animate__fadeInUp">
<carousel :autoplay="true" :per-page="2" :autoplayHoverPause="true"
:loop="true">
<slide v-for="(v,i) in flashSale" :id="'f' + i">
<div class="bg-white rounded-xl shadow h-28 p-3 border mr-2 flex items-center">
<a
:href="`/id-id/${v.produk.jenis_slug}?code=${v.produk.kode_produk}`">
<div class="flex gap-2 items-center">
<img :src="v.img + '?auto_optimize=medium&format=webp'" class="h-9 rounded-lg "
alt="" loading="lazy" decoding="async">
<div>
<span class="text-red-600 font-semibold text-sm ">{{ v.price | rupiah }}
</span>
<span
class="text-sm line-through text-gray-500 block">{{ v.price_coret | rupiah }}
</span>
</div>
</div>
<h2 class="text-sm mt-1 text-gray-500">
{{ v.produk ? v.produk.name : '' }}
</h2>
</a>
</div>
</slide>
</carousel>
</div>
</div>

<div v-if="lastBuy.length" class="mb-2 animate__animated animate__fadeInUp">
<div class="text-primary text-sm font-semibold flex">
BELI LAGI
</div>
<div class="flex items-center gap-2 py-2 overflow-scroll">
<a v-for="(lb,ix) in lastBuy" :key="ix"
:href="`/id-id/${lb.jenis && lb.jenis.length > 0 ? lb.jenis[lb.jenis.length-1].slug : ''}`"
class="bg-white rounded-lg border p-2 flex items-center gap-2 flex-shrink-0">
<img :src="lb.last_buy && lb.last_buy.operator_icon ? lb.last_buy.operator_icon +
'?auto_optimize=medium&format=webp' : ''"
class="h-8 w-8 rounded-lg" alt="" loading="lazy" decoding="async">
<div>
<h1 class="font-semibold text-gray-600">{{ lb.last_buy && lb.last_buy.operator_name ? lb.last_buy.operator_name : 'Unknown' }}</h1>
</div>
</a>
</div>
</div>

<div v-if="loadingProduk"
class="grid grid-cols-3 md:grid-cols-4 gap-3 w-full mt-4 animate__animated animate__fadeInUp">
<div v-for="ox in 12" :key="ox" class="bg-gray-300 animate animate-pulse h-32 rounded-xl">
</div>
</div>

<div v-if="!loadingProduk">
<div v-if="!config.style || config.style==='1' || config.style==='undefined'">
<div
class="flex w-full gap-2 border-b pb-3 border-gray-50 overflow-scroll cursor-pointer animate__animated animate__fadeInUp">
<div v-for="(op,i) in operator" :key="i"
class="px-4 py-2 flex-shrink-0 border t-title rounded-xl text-xs"
:class="selectedOperator && op.produk_kategori && selectedOperator.produk_kategori && op
.produk_kategori && op.produk_kategori.id && selectedOperator.produk_kategori.id && op
.produk_kategori.id === selectedOperator.produk_kategori.id ?
'text-primary bg-gray-100 border-primary' : 'text-gray-600 bg-white'"
@click.prevent="selectedOperator=op"
v-show="op.produk_kategori && op.produk_kategori.status===1">
{{ op.produk_kategori && op.produk_kategori.name ? op.produk_kategori.name : 'Unknown' }}
</div>
</div>
<div v-if="selectedOperator && selectedOperator.produk_operator_jenis"
class="grid grid-cols-3 md:grid-cols-4 gap-3 w-full mt-4 transition-all duration-500">
<div v-for="(pr, id) in selectedOperator.produk_operator_jenis.slice(0,limitProduct)"
:key="id" @click.prevent="showJenis(pr)"
class="cursor-pointer bg-white rounded-xl border p-2"
v-show="pr.produk_operator && pr.produk_operator.status===1 && pr.produk_operator.is_hide_for_web!==1">
<div>
<img :src="pr.produk_operator && pr.produk_operator.icon_operator ? pr.produk_operator
.icon_operator.replaceAll('assets.tokovoucher.id',
'cdn.tokovoucher.net') + '?auto_optimize=medium&format=webp' : ''"
class="rounded-lg w-full mx-auto" alt=""
:loading="id > 5 ? 'lazy' : 'eager'" :fetchpriority="id < 6 ? 'high' : 'low'"
decoding="async">
</div>
<div class="mt-2">
<h1 class="text-center text-xs w-full t-title">
{{ pr.produk_operator && pr.produk_operator.name_operator ? pr.produk_operator.name_operator : 'Unknown' }}
</h1>
</div>
</div>
</div>
<div v-if="selectedOperator && selectedOperator.produk_operator_jenis && selectedOperator.produk_operator_jenis.length>12&&limitProduct!==999&&!selectedOperator.produk_operator_jenis.length<12"
class="w-full mt-3 col-span-4 flex justify-center">
<button @click.prevent="showMoreProducts()"
class="text-xs bg-white w-[200px] border border-primary text-primary px-3 py-1 rounded-md mx-auto hover:bg-primary hover:text-white transition-all duration-300 transform hover:scale-105">
<span v-if="isLoadingMore" class="inline-block animate-spin mr-1">↻</span>
Lebih Banyak
</button>
</div>
</div>

<div v-if="config.style && config.style==='2'">
<div v-for="(op,ox) in operator" :key="ox" class="mb-6" :id="'tp' + ox">
<h1 class="font-bold text-lg mb-3 mt-8">{{ op.produk_kategori && op.produk_kategori.name ? op.produk_kategori.name : 'Unknown' }}</h1>
<div class="grid grid-cols-3 gap-3" v-if="op.produk_operator_jenis">
<div v-for="(pr, ix) in op.produk_operator_jenis.slice(0, idx==ox?99:6)"
:key="ix" @click.prevent="showJenis(pr)"
class="cursor-pointer rounded-2xl relative"
v-show="pr.produk_operator && pr.produk_operator.status===1 && pr.produk_operator.is_hide_for_web!==1">
<img :src="pr.produk_operator && pr.produk_operator.icon_operator ? pr.produk_operator
.icon_operator : ''"
class="object-cover h-42 md:h-56 w-full rounded-2xl"
:loading="ix > 3 ? 'lazy' : ''" />
<div
class="bg-gradient-to-t from-black absolute bottom-0 w-full h-42 md:h-56 hover:opacity-0 opacity-95 rounded-2xl transition-opacity duration-300">
</div>
<div
class="text-center md:text-sm text-xs font-medium w-full px-3 text-white absolute bottom-0 h-12 flex items-center justify-center">
{{ pr.produk_operator && pr.produk_operator.name_operator ? pr.produk_operator.name_operator : 'Unknown' }}
</div>
</div>
</div>
<button v-if="op.produk_operator_jenis && op.produk_operator_jenis.length>6&&idx!==ox"
@click.prevent="idx=ox" class="text-xs text-center w-full mt-4 text-primary">Tampilkan lebih
banyak
</button>
</div>
</div>
</div>

<div class="rounded-lg bg-white shadow-md mb-4 mt-6 animate__animated animate__fadeInUp">
<div class="py-2 border-b p-3 flex justify-between items-center">
<h3 class="t-title">
Promo & News
</h3>

</div>
<div>
<div v-if="!blog.length" class="py-6 text-center">
Belum ada data
</div>
<div class="grid grid-cols-1 md:grid-cols-2 p-4 gap-3 cursor-pointer ">
<a v-for="(b,i) in blog.slice(0,2)" :key="i" class="gap-3"
:href="`/blog/${b.slug}`">
<div>
<img :src="b.thumbnail + '?auto_optimize=medium&format=webp'"
class="rounded-lg h-40 w-full" alt="" loading="lazy" decoding="async"
onerror="this.onerror=null;this.src='https://upload.wikimedia.org/wikipedia/commons/1/14/No_Image_Available.jpg';">
<h3 class="mt-3 t-title font-bold text-sm">{{ b.title.length > 35 ?
b.title.substring(0, 35) + " ..." : b.title }}</h3>
</div>
</a>
</div>
</div>
<div v-if="!blog.length" class="flex items-center py-4 justify-center">
<a href='/blog' class="text-sm text-primary ">Lihat lebih banyak</a>
</div>
</div>
<div class="rounded-lg bg-white shadow-md mb-4 mt-6 animate__animated animate__fadeInUp">
<div class="border-b px-3 py-6 flex justify-between bg-primary rounded-t-lg items-center">
<h3 class="t-title w-full font-bold text-center text-white">
MERDEKATOPUP
<br />
Tempat Top Up Game Termurah Indonesia
</h3>
</div>
<div>
<div>
<ul class="p-6">
<li class="mb-6">
<div class="flex items-center gap-4">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40"
viewBox="0 0 24 24">
<path
fill="#990000"
d="M23.334 11.96c-.713-.726-.872-1.829-.393-2.727.342-.64.366-1.401.064-2.062-.301-.66-.893-1.142-1.601-1.302-.991-.225-1.722-1.067-1.803-2.081-.059-.723-.451-1.378-1.062-1.77-.609-.393-1.367-.478-2.05-.229-.956.347-2.026.032-2.642-.776-.44-.576-1.124-.915-1.85-.915-.725 0-1.409.339-1.849.915-.613.809-1.683 1.124-2.639.777-.682-.248-1.44-.163-2.05.229-.61.392-1.003 1.047-1.061 1.77-.082 1.014-.812 1.857-1.803 2.081-.708.16-1.3.642-1.601 1.302s-.277 1.422.065 2.061c.479.897.32 2.001-.392 2.727-.509.517-.747 1.242-.644 1.96s.536 1.347 1.17 1.7c.888.495 1.352 1.51 1.144 2.505-.147.71.044 1.448.519 1.996.476.549 1.18.844 1.902.798 1.016-.063 1.953.54 2.317 1.489.259.678.82 1.195 1.517 1.399.695.204 1.447.072 2.031-.357.819-.603 1.936-.603 2.754 0 .584.43 1.336.562 2.031.357.697-.204 1.258-.722 1.518-1.399.363-.949 1.301-1.553 2.316-1.489.724.046 1.427-.249 1.902-.798.475-.548.667-1.286.519-1.996-.207-.995.256-2.01 1.145-2.505.633-.354 1.065-.982 1.169-1.7s-.135-1.443-.643-1.96zm-12.584 5.43l-4.5-4.364 1.857-1.857 2.643 2.506 5.643-5.784 1.857 1.857-7.5 7.642z" />
</svg>
</div>
<div>
<h3 class="text-lg t-title">Mitra Resmi</h3>
<p class=" text-gray-600 text-sm">Bekerja langsung dengan produsen terkemuka
dunia,
kami
menawarkan
Topup Game Murah dan Cepat</p>
</div>
</div>
</li>
<li class="mb-6">
<div class="flex items-center gap-4">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40"
viewBox="0 0 24 24">
<path
fill="#990000"
d="M0 8v-2c0-1.104.896-2 2-2h20c1.104 0 2 .896 2 2v2h-24zm24 3v7c0 1.104-.896 2-2 2h-20c-1.104 0-2-.896-2-2v-7h24zm-15 5h-6v1h6v-1zm3-2h-9v1h9v-1zm9 0h-3v1h3v-1z" />
</svg>
</div>
<div>
<h3 class="text-lg t-title">Transaksi Mudah & Terpercaya</h3>
<p class=" text-gray-600 text-sm">Kami menyediakan pembayaran yang mudah dan
aman dengan
puluhan metode pembayaran.</p>
</div>
</div>
</li>
<li class="mb-6">
<div class="flex items-center gap-4">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40"
viewBox="0 0 24 24">
<path
fill="#990000"
d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm-2 19l1.5-5h-4.5l7-9-1.5 5h4.5l-7 9z" />
</svg>
</div>
<div>
<h3 class="text-lg t-title">Pengiriman Instan</h3>
<p class=" text-gray-600 text-sm">Item akan dikirimkan secara instan ke akun
Anda dimanapun dan kapanpun.</p>
</div>
</div>
</li>
<li class="mb-6">
<div class="flex items-center gap-4">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40"
viewBox="0 0 24 24">
<path
fill="#990000"
d="M23.598 8.915c-.317-1.404-.366-2.48-.416-3.371-.167-2.951-1.58-4.774-4.89-4.828-.909-.015-1.997-.036-3.521-.396-.896-.21-1.827-.32-2.77-.32-1.053 0-2.12.137-3.167.423-1.286.262-2.244.281-3.058.294-3.31.053-4.723 1.876-4.89 4.827-.041.735-.082 1.597-.273 2.664-.403 1.208-.613 2.493-.613 3.795 0 1.265.199 2.546.613 3.79.191 1.066.232 1.928.273 2.663.167 2.951 1.58 4.774 4.89 4.827.814.013 1.773.032 3.061.295 1.033.281 2.099.422 3.163.422.932 0 1.862-.108 2.771-.322 1.524-.36 2.612-.38 3.521-.395 3.311-.053 4.724-1.876 4.89-4.827.05-.889.099-1.961.414-3.36.269-1.012.404-2.053.404-3.095 0-1.038-.134-2.077-.402-3.086zm-1.414-3.314l.006.106c-1.012-1.636-2.401-3.006-4.053-3.994l.139.003c2.553.042 3.759 1.24 3.908 3.885zm-3.817 3.502l2.608-1.485c.65 1.325 1.025 2.809 1.025 4.382s-.375 3.057-1.025 4.383l-2.608-1.485c.403-.884.633-1.863.633-2.898s-.23-2.014-.633-2.897zm-6.367 12.897c-1.579 0-3.068-.378-4.397-1.032l1.485-2.608c.888.407 1.872.64 2.912.64s2.024-.233 2.912-.64l1.485 2.608c-1.329.654-2.818 1.032-4.397 1.032zm0-5c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5zm0-15c1.579 0 3.068.378 4.397 1.032l-1.485 2.608c-.888-.407-1.872-.64-2.912-.64s-2.024.233-2.912.64l-1.485-2.608c1.329-.654 2.818-1.032 4.397-1.032zm-6.208-.283l.066-.001c-1.606.961-2.967 2.283-3.971 3.86.156-2.627 1.361-3.818 3.905-3.859zm-.159 13.18l-2.608 1.485c-.65-1.325-1.025-2.809-1.025-4.382s.375-3.057 1.025-4.383l2.608 1.485c-.403.884-.633 1.863-.633 2.898s.23 2.014.633 2.897zm-3.744 3.536c1.005 1.578 2.374 2.892 3.981 3.852l-.078-.002c-2.541-.041-3.746-1.23-3.903-3.85zm16.387 3.85l-.15.003c1.654-.987 3.051-2.351 4.064-3.987l-.006.101c-.149 2.644-1.355 3.842-3.908 3.883z" />
</svg>
</div>
<div>
<h3 class="text-lg t-title">Bantuan Pelanggan</h3>
<p class=" text-gray-600 text-sm">Kami menyediakan bantuan pelanggan yang ramah
dan
responsif.</p>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="rounded-lg p-3 bg-white shadow-md mb-4 mt-6 animate__animated animate__fadeInUp">
<h1 class="t-title font-bold w-full text-center text-primary">Pembayaran Tersedia</h1>
<div v-if="!loadingPayment" class="py-6">
<carousel :autoplay="true" :per-page="3" :autoplayHoverPause="true"
:loop="true">
<slide v-for="(p,i) in payment" :id="'x' + i">
<img loading="lazy" :src="p.icon + '?auto_optimize=medium&format=webp'"
class="h-8 w-auto mx-auto mb-1" alt="" decoding="async">
<p class="text-xs text-center">
{{ p.name }}
</p>

</slide>
</carousel>

</div>
</div>

<article class="p-3">
<p><a href='https://merdekatopup.com/'>Merdeka Top Up</a> merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY.</p><p>&nbsp;</p><p><a href='https://merdekatopup.com/id-id/mobile-legends/'><span style='color:hsl(0, 0%, 100%);'>top up ml</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/free-fire/'><span style='color:hsl(0, 0%, 100%);'>top up ff</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/pubg-mobile/'><span style='color:hsl(0, 0%, 100%);'>top up pubg</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/roblox/'><span style='color:hsl(0, 0%, 100%);'>top up roblox</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/valorant/'><span style='color:hsl(0, 0%, 100%);'>top up valorant</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/blood-strike/'><span style='color:hsl(0, 0%, 100%);'>top up blood strike</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/call-of-duty-mobile/'><span style='color:hsl(0, 0%, 100%);'>top up codm</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/hago/'><span style='color:hsl(0, 0%, 100%);'>top up hago</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/super-sus/'><span style='color:hsl(0, 0%, 100%);'>top up super sus</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/fc-mobile/'><span style='color:hsl(0, 0%, 100%);'>top up fc mobile</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/bigo-live/'><span style='color:hsl(0, 0%, 100%);'>top up bigo</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/lita/'><span style='color:hsl(0, 0%, 100%);'>top up lita</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/honor-of-kings/'><span style='color:hsl(0, 0%, 100%);'>top up hok</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/magic-chess-go-go/'><span style='color:hsl(0, 0%, 100%);'>top up magic chess go go</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/blog/solusi-gampang-www-xnxx-com-sent-an-invalid-response-err-ssl-protocol-error/'><span style='color:hsl(0, 0%, 100%);'>www.xnxx.com sent an invalid response. err_ssl_protocol_error</span></a><span style='color:hsl(0, 0%, 100%);'> </span><a href='https://merdekatopup.com/id-id/mobile-legends-bang-bang'><span style='color:hsl(0, 0%, 100%);'>Top Up ML</span></a></p><p>&nbsp;</p>
</article>
</div>
</div>

<div v-if="showPopSheet && showPop" class="bottom-sheet-wrapper">
<div class="bottom-sheet-backdrop fixed inset-0 z-[999998] bg-black/50 backdrop-blur-sm transition-all duration-300"
:class="{ 'opacity-100': showPopSheet, 'opacity-0': !showPopSheet }" @click.prevent="closeBottomSheet()"
aria-hidden="true">
</div>

<div class="fixed bottom-0 left-0 z-[999999] w-full transition-transform duration-300 ease-out"
:class="{ 'translate-y-0': showPopSheet, 'translate-y-full': !showPopSheet }">
<div class="bg-white max-w-[640px] relative mx-auto rounded-t-2xl w-full shadow-2xl">
<div class="flex justify-center pt-3 pb-2">
<div class="w-12 h-1 bg-gray-300 rounded-full"></div>
</div>

<div class="px-4 pb-2">
<h3 class="text-lg font-semibold text-gray-800 text-center">Pilih Produk</h3>
</div>

<div
class="px-4 pb-6 max-h-[70vh] overflow-y-auto scrollbar-thin scrollbar-thumb-gray-300 scrollbar-track-gray-100">
<div class="space-y-2">
<a :href="'/id-id/' + pr.slug"
v-for="(pr, i) in selectedJenis" :key="i"
class="flex items-center gap-4 p-3 bg-gray-50 hover:bg-gray-100 rounded-xl transition-all duration-200 transform hover:scale-[1.02] active:scale-[0.98]"
v-show="pr.status===1 && pr.is_hide_for_web!==1" @click="closeBottomSheet()">
<div class="flex-shrink-0">
<img :src="pr.icon + '?auto_optimize=medium&format=webp'" alt=""
class="w-12 h-12 rounded-xl object-cover shadow-sm" loading="lazy"
decoding="async">
</div>
<div class="flex-1 min-w-0">
<p class="font-medium text-gray-800 text-sm truncate">
{{ pr.name || '' }}
</p>
<p class="text-xs text-gray-500 mt-1">Tap untuk memilih</p>
</div>
<div class="flex-shrink-0">
<svg class="w-5 h-5 text-gray-400" fill="none" stroke="currentColor"
viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 5l7 7-7 7"></path>
</svg>
</div>
</a>
</div>
</div>

<button @click.prevent="closeBottomSheet()"
class="absolute top-4 right-4 w-8 h-8 bg-gray-100 hover:bg-gray-200 rounded-full flex items-center justify-center transition-all duration-200 hover:scale-110 active:scale-95">
<svg class="w-4 h-4 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M6 18L18 6m0 12L6 6"></path>
</svg>
</button>
</div>
</div>
</div>

<div v-if="showModal" id="modal" class="fixed z-[999] inset-0 overflow-y-auto"
aria-labelledby="dialog-1-title" role="dialog" aria-modal="true">
<div class="flex items-center justify-center h-screen pt-4 px-4 pb-20 text-center">
<div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" aria-hidden="true"
@click.prevent="showModal=false"></div>
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
<div
class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transdiv transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full animate__animated animate__fadeInUp">
<div class="rounded-lg min-w-[300px]">
<div class="grid grid-cols-3 md:grid-cols-4 gap-4 p-3 mb-4 max-h-96 overflow-y-auto">
<a :href="'/id-id/' + pr
.slug"
v-for="(pr, i) in selectedJenis" :key="i"
class="bg-white rounded-lg shadow-md hover:shadow-lg transition-shadow"
v-show="pr.status===1 && pr.is_hide_for_web!==1" @click="showModal=false">
<img :src="pr.icon + '?auto_optimize=medium'" alt=""
class="rounded-t-lg mb-2 w-full object-cover">
<p class="t-title text-xs p-2">
{{ pr.name || '' }}
</p>
</a>
</div>
<div class="bg-gray-50 px-4 py-3 flex justify-end mx-auto gap-3">
<button @click.prevent="showModal=false" type="button"
class="w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50">
Tutup
</button>
</div>
</div>
</div>
</div>
</div>
<div v-if="showPopup" id="modal" class="fixed z-[999] inset-0 overflow-y-auto"
@click.prevent="showPopup=false" aria-labelledby="dialog-1-title" role="dialog" aria-modal="true">
<div class="flex items-center justify-center h-screen pt-4 px-4 pb-20 text-center">
<div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" aria-hidden="true"></div>
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">&#8203;</span>
<div @click.prevent="showPopup=false"
class="inline-block cursor-pointer align-bottom overflow-hidden transdiv transition-all animate__animated animate__fadeInUp">
<img :src="promo.image + '?auto_optimize=medium'" class="max-h-[80vh] rounded-2xl" alt="">
<div class="flex justify-end">
<button @click.prevent="showPopup=false"
class="bg-primary z-[999] px-3 py-2 text-xs mt-4 flex justify-end items-center gap-2 text-white rounded-full">
<i class="iconify ph--x-light"></i> Tutup
</button>
</div>
</div>
</div>
</div>

<script src="/js/vue-countdown.js?v=1.0"></script>
<script src="/js/moment.js?v=1.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-carousel@0.18.0/dist/vue-carousel.min.js"></script>

<script>
var app = new Vue({
el: "#app",
components: {
VueCountdown,
'carousel': VueCarousel.Carousel,
'slide': VueCarousel.Slide
},
filters: {
rupiah(v) {
if (v > 0) {
const val = (v / 1).toFixed(0).replace('.', ',')
return "Rp" + val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".")
} else {
return "Rp0"
}
}
},
data() {
return {
showPopSheet: false,
operator: [{
produk_kategori: {
id: "",
},
produk_operator_jenis: [{
produk_operator: {
icon_operator: "",
name_operator: "",
}
}]
}],
slider: [],
blog: [],
limitProduct: 12,
isLoadingMore: false,
selectedOperator: {},
selectedJenis: {},
showModal: false,
showPopup: false,
showPop: false,
limit: 30,
last_id: 0,
contact: [],
promo: [],
payment: [],
loadingPayment: false,
flashSale: [],
expiredFlash: "",
config: {},
idx: '12345',
currentIndex: 0,
flashIndex: 0,
loadingSlider: false,
loadingFlashSale: false,
loadingProduk: false,
lastBuy: [],
};
},
mounted() {
const config = {"background_color":"#ffffff","bg_home":"undefined","bg_splash":"undefined","body":"","brand":"MERDEKATOPUP","description":"Tempat Top Up Game Termurah Indonesia","domain":"https:\/\/merdekatopup.com","domain_api":"https:\/\/api.merdekatopup.com","favicon":"https:\/\/assets.merdekatopup.com\/2025\/08\/ffdb7c2610db329835e5524a39d106a2.png","font_title":"Plus Jakarta Sans","footer_note":"undefined","head":"<meta name='google-site-verification' content='rAN7uFAGHTnkC5svyaQGlekXwZ8h8jUNP1WIhIrpp44' \/> <!-- Google tag (gtag.js) --> <script async src='https:\/\/www.googletagmanager.com\/gtag\/js?id=AW-17491800793'><\/script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-17491800793'); <\/script>","home_article":"<p><a href='https:\/\/merdekatopup.com\/'>Merdeka Top Up<\/a> merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY.<\/p><p>&nbsp;<\/p><p><a href='https:\/\/merdekatopup.com\/id-id\/mobile-legends\/'><span style='color:hsl(0, 0%, 100%);'>top up ml<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/free-fire\/'><span style='color:hsl(0, 0%, 100%);'>top up ff<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/pubg-mobile\/'><span style='color:hsl(0, 0%, 100%);'>top up pubg<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/roblox\/'><span style='color:hsl(0, 0%, 100%);'>top up roblox<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/valorant\/'><span style='color:hsl(0, 0%, 100%);'>top up valorant<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/blood-strike\/'><span style='color:hsl(0, 0%, 100%);'>top up blood strike<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/call-of-duty-mobile\/'><span style='color:hsl(0, 0%, 100%);'>top up codm<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/hago\/'><span style='color:hsl(0, 0%, 100%);'>top up hago<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/super-sus\/'><span style='color:hsl(0, 0%, 100%);'>top up super sus<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/fc-mobile\/'><span style='color:hsl(0, 0%, 100%);'>top up fc mobile<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/bigo-live\/'><span style='color:hsl(0, 0%, 100%);'>top up bigo<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/lita\/'><span style='color:hsl(0, 0%, 100%);'>top up lita<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/honor-of-kings\/'><span style='color:hsl(0, 0%, 100%);'>top up hok<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/magic-chess-go-go\/'><span style='color:hsl(0, 0%, 100%);'>top up magic chess go go<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/blog\/solusi-gampang-www-xnxx-com-sent-an-invalid-response-err-ssl-protocol-error\/'><span style='color:hsl(0, 0%, 100%);'>www.xnxx.com sent an invalid response. err_ssl_protocol_error<\/span><\/a><span style='color:hsl(0, 0%, 100%);'> <\/span><a href='https:\/\/merdekatopup.com\/id-id\/mobile-legends-bang-bang'><span style='color:hsl(0, 0%, 100%);'>Top Up ML<\/span><\/a><\/p><p>&nbsp;<\/p>","image_contact":"undefined","is_deposit":"true","is_review":"true","is_trx_not_use_email":"false","link_detail_trx":"undefined","logo":"https:\/\/assets.merdekatopup.com\/2025\/08\/c866540ddfd566649c3077ea9885d180.png","meta_description":"Merdeka Top Up merupakan tempat beli top up murah dan legal. Dapatkan harga diskon via Pulsa Tekomsel, DANA, GOPAY.","meta_keyword":"","point_review":"false","primary_color":"#990000","promo_detail_trx":"undefined","secondary_color":"#0000FF","slug":"id-id","style":"1","text_promo":"","title":"MERDEKATOPUP","menus":[{"icon":"home","label":"Beranda","link":"\/"},{"icon":"newspaper","label":"Promo & News","link":"\/blog"},{"icon":"tags","label":"Pricelist","link":"\/pricelist"},{"icon":"gift","label":"Klaim Voucher","link":"\/claim-voucher"},{"icon":"coins","label":"Tukar Poin","link":"\/tukar-poin"},{"icon":"coins","label":"Contact Us","link":"\/contact-us"},{"icon":"info-circle","label":"About Us","link":"\/blog\/about-us"}]}
this.config = config
this.contact = [{"icon":"https:\/\/assets.merdekatopup.com\/2025\/08\/48dc267e962dcc27167ceae2b00ed762.png","name":"WhatsApp","url":"https:\/\/api.whatsapp.com\/send\/?phone=6282189883851","username":"WhatsApp"},{"icon":"https:\/\/assets.merdekatopup.com\/2025\/08\/3a5b90166d07df0e69c8deffbdb8bb55.png","name":"Instagram","url":"https:\/\/www.instagram.com\/merdekatopupcom\/","username":"Instagram"},{"icon":"https:\/\/assets.merdekatopup.com\/2025\/08\/ef291a095817fd102de55d6aa653f0a0.png","name":"Facebook","url":"https:\/\/www.facebook.com\/mrdekatopup\/","username":"Facebook"},{"icon":"https:\/\/assets.merdekatopup.com\/2025\/08\/7c7d031640986ea0df1778f48929e480.png","name":"Tiktok","url":"https:\/\/www.tiktok.com\/@merdekatopupcom\/","username":"Tiktok"},{"icon":"https:\/\/assets.merdekatopup.com\/2025\/08\/d7e18d581c1d3810a64d3f8868ad0683.png","name":"YouTube","url":"https:\/\/www.youtube.com\/@merdekatopup","username":"YouTube"}]

// Priority loading for LCP optimization
this.getSlider().then(() => {
this.getProduk()
})

// Secondary loading
setTimeout(() => {
Promise.all([
this.getBlog(),
this.getPromo(),
this.getPayment(),
this.getFlashSale(),
this.setAffilate()
])
}, 100);

setInterval(() => {
this.next()
}, 3500);
setTimeout(() => {
this.autoScroll()
this.showPop = true
}, 1000);
},
methods: {
setAffilate() {
const old = localStorage.getItem('ref')
if (window.location.search && !old) {
const urlParams = new URLSearchParams(window.location.search);
const par = urlParams.get('a');
if (par) {
localStorage.setItem('ref', JSON.stringify({
ref: par,
expired: moment().add(30, 'days').unix()
}))
}
}
},
autoScroll() {
const f = document.getElementById("flashscroll")
if (f) {
const scrollSpeed = 1;
setInterval(() => {
if (f.scrollLeft >= (f.scrollWidth - f.clientWidth)) {
f.scrollLeft = 0;
} else {
f.scrollLeft += scrollSpeed;
}
}, 20);
}
},
scrollTo(id) {
const myDiv = document.getElementById(id);
myDiv.scrollIntoView();
},
prev() {
this.currentIndex = (this.currentIndex - 1 + this.slider.length) % this.slider.length;
},
next() {
this.currentIndex = (this.currentIndex + 1) % this.slider.length;
},
async getPromo() {
try {
const res = await axios.get('/get-promo')
const promo = res.data
if (promo.status) {
const promoArr = JSON.parse(promo.data)
let jsonPromo = []
promoArr.forEach(el => {
const js = `"${el.key}":"${el.data}"`
jsonPromo.push(js)
})
const json = '{' + jsonPromo.join() + '}'
this.promo = JSON.parse(json)

if (this.promo.is_aktif === 'true') {
this.showPopup = true
}
}
} catch (error) {}
},
async getProduk() {
try {
this.loadingProduk = true
const res = await axios.get('/produk')
this.loadingProduk = false

if (res.data.status) {
const filteredOperator = res.data.data.filter(item => {
if (!item.produk_kategori) {
return false;
}

if (!item.produk_operator_jenis) {
return false;
}

if (Array.isArray(item.produk_operator_jenis) && item
.produk_operator_jenis.length === 0) {
return false;
}

if (Array.isArray(item.produk_operator_jenis)) {
const validJenis = item.produk_operator_jenis.filter(jenis => {
return jenis.produk_jenis !== null && jenis
.produk_jenis !== undefined;
});

if (validJenis.length === 0) {
return false;
}

item.produk_operator_jenis = validJenis;
}

return true;
});

this.operator = filteredOperator
console.log(this.operator);

if (this.operator.length > 0) {
this.selectedOperator = this.operator[0]
}
}
} catch (error) {
console.log(error);
this.loadingProduk = false;
}
},
async getSlider() {
try {
this.loadingSlider = true
const res = await axios.get('/slider')
this.loadingSlider = false
if (res.data.status) {
this.slider = res.data.data
}
} catch (error) {
console.log(error);
}
},
async getFlashSale() {
try {
this.flashSale = []
this.loadingFlashSale = true
const res = await axios.get('/flash-sale')
this.loadingFlashSale = false
if (res.data.status && res.data.data !== null) {
this.flashSale = res.data.data.data
this.expiredFlash = res.data.data.expired
}
} catch (error) {
this.loadingFlashSale = false

console.log(error);
}
},
async getPayment() {
try {
this.loadingPayment = true
const res = await axios.get('/get-payment')
this.loadingPayment = false
if (res.data.status) {
const payment = res.data.data
payment.forEach(el => {
if (el.metode) {
el.metode.forEach(mt => {
this.payment.push(mt)
})
}
});
}
} catch (error) {
console.log(error);
}
},
showJenis(val) {
const filtered = []
if (val && val.produk_jenis && val.produk_jenis !== null) {
val.produk_jenis.forEach(el => {
if (el.status === 1) {
filtered.push(el)
}
})
}
if (filtered && filtered.length === 1) {
window.location =
'/id-id/' +
filtered[0].slug
} else if (filtered && filtered.length > 0) {
this.showPopSheet = true
this.selectedJenis = filtered
document.body.style.overflow = 'hidden'
}
},
closeBottomSheet() {
this.showPopSheet = false
document.body.style.overflow = 'auto'
},
async getBlog() {
try {
this.loadingBlog = true
const res = await axios.post('/blog', {
limit: this.limit,
last_id: this.last_id,
slug: ""
})
this.loadingBlog = false
if (res.data.status) {
this.blog = res.data.data.data
}
} catch (error) {
console.log(error);
}
},
async getLastBuy() {
try {
const res = await axios.get('/last-buy')
if (res.data && res.data.status) {
if (res.data.data && res.data.data.data) {
this.lastBuy = res.data.data.data.map(item => {
if (!item.jenis) item.jenis = [];
if (!item.last_buy) item.last_buy = {};
return item;
});
} else {
this.lastBuy = []
}
} else {
this.lastBuy = []
}
} catch (error) {
this.lastBuy = []
console.log(error);
}
},
openLink(link) {
window.location = link
},
showMoreProducts() {
this.isLoadingMore = true;
setTimeout(() => {
const currentLimit = this.limitProduct;
const totalItems = this.selectedOperator.produk_operator_jenis.length;
const targetLimit = Math.min(totalItems, 999);

this.limitProduct = targetLimit;
this.isLoadingMore = false;

this.$nextTick(() => {
const lastVisible = document.querySelector(
'.grid-cols-3 > div:nth-child(' + (currentLimit + 1) + ')');
if (lastVisible) {
lastVisible.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
}, 300);
}
}
});
</script>
<style scoped>
.slide-enter-active,
.slide-leave-active {
transition: transform 0.5s ease;
}

.slide-enter,
.slide-leave-to {
transform: translateX(100%);
}

.flash-parent {
scroll-snap-type: y mandatory;
scroll-behavior: smooth;
}

.flash-child {
scroll-snap-align: start;
}

@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}

to {
opacity: 1;
transform: translateY(0);
}
}

.animate__fadeIn {
animation: fadeIn 0.5s ease-out forwards;
}

.bottom-sheet-wrapper {
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.bottom-sheet-backdrop {
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}

.scrollbar-thin {
scrollbar-width: thin;
}

.scrollbar-thin::-webkit-scrollbar {
width: 4px;
}

.scrollbar-thin::-webkit-scrollbar-track {
background: #f1f5f9;
border-radius: 2px;
}

.scrollbar-thin::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 2px;
}

.scrollbar-thin::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}

.hover\:scale-\[1\.02\]:hover {
transform: scale(1.02);
}

.active\:scale-\[0\.98\]:active {
transform: scale(0.98);
}

.hover\:scale-110:hover {
transform: scale(1.1);
}

.active\:scale-95:active {
transform: scale(0.95);
}

@supports not (backdrop-filter: blur(4px)) {
.bottom-sheet-backdrop {
background: rgba(0, 0, 0, 0.6);
}
}
</style>
</div>
<div class=" py-3 max-w-[600px] mx-auto border-t pt-3">




<div class="p-3">
<h2 class="text-bold text-sm t-title">Contact Us</h2>
<div class="grid grid-cols-1 gap-2 mt-2">
<a href="https://api.whatsapp.com/send/?phone=6282189883851" target="new_tab"
class="px-2 py-1 bg-white text-sm rounded-md border flex items-center gap-1">
<img src="https://assets.merdekatopup.com/2025/08/48dc267e962dcc27167ceae2b00ed762.png?auto_optimize=medium"
class="h-6 w-auto rounded-md" alt="">
<span>
WhatsApp
</span>
</a>
<a href="https://www.instagram.com/merdekatopupcom/" target="new_tab"
class="px-2 py-1 bg-white text-sm rounded-md border flex items-center gap-1">
<img src="https://assets.merdekatopup.com/2025/08/3a5b90166d07df0e69c8deffbdb8bb55.png?auto_optimize=medium"
class="h-6 w-auto rounded-md" alt="">
<span>
Instagram
</span>
</a>
<a href="https://www.facebook.com/mrdekatopup/" target="new_tab"
class="px-2 py-1 bg-white text-sm rounded-md border flex items-center gap-1">
<img src="https://assets.merdekatopup.com/2025/08/ef291a095817fd102de55d6aa653f0a0.png?auto_optimize=medium"
class="h-6 w-auto rounded-md" alt="">
<span>
Facebook
</span>
</a>
<a href="https://www.tiktok.com/@merdekatopupcom/" target="new_tab"
class="px-2 py-1 bg-white text-sm rounded-md border flex items-center gap-1">
<img src="https://assets.merdekatopup.com/2025/08/7c7d031640986ea0df1778f48929e480.png?auto_optimize=medium"
class="h-6 w-auto rounded-md" alt="">
<span>
Tiktok
</span>
</a>
<a href="https://www.youtube.com/@merdekatopup" target="new_tab"
class="px-2 py-1 bg-white text-sm rounded-md border flex items-center gap-1">
<img src="https://assets.merdekatopup.com/2025/08/d7e18d581c1d3810a64d3f8868ad0683.png?auto_optimize=medium"
class="h-6 w-auto rounded-md" alt="">
<span>
YouTube
</span>
</a>
</div>
</div>

<p class=" w-full text-center px-3 text-sm mt-6">© <span id="years"></span> <a href="/"
class="">MERDEKATOPUP</a>. All
Rights Reserved</p>



<p class="w-full px-3 text-xs text-center">All other trademarks belong to their respective owners</p>
<p class="w-full px-3 text-xs text-center">Versi 1.2.0</p>
<div class="h-40">
</div>
</div>

<script>


const loader = document.getElementById("loader")
if(loader) {
setTimeout(() => {
loader.classList.add("hidden")
}, 500)
}
const y = document.getElementById('years')
if(y) {
y.innerHTML = new Date().getFullYear()
}
// if (!navigator.serviceWorker.controller) {
// navigator.serviceWorker.register("/sw.js").then(function(reg) {
// console.log("Service worker has been registered for scope: " + reg.scope);
// });
// }
</script>
<script src="https://merdekatopup.com/sw.js"></script>
</body>

</html>
<div class="fixed bottom-0 z-40 w-full">
<div class="bg-white w-full h-14 items-center max-w-[600px] mx-auto">
<div>
<ul class="flex justify-between items-center">
<li id='home' class="text-center flex items-center w-full h-14 justify-center">
<a href='/'>
<span class="text-xl iconify streamline--home-4-solid"></span>
<span class="text-[10px] block">Home</span>
</a>
</li>
<li class="text-center flex items-center h-14 w-full justify-center">
<a id='transaksi' href='/transaksi'>
<span class="text-xl iconify streamline--receipt-subtract-solid"></span>
<span class="text-[10px] block">Riwayat</span>
</a>
</li>
<li class="text-center flex items-center h-14 w-full justify-center">
<a id='deposit' href='/deposit'>
<span class="text-xl iconify streamline--wallet-solid"></span>

<span class="text-[10px] block">Deposit</span>
</a>
</li>
<li class="text-center flex items-center h-14 w-full justify-center">
<a id='profil' href='/profile'>
<span class="text-xl iconify streamline--user-circle-single-solid"></span>
<span class="text-[10px] block">Profil</span>
</a>
</li>
</ul>
</div>
</div>
</div>

<script>
const path = window.location.pathname
const home = document.getElementById('home')
const trx = document.getElementById('transaksi')
const akun = document.getElementById('profil')
const deposit = document.getElementById('deposit')

trx.classList.remove('text-secondary')
akun.classList.remove('text-secondary')
home.classList.remove('text-secondary')
deposit.classList.remove('text-secondary')

trx.classList.add('text-gray-400')
akun.classList.add('text-gray-400')
home.classList.add('text-gray-400')
deposit.classList.add('text-gray-400')

if (path === '/') {
home.classList.add('text-secondary')
home.classList.add('border-t-2')
home.classList.remove('text-gray-400')
}
console.log(path);
if (path === '/transaksi') {
trx.classList.add('text-secondary')
trx.classList.add('border-t')
trx.classList.remove('text-gray-400')

}
if (path === '/profile') {
akun.classList.add('text-secondary')
akun.classList.add('border-t')
akun.classList.remove('text-gray-400')
}
if (path === '/deposit') {
deposit.classList.add('text-secondary')
deposit.classList.add('border-t')
deposit.classList.remove('text-gray-400')
}
</script>

Ads.Txt Alerts - A trading name of Red Volcano Limited

Waterloo Buildings, Second Floor Rear, 53 London Road, Southampton, Hampshire, United Kingdom, SO15 2AD

© Red Volcano 2020. All Rights Reserved.