Greasy Fork

Greasy Fork is available in English.

gartic.io chat sınırsız kick profil fotoğrafı açıcı AFK (gifler tarayıcıda görünürler)

gartic.io chati yeniden tasarlamayı denedim hatası falan varsa discord: orochi.iori

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         gartic.io chat sınırsız kick profil fotoğrafı açıcı AFK (gifler tarayıcıda görünürler)
// @namespace    zenin
// @version      0.4
// @description  gartic.io chati yeniden tasarlamayı denedim hatası falan varsa discord: orochi.iori
// @author       sho zenin
// @match        *://gartic.io/*
// @run-at       document-start
// @grant        unsafeWindow
// @grant GM_addStyle
// ==/UserScript==
const win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
win.naoya = [];
let heartbeatinterval = null;
win.toji = null;
win.mallarxd = new Set();
win.ignoredusers = new Set();
let naoyaid = null;
let naoyaindex = null;
let projectioncomplete = !1;
let lastsentmessage = "";
let messagequeue = [];
let isprocessingqueue = !1;
const invisiblechar = "⁣";
const bypassandsend = (msg) => {
    if (!win.mkyws || !naoyaid) return;
    const processword = (text) => text.split('').join(invisiblechar + invisiblechar);
    let words = msg.split(' ');
    let chunks = [];
    let currentchunk = "";
    words.forEach((word) => {
        let processedword = processword(word);
        let potentialchunk = currentchunk === "" ? processedword : currentchunk + " " + processedword;
        if (potentialchunk.length <= 100) {
            currentchunk = potentialchunk
        } else {
            if (currentchunk !== "") chunks.push(currentchunk);
            currentchunk = processedword
        }
    });
    if (currentchunk !== "") {
        chunks.push(currentchunk)
    }
    chunks.forEach((chunk, index) => {
        setTimeout(() => {
            if (win.mkyws && win.mkyws.readyState === WebSocket.OPEN) {
                win.mkyws.send(`42[11,"${naoyaid}","${chunk}"]`)
            }
        }, index * 800)
    })
};
const stylee = document.createElement('style');
stylee.textContent = ` #chat .scrollBar,#chat .scrollTrack,#chat .history>.scrollBar,#chat .history>.scrollTrack{display:none!important;pointer-events:none!important;opacity:0!important}#chat .history .scroll{overflow-y:scroll!important;overflow-x:hidden!important;display:flex!important;flex-direction:column!important;height:100%!important;scrollbar-width:thin!important;scrollbar-color:#400 #000000!important;pointer-events:auto!important;scroll-behavior:auto!important;-webkit-overflow-scrolling:touch!important}#chat .history .scroll::-webkit-scrollbar{width:6px}#chat .history .scroll::-webkit-scrollbar-track{background:#000}#chat .history .scroll::-webkit-scrollbar-thumb{background:#400;border-radius:10px;border:1px solid red}#chat .scrollElements{display:flex!important;flex-direction:column!important;gap:2px;padding:10px 0!important;min-height:min-content;pointer-events:auto!important}#custom-chat-wrapper{width:100%;padding:0;background:#fff0}
#customgarticinput{width:100%;height:38px;background:#ffffff!important;color:#000000!important;border:2px solid #b7d1da!important;border-radius:8px;padding:0 12px;font-family:'Orbitron',sans-serif;font-size:15px;font-weight:600;outline:none;box-sizing:border-box}.naoyamesaj-container{display:flex;align-items:flex-end;max-width:90%;width:fit-content;margin:1px 10px;animation:fadeIn 0.15s ease;position:relative}.naoyamesaj-container .m-avatar{width:32px;height:32px;border-radius:50%;background-size:cover;background-position:center;border:1px solid #ddd;flex-shrink:0}.naoyamesaj-container,.naoyamesaj-nick{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.naoyamesaj-bubble{background:#fff;color:#333;padding:8px 14px;border-radius:15px;font-size:16px!important;box-shadow:0 1px 3px rgb(0 0 0 / .2);word-break:break-word;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.naoyamesaj-nick{font-size:13px!important;font-weight:900;color:#fff;text-transform:none!important;margin:2px 5px;text-shadow:1px 1px 2px #000}.naoyamesaj-container.my-message{align-self:flex-end;flex-direction:row-reverse}.naoyamesaj-container.my-message .naoyamesaj-bubble{background:#007bff;color:#fff}.naoyamesaj-container.other-message{align-self:flex-start}
@media screen and (min-width:769px){.naoyamesaj-container{display:flex!important;flex-direction:row!important;align-items:baseline!important;justify-content:flex-start!important;max-width:100%!important;width:100%!important;margin:0!important;padding:2px 8px!important;box-sizing:border-box!important;word-break:break-word!important}.naoyamesaj-container .m-avatar{display:none!important}.naoyamesaj-content{display:inline!important;width:100%!important;word-break:break-word!important}.naoyamesaj-bubble{display:inline!important;background:transparent!important;box-shadow:none!important;padding:0!important;color:#b1b3b9!important;font-size:17px!important;border:none!important;font-family:sans-serif;word-break:break-word!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}.naoyamesaj-nick{display:inline!important;font-size:17px!important;color:#8e9297!important;margin:0!important;text-transform:none!important;font-weight:bold!important;text-shadow:none!important}.naoyamesaj-nick::after{content:"";color:#b1b3b9;margin-right:4px;font-weight:400}}@media screen and (max-width:768px){#__next>div.nextCenter>div:nth-child(3){display:none!important}}@media screen and (max-width:768px){#chat .history .scroll{display:block!important;overflow-y:auto!important;-webkit-overflow-scrolling:auto!important}}@media screen and (min-width:1025px){#chat .scrollBar,#chat .scrollTrack,#chat .history>.scrollBar,#chat .history>.scrollTrack,#chat .history .scroll{overflow-y:scroll!important;overflow-x:hidden!important;display:flex!important;flex-direction:column!important;height:100%!important;scrollbar-width:thin!important;scrollbar-color:#400 #000000!important;pointer-events:auto!important;scroll-behavior:auto!important;-webkit-overflow-scrolling:touch!important}#interaction{display:flex!important;flex-direction:row!important;gap:0!important;width:100%!important}#answer{flex:1!important;width:50%!important;min-width:0!important;max-width:none!important}#chat{display:flex!important;flex-direction:column!important;flex:1!important;width:50%!important;min-width:0!important;max-width:none!important;visibility:visible!important}#chat .history{background:transparent!important;border:none!important}}#interaction>div.actionsMobile>button.chat{position:relative!important}.chat-badge{position:absolute;top:-4px;left:-4px;background:red;color:#fff;font-size:11px;font-weight:700;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;z-index:100;pointer-events:none;font-family:sans-serif;box-shadow:0 1px 4px rgb(0 0 0 / .4)}#chat.active~#interaction button.chat .chat-badge{display:none!important}.naoyamesaj-nick{cursor:pointer}.naoyamesaj-container{cursor:default}@keyframes fadeIn{from{opacity:0}to{opacity:1}}`;
document.head.appendChild(stylee);
let userscrolling = !1;
let scrolltimeout = null;
const forcescroll = (force = !1) => {
    const chatbox = document.querySelector('#chat .history .scroll') || document.querySelector('#chat .scroll') || document.querySelector('#chat .history') || document.querySelector("#chat > div.history > div > div.scrollElements");
    if (!chatbox) return;
    chatbox.scrollTop = chatbox.scrollHeight;
    requestAnimationFrame(() => {
        chatbox.scrollTop = chatbox.scrollHeight;
        setTimeout(() => {
            chatbox.scrollTop = chatbox.scrollHeight
        }, 50)
    })
};
let unreadcount = 0;
const updatebadge = () => {
    const chatbutton = document.querySelector('#interaction > div.actionsMobile > button.chat');
    const chatbox = document.querySelector('#chat');
    if (!chatbutton) return;
    if ((chatbox && chatbox.classList.contains('active')) || unreadcount === 0) {
        unreadcount = 0;
        const existingbadge = chatbutton.querySelector('.chat-badge');
        if (existingbadge) existingbadge.remove();
        return
    }
    let badge = chatbutton.querySelector('.chat-badge');
    if (!badge) {
        badge = document.createElement('span');
        badge.className = 'chat-badge';
        chatbutton.appendChild(badge)
    }
    badge.textContent = unreadcount > 9 ? '9+' : unreadcount
};
const enablewheelfix = () => {
    const chatbox = document.querySelector('#chat .history .scroll');
    if (!chatbox || chatbox.getAttribute('data-wheelhooked') === "true") return;
    chatbox.setAttribute('data-wheelhooked', "true");
    const bazszszsllattt = () => {
        userscrolling = !0;
        clearTimeout(scrolltimeout)
    };
    const durrrrddrrrrr = () => {
        clearTimeout(scrolltimeout);
        scrolltimeout = setTimeout(() => {
            const wtfbud = document.querySelector('#chat .history .scroll');
            if (wtfbud) {
                const ohmannn = wtfbud.scrollHeight - wtfbud.scrollTop - wtfbud.clientHeight < 30;
                if (ohmannn) {
                    userscrolling = !1
                }
            }
        }, 1500)
    };
    chatbox.addEventListener('wheel', (e) => {
        bazszszsllattt();
        chatbox.scrollTop += e.deltaY;
        durrrrddrrrrr()
    }, {
        passive: !1
    });
    chatbox.addEventListener('touchstart', bazszszsllattt, {
        passive: !0
    });
    chatbox.addEventListener('touchmove', bazszszsllattt, {
        passive: !0
    });
    chatbox.addEventListener('touchend', durrrrddrrrrr, {
        passive: !0
    })
};
const kurapika = (url) => {
    if (projectioncomplete || !url) return !1;
    const kimkimegiriyoollmmm = document.querySelector('#screens > header > div > div.userLogged > div.infos > a');
    const benseninanonim = document.querySelector('#screens > div > div.content.home > div.anonymus > div.form > a');
    if (!kimkimegiriyoollmmm && !benseninanonim) return !1;
    if (url.includes('googleusercontent.com')) {
        const clean = url.split('=')[0] + '=s512';
        win.toji = clean;
        projectioncomplete = !0;
        heavenrestriction(clean);
        return !0
    }
    return !1
};
const originalimage = win.Image;
win.Image = function(...args) {
    const img = new originalimage(...args);
    const desc = Object.getOwnPropertyDescriptor(HTMLImageElement.prototype, 'src');
    Object.defineProperty(img, 'src', {
        set(value) {
            if (!projectioncomplete) kurapika(value);
            return desc.set.call(this, value)
        },
        get() {
            return desc.get.call(this)
        }
    });
    return img
};
const speedoflight = () => {
    if (projectioncomplete) return;
    const entries = performance.getEntriesByType('resource');
    for (const entry of entries) {
        if (kurapika(entry.name)) break
    }
};
const heavenrestriction = (src) => {
    if (!src) return;
    const targets = ['#screens > div > div.content.home > div.anonymus > div.form > div.avatar', '#screens > header > div > div.userLogged > div:nth-child(2) > div', ];
    targets.forEach(selector => {
        const container = document.querySelector(selector);
        if (container) {
            let myimg = container.querySelector('.google-avatar-inject');
            if (!myimg) {
                myimg = document.createElement('img');
                myimg.className = 'google-avatar-inject';
                container.appendChild(myimg)
            }
            const canvas = container.querySelector('canvas');
            if (canvas) canvas.style.display = 'none';
            if (myimg.src !== src) {
                Object.assign(myimg.style, {
                    width: '100%',
                    height: '100%',
                    borderRadius: '50%',
                    objectFit: 'cover',
                    position: 'absolute',
                    top: '0',
                    left: '0',
                    zIndex: '25'
                });
                myimg.src = src
            }
        }
    })
};
const addmessagetoui = (senderid, nick, msg) => {
    const scrollelements = document.querySelector('#chat .history .scroll .scrollElements');
    if (!scrollelements) return;
 
    const user = win.naoya.find(u => u.id == senderid);
    let photourl = "";
    if (user) {
        photourl = user.foto ? user.foto.split('=')[0] : (user.avatar !== undefined ? `https://gartic.io/static/images/avatar/svg/${user.avatar}.svg` : "")
    }
    if (!photourl && senderid == naoyaindex && win.toji) photourl = win.toji;
 
    const container = document.createElement('div');
    container.className = 'naoyamesaj-container';
    container.classList.add(senderid == naoyaindex ? 'my-message' : 'other-message');
    container.innerHTML = `
            <div class="m-avatar" style="background-image: url('${photourl}'); cursor: pointer;"></div>
            <div class="naoyamesaj-content">
                <div class="naoyamesaj-nick" style="cursor: pointer;">${nick}</div>
                <div class="naoyamesaj-bubble">${msg}</div>
            </div>
        `;
 
    const profilepopupackardesimxd = () => {
        const uselmnts = document.querySelectorAll('#users .scrollElements .user:not(.empty)');
        for (const mhmhmhmh of uselmnts) {
            const plyrnckelmnt = mhmhmhmh.querySelector('.infosPlayer .nick');
            if (plyrnckelmnt && plyrnckelmnt.textContent.trim() === nick) {
                mhmhmhmh.click();
                break
            }
        }
    };
 
    container.querySelector('.m-avatar').addEventListener('click', profilepopupackardesimxd);
    container.querySelector('.naoyamesaj-nick').addEventListener('click', profilepopupackardesimxd);
    
    scrollelements.appendChild(container);
 
 
    requestAnimationFrame(() => {
        forcescroll(!0);
        setTimeout(() => forcescroll(!0), 30)
    })
};
setInterval(() => {
    const scrollelements = document.querySelector('#chat .history .scroll .scrollElements');
    if (!scrollelements) return;

    const messages = scrollelements.querySelectorAll('.naoyamesaj-container');
    if (messages.length > 50) {
        const excess = messages.length - 50;
        for (let i = 0; i < excess; i++) {
            messages[i].remove();
        }
    }
}, 30000);
let lastvotetime = 0;
let sfistiyoruz = !1;
const domainexpansion = () => {
    if (win.toji) heavenrestriction(win.toji);
    document.querySelectorAll('.positions .avatar:not([datapr])').forEach(av => {
        const parentPos = av.closest('.first, .second, .third');
        const nk = parentPos?.querySelector('span');
        if (nk) {
            const user = win.naoya.find(e => e.nick === nk.textContent.trim());
            if (user?.foto) {
                let src = user.foto.split('=')[0];
                let ly = av.querySelector('.cpl') || document.createElement('div');
                ly.className = 'cpl';
                if (!ly.parentElement) av.appendChild(ly);
                Object.assign(ly.style, {
                    position: 'absolute',
                    top: '0',
                    left: '0',
                    width: '100%',
                    height: '100%',
                    backgroundImage: `url("${src}")`,
                    backgroundSize: 'cover',
                    borderRadius: '50%',
                    zIndex: '5'
                });
                av.setAttribute('datapr', '1');
                const innerDiv = av.querySelector('.av');
                if (innerDiv) innerDiv.style.opacity = '0'
            }
        }
    });
    document.querySelectorAll('.avatar:not([datapr])').forEach(av => {
        const cv = av.querySelector('canvas');
        const pr = av.closest('.user, #notification, .contentPopup, .profile');
        const nk = pr?.querySelector('.nick, strong, .kangwoobaba');
        if (cv && nk) {
            const user = win.naoya.find(e => e.nick === nk.textContent);
            let src = user?.foto ? user.foto.split('=')[0] : (av.closest('.anonymus') ? win.toji : "");
            if (src) {
                let ly = av.querySelector('.cpl') || document.createElement('div');
                ly.className = 'cpl';
                if (!ly.parentElement) av.appendChild(ly);
                Object.assign(ly.style, {
                    position: 'absolute',
                    top: '0',
                    left: '0',
                    width: '100%',
                    height: '100%',
                    backgroundImage: `url("${src}")`,
                    backgroundSize: 'cover',
                    borderRadius: '50%',
                    zIndex: '1'
                });
                cv.style.opacity = '0';
                av.setAttribute('datapr', '1')
            }
        }
    });
    document.querySelectorAll('.profile').forEach(p => {
        const btncontainer = p.querySelector('.buttons');
        const nickel = p.querySelector('.nick');
        if (btncontainer && nickel) {
            const sgknkya = p.querySelector('button.ic-ignore.btYellowBig');
    const gerigelknkya = p.querySelector('button.icEye.btYellowBig');

    if (sgknkya && !sgknkya.getAttribute('data-hooked')) {
        sgknkya.setAttribute('data-hooked', 'true');
        sgknkya.onclick = () => {
            const user = win.naoya.find(e => e.nick === nickel.textContent);
            if (user) win.ignoredusers.add(user.id);
        };
    }

    if (gerigelknkya && !gerigelknkya.getAttribute('data-hooked')) {
        gerigelknkya.setAttribute('data-hooked', 'true');
        gerigelknkya.onclick = () => {
            const user = win.naoya.find(e => e.nick === nickel.textContent);
            if (user) win.ignoredusers.delete(user.id);
        };
    }
            if (!p.querySelector('#profilbutonu')) {
                const btn = document.createElement('button');
                btn.id = "profilbutonu";
                btn.className = "btn";
                btn.innerHTML = "<strong>profil fotoğrafını aç</strong>";
                btn.style.cssText = `background-image: url('https://media.tenor.com/621QoumJ1iMAAAAM/jujutsukaisen-jujutsu-kaisen.gif'); background-size: cover; color: white; border: 2px solid black; padding: 10px; width: 100%; cursor: pointer; margin-top: 5px; border-radius: 4px;`;
                btn.onclick = () => {
                    const u = win.naoya.find(e => e.nick === nickel.textContent);
                    const url = u?.foto ? u.foto.split('=')[0] : (u?.avatar !== undefined ? `https://gartic.io/static/images/avatar/svg/${u.avatar}.svg` : win.toji);
                    if (url) window.open(url, '_blank');
                };
                btncontainer.appendChild(btn)
            }
            const eylaaaa = p.querySelector('.ic-votekick');
            if (eylaaaa && !eylaaaa.getAttribute('data-hooked')) {
                eylaaaa.setAttribute('data-hooked', 'true');
                const user = win.naoya.find(e => e.nick === nickel.textContent);
                if (user) {
                    if (win.mallarxd && win.mallarxd.has(user.id)) {
                        eylaaaa.innerHTML = "<strong>oyu çek we love anomaly <3</strong>"
                    }
                    eylaaaa.addEventListener('click', (e) => {
                        e.preventDefault();
                        e.stopImmediatePropagation();
                        if (!win.mkyws || !naoyaid) return;
                        if (sfistiyoruz) return;
                        const now = Date.now();
                        const bro_wut = now - lastvotetime;
                        const neeediyyyonolmmmm = 500 - bro_wut;
                        const helelelele = () => {
                            sfistiyoruz = !1;
                            lastvotetime = Date.now();
                            const oylanmis = win.mallarxd.has(user.id);
                            const oyturu = !oylanmis;
                            win.mkyws.send(`42[45,"${naoyaid}",${JSON.stringify([user.id, oyturu])}]`);
                            if (oyturu) {
                                win.mallarxd.add(user.id);
                                eylaaaa.innerHTML = "<strong>oyu çek we love anomaly <3</strong>"
                            } else {
                                win.mallarxd.delete(user.id);
                                eylaaaa.innerHTML = "<strong>oyla we love anomaly <3</strong>"
                            }
                        };
                        if (neeediyyyonolmmmm <= 0) {
                            helelelele()
                        } else {
                            sfistiyoruz = !0;
                            eylaaaa.innerHTML = "<strong>we love anomaly <3</strong>";
                            setTimeout(helelelele, neeediyyyonolmmmm)
                        }
                    }, !0)
                }
            }
        }
    })
};
const handlesocketdata = (data) => {
    if (typeof data !== "string" || !data.startsWith("42")) return;
    try {
        const roblox = JSON.parse(data.slice(2));
        const swordfight = Array.isArray(roblox) ? roblox[0] : roblox;
        if (swordfight === "6") {
            win.mallarxd.clear();
  win.CACHE_DATA.timeExit = 0;
            
        }
        if (swordfight === "5") {
            naoyaid = roblox[2];
            naoyaindex = roblox[1];
            if (heartbeatinterval) clearInterval(heartbeatinterval);
            heartbeatinterval = setInterval(() => {
                if (win.mkyws && win.mkyws.readyState === WebSocket.OPEN) {
                    win.mkyws.send('2');
                    win.mkyws.send(`42[42,${naoyaid}]`)
                }
            }, 25000);
            if (Array.isArray(roblox[5])) {
                roblox[5].forEach(u => {
                    win.naoya.push({
                        nick: u.nick,
                        id: u.id,
                        foto: u.foto || null,
                        avatar: u.avatar
                    })
                })
            }
        } else if (swordfight === "11") {
            if (win.ignoredusers.has(roblox[1])) return;
            const user = win.naoya.find(u => u.id == roblox[1]);
            if (roblox[2]) {
                addmessagetoui(roblox[1], user ? user.nick : "Unknown", roblox[2]);
                forcescroll(!0);
                const chatbox = document.querySelector('#chat');
                if (!chatbox || !chatbox.classList.contains('active')) {
                    unreadcount++;
                    updatebadge()
                }
            }
        } else if (swordfight === "23") {
            win.naoya.push({
                nick: roblox[1].nick,
                id: roblox[1].id,
                foto: roblox[1].foto || null,
                avatar: roblox[1].avatar
            });
            requestAnimationFrame(forcescroll)
        } else if (swordfight === "24") {
            win.ignoredusers.delete(roblox[1]);
            win.mallarxd.delete(roblox[1]);
            win.naoya = win.naoya.filter(p => p.id !== roblox[1]);
            requestAnimationFrame(forcescroll)
        } else if (swordfight === "45") {
            requestAnimationFrame(forcescroll)
        } else if (swordfight === "40" && roblox[1] === 1|| roblox[1]===2) {
            if (lastsentmessage) {
                bypassandsend(lastsentmessage);
                lastsentmessage = ""
            }
        }
    } catch (e) {}
};
const setupcustomchat = () => {
    const chatcontainer = document.querySelector('#chat');
    if (!chatcontainer) return;
    const originalform = chatcontainer.querySelector('form');
    const existingInput = document.getElementById('customgarticinput');
    const existingWrapper = document.getElementById('custom-chat-wrapper');
    if (!naoyaid) {
        if (existingWrapper) existingWrapper.remove();
        if (originalform) originalform.style.display = '';
        return
    }
    if (!existingInput) {
        if (originalform) originalform.style.display = 'none';
        const wrapper = document.createElement('div');
        wrapper.id = 'custom-chat-wrapper';
        const mychat = document.createElement('input');
        mychat.id = 'customgarticinput';
        mychat.placeholder = 'anomaly <3';
        mychat.autocomplete = 'off';
        mychat.maxLength = 100;
        mychat.addEventListener('input', () => {
            if (mychat.value.length > 100) {
                mychat.value = mychat.value.slice(0, 100)
            }
        });
        wrapper.appendChild(mychat);
        chatcontainer.appendChild(wrapper);
        mychat.addEventListener('keydown', (e) => {
            if (e.key === 'Enter') {
                const val = mychat.value.trim().slice(0, 100);
                if (val !== "" && win.mkyws && naoyaid) {
                    lastsentmessage = val;
                    win.mkyws.send(`42[11,"${naoyaid}","${val}"]`);
                    mychat.value = ""
                }
                e.preventDefault()
            }
        })
    }
};
const originalsend = win.WebSocket.prototype.send;
win.WebSocket.prototype.send = function(...args) {
    if (!this._naoyahooked && this.url && (this.url.includes('gartic.io/socket.io') || this.url.includes('server'))) {
        this._naoyahooked = !0;
        win.mkyws = this;
        this.addEventListener('message', (event) => handlesocketdata(event.data));
        this.addEventListener('close', () => {
            if (heartbeatinterval) {
                clearInterval(heartbeatinterval);
                heartbeatinterval = null
            }
            win.naoya = [];
            win.mallarxd.clear();
            win.ignoredusers.clear();
            naoyaid = null;
            naoyaindex = null;
            projectioncomplete = !1;
            lastsentmessage = "";
            document.querySelectorAll('[datapr]').forEach(el => el.removeAttribute('datapr'));
            document.querySelectorAll('.cpl').forEach(el => el.remove());
            document.querySelectorAll('.google-avatar-inject').forEach(el => el.remove());
            const scrollelements = document.querySelector('#chat .history .scroll .scrollElements');
            if (scrollelements) scrollelements.innerHTML = "";
            if (win.mkyws === this) {
                win.mkyws = null
            }
        })
    }
    return originalsend.apply(this, args)
};
const addclicklistenerforbadge = () => {
    const chatbutton = document.querySelector('#interaction > div.actionsMobile > button.chat');
    if (chatbutton && !chatbutton.getAttribute('data-badgehooked')) {
        chatbutton.setAttribute('data-badgehooked', 'true');
        chatbutton.addEventListener('click', () => {
            unreadcount = 0;
            const badge = chatbutton.querySelector('.chat-badge');
            if (badge) badge.remove();
        })
    }
};
const teto = window.fetch;
window.fetch = function(...args) {
    if (typeof args[0] === 'string' && args[0].includes('/req/lang')) {
        setTimeout(() => {
            window.location.reload()
        }, 1000)
    }
    return teto.apply(this, args)
};
const cum = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, ...args) {
    if (typeof url === 'string' && url.includes('/req/lang')) {
        setTimeout(() => {
            window.location.reload()
        }, 1000)
    }
    return cum.apply(this, [method, url, ...args])
};
let wqeweqeqw = null;
 
function nextialxd() {
    try {
        const qweqweqweqeqw = document.getElementById('__NEXT_DATA__');
        if (qweqweqweqeqw && qweqweqweqeqw.innerText.trim() !== "") {
            const blablablablablabla = JSON.parse(qweqweqweqeqw.innerText);
            const extracted = blablablablablabla.props?.pageProps?.data?.lang?.room?.inactive || blablablablablabla.props?.data?.lang?.room?.inactive;
            if (extracted) {
                wqeweqeqw = extracted;
                return !0
            }
        }
    } catch (e) {}
    return !1
}
nextialxd();
const observer = new MutationObserver(() => {
    if (!wqeweqeqw) {
        nextialxd()
    }
    if (!projectioncomplete) speedoflight();
    setupcustomchat();
    domainexpansion();
    enablewheelfix();
    addclicklistenerforbadge();
    const chatbox = document.querySelector('#chat');
    if (chatbox && chatbox.classList.contains('active')) {
        if (unreadcount > 0) {
            unreadcount = 0;
            updatebadge()
        }
        const chatbutton = document.querySelector('#interaction > div.actionsMobile > button.chat');
        if (chatbutton) {
            const badge = chatbutton.querySelector('.chat-badge');
            if (badge) badge.remove();
        }
    }
    if (wqeweqeqw) {
        const popup = document.querySelector('#popUp[style*="display: block"]');
        if (popup) {
            const sdgdsdgs = popup.querySelector('.title h3, h3')?.innerText?.trim();
            if (sdgdsdgs === wqeweqeqw) {
                const tmm = popup.querySelector('.buttons button, button.btBlue, .ok');
                if (tmm) {
                    tmm.click()
                }
            }
        }
    }
});
observer.observe(document.documentElement, {
    childList: !0,
    subtree: !0
});
new MutationObserver(() => {
    enablewheelfix()
}).observe(document.body, {
    childList: !0,
    subtree: !0
});
enablewheelfix();
const style = `
  #screenRoom .ctt #interaction #answer .scroll:after,
   #screenRoom .ctt #interaction #answer .scroll:before,
    #screenRoom .ctt #interaction #chat .scroll:after,
    #screenRoom .ctt #interaction #chat .scroll:before{
        content: none !important;
        display: none !important;
        visibility: hidden !important;
        opacity: 0 !important;
    }
`;
if (typeof GM_addStyle !== 'undefined') {
    GM_addStyle(style)
} else {
    const stylenode = document.createElement('style');
    stylenode.textContent = style;
    document.head.appendChild(stylenode)
}