<!DOCTYPE html>
<html lang="vi">
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
  
  <!-- SEO Meta Tags -->
  <title>Bio Hungggmhung - Duy Hưng | Profile & Social Links</title>
  <meta content="Bio hungggmhung - Duy Hưng từ Hà Nội. Profile cá nhân, social media links, music player. Sống sai đel sợ ai, sống đúng đel sợ súng" name="description"/>
  <meta content="bio hungggmhung, duy hưng, hungggmhung bio, profile hungggmhung, social links, bio link, hà nội, facebook hungggmhung, tiktok hungggmhung, discord hungggmhung" name="keywords"/>
  <meta content="Duy Hưng - Hungggmhung" name="author"/>
  <meta content="index, follow" name="robots"/>
  <meta content="Vietnamese" name="language"/>
  <meta content="Vietnam" name="geo.country"/>
  <meta content="Hanoi" name="geo.placename"/>
  
  <!-- Canonical URL -->
  <link href="https://domains.lol/hungggmhung" rel="canonical"/>
  
  <!-- Open Graph / Facebook -->
  <meta content="website" property="og:type"/>
  <meta content="https://domains.lol/hungggmhung" property="og:url"/>
  <meta content="Bio Hungggmhung - Duy Hưng | Profile & Social Links" property="og:title"/>
  <meta content="Bio hungggmhung - Duy Hưng từ Hà Nội. Profile cá nhân, social media links, music player. Sống sai đel sợ ai, sống đúng đel sợ súng" property="og:description"/>
  <meta content="https://r2.zyo.lol/avatar_0923ec973ac3.webp" property="og:image"/>
  <meta content="Duy Hưng - Hungggmhung" property="og:site_name"/>
  <meta content="vi_VN" property="og:locale"/>
  
  <!-- Twitter Card -->
  <meta content="summary_large_image" name="twitter:card"/>
  <meta content="https://domains.lol/hungggmhung" name="twitter:url"/>
  <meta content="Bio Hungggmhung - Duy Hưng" name="twitter:title"/>
  <meta content="Bio hungggmhung - Duy Hưng từ Hà Nội. Profile cá nhân, social media links, music player" name="twitter:description"/>
  <meta content="https://r2.zyo.lol/avatar_0923ec973ac3.webp" name="twitter:image"/>
  
  <!-- JSON-LD Structured Data for SEO -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Person",
    "name": "Duy Hưng",
    "alternateName": "Hungggmhung",
    "description": "Bio hungggmhung - Profile cá nhân Duy Hưng từ Hà Nội",
    "url": "https://domains.lol/hungggmhung",
    "image": "https://r2.zyo.lol/avatar_0923ec973ac3.webp",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Hà Nội",
      "addressCountry": "VN"
    },
    "sameAs": [
      "https://www.facebook.com/share/1HPKSSawz2/",
      "https://tiktok.com/@oggylovestory21",
      "https://discord.com/dkvor1sa"
    ],
    "jobTitle": "Content Creator",
    "knowsAbout": ["Social Media", "Music", "Technology"]
  }
  </script>
  
  <link as="image" fetchpriority="high" href="https://r2.zyo.lol/background_8d02e2906b1e.jpg" rel="preload"/>
  <link href="template/css/bio.css" rel="stylesheet"/>
  <link href="template/css/font-fix.css" rel="stylesheet"/>
  <link href="https://fonts.googleapis.com" rel="preconnect"/>
  <link href="template/css/fontawesome-all.min.css" rel="stylesheet"/>
  <link href="template/css/tippy_scale.css" rel="stylesheet"/>
  <link href="template/css/nouislider.min.css" rel="stylesheet"/>
  <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap" rel="stylesheet"/>
  <link href="template/css/iziToast.min.css" rel="stylesheet"/>
  <link href="template/img/logo.ico" rel="icon" type="image/x-icon"/>
  <meta content="#1a1a1a" name="theme-color"/>
  <!-- font 4 bio -->
  <style>
   @font-face {
                        font-family: 'Array';
                        src: url('https://zyo.lol/template/font/Array/Array.woff2') format('woff2'),
                            url('https://zyo.lol/template/font/Array/Array.woff') format('woff');
                        font-weight: 400;
                        font-display: swap;
                        font-style: normal;
                    }
  </style>
 </head>
 <script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  function zyoLoadAnalytics(){
    if (window.zyoAnalyticsLoaded) {
      return;
    }
    window.zyoAnalyticsLoaded = true;
    const script = document.createElement('script');
    script.async = true;
    script.src = 'https://www.googletagmanager.com/gtag/js?id=G-S74ZMJ88EG';
    document.head.appendChild(script);
    gtag('js', new Date());
    gtag('config', 'G-S74ZMJ88EG');
  }
  ['pointerdown', 'keydown', 'scroll', 'touchstart'].forEach((eventName) => {
    window.addEventListener(eventName, zyoLoadAnalytics, { once: true, passive: true });
  });
  window.addEventListener('load', () => {
    setTimeout(zyoLoadAnalytics, 3500);
  });
 </script>
 <div class="overlay" id="overlay">
 </div>
 <div class="popup_content_container" closeoutsidepopup="" id="link_preview_container" style="display: none;">
  <h1 class="header">
   Do you want to visit this site?
  </h1>
  <div class="input_content">
   <div class="center">
    <input class="input" id="link_preview" name="alias" readonly="" type="text"/>
   </div>
   <div class="flex">
    <button class="close-button" onclick="closePopup('link_preview_container')">
     Go Back
    </button>
    <a class="button_submit" id="link_preview_button" style="width: 100px">
     Visit Site
    </a>
   </div>
  </div>
 </div>
 <style>
  * {
        font-family: 'Array', sans-serif;        font-optical-sizing: auto;
        font-weight: 400;
        font-style: normal;
        font-variation-settings: "slnt" 0;
        box-sizing: border-box;
                cursor: url("https://r2.zyo.lol/cursor_url_5b724720547e.cur") 16 16, auto !important;
            }
 </style>
 <style>
  .tippy-content {
                                    font-size: 16.5px;
                        }
 </style>
 <script>
  const fontSize = 2.5;
                const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, .tippy-content');
    textElements.forEach(el => {
        const currentSize = window.getComputedStyle(el).fontSize;
        const newSize = parseFloat(currentSize) + fontSize ?? 0;
        el.style.fontSize = `${newSize}px`;
    });
 </script>
 <style>
  ::selection {
        background: #ffffff;
                color: #010101;
            }
 </style>
 <style>
  .bio-container {
                    --iconGlow: drop-shadow(#ffffff 1px 0 7px);
                --badgeColor: #ffffff;
                    --badgeGlow: drop-shadow(#ffffff 1px 0 7px);
                            --audioControlColor: #ffffff ;
            --audioControlRgba05: rgba(255, 255, 255, 0.5);
                            --avatarRadius: 50%;
            }
 </style>
 <div class="background" id="background" style="background: url(https://r2.zyo.lol/background_8d02e2906b1e.jpg)">
 </div>
 <audio crossorigin="anonymous" id="audio" loop="">
  <source playsinline="" src="https://r2.zyo.lol/audioLink_499bbacef71b.mp3"/>
 </audio>
 <script>
  window.zyoAudioLyricsEnabled = false;
    window.zyoAudioLyricsRequired = false;
    window.zyoAudioLyricsVisibleSlots = 3;
    window.zyoInitialAudioLyrics = {"source":"","track":"forya","synced":""};

    function zyoParseLrcText(text) {
        const decodeArea = document.createElement('textarea');
        decodeArea.innerHTML = String(text || '');
        const normalizedText = decodeArea.value
            .replace(/\\r\\n/g, '\n')
            .replace(/\\n/g, '\n')
            .replace(/\\r/g, '\n')
            .replace(/\r\n/g, '\n')
            .replace(/\r/g, '\n')
            .replace(/\s*(?=\[(?:(?:\d{1,2}:)?\d{1,2}:\d{2}(?:[.,]\d{1,3})?)\])/g, '\n')
            .trim();
        const lines = normalizedText.split(/\r?\n/);
        const rawEntries = [];

        function decodeLyric(value) {
            decodeArea.innerHTML = value;
            return decodeArea.value;
        }

        lines.forEach((line) => {
            const matches = [...line.matchAll(/\[(?:(\d{1,2}):)?(\d{1,2}):(\d{2})(?:[.,](\d{1,3}))?\]/g)];
            if (!matches.length) return;

            const lyric = decodeLyric(line.replace(/\[(?:(?:\d{1,2}:)?\d{1,2}:\d{2}(?:[.,]\d{1,3})?)\]/g, '').trim());
            if (!lyric) return;

            matches.forEach((match) => {
                const hours = Number(match[1] || 0);
                const minutes = Number(match[2] || 0);
                const seconds = Number(match[3] || 0);
                const fraction = Number(String(match[4] || '0').padEnd(3, '0').slice(0, 3)) / 1000;
                rawEntries.push({ time: (hours * 3600) + (minutes * 60) + seconds + fraction, text: lyric });
            });
        });

        return rawEntries
            .sort((a, b) => a.time - b.time);
    }

    function zyoSetCurrentAudioLyrics(track) {
        window.zyoCurrentAudioLyrics = zyoParseLrcText(track?.lyrics?.synced || track?.synced || '');
        window.zyoCurrentAudioLyricsActiveIndex = null;
        zyoRenderAudioLyricsDisplay();
        zyoUpdateAudioLyricsDisplay(0);
    }

    function zyoAudioLyricsSlotCount() {
        return Math.max(3, Number(window.zyoAudioLyricsVisibleSlots || 3));
    }

    function zyoRenderAudioLyricsDisplay() {
        const display = document.querySelector('[data-audio-lyrics-display]');
        const list = display?.querySelector('[data-lyrics-list]');
        if (!display || !list || !Array.isArray(window.zyoCurrentAudioLyrics)) return;

        const slotCount = zyoAudioLyricsSlotCount();
        list.innerHTML = '';
        const spacer = document.createElement('p');
        spacer.className = 'lyrics_line is-spacer';
        spacer.dataset.lyricsIndex = '-2';
        spacer.textContent = '\u00a0';
        list.appendChild(spacer);

        const intro = document.createElement('p');
        intro.className = 'lyrics_line is-symbol';
        intro.dataset.lyricsIndex = '-1';
        intro.textContent = '♪';
        list.appendChild(intro);

        window.zyoCurrentAudioLyrics.forEach((line, index) => {
            const item = document.createElement('p');
            item.className = 'lyrics_line';
            item.dataset.lyricsIndex = String(index);
            item.textContent = line.text;
            list.appendChild(item);
        });
        list.style.setProperty('--lyrics-visible-slots', String(slotCount));
    }

    function zyoUpdateAudioLyricsDisplay(currentTime) {
        if (!window.zyoAudioLyricsEnabled || !Array.isArray(window.zyoCurrentAudioLyrics)) return;

        const display = document.querySelector('[data-audio-lyrics-display]');
        if (!display) return;

        const lines = window.zyoCurrentAudioLyrics;
        let activeIndex = -1;
        if (lines[0]?.time <= currentTime + 0.08) {
            activeIndex = 0;
            for (let i = 0; i < lines.length; i++) {
                if (lines[i].time <= currentTime + 0.08) {
                    activeIndex = i;
                } else {
                    break;
                }
            }
        }

        display.hidden = false;
        const list = display.querySelector('[data-lyrics-list]');
        if (list) {
            const slotCount = zyoAudioLyricsSlotCount();
            if (list.children.length !== lines.length + 2) {
                zyoRenderAudioLyricsDisplay();
            }

            const activeLineIndex = activeIndex < 0 ? -1 : activeIndex;
            const activeDomIndex = activeLineIndex + 2;
            const activePosition = activeLineIndex < 0 ? 0 : Math.floor(slotCount / 2);
            const rowHeight = Number(getComputedStyle(display).getPropertyValue('--lyrics-row-height').replace('px', '')) || 24;
            const rowGap = Number(getComputedStyle(display).getPropertyValue('--lyrics-row-gap').replace('px', '')) || 8;
            const targetTop = Math.max(0, (activeDomIndex * (rowHeight + rowGap)) - (activePosition * (rowHeight + rowGap)));

            if (window.zyoCurrentAudioLyricsActiveIndex === activeIndex && list.style.transform === `translateY(-${targetTop}px)`) return;
            window.zyoCurrentAudioLyricsActiveIndex = activeIndex;

            list.querySelectorAll('.lyrics_line').forEach((line) => {
                const lineIndex = Number(line.dataset.lyricsIndex || 0);
                const isActive = lineIndex === activeLineIndex;
                line.classList.toggle('is-active', isActive);
                line.classList.toggle('is-near', !isActive);
                line.classList.toggle('is-hidden-spacer', lineIndex === -2);
            });
            list.style.transform = `translateY(-${targetTop}px)`;
            return;
        }

        const previous = display.querySelector('[data-lyrics-prev]');
        const current = display.querySelector('[data-lyrics-current]');
        const next = display.querySelector('[data-lyrics-next]');
        if (previous) previous.textContent = lines[activeIndex - 1]?.text || '';
        if (current) current.textContent = lines[activeIndex]?.text || '';
        if (next) next.textContent = lines[activeIndex + 1]?.text || '';
    }

    zyoSetCurrentAudioLyrics({ lyrics: window.zyoInitialAudioLyrics });
 </script>
 <script>
  function createSlider(sliderId, sliderValueId, unit) {
        var slider = document.getElementById(sliderId);
        var sliderInput = document.getElementById(sliderValueId);

        var startValue = sliderInput.value ? Number(sliderInput.value) : 0;

        noUiSlider.create(slider, {
            start: startValue,
            connect: [true, false],
            step: 1,
            range: {
                'min': 0,
                'max': 100
            },
            format: {
                to: function (value) {
                    return value + unit;
                },
                from: function (value) {
                    return Number(value.replace(unit, ''));
                }
            }
        });

        let isSliding = false;

        slider.noUiSlider.on('update', function (values, handle) {
            const valueInt = values[handle];
            sliderInput.value = valueInt.replace(unit, '');
        });
    }
 </script>
 <script src="template/js/iziToast.min.js" type="text/javascript">
 </script>
 <script src="template/js/main.js" type="text/javascript">
 </script>
 <body class="profile-body-1" style=" background: #000000">
  <div class="overlay_audio" onclick="hideOverlay()">
   <p class="text">
    Nhấp vô màn hình
   </p>
  </div>
  <div class="revealAudioLike" style="
            --audioLikeColor: #ffffff;
            --audioLikeRgba05: rgba(255, 255, 255, 0.5);
            --audioLikeRgba02: rgba(255, 255, 255, 0.2);
        ">
   <div class="audio_control" id="audio_control">
    <div class="">
     <svg class="volumeIcon" height="1em" id="volumeIcon" onclick="toggleActive(this);" style="cursor: pointer;" viewbox="0 0 48 48" width="1em" xmlns="http://www.w3.org/2000/svg">
      <defs>
       <mask id="volumeMedium">
        <g fill="none" stroke="#fff" stroke-width="4">
         <path d="M24 6v36c-7 0-12.201-9.16-12.201-9.16H6a2 2 0 0 1-2-2V17.01a2 2 0 0 1 2-2h5.799S17 6 24 6Z" fill="#555" stroke-linejoin="round">
         </path>
         <path d="M32 15a12 12 0 0 1 1.684 1.859A12.07 12.07 0 0 1 36 24c0 2.654-.846 5.107-2.278 7.09A12 12 0 0 1 32 33" stroke-linecap="round" stroke-linejoin="round">
         </path>
         <path d="M34.236 41.186C40.084 37.696 44 31.305 44 24c0-7.192-3.796-13.496-9.493-17.02" stroke-linecap="round">
         </path>
        </g>
       </mask>
      </defs>
      <path d="M0 0h48v48H0z" fill="currentColor" id="changeMask" mask="url(#volumeMedium)">
      </path>
     </svg>
    </div>
    <div class="slider-container">
     <div id="slider1">
     </div>
     <input id="sliderValue1" name="bgOpacity" readonly="" type="hidden" value="86"/>
    </div>
   </div>
   <label class="like_button" for="likeButton" onclick="toggleActive(this);">
    <input id="likeButton" name="likeStatus" style="display: none;" type="checkbox" value="1"/>
    <svg class="likeIcon" fill="currentColor" height="1em" viewbox="0 0 32 32" width="1em" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
     <path d="M23 3a8 8 0 0 0-7 4.13A8 8 0 0 0 9 3a8 8 0 0 0-8 8c0 11 12.857 18 15 18s15-7 15-18a8 8 0 0 0-8-8M9 7c-2.206 0-4 1.794-4 4a1 1 0 0 1-2 0c0-3.309 2.691-6 6-6a1 1 0 0 1 0 2">
     </path>
    </svg>
   </label>
  </div>
  <div class="bio-container" style="
        --nameColor: #ffffff;
        --nameColor25: rgba(255, 255, 255, 0.25);
        --descriptionColor: #929da6;
        --backgroundColor: rgba(26, 26, 26, 0);
        --iconColor: #ffffff;
        --backgroundBlur: 0px;
        --nameGlow: 0px 0px 16.5px #ffffff;
        --descriptionGlow: 0px 0px 16.5px #929da6;
        --discordBackground: rgba(26, 26, 26, 0);
        --discordBorder: rgba(26, 26, 26, 0.1);
        --discordDescription: rgba(255, 255, 255, 0.7);
                --borderRadius: 25px;
        --bioWidth: 730px;
        --bioBannerHeight: 200px;
        --bioBannerFadeStop: 100%;
    ">
   <div class="bio_content_container">
    <div class="content-container css_content_container reveal">
     <div class="bio_small_infomation">
      <div class="bio_infomation" data-tippy-content="Like">
       <svg class="likeIcon" fill="currentColor" height="1em" viewbox="0 0 32 32" width="1em" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
        <path d="M23 3a8 8 0 0 0-7 4.13A8 8 0 0 0 9 3a8 8 0 0 0-8 8c0 11 12.857 18 15 18s15-7 15-18a8 8 0 0 0-8-8M9 7c-2.206 0-4 1.794-4 4a1 1 0 0 1-2 0c0-3.309 2.691-6 6-6a1 1 0 0 1 0 2">
        </path>
       </svg>
       <p class="text" id="likeCount">
        2
       </p>
      </div>
      <div class="border">
      </div>
      <div class="bio_infomation" data-tippy-content="Profile Views">
       <svg height="1em" viewbox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg">
        <path d="M12 9a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3m0 8a5 5 0 0 1-5-5a5 5 0 0 1 5-5a5 5 0 0 1 5 5a5 5 0 0 1-5 5m0-12.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5" fill="currentColor">
        </path>
       </svg>
       <p class="text" id="viewCount">
        94
       </p>
      </div>
      <div class="border">
      </div>
      <div class="bio_infomation" data-tippy-content="Location">
       <svg fill="currentColor" height="1em" viewbox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg">
        <path clip-rule="evenodd" d="M12.574 21.819a1 1 0 0 1-1.149 0l-.002-.002-.006-.004-.018-.014a10 10 0 0 1-.305-.225A25 25 0 0 1 7.757 18.5C5.964 16.508 4 13.61 4 10.364c0-2.203.831-4.324 2.325-5.896C7.821 2.894 9.861 2 12 2s4.179.894 5.674 2.468C19.17 6.04 20 8.16 20 10.364c0 3.246-1.964 6.144-3.757 8.135a25 25 0 0 1-3.337 3.075 15 15 0 0 1-.305.225l-.018.014-.006.004h-.002zM9 10a3 3 0 1 1 6 0 3 3 0 0 1-6 0" fill-rule="evenodd">
        </path>
       </svg>
       <p class="text">
        Hà Nội
       </p>
      </div>
     </div>
     <div class="content">
      <div class="top cardLeft infoRow">
       <div class="img_container">
        <img alt="" class="img" src="https://r2.zyo.lol/avatar_0923ec973ac3.webp"/>
        <img class="img_effect" src="https://r2.zyo.lol/decoration/dark_roses_white.png" style=""/>
       </div>
       <div class="flex-column">
        <div class="flex">
         <p class="header" data-tippy-content="UID 36,517 " id="userName">
          Duy Hưng
         </p>
        </div>
        <p class="bio_description" id="bio_description">
         Sống sai đel sợ ai, sống đúng đel sợ súng
        </p>
        <div class="svg_container" style="">
         <button class="svg_item singleColor" onclick="copyTextFromParent(this)">
          <svg height="1em" id="facebookSvg" viewbox="2 2 20 19.95" width="1em" xmlns="http://www.w3.org/2000/svg">
           <path d="M22 12c0-5.52-4.48-10-10-10S2 6.48 2 12c0 4.84 3.44 8.87 8 9.8V15H8v-3h2V9.5C10 7.57 11.57 6 13.5 6H16v3h-2c-.55 0-1 .45-1 1v2h3v3h-3v6.95c5.05-.5 9-4.76 9-9.95" fill="currentColor">
           </path>
          </svg>
          <p class="svg_text" style="display: none">
           https://www.facebook.com/share/1HPKSSawz2/
          </p>
         </button>
         <button class="svg_item singleColor" onclick="copyTextFromParent(this)">
          <svg fill="Currentcolor" height="1em" id="tiktokSvg" viewbox="0 0 448 512" width="1em" xmlns="http://www.w3.org/2000/svg">
           <path d="M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z">
           </path>
          </svg>
          <p class="svg_text" style="display: none">
           tiktok.com/@oggylovestory21
          </p>
         </button>
         <a class="svg_item singleColor" href="https://discord.com/dkvor1sa" rel="noopener noreferrer" target="_blank">
          <svg fill="Currentcolor" height="1em" id="discordSvg" viewbox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg">
           <path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z">
           </path>
          </svg>
         </a>
        </div>
       </div>
      </div>
     </div>
    </div>
    <div class="audio_container css_content_container reveal" style="padding: 15px;">
     <div class="audio_main_content">
      <div id="audio_avatar_container">
       <img alt="Audio Image" class="audio_image" src="https://r2.zyo.lol/audioImage_2ac28ffffdfb.webp"/>
      </div>
      <div class="audio_content_container">
       <h1 class="name widget_marquee_container" data-widget-marquee="" id="musicName">
        <span class="widget_marquee_content">
         forya
        </span>
       </h1>
       <div class="flex">
        <span class="duration" id="currentTime">
         0:00
        </span>
        <div class="slideTrack" id="slideTrack">
        </div>
        <span class="duration" id="totalTime" style="margin-right: 8px">
         0:00
        </span>
        <button id="backward">
         <svg fill="currentColor" height="1em" viewbox="0 0 51.532 51.532" width="1em" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
          <path d="M6.631 1.963a6.63 6.63 0 0 1 6.631 6.631V23.81a4 4 0 0 1 1-.831l31.27-18.053a3.998 3.998 0 0 1 6 3.464v36.105a4 4 0 0 1-6 3.463l-31.27-18.053a4 4 0 0 1-1-.83v13.863a6.631 6.631 0 0 1-13.262 0V8.594a6.63 6.63 0 0 1 6.631-6.631">
          </path>
         </svg>
        </button>
        <button id="playPause">
         <svg aria-hidden="true" height="1em" role="img" viewbox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
          <path d="M15 16h-2V8h2m-4 8H9V8h2m1-6A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2" fill="currentColor">
          </path>
         </svg>
        </button>
        <button id="forward">
         <svg fill="currentColor" height="1em" style="transform: rotate(180deg)" viewbox="0 0 51.532 51.532" width="1em" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
          <path d="M6.631 1.963a6.63 6.63 0 0 1 6.631 6.631V23.81a4 4 0 0 1 1-.831l31.27-18.053a3.998 3.998 0 0 1 6 3.464v36.105a4 4 0 0 1-6 3.463l-31.27-18.053a4 4 0 0 1-1-.83v13.863a6.631 6.631 0 0 1-13.262 0V8.594a6.63 6.63 0 0 1 6.631-6.631">
          </path>
         </svg>
        </button>
       </div>
      </div>
     </div>
    </div>
   </div>
  </div>
  <script>
   // View Counter - IP-based PHP Version
   (function() {
       const viewCount = document.getElementById('viewCount');
       
       // Gọi API để lấy số views hiện tại
       fetch('/api/views.php')
           .then(response => response.json())
           .then(data => {
               viewCount.textContent = data.views || 94;
           })
           .catch(err => {
               console.error('Error loading views:', err);
               viewCount.textContent = '94';
           });
       
       // Gọi API để tăng view (chỉ +1 nếu IP chưa xem)
       fetch('/api/increment-view.php')
           .then(response => response.json())
           .then(data => {
               viewCount.textContent = data.views;
               if (data.already_viewed) {
                   console.log('IP đã xem:', data.ip);
               } else {
                   console.log('View mới từ IP:', data.ip);
               }
           })
           .catch(err => {
               console.error('Error incrementing view:', err);
           });
   })();
  </script>
  <script>
   (function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a2bc383abe409a98',t:'MTc4NjgzOTA2NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();
  </script>
 </body>
 <script src="template/js/popper.min.js">
 </script>
 <script src="template/js/tippy-bundle.umd.min.js">
 </script>
 <script src="template/js/nouislider.min.js" type="text/javascript">
 </script>
 <script>
  document.addEventListener('DOMContentLoaded', function() {
        // tooltip
        tippy('[data-tippy-content]', {
            theme: 'tooltip_container',
            arrow: false,
            allowHTML: true,
            maxWidth: '92vw',
            animation: 'scale',
            delay: [0, 150],
        });
    });
        function copyTextFromParent(parentElement) {
        const paragraph = parentElement.querySelector('p');

        if (paragraph) {
            const textToCopy = paragraph.textContent;

            const textarea = document.createElement('textarea');
            textarea.value = textToCopy;
            document.body.appendChild(textarea);

            textarea.select();
            document.execCommand('copy');

            document.body.removeChild(textarea);

            showSuccessPopup('Text copied ' + textToCopy);
        } else {
            showErrorPopup('Something went wrong!');
        }
    }
    function revealElements() {
        const reveals = document.querySelectorAll('.reveal');
        for (let i = 0; i < reveals.length; i++) {
            reveals[i].classList.add('active');
        }
    }
    const background = document.getElementById('background');
            background.innerHTML = `
            <div class="stars-drop" id="stars-drop-big"></div>
            <div class="stars-drop2" id="stars-drop-big2"></div>
            <div class="stars-drop3" id="stars-drop-big3"></div>
        `
        createStars('background', 'stars-drop-big', 700, '#ffffff');
        createStars('background', 'stars-drop-big2', 200, '#ffffff');
        createStars('background', 'stars-drop-big3', 100, '#ffffff');
 </script>
 <script>
  function adjustChildPosition() {
        const parent = document.querySelector('.css_content_container');
        const child = document.querySelector('.bio_small_infomation');
        const styles = window.getComputedStyle(parent);
        const borderRadius = parseFloat(styles.borderRadius);
        const bottom = 12 + 0.16 * (borderRadius - 25);
        const left = 15 + 0.16 * (borderRadius - 25);
        child.style.bottom = `${bottom}px`;
        child.style.left = `${left}px`;
    }
    adjustChildPosition();
 </script>
 <script>
  function revealAudioLike() {
        const revealsAudio = document.querySelector('.revealAudioLike');
        revealsAudio.classList.add('active');
    }
    revealAudioLike()
    
    // Like Button Handler - LocalStorage Only (No Backend Required)
    (function() {
        const STORAGE_KEY = 'hungggmhung_stats';
        const likeButton = document.querySelector('#likeButton');
        const likeCount = document.querySelector('#likeCount');
        
        function getStats() {
            const stored = localStorage.getItem(STORAGE_KEY);
            if (stored) {
                return JSON.parse(stored);
            }
            return { views: 94, likes: 2 };
        }
        
        function saveStats(stats) {
            localStorage.setItem(STORAGE_KEY, JSON.stringify(stats));
        }
        
        function formatNumber(number) {
            return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        }
        
        // Load stats
        const stats = getStats();
        
        // Kiểm tra trạng thái like từ localStorage
        const hasLiked = localStorage.getItem('hasLiked') === 'true';
        if (hasLiked) {
            likeButton.checked = true;
        }
        
        // Hiển thị số like
        likeCount.textContent = formatNumber(stats.likes);
        
        // Xử lý khi click like
        likeButton.addEventListener('change', function() {
            const isLiked = this.checked;
            const currentStats = getStats();
            
            if (isLiked) {
                currentStats.likes += 1;
            } else {
                currentStats.likes = Math.max(2, currentStats.likes - 1);
            }
            
            saveStats(currentStats);
            likeCount.textContent = formatNumber(currentStats.likes);
            localStorage.setItem('hasLiked', isLiked.toString());
        });
    })();
 </script>
 <script>
  function hideOverlay() {
        const overlay = document.querySelector('.overlay_audio');
        overlay.style.opacity = '0';
        setTimeout(() => {
            overlay.style.display = 'none';
        }, 300);
        revealElements();
                
                                                                audio.play();
                                        const playPauseButton = document.getElementById("playPause");
                const currentTimeDisplay = document.getElementById("currentTime");
                const totalTimeDisplay = document.getElementById("totalTime");
                function audioTrackSilder(sliderId) {
                    var slider = document.getElementById(sliderId);

                    noUiSlider.create(slider, {
                        start: 0,
                        connect: [true, false],
                        step: 0.1,
                        range: {
                            'min': 0,
                            'max': 100
                        },
                        format: {
                            to: function (value) {
                                return value;
                            },
                            from: function (value) {
                                return Number(value);
                            }
                        }
                    });

                    let isProgrammaticUpdate = false;

                    slider.noUiSlider.on('update', function (values, handle) {
                        if (isProgrammaticUpdate) {
                            return;
                        }
                        const valueInt = values[handle];
                        const seekTime = (valueInt / 100) * (audio.duration || 0);
                        audio.currentTime = seekTime;
                    });

                    return {
                        instance: slider.noUiSlider,
                        set(value) {
                            isProgrammaticUpdate = true;
                            slider.noUiSlider.set(value);
                            isProgrammaticUpdate = false;
                        }
                    };
                }
                const sliderInstance = audioTrackSilder('slideTrack');
                function formatTime(seconds) {
                    const mins = Math.floor(seconds / 60);
                    const secs = Math.floor(seconds % 60);
                    return `${mins}:${secs < 10 ? "0" + secs : secs}`;
                }
                function updateTrack() {
                    sliderInstance.set((audio.currentTime / audio.duration) * 100 || 0);
                    currentTimeDisplay.textContent = formatTime(audio.currentTime);
                }
                playPauseButton.addEventListener("click", () => {
                    if (audio.paused) {
                        audio.play();
                        playPauseButton.innerHTML = `
                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M15 16h-2V8h2m-4 8H9V8h2m1-6A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2"></path></svg>
                        `;
                    } else {
                        audio.pause();
                        playPauseButton.innerHTML = `
                            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M10 16.5v-9l6 4.5M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2"></path></svg>
                        `
                    }
                });
                document.addEventListener("keydown", (e) => {
                    if (e.code === "Space") {
                        playPauseButton.click();
                    }
                });
                document.addEventListener("keydown", (e) => {
                    if (e.code === "ArrowLeft") {
                        audio.currentTime -= 5;
                    }
                });
                document.addEventListener("keydown", (e) => {
                    if (e.code === "ArrowRight") {
                        audio.currentTime += 5;
                    }
                });
                                totalTimeDisplay.textContent = '1:01';
                                audio.addEventListener("timeupdate", updateTrack);
                audio.addEventListener("timeupdate", () => zyoUpdateAudioLyricsDisplay(audio.currentTime));
                                        createSlider('slider1', 'sliderValue1', '');
            // get gia tri de cho viec pause va set value
            const slider = document.getElementById('slider1').noUiSlider;
            const inputValue = document.getElementById('sliderValue1');
            const svgVolumn = document.getElementById("volumeIcon");
            const mask = svgVolumn.querySelector('#changeMask');
            const defs = svgVolumn.querySelector("defs");
            // xu li thanh volumn slider
            slider.on('update', function (values, handle) {
                const volumeValue = parseFloat(values[handle]);

                audio.volume = volumeValue / 100;

                if (volumeValue === 0) {
                    audio.pause();
                    defs.innerHTML = `
                    <mask id="volumeMute"><mask id="volumeMute1" width="13" height="13" x="30" y="18" maskUnits="userSpaceOnUse" style="mask-type: alpha;"><path d="M30 18h13v13H30z"/></mask><g fill="none" stroke="#fff" stroke-linejoin="round" stroke-width="4"><g stroke-linecap="round" mask="url(#volumeMute1)"><path d="m40.735 20.286l-8.486 8.485m.001-8.485l8.485 8.485"/></g><path fill="#555" d="M24 6v36c-7 0-12.201-9.16-12.201-9.16H6a2 2 0 0 1-2-2V17.01a2 2 0 0 1 2-2h5.799S17 6 24 6Z"/></g></mask>
                    `;
                    mask.setAttribute("mask", "url(#volumeMute)");
                } else {
                    audio.play().catch(error => {
                    });
                    defs.innerHTML = `
                    <mask id="volumeMedium"><g fill="none" stroke="#fff" stroke-width="4"><path fill="#555" stroke-linejoin="round" d="M24 6v36c-7 0-12.201-9.16-12.201-9.16H6a2 2 0 0 1-2-2V17.01a2 2 0 0 1 2-2h5.799S17 6 24 6Z"/><path stroke-linecap="round" stroke-linejoin="round" d="M32 15a12 12 0 0 1 1.684 1.859A12.07 12.07 0 0 1 36 24c0 2.654-.846 5.107-2.278 7.09A12 12 0 0 1 32 33"/><path stroke-linecap="round" d="M34.236 41.186C40.084 37.696 44 31.305 44 24c0-7.192-3.796-13.496-9.493-17.02"/></g></mask>
                    `;
                    mask.setAttribute("mask", "url(#volumeMedium)");
                }
            });
            // xu li audio pause va play
            let previousSliderValue = 100;
            svgVolumn.addEventListener("click", function () {
                if (inputValue.value == 0) {
                    slider.set(previousSliderValue);
                    inputValue.value = previousSliderValue;

                    defs.innerHTML = `
                    <mask id="volumeMedium"><g fill="none" stroke="#fff" stroke-width="4"><path fill="#555" stroke-linejoin="round" d="M24 6v36c-7 0-12.201-9.16-12.201-9.16H6a2 2 0 0 1-2-2V17.01a2 2 0 0 1 2-2h5.799S17 6 24 6Z"/><path stroke-linecap="round" stroke-linejoin="round" d="M32 15a12 12 0 0 1 1.684 1.859A12.07 12.07 0 0 1 36 24c0 2.654-.846 5.107-2.278 7.09A12 12 0 0 1 32 33"/><path stroke-linecap="round" d="M34.236 41.186C40.084 37.696 44 31.305 44 24c0-7.192-3.796-13.496-9.493-17.02"/></g></mask>
                    `;
                    mask.setAttribute("mask", "url(#volumeMedium)");
                } else {
                    previousSliderValue = parseFloat(inputValue.value);

                    inputValue.value = '0';
                    slider.set(0);

                    defs.innerHTML = `
                    <mask id="volumeMute"><mask id="volumeMute1" width="13" height="13" x="30" y="18" maskUnits="userSpaceOnUse" style="mask-type: alpha;"><path d="M30 18h13v13H30z"/></mask><g fill="none" stroke="#fff" stroke-linejoin="round" stroke-width="4"><g stroke-linecap="round" mask="url(#volumeMute1)"><path d="m40.735 20.286l-8.486 8.485m.001-8.485l8.485 8.485"/></g><path fill="#555" d="M24 6v36c-7 0-12.201-9.16-12.201-9.16H6a2 2 0 0 1-2-2V17.01a2 2 0 0 1 2-2h5.799S17 6 24 6Z"/></g></mask>
                    `;
                    mask.setAttribute("mask", "url(#volumeMute)");
                }
            });
            }
    audio.volume = 0.86;
 </script>
 <script defer="">
  const zyoAnalyticsConfig = {
        endpoint: "https:\/\/zyo.lol\/php\/api\/analytics_event",
        profileUserId: 36517,
        viewerUserId: 0,
        referrer: null,
        timestamp: "1786839064",
        signatures: {"profile_view":"9ce2eafd5e3f4e2a92b01e9e8850eb4c9a5acb3436c40073b267c0066f376908","link_click":"a3c3498b0e27a493f51f9a42ed660d71191a1f5fda626de6034b2849dca8b1a1","widget_click":"d843396e910bea8c976c5b53f776edb933b908b5c461a606827f262bb46433cc","audio_play":"75e4cea342fe1d7fa832afe8b02e9dc45a6540b3d7f7cfbb3681a63b58b451aa","discord_profile_click":"69c3f3b7b1622fe6fb1cd04fcb80926df11bd20c290d5dfee5a23a25ed643533","second_tab_open":"aa8f021ba120b9dd7b2e306f11e5c7b5df97a582c9e435943f2bb3886222bde7","like":"66fec1507efab16ef9f73a8ffe9a92dd82285c78f8ec3dfe4e8675628b98d8ed"}    };

    function zyoNormalizeAnalyticsEndpoint(rawEndpoint) {
        const value = String(rawEndpoint || '').trim();
        if (!value) {
            return '/php/api/analytics_event';
        }

        try {
            const url = new URL(value, window.location.origin);
            url.pathname = url.pathname.replace(/\/{2,}/g, '/');
            return url.toString();
        } catch (error) {
            return value.replace(/([^:]\/)\/+/g, '$1');
        }
    }

    const zyoAnalyticsQueue = new Map();
    const zyoAnalyticsTrackedKeys = new Set();
    let zyoAnalyticsFlushTimer = null;

    function zyoAnalyticsEventKey(eventType, targetType, targetId) {
        return [eventType, targetType || '', targetId || ''].join('|');
    }

    function zyoSendAnalyticsBatch(events, useBeacon = false) {
        if (!Array.isArray(events) || events.length === 0 || !navigator.sendBeacon && !window.fetch) {
            return;
        }

        const payload = JSON.stringify({
            profile_user_id: zyoAnalyticsConfig.profileUserId,
            viewer_user_id: zyoAnalyticsConfig.viewerUserId,
            timestamp: zyoAnalyticsConfig.timestamp,
            events: events,
            signatures: zyoAnalyticsConfig.signatures
        });

        const analyticsEndpoint = zyoNormalizeAnalyticsEndpoint(zyoAnalyticsConfig.endpoint);
        if (!analyticsEndpoint) return;

        if (useBeacon && navigator.sendBeacon) {
            const blob = new Blob([payload], { type: 'application/json' });
            if (navigator.sendBeacon(analyticsEndpoint, blob)) {
                return;
            }
        }

        fetch(analyticsEndpoint, {
            method: 'POST',
            keepalive: true,
            headers: {
                'Content-Type': 'application/json',
                'X-Timestamp': zyoAnalyticsConfig.timestamp,
                'X-Sign': zyoAnalyticsConfig.signatures.profile_view || ''
            },
            body: payload
        }).catch(() => {});
    }

    function zyoFlushAnalyticsQueue(useBeacon = false) {
        if (zyoAnalyticsFlushTimer) {
            clearTimeout(zyoAnalyticsFlushTimer);
            zyoAnalyticsFlushTimer = null;
        }
        const events = Array.from(zyoAnalyticsQueue.values()).slice(0, 40);
        zyoAnalyticsQueue.clear();
        zyoSendAnalyticsBatch(events, useBeacon);
    }

    function zyoQueueAnalyticsEvent(eventType, targetType = '', targetId = '', metadata = {}, flushDelay = 3500) {
        if (!zyoAnalyticsConfig.signatures[eventType]) {
            return;
        }

        const safeTargetId = String(targetId || '').slice(0, 180);
        const key = zyoAnalyticsEventKey(eventType, targetType, safeTargetId);
        if (zyoAnalyticsTrackedKeys.has(key)) {
            return;
        }
        zyoAnalyticsTrackedKeys.add(key);

        const current = zyoAnalyticsQueue.get(key);
        if (current) {
            return;
        }

        zyoAnalyticsQueue.set(key, {
            event_type: eventType,
            target_type: String(targetType || '').slice(0, 60),
            target_id: safeTargetId,
            event_count: 1,
            metadata: metadata || {}
        });

        if (zyoAnalyticsQueue.size >= 20) {
            zyoFlushAnalyticsQueue(false);
            return;
        }

        if (flushDelay <= 0) {
            zyoFlushAnalyticsQueue(false);
            return;
        }

        if (!zyoAnalyticsFlushTimer) {
            zyoAnalyticsFlushTimer = setTimeout(() => zyoFlushAnalyticsQueue(false), flushDelay);
        }
    }

    function zyoTrackAnalyticsEvent(eventType, targetType = '', targetId = '', metadata = {}) {
        zyoQueueAnalyticsEvent(eventType, targetType, targetId, metadata);
    }

    let zyoProfileViewTracked = false;
    function zyoTrackProfileView() {
        if (zyoProfileViewTracked) return;
        zyoProfileViewTracked = true;
        zyoQueueAnalyticsEvent('profile_view', 'profile', String(zyoAnalyticsConfig.profileUserId), {
            referrer: zyoAnalyticsConfig.referrer
        }, 1200);
    }

    function zyoAnalyticsWidgetFromElement(targetElement) {
        return targetElement ? targetElement.closest('.zyo_profile_widget, .widget_profile_container, .bio_widgets_grid .css_content_container') : null;
    }

    function zyoAnalyticsWidgetType(widget) {
        if (!widget) return '';
        return String(widget.dataset.profileWidgetType || widget.dataset.widgetType || widget.dataset.bioWidgetType || widget.className || 'widget').slice(0, 120);
    }

    function zyoTrackAnalyticsLink(targetElement, targetType = 'link') {
        if (!targetElement) return;

        let href = '';
        if (targetElement.matches('a[href]')) {
            href = targetElement.getAttribute('href') || '';
        } else {
            const socialParent = targetElement.closest('button.svg_item, .svg_item, .svg_text, .socialText, .social_text, [data-social-url], [data-analytics-href], [onclick*="openPopupPreview"]');
            const sourceElement = socialParent || targetElement;
            const hiddenText = targetElement.matches('.svg_text, .socialText, .social_text')
                ? targetElement
                : sourceElement.querySelector('.svg_text, .socialText, .social_text');
            const onclickValue = [
                targetElement.getAttribute('onclick'),
                sourceElement.getAttribute('onclick')
            ].filter(Boolean).join(' ');
            const popupLink = onclickValue.match(/openPopupPreview\(['"](.+?)['"]\)/);
            href = targetElement.dataset.analyticsHref
                || targetElement.dataset.socialUrl
                || sourceElement.dataset.analyticsHref
                || sourceElement.dataset.socialUrl
                || (popupLink ? popupLink[1] : '')
                || targetElement.getAttribute('data-tippy-content')
                || sourceElement.getAttribute('data-tippy-content')
                || (hiddenText ? hiddenText.textContent : '')
                || '';
        }

        href = String(href).trim();
        if (!href || href.startsWith('#') || href.startsWith('javascript:')) {
            return;
        }

        const isDiscordProfile = href.includes('discord.com/users/');
        const widget = zyoAnalyticsWidgetFromElement(targetElement);
        const finalTargetType = widget && targetType === 'link' ? 'widget_link' : targetType;
        zyoTrackAnalyticsEvent(isDiscordProfile ? 'discord_profile_click' : 'link_click', finalTargetType, href, {
            widget_type: widget ? zyoAnalyticsWidgetType(widget) : ''
        });
    }

    document.addEventListener('click', function(event) {
        let trackedPrimaryClick = false;
        const widget = zyoAnalyticsWidgetFromElement(event.target);
        const anchor = event.target.closest('a[href]');
        if (anchor) {
            zyoTrackAnalyticsLink(anchor, widget ? 'widget_link' : 'link');
            trackedPrimaryClick = true;
        } else {
            const socialButton = event.target.closest('button.svg_item, .svg_item, .svg_text, .socialText, .social_text, [data-social-url], [data-analytics-href], [onclick*="openPopupPreview"]');
            if (socialButton) {
                zyoTrackAnalyticsLink(socialButton, 'social');
                trackedPrimaryClick = true;
            }
        }

        if (widget && !trackedPrimaryClick) {
            const service = zyoAnalyticsWidgetType(widget);
            zyoTrackAnalyticsEvent('widget_click', 'widget', String(service).slice(0, 120));
        }

        if (event.target.closest('[data-second-tab], .second_tab, .second-tab')) {
            zyoTrackAnalyticsEvent('second_tab_open', 'second_tab', 'open');
        }
    }, { passive: true });

    document.querySelectorAll('audio, video#video').forEach((audio) => {
        audio.addEventListener('play', function() {
            if (audio.dataset.analyticsPlayed === '1') return;
            audio.dataset.analyticsPlayed = '1';
            zyoTrackAnalyticsEvent('audio_play', 'audio', audio.currentSrc || audio.src || 'audio');
        }, { passive: true });
    });

    window.addEventListener('pagehide', () => zyoFlushAnalyticsQueue(true));
    document.addEventListener('visibilitychange', () => {
        if (document.visibilityState === 'hidden') {
            zyoFlushAnalyticsQueue(true);
        }
    });

    setTimeout(() => {
        fetch("https:\/\/zyo.lol\/php\/api\/view_count", {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-Timestamp': '1786839064',
                'X-Sign': 'ce23ce97dfc57e4555d77688b16e2610eaf275bf40e0bc90cc98ef5dac2d0a2d',
            },
            body: JSON.stringify({
                user_id: 36517,
                user_view: 0,
                referrer: ""            }),
        });
        zyoTrackProfileView();
    }, 3000);
 </script>
 <style>
  .text_effect_5 {
        color: var(--nameColor, #f8f8f8);
        background: linear-gradient(90deg, transparent, var(--nameColor, #f8f8f8), transparent);
        background-repeat: no-repeat;
        background-size: 80%;
        animation: shine_effect 2s linear infinite;
        -webkit-background-clip: text;
        -webkit-text-fill-color: var(--nameColor25, rgba(248, 248, 248, 0.25));
        background-clip: text;
    }
    /* shine */
    .text_effect_3 {
        overflow: hidden;
        background: linear-gradient(90deg, #000, var(--nameColor), var(--nameColor), #000);
        background-repeat: no-repeat;
        background-size: 80%;
        animation: shine_effect 2s linear infinite;
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: rgba(0, 0, 0, 0);
    }
 </style>
 <script>
  function zyoWidgetMarqueeContent(container) {
            if (container.matches?.('[data-widget-marquee]')) {
                return container.querySelector('.widget_marquee_content');
            }

            return container.classList.contains('widget_name_container')
                ? container.querySelector('.widget_name')
                : container.querySelector('.widget_description');
        }

        function zyoWidgetMarqueeSelector() {
            return '.widget_description_container, .widget_name_container, [data-widget-marquee]';
        }

        function zyoUpdateGithubContributionScale(root = document) {
            root.querySelectorAll?.('.github_contrib_graph').forEach((graph) => {
                const scaleTarget = graph.querySelector('.github_contrib_graph_scale');
                if (!scaleTarget) {
                    return;
                }

                window.requestAnimationFrame(() => {
                    const fullWidth = scaleTarget.scrollWidth;
                    const availableWidth = graph.clientWidth;
                    const scale = fullWidth > 0 && availableWidth > 0 ? Math.min(1, availableWidth / fullWidth) : 1;
                    graph.style.setProperty('--github-contrib-scale', String(Math.max(.55, scale)));
                });
            });
        }

        function zyoUpdateWidgetDescriptionMarquee(root = document) {
            root.querySelectorAll?.(zyoWidgetMarqueeSelector()).forEach((container) => {
                const content = zyoWidgetMarqueeContent(container);
                if (!content) {
                    return;
                }

                window.requestAnimationFrame(() => {
                    const inlineMaxWidth = content.style.maxWidth;
                    content.style.maxWidth = 'none';
                    const contentWidth = content.scrollWidth;
                    content.style.maxWidth = inlineMaxWidth;
                    const overflowOffset = Math.ceil(contentWidth - container.clientWidth);
                    if (overflowOffset <= 0) {
                        if (container.classList.contains('is-marquee')) {
                            container.classList.remove('is-marquee');
                        }
                        container.style.setProperty('--overflow-offset', '0px');
                        return;
                    }

                    container.style.setProperty('--overflow-offset', `${overflowOffset}px`);
                    container.style.setProperty('--widget-marquee-duration', '8s');
                    if (!container.classList.contains('is-marquee')) {
                        container.classList.add('is-marquee');
                    }
                });
            });

            zyoUpdateGithubContributionScale(root);
        }

        function zyoObserveWidgetDescriptionMarquee(root = document) {
            if (!window.ResizeObserver) {
                return;
            }

            if (!window.zyoWidgetDescriptionResizeObserver) {
                window.zyoWidgetDescriptionResizeObserver = new ResizeObserver((entries) => {
                    window.zyoWidgetDescriptionResizeQueue = window.zyoWidgetDescriptionResizeQueue || new Set();

                    entries.forEach((entry) => {
                        const target = entry.target;
                        const container = target.matches?.(zyoWidgetMarqueeSelector())
                            ? target
                            : target.closest?.(zyoWidgetMarqueeSelector());

                        if (container) {
                            window.zyoWidgetDescriptionResizeQueue.add(container);
                        }
                    });

                    window.cancelAnimationFrame(window.zyoWidgetDescriptionResizeFrame);
                    window.zyoWidgetDescriptionResizeFrame = window.requestAnimationFrame(() => {
                        window.zyoWidgetDescriptionResizeQueue.forEach((container) => {
                            zyoUpdateWidgetDescriptionMarquee(container.parentElement || container);
                        });
                        window.zyoWidgetDescriptionResizeQueue.clear();
                    });
                });
            }

            root.querySelectorAll?.(zyoWidgetMarqueeSelector()).forEach((container) => {
                if (container.dataset.widgetMarqueeObserved === '1') {
                    return;
                }

                const content = zyoWidgetMarqueeContent(container);
                window.zyoWidgetDescriptionResizeObserver.observe(container);
                if (content) {
                    window.zyoWidgetDescriptionResizeObserver.observe(content);
                }
                container.dataset.widgetMarqueeObserved = '1';
            });

            root.querySelectorAll?.('.github_contrib_graph').forEach((graph) => {
                if (graph.dataset.githubContribObserved === '1') {
                    return;
                }

                window.zyoWidgetDescriptionResizeObserver.observe(graph);
                const scaleTarget = graph.querySelector('.github_contrib_graph_scale');
                if (scaleTarget) {
                    window.zyoWidgetDescriptionResizeObserver.observe(scaleTarget);
                }
                graph.dataset.githubContribObserved = '1';
            });
        }

        document.addEventListener('DOMContentLoaded', () => {
            zyoObserveWidgetDescriptionMarquee();
            zyoUpdateWidgetDescriptionMarquee();
        });

        window.addEventListener('load', () => {
            zyoObserveWidgetDescriptionMarquee();
            zyoUpdateWidgetDescriptionMarquee();
        });

        window.addEventListener('resize', () => {
            window.clearTimeout(window.zyoWidgetDescriptionResizeTimer);
            window.zyoWidgetDescriptionResizeTimer = window.setTimeout(() => {
                zyoUpdateWidgetDescriptionMarquee();
            }, 120);
        });

        
        function zyoFormatDiscordActivityElapsed(totalSeconds) {
            const seconds = Math.max(0, Math.floor(totalSeconds));
            const hours = Math.floor(seconds / 3600);
            const minutes = Math.floor((seconds % 3600) / 60);
            const remainingSeconds = seconds % 60;
            const pad = (value) => String(value).padStart(2, '0');

            return `${pad(hours)}:${pad(minutes)}:${pad(remainingSeconds)}`;
        }

        function zyoUpdateDiscordActivityTimers(root = document) {
            root.querySelectorAll?.('[data-discord-activity-started-at]').forEach((item) => {
                const startedAt = Number(item.dataset.discordActivityStartedAt || 0);
                const text = item.querySelector('.discord_presence_activity_time');

                if (!startedAt || !text) {
                    return;
                }

                text.textContent = zyoFormatDiscordActivityElapsed((Date.now() / 1000) - startedAt);
            });
        }

        function zyoStartDiscordActivityTimers() {
            zyoUpdateDiscordActivityTimers();

            if (window.zyoDiscordActivityTimerInterval) {
                return;
            }

            window.zyoDiscordActivityTimerInterval = window.setInterval(() => {
                zyoUpdateDiscordActivityTimers();
            }, 1000);
        }

        document.addEventListener('DOMContentLoaded', zyoStartDiscordActivityTimers);
        window.addEventListener('load', zyoStartDiscordActivityTimers);

        function zyoActivateInjectedReveal(root) {
            if (!root) {
                return;
            }

            const reveals = [];

            if (root.classList && root.classList.contains('reveal')) {
                reveals.push(root);
            }

            root.querySelectorAll?.('.reveal').forEach((item) => {
                reveals.push(item);
            });

            reveals.forEach((item) => {
                item.classList.add('active');
            });
        }

        function zyoHydrateInjectedBioBlock(root) {
            if (!root) {
                return;
            }

            zyoActivateInjectedReveal(root);
            zyoObserveWidgetDescriptionMarquee(root);
            zyoUpdateWidgetDescriptionMarquee(root);
            zyoUpdateDiscordActivityTimers(root);
            zyoStartDiscordActivityTimers();
            if (typeof window.zyoInitWidgetClocks === 'function') {
                window.zyoInitWidgetClocks(root);
            }
            if (typeof window.zyoInitBioTilt === 'function') {
                window.zyoInitBioTilt(root);
            }
            if (typeof window.zyoRefreshLayout5VisualizerTargets === 'function') {
                window.zyoRefreshLayout5VisualizerTargets();
            }
            if (typeof window.zyoRefreshBioVisualizerTargets === 'function') {
                window.zyoRefreshBioVisualizerTargets();
            }
            if (typeof zyoEnsureBorderShimmer === 'function') {
                zyoEnsureBorderShimmer(root);
            }
            if (window.AOS && typeof window.AOS.refresh === 'function') {
                window.AOS.refresh();
            }
            document.dispatchEvent(new Event('zyo:loadAos'));
        }

        function zyoReplaceWithAsyncFallback(slot) {
            const fallbackTemplate = slot?.querySelector?.('template[data-bio-async-fallback]');
            const replacement = fallbackTemplate?.content?.firstElementChild?.cloneNode(true);
            if (!replacement) {
                slot?.remove();
                return null;
            }

            slot.replaceWith(replacement);
            zyoHydrateInjectedBioBlock(replacement);
            return replacement;
        }

        function zyoBioFetchJson(url, payload, timeoutMs = 9000) {
            const controller = typeof window.AbortController === 'function'
                ? new window.AbortController()
                : null;
            const timeout = window.setTimeout(() => controller?.abort(), timeoutMs);

            return fetch(url, {
                method: 'POST',
                credentials: 'same-origin',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(payload),
                signal: controller?.signal,
            }).then((response) => {
                if (!response.ok) {
                    throw new Error(`HTTP ${response.status}`);
                }
                return response.json();
            }).finally(() => {
                window.clearTimeout(timeout);
            });
        }
 </script>
 <script>
  const titleText = "@Duy H\u01b0ng";
        let index = 0;
        let isDeleting = false;

        function typeWriter() {
            if (isDeleting) {
                document.title = titleText.substring(0, index);
                index--;
            } else {
                document.title = titleText.substring(0, index + 1);
                index++;
            }

            if (!isDeleting && index === titleText.length) {
                isDeleting = true;
                setTimeout(typeWriter, 0);
                return;
            } else if (isDeleting && index === 0) {
                isDeleting = false;
                setTimeout(typeWriter, 0);
                return;
            }

            const speed = isDeleting ? 350 : 350;
            setTimeout(typeWriter, speed);
        }

        window.onload = typeWriter;
 </script>
 <script>
  function openPopupPreview(link){
        const linkPreview = document.getElementById('link_preview');
        const linkPreviewButton = document.getElementById('link_preview_button');
        linkPreview.value = link
        linkPreviewButton.href = link
        linkPreviewButton.target = '_blank'
        linkPreviewButton.rel = 'noopener noreferrer'
        openPopup('link_preview_container');
    }
 </script>
 <script src="/template/js/text-effect.js" type="text/javascript">
 </script>
 <script>
  var userName = document.getElementById('userName');
            textWaveEffectTitle('#userName')
 </script>
 <!-- -->
</html>
