🎉 欢迎访问GreasyFork.Org 镜像站!本镜像站由公众号【爱吃馍】搭建,用于分享脚本。联系邮箱📮

Greasy fork 爱吃馍镜像

Greasy Fork is available in English.

📂 缓存分发状态(共享加速已生效)
🕒 页面同步时间:2025/12/29 19:54:09
🔄 下次更新时间:2025/12/29 20:54:09
手动刷新缓存

Vortex Client

Vortex Client for Bloxd.io

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

🚀 安装遇到问题?关注公众号获取帮助

公众号二维码

扫码关注【爱吃馍】

回复【脚本】获取最新教程和防失联地址

// ==UserScript==
// @name         Vortex Client
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Vortex Client for Bloxd.io
// @author       GEORGECR
// @homepageURL  https://georgecr0.github.io/Vortex-Client/
// @icon         https://i.postimg.cc/fRpcmPqN/Vortex-Logo.png
// @match        https://bloxd.io/*
// @license      MIT
// @grant        none
// ==/UserScript==

(()=>{"use strict";var e={56:(e,t,n)=>{e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},72:e=>{var t=[];function n(e){for(var n=-1,i=0;i<t.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var r={},o=[],a=0;a<e.length;a++){var l=e[a],d=i.base?l[0]+i.base:l[0],c=r[d]||0,h="".concat(d," ").concat(c);r[d]=c+1;var p=n(h),u={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==p)t[p].references++,t[p].updater(u);else{var m=s(u,i);i.byIndex=a,t.splice(a,0,{identifier:h,updater:m,references:1})}o.push(h)}return o}function s(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,s){var r=i(e=e||[],s=s||{});return function(e){e=e||[];for(var o=0;o<r.length;o++){var a=n(r[o]);t[a].references--}for(var l=i(e,s),d=0;d<r.length;d++){var c=n(r[d]);0===t[c].references&&(t[c].updater(),t.splice(c,1))}r=l}}},113:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},314:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n}).join("")},t.i=function(e,n,i,s,r){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var a=0;a<this.length;a++){var l=this[a][0];null!=l&&(o[l]=!0)}for(var d=0;d<e.length;d++){var c=[].concat(e[d]);i&&o[c[0]]||(void 0!==r&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=r),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),s&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=s):c[4]="".concat(s)),t.push(c))}},t}},376:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});var i=n(601),s=n.n(i),r=n(314),o=n.n(r)()(s());o.push([e.id,"/* ===== VORTEX CLICKGUI STYLES ===== */\n\n/* ===== BASE HUD OVERLAY ===== */\n.vortex-hud {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 999999;\n    background-color: rgba(0, 0, 0, 0.8);\n    pointer-events: auto;\n    backdrop-filter: blur(5px) grayscale(80%) brightness(0.6);\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    display: none;\n    justify-content: center;\n    align-items: center;\n    opacity: 0;\n}\n\n.vortex-hud.show {\n    opacity: 1;\n}\n\n/* ===== WELCOME MENU ===== */\n.vortex-welcome-menu {\n    position: fixed;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) scale(0.9);\n    width: 30vw;\n    height: 40vh;\n    max-width: 500px;\n    max-height: 400px;\n    min-width: 300px;\n    min-height: 250px;\n    z-index: 1000000;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    background-image: url(https://i.postimg.cc/fyR7DMPB/Vortex-Client-png.png);\n    background-repeat: no-repeat;\n    background-size: 265px 230px;\n    background-position: center calc(50% - 70px);\n    opacity: 0;\n    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.vortex-welcome-menu.show {\n    transform: translate(-50%, -50%) scale(1);\n    opacity: 1;\n}\n\n.vortex-container {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 10px;\n    margin-top: 120px;\n}\n\n\n.vortex-menu-buttons {\n    width: 250px;\n    height: 80px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: center;\n    margin-top: 5px;\n    gap:10px ;\n}\n\n\n.vortex-quick-action {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 0px;\n}\n\n.vortex-quick-label {\n    color: rgba(255, 255, 255, 0.8);\n    font-size: 11px;\n    font-weight: 500;\n    text-align: center;\n    opacity: 0;\n    transform: translateY(-4px);\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    pointer-events: none;\n}\n\n.vortex-quick-action:hover .vortex-quick-label {\n    color: white;\n    opacity: 1;\n    transform: translateY(0);\n}\n\n/* ===== MAIN MENU CONTAINER ===== */\n.vortex-main-menu-container {\n    width: 50vw;\n    height: 65vh;\n    position: fixed;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) scale(0.95);\n    display: none;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    max-width: 1000px;\n    max-height: 800px;\n    min-width: 900px;\n    min-height: 700px;\n    opacity: 0;\n    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.vortex-main-menu-container.show {\n    transform: translate(-50%, -50%) scale(1);\n    opacity: 1;\n}\n\n.vortex-main-menu {\n    width: 50vw;\n    height: 45vh;\n    z-index: 999999;\n    position: relative;\n    backdrop-filter: blur(14px);\n    background-color: rgba(10, 10, 10, 1);\n    border-radius: 1rem;\n    padding: 20px;\n    border: 1px solid rgba(255, 255, 255, 0.07);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.28);\n    max-width: 1000px;\n    max-height: 550px;\n    min-width: 900px;\n    min-height: 550px;\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    --panel-before-blur: 18px;\n    --panel-before-bg: rgba(10, 10, 10, 1);\n}\n\n.vortex-main-menu::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    border-radius: inherit;\n    backdrop-filter: blur(var(--panel-before-blur));\n    -webkit-backdrop-filter: blur(var(--panel-before-blur));\n    background: var(--panel-before-bg);\n    z-index: -1;\n    pointer-events: none;\n}\n\n/* ===== SIDEBAR ===== */\n.vortex-sidebar {\n    width: 240px;\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-start;\n    align-items: center;\n    gap: 15px;\n    position: absolute;\n    top: 0;\n    left: 0;\n    border-right: 1.4px solid rgba(255, 255, 255, 0.1);\n    background-color: rgba(10, 10, 10, 1);\n    border-top-left-radius: 1rem;\n    border-bottom-left-radius: 1rem;\n}\n\n/* Sidebar Header */\n.vortex-logo-wrapper {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    margin-top: 20px;\n}\n\n.vortex-sidebar-logo {\n    width: 200px;\n    height: auto;\n    border-radius: 0.4rem;\n}\n\n.vortex-version-label {\n    font-size: 13px;\n    font-weight: lighter;\n    color: rgba(255, 255, 255, 0.3);\n    margin-top: -2px;\n}\n\n.vortex-separator {\n    width: 85%;\n    height: 1px;\n    background-color: rgba(255, 255, 255, 0.07);\n    margin-bottom: 5px;\n}\n\n/* Sidebar Buttons */\n.vortex-tab-button {\n    width: 80%;\n    height: 48px;\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n    gap: 8px;\n    padding: 10px;\n    border-radius: 12px;\n    cursor: pointer;\n    font-size: 14px;\n    font-weight: bold;\n    color: rgba(255, 255, 255, 0.4);\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    background-color: transparent;\n    border: 1px solid transparent;\n    box-shadow: none;\n    position: relative;\n    overflow: hidden;\n}\n\n.vortex-tab-button:hover:not(.active) {\n    transform: translateX(2px);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    background-color: rgba(255, 255, 255, 0.05);\n    color: rgba(255, 255, 255, 0.6);\n}\n\n.vortex-tab-button.active {\n    background-color: rgba(110, 40, 40, 0.8);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    box-shadow: 0px 0px 15px 0px rgba(110, 40, 40, 0.3);\n    color: white;\n}\n\n.vortex-tab-button i {\n    margin-right: 8px;\n    font-size: 18px;\n}\n\n.vortex-footer-button {\n    width: 80%;\n    height: 48px;\n    display: flex;\n    align-items: center;\n    justify-content: flex-start;\n    gap: 8px;\n    padding: 8px;\n    border-radius: 8px;\n    cursor: pointer;\n    font-size: 14px;\n    font-weight: bold;\n    color: rgba(255, 255, 255, 0.35);\n    transition: all 0.3s ease;\n    background-color: transparent;\n    border: none;\n}\n\n.vortex-footer-button:hover {\n    background-color: rgba(255, 255, 255, 0.05);\n    color: rgba(255, 255, 255, 0.6);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.vortex-footer-button i {\n    margin-right: 8px;\n    font-size: 18px;\n}\n\n/* ===== CONTENT AREA ===== */\n.vortex-content-area {\n    margin-left: 230px;\n    padding: 20px;\n    width: calc(100% - 230px);\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: flex-start;\n    color: white;\n    background: rgba(10, 10, 10, 1);\n    font-size: 18px;\n    font-weight: bold;\n}\n\n/* Content Header */\n.vortex-content-header {\n    text-align: center;\n    width: 100%;\n    margin-bottom: 15px;\n}\n\n.vortex-content-title {\n    font-size: 22px;\n    font-weight: bold;\n    color: white;\n    margin-bottom: 5px;\n    text-shadow: 0 0 10px rgba(255, 255, 255, 0.2);\n    transition: all 0.4s ease-in-out;\n}\n\n.vortex-content-description {\n    font-size: 11px;\n    font-weight: normal;\n    color: rgba(255, 255, 255, 0.5);\n    text-transform: uppercase;\n}\n\n.vortex-content-separator {\n    width: 100%;\n    height: 1px;\n    background-color: rgba(255, 255, 255, 0.06);\n    margin-bottom: 20px;\n}\n\n/* ===== MODULE GRID ===== */\n.vortex-module-grid {\n    width: 100%;\n    max-height: calc(100% - 100px);\n    overflow-y: auto;\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n    gap: 24px;\n    padding: 12px;\n}\n\n.vortex-empty-state {\n    color: rgba(255, 255, 255, 0.5);\n    font-size: 14px;\n    text-align: center;\n    grid-column: 1 / -1;\n}\n\n/* ===== MODULE CARDS ===== */\n.vortex-module-card {\n    background-color: rgba(18, 18, 18, 1);\n    border-radius: 14px;\n    padding: 24px;\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    text-align: center;\n    cursor: pointer;\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n}\n\n.vortex-module-card:hover {\n    transform: translateY(-6px) scale(1.03);\n    background-color: rgba(22, 22, 22, 1);\n    border-color: rgba(255, 255, 255, 0.12);\n    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35);\n}\n\n.vortex-module-text {\n    margin-bottom: 15px;\n}\n\n.vortex-module-name {\n    font-size: 16px;\n    font-weight: bold;\n    color: white;\n    margin-bottom: 5px;\n}\n\n.vortex-module-description {\n    font-size: 12px;\n    color: rgba(255, 255, 255, 0.6);\n}\n\n.vortex-module-controls {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 10px;\n}\n\n/* ===== TOGGLE SWITCHES ===== */\n.vortex-switch {\n    position: relative;\n    display: inline-block;\n    width: 54px;\n    height: 28px;\n}\n\n.vortex-switch-input {\n    opacity: 0;\n    width: 0;\n    height: 0;\n}\n\n/* ===== CONTROL BUTTONS ===== */\n.vortex-keybind-button,\n.vortex-settings-button {\n    width: 28px;\n    height: 28px;\n    border-radius: 10px;\n    border: none;\n    cursor: pointer;\n    background-color: rgba(255, 255, 255, 0.1);\n    color: white;\n    font-size: 18px;\n    transition: background-color 0.3s ease;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.vortex-keybind-button:hover,\n.vortex-settings-button:hover {\n    background-color: rgba(255, 255, 255, 0.2);\n}\n\n/* ===== SETTINGS PANEL ===== */\n.vortex-settings-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    margin-bottom: 24px;\n    padding-bottom: 16px;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n    opacity: 0;\n    transform: scale(0.95) translateY(-10px);\n    animation: headerFadeIn 0.22s ease-out forwards;\n    position: relative;\n}\n\n@keyframes headerFadeIn {\n    to {\n        opacity: 1;\n        transform: scale(1) translateY(0);\n    }\n}\n\n/* ===== BACK ANIMATIONS ===== */\n.vortex-content-exit {\n    animation: contentExit 0.18s ease-out forwards;\n}\n\n.vortex-settings-exit {\n    animation: settingsExit 0.2s ease forwards;\n}\n\n.vortex-module-grid.enter {\n    animation: contentEnter 0.22s ease-out;\n}\n\n@keyframes contentExit {\n    to {\n        opacity: 0;\n        transform: scale(0.95) translateY(-10px);\n        filter: blur(1px);\n    }\n}\n\n@keyframes settingsExit {\n    to {\n        opacity: 0;\n        transform: translateY(18px) scale(0.96);\n        filter: blur(2px);\n    }\n}\n\n@keyframes contentEnter {\n    from {\n        opacity: 0;\n        transform: scale(1.05) translateY(10px);\n        filter: blur(1px);\n    }\n    to {\n        opacity: 1;\n        transform: scale(1) translateY(0);\n        filter: blur(0);\n    }\n}\n\n/* ===== CATEGORY SWITCHING ===== */\n.vortex-category-exit {\n    animation: categoryExit 0.2s ease forwards;\n    pointer-events: none;\n}\n\n.vortex-category-enter {\n    animation: categoryEnter 0.24s ease-out;\n}\n\n@keyframes categoryExit {\n    to {\n        opacity: 0;\n        transform: translateY(-18px) scale(0.97);\n        filter: blur(1px);\n    }\n}\n\n@keyframes categoryEnter {\n    from {\n        opacity: 0;\n        transform: translateY(18px) scale(1.03);\n        filter: blur(1px);\n    }\n    to {\n        opacity: 1;\n        transform: translateY(0) scale(1);\n        filter: blur(0);\n    }\n}\n\n.vortex-back-button {\n    font-size: 18px;\n    color: rgba(255, 255, 255, 0.8);\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 10px;\n    width: 36px;\n    height: 36px;\n    cursor: pointer;\n    margin-right: 16px;\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n.vortex-back-button:hover {\n    background: rgba(255, 255, 255, 0.08);\n    border-color: rgba(255, 255, 255, 0.15);\n    color: white;\n    transform: translateX(-2px);\n}\n\n.vortex-settings-title {\n    font-size: 20px;\n    font-weight: 600;\n    color: rgba(255, 255, 255, 0.95);\n    flex: 1;\n}\n\n.vortex-settings-content {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    padding: 12px 0;\n    height: calc(100% - 64px);\n    overflow-y: auto; /* scrollable but hidden scrollbar */\n    -ms-overflow-style: none; /* IE/Edge */\n    scrollbar-width: none; /* Firefox */\n    animation: slideInUp 0.3s ease-out;\n}\n.vortex-settings-content::-webkit-scrollbar { display: none; }\n\n@keyframes slideInUp {\n    from {\n        opacity: 0;\n        transform: scale(0.95) translateY(15px);\n        filter: blur(2px);\n    }\n    to {\n        opacity: 1;\n        transform: scale(1) translateY(0);\n        filter: blur(0);\n    }\n}\n\n.vortex-no-settings {\n    color: rgba(255, 255, 255, 0.5);\n    font-size: 14px;\n    text-align: center;\n    padding: 40px 20px;\n    font-style: italic;\n}\n\n.vortex-setting-wrapper {\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid rgba(255, 255, 255, 0.12);\n    border-radius: 14px;\n    padding: 16px 18px;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    transition: all 0.3s ease;\n    opacity: 0;\n    transform: scale(0.98) translateY(12px);\n    animation: settingSlideIn 0.25s ease-out forwards;\n}\n\n.vortex-setting-wrapper:nth-child(1) { animation-delay: 0.05s; }\n.vortex-setting-wrapper:nth-child(2) { animation-delay: 0.08s; }\n.vortex-setting-wrapper:nth-child(3) { animation-delay: 0.11s; }\n.vortex-setting-wrapper:nth-child(4) { animation-delay: 0.14s; }\n.vortex-setting-wrapper:nth-child(5) { animation-delay: 0.17s; }\n\n@keyframes settingSlideIn {\n    to {\n        opacity: 1;\n        transform: scale(1) translateY(0);\n    }\n}\n\n.vortex-setting-wrapper:hover {\n    background: rgba(255, 255, 255, 0.06);\n    border-color: rgba(255, 255, 255, 0.15);\n}\n\n.vortex-setting-label {\n    font-size: 15px;\n    font-weight: 500;\n    color: rgba(255, 255, 255, 0.9);\n    flex: 1;\n    margin-right: 16px;\n}\n\n/* ===== SETTING CONTROLS ===== */\n.vortex-slider-container {\n    display: grid;\n    grid-template-columns: 1fr auto;\n    align-items: center;\n    gap: 10px;\n}\n\n.vortex-slider {\n    width: 120px;\n    height: 4px;\n    border-radius: 2px;\n    background: rgba(255, 255, 255, 0.08);\n    outline: none;\n    -webkit-appearance: none;\n    appearance: none;\n    cursor: pointer;\n}\n\n.vortex-slider::-webkit-slider-thumb {\n    appearance: none;\n    width: 16px;\n    height: 16px;\n    border-radius: 50%;\n    background: rgba(110, 40, 40, 0.9);\n    cursor: pointer;\n    transition: all 0.2s ease;\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n}\n\n.vortex-slider::-webkit-slider-thumb:hover {\n    transform: scale(1.1);\n    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3);\n}\n\n.vortex-slider::-moz-range-thumb {\n    width: 16px;\n    height: 16px;\n    border-radius: 50%;\n    background: rgba(110, 40, 40, 0.9);\n    cursor: pointer;\n    border: none;\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n}\n\n.vortex-slider-value {\n    min-width: 40px;\n    color: rgba(255, 255, 255, 0.8);\n    font-weight: 500;\n    font-size: 13px;\n    text-align: center;\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    border-radius: 6px;\n    padding: 4px 8px;\n}\n\n.vortex-text-input {\n    background: rgba(255, 255, 255, 0.04);\n    color: white;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 8px;\n    padding: 10px 12px;\n    text-align: center;\n    font-size: 14px;\n    min-width: 50px;\n    max-width: 55px;\n    transition: all 0.2s ease;\n}\n\n.vortex-text-input:focus {\n    outline: none;\n    border-color: rgba(110, 40, 40, 0.6);\n    background: rgba(255, 255, 255, 0.06);\n}\n\n.vortex-color-input {\n    width: 32px;\n    height: 32px;\n    border: 2px solid rgba(255, 255, 255, 0.1);\n    border-radius: 8px;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    background: none;\n}\n\n.vortex-color-input:hover {\n    border-color: rgba(255, 255, 255, 0.2);\n    transform: scale(1.05);\n}\n\n.vortex-dropdown-container {\n    display: grid;\n    grid-template-columns: 1fr auto;\n    align-items: center;\n    gap: 10px;\n}\n\n.vortex-dropdown {\n    background: rgba(255, 255, 255, 0.04);\n    color: white;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 8px;\n    padding: 8px 12px;\n    font-size: 14px;\n    min-width: 120px;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    transition: all 0.2s ease;\n}\n\n.vortex-dropdown:hover {\n    border-color: rgba(255, 255, 255, 0.2);\n    background: rgba(255, 255, 255, 0.06);\n}\n\n.vortex-dropdown:focus {\n    outline: none;\n    border-color: rgba(110, 40, 40, 0.6);\n    background: rgba(255, 255, 255, 0.06);\n}\n\n.vortex-dropdown option {\n    background: #0a0a0a; \n    color: white;\n}\n\n.vortex-dropdown::-ms-expand {\n    display: none;\n}\n\n.vortex-dropdown-wrapper {\n    position: relative;\n}\n\n.vortex-dropdown-wrapper::after {\n    content: '▼';\n    position: absolute;\n    right: 10px;\n    top: 50%;\n    transform: translateY(-50%);\n    pointer-events: none;\n    color: rgba(255, 255, 255, 0.6);\n    font-size: 10px;\n}\n\n\n.vortex-dropdown-container {\n    display: grid;\n    grid-template-columns: 1fr auto;\n    align-items: center;\n    gap: 10px;\n}\n\n.vortex-dropdown {\n    background: rgba(255, 255, 255, 0.04);\n    color: white;\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    border-radius: 8px;\n    padding: 8px 12px;\n    font-size: 14px;\n    min-width: 120px;\n    cursor: pointer;\n    appearance: none;\n    -webkit-appearance: none;\n    transition: all 0.2s ease;\n}\n\n.vortex-dropdown:hover {\n    border-color: rgba(255, 255, 255, 0.2);\n    background: rgba(255, 255, 255, 0.06);\n}\n\n.vortex-dropdown:focus {\n    outline: none;\n    border-color: rgba(110, 40, 40, 0.6);\n    background: rgba(255, 255, 255, 0.06);\n}\n\n.vortex-dropdown option {\n    background: #0a0a0a; \n    color: white;\n}\n\n.vortex-dropdown::-ms-expand {\n    display: none;\n}\n\n.vortex-dropdown-wrapper {\n    position: relative;\n}\n\n.vortex-dropdown-wrapper::after {\n    content: '▼';\n    position: absolute;\n    right: 10px;\n    top: 50%;\n    transform: translateY(-50%);\n    pointer-events: none;\n    color: rgba(255, 255, 255, 0.6);\n    font-size: 10px;\n}\n\n.vortex-img-option-container {\n    display: block;\n    width: 100%;\n    margin-top: 10px;\n}\n\n.vortex-img-option-title {\n    display: block;\n    text-align: left;\n    font-size: 15px;\n    font-weight: 600;\n    color: white;\n    margin-bottom: 8px;\n    text-transform: capitalize;\n}\n\n.vortex-img-option-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));\n    gap: 10px;\n    width: 100%;\n    justify-items: center;\n}\n\n.vortex-img-option {\n    width: 100%;\n    max-width: 120px;\n    background: rgba(255, 255, 255, 0.04);\n    border: 2px solid transparent;\n    border-radius: 8px;\n    overflow: hidden;\n    cursor: pointer;\n    transition: all 0.2s ease;\n    text-align: center;\n}\n\n.vortex-img-option:hover {\n    border-color: rgba(255, 255, 255, 0.2);\n    transform: scale(1.03);\n}\n\n.vortex-img-option.selected {\n    border-color: rgba(110, 40, 40, 0.6);\n    background: rgba(255, 255, 255, 0.06);\n    box-shadow: 0 0 10px rgba(110, 40, 40, 0.5);\n}\n\n.vortex-img-option-thumb {\n    width: 100%;\n    height: 70px;\n    object-fit: cover;\n    display: block;\n}\n\n.vortex-img-caption {\n    font-size: 12px;\n    color: white;\n    padding: 5px 0;\n    background: rgba(0, 0, 0, 0.3);\n    width: 100%;\n}\n\n.vortex-styled-button {\n    width: 55px;\n    height: 60px;\n    background: linear-gradient(45deg, rgba(0, 4, 9, 1) 40%, rgba(14, 14, 19, 1) 100%);\n    background-color: transparent;\n    border: 1.5px solid rgba(255, 255, 255, 0.08);\n    border-radius: 0.8rem;\n    cursor: pointer;\n    font-size: 18px;\n    color: rgba(255, 255, 255, 0.7);\n    transition: all 0.3s;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    backdrop-filter: blur(4px);\n}\n.vortex-styled-button:hover {\n    background: linear-gradient(45deg, rgba(110, 40, 40, 1) 40%, rgba(124, 54, 59, 1) 100%);\n    border-color: rgba(255, 255, 255, 0.15);\n    box-shadow: 0 4px 20px rgba(110, 40, 40, 0.3);\n    transform: translateY(-2px) scale(1.05);\n    color: white;\n}\n\n.vortex-styled-button:active {\n    transform: translateY(0) scale(0.98);\n}\n\n.vortex-switch-slider {\n    position: absolute;\n    cursor: pointer;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background: rgba(255, 255, 255, 0.08);\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    border-radius: 34px;\n    border: 1px solid rgba(255, 255, 255, 0.06);\n}\n\n.vortex-switch-slider:hover {\n    background: rgba(255, 255, 255, 0.12);\n    border-color: rgba(255, 255, 255, 0.1);\n}\n\n.vortex-switch-knob {\n    position: absolute;\n    height: 18px;\n    width: 18px;\n    left: 5px;\n    bottom: 5px;\n    background: linear-gradient(145deg, #ffffff, #f0f0f0);\n    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n    border-radius: 50%;\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n}\n\n.vortex-switch-input:checked + .vortex-switch-slider {\n    background: linear-gradient(145deg, rgba(110, 40, 40, 0.9), rgba(130, 50, 50, 0.8));\n    border-color: rgba(255, 255, 255, 0.15);\n    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.2);\n}\n\n.vortex-switch-input:checked + .vortex-switch-slider .vortex-switch-knob {\n    transform: translateX(26px);\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);\n}\n\n/* ===== SCROLLBAR STYLING ===== */\n.vortex-module-grid::-webkit-scrollbar {\n    width: 8px;\n}\n\n.vortex-module-grid::-webkit-scrollbar-track {\n    background: rgba(255, 255, 255, 0.05);\n    border-radius: 4px;\n}\n\n.vortex-module-grid::-webkit-scrollbar-thumb {\n    background: rgba(110, 40, 40, 0.8);\n    border-radius: 4px;\n}\n\n.vortex-module-grid::-webkit-scrollbar-thumb:hover {\n    background: rgba(110, 40, 40, 1);\n}\n\n/* ===== RESPONSIVE DESIGN ===== */\n@media (max-width: 1200px) {\n    .vortex-main-menu-container {\n        min-width: 800px;\n        min-height: 600px;\n    }\n    \n    .vortex-main-menu {\n        min-width: 800px;\n        min-height: 500px;\n    }\n    \n    .vortex-module-grid {\n        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n    }\n}\n\n@media (max-width: 900px) {\n    .vortex-main-menu-container {\n        min-width: 700px;\n        min-height: 500px;\n    }\n    \n    .vortex-main-menu {\n        min-width: 700px;\n        min-height: 450px;\n    }\n    \n    .vortex-sidebar {\n        width: 200px;\n    }\n    \n    .vortex-content-area {\n        margin-left: 190px;\n        width: calc(100% - 190px);\n    }\n}\n",""]);const a=o},540:e=>{e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},601:e=>{e.exports=function(e){return e[1]}},659:e=>{var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var s=void 0!==n.layer;s&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,s&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={id:i,exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;class i{constructor(){this.FpsCounter=0,this.LastFpsUpdate=0,this.FrameCount=0,this.PlayerPosition={x:0,y:0,z:0},this.PlayerName=null,this.GameCanvas=null,this.GameState="unknown",this.HookedElements=new Map,this.BloxdBindings=this.GetBloxdBindings(),this.Callbacks={onFrame:[],onStateChange:[],onCanvasCreate:[],onElementCreate:[],onInventoryChange:[],onHotbarSelection:[],onArmorChange:[],onPlayerNameDetected:[]},this.InitializeHooks()}InitializeHooks(){this.HookAnimationFrame(),this.HookCanvas(),this.HookDOM(),this.HookGameState(),this.HookInventory(),this.HookPlayerName(),this.StartFpsTracking()}RegisterCallback(e,t){this.Callbacks[e]&&this.Callbacks[e].push(t)}TriggerCallbacks(e,t){this.Callbacks[e]&&this.Callbacks[e].forEach(e=>e(t))}HookAnimationFrame(){const e=window.requestAnimationFrame,t=this;let n=0;window.requestAnimationFrame=function(i){return e.call(this,function(e){return t.FrameCount++,e-n>=100&&(t.TriggerCallbacks("onFrame",{timestamp:e,fps:t.FpsCounter}),n=e),i(e)})}}HookCanvas(){const e=HTMLCanvasElement.prototype.getContext,t=this;HTMLCanvasElement.prototype.getContext=function(n,...i){const s=e.call(this,n,...i);return"2d"!==n&&"webgl"!==n&&"webgl2"!==n||("noa-canvas"===this.id||this.width>800)&&(t.GameCanvas=this,t.TriggerCallbacks("onCanvasCreate",{canvas:this,context:s,type:n})),s}}HookDOM(){const e=document.createElement,t=this;document.createElement=function(n,i){const s=e.call(this,n,i);return["div","canvas","button","input"].includes(n.toLowerCase())&&t.TriggerCallbacks("onElementCreate",{element:s,tagName:n}),s}}HookGameState(){new MutationObserver(e=>{e.forEach(e=>{if("childList"===e.type){const t=document.querySelector(".HomePage"),n=t&&"none"!==window.getComputedStyle(t).display?"menu":"game";n!==this.GameState&&(this.GameState=n,this.TriggerCallbacks("onStateChange",{state:n,mutation:e}))}})}).observe(document.body,{childList:!0,subtree:!0})}HookInventory(){this.InventoryObserver=new MutationObserver(e=>{const t=this.ProcessInventoryMutations(e);t.hasChanges&&this.TriggerInventoryCallbacks(t)});const e=()=>{const t=document.querySelector("#game-container, .Game, body");t?this.InventoryObserver.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","style"]}):setTimeout(e,100)};e()}HookPlayerName(){this.PlayerNameObserver=new MutationObserver(e=>{if(!this.PlayerName)for(const t of e)if("childList"===t.type)for(const e of t.addedNodes){if(1!==e.nodeType)continue;const t=e.classList?.contains("MessageWrapper")?e:e.querySelector?.(".MessageWrapper");if(!t)continue;const n=(t.textContent||t.innerText).match(/^(\w+)\s+joined$/);if(n)return this.PlayerName=n[1],this.TriggerCallbacks("onPlayerNameDetected",{playerName:this.PlayerName}),void this.PlayerNameObserver.disconnect()}});const e=()=>{const t=document.querySelector(".Chat, .MessageList");t?this.PlayerNameObserver.observe(t,{childList:!0,subtree:!0}):setTimeout(e,500)};e()}ProcessInventoryMutations(e){const t={hasChanges:!1,hotbarSelection:!1,armorChange:!1,inventoryChange:!1,changedElements:[]};for(const n of e){if("attributes"===n.type&&"class"===n.attributeName){const e=n.target;e.classList.contains("InvenItem")&&e.closest(".HotBarGameItemsContainer")&&(t.hotbarSelection=!0,t.hasChanges=!0,t.changedElements.push({type:"hotbar",element:e,selected:e.classList.contains("Selected")})),e.classList.contains("InvenItem")&&e.closest(".ArmourItemSlots")&&(t.armorChange=!0,t.hasChanges=!0,t.changedElements.push({type:"armor",element:e}))}if("childList"===n.type){const e=Array.from(n.addedNodes),i=Array.from(n.removedNodes);(e.some(e=>this.IsInventoryRelated(e))||i.some(e=>this.IsInventoryRelated(e)))&&(t.inventoryChange=!0,t.hasChanges=!0)}}return t}IsInventoryRelated(e){return e.nodeType===e.ELEMENT_NODE&&[".InvenItem",".ArmourItemSlots",".HotBarGameItemsContainer",".TwoDImageIcon",".BlockItem"].some(t=>e.matches?.(t)||e.querySelector?.(t))}TriggerInventoryCallbacks(e){e.hotbarSelection&&this.TriggerCallbacks("onHotbarSelection",{selectedElement:this.GetSelectedHotbarItem(),allHotbarItems:this.GetHotbarItems(),timestamp:performance.now()}),e.armorChange&&this.TriggerCallbacks("onArmorChange",{armorItems:this.GetArmorItems(),timestamp:performance.now()}),e.inventoryChange&&this.TriggerCallbacks("onInventoryChange",{hotbarItems:this.GetHotbarItems(),armorItems:this.GetArmorItems(),timestamp:performance.now()})}StartFpsTracking(){this.LastFpsUpdate=performance.now(),setInterval(()=>{const e=performance.now(),t=e-this.LastFpsUpdate;this.FpsCounter=Math.round(1e3*this.FrameCount/t),this.FrameCount=0,this.LastFpsUpdate=e},1e3)}GetFps(){return this.FpsCounter}GetGameState(){return this.GameState}GetPlayerName(){return this.PlayerName}GetPlayerPosition(){return this.PlayerPosition}SetPlayerPosition(e,t,n){this.PlayerPosition={x:e,y:t,z:n}}GetGameCanvas(){return this.GameCanvas}GetElement(e){return document.querySelector(e)}GetElements(e){return document.querySelectorAll(e)}GetElementId(e){return document.getElementById(e)}IsInGame(){return"game"===this.GameState}IsInMenu(){return"menu"===this.GameState}HookElement(e,t,n){const i=this.GetElement(e);if(i&&i[t]){const e=i[t];i[t]=function(...t){const i=n.call(this,e,...t);return void 0!==i?i:e.apply(this,t)}}}GetBloxdBindings(){const e={};return Object.keys(localStorage).forEach(t=>{if(t.startsWith("bloxd-bindings-")){const n=t.replace("bloxd-bindings-","");try{e[n]=JSON.parse(localStorage[t])}catch(i){e[n]=[localStorage[t]]}}}),e}DispatchKeyEvent(e,t){const n=new KeyboardEvent(e,{code:t,bubbles:!0,cancelable:!0,composed:!0}),i=this.GetGameCanvas();let s=!1;try{s=document.dispatchEvent(n)||s}catch(e){}try{s=window.dispatchEvent(n)||s}catch(e){}if(i)try{s=i.dispatchEvent(n)||s}catch(e){}return s}PressKey(e){return this.DispatchKeyEvent("keydown",e)}ReleaseKey(e){return this.DispatchKeyEvent("keyup",e)}GetHotbarItems(){const e=document.querySelector(".HotBarGameItemsContainer");return e?Array.from(e.querySelectorAll(".InvenItem")):[]}GetSelectedHotbarItem(){return document.querySelector(".HotBarGameItemsContainer .InvenItem.Selected")}GetArmorItems(){const e=document.querySelector(".ArmourItemSlots");return e?Array.from(e.querySelectorAll(".InvenItem")):[]}ExtractItemImage(e){if(!e)return null;const t=e.querySelector(".TwoDImageIcon");if(t?.style.backgroundImage&&"none"!==t.style.backgroundImage){const n=t.style.backgroundImage.slice(5,-2),i=e.querySelector(".TwoDItemGrayscaleVisiblePng"),s=e.querySelector(".TwoDItemGrayscale");return{type:"image",src:n,hasColorFilter:!(!i||!s),filter:s?.style.filter||null}}const n=e.querySelector(".BlockItem");if(n?.style.backgroundImage&&"none"!==n.style.backgroundImage)return{type:"block",src:n.style.backgroundImage.slice(5,-2),hasColorFilter:!1,filter:null};const i=e.querySelector(".InvenItemUnfilled");return i?.style.backgroundImage?{type:"unfilled",src:i.style.backgroundImage.slice(5,-2),hasColorFilter:!1,filter:null}:null}GetInventoryData(){return{hotbar:{items:this.GetHotbarItems(),selected:this.GetSelectedHotbarItem()},armor:{items:this.GetArmorItems()},timestamp:performance.now()}}DisconnectInventoryObserver(){this.InventoryObserver&&(this.InventoryObserver.disconnect(),this.InventoryObserver=null)}onArmorChange(e){this.RegisterCallback("onArmorChange",e)}onHotbarSelection(e){this.RegisterCallback("onHotbarSelection",e)}onInventoryChange(e){this.RegisterCallback("onInventoryChange",e)}onFrame(e){this.RegisterCallback("onFrame",e)}onStateChange(e){this.RegisterCallback("onStateChange",e)}onCanvasCreate(e){this.RegisterCallback("onCanvasCreate",e)}onElementCreate(e){this.RegisterCallback("onElementCreate",e)}onPlayerNameDetected(e){this.RegisterCallback("onPlayerNameDetected",e)}}i.Instance=new i;const s=i.Instance;!function(){function e(){document.querySelectorAll(".AdBannerContainer").forEach(e=>{e.remove()}),document.querySelectorAll(".PlaywireVideoWrapper ").forEach(e=>{e.remove()}),document.querySelectorAll(".TopCustomGameList").forEach(e=>{e.remove()}),document.querySelectorAll(".HomeHeaderRight.LinkIconList").forEach(e=>{e.remove()}),document.querySelectorAll(".LogoContainer").forEach(e=>{e.style.opacity="0"}),document.title="Bloxd.io - Vortex Client"}e();const t=new MutationObserver(t=>{for(const n of t)n.addedNodes&&n.addedNodes.length>0&&e()}),n=document.body||document.documentElement;n&&t.observe(n,{childList:!0,subtree:!0}),setInterval(e,2e3)}();const r=new class{constructor(){this.Modules=new Map,this.Categories=new Map,this.Keybinds=new Map,this.InitializeKeyHandler();try{const e=localStorage.getItem("vortex:module_states");this.SavedModuleStates=e?JSON.parse(e):{}}catch(e){this.SavedModuleStates={}}window.addEventListener("vortex:module:changed",e=>{try{const{name:t,enabled:n}=e.detail||{};if(!t)return;this.SavedModuleStates[t]=!!n,localStorage.setItem("vortex:module_states",JSON.stringify(this.SavedModuleStates))}catch(e){}})}InitializeKeyHandler(){document.addEventListener("keydown",e=>{const t=e.code;this.Keybinds.has(t)&&(this.Keybinds.get(t).Toggle(),e.preventDefault())})}SetKeybind(e,t){e.Keybind&&this.Keybinds.delete(e.Keybind),t&&(e.Keybind=t,this.Keybinds.set(t,e))}RemoveKeybind(e){e.Keybind&&(this.Keybinds.delete(e.Keybind),e.Keybind=null)}Register(e){if(e.Name&&e.Category){if(console.log("Registering module:",e.Name,"in category:",e.Category),this.Modules.set(e.Name,e),this.Categories.has(e.Category)||this.Categories.set(e.Category,[]),this.Categories.get(e.Category).push(e),e.Keybind&&this.Keybinds.set(e.Keybind,e),"function"==typeof e._loadPersistedSettings)try{e._loadPersistedSettings()}catch(t){console.warn("Failed to load persisted settings for",e.Name,t)}console.log("Category",e.Category,"now has",this.Categories.get(e.Category).length,"modules")}else console.log("Failed to register module - missing name or category:",e)}applySavedStates(){try{if(!this.SavedModuleStates)return;console.log("ModuleManager: applying saved module states",this.SavedModuleStates);for(const[e,t]of Object.entries(this.SavedModuleStates))try{const n=this.GetModule(e);if(!n){console.warn("ModuleManager: saved state for unknown module",e);continue}console.log("ModuleManager: setting",e,"enabled=",!!t),t?n.Enable():n.Disable()}catch(t){console.error("ModuleManager: error applying saved state for",e,t)}}catch(e){console.error("ModuleManager: failed to apply saved states",e)}}GetModule(e){return this.Modules.get(e)}GetModulesByCategory(e){return this.Categories.get(e)||[]}GetAllModules(){return Array.from(this.Modules.values())}GetAllCategories(){return Array.from(this.Categories.keys())}EnableModule(e){const t=this.GetModule(e);t&&t.Enable()}DisableModule(e){const t=this.GetModule(e);t&&t.Disable()}ToggleModule(e){const t=this.GetModule(e);t&&t.Toggle()}UpdateModules(){for(const e of this.Modules.values())e.Enabled&&e.onUpdate()}RenderModules(){for(const e of this.Modules.values())e.Enabled&&e.onRender()}};class o{constructor(e,t,n=null){this.Name=e,this.Category=t,this.Enabled=!1,this.Settings=new Map,this.Keybind=n,this._settingsStorageKey=`vortex:settings:${e}`}SetKeybind(e){this.Keybind=e}RegisterBool(e,t){this.Settings.set(e,{Type:"Boolean",Value:t,DefaultValue:t})}RegisterInt(e,t,n=0,i=100){this.Settings.set(e,{Type:"Integer",Value:t,DefaultValue:t,Min:n,Max:i})}RegisterFloat(e,t,n=0,i=1,s=.1){this.Settings.set(e,{Type:"Float",Value:t,DefaultValue:t,Min:n,Max:i,Step:s})}RegisterString(e,t){this.Settings.set(e,{Type:"String",Value:t,DefaultValue:t})}RegisterColor(e,t){this.Settings.set(e,{Type:"Color",Value:t,DefaultValue:t})}RegisterImgOption(e,t,n={}){this.Settings.set(e,{Type:"ImgOption",Value:t,DefaultValue:t,Options:n})}RegisterOption(e,t,n=[]){this.Settings.set(e,{Type:"Option",Value:t,DefaultValue:t,Options:n})}GetSetting(e){const t=this.Settings.get(e);return t?t.Value:null}SetSetting(e,t){const n=this.Settings.get(e);n&&(n.Value=t,this._persistSettings())}_persistSettings(){try{const e={};for(const[t,n]of this.Settings.entries())e[t]=n.Value;localStorage.setItem(this._settingsStorageKey,JSON.stringify(e))}catch(e){}}_loadPersistedSettings(){try{const e=localStorage.getItem(this._settingsStorageKey);if(!e)return;const t=JSON.parse(e);for(const[e,n]of Object.entries(t)){const t=this.Settings.get(e);t&&(t.Value=n)}}catch(e){}}Enable(){if(!this.Enabled){this.Enabled=!0,this.onEnable();try{window.dispatchEvent(new CustomEvent("vortex:module:changed",{detail:{name:this.Name,enabled:!0}}))}catch(e){}}}Disable(){if(this.Enabled){this.Enabled=!1,this.onDisable();try{window.dispatchEvent(new CustomEvent("vortex:module:changed",{detail:{name:this.Name,enabled:!1}}))}catch(e){}}}Toggle(){this.Enabled?this.Disable():this.Enable()}onEnable(){}onDisable(){}onUpdate(){}onRender(){}}var a=n(72),l=n.n(a),d=n(825),c=n.n(d),h=n(659),p=n.n(h),u=n(56),m=n.n(u),g=n(540),b=n.n(g),x=n(113),y=n.n(x),v=n(376),f={};f.styleTagTransform=y(),f.setAttributes=m(),f.insert=p().bind(null,"head"),f.domAPI=c(),f.insertStyleElement=b(),l()(v.default,f),v.default&&v.default.locals&&v.default.locals;class C extends o{constructor(){super("ClickGui","Visual","ShiftRight"),this.state=this.initializeState(),this.elements=this.initializeElements(),this.config=this.initializeConfig(),this.RegisterColor("Primary Color","#6e2828"),this.RegisterColor("Border Color","#0a0a0a"),this.lastCategoryBeforeSettings=null,this._moduleChangeHandler=null}initializeState(){return{visible:!1,currentCategory:"Combat",showingMainMenu:!1}}initializeElements(){return{hud:null,welcomeMenu:null,mainMenuContainer:null,mainMenu:null,sidebar:null,contentArea:null,tabButtons:[]}}initializeConfig(){return{categoryIcons:{Combat:"ri-sword-fill",Visual:"ri-eye-fill",Player:"ri-walk-fill",Utility:"ri-tools-fill",Cosmetics:"ri-magic-fill"},descriptions:{Combat:"Combat and PvP modules",Visual:"Visual enhancements",Player:"Player movement",Utility:"Utility tools",Cosmetics:"Cosmetic changes"}}}onEnable(){this.injectDependencies(),this.createInterface(),this.setupEventListeners(),this.hide(),this.applyLiveTheme()}onDisable(){this.destroyInterface()}onStateChange(e){"menu"===e.state&&this.state.visible&&this.hide()}injectDependencies(){if(!document.getElementById("remixicon-cdn")){const e=document.createElement("link");e.id="remixicon-cdn",e.rel="stylesheet",e.href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css",document.head.appendChild(e)}}setupEventListeners(){s.onStateChange(this.onStateChange.bind(this)),this._moduleChangeHandler=e=>{try{const t=e.detail||{},n=t.name,i=!!t.enabled;if(!n)return;const s=`[data-module="${n}"]`;(this.elements.contentArea?Array.from(this.elements.contentArea.querySelectorAll(s)):[]).forEach(e=>{e.classList.toggle("enabled",i);const t=e.querySelector(".vortex-switch-input");t&&(t.checked=i)})}catch(e){}},window.addEventListener("vortex:module:changed",this._moduleChangeHandler)}createInterface(){this.createHudOverlay(),this.createWelcomeMenu(),this.createMainMenu()}createHudOverlay(){this.elements.hud=this.createElement("div","vortex-hud"),document.body.appendChild(this.elements.hud)}createWelcomeMenu(){this.elements.welcomeMenu=this.createElement("div","vortex-welcome-menu"),this.elements.hud.appendChild(this.elements.welcomeMenu);const e=this.createElement("div","vortex-container");this.elements.welcomeMenu.appendChild(e);const t=this.createStyledButton({text:"Vortex Client",width:"250px",height:"60px",fontSize:"16px"});t.addEventListener("click",()=>this.showMainMenu()),e.appendChild(t);const n=this.createElement("div","vortex-menu-buttons");this.elements.welcomeMenu.appendChild(n),[{icon:"ri-settings-4-fill",label:"Settings",action:()=>this.showMainMenu()},{icon:"ri-sword-fill",label:"Combat",action:()=>this.showMainMenu()},{icon:"ri-magic-fill",label:"Cosmetics",action:()=>this.showMainMenu()},{icon:"ri-discord-fill",label:"Discord",action:()=>this.openDiscord()}].forEach(({icon:e,label:t,action:i})=>{const s=this.createElement("div","vortex-quick-action"),r=this.createStyledButton({html:`<i class="${e}"></i>`});r.addEventListener("click",i);const o=this.createElement("div","vortex-quick-label");o.textContent=t,s.appendChild(r),s.appendChild(o),n.appendChild(s)})}createMainMenu(){this.elements.mainMenuContainer=this.createElement("div","vortex-main-menu-container"),this.elements.hud.appendChild(this.elements.mainMenuContainer),this.elements.mainMenu=this.createElement("div","vortex-main-menu"),this.elements.mainMenuContainer.appendChild(this.elements.mainMenu),this.createSidebar(),this.createContentArea()}createSidebar(){this.elements.sidebar=this.createElement("div","vortex-sidebar"),this.elements.mainMenu.appendChild(this.elements.sidebar),this.createSidebarHeader(),this.createCategoryTabs(),this.createSidebarFooter()}createSidebarHeader(){const e=this.createElement("div","vortex-logo-wrapper");this.elements.sidebar.appendChild(e);const t=this.createElement("img","vortex-sidebar-logo");t.src="https://i.postimg.cc/DygsH0by/logo-xmas.png",e.appendChild(t);const n=this.createElement("div","vortex-version-label");n.textContent="Version 1.0",e.appendChild(n),this.elements.sidebar.appendChild(this.createElement("div","vortex-separator"))}createCategoryTabs(){r.GetAllCategories().forEach((e,t)=>{const n=this.config.categoryIcons[e]||"ri-apps-fill",i=this.createElement("button","vortex-tab-button");i.innerHTML=`<i class="${n}"></i> ${e}`,0===t&&(i.classList.add("active"),this.state.currentCategory=e),i.addEventListener("click",()=>this.setActiveCategory(i,e)),this.elements.tabButtons.push(i),this.elements.sidebar.appendChild(i)})}createSidebarFooter(){this.elements.sidebar.appendChild(this.createElement("div","vortex-separator")),[{name:"Settings",icon:"ri-settings-5-fill",action:()=>this.showClientSettings()},{name:"Exit",icon:"ri-logout-box-r-fill",action:()=>this.hideMainMenu()}].forEach(({name:e,icon:t,action:n})=>{const i=this.createElement("button","vortex-footer-button");i.innerHTML=`<i class="${t}"></i> ${e}`,n&&i.addEventListener("click",n),this.elements.sidebar.appendChild(i)})}createContentArea(){this.elements.contentArea=this.createElement("div","vortex-content-area"),this.elements.mainMenu.appendChild(this.elements.contentArea),this.setContent(this.state.currentCategory),this.elements.contentArea.addEventListener("click",e=>{e.target.closest&&e.target.closest(".vortex-back-button")&&(e.preventDefault(),e.stopPropagation(),this.animateBack())}),this.elements.hud.addEventListener("click",e=>{e.target.closest&&e.target.closest(".vortex-back-button")&&(e.preventDefault(),e.stopPropagation(),this.animateBack())},!0)}setActiveCategory(e,t){if(this.state.currentCategory===t)return;this.elements.tabButtons.forEach(e=>e.classList.remove("active")),e.classList.add("active"),this.applyLiveTheme();const n=this.inSettingsView?[]:[this.elements.contentArea.querySelector(".vortex-content-header"),this.elements.contentArea.querySelector(".vortex-module-grid")].filter(Boolean),i=()=>{this.state.currentCategory=t,this.inSettingsView=!1,this.setContent(t,!1,!0)};if(n.length){let e=n.length;const t=()=>{e--,e||i()};n.forEach(e=>this.applyAnimation(e,"vortex-category-exit",t,220))}else i()}setContent(e,t=!1,n=!1){this.clearContent(),this.createContentHeader(e,n),this.createModuleGrid(e,t,n)}clearContent(){this.elements.contentArea.innerHTML=""}createContentHeader(e,t=!1){const n=this.createElement("div","vortex-content-header"),i=this.createElement("div","vortex-content-title");i.textContent=e,n.appendChild(i);const s=this.createElement("div","vortex-content-description");s.textContent=`#Modules for ${e.toLowerCase()}`,n.appendChild(s),this.elements.contentArea.appendChild(n),t&&this.applyAnimation(n,"vortex-category-enter")}createModuleGrid(e,t=!1,n=!1){const i=this.createElement("div","vortex-module-grid"),s=r.GetModulesByCategory(e);if(0===s.length){const t=this.createElement("div","vortex-empty-state");t.textContent=`No ${e} modules available`,i.appendChild(t)}else s.forEach(e=>i.appendChild(this.createModuleCard(e)));this.elements.contentArea.appendChild(i),n?this.applyAnimation(i,"vortex-category-enter"):t&&this.applyAnimation(i,"enter")}createModuleCard(e){const t=this.createElement("div","vortex-module-card");t.setAttribute("data-module",e.Name);const n=this.createElement("div","vortex-module-text"),i=this.createElement("div","vortex-module-name");i.textContent=e.Name,n.appendChild(i);const s=this.createElement("div","vortex-module-description");s.textContent=this.config.descriptions[e.Category]||"Module functionality",n.appendChild(s),t.appendChild(n);const r=this.createElement("div","vortex-module-controls");return r.appendChild(this.createToggleSwitch(e)),e.Settings?.size>0&&r.appendChild(this.createSettingsButton(e)),t.appendChild(r),t}createToggleSwitch(e){const t=this.createElement("label","vortex-switch"),n=this.createElement("input","vortex-switch-input");n.type="checkbox",n.checked=e.Enabled,n.addEventListener("change",()=>e.Toggle());const i=this.createElement("span","vortex-switch-slider");return i.appendChild(this.createElement("span","vortex-switch-knob")),t.appendChild(n),t.appendChild(i),t}createSettingsButton(e){const t=this.createElement("button","vortex-settings-button");return t.innerHTML='<i class="ri-settings-4-fill"></i>',t.addEventListener("click",t=>{t.stopPropagation(),this.showModuleSettings(e)}),t}showModuleSettings(e){this.lastCategoryBeforeSettings=this.state.currentCategory,this.inSettingsView=!0,this.clearContent();const t=this.createElement("div","vortex-settings-header"),n=this.createElement("button","vortex-back-button");n.type="button",n.innerHTML='<i class="ri-arrow-left-line"></i>',n.onclick=e=>{e.preventDefault(),e.stopPropagation(),this.animateBack()},t.appendChild(n);const i=this.createElement("div","vortex-settings-title");i.textContent=`${e.Name} Settings`,t.appendChild(i),this.elements.contentArea.appendChild(t),this.inSettingsView||this.elements.contentArea.appendChild(this.createElement("div","vortex-content-separator"));const s=this.createElement("div","vortex-settings-content");if(s.style.scrollBehavior="smooth",e.Settings&&0!==e.Settings.size)for(const[t,n]of e.Settings)s.appendChild(this.createSettingControl(e,t,n));else s.textContent="No configurable settings are available for this module.",s.classList.add("vortex-no-settings");this.elements.contentArea.appendChild(s)}createSettingControl(e,t,n){const i=this.createElement("div","vortex-setting-wrapper"),s=this.createElement("label","vortex-setting-label");s.textContent=t,i.appendChild(s);const r=this.createSettingInput(e,t,n);return r&&i.appendChild(r),i}createSettingInput(e,t,n){const i={Boolean:()=>this.createToggleSwitch({Enabled:n.Value,Toggle:()=>e.SetSetting(t,!n.Value)}),Integer:()=>this.createSliderInput(e,t,n,parseInt),Float:()=>this.createSliderInput(e,t,n,parseFloat),String:()=>this.createTextInput(e,t,n),Color:()=>this.createColorInput(e,t,n),Option:()=>this.createDropdownInput(e,t,n),ImgOption:()=>this.createImageOptionInput(e,t,n)};return i[n.Type]?.()||null}createSliderInput(e,t,n,i){const s=this.createElement("div","vortex-slider-container"),r=this.createElement("input","vortex-slider");r.type="range",r.min=n.Min,r.max=n.Max,r.step=n.Step||1,r.value=n.Value;const o=this.createElement("span","vortex-slider-value");o.textContent="Float"===n.Type?n.Value.toFixed(1):n.Value;const a=()=>{const s=i(r.value);o.textContent="Float"===n.Type?s.toFixed(1):s,e.SetSetting(t,s),"ClickGui"===e.Name&&this.applyLiveTheme()};return r.addEventListener("input",a),r.addEventListener("change",a),s.appendChild(r),s.appendChild(o),s}createTextInput(e,t,n){const i=this.createElement("input","vortex-text-input");i.type="text",i.value=n.Value;const s=()=>{e.SetSetting(t,i.value),"ClickGui"===e.Name&&this.applyLiveTheme()};return i.addEventListener("input",s),i.addEventListener("change",s),i}createColorInput(e,t,n){const i=this.createElement("input","vortex-color-input");i.type="color",i.value=n.Value;const s=()=>{e.SetSetting(t,i.value),"ClickGui"===e.Name&&this.applyLiveTheme()};return i.addEventListener("input",s),i.addEventListener("change",s),i}createDropdownInput(e,t,n){const i=this.createElement("div","vortex-dropdown-wrapper"),s=this.createElement("select","vortex-dropdown");return n.Options.forEach(e=>{const t=this.createElement("option");t.value=e,t.textContent=e,e===n.Value&&(t.selected=!0),s.appendChild(t)}),s.addEventListener("change",()=>{e.SetSetting(t,s.value)}),i.appendChild(s),i}createImageOptionInput(e,t,n){const i=this.createElement("div","vortex-img-option-container"),s=this.createElement("div","vortex-img-option-title");s.textContent=t,i.appendChild(s);const r=this.createElement("div","vortex-img-option-grid");return Object.entries(n.Options).forEach(([i,s])=>{const o=this.createElement("div","vortex-img-option"),a=this.createElement("img","vortex-img-option-thumb"),l=this.createElement("div","vortex-img-caption");a.src=s,a.alt=i,l.textContent=i,i===n.Value&&o.classList.add("selected"),o.appendChild(a),o.appendChild(l),r.appendChild(o),o.addEventListener("click",()=>{e.SetSetting(t,i),r.querySelectorAll(".vortex-img-option").forEach(e=>e.classList.remove("selected")),o.classList.add("selected")})}),i.appendChild(r),i}createElement(e,t=""){const n=document.createElement(e);return t&&(n.className=t),n}createStyledButton(e={}){const t=this.createElement("button","vortex-styled-button");return e.width&&(t.style.width=e.width),e.height&&(t.style.height=e.height),e.fontSize&&(t.style.fontSize=e.fontSize),e.text&&(t.textContent=e.text),e.html&&(t.innerHTML=e.html),t}applyLiveTheme(){const e=this.GetSetting("Primary Color")||"#6e2828",t=this.GetSetting("Border Color")||"#0a0a0a",n="#ffffff14";this.elements.sidebar?.querySelectorAll(".vortex-tab-button").forEach(t=>{t.classList.contains("active")?(t.style.backgroundColor=e,t.style.borderColor="#ffffff1a",t.style.boxShadow="0 0 15px 0 "+e+"40"):(t.style.backgroundColor="",t.style.borderColor="",t.style.boxShadow="")}),this.elements.mainMenu&&(this.elements.mainMenu.style.backgroundColor=t,this.elements.mainMenu.style.borderColor=n,this.elements.mainMenu.style.borderRadius="16px",this.elements.mainMenu.style.setProperty("--panel-before-blur","18px"),this.elements.mainMenu.style.setProperty("--panel-before-bg","#0a0a0a"));const i=this.elements.contentArea?.querySelector(".vortex-module-grid");i&&(i.style.gap="24px",i.style.padding=Math.max(8,Math.min(40,Math.round(12)))+"px"),this.elements.contentArea?.querySelectorAll(".vortex-module-card").forEach(e=>{e.style.backgroundColor="#121212",e.style.borderColor=n,e.style.borderRadius="16px",e.style.padding="24px"})}showMainMenu(){this.state.showingMainMenu=!0,this.elements.welcomeMenu&&this.elements.welcomeMenu.classList.remove("show"),this.elements.tabButtons.forEach(e=>e.classList.remove("active"));const e=this.elements.tabButtons[0];e&&(e.classList.add("active"),this.state.currentCategory=e.textContent.trim()),setTimeout(()=>{this.elements.welcomeMenu&&(this.elements.welcomeMenu.style.display="none"),this.elements.mainMenuContainer&&(this.elements.mainMenuContainer.style.display="flex"),setTimeout(()=>{this.elements.mainMenuContainer&&this.elements.mainMenuContainer.classList.add("show"),this.applyLiveTheme()},10)},200)}hideMainMenu(){this.state.showingMainMenu=!1,this.elements.mainMenuContainer&&this.elements.mainMenuContainer.classList.remove("show"),setTimeout(()=>{this.elements.mainMenuContainer&&(this.elements.mainMenuContainer.style.display="none"),this.elements.welcomeMenu&&(this.elements.welcomeMenu.style.display="flex"),setTimeout(()=>{this.elements.welcomeMenu&&this.elements.welcomeMenu.classList.add("show")},10)},200)}show(){this.state.visible=!0,this.elements.hud&&(this.elements.hud.style.display="flex"),setTimeout(()=>{this.elements.hud&&this.elements.hud.classList.add("show"),this.elements.welcomeMenu&&this.elements.welcomeMenu.classList.add("show")},10),document.pointerLockElement&&document.exitPointerLock()}hide(){this.state.visible=!1,this.elements.hud&&this.elements.hud.classList.remove("show"),this.elements.welcomeMenu&&this.elements.welcomeMenu.classList.remove("show"),this.elements.mainMenuContainer&&this.elements.mainMenuContainer.classList.remove("show"),setTimeout(()=>{this.elements.hud&&(this.elements.hud.style.display="none")},300),this.state.showingMainMenu&&this.hideMainMenu()}Toggle(){this.state.visible?this.hide():this.show()}destroyInterface(){this.elements.hud&&(this.elements.hud.remove(),this.elements.hud=null),this._moduleChangeHandler&&(window.removeEventListener("vortex:module:changed",this._moduleChangeHandler),this._moduleChangeHandler=null)}openDiscord(){window.open("https://discord.gg/U8t5gkqV5M","_blank")}showClientSettings(){this.lastCategoryBeforeSettings=this.state.currentCategory,this.inSettingsView=!0,this.clearContent();const e=this.createElement("div","vortex-settings-header"),t=this.createElement("button","vortex-back-button");t.type="button",t.innerHTML='<i class="ri-arrow-left-line"></i>',t.onclick=e=>{e.preventDefault(),e.stopPropagation(),this.animateBack()},e.appendChild(t);const n=this.createElement("div","vortex-settings-title");n.textContent="Settings",e.appendChild(n),this.elements.contentArea.appendChild(e);const i=this.createElement("div","vortex-settings-content");i.classList.add("vortex-no-settings"),i.innerHTML='\n    <div style="\n        font-size: 18px;\n        opacity: 0.9;\n        line-height: 1.6;\n    ">\n        <strong>Vortex Client</strong><br>\n        is made by \n        <span style="color: var(--primary, #6e2828); font-weight: 600;">\n            GEORGECR\n        </span>\n        and\n        <span style="color: #3b82f6; font-weight: 600;">\n            Epic Gamer\n        </span>\n    </div>\n',this.elements.contentArea.appendChild(i)}toggleCategoryModules(e){const t=r.GetModulesByCategory(e),n=t.some(e=>e.Enabled);t.forEach(e=>{n&&e.Enabled?e.Disable():n||e.Enabled||e.Enable()})}toggleAllModules(){const e=r.GetAllModules(),t=e.some(e=>e.Enabled);e.forEach(e=>{t&&e.Enabled?e.Disable():t||e.Enabled||e.Enable()})}animateBack(){const e=this.lastCategoryBeforeSettings||this.state.currentCategory;this.inSettingsView=!1,this.elements.tabButtons.forEach(e=>e.classList.remove("active"));const t=this.elements.tabButtons.find(t=>t.textContent.trim().startsWith(e));t&&t.classList.add("active"),this.applyLiveTheme(),this.state.currentCategory=e,this.setContent(e,!0),this.lastCategoryBeforeSettings=null}finishBackTransition(e){this.elements.tabButtons.forEach(e=>e.classList.remove("active"));const t=this.elements.tabButtons.find(t=>t.textContent.trim().startsWith(e));t&&t.classList.add("active"),this.applyLiveTheme(),this.state.currentCategory=e,this.setContent(e,!0),this.lastCategoryBeforeSettings=null}applyAnimation(e,t,n,i){if(!e)return void(n&&n());e.classList.remove(t),e.offsetWidth;const s=()=>{e.classList.remove(t),e.removeEventListener("animationend",s),n&&n()};e.addEventListener("animationend",s),e.classList.add(t),i&&setTimeout(()=>{e.removeEventListener("animationend",s),e.classList.remove(t),n&&n()},i+20)}}class w extends o{constructor(){super("Cps Counter","Player"),this.cpsHud=null,this.clicksTextSpan=null,this.updateInterval=null,this.positionInterval=null,this.mouseListener=null,this.leftClicks=0,this.rightClicks=0,s.RegisterCallback("onFrame",()=>this.onFrame())}createHud(){if(this.cpsHud)return;this.cpsHud=document.createElement("div"),this.cpsHud.id="Vortex-Cps",this.cpsHud.style.position="fixed",this.cpsHud.style.color="#fff",this.cpsHud.style.display="none",this.cpsHud.style.alignItems="center",this.cpsHud.style.justifyContent="center",this.cpsHud.style.fontWeight="500",this.cpsHud.style.zIndex="1",this.cpsHud.style.pointerEvents="none",this.cpsHud.style.boxSizing="border-box";const e=document.createElement("span");e.style.color="#cfcfcf",e.innerText="CPS",e.style.marginRight="5px",e.style.fontSize="12px",this.clicksTextSpan=document.createElement("span"),this.clicksTextSpan.style.color="#fff",this.clicksTextSpan.innerText="0 │ 0",this.clicksTextSpan.style.fontSize="12px",this.cpsHud.appendChild(e),this.cpsHud.appendChild(this.clicksTextSpan),document.body.appendChild(this.cpsHud)}startListeners(){this.mouseListener||(this.mouseListener=e=>{0===e.button?this.leftClicks++:2===e.button&&this.rightClicks++},document.addEventListener("mousedown",this.mouseListener)),this.updateInterval||(this.updateInterval=setInterval(()=>{this.clicksTextSpan.innerText=`${this.leftClicks} │ ${this.rightClicks}`,this.leftClicks=0,this.rightClicks=0},1e3)),this.positionInterval||(this.updatePosition(),this.positionInterval=setInterval(()=>this.updatePosition(),300))}stopListeners(){this.mouseListener&&(document.removeEventListener("mousedown",this.mouseListener),this.mouseListener=null),clearInterval(this.updateInterval),clearInterval(this.positionInterval),this.updateInterval=this.positionInterval=null}updatePosition(){if(!this.cpsHud)return;const e=s.GetElement(".InGameHeader");if(!e||0===e.offsetHeight)return void(this.cpsHud.style.display="none");const t=s.GetElement(".FpsWrapperDiv"),n=s.GetElements(".CoordinateUI"),i=t&&"none"!==window.getComputedStyle(t).display,r=Array.from(n).filter(e=>"none"!==window.getComputedStyle(e).display);let o=null;if(o=r.length>0?r.reduce((e,t)=>{const n=t.getBoundingClientRect();return!e||n.right>e.right?n:e},null):i?t.getBoundingClientRect():e.getBoundingClientRect(),o){const t=window.getComputedStyle(e);this.cpsHud.style.top=`${o.top}px`,this.cpsHud.style.left=`${o.right+5}px`,this.cpsHud.style.height=`${e.offsetHeight}px`,this.cpsHud.style.backgroundColor=t.backgroundColor,this.cpsHud.style.backdropFilter=t.backdropFilter,this.cpsHud.style.WebkitBackdropFilter=t.WebkitBackdropFilter,this.cpsHud.style.border=t.border,this.cpsHud.style.borderRadius=t.borderRadius,this.cpsHud.style.boxShadow=t.boxShadow,this.cpsHud.style.padding="0 8px"}}onEnable(){this.createHud()}onDisable(){this.stopListeners(),this.cpsHud&&(this.cpsHud.remove(),this.cpsHud=null),this.clicksTextSpan=null,this.leftClicks=this.rightClicks=0}onFrame(){if(!this.cpsHud)return;const e=s.IsInGame(),t=e?"flex":"none";this.cpsHud.style.display!==t&&(this.cpsHud.style.display=t,e?this.startListeners():this.stopListeners())}}class S extends o{constructor(){super("Ping Counter","Player"),this.pingHud=null,this.msTextSpan=null,this.pingUpdateInterval=null,this.textUpdateInterval=null,this.positionInterval=null,this.ping=0,s.RegisterCallback("onFrame",()=>this.onFrame())}createHud(){if(this.pingHud)return;this.pingHud=document.createElement("div"),this.pingHud.id="Vortex-Ping",this.pingHud.style.position="fixed",this.pingHud.style.color="#fff",this.pingHud.style.display="none",this.pingHud.style.alignItems="center",this.pingHud.style.justifyContent="center",this.pingHud.style.fontWeight="500",this.pingHud.style.zIndex="1",this.pingHud.style.pointerEvents="none",this.pingHud.style.boxSizing="border-box";const e=document.createElement("span");e.style.color="#cfcfcf",e.innerText="PING",e.style.marginRight="5px",e.style.fontSize="12px",this.msTextSpan=document.createElement("span"),this.msTextSpan.style.color="#fff",this.msTextSpan.innerText="--ms",this.msTextSpan.style.fontSize="12px",this.pingHud.appendChild(e),this.pingHud.appendChild(this.msTextSpan),document.body.appendChild(this.pingHud)}startListeners(){this.pingUpdateInterval||(this.updatePing(),this.pingUpdateInterval=setInterval(()=>this.updatePing(),2500)),this.textUpdateInterval||(this.textUpdateInterval=setInterval(()=>this.updateText(),1e3)),this.positionInterval||(this.updatePosition(),this.positionInterval=setInterval(()=>this.updatePosition(),300))}stopListeners(){clearInterval(this.pingUpdateInterval),clearInterval(this.textUpdateInterval),clearInterval(this.positionInterval),this.pingUpdateInterval=this.textUpdateInterval=this.positionInterval=null}updatePing(){const e=Date.now();fetch(window.location.origin,{method:"HEAD",mode:"no-cors",cache:"no-store"}).then(()=>{this.ping=Date.now()-e}).catch(()=>{this.ping=-1})}updateText(){this.msTextSpan&&(this.msTextSpan.innerText=this.ping>=0?`${this.ping}ms`:"--")}updatePosition(){if(!this.pingHud)return;const e=s.GetElement(".InGameHeader");if(!e||0===e.offsetHeight)return void(this.pingHud.style.display="none");const t=s.GetElement(".FpsWrapperDiv"),n=s.GetElements(".CoordinateUI"),i=s.GetElementId("Vortex-Cps"),r=t&&"none"!==window.getComputedStyle(t).display,o=Array.from(n).filter(e=>"none"!==window.getComputedStyle(e).display);let a=null;if(a=i&&"none"!==window.getComputedStyle(i).display?i.getBoundingClientRect():o.length>0?o.reduce((e,t)=>{const n=t.getBoundingClientRect();return!e||n.right>e.right?n:e},null):r?t.getBoundingClientRect():e.getBoundingClientRect(),a){const t=window.getComputedStyle(e);this.pingHud.style.top=`${a.top}px`,this.pingHud.style.left=`${a.right+5}px`,this.pingHud.style.height=`${e.offsetHeight}px`,this.pingHud.style.backgroundColor=t.backgroundColor,this.pingHud.style.backdropFilter=t.backdropFilter,this.pingHud.style.WebkitBackdropFilter=t.WebkitBackdropFilter,this.pingHud.style.border=t.border,this.pingHud.style.borderRadius=t.borderRadius,this.pingHud.style.boxShadow=t.boxShadow,this.pingHud.style.padding="0 8px"}}onEnable(){this.createHud()}onDisable(){this.stopListeners(),this.pingHud&&(this.pingHud.remove(),this.pingHud=null),this.msTextSpan=null,this.ping=0}onFrame(){if(!this.pingHud)return;const e=s.IsInGame(),t=e?"flex":"none";this.pingHud.style.display!==t&&(this.pingHud.style.display=t,e?this.startListeners():this.stopListeners())}}class k extends o{constructor(){super("Armour View","Player"),this.ARMOR_IMG_URL="https://i.postimg.cc/5t7RH0NN/Untitledyjffggggg.png",this.displayBox=null,this.overrideStyleSheet=null,this.updateIntervalId=null,this.RegisterOption("Orientation","Vertical",["Horizontal","Vertical"]),this.RegisterFloat("Scale",1,.5,3,.1),s.onArmorChange(()=>this.updateItems()),s.onFrame(()=>this.onFrame())}setStyles(e,t){Object.assign(e.style,t)}injectOverrideCSS(){this.overrideStyleSheet||(this.overrideStyleSheet=document.createElement("style"),this.overrideStyleSheet.textContent="\n            .InvenItem.inven-item-clone {\n                background: none !important;\n                background-color: transparent !important;\n                border: none !important;\n                outline: none !important;\n                background-image: none !important;\n            }\n        ",document.head.appendChild(this.overrideStyleSheet))}createDisplayBox(){this.displayBox||(this.displayBox=document.createElement("div"),this.displayBox.id="Vortex-ArmourView",this.setStyles(this.displayBox,{position:"fixed",bottom:"20px",right:"20px",display:"flex",padding:"5px",backgroundColor:"transparent",zIndex:"9999",pointerEvents:"none",transformOrigin:"bottom right"}),document.body.appendChild(this.displayBox))}applySettings(){if(!this.displayBox)return;const e=this.GetSetting("Scale"),t=this.GetSetting("Orientation");this.displayBox.style.transform=`scale(${e})`,this.displayBox.style.flexDirection="Horizontal"===t?"row":"column",this.displayBox.style.alignItems="center",this.displayBox.style.width="Horizontal"===t?"auto":"60px",this.displayBox.style.height="Horizontal"===t?"60px":"auto"}updateItems(){if(!this.displayBox)return;this.displayBox.innerHTML="";const e=s.GetArmorItems();e.length&&(this.applySettings(),e.forEach(e=>{const t=e.cloneNode(!0);t.classList.add("inven-item-clone"),t.removeAttribute("id"),this.setStyles(t,{backgroundColor:"transparent",border:"none",marginBottom:"-7px",transform:"scale(1.0)"});const n=t.querySelector(".InvenItemUnfilled");n&&(n.style.backgroundImage=`url("${this.ARMOR_IMG_URL}")`),this.displayBox.appendChild(t)}))}onEnable(){this.injectOverrideCSS(),this.createDisplayBox(),this.updateItems(),this.updateIntervalId=setInterval(()=>this.updateItems(),1e3)}onDisable(){this.updateIntervalId&&(clearInterval(this.updateIntervalId),this.updateIntervalId=null),this.displayBox&&(this.displayBox.remove(),this.displayBox=null),this.overrideStyleSheet&&(this.overrideStyleSheet.remove(),this.overrideStyleSheet=null)}onFrame(){if(!this.displayBox)return;const e=s.IsInGame();this.displayBox.style.display=e?"flex":"none",this.applySettings()}}class E extends o{constructor(){super("Interface","Visual"),this.originalStyles=new Map,this.createdElements=[],this.styleInterval=null,s.RegisterCallback("onFrame",()=>this.onFrame())}setStyle(e,t){this.originalStyles.has(e)||this.originalStyles.set(e,{...e.style}),Object.assign(e.style,t)}createHud(){if(s.IsInGame()){const e=document.querySelector(".InGameHeader");if(!e)return;this.setStyle(e,{backgroundColor:"rgba(30, 33, 41, 0.65)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)",padding:"20px 5px",borderRadius:"10px",border:"1px solid rgba(255, 255, 255, 0.12)",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.08)"}),document.querySelectorAll(".MessageWrapper").forEach(e=>{"transparent"!==getComputedStyle(e).backgroundColor&&this.setStyle(e,{backgroundColor:"transparent"})});const t=document.querySelector(".Chat");if(t){this.setStyle(t,{backgroundColor:"rgba(30, 33, 41, 0.65)",backdropFilter:"blur(8px)",WebkitBackdropFilter:"blur(8px)",borderRadius:"10px",maxHeight:"38vh",maxWidth:"420px",minWidth:"380px",padding:"6px 4px",position:"absolute",border:"1px solid rgba(255, 255, 255, 0.12)",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.08)",transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",overflow:"hidden"});const n=e.getBoundingClientRect();t.style.top=`${n.bottom+5+window.scrollY}px`}if(!document.querySelector(".VortexInGameLogo")){const t=document.createElement("div");t.classList.add("VortexInGameLogo"),Object.assign(t.style,{display:"flex",alignItems:"center",marginRight:"0px"});const n=document.createElement("div");Object.assign(n.style,{backgroundImage:"url(https://i.postimg.cc/WpkLShLM/Vortex-Client-Logo-Bigger.png)",backgroundRepeat:"no-repeat",backgroundSize:"contain",backgroundPosition:"center",color:"#fff",width:"2em",height:"1.5em",display:"flex",alignItems:"center",justifyContent:"center",margin:"0 0 0 3px"});const i=document.createElement("span");i.textContent="ortex 1.0",Object.assign(i.style,{fontSize:"1.1em",fontWeight:"bolder",color:"#fff",display:"flex",alignItems:"center",marginLeft:"-10px",marginTop:"-2px"}),t.appendChild(n),t.appendChild(i),e.prepend(t),this.createdElements.push(t)}["LikeButton","InGameHeaderLogo","InGameHeaderSpacer"].forEach(e=>{document.querySelectorAll("."+e).forEach(e=>{this.setStyle(e,{display:"none",opacity:"0"})})});const n=document.querySelector(".InGameHeaderLobbyName");n&&this.setStyle(n,{color:"gray",borderRadius:"8px"}),["FpsWrapperDiv","CoordinateUI"].forEach(e=>{document.querySelectorAll("."+e).forEach(e=>{this.setStyle(e,{backgroundColor:"rgba(30, 33, 41, 0.65)",backdropFilter:"blur(16px)",WebkitBackdropFilter:"blur(16px)",borderRadius:"10px",paddingTop:"20px",paddingBottom:"20px",border:"1px solid rgba(255, 255, 255, 0.12)",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.08)"})})}),["FpsCanvas","CoordinateCanvas"].forEach(e=>{document.querySelectorAll("."+e).forEach(e=>{this.setStyle(e,{height:"14px"})})})}}onEnable(){this.createHud(),this.styleInterval=setInterval(()=>{this.createHud()},2e3)}onDisable(){this.styleInterval&&(clearInterval(this.styleInterval),this.styleInterval=null);for(let[e,t]of this.originalStyles.entries())Object.assign(e.style,t);this.originalStyles.clear(),this.createdElements.forEach(e=>e.remove()),this.createdElements=[]}onFrame(){}}class I extends o{constructor(){super("Resolution Adjuster","Utility"),this.gameCanvas=null,this.findCanvasInterval=null,this.RegisterFloat("Resolution Scale",1,.1,1,.05),s.RegisterCallback("onFrame",()=>this.onFrame())}applyScaling(){if(!this.gameCanvas)return;const e=this.GetSetting("Resolution Scale"),t=Math.round(window.innerWidth*e),n=Math.round(window.innerHeight*e);this.gameCanvas.width===t&&this.gameCanvas.height===n||(this.gameCanvas.width=t,this.gameCanvas.height=n)}onEnable(){this.findCanvasInterval||(this.findCanvasInterval=setInterval(()=>{this.gameCanvas=s.GetElement("#noa-canvas"),this.gameCanvas&&this.gameCanvas.width>0&&(clearInterval(this.findCanvasInterval),this.findCanvasInterval=null,this.applyScaling())},500))}onDisable(){this.findCanvasInterval&&(clearInterval(this.findCanvasInterval),this.findCanvasInterval=null),this.gameCanvas&&(this.gameCanvas.width=window.innerWidth,this.gameCanvas.height=window.innerHeight,this.gameCanvas=null)}onFrame(){this.gameCanvas&&this.Enabled&&this.applyScaling()}}class M extends o{constructor(){super("Screen Recorder","Utility"),this.RegisterBool("Record Microphone Audio",!1),this.container=null,this.recordBtn=null,this.statusText=null,this.mediaRecorder=null,this.recordedChunks=[],this.recording=!1,s.RegisterCallback("onFrame",()=>this.onFrame())}injectDependencies(){if(!document.getElementById("remixicon-cdn")){const e=document.createElement("link");e.id="remixicon-cdn",e.rel="stylesheet",e.href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css",document.head.appendChild(e)}}createRecButton(){this.container||(this.container=document.createElement("div"),this.container.id="Vortex-Recorder",this.container.style.position="fixed",this.container.style.bottom="15px",this.container.style.left="15px",this.container.style.display="flex",this.container.style.alignItems="center",this.container.style.gap="10px",this.container.style.padding="10px 16px",this.container.style.borderRadius="1rem",this.container.style.background="rgba(20, 20, 30, 0.6)",this.container.style.backdropFilter="blur(8px)",this.container.style.border="1px solid rgba(255, 255, 255, 0.08)",this.container.style.boxShadow="0 4px 12px rgba(0,0,0,0.4)",this.container.style.zIndex="99999",this.container.style.color="white",this.container.style.fontFamily="Arial, sans-serif",this.container.style.transition="transform 0.2s ease, box-shadow 0.2s ease",this.container.onmouseenter=()=>{this.container.style.transform="scale(1.03)",this.container.style.boxShadow="0 6px 18px rgba(0,0,0,0.5)"},this.container.onmouseleave=()=>{this.container.style.transform="scale(1)",this.container.style.boxShadow="0 4px 12px rgba(0,0,0,0.4)"},this.recordBtn=document.createElement("button"),this.recordBtn.innerHTML='<i class="ri-camera-fill"></i>',this.recordBtn.style.width="42px",this.recordBtn.style.height="42px",this.recordBtn.style.borderRadius="50%",this.recordBtn.style.border="none",this.recordBtn.style.background="linear-gradient(45deg, rgba(0, 4, 9, 1) 40%, rgba(14, 14, 19, 1) 100%)",this.recordBtn.style.color="white",this.recordBtn.style.cursor="pointer",this.recordBtn.style.fontSize="18px",this.recordBtn.style.display="flex",this.recordBtn.style.alignItems="center",this.recordBtn.style.justifyContent="center",this.recordBtn.style.transition="background 0.2s, transform 0.2s",this.recordBtn.style.boxShadow="0 2px 6px rgba(0,0,0,0.3)",this.recordBtn.onmouseenter=()=>{this.recordBtn.style.transform="scale(1.1)"},this.recordBtn.onmouseleave=()=>{this.recordBtn.style.transform="scale(1)"},this.recordBtn.addEventListener("click",()=>this.toggleRecording()),this.statusText=document.createElement("span"),this.statusText.innerText="Press to Record",this.statusText.style.fontSize="14px",this.statusText.style.opacity="0.9",this.statusText.style.userSelect="none",this.container.appendChild(this.recordBtn),this.container.appendChild(this.statusText),document.body.appendChild(this.container))}async toggleRecording(){if(this.recording)this.stopRecording();else try{const e=await navigator.mediaDevices.getDisplayMedia({audio:!0,video:{displaySurface:"monitor"}});this.mediaRecorder=new MediaRecorder(e,{mimeType:"video/webm; codecs=vp9"}),this.recordedChunks=[],this.mediaRecorder.ondataavailable=e=>{e.data.size>0&&this.recordedChunks.push(e.data)},this.mediaRecorder.onstop=()=>{const e=new Blob(this.recordedChunks,{type:"video/mp4"}),t=URL.createObjectURL(e),n=document.createElement("a");n.href=t,n.download="vortex-screen-recorder.mp4",n.click(),URL.revokeObjectURL(t)},this.mediaRecorder.start(),this.recording=!0,this.updateButtonState(!0),e.getVideoTracks()[0].onended=()=>{this.recording&&this.stopRecording()}}catch(e){}}stopRecording(){this.mediaRecorder&&this.recording&&(this.mediaRecorder.stop(),this.recording=!1,this.updateButtonState(!1))}updateButtonState(e){e?(this.recordBtn.innerHTML='<i class="ri-record-circle-fill"></i>',this.recordBtn.style.background="linear-gradient(45deg, rgba(120, 20, 20, 1) 40%, rgba(160, 40, 40, 1) 100%)",this.statusText.innerText="Recording...",this.statusText.style.color="#ff6666"):(this.recordBtn.innerHTML='<i class="ri-camera-fill"></i>',this.recordBtn.style.background="linear-gradient(45deg, rgba(0, 4, 9, 1) 40%, rgba(14, 14, 19, 1) 100%)",this.statusText.innerText="Press to Record",this.statusText.style.color="white")}applySettings(){this.GetSetting("Record Microphone Audio")}onEnable(){this.createRecButton(),this.injectDependencies()}onDisable(){this.container&&(this.container.remove(),this.container=null,this.recordBtn=null,this.statusText=null)}onFrame(){this.Enabled&&this.applySettings()}}class L extends o{constructor(){super("Nametags","Cosmetics"),this.nametagImageUrls={Space:"https://i.postimg.cc/NMG91FWH/space-BG-loco.jpg",Galaxy:"https://i.postimg.cc/1XzTTzhW/galaxy.png",Skies:"https://i.postimg.cc/NfRTSvBt/custom-moving-skies-1-androidioswin10fps-friendly-5.webp",Green:"https://i.postimg.cc/sDFz3SYL/360-F-895896334-b-W7z7d5dwbj-VRsbv-Dmz-Lu-EP6H2w-QV2r-Q.jpg",Banner:"https://i.postimg.cc/tC9CqKFp/banner.jpg",Mountains:"https://i.postimg.cc/906dTW28/15220236-xl.webp",PixelClouds:"https://i.postimg.cc/1RfHnC6F/2023-12-19-11-14-34.png",Sunset:"https://i.postimg.cc/ZKNxjWwK/6843ea27816c80d1186125192cbf582ece88036e-2-690x326.jpg",Trees:"https://i.postimg.cc/8c6rMD31/abstract-fantasy-autumn-nature-scenery-wallpaper-free-image.webp",Nebula:"https://i.postimg.cc/bwb6mgmr/1.webp"},this.RegisterImgOption(" ","Space",this.nametagImageUrls),this.username="unknown",this.db=null,this.patterns={},this.originalGetContext=null,this.unsubscribeSnapshot=null,this.getNameIntervalId=null,this.firebaseConfig={apiKey:"AIzaSyCy7Ql5-FfZTMjbtxFmZ-m9hWTWOirgtuk",authDomain:"vortex-client-database-cd48a.firebaseapp.com",projectId:"vortex-client-database-cd48a"},s.onFrame(()=>this.onFrame())}onEnable(){this.originalGetContext||(this.loadFirebaseScripts(()=>{0===firebase.apps.length&&firebase.initializeApp(this.firebaseConfig),this.db=firebase.firestore(),this.startSnapshotListener(),this.patchCanvas()}),this.getNameIntervalId=setInterval(()=>this.updateUsername(),1e3))}onDisable(){this.getNameIntervalId&&clearInterval(this.getNameIntervalId),this.unsubscribeSnapshot&&this.unsubscribeSnapshot(),this.originalGetContext&&(HTMLCanvasElement.prototype.getContext=this.originalGetContext),this.getNameIntervalId=null,this.unsubscribeSnapshot=null,this.originalGetContext=null,this.db=null,this.patterns={}}loadFirebaseScripts(e){if(window.firebase&&window.firebase.firestore)return e();const t=["https://www.gstatic.com/firebasejs/9.6.1/firebase-app-compat.js","https://www.gstatic.com/firebasejs/9.6.1/firebase-firestore-compat.js"];let n=0;t.forEach(i=>{const s=document.createElement("script");s.src=i,s.onload=()=>{n++,n===t.length&&e()},document.head.appendChild(s)})}startSnapshotListener(){this.unsubscribeSnapshot=this.db.collection("nametags").onSnapshot(e=>{e.forEach(e=>{const{name:t,imgUrl:n}=e.data(),i=new Image;i.crossOrigin="anonymous",i.src=n,this.patterns[t]={img:i,pattern:null}})})}updateUsername(){const e=document.querySelector(".PlayerNamePreview")?.textContent?.trim();e&&e!==this.username&&(this.username=e)}patchCanvas(){if(this.originalGetContext)return;this.originalGetContext=HTMLCanvasElement.prototype.getContext;const e=this;HTMLCanvasElement.prototype.getContext=function(t,...n){const i=e.originalGetContext.call(this,t,...n);return"2d"===t&&e.hookCanvas(i),i}}hookCanvas(e){if(e._hooked)return;e._hooked=!0;const t=this,n=e.fillText;e.fillText=function(e,i,s,r){const o=i>=0&&i<=800&&s>=30&&s<=300;if("string"==typeof e&&e.length>1&&o&&t.patterns[e]){const o=t.patterns[e];this.save(),this.globalCompositeOperation="source-over",n.call(this,e,i,s,r);const a=this.fillRect;this.fillRect=function(e,t,n,i){if(!(n>30&&n<200&&i>=10&&i<=25&&t>=30&&t<=300)){this.save();try{o.img.complete&&o.img.naturalWidth>0&&(o.pattern||(o.pattern=this.createPattern(o.img,"repeat")),this.fillStyle=o.pattern)}catch(e){}a.call(this,e,t,n,i),this.restore()}},this.restore()}else this.save(),n.call(this,e,i,s,r),this.restore()}}setNametag(e){this.db&&"unknown"!==this.username&&e?this.db.collection("nametags").doc(this.username).set({name:this.username,imgUrl:e}).catch(e=>console.error("Nametag set failed:",e)):alert("You have to be in menu to set your nametag")}getUsername(){return this.username}onFrame(){const e=this.GetSetting(" "),t=this.nametagImageUrls[e];"unknown"!==this.username&&t&&this.db&&this.setNametag(t)}}class B extends o{constructor(){super("Crosshair","Player"),this.RegisterColor("Color","#ffffff"),this.RegisterFloat("Scale",1,.5,4,.1),this.RegisterOption("Shape","Default",["Default","Cross","Square","Dot","Arrow","Crossed"]),this.crosshairElement=null,this.GameCrosshair=null,s.onFrame(()=>this.onFrame())}renderCrosshair(){if(!this.crosshairElement)return;const e=this.GetSetting("Color"),t=this.GetSetting("Scale"),n=this.GetSetting("Shape"),i=Math.round(4*t);let s="";switch(n){case"Dot":s=`<div style="width:${2*i}px;height:${2*i}px;background:${e};border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);"></div>`;break;case"Arrow":s=`\n                <div style="width:2px;height:${2.5*i}px;background:${e};position:absolute;top:50%;left:50%;transform-origin:bottom center;transform:translate(-50%,0) rotate(-40deg);"></div>\n                <div style="width:2px;height:${2.5*i}px;background:${e};position:absolute;top:50%;left:50%;transform-origin:bottom center;transform:translate(-50%,0) rotate(40deg);"></div>\n            `;break;case"Crossed":s=`\n                <div style="width:2px;height:${3*i}px;background:${e};position:absolute;top:50%;left:50%;transform-origin:center;transform:translate(-50%,-50%) rotate(45deg);"></div>\n                <div style="width:2px;height:${3*i}px;background:${e};position:absolute;top:50%;left:50%;transform-origin:center;transform:translate(-50%,-50%) rotate(-45deg);"></div>\n            `;break;case"Cross":s=`\n                <div style="position:absolute;width:3px;height:${2*i}px;background:${e};top:calc(50% - ${3*i}px);left:50%;transform:translateX(-50%);"></div>\n                <div style="position:absolute;width:3px;height:${2*i}px;background:${e};top:calc(50% + ${i}px);left:50%;transform:translateX(-50%);"></div>\n                <div style="position:absolute;width:${2*i}px;height:3px;background:${e};top:50%;left:calc(50% - ${3*i}px);transform:translateY(-50%);"></div>\n                <div style="position:absolute;width:${2*i}px;height:3px;background:${e};top:50%;left:calc(50% + ${i}px);transform:translateY(-50%);"></div>\n            `;break;case"Square":const t=4*i;s=`<div style="position:absolute;width:${t}px;height:${t}px;border:2px solid ${e};background:transparent;top:50%;left:50%;transform:translate(-50%,-50%);"></div>`;break;default:s=`\n                <div style="position:absolute;width:3px;height:${4*i}px;background:${e};top:50%;left:50%;transform:translate(-50%,-50%);"></div>\n                <div style="position:absolute;width:${4*i}px;height:3px;background:${e};top:50%;left:50%;transform:translate(-50%,-50%);"></div>\n            `}this.crosshairElement.innerHTML=s}applySettings(){this.renderCrosshair()}onEnable(){this.crosshairElement||(this.GameCrosshair=s.GetElement(".Crosshair"),this.GameCrosshair.style.display="none",this.crosshairElement=document.createElement("div"),this.crosshairElement.id="Vortex-Crosshair",Object.assign(this.crosshairElement.style,{position:"fixed",top:"50%",left:"50%",zIndex:"99999",pointerEvents:"none"}),document.body.appendChild(this.crosshairElement),this.renderCrosshair())}onDisable(){this.crosshairElement&&(this.crosshairElement.remove(),this.crosshairElement=null),this.GameCrosshair=s.GetElement(".Crosshair"),this.GameCrosshair&&(this.GameCrosshair.style.display="block")}onFrame(){if(!this.crosshairElement)return;this.GameCrosshair=s.GetElement(".Crosshair"),this.GameCrosshair&&"none"!==this.GameCrosshair.style.display&&(this.GameCrosshair.style.display="none");const e=s.IsInGame?.()??!0;this.crosshairElement.style.display=e?"flex":"none",this.applySettings()}}class T extends o{constructor(){super("Keystrokes","Combat"),this.originalBgColor="rgba(30, 33, 41, 0.95)",this.originalTextColor="white",this.activeBgColor="rgba(110, 40, 40, 0.95)",this.activeTextColor="black",this.keyContainer=null,this.keyW=null,this.keyA=null,this.keyS=null,this.keyD=null,this.keySpace=null,this.keyLMB=null,this.keyRMB=null,this.listeners=[],s.RegisterCallback("onFrame",()=>this.onFrame())}normalizeBinding(e){return e?e.startsWith("Key")||e.startsWith("Arrow")||"Space"===e?e:1===e.length?"Key"+e.toUpperCase():e:"Key?"}codeToLabel(e){return e?e.startsWith("Key")?e.slice(3):"Space"===e?"SPACE":e:"?"}createHud(){if(this.keyContainer)return;const e=this.normalizeBinding(s.BloxdBindings.forward?.[0]||"KeyW"),t=this.normalizeBinding(s.BloxdBindings.left?.[0]||"KeyA"),n=this.normalizeBinding(s.BloxdBindings.back?.[0]||"KeyS"),i=this.normalizeBinding(s.BloxdBindings.right?.[0]||"KeyD"),r=this.normalizeBinding(s.BloxdBindings.jump?.[0]||"Space");this.bindings={Forward:e,Left:t,Backward:n,Right:i,Jump:r},this.keyContainer=document.createElement("div"),this.keyContainer.id="Vortex-Keystrokes",this.keyContainer.style.position="fixed",this.keyContainer.style.bottom="90px",this.keyContainer.style.left="20px",this.keyContainer.style.display="grid",this.keyContainer.style.gridTemplateColumns="repeat(3, 65px)",this.keyContainer.style.justifyItems="center",this.keyContainer.style.gap="5px",this.keyContainer.style.zIndex="9999";const o=e=>{const t=document.createElement("div");return t.className="key",t.textContent=e,t.style.width="60px",t.style.height="60px",t.style.display="flex",t.style.alignItems="center",t.style.justifyContent="center",t.style.border="1px solid rgba(255, 255, 255, 0.08)",t.style.boxShadow="0 4px 12px rgba(0,0,0,0.4)",t.style.fontFamily="sans-serif",t.style.fontSize="18px",t.style.fontWeight="bold",t.style.color=this.originalTextColor,t.style.backgroundColor=this.originalBgColor,t.style.borderRadius="0.7rem",t.style.transition="background-color 0.1s ease, color 0.1s ease",t.style.boxSizing="border-box",t};this.keyW=o(this.codeToLabel(e)),this.keyA=o(this.codeToLabel(t)),this.keyS=o(this.codeToLabel(n)),this.keyD=o(this.codeToLabel(i)),this.keySpace=o(this.codeToLabel(r)),this.keyLMB=o("LMB"),this.keyRMB=o("RMB"),this.keyW.style.gridArea="1 / 2 / 2 / 3",this.keyA.style.gridArea="2 / 1 / 3 / 2",this.keyS.style.gridArea="2 / 2 / 3 / 3",this.keyD.style.gridArea="2 / 3 / 3 / 4",this.keySpace.style.gridArea="4 / 1 / 5 / 4",this.keySpace.style.width="100%";const a=document.createElement("div");a.id="mouse-container",a.style.gridArea="3 / 1 / 4 / 4",a.style.display="flex",a.style.justifyContent="center",a.style.width="100%",a.style.gap="5px",this.keyLMB.style.flex="1",this.keyRMB.style.flex="1",a.appendChild(this.keyLMB),a.appendChild(this.keyRMB),this.keyContainer.appendChild(this.keyW),this.keyContainer.appendChild(this.keyA),this.keyContainer.appendChild(this.keyS),this.keyContainer.appendChild(this.keyD),this.keyContainer.appendChild(a),this.keyContainer.appendChild(this.keySpace),document.body.appendChild(this.keyContainer)}startListeners(){if(this.listeners.length)return;const{Forward:e,Left:t,Backward:n,Right:i,Jump:s}=this.bindings,r={[e]:this.keyW,[t]:this.keyA,[n]:this.keyS,[i]:this.keyD,[s]:this.keySpace},o=e=>{const t=r[e.code];t&&(t.style.backgroundColor=this.activeBgColor,t.style.color=this.activeTextColor)},a=e=>{const t=r[e.code];t&&(t.style.backgroundColor=this.originalBgColor,t.style.color=this.originalTextColor)},l=e=>{0===e.button?(this.keyLMB.style.backgroundColor=this.activeBgColor,this.keyLMB.style.color=this.activeTextColor):2===e.button&&(this.keyRMB.style.backgroundColor=this.activeBgColor,this.keyRMB.style.color=this.activeTextColor)},d=e=>{0===e.button?(this.keyLMB.style.backgroundColor=this.originalBgColor,this.keyLMB.style.color=this.originalTextColor):2===e.button&&(this.keyRMB.style.backgroundColor=this.originalBgColor,this.keyRMB.style.color=this.originalTextColor)},c=e=>e.preventDefault();window.addEventListener("keydown",o),window.addEventListener("keyup",a),window.addEventListener("mousedown",l),window.addEventListener("mouseup",d),window.addEventListener("contextmenu",c),this.listeners=[["keydown",o],["keyup",a],["mousedown",l],["mouseup",d],["contextmenu",c]]}stopListeners(){this.listeners.forEach(([e,t])=>window.removeEventListener(e,t)),this.listeners=[]}onEnable(){this.createHud(),this.startListeners()}onDisable(){this.stopListeners(),this.keyContainer&&(this.keyContainer.remove(),this.keyContainer=null)}onFrame(){if(!this.keyContainer)return;const e=s.IsInGame();this.keyContainer.style.display=e?"grid":"none"}}class H extends o{constructor(){super("Cinematic Mode","Utility"),this.listener=null,this.RegisterString("Cinematic Keybind","H"),s.RegisterCallback("onFrame",()=>this.onFrame())}startListeners(){this.listener||(this.listener=e=>{const t=this.GetSetting("Cinematic Keybind");if(!t)return;if(e.key.toLowerCase()!==t.toLowerCase())return;if(!s.IsInGame())return;const n=s.GetElement(".WholeAppWrapper"),i=s.GetElement(".BottomMiddleElements"),r=s.GetElement("#Vortex-Cps"),o=s.GetElement("#Vortex-Ping"),a=s.GetElement("#Vortex-Crosshair"),l=s.GetElement("#Vortex-ArmourView"),d=s.GetElement("#Vortex-Keystrokes"),c=s.GetElement("#Vortex-Recorder"),h=e=>{e&&(e.style.visibility="hidden"===e.style.visibility?"visible":"hidden")};h(i),h(n),h(r),h(o),h(a),h(l),h(d),h(c)},document.addEventListener("keydown",this.listener))}stopListeners(){this.listener&&(document.removeEventListener("keydown",this.listener),this.listener=null)}onEnable(){this.startListeners()}onDisable(){this.stopListeners()}onFrame(){s.IsInGame()?this.startListeners():this.stopListeners()}}new class{constructor(){this.InitializeModules(),this.StartRenderLoop(),this.StartUpdateLoop()}InitializeModules(){const e=new C;r.Register(e);const t=(e,t)=>{try{const t=new e;r.Register(t)}catch(n){console.error("Failed to construct/register module",t||e.name,n)}};t(w,"Cps"),t(T,"Keystrokes"),t(S,"Ping"),t(E,"Interface"),t(I,"Resolution"),t(M,"ScreenRecorder"),t(k,"ArmourView"),t(L,"Nametags"),t(B,"Crosshairs"),t(H,"CinematicMode"),setTimeout(()=>{try{"function"==typeof r.applySavedStates&&r.applySavedStates()}catch(e){console.error("applySavedStates error",e)}try{e.Enable()}catch(e){console.error("ClickGui enable error",e)}},100)}StartRenderLoop(){const e=()=>{r.RenderModules(),requestAnimationFrame(e)};requestAnimationFrame(e)}StartUpdateLoop(){setInterval(()=>{r.UpdateModules()},50)}}})();