Infinity Ware

x18k-chicken hybrid

// ==UserScript==
// @name         Infinity Ware
// @namespace    http://tampermonkey.net/
// @version      .03
// @description  x18k-chicken hybrid
// @author       Mr. who think he Zyphyr
// @match        https://*.moomoo.io/*
// @grant        none
// @icon         http://moomoo.io/img/icons/crown.png
// ==/UserScript==
let whereverifybutton = document.querySelector("#altcha_checkbox")
function clicktheverify() {
if (whereverifybutton) {
    whereverifybutton.click()
}
}
setInterval(clicktheverify, 1000);



const {
    sin: V,
    cos: U,
    min: j,
    max: oe,
    random: t,
    floor: f,
    trunc: n,
    ceil: c,
    round: H,
    tan: i,
    PI: W,
    sqrt: D,
    abs: S,
    pow: re,
    log: s,
    LN2: o,
    atan2: P,
    SQRT2: r,
    acos: a,
    sign: l,
    hypot: d
} = Math;
const ae = W * 2;
const h = W / 2.6;
const le = JSON.stringify;
const E = JSON.parse;
const ce = 1e3 / 9;
const u = ce * 2;
const {
    now: R
} = Date;
var N = "https://fonts.googleapis.com/css2?family=Lilita+One&display=swap";
var O = document.createElement("link");
O.rel = "stylesheet";
O.href = N;
document.head.appendChild(O);
const L = .35;
const F = new Set(["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#67A9DD"]);
let _ = [];

function de(e, t) {
    const n = e => parseInt(e, 16);
    const i = (e, t) => e * t | 0;
    const s = e => e.toString(16).padStart(2, "0");
    const o = i(n(e.substr(1, 2)), 1 - t);
    const r = i(n(e.substr(3, 2)), 1 - t);
    const a = i(n(e.substr(5, 2)), 1 - t);
    return `#${s(o)}${s(r)}${s(a)}`
}

function ue(e, t) {
    const n = e => parseInt(e, 16);
    const i = (e, t) => Math.min(255, e + t | 0);
    const s = e => e.toString(16).padStart(2, "0");
    const o = 255 * t;
    const r = i(n(e.substr(1, 2)), o);
    const a = i(n(e.substr(3, 2)), o);
    const l = i(n(e.substr(5, 2)), o);
    return `#${s(r)}${s(a)}${s(l)}`
}
var fe = {
    hats: {},
    accessories: {},
    weapons: {},
    animals: {}
};
const he = document.createElement("div");
he.id = "transparentMenu";
document.body.appendChild(he);
var pe = `
 #transparentMenu {
     position: fixed;
     top: 0;
     left: 0;
     background: rgba(16, 16, 16, 0.9);
     /* Darker background color */
     color: #ffffff;
     padding: 20px;
     transition: all 0.5s ease-in-out;
     z-index: 9999;
     max-height: 80vh;
     overflow-y: auto;
     display: none;
     width: 400px;
     font-family: 'Arial', sans-serif;
     border: 2px solid #3a3a3a;
     /* Slightly lighter border color */
     border-radius: 12px;
     box-shadow: 0 0 15px rgba(0, 0, 0, 0.7);
 }

 #tabs {
     display: flex;
     margin-bottom: 10px;
     overflow-x: auto;
     scrollbar-width: thin;
     scrollbar-color: transparent transparent;
 }

 #tabs::-webkit-scrollbar {
     width: 6px;
 }

 #tabs::-webkit-scrollbar-thumb {
     background-color: #282828;
     /* Dark scrollbar thumb color */
 }

 .tab {
     cursor: pointer;
     padding: 12px;
     /* Slightly larger padding */
     margin-right: 8px;
     /* Slightly smaller margin */
     background: #333333;
     color: #ffffff;
     border: 1px solid #555555;
     border-bottom: none;
     user-select: none;
     white-space: nowrap;
     transition: background 0.3s ease-in-out, border 0.3s ease-in-out, color 0.3s ease-in-out;
     border-radius: 8px;
     /* Smaller border radius */
 }

 .tab.active {
     background: #2a2a2a;
     /* Darker active tab background color */
     border: 1px solid #3a3a3a;
     /* Slightly lighter active tab border color */
     color: #cccccc;
 }

 .section {
     margin-top: 10px;
     display: none;
     overflow-y: auto;
     max-height: 200px;
 }

 .section.active {
     display: block;
 }

 .section label {
     display: flex;
     align-items: center;
     margin-bottom: 8px;
     /* Slightly smaller margin */
     color: #ffffff;
 }

 .toggle-slider {
     position: relative;
     display: flex;
     align-items: center;
     width: 100%;
     height: 24px;
     /* Slightly larger height */
 }

 .toggle-slider input {
     opacity: 0;
     width: 0;
     height: 0;
 }

 .slider {
     position: relative;
     cursor: pointer;
     width: 50px;
     /* Wider slider */
     height: 24px;
     /* Slightly larger height */
     background-color: #2e2d2d;
     transition: background 0.3s ease-in-out;
     border-radius: 12px;
     /* Smaller border radius */
     margin-right: 8px;
     /* Slightly smaller margin */
 }

 .slider:before {
     position: absolute;
     content: "";
     height: 20px;
     /* Slightly larger height */
     width: 20px;
     /* Slightly larger width */
     left: 4px;
     bottom: 2px;
     background-color: black;
     transition: background 0.3s ease-in-out;
     border-radius: 50%;
 }

 input:checked+.slider {
     background-color: #666666;
 }

 input:focus+.slider {
     box-shadow: 0 0 1px #666666;
 }

 input:checked+.slider:before {
     transform: translateX(26px);
     /* Longer translation */
 }

 .slider.round {
     border-radius: 12px;
     /* Smaller border radius */
 }

 .slider.round:before {
     border-radius: 50%;
 }

 .dropdown-label {
     color: #ffffff;
     margin-top: 8px;
     /* Slightly smaller margin */
     width: 50%;
     /* Adjust width for the label */
 }

 .dropdown-container {
     display: flex;
     align-items: center;
     width: 50%;
     /* Adjust width for the dropdown */
     margin-top: 8px;
     /* Slightly smaller margin */
 }

 .chat-container {
     position: fixed;
     top: 0;
     left: 0;
     width: 400px;
     height: 250px;
     background: rgba(0, 0, 0, .0);
     color: white;
     opacity: 1;
     font-family: 'Norican', cursive;
     font-weight: bold;
     border-bottom-right-radius: 8px;
     padding: 10px;
     display: flex;
     flex-direction: column;
     justify-content: space-between;
 }

 .chat-history {
     height: 400px;
     overflow-y: auto;
     scrollbar-width: thin;
     scrollbar-color: rgba(255, 255, 255, 0.2) rgba(0, 0, 0, 0.5);
 }

 .chat-input {
     height: 30px;
     background-color: rgba(255, 255, 255, 0);
     border: none;
     border-radius: 4px;
     outline: none;
     color: white;

     padding: 5px;
 }

 .scroll-button {
     position: fixed;
     top: 220px;
     left: 380px;
     // width: 18px;
     // height: 18px;
     // background-color: rgba(0, 0, 0, 0.3);
     border-radius: 100%;
     display: flex;
     justify-content: center;
     align-items: center;
     cursor: pointer;
     z-index: 1;
 }

 .scroll-button:hover {
     background-color: rgba(0, 0, 0, 0.8);
 }

 .scroll-button::before {
     content: "";
     width: 0;
     height: 0;
     border-top: 10px solid white;
     border-left: 7px solid transparent;
     border-right: 7px solid transparent;
     position: absolute;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
 }
`;
const me = document.createElement("style");
me.textContent = pe;
document.head.appendChild(me);
const ge = document.createElement("div");
ge.className = "scroll-button";
ge.color = "white";
const ye = document.createElement("div");
ye.className = "chat-container";
const xe = document.createElement("div");
xe.className = "chat-history";
const we = document.createElement("input");
we.type = "text";
we.className = "chat-input";
we.placeholder = "To chat click here or press / key";
we.maxLength = 100;
ye.appendChild(xe);
ye.appendChild(we);
document.body.appendChild(ge);
document.body.appendChild(ye);
const be = 2e3;
const b = (e, t, n, i, s) => {
    const o = xe.scrollHeight - xe.scrollTop <= xe.clientHeight + 1;
    const r = document.createElement("div");
    r.style.wordWrap = "break-word";
    r.style.color = i ? "#6bdb79" : "white";
    xe.appendChild(r);
    if (!s) {
        const e = document.createElement("span");
        e.style.color = "rgba(255, 255, 255, 0.5)";
        e.style.marginRight = "5px";
        e.textContent = Me();
        r.appendChild(e)
    }
    const a = document.createElement("span");
    a.style.color = n;
    a.textContent = e;
    r.appendChild(a);
    const l = document.createElement("span");
    l.textContent = t;
    r.appendChild(l);
    if (xe.children.length > be) {
        xe.removeChild(xe.children[0])
    }
    if (o) {
        xe.scrollTop = xe.scrollHeight;
        ke()
    } else {
        ge.style.display = "block"
    }
};
const ve = () => {
    return xe.scrollHeight - xe.scrollTop <= xe.clientHeight + 1
};
const ke = () => {
    if (ve() || xe.clientHeight >= xe.scrollHeight) {
        ge.style.display = "none"
    } else {
        ge.style.display = "block"
    }
};
ge.addEventListener("click", () => {
    xe.scrollTop = xe.scrollHeight
});
xe.addEventListener("scroll", ke);
ge.style.display = "none";
we.addEventListener("keydown", e => {
    e.stopPropagation()
});

function Ae(e, t) {
    const n = De(e, t[0]);
    const i = t.map(e => `
            <option value="${e}" ${e===n?"selected":""}>${e}</option>
        `).join("");
    return `
     <label class="dropdown-label">${e}</label>
       <div class="dropdown-container">
       <select id="${e}" class="dropdown"">
         ${i}
       </select>
     </div>
    `
}

function e(e, t) {
    const n = De(e, t === undefined ? true : t);
    return `
        <label class="toggle-slider">
            <span>${e}</span>
            <input type="checkbox" ${n?"checked":""} id="${e}">
            <span class="slider round"></span>
        </label>
    `
}

function Ie(e, t, n = 200) {
    const i = De(e, "");
    return `
        <label>${e}</label>
        <input type="${t}" value="${i}" id="${e}" maxlength="${n}">
    `
}

function Se(e, t, n, i, s) {
    const o = De(e, i);
    return `
     <div>${s||""}</div>
     <label class="throttle-slider">
       <span>${e}</span>
       <input type="range" min="${t}" max="${n}" value="${o}" id="${e}">
       <span id="${e}-value">${o}</span>
     </label>
    `
}

function Ee(e) {
    const t = gy(e);
    const n = gy(`${e}-value`);
    n.innerText = t.value;
    Pe(e, t.value)
}
document.addEventListener("keydown", function(e) {
    if (e.key === "Escape") {
        Be()
    }
});
const Te = ["Combat", "Healing", "AI", "Visuals", "Extra"];
const Ce = [
    ["auto break", "Qsync", "chatSync", "bots Qsync", "auto place", "onetick bypass", "auto replace", "spike sync", "auto push", "polearm aids", "melee sync", "bleed insta", "apple insta", "kbInsta", "stop break"],
    ["auto heal", "autoQ"],
    ["e", "stop on collision", "break spike trap", "bots auto clear", "auto hit", "strict soldier", "adv bot auto proj sync", "bot auto proj sync"],
    ["reload bars", "smooth reloads", "all visuals", "building hp", "building owner", "mill rotate", "stacked damages", "skull", "shame count", "shadows", "fp", "animated text"],
    ["Assassin Bots", "Assassin", "music", "circle bots", "bots APB", "bots break utility", "autobuy", "autohat", "stealing animal", "auto accept bots", "stop break bots", "auto equip fastest weapon", "send ws", "strict monkey", "bot smart aim"]
];
he.innerHTML = `
<div id="tabs">
  <div class="tab" onclick="showTab('section1')">Combat</div>
  <div class="tab" onclick="showTab('section2')">heal</div>
  <div class="tab" onclick="showTab('section3')">Visuals</div>
  <div class="tab" onclick="showTab('section4')">Keybinds</div>
  <div class="tab" onclick="showTab('section5')">Bots</div>
  <div class="tab" onclick="showTab('section6')">Throttles</div>
  <div class="tab" onclick="showTab('section7')">Extra</div>
</div>
<div id="section1" class="section active"> ${e("auto break")} ${e("stop on break")} ${e("auto place")} ${e("auto replace",false)} ${e("auto push")} ${e("polearm aids")} ${e("aids spike sync",false)} ${e("melee sync",false)} ${e("bleed insta",false)} ${e("apple insta",false)} ${e("kbInsta")} ${e("kbInsta without turret gear",false)} ${e("kbAssist",false)} ${e("stop break")} ${e("stop on collision",false)} ${e("movement on collision",false)} ${e("strict soldier")} ${e("strict monkey")} ${e("auto equip fastest weapon")} ${e("break spike trap")} ${e("Auto Emp")} ${e("autohat")} ${Se("APA",20,180,50)} </div>
<div id="section2" class="section"> ${e("auto heal")} ${e("autoQ",false)} </div>
<div id="section3" class="section"> ${e("reload bars",false)} ${e("packet count",true)} ${e("all visuals")} ${e("no outline arcs")} ${e("no arcs")} ${e("reload arcs")} ${e("smooth reloads")} ${e("building hp")} ${e("building owner")} ${e("mill rotate",false)} ${e("regular grid")} ${e("stacked damages")} ${e("stacked heal text")} ${e("show place duration",false)} ${e("log autoplace",false)} ${e("spike kb visual")} ${e("skull",true)} ${e("shame count")} ${e("log projectiles",false)} ${e("shadows")} ${e("animated text")} ${e("ChatLog")} ${e("vis aim")} ${e("hide name")} ${e("See through player")} ${e("Shaders",false)} ${e("Legacy Visuals",false)} ${e("Default Visuals",false)} ${e("Op Visuals",false)} </div>
<div id="section4" class="section"> ${e("Toggle Quest 1")} ${Ie("Quest Progress","number")} ${e("Toggle Quest 2")} ${Ie("Quest Reward","text")} ${e("Toggle Quest 3")} ${Ie("Quest Difficulty","number")} </div>
<div id="section5" class="section"> ${Ae("Bot Summon Movement",["Cursor","Copy","Towards","none"],"itemType")} ${e("bot smart aim")} ${e("farm mats")} ${e("auto accept bots")} ${e("stop break bots",false)} ${e("safe walk bots",false)} ${e("bots break utility")} ${e("bots APB")} ${e("bots Qsync")} ${e("Assassin Bots",false)} ${e("circle bots",false)} ${e("bot auto proj sync")} ${e("adv bot auto proj sync")} ${e("Bots Auto Chat","text",30)} </div>
<div id="section6" class="section"> ${Se("Auto Place Accuracy",20,180,50,"higher means longer calculation time ↓")} </div>
<div id="section7" class="section"> ${e("Assassin",false)} ${e("send ws")} ${e("autobuy")} ${e("fix ws")} ${e("fakePing",true)} <div id="toggleContainer"> ${e("fakePing",false)} <div id="sliderContainer" style="display:none;">
<input type="range" min="0" max="100" value="40" id="pingSlider">
`;

function Be() {
    const e = document.getElementById("transparentMenu");
    const t = e.style.display === "block";
    e.style.display = t ? "none" : "block"
}

function De(e, t, n) {
    const i = localStorage.getItem(e);
    if (!n) {
        return i !== null ? JSON.parse(i) : t
    }
    return i !== null ? JSON.parse(i).value : t
}

function Pe(e, t) {
    localStorage.setItem(e, JSON.stringify(t))
}

function Re(e) {
    const t = document.querySelectorAll(".tab");
    t.forEach(e => e.classList.remove("active"));
    const n = document.querySelectorAll(".section");
    n.forEach(e => e.classList.remove("active"));
    const i = document.querySelector(`[onclick="showTab('${e}')"]`);
    const s = document.getElementById(e);
    if (i && s) {
        i.classList.add("active");
        s.classList.add("active")
    }
}
if (gy("ChatLog")?.checked) {
    xe.style.display = "block";
    we.style.display = "block"
} else {
    xe.style.display = "none";
    we.style.display = "none"
}
Re("section1");
document.getElementById("transparentMenu").addEventListener("change", function(e) {
    const n = e.target;
    const t = n.id;
    if (t === "ChatLog") {
        const e = document.querySelector(".chat-history");
        const t = document.querySelector(".chat-input");
        if (n.checked) {
            e.style.display = "block";
            t.style.display = "block"
        } else {
            e.style.display = "none";
            t.style.display = "none"
        }
    }
    const i = n.type == "checkbox" ? n.checked : n.value;
    console.log(n.type, n.id, n.value);
    Pe(t, i);
    if (n.type == "range") {
        Ee(t)
    }
});
document.getElementById("tabs").addEventListener("click", function(e) {
    const t = e.target.closest(".tab");
    if (t) {
        Re(t.getAttribute("onclick").match(/'([^']+)'/)[1])
    }
});

function Me() {
    const e = new Date;
    let t = e.getHours();
    let n = e.getMinutes();
    let i = "AM";
    if (t === 0) {
        t = 12
    } else if (t > 12) {
        i = "PM";
        t = t % 12
    }
    if (n < 10) {
        n = "0" + n
    }
    const s = t + ":" + n + " " + i;
    return s
}

function Ne(t, n) {
    const e = Math.SQRT2 - 1;
    t = S(t);
    n = S(n);
    if (t > n) {
        let e = t;
        t = n;
        n = e
    }
    return e * t + n
}

function Le(e, t, n, i, s) {
    if (!i) i = n;
    var o = document.createElement("canvas");
    var r = o.getContext("2d");
    o.width = n;
    o.height = i;
    r.shadowColor = "rgba(0, 0, 0, 1)";
    r.shadowBlur = e === "animal" ? 18 : e === "weapon" ? 12 : e == "accessory" ? 9 : 20;
    r.drawImage(t, 0, 0, n, i);
    var a = new Image;
    a.src = o.toDataURL();
    return a
}

function BotNames() {
    var e = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J",d];
    var t = [""];

    var n = e[Math.floor(Math.random() * e.length)];
    var i = t[Math.floor(Math.random() * t.length)];

    return n + i;
}
var _e = BotNames();
setInterval(() => {
    _e = BotNames();
}, 100);
var Ve = [],
    m = [],
    Ue = [],
    je, He = 0,
    We = 0,
    Qe = 0,
    Ye = [],
    ze = 0,
    Ge = [],
    Ke = msgpack,
    Xe = [],
    v = 0,
    Je = [],
    qe = [],
    $e = [],
    Ze = [],
    et = 0,
    tt, nt = {},
    it = Date.now(),
    st = false,
    g = [],
    ot = false,
    rt = null,
    at, lt, y, ct = false,
    dt = [],
    ut = [],
    ft = [],
    ht = [],
    pt, mt, gt = false,
    yt = [],
    xt = null,
    wt = null,
    bt = [],
    vt, kt = [],
    At = false,
    It = [],
    St = 0,
    Et = 0,
    Tt = true,
    Ct = false,
    Bt = false,
    Dt, Pt, Rt, Mt = false,
    Nt, Ot = false,
    Lt, Ft, _t = false,
    Vt = 0,
    Ut = null,
    jt = false,
    Ht = false,
    Wt = {
        sec: false,
        min: false
    },
    Qt, Yt = [],
    zt = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49, 57, 8, 2, 15, , 5, 4, 18, 31, 1, 10, 48, 6, 23, 13, 9, 32, 22, 12, 26, 21, 46, 14, 11, 58, 27, 52, 55],
    Gt = [0],
    Kt = [0],
    Q = [],
    Xt = [],
    Jt, qt, $t = null,
    Zt = null,
    en = false,
    tn = Date.now(),
    nn = 0,
    sn = 0,
    on = {
        status: false,
        w: null,
        a: null,
        s: null,
        d: null,
        aim: null,
        x: 0,
        y: 0
    },
    rn = [],
    an = [],
    ln = [],
    cn = [],
    dn = false,
    un = false,
    p = false,
    fn = false,
    hn = false,
    pn = [],
    mn, gn, yn, xn = false,
    wn, bn, vn = [],
    kn = [],
    An = [],
    In = true,
    Sn = [],
    En = [1, 1.1, 1.18, 1.18],
    Y, Tn = [],
    Cn = [],
    Bn = [],
    Dn = null,
    Pn = [],
    Rn = [],
    Mn = [],
    Nn = [51, 50, 28, 29, 30, 36, 37, 38, 44, 35, 42, 43, 49],
    On = [],
    Ln = [],
    Fn = [
        [11], 40, 6, 7, 53, [21], 12, 56, 15, 22, 31, 26, 11, 20, [18],
        [19],
        [13]
    ],
    _n = false,
    Vn = false,
    Un = false,
    jn = "not",
    Hn = false,
    Wn, Qn, Yn, zn = [],
    Gn = false,
    Kn = false,
    Xn, Jn, qn, $n, Zn = {
        msg: "",
        time: 0,
        id: null
    },
    z, ei = [],
    ti, ni, ii, si, oi = null,
    ri, ai = "Wander",
    li = 400,
    ci = 290,
    di = 222,
    ui, fi = 1e3,
    hi = "all",
    pi = 0,
    mi = 0,
    gi = "all",
    yi = 110,
    xi = {
        ID: null,
        player: null
    },
    wi = false,
    bi = "L Nigger Faggot",
    vi = "Samurai: Fastest",
    ki = 200,
    Ai = [],
    Ii = [],
    Si = [],
    Ei = [],
    Ti = true,
    Ci = [],
    Bi = 0,
    Di = null,
    Pi = false,
    Ri = [],
    Mi = 111,
    Ni = [],
    Oi = false,
    Li = false,
    Fi = null,
    _i = {
        x: null,
        y: null
    },
    Vi = [],
    Ui = [],
    ji = [],
    Hi = 0,
    Wi = [],
    Qi = new Map,
    Yi = new Map,
    zi = [],
    Gi = 0,
    Ki, Xi, Ji, qi, $i = undefined,
    Zi = {
        players: [],
        player: null,
        builds: [],
        isDoing: false,
        isMe: null
    },
    es = {
        players: [],
        player: null,
        builds: [],
        rPlayer: null,
        rBuilds: [],
        isDoing: false,
        isMe: null
    },
    ts = {
        players: [],
        bot: null,
        builds: []
    },
    G = {
        "do": null,
        val: 0,
        play: false
    };
let ns = [],
    is = [],
    ss = [];
let os = [],
    rs = [];
const as = (t, e) => e.some(e => e.sid === t.sid);
const ls = document.getElementById("Auto Place Accuracy");
const cs = document.getElementById("auto place");
const ds = document.getElementById("log autoplace");
const us = document.getElementById("mill rotate");
const fs = document.getElementById("send ws");
const hs = document.getElementById("stacked damages");
const ps = document.getElementById("stacked heal text");
const ms = document.getElementById("auto replace");
const gs = document.getElementById("regular grid");
const ys = document.getElementById("reload arcs");
const xs = document.getElementById("shame count");
const ws = document.getElementById("all visuals");
const bs = document.getElementById("reload bars");
const vs = document.getElementById("packet count");
const ks = document.getElementById("building hp");
const As = document.getElementById("building owner");
const Is = document.getElementById("smooth reloads");
const Ss = document.getElementById("Shaders");
const Es = document.getElementById("shadows");
const Ts = document.getElementById("autoQ");
const Cs = document.getElementById("apple insta");
const Bs = document.getElementById("bleed insta");
const Ds = document.getElementById("auto break");
const Ps = document.getElementById("stop break");
const Rs = document.getElementById("BotChat");
const Ms = document.getElementById("auto equip fastest weapon");
const Ns = document.getElementById("no arcs");
const Os = document.getElementById("no outline arcs");
const Ls = document.getElementById("See through player");
const Fs = document.getElementById("skull");
const _s = document.getElementById("auto accept bots");
const Vs = document.getElementById("break spike trap");
const Us = document.getElementById("auto heal");
const js = document.getElementById("strict soldier");
const Hs = document.getElementById("autohat");
const Ws = document.getElementById("strict monkey");
const Qs = document.getElementById("autobuy");
const Ys = document.getElementById("stop on collision");
const zs = document.getElementById("movement on collision");
const Gs = document.getElementById("show place duration");
const Ks = document.getElementById("spike kb visual");
const Xs = document.getElementById("melee sync");
const Js = document.getElementById("auto push");
const qs = document.getElementById("vis aim");
const $s = document.getElementById("stealing animal");
const Zs = document.getElementById("bots break utility");
const eo = document.getElementById("hide name");
const to = document.getElementById("kbInsta");
const no = document.getElementById("Auto Emp");
const io = document.getElementById("Assassin");
const so = document.getElementById("spike sync");
const oo = document.getElementById("log projectiles");
const ro = document.getElementById("circle bots");
const ao = document.getElementById("Bot Summon Movement");
const lo = document.getElementById("bots Qsync");
const co = document.getElementById("Qsync");
const uo = document.getElementById("bot smart aim");
const fo = document.getElementById("polearm aids");
const ho = document.getElementById("bot auto proj sync");
const po = document.getElementById("adv bot auto proj sync");
const mo = document.getElementById("Assassin Bots");
const go = document.getElementById("bots APB");
const yo = document.getElementById("safe walk bots");
const xo = document.getElementById("stop break bots");
const wo = document.getElementById("kbAssist");
const bo = document.getElementById("Legacy Visuals");
const vo = document.getElementById("Default Visuals");
const ko = document.getElementById("aids spike sync");
(function() {
    const e = document.createElement("link").relList;
    if (e && e.supports && e.supports("modulepreload")) return;
    for (const t of document.querySelectorAll('link[rel="modulepreload"]')) i(t);
    new MutationObserver(e => {
        for (const t of e)
            if (t.type === "childList")
                for (const n of t.addedNodes) n.tagName === "LINK" && n.rel === "modulepreload" && i(n)
    }).observe(document, {
        childList: !0,
        subtree: !0
    });

    function n(e) {
        const t = {};
        return e.integrity && (t.integrity = e.integrity), e.referrerpolicy && (t.referrerPolicy = e.referrerpolicy), e.crossorigin === "use-credentials" ? t.credentials = "include" : e.crossorigin === "anonymous" ? t.credentials = "omit" : t.credentials = "same-origin", t
    }

    function i(e) {
        if (e.ep) return;
        e.ep = !0;
        const t = n(e);
        fetch(e.href, t)
    }
})();
var Ao = 4294967295;

function Io(e, t, n) {
    var i = n / 4294967296,
        s = n;
    e.setUint32(t, i), e.setUint32(t + 4, s)
}

function So(e, t, n) {
    var i = f(n / 4294967296),
        s = n;
    e.setUint32(t, i), e.setUint32(t + 4, s)
}

function Eo(e, t) {
    var n = e.getInt32(t),
        i = e.getUint32(t + 4);
    return n * 4294967296 + i
}

function To(e, t) {
    var n = e.getUint32(t),
        i = e.getUint32(t + 4);
    return n * 4294967296 + i
}
var Co, Bo, Do, Po = (typeof process > "u" || ((Co = process == null ? void 0 : process.env) === null || Co === void 0 ? void 0 : Co.TEXT_ENCODING) !== "never") && typeof TextEncoder < "u" && typeof TextDecoder < "u";

function Ro(e) {
    for (var t = e.length, n = 0, i = 0; i < t;) {
        var s = e.charCodeAt(i++);
        if (s & 4294967168)
            if (!(s & 4294965248)) n += 2;
            else {
                if (s >= 55296 && s <= 56319 && i < t) {
                    var o = e.charCodeAt(i);
                    (o & 64512) === 56320 && (++i, s = ((s & 1023) << 10) + (o & 1023) + 65536)
                }
                s & 4294901760 ? n += 4 : n += 3
            }
        else {
            n++;
            continue
        }
    }
    return n
}

function Mo(e, t, n) {
    for (var i = e.length, s = n, o = 0; o < i;) {
        var r = e.charCodeAt(o++);
        if (r & 4294967168)
            if (!(r & 4294965248)) t[s++] = r >> 6 & 31 | 192;
            else {
                if (r >= 55296 && r <= 56319 && o < i) {
                    var a = e.charCodeAt(o);
                    (a & 64512) === 56320 && (++o, r = ((r & 1023) << 10) + (a & 1023) + 65536)
                }
                r & 4294901760 ? (t[s++] = r >> 18 & 7 | 240, t[s++] = r >> 12 & 63 | 128, t[s++] = r >> 6 & 63 | 128) : (t[s++] = r >> 12 & 15 | 224, t[s++] = r >> 6 & 63 | 128)
            }
        else {
            t[s++] = r;
            continue
        }
        t[s++] = r & 63 | 128
    }
}
var No = Po ? new TextEncoder : void 0,
    Oo = Po ? typeof process < "u" && ((Bo = process == null ? void 0 : process.env) === null || Bo === void 0 ? void 0 : Bo.TEXT_ENCODING) !== "force" ? 200 : 0 : Ao;

function Lo(e, t, n) {
    t.set(No.encode(e), n)
}

function Fo(e, t, n) {
    No.encodeInto(e, t.subarray(n))
}
var _o = No != null && No.encodeInto ? Fo : Lo,
    Vo = 4096;

function Uo(e, t, n) {
    for (var i = t, s = i + n, o = [], r = ""; i < s;) {
        var a = e[i++];
        if (!(a & 128)) o.push(a);
        else if ((a & 224) === 192) {
            var l = e[i++] & 63;
            o.push((a & 31) << 6 | l)
        } else if ((a & 240) === 224) {
            var l = e[i++] & 63,
                c = e[i++] & 63;
            o.push((a & 31) << 12 | l << 6 | c)
        } else if ((a & 248) === 240) {
            var l = e[i++] & 63,
                c = e[i++] & 63,
                d = e[i++] & 63,
                u = (a & 7) << 18 | l << 12 | c << 6 | d;
            u > 65535 && (u -= 65536, o.push(u >>> 10 & 1023 | 55296), u = 56320 | u & 1023), o.push(u)
        } else o.push(a);
        o.length >= Vo && (r += String.fromCharCode.apply(String, o), o.length = 0)
    }
    return o.length > 0 && (r += String.fromCharCode.apply(String, o)), r
}
var jo = Po ? new TextDecoder : null,
    Ho = Po ? typeof process < "u" && ((Do = process == null ? void 0 : process.env) === null || Do === void 0 ? void 0 : Do.TEXT_DECODER) !== "force" ? 200 : 0 : Ao;

function Wo(e, t, n) {
    var i = e.subarray(t, t + n);
    return jo.decode(i)
}
var Qo = function() {
    function e(e, t) {
        this.type = e, this.data = t
    }
    return e
}(),
    Yo = globalThis && globalThis.__extends || function() {
        var i = function(e, t) {
            return i = Object.setPrototypeOf || {
                __proto__: []
            }
            instanceof Array && function(e, t) {
                e.__proto__ = t
            } || function(e, t) {
                for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
            }, i(e, t)
        };
        return function(e, t) {
            if (typeof t != "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
            i(e, t);

            function n() {
                this.constructor = e
            }
            e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n)
        }
    }(),
    zo = function(i) {
        Yo(s, i);

        function s(e) {
            var t = i.call(this, e) || this,
                n = Object.create(s.prototype);
            return Object.setPrototypeOf(t, n), Object.defineProperty(t, "name", {
                configurable: !0,
                enumerable: !1,
                value: s.name
            }), t
        }
        return s
    }(Error),
    Go = -1,
    Ko = 4294967296 - 1,
    Xo = 17179869184 - 1;

function Jo(e) {
    var t = e.sec,
        n = e.nsec;
    if (t >= 0 && n >= 0 && t <= Xo)
        if (n === 0 && t <= Ko) {
            var i = new Uint8Array(4),
                s = new DataView(i.buffer);
            return s.setUint32(0, t), i
        } else {
            var o = t / 4294967296,
                r = t & 4294967295,
                i = new Uint8Array(8),
                s = new DataView(i.buffer);
            return s.setUint32(0, n << 2 | o & 3), s.setUint32(4, r), i
        }
    else {
        var i = new Uint8Array(12),
            s = new DataView(i.buffer);
        return s.setUint32(0, n), So(s, 4, t), i
    }
}

function qo(e) {
    var t = e.getTime(),
        n = f(t / 1e3),
        i = (t - n * 1e3) * 1e6,
        s = f(i / 1e9);
    return {
        sec: n + s,
        nsec: i - s * 1e9
    }
}

function $o(e) {
    if (e instanceof Date) {
        var t = qo(e);
        return Jo(t)
    } else return null
}

function Zo(e) {
    var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
    switch (e.byteLength) {
        case 4: {
            var n = t.getUint32(0),
                i = 0;
            return {
                sec: n,
                nsec: i
            }
        }
        case 8: {
            var s = t.getUint32(0),
                o = t.getUint32(4),
                n = (s & 3) * 4294967296 + o,
                i = s >>> 2;
            return {
                sec: n,
                nsec: i
            }
        }
        case 12: {
            var n = Eo(t, 4),
                i = t.getUint32(0);
            return {
                sec: n,
                nsec: i
            }
        }
        default:
            throw new zo("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))
    }
}

function er(e) {
    var t = Zo(e);
    return new Date(t.sec * 1e3 + t.nsec / 1e6)
}
var tr = {
    type: Go,
    encode: $o,
    decode: er
},
    nr = function() {
        function e() {
            this.builtInEncoders = [], this.builtInDecoders = [], this.encoders = [], this.decoders = [], this.register(tr)
        }
        return e.prototype.register = function(e) {
            var t = e.type,
                n = e.encode,
                i = e.decode;
            if (t >= 0) this.encoders[t] = n, this.decoders[t] = i;
            else {
                var s = 1 + t;
                this.builtInEncoders[s] = n, this.builtInDecoders[s] = i
            }
        }, e.prototype.tryToEncode = function(e, t) {
            for (var n = 0; n < this.builtInEncoders.length; n++) {
                var i = this.builtInEncoders[n];
                if (i != null) {
                    var s = i(e, t);
                    if (s != null) {
                        var o = -1 - n;
                        return new Qo(o, s)
                    }
                }
            }
            for (var n = 0; n < this.encoders.length; n++) {
                var i = this.encoders[n];
                if (i != null) {
                    var s = i(e, t);
                    if (s != null) {
                        var o = n;
                        return new Qo(o, s)
                    }
                }
            }
            return e instanceof Qo ? e : null
        }, e.prototype.decode = function(e, t, n) {
            var i = t < 0 ? this.builtInDecoders[-1 - t] : this.decoders[t];
            return i ? i(e, t, n) : new Qo(t, e)
        }, e.defaultCodec = new e, e
    }();

function ir(e) {
    return e instanceof Uint8Array ? e : ArrayBuffer.isView(e) ? new Uint8Array(e.buffer, e.byteOffset, e.byteLength) : e instanceof ArrayBuffer ? new Uint8Array(e) : Uint8Array.from(e)
}

function sr(e) {
    if (e instanceof ArrayBuffer) return new DataView(e);
    var t = ir(e);
    return new DataView(t.buffer, t.byteOffset, t.byteLength)
}
var or = 100,
    rr = 2048,
    ar = function() {
        function e(e, t, n, i, s, o, r, a) {
            e === void 0 && (e = nr.defaultCodec), t === void 0 && (t = void 0), n === void 0 && (n = or), i === void 0 && (i = rr), s === void 0 && (s = !1), o === void 0 && (o = !1), r === void 0 && (r = !1), a === void 0 && (a = !1), this.extensionCodec = e, this.context = t, this.maxDepth = n, this.initialBufferSize = i, this.sortKeys = s, this.forceFloat32 = o, this.ignoreUndefined = r, this.forceIntegerToFloat = a, this.pos = 0, this.view = new DataView(new ArrayBuffer(this.initialBufferSize)), this.bytes = new Uint8Array(this.view.buffer)
        }
        return e.prototype.reinitializeState = function() {
            this.pos = 0
        }, e.prototype.encodeSharedRef = function(e) {
            return this.reinitializeState(), this.doEncode(e, 1), this.bytes.subarray(0, this.pos)
        }, e.prototype.encode = function(e) {
            return this.reinitializeState(), this.doEncode(e, 1), this.bytes.slice(0, this.pos)
        }, e.prototype.doEncode = function(e, t) {
            if (t > this.maxDepth) throw new Error("Too deep objects in depth ".concat(t));
            e == null ? this.encodeNil() : typeof e == "boolean" ? this.encodeBoolean(e) : typeof e == "number" ? this.encodeNumber(e) : typeof e == "string" ? this.encodeString(e) : this.encodeObject(e, t)
        }, e.prototype.ensureBufferSizeToWrite = function(e) {
            var t = this.pos + e;
            this.view.byteLength < t && this.resizeBuffer(t * 2)
        }, e.prototype.resizeBuffer = function(e) {
            var t = new ArrayBuffer(e),
                n = new Uint8Array(t),
                i = new DataView(t);
            n.set(this.bytes), this.view = i, this.bytes = n
        }, e.prototype.encodeNil = function() {
            this.writeU8(192)
        }, e.prototype.encodeBoolean = function(e) {
            e === !1 ? this.writeU8(194) : this.writeU8(195)
        }, e.prototype.encodeNumber = function(e) {
            Number.isSafeInteger(e) && !this.forceIntegerToFloat ? e >= 0 ? e < 128 ? this.writeU8(e) : e < 256 ? (this.writeU8(204), this.writeU8(e)) : e < 65536 ? (this.writeU8(205), this.writeU16(e)) : e < 4294967296 ? (this.writeU8(206), this.writeU32(e)) : (this.writeU8(207), this.writeU64(e)) : e >= -32 ? this.writeU8(224 | e + 32) : e >= -128 ? (this.writeU8(208), this.writeI8(e)) : e >= -32768 ? (this.writeU8(209), this.writeI16(e)) : e >= -2147483648 ? (this.writeU8(210), this.writeI32(e)) : (this.writeU8(211), this.writeI64(e)) : this.forceFloat32 ? (this.writeU8(202), this.writeF32(e)) : (this.writeU8(203), this.writeF64(e))
        }, e.prototype.writeStringHeader = function(e) {
            if (e < 32) this.writeU8(160 + e);
            else if (e < 256) this.writeU8(217), this.writeU8(e);
            else if (e < 65536) this.writeU8(218), this.writeU16(e);
            else if (e < 4294967296) this.writeU8(219), this.writeU32(e);
            else throw new Error("Too long string: ".concat(e, " bytes in UTF-8"))
        }, e.prototype.encodeString = function(e) {
            var t = 5,
                n = e.length;
            if (n > Oo) {
                var i = Ro(e);
                this.ensureBufferSizeToWrite(t + i), this.writeStringHeader(i), _o(e, this.bytes, this.pos), this.pos += i
            } else {
                var i = Ro(e);
                this.ensureBufferSizeToWrite(t + i), this.writeStringHeader(i), Mo(e, this.bytes, this.pos), this.pos += i
            }
        }, e.prototype.encodeObject = function(e, t) {
            var n = this.extensionCodec.tryToEncode(e, this.context);
            if (n != null) this.encodeExtension(n);
            else if (Array.isArray(e)) this.encodeArray(e, t);
            else if (ArrayBuffer.isView(e)) this.encodeBinary(e);
            else if (typeof e == "object") this.encodeMap(e, t);
            else throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)))
        }, e.prototype.encodeBinary = function(e) {
            var t = e.byteLength;
            if (t < 256) this.writeU8(196), this.writeU8(t);
            else if (t < 65536) this.writeU8(197), this.writeU16(t);
            else if (t < 4294967296) this.writeU8(198), this.writeU32(t);
            else throw new Error("Too large binary: ".concat(t));
            var n = ir(e);
            this.writeU8a(n)
        }, e.prototype.encodeArray = function(e, t) {
            var n = e.length;
            if (n < 16) this.writeU8(144 + n);
            else if (n < 65536) this.writeU8(220), this.writeU16(n);
            else if (n < 4294967296) this.writeU8(221), this.writeU32(n);
            else throw new Error("Too large array: ".concat(n));
            for (var i = 0, s = e; i < s.length; i++) {
                var o = s[i];
                this.doEncode(o, t + 1)
            }
        }, e.prototype.countWithoutUndefined = function(e, t) {
            for (var n = 0, i = 0, s = t; i < s.length; i++) {
                var o = s[i];
                e[o] !== void 0 && n++
            }
            return n
        }, e.prototype.encodeMap = function(e, t) {
            var n = Object.keys(e);
            this.sortKeys && n.sort();
            var i = this.ignoreUndefined ? this.countWithoutUndefined(e, n) : n.length;
            if (i < 16) this.writeU8(128 + i);
            else if (i < 65536) this.writeU8(222), this.writeU16(i);
            else if (i < 4294967296) this.writeU8(223), this.writeU32(i);
            else throw new Error("Too large map object: ".concat(i));
            for (var s = 0, o = n; s < o.length; s++) {
                var r = o[s],
                    a = e[r];
                this.ignoreUndefined && a === void 0 || (this.encodeString(r), this.doEncode(a, t + 1))
            }
        }, e.prototype.encodeExtension = function(e) {
            var t = e.data.length;
            if (t === 1) this.writeU8(212);
            else if (t === 2) this.writeU8(213);
            else if (t === 4) this.writeU8(214);
            else if (t === 8) this.writeU8(215);
            else if (t === 16) this.writeU8(216);
            else if (t < 256) this.writeU8(199), this.writeU8(t);
            else if (t < 65536) this.writeU8(200), this.writeU16(t);
            else if (t < 4294967296) this.writeU8(201), this.writeU32(t);
            else throw new Error("Too large extension object: ".concat(t));
            this.writeI8(e.type), this.writeU8a(e.data)
        }, e.prototype.writeU8 = function(e) {
            this.ensureBufferSizeToWrite(1), this.view.setUint8(this.pos, e), this.pos++
        }, e.prototype.writeU8a = function(e) {
            var t = e.length;
            this.ensureBufferSizeToWrite(t), this.bytes.set(e, this.pos), this.pos += t
        }, e.prototype.writeI8 = function(e) {
            this.ensureBufferSizeToWrite(1), this.view.setInt8(this.pos, e), this.pos++
        }, e.prototype.writeU16 = function(e) {
            this.ensureBufferSizeToWrite(2), this.view.setUint16(this.pos, e), this.pos += 2
        }, e.prototype.writeI16 = function(e) {
            this.ensureBufferSizeToWrite(2), this.view.setInt16(this.pos, e), this.pos += 2
        }, e.prototype.writeU32 = function(e) {
            this.ensureBufferSizeToWrite(4), this.view.setUint32(this.pos, e), this.pos += 4
        }, e.prototype.writeI32 = function(e) {
            this.ensureBufferSizeToWrite(4), this.view.setInt32(this.pos, e), this.pos += 4
        }, e.prototype.writeF32 = function(e) {
            this.ensureBufferSizeToWrite(4), this.view.setFloat32(this.pos, e), this.pos += 4
        }, e.prototype.writeF64 = function(e) {
            this.ensureBufferSizeToWrite(8), this.view.setFloat64(this.pos, e), this.pos += 8
        }, e.prototype.writeU64 = function(e) {
            this.ensureBufferSizeToWrite(8), Io(this.view, this.pos, e), this.pos += 8
        }, e.prototype.writeI64 = function(e) {
            this.ensureBufferSizeToWrite(8), So(this.view, this.pos, e), this.pos += 8
        }, e
    }();

function lr(e) {
    return "".concat(e < 0 ? "-" : "", "0x").concat(S(e).toString(16).padStart(2, "0"))
}
var cr = 16,
    dr = 16,
    ur = function() {
        function e(e, t) {
            e === void 0 && (e = cr), t === void 0 && (t = dr), this.maxKeyLength = e, this.maxLengthPerKey = t, this.hit = 0, this.miss = 0, this.caches = [];
            for (var n = 0; n < this.maxKeyLength; n++) this.caches.push([])
        }
        return e.prototype.canBeCached = function(e) {
            return e > 0 && e <= this.maxKeyLength
        }, e.prototype.find = function(e, t, n) {
            var i = this.caches[n - 1];
            e: for (var s = 0, o = i; s < o.length; s++) {
                for (var r = o[s], a = r.bytes, l = 0; l < n; l++)
                    if (a[l] !== e[t + l]) continue e;
                return r.str
            }
            return null
        }, e.prototype.store = function(e, t) {
            var n = this.caches[e.length - 1],
                i = {
                    bytes: e,
                    str: t
                };
            n.length >= this.maxLengthPerKey ? n[Math.random() * n.length | 0] = i : n.push(i)
        }, e.prototype.decode = function(e, t, n) {
            var i = this.find(e, t, n);
            if (i != null) return this.hit++, i;
            this.miss++;
            var s = Uo(e, t, n),
                o = Uint8Array.prototype.slice.call(e, t, t + n);
            return this.store(o, s), s
        }, e
    }(),
    fr = globalThis && globalThis.__awaiter || function(e, r, n, a) {
        function l(t) {
            return t instanceof n ? t : new n(function(e) {
                e(t)
            })
        }
        return new(n || (n = Promise))(function(t, n) {
            function i(e) {
                try {
                    o(a.next(e))
                } catch (t) {
                    n(t)
                }
            }

            function s(e) {
                try {
                    o(a["throw"](e))
                } catch (t) {
                    n(t)
                }
            }

            function o(e) {
                e.done ? t(e.value) : l(e.value).then(i, s)
            }
            o((a = a.apply(e, r || [])).next())
        })
    },
    hr = globalThis && globalThis.__generator || function(n, i) {
        var s = {
            label: 0,
            sent: function() {
                if (a[0] & 1) throw a[1];
                return a[1]
            },
            trys: [],
            ops: []
        },
            o, r, a, e;
        return e = {
            next: t(0),
            "throw": t(1),
            "return": t(2)
        }, typeof Symbol == "function" && (e[Symbol.iterator] = function() {
            return this
        }), e;

        function t(t) {
            return function(e) {
                return l([t, e])
            }
        }

        function l(e) {
            if (o) throw new TypeError("Generator is already executing.");
            for (; s;) try {
                if (o = 1, r && (a = e[0] & 2 ? r["return"] : e[0] ? r["throw"] || ((a = r["return"]) && a.call(r), 0) : r.next) && !(a = a.call(r, e[1])).done) return a;
                switch (r = 0, a && (e = [e[0] & 2, a.value]), e[0]) {
                    case 0:
                    case 1:
                        a = e;
                        break;
                    case 4:
                        return s.label++, {
                            value: e[1],
                            done: !1
                        };
                    case 5:
                        s.label++, r = e[1], e = [0];
                        continue;
                    case 7:
                        e = s.ops.pop(), s.trys.pop();
                        continue;
                    default:
                        if (a = s.trys, !(a = a.length > 0 && a[a.length - 1]) && (e[0] === 6 || e[0] === 2)) {
                            s = 0;
                            continue
                        }
                        if (e[0] === 3 && (!a || e[1] > a[0] && e[1] < a[3])) {
                            s.label = e[1];
                            break
                        }
                        if (e[0] === 6 && s.label < a[1]) {
                            s.label = a[1], a = e;
                            break
                        }
                        if (a && s.label < a[2]) {
                            s.label = a[2], s.ops.push(e);
                            break
                        }
                        a[2] && s.ops.pop(), s.trys.pop();
                        continue
                }
                e = i.call(n, s)
            } catch (t) {
                e = [6, t], r = 0
            } finally {
                o = a = 0
            }
            if (e[0] & 5) throw e[1];
            return {
                value: e[0] ? e[1] : void 0,
                done: !0
            }
        }
    },
    pr = globalThis && globalThis.__asyncValues || function(s) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var e = s[Symbol.asyncIterator],
            t;
        return e ? e.call(s) : (s = typeof __values == "function" ? __values(s) : s[Symbol.iterator](), t = {}, n("next"), n("throw"), n("return"), t[Symbol.asyncIterator] = function() {
            return this
        }, t);

        function n(i) {
            t[i] = s[i] && function(n) {
                return new Promise(function(e, t) {
                    n = s[i](n), o(e, t, n.done, n.value)
                })
            }
        }

        function o(t, e, n, i) {
            Promise.resolve(i).then(function(e) {
                t({
                    value: e,
                    done: n
                })
            }, e)
        }
    },
    mr = globalThis && globalThis.__await || function(e) {
        return this instanceof mr ? (this.v = e, this) : new mr(e)
    },
    gr = globalThis && globalThis.__asyncGenerator || function(e, t, n) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var s = n.apply(e, t || []),
            o, r = [];
        return o = {}, i("next"), i("throw"), i("return"), o[Symbol.asyncIterator] = function() {
            return this
        }, o;

        function i(i) {
            s[i] && (o[i] = function(n) {
                return new Promise(function(e, t) {
                    r.push([i, n, e, t]) > 1 || a(i, n)
                })
            })
        }

        function a(e, t) {
            try {
                l(s[e](t))
            } catch (w) {
                u(r[0][3], w)
            }
        }

        function l(e) {
            e.value instanceof mr ? Promise.resolve(e.value.v).then(c, d) : u(r[0][2], e)
        }

        function c(e) {
            a("next", e)
        }

        function d(e) {
            a("throw", e)
        }

        function u(e, t) {
            e(t), r.shift(), r.length && a(r[0][0], r[0][1])
        }
    },
    yr = function(e) {
        var t = typeof e;
        return t === "string" || t === "number"
    },
    xr = -1,
    wr = new DataView(new ArrayBuffer(0)),
    br = new Uint8Array(wr.buffer),
    vr = function() {
        try {
            wr.getInt8(0)
        } catch (e) {
            return e.constructor
        }
        throw new Error("never reached")
    }(),
    kr = new vr("Insufficient data"),
    Ar = new ur,
    Ir = function() {
        function e(e, t, n, i, s, o, r, a) {
            e === void 0 && (e = nr.defaultCodec), t === void 0 && (t = void 0), n === void 0 && (n = Ao), i === void 0 && (i = Ao), s === void 0 && (s = Ao), o === void 0 && (o = Ao), r === void 0 && (r = Ao), a === void 0 && (a = Ar), this.extensionCodec = e, this.context = t, this.maxStrLength = n, this.maxBinLength = i, this.maxArrayLength = s, this.maxMapLength = o, this.maxExtLength = r, this.keyDecoder = a, this.totalPos = 0, this.pos = 0, this.view = wr, this.bytes = br, this.headByte = xr, this.stack = []
        }
        return e.prototype.reinitializeState = function() {
            this.totalPos = 0, this.headByte = xr, this.stack.length = 0
        }, e.prototype.setBuffer = function(e) {
            this.bytes = ir(e), this.view = sr(this.bytes), this.pos = 0
        }, e.prototype.appendBuffer = function(e) {
            if (this.headByte === xr && !this.hasRemaining(1)) this.setBuffer(e);
            else {
                var t = this.bytes.subarray(this.pos),
                    n = ir(e),
                    i = new Uint8Array(t.length + n.length);
                i.set(t), i.set(n, t.length), this.setBuffer(i)
            }
        }, e.prototype.hasRemaining = function(e) {
            return this.view.byteLength - this.pos >= e
        }, e.prototype.createExtraByteError = function(e) {
            var t = this,
                n = t.view,
                i = t.pos;
            return new RangeError("Extra ".concat(n.byteLength - i, " of ").concat(n.byteLength, " byte(s) found at buffer[").concat(e, "]"))
        }, e.prototype.decode = function(e) {
            this.reinitializeState(), this.setBuffer(e);
            var t = this.doDecodeSync();
            if (this.hasRemaining(1)) throw this.createExtraByteError(this.pos);
            return t
        }, e.prototype.decodeMulti = function(t) {
            return hr(this, function(e) {
                switch (e.label) {
                    case 0:
                        this.reinitializeState(), this.setBuffer(t), e.label = 1;
                    case 1:
                        return this.hasRemaining(1) ? [4, this.doDecodeSync()] : [3, 3];
                    case 2:
                        return e.sent(), [3, 1];
                    case 3:
                        return [2]
                }
            })
        }, e.prototype.decodeAsync = function(d) {
            var u, f, h, p;
            return fr(this, void 0, void 0, function() {
                var n, i, s, o, r, a, l, c;
                return hr(this, function(e) {
                    switch (e.label) {
                        case 0:
                            n = !1, e.label = 1;
                        case 1:
                            e.trys.push([1, 6, 7, 12]), u = pr(d), e.label = 2;
                        case 2:
                            return [4, u.next()];
                        case 3:
                            if (f = e.sent(), !!f.done) return [3, 5];
                            if (s = f.value, n) throw this.createExtraByteError(this.totalPos);
                            this.appendBuffer(s);
                            try {
                                i = this.doDecodeSync(), n = !0
                            } catch (t) {
                                if (!(t instanceof vr)) throw t
                            }
                            this.totalPos += this.pos, e.label = 4;
                        case 4:
                            return [3, 2];
                        case 5:
                            return [3, 12];
                        case 6:
                            return o = e.sent(), h = {
                                error: o
                            }, [3, 12];
                        case 7:
                            return e.trys.push([7, , 10, 11]), f && !f.done && (p = u["return"]) ? [4, p.call(u)] : [3, 9];
                        case 8:
                            e.sent(), e.label = 9;
                        case 9:
                            return [3, 11];
                        case 10:
                            if (h) throw h.error;
                            return [7];
                        case 11:
                            return [7];
                        case 12:
                            if (n) {
                                if (this.hasRemaining(1)) throw this.createExtraByteError(this.totalPos);
                                return [2, i]
                            }
                            throw r = this, a = r.headByte, l = r.pos, c = r.totalPos, new RangeError("Insufficient data in parsing ".concat(lr(a), " at ").concat(c, " (").concat(l, " in the current buffer)"))
                    }
                })
            })
        }, e.prototype.decodeArrayStream = function(e) {
            return this.decodeMultiAsync(e, !0)
        }, e.prototype.decodeStream = function(e) {
            return this.decodeMultiAsync(e, !1)
        }, e.prototype.decodeMultiAsync = function(d, u) {
            return gr(this, arguments, function() {
                var t, n, i, s, o, r, a, l, c;
                return hr(this, function(e) {
                    switch (e.label) {
                        case 0:
                            t = u, n = -1, e.label = 1;
                        case 1:
                            e.trys.push([1, 13, 14, 19]), i = pr(d), e.label = 2;
                        case 2:
                            return [4, mr(i.next())];
                        case 3:
                            if (s = e.sent(), !!s.done) return [3, 12];
                            if (o = s.value, u && n === 0) throw this.createExtraByteError(this.totalPos);
                            this.appendBuffer(o), t && (n = this.readArraySize(), t = !1, this.complete()), e.label = 4;
                        case 4:
                            e.trys.push([4, 9, , 10]), e.label = 5;
                        case 5:
                            return [4, mr(this.doDecodeSync())];
                        case 6:
                            return [4, e.sent()];
                        case 7:
                            return e.sent(), --n === 0 ? [3, 8] : [3, 5];
                        case 8:
                            return [3, 10];
                        case 9:
                            if (r = e.sent(), !(r instanceof vr)) throw r;
                            return [3, 10];
                        case 10:
                            this.totalPos += this.pos, e.label = 11;
                        case 11:
                            return [3, 2];
                        case 12:
                            return [3, 19];
                        case 13:
                            return a = e.sent(), l = {
                                error: a
                            }, [3, 19];
                        case 14:
                            return e.trys.push([14, , 17, 18]), s && !s.done && (c = i["return"]) ? [4, mr(c.call(i))] : [3, 16];
                        case 15:
                            e.sent(), e.label = 16;
                        case 16:
                            return [3, 18];
                        case 17:
                            if (l) throw l.error;
                            return [7];
                        case 18:
                            return [7];
                        case 19:
                            return [2]
                    }
                })
            })
        }, e.prototype.doDecodeSync = function() {
            e: for (;;) {
                var e = this.readHeadByte(),
                    t = void 0;
                if (e >= 224) t = e - 256;
                else if (e < 192)
                    if (e < 128) t = e;
                    else if (e < 144) {
                        var n = e - 128;
                        if (n !== 0) {
                            this.pushMapState(n), this.complete();
                            continue e
                        } else t = {}
                    } else if (e < 160) {
                        var n = e - 144;
                        if (n !== 0) {
                            this.pushArrayState(n), this.complete();
                            continue e
                        } else t = []
                    } else {
                        var i = e - 160;
                        t = this.decodeUtf8String(i, 0)
                    } else if (e === 192) t = null;
                else if (e === 194) t = !1;
                else if (e === 195) t = !0;
                else if (e === 202) t = this.readF32();
                else if (e === 203) t = this.readF64();
                else if (e === 204) t = this.readU8();
                else if (e === 205) t = this.readU16();
                else if (e === 206) t = this.readU32();
                else if (e === 207) t = this.readU64();
                else if (e === 208) t = this.readI8();
                else if (e === 209) t = this.readI16();
                else if (e === 210) t = this.readI32();
                else if (e === 211) t = this.readI64();
                else if (e === 217) {
                    var i = this.lookU8();
                    t = this.decodeUtf8String(i, 1)
                } else if (e === 218) {
                    var i = this.lookU16();
                    t = this.decodeUtf8String(i, 2)
                } else if (e === 219) {
                    var i = this.lookU32();
                    t = this.decodeUtf8String(i, 4)
                } else if (e === 220) {
                    var n = this.readU16();
                    if (n !== 0) {
                        this.pushArrayState(n), this.complete();
                        continue e
                    } else t = []
                } else if (e === 221) {
                    var n = this.readU32();
                    if (n !== 0) {
                        this.pushArrayState(n), this.complete();
                        continue e
                    } else t = []
                } else if (e === 222) {
                    var n = this.readU16();
                    if (n !== 0) {
                        this.pushMapState(n), this.complete();
                        continue e
                    } else t = {}
                } else if (e === 223) {
                    var n = this.readU32();
                    if (n !== 0) {
                        this.pushMapState(n), this.complete();
                        continue e
                    } else t = {}
                } else if (e === 196) {
                    var n = this.lookU8();
                    t = this.decodeBinary(n, 1)
                } else if (e === 197) {
                    var n = this.lookU16();
                    t = this.decodeBinary(n, 2)
                } else if (e === 198) {
                    var n = this.lookU32();
                    t = this.decodeBinary(n, 4)
                } else if (e === 212) t = this.decodeExtension(1, 0);
                else if (e === 213) t = this.decodeExtension(2, 0);
                else if (e === 214) t = this.decodeExtension(4, 0);
                else if (e === 215) t = this.decodeExtension(8, 0);
                else if (e === 216) t = this.decodeExtension(16, 0);
                else if (e === 199) {
                    var n = this.lookU8();
                    t = this.decodeExtension(n, 1)
                } else if (e === 200) {
                    var n = this.lookU16();
                    t = this.decodeExtension(n, 2)
                } else if (e === 201) {
                    var n = this.lookU32();
                    t = this.decodeExtension(n, 4)
                } else throw new zo("Unrecognized type byte: ".concat(lr(e)));
                this.complete();
                for (var s = this.stack; s.length > 0;) {
                    var o = s[s.length - 1];
                    if (o.type === 0)
                        if (o.array[o.position] = t, o.position++, o.position === o.size) s.pop(), t = o.array;
                        else continue e;
                    else if (o.type === 1) {
                        if (!yr(t)) throw new zo("The type of key must be string or number but " + typeof t);
                        if (t === "__proto__") throw new zo("The key __proto__ is not allowed");
                        o.key = t, o.type = 2;
                        continue e
                    } else if (o.map[o.key] = t, o.readCount++, o.readCount === o.size) s.pop(), t = o.map;
                    else {
                        o.key = null, o.type = 1;
                        continue e
                    }
                }
                return t
            }
        }, e.prototype.readHeadByte = function() {
            return this.headByte === xr && (this.headByte = this.readU8()), this.headByte
        }, e.prototype.complete = function() {
            this.headByte = xr
        }, e.prototype.readArraySize = function() {
            var e = this.readHeadByte();
            switch (e) {
                case 220:
                    return this.readU16();
                case 221:
                    return this.readU32();
                default: {
                    if (e < 160) return e - 144;
                    throw new zo("Unrecognized array type byte: ".concat(lr(e)))
                }
            }
        }, e.prototype.pushMapState = function(e) {
            if (e > this.maxMapLength) throw new zo("Max length exceeded: map length (".concat(e, ") > maxMapLengthLength (").concat(this.maxMapLength, ")"));
            this.stack.push({
                type: 1,
                size: e,
                key: null,
                readCount: 0,
                map: {}
            })
        }, e.prototype.pushArrayState = function(e) {
            if (e > this.maxArrayLength) throw new zo("Max length exceeded: array length (".concat(e, ") > maxArrayLength (").concat(this.maxArrayLength, ")"));
            this.stack.push({
                type: 0,
                size: e,
                array: new Array(e),
                position: 0
            })
        }, e.prototype.decodeUtf8String = function(e, t) {
            var n;
            if (e > this.maxStrLength) throw new zo("Max length exceeded: UTF-8 byte length (".concat(e, ") > maxStrLength (").concat(this.maxStrLength, ")"));
            if (this.bytes.byteLength < this.pos + t + e) throw kr;
            var i = this.pos + t,
                s;
            return this.stateIsMapKey() && (!((n = this.keyDecoder) === null || n === void 0) && n.canBeCached(e)) ? s = this.keyDecoder.decode(this.bytes, i, e) : e > Ho ? s = Wo(this.bytes, i, e) : s = Uo(this.bytes, i, e), this.pos += t + e, s
        }, e.prototype.stateIsMapKey = function() {
            if (this.stack.length > 0) {
                var e = this.stack[this.stack.length - 1];
                return e.type === 1
            }
            return !1
        }, e.prototype.decodeBinary = function(e, t) {
            if (e > this.maxBinLength) throw new zo("Max length exceeded: bin length (".concat(e, ") > maxBinLength (").concat(this.maxBinLength, ")"));
            if (!this.hasRemaining(e + t)) throw kr;
            var n = this.pos + t,
                i = this.bytes.subarray(n, n + e);
            return this.pos += t + e, i
        }, e.prototype.decodeExtension = function(e, t) {
            if (e > this.maxExtLength) throw new zo("Max length exceeded: ext length (".concat(e, ") > maxExtLength (").concat(this.maxExtLength, ")"));
            var n = this.view.getInt8(this.pos + t),
                i = this.decodeBinary(e, t + 1);
            return this.extensionCodec.decode(i, n, this.context)
        }, e.prototype.lookU8 = function() {
            return this.view.getUint8(this.pos)
        }, e.prototype.lookU16 = function() {
            return this.view.getUint16(this.pos)
        }, e.prototype.lookU32 = function() {
            return this.view.getUint32(this.pos)
        }, e.prototype.readU8 = function() {
            var e = this.view.getUint8(this.pos);
            return this.pos++, e
        }, e.prototype.readI8 = function() {
            var e = this.view.getInt8(this.pos);
            return this.pos++, e
        }, e.prototype.readU16 = function() {
            var e = this.view.getUint16(this.pos);
            return this.pos += 2, e
        }, e.prototype.readI16 = function() {
            var e = this.view.getInt16(this.pos);
            return this.pos += 2, e
        }, e.prototype.readU32 = function() {
            var e = this.view.getUint32(this.pos);
            return this.pos += 4, e
        }, e.prototype.readI32 = function() {
            var e = this.view.getInt32(this.pos);
            return this.pos += 4, e
        }, e.prototype.readU64 = function() {
            var e = To(this.view, this.pos);
            return this.pos += 8, e
        }, e.prototype.readI64 = function() {
            var e = Eo(this.view, this.pos);
            return this.pos += 8, e
        }, e.prototype.readF32 = function() {
            var e = this.view.getFloat32(this.pos);
            return this.pos += 4, e
        }, e.prototype.readF64 = function() {
            var e = this.view.getFloat64(this.pos);
            return this.pos += 8, e
        }, e
    }(),
    Sr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {},
    Er = {},
    Tr = {
        get exports() {
            return Er
        },
        set exports(e) {
            Er = e
        }
    },
    Cr = Tr.exports = {},
    Br, Dr;

function Pr() {
    throw new Error("setTimeout has not been defined")
}

function Rr() {
    throw new Error("clearTimeout has not been defined")
}(function() {
    try {
        typeof setTimeout == "function" ? Br = setTimeout : Br = Pr
    } catch {
        Br = Pr
    }
    try {
        typeof clearTimeout == "function" ? Dr = clearTimeout : Dr = Rr
    } catch {
        Dr = Rr
    }
})();

function Mr(e) {
    if (Br === setTimeout) return setTimeout(e, 0);
    if ((Br === Pr || !Br) && setTimeout) return Br = setTimeout, setTimeout(e, 0);
    try {
        return Br(e, 0)
    } catch {
        try {
            return Br.call(null, e, 0)
        } catch {
            return Br.call(this, e, 0)
        }
    }
}

function Nr(e) {
    if (Dr === clearTimeout) return clearTimeout(e);
    if ((Dr === Rr || !Dr) && clearTimeout) return Dr = clearTimeout, clearTimeout(e);
    try {
        return Dr(e)
    } catch {
        try {
            return Dr.call(null, e)
        } catch {
            return Dr.call(this, e)
        }
    }
}
var Or = [],
    Lr = !1,
    Fr, _r = -1;

function Vr() {
    !Lr || !Fr || (Lr = !1, Fr.length ? Or = Fr.concat(Or) : _r = -1, Or.length && Ur())
}

function Ur() {
    if (!Lr) {
        var e = Mr(Vr);
        Lr = !0;
        for (var t = Or.length; t;) {
            for (Fr = Or, Or = []; ++_r < t;) Fr && Fr[_r].run();
            _r = -1, t = Or.length
        }
        Fr = null, Lr = !1, Nr(e)
    }
}
Cr.nextTick = function(e) {
    var t = new Array(arguments.length - 1);
    if (arguments.length > 1)
        for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
    Or.push(new jr(e, t)), Or.length === 1 && !Lr && Mr(Ur)
};

function jr(e, t) {
    this.fun = e, this.array = t
}
jr.prototype.run = function() {
    this.fun.apply(null, this.array)
};
Cr.title = "browser";
Cr.browser = !0;
Cr.env = {};
Cr.argv = [];
Cr.version = "";
Cr.versions = {};

function Hr() {}
Cr.on = Hr;
Cr.addListener = Hr;
Cr.once = Hr;
Cr.off = Hr;
Cr.removeListener = Hr;
Cr.removeAllListeners = Hr;
Cr.emit = Hr;
Cr.prependListener = Hr;
Cr.prependOnceListener = Hr;
Cr.listeners = function(e) {
    return []
};
Cr.binding = function(e) {
    throw new Error("process.binding is not supported")
};
Cr.cwd = function() {
    return "/"
};
Cr.chdir = function(e) {
    throw new Error("process.chdir is not supported")
};
Cr.umask = function() {
    return 0
};
const Wr = 1920,
      Qr = 1080,
      Yr = 9,
      zr = Er && Er.argv.indexOf("--largeserver") != -1 ? 80 : 50,
      Gr = 50,
      Kr = 6,
      Xr = 3e3,
      Jr = 10,
      qr = 5,
      $r = 50,
      Zr = 4.5,
      ea = 15,
      ta = .9,
      na = 3e3,
      ia = 60,
      sa = 35,
      oa = 3e3,
      ra = 500,
      aa = Er && {}.IS_SANDBOX,
      la = 100,
      ca = W / 2.6,
      da = 10,
      ua = .25,
      fa = W / 2,
      ha = 35,
      pa = .0016,
      ma = .993,
      ga = 34,
      ya = ["#bf8f54", "#cbb091", "#896c4b", "#fadadc", "#ececec", "#c37373", "#4c4c4c", "#ecaff7", "#738cc3", "#8bc373", "#67A9DD"],
      xa = 7,
      wa = .06,
      ba = ["Sid", "Steph", "Bmoe", "Romn", "Jononthecool", "Fiona", "Vince", "Nathan", "Nick", "Flappy", "Ronald", "Otis", "Pepe", "Mc Donald", "Theo", "Fabz", "Oliver", "Jeff", "Jimmy", "Helena", "Reaper", "Ben", "Alan", "Naomi", "XYZ", "Clever", "Jeremy", "Mike", "Destined", "Stallion", "Allison", "Meaty", "Sophia", "Vaja", "Joey", "Pendy", "Murdoch", "Theo", "Jared", "July", "Sonia", "Mel", "Dexter", "Quinn", "Milky"],
      va = W / 3,
      ka = [{
          id: 0,
          src: "",
          xp: 0,
          val: 1
      }, {
          id: 1,
          src: "_g",
          xp: 3e3,
          val: 1.1
      }, {
          id: 2,
          src: "_d",
          xp: 7e3,
          val: 1.18
      }, {
          id: 3,
          src: "_r",
          poison: !0,
          xp: 12e3,
          val: 1.18
      }],
      Aa = function(e) {
          const t = e.weaponXP[e.weaponIndex] || 0;
          for (let e = ka.length - 1; e >= 0; --e)
              if (t >= ka[e].xp) return ka[e]
      },
      Ia = ["wood", "food", "stone", "points"],
      Sa = 7,
      Ea = 9,
      Ta = 3,
      Ca = 32,
      Ba = 7,
      Da = 724,
      Pa = 114,
      Ra = .0011,
      Ma = 1e-4,
      Na = 1.3,
      Oa = [150, 160, 165, 175],
      La = [80, 85, 95],
      Fa = [80, 85, 90],
      _a = 2400,
      Va = .75,
      Ua = 15,
      ja = 14400,
      Ha = 40,
      Wa = 2200,
      Qa = .6,
      Ya = 1,
      za = .3,
      Ga = .3,
      Ka = 144e4,
      Xa = 320,
      Ja = 100,
      qa = 2,
      $a = 3200,
      Za = 1440,
      el = .2,
      tl = -1,
      nl = ja - Xa - 120,
      il = ja - Xa - 120,
      K = {
          maxScreenWidth: Wr,
          maxScreenHeight: Qr,
          serverUpdateRate: Yr,
          maxPlayers: zr,
          maxPlayersHard: Gr,
          collisionDepth: Kr,
          minimapRate: Xr,
          colGrid: Jr,
          clientSendRate: qr,
          healthBarWidth: $r,
          healthBarPad: Zr,
          iconPadding: ea,
          iconPad: ta,
          deathFadeout: na,
          crownIconScale: ia,
          crownPad: sa,
          chatCountdown: oa,
          chatCooldown: ra,
          inSandbox: aa,
          maxAge: la,
          gatherAngle: ca,
          gatherWiggle: da,
          hitReturnRatio: ua,
          hitAngle: fa,
          playerScale: ha,
          playerSpeed: pa,
          playerDecel: ma,
          nameY: ga,
          skinColors: ya,
          animalCount: xa,
          aiTurnRandom: wa,
          cowNames: ba,
          shieldAngle: va,
          weaponVariants: ka,
          fetchVariant: Aa,
          resourceTypes: Ia,
          areaCount: Sa,
          treesPerArea: Ea,
          bushesPerArea: Ta,
          totalRocks: Ca,
          goldOres: Ba,
          riverWidth: Da,
          riverPadding: Pa,
          waterCurrent: Ra,
          waveSpeed: Ma,
          waveMax: Na,
          treeScales: Oa,
          bushScales: La,
          rockScales: Fa,
          snowBiomeTop: _a,
          snowSpeed: Va,
          maxNameLength: Ua,
          mapScale: ja,
          mapPingScale: Ha,
          mapPingTime: Wa,
          volcanoScale: Xa,
          innerVolcanoScale: Ja,
          volcanoAnimalStrength: qa,
          volcanoAnimationDuration: $a,
          volcanoAggressionRadius: Za,
          volcanoAggressionPercentage: el,
          volcanoDamagePerSecond: tl,
          volcanoLocationX: nl,
          volcanoLocationY: il,
          MAX_ATTACK: Qa,
          MAX_SPAWN_DELAY: Ya,
          MAX_SPEED: za,
          MAX_TURN_SPEED: Ga,
          DAY_INTERVAL: Ka
      },
      sl = new ar,
      ol = new Ir,
      T = {
          socket: null,
          connected: !1,
          socketId: -1,
          connect: function(e, n, s) {
              if (this.socket) return;
              const o = this;
              try {
                  let t = !1;
                  const i = e;
                  this.socket = new WebSocket(e), q3 = this.socket, this.socket.binaryType = "arraybuffer", this.socket.onmessage = function(e) {
                      var t = new Uint8Array(e.data);
                      const n = ol.decode(t),
                            i = n[0];
                      var t = n[1];
                      i == "io-init" ? o.socketId = t[0] : s[i].apply(void 0, t)
                  }, this.socket.onopen = function() {
                      o.connected = !0, n()
                  }, this.socket.onclose = function(e) {
                      o.connected = !1, e.code == 4001 ? n("Invalid Connection") : t || n("disconnected")
                  }, this.socket.onerror = function(e) {
                      this.socket && this.socket.readyState != WebSocket.OPEN && (t = !0, console.error("Socket error", arguments), n("Socket error"))
                  }
              } catch (t) {
                  console.warn("Socket connection error:", t), n(t)
              }
          },
          send: function(e) {
              if (e == "d") e = "F";
              if (e == "a") e = "9";
              if (e == "G") e = "z";
              const t = Array.prototype.slice.call(arguments, 1),
                    n = sl.encode([e, t]);
              if (!Wt.min) {
                  Wt.min = true;
                  setTimeout(() => {
                      Wt.min = false;
                      We = 0
                  }, 6e4)
              }
              if (e == "P") {
                  np = v
              }
              if (e == "G" && t[0] === null) return;
              if (He < 120 && We <= 5050) He++, We++;
              if (We > 5050) b(`exceeding minute packet limit ${We}`, "", Hy(), false, true);
              if (He >= 120) b(`exceeding second packet limit ${He}`, "", Hy(), false, true);
              if (He >= 120 || We > 5050) return;
              if (e == "9") {
                  ni = t[1];
                  if (Dn == t[0]) return;
                  Dn = t[0];
                  ui = t[0]
              }
              if (e == "K") {
                  St++
              }
              if (e == "H") {
                  qt >= 9 ? qt = A : qt = ee
              }
              this.socket && this.socket.send(n)
          },
          socketReady: function() {
              return this.socket && this.connected
          },
          close: function() {
              this.socket && this.socket.close(), this.socket = null, this.connected = !1
          }
      };
var rl = Math.abs;
const al = Math.sqrt;
const ll = Math.atan2,
      cl = Math.PI,
      dl = function(e, t) {
          return Math.floor(Math.random() * (t - e + 1)) + e
      },
      ul = function(e, t) {
          return Math.random() * (t - e + 1) + e
      },
      fl = function(e, t, n) {
          return e + (t - e) * n
      },
      hl = function(e, t) {
          return e > 0 ? e = oe(0, e - t) : e < 0 && (e = j(0, e + t)), e
      },
      pl = function(e, t, n, i) {
          return al((n -= e) * n + (i -= t) * i)
      },
      ml = function(e, t, n, i) {
          return ll(t - i, e - n)
      },
      gl = function(e, t) {
          const n = rl(t - e) % (cl * 2);
          return n > cl ? cl * 2 - n : n
      },
      yl = function(e) {
          return typeof e == "number" && !isNaN(e) && isFinite(e)
      },
      xl = function(e) {
          return e && typeof e == "string"
      },
      wl = function(e) {
          return e > 999 ? (e / 1e3).toFixed(1) + "k" : e
      },
      bl = function(e) {
          return e.charAt(0).toUpperCase() + e.slice(1)
      },
      vl = function(e, t) {
          return e ? parseFloat(e.toFixed(t)) : 0
      },
      kl = function(e, t) {
          return parseFloat(t.points) - parseFloat(e.points)
      },
      Al = function(e, t, n, i, s, o, r, a) {
          let l = s,
              c = r;
          if (s > r && (l = r, c = s), c > n && (c = n), l < e && (l = e), l > c) return !1;
          let d = o,
              u = a;
          const f = r - s;
          if (S(f) > 1e-7) {
              const h = (a - o) / f,
                    e = o - h * s;
              d = h * l + e, u = h * c + e
          }
          if (d > u) {
              const h = u;
              u = d, d = h
          }
          return u > i && (u = i), d < t && (d = t), !(d > u)
      },
      Il = function(e, t, n) {
          const i = e.getBoundingClientRect(),
                s = i.left + window.scrollX,
                o = i.top + window.scrollY,
                r = i.width,
                a = i.height,
                l = t > s && t < s + r,
                c = n > o && n < o + a;
          return l && c
      },
      Sl = function(e) {
          const t = e.changedTouches[0];
          e.screenX = t.screenX, e.screenY = t.screenY, e.clientX = t.clientX, e.clientY = t.clientY, e.pageX = t.pageX, e.pageY = t.pageY
      },
      El = function(t, e) {
          const n = !e;
          let i = !1;
          const s = !1;
          t.addEventListener("touchstart", Dl(o), s), t.addEventListener("touchmove", Dl(r), s), t.addEventListener("touchend", Dl(a), s), t.addEventListener("touchcancel", Dl(a), s), t.addEventListener("touchleave", Dl(a), s);

          function o(e) {
              Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), t.onmouseover && t.onmouseover(e), i = !0
          }

          function r(e) {
              Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), Il(t, e.pageX, e.pageY) ? i || (t.onmouseover && t.onmouseover(e), i = !0) : i && (t.onmouseout && t.onmouseout(e), i = !1)
          }

          function a(e) {
              Sl(e), window.setUsingTouch(!0), n && (e.preventDefault(), e.stopPropagation()), i && (t.onclick && t.onclick(e), t.onmouseout && t.onmouseout(e), i = !1)
          }
      },
      Tl = function(e) {
          for (; e.hasChildNodes();) e.removeChild(e.lastChild)
      },
      Cl = function(n) {
          const i = document.createElement(n.tag || "div");

          function e(e, t) {
              n[e] && (i[t] = n[e])
          }
          e("text", "textContent"), e("html", "innerHTML"), e("class", "className");
          for (const t in n) {
              switch (t) {
                  case "tag":
                  case "text":
                  case "html":
                  case "class":
                  case "style":
                  case "hookTouch":
                  case "parent":
                  case "children":
                      continue
              }
              i[t] = n[t]
          }
          if (i.onclick && (i.onclick = Dl(i.onclick)), i.onmouseover && (i.onmouseover = Dl(i.onmouseover)), i.onmouseout && (i.onmouseout = Dl(i.onmouseout)), n.style && (i.style.cssText = n.style), n.hookTouch && El(i), n.parent && n.parent.appendChild(i), n.children)
              for (let e = 0; e < n.children.length; e++) i.appendChild(n.children[e]);
          return i
      },
      Bl = function(e) {
          return e && typeof e.isTrusted == "boolean" ? e.isTrusted : !0
      },
      Dl = function(t) {
          return function(e) {
              e && e instanceof Event && Bl(e) && t(e)
          }
      },
      Pl = function(t) {
          let n = "";
          const i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
          for (let e = 0; e < t; e++) n += i.charAt(f(Math.random() * i.length));
          return n
      },
      Rl = function(t, n) {
          let i = 0;
          for (let e = 0; e < t.length; e++) t[e] === n && i++;
          return i
      },
      X = {
          randInt: dl,
          randFloat: ul,
          lerp: fl,
          decel: hl,
          getDistance: pl,
          getDirection: ml,
          getAngleDist: gl,
          isNumber: yl,
          isString: xl,
          kFormat: wl,
          capitalizeFirst: bl,
          fixTo: vl,
          sortByPoints: kl,
          lineInRect: Al,
          containsPoint: Il,
          mousifyTouchEvent: Sl,
          hookTouchEvents: El,
          removeAllChildren: Tl,
          generateElement: Cl,
          eventIsTrusted: Bl,
          checkTrusted: Dl,
          randomString: Pl,
          countInArray: Rl
      },
      Ml = function() {
          this.init = function(e, t, n, i, s, o, r, a) {
              this.x = e;
              this.y = t;
              this.color = r;
              this.scale = n;
              this.speed = i;
              this.life = s;
              this.text = o;
              this.startScale = this.scale * .1;
              this.maxScale = 1.2 * n;
              this.scaleSpeed = .7;
              this.speedMax = i;
              this.visuals = true;
              this.movSpeed = Math.random() * 1 + 1;
              this.movAngle = Math.random() * 1 < .5;
              this.maxLife = s
          };
          this.update = function(e) {
              if (this.life > 0) {
                  this.life -= e;
                  if (this.visuals) {
                      this.y -= this.speed * e;
                      if (this.scaleSpeed !== -.35) {
                          this.x += (this.movAngle ? -1 : 1) * this.speed * e * this.movSpeed
                      } else {
                          this.y += this.speed * e
                      }
                      this.scale += this.scaleSpeed * (e / 4.5);
                      this.scale = oe(this.scale, this.startScale);
                      if (this.speed < this.speedMax) {
                          this.speed += this.speedMax * .01
                      }
                      if (this.scale >= this.maxScale) {
                          this.scale = this.maxScale;
                          this.scaleSpeed *= -.5;
                          this.speed *= .5
                      }
                  } else {
                      this.y -= this.speed * e;
                      this.scale += this.scaleSpeed * e;
                      if (this.scale >= this.maxScale) {
                          this.scale = this.maxScale;
                          this.scaleSpeed *= -1
                      } else if (this.scale <= this.startScale) {
                          this.scale = this.startScale;
                          this.scaleSpeed = 0
                      }
                  }
                  if (this.life <= 0) {
                      this.life = 0
                  }
              }
          }, this.render = function(e, t, n) {
              e.font = this.scale + "px Lilita One";
              if (this.visuals) {
                  e.lineWidth = 10;
                  e.strokeStyle = "#3d3f42";
                  e.fillStyle = this.color;
                  e.globalAlpha = this.life / this.maxLife * 2;
                  e.strokeText(this.text, this.x - t, this.y - n)
              } else {
                  e.fillStyle = this.color
              }
              e.fillText(this.text, this.x - t, this.y - n);
              e.globalAlpha = 1
          }
      },
      Nl = function() {
          this.texts = [];
          this.update = function(t, n, i, s) {
              n.textBaseline = "middle";
              n.textAlign = "center";
              for (let e = 0; e < this.texts.length; ++e) {
                  const o = this.texts[e];
                  if (o.life) {
                      o.update(t);
                      o.render(n, i, s)
                  }
              }
          };
          this.showText = function(e, t, n, i, s, o, r) {
              let a = this.texts.find(e => !e.life);
              if (!a) {
                  a = new Ml;
                  this.texts.push(a)
              }
              a.init(e, t, n, i, s, o, r)
          }
      },
      Ol = function(i, e) {
          let s;
          this.sounds = [], this.active = !0, this.play = function(e, t, n) {
              !t || !this.active || (s = this.sounds[e], s || (s = new Howl({
                  src: ".././sound/" + e + ".mp3"
              }), this.sounds[e] = s), (!n || !s.isPlaying) && (s.isPlaying = !0, s.play(), s.volume((t || 1) * i.volumeMult), s.loop(n)))
          }, this.toggleMute = function(e, t) {
              s = this.sounds[e], s && s.mute(t)
          }, this.stop = function(e) {
              s = this.sounds[e], s && (s.stop(), s.isPlaying = !1)
          }
      },
      Ll = Math.floor,
      Fl = Math.abs,
      _l = Math.cos,
      Vl = Math.sin,
      Ul = Math.sqrt;

function jl(m, i, d, u, a, s) {
    this.objects = i, this.grids = {}, this.updateObjects = [];
    let o, r;
    const l = u.mapScale / u.colGrid;
    this.setObjectGrids = function(n) {
        const i = j(u.mapScale, oe(0, n.x)),
              s = j(u.mapScale, oe(0, n.y));
        for (let t = 0; t < u.colGrid; ++t) {
            o = t * l;
            for (let e = 0; e < u.colGrid; ++e) r = e * l, i + n.scale >= o && i - n.scale <= o + l && s + n.scale >= r && s - n.scale <= r + l && (this.grids[t + "_" + e] || (this.grids[t + "_" + e] = []), this.grids[t + "_" + e].push(n), n.gridLocations.push(t + "_" + e))
        }
    }, this.removeObjGrid = function(t) {
        let n;
        for (let e = 0; e < t.gridLocations.length; ++e) n = this.grids[t.gridLocations[e]].indexOf(t), n >= 0 && this.grids[t.gridLocations[e]].splice(n, 1)
    }, this.disableObj = function(e) {
        if (e.active = !1, s) {
            e.owner && e.pps && (e.owner.pps -= e.pps), this.removeObjGrid(e);
            const t = this.updateObjects.indexOf(e);
            t >= 0 && this.updateObjects.splice(t, 1)
        }
    }, this.hitObj = function(t, n) {
        for (let e = 0; e < a.length; ++e) a[e].active && (t.sentTo[a[e].id] && (t.active ? a[e].canSee(t) && s.send(a[e].id, "L", d.fixTo(n, 1), t.sid) : s.send(a[e].id, "Q", t.sid)), !t.active && t.owner == a[e] && a[e].changeItemCount(t.group.id, -1))
    };
    const c = [];
    let f;
    this.getGridArrays = function(e, t, n) {
        o = Ll(e / l), r = Ll(t / l), c.length = 0;
        try {
            this.grids[o + "_" + r] && c.push(this.grids[o + "_" + r]), e + n >= (o + 1) * l && (f = this.grids[o + 1 + "_" + r], f && c.push(f), r && t - n <= r * l ? (f = this.grids[o + 1 + "_" + (r - 1)], f && c.push(f)) : t + n >= (r + 1) * l && (f = this.grids[o + 1 + "_" + (r + 1)], f && c.push(f))), o && e - n <= o * l && (f = this.grids[o - 1 + "_" + r], f && c.push(f), r && t - n <= r * l ? (f = this.grids[o - 1 + "_" + (r - 1)], f && c.push(f)) : t + n >= (r + 1) * l && (f = this.grids[o - 1 + "_" + (r + 1)], f && c.push(f))), t + n >= (r + 1) * l && (f = this.grids[o + "_" + (r + 1)], f && c.push(f)), r && t - n <= r * l && (f = this.grids[o + "_" + (r - 1)], f && c.push(f))
        } catch {}
        return c
    };
    let g;
    this.add = function(e, t, n, i, s, o, r, a, l, c, d, u, f, h, p) {
        g = new m(e);
        g.sid = e;
        g.init(t, n, i, s, o, r, l, c, d, u, p, h);
        if (!c && !u && !d) {
            kh.push(g);
            si?.addBuilding(g)
        } else if (c && !u) {
            c.builds.push(g)
        } else if (d && !c && !u) {
            es.builds.push(g)
        } else {
            Ze.push(g);
            if (f) $e.push(g);
            Je = Q.concat($e)
        }
    }, this.disableBySid = function(t) {
        for (let e = 0; e < i.length; ++e)
            if (i[e].sid == t) {
                this.disableObj(i[e]);
                break
            }
    }, this.removeAllItems = function(t, e) {
        for (let e = 0; e < i.length; ++e) i[e].active && i[e].owner && i[e].owner.sid == t && this.disableObj(i[e]);
        e && e.broadcast("R", t)
    }, this.fetchSpawnObj = function(t) {
        let n = null;
        for (let e = 0; e < i.length; ++e)
            if (g = i[e], g.active && g.owner && g.owner.sid == t && g.spawnPoint) {
                n = [g.x, g.y], this.disableObj(g), s.broadcast("Q", g.sid), g.owner && g.owner.changeItemCount(g.group.id, -1);
                break
            } return n
    }, this.checkItemLocation = function(t, n, i, s, e, o, r) {
        for (let e = 0; e < Je.length; ++e) {
            const a = Je[e].blocker ? Je[e].blocker : Je[e].getScale(s, Je[e].isItem);
            if (Je[e].active && d.getDistance(t, n, Je[e].x, Je[e].y) < i + a && !(Je[e].assumeBreak && r)) return !1
        }
        return !(!o && e != 18 && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2)
    }, this.checkItemLocation2 = function(t, n, i, s, e, o, r) {
        for (var a = 0; a < Xt.length; ++a) {
            let e = Xt[a];
            var l = e.blocker ? e.blocker : e.getScale(s, e.isItem);
            if (e.active && d.getDistance(t, n, e.x, e.y) < i + l) return !1
        }
        return !(!o && 18 != e && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2)
    }, this.checkItemLocationOrig = function(e, t, n, i, s, o, r) {
        for (var a = 0; a < Q.length; ++a) {
            var l = Q[a].blocker ? Q[a].blocker : Q[a].getScale(i, Q[a].isItem);
            if (Q[a].active && a.getDistance(e, t, Q[a].x, Q[a].y) < n + l) return false
        }
        if (!o && s != 18 && t >= K.mapScale / 2 - K.riverWidth / 2 && t <= K.mapScale / 2 + K.riverWidth / 2) {
            return false
        }
        return true
    };
    this.checkItemLocation3 = function(t, n, i, s, e, o, r, a) {
        for (var l = 0; l < Q.length; ++l) {
            var c = Q[l].blocker ? Q[l].blocker : Q[l].getScale(s, Q[l].isItem);
            let e = d.getDistance(t, n, Q[l].x, Q[l].y) < i + c;
            if (e) {
                a.overlap.push(Q[l]);
                a.preplacer.push(Q[l].assumeBreak);
                a.sids.push(Q[l].sid)
            }
        }
        if (a.preplacer.includes(false)) return !1;
        return !(!o && 18 != e && n >= u.mapScale / 2 - u.riverWidth / 2 && n <= u.mapScale / 2 + u.riverWidth / 2)
    }, this.checkItemLocation4 = function(e, t, n, i, s, o, r) {
        for (var a = 0; a < Q.length; ++a) {
            var l = Q[a].blocker ? Q[a].blocker : Q[a].getScale(i, Q[a].isItem);
            if (Q[a].active && d.getDistance(e, t, Q[a].x, Q[a].y) < n + l && r.sid != Q[a].sid) return !1
        }
        return !(!o && 18 != s && t >= u.mapScale / 2 - u.riverWidth / 2 && t <= u.mapScale / 2 + u.riverWidth / 2)
    }, this.checkItemLocationBot = function(e, t, n, i, s, o, r) {
        for (var a = 0; a < r.length; ++a) {
            var l = r[a].blocker ? r[a].blocker : r[a].getScale(i, r[a].isItem);
            if (d.getDistance(e, t, r[a].x, r[a].y) < n + l) return !1
        }
        return !(!o && 18 != s && t >= u.mapScale / 2 - u.riverWidth / 2 && t <= u.mapScale / 2 + u.riverWidth / 2)
    }, this.addProjectile = function(e, t, n, i, s) {
        const o = items.projectiles[s];
        let r;
        for (let e = 0; e < projectiles.length; ++e)
            if (!projectiles[e].active) {
                r = projectiles[e];
                break
            } r || (r = new Projectile(a, d), projectiles.push(r)), r.init(s, e, t, n, o.speed, i, o.scale)
    }, this.checkCollision = function(t, n, i) {
        i = i || 1;
        const s = t.x - n.x,
              o = t.y - n.y;
        let r = t.scale + n.scale;
        if (Fl(s) <= r || Fl(o) <= r) {
            r = t.scale + (n.getScale ? n.getScale() : n.scale);
            let e = Ul(s * s + o * o) - r;
            if (e <= 0) {
                if (n.ignoreCollision) n.trap && !t.noTrap && n.owner != t && !(n.owner && n.owner.team && n.owner.team == t.team) ? (t.lockMove = !0, n.hideFromEnemy = !1) : n.boostSpeed ? (t.xVel += i * n.boostSpeed * (n.weightM || 1) * _l(n.dir), t.yVel += i * n.boostSpeed * (n.weightM || 1) * Vl(n.dir)) : n.healCol ? t.healCol = n.healCol : n.teleport && (t.x = d.randInt(0, u.mapScale), t.y = d.randInt(0, u.mapScale));
                else {
                    const a = d.getDirection(t.x, t.y, n.x, n.y);
                    if (d.getDistance(t.x, t.y, n.x, n.y), n.isPlayer ? (e = e * -1 / 2, t.x += e * _l(a), t.y += e * Vl(a), n.x -= e * _l(a), n.y -= e * Vl(a)) : (t.x = n.x + r * _l(a), t.y = n.y + r * Vl(a), t.xVel *= .75, t.yVel *= .75), n.dmg && n.owner != t && !(n.owner && n.owner.team && n.owner.team == t.team)) {
                        t.changeHealth(-n.dmg, n.owner, n);
                        const l = 1.5 * (n.weightM || 1);
                        t.xVel += l * _l(a), t.yVel += l * Vl(a), n.pDmg && !(t.skin && t.skin.poisonRes) && (t.dmgOverTime.dmg = n.pDmg, t.dmgOverTime.time = 5, t.dmgOverTime.doer = n.owner), t.colDmg && n.health && (n.changeHealth(-t.colDmg) && this.disableObj(n), this.hitObj(n, d.getDirection(t.x, t.y, n.x, n.y)))
                    }
                }
                return n.zIndex > t.zIndex && (t.zIndex = n.zIndex), !0
            }
        }
        return !1
    }, this.checkCollision2 = function(e, t, n) {
        n = n || 1;
        var i = e.x2 - t.x,
            s = e.y2 - t.y,
            o = 35 + (t.realScale ? t.realScale : t.scale);
        if (Fl(i) <= o || Fl(s) <= o) {
            o = 35 + (t.getScale ? t.getScale() : t.scale);
            var r = Ul(i * i + s * s) - o;
            if (r <= 0) {
                return t.zIndex > t.zIndex && (t.zIndex = t.zIndex), !0
            }
        }
        return !1
    }
}

function Hl(u, f, h, p, m, g, y, x, w) {
    this.addProjectile = function(e, t, n, i, s, o, r, a, l) {
        const c = g.projectiles[o];
        let d;
        for (let e = 0; e < f.length; ++e)
            if (!f[e].active) {
                d = f[e];
                break
            } return d || (d = new u(h, p, m, g, y, x, w), d.sid = f.length, f.push(d)), d.init(o, e, t, n, s, c.dmg, i, c.scale, r), d.ignoreObj = a, d.layer = l || c.layer, d.src = c.src, d
    }
}

function Wl(o, r, a, l, c, d, u, f, h) {
    this.aiTypes = [{
        id: 0,
        src: "cow_1",
        killScore: 150,
        health: 500,
        weightM: .8,
        speed: 95e-5,
        turnSpeed: .001,
        scale: 72,
        drop: ["food", 50]
    }, {
        id: 1,
        src: "pig_1",
        killScore: 200,
        health: 800,
        weightM: .6,
        speed: 85e-5,
        turnSpeed: .001,
        scale: 72,
        drop: ["food", 80]
    }, {
        id: 2,
        name: "Bull",
        src: "bull_2",
        hostile: !0,
        dmg: 20,
        killScore: 1e3,
        health: 1800,
        weightM: .5,
        speed: 94e-5,
        turnSpeed: 74e-5,
        scale: 78,
        viewRange: 800,
        chargePlayer: !0,
        drop: ["food", 100]
    }, {
        id: 3,
        name: "Bully",
        src: "bull_1",
        hostile: !0,
        dmg: 20,
        killScore: 2e3,
        health: 2800,
        weightM: .45,
        speed: .001,
        turnSpeed: 8e-4,
        scale: 90,
        viewRange: 900,
        chargePlayer: !0,
        drop: ["food", 400]
    }, {
        id: 4,
        name: "Wolf",
        src: "wolf_1",
        hostile: !0,
        dmg: 8,
        killScore: 500,
        health: 300,
        weightM: .45,
        speed: .001,
        turnSpeed: .002,
        scale: 84,
        viewRange: 800,
        chargePlayer: !0,
        drop: ["food", 200]
    }, {
        id: 5,
        name: "Quack",
        src: "chicken_1",
        dmg: 8,
        killScore: 2e3,
        noTrap: !0,
        health: 300,
        weightM: .2,
        speed: .0018,
        turnSpeed: .006,
        scale: 70,
        drop: ["food", 100]
    }, {
        id: 6,
        name: "MOOSTAFA",
        nameScale: 50,
        src: "enemy",
        hostile: !0,
        dontRun: !0,
        fixedSpawn: !0,
        spawnDelay: 6e4,
        noTrap: !0,
        colDmg: 100,
        dmg: 40,
        killScore: 8e3,
        health: 18e3,
        weightM: .4,
        speed: 7e-4,
        turnSpeed: .01,
        scale: 80,
        spriteMlt: 1.8,
        leapForce: .9,
        viewRange: 1e3,
        hitRange: 210,
        hitDelay: 1e3,
        chargePlayer: !0,
        drop: ["food", 100]
    }, {
        id: 7,
        name: "Treasure",
        hostile: !0,
        nameScale: 35,
        src: "crate_1",
        fixedSpawn: !0,
        spawnDelay: 12e4,
        colDmg: 200,
        killScore: 5e3,
        health: 2e4,
        weightM: .1,
        speed: 0,
        turnSpeed: 0,
        scale: 70,
        spriteMlt: 1
    }, {
        id: 8,
        name: "MOOFIE",
        src: "wolf_2",
        hostile: !0,
        fixedSpawn: !0,
        dontRun: !0,
        hitScare: 4,
        spawnDelay: 3e4,
        noTrap: !0,
        nameScale: 35,
        dmg: 10,
        colDmg: 100,
        killScore: 3e3,
        health: 7e3,
        weightM: .45,
        speed: .0015,
        turnSpeed: .002,
        scale: 90,
        viewRange: 800,
        chargePlayer: !0,
        drop: ["food", 1e3]
    }, {
        id: 9,
        name: "💀MOOFIE",
        src: "wolf_2",
        hostile: !0,
        fixedSpawn: !0,
        dontRun: !0,
        hitScare: 50,
        spawnDelay: 6e4,
        noTrap: !0,
        nameScale: 35,
        dmg: 12,
        colDmg: 100,
        killScore: 3e3,
        health: 9e3,
        weightM: .45,
        speed: .0015,
        turnSpeed: .0025,
        scale: 94,
        viewRange: 1440,
        chargePlayer: !0,
        drop: ["food", 3e3],
        minSpawnRange: .85,
        maxSpawnRange: .9
    }, {
        id: 10,
        name: "💀Wolf",
        src: "wolf_1",
        hostile: !0,
        fixedSpawn: !0,
        dontRun: !0,
        hitScare: 50,
        spawnDelay: 3e4,
        dmg: 10,
        killScore: 700,
        health: 500,
        weightM: .45,
        speed: .00115,
        turnSpeed: .0025,
        scale: 88,
        viewRange: 1440,
        chargePlayer: !0,
        drop: ["food", 400],
        minSpawnRange: .85,
        maxSpawnRange: .9
    }, {
        id: 11,
        name: "💀Bully",
        src: "bull_1",
        hostile: !0,
        fixedSpawn: !0,
        dontRun: !0,
        hitScare: 50,
        dmg: 20,
        killScore: 5e3,
        health: 5e3,
        spawnDelay: 1e5,
        weightM: .45,
        speed: .00115,
        turnSpeed: .0025,
        scale: 94,
        viewRange: 1440,
        chargePlayer: !0,
        drop: ["food", 800],
        minSpawnRange: .85,
        maxSpawnRange: .9
    }], this.spawn = function(e, t, n, i) {
        if (!this.aiTypes[i]) return console.error("missing ai type", i), this.spawn(e, t, n, 0);
        let s;
        for (let e = 0; e < o.length; ++e)
            if (!o[e].active) {
                s = o[e];
                break
            } return s || (s = new r(o.length, c, a, l, u, d, f, h), o.push(s)), s.init(e, t, n, i, this.aiTypes[i]), s
    }
}
const Ql = Math.PI * 2,
      Yl = 0;

function zl(e, y, x, t, w, b, s, v) {
    this.sid = e, this.isAI = !0, this.nameIndex = w.randInt(0, b.cowNames.length - 1), this.init = function(e, t, n, i, s) {
        this.x = e, this.y = t, this.startX = s.fixedSpawn ? e : null, this.startY = s.fixedSpawn ? t : null, this.xVel = 0, this.yVel = 0, this.zIndex = 0, this.dir = n, this.dirPlus = 0, this.index = i, this.src = s.src, s.name && (this.name = s.name), (this.name || "").startsWith("💀") && (this.isVolcanoAi = !0), this.weightM = s.weightM, this.speed = s.speed, this.killScore = s.killScore, this.turnSpeed = s.turnSpeed, this.scale = s.scale, this.maxHealth = s.health, this.health2 = 0, this.leapForce = s.leapForce, this.health = this.maxHealth, this.chargePlayer = s.chargePlayer, this.viewRange = s.viewRange, this.drop = s.drop, this.dmg = s.dmg, this.hostile = s.hostile, this.dontRun = s.dontRun, this.hitRange = s.hitRange, this.hitDelay = s.hitDelay, this.hitScare = s.hitScare, this.spriteMlt = s.spriteMlt, this.nameScale = s.nameScale, this.colDmg = s.colDmg, this.noTrap = s.noTrap, this.spawnDelay = s.spawnDelay, this.minSpawnRange = s.minSpawnRange, this.maxSpawnRange = s.maxSpawnRange, this.hitWait = 0, this.waitCount = 1e3, this.moveCount = 0, this.targetDir = 0, this.active = !0, this.alive = !0, this.runFrom = null, this.chargeTarget = null, this.dmgOverTime = {}
    }, this.getVolcanoAggression = function() {
        const e = w.getDistance(this.x, this.y, b.volcanoLocationX, b.volcanoLocationY),
              t = e > b.volcanoAggressionRadius ? 0 : b.volcanoAggressionRadius - e;
        return 1 + b.volcanoAggressionPercentage * (1 - t / b.volcanoAggressionRadius)
    };
    let k = 0;
    this.update = function(i) {
        if (this.active) {
            if (this.spawnCounter) {
                if (this.spawnCounter -= i * (1 + 0) * this.getVolcanoAggression(), this.spawnCounter <= 0)
                    if (this.spawnCounter = 0, this.minSpawnRange || this.maxSpawnRange) {
                        const p = b.mapScale * this.minSpawnRange,
                              m = b.mapScale * this.maxSpawnRange;
                        this.x = w.randInt(p, m), this.y = w.randInt(p, m)
                    } else this.x = this.startX || w.randInt(0, b.mapScale), this.y = this.startY || w.randInt(0, b.mapScale);
                return
            }
            k -= i, k <= 0 && (this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer), this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)), k = 1e3);
            let e = !1,
                t = 1;
            if (!this.zIndex && !this.lockMove && this.y >= b.mapScale / 2 - b.riverWidth / 2 && this.y <= b.mapScale / 2 + b.riverWidth / 2 && (t = .33, this.xVel += b.waterCurrent * i), this.lockMove) this.xVel = 0, this.yVel = 0;
            else if (this.waitCount > 0) {
                if (this.waitCount -= i, this.waitCount <= 0)
                    if (this.chargePlayer) {
                        let e, t, n;
                        for (var s = 0; s < x.length; ++s) x[s].alive && !(x[s].skin && x[s].skin.bullRepel) && (n = w.getDistance(this.x, this.y, x[s].x, x[s].y), n <= this.viewRange && (!e || n < t) && (t = n, e = x[s]));
                        e ? (this.chargeTarget = e, this.moveCount = w.randInt(8e3, 12e3)) : (this.moveCount = w.randInt(1e3, 2e3), this.targetDir = w.randFloat(-W, W))
                    } else this.moveCount = w.randInt(4e3, 1e4), this.targetDir = w.randFloat(-W, W)
            } else if (this.moveCount > 0) {
                var o = this.speed * t * (1 + b.MAX_SPEED * Yl) * this.getVolcanoAggression();
                if (this.runFrom && this.runFrom.active && !(this.runFrom.isPlayer && !this.runFrom.alive) ? (this.targetDir = w.getDirection(this.x, this.y, this.runFrom.x, this.runFrom.y), o *= 1.42) : this.chargeTarget && this.chargeTarget.alive && (this.targetDir = w.getDirection(this.chargeTarget.x, this.chargeTarget.y, this.x, this.y), o *= 1.75, e = !0), this.hitWait && (o *= .3), this.dir != this.targetDir) {
                    this.dir %= Ql;
                    const p = (this.dir - this.targetDir + Ql) % Ql,
                          m = j(S(p - Ql), p, this.turnSpeed * i),
                          g = p - W >= 0 ? 1 : -1;
                    this.dir += g * m + Ql
                }
                this.dir %= Ql, this.xVel += o * i * U(this.dir), this.yVel += o * i * V(this.dir), this.moveCount -= i, this.moveCount <= 0 && (this.runFrom = null, this.chargeTarget = null, this.waitCount = this.hostile ? 1500 : w.randInt(1500, 6e3))
            }
            this.zIndex = 0, this.lockMove = !1;
            var r;
            const d = w.getDistance(0, 0, this.xVel * i, this.yVel * i),
                  u = j(4, oe(1, H(d / 40))),
                  f = 1 / u;
            for (var s = 0; s < u; ++s) {
                this.xVel && (this.x += this.xVel * i * f), this.yVel && (this.y += this.yVel * i * f), r = y.getGridArrays(this.x, this.y, this.scale);
                for (var a = 0; a < r.length; ++a)
                    for (let e = 0; e < r[a].length; ++e) r[a][e].active && y.checkCollision(this, r[a][e], f)
            }
            let n = !1;
            if (this.hitWait > 0 && (this.hitWait -= i, this.hitWait <= 0)) {
                n = !0, this.hitWait = 0, this.leapForce && !w.randInt(0, 2) && (this.xVel += this.leapForce * U(this.dir), this.yVel += this.leapForce * V(this.dir));
                var r = y.getGridArrays(this.x, this.y, this.hitRange),
                    l, c;
                for (let e = 0; e < r.length; ++e)
                    for (var a = 0; a < r[e].length; ++a) l = r[e][a], l.health && (c = w.getDistance(this.x, this.y, l.x, l.y), c < l.scale + this.hitRange && (l.changeHealth(-this.dmg * 5) && y.disableObj(l), y.hitObj(l, w.getDirection(this.x, this.y, l.x, l.y))));
                for (var a = 0; a < x.length; ++a) x[a].canSee(this) && v.send(x[a].id, "J", this.sid)
            }
            if (e || n) {
                var l, c;
                let e;
                for (var s = 0; s < x.length; ++s) l = x[s], l && l.alive && (c = w.getDistance(this.x, this.y, l.x, l.y), this.hitRange ? !this.hitWait && c <= this.hitRange + l.scale && (n ? (e = w.getDirection(l.x, l.y, this.x, this.y), l.changeHealth(-this.dmg * (1 + b.MAX_ATTACK * Yl) * this.getVolcanoAggression()), l.xVel += .6 * U(e), l.yVel += .6 * V(e), this.runFrom = null, this.chargeTarget = null, this.waitCount = 3e3, this.hitWait = w.randInt(0, 2) ? 0 : 600) : this.hitWait = this.hitDelay) : c <= this.scale + l.scale && (e = w.getDirection(l.x, l.y, this.x, this.y), l.changeHealth(-this.dmg * (1 + b.MAX_ATTACK * Yl) * this.getVolcanoAggression()), l.xVel += .55 * U(e), l.yVel += .55 * V(e)))
            }
            this.xVel && (this.xVel *= re(b.playerDecel, i)), this.yVel && (this.yVel *= re(b.playerDecel, i));
            const h = this.scale;
            this.x - h < 0 ? (this.x = h, this.xVel = 0) : this.x + h > b.mapScale && (this.x = b.mapScale - h, this.xVel = 0), this.y - h < 0 ? (this.y = h, this.yVel = 0) : this.y + h > b.mapScale && (this.y = b.mapScale - h, this.yVel = 0), this.isVolcanoAi && (this.chargeTarget && (w.getDistance(this.chargeTarget.x, this.chargeTarget.y, b.volcanoLocationX, b.volcanoLocationY) || 0) > b.volcanoAggressionRadius && (this.chargeTarget = null), this.xVel && (this.x < b.volcanoLocationX - b.volcanoAggressionRadius ? (this.x = b.volcanoLocationX - b.volcanoAggressionRadius, this.xVel = 0) : this.x > b.volcanoLocationX + b.volcanoAggressionRadius && (this.x = b.volcanoLocationX + b.volcanoAggressionRadius, this.xVel = 0)), this.yVel && (this.y < b.volcanoLocationY - b.volcanoAggressionRadius ? (this.y = b.volcanoLocationY - b.volcanoAggressionRadius, this.yVel = 0) : this.y > b.volcanoLocationY + b.volcanoAggressionRadius && (this.y = b.volcanoLocationY + b.volcanoAggressionRadius, this.yVel = 0)))
        }
    }, this.canSee = function(e) {
        if (!e || e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1;
        const t = S(e.x - this.x) - e.scale,
              n = S(e.y - this.y) - e.scale;
        return t <= b.maxScreenWidth / 2 * 1.3 && n <= b.maxScreenHeight / 2 * 1.3
    };
    let n = 0,
        i = 0;
    this.animate = function(e) {
        this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, n = 0, i = 0) : i == 0 ? (n += e / (this.animSpeed * b.hitReturnRatio), this.dirPlus = w.lerp(0, this.targetAngle, j(1, n)), n >= 1 && (n = 1, i = 1)) : (n -= e / (this.animSpeed * (1 - b.hitReturnRatio)), this.dirPlus = w.lerp(0, this.targetAngle, oe(0, n))))
    }, this.startAnim = function() {
        this.animTime = this.animSpeed = 600, this.targetAngle = W * .8, n = 0, i = 0
    }, this.changeHealth = function(e, t, n) {
        if (this.active && (this.health += e, n && (this.hitScare && !w.randInt(0, this.hitScare) ? (this.runFrom = n, this.waitCount = 0, this.moveCount = 2e3) : this.hostile && this.chargePlayer && n.isPlayer ? (this.chargeTarget = n, this.waitCount = 0, this.moveCount = 8e3) : this.dontRun || (this.runFrom = n, this.waitCount = 0, this.moveCount = 2e3)), e < 0 && this.hitRange && w.randInt(0, 1) && (this.hitWait = 500), t && t.canSee(this) && e < 0 && v.send(t.id, "8", H(this.x), H(this.y), H(-e), 1), this.health <= 0)) {
            if (this.spawnDelay) this.spawnCounter = this.spawnDelay, this.x = -1e6, this.y = -1e6;
            else if (this.minSpawnRange || this.maxSpawnRange) {
                const e = b.mapScale * this.minSpawnRange,
                      i = b.mapScale * this.maxSpawnRange;
                this.x = w.randInt(e, i), this.y = w.randInt(e, i)
            } else this.x = this.startX || w.randInt(0, b.mapScale), this.y = this.startY || w.randInt(0, b.mapScale);
            if (this.health = this.maxHealth, this.runFrom = null, t && (s(t, this.killScore), this.drop))
                for (let e = 0; e < this.drop.length;) t.addResource(b.resourceTypes.indexOf(this.drop[e]), this.drop[e + 1]), e += 2
        }
    }
}

function Gl(e) {
    this.sid = e, this.init = function(e, t, n, i, s, o, r, a, l, c, d, u) {
        o = o || {}, this.sentTo = {}, this.gridLocations = [], this.active = !0, this.doUpdate = o.doUpdate, this.x = e, this.y = t, this.dir = n, this.xWiggle = 0, this.yWiggle = 0, this.scale = i, this.type = s, this.id = o.id, this.owner = r, this.name = o.name ? o.name : this.type === 0 ? "Tree" : this.type === 1 && this.y >= 12e3 ? "Cactus" : this.type === 1 ? "Bush" : this.type === 2 ? "Stone" : this.type === 3 ? "Gold Stone" : null, this.isItem = this.id != null, this.group = o.group, this.health = this.maxHealth = o.health;
        this.health2 = 0, this.buildingID = o.buildingID, this.setType = o.setType, this.layer = 2, this.group != null ? this.layer = this.group.layer : this.type == 0 ? this.layer = 3 : this.type == 2 ? this.layer = 0 : this.type == 4 && (this.layer = -1), this.colDiv = o.colDiv || 1, this.blocker = o.blocker, this.ignoreCollision = o.ignoreCollision, this.dontGather = o.dontGather, this.hideFromEnemy = o.hideFromEnemy, this.friction = o.friction, this.projDmg = o.projDmg, this.dmg = o.dmg, this.pDmg = o.pDmg, this.pps = o.pps, this.zIndex = o.zIndex || 0, this.turnSpeed = o.turnSpeed, this.req = o.req, this.trap = o.trap, this.healCol = o.healCol, this.teleport = o.teleport, this.boostSpeed = o.boostSpeed, this.projectile = o.projectile, this.opacity = o.name == "pit trap" ? 1 : 1, this.opacity2 = 1, this.fadingOut = false, this.dmgpot = 0, this.assumeBreak = false, this.ignoreWiggleDirs = [], this.wiggleDirs = [], this.shootRange = o.shootRange, this.shootRate = o.shootRate, this.shootCount = this.shootRate, this.spawnPoint = o.spawnPoint, this.tick = v, this.preplace = u, this.fake = c, this.bot = a, this.elevation = typeof this.type === "number" && this.owner === null || this.name == "turret" || this?.group?.name === "mill" ? 2 : 1, this.restricter = d, this.realScale = this.type <= 1 && this.type !== null ? this.scale * .6 : this.scale;
        this.pathScale = this.type === 1 && this.y <= 12e3 ? this.scale * .6 + 15 : this.type === 0 ? this.scale * .7 + 10 : this.dmg && !te(this?.owner?.sid) || this.teleport || this.boostSpeed ? this.scale + 47 : this.type === 1 && this.y >= 12e3 ? this.scale * .55 + 47 : this.name == "pit trap" && !te(this?.owner?.sid) ? this.scale + 38 : this.ignoreCollision ? 0 : this.scale + 10
    }, this.changeHealth = function(e, t) {
        return this.health += e, this.health <= 0
    }, this.getScale = function(e, t) {
        return e = e || 1, this.scale * (this.isItem || this.type == 2 || this.type == 3 || this.type == 4 ? 1 : .6 * e) * (t ? 1 : this.colDiv)
    }, this.visibleToPlayer = function(e) {
        return !this.hideFromEnemy || this.owner && (this.owner == e || this.owner.team && e.team == this.owner.team)
    }, this.update = function(e) {
        this.active && (this.xWiggle && (this.xWiggle *= re(.99, e)), this.yWiggle && (this.yWiggle *= re(.99, e)), (us.checked && this?.group?.name == "mill" || this?.group?.name != "mill") && this.turnSpeed && (this.dir += this.turnSpeed * e))
    }
}
const Kl = [{
    id: 0,
    name: "food",
    layer: 0
}, {
    id: 1,
    name: "walls",
    place: !0,
    limit: 30,
    layer: 0
}, {
    id: 2,
    name: "spikes",
    place: !0,
    limit: 15,
    layer: 0
}, {
    id: 3,
    name: "mill",
    place: !0,
    limit: 7,
    sandboxLimit: 299,
    layer: 1
}, {
    id: 4,
    name: "mine",
    place: !0,
    limit: 1,
    layer: 0
}, {
    id: 5,
    name: "trap",
    place: !0,
    limit: 6,
    layer: -1
}, {
    id: 6,
    name: "booster",
    place: !0,
    limit: 12,
    sandboxLimit: 299,
    layer: -1
}, {
    id: 7,
    name: "turret",
    place: !0,
    limit: 2,
    layer: 1
}, {
    id: 8,
    name: "watchtower",
    place: !0,
    limit: 12,
    layer: 1
}, {
    id: 9,
    name: "buff",
    place: !0,
    limit: 4,
    layer: -1
}, {
    id: 10,
    name: "spawn",
    place: !0,
    limit: 1,
    layer: -1
}, {
    id: 11,
    name: "sapling",
    place: !0,
    limit: 2,
    layer: 0
}, {
    id: 12,
    name: "blocker",
    place: !0,
    limit: 3,
    layer: -1
}, {
    id: 13,
    name: "teleporter",
    place: !0,
    limit: 2,
    sandboxLimit: 299,
    layer: -1
}],
      Xl = [{
          indx: 0,
          layer: 0,
          src: "arrow_1",
          dmg: 25,
          speed: 1.6,
          scale: 103,
          range: 1e3
      }, {
          indx: 1,
          layer: 1,
          dmg: 25,
          speed: 1.5,
          scale: 20
      }, {
          indx: 0,
          layer: 0,
          src: "arrow_1",
          dmg: 35,
          speed: 2.5,
          scale: 103,
          range: 1200
      }, {
          indx: 0,
          layer: 0,
          src: "arrow_1",
          dmg: 30,
          speed: 2,
          scale: 103,
          range: 1200
      }, {
          indx: 1,
          layer: 1,
          dmg: 16,
          scale: 20
      }, {
          indx: 0,
          layer: 0,
          src: "bullet_1",
          dmg: 50,
          speed: 3.6,
          scale: 160,
          range: 1400
      }],
      Jl = [{
          id: 0,
          type: 0,
          name: "tool hammer",
          uF: [],
          desc: "tool for gathering all resources",
          age: 1,
          src: "hammer_1",
          length: 140,
          width: 140,
          xOff: -3,
          yOff: 18,
          dmg: 25,
          spdMult: 1,
          range: 65,
          gather: 1,
          speed: 300
      }, {
          id: 1,
          type: 0,
          age: 2,
          uF: [0],
          name: "hand axe",
          desc: "gathers resources at a higher rate",
          src: "axe_1",
          length: 140,
          width: 140,
          xOff: 3,
          yOff: 24,
          dmg: 30,
          spdMult: 1,
          range: 70,
          gather: 2,
          speed: 400
      }, {
          id: 2,
          type: 0,
          age: 8,
          uF: [1, 0, 15, 12, 13, null],
          pre: 1,
          name: "great axe",
          desc: "deal more damage and gather more resources",
          src: "great_axe_1",
          length: 140,
          width: 140,
          xOff: -8,
          yOff: 25,
          dmg: 35,
          spdMult: 1,
          range: 75,
          gather: 4,
          speed: 400
      }, {
          id: 3,
          type: 0,
          age: 2,
          uF: [0, 4],
          name: "short sword",
          desc: "increased attack power but slower move speed",
          src: "sword_1",
          iPad: 1.3,
          length: 130,
          width: 210,
          xOff: -8,
          yOff: 46,
          dmg: 35,
          spdMult: .85,
          range: 110,
          gather: 1,
          speed: 300
      }, {
          id: 4,
          type: 0,
          uF: [3, 0, 15, 12, 13, null, 9],
          age: 8,
          pre: 3,
          name: "katana",
          desc: "greater range and damage",
          src: "samurai_1",
          iPad: 1.3,
          length: 130,
          width: 210,
          xOff: -8,
          yOff: 59,
          dmg: 40,
          spdMult: .8,
          range: 118,
          gather: 1,
          speed: 300
      }, {
          id: 5,
          type: 0,
          age: 2,
          uF: [0],
          name: "polearm",
          desc: "long range melee weapon",
          src: "spear_1",
          iPad: 1.3,
          length: 130,
          width: 210,
          xOff: -8,
          yOff: 53,
          dmg: 45,
          knock: .2,
          spdMult: .82,
          range: 142,
          gather: 1,
          speed: 700
      }, {
          id: 6,
          type: 0,
          age: 2,
          uF: [0],
          name: "bat",
          desc: "fast long range melee weapon",
          src: "bat_1",
          iPad: 1.3,
          length: 110,
          width: 180,
          xOff: -8,
          yOff: 53,
          dmg: 20,
          spdMult: 1,
          knock: .7,
          range: 110,
          gather: 1,
          speed: 300
      }, {
          id: 7,
          type: 0,
          age: 2,
          uF: [0],
          name: "daggers",
          desc: "really fast short range weapon",
          src: "dagger_1",
          iPad: .8,
          length: 110,
          width: 110,
          xOff: 18,
          yOff: 0,
          dmg: 20,
          knock: .1,
          range: 65,
          gather: 1,
          hitSlow: .1,
          spdMult: 1.13,
          speed: 100
      }, {
          id: 8,
          type: 0,
          age: 2,
          uF: [0],
          name: "stick",
          desc: "great for gathering but very weak",
          src: "stick_1",
          length: 140,
          width: 140,
          xOff: 3,
          yOff: 24,
          dmg: 1,
          spdMult: 1,
          range: 70,
          gather: 7,
          speed: 400
      }, {
          id: 9,
          type: 1,
          age: 6,
          uF: [null],
          name: "hunting bow",
          desc: "bow used for ranged combat and hunting",
          src: "bow_1",
          req: ["wood", 4, "ez", 0],
          length: 120,
          width: 120,
          xOff: -6,
          dmg: 25,
          yOff: 0,
          projSpd: 1.6,
          projectile: 0,
          spdMult: .75,
          speed: 600
      }, {
          id: 10,
          type: 1,
          age: 6,
          uF: [null],
          name: "great hammer",
          desc: "hammer used for destroying structures",
          src: "great_hammer_1",
          length: 140,
          width: 140,
          xOff: -9,
          yOff: 25,
          dmg: 10,
          spdMult: .88,
          range: 75,
          sDmg: 7.5,
          gather: 1,
          speed: 400
      }, {
          id: 11,
          type: 1,
          age: 6,
          uF: [null],
          name: "wooden shield",
          desc: "blocks projectiles and reduces melee damage",
          src: "shield_1",
          length: 120,
          dmg: 0,
          width: 120,
          shield: .2,
          xOff: 6,
          yOff: 0,
          spdMult: .7,
          speed: 1
      }, {
          id: 12,
          type: 1,
          age: 8,
          pre: 9,
          uF: [9, null, 4],
          name: "crossbow",
          desc: "deals more damage and has greater range",
          src: "crossbow_1",
          req: ["wood", 5, "ez", 0],
          aboveHand: !0,
          armS: .75,
          length: 120,
          width: 120,
          xOff: -4,
          yOff: 0,
          dmg: 35,
          projSpd: 2.5,
          projectile: 2,
          spdMult: .7,
          speed: 700
      }, {
          id: 13,
          type: 1,
          age: 9,
          uF: [12, 9, null, 4, 2],
          pre: 12,
          name: "repeater crossbow",
          desc: "high firerate crossbow with reduced damage",
          src: "crossbow_2",
          req: ["wood", 10, "ez", 0],
          aboveHand: !0,
          armS: .75,
          length: 120,
          width: 120,
          xOff: -4,
          dmg: 30,
          yOff: 0,
          projSpd: 2,
          projectile: 3,
          spdMult: .7,
          speed: 230
      }, {
          id: 14,
          type: 1,
          age: 6,
          uF: [null],
          name: "mc grabby",
          desc: "steals resources from enemies",
          src: "grab_1",
          length: 130,
          width: 210,
          xOff: -8,
          yOff: 53,
          dmg: 0,
          steal: 250,
          knock: .2,
          spdMult: 1.05,
          range: 125,
          gather: 0,
          speed: 700
      }, {
          id: 15,
          type: 1,
          age: 9,
          uF: [12, 9, null, 4, 2],
          pre: 12,
          name: "musket",
          desc: "slow firerate but high damage and range",
          src: "musket_1",
          req: ["stone", 10, "ez", 0],
          aboveHand: !0,
          dmg: 50,
          rec: .35,
          armS: .6,
          hndS: .3,
          hndD: 1.6,
          length: 205,
          width: 205,
          xOff: 25,
          yOff: 0,
          projectile: 5,
          projSpd: 3.6,
          hideProjectile: !0,
          spdMult: .6,
          speed: 1500
      }],
      ql = [{
          group: Kl[0],
          name: "apple",
          desc: "restores 20 health when consumed",
          req: ["food", 10],
          consume: function(e) {
              return e.changeHealth(20, e)
          },
          scale: 22,
          holdOffset: 15
      }, {
          age: 3,
          group: Kl[0],
          name: "cookie",
          desc: "restores 40 health when consumed",
          req: ["food", 15],
          consume: function(e) {
              return e.changeHealth(40, e)
          },
          scale: 27,
          holdOffset: 15
      }, {
          age: 7,
          group: Kl[0],
          name: "cheese",
          desc: "restores 30 health and another 50 over 5 seconds",
          req: ["food", 25],
          consume: function(e) {
              return e.changeHealth(30, e) || e.health < 100 ? (e.dmgOverTime.dmg = -10, e.dmgOverTime.doer = e, e.dmgOverTime.time = 5, !0) : !1
          },
          scale: 27,
          holdOffset: 15
      }, {
          age: 1,
          group: Kl[1],
          name: "wood wall",
          desc: "provides protection for your village",
          req: ["wood", 10, "ez", 0],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA4JJREFUeF7tmr1v00AYxh9baWmLxEcpbakYECyIBRALQojZcYfWlZBgQEKCjQkQ/wUwMdIBCQnE4jDkXDoihFgqYEEsSAwISCnlQ9C0SWQjJzE40fnzfHFKX29R7uz3/fl5nzvfnQK6mgQU4tAiQCDaSiAQBKLTFEgRpAhSBHegpNLol9KYnp47WK/buxcXS0t5zmlyVYSuGxsABtsAKoyZk3nByAWErhtOWMKMmT2Pq+cPjILgAeo1jJ6BCAIwMtQSx9o6P5ReAZEOQteNOwCu8EpBO12Dqrb+sW1g4ZlnF11jvIJ75bJ5UaZ/SAOh60YJwAwveP1MLTQn9pQPxHGcJ5ZV0mQAkQJC1+d+Ac72NBD+ekQADADfGDNHs4aRKYgwI4xSQVBiQepw2zvO+pBlWe4QLHxlAkIGgO7MwoBkYahCIDTNOKuqeMR7HSeONDAxZgu/Kf8NKisqlt4U+N8KinOhXC7dT/vAVCA0beaqqqq3eQ89dayOXTtC50sd3faObmv+/rIaX+Hffyp4/mqAm7Pj2Dcs6/HNpEBSgQgqhaQ+cGB/p5++//A7UfxB5ZKmVDIBIQqgO3tRILmASAJhsKBianI41lv/+LmKWiO+x/jV0bcghocKmBhreUHSq7Kygep6I7Jb34Po9oHIjAIaRJVL34LICkBc/yAQbVIEgkB0Fg0pghRBiuAOsFQaVBpUGlQaLoGgqTZ5BHkEecTm8ggv2qy+QjftZ7j/tY0MFzC+J93CzPLXDaxV/4OFGT+QwQEVUxMxl+oqVdTqm2ipzk00ybql2z6qXKLKoNskulezc1mz9AclCkQUgBdLL0FcA3CLZ98nj9YxulPuBs/qDwUvXvM3eABcZ8zkbj6FrZem2tfwbqhpxjlVxQPeA44fbmDfePwaj7Oo+2lZxcu3/C0/28b5hQXzYZz78NoIgfBuuOU3gbvJygAiexfcyyETRXCAuJuYIzwJxjXUEABrjJncQyhpy8LtJwVEc0jVDQagmAZGCASLMVMXSTiorzQQ//xj9i6gXOIFEPcwGeDMM1a6LAOA1NLgqiDgkOmWOV6YxFD9bdNMikQUI700kqhDZGYoAkGqWcYJrFg0aoqC5hTRcVC3LJN/wDLOzQTb5KIIf8zF4uwh97dlld4J5iLUPXcQQtFn2JlAtGESCALRWVekCFIEKYI71lBpUGl0CuMPpubCUvT4yHcAAAAASUVORK5CYII=",
          projDmg: !0,
          uF: [],
          health: 380,
          scale: 50,
          indx: .5,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 3,
          group: Kl[1],
          name: "stone wall",
          desc: "provides improved protection for your village",
          req: ["stone", 25, "ez", 0],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA2RJREFUeF7tmj9v00AYxp9YIopIOkArlXapBGozZa/6CZzr0LoSEgxISLAxAeJbABMjDEhIIBaHIee2HyDqwtSpiRi6pIrUiiEJCqlkI4dYONH5vy9O6Zstynvn9/35eZ9z7pwDfUYEcsThLwECMVYCgSAQk6ZAiiBFkCKECyW1xry0xvb23t3LS/PW4WHte5bPNJkqgjHtN4D8GECHc/1OVjAyAcGYZvkVzLk+87xmfsEgCA6gWcOYGQgvAIVCYVT7YDAQimRWQKSDYEx7B+CZqMrNzU0oijL6yTRNHB0diZe2HD7W6/pjmf4hDQRjWg3Ajij5ra0t35oajYbwd8uyDgyjpsoAIgUEY3s9wCrGgeCM8YIB4Cfn+u20YaQKws8Ig1TgVZgPEFjWoGAYhr0EJ/6kAkIGgOnK/ICkYaiJQKiqdl9R8FV0O8rlMhYXFxPfKfcEFxcXODk58TBU61G9XvsU94KxQKjqznNFUd6KLlqpVLCwsBA6n+Xl5VFsp9MJPabb7eL4+NjDUM1XhvHtdejJxoGxQHi1QlQfWF9fn8i31WpFyt+rXeK0SiogkgKYrj4pkExARIGQz+extrYW6q6fnp5iOByGirWD3OqYWxDFYhGrq6uhi3IHtttt9Pv9wLFzD2LaBwIr8ggIape5BZEWgLD+QSDGpAgEgZhsGlIEKYIUIVxgqTWoNag1qDVsAl6P2uQR5BHkEVfLI5xs0/oXemX/hrtvW6lUwsrKSqytiLOzM/R6vcCxc2uWosz/6606u+Ao+5Z2fFC7BLXBNOTp3exM9izdSSUFkhSAk8ssQbwA8EYk/6wPeAC85FwXHj75GU2scw1nQlXVHigKPosusLGxgaWlpUCTixJwfn6OZrMpHGKaeLi/r3+JMp87NhEIZ6Jrfwg8TV8GENmn4E4NqShCAMQ+kbkpkmlYQ/UB8ItzXfgSSty2sMdJAWFPzJjGAVTjwPCBYHCusyQFe42VBuKff+y+B3JPRAmEfZkMsD5wXnsqA4DU1hAlfO1fL4xiqO7YOA9FSRQjvTWiqCPJk2ESCFLNMkxi1ao2zOVww461LFwahu68oB5meKoxmSjCXUG1unvP/m4YtR+pVhZxssxBRMxXWjiBGKMlEARisstIEaQIUoRw5aHWoNaYFMYfhr/EUpJ56XkAAAAASUVORK5CYII=",
          health: 900,
          uF: [],
          scale: 50,
          holdOffset: 20,
          indx: .5,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[1],
          name: "castle wall",
          desc: "provides powerful protection for your village",
          req: ["stone", 35, "ez", 0],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA6pJREFUeF7tmkFrU0EQxzdRIpik0Ai1pSdFQcGLF8/pNe3BQr+P9fsI9dDm2py9eBEUFD2V1oIpNEnBoE1Z0wfvTfbNzuzOvg24PTabzczv/f+zs/u2ptLfPwK1xGFOIIG4VUICkUAUi0JSRFJEUoRxoUzWWBZr9Hqv9+v1u4PDw3eDmD1NVEX0eruzfPL9/kG0eCr/Ya0ApWpvsKdfq6nB0dHBVpUKqQQEJfmypOv1O1tV2CYoCAqAtY1NNR5dqqvxCBVAaCBBQEDvmzJ88fLVwr8no0v149sXqyNC1BIxEJTk9dNfW9+0JqoHnJ+dqPPTE3SsZC3xBrGzs9e9vv57jEXMAQDn+f71cyW28QaBKcEkf5IcSgZhUHzt4gVie3v3eDZT3Xzc0smXgfv08cPCRz4wvEBANVQFISMAYSwFCFcIq52OajTuqZ9np06uycOIAsJHDVnypszHk5GajMZkKFKqcLZGHsT9Vls9fvrcGnyj0VCrnQfWcXoAVSFRQcAlE7MFJ/kyQjYoRRizt/3++30S7dwgJ0VwbPFwfYMbk3E8BkNCFWwQUA2YLaQgZGTKYCx2oXxVsEHEUIMNhP7cVxVeIGyts7QiLoa/1HQ6NVoHqoK7lLJAwE4SK5LSEPiq4NmDBYJqi2a7pVrNtkiRhJNMp7/VxXBonNvHHs4gHj15pprtFWNAodTAVQXHHmQQVDXoYJcFhI6FCoMEIuaSaZIcZg/XpZQEAp49YqsFto+QLBplPQU8s6CedZJA6ASSNXKPMQ8jxtJpK5bw8JdaH/S8ZEVwVBHSHtg2vcLls/iWKoYqqJsv7gk3SxFQFVjRlNh+w+KKQai0xebYI0Q/QVUDp3/IYDsoomgPTBXSjZX0kplXHBsERxWS9sB2nj5F0lkRcxD0oilhEQwCPIugNlCw/jgpgqMK+INUu9iSz+aFnSSnd/C2hg8I/V1sm47tI0wtuoQt2A0VDITaaWJ7DK0QbvL5+aK/4PFVhcQGTEoNoorIEnN99ccFAyFwO0mxYplNVHYtgPr2iwPA9AY8+75rkfRaPvPBUy6K+ECh3JxxXTJFVg34JE13JeAY2/F/fjwFgB7vqwQxRZikTblPVXb4i8lfygammJ0bKoq3qbZptVesF8eU4r2noMQXxBrYD1OAlH8/LICg1sCgUGpJ6KdfuTVs8vyvL6VDOHPb/Om6XO6wgeZ8HrRYcgKJPTaBuH0CCUQCUTRjUkRSRFKEcYFK1kjWKArjBu9WC2HgRkavAAAAAElFTkSuQmCC",
          health: 1500,
          uF: [],
          scale: 52,
          holdOffset: 20,
          indx: .5,
          placeOffset: -5
      }, {
          age: 1,
          group: Kl[2],
          name: "spikes",
          desc: "damages enemies when they touch them",
          req: ["wood", 20, "stone", 5],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABBdJREFUeF7tms1uEzEQx70JLZWQQgFxQCKiHLhFcATlgNpr+iFa8QC8Sds34QFQi/qRaysOERxBuXFAKEgcEFAiIRVKssibWvXOju3xrrMf4JX2knjt8W//Mx6PN2D+iggEnsOEgAdxrgQPwoOIBwWvCK+IkihibW1jC1ux9vZ20N+nvboV5hqdzpMtxoLN+ATD7W73pQfB2H8JYj3E5N7t7hai0kIG7XRwCAJMETByB4HHBqiN/F2kABBxNbTb7YhCr9eL0chbFbmCgC7RarVYo9GIAAwGg+iWrzxh5AZieXn9KAzZopgoB8BByBdURZ6rSC4gVlaeLo7HoyN50sIlYHQoykVyAQFdgqthOBySk8U8XGTqIKBLkGcvNfwnQJhyBiqYacOYmiJo+QJj169OEsxvP8ymBAE7PjzcXaLCs2lnHp3YGxYQsUfv3Rkxfuuuryc19ubdJW0bDiUI6tsHBy+OiSbq+8vSCfWt8zEe3v/DbsyPrYajABEd1mr1pSxQrBVhM3lhZOfxbysAsHH31azV82nUogWxurrxbDQaLyTrBnS7skIQI9nCkC3kagmC8cL+/s5zleVGRZiifrPZZPzmF0yGXEFQwRBJGc9J+v2+9u2YVh0jCN47hIFlhdwQOUnSxYS5y3V26+Ycavj34Rk7GeKuBGOG/BJEZ2n3LEQQybIahEFVw93bV0h+9eHTT7QddBGTHdT9CgkEtwjLEGUjZBAqNVAhCAIYjPcf64zf4lLZwP+3yTvIIDAXEdKEboHFhvnGLLvWmCGpQTT6/OWUnf5K5hyyKoQNaV1CjGUFAoPBt9IwUGEgbNWgUwV0D8wGU3CEbyQFCKwMH+82bxBwUmmSK2sQE1WoYfC9w6MHZwkXcKmI129nlHsTm7ggG5kKBOYiotOiQdi6ROoYIVNUJVtFuUZaCNEKYxXGQWPVjrMIEGnighPXEJ1g8QIDocsmVS9DlWUm9x3Zz0EyKeICRvysQlVzsA2YWEKFbc2zuISTGKGLF6oNFxUGNcV2ASFzjBAgsFih23TpskxVNsnHwtSQNTY4VYRN0MwSnLGaRCVARPlGxuqUAKcqzFQGhAsYuupUqUFgJ1muirfJvrMvnc6CJcwleI0Abs2FxClAYM1BPCsOjuNFoJKD4MZjNQIYLKkHPOraaAVA8EmrlGGzeujLcRUBISac/PbBjAL7hoI/VVrXgPVMXR3RPP1kC/nLGggibf0BjuJkrwFBcH+GnwHhAC5kTf18AJblSg3C9NZ1az/PUsNwtCl/ZqTrr4Ig7IMa5YS9EiBcGWlSiYsdqJMYAUt2rtJezCUwlZQMhL30TbHE9L+AUhoQJoOr8L8T16jCRE02ehDnhDwIDyLuLF4RXhFeEegC4l3Du4Z3DdQ1/gLN32VhHtKeXAAAAABJRU5ErkJggg==",
          health: 400,
          uF: [],
          dmg: 20,
          scale: 49,
          id: 6,
          spritePadding: -23,
          holdOffset: 8,
          indx: .5,
          placeOffset: -5
      }, {
          age: 5,
          group: Kl[2],
          name: "greater spikes",
          uF: [],
          desc: "damages enemies when they touch them",
          req: ["wood", 30, "stone", 10],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABB9JREFUeF7tm89rE0EUx2cT20aEpCoFBYN48Bb0qPQg7TX9gS3+Af4ntv+Jf4C00h+5VjwEPVZy8yASQaGoTUBMrUnkbTJxdjK/Z5xJzSzkkt2dmfeZ75v39s1uguKREkgihwGBCGKohAgigsguClERURETooi1tc2nrIi1v7/zPEQkC+Ya1erjLYSSZ1mj+9u12sutqQIBxlarG33S6FptN9jEBOuYhoCBhIIRBMTq6pOlXq97xHaBMO4RBARPDSFV4R0EDaFcLqf2N5vNjEB8u0hwEIuLiymAer0+PSBWVjaO+n20hC2uVCqoWCyOAISE4U0R9AIJAAAEeTQaDdRut0d/5XL55YODF6985BXeQLDWhlarlRqOVVEqlYKtFV5AyKKEbMZ9LJxKIEDW/X53lA6Tfi4zIsT5JEEjdzo83F1WGYMSCFY6rNK4yjXXSoMs+1tLeSgqzY6uUVWTVu+2EofR3b3dTX+i4+tpDr19d0nLYNbFOoutNxAqAGhj3hzPWClFVQ3QrxYIlovghAgbQecCIP2H98+tZpcFRNavDgRDENk6AqTIOE2m8wAXEDBBGgbZL4Rg6BsfOi6B79FWhEgVtBqqj35ZKYG+ufZ6NvOXy/TcCQiYHZwc4ZHK1HBjoYAuz+Uzhn1vn6PTNh/e+495BD98QL+QhJFqgHO6bmHkGngQsgjCU0NhLo9uLhSEShEBoVVBN2TiFpYgWDXHwbAe3PuNrs/3xoydL86iq8UZJXf5fNJBnbPxMEurItuYeVHHyDVkquCp4c6tK0oQ8EUfPv1gXs9ThYlLWC2Wf0GwVcECoaMG3P7Psy76ctIZg8EGYa4GK9cQqYIFQlcNIlWwQNiowRGIrCp40cIlCDqnMF0gSalZrRHQEF1wCQECITu3cKSI7CYNNDp1rsHetmODYCVQshDCyycmbrHkJVVTFT55aoBZ5j1yq2SVWCU8NYhrFeZrhdFiKd6yG5jCU4VKPsHLKqFdWYptGkaNQNAuAWV5eOgid6tkhRgWEF4ChVVCh02ofruqfDsBwXsc/q8fw2m3IHerQBGkKmSP4rKoQZ5nqQFvENH9muQV2oqg3UJWMnMBY+JKdbIahGiGTYCIH7nletJZOJUVoRIp5EPj1yrIe20B4Lb+CQgbNciUAucvzAYPbOljgy7Sll+S5LdVdtSVXUNF9rxrbNWkI3HTcXoBkWaa1KuEuPIN5/CrAa6SIxMY3kDEF0WI6RHlIPRuFWztq27pmyiAvsebInDHPBgh359yUqHSnY34eqHARWiYPqJEcNcYRBD+LpmLirSuSoO4Bm+tMEmLTQzm3eN9sSQHEj9TGNLIuoh5vdGFMoIqAgxYX99Mv9jZ29sJ8uUOhhgchIvZdNFGBDGkGEFEEFmHioqIioiKYAaZP321OmHR4N2KAAAAAElFTkSuQmCC",
          health: 500,
          dmg: 35,
          scale: 52,
          id: 7,
          spritePadding: -23,
          indx: .5,
          holdOffset: 8,
          placeOffset: -5
      }, {
          age: 9,
          group: Kl[2],
          uF: [],
          name: "poison spikes",
          desc: "poisons enemies when they touch them",
          req: ["wood", 35, "stone", 15],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABEJJREFUeF7tm01rE0EYx2ezpkkUklopKLWIoLeiR8WDtNf0BVv8AH4T22/iB5BW+pJrxYPoUelNQUSLQrE2AU1iTVZmN7Pdmc77TmcSOwu9dF9m5jf/53n+O7MJgD9iAoHnkBDwIAZK8CA8CDwpeEV4RQyJIhYXV57QKtbW1vozF5XMWWjU649WAQie4oOO1hqNF6vnCgQcbL2+HGUH3WhsOJsYZw2TEBAQVzCcgFhYeDzb7/d26SHgJjycgGCpwaUqrIMgIUxMF+PxH345xgRiO0Scg7j14GIM4OPr3+cHxPz88m4UgVk04qmZEqhUwxSASxjWFEEmyEq1AKZmypgK9vc6oN3qp/8rFMK57e3nL234CmsgaLmh3ezFA4dQ4FGphc5yhRUQoiohmnEbiVMKBJR1FPVSO5yNc9EgXJwPApCG087OxpxMH6RA0OywzMNlrpmoJS77sCndFZnHptfIqkmp9bwSh727faMX//GOH0cF8Pb9BaUB0y5WSbbWQMgAIAfz5l0xl1Jk1QDbVQJBCxFkiNAgSC8ApX//Lu4aVaeaBkTUrgoETRD4OgK0yMgmkz7ABAQEjYSRbbfd6oH9vW4u/6GsCJ4qSDXUH/5RnXzu9Y1XY9h5k/bcCAg4O8gcoZ6K1HB1sgwqpRN7De/72ToGRy02vA+fQwD/0jami6BSK2BqgOdUw0IrNFAnRBWEpYZyKQTXJnFrTcqAB4RUBXmvSqXI3quliCQ8aGuOyaPv3fkLroyfvDOgBserY+ByNXntFh3fDjqg0z1dZklV4M/RX9TRBkHLFalaGLnh5vVLovFj5z99/UW9nqUKnZBADeQEQVcFLSxU1IA61+72wPeDzikYdBD6asiVI3i5ggZCVQ3o+TRV0EDkUYMhEISvYBgokyBIT6GbII0kS/QQcsGFVTbPEgQA+cLCkCLwTZo4iVKSpUkQQxcarBJKA0EzUKISwvITQ5csWaaKZaZUVTES5ZNnqFiv3DKuEqmEpQb+WoV+rtDyEfwtu2QoLFXI+AmWq4TPFVls3TKqBYIMCbg/0W72sRVo0UIMDQjLQCGVkGUTrn6bWvk2AoL1Ovxfv4aTYZHdrYL7l9k9TNGruKhqZM/T1IA2iMh2dXyFsiLIsBAtmZmAMXRLdaI1CN4M6wDhv3KL9aSSOKUVIVMpxF1jr1Vk780LAD3rTEDkUYNIKfD8yGzwwC19NKBR2vILgnBNZkddOjRkZM+6Jq+aVCSu208rIGKnSXxKiFa+4Tn0aYApc6QDwxoI/6FIZnp4HoTcrYJb+7Jb+joKIO+xpgjUMAuGy++njKxQqc6G/7yQEyIkTBtVwnloJBWEvUtmYkVaVaVOQoOVK3Rssc6AWfdYT5bZjvifKQxo4CGiv95oQhlOFQEHsLS0Ev9iZ3Nz3ckvdxBE5yBMzKaJZ3gQA4oehAeBB5RXhFeEVwS1yPwDNX06YQXmnr8AAAAASUVORK5CYII=",
          health: 600,
          dmg: 30,
          pDmg: 5,
          id: 8,
          scale: 52,
          spritePadding: -23,
          holdOffset: 8,
          indx: .5,
          placeOffset: -5
      }, {
          age: 9,
          group: Kl[2],
          name: "spinning spikes",
          desc: "damages enemies when they touch them",
          req: ["wood", 30, "stone", 20],
          health: 500,
          uF: [],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABB9JREFUeF7tm89rE0EUx2cT20aEpCoFBYN48Bb0qPQg7TX9gS3+Af4ntv+Jf4C00h+5VjwEPVZy8yASQaGoTUBMrUnkbTJxdjK/Z5xJzSzkkt2dmfeZ75v39s1uguKREkgihwGBCGKohAgigsguClERURETooi1tc2nrIi1v7/zPEQkC+Ya1erjLYSSZ1mj+9u12sutqQIBxlarG33S6FptN9jEBOuYhoCBhIIRBMTq6pOlXq97xHaBMO4RBARPDSFV4R0EDaFcLqf2N5vNjEB8u0hwEIuLiymAer0+PSBWVjaO+n20hC2uVCqoWCyOAISE4U0R9AIJAAAEeTQaDdRut0d/5XL55YODF6985BXeQLDWhlarlRqOVVEqlYKtFV5AyKKEbMZ9LJxKIEDW/X53lA6Tfi4zIsT5JEEjdzo83F1WGYMSCFY6rNK4yjXXSoMs+1tLeSgqzY6uUVWTVu+2EofR3b3dTX+i4+tpDr19d0nLYNbFOoutNxAqAGhj3hzPWClFVQ3QrxYIlovghAgbQecCIP2H98+tZpcFRNavDgRDENk6AqTIOE2m8wAXEDBBGgbZL4Rg6BsfOi6B79FWhEgVtBqqj35ZKYG+ufZ6NvOXy/TcCQiYHZwc4ZHK1HBjoYAuz+Uzhn1vn6PTNh/e+495BD98QL+QhJFqgHO6bmHkGngQsgjCU0NhLo9uLhSEShEBoVVBN2TiFpYgWDXHwbAe3PuNrs/3xoydL86iq8UZJXf5fNJBnbPxMEurItuYeVHHyDVkquCp4c6tK0oQ8EUfPv1gXs9ThYlLWC2Wf0GwVcECoaMG3P7Psy76ctIZg8EGYa4GK9cQqYIFQlcNIlWwQNiowRGIrCp40cIlCDqnMF0gSalZrRHQEF1wCQECITu3cKSI7CYNNDp1rsHetmODYCVQshDCyycmbrHkJVVTFT55aoBZ5j1yq2SVWCU8NYhrFeZrhdFiKd6yG5jCU4VKPsHLKqFdWYptGkaNQNAuAWV5eOgid6tkhRgWEF4ChVVCh02ofruqfDsBwXsc/q8fw2m3IHerQBGkKmSP4rKoQZ5nqQFvENH9muQV2oqg3UJWMnMBY+JKdbIahGiGTYCIH7nletJZOJUVoRIp5EPj1yrIe20B4Lb+CQgbNciUAucvzAYPbOljgy7Sll+S5LdVdtSVXUNF9rxrbNWkI3HTcXoBkWaa1KuEuPIN5/CrAa6SIxMY3kDEF0WI6RHlIPRuFWztq27pmyiAvsebInDHPBgh359yUqHSnY34eqHARWiYPqJEcNcYRBD+LpmLirSuSoO4Bm+tMEmLTQzm3eN9sSQHEj9TGNLIuoh5vdGFMoIqAgxYX99Mv9jZ29sJ8uUOhhgchIvZdNFGBDGkGEFEEFmHioqIioiKYAaZP321OmHR4N2KAAAAAElFTkSuQmCC",
          dmg: 45,
          turnSpeed: .0015,
          scale: 52,
          id: 9,
          spritePadding: -23,
          holdOffset: 8,
          indx: .5,
          placeOffset: -5
      }, {
          group: Kl[3],
          name: "windmill",
          desc: "generates gold over time",
          req: ["wood", 50, "stone", 10],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC",
          health: 400,
          stop: true,
          pps: 1,
          uF: [],
          turnSpeed: .0016,
          spritePadding: 25,
          iconLineMult: 12,
          indx: 2,
          scale: 45,
          holdOffset: 20,
          placeOffset: 5
      }, {
          age: 5,
          pre: 1,
          group: Kl[3],
          name: "faster windmill",
          uF: [],
          stop: true,
          desc: "generates more gold over time",
          req: ["wood", 60, "stone", 20],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC",
          health: 500,
          pps: 1.5,
          turnSpeed: .0025,
          spritePadding: 25,
          iconLineMult: 12,
          index: 2,
          scale: 47,
          holdOffset: 20,
          placeOffset: 5
      }, {
          age: 8,
          group: Kl[3],
          name: "power mill",
          uF: [],
          stop: true,
          desc: "generates more gold over time",
          req: ["wood", 100, "stone", 50],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAudJREFUeF7tm79v00AUx5+TwFaxgVQGJsaO7YgSicktUYuYUP+D/hFN/oj+B4gJkSgkniolYmzHjEwMIMGG2CCJq3Ps5OzcD5/vXRw5z1Imn+/H577v3r13Fw/oiQh4xGFJgEDESiAQBCK9KJAiSBElKaLdftsp4qEGg8+FvjNta2um4fsXoWnnWPkg6G2lj1tphA2IQMQy4EE8OVDz//N3LZ5KK4KBuHzTEFrKhy8zIBAAQCBifRAIApFeKkgRVVeEaP9g4jUSvbh2o043VLJNVBEQDEitVm8Nh58mRXaoum+cgPD98w6Ady1rvCiIZX1hNwj66PEHOojT04txGEJTNQN2IAA8DyajUa+lm2WT96ggREp4+WIO7Bd8fbzqlwkI/9U/+Pa9Hv3SD64y0ECcnb1rLhbzMd9ZNojVYmcBQlQHdmSKBiK7MPIQok4LQNxN5/Dz1zLAOnzmwclRfWOLraoHEwYKiCyExBx4dfAgTGw3C0JkJhiu1QmIbOezirABIarLOQiWXpvNQqkbNBlQ2WUbDa+rSvspFeEShEg1NsrRgd5JEDIIMu+gG2Se92ggdOk1WWf4bBMro4Mgg2HbPioIWXpNNSM3H/+vXueFIIJx9f5RnolPleFD+lJBsH3C/XSBAuL4qBbtM0yenQHRv53Bj9/rjLSNIp4/9eD8tTjhK4NDIGIyOwOCTIPTaiUXS5OFKilbOfdZBILsG92iWTRAU/URzX1iglBtrFxAYO3tLAhssLr6rEDoKk/e65IyNsFUnpDeeRheFMTeJmYim8/ciNnLVF0eE7HJYssiUswDH5RU3RrE5sHO3qXzExh0wMOtrHTkx8EQHfgkr01OunjPheEmZZ4QdY0QNULXAjJUstcL6VYdAJiYhktz4OfKuWmI9hgEIqZCIAhEOhYhRXCKUEW2e3MXO294H+Ux6P8aS1yVA0F/ZTKxgxLLbm1DVeIYczVNIGJMBIJApC2GFEGKSCviAbuwhmEKe216AAAAAElFTkSuQmCC",
          health: 800,
          pps: 2,
          turnSpeed: .005,
          spritePadding: 25,
          iconLineMult: 12,
          indx: 2,
          scale: 47,
          holdOffset: 20,
          placeOffset: 5
      }, {
          age: 5,
          group: Kl[4],
          type: 2,
          uF: [],
          name: "mine",
          desc: "allows you to mine stone",
          req: ["wood", 20, "stone", 100],
          iconLineMult: 12,
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABypJREFUeF7tml1MU2cYx/98FwoojK8WRapeiMigbBoj02r8QA5zybLIYozbjVmW7XK7dRfb4tV2uZtlu8FEM8yyZMpBJToZSjRurWYi3iDIoOXDSAIUyvfyf9dD2nIOAXpK2+S8N1zQc/o+v/6fj/d5nwQYSxBIMDj8T8AA4VeCAcIAERwUDEUYijAUoZooDdcwXCO2XCMRQIq/npkBsBCtAi9arkEAZsD0VnW1/UJ2drbt7t2284DvEQBvNIBEA4QJMFkBHJCkukuBCpDllo+BxfvA9ACAaQCLG6WQjQSRBCATSKuRJKl5JQNlWX4XmL4PYBzA/EbA2AgQKYD5DWCuSpKkltUa5fV6+9va2j4Bkl2AdyTSQCIJgnHABKRX2u2VFy0Wy2E1CNPT01hcXITJZFJlNDjo+cPpdH4GzPQBmIqUu0QKRCqQXgjM75Wk+l+1VJCXl4eioiLx78HBQbx69UpTMLLc/D6Q9BcwNQyAGUbXpTeIpWxQVVX5jdVqfUdtt1TA9u3bkZ+fj6Qkhg5gfn4ew8PD6OnpQUKC+ra8Xm9fW9ufHwG+vwFM6pld9AKRCGTlALMVdnvl1xaL9aAagIWFBezevRvZ2dkCQKjBBEQgY2NjePbsGRITyXX58gM5B6R0AuOjegAJFwSfTwNMFput9IuysrLP1TY+MzODbdu2CQWYzWbNX1x5lkAmJycxNDSEgYGBJdWEvrurq+uHnp7e7wDfYLjpNhwQzAa5wFylJEk3tRx206ZN2LJlCzIzM8UvrCX70OcVdXi9XnR1dYFq0lAHs8t5IPkx4H0NYHY9wWO9INKA1Pckqb5J60spfwLgXzWJ09DZ2VlMTU0JOMwaKSkpqqDm5uZAIH19fRgfZ2mhvmS5+UNg5ncAvrXCWA+IBCAzT5KOM3ovW9z0rl27kJOTg+Tk5CDDaDx/WQJgHOjt7cXZs2fFO65cuYLS0lKhnNTU1GXw+CzfPTo6KhRCaGpLllsLgQnWHWuqStcJIsMiSbUsg4NWbm4uiouLRRwIVIECgDUDMwMD4smTJ1UNaWxshNVqRUFBwRKQQHciSKqDseP1a3pC8JLlm8XApCdqIMrLy5GVlbUEQDGem+aGVzJeS8YrQSEQuklnZ2fQ41EHYbfbkZ6eLjal+PTIyAgqKipErAhnuVwuoSQWYFSbUnswvvB/gStmQFAJBFBTUxOO7ZrPdnR0CCB0l5gHweh+7NixiIBobW0VNUnMg6D1PDccPKhaXIYNp729fel8EtOKoKVMcfv27QvbaLUXPHz4EMxOXDEPYmJiQpTT4QbJUBD9/f0i/rDWiAsQrBeY52tra3VVxY0bNwTctLS0+ADB9Pn06VOcPn1aVxBXr17Fnj17RMUaF4pg8dTd3Y36+npdQVy/fh07d+6MjzqClrPqc7vdOHLkiK4g7ty5I0p4pXyP+WDJoopl9f79+3UF8eDBA5ExlLNHzIOg9TwH8OCkZ+ZwOp0iY8QVCP5aDJrV1dW6qIIQGCSV80xcBEtukgGTpfaJEyd0AcHSeuvWrUFtu7hwDaUDxSZsuGn01q1bIkiGdrDiAgRlQBgsrlgR1tXVrUsZLS0tonOl1vWOSRC8p+DxWG3DTKcsu1lbNDQ0rApIU1MTduzYsdT0DXxIaezyQujFixdB74t6P4K70WrVKerw+Xyio3TmzJkVYVy+fFlUkGzohna9Y6xVl5kvSceH1KxhY7asrEyzeUs5M4ieOnVKFca1a9dEUMzIyFjW+FWat8+fP18qs0NfIsutBcAE7w4j3rzld5v87fxftH5a9i9LSkqC+piKMmiQx+PB0aNHgx6/ffu26DWEBkV+nq7FWMPut9aS5eYGfzufsxVrWuvpYitfoFzwVDkcjp/MZrNqY1K54FF6jYrU6efsW1AdPLKzPti8efOy5i8BrHTBw83IslwLJD+JxgWPAkO58iuy2Uq/1LryY03B9FdYWBgkefo7/8fFIKucIQiJ3W/2Hl6+fCna+mrLf+X3PeBj+z6sCZtwFBG4N+USuNzhOHTJbDaXqG1cr0tgj8fd7nI9+QpI+SdWLoFD7eX1dQaHxByOQ41aQPiL22w2cRYJHAugApgOte5H3W73vcePn1zwjwXoOnSmlyJCgXBQpACYf1uS6n/TilprHBT5AEh6BEwxW8X8oEigzYScDqS/WV1debGoyKLanGBtQQUo7bdQaB6P567L5foUmP7Xf7kbkVnMSCki0B5lmMzucDh+1MouaqqRZbnOf90f18NkobZxRigLSDuwivHCev944USkp+kC09+aCo8wP6ykWw6c1khSXWPg+2S55RyADsDnXs+MQzh72wjXUNufMnS29/Bhx89jY2PdTqfr20hkg9XCiRYIZX8EwmqJ5wKO/EQkEK4GRrRBrGaPG/IZA4QfswHCABHscYYiDEUYilDNQoZrGK5huIaqa/wH4HLecO4SZnEAAAAASUVORK5CYII=",
          scale: 65,
          indx: .5,
          holdOffset: 20,
          placeOffset: 0
      }, {
          age: 5,
          group: Kl[11],
          type: 0,
          uF: [],
          name: "sapling",
          desc: "allows you to farm wood",
          req: ["wood", 150],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAACIdJREFUeF7tm/tTlNcZx7/v7rIXFlBQQFgQUINCYomYiumEoiZaONDOrDNtxhr1lzbJ9Mf+If2lM51O219i0smkTtyZBs6SpiYSTb3ULAlaryRCXITlKruwN/bSOXt7L7wL++4F0ul7ZhyX9ZzzPs/nPM9znud5kYM6YgQ4lUOcgAoiYQkqCBWEOCioFqFahGoRshel6hqqa3y/XIMDDN0AwkDgEwDRzUrwNtk1THWEdD9hylM6uBPwxT5vxthEECYLId1OodKUDtYBvon/JxB6QqwBOYUptRkABDcaxmZYhL6xsfn3ra3Pvymn7NTU1CWH4xrZaBgbDYID9K8T0vv+WidO6cApIPjBRgbPjQTBAUUvEdJ3UwihqnUGkUgUs/erRGwo7T8ErNzaKBgbCMLYQEjPmNQSjp7VxL767HxklZFQam8C/KvWFCJ+5AKC5QDNgKYCgBaIGuMCRpOf2d7sjwnQaAnpOS9VoPMUB4NJG/s66Avj8/dXpxGU2s8CEUbJB4D9HQU4P8CF4/uxzywPicwDgYfZWlAuILSEWEPZns4haxhl5eyC4Id7IYCbtjiYbAalNl0civKRC4iMAp+cSK3HvKhtLJOV9umYG3c/LVasCaUDbwDBvypemFiQCwgARW2E9H2l5OGWtjnsa68Cx8k/OhqN4r5jGhNfb1OyLSgdaAOCI4oWCSbnCALlhFjnhQ9vObIMnZ43b62OA9OZAxf7vnSrIfZzcoRD8SCp1cWDJhvRKOB5FkAoGEY0UX6EVvj4wb6/d9ks0plSG4tVC5sFYlWGeOycFhptZnzZ6T8YmcX8lBcvn9iZ1kqkyjF40luGUpsewMpmgeAIsYruvR/9IorikqJ15WGn/uDrGbzS0xCbe9U+jr1t2zOC4V1awb/+JoZNqY2ZVNbVa2ZHt6ZahrcIIX9MTtl/wo/qupJ1QUyOe7D/cLVo3u3rLtQ0lK671uVcwu1/JG7rWOVqfwvw/2ndhWtMyAOIohcJ6RtOPmPr7kkc/HF9Kg4w85947MbinA+RxHmt+EM48XqzrFgff/AQeiO7BQENx2HLNiMsTWUiS3F87sT86I7Uekr7DwIrjk0GUbqdkNdmUsGP8+L4uVJoNHHGkXAUVXXiwKZU4GnncirusHT8k3c80Eb5K5bSf1YCnlml+wrn58EisCpgCjNGFgtuXPoOfWf2ZSXnR+fv4/BrLJDGl8tloPko3fMCwmLZ9WFbW1tfUtP2viAqqvgT+270Gdo7a7MC4bjyFDv3bE2tnXd54RhgF0R8OJ1PHCMjt17OtWzPFQSrN94mhPxBqOXBnwZRXsmDWHYH0bCXV0YJkfEHz2Au4xVfmPHiy4/4n9lelNK3gQALlpt1axj2EEIeCRWrfn4GLxzaIQpuOYF4uAhzKX8ds+B75+YUXP+pFPGklD4HBEaVQM5TjOAbr6lAqZvH8TcqU4Ey6dO1u9a/EtdS4Om3HugTVWosALOA+d4MtCGWTPKD0sF6wCfqg2YKJlvXKCLEuqqvKE2mWKC8P+xCZ29TpvLIzrvS/xj72qtFqblcUhV3k+wyzGxAaAHDm9K4IC2rGYSxB/P44dG6nCAkF//7Myca91aIYLB65MZFcdmeiBd/UVqOZwHC2EVIz2VpXNjfUSNSWJpC50rji8FxNP+gUgSC7Xn7xqRMvLAfAfxDSp6pEMTquKCrHEdnT5OoehQKwO79b+7NobO3UYlcqblXBsawq2VbqpMl3YQVYFfsjxGaidcsyaE0XigBUUyIdVlOG82WKXScqI4VW3JtBmYdzKeH+r/B2d+2ZwTk/O8c6OrdheJSffo9PUFcp25EvfJXM6U2doezFt+6QwkIPaDvJaT3YrpdI5wPHT/ToazCKFtFTj3x4IVD4kIr3V53brqwo371bcNuDPe8H9f63SiKpG/eUDpwEggOZJpoKQHBZOYAcxUQOikNlkKF0lmIbzmE+j3yLTopkCejbpjM8eKLjZhVrWMBbB6l9DeA7iKwPK0kwVIKQijvFkB/nJDeC+lOldP7cex0Scq02WlWWcQF2PDVSYTDEbzUZRFtMz2xnMpHGITLF+YQXtqS1sQpHfg5EGRv1BfX9QOZCbmAyMhC2HuLZBuOKeRyxt3j1tAELA1lKDLEr7+VYBgTY+4YENfEErQavnUn15Hig2J2FiBlkSuIdS2k42Q41qdMDqYUp+FE2adwE2Y1rGIQtvs8iwHc+FCaL+RmAYUEkbAQ42lCet5NPmjPKx40NpdnY62pNWMPFzB6lQ+clNrPAH7Wus+6yCo0CACG3YQQvvgxLuDVU+l7kaFEF1sn6GILhWRF1qcXnIgu8QkbpfbdgP/bnOhKFufTNZJblxBi9Qifc+SMBroi3ufZvzEA086l1MuclqPeWK9TOo/FjqH3xAdPqY2Zx9L3HYTmwIHDl2pqao4kBU32J1iw9HtDeHR7BtN3xWV0cm7N/jk0tVTAZI4nZwuzPnz5d74Mn5ycvDw8fP3VxHvQvLEohEUw9+gmhNiTUtYfXEDDc+V4dGcWrjvbMxLe8uI8mvZVgMUHp4OPMZTSHiAwmNEmCiYVCERxDSE/eapAjrRTl32LMJv4/IHSj2sB72Q+9hbuUSAQMBJizSjHj7fidXpCuq9lohylNhMA9qsAeR2FArHqDZhQ6rifj5wGvC5B30ADmGoPHGh7VxhfpNrm+kYrHb1CgQBg/BUhPX+WABgaHv7qHOBn7bR0v8egBUw1XV2dX5jN5p3C9ZTafw34WdMl76OAIPQthPTeZRJTOvBLIEgBuBUkQUy2EsBoJaTnncQ+rUDwXt4pFPi/MpkAQxcQYL6vBIBUTwakDDB0AIGrALz/ayAKIW/B9iygaxRM5oJsrIJIYFVBqCDEHqZahGoRqkXI3jqqa6iuobqG6hprpaT/Bagy/2FMRPJUAAAAAElFTkSuQmCC",
          iconLineMult: 12,
          colDiv: .5,
          scale: 110,
          indx: .5,
          holdOffset: 50,
          placeOffset: -15
      }, {
          age: 4,
          group: Kl[5],
          name: "pit trap",
          uF: [],
          desc: "pit that traps enemies if they walk over it",
          req: ["wood", 30, "stone", 30],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA4hJREFUeF7tms1r1EAYxp8EldL6WT+qV70UFapUQUR7zqaHNgVBD4KgN08q/hfqyaMeBEHxkvWwk9pjFRF00YKKF8+yftSvttRmSWR3szUbJp+T2Wztu7dlZybz/vK8z8y+Mwro0ySgEIcWAQLhKYFAEIhOUyBFkCJIEdyFklKjV1JjfHxqv207O2ZmytUi9zSFKkLXjT8ANnkAaoyZe4uCUQgIXTfcqIAZM7s+r64/MA5CG1C3YXQNRBiA/r6WOJaW+VPpFhDpIHTduA3gMi8VtFMrUNXWL44DTD9r20VgjVdwr1IxL8j0D2kgdN0oA5jgTV4fW4mMic3ygbiu+8SyypoMIFJA6PrUAuAOZIGw6hEhMAB8Z8wczBtGriCijDBOBWGBhamj0d51l/ssy2oswcKfXEDIABCMLApIHoYqBELTjDOqike81zF6sI6hXY7wm/IPUPuqovp+A/+/guKer1TK97M+MBMITZu4oqrqLd5DTx6xsX1r5H6po9vch1ZgI8P1xDH8+KXg+ZuN3Pau61y3rMc3Eg/mNcwEIiwV0vpAUO6i/VeNNsPONBcQeQXQDkR0vCyeIQwizaQXlhTMvuJLOijlsWM2NvcnTzG/unoWxJd5FS/f8k0uLpePH65j92C86fY8iKhlLw6C//c45fUsiLwABGGFASEQHikCQSA6k4YUQYogRXBXXUoNSg1KDUqNBgHaWXo6IBAEotMS1pwiVstm4ecTaf6Fh3oD7zk9W5ipfVNRfZetMDN6qI6hnf9BYcb/2n8vKnhaTVaqOz1qY8vAGirVRS1pYdqPK9rEVaOC4wbHKyQ10pTT4gIQBVBEOf8qgJu8N35ixMbgtuSSznLAM/9TwYu50BS7xpjJPXyKcudM5fz2gJpmnFVVPOA94OhwHfv2xJtcmqXj02cVr72TsWA/x8G56WnzYZrx/G2FQLQHWveHwEH6MoDIPgVvx5CLIjhAFgH082Sa1BAjACwxZnIvoWRNi0Y/KSCaS6puMAClLDAiIFiMmbpIwGF9pYH45x+TdwDlIm8CSS+TAe5dxsqXZACQmhpcFYRcMl031wvTGKq/bZbdoYhipKdGGnWI7AxFIEg1yyQTK5WMFUVBc4vourAty+RfsEwymGCbQhThn3OpNHmg8d2yyh8FYxHqXjgIodnn2JlAeDAJBIHozCtSBCmCFMFdayg1KDU6hfEXXvzCUuiEamMAAAAASUVORK5CYII=",
          trap: !0,
          ignoreCollision: !0,
          hideFromEnemy: !0,
          health: 500,
          colDiv: .2,
          scale: 50,
          indx: 0,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 4,
          group: Kl[6],
          name: "boost pad",
          uF: [],
          desc: "provides boost when stepped on",
          req: ["stone", 20, "wood", 5],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAZ5JREFUeF7tmktOAkEQhhvQI3AGiSzcsTLxDCYeqA9k4hlIWLFzIeIZOIL4CNhDMmMDXVPz6NKPJel59DffX12TnoHjtycwgMMPAUAEEwABiHJRwAiMwIjoQkk0iAbR0EfDez+01Il67z9T71dUI3Yglsvnj9ST9zluNrsZAcI5B4igYacgribTPu3/de239cvhP0BghHMYESwABCDK9RIjMAIjov0L0fgL0RiPv9xmI3r3O9rNmjbi4f59P7HHp0t1u24WRAGhIKCFYRLELhJ3t9uSBfPFhSomJkFUbWjCCnMgYjb8SxDHbNDCMGXEKRsKEKvXoVutR+JVxAyIFAgaK8yAOBeJqgLS5RQQllpsqQ11IpK9EZLaUI2HpHBmD6KuDVIrsgahhSCBkS0ITSTqRCRbENeTZveLzzVZ2YIQt4bKAwBhqY9QPuykwzECI9jXYF/jVLGgRlAjMqkRSWtaT4M6/YaqpzkmXRYQAVPrIJIeRyaDWvvyNpP5tXIbzezHt3Jr3Z4UEIE3IABRjh5GYARGRJcjokE0iEY0Gt/OdwVhhTbZ6QAAAABJRU5ErkJggg==",
          ignoreCollision: !0,
          boostSpeed: 1.5,
          health: 150,
          colDiv: .7,
          scale: 45,
          indx: 0,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[7],
          doUpdate: !0,
          uF: [],
          name: "turret",
          desc: "defensive structure that shoots at enemies",
          req: ["wood", 200, "stone", 150],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAABBlJREFUeF7tmj1vE0EQhufsJBUyiBRUCRUSEhYUFKBIoKTMJUUs8X+S/BokBHKK+FImQiiCggIUlIIKuaIIAosqxD40ttfeG8/e3u7NWRHsSZYL3349+847++EIwjMkEAUOIwIBxFgJAUQAkTWFoIigiKAINlFWFhqbmzvtKKq/lE7PSfLmlXSdlabPEYhoR7LTaZoeHB0dtCTrVHVVrIgAAoIixlqjINbW1rwUfXp6Oin3T4TGfwsijlvnAHBfTacEiCiCd51O+5mXtCyFKjHLOG6ltF0JEKrOJGmL91u8Qg4CDkASRBTBSafT3pBUhhiION7ZA4h2TZ2TBDFtI91PkoM9CSAiIDgIS4sAl3+mXZQAQesc1S4DQwhE1hPu3e1D73cE3y9qExISIO4sD6BxI4Wv3+oZEUh4RmkQW1ut4zSFdb1n8fNL+PhlgQXR7XYBP6an0WjA6uoq4Dc++joCQTx+cAXJ26WZ4mVhlAJBjRGVgB98KAiJOFYgsC5UhaQyvEFsb79YHwz6x2qAt2+m8PTR1BSqBoHtvv+0CD9+6UPw9wtvEFQNGA76YwOxsrIC+NGfXq8HZ2dnRvHoipisKUiY+IaIFwiqhicPr2D51iAzgNnZGv1c1DR1b1AVcyBoiNRq9Y3Dw9cnrqHoBcKmBuwENTROAbbOojpQJdSIaTnalo8qnEFQNWCnaFjQjmEGaDabtnGzv3NZxtaejyqcQdB0yYUFBVE0HEykaJhQELMZxN00nUHYwuLiZw0+fF6YjKksBFWRDkNP01KmKQ6CmmQVIIqEo6tPlAJB1w7UJNEX1ArRyyC0QtQraHjQCZgrCJtEpdTAhYfNJwKIMbUAIoDIbsLmqgibWfqsJk2mSvch18osi6QxKcPU1xG2CRhmL8cD3lLpkwNBV3lVgCiymp0DiOwhrS2Fuuw4fZfYdDXrc8rtrAifTVcZryiyA6V7m7lsuobhQC5wqHFx23CfHWiRnSfXlmtYYB3OisBCVBVceHAddAkT7mCG8wYaFj5q8AZRVBXcAavyAW4fknfCXRS2jxpKgsiaJpfSsAE6Yz6bLy70sB660fJVQykQnCpMs2YKkyJQTBCuzXG+GgR36WvqvFIIDiJ7DJ9FkgeUg+qTLukkeJklrSTvoqfIrLu8I60E1bYQiNmbcJNnuAyavstfEbifT3J9EAEx8gv+bwFcynOFYc4+MhBKmyU3IO5SWL3nAiUv9Q59wnFTZYMvpgi9IdO/ZvR3MHTo7Rim2jwTVeWlIVSiCNVZbk9imxX773KhUEnWyBuABJAyCyU73NEblYQG1zgCSdP+Lv1Tibmj6X6ttnDic6FbdPD6e3MD4dO5eZYJIMa0A4gAIht4QRFBEUERbDIKoRFCI4RGCI28lWrwiDGdv3AZkWGMex2dAAAAAElFTkSuQmCC",
          health: 800,
          stop: true,
          projectile: 1,
          shootRange: 700,
          shootRate: 2200,
          scale: 43,
          index: 2,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[8],
          name: "platform",
          uF: [],
          desc: "platform to shoot over walls and cross over water",
          req: ["wood", 20],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAVtJREFUeF7tmkEOwVAURV9jQJiIHZiYGhoa64gFSOzAWsQGxAbMiKHYhYlVSEyU/PqhX59qI5o2jmH9tq/Hve/d1PeET0jAg8OdACCsEgABCLcpoAgUgSLUQYk1sAbWwBpJKTpzj/D90bUMsXy9XmV6tkyLDQBAWBkAQgEx6NdUl2z3ZwmC51fv1m12Z+f8NOtaTU963ap63+j1crWGKbzTrsSKmi9PDojppKEWPlucnONp1hkQ42E9dr3D8SKAEBFAWG0AAhBum0ARKAJFMD6NBsgR1gmAAIRINIqjCBSBIh5BAWtYFIAAhBufUQSKQBEf320SqAhUBCoC1WujYHwyPhmfjE9DgP8+rQ4AAQi2BYQaYH+Ekg9K3yy1efd3W4fUoV+Qg7nuoSrIM6tlAMJi+TmIIqvgm9oy77z95mZFPhcQ9tcBBCBco6IIFIEi1OGFNbAG1sAaScn2BpFWBnB82lh8AAAAAElFTkSuQmCC",
          ignoreCollision: !0,
          zIndex: 1,
          health: 300,
          scale: 43,
          indx: 0,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[9],
          name: "healing pad",
          uF: [],
          desc: "standing on it will slowly heal you",
          req: ["wood", 30, "food", 10],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAVJJREFUeF7tmkEKwjAQRVM9gOAlFFy460k8UA7kSbrrQtBLCB5AEXUQgqGdjjZp8LmUpkle3p8ETeX4PAlUcHgRAISYAAhAhEUBIzACI6IbJdEgGkTj+2h472clnUS99zfteAfViAeIpmmv2pfnfK6ut3NAOOcAIRomBbFab3La/9H36Xh4fwcIjHAOI8QCQJQKYnc5dxbZ/WJpKsLFGQEIWWdAACKMPEZgBEZEt0Gi8U/R6Ftt00kp0ih26JrUgQoQSu0x4lcE5D1EAxChUhiBEYUZoamJfVssP8x0aK8BPKkDlWbAGKE8dBENotG/I2giR43gf43QE4wo1QhN3i3PFGeEZZKaNoAgGoUXS43mlmeyRcMy2FRtkt6hSjUpSz+AEGqjg7CsTq42o928zTWhFP0OuoudYkC5+gCEkAcEIMIQYgRGYER0YyIaRINoRKNxB85lEmEa+oa0AAAAAElFTkSuQmCC",
          ignoreCollision: !0,
          healCol: 15,
          health: 400,
          colDiv: .7,
          scale: 45,
          indx: 0,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 9,
          group: Kl[10],
          name: "spawn pad",
          uF: [],
          desc: "you will spawn here when you die but it will dissapear",
          req: ["wood", 100, "stone", 100],
          health: 400,
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAiNJREFUeF7tmrtOwzAUhk9hQAqCpYEFtYKplRjYupR3YOZFmDPzIsy8A126MSC1E6gVC6QLiEgMIBRwqtQ9ceziJLb0d0wcX7585/jStAi/XwItcPgjABDCBIAAiNWkACNgBIxgJ0qEBkIDofH/0IiiaMunlWgURd+6/TXKESmI8fj+S7fyJssNBmfbAEFEACE0rBVEr3/apP1rbU8nD8trAAEjiGCEsAAgfAMRxy+0iF+1Emyne0xBsKtVNivkhRHz2SMlSWI0sCAIqNM90X7GeRD5DmqPKldQd5p2FkQRgP3ekPb6Q5ZJfHdDn4s5e68MiDcgVADkkXNAvATB2XB0cWUUGc+312vlVTCcM4JLjKYQMgIyDFUCdQpEknzQfPa0fJM77Q6F55dGJsiF3ycjepuOlpfb4QGF4aHbew05JDY1QR6lbAYXIk4Zke+MDRsyILIVXoGwZQOXLwBCUAEIgCDKJ0wYASM8NsJkb1G24pL3Hl6FRjo4W1Oodwsq+RTKhhWyDUWnV06tLFMLsOnKBTq24QoYJnsPeW+RVuvlwUza8aKjOhUQDkDG1lsQ3DF72TTJ3S8DwLXj7H+fOM7PvWL59EplR9EplOoZ56bPTfS38QxACIoAARCrAQUjmjbCRoKrqo5a1xFVDcJGvQAhKFYOwsbbqquOyr68rWsATbRj9C12Ex2sq02AEKQBAiBWgw5GwAgYwU5ECA2EBkKDDY0fJZh+YTa6MyMAAAAASUVORK5CYII=",
          ignoreCollision: !0,
          spawnPoint: !0,
          scale: 45,
          indx: 0,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[12],
          name: "blocker",
          uF: [],
          desc: "blocks building in radius",
          req: ["wood", 30, "stone", 25],
          ignoreCollision: !0,
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAA05JREFUeF7tms9L3EAUxyeuXWqsFdrVg6BUKFjopWdPevCyelDw/1H/H8EedC89uKeevQgtCBYFD+1WUGsqq2tk4k47yc7vecmu5i2IsHnZ5H3y/b6ZN5mA4CchECCHRwIIoqsEBIEg0kUBFYGKQEUIB0q0BloDrYHWUM2iC60RKyvrC3Hc2YhjsqC8qYA0g6Cytbu73SyqBSgERL2+uklIsOGSVBCQ5t7ezqLLuTbn5AbCJ3l5AvFWo/F50yZB09hcQNTra7HuBt7WJkgYjiZ/UXSdhNP/v1u/dKeSRmMH/L7Bf1AFYe7DR22SfMD3b4fSeGgYYCBkVrBNXpa5GAqcVUBA5A2BwckTBhCIdE0Iw5BMz8xa2cA0+PTkmERRlAqHsIk3iGxNgLKCDkxWHb4wvEBkIaiUMN65I7PtNjkYCXU5Jsc//Y3IcbVKLirDwnhoZTiDENUFmRoohKU/l0lCR9WXWhgUwvv2TRL/5dVrKYzemuFePD1ApOuCDML89RWZurvtearb42+ET3r94rzn+7PhF+Tr6JgwHsoiICBsIciUwSshm7UpDNda4QRieXltn2+cRCB4O8iKAm8TFQR2vswmaVW42cMJhG6kMIHAkqMw6IfVBF0lFcGAsIc1CNpK39939tkNi9Rg8nR1CZuoSDYdHxqqLNq28NYgTGzBhj/Tp2wKRTXi8Kpwad2tQehswSclGgFMkxbFyUYaGutrDy8QtJWu1SaVuUHYxGTu0Wr9TLXwtqOHF4jpmXfJeoLu4wPDBAK9Pl3LOD358e9WBhKEa80whcCy5+1RKAibBstFFTYgnoQiXCDw8wyTRq2vILBYctVRZY9nPXzihKqrApxic3bQzS5L0XRRHtnVqUFqw136DJqT9cySCYNXRWkXZh5VgUt1iShw8VZRNEu5nC+qFfQ7m/5D17WqjvuuP2R/27lY8j9k86LHJ3l6LvSLHXY/QCDEO2Kg1THwL4FlxRPSKnlC8JpHyCRe+o0iqpohgsa2DtFjbPvQs9o69H80cd9JJy+obm+xTAo0SLHUXSjbuuvi08fzS56/TiEg2AVLv+HUTgH9iS5UEf1J0eyqCKLLCUEgiLRlUBGoCFSEcBhBa6A10BpoDdUc8wG9ozFhleVISQAAAABJRU5ErkJggg==",
          blocker: 300,
          health: 400,
          colDiv: .7,
          indx: 0,
          scale: 45,
          holdOffset: 20,
          placeOffset: -5
      }, {
          age: 7,
          group: Kl[13],
          name: "teleporter",
          uF: [],
          desc: "teleports you to a random point on the map",
          req: ["wood", 60, "stone", 60],
          url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAYAAADjVADoAAAAAXNSR0IArs4c6QAAAzVJREFUeF7tmkFP2zAUxx16YMom7bBsN9B2otO+Age4Fg5F2vcBvs8keoBe6YGvMFFOTHDbssOkLdoOJZPbesRuHPs9v7gTeZUQqmon9i///3vPjhPBnzmBhDksCDCIpRIYBIPQgwIrghXBiqhNlGwNtgZbg63RVEVHjRGHhx/3ynJ2XJZir3FQiZgkSe/0/PzTJNYSIAqIwWB4IkRyjJlUkojJxcXZPqYvpE9rIEImb59AeToej04gE/Rt2wqIweCodA3gVfZapOnz+V9R/Jo3l/+/599cXcV4fEY+bvILNkHY6X9wTrLa4Gb62dqeGgYZCJsVoJO3zbweCp1VSEC0DUHBaRMGEQg9JqRpKra234Fs4Nv4/u5WFEWhNaewSTAIMyZQWcEFxlRHKIwgECaENpVggqFWBhpEXVyIpQZ7zMAHzwAQelyAQtj9uSuyWaY96JvNqbh+NnW5Qu9jpFisRUhAQCDUATBnDgVSjRdRQRwcHF1WF06+IIY/hqCnPXo58mqvB06cPVCKwGQKKARFwAcGRQYBg5BL6YeH2aUaqI8asBCwMDY2evvQJTwYBNQW73/3xc6fvpfEbY3yXi6uXlw1XqOqCszSHQwCaotQNfiqItQeQSDkUjrL3lifFIUa1MVdqsjzr9oSHpo9gkBsbb+d7yfYPlRq8FGF3Mu4v/vybyidBSEJhNQTQYpwZQxWxFKgnQHhCpY+5bRvXnWV3WsNlnISsezhqjCjp09oQUWhCpcazEAZpaDiErtiZmh1KbtiA6fLEqYa5HdoDSH7gNOn7GTuTrnihGIIheEDgcIWaBALGI87VL4gZD+fsttVTq9s5FR2qTBqIAPhkz3MwdcBgQKgskUgiNU33BBl+NYPTe1WX/jgdqeCQJj2kN87uZ2vnhQmg7ShBmxsUGNBZQ1zIjFf9FC/2CEGUX8ihjpm/PcvgetqC0WaCkabEIKDZZ3XO39QpAoFcnRokW0Wx4ee1NGhx2yCP0lnzyr4OsGVqUiyhusm5tLd1V7/vb3JV+8TBYS6YecPnMIUsJ7WURWxnin63ZVBLDkxCAahW4YVwYpgRdSmEbYGW4OtwdZoqjH/Av5ExVLxSFbJAAAAAElFTkSuQmCC",
          ignoreCollision: !0,
          teleport: !0,
          health: 200,
          colDiv: .7,
          indx: 0,
          scale: 45,
          holdOffset: 20,
          placeOffset: -5
      }];
for (let e = 0; e < ql.length; ++e) ql[e].id = e, ql[e].pre && (ql[e].pre = e - ql[e].pre);
const x = {
    groups: Kl,
    projectiles: Xl,
    weapons: Jl,
    list: ql
},
      $l = [],
      Zl = {
          words: $l
      };
var ec = {},
    tc = [],
    nc = null,
    ic = {
        object: ec,
        array: tc,
        regex: nc
    };
const sc = Zl.words;
const oc = ic.array;
class rc {
    constructor(e = {}) {
        Object.assign(this, {
            list: e.emptyList && [] || Array.prototype.concat.apply(sc, [oc, e.list || []]),
            exclude: e.exclude || [],
            splitRegex: e.splitRegex || /\b/,
            placeHolder: e.placeHolder || "*",
            regex: e.regex || /[^a-zA-Z0-9|\$|\@]|\^/g,
            replaceRegex: e.replaceRegex || /\w/g
        })
    }
    isProfane(n) {
        return this.list.filter(e => {
            const t = new RegExp(`\\b ${e.replace(/(\W)/g,"\\$1")}\\b`, "gi");
            return !this.exclude.includes(e.toLowerCase()) && t.test(n)
        }).length > 0 || !1;
        return false
    }
    replaceWord(e) {
        return e.replace(this.regex, "").replace(this.replaceRegex, this.placeHolder)
    }
    clean(e) {
        return e.split(this.splitRegex).map(e => this.isProfane(e) ? this.replaceWord(e) : e).join(this.splitRegex.exec(e)[0])
    }
    addWords() {
        let e = Array.from(arguments);
        this.list.push(...e), e.map(e => e.toLowerCase()).forEach(e => {
            this.exclude.includes(e) && this.exclude.splice(this.exclude.indexOf(e), 1)
        })
    }
    removeWords() {
        this.exclude.push(...Array.from(arguments).map(e => e.toLowerCase()))
    }
}
var ac = rc;
const lc = new ac,
      cc = [];
lc.addWords(...cc);
const dc = Math.abs,
      uc = Math.cos,
      fc = Math.sin,
      hc = Math.pow,
      pc = Math.sqrt;

function mc(e, t, p, m, u, g, y, x, w, n, i, f, s, o) {
    this.id = e, this.sid = t, this.tmpScore = 0, this.team = null, this.skinIndex = 0, this.tailIndex = 0, this.hitTime = 0, this.tails = {};
    for (var r = 0; r < i.length; ++r) i[r].price <= 0 && (this.tails[i[r].id] = 1);
    this.skins = {};
    for (var r = 0; r < n.length; ++r) n[r].price <= 0 && (this.skins[n[r].id] = 1);
    this.points = 0, this.dt = 0, this.hidden = !1, this.itemCounts = {}, this.isPlayer = !0, this.pps = 0, this.moveDir = void 0, this.skinRot = 0, this.lastPing = 0, this.iconIndex = 0, this.deaths = 0, this.skinColor = 0, this.spawn = function(e) {
        this.active = !0, this.alive = !0, this.lockMove = !1, this.lockDir = !1, this.minimapCounter = 0, this.chatCountdown = 0, this.shameCount = 0, this.shameTimer = 0, this.sentTo = {}, this.gathering = 0, this.autoGather = 0, this.animTime = 0, this.animSpeed = 0, this.mouseState = 0, this.buildIndex = -1, this.weaponIndex = 0, this.dmgOverTime = {}, this.noMovTimer = 0, this.maxXP = 300, this.deathCount = 0, this.XP = 0, this.age = 1, this.kills = 0, this.upgrAge = 2, this.upgradePoints = 0, this.x = 0, this.y = 0, this.zIndex = 0, this.xVel = 0, this.yVel = 0, this.slowMult = 1, this.dir = 0, this.dirPlus = 0, this.targetDir = 0, this.targetAngle = 0, this.maxHealth = 100, this.health2 = 0, this.samRP = 1, this.samRS = 1, this.pr = 1, this.sr = 1, this.hasSoldier = false, this.hasTank = false, this.health = this.maxHealth, this.scale = p.playerScale, this.speed = p.playerSpeed, this.resetMoveDir(), this.resetResources(e), this.items = [0, 3, 6, 10], this.weapons = [0], this.shootCount = 0, this.weaponXP = [], this.reloads = {}, this.timeSpentNearVolcano = 0
    }, this.resetMoveDir = function() {
        this.moveDir = void 0
    }, this.resetResources = function(t) {
        for (let e = 0; e < p.resourceTypes.length; ++e) this[p.resourceTypes[e]] = t ? 100 : 100
    }, this.addItem = function(t) {
        const n = w.list[t];
        if (n) {
            for (let e = 0; e < this.items.length; ++e)
                if (w.list[this.items[e]].group == n.group) return this.buildIndex == this.items[e] && (this.buildIndex = t), this.items[e] = t, !0;
            return this.items.push(t), !0
        }
        return !1
    }, this.setUserData = function(n) {
        if (n) {
            this.name = "NaN";
            let e = n.name + "";
            e = e.slice(0, p.maxNameLength), e = e.replace(/[^\w:\(\)\/? -]+/gim, " "), e = e.replace(/[^\x00-\x7F]/g, " "), e = e.trim();
            let t = !1;
            const i = e.toLowerCase().replace(/\s/g, "").replace(/1/g, "i").replace(/0/g, "o").replace(/5/g, "s");
            for (const s of lc.list)
                if (i.indexOf(s) != -1) {
                    t = !0;
                    break
                } e.length > 0 && !t && (this.name = e), this.skinColor = 0, p.skinColors[n.skin] && (this.skinColor = n.skin)
        }
    }, this.getData = function() {
        return [this.id, this.sid, this.name, m.fixTo(this.x, 2), m.fixTo(this.y, 2), m.fixTo(this.dir, 3), this.health, this.maxHealth, this.scale, this.skinColor]
    }, this.setData = function(e, t, n, i) {
        if (e[2] != t.name && t.name != undefined && !Ei.includes(e[1])) {
            b(`${t.name}[${t.sid}] has changed name to ${e[2]}`, "", "#e38b49")
        }
        this.id = e[0], this.sid = e[1], this.name = e[2], this.x = e[3], this.y = e[4], this.dir = e[5], this.bot = n ? true : false, this.health = e[6], this.maxHealth = e[7], this.scale = e[8], this.skinColor = e[9], this.pr = 1, this.sr = 1, this.tr = 1, this.hitProjs = 0, this.primary = undefined, this.secondary = undefined, this.shameCount = 0, this.primaryVar = 3, this.secondaryVar = 3, this.lastx = 0, this.tick = v, this.lasty = 0
    };
    let h = 0;
    this.update = function(i) {
        if (!this.alive) return;
        if ((m.getDistance(this.x, this.y, p.volcanoLocationX, p.volcanoLocationY) || 0) < p.volcanoAggressionRadius && (this.timeSpentNearVolcano += i, this.timeSpentNearVolcano >= 1e3 && (this.changeHealth(p.volcanoDamagePerSecond, null), f.send(this.id, "8", H(this.x), H(this.y), p.volcanoDamagePerSecond, -1), this.timeSpentNearVolcano %= 1e3)), this.shameTimer > 0 && (this.shameTimer -= i, this.shameTimer <= 0 && (this.shameTimer = 0, this.shameCount = 0)), h -= i, h <= 0) {
            const l = (this.skin && this.skin.healthRegen ? this.skin.healthRegen : 0) + (this.tail && this.tail.healthRegen ? this.tail.healthRegen : 0);
            l && this.changeHealth(l, this), this.dmgOverTime.dmg && (this.changeHealth(-this.dmgOverTime.dmg, this.dmgOverTime.doer), this.dmgOverTime.time -= 1, this.dmgOverTime.time <= 0 && (this.dmgOverTime.dmg = 0)), this.healCol && this.changeHealth(this.healCol, this), h = 1e3
        }
        if (!this.alive) return;
        if (this.slowMult < 1 && (this.slowMult += 8e-4 * i, this.slowMult > 1 && (this.slowMult = 1)), this.noMovTimer += i, (this.xVel || this.yVel) && (this.noMovTimer = 0), this.lockMove) this.xVel = 0, this.yVel = 0;
        else {
            let e = (this.buildIndex >= 0 ? .5 : 1) * (w.weapons[this.weaponIndex].spdMult || 1) * (this.skin && this.skin.spdMult || 1) * (this.tail && this.tail.spdMult || 1) * (this.y <= p.snowBiomeTop ? this.skin && this.skin.coldM ? 1 : p.snowSpeed : 1) * this.slowMult;
            !this.zIndex && this.y >= p.mapScale / 2 - p.riverWidth / 2 && this.y <= p.mapScale / 2 + p.riverWidth / 2 && (this.skin && this.skin.watrImm ? (e *= .75, this.xVel += p.waterCurrent * .4 * i) : (e *= .33, this.xVel += p.waterCurrent * i));
            let t = this.moveDir != null ? uc(this.moveDir) : 0,
                n = this.moveDir != null ? fc(this.moveDir) : 0;
            const c = pc(t * t + n * n);
            c != 0 && (t /= c, n /= c), t && (this.xVel += t * this.speed * e * i), n && (this.yVel += n * this.speed * e * i)
        }
        this.zIndex = 0, this.lockMove = !1, this.healCol = 0;
        let n;
        const e = m.getDistance(0, 0, this.xVel * i, this.yVel * i),
              t = j(4, oe(1, H(e / 40))),
              s = 1 / t;
        let o = {};
        for (var r = 0; r < t; ++r) {
            this.xVel && (this.x += this.xVel * i * s), this.yVel && (this.y += this.yVel * i * s), n = g.getGridArrays(this.x, this.y, this.scale);
            for (let t = 0; t < n.length; ++t) {
                for (let e = 0; e < n[t].length && !(n[t][e].active && !o[n[t][e].sid] && g.checkCollision(this, n[t][e], s) && (o[n[t][e].sid] = !0, !this.alive)); ++e);
                if (!this.alive) break
            }
            if (!this.alive) break
        }
        for (var a = y.indexOf(this), r = a + 1; r < y.length; ++r) y[r] != this && y[r].alive && g.checkCollision(this, y[r]);
        if (this.xVel && (this.xVel *= hc(p.playerDecel, i), this.xVel <= .01 && this.xVel >= -.01 && (this.xVel = 0)), this.yVel && (this.yVel *= hc(p.playerDecel, i), this.yVel <= .01 && this.yVel >= -.01 && (this.yVel = 0)), this.x - this.scale < 0 ? this.x = this.scale : this.x + this.scale > p.mapScale && (this.x = p.mapScale - this.scale), this.y - this.scale < 0 ? this.y = this.scale : this.y + this.scale > p.mapScale && (this.y = p.mapScale - this.scale), this.buildIndex < 0) {
            if (this.reloads[this.weaponIndex] > 0) this.reloads[this.weaponIndex] -= i, this.gathering = this.mouseState;
            else if (this.gathering || this.autoGather) {
                let e = !0;
                if (w.weapons[this.weaponIndex].gather != null) this.gather(y);
                else if (w.weapons[this.weaponIndex].projectile != null && this.hasRes(w.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0)) {
                    this.useRes(w.weapons[this.weaponIndex], this.skin ? this.skin.projCost : 0), this.noMovTimer = 0;
                    var a = w.weapons[this.weaponIndex].projectile;
                    const d = this.scale * 2,
                          c = this.skin && this.skin.aMlt ? this.skin.aMlt : 1;
                    w.weapons[this.weaponIndex].rec && (this.xVel -= w.weapons[this.weaponIndex].rec * uc(this.dir), this.yVel -= w.weapons[this.weaponIndex].rec * fc(this.dir)), u.addProjectile(this.x + d * uc(this.dir), this.y + d * fc(this.dir), this.dir, w.projectiles[a].range * c, w.projectiles[a].speed * c, a, this, null, this.zIndex)
                } else e = !1;
                this.gathering = this.mouseState, e && (this.reloads[this.weaponIndex] = w.weapons[this.weaponIndex].speed * (this.skin && this.skin.atkSpd || 1))
            }
        }
    }, this.addWeaponXP = function(e) {
        this.weaponXP[this.weaponIndex] || (this.weaponXP[this.weaponIndex] = 0), this.weaponXP[this.weaponIndex] += e
    }, this.earnXP = function(e) {
        this.age < p.maxAge && (this.XP += e, this.XP >= this.maxXP ? (this.age < p.maxAge ? (this.age++, this.XP = 0, this.maxXP *= 1.2) : this.XP = this.maxXP, this.upgradePoints++, f.send(this.id, "U", this.upgradePoints, this.upgrAge), f.send(this.id, "T", this.XP, m.fixTo(this.maxXP, 1), this.age)) : f.send(this.id, "T", this.XP))
    }, this.changeHealth = function(e, t) {
        if (e > 0 && this.health >= this.maxHealth) return !1;
        e < 0 && this.skin && (e *= this.skin.dmgMult || 1), e < 0 && this.tail && (e *= this.tail.dmgMult || 1), e < 0 && (this.hitTime = Date.now()), this.health += e, this.health > this.maxHealth && (e -= this.health - this.maxHealth, this.health = this.maxHealth), this.health <= 0 && this.kill(t);
        for (let e = 0; e < y.length; ++e) this.sentTo[y[e].id] && f.send(y[e].id, "O", this.sid, this.health);
        return t && t.canSee(this) && !(t == this && e < 0) && f.send(t.id, "8", H(this.x), H(this.y), H(-e), 1), !0
    }, this.kill = function(e) {
        e && e.alive && (e.kills++, e.skin && e.skin.goldSteal ? s(e, H(this.points / 2)) : s(e, H(this.age * 100 * (e.skin && e.skin.kScrM ? e.skin.kScrM : 1))), f.send(e.id, "N", "kills", e.kills, 1)), this.alive = !1, f.send(this.id, "P"), o()
    }, this.addResource = function(e, t, n) {
        !n && t > 0 && this.addWeaponXP(t), e == 3 ? s(this, t, !0) : (this[p.resourceTypes[e]] += t, f.send(this.id, "N", p.resourceTypes[e], this[p.resourceTypes[e]], 1))
    }, this.changeItemCount = function(e, t) {
        this.itemCounts[e] = this.itemCounts[e] || 0, this.itemCounts[e] += t, f.send(this.id, "S", e, this.itemCounts[e])
    }, this.buildItem = function(t) {
        const e = this.scale + t.scale + (t.placeOffset || 0),
              n = this.x + e * uc(this.dir),
              i = this.y + e * fc(this.dir);
        if (this.canBuild(t) && !(t.consume && this.skin && this.skin.noEat) && (t.consume || g.checkItemLocation(n, i, t.scale, .6, t.id, !1, this))) {
            let e = !1;
            if (t.consume) {
                if (this.hitTime) {
                    const s = Date.now() - this.hitTime;
                    this.hitTime = 0, s <= 120 ? (this.shameCount++, this.shameCount >= 8 && (this.shameTimer = 3e4, this.shameCount = 0)) : (this.shameCount -= 2, this.shameCount <= 0 && (this.shameCount = 0))
                }
                this.shameTimer <= 0 && (e = t.consume(this))
            } else e = !0, t.group.limit && this.changeItemCount(t.group.id, 1), t.pps && (this.pps += t.pps), g.add(g.objects.length, n, i, this.dir, t.scale, t.type, t, !1, this);
            e && (this.useRes(t), this.buildIndex = -1)
        }
    }, this.hasRes = function(t, n) {
        for (let e = 0; e < t.req.length;) {
            if (this[t.req[e]] < H(t.req[e + 1] * (n || 1))) return !1;
            e += 2
        }
        return !0
    }, this.useRes = function(t, n) {
        if (!p.inSandbox)
            for (let e = 0; e < t.req.length;) this.addResource(p.resourceTypes.indexOf(t.req[e]), -H(t.req[e + 1] * (n || 1))), e += 2
    }, this.canBuild = function(e) {
        const t = _n ? e.group.sandboxLimit || oe(e.group.limit * 3, 99) : e.group.limit;
        return t && this.itemCounts[e.group.id] >= t ? !1 : _n ? !0 : this.hasRes(e)
    }, this.gather = function() {
        this.noMovTimer = 0, this.slowMult -= w.weapons[this.weaponIndex].hitSlow || .3, this.slowMult < 0 && (this.slowMult = 0);
        const e = p.fetchVariant(this),
              n = e.poison,
              i = e.val,
              t = {};
        let s, o, r, a;
        const l = g.getGridArrays(this.x, this.y, w.weapons[this.weaponIndex].range);
        for (let e = 0; e < l.length; ++e)
            for (var c = 0; c < l[e].length; ++c)
                if (r = l[e][c], r.active && !r.dontGather && !t[r.sid] && r.visibleToPlayer(this) && (s = m.getDistance(this.x, this.y, r.x, r.y) - r.scale, s <= w.weapons[this.weaponIndex].range && (o = m.getDirection(r.x, r.y, this.x, this.y), m.getAngleDist(o, this.dir) <= p.gatherAngle))) {
                    if (t[r.sid] = 1, r.health) {
                        if (r.changeHealth(-w.weapons[this.weaponIndex].dmg * i * (w.weapons[this.weaponIndex].sDmg || 1) * (this.skin && this.skin.bDmg ? this.skin.bDmg : 1), this)) {
                            for (let e = 0; e < r.req.length;) this.addResource(p.resourceTypes.indexOf(r.req[e]), r.req[e + 1]), e += 2;
                            g.disableObj(r)
                        }
                    } else {
                        if (r.name === "volcano") this.hitVolcano(w.weapons[this.weaponIndex].gather);
                        else {
                            this.earnXP(4 * w.weapons[this.weaponIndex].gather);
                            const d = w.weapons[this.weaponIndex].gather + (r.type == 3 ? 4 : 0);
                            this.addResource(r.type, d)
                        }
                        this.skin && this.skin.extraGold && this.addResource(3, 1)
                    }
                    a = !0, g.hitObj(r, o)
                } for (var c = 0; c < y.length + x.length; ++c)
                    if (r = y[c] || x[c - y.length], r != this && r.alive && !(r.team && r.team == this.team) && (s = m.getDistance(this.x, this.y, r.x, r.y) - r.scale * 1.8, s <= w.weapons[this.weaponIndex].range && (o = m.getDirection(r.x, r.y, this.x, this.y), m.getAngleDist(o, this.dir) <= p.gatherAngle))) {
                        let e = w.weapons[this.weaponIndex].steal;
                        e && r.addResource && (e = j(r.points || 0, e), this.addResource(3, e), r.addResource(3, -e));
                        let t = i;
                        r.weaponIndex != null && w.weapons[r.weaponIndex].shield && m.getAngleDist(o + W, r.dir) <= p.shieldAngle && (t = w.weapons[r.weaponIndex].shield);
                        const u = w.weapons[this.weaponIndex].dmg,
                              f = u * (this.skin && this.skin.dmgMultO ? this.skin.dmgMultO : 1) * (this.tail && this.tail.dmgMultO ? this.tail.dmgMultO : 1),
                              h = .3 * (r.weightM || 1) + (w.weapons[this.weaponIndex].knock || 0);
                        r.xVel += h * uc(o), r.yVel += h * fc(o), this.skin && this.skin.healD && this.changeHealth(f * t * this.skin.healD, this), this.tail && this.tail.healD && this.changeHealth(f * t * this.tail.healD, this), r.skin && r.skin.dmg && this.changeHealth(-u * r.skin.dmg, r), r.tail && r.tail.dmg && this.changeHealth(-u * r.tail.dmg, r), r.dmgOverTime && this.skin && this.skin.poisonDmg && !(r.skin && r.skin.poisonRes) && (r.dmgOverTime.dmg = this.skin.poisonDmg, r.dmgOverTime.time = this.skin.poisonTime || 1, r.dmgOverTime.doer = this), r.dmgOverTime && n && !(r.skin && r.skin.poisonRes) && (r.dmgOverTime.dmg = 5, r.dmgOverTime.time = 5, r.dmgOverTime.doer = this), r.skin && r.skin.dmgK && (this.xVel -= r.skin.dmgK * uc(o), this.yVel -= r.skin.dmgK * fc(o)), r.changeHealth(-f * t, this, this)
                    } this.sendAnimation(a ? 1 : 0)
    }, this.hitVolcano = function(e) {
        const t = 5 + H(e / 3.5);
        this.addResource(2, t), this.addResource(3, t)
    }, this.sendAnimation = function(t) {
        for (let e = 0; e < y.length; ++e) this.sentTo[y[e].id] && this.canSee(y[e]) && f.send(y[e].id, "K", this.sid, t ? 1 : 0, this.weaponIndex)
    };
    let a = 0,
        l = 0;
    this.animate = function(e) {
        this.animTime > 0 && (this.animTime -= e, this.animTime <= 0 ? (this.animTime = 0, this.dirPlus = 0, a = 0, l = 0) : l == 0 ? (a += e / (this.animSpeed * p.hitReturnRatio), this.dirPlus = m.lerp(0, this.targetAngle, j(1, a)), a >= 1 && (a = 1, l = 1)) : (a -= e / (this.animSpeed * (1 - p.hitReturnRatio)), this.dirPlus = m.lerp(0, this.targetAngle, oe(0, a))))
    }, this.startAnim = function(e, t) {
        this.animTime = this.animSpeed = w.weapons[t].speed, this.targetAngle = e ? -p.hitAngle : -W, a = 0, l = 0
    }, this.canSee = function(e) {
        if (!e || e.skin && e.skin.invisTimer && e.noMovTimer >= e.skin.invisTimer) return !1;
        const t = dc(e.x - this.x) - e.scale,
              n = dc(e.y - this.y) - e.scale;
        return t <= p.maxScreenWidth / 2 * 1.3 && n <= p.maxScreenHeight / 2 * 1.3
    }
}
const gc = [{
    id: 45,
    name: "Shame!",
    dontSell: !0,
    price: 0,
    scale: 120,
    desc: "hacks are for losers"
}, {
    id: 51,
    name: "Moo Cap",
    price: 0,
    scale: 120,
    desc: "coolest mooer around"
}, {
    id: 50,
    name: "Apple Cap",
    price: 0,
    scale: 120,
    desc: "apple farms remembers"
}, {
    id: 28,
    name: "Moo Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 29,
    name: "Pig Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 30,
    name: "Fluff Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 36,
    name: "Pandou Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 37,
    name: "Bear Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 38,
    name: "Monkey Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 44,
    name: "Polar Head",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 35,
    name: "Fez Hat",
    price: 0,
    scale: 120,
    desc: "no effect"
}, {
    id: 42,
    name: "Enigma Hat",
    price: 0,
    scale: 120,
    desc: "join the enigma army"
}, {
    id: 43,
    name: "Blitz Hat",
    price: 0,
    scale: 120,
    desc: "hey everybody i'm blitz"
}, {
    id: 49,
    name: "Bob XIII Hat",
    price: 0,
    scale: 120,
    desc: "like and subscribe"
}, {
    id: 57,
    name: "Pumpkin",
    price: 50,
    scale: 120,
    desc: "Spooooky"
}, {
    id: 8,
    name: "Bummle Hat",
    price: 100,
    scale: 120,
    desc: "no effect"
}, {
    id: 2,
    name: "Straw Hat",
    price: 500,
    scale: 120,
    desc: "no effect"
}, {
    id: 15,
    name: "Winter Cap",
    price: 600,
    scale: 120,
    desc: "allows you to move at normal speed in snow",
    coldM: 1
}, {
    id: 5,
    name: "Cowboy Hat",
    price: 1e3,
    scale: 120,
    desc: "no effect"
}, {
    id: 4,
    name: "Ranger Hat",
    price: 2e3,
    scale: 120,
    desc: "no effect"
}, {
    id: 18,
    name: "Explorer Hat",
    price: 2e3,
    scale: 120,
    desc: "no effect"
}, {
    id: 31,
    name: "Flipper Hat",
    price: 2500,
    scale: 120,
    desc: "have more control while in water",
    watrImm: !0
}, {
    id: 1,
    name: "Marksman Cap",
    price: 3e3,
    scale: 120,
    desc: "increases arrow speed and range",
    aMlt: 1.3
}, {
    id: 10,
    name: "Bush Gear",
    price: 3e3,
    scale: 160,
    desc: "allows you to disguise yourself as a bush"
}, {
    id: 48,
    name: "Halo",
    price: 3e3,
    scale: 120,
    desc: "no effect"
}, {
    id: 6,
    name: "Soldier Helmet",
    price: 4e3,
    scale: 120,
    desc: "reduces damage taken but slows movement",
    spdMult: .94,
    dmgMult: .75
}, {
    id: 23,
    name: "Anti Venom Gear",
    price: 4e3,
    scale: 120,
    desc: "makes you immune to poison",
    poisonRes: 1
}, {
    id: 13,
    name: "Medic Gear",
    price: 5e3,
    scale: 110,
    desc: "slowly regenerates health over time",
    healthRegen: 3
}, {
    id: 9,
    name: "Miners Helmet",
    price: 5e3,
    scale: 120,
    desc: "earn 1 extra gold per resource",
    extraGold: 1
}, {
    id: 32,
    name: "Musketeer Hat",
    price: 5e3,
    scale: 120,
    desc: "reduces cost of projectiles",
    projCost: .5
}, {
    id: 7,
    name: "Bull Helmet",
    price: 6e3,
    scale: 120,
    desc: "increases damage done but drains health",
    healthRegen: -5,
    dmgMultO: 1.5,
    spdMult: .96
}, {
    id: 22,
    name: "Emp Helmet",
    price: 6e3,
    scale: 120,
    desc: "turrets won't attack but you move slower",
    antiTurret: 1,
    spdMult: .7
}, {
    id: 12,
    name: "Booster Hat",
    price: 6e3,
    scale: 120,
    desc: "increases your movement speed",
    spdMult: 1.16
}, {
    id: 26,
    name: "Barbarian Armor",
    price: 8e3,
    scale: 120,
    desc: "knocks back enemies that attack you",
    dmgK: .6
}, {
    id: 21,
    name: "Plague Mask",
    price: 1e4,
    scale: 120,
    desc: "melee attacks deal poison damage",
    poisonDmg: 5,
    poisonTime: 6
}, {
    id: 46,
    name: "Bull Mask",
    price: 1e4,
    scale: 120,
    desc: "bulls won't target you unless you attack them",
    bullRepel: 1
}, {
    id: 14,
    name: "Windmill Hat",
    topSprite: !0,
    price: 1e4,
    scale: 120,
    desc: "generates points while worn",
    pps: 1.5
}, {
    id: 11,
    name: "Spike Gear",
    topSprite: !0,
    price: 1e4,
    scale: 120,
    desc: "deal damage to players that damage you",
    dmg: .45
}, {
    id: 53,
    name: "Turret Gear",
    topSprite: !0,
    price: 1e4,
    scale: 120,
    desc: "you become a walking turret",
    turret: {
        proj: 1,
        range: 700,
        rate: 2500
    },
    spdMult: .7
}, {
    id: 20,
    name: "Samurai Armor",
    price: 12e3,
    scale: 120,
    desc: "increased attack speed and fire rate",
    atkSpd: .78
}, {
    id: 58,
    name: "Dark Knight",
    price: 12e3,
    scale: 120,
    desc: "restores health when you deal damage",
    healD: .4
}, {
    id: 27,
    name: "Scavenger Gear",
    price: 15e3,
    scale: 120,
    desc: "earn double points for each kill",
    kScrM: 2
}, {
    id: 40,
    name: "Tank Gear",
    price: 15e3,
    scale: 120,
    desc: "increased damage to buildings but slower movement",
    spdMult: .3,
    bDmg: 3.3
}, {
    id: 52,
    name: "Thief Gear",
    price: 15e3,
    scale: 120,
    desc: "steal half of a players gold when you kill them",
    goldSteal: .5
}, {
    id: 55,
    name: "Bloodthirster",
    price: 2e4,
    scale: 120,
    desc: "Restore Health when dealing damage. And increased damage",
    healD: .25,
    dmgMultO: 1.2
}, {
    id: 56,
    name: "Assassin Gear",
    price: 2e4,
    scale: 120,
    desc: "Go invisible when not moving. Can't eat. Increased speed",
    noEat: !0,
    spdMult: 1.1,
    invisTimer: 1e3
}],
      yc = [{
          id: 12,
          name: "Snowball",
          price: 1e3,
          scale: 105,
          xOff: 18,
          desc: "no effect"
      }, {
          id: 9,
          name: "Tree Cape",
          price: 1e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 10,
          name: "Stone Cape",
          price: 1e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 3,
          name: "Cookie Cape",
          price: 1500,
          scale: 90,
          desc: "no effect"
      }, {
          id: 8,
          name: "Cow Cape",
          price: 2e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 11,
          name: "Monkey Tail",
          price: 2e3,
          scale: 97,
          xOff: 25,
          desc: "Super speed but reduced damage",
          spdMult: 1.35,
          dmgMultO: .2
      }, {
          id: 17,
          name: "Apple Basket",
          price: 3e3,
          scale: 80,
          xOff: 12,
          desc: "slowly regenerates health over time",
          healthRegen: 1
      }, {
          id: 6,
          name: "Winter Cape",
          price: 3e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 4,
          name: "Skull Cape",
          price: 4e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 5,
          name: "Dash Cape",
          price: 5e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 2,
          name: "Dragon Cape",
          price: 6e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 1,
          name: "Super Cape",
          price: 8e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 7,
          name: "Troll Cape",
          price: 8e3,
          scale: 90,
          desc: "no effect"
      }, {
          id: 14,
          name: "Thorns",
          price: 1e4,
          scale: 115,
          xOff: 20,
          desc: "no effect"
      }, {
          id: 15,
          name: "Blockades",
          price: 1e4,
          scale: 95,
          xOff: 15,
          desc: "no effect"
      }, {
          id: 20,
          name: "Devils Tail",
          price: 1e4,
          scale: 95,
          xOff: 20,
          desc: "no effect"
      }, {
          id: 16,
          name: "Sawblade",
          price: 12e3,
          scale: 90,
          spin: !0,
          xOff: 0,
          desc: "deal damage to players that damage you",
          dmg: .15
      }, {
          id: 13,
          name: "Angel Wings",
          price: 15e3,
          scale: 138,
          xOff: 22,
          desc: "slowly regenerates health over time",
          healthRegen: 3
      }, {
          id: 19,
          name: "Shadow Wings",
          price: 15e3,
          scale: 138,
          xOff: 22,
          desc: "increased movement speed",
          spdMult: 1.1
      }, {
          id: 18,
          name: "Blood Wings",
          price: 2e4,
          scale: 178,
          xOff: 26,
          desc: "restores health when you deal damage",
          healD: .2
      }, {
          id: 21,
          name: "Corrupt X Wings",
          price: 2e4,
          scale: 178,
          xOff: 26,
          desc: "deal damage to players that damage you",
          dmg: .25
      }],
      xc = {
          hats: gc,
          accessories: yc
      };

function wc(a, t, l, c, d, u, f) {
    this.init = function(e, t, n, i, s, o, r, a, l) {
        this.active = !0, this.indx = e, this.x = t, this.y = n, this.dir = i, this.skipMov = !0, this.speed = s, this.dmg = o, this.scale = a, this.range = r, this.owner = l, f && (this.sentTo = {})
    };
    const h = [];
    let p;
    this.update = function(e) {
        if (this.active) {
            let n = this.speed * e,
                i;
            if (this.skipMov ? this.skipMov = !1 : (this.x += n * U(this.dir), this.y += n * V(this.dir), this.range -= n, this.range <= 0 && (this.x += this.range * U(this.dir), this.y += this.range * V(this.dir), n = 1, this.range = 0, this.active = !1)), f) {
                for (var s = 0; s < a.length; ++s) !this.sentTo[a[s].id] && a[s].canSee(this) && (this.sentTo[a[s].id] = 1, f.send(a[s].id, "X", u.fixTo(this.x, 1), u.fixTo(this.y, 1), u.fixTo(this.dir, 2), u.fixTo(this.range, 1), this.speed, this.indx, this.layer, this.sid));
                h.length = 0;
                for (var s = 0; s < a.length + t.length; ++s) p = a[s] || t[s - a.length], p.alive && p != this.owner && !(this.owner.team && p.team == this.owner.team) && u.lineInRect(p.x - p.scale, p.y - p.scale, p.x + p.scale, p.y + p.scale, this.x, this.y, this.x + n * U(this.dir), this.y + n * V(this.dir)) && h.push(p);
                const o = l.getGridArrays(this.x, this.y, this.scale);
                for (let t = 0; t < o.length; ++t)
                    for (let e = 0; e < o[t].length; ++e) p = o[t][e], i = p.getScale(), p.active && this.ignoreObj != p.sid && this.layer <= p.layer && h.indexOf(p) < 0 && !p.ignoreCollision && u.lineInRect(p.x - i, p.y - i, p.x + i, p.y + i, this.x, this.y, this.x + n * U(this.dir), this.y + n * V(this.dir)) && h.push(p);
                if (h.length > 0) {
                    let e = null,
                        t = null,
                        n = null;
                    for (var s = 0; s < h.length; ++s) n = u.getDistance(this.x, this.y, h[s].x, h[s].y), (t == null || n < t) && (t = n, e = h[s]);
                    if (e.isPlayer || e.isAI) {
                        const r = .3 * (e.weightM || 1);
                        e.xVel += r * U(this.dir), e.yVel += r * V(this.dir), (e.weaponIndex == null || !(c.weapons[e.weaponIndex].shield && u.getAngleDist(this.dir + W, e.dir) <= d.shieldAngle)) && e.changeHealth(-this.dmg, this.owner, this.owner)
                    } else {
                        e.projDmg && e.health && e.changeHealth(-this.dmg) && l.disableObj(e);
                        for (var s = 0; s < a.length; ++s) a[s].active && (e.sentTo[a[s].id] && (e.active ? a[s].canSee(e) && f.send(a[s].id, "L", u.fixTo(this.dir, 2), e.sid) : f.send(a[s].id, "Q", e.sid)), !e.active && e.owner == a[s] && a[s].changeItemCount(e.group.id, -1))
                    }
                    this.active = !1;
                    for (var s = 0; s < a.length; ++s) this.sentTo[a[s].id] && f.send(a[s].id, "Y", this.sid, u.fixTo(t, 1))
                }
            }
        }
    }
}
var bc = {},
    vc = {
        get exports() {
            return bc
        },
        set exports(e) {
            bc = e
        }
    },
    kc = {},
    Ac = {
        get exports() {
            return kc
        },
        set exports(e) {
            kc = e
        }
    };
(function() {
    var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
        n = {
            rotl: function(e, t) {
                return e << t | e >>> 32 - t
            },
            rotr: function(e, t) {
                return e << 32 - t | e >>> t
            },
            endian: function(e) {
                if (e.constructor == Number) return n.rotl(e, 8) & 16711935 | n.rotl(e, 24) & 4278255360;
                for (var t = 0; t < e.length; t++) e[t] = n.endian(e[t]);
                return e
            },
            randomBytes: function(e) {
                for (var t = []; e > 0; e--) t.push(f(Math.random() * 256));
                return t
            },
            bytesToWords: function(e) {
                for (var t = [], n = 0, i = 0; n < e.length; n++, i += 8) t[i >>> 5] |= e[n] << 24 - i % 32;
                return t
            },
            wordsToBytes: function(e) {
                for (var t = [], n = 0; n < e.length * 32; n += 8) t.push(e[n >>> 5] >>> 24 - n % 32 & 255);
                return t
            },
            bytesToHex: function(e) {
                for (var t = [], n = 0; n < e.length; n++) t.push((e[n] >>> 4).toString(16)), t.push((e[n] & 15).toString(16));
                return t.join("")
            },
            hexToBytes: function(e) {
                for (var t = [], n = 0; n < e.length; n += 2) t.push(parseInt(e.substr(n, 2), 16));
                return t
            },
            bytesToBase64: function(e) {
                for (var t = [], n = 0; n < e.length; n += 3)
                    for (var i = e[n] << 16 | e[n + 1] << 8 | e[n + 2], s = 0; s < 4; s++) n * 8 + s * 6 <= e.length * 8 ? t.push(o.charAt(i >>> 6 * (3 - s) & 63)) : t.push("=");
                return t.join("")
            },
            base64ToBytes: function(e) {
                e = e.replace(/[^A-Z0-9+\/]/gi, "");
                for (var t = [], n = 0, i = 0; n < e.length; i = ++n % 4) i != 0 && t.push((o.indexOf(e.charAt(n - 1)) & re(2, -2 * i + 8) - 1) << i * 2 | o.indexOf(e.charAt(n)) >>> 6 - i * 2);
                return t
            }
        };
    Ac.exports = n
})();
var Ic = {
    utf8: {
        stringToBytes: function(e) {
            return Ic.bin.stringToBytes(unescape(encodeURIComponent(e)))
        },
        bytesToString: function(e) {
            return decodeURIComponent(escape(Ic.bin.bytesToString(e)))
        }
    },
    bin: {
        stringToBytes: function(e) {
            for (var t = [], n = 0; n < e.length; n++) t.push(e.charCodeAt(n) & 255);
            return t
        },
        bytesToString: function(e) {
            for (var t = [], n = 0; n < e.length; n++) t.push(String.fromCharCode(e[n]));
            return t.join("")
        }
    }
},
    Sc = Ic;
var Ec = function(e) {
    return e != null && (Tc(e) || Cc(e) || !!e._isBuffer)
};

function Tc(e) {
    return !!e.constructor && typeof e.constructor.isBuffer == "function" && e.constructor.isBuffer(e)
}

function Cc(e) {
    return typeof e.readFloatLE == "function" && typeof e.slice == "function" && Tc(e.slice(0, 0))
}(function() {
    var y = kc,
        x = Sc.utf8,
        w = Ec,
        b = Sc.bin,
        v = function(e, t) {
            e.constructor == String ? t && t.encoding === "binary" ? e = b.stringToBytes(e) : e = x.stringToBytes(e) : w(e) ? e = Array.prototype.slice.call(e, 0) : !Array.isArray(e) && e.constructor !== Uint8Array && (e = e.toString());
            for (var n = y.bytesToWords(e), i = e.length * 8, s = 1732584193, o = -271733879, r = -1732584194, a = 271733878, l = 0; l < n.length; l++) n[l] = (n[l] << 8 | n[l] >>> 24) & 16711935 | (n[l] << 24 | n[l] >>> 8) & 4278255360;
            n[i >>> 5] |= 128 << i % 32, n[(i + 64 >>> 9 << 4) + 14] = i;
            for (var c = v._ff, d = v._gg, u = v._hh, f = v._ii, l = 0; l < n.length; l += 16) {
                var h = s,
                    p = o,
                    m = r,
                    g = a;
                s = c(s, o, r, a, n[l + 0], 7, -680876936), a = c(a, s, o, r, n[l + 1], 12, -389564586), r = c(r, a, s, o, n[l + 2], 17, 606105819), o = c(o, r, a, s, n[l + 3], 22, -1044525330), s = c(s, o, r, a, n[l + 4], 7, -176418897), a = c(a, s, o, r, n[l + 5], 12, 1200080426), r = c(r, a, s, o, n[l + 6], 17, -1473231341), o = c(o, r, a, s, n[l + 7], 22, -45705983), s = c(s, o, r, a, n[l + 8], 7, 1770035416), a = c(a, s, o, r, n[l + 9], 12, -1958414417), r = c(r, a, s, o, n[l + 10], 17, -42063), o = c(o, r, a, s, n[l + 11], 22, -1990404162), s = c(s, o, r, a, n[l + 12], 7, 1804603682), a = c(a, s, o, r, n[l + 13], 12, -40341101), r = c(r, a, s, o, n[l + 14], 17, -1502002290), o = c(o, r, a, s, n[l + 15], 22, 1236535329), s = d(s, o, r, a, n[l + 1], 5, -165796510), a = d(a, s, o, r, n[l + 6], 9, -1069501632), r = d(r, a, s, o, n[l + 11], 14, 643717713), o = d(o, r, a, s, n[l + 0], 20, -373897302), s = d(s, o, r, a, n[l + 5], 5, -701558691), a = d(a, s, o, r, n[l + 10], 9, 38016083), r = d(r, a, s, o, n[l + 15], 14, -660478335), o = d(o, r, a, s, n[l + 4], 20, -405537848), s = d(s, o, r, a, n[l + 9], 5, 568446438), a = d(a, s, o, r, n[l + 14], 9, -1019803690), r = d(r, a, s, o, n[l + 3], 14, -187363961), o = d(o, r, a, s, n[l + 8], 20, 1163531501), s = d(s, o, r, a, n[l + 13], 5, -1444681467), a = d(a, s, o, r, n[l + 2], 9, -51403784), r = d(r, a, s, o, n[l + 7], 14, 1735328473), o = d(o, r, a, s, n[l + 12], 20, -1926607734), s = u(s, o, r, a, n[l + 5], 4, -378558), a = u(a, s, o, r, n[l + 8], 11, -2022574463), r = u(r, a, s, o, n[l + 11], 16, 1839030562), o = u(o, r, a, s, n[l + 14], 23, -35309556), s = u(s, o, r, a, n[l + 1], 4, -1530992060), a = u(a, s, o, r, n[l + 4], 11, 1272893353), r = u(r, a, s, o, n[l + 7], 16, -155497632), o = u(o, r, a, s, n[l + 10], 23, -1094730640), s = u(s, o, r, a, n[l + 13], 4, 681279174), a = u(a, s, o, r, n[l + 0], 11, -358537222), r = u(r, a, s, o, n[l + 3], 16, -722521979), o = u(o, r, a, s, n[l + 6], 23, 76029189), s = u(s, o, r, a, n[l + 9], 4, -640364487), a = u(a, s, o, r, n[l + 12], 11, -421815835), r = u(r, a, s, o, n[l + 15], 16, 530742520), o = u(o, r, a, s, n[l + 2], 23, -995338651), s = f(s, o, r, a, n[l + 0], 6, -198630844), a = f(a, s, o, r, n[l + 7], 10, 1126891415), r = f(r, a, s, o, n[l + 14], 15, -1416354905), o = f(o, r, a, s, n[l + 5], 21, -57434055), s = f(s, o, r, a, n[l + 12], 6, 1700485571), a = f(a, s, o, r, n[l + 3], 10, -1894986606), r = f(r, a, s, o, n[l + 10], 15, -1051523), o = f(o, r, a, s, n[l + 1], 21, -2054922799), s = f(s, o, r, a, n[l + 8], 6, 1873313359), a = f(a, s, o, r, n[l + 15], 10, -30611744), r = f(r, a, s, o, n[l + 6], 15, -1560198380), o = f(o, r, a, s, n[l + 13], 21, 1309151649), s = f(s, o, r, a, n[l + 4], 6, -145523070), a = f(a, s, o, r, n[l + 11], 10, -1120210379), r = f(r, a, s, o, n[l + 2], 15, 718787259), o = f(o, r, a, s, n[l + 9], 21, -343485551), s = s + h >>> 0, o = o + p >>> 0, r = r + m >>> 0, a = a + g >>> 0
            }
            return y.endian([s, o, r, a])
        };
    v._ff = function(e, t, n, i, s, o, r) {
        var a = e + (t & n | ~t & i) + (s >>> 0) + r;
        return (a << o | a >>> 32 - o) + t
    }, v._gg = function(e, t, n, i, s, o, r) {
        var a = e + (t & i | n & ~i) + (s >>> 0) + r;
        return (a << o | a >>> 32 - o) + t
    }, v._hh = function(e, t, n, i, s, o, r) {
        var a = e + (t ^ n ^ i) + (s >>> 0) + r;
        return (a << o | a >>> 32 - o) + t
    }, v._ii = function(e, t, n, i, s, o, r) {
        var a = e + (n ^ (t | ~i)) + (s >>> 0) + r;
        return (a << o | a >>> 32 - o) + t
    }, v._blocksize = 16, v._digestsize = 16, vc.exports = function(e, t) {
        if (e == null) throw new Error("Illegal argument " + e);
        var n = y.wordsToBytes(v(e, t));
        return t && t.asBytes ? n : t && t.asString ? b.bytesToString(n) : y.bytesToHex(n)
    }
})();
var Bc, Dc;

function Pc() {
    if (Dc) return Bc;
    Dc = 1;

    function s(e, t, n, i, s, o) {
        return {
            tag: e,
            key: t,
            attrs: n,
            children: i,
            text: s,
            dom: o,
            domSize: void 0,
            state: void 0,
            events: void 0,
            instance: void 0
        }
    }
    return s.normalize = function(e) {
        return Array.isArray(e) ? s("[", void 0, void 0, s.normalizeChildren(e), void 0, void 0) : e == null || typeof e == "boolean" ? null : typeof e == "object" ? e : s("#", void 0, void 0, String(e), void 0, void 0)
    }, s.normalizeChildren = function(e) {
        var t = [];
        if (e.length) {
            for (var n = e[0] != null && e[0].key != null, i = 1; i < e.length; i++)
                if ((e[i] != null && e[i].key != null) !== n) throw new TypeError(n && (e[i] != null || typeof e[i] == "boolean") ? "In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole." : "In fragments, vnodes must either all have keys or none have keys.");
            for (var i = 0; i < e.length; i++) t[i] = s.normalize(e[i])
        }
        return t
    }, Bc = s, Bc
}
var Rc = Pc(),
    Mc = function() {
        var e = arguments[this],
            t = this + 1,
            n;
        if (e == null ? e = {} : (typeof e != "object" || e.tag != null || Array.isArray(e)) && (e = {}, t = this), arguments.length === t + 1) n = arguments[t], Array.isArray(n) || (n = [n]);
        else
            for (n = []; t < arguments.length;) n.push(arguments[t++]);
        return Rc("", e.key, e, n)
    },
    Nc = {}.hasOwnProperty,
    Oc = Pc(),
    Lc = Mc,
    Fc = Nc,
    _c = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g,
    Vc = {};

function Uc(e) {
    for (var t in e)
        if (Fc.call(e, t)) return !1;
    return !0
}

function jc(e) {
    for (var t, n = "div", i = [], s = {}; t = _c.exec(e);) {
        var o = t[1],
            r = t[2];
        if (o === "" && r !== "") n = r;
        else if (o === "#") s.id = r;
        else if (o === ".") i.push(r);
        else if (t[3][0] === "[") {
            var a = t[6];
            a && (a = a.replace(/\\(["'])/g, "$1").replace(/\\\\/g, "\\")), t[4] === "class" ? i.push(a) : s[t[4]] = a === "" ? a : a || !0
        }
    }
    return i.length > 0 && (s.className = i.join(" ")), Vc[e] = {
        tag: n,
        attrs: s
    }
}

function Hc(e, t) {
    var n = t.attrs,
        i = Fc.call(n, "class"),
        s = i ? n["class"] : n.className;
    if (t.tag = e.tag, t.attrs = {}, !Uc(e.attrs) && !Uc(n)) {
        var o = {};
        for (var r in n) Fc.call(n, r) && (o[r] = n[r]);
        n = o
    }
    for (var r in e.attrs) Fc.call(e.attrs, r) && r !== "className" && !Fc.call(n, r) && (n[r] = e.attrs[r]);
    (s != null || e.attrs.className != null) && (n.className = s != null ? e.attrs.className != null ? String(e.attrs.className) + " " + String(s) : s : e.attrs.className != null ? e.attrs.className : null), i && (n["class"] = null);
    for (var r in n)
        if (Fc.call(n, r) && r !== "key") {
            t.attrs = n;
            break
        } return t
}

function Wc(e) {
    if (e == null || typeof e != "string" && typeof e != "function" && typeof e.view != "function") throw Error("The selector must be either a string or a component.");
    var t = Lc.apply(1, arguments);
    return typeof e == "string" && (t.children = Oc.normalizeChildren(t.children), e !== "[") ? Hc(Vc[e] || jc(e), t) : (t.tag = e, t)
}
var Qc = Wc,
    Yc = Pc(),
    zc = function(e) {
        return e == null && (e = ""), Yc("<", void 0, void 0, e, void 0, void 0)
    },
    Gc = Pc(),
    Kc = Mc,
    Xc = function() {
        var e = Kc.apply(0, arguments);
        return e.tag = "[", e.children = Gc.normalizeChildren(e.children), e
    },
    Jc = Qc;
Jc.trust = zc;
Jc.fragment = Xc;
var qc = Jc,
    $c = {},
    Zc = {
        get exports() {
            return $c
        },
        set exports(e) {
            $c = e
        }
    },
    ed, td;

function nd() {
    if (td) return ed;
    td = 1;
    var h = function(e) {
        if (!(this instanceof h)) throw new Error("Promise must be called with 'new'.");
        if (typeof e != "function") throw new TypeError("executor must be a function.");
        var r = this,
            a = [],
            l = [],
            o = t(a, !0),
            c = t(l, !1),
            d = r._instance = {
                resolvers: a,
                rejectors: l
            },
            u = typeof setImmediate == "function" ? setImmediate : setTimeout;

        function t(i, s) {
            return function o(t) {
                var e;
                try {
                    if (s && t != null && (typeof t == "object" || typeof t == "function") && typeof(e = t.then) == "function") {
                        if (t === r) throw new TypeError("Promise can't be resolved with itself.");
                        f(e.bind(t))
                    } else u(function() {
                        !s && i.length === 0 && console.error("Possible unhandled promise rejection:", t);
                        for (var e = 0; e < i.length; e++) i[e](t);
                        a.length = 0, l.length = 0, d.state = s, d.retry = function() {
                            o(t)
                        }
                    })
                } catch (n) {
                    c(n)
                }
            }
        }

        function f(e) {
            var n = 0;

            function t(t) {
                return function(e) {
                    n++ > 0 || t(e)
                }
            }
            var i = t(c);
            try {
                e(t(o), i)
            } catch (s) {
                i(s)
            }
        }
        f(e)
    };
    return h.prototype.then = function(e, t) {
        var n = this,
            s = n._instance;

        function i(t, e, n, i) {
            e.push(function(e) {
                if (typeof t != "function") n(e);
                else try {
                    o(t(e))
                } catch (w) {
                    r && r(w)
                }
            }), typeof s.retry == "function" && i === s.state && s.retry()
        }
        var o, r, a = new h(function(e, t) {
            o = e, r = t
        });
        return i(e, s.resolvers, o, !0), i(t, s.rejectors, r, !1), a
    }, h.prototype["catch"] = function(e) {
        return this.then(null, e)
    }, h.prototype["finally"] = function(t) {
        return this.then(function(e) {
            return h.resolve(t()).then(function() {
                return e
            })
        }, function(e) {
            return h.resolve(t()).then(function() {
                return h.reject(e)
            })
        })
    }, h.resolve = function(t) {
        return t instanceof h ? t : new h(function(e) {
            e(t)
        })
    }, h.reject = function(n) {
        return new h(function(e, t) {
            t(n)
        })
    }, h.all = function(a) {
        return new h(function(n, i) {
            var s = a.length,
                o = 0,
                r = [];
            if (a.length === 0) n([]);
            else
                for (var e = 0; e < a.length; e++)(function(t) {
                    function e(e) {
                        o++, r[t] = e, o === s && n(r)
                    }
                    a[t] != null && (typeof a[t] == "object" || typeof a[t] == "function") && typeof a[t].then == "function" ? a[t].then(e, i) : e(a[t])
                })(e)
        })
    }, h.race = function(i) {
        return new h(function(e, t) {
            for (var n = 0; n < i.length; n++) i[n].then(e, t)
        })
    }, ed = h, ed
}
var id = nd();
typeof window < "u" ? (typeof window.Promise > "u" ? window.Promise = id : window.Promise.prototype["finally"] || (window.Promise.prototype["finally"] = id.prototype["finally"]), Zc.exports = window.Promise) : typeof Sr < "u" ? (typeof Sr.Promise > "u" ? Sr.Promise = id : Sr.Promise.prototype["finally"] || (Sr.Promise.prototype["finally"] = id.prototype["finally"]), Zc.exports = Sr.Promise) : Zc.exports = id;
var sd, od;

function rd() {
    if (od) return sd;
    od = 1;
    var te = Pc();
    return sd = function(e) {
        var d = e && e.document,
            c, t = {
                svg: "http://www.w3.org/2000/svg",
                math: "http://www.w3.org/1998/Math/MathML"
            };

        function u(e) {
            return e.attrs && e.attrs.xmlns || t[e.tag]
        }

        function f(e, t) {
            if (e.state !== t) throw new Error("'vnode.state' must not be modified.")
        }

        function h(e) {
            var t = e.state;
            try {
                return this.apply(t, arguments)
            } finally {
                f(e, t)
            }
        }

        function p() {
            try {
                return d.activeElement
            } catch {
                return null
            }
        }

        function C(e, t, n, i, s, o, r) {
            for (var a = n; a < i; a++) {
                var l = t[a];
                l != null && B(e, l, s, r, o)
            }
        }

        function B(e, t, n, i, s) {
            var o = t.tag;
            if (typeof o == "string") switch (t.state = {}, t.attrs != null && O(t.attrs, t, n), o) {
                case "#":
                    r(e, t, s);
                    break;
                case "<":
                    a(e, t, i, s);
                    break;
                case "[":
                    _(e, t, n, i, s);
                    break;
                default:
                    V(e, t, n, i, s)
            } else j(e, t, n, i, s)
        }

        function r(e, t, n) {
            t.dom = d.createTextNode(t.children), y(e, t.dom, n)
        }
        var l = {
            caption: "table",
            thead: "table",
            tbody: "table",
            tfoot: "table",
            tr: "tbody",
            th: "tr",
            td: "tr",
            colgroup: "table",
            col: "colgroup"
        };

        function a(e, t, n, i) {
            var s = t.children.match(/^\s*?<(\w+)/im) || [],
                o = d.createElement(l[s[1]] || "div");
            n === "http://www.w3.org/2000/svg" ? (o.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg">' + t.children + "</svg>", o = o.firstChild) : o.innerHTML = t.children, t.dom = o.firstChild, t.domSize = o.childNodes.length, t.instance = [];
            for (var r = d.createDocumentFragment(), a; a = o.firstChild;) t.instance.push(a), r.appendChild(a);
            y(e, r, i)
        }

        function _(e, t, n, i, s) {
            var o = d.createDocumentFragment();
            if (t.children != null) {
                var r = t.children;
                C(o, r, 0, r.length, n, null, i)
            }
            t.dom = o.firstChild, t.domSize = o.childNodes.length, y(e, o, s)
        }

        function V(e, t, n, i, s) {
            var o = t.tag,
                r = t.attrs,
                a = r && r.is;
            i = u(t) || i;
            var l = i ? a ? d.createElementNS(i, o, {
                is: a
            }) : d.createElementNS(i, o) : a ? d.createElement(o, {
                is: a
            }) : d.createElement(o);
            if (t.dom = l, r != null && X(t, r, i), y(e, l, s), !x(t) && t.children != null) {
                var c = t.children;
                C(l, c, 0, c.length, n, null, i), t.tag === "select" && r != null && q(t, r)
            }
        }

        function U(e, t) {
            var n;
            if (typeof e.tag.view == "function") {
                if (e.state = Object.create(e.tag), n = e.state.view, n.$$reentrantLock$$ != null) return;
                n.$$reentrantLock$$ = !0
            } else {
                if (e.state = void 0, n = e.tag, n.$$reentrantLock$$ != null) return;
                n.$$reentrantLock$$ = !0, e.state = e.tag.prototype != null && typeof e.tag.prototype.view == "function" ? new e.tag(e) : e.tag(e)
            }
            if (O(e.state, e, t), e.attrs != null && O(e.attrs, e, t), e.instance = te.normalize(h.call(e.state.view, e)), e.instance === e) throw Error("A view cannot return the vnode it received as argument");
            n.$$reentrantLock$$ = null
        }

        function j(e, t, n, i, s) {
            U(t, n), t.instance != null ? (B(e, t.instance, n, i, s), t.dom = t.instance.dom, t.domSize = t.dom != null ? t.instance.domSize : 0) : t.domSize = 0
        }

        function m(e, t, n, i, s, o) {
            if (!(t === n || t == null && n == null))
                if (t == null || t.length === 0) C(e, n, 0, n.length, i, s, o);
                else if (n == null || n.length === 0) M(e, t, 0, t.length);
                else {
                    var r = t[0] != null && t[0].key != null,
                        a = n[0] != null && n[0].key != null,
                        l = 0,
                        c = 0;
                    if (!r)
                        for (; c < t.length && t[c] == null;) c++;
                    if (!a)
                        for (; l < n.length && n[l] == null;) l++;
                    if (r !== a) M(e, t, c, t.length), C(e, n, l, n.length, i, s, o);
                    else if (a) {
                        for (var d = t.length - 1, u = n.length - 1, f, h, p, m, g, y; d >= c && u >= l && (m = t[d], g = n[u], m.key === g.key);) m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), d--, u--;
                        for (; d >= c && u >= l && (h = t[c], p = n[l], h.key === p.key);) c++, l++, h !== p && D(e, h, p, i, P(t, c, s), o);
                        for (; d >= c && u >= l && !(l === u || h.key !== g.key || m.key !== p.key);) y = P(t, c, s), R(e, m, y), m !== p && D(e, m, p, i, y, o), ++l <= --u && R(e, h, s), h !== g && D(e, h, g, i, s, o), g.dom != null && (s = g.dom), c++, d--, m = t[d], g = n[u], h = t[c], p = n[l];
                        for (; d >= c && u >= l && m.key === g.key;) m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), d--, u--, m = t[d], g = n[u];
                        if (l > u) M(e, t, c, d + 1);
                        else if (c > d) C(e, n, l, u + 1, i, s, o);
                        else {
                            var x = s,
                                w = u - l + 1,
                                b = new Array(w),
                                v = 0,
                                k = 0,
                                A = 2147483647,
                                I = 0,
                                f, S;
                            for (k = 0; k < w; k++) b[k] = -1;
                            for (k = u; k >= l; k--) {
                                f == null && (f = G(t, c, d + 1)), g = n[k];
                                var E = f[g.key];
                                E != null && (A = E < A ? E : -1, b[k - l] = E, m = t[E], t[E] = null, m !== g && D(e, m, g, i, s, o), g.dom != null && (s = g.dom), I++)
                            }
                            if (s = x, I !== d - c + 1 && M(e, t, c, d + 1), I === 0) C(e, n, l, u + 1, i, s, o);
                            else if (A === -1)
                                for (S = K(b), v = S.length - 1, k = u; k >= l; k--) p = n[k], b[k - l] === -1 ? B(e, p, i, o, s) : S[v] === k - l ? v-- : R(e, p, s), p.dom != null && (s = n[k].dom);
                            else
                                for (k = u; k >= l; k--) p = n[k], b[k - l] === -1 && B(e, p, i, o, s), p.dom != null && (s = n[k].dom)
                        }
                    } else {
                        var T = t.length < n.length ? t.length : n.length;
                        for (l = l < c ? l : c; l < T; l++) h = t[l], p = n[l], !(h === p || h == null && p == null) && (h == null ? B(e, p, i, o, P(t, l + 1, s)) : p == null ? N(e, h) : D(e, h, p, i, P(t, l + 1, s), o));
                        t.length > T && M(e, t, l, t.length), n.length > T && C(e, n, l, n.length, i, s, o)
                    }
                }
        }

        function D(e, t, n, i, s, o) {
            var r = t.tag,
                a = n.tag;
            if (r === a) {
                if (n.state = t.state, n.events = t.events, ee(n, t)) return;
                if (typeof r == "string") switch (n.attrs != null && L(n.attrs, n, i), r) {
                    case "#":
                        H(t, n);
                        break;
                    case "<":
                        W(e, t, n, o, s);
                        break;
                    case "[":
                        Q(e, t, n, i, s, o);
                        break;
                    default:
                        Y(t, n, i, o)
                } else z(e, t, n, i, s, o)
            } else N(e, t), B(e, n, i, o, s)
        }

        function H(e, t) {
            e.children.toString() !== t.children.toString() && (e.dom.nodeValue = t.children), t.dom = e.dom
        }

        function W(e, t, n, i, s) {
            t.children !== n.children ? (w(e, t), a(e, n, i, s)) : (n.dom = t.dom, n.domSize = t.domSize, n.instance = t.instance)
        }

        function Q(e, t, n, i, s, o) {
            m(e, t.children, n.children, i, s, o);
            var r = 0,
                a = n.children;
            if (n.dom = null, a != null) {
                for (var l = 0; l < a.length; l++) {
                    var c = a[l];
                    c != null && c.dom != null && (n.dom == null && (n.dom = c.dom), r += c.domSize || 1)
                }
                r !== 1 && (n.domSize = r)
            }
        }

        function Y(e, t, n, i) {
            var s = t.dom = e.dom;
            i = u(t) || i, t.tag === "textarea" && t.attrs == null && (t.attrs = {}), $(t, e.attrs, t.attrs, i), x(t) || m(s, e.children, t.children, n, null, i)
        }

        function z(e, t, n, i, s, o) {
            if (n.instance = te.normalize(h.call(n.state.view, n)), n.instance === n) throw Error("A view cannot return the vnode it received as argument");
            L(n.state, n, i), n.attrs != null && L(n.attrs, n, i), n.instance != null ? (t.instance == null ? B(e, n.instance, i, o, s) : D(e, t.instance, n.instance, i, s, o), n.dom = n.instance.dom, n.domSize = n.instance.domSize) : t.instance != null ? (N(e, t.instance), n.dom = void 0, n.domSize = 0) : (n.dom = t.dom, n.domSize = t.domSize)
        }

        function G(e, t, n) {
            for (var i = Object.create(null); t < n; t++) {
                var s = e[t];
                if (s != null) {
                    var o = s.key;
                    o != null && (i[o] = t)
                }
            }
            return i
        }
        var g = [];

        function K(e) {
            for (var t = [0], n = 0, i = 0, s = 0, o = g.length = e.length, s = 0; s < o; s++) g[s] = e[s];
            for (var s = 0; s < o; ++s)
                if (e[s] !== -1) {
                    var r = t[t.length - 1];
                    if (e[r] < e[s]) {
                        g[s] = r, t.push(s);
                        continue
                    }
                    for (n = 0, i = t.length - 1; n < i;) {
                        var a = (n >>> 1) + (i >>> 1) + (n & i & 1);
                        e[t[a]] < e[s] ? n = a + 1 : i = a
                    }
                    e[s] < e[t[n]] && (n > 0 && (g[s] = t[n - 1]), t[n] = s)
                } for (n = t.length, i = t[n - 1]; n-- > 0;) t[n] = i, i = g[i];
            return g.length = 0, t
        }

        function P(e, t, n) {
            for (; t < e.length; t++)
                if (e[t] != null && e[t].dom != null) return e[t].dom;
            return n
        }

        function R(e, t, n) {
            var i = d.createDocumentFragment();
            o(e, i, t), y(e, i, n)
        }

        function o(e, t, n) {
            for (; n.dom != null && n.dom.parentNode === e;) {
                if (typeof n.tag != "string") {
                    if (n = n.instance, n != null) continue
                } else if (n.tag === "<")
                    for (var i = 0; i < n.instance.length; i++) t.appendChild(n.instance[i]);
                else if (n.tag !== "[") t.appendChild(n.dom);
                else if (n.children.length === 1) {
                    if (n = n.children[0], n != null) continue
                } else
                    for (var i = 0; i < n.children.length; i++) {
                        var s = n.children[i];
                        s != null && o(e, t, s)
                    }
                break
            }
        }

        function y(e, t, n) {
            n != null ? e.insertBefore(t, n) : e.appendChild(t)
        }

        function x(e) {
            if (e.attrs == null || e.attrs.contenteditable == null && e.attrs.contentEditable == null) return !1;
            var t = e.children;
            if (t != null && t.length === 1 && t[0].tag === "<") {
                var n = t[0].children;
                e.dom.innerHTML !== n && (e.dom.innerHTML = n)
            } else if (t != null && t.length !== 0) throw new Error("Child node of a contenteditable must be trusted.");
            return !0
        }

        function M(e, t, n, i) {
            for (var s = n; s < i; s++) {
                var o = t[s];
                o != null && N(e, o)
            }
        }

        function N(e, t) {
            var n = 0,
                i = t.state,
                s, o;
            if (typeof t.tag != "string" && typeof t.state.onbeforeremove == "function") {
                var r = h.call(t.state.onbeforeremove, t);
                r != null && typeof r.then == "function" && (n = 1, s = r)
            }
            if (t.attrs && typeof t.attrs.onbeforeremove == "function") {
                var r = h.call(t.attrs.onbeforeremove, t);
                r != null && typeof r.then == "function" && (n |= 2, o = r)
            }
            if (f(t, i), !n) v(t), b(e, t);
            else {
                if (s != null) {
                    var a = function() {
                        n & 1 && (n &= 2, n || l())
                    };
                    s.then(a, a)
                }
                if (o != null) {
                    var a = function() {
                        n & 2 && (n &= 1, n || l())
                    };
                    o.then(a, a)
                }
            }

            function l() {
                f(t, i), v(t), b(e, t)
            }
        }

        function w(e, t) {
            for (var n = 0; n < t.instance.length; n++) e.removeChild(t.instance[n])
        }

        function b(e, t) {
            for (; t.dom != null && t.dom.parentNode === e;) {
                if (typeof t.tag != "string") {
                    if (t = t.instance, t != null) continue
                } else if (t.tag === "<") w(e, t);
                else {
                    if (t.tag !== "[" && (e.removeChild(t.dom), !Array.isArray(t.children))) break;
                    if (t.children.length === 1) {
                        if (t = t.children[0], t != null) continue
                    } else
                        for (var n = 0; n < t.children.length; n++) {
                            var i = t.children[n];
                            i != null && b(e, i)
                        }
                }
                break
            }
        }

        function v(e) {
            if (typeof e.tag != "string" && typeof e.state.onremove == "function" && h.call(e.state.onremove, e), e.attrs && typeof e.attrs.onremove == "function" && h.call(e.attrs.onremove, e), typeof e.tag != "string") e.instance != null && v(e.instance);
            else {
                var t = e.children;
                if (Array.isArray(t))
                    for (var n = 0; n < t.length; n++) {
                        var i = t[n];
                        i != null && v(i)
                    }
            }
        }

        function X(e, t, n) {
            e.tag === "input" && t.type != null && e.dom.setAttribute("type", t.type);
            var i = t != null && e.tag === "input" && t.type === "file";
            for (var s in t) k(e, s, null, t[s], n, i)
        }

        function k(e, t, n, i, s, o) {
            if (!(t === "key" || t === "is" || i == null || A(t) || n === i && !Z(e, t) && typeof i != "object" || t === "type" && e.tag === "input")) {
                if (t[0] === "o" && t[1] === "n") return T(e, t, i);
                if (t.slice(0, 6) === "xlink:") e.dom.setAttributeNS("http://www.w3.org/1999/xlink", t.slice(6), i);
                else if (t === "style") E(e.dom, n, i);
                else if (I(e, t, s)) {
                    if (t === "value") {
                        if ((e.tag === "input" || e.tag === "textarea") && e.dom.value === "" + i && (o || e.dom === p()) || e.tag === "select" && n !== null && e.dom.value === "" + i || e.tag === "option" && n !== null && e.dom.value === "" + i) return;
                        if (o && "" + i != "") {
                            console.error("`value` is read-only on file inputs!");
                            return
                        }
                    }
                    e.dom[t] = i
                } else typeof i == "boolean" ? i ? e.dom.setAttribute(t, "") : e.dom.removeAttribute(t) : e.dom.setAttribute(t === "className" ? "class" : t, i)
            }
        }

        function J(e, t, n, i) {
            if (!(t === "key" || t === "is" || n == null || A(t)))
                if (t[0] === "o" && t[1] === "n") T(e, t, void 0);
                else if (t === "style") E(e.dom, n, null);
                else if (I(e, t, i) && t !== "className" && t !== "title" && !(t === "value" && (e.tag === "option" || e.tag === "select" && e.dom.selectedIndex === -1 && e.dom === p())) && !(e.tag === "input" && t === "type")) e.dom[t] = null;
                else {
                    var s = t.indexOf(":");
                    s !== -1 && (t = t.slice(s + 1)), n !== !1 && e.dom.removeAttribute(t === "className" ? "class" : t)
                }
        }

        function q(e, t) {
            if ("value" in t)
                if (t.value === null) e.dom.selectedIndex !== -1 && (e.dom.value = null);
                else {
                    var n = "" + t.value;
                    (e.dom.value !== n || e.dom.selectedIndex === -1) && (e.dom.value = n)
                }
            "selectedIndex" in t && k(e, "selectedIndex", null, t.selectedIndex, void 0)
        }

        function $(e, t, n, i) {
            if (t && t === n && console.warn("Don't reuse attrs object, use new object for every redraw, this will throw in next major"), n != null) {
                e.tag === "input" && n.type != null && e.dom.setAttribute("type", n.type);
                var s = e.tag === "input" && n.type === "file";
                for (var o in n) k(e, o, t && t[o], n[o], i, s)
            }
            var r;
            if (t != null)
                for (var o in t)(r = t[o]) != null && (n == null || n[o] == null) && J(e, o, r, i)
        }

        function Z(e, t) {
            return t === "value" || t === "checked" || t === "selectedIndex" || t === "selected" && e.dom === p() || e.tag === "option" && e.dom.parentNode === d.activeElement
        }

        function A(e) {
            return e === "oninit" || e === "oncreate" || e === "onupdate" || e === "onremove" || e === "onbeforeremove" || e === "onbeforeupdate"
        }

        function I(e, t, n) {
            return n === void 0 && (e.tag.indexOf("-") > -1 || e.attrs != null && e.attrs.is || t !== "href" && t !== "list" && t !== "form" && t !== "width" && t !== "height") && t in e.dom
        }
        var n = /[A-Z]/g;

        function s(e) {
            return "-" + e.toLowerCase()
        }

        function S(e) {
            return e[0] === "-" && e[1] === "-" ? e : e === "cssFloat" ? "float" : e.replace(n, s)
        }

        function E(e, t, n) {
            if (t !== n)
                if (n == null) e.style.cssText = "";
                else if (typeof n != "object") e.style.cssText = n;
                else if (t == null || typeof t != "object") {
                    e.style.cssText = "";
                    for (var i in n) {
                        var s = n[i];
                        s != null && e.style.setProperty(S(i), String(s))
                    }
                } else {
                    for (var i in n) {
                        var s = n[i];
                        s != null && (s = String(s)) !== String(t[i]) && e.style.setProperty(S(i), s)
                    }
                    for (var i in t) t[i] != null && n[i] == null && e.style.removeProperty(S(i))
                }
        }

        function i() {
            this._ = c
        }
        i.prototype = Object.create(null), i.prototype.handleEvent = function(e) {
            var t = this["on" + e.type],
                n;
            typeof t == "function" ? n = t.call(e.currentTarget, e) : typeof t.handleEvent == "function" && t.handleEvent(e), this._ && e.redraw !== !1 && (0, this._)(), n === !1 && (e.preventDefault(), e.stopPropagation())
        };

        function T(e, t, n) {
            if (e.events != null) {
                if (e.events._ = c, e.events[t] === n) return;
                n != null && (typeof n == "function" || typeof n == "object") ? (e.events[t] == null && e.dom.addEventListener(t.slice(2), e.events, !1), e.events[t] = n) : (e.events[t] != null && e.dom.removeEventListener(t.slice(2), e.events, !1), e.events[t] = void 0)
            } else n != null && (typeof n == "function" || typeof n == "object") && (e.events = new i, e.dom.addEventListener(t.slice(2), e.events, !1), e.events[t] = n)
        }

        function O(e, t, n) {
            typeof e.oninit == "function" && h.call(e.oninit, t), typeof e.oncreate == "function" && n.push(h.bind(e.oncreate, t))
        }

        function L(e, t, n) {
            typeof e.onupdate == "function" && n.push(h.bind(e.onupdate, t))
        }

        function ee(e, t) {
            do {
                if (e.attrs != null && typeof e.attrs.onbeforeupdate == "function") {
                    var n = h.call(e.attrs.onbeforeupdate, e, t);
                    if (n !== void 0 && !n) break
                }
                if (typeof e.tag != "string" && typeof e.state.onbeforeupdate == "function") {
                    var n = h.call(e.state.onbeforeupdate, e, t);
                    if (n !== void 0 && !n) break
                }
                return !1
            } while (!1);
            return e.dom = t.dom, e.domSize = t.domSize, e.instance = t.instance, e.attrs = t.attrs, e.children = t.children, e.text = t.text, !0
        }
        var F;
        return function(e, t, n) {
            if (!e) throw new TypeError("DOM element being rendered to does not exist.");
            if (F != null && e.contains(F)) throw new TypeError("Node is currently being rendered to and thus is locked.");
            var i = c,
                s = F,
                o = [],
                r = p(),
                a = e.namespaceURI;
            F = e, c = typeof n == "function" ? n : void 0;
            try {
                e.vnodes == null && (e.textContent = ""), t = te.normalizeChildren(Array.isArray(t) ? t : [t]), m(e, e.vnodes, t, o, null, a === "http://www.w3.org/1999/xhtml" ? void 0 : a), e.vnodes = t, r != null && p() !== r && typeof r.focus == "function" && r.focus();
                for (var l = 0; l < o.length; l++) o[l]()
            } finally {
                c = i, F = s
            }
        }
    }, sd
}
var ad, ld;

function cd() {
    return ld || (ld = 1, ad = rd()(typeof window < "u" ? window : null)), ad
}
var dd = Pc(),
    ud = function(i, e, t) {
        var s = [],
            n = !1,
            o = -1;

        function r() {
            for (o = 0; o < s.length; o += 2) try {
                i(s[o], dd(s[o + 1]), a)
            } catch (e) {
                t.error(e)
            }
            o = -1
        }

        function a() {
            n || (n = !0, e(function() {
                n = !1, r()
            }))
        }
        a.sync = r;

        function l(e, t) {
            if (t != null && t.view == null && typeof t != "function") throw new TypeError("m.mount expects a component, not a vnode.");
            var n = s.indexOf(e);
            n >= 0 && (s.splice(n, 2), n <= o && (o -= 2), i(e, [])), t != null && (s.push(e, t), i(e, dd(t), a))
        }
        return {
            mount: l,
            redraw: a
        }
    },
    fd = cd(),
    hd = ud(fd, typeof requestAnimationFrame < "u" ? requestAnimationFrame : null, typeof console < "u" ? console : null),
    pd, md;

function gd() {
    return md || (md = 1, pd = function(e) {
        if (Object.prototype.toString.call(e) !== "[object Object]") return "";
        var i = [];
        for (var t in e) s(t, e[t]);
        return i.join("&");

        function s(e, t) {
            if (Array.isArray(t))
                for (var n = 0; n < t.length; n++) s(e + "[" + n + "]", t[n]);
            else if (Object.prototype.toString.call(t) === "[object Object]")
                for (var n in t) s(e + "[" + n + "]", t[n]);
            else i.push(encodeURIComponent(e) + (t != null && t !== "" ? "=" + encodeURIComponent(t) : ""))
        }
    }), pd
}
var yd, xd;

function wd() {
    if (xd) return yd;
    xd = 1;
    var i = Nc;
    return yd = Object.assign || function(e, t) {
        for (var n in t) i.call(t, n) && (e[n] = t[n])
    }, yd
}
var bd, vd;

function kd() {
    if (vd) return bd;
    vd = 1;
    var m = gd(),
        g = wd();
    return bd = function(e, i) {
        if (/:([^\/\.-]+)(\.{3})?:/.test(e)) throw new SyntaxError("Template parameter names must be separated by either a '/', '-', or '.'.");
        if (i == null) return e;
        var t = e.indexOf("?"),
            n = e.indexOf("#"),
            s = n < 0 ? e.length : n,
            o = t < 0 ? s : t,
            r = e.slice(0, o),
            a = {};
        g(a, i);
        var l = r.replace(/:([^\/\.-]+)(\.{3})?/g, function(e, t, n) {
            return delete a[t], i[t] == null ? e : n ? i[t] : encodeURIComponent(String(i[t]))
        }),
            c = l.indexOf("?"),
            d = l.indexOf("#"),
            u = d < 0 ? l.length : d,
            f = c < 0 ? u : c,
            h = l.slice(0, f);
        t >= 0 && (h += e.slice(t, s)), c >= 0 && (h += (t < 0 ? "?" : "&") + l.slice(c, u));
        var p = m(a);
        return p && (h += (t < 0 && c < 0 ? "?" : "&") + p), n >= 0 && (h += e.slice(n)), d >= 0 && (h += (n < 0 ? "" : "&") + l.slice(d)), h
    }, bd
}
var Ad = kd(),
    Id = Nc,
    Sd = function(m, n, l) {
        var r = 0;

        function c(e) {
            return new n(e)
        }
        c.prototype = n.prototype, c.__proto__ = n;

        function e(a) {
            return function(t, i) {
                typeof t != "string" ? (i = t, t = t.url) : i == null && (i = {});
                var e = new n(function(n, e) {
                    a(Ad(t, i.params), i, function(e) {
                        if (typeof i.type == "function")
                            if (Array.isArray(e))
                                for (var t = 0; t < e.length; t++) e[t] = new i.type(e[t]);
                            else e = new i.type(e);
                        n(e)
                    }, e)
                });
                if (i.background === !0) return e;
                var s = 0;

                function o() {
                    --s === 0 && typeof l == "function" && l()
                }
                return r(e);

                function r(t) {
                    var n = t.then;
                    return t.constructor = c, t.then = function() {
                        s++;
                        var e = n.apply(t, arguments);
                        return e.then(o, function(e) {
                            if (o(), s === 0) throw e
                        }), r(e)
                    }, t
                }
            }
        }

        function g(e, t) {
            for (var n in e.headers)
                if (Id.call(e.headers, n) && n.toLowerCase() === t) return !0;
            return !1
        }
        return {
            request: e(function(r, a, l, c) {
                var e = a.method != null ? a.method.toUpperCase() : "GET",
                    t = a.body,
                    n = (a.serialize == null || a.serialize === JSON.serialize) && !(t instanceof m.FormData || t instanceof m.URLSearchParams),
                    d = a.responseType || (typeof a.extract == "function" ? "" : "json"),
                    u = new m.XMLHttpRequest,
                    f = !1,
                    h = !1,
                    i = u,
                    s, o = u.abort;
                u.abort = function() {
                    f = !0, o.call(this)
                }, u.open(e, r, a["async"] !== !1, typeof a.user == "string" ? a.user : void 0, typeof a.password == "string" ? a.password : void 0), n && t != null && !g(a, "content-type") && u.setRequestHeader("Content-Type", "application/json; charset=utf-8"), typeof a.deserialize != "function" && !g(a, "accept") && u.setRequestHeader("Accept", "application/json, text/*"), a.withCredentials && (u.withCredentials = a.withCredentials), a.timeout && (u.timeout = a.timeout), u.responseType = d;
                for (var p in a.headers) Id.call(a.headers, p) && u.setRequestHeader(p, a.headers[p]);
                u.onreadystatechange = function(t) {
                    if (!f && t.target.readyState === 4) try {
                        var e = t.target.status >= 200 && t.target.status < 300 || t.target.status === 304 || /^file:\/\//i.test(r),
                            n = t.target.response,
                            i;
                        if (d === "json") {
                            if (!t.target.responseType && typeof a.extract != "function") try {
                                n = E(t.target.responseText)
                            } catch {
                                n = null
                            }
                        } else(!d || d === "text") && n == null && (n = t.target.responseText);
                        if (typeof a.extract == "function" ? (n = a.extract(t.target, a), e = !0) : typeof a.deserialize == "function" && (n = a.deserialize(n)), e) l(n);
                        else {
                            var s = function() {
                                try {
                                    i = t.target.responseText
                                } catch {
                                    i = n
                                }
                                var e = new Error(i);
                                e.code = t.target.status, e.response = n, c(e)
                            };
                            u.status === 0 ? setTimeout(function() {
                                h || s()
                            }) : s()
                        }
                    } catch (o) {
                        c(o)
                    }
                }, u.ontimeout = function(e) {
                    h = !0;
                    var t = new Error("Request timed out");
                    t.code = e.target.status, c(t)
                }, typeof a.config == "function" && (u = a.config(u, a, r) || u, u !== i && (s = u.abort, u.abort = function() {
                    f = !0, s.call(this)
                })), t == null ? u.send() : typeof a.serialize == "function" ? u.send(a.serialize(t)) : t instanceof m.FormData || t instanceof m.URLSearchParams ? u.send(t) : u.send(le(t))
            }),
            jsonp: e(function(e, t, n, i) {
                var s = t.callbackName || "_mithril_" + H(Math.random() * 1e16) + "_" + r++,
                    o = m.document.createElement("script");
                m[s] = function(e) {
                    delete m[s], o.parentNode.removeChild(o), n(e)
                }, o.onerror = function() {
                    delete m[s], o.parentNode.removeChild(o), i(new Error("JSONP request failed"))
                }, o.src = e + (e.indexOf("?") < 0 ? "?" : "&") + encodeURIComponent(t.callbackKey || "callback") + "=" + encodeURIComponent(s), m.document.documentElement.appendChild(o)
            })
        }
    },
    Ed = $c,
    Td = hd,
    Cd = Sd(typeof window < "u" ? window : null, Ed, Td.redraw),
    Bd, Dd;

function Pd() {
    if (Dd) return Bd;
    Dd = 1;

    function m(e) {
        try {
            return decodeURIComponent(e)
        } catch {
            return e
        }
    }
    return Bd = function(e) {
        if (e === "" || e == null) return {};
        e.charAt(0) === "?" && (e = e.slice(1));
        for (var t = e.split("&"), n = {}, i = {}, s = 0; s < t.length; s++) {
            var o = t[s].split("="),
                r = m(o[0]),
                a = o.length === 2 ? m(o[1]) : "";
            a === "true" ? a = !0 : a === "false" && (a = !1);
            var l = r.split(/\]\[?|\[/),
                c = i;
            r.indexOf("[") > -1 && l.pop();
            for (var d = 0; d < l.length; d++) {
                var u = l[d],
                    f = l[d + 1],
                    h = f == "" || !isNaN(parseInt(f, 10));
                if (u === "") {
                    var r = l.slice(0, d).join();
                    n[r] == null && (n[r] = Array.isArray(c) ? c.length : 0), u = n[r]++
                } else if (u === "__proto__") break;
                if (d === l.length - 1) c[u] = a;
                else {
                    var p = Object.getOwnPropertyDescriptor(c, u);
                    p != null && (p = p.value), p == null && (c[u] = p = h ? [] : {}), c = p
                }
            }
        }
        return i
    }, Bd
}
var Rd, Md;

function Nd() {
    if (Md) return Rd;
    Md = 1;
    var r = Pd();
    return Rd = function(e) {
        var t = e.indexOf("?"),
            n = e.indexOf("#"),
            i = n < 0 ? e.length : n,
            s = t < 0 ? i : t,
            o = e.slice(0, s).replace(/\/{2,}/g, "/");
        return o ? (o[0] !== "/" && (o = "/" + o), o.length > 1 && o[o.length - 1] === "/" && (o = o.slice(0, -1))) : o = "/", {
            path: o,
            params: t < 0 ? {} : r(e.slice(t + 1, i))
        }
    }, Rd
}
var Od, Ld;

function Fd() {
    if (Ld) return Od;
    Ld = 1;
    var t = Nd();
    return Od = function(e) {
        var i = t(e),
            s = Object.keys(i.params),
            o = [],
            r = new RegExp("^" + i.path.replace(/:([^\/.-]+)(\.{3}|\.(?!\.)|-)?|[\\^$*+.()|\[\]{}]/g, function(e, t, n) {
                return t == null ? "\\" + e : (o.push({
                    k: t,
                    r: n === "..."
                }), n === "..." ? "(.*)" : n === "." ? "([^/]+)\\." : "([^/]+)" + (n || ""))
            }) + "$");
        return function(e) {
            for (var t = 0; t < s.length; t++)
                if (i.params[s[t]] !== e.params[s[t]]) return !1;
            if (!o.length) return r.test(e.path);
            var n = r.exec(e.path);
            if (n == null) return !1;
            for (var t = 0; t < o.length; t++) e.params[o[t].k] = o[t].r ? n[t + 1] : decodeURIComponent(n[t + 1]);
            return !0
        }
    }, Od
}
var _d, Vd;

function Ud() {
    if (Vd) return _d;
    Vd = 1;
    var s = Nc,
        o = new RegExp("^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$");
    return _d = function(e, t) {
        var n = {};
        if (t != null)
            for (var i in e) s.call(e, i) && !o.test(i) && t.indexOf(i) < 0 && (n[i] = e[i]);
        else
            for (var i in e) s.call(e, i) && !o.test(i) && (n[i] = e[i]);
        return n
    }, _d
}
var jd, Hd;

function Wd() {
    if (Hd) return jd;
    Hd = 1;
    var n = Pc(),
        l = Qc,
        i = $c,
        A = kd(),
        I = Nd(),
        S = Fd(),
        E = wd(),
        T = Ud(),
        C = {};

    function B(e) {
        try {
            return decodeURIComponent(e)
        } catch {
            return e
        }
    }
    return jd = function(c, d) {
        var e = c == null ? null : typeof c.setImmediate == "function" ? c.setImmediate : c.setTimeout,
            u = i.resolve(),
            t = !1,
            o = !1,
            f = 0,
            h, p, m = C,
            g, y, x, w, s = {
                onbeforeupdate: function() {
                    return f = f ? 2 : 1, !(!f || C === m)
                },
                onremove: function() {
                    c.removeEventListener("popstate", a, !1), c.removeEventListener("hashchange", r, !1)
                },
                view: function() {
                    if (!(!f || C === m)) {
                        var e = [n(g, y.key, y)];
                        return m && (e = m.render(e[0])), e
                    }
                }
            },
            b = k.SKIP = {};

        function r() {
            t = !1;
            var e = c.location.hash;
            k.prefix[0] !== "#" && (e = c.location.search + e, k.prefix[0] !== "?" && (e = c.location.pathname + e, e[0] !== "/" && (e = "/" + e)));
            var o = e.concat().replace(/(?:%[a-f89][a-f0-9])+/gim, B).slice(k.prefix.length),
                r = I(o);
            E(r.params, c.history.state);

            function a(e) {
                console.error(e), v(p, null, {
                    replace: !0
                })
            }
            l(0);

            function l(t) {
                for (; t < h.length; t++)
                    if (h[t].check(r)) {
                        var n = h[t].component,
                            e = h[t].route,
                            i = n,
                            s = w = function(e) {
                                if (s === w) {
                                    if (e === b) return l(t + 1);
                                    g = e != null && (typeof e.view == "function" || typeof e == "function") ? e : "div", y = r.params, x = o, w = null, m = n.render ? n : null, f === 2 ? d.redraw() : (f = 2, d.redraw.sync())
                                }
                            };
                        n.view || typeof n == "function" ? (n = {}, s(i)) : n.onmatch ? u.then(function() {
                            return n.onmatch(r.params, o, e)
                        }).then(s, o === p ? null : a) : s("div");
                        return
                    } if (o === p) throw new Error("Could not resolve default route " + p + ".");
                v(p, null, {
                    replace: !0
                })
            }
        }

        function a() {
            t || (t = !0, e(r))
        }

        function v(e, t, n) {
            if (e = A(e, t), o) {
                a();
                var i = n ? n.state : null,
                    s = n ? n.title : null;
                n && n.replace ? c.history.replaceState(i, s, k.prefix + e) : c.history.pushState(i, s, k.prefix + e)
            } else c.location.href = k.prefix + e
        }

        function k(e, t, n) {
            if (!e) throw new TypeError("DOM element being rendered to does not exist.");
            if (h = Object.keys(n).map(function(e) {
                if (e[0] !== "/") throw new SyntaxError("Routes must start with a '/'.");
                if (/:([^\/\.-]+)(\.{3})?:/.test(e)) throw new SyntaxError("Route parameter names must be separated with either '/', '.', or '-'.");
                return {
                    route: e,
                    component: n[e],
                    check: S(e)
                }
            }), p = t, t != null) {
                var i = I(t);
                if (!h.some(function(e) {
                    return e.check(i)
                })) throw new ReferenceError("Default route doesn't match any known routes.")
            }
            typeof c.history.pushState == "function" ? c.addEventListener("popstate", a, !1) : k.prefix[0] === "#" && c.addEventListener("hashchange", r, !1), o = !0, d.mount(e, s), r()
        }
        return k.set = function(e, t, n) {
            w != null && (n = n || {}, n.replace = !0), w = null, v(e, t, n)
        }, k.get = function() {
            return x
        }, k.prefix = "#!", k.Link = {
            view: function(e) {
                var t = l(e.attrs.selector || "a", T(e.attrs, ["options", "params", "selector", "onclick"]), e.children),
                    n, i, s;
                return (t.attrs.disabled = Boolean(t.attrs.disabled)) ? (t.attrs.href = null, t.attrs["aria-disabled"] = "true") : (n = e.attrs.options, i = e.attrs.onclick, s = A(t.attrs.href, e.attrs.params), t.attrs.href = k.prefix + s, t.attrs.onclick = function(e) {
                    var t;
                    typeof i == "function" ? t = i.call(e.currentTarget, e) : i == null || typeof i != "object" || typeof i.handleEvent == "function" && i.handleEvent(e), t !== !1 && !e.defaultPrevented && (e.button === 0 || e.which === 0 || e.which === 1) && (!e.currentTarget.target || e.currentTarget.target === "_self") && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey && (e.preventDefault(), e.redraw = !1, k.set(s, null, n))
                }), t
            }
        }, k.param = function(e) {
            return y && e != null ? y[e] : y
        }, k
    }, jd
}
var Qd, Yd;

function zd() {
    if (Yd) return Qd;
    Yd = 1;
    var e = hd;
    return Qd = Wd()(typeof window < "u" ? window : null, e), Qd
}
var Gd = qc,
    Kd = Cd,
    Xd = hd,
    Jd = function() {
        return Gd.apply(this, arguments)
    };
Jd.m = Gd;
Jd.trust = Gd.trust;
Jd.fragment = Gd.fragment;
Jd.Fragment = "[";
Jd.mount = Xd.mount;
Jd.route = zd();
Jd.render = cd();
Jd.redraw = Xd.redraw;
Jd.request = Kd.request;
Jd.jsonp = Kd.jsonp;
Jd.parseQueryString = Pd();
Jd.buildQueryString = gd();
Jd.parsePathname = Nd();
Jd.buildPathname = kd();
Jd.vnode = Pc();
Jd.PromisePolyfill = nd();
Jd.censor = Ud();
var qd = Jd;

function $d(e, t, n, i, s) {
    this.debugLog = !1, this.baseUrl = e, this.lobbySize = n, this.devPort = t, this.lobbySpread = i, this.rawIPs = !!s, this.server = void 0, this.gameIndex = void 0, this.callback = void 0, this.errorCallback = void 0
}
$d.prototype.regionInfo = {
    0: {
        name: "Local",
        latitude: 0,
        longitude: 0
    },
    "us-east": {
        name: "Miami",
        latitude: 40.1393329,
        longitude: -75.8521818
    },
    miami: {
        name: "Miami",
        latitude: 40.1393329,
        longitude: -75.8521818
    },
    "us-west": {
        name: "Silicon Valley",
        latitude: 47.6149942,
        longitude: -122.4759879
    },
    siliconvalley: {
        name: "Silicon Valley",
        latitude: 47.6149942,
        longitude: -122.4759879
    },
    gb: {
        name: "London",
        latitude: 51.5283063,
        longitude: -.382486
    },
    london: {
        name: "London",
        latitude: 51.5283063,
        longitude: -.382486
    },
    "eu-west": {
        name: "Frankfurt",
        latitude: 50.1211273,
        longitude: 8.496137
    },
    frankfurt: {
        name: "Frankfurt",
        latitude: 50.1211273,
        longitude: 8.496137
    },
    au: {
        name: "Sydney",
        latitude: -33.8479715,
        longitude: 150.651084
    },
    sydney: {
        name: "Sydney",
        latitude: -33.8479715,
        longitude: 150.651084
    },
    saopaulo: {
        name: "São Paulo",
        latitude: 23.5558,
        longitude: 46.6396
    },
    sg: {
        name: "Singapore",
        latitude: 1.3147268,
        longitude: 103.7065876
    },
    singapore: {
        name: "Singapore",
        latitude: 1.3147268,
        longitude: 103.7065876
    }
};
$d.prototype.start = function(e, t, n, i) {
    if (this.callback = t, this.errorCallback = n, i) return t();
    const s = this.parseServerQuery(e);
    s && s.length > 0 ? (this.log("Found server in query."), this.password = s[3], this.connect(s[0], s[1], s[2])) : this.errorCallback("Unable to find server")
};
$d.prototype.parseServerQuery = function(e) {
    const t = new URLSearchParams(location.search, !0),
          n = e || t.get("server");
    if (typeof n != "string") return [];
    const [i, s] = n.split(":");
    return [i, s, t.get("password")]
};
$d.prototype.findServer = function(e, t) {
    var n = this.servers[e];
    for (let e = 0; e < n.length; e++) {
        const i = n[e];
        if (i.name === t) return i
    }
    console.warn("Could not find server in region " + e + " with serverName " + t + ".")
};
$d.prototype.seekServer = function(e, t, n) {
    n == null && (n = "random"), t == null && (t = !1);
    const i = ["random"],
          s = this.lobbySize,
          o = this.lobbySpread,
          r = this.servers[e].flatMap(function(n) {
              let i = 0;
              return n.games.map(function(e) {
                  const t = i++;
                  return {
                      region: n.region,
                      index: n.index * n.games.length + t,
                      gameIndex: t,
                      gameCount: n.games.length,
                      playerCount: e.playerCount,
                      playerCapacity: 50,
                      isPrivate: e.isPrivate
                  }
              })
          }).filter(function(e) {
              return !e.isPrivate
          }).filter(function(e) {
              return t ? e.playerCount == 0 && e.gameIndex >= e.gameCount / 2 : !0
          }).filter(function(e) {
              return n == "random" ? !0 : i[e.index % i.length].key == n
          }).sort(function(e, t) {
              return t.playerCount - e.playerCount
          }).filter(function(e) {
              return e.playerCount < s
          });
    if (t && r.reverse(), r.length == 0) {
        this.errorCallback("No open servers.");
        return
    }
    const a = j(o, r.length);
    var l = f(Math.random() * a);
    l = j(l, r.length - 1);
    const c = r[l],
          d = c.region;
    var l = f(c.index / c.gameCount);
    const u = c.index % c.gameCount;
    return this.log("Found server."), [d, l, u]
};
$d.prototype.connect = function(e, t, n) {
    if (this.connected) return;
    const i = this.findServer(e, t);
    if (i == null) {
        this.errorCallback("Failed to find server for region " + e + " and serverName " + t);
        return
    }
    if (this.log("Connecting to server", i, "with game index", n), i.playerCount >= 50) {
        this.errorCallback("Server is already full.");
        return
    }
    window.history.replaceState(document.title, document.title, this.generateHref(e, t, this.password)), this.server = i, this.gameIndex = n, this.log("Calling callback with address", this.serverAddress(i), "on port", this.serverPort(i)), this.callback(this.serverAddress(i), this.serverPort(i), n), Zd && clearInterval(Zd)
};
$d.prototype.switchServer = function(e, t) {
    this.switchingServers = !0, window.location = this.generateHref(e, t, null)
};
$d.prototype.generateHref = function(e, t, n) {
    let i = window.location.href.split("?")[0];
    return i += "?server=" + e + ":" + t, n && (i += "&password=" + encodeURIComponent(n)), i
};
$d.prototype.serverAddress = function(e) {
    return e.region == 0 ? "localhost" : e.key + "." + e.region + "." + this.baseUrl
};
$d.prototype.serverPort = function(e) {
    return e.port
};
let Zd;

function eu(e) {
    e = e.filter(e => e.playerCount !== 50);
    const t = j(...e.map(e => e.ping || 1 / 0)),
          n = e.filter(e => e.ping === t);
    return !n.length > 0 ? null : n.reduce((e, t) => e.playerCount > t.playerCount ? e : t)
}
$d.prototype.processServers = function(l) {
    return Zd && clearInterval(Zd), new Promise(e => {
        const a = {},
              t = e => {
                  const n = a[e],
                        t = n[0];
                  let i = this.serverAddress(t);
                  const s = this.serverPort(t);
                  s && (i += `:${s}`);
                  const o = `https://${i}/ping`,
                        r = (new Date).getTime();
                  return Promise.race([fetch(o).then(() => {
                      const t = (new Date).getTime() - r;
                      n.forEach(e => {
                          e.pings = e.pings ?? [], e.pings.push(t), e.pings.length > 10 && e.pings.shift(), e.ping = f(e.pings.reduce((e, t) => e + t, 0) / e.pings.length)
                      })
                  })["catch"](() => {}), new Promise(e => setTimeout(() => e(), 100))])
              },
              n = async () => {
                  await Promise.all(Object.keys(a).map(t)), window.blockRedraw || qd.redraw()
              };
        l.forEach(e => {
            a[e.region] = a[e.region] || [], a[e.region].push(e)
        });
        for (const r in a) a[r] = a[r].sort(function(e, t) {
            return t.playerCount - e.playerCount
        });
        this.servers = a;
        let i;
        const [s, o] = this.parseServerQuery();
        l.forEach(e => {
            s === e.region && o === e.name && (e.selected = !0, i = e)
        }), n().then(n).then(() => {
            if (i) return;
            let e = eu(l);
            e || (e = l[0]), e && (e.selected = !0, window.history.replaceState(document.title, document.title, this.generateHref(e.region, e.name, this.password))), window.blockRedraw || qd.redraw()
        }).then(n)["catch"](e => {})["finally"](e), Zd = setInterval(n, 5e3)
    })
};
$d.prototype.ipToHex = function(e) {
    return e.split(".").map(e => ("00" + parseInt(e).toString(16)).substr(-2)).join("").toLowerCase()
};
$d.prototype.hashIP = function(e) {
    return bc(this.ipToHex(e))
};
$d.prototype.log = function() {
    if (this.debugLog) return console.log.apply(void 0, arguments);
    if (console.verbose) return console.verbose.apply(void 0, arguments)
};
$d.prototype.stripRegion = function(e) {
    return e.startsWith("vultr:") ? e = e.slice(6) : e.startsWith("do:") && (e = e.slice(3)), e
};
const tu = function(e, t) {
    return e.concat(t)
},
      nu = function(e, t) {
          return t.map(e).reduce(tu, [])
      };
Array.prototype.flatMap = function(e) {
    return nu(e, this)
};
const iu = (e, t) => {
    const n = t.x - e.x,
          i = t.y - e.y;
    return D(n * n + i * i)
},
      su = (e, t) => {
          const n = t.x - e.x,
                i = t.y - e.y;
          return au(P(i, n))
      },
      ou = (e, t, n) => {
          const i = {
              x: 0,
              y: 0
          };
          return n = ru(n), i.x = e.x - t * U(n), i.y = e.y - t * V(n), i
      },
      ru = e => e * (W / 180),
      au = e => e * (180 / W),
      lu = e => isNaN(e.buttons) ? e.pressure !== 0 : e.buttons !== 0,
      cu = new Map,
      du = e => {
          cu.has(e) && clearTimeout(cu.get(e)), cu.set(e, setTimeout(e, 100))
      },
      uu = (t, e, n) => {
          const i = e.split(/[ ,]+/g);
          let s;
          for (let e = 0; e < i.length; e += 1) s = i[e], t.addEventListener ? t.addEventListener(s, n, !1) : t.attachEvent && t.attachEvent(s, n)
      },
      fu = (t, e, n) => {
          const i = e.split(/[ ,]+/g);
          let s;
          for (let e = 0; e < i.length; e += 1) s = i[e], t.removeEventListener ? t.removeEventListener(s, n) : t.detachEvent && t.detachEvent(s, n)
      },
      hu = e => (e.preventDefault(), e.type.match(/^touch/) ? e.changedTouches : e),
      pu = () => {
          const e = window.pageXOffset !== void 0 ? window.pageXOffset : (document.documentElement || document.body.parentNode || document.body).scrollLeft,
                t = window.pageYOffset !== void 0 ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
          return {
              x: e,
              y: t
          }
      },
      mu = (e, t) => {
          t.top || t.right || t.bottom || t.left ? (e.style.top = t.top, e.style.right = t.right, e.style.bottom = t.bottom, e.style.left = t.left) : (e.style.left = t.x + "px", e.style.top = t.y + "px")
      },
      gu = (e, i, s) => {
          const t = xu(e);
          for (let e in t)
              if (t.hasOwnProperty(e))
                  if (typeof i == "string") t[e] = i + " " + s;
                  else {
                      let n = "";
                      for (let e = 0, t = i.length; e < t; e += 1) n += i[e] + " " + s + ", ";
                      t[e] = n.slice(0, -2)
                  } return t
      },
      yu = (e, t) => {
          const n = xu(e);
          for (let e in n) n.hasOwnProperty(e) && (n[e] = t);
          return n
      },
      xu = t => {
          const n = {};
          return n[t] = "", ["webkit", "Moz", "o"].forEach(function(e) {
              n[e + t.charAt(0).toUpperCase() + t.slice(1)] = ""
          }), n
      },
      wu = (t, n) => {
          for (let e in n) n.hasOwnProperty(e) && (t[e] = n[e]);
          return t
      },
      bu = (t, n) => {
          const i = {};
          for (let e in t) t.hasOwnProperty(e) && n.hasOwnProperty(e) ? i[e] = n[e] : t.hasOwnProperty(e) && (i[e] = t[e]);
          return i
      },
      vu = (n, i) => {
          if (n.length)
              for (let e = 0, t = n.length; e < t; e += 1) i(n[e]);
          else i(n)
      },
      ku = (e, t, n) => ({
          x: j(oe(e.x, t.x - n), t.x + n),
          y: j(oe(e.y, t.y - n), t.y + n)
      });
var Au = "ontouchstart" in window,
    Iu = !!window.PointerEvent,
    Su = !!window.MSPointerEvent,
    Eu = {
        touch: {
            start: "touchstart",
            move: "touchmove",
            end: "touchend, touchcancel"
        },
        mouse: {
            start: "mousedown",
            move: "mousemove",
            end: "mouseup"
        },
        pointer: {
            start: "pointerdown",
            move: "pointermove",
            end: "pointerup, pointercancel"
        },
        MSPointer: {
            start: "MSPointerDown",
            move: "MSPointerMove",
            end: "MSPointerUp"
        }
    },
    Tu, Cu = {};
Iu ? Tu = Eu.pointer : Su ? Tu = Eu.MSPointer : Au ? (Tu = Eu.touch, Cu = Eu.mouse) : Tu = Eu.mouse;

function Bu() {}
Bu.prototype.on = function(e, t) {
    var n = this,
        i = e.split(/[ ,]+/g),
        s;
    n._handlers_ = n._handlers_ || {};
    for (var o = 0; o < i.length; o += 1) s = i[o], n._handlers_[s] = n._handlers_[s] || [], n._handlers_[s].push(t);
    return n
};
Bu.prototype.off = function(e, t) {
    var n = this;
    return n._handlers_ = n._handlers_ || {}, e === void 0 ? n._handlers_ = {} : t === void 0 ? n._handlers_[e] = null : n._handlers_[e] && n._handlers_[e].indexOf(t) >= 0 && n._handlers_[e].splice(n._handlers_[e].indexOf(t), 1), n
};
Bu.prototype.trigger = function(e, t) {
    var n = this,
        i = e.split(/[ ,]+/g),
        s;
    n._handlers_ = n._handlers_ || {};
    for (var o = 0; o < i.length; o += 1) s = i[o], n._handlers_[s] && n._handlers_[s].length && n._handlers_[s].forEach(function(e) {
        e.call(n, {
            type: s,
            target: n
        }, t)
    })
};
Bu.prototype.config = function(e) {
    var t = this;
    t.options = t.defaults || {}, e && (t.options = bu(t.options, e))
};
Bu.prototype.bindEvt = function(e, t) {
    var n = this;
    return n._domHandlers_ = n._domHandlers_ || {}, n._domHandlers_[t] = function() {
        typeof n["on" + t] == "function" ? n["on" + t].apply(n, arguments) : console.warn('[WARNING] : Missing "on' + t + '" handler.')
    }, uu(e, Tu[t], n._domHandlers_[t]), Cu[t] && uu(e, Cu[t], n._domHandlers_[t]), n
};
Bu.prototype.unbindEvt = function(e, t) {
    var n = this;
    return n._domHandlers_ = n._domHandlers_ || {}, fu(e, Tu[t], n._domHandlers_[t]), Cu[t] && fu(e, Cu[t], n._domHandlers_[t]), delete n._domHandlers_[t], this
};

function Du(e, t) {
    return this.identifier = t.identifier, this.position = t.position, this.frontPosition = t.frontPosition, this.collection = e, this.defaults = {
        size: 100,
        threshold: .1,
        color: "white",
        fadeTime: 250,
        dataOnly: !1,
        restJoystick: !0,
        restOpacity: .5,
        mode: "dynamic",
        zone: document.body,
        lockX: !1,
        lockY: !1,
        shape: "circle"
    }, this.config(t), this.options.mode === "dynamic" && (this.options.restOpacity = 0), this.id = Du.id, Du.id += 1, this.buildEl().stylize(), this.instance = {
        el: this.ui.el,
        on: this.on.bind(this),
        off: this.off.bind(this),
        show: this.show.bind(this),
        hide: this.hide.bind(this),
        add: this.addToDom.bind(this),
        remove: this.removeFromDom.bind(this),
        destroy: this.destroy.bind(this),
        setPosition: this.setPosition.bind(this),
        resetDirection: this.resetDirection.bind(this),
        computeDirection: this.computeDirection.bind(this),
        trigger: this.trigger.bind(this),
        position: this.position,
        frontPosition: this.frontPosition,
        ui: this.ui,
        identifier: this.identifier,
        id: this.id,
        options: this.options
    }, this.instance
}
Du.prototype = new Bu;
Du.constructor = Du;
Du.id = 0;
Du.prototype.buildEl = function(e) {
    return this.ui = {}, this.options.dataOnly ? this : (this.ui.el = document.createElement("div"), this.ui.back = document.createElement("div"), this.ui.front = document.createElement("div"), this.ui.el.className = "nipple collection_" + this.collection.id, this.ui.back.className = "back", this.ui.front.className = "front", this.ui.el.setAttribute("id", "nipple_" + this.collection.id + "_" + this.id), this.ui.el.appendChild(this.ui.back), this.ui.el.appendChild(this.ui.front), this)
};
Du.prototype.stylize = function() {
    if (this.options.dataOnly) return this;
    var e = this.options.fadeTime + "ms",
        t = yu("borderRadius", "50%"),
        n = gu("transition", "opacity", e),
        i = {};
    return i.el = {
        position: "absolute",
        opacity: this.options.restOpacity,
        display: "block",
        zIndex: 999
    }, i.back = {
        position: "absolute",
        display: "block",
        width: this.options.size + "px",
        height: this.options.size + "px",
        marginLeft: -this.options.size / 2 + "px",
        marginTop: -this.options.size / 2 + "px",
        background: this.options.color,
        opacity: ".5"
    }, i.front = {
        width: this.options.size / 2 + "px",
        height: this.options.size / 2 + "px",
        position: "absolute",
        display: "block",
        marginLeft: -this.options.size / 4 + "px",
        marginTop: -this.options.size / 4 + "px",
        background: this.options.color,
        opacity: ".5",
        transform: "translate(0px, 0px)"
    }, wu(i.el, n), this.options.shape === "circle" && wu(i.back, t), wu(i.front, t), this.applyStyles(i), this
};
Du.prototype.applyStyles = function(e) {
    for (var t in this.ui)
        if (this.ui.hasOwnProperty(t))
            for (var n in e[t]) this.ui[t].style[n] = e[t][n];
    return this
};
Du.prototype.addToDom = function() {
    return this.options.dataOnly || document.body.contains(this.ui.el) ? this : (this.options.zone.appendChild(this.ui.el), this)
};
Du.prototype.removeFromDom = function() {
    return this.options.dataOnly || !document.body.contains(this.ui.el) ? this : (this.options.zone.removeChild(this.ui.el), this)
};
Du.prototype.destroy = function() {
    clearTimeout(this.removeTimeout), clearTimeout(this.showTimeout), clearTimeout(this.restTimeout), this.trigger("destroyed", this.instance), this.removeFromDom(), this.off()
};
Du.prototype.show = function(e) {
    var t = this;
    return t.options.dataOnly || (clearTimeout(t.removeTimeout), clearTimeout(t.showTimeout), clearTimeout(t.restTimeout), t.addToDom(), t.restCallback(), setTimeout(function() {
        t.ui.el.style.opacity = 1
    }, 0), t.showTimeout = setTimeout(function() {
        t.trigger("shown", t.instance), typeof e == "function" && e.call(this)
    }, t.options.fadeTime)), t
};
Du.prototype.hide = function(t) {
    var n = this;
    if (n.options.dataOnly) return n;
    if (n.ui.el.style.opacity = n.options.restOpacity, clearTimeout(n.removeTimeout), clearTimeout(n.showTimeout), clearTimeout(n.restTimeout), n.removeTimeout = setTimeout(function() {
        var e = n.options.mode === "dynamic" ? "none" : "block";
        n.ui.el.style.display = e, typeof t == "function" && t.call(n), n.trigger("hidden", n.instance)
    }, n.options.fadeTime), n.options.restJoystick) {
        const e = n.options.restJoystick,
              i = {};
        i.x = e === !0 || e.x !== !1 ? 0 : n.instance.frontPosition.x, i.y = e === !0 || e.y !== !1 ? 0 : n.instance.frontPosition.y, n.setPosition(t, i)
    }
    return n
};
Du.prototype.setPosition = function(e, t) {
    var n = this;
    n.frontPosition = {
        x: t.x,
        y: t.y
    };
    var i = n.options.fadeTime + "ms",
        s = {};
    s.front = gu("transition", ["transform"], i);
    var o = {
        front: {}
    };
    o.front = {
        transform: "translate(" + n.frontPosition.x + "px," + n.frontPosition.y + "px)"
    }, n.applyStyles(s), n.applyStyles(o), n.restTimeout = setTimeout(function() {
        typeof e == "function" && e.call(n), n.restCallback()
    }, n.options.fadeTime)
};
Du.prototype.restCallback = function() {
    var e = this,
        t = {};
    t.front = gu("transition", "none", ""), e.applyStyles(t), e.trigger("rested", e.instance)
};
Du.prototype.resetDirection = function() {
    this.direction = {
        x: !1,
        y: !1,
        angle: !1
    }
};
Du.prototype.computeDirection = function(e) {
    var t = e.angle.radian,
        n = W / 4,
        i = W / 2,
        s, o, r;
    if (t > n && t < n * 3 && !e.lockX ? s = "up" : t > -n && t <= n && !e.lockY ? s = "left" : t > -n * 3 && t <= -n && !e.lockX ? s = "down" : e.lockY || (s = "right"), e.lockY || (t > -i && t < i ? o = "left" : o = "right"), e.lockX || (t > 0 ? r = "up" : r = "down"), e.force > this.options.threshold) {
        var a = {},
            l;
        for (l in this.direction) this.direction.hasOwnProperty(l) && (a[l] = this.direction[l]);
        var c = {};
        this.direction = {
            x: o,
            y: r,
            angle: s
        }, e.direction = this.direction;
        for (l in a) a[l] === this.direction[l] && (c[l] = !0);
        if (c.x && c.y && c.angle) return e;
        (!c.x || !c.y) && this.trigger("plain", e), c.x || this.trigger("plain:" + o, e), c.y || this.trigger("plain:" + r, e), c.angle || this.trigger("dir dir:" + s, e)
    } else this.resetDirection();
    return e
};

function Pu(e, t) {
    var n = this;
    n.nipples = [], n.idles = [], n.actives = [], n.ids = [], n.pressureIntervals = {}, n.manager = e, n.id = Pu.id, Pu.id += 1, n.defaults = {
        zone: document.body,
        multitouch: !1,
        maxNumberOfNipples: 10,
        mode: "dynamic",
        position: {
            top: 0,
            left: 0
        },
        catchDistance: 200,
        size: 100,
        threshold: .1,
        color: "white",
        fadeTime: 250,
        dataOnly: !1,
        restJoystick: !0,
        restOpacity: .5,
        lockX: !1,
        lockY: !1,
        shape: "circle",
        dynamicPage: !1,
        follow: !1
    }, n.config(t), (n.options.mode === "static" || n.options.mode === "semi") && (n.options.multitouch = !1), n.options.multitouch || (n.options.maxNumberOfNipples = 1);
    const i = getComputedStyle(n.options.zone.parentElement);
    return i && i.display === "flex" && (n.parentIsFlex = !0), n.updateBox(), n.prepareNipples(), n.bindings(), n.begin(), n.nipples
}
Pu.prototype = new Bu;
Pu.constructor = Pu;
Pu.id = 0;
Pu.prototype.prepareNipples = function() {
    var e = this,
        i = e.nipples;
    i.on = e.on.bind(e), i.off = e.off.bind(e), i.options = e.options, i.destroy = e.destroy.bind(e), i.ids = e.ids, i.id = e.id, i.processOnMove = e.processOnMove.bind(e), i.processOnEnd = e.processOnEnd.bind(e), i.get = function(e) {
        if (e === void 0) return i[0];
        for (var t = 0, n = i.length; t < n; t += 1)
            if (i[t].identifier === e) return i[t];
        return !1
    }
};
Pu.prototype.bindings = function() {
    var e = this;
    e.bindEvt(e.options.zone, "start"), e.options.zone.style.touchAction = "none", e.options.zone.style.msTouchAction = "none"
};
Pu.prototype.begin = function() {
    var e = this,
        t = e.options;
    if (t.mode === "static") {
        var n = e.createNipple(t.position, e.manager.getIdentifier());
        n.add(), e.idles.push(n)
    }
};
Pu.prototype.createNipple = function(e, t) {
    var n = this,
        i = n.manager.scroll,
        s = {},
        o = n.options,
        r = {
            x: n.parentIsFlex ? i.x : i.x + n.box.left,
            y: n.parentIsFlex ? i.y : i.y + n.box.top
        };
    if (e.x && e.y) s = {
        x: e.x - r.x,
        y: e.y - r.y
    };
    else if (e.top || e.right || e.bottom || e.left) {
        var a = document.createElement("DIV");
        a.style.display = "hidden", a.style.top = e.top, a.style.right = e.right, a.style.bottom = e.bottom, a.style.left = e.left, a.style.position = "absolute", o.zone.appendChild(a);
        var l = a.getBoundingClientRect();
        o.zone.removeChild(a), s = e, e = {
            x: l.left + i.x,
            y: l.top + i.y
        }
    }
    var c = new Du(n, {
        color: o.color,
        size: o.size,
        threshold: o.threshold,
        fadeTime: o.fadeTime,
        dataOnly: o.dataOnly,
        restJoystick: o.restJoystick,
        restOpacity: o.restOpacity,
        mode: o.mode,
        identifier: t,
        position: e,
        zone: o.zone,
        frontPosition: {
            x: 0,
            y: 0
        },
        shape: o.shape
    });
    return o.dataOnly || (mu(c.ui.el, s), mu(c.ui.front, c.frontPosition)), n.nipples.push(c), n.trigger("added " + c.identifier + ":added", c), n.manager.trigger("added " + c.identifier + ":added", c), n.bindNipple(c), c
};
Pu.prototype.updateBox = function() {
    var e = this;
    e.box = e.options.zone.getBoundingClientRect()
};
Pu.prototype.bindNipple = function(e) {
    var n = this,
        i, t = function(e, t) {
            i = e.type + " " + t.id + ":" + e.type, n.trigger(i, t)
        };
    e.on("destroyed", n.onDestroyed.bind(n)), e.on("shown hidden rested dir plain", t), e.on("dir:up dir:right dir:down dir:left", t), e.on("plain:up plain:right plain:down plain:left", t)
};
Pu.prototype.pressureFn = function(t, n, e) {
    var i = this,
        s = 0;
    clearInterval(i.pressureIntervals[e]), i.pressureIntervals[e] = setInterval(function() {
        var e = t.force || t.pressure || t.webkitForce || 0;
        e !== s && (n.trigger("pressure", e), i.trigger("pressure " + n.identifier + ":pressure", e), s = e)
    }.bind(i), 100)
};
Pu.prototype.onstart = function(n) {
    var i = this,
        t = i.options,
        s = n;
    n = hu(n), i.updateBox();
    var e = function(e) {
        i.actives.length < t.maxNumberOfNipples ? i.processOnStart(e) : s.type.match(/^touch/) && (Object.keys(i.manager.ids).forEach(function(t) {
            if (Object.values(s.touches).findIndex(function(e) {
                return e.identifier === t
            }) < 0) {
                var e = [n[0]];
                e.identifier = t, i.processOnEnd(e)
            }
        }), i.actives.length < t.maxNumberOfNipples && i.processOnStart(e))
    };
    return vu(n, e), i.manager.bindDocument(), !1
};
Pu.prototype.processOnStart = function(t) {
    var n = this,
        e = n.options,
        i, s = n.manager.getIdentifier(t),
        o = t.force || t.pressure || t.webkitForce || 0,
        r = {
            x: t.pageX,
            y: t.pageY
        },
        a = n.getOrCreate(s, r);
    a.identifier !== s && n.manager.removeIdentifier(a.identifier), a.identifier = s;
    var l = function(e) {
        e.trigger("start", e), n.trigger("start " + e.id + ":start", e), e.show(), o > 0 && n.pressureFn(t, e, e.identifier), n.processOnMove(t)
    };
    if ((i = n.idles.indexOf(a)) >= 0 && n.idles.splice(i, 1), n.actives.push(a), n.ids.push(a.identifier), e.mode !== "semi") l(a);
    else {
        var c = iu(r, a.position);
        if (c <= e.catchDistance) l(a);
        else {
            a.destroy(), n.processOnStart(t);
            return
        }
    }
    return a
};
Pu.prototype.getOrCreate = function(e, t) {
    var n = this,
        i = n.options,
        s;
    return /(semi|static)/.test(i.mode) ? (s = n.idles[0], s ? (n.idles.splice(0, 1), s) : i.mode === "semi" ? n.createNipple(t, e) : (console.warn("Coudln't find the needed nipple."), !1)) : (s = n.createNipple(t, e), s)
};
Pu.prototype.processOnMove = function(e) {
    var n = this,
        t = n.options,
        i = n.manager.getIdentifier(e),
        s = n.nipples.get(i),
        o = n.manager.scroll;
    if (!lu(e)) {
        this.processOnEnd(e);
        return
    }
    if (!s) {
        console.error("Found zombie joystick with ID " + i), n.manager.removeIdentifier(i);
        return
    }
    if (t.dynamicPage) {
        var r = s.el.getBoundingClientRect();
        s.position = {
            x: o.x + r.left,
            y: o.y + r.top
        }
    }
    s.identifier = i;
    var a = s.options.size / 2,
        l = {
            x: e.pageX,
            y: e.pageY
        };
    t.lockX && (l.y = s.position.y), t.lockY && (l.x = s.position.x);
    var c = iu(l, s.position),
        d = su(l, s.position),
        u = ru(d),
        f = c / a,
        h = {
            distance: c,
            position: l
        },
        p, m;
    if (s.options.shape === "circle" ? (p = j(c, a), m = ou(s.position, p, d)) : (m = ku(l, s.position, a), p = iu(m, s.position)), t.follow) {
        if (c > a) {
            let e = l.x - m.x,
                t = l.y - m.y;
            s.position.x += e, s.position.y += t, s.el.style.top = s.position.y - (n.box.top + o.y) + "px", s.el.style.left = s.position.x - (n.box.left + o.x) + "px", c = iu(l, s.position)
        }
    } else l = m, c = p;
    var g = l.x - s.position.x,
        y = l.y - s.position.y;
    s.frontPosition = {
        x: g,
        y: y
    }, t.dataOnly || (s.ui.front.style.transform = "translate(" + g + "px," + y + "px)");
    var x = {
        identifier: s.identifier,
        position: l,
        force: f,
        pressure: e.force || e.pressure || e.webkitForce || 0,
        distance: c,
        angle: {
            radian: u,
            degree: d
        },
        vector: {
            x: g / a,
            y: -y / a
        },
        raw: h,
        instance: s,
        lockX: t.lockX,
        lockY: t.lockY
    };
    x = s.computeDirection(x), x.angle = {
        radian: ru(180 - d),
        degree: 180 - d
    }, s.trigger("move", x), n.trigger("move " + s.id + ":move", x)
};
Pu.prototype.processOnEnd = function(e) {
    var t = this,
        n = t.options,
        i = t.manager.getIdentifier(e),
        s = t.nipples.get(i),
        o = t.manager.removeIdentifier(s.identifier);
    s && (n.dataOnly || s.hide(function() {
        n.mode === "dynamic" && (s.trigger("removed", s), t.trigger("removed " + s.id + ":removed", s), t.manager.trigger("removed " + s.id + ":removed", s), s.destroy())
    }), clearInterval(t.pressureIntervals[s.identifier]), s.resetDirection(), s.trigger("end", s), t.trigger("end " + s.id + ":end", s), t.ids.indexOf(s.identifier) >= 0 && t.ids.splice(t.ids.indexOf(s.identifier), 1), t.actives.indexOf(s) >= 0 && t.actives.splice(t.actives.indexOf(s), 1), /(semi|static)/.test(n.mode) ? t.idles.push(s) : t.nipples.indexOf(s) >= 0 && t.nipples.splice(t.nipples.indexOf(s), 1), t.manager.unbindDocument(), /(semi|static)/.test(n.mode) && (t.manager.ids[o.id] = o.identifier))
};
Pu.prototype.onDestroyed = function(e, t) {
    var n = this;
    n.nipples.indexOf(t) >= 0 && n.nipples.splice(n.nipples.indexOf(t), 1), n.actives.indexOf(t) >= 0 && n.actives.splice(n.actives.indexOf(t), 1), n.idles.indexOf(t) >= 0 && n.idles.splice(n.idles.indexOf(t), 1), n.ids.indexOf(t.identifier) >= 0 && n.ids.splice(n.ids.indexOf(t.identifier), 1), n.manager.removeIdentifier(t.identifier), n.manager.unbindDocument()
};
Pu.prototype.destroy = function() {
    var e = this;
    e.unbindEvt(e.options.zone, "start"), e.nipples.forEach(function(e) {
        e.destroy()
    });
    for (var t in e.pressureIntervals) e.pressureIntervals.hasOwnProperty(t) && clearInterval(e.pressureIntervals[t]);
    e.trigger("destroyed", e.nipples), e.manager.unbindDocument(), e.off()
};

function Ru(e) {
    var n = this;
    n.ids = {}, n.index = 0, n.collections = [], n.scroll = pu(), n.config(e), n.prepareCollections();
    var t = function() {
        var t;
        n.collections.forEach(function(e) {
            e.forEach(function(e) {
                t = e.el.getBoundingClientRect(), e.position = {
                    x: n.scroll.x + t.left,
                    y: n.scroll.y + t.top
                }
            })
        })
    };
    uu(window, "resize", function() {
        du(t)
    });
    var i = function() {
        n.scroll = pu()
    };
    return uu(window, "scroll", function() {
        du(i)
    }), n.collections
}
Ru.prototype = new Bu;
Ru.constructor = Ru;
Ru.prototype.prepareCollections = function() {
    var e = this;
    e.collections.create = e.create.bind(e), e.collections.on = e.on.bind(e), e.collections.off = e.off.bind(e), e.collections.destroy = e.destroy.bind(e), e.collections.get = function(t) {
        var n;
        return e.collections.every(function(e) {
            return n = e.get(t), !n
        }), n
    }
};
Ru.prototype.create = function(e) {
    return this.createCollection(e)
};
Ru.prototype.createCollection = function(e) {
    var t = this,
        n = new Pu(t, e);
    return t.bindCollection(n), t.collections.push(n), n
};
Ru.prototype.bindCollection = function(e) {
    var n = this,
        i, t = function(e, t) {
            i = e.type + " " + t.id + ":" + e.type, n.trigger(i, t)
        };
    e.on("destroyed", n.onDestroyed.bind(n)), e.on("shown hidden rested dir plain", t), e.on("dir:up dir:right dir:down dir:left", t), e.on("plain:up plain:right plain:down plain:left", t)
};
Ru.prototype.bindDocument = function() {
    var e = this;
    e.binded || (e.bindEvt(document, "move").bindEvt(document, "end"), e.binded = !0)
};
Ru.prototype.unbindDocument = function(e) {
    var t = this;
    (!Object.keys(t.ids).length || e === !0) && (t.unbindEvt(document, "move").unbindEvt(document, "end"), t.binded = !1)
};
Ru.prototype.getIdentifier = function(e) {
    var t;
    return e ? (t = e.identifier === void 0 ? e.pointerId : e.identifier, t === void 0 && (t = this.latest || 0)) : t = this.index, this.ids[t] === void 0 && (this.ids[t] = this.index, this.index += 1), this.latest = t, this.ids[t]
};
Ru.prototype.removeIdentifier = function(e) {
    var t = {};
    for (var n in this.ids)
        if (this.ids[n] === e) {
            t.id = n, t.identifier = this.ids[n], delete this.ids[n];
            break
        } return t
};
Ru.prototype.onmove = function(e) {
    var t = this;
    return t.onAny("move", e), !1
};
Ru.prototype.onend = function(e) {
    var t = this;
    return t.onAny("end", e), !1
};
Ru.prototype.oncancel = function(e) {
    var t = this;
    return t.onAny("end", e), !1
};
Ru.prototype.onAny = function(e, t) {
    var n = this,
        i, s = "processOn" + e.charAt(0).toUpperCase() + e.slice(1);
    t = hu(t);
    var o = function(e, t, n) {
        n.ids.indexOf(t) >= 0 && (n[s](e), e._found_ = !0)
    },
        r = function(e) {
            i = n.getIdentifier(e), vu(n.collections, o.bind(null, e, i)), e._found_ || n.removeIdentifier(i)
        };
    return vu(t, r), !1
};
Ru.prototype.destroy = function() {
    var e = this;
    e.unbindDocument(!0), e.ids = {}, e.index = 0, e.collections.forEach(function(e) {
        e.destroy()
    }), e.off()
};
Ru.prototype.onDestroyed = function(e, t) {
    var n = this;
    if (n.collections.indexOf(t) < 0) return !1;
    n.collections.splice(n.collections.indexOf(t), 1)
};
const Mu = new Ru,
      Nu = {
          create: function(e) {
              return Mu.create(e)
          },
          factory: Mu
      };
let Ou = !1;
const Lu = e => {
    if (Ou) return;
    Ou = !0;
    const t = document.getElementById("touch-controls-left"),
          n = Nu.create({
              zone: t
          });
    n.on("start", e.onStartMoving), n.on("end", e.onStopMoving), n.on("move", e.onRotateMoving);
    const i = document.getElementById("touch-controls-right"),
          s = Nu.create({
              zone: i
          });
    s.on("start", e.onStartAttacking), s.on("end", e.onStopAttacking), s.on("move", e.onRotateAttacking), t.style.display = "block", i.style.display = "block"
},
      Fu = {
          enable: Lu
      };
const Oe = k1;
(function(e, t) {
    const n = k1,
          i = e();
    while (!![]) {
        try {
            const o = parseInt(n(905)) / (-4820 * 2 + -9288 + 18929) * (-parseInt(n(1369)) / (-1294 * -2 + 4028 + -1 * 6614)) + -parseInt(n(1078)) / (7236 + 1646 * -1 + -5587) * (parseInt(n(1332)) / (1 * -2737 + 48 * 112 + -2635)) + parseInt(n(1383)) / (-4203 + 5 * -1747 + 12943) + parseInt(n(1310)) / (6189 + -4308 + 15 * -125) * (parseInt(n(1231)) / (-279 * 8 + 887 * -1 + 3126)) + parseInt(n(376)) / (-1 * -4521 + -338 * -29 + -409 * 35) * (-parseInt(n(692)) / (1 * -991 + 1114 + 1 * -114)) + parseInt(n(478)) / (3092 * 1 + 2693 * 1 + -5775) * (parseInt(n(800)) / (-1830 + -5986 + -7827 * -1)) + -parseInt(n(990)) / (-1201 + 8690 + 1 * -7477) * (-parseInt(n(1102)) / (-1339 * -1 + -6201 + 65 * 75));
            if (o === t) break;
            else i["push"](i["shift"]())
        } catch (s) {
            i["push"](i["shift"]())
        }
    }
})(v1, -3 * 209743 + 909303 * -1 + 2142188 * 1);
var _u = Object[Oe(1519)],
    Vu = (e, t, n) => t in e ? _u(e, t, {
        enumerable: !(-3613 + -6601 + 10214),
        configurable: !(-48 * 55 + -2141 * -2 + -2 * 821),
        writable: !(4967 + 5628 + -13 * 815),
        value: n
    }) : e[t] = n,
    Uu = (e, t, n) => Vu(e, typeof t != "symbol" ? t + "" : t, n);
const ju = {};
ju[Oe(1033)] = "text/javascript;charset=utf-8";
const Hu = Oe(624),
      Wu = e => Uint8Array["from"](atob(e), e => e[Oe(1093)](1 * -8293 + 6795 + -107 * -14)),
      Qu = typeof self < "u" && self[Oe(883)] && new Blob([Wu(Hu)], ju);

function Yu(e) {
    const t = Oe,
          n = {};
    n[t(1584)] = function(e, t) {
        return e == t
    }, n[t(1297)] = "error", n["TpOZL"] = t(1348);
    const i = n;
    let s;
    try {
        if (s = Qu && (self[t(729)] || self[t(1162)])["createObjectURL"](Qu), !s) throw "";
        const o = new Worker(s, {
            name: i["FuupB"](e, null) ? void(-4965 + 1312 + 3653 * 1) : e[t(726)]
        });
        return o[t(742)](i[t(1297)], () => {
            const e = t;
            (self[e(729)] || self[e(1162)])["revokeObjectURL"](s)
        }), o
    } catch {
        return new Worker(i[t(1295)] + Hu, {
            name: i["FuupB"](e, null) ? void(412 * 8 + 357 * -4 + -1868) : e[t(726)]
        })
    } finally {
        s && (self["URL"] || self["webkitURL"])[t(894)](s)
    }
}

function zu() {}

function Gu(e, t) {
    for (const n in t) e[n] = t[n];
    return e
}

function Ku(e) {
    const t = Oe,
          n = {
              QUXHX: function(e) {
                  return e()
              }
          };
    return n[t(345)](e)
}

function Xu() {
    const e = Oe;
    return Object[e(1145)](null)
}

function Ju(e) {
    const t = Oe;
    e[t(699)](Ku)
}

function qu(e) {
    const t = Oe;
    return typeof e == t(719)
}

function $u(e, t) {
    const n = Oe,
          i = {};
    i["MNRJn"] = function(e, t) {
        return e == t
    }, i[n(1241)] = function(e, t) {
        return e !== t
    }, i[n(1525)] = n(1032);
    const s = i;
    return e != e ? s["MNRJn"](t, t) : s[n(1241)](e, t) || e && s[n(300)](typeof e, s[n(1525)]) || s[n(300)](typeof e, n(719))
}

function Zu(e) {
    const t = Oe,
          n = {};
    n[t(1077)] = function(e, t) {
        return e === t
    };
    const i = n;
    return i[t(1077)](Object[t(874)](e)[t(1296)], -6823 * -1 + 160 * 7 + -7943)
}

function ef(e, t, n, i) {
    if (e) {
        const s = tf(e, t, n, i);
        return e[-4248 + -1931 * 1 + 167 * 37](s)
    }
}

function tf(e, t, n, i) {
    const s = Oe,
          o = {
              QQXvy: function(e, t, n) {
                  return e(t, n)
              }
          };
    return e[-2 * -1433 + -3028 + 1 * 163] && i ? o[s(1447)](Gu, n[s(1200)][s(527)](), e[97 * -82 + -122 * 32 + 11859](i(t))) : n["ctx"]
}

function nf(e, t, n, i) {
    const s = Oe,
          o = {
              PznZu: function(e) {
                  return e()
              },
              ftXFH: function(e, t, n) {
                  return e(t, n)
              },
              pNJEv: function(e) {
                  return e()
              },
              gSIce: "XYARv",
              UkZVn: s(1424),
              PJBCd: function(e, t) {
                  return e(t)
              },
              SEZCh: function(e, t) {
                  return e === t
              },
              ZdCYN: function(e, t) {
                  return e === t
              },
              mDwzk: "PLugu",
              WrfrM: function(e, t) {
                  return e | t
              },
              UTSdi: function(e, t) {
                  return e | t
              }
          };
    if (e[-6152 + -1342 * -4 + 786 * 1] && i) {
        if (o[s(1372)] !== o[s(1514)]) {
            const r = e[345 + -279 * 25 + 6632](o["PJBCd"](i, n));
            if (o[s(1061)](t[s(494)], void(4359 + 5445 + -9804))) return r;
            if (typeof r == s(1032)) {
                if (o["ZdCYN"](o[s(982)], o["mDwzk"])) {
                    const a = [],
                          l = Math[s(1250)](t[s(494)][s(1296)], r[s(1296)]);
                    for (let e = 9952 + -9947 + -5; e < l; e += 1484 + 38 * -215 + 6687) a[e] = o[s(558)](t["dirty"][e], r[e]);
                    return a
                } else {
                    const c = {};
                    c[s(1037)] = _0x464a8c, this[s(522)](c), o[s(1193)](_0x26adc7)
                }
            }
            return o[s(717)](t[s(494)], r)
        } else {
            const d = {
                AZDxl: function(e, t, n) {
                    const i = s;
                    return o[i(1415)](e, t, n)
                }
            };
            o[s(1415)](_0x278d35, 9296 + 3001 + -2 * 6145, _0x294e17 = _0x5e49ca[s(1050)]), _0x442b88(s(1559)), o[s(749)](_0x48d0b2)["then"](() => {
                const e = s,
                      t = {};
                t[e(341)] = _0x491f2b, d["AZDxl"](_0x50b55f, e(1559), t)
            })
        }
    }
    return t[s(494)]
}

function sf(e, t, n, i, s, o) {
    const r = Oe,
          a = {
              LregL: function(e, t) {
                  return e === t
              },
              RZbTw: function(e) {
                  return e()
              },
              IUOxB: function(e, t) {
                  return e !== t
              },
              SKpsn: "tlAbq",
              yhREA: "nheon",
              aSmQV: function(e, t, n, i, s) {
                  return e(t, n, i, s)
              }
          };
    if (s) {
        if (a[r(279)](a[r(510)], a[r(752)])) {
            const l = a[r(1129)](tf, t, n, i, o);
            e["p"](l, s)
        } else a["LregL"](_0x6592f0, _0x3123d2[r(821)]) && a[r(804)](_0x2bc7ee)
    }
}

function of(e) {
    const t = Oe,
          n = {};
    n[t(324)] = function(e, t) {
        return e > t
    };
    const i = n;
    if (i[t(324)](e[t(1200)]["length"], 2192 + -1 * 7341 + 5181)) {
        const s = [],
              o = e["ctx"]["length"] / (1 * 3556 + 1669 + -1731 * 3);
        for (let e = -8359 + 8558 + -199; e < o; e++) s[e] = -(8402 + 2965 + -1 * 11366);
        return s
    }
    return -(-2138 + -7197 + 9336)
}

function rf(e, t) {
    e["appendChild"](t)
}

function af(e, t, n) {
    const i = Oe,
          s = {
              EfoGx: function(e, t) {
                  return e == t
              },
              GkMSA: function(e, t) {
                  return e(t)
              },
              OvgDI: function(e, t) {
                  return e === t
              },
              HVXIz: i(628),
              fxbjC: i(1073),
              ZrhoA: function(e, t) {
                  return e(t)
              },
              ieoGb: function(e, t, n) {
                  return e(t, n)
              }
          },
          o = s[i(1180)](lf, e);
    if (!o[i(643)](t)) {
        if (s["OvgDI"](s[i(1472)], s[i(616)])) s[i(781)](_0x57cb85, null) ? _0x11f745[i(1588)](_0x1b3e51) : _0x173140[i(1526)](_0x42d343) !== _0x554e59 && _0x554aee[i(506)](_0x230517, _0x4d8b09);
        else {
            const r = s[i(1446)](ff, "style");
            r["id"] = t, r["textContent"] = n, s[i(1553)](cf, o, r)
        }
    }
}

function lf(e) {
    const t = Oe;
    if (!e) return document;
    const n = e[t(525)] ? e[t(525)]() : e["ownerDocument"];
    return n && n[t(1427)] ? n : e[t(389)]
}

function cf(e, t) {
    const n = Oe,
          i = {
              kHvtF: function(e, t, n) {
                  return e(t, n)
              }
          };
    return i[n(1400)](rf, e["head"] || e, t), t[n(1323)]
}

function df(e, t, n) {
    const i = Oe,
          s = {};
    s[i(306)] = function(e, t) {
        return e || t
    };
    const o = s;
    e[i(935)](t, o[i(306)](n, null))
}

function uf(e) {
    const t = Oe;
    e[t(1268)] && e[t(1268)]["removeChild"](e)
}

function ff(e) {
    const t = Oe;
    return document[t(743)](e)
}

function hf(e) {
    const t = Oe,
          n = {};
    n["yvSgZ"] = "http://www.w3.org/2000/svg";
    const i = n;
    return document["createElementNS"](i[t(1071)], e)
}

function pf(e) {
    return document["createTextNode"](e)
}

function mf() {
    const e = Oe,
          t = {
              nsnCy: function(e, t) {
                  return e(t)
              }
          };
    return t[e(1614)](pf, " ")
}

function gf(e, t, n, i) {
    const s = Oe;
    return e[s(742)](t, n, i), () => e[s(1352)](t, n, i)
}

function M(e, t, n) {
    const i = Oe,
          s = {};
    s["TyWyZ"] = function(e, t) {
        return e == t
    };
    const o = s;
    o[i(706)](n, null) ? e[i(1588)](t) : e["getAttribute"](t) !== n && e[i(506)](t, n)
}

function yf(e) {
    const t = Oe;
    return Array["from"](e[t(541)])
}

function xf(e, t, n) {
    const i = Oe;
    e[i(1085)]["toggle"](t, !!n)
}

function wf(e, t, {
    bubbles: n = !(-2 * -2735 + -7888 + 2419),
    cancelable: i = !(3678 + -9390 + -29 * -197)
} = {}) {
    const s = Oe,
          o = {};
    return o[s(776)] = t, o[s(460)] = n, o[s(523)] = i, new CustomEvent(e, o)
}

function bf(e) {
    const n = Oe,
          t = {};
    t["jloEk"] = "default";
    const i = t,
          s = {};
    return e[n(541)]["forEach"](e => {
        const t = n;
        s[e[t(1454)] || i[t(1281)]] = !(4518 + -1408 * 1 + 1 * -3110)
    }), s
}
let vf;

function kf(e) {
    vf = e
}

function Af() {
    const e = Oe,
          t = {};
    t[e(1282)] = "Function called outside component initialization";
    const n = t;
    if (!vf) throw new Error(n["XmcdB"]);
    return vf
}

function If(e) {
    const t = Oe,
          n = {
              DcUZT: function(e) {
                  return e()
              }
          };
    n[t(639)](Af)["$$"]["on_mount"]["push"](e)
}

function Sf(e) {
    const t = Oe,
          n = {
              celIR: function(e) {
                  return e()
              }
          };
    n["celIR"](Af)["$$"]["on_destroy"][t(959)](e)
}

function Ef() {
    const a = {
        WwdzG: function(e, t, n, i) {
            return e(t, n, i)
        },
        ECgnL: function(e) {
            return e()
        }
    },
          l = a["ECgnL"](Af);
    return (e, t, {
        cancelable: n = !(14 * 697 + 7251 * -1 + -358 * 7)
    } = {}) => {
        const i = k1,
              s = l["$$"][i(1497)][e];
        if (s) {
            const o = {};
            o[i(523)] = n;
            const r = a["WwdzG"](wf, e, t, o);
            return s["slice"]()[i(699)](e => {
                const t = i;
                e[t(1405)](l, r)
            }), !r[i(630)]
        }
        return !(-2018 * -1 + -9002 * -1 + -11020)
    }
}
const Tf = [],
      Cf = [];
let Bf = [];
const Df = [],
      Pf = Promise[Oe(646)]();
let Rf = !(-66 * 74 + 2594 + 2291);

function Mf() {
    const e = Oe;
    Rf || (Rf = !(1 * -8923 + -7142 * -1 + 1781), Pf[e(388)](_f))
}

function Nf() {
    const e = Oe,
          t = {
              gyxPE: function(e) {
                  return e()
              }
          };
    return t[e(1481)](Mf), Pf
}

function Of(e) {
    Bf["push"](e)
}
const Lf = new Set;
let Ff = 9837 + -6111 + -3726;

function _f() {
    const t = Oe,
          n = {
              eEAbL: function(e, t, n, i, s) {
                  return e(t, n, i, s)
              },
              HiLoy: function(e, t) {
                  return e !== t
              },
              TsBAS: t(1595),
              HpWQP: t(1528),
              SQxTQ: function(e, t) {
                  return e < t
              },
              njMma: function(e, t) {
                  return e(t)
              },
              CUqVj: function(e, t) {
                  return e(t)
              },
              auKSB: function(e, t) {
                  return e < t
              },
              DihCj: function(e) {
                  return e()
              },
              EzuAs: function(e, t) {
                  return e(t)
              }
          };
    if (n[t(782)](Ff, 42 + -1537 * 4 + 6106)) return;
    const e = vf;
    do {
        try {
            if (n[t(782)](n[t(829)], n["HpWQP"]))
                for (; n["SQxTQ"](Ff, Tf[t(1296)]);) {
                    const s = Tf[Ff];
                    Ff++, n[t(1081)](kf, s), n["njMma"](Vf, s["$$"])
                } else {
                    if (_0x52b01d) {
                        const o = n[t(1011)](_0x3918a4, _0x1f6f68, _0x32aee6, _0x5296b5, _0xace433);
                        _0x50a4d3["p"](o, _0x3abbc7)
                    }
                }
        } catch (i) {
            throw Tf[t(1296)] = -1 * -8735 + -6958 * -1 + -5231 * 3, Ff = 1752 + -3850 * -2 + -9452, i
        }
        for (n["CUqVj"](kf, null), Tf[t(1296)] = -5 * 719 + -8803 + 2 * 6199, Ff = -7152 + 670 * 8 + -14 * -128; Cf["length"];) Cf[t(375)]()();
        for (let e = -9311 * -1 + 94 + -9405; n[t(456)](e, Bf[t(1296)]); e += 946 + 9672 * 1 + -10617) {
            const r = Bf[e];
            Lf[t(1204)](r) || (Lf[t(352)](r), n[t(983)](r))
        }
        Bf[t(1296)] = 3748 * -2 + 2502 + 454 * 11
    } while (Tf["length"]);
    for (; Df[t(1296)];) Df[t(375)]()();
    Rf = !(2338 + 1 * 5219 + -7556), Lf[t(873)](), n[t(1074)](kf, e)
}

function Vf(e) {
    const t = Oe,
          n = {
              GLauD: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ioWDF: function(e, t, n) {
                  return e(t, n)
              },
              IILem: function(e, t, n) {
                  return e(t, n)
              },
              AmQnn: function(e, t) {
                  return e !== t
              },
              jPRBm: t(441),
              ReFip: t(528),
              LSOkM: function(e, t) {
                  return e(t)
              }
          };
    if (n[t(932)](e["fragment"], null)) {
        if (n[t(932)](n[t(398)], n[t(335)])) {
            e[t(1417)](), n[t(1147)](Ju, e[t(1355)]);
            const i = e[t(494)];
            e[t(494)] = [-(2 * -460 + -1675 + 2596)], e[t(1317)] && e[t(1317)]["p"](e[t(1200)], i), e["after_update"][t(699)](Of)
        } else n[t(586)](_0x15dac3, _0x42d16b, _0x1088b2, _0x2358bf), n[t(1429)](_0x51afed, _0x209eed, _0x12d2c4), n["ioWDF"](_0x3de46d, _0x18dc7e, _0x437c3e), n[t(1578)](_0x1ad42, _0x312335, _0x200eab), _0x38858c["m"](_0x276aa, null)
    }
}

function Uf(t) {
    const n = Oe,
          i = [],
          s = [];
    Bf[n(699)](e => t[n(1003)](e) === -(-2791 * -1 + 4418 + -7208) ? i[n(959)](e) : s[n(959)](e)), s[n(699)](e => e()), Bf = i
}
const jf = new Set;
let Hf;

function Wf(e, t) {
    const n = Oe;
    e && e["i"] && (jf[n(625)](e), e["i"](t))
}

function Qf(t, e, n, i) {
    const s = Oe,
          o = {};
    o["ZLcHw"] = function(e, t) {
        return e === t
    }, o[s(1343)] = s(1449);
    const r = o;
    if (t && t["o"]) {
        if (jf["has"](t)) return;
        jf["add"](t), Hf["c"][s(959)](() => {
            const e = s;
            if (r["ZLcHw"](r[e(1343)], r[e(1343)])) jf[e(625)](t);
            else return {
                promise: _0x30662a["reject"](),
                controller: _0x12e06d
            }
        }), t["o"](e)
    }
}

function Yf(n, e, t) {
    const i = Oe,
          {
              fragment: s,
              after_update: o
          } = n["$$"];
    s && s["m"](e, t), Of(() => {
        const e = k1,
              t = n["$$"][e(792)][e(1313)](Ku)[e(594)](qu);
        n["$$"][e(1382)] ? n["$$"][e(1382)][e(959)](...t) : Ju(t), n["$$"][e(792)] = []
    }), o[i(699)](Of)
}

function zf(e, t) {
    const n = Oe,
          i = {
              gXwoE: function(e, t) {
                  return e !== t
              },
              IpudL: function(e, t) {
                  return e(t)
              }
          },
          s = e["$$"];
    i[n(1035)](s[n(1317)], null) && (Uf(s[n(1121)]), i["IpudL"](Ju, s[n(1382)]), s["fragment"] && s[n(1317)]["d"](t), s["on_destroy"] = s["fragment"] = null, s[n(1200)] = [])
}

function Gf(e, t) {
    const n = Oe,
          i = {};
    i[n(414)] = function(e, t) {
        return e === t
    }, i[n(1175)] = function(e, t) {
        return e | t
    }, i["rzDkl"] = function(e, t) {
        return e / t
    }, i[n(707)] = function(e, t) {
        return e << t
    }, i[n(461)] = function(e, t) {
        return e % t
    };
    const s = i;
    s[n(414)](e["$$"][n(494)][-9640 + -11 * 183 + 11653], -(-247 + -2 * 1087 + 2422)) && (Tf[n(959)](e), Mf(), e["$$"]["dirty"][n(591)](-5699 + -8957 + -458 * -32)), e["$$"][n(494)][s[n(1175)](s[n(672)](t, 9151 * 1 + 1 * 1487 + -1 * 10607), -1 * 832 + -53 * 43 + 3111)] |= s[n(707)](7980 + -2160 + -5819 * 1, s[n(461)](t, -1 * -1513 + 241 * -26 + 16 * 299))
}

function Kf(o, e, t, n, r, i, s = null, a = [-(-9244 + -22 * 233 + 14371)]) {
    const l = Oe,
          c = {
              EEeTs: function(e) {
                  return e()
              },
              FRdsE: function(e, t) {
                  return e(t)
              },
              LsZwB: function(e, t) {
                  return e === t
              },
              VJgJO: l(1064),
              TYBBt: function(e, t) {
                  return e(t)
              },
              rILhX: function(e, t) {
                  return e(t)
              },
              YiveE: function(e, t, n, i) {
                  return e(t, n, i)
              },
              tLJoR: function(e) {
                  return e()
              }
          },
          d = vf;
    kf(o);
    const u = o["$$"] = {
        fragment: null,
        ctx: [],
        props: i,
        update: zu,
        not_equal: r,
        bound: c[l(1017)](Xu),
        on_mount: [],
        on_destroy: [],
        on_disconnect: [],
        before_update: [],
        after_update: [],
        context: new Map(e[l(1038)] || (d ? d["$$"]["context"] : [])),
        callbacks: Xu(),
        dirty: a,
        skip_bound: !(3217 * 1 + 4973 + -431 * 19),
        root: e[l(1494)] || d["$$"]["root"]
    };
    s && c[l(987)](s, u["root"]);
    let f = !(2722 + 5394 + -5 * 1623);
    if (u["ctx"] = t ? t(o, e[l(801)] || {}, (e, t, ...n) => {
        const i = l,
              s = n["length"] ? n[551 * 9 + 3229 * 3 + -1 * 14646] : t;
        return u["ctx"] && r(u["ctx"][e], u[i(1200)][e] = s) && (!u[i(1034)] && u[i(323)][e] && u[i(323)][e](s), f && Gf(o, e)), t
    }) : [], u["update"](), f = !(1 * -3701 + 7647 * 1 + -3946), Ju(u["before_update"]), u[l(1317)] = n ? n(u[l(1200)]) : !(9565 + 7807 + -17371), e[l(1494)]) {
        if (e[l(526)]) {
            if (c[l(1431)](c[l(571)], l(1083))) return this["$$"][l(1200)][99 * -55 + -4745 + 2 * 5113];
            else {
                const h = c[l(588)](yf, e[l(1494)]);
                u["fragment"] && u[l(1317)]["l"](h), h[l(699)](uf)
            }
        } else u["fragment"] && u[l(1317)]["c"]();
        e[l(1622)] && c[l(585)](Wf, o["$$"][l(1317)]), c[l(564)](Yf, o, e[l(1494)], e[l(1521)]), c[l(432)](_f)
    }
    kf(d)
}
let Xf;
typeof HTMLElement == Oe(719) && (Xf = class extends HTMLElement {
    constructor(e, t, n) {
        const i = Oe,
              s = {
                  rUKUC: function(e, t, n) {
                      return e(t, n)
                  },
                  Hsitd: i(1426),
                  eFHob: i(1118),
                  CebuH: i(991),
                  MpdwJ: function(e, t, n, i) {
                      return e(t, n, i)
                  },
                  OWbCP: i(455),
                  vthcg: i(952),
                  WHNBC: function(e, t, n, i) {
                      return e(t, n, i)
                  },
                  XPSbK: i(317),
                  WOfVb: i(290),
                  SNPId: i(382)
              };
        super(), s["rUKUC"](Uu, this, s[i(716)]), Uu(this, s["eFHob"]), s[i(540)](Uu, this, i(1263)), Uu(this, i(292), !(-5861 + -1016 * -1 + 4846)), Uu(this, s[i(1240)], {}), s[i(1132)](Uu, this, s[i(635)], !(2511 * 3 + -1901 + -1877 * 3)), s["MpdwJ"](Uu, this, s[i(678)], {}), s[i(299)](Uu, this, s[i(854)], {}), Uu(this, s["WOfVb"], new Map), this[i(1426)] = e, this[i(1118)] = t, n && this[i(1091)]({
            mode: s[i(1600)]
        })
    } ["addEventListener"](e, t, n) {
        const i = Oe,
              s = {
                  YBycX: function(e) {
                      return e()
                  },
                  vFDxL: i(1363),
                  WUuCQ: i(415),
                  UJIhu: i(1026),
                  CDiCl: function(e, t) {
                      return e(t)
                  },
                  cMKwN: "click",
                  SGyGr: i(373),
                  BWHPx: i(1115),
                  cxhia: function(e, t) {
                      return e === t
                  },
                  BvtGj: i(1252),
                  mkbHE: "ZLVuK"
              };
        if (this[i(317)][e] = this["$$l"][e] || [], this[i(317)][e]["push"](t), this[i(1263)]) {
            if (s[i(660)](s[i(400)], s[i(403)])) s[i(539)](_0x46e38e), _0x155ff4 && (_0x5657d6[i(1352)](s[i(1096)], _0x1bbc7d), _0x3663c1[i(1352)](s[i(1237)], _0x4ece35), _0x3b3e07["removeEventListener"](s[i(1597)], _0x269ffc), _0x858a61 = null), _0x560858 && (s[i(657)](_0x41d91d, _0x3b2a3d), _0x64eea1 = null), _0x2ad342["removeEventListener"](s[i(445)], _0x12dcfd), _0x18ac09["removeEventListener"](s[i(548)], _0x45ea45), _0x2c8687["removeEventListener"](s[i(501)], _0x3cdeb4);
            else {
                const o = this[i(1263)][i(1025)](e, t);
                this[i(290)]["set"](t, o)
            }
        }
        super[i(742)](e, t, n)
    } [Oe(1352)](e, t, n) {
        const i = Oe,
              s = {
                  VBkzT: function(e) {
                      return e()
                  }
              };
        if (super[i(1352)](e, t, n), this[i(1263)]) {
            const o = this[i(290)][i(1506)](t);
            o && (s["VBkzT"](o), this[i(290)][i(625)](t))
        }
        if (this["$$l"][e]) {
            const r = this[i(317)][e][i(1003)](t);
            r >= -2502 + -5999 * 1 + 8501 && this[i(317)][e][i(1206)](r, 1 * 6563 + -2645 + -3917 * 1)
        }
    }
    async [Oe(1106)]() {
        const s = Oe,
              a = {
                  jqtvl: function(e, t) {
                      return e === t
                  },
                  iqlaL: s(1280),
                  zWdtn: s(334),
                  JAmFB: function(e, t) {
                      return e(t)
                  },
                  PkEoq: "slot",
                  maBEm: function(e, t) {
                      return e !== t
                  },
                  XUqxT: "default",
                  iOVFP: s(726),
                  Nojlf: "sUPrC",
                  dVYmF: function(e) {
                      return e()
                  },
                  hycPN: s(420),
                  VTWrv: function(e, t, n, i, s) {
                      return e(t, n, i, s)
                  },
                  qUzoW: s(430),
                  aUqcd: function(e, t) {
                      return e(t)
                  },
                  NbSSt: function(e, t) {
                      return e in t
                  }
              };
        if (this[s(292)] = !(2747 + 8208 + -10955), !this["$$c"]) {
            let e = function(i) {
                return () => {
                    const s = k1,
                          o = {
                              VBhBP: function(e, t) {
                                  return a["jqtvl"](e, t)
                              },
                              Tgoce: a[s(519)],
                              ALVxP: a[s(914)],
                              wvjcX: function(e, t) {
                                  const n = s;
                                  return a[n(1270)](e, t)
                              },
                              CQNal: a[s(818)],
                              AflXQ: function(e, t) {
                                  return a["maBEm"](e, t)
                              },
                              bXfys: a[s(476)],
                              ydmRz: function(e, t, n, i) {
                                  return e(t, n, i)
                              },
                              DRhyx: a[s(544)],
                              TQqFu: function(e, t) {
                                  return e == t
                              },
                              ubpAi: a[s(282)],
                              gYRBh: s(688)
                          };
                    let r;
                    return {
                        c: function() {
                            const e = s,
                                  t = {
                                      sltwO: function(e) {
                                          return e()
                                      }
                                  };
                            if (o["VBhBP"](o["Tgoce"], o[e(822)])) {
                                const n = {};
                                n[e(685)] = _0x5aec20, this[e(522)](n), t[e(487)](_0x17ea16)
                            } else r = o[e(790)](ff, o[e(1459)]), o["AflXQ"](i, o[e(833)]) && o[e(327)](M, r, o["DRhyx"], i)
                        },
                        m: function(e, t) {
                            df(e, r, t)
                        },
                        d: function(e) {
                            const t = s;
                            if (o[t(1567)](o[t(1456)], o[t(875)])) {
                                this[t(455)] = !(-4 * -862 + 2702 * -2 + -4 * -489);
                                for (const n in this[t(952)])
                                    if (this[t(991)][n] = this["$$c"]["$$"][t(1200)][this[t(1263)]["$$"]["props"][n]], this["$$p_d"][n][t(737)]) {
                                        const i = _0x187606(n, this[t(991)][n], this[t(952)], t(430));
                                        o[t(1009)](i, null) ? this["removeAttribute"](this["$$p_d"][n][t(1059)] || n) : this[t(506)](this[t(952)][n][t(1059)] || n, i)
                                    } this[t(455)] = !(-7541 + -6019 + 13561)
                            } else e && o[t(790)](uf, r)
                        }
                    }
                }
            };
            if (await Promise["resolve"](), !this[s(292)] || this["$$c"]) return;
            const t = {},
                  n = a[s(1273)](bf, this);
            for (const r of this[s(1118)]) a[s(1285)](r, n) && (t[r] = [a[s(1270)](e, r)]);
            for (const l of this[s(307)]) {
                const c = this[s(532)](l["name"]);
                a[s(1285)](c, this[s(991)]) || (this[s(991)][c] = Jf(c, l[s(1344)], this[s(952)], s(799)))
            }
            for (const d in this[s(952)]) !a[s(1285)](d, this[s(991)]) && a[s(1027)](this[d], void(6895 * 1 + -1 * 4595 + -2300)) && (this[s(991)][d] = this[d], delete this[d]);
            const i = {};
            i[s(1200)] = [], this[s(1263)] = new this[s(1426)]({
                target: this[s(710)] || this,
                props: {
                    ...this["$$d"],
                    $$slots: t,
                    $$scope: i
                }
            });
            const o = () => {
                const e = s;
                this[e(455)] = !(-2160 + 6 * -419 + 41 * 114);
                for (const t in this[e(952)])
                    if (this["$$d"][t] = this[e(1263)]["$$"]["ctx"][this["$$c"]["$$"][e(801)][t]], this[e(952)][t][e(737)]) {
                        if (a[e(1027)]("KCuLl", a[e(684)])) {
                            const n = {};
                            n[e(744)] = _0x56a998, this[e(522)](n), a["dVYmF"](_0x1b53b5)
                        } else {
                            const i = a[e(815)](Jf, t, this[e(991)][t], this["$$p_d"], a[e(1371)]);
                            i == null ? this["removeAttribute"](this[e(952)][t][e(1059)] || t) : this[e(506)](this[e(952)][t][e(1059)] || t, i)
                        }
                    } this[e(455)] = !(-241 * 1 + -21 * -351 + -7129 * 1)
            };
            this[s(1263)]["$$"]["after_update"][s(959)](o), a[s(731)](o);
            for (const u in this["$$l"])
                for (const f of this[s(317)][u]) {
                    const h = this["$$c"][s(1025)](u, f);
                    this["$$l_u"][s(1545)](f, h)
                }
            this[s(317)] = {}
        }
    } [Oe(495)](e, t, n) {
        const i = Oe,
              s = {
                  dMcbr: function(e, t, n, i, s) {
                      return e(t, n, i, s)
                  },
                  rUmAP: "toProp",
                  gfCEV: function(e, t) {
                      return e == t
                  }
              };
        var o;
        this["$$r"] || (e = this["$$g_p"](e), this[i(991)][e] = s[i(846)](Jf, e, n, this[i(952)], s[i(419)]), s[i(1302)](o = this[i(1263)], null) || o[i(514)]({
            [e]: this[i(991)][e]
        }))
    } [Oe(1308)]() {
        const t = Oe;
        this["$$cn"] = !(4419 + -9780 + -383 * -14), Promise[t(646)]()[t(388)](() => {
            const e = t;
            !this[e(292)] && this[e(1263)] && (this["$$c"][e(440)](), this[e(1263)] = void(4691 + -41 * -232 + -14203))
        })
    } [Oe(532)](t) {
        const n = Oe;
        return Object[n(874)](this["$$p_d"])[n(848)](e => this[n(952)][e][n(1059)] === t || !this["$$p_d"][e][n(1059)] && e[n(978)]() === t) || t
    }
});

function Jf(e, t, n, i) {
    const s = Oe,
          o = {};
    o["GMrxh"] = function(e, t) {
        return e === t
    }, o["vbWKw"] = s(989), o[s(721)] = function(e, t) {
        return e != t
    }, o[s(1393)] = s(971), o[s(976)] = function(e, t) {
        return e === t
    }, o[s(694)] = "toAttribute", o[s(508)] = "Array", o[s(950)] = function(e, t) {
        return e == t
    }, o["VpSqr"] = s(542), o["Cxvor"] = function(e, t) {
        return e ?? t
    }, o[s(662)] = s(1422);
    const r = o;
    var a;
    const l = (a = n[e]) == null ? void(-565 * -10 + 3873 + -107 * 89) : a[s(1033)];
    if (t = r[s(966)](l, r["vbWKw"]) && r[s(721)](typeof t, r[s(1393)]) ? r[s(721)](t, null) : t, !i || !n[e]) return t;
    if (r[s(976)](i, r["Ntals"])) switch (l) {
        case s(1422):
        case r[s(508)]:
            return r["YqTWW"](t, null) ? null : JSON[s(547)](t);
        case r[s(518)]:
            return t ? "" : null;
        case r["VpSqr"]:
            return r[s(1483)](t, null);
        default:
            return t
    } else switch (l) {
        case r[s(662)]:
        case r[s(508)]:
            return t && JSON[s(520)](t);
        case r[s(518)]:
            return t;
        case s(542):
            return r["PRmDN"](t, null) ? +t : t;
        default:
            return t
    }
}

function qf(t, s, n, e, i, o) {
    const r = Oe,
          a = {
              TiASR: function(e, t) {
                  return e !== t
              },
              FbPLi: r(1215),
              auqju: r(865),
              qWkSF: function(e, t, n, i) {
                  return e(t, n, i)
              },
              APykf: function(e, t) {
                  return e(t)
              },
              bvANK: r(832),
              YRLjz: r(1260),
              qMaOl: function(e) {
                  return e()
              },
              QyIKx: r(1192),
              phlpQ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              bSBoC: r(1225),
              TSMEH: r(671),
              WtFTb: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ieDOC: r(1300),
              Cjcbr: r(856),
              jMdZq: r(1160),
              CKJCg: "0 0 24 24",
              mmkgH: r(271),
              XZRwM: "1.5",
              bnpaf: "currentColor",
              bBJuM: "class",
              JNgiu: "altcha-error svelte-ddsc3z",
              TXbCE: function(e, t) {
                  return e in t
              },
              RpAMG: r(1271),
              ELdEs: r(1562),
              tyeym: function(e, t) {
                  return e == t
              },
              XVMmD: function(e, t) {
                  return e === t
              },
              Uivxy: r(1416)
          };
    let l = class extends Xf {
        constructor() {
            const e = r;
            super(t, n, i), this[e(952)] = s
        }
        static get[r(897)]() {
            const t = r;
            if (a[t(381)](a[t(1509)], a[t(753)])) return Object[t(874)](s)["map"](e => (s[e][t(1059)] || e)[t(978)]());
            else _0x48fd4e()["$$"]["on_mount"][t(959)](_0x2091a2)
        }
    };
    return Object[r(874)](s)["forEach"](i => {
        const o = r,
              t = {
                  IarPo: function(e, t) {
                      return a["APykf"](e, t)
                  },
                  aCbaJ: a[o(1088)],
                  WFbuV: o(1294),
                  kyDwu: a["YRLjz"],
                  iWDKe: function(e) {
                      const t = o;
                      return a[t(778)](e)
                  },
                  FZHBd: function(e, t, n, i) {
                      const s = o;
                      return a[s(574)](e, t, n, i)
                  },
                  wLzWr: a[o(1279)],
                  FzxTs: function(e, t, n, i) {
                      const s = o;
                      return a[s(402)](e, t, n, i)
                  },
                  kwpZg: a[o(738)],
                  ILqUz: a["TSMEH"],
                  cQYNf: function(e, t, n, i) {
                      const s = o;
                      return a[s(1065)](e, t, n, i)
                  },
                  iGWzJ: a[o(1149)],
                  QvhIR: a[o(1182)],
                  xJpSX: a[o(645)],
                  iErha: function(e, t, n, i) {
                      return a["phlpQ"](e, t, n, i)
                  },
                  hcvIR: a["CKJCg"],
                  KsGmG: a["mmkgH"],
                  hbuvy: a[o(357)],
                  TXUuw: "stroke",
                  vVTCo: a[o(664)],
                  CIoHR: a[o(553)],
                  Biaan: a[o(354)],
                  RIaRC: function(e, t) {
                      return a["TXbCE"](e, t)
                  }
              };
        a[o(381)](a[o(1367)], a[o(1367)]) ? (_0x23dd40 = t[o(644)](_0x386a02, t[o(1174)]), _0x21ebc0 = t[o(644)](_0x3bb833, t[o(1443)]), _0x2c31d7 = t[o(644)](_0x544f95, t[o(1075)]), _0x36a0f8 = t[o(791)](_0xb7c34), _0x341860["c"](), t[o(1433)](_0x119333, _0x1db127, o(392), t[o(1124)]), t[o(371)](_0x15f85a, _0x419f60, t[o(1501)], t[o(1124)]), t["FzxTs"](_0x3f7d67, _0x501f5c, "d", o(1561)), t[o(1433)](_0x3ca026, _0x195dac, o(479), "14"), _0x2609f5(_0x73e831, t[o(967)], "14"), t[o(368)](_0x58ea79, _0x33ae3b, t[o(1450)], t[o(604)]), _0x2bd5f7(_0x2494ba, o(591), t[o(1125)]), t[o(786)](_0x64531f, _0x2aa316, o(620), t[o(1002)]), t[o(786)](_0x13819e, _0x4ffba0, t[o(1255)], t[o(1502)]), t[o(786)](_0x30ad25, _0xcde31a, t[o(590)], t[o(1110)]), t[o(371)](_0x5d1ff7, _0x2df052, t["CIoHR"], t[o(1346)])) : Object["defineProperty"](l["prototype"], i, {
            get() {
                const e = o;
                return this[e(1263)] && t[e(747)](i, this["$$c"]) ? this["$$c"][i] : this[e(991)][i]
            },
            set(e) {
                const t = o;
                var n;
                e = a["qWkSF"](Jf, i, e, s), this[t(991)][i] = e, (n = this[t(1263)]) == null || n["$set"]({
                    [i]: e
                })
            }
        })
    }), e[r(699)](n => {
        const i = r,
              s = {
                  bhSmQ: function(e, t, n, i) {
                      const s = k1;
                      return a[s(1065)](e, t, n, i)
                  },
                  zvikn: function(e, t, n, i) {
                      return e(t, n, i)
                  },
                  utFTu: a[i(1165)],
                  Jjhmw: function(e, t) {
                      const n = i;
                      return a[n(638)](e, t)
                  }
              };
        if (a[i(866)](a[i(1508)], i(1530))) {
            const e = {};
            return e[i(1350)] = _0x73816f["algorithm"], e[i(538)] = _0x5df6ad[i(538)], e["number"] = _0x4c7a93[i(273)], e["salt"] = _0x320857[i(483)], e[i(410)] = _0x3432f2[i(410)], e["test"] = _0xcafb6a ? !(-8966 + -3204 + -1217 * -10) : void(-15 * -191 + 7 * -926 + 1 * 3617), e["took"] = _0x59aae0[i(649)], _0xa31336(_0x31062b[i(547)](e))
        } else Object["defineProperty"](l[i(328)], n, {
            get() {
                const e = i;
                if (s[e(563)] === s[e(563)]) {
                    var t;
                    return s[e(1596)](t = this[e(1263)], null) ? void(3681 * -2 + 9019 + -1657 * 1) : t[n]
                } else s[e(1288)](_0xfe276b, _0x31aa02, _0x8ced28, _0x27af31), _0x111fad[e(407)] = _0xbd51c0, s["zvikn"](_0x32e7a2, _0x340f78, _0x299ed9, _0x5cc18b), s["zvikn"](_0x47a7c2, _0x39295a, _0x3a9274, _0x2f9e6c)
            }
        })
    }), t[r(1479)] = l, l
}
class $f {
    constructor() {
        const e = Oe,
              t = {
                  VGwHG: function(e, t, n) {
                      return e(t, n)
                  },
                  JXnPl: e(522)
              };
        t["VGwHG"](Uu, this, "$$"), t["VGwHG"](Uu, this, t[e(474)])
    } ["$destroy"]() {
        const e = Oe,
              t = {
                  ufDUU: function(e, t, n) {
                      return e(t, n)
                  }
              };
        t[e(933)](zf, this, 4555 + 377 + 4931 * -1), this[e(440)] = zu
    } [Oe(1025)](e, i) {
        const s = Oe,
              o = {
                  wNzWl: function(e, t) {
                      return e !== t
                  },
                  zWRjM: function(e, t) {
                      return e === t
                  },
                  gYULU: s(682),
                  UPWsc: function(e, t) {
                      return e(t)
                  }
              };
        if (!o[s(509)](qu, i)) return zu;
        const r = this["$$"][s(1497)][e] || (this["$$"]["callbacks"][e] = []);
        return r[s(959)](i), () => {
            const e = s;
            if (o[e(1015)](o[e(572)], e(682))) {
                const t = r["indexOf"](i);
                t !== -(-1469 * -3 + -1 * -6761 + -11167) && r["splice"](t, 4870 + -732 + -4137 * 1)
            } else {
                const n = _0x1f0442[e(1003)](_0x52781c);
                o[e(1082)](n, -(7722 + 3 * -1559 + -3044)) && _0x47708d[e(1206)](n, 131 * 1 + 7781 + -7911)
            }
        }
    } [Oe(514)](e) {
        const t = Oe;
        this[t(522)] && !Zu(e) && (this["$$"][t(1034)] = !(-8690 + -329 * -16 + 3426), this["$$set"](e), this["$$"][t(1034)] = !(-1867 + 10 * 916 + -7292))
    }
}
const Zf = "4";
typeof window < "u" && (window[Oe(1542)] || (window["__svelte"] = {
    v: new Set
}))["v"][Oe(352)](Zf);
const e1 = new TextEncoder;

function t1(e) {
    const t = Oe;
    return [...new Uint8Array(e)][t(1313)](e => e["toString"](5 * -1571 + 1464 + 6407)["padStart"](133 + -5026 + 4895, "0"))["join"]("")
}
async function n1(e, t = Oe(296), n = 3 * 51938 + 1 * 143138 + -24869 * 8) {
    const i = Oe,
          s = {
              xQKlE: function(e, t) {
                  return e * t
              },
              TtmiD: function(e, t, n, i) {
                  return e(t, n, i)
              }
          },
          o = Date[i(741)]()[i(1114)](7 * 509 + -23 * 3 + -3478);
    e || (e = Math[i(1192)](s[i(1229)](Math[i(1233)](), n)));
    const r = await s[i(1306)](i1, o, e, t),
          a = {};
    return a["algorithm"] = t, a[i(538)] = r, a[i(483)] = o, a[i(410)] = "", a
}
async function i1(e, t, n) {
    const i = Oe,
          s = {
              vuGsk: function(e, t) {
                  return e(t)
              },
              bldVl: function(e, t) {
                  return e + t
              }
          };
    return s["vuGsk"](t1, await crypto[i(1398)][i(372)](n[i(366)](), e1["encode"](s[i(995)](e, t))))
}

function s1(n, i, s = Oe(296), o = 25 * 15749 + 339189 + 267086, r = 4921 + -61 * 17 + -1 * 3884) {
    const e = Oe,
          a = {
              reLbj: e(816),
              zJdUR: function(e, t, n) {
                  return e(t, n)
              },
              jSsYY: function(e, t) {
                  return e in t
              },
              uBbDY: function(e, t) {
                  return e in t
              },
              LjRwb: e(1037),
              YxxYc: function(e, t) {
                  return e in t
              },
              AnmjC: e(896),
              sqBeN: e(1134),
              eSvOs: function(e, t) {
                  return e in t
              },
              qZDSu: e(1269),
              IgDwq: function(e, t) {
                  return e in t
              },
              LmttA: function(e, t, n) {
                  return e(t, n)
              },
              dnviT: e(703),
              fbEJJ: function(e, t, n) {
                  return e(t, n)
              },
              lNomP: e(685),
              WRetO: "hidefooter",
              hWCxP: "hidelogo",
              hHfyP: function(e, t, n) {
                  return e(t, n)
              },
              NLRbo: function(e, t) {
                  return e in t
              },
              mLuCj: e(726),
              yndRC: e(652),
              hLlpk: "mockerror",
              rSMyS: function(e, t) {
                  return e in t
              },
              ZWLJb: e(1399),
              XhguG: function(e, t) {
                  return e in t
              },
              kpxzQ: "plugins",
              vBkKu: function(e, t, n) {
                  return e(t, n)
              },
              JZBeY: "refetchonexpire",
              InIrx: e(1437),
              fdDwV: e(744),
              yUSpM: e(680),
              HTmkA: function(e, t) {
                  return e in t
              },
              YndCc: "verifyurl",
              uQsQH: function(e, t) {
                  return e in t
              },
              OHUYm: e(393),
              uCcBg: e(955),
              SuKqP: function(e, t) {
                  return e !== t
              },
              SEuAG: e(1552),
              EmUbO: e(1095),
              gZfHz: function(e, t) {
                  return e <= t
              },
              pYnxG: function(e, t, n, i) {
                  return e(t, n, i)
              },
              PDflU: function(e, t) {
                  return e - t
              }
          },
          l = new AbortController,
          c = Date["now"]();
    return {
        promise: (async () => {
            const t = e;
            if (a[t(1022)](a[t(397)], a[t(1020)])) {
                for (let e = r; a[t(561)](e, o); e += -1950 + 1 * -5944 + 7895) {
                    if (l[t(857)][t(1223)]) return null;
                    if (await a[t(481)](i1, i, e, s) === n) return {
                        number: e,
                        took: a[t(1498)](Date[t(741)](), c)
                    }
                }
                return null
            } else a["reLbj"] in _0x40a2fc && a[t(1484)](_0x2a277f, 1755 + -5817 + 4062 * 1, _0x4d3bd4 = _0x18ae33["auto"]), a[t(515)](t(1330), _0x3ae122) && a[t(1484)](_0x2bbc0e, -3342 + -9865 * 1 + -1 * -13223, _0x1f9bda = _0x4fe966["blockspam"]), a[t(595)](a[t(612)], _0x4ab58b) && a["zJdUR"](_0x18ed55, -23 * 121 + -1 * 2213 + 1 * 5011, _0x17e91e = _0x1b6216["challengeurl"]), a[t(353)](a[t(391)], _0x2ac9d5) && _0x4b84ec(9760 * 1 + 3971 + 548 * -25, _0x5e45bf = _0x26787d["challengejson"]), a[t(353)](a[t(1184)], _0x2fd8c7) && _0x9d2b20(-479 * -7 + 1 * -2861 + -475, _0x47ff64 = _0x27eeeb["debug"]), a[t(640)](a[t(780)], _0x4f2426) && a[t(1484)](_0x3f859b, -582 * -16 + 1997 * 3 + -15285, _0xc6aef0 = _0x164151[t(1269)]), a["IgDwq"]("expire", _0x206b6a) && a[t(1070)](_0x5f5508, -342 + 3 * -2804 + -1 * -8773, _0x1b8783 = _0x3f6e72["expire"]), a["IgDwq"](a[t(1256)], _0x4db457) && a[t(969)](_0x487d5d, 587 * -2 + -7843 + 9 * 1002, _0x2f6e0 = _0x50540c["floating"]), a[t(1402)] in _0x33874d && a[t(1484)](_0x403439, 1 * -4734 + -8505 + 13259, _0x41687c = _0x3393cb[t(685)]), a[t(640)](t(1067), _0x3d190b) && _0x4c9373(1101 + -285 + -795, _0x361486 = _0x5b67a2[t(1067)]), a[t(900)] in _0x36b252 && _0x2f8a0b(-7 * 1032 + -7437 + 14663, _0x2d9004 = _0x43b442[t(1301)]), a["hWCxP"] in _0x727332 && a[t(507)](_0xfb2902, -5 * -1621 + -745 * 10 + -652, _0x5533ef = _0x62e9ea["hidelogo"]), a[t(1014)](a[t(760)], _0x51ac41) && _0x1b929b(-709 + -5935 + -831 * -8, _0x302d3f = _0x1ac304[t(726)]), a[t(359)] in _0x42eab2 && _0x48a068(691 + 258 * -17 + 9 * 413, _0x3ea8a0 = _0x4de6d4[t(652)]), a[t(1014)](a[t(1004)], _0xab31c4) && _0x3b294b(5 * 941 + 46 * -114 + 562, _0x2d3a1c = _0x1014b1[t(1594)]), a["rSMyS"](a[t(1385)], _0x10c78b) && _0x2a9e3b(-11 * -125 + 9618 * -1 + 8267, _0x3bfaa8 = _0x4ed776[t(1399)]), a["XhguG"](a[t(537)], _0x390679) && a[t(724)](_0x37fb51, -7231 + -6589 + 13852, _0x14b1ca = _0x23b34c[t(1425)]), a[t(640)](a["JZBeY"], _0x27e098) && a[t(1070)](_0x3793fa, 12 * -571 + 18 * 238 + 2593, _0x18dbd8 = _0x18cbc6[t(305)]), a["rSMyS"](a["InIrx"], _0x12cfab) && _0x31f073(-3290 + 3849 + -533, _0x3c6fde = _0x276c89[t(1437)]), a[t(920)] in _0x5dd7da && _0x7db754(-8602 + -53 * 92 + 13511, _0x4fb122 = _0x1f933a[t(744)]), a["rSMyS"](a[t(303)], _0x5c80ea) && a["fbEJJ"](_0xa8c931, -4 * 2243 + 7627 + 1372, _0xef5008 = _0x73ec8e[t(680)]), a[t(1403)](a[t(954)], _0x22dc61) && a[t(724)](_0xa16a91, 3105 + 8902 * -1 + 5825 * 1, _0x4158a7 = _0x1f8a57[t(953)]), a["uQsQH"](a[t(597)], _0x3e1f72) && _0x5ca3e2(194 * -43 + 4390 + 3 * 1327, _0x1b6980 = _0x4d9c90["workers"]), t(436) in _0x3a0d9e && _0x3ec64b(7766 + -19 * -499 + -9 * 1913, _0x3010d4 = _0xba39e5["workerurl"]), a[t(1254)] in _0x153636 && a[t(1484)](_0x3782c9, 9 * -192 + -849 + -19 * -138, _0x1f7f32 = _0x520eb6["$$scope"])
        })(),
        controller: l
    }
}

function o1() {
    const e = Oe;
    try {
        return Intl[e(820)]()["resolvedOptions"]()["timeZone"]
    } catch {}
}

function r1(e) {
    const t = Oe,
          n = {
              ZzmEl: function(e, t) {
                  return e(t)
              },
              vcJOI: function(e, t) {
                  return e < t
              }
          },
          i = n["ZzmEl"](atob, e),
          s = new Uint8Array(i["length"]);
    for (let e = -1842 * -3 + -9205 + 1 * 3679; n["vcJOI"](e, i[t(1296)]); e++) s[e] = i[t(1093)](e);
    return s
}

function a1(t, n = 3444 + -368 * 4 + -1960) {
    const i = Oe,
          e = {};
    e[i(444)] = function(e, t) {
        return e < t
    }, e[i(284)] = function(e, t) {
        return e / t
    };
    const s = e,
          o = new Uint8Array(n);
    for (let e = 2 * 3718 + 1272 + -8708; s[i(444)](e, n); e++) o[e] = t % (6846 + 5107 + -11697), t = Math[i(1358)](s["rUlcJ"](t, -6398 + -3390 + 10044));
    return o
}
async function l1(e, t = "", i = 905018 * 1 + -60 * -24652 + -1384138, s = 5708 + 2498 + -1 * 8206) {
    const r = Oe,
          a = {
              aSPlT: function(e, t) {
                  return e(t)
              },
              SRSQg: r(832),
              YBtVJ: function(e, t) {
                  return e(t)
              },
              OJbTZ: function(e, t) {
                  return e(t)
              },
              vgLkH: r(1260),
              kmkHZ: function(e, t) {
                  return e(t)
              },
              QZBBU: r(1421),
              gPLCF: r(591),
              GJxgh: function(e, t, n, i) {
                  return e(t, n, i)
              },
              JkoJC: r(620),
              IMzoO: "0 0 20 20",
              dnzPH: r(1160),
              AXetD: r(1202),
              ktVap: r(1494),
              OonDO: "_blank",
              rxxmK: "aria-label",
              vCvSX: function(e, t) {
                  return e <= t
              },
              rhNVv: r(310),
              jbqYF: r(1590),
              pnXaI: r(296),
              mspnc: r(593),
              ExYZC: r(468),
              luXhf: function(e) {
                  return e()
              }
          },
          l = a[r(1585)],
          c = new AbortController,
          d = Date["now"](),
          n = async () => {
              const o = r,
                    t = {
                        nVCmE: function(e, t) {
                            const n = k1;
                            return a[n(1284)](e, t)
                        },
                        YQKqv: a[o(837)],
                        VcuDJ: function(e, t) {
                            const n = o;
                            return a[n(1090)](e, t)
                        },
                        HXnRL: "svg",
                        OEDZw: function(e, t) {
                            const n = o;
                            return a[n(1381)](e, t)
                        },
                        IHeHG: a[o(1158)],
                        JNQKB: function(e, t) {
                            const n = o;
                            return a[n(459)](e, t)
                        },
                        SGSUh: function(e, t) {
                            return e(t)
                        },
                        WZDrA: "currentColor",
                        LYlkr: function(e, t, n, i) {
                            return e(t, n, i)
                        },
                        HZFgn: a[o(1181)],
                        uypmc: a[o(451)],
                        UlIpH: function(e, t, n, i) {
                            const s = o;
                            return a[s(1334)](e, t, n, i)
                        },
                        xTZlM: a[o(470)],
                        hCzsd: a["IMzoO"],
                        xkbTV: a[o(808)],
                        oJple: function(e, t, n, i) {
                            return e(t, n, i)
                        },
                        cHOWM: "xmlns",
                        nbFwG: a[o(1153)],
                        nLYYy: a[o(1013)],
                        cFjHP: a[o(972)],
                        PEofw: o(1408),
                        XXFUt: a[o(288)]
                    };
              for (let e = s; a["vCvSX"](e, i); e += 4856 + -19 * -144 + 7591 * -1) {
                  if (a[o(1008)] === a[o(1008)]) {
                      if (c[o(857)]["aborted"] || !u || !f) return null;
                      try {
                          const n = await crypto[o(1398)][o(468)]({
                              name: l,
                              iv: a1(e)
                          }, u, f);
                          if (n) return {
                              clearText: (new TextDecoder)[o(1311)](n),
                              took: Date["now"]() - d
                          }
                      } catch {}
                  } else _0x1afaf2 = t["nVCmE"](_0x174163, t[o(704)]), _0xd8bc82 = t[o(890)](_0x5d2dc2, "a"), _0x43ff19 = t["nVCmE"](_0x417aed, t[o(913)]), _0x5cdd41 = t[o(855)](_0x124309, t[o(1277)]), _0x15a455 = t[o(923)](_0x401217, t[o(1277)]), _0x38dea9 = t[o(964)](_0x46ad33, o(1260)), _0x46b836(_0x670000, "d", o(940)), _0x2f9da6(_0xa63d9b, o(591), t[o(1489)]), t["LYlkr"](_0x1c4e9f, _0x10e53c, "d", t[o(881)]), _0x34d498(_0x2fea48, t[o(1603)], t["WZDrA"]), t[o(1517)](_0x2a34f8, _0x414050, "d", o(1478)), t[o(1517)](_0x2bf5b2, _0x12da26, t[o(1603)], "currentColor"), t[o(423)](_0x5db80b, _0x17e136, o(479), "22"), _0x563ed3(_0x4a7333, o(671), "22"), t[o(1517)](_0x55caab, _0x125121, t[o(1467)], t[o(380)]), t[o(423)](_0xe8a8fe, _0x4d96b5, t[o(1603)], t[o(1127)]), t[o(361)](_0x40ab2f, _0x101f0, t[o(1320)], o(856)), t[o(361)](_0x3aff09, _0x2f3996, t[o(1170)], _0x3a7e5d), _0x3a7e31(_0x356602, t[o(598)], t[o(602)]), _0x1979e0(_0x4c6a56, t[o(318)], o(1513)), _0x38136e(_0x2849ea, t[o(1084)], _0x3f8a7e = _0x407984[5191 + 7618 + 6399 * -2][o(517)])
              }
              return null
          };
    let u = null,
        f = null;
    try {
        f = a[r(1090)](r1, e);
        const o = await crypto[r(1398)][r(372)](a["pnXaI"], e1[r(443)](t));
        u = await crypto[r(1398)][r(937)](a[r(603)], o, l, !(4417 + -7630 + 3214), [a[r(396)]])
    } catch {
        return {
            promise: Promise[r(277)](),
            controller: c
        }
    }
    return {
        promise: a[r(1550)](n),
        controller: c
    }
}
var c1 = (e => (e[Oe(1463)] = Oe(1023), e[Oe(1050)] = Oe(1559), e[Oe(1154)] = Oe(957), e[Oe(821)] = "unverified", e["EXPIRED"] = "expired", e))(c1 || {});

function d1(e) {
    const t = Oe,
          n = {
              sWYLE: function(e, t, n, i) {
                  return e(t, n, i)
              },
              YEqXJ: t(1135),
              IheZj: '.altcha.svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);position:relative;text-align:left}.altcha.svelte-ddsc3z.svelte-ddsc3z:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, white);display:none;filter:drop-shadow(3px 3px 6px rgba(0, 0, 0, 0.2));left:-100%;position:fixed;top:-100%;width:var(--altcha-max-width, 260px);z-index:999999}.altcha[data-floating=top].svelte-ddsc3z .altcha-anchor-arrow.svelte-ddsc3z{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, #a0a0a0);bottom:-12px;top:auto}.altcha[data-floating=bottom].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-bottom-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating=top].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-top-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z:not([data-state=unverified]){display:block}.altcha-anchor-arrow.svelte-ddsc3z.svelte-ddsc3z{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, #a0a0a0);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-main.svelte-ddsc3z.svelte-ddsc3z{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-ddsc3z.svelte-ddsc3z{flex-grow:1}.altcha-label.svelte-ddsc3z label.svelte-ddsc3z{cursor:pointer}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z{color:currentColor;opacity:0.3}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-error.svelte-ddsc3z.svelte-ddsc3z{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-footer.svelte-ddsc3z>.svelte-ddsc3z:first-child{flex-grow:1}.altcha-footer.svelte-ddsc3z a{color:currentColor}.altcha-checkbox.svelte-ddsc3z.svelte-ddsc3z{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-ddsc3z input.svelte-ddsc3z{width:18px;height:18px;margin:0}.altcha-hidden.svelte-ddsc3z.svelte-ddsc3z{display:none}.altcha-spinner.svelte-ddsc3z.svelte-ddsc3z{animation:svelte-ddsc3z-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-ddsc3z-altcha-spinner{100%{transform:rotate(360deg)}}'
          };
    n[t(701)](af, e, n["YEqXJ"], n[t(1195)])
}

function u1(e) {
    const s = Oe,
          o = {
              tHsGH: function(e, t) {
                  return e(t)
              },
              cDBzB: "svg",
              ERvSv: s(1260),
              RsOvQ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              NwZGK: s(591),
              ZfCWA: s(690),
              xgDBz: s(1230),
              PIpIb: ".25",
              CGSkx: s(675),
              noeZs: s(1408),
              REQwz: s(458),
              EKOMO: function(e, t, n, i) {
                  return e(t, n, i)
              },
              GbHKv: s(479),
              ltUdh: s(671),
              MVjpN: s(620),
              IfWaD: s(346),
              Kdywf: s(1300),
              VXALE: function(e, t) {
                  return e & t
              },
              CpUhm: function(e, t) {
                  return e !== t
              },
              ETGvJ: function(e, t) {
                  return e + t
              },
              pOtSB: function(e, t) {
                  return e !== t
              },
              AGdGU: s(1356),
              QgwCx: function(e, t, n, i) {
                  return e(t, n, i)
              },
              FFbHI: function(e, t, n) {
                  return e(t, n)
              }
          };
    let r, a, l;
    return {
        c() {
            const e = s;
            r = o[e(1040)](hf, o[e(1194)]), a = hf(o["ERvSv"]), l = o[e(1040)](hf, o[e(1477)]), M(a, "d", e(1491)), o["RsOvQ"](M, a, o[e(606)], o["ZfCWA"]), o[e(426)](M, a, o[e(1435)], o["PIpIb"]), o[e(426)](M, l, "d", o[e(705)]), o[e(426)](M, l, o[e(606)], o["ZfCWA"]), M(l, o["noeZs"], o[e(582)]), o["EKOMO"](M, r, o["GbHKv"], "24"), o[e(1448)](M, r, o[e(592)], "24"), M(r, o[e(876)], o[e(1197)]), M(r, o[e(301)], e(856))
        },
        m(e, t) {
            const n = s,
                  i = {
                      aIase: function(e, t) {
                          const n = k1;
                          return o[n(819)](e, t)
                      },
                      syJWK: function(e, t) {
                          return o["CpUhm"](e, t)
                      },
                      QAlhO: function(e, t) {
                          const n = k1;
                          return o[n(1444)](e, t)
                      },
                      qjJPS: function(e, t, n, i) {
                          const s = k1;
                          return o[s(426)](e, t, n, i)
                      }
                  };
            o["pOtSB"](n(1272), o[n(1547)]) ? (o[n(1602)](df, e, r, t), o[n(1445)](rf, r, a), rf(r, l)) : (i[n(824)](_0x1cdbf3[-7745 + -1 * -2719 + -2 * -2513], -755 + -4004 + 6807) && i[n(1139)](_0x2dda31, _0x3df874 = i["QAlhO"](_0x5f2609[-7355 + -6873 + -29 * -491]["expired"], "")) && (_0x4dcc61[n(407)] = _0x209db8), _0x5bcd6c[3 * 1283 + 1 * 4783 + -8632] & 4669 + -11 * -393 + -256 * 35 && i[n(1571)](_0x2c164c, _0x43c991, n(473), _0x2a0b64[-1936 + -1 * -5479 + -3538]))
        },
        d(e) {
            e && uf(r)
        }
    }
}

function f1(n) {
    const i = Oe,
          s = {
              SPebk: function(e) {
                  return e()
              },
              isVQb: function(e, t) {
                  return e !== t
              },
              UQlTE: i(1041),
              bVVnJ: "label",
              Wavpf: function(e, t, n, i) {
                  return e(t, n, i)
              },
              qyHno: i(1042),
              zYLgQ: function(e, t) {
                  return e + t
              },
              TsCdx: i(805),
              EXCIK: i(1408),
              xkrFY: "svelte-ddsc3z",
              EryKC: function(e, t) {
                  return e & t
              },
              feMpB: function(e, t) {
                  return e !== t
              },
              fAWOT: function(e, t) {
                  return e !== t
              },
              itdFS: function(e, t) {
                  return e + t
              },
              JhAiW: function(e, t) {
                  return e(t)
              }
          };
    let o, r = n[1457 + 5877 + 2441 * -3][i(1092)] + "",
        a;
    return {
        c() {
            const e = i;
            if (s["isVQb"](e(1041), s["UQlTE"])) {
                const t = {};
                t["obfuscated"] = _0x126042, this[e(522)](t), s[e(1377)](_0x42496f)
            } else o = ff(s["bVVnJ"]), s[e(712)](M, o, s[e(1555)], a = s[e(291)](n[-2849 + 324 + -9 * -281], s[e(686)])), M(o, s[e(1243)], s[e(700)])
        },
        m(e, t) {
            const n = i;
            df(e, o, t), o[n(407)] = r
        },
        p(e, t) {
            const n = i;
            s[n(1599)](t[-9364 + -7 * 668 + 14040], 6661 * 1 + 522 + 395 * -13) && s[n(668)](r, r = s["zYLgQ"](e[9430 + 4784 + 7 * -2029][n(1092)], "")) && (o[n(407)] = r), s[n(1599)](t[8317 + -2758 + 1853 * -3], -4072 + 1891 + 169 * 13) && s[n(1549)](a, a = s["itdFS"](e[-1681 * -3 + 9187 + -14226], s["TsCdx"])) && M(o, s[n(1555)], a)
        },
        d(e) {
            e && s["JhAiW"](uf, o)
        }
    }
}

function h1(e) {
    const s = Oe,
          o = {
              DQvgF: function(e, t) {
                  return e === t
              },
              YMAqy: s(958),
              uhTNq: s(1177),
              XyzWO: s(302),
              xadtO: function(e, t, n, i) {
                  return e(t, n, i)
              },
              jFlsW: function(e, t) {
                  return e(t)
              },
              sNYiB: s(609),
              biYrA: "iKZbH",
              MKOnJ: s(1236),
              mxQFz: function(e, t) {
                  return e + t
              }
          };
    let r, a = e[354 * -14 + 3470 + -1497 * -1][s(957)] + "";
    return {
        c() {
            const e = s;
            if (o[e(1043)](o[e(362)], o[e(730)])) return this["$$"][e(1200)][251 * 1 + 6304 + -6514];
            else r = ff(o[e(490)])
        },
        m(e, t) {
            const n = s;
            o[n(746)](df, e, r, t), r["innerHTML"] = a
        },
        p(e, t) {
            const n = s;
            if (o[n(1043)](o[n(637)], o[n(1178)])) {
                const i = o["jFlsW"](_0xd9f800, o[n(841)]);
                i["id"] = _0x28c457, i[n(442)] = _0xf0fe8b, _0x20327c(_0x3bcc7c, i)
            } else t[5073 + -25 * -217 + 10498 * -1] & -3467 + 7985 + -2470 && a !== (a = o[n(898)](e[-1229 * -7 + 1 * -8939 + 1 * 347][n(957)], "")) && (r["innerHTML"] = a)
        },
        d(e) {
            const t = s;
            e && o[t(936)](uf, r)
        }
    }
}

function p1(n) {
    const i = Oe,
          o = {
              AZiPL: i(1199),
              OlKUc: i(636),
              gdoTN: function(e, t, n) {
                  return e(t, n)
              },
              wYCvB: "plugins",
              nBXmx: "none",
              wHkfg: function(e, t) {
                  return e(t)
              },
              tVoRf: i(370),
              hKXPl: i(415),
              IesOB: function(e, t) {
                  return e === t
              },
              payXT: i(1378),
              PzuxO: function(e) {
                  return e()
              },
              CEMdS: i(449),
              yWBNO: "span",
              CrYGE: "input",
              vtrZB: function(e, t, n, i) {
                  return e(t, n, i)
              },
              dnNvF: i(1033),
              ETDCU: "hidden",
              IAeIM: function(e, t, n, i) {
                  return e(t, n, i)
              },
              pfBQT: function(e, t) {
                  return e(t)
              },
              yrSWu: i(1454),
              rrzcS: function(e, t) {
                  return e !== t
              },
              hJsot: i(404),
              mybpH: i(726),
              mzJFS: function(e, t) {
                  return e === t
              },
              Ecewg: i(1428),
              tywSB: i(1228),
              eQWxj: function(e, t, n, i) {
                  return e(t, n, i)
              },
              aeAic: function(e, t, n, i) {
                  return e(t, n, i)
              },
              JQlxz: function(e, t) {
                  return e & t
              },
              SkjJa: i(884),
              IpmAo: function(e, t) {
                  return e(t)
              },
              PmDrU: function(e, t) {
                  return e + t
              }
          };
    let r, s = o[i(583)](n[1 * 58 + 905 * 5 + 18 * -254][i(1559)], ""),
        a, l;
    return {
        c() {
            const s = i,
                  e = {
                      nEmxu: o[s(1460)],
                      oIIFp: o[s(677)],
                      UlCKy: function(e, t, n) {
                          return o["gdoTN"](e, t, n)
                      },
                      AeAhK: s(393),
                      cMNxE: function(e) {
                          return e()
                      },
                      eUuSV: function(e, t, n) {
                          const i = s;
                          return o[i(549)](e, t, n)
                      },
                      Ehkbg: o[s(642)],
                      bAadG: o["nBXmx"],
                      CeMlL: function(e, t) {
                          const n = s;
                          return o[n(1458)](e, t)
                      },
                      XHovn: function(e, t) {
                          const n = s;
                          return o[n(1458)](e, t)
                      },
                      YyXCp: function(e, t) {
                          return e !== t
                      },
                      OfXAt: o[s(529)],
                      HYHCs: o[s(613)],
                      mEgcg: s(1389),
                      kqhzw: function(e, t) {
                          return o["IesOB"](e, t)
                      },
                      zwlWh: o[s(904)],
                      tFqCO: function(e) {
                          const t = s;
                          return o[t(999)](e)
                      },
                      GAnTz: s(851)
                  };
            if ("JokUX" !== o[s(550)]) {
                const t = {};
                t[s(1028)] = !(2658 * 2 + -9838 + -17 * -266), _0x4af040(e["nEmxu"], e[s(761)]), e["UlCKy"](_0x4d3518, e[s(962)], _0x56cfcd), e[s(1055)](_0x477b4a), e["eUuSV"](_0x240656, e[s(293)], _0x453669[s(1296)] ? _0x18099a[s(1313)](e => e[s(1143)][s(1112)])[s(486)](", ") : e[s(1362)]), _0x131894 && e[s(1226)](_0x1ca35b, s(926)), _0x412539 && e[s(1539)](_0x1e537f, _0x280c40), e[s(910)](_0x482cc4, void(-1 * -313 + 6992 + -7305)) && _0x57dc45(s(816), _0x2f7259), _0x2ae15c !== void(-1146 + 3099 + -1953) && e[s(1539)](_0x188bc2, _0x466436), _0x5b6f49 = _0x109df8["closest"](e[s(784)]), _0x25ab78 && (_0x28f8bb[s(742)](s(1363), _0x328889, t), _0x449f67[s(742)](e[s(1123)], _0x3e17f1), _0x4a28b1 === e[s(1359)] && _0x4ebb54[s(742)]("focusin", _0x83c441)), e[s(1036)](_0x52c9f0, e[s(1245)]) && (_0x30f596 ? e[s(477)](_0x11e6fc) : _0x5e098b()), _0x5ef94c && (_0x4b21a6 || _0xd625bb) && _0x118945(e[s(1503)]), _0x193634(() => {
                    const e = s;
                    _0x3e3241(e(1211))
                })
            } else r = ff(o["yWBNO"]), a = o["PzuxO"](mf), l = o[s(1458)](ff, o["CrYGE"]), o[s(850)](M, l, o["dnNvF"], o["ETDCU"]), o[s(823)](M, l, s(726), n[-8129 + -9 * 228 + 679 * 15]), l[s(1344)] = n[1542 + -4559 + 3023 * 1]
        },
        m(e, t) {
            const n = i;
            o[n(1164)](o[n(1133)], o[n(1527)]) ? (_0x5bd04d = o[n(1068)](_0x3e9e83, o["yrSWu"]), o[n(1412)](_0x2ecc6d, o[n(1413)]) && o[n(850)](_0x52f14e, _0x166e70, o[n(1314)], _0xf230dc)) : (o["eQWxj"](df, e, r, t), r[n(407)] = s, df(e, a, t), o[n(1613)](df, e, l, t))
        },
        p(e, t) {
            const n = i;
            t[1 * 7496 + -3679 + -3817 * 1] & -233 + -430 * 4 + -1 * -4001 && o[n(1412)](s, s = e[1 * 6881 + -1 * -1037 + -7907][n(1559)] + "") && (r[n(407)] = s), o[n(1406)](t[-1 * -88 + 4321 + -4409], 826 + -1 * 4724 + 103 * 38) && M(l, n(726), e[-13 * -710 + 2 * 2908 + -15042]), o[n(1406)](t[8 * 835 + -9593 + 1 * 2913], -330 + -12 * -478 + 2 * -2671) && (l[n(1344)] = e[-1 * 3727 + -1500 + 5233])
        },
        d(e) {
            const t = i;
            if (o[t(566)](t(884), o[t(283)])) e && (o[t(1068)](uf, r), o[t(383)](uf, a), o[t(383)](uf, l));
            else return this["$$"][t(1200)][26 * 95 + 7830 + -10298]
        }
    }
}

function m1(t) {
    const o = Oe,
          r = {
              NHNgN: function(e, t) {
                  return e(t)
              },
              rLMHo: o(832),
              ZGchL: o(1294),
              fxQrQ: function(e, t) {
                  return e(t)
              },
              TxvPK: o(1260),
              IEBqR: function(e, t, n, i) {
                  return e(t, n, i)
              },
              MvKph: o(940),
              vALlc: function(e, t, n, i) {
                  return e(t, n, i)
              },
              wBzOr: "fill",
              qaVjk: "currentColor",
              BBFWh: "M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z",
              EOUOo: "M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z",
              pjDDT: function(e, t, n, i) {
                  return e(t, n, i)
              },
              KvLEm: o(479),
              XhlGe: o(1475),
              pjZKO: function(e, t, n, i) {
                  return e(t, n, i)
              },
              LINxY: o(1160),
              meogQ: o(1300),
              dmADF: "href",
              hisMZ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              uKycY: o(1366),
              rWvov: "class",
              TxCqo: o(1513),
              npYHp: function(e, t, n, i) {
                  return e(t, n, i)
              },
              YlWsy: o(1291),
              NHbRd: function(e) {
                  return e()
              },
              GLQwi: function(e, t) {
                  return e === t
              },
              sAWpK: function(e, t, n, i) {
                  return e(t, n, i)
              },
              HrRlJ: function(e, t, n) {
                  return e(t, n)
              },
              cmmDr: "HfyqG",
              IZhRr: function(e, t) {
                  return e & t
              },
              soGgu: function(e, t, n, i) {
                  return e(t, n, i)
              },
              gfftj: function(e, t, n, i) {
                  return e(t, n, i)
              },
              HJWTJ: function(e, t) {
                  return e !== t
              },
              sAbws: "APGSo"
          };
    let a, l, c, d, u, f, i;
    return {
        c() {
            const e = o;
            a = r[e(344)](ff, r[e(1609)]), l = r["NHNgN"](ff, "a"), c = r[e(344)](hf, r[e(511)]), d = r["fxQrQ"](hf, r[e(1341)]), u = r[e(344)](hf, r[e(1341)]), f = r[e(1604)](hf, r["TxvPK"]), r["IEBqR"](M, d, "d", r[e(1278)]), r["vALlc"](M, d, r[e(493)], r[e(951)]), M(u, "d", r["BBFWh"]), r["IEBqR"](M, u, r[e(493)], r["qaVjk"]), M(f, "d", r[e(321)]), r[e(679)](M, f, r[e(493)], r["qaVjk"]), r[e(1213)](M, c, r[e(735)], "22"), r[e(903)](M, c, e(671), "22"), r[e(903)](M, c, e(620), r[e(828)]), r["pjZKO"](M, c, e(591), r[e(1462)]), M(c, r[e(319)], e(856)), r[e(1213)](M, l, r[e(1376)], S1), r[e(1221)](M, l, e(1494), r[e(1546)]), M(l, r["rWvov"], r[e(431)]), r[e(1146)](M, l, r[e(985)], i = t[-7871 * 1 + 1 * -2063 + 9945][e(517)])
        },
        m(e, t) {
            const n = o,
                  i = {
                      RMuev: function(e) {
                          const t = k1;
                          return r[t(922)](e)
                      }
                  };
            if (r[n(1144)](n(272), n(793))) {
                const s = {};
                s[n(436)] = _0x147ffa, this[n(522)](s), i[n(919)](_0x25d374)
            } else r[n(365)](df, e, a, t), rf(a, l), rf(l, c), r["HrRlJ"](rf, c, d), rf(c, u), rf(c, f)
        },
        p(e, t) {
            const n = o;
            if (r["GLQwi"](r["cmmDr"], n(1232))) return _0x38d130[n(557)](_0x2fb07d);
            else r[n(634)](t[-34 * -261 + 4 * 1389 + 13 * -1110], -3808 + 7306 + -1450) && i !== (i = e[23 * -13 + 1928 * 5 + -9330][n(517)]) && r["soGgu"](M, l, r[n(985)], i)
        },
        d(e) {
            const n = o,
                  t = {
                      RGqcW: function(e, t, n, i) {
                          const s = k1;
                          return r[s(1249)](e, t, n, i)
                      }
                  };
            if (r[n(1386)](r[n(546)], r["sAbws"])) {
                const i = {};
                i["cancelable"] = _0x3afabc;
                const s = t[n(1316)](_0x1265aa, _0x26642b, _0x389074, i);
                return _0x14d752["slice"]()[n(699)](e => {
                    const t = n;
                    e[t(1405)](_0x239279, s)
                }), !s[n(630)]
            } else e && r[n(344)](uf, a)
        }
    }
}

function g1(e) {
    const o = Oe,
          r = {
              dPWWV: function(e, t) {
                  return e === t
              },
              uBQKO: function(e, t) {
                  return e(t)
              },
              ckXHD: function(e, t) {
                  return e !== t
              },
              hgAEr: o(1560),
              CScwS: o(767),
              ONnMw: o(832),
              Akhpd: function(e, t) {
                  return e(t)
              },
              kITiu: o(1294),
              PMPOn: function(e) {
                  return e()
              },
              CsAbC: function(e, t, n, i) {
                  return e(t, n, i)
              },
              jhaLA: o(392),
              ViPwO: o(1192),
              SObqV: function(e, t, n, i) {
                  return e(t, n, i)
              },
              yvaFv: o(1225),
              Sbatp: "M6 18L18 6M6 6l12 12",
              cobxd: function(e, t, n, i) {
                  return e(t, n, i)
              },
              tOPNp: "width",
              mpebe: o(671),
              xoDju: o(1300),
              FKUiQ: o(856),
              RyhOt: function(e, t, n, i) {
                  return e(t, n, i)
              },
              laUGl: o(591),
              fIqLB: function(e, t, n, i) {
                  return e(t, n, i)
              },
              jtGKl: o(620),
              RCHdm: o(346),
              tjbAE: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ppUfC: o(271),
              uaQvS: "1.5",
              hrttr: o(448),
              iMQBa: o(1592),
              bSXah: function(e, t) {
                  return e + t
              },
              OMEZy: o(773),
              JaARX: function(e, t, n, i) {
                  return e(t, n, i)
              },
              jhQYS: function(e, t, n) {
                  return e(t, n)
              },
              MzfSy: function(e, t, n) {
                  return e(t, n)
              },
              sPOkI: function(e, t) {
                  return e(t)
              },
              WUbxL: function(e, t) {
                  return e(t)
              },
              QirXU: function(e, t) {
                  return e(t)
              }
          };
    let a, l, c, d;

    function i(e, t) {
        const n = o;
        if (r[n(1117)]("hyiSV", "hyiSV")) return r[n(1117)](e[718 + -940 + 229], c1[n(1248)]) ? x1 : y1;
        else _0x24958f && _0x281ba1(_0x5ca859)
    }
    let s = r[o(1235)](i, e),
        u = r["QirXU"](s, e);
    return {
        c() {
            const n = o,
                  e = {
                      WqpMH: function(e, t) {
                          const n = k1;
                          return r[n(925)](e, t)
                      }
                  };
            if (r[n(1126)](r[n(934)], r[n(465)])) a = r[n(925)](ff, r["ONnMw"]), l = r[n(1116)](hf, r[n(1063)]), c = r[n(1116)](hf, n(1260)), d = r["PMPOn"](mf), u["c"](), r[n(1168)](M, c, r["jhaLA"], r[n(1388)]), r[n(1024)](M, c, r[n(653)], r[n(1388)]), r[n(1024)](M, c, "d", r[n(1457)]), r[n(899)](M, l, r[n(621)], "14"), M(l, r[n(938)], "14"), r[n(1024)](M, l, r["xoDju"], r["FKUiQ"]), r[n(1189)](M, l, r[n(1309)], "none"), r["fIqLB"](M, l, r["jtGKl"], r[n(1556)]), r[n(1157)](M, l, r[n(655)], r[n(1136)]), r["SObqV"](M, l, r[n(1432)], n(690)), r[n(1189)](M, a, "class", r[n(732)]);
            else {
                const t = {};
                t[n(806)] = function(e, t) {
                    return e !== t
                };
                const i = t;
                if (!e[n(1579)](_0x1b39e0, _0x13a6e1)) return _0x177e04;
                const s = this["$$"][n(1497)][_0x2b89a8] || (this["$$"]["callbacks"][_0x411aeb] = []);
                return s[n(959)](_0x20666d), () => {
                    const e = n,
                          t = s[e(1003)](_0x46affb);
                    i[e(806)](t, -(-5969 + -4683 + 10653)) && s[e(1206)](t, -11 * 151 + 582 + 15 * 72)
                }
            }
        },
        m(e, t) {
            const n = o;
            r[n(754)] === r[n(754)] ? (r["JaARX"](df, e, a, t), r[n(765)](rf, a, l), r[n(1563)](rf, l, c), r[n(1563)](rf, a, d), u["m"](a, null)) : _0x775679[-8018 + -5 * 1811 + 9 * 1897] & -4622 + -31 * 83 + 13 * 711 && _0x1a9be6 !== (_0x9b2d5a = r[n(1247)](_0x38dbf4[-1 * -5184 + -1 * -2194 + -7367][n(957)], "")) && (_0x4e321a["innerHTML"] = _0x390b24)
        },
        p(e, t) {
            const n = o;
            r[n(1117)](s, s = r[n(880)](i, e)) && u ? u["p"](e, t) : (u["d"](8618 + 3742 + -12359), u = r[n(880)](s, e), u && (u["c"](), u["m"](a, null)))
        },
        d(e) {
            const t = o;
            e && r[t(1116)](uf, a), u["d"]()
        }
    }
}

function y1(t) {
    const i = Oe,
          s = {
              tgKDT: function(e, t) {
                  return e(t)
              },
              HtGUX: i(832),
              QwBSd: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ZhIXG: i(473),
              thsTt: function(e, t, n, i) {
                  return e(t, n, i)
              },
              lNHIE: function(e, t) {
                  return e !== t
              },
              ZNhYH: function(e, t) {
                  return e + t
              },
              MFghe: function(e, t, n, i) {
                  return e(t, n, i)
              },
              qXLAS: "fbDCm",
              vzRsM: i(1338),
              IMhrT: function(e, t) {
                  return e + t
              }
          };
    let o, r = s[i(416)](t[7 * -970 + -8189 * 1 + -2998 * -5][i(1023)], "");
    return {
        c() {
            const e = i;
            o = s[e(1589)](ff, s["HtGUX"]), s[e(358)](M, o, s["ZhIXG"], t[-2227 + 8641 + -6409])
        },
        m(e, t) {
            const n = i;
            s["thsTt"](df, e, o, t), o[n(407)] = r
        },
        p(e, t) {
            const n = i;
            t[4951 * -2 + -4815 + 1 * 14717] & -14 * -59 + -2 * 657 + 317 * 8 && s[n(812)](r, r = s[n(817)](e[-5191 + 8261 + -7 * 437][n(1023)], "")) && (o[n(407)] = r), t[-1966 * 3 + 8306 + -2408] & -1655 + -848 * 2 + -17 * -199 && s["MFghe"](M, o, s[n(892)], e[-1 * 2587 + 8520 + -4 * 1482])
        },
        d(e) {
            const t = i;
            if (s["lNHIE"](s[t(418)], s[t(1053)])) e && s[t(1589)](uf, o);
            else return this["$$"]["ctx"][-25 * 2 + -1 * -557 + -53 * 9]
        }
    }
}

function x1(t) {
    const i = Oe,
          s = {
              qOwAQ: function(e, t) {
                  return e(t)
              },
              XjnPy: i(832),
              rrceQ: i(473),
              Wqvlh: function(e, t, n, i) {
                  return e(t, n, i)
              },
              QgTkL: function(e, t) {
                  return e & t
              },
              PkvvC: function(e, t) {
                  return e !== t
              },
              dXQEj: function(e, t) {
                  return e + t
              },
              JTVFZ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              KEyyk: function(e, t, n) {
                  return e(t, n)
              },
              mMYit: function(e, t, n) {
                  return e(t, n)
              },
              mDOYM: function(e, t, n) {
                  return e(t, n)
              },
              alJnS: "change",
              FLqHy: function(e, t, n, i) {
                  return e(t, n, i)
              },
              zYAxo: function(e, t, n, i) {
                  return e(t, n, i)
              },
              GKHlQ: i(697),
              FBDvL: i(942),
              jnoKA: function(e, t) {
                  return e(t)
              },
              qxBfC: function(e, t) {
                  return e + t
              }
          };
    let o, r = s[i(844)](t[-9923 * -1 + -187 + 9725 * -1][i(695)], "");
    return {
        c() {
            const e = i;
            o = s[e(406)](ff, s[e(1030)]), M(o, s[e(610)], t[-5614 + -2 * -4867 + 5 * -823])
        },
        m(e, t) {
            const n = i;
            s[n(1593)](df, e, o, t), o[n(407)] = r
        },
        p(e, t) {
            const n = i;
            s[n(656)](t[512 + -1 * 2833 + 2321 * 1], 1561 * -3 + 1957 + -4774 * -1) && s[n(1373)](r, r = s[n(1439)](e[-5305 + 160 * 35 + -284]["expired"], "")) && (o["innerHTML"] = r), t[5 * 1713 + 1571 * -1 + -6994] & -2 * -4983 + 1535 + -11469 && s[n(1593)](M, o, s[n(610)], e[-1 * 5853 + -6 * -921 + 332])
        },
        d(e) {
            const t = i;
            s[t(1140)] !== t(942) ? (_0x52b1be && _0x4ea446["m"](_0x2881f7, _0x4ac0ec), s["Wqvlh"](_0x7b8869, _0x417aa5, _0x39009c, _0x53272a), s[t(488)](_0x3beb2e, _0x5d043e, _0x549143, _0x5a0ee8), s[t(943)](_0xa2e692, _0x2a5f8b, _0x34d4a5), _0x1ae17e && _0x13f647["m"](_0x2876a0, null), s["KEyyk"](_0x35f289, _0x5b7afe, _0x39eca7), s[t(943)](_0x53c0dd, _0x2862a9, _0x256adb), s[t(1303)](_0x31dcbc, _0x49a83e, _0x25e754), _0x452eff[t(1531)] = _0x39ac09[-9537 + -3392 + 12937], s["KEyyk"](_0x1b35af, _0x5d9e9f, _0x202cde), _0x4fc4a1(_0x5bf6c5, _0x57f7bf), _0x2bce2f["m"](_0x599a29, null), s["mMYit"](_0x411507, _0x5532cb, _0x26cccb), _0x463c0b && _0x31eae8["m"](_0x5bbb53, null), s["KEyyk"](_0xae5a0c, _0x3719fb, _0xed2d8d), _0x478e3c && _0x3d85c1["m"](_0x368641, null), s[t(1615)](_0x2a68b5, _0x11fee9, _0x1934be), _0x3c8fcd && _0x115ca1["m"](_0x158942, null), s[t(1303)](_0x4aaf5d, _0xf748ea, _0x498c05), _0x1d56b6 && _0x3647c4["m"](_0xc18616, null), _0x4e1b76[-31 * 113 + 1534 + -2 * -1009](_0x35c3f1), _0x23bd98 = !(274 * 18 + -2111 + 13 * -217), _0x5a4721 || (_0x7bd4f2 = [s["Wqvlh"](_0xaa13a3, _0x18254d, s[t(309)], _0x555103[-5056 + -9967 + 15070]), s[t(619)](_0x45e576, _0x43a426, s["alJnS"], _0x4912c2[-6133 + -6143 + 12289]), s[t(1442)](_0x34ad9c, _0x12eeb2, s[t(1108)], _0x4d03f9[288 + -9 * 280 + 2246])], _0x334f26 = !(8141 * -1 + -7897 + -2673 * -6))) : e && s[t(543)](uf, o)
        }
    }
}

function w1(e) {
    const s = Oe,
          o = {
              CliRJ: function(e, t) {
                  return e(t)
              },
              NBpaB: s(832),
              JzQKe: function(e, t, n, i) {
                  return e(t, n, i)
              },
              LvxUZ: s(1408),
              dhYZu: s(1135),
              xuFng: function(e, t, n, i) {
                  return e(t, n, i)
              },
              PxneK: s(1576),
              TNilb: s(1434),
              vHtcy: function(e, t, n, i) {
                  return e(t, n, i)
              },
              nvJLb: function(e, t, n) {
                  return e(t, n)
              },
              VAdas: function(e, t, n) {
                  return e(t, n)
              },
              YUSML: s(838),
              cBcOK: function(e, t) {
                  return e === t
              },
              nkHKN: "hRzth",
              Usexu: "EWATv",
              rlCeZ: function(e, t) {
                  return e & t
              },
              Yeupy: function(e, t) {
                  return e + t
              },
              RWiJw: s(673),
              GlXWK: s(336),
              CzEdW: function(e, t) {
                  return e(t)
              }
          };
    let r, a, l = o[s(1364)](e[-9997 + 7082 + 133 * 22]["footer"], "");
    return {
        c() {
            const e = s;
            r = o[e(909)](ff, o[e(1407)]), a = o[e(909)](ff, o["NBpaB"]), o[e(1056)](M, a, o[e(607)], o[e(1611)]), o[e(1274)](M, r, e(1408), e(748))
        },
        m(e, t) {
            const n = s;
            if (o[n(1258)] === o["TNilb"]) {
                const i = {};
                return i[n(816)] = _0x312f06, i[n(1330)] = _0x13d1f6, i["challengeurl"] = _0x389409, i["debug"] = _0x2be8c6, i[n(1269)] = _0x4585db, i[n(1476)] = _0x316ca8, i["floating"] = _0x1dad4e, i[n(685)] = _0x48d405, i[n(1067)] = _0x481a16, i["hidefooter"] = _0x2704a9, i["hidelogo"] = _0x494795, i[n(726)] = _0x3b0ca0, i[n(652)] = _0x31b987, i[n(1594)] = _0x4d169a, i[n(1399)] = _0x307c99, i["refetchonexpire"] = _0x19c331, i[n(1437)] = _0x42b564, i[n(744)] = _0x2795d0, i["test"] = _0x59e809, i[n(953)] = _0x59f2ce, i[n(393)] = _0x4672a4, i[n(436)] = _0x414458, i
            } else o[n(472)](df, e, r, t), o["nvJLb"](rf, r, a), a[n(407)] = l
        },
        p(e, t) {
            const n = s,
                  i = {
                      qPKXM: function(e, t, n) {
                          const i = k1;
                          return o[i(1342)](e, t, n)
                      },
                      PAhpj: o[n(1049)]
                  };
            o["cBcOK"](o[n(600)], o[n(475)]) ? i[n(722)](_0x57bfda, i[n(350)], _0x480732) : o[n(1224)](t[-8233 + -47 * -135 + 1888], 5963 + -5735 + -140 * -13) && l !== (l = o[n(1364)](e[5806 * 1 + -137 * 11 + -4288][n(647)], "")) && (a[n(407)] = l)
        },
        d(e) {
            const t = s;
            if (o[t(629)] !== o["GlXWK"]) e && o[t(944)](uf, r);
            else return this["$$"][t(1200)][-2740 + -5 * 1572 + -3 * -3541]
        }
    }
}

function b1(i) {
    const s = Oe,
          o = {
              pRqJs: function(e, t) {
                  return e !== t
              },
              KNrwc: s(980),
              nlhhJ: function(e, t) {
                  return e(t)
              },
              yWvMl: s(832),
              qedLD: function(e, t, n, i) {
                  return e(t, n, i)
              },
              OLljL: s(1408),
              ZxSYP: s(762),
              XjqWp: function(e, t, n, i) {
                  return e(t, n, i)
              },
              XulQK: function(e, t, n) {
                  return e(t, n)
              },
              lpxtL: function(e, t) {
                  return e !== t
              },
              lBwGo: "mROdD"
          };
    let r;
    return {
        c() {
            const e = s;
            if (o["pRqJs"](e(980), o[e(326)])) {
                const t = this[e(1263)][e(1025)](_0x54fd63, _0x6077c0);
                this[e(290)][e(1545)](_0x381c9a, t)
            } else r = o["nlhhJ"](ff, o["yWvMl"]), o[e(1374)](M, r, o[e(1251)], o[e(355)])
        },
        m(e, t) {
            const n = s;
            o[n(1203)](df, e, r, t), i[-9975 + 5351 + -292 * -16](r)
        },
        p: zu,
        d(e) {
            const t = s,
                  n = {
                      YtDyz: function(e, t, n) {
                          const i = k1;
                          return o[i(1418)](e, t, n)
                      }
                  };
            if (o[t(756)]("mROdD", o[t(411)])) return n["YtDyz"](_0x3806b3, _0x31a022[t(1239)] || _0xbec9e7, _0x41c368), _0x2eb5b1[t(1323)];
            else e && o[t(1219)](uf, r), i[8637 + 568 + -1 * 9157](null)
        }
    }
}

function v1() {
    const e = ["msWGu", "LkXDJ", "xGsSd", "sgnTP", "vunhD", "pReuG", "blockspam", "key", "4Ipzkcb", "ncBrq", "GJxgh", "UJcxz", "MPAfx", "RSGBm", "vtfOu", "IKoav", "cRkNg", "TxvPK", "VAdas", "YVHto", "value", "mocking error", "Biaan", "onErrorChange", "data:text/javascript;base64,", "wuYqN", "algorithm", "pTBxc", "removeEventListener", "csuhG", "eRuag", "before_update", "oQTwK", "SAnuT", "floor", "mEgcg", "documentElement", "kkfSP", "bAadG", "submit", "Yeupy", "ayVRl", "_blank", "RpAMG", 'input[name="', "311678FumWmk", "FnOYN", "qUzoW", "gSIce", "PkvvC", "qedLD", "WmITY", "dmADF", "SPebk", "onload", "kGfnr", "KSSoC", "OJbTZ", "on_destroy", "2124355dTxESq", "PKdVC", "ZWLJb", "HJWTJ", "JOist", "ViPwO", "onfocus", "eXDRu", "eVLkn", "WEQVV", "OAoLu", "nFoiL", "DDouh", "NGzCA", "YZebk", "subtle", "obfuscated", "kHvtF", "DnePO", "lNomP", "HTmkA", "fvZPT", "call", "JQlxz", "NBpaB", "class", "DixiV", "ZSyfl", "hcyJD", "rrzcS", "hJsot", "zBLGZ", "ftXFH", "HRwVP", "update", "XulQK", "aEKZN", "[name=", "M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z", "Object", "zORhn", "dHpDA", "plugins", "$$ctor", "host", "SMOpe", "ioWDF", "jpPuP", "LsZwB", "hrttr", "FZHBd", "dKzNX", "xgDBz", "LYEln", "spamfilter", "application/json", "dXQEj", "lZvlm", "yPbwr", "zYAxo", "WFbuV", "ETGvJ", "FFbHI", "ZrhoA", "QQXvy", "EKOMO", "btoSb", "iGWzJ", "HKfHj", "eDbmf", "uemgU", "slot", "KnEok", "ubpAi", "Sbatp", "wHkfg", "CQNal", "AZiPL", "checkbox", "LINxY", "ERROR", "tjOQN", "wToUl", "wgdYx", "xTZlM", "state", "gefsA", "left", "false", "HVXIz", "batKB", "AtwSk", "0 0 20 20", "expire", "ERvSv", "M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z", "element", "yVvIe", "gyxPE", "NcrWg", "Cxvor", "zJdUR", "eNLPR", "serververification", "solve", "Miueg", "WZDrA", "ffRyr", "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z", "verify", "HhiWw", "target", "MbBKr", "clientHeight", "callbacks", "PDflU", "GsSOv", "hHlfF", "kwpZg", "hbuvy", "GAnTz", "uHKtj", "Fuqwe", "get", "fields", "Uivxy", "FbPLi", "AAbMg", "classifier", "PiOOe", "altcha-logo svelte-ddsc3z", "UkZVn", "QqcVp", "kXGtE", "LYlkr", "altchaCreateWorker", "defineProperty", "PPDMS", "anchor", 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])', "X-Altcha-Config", "uPJpA", "HyEBD", "getAttribute", "tywSB", "RlxrV", "querySelectorAll", "eQqIy", "checked", "vHrzl", "XMPtC", "XvybN", "MkVJz", "sMrxD", "ggNqv", "ZkUeS", "XHovn", "lqjAA", "DrOpW", "__svelte", "MSVJl", "/altcha", "set", "uKycY", "AGdGU", "expectedCountries", "fAWOT", "luXhf", "VkRcD", "bctlO", "ieoGb", "gvcYW", "qyHno", "RCHdm", "wLPDa", "yRzVW", "verified", "SLSyh", "M6 18L18 6M6 6l12 12", "VGhsb", "MzfSy", "GGSBL", "replace", "xtJaE", "VBhBP", "lqdbC", "hFvBr", "oTIqS", "qjJPS", "YWNnx", "mXcRc", "BhSXa", "ZyTCQ", "iOQXb", "clientWidth", "IILem", "WqpMH", "ZlSNB", "AmnWo", "GXKCG", "hZfwA", "FuupB", "jbqYF", "altcha svelte-ddsc3z", "ObAbf", "removeAttribute", "tgKDT", "AES-GCM", "DvmDG", "altcha-error svelte-ddsc3z", "Wqvlh", "mockerror", "fZHrD", "Jjhmw", "UJIhu", "cuxMf", "EryKC", "SNPId", "NxrfB", "QgwCx", "uypmc", "fxQrQ", "FmHtO", "lnmnb", "YbvlX", "KsRCQ", "rLMHo", "ELPPJ", "dhYZu", "hzlBp", "aeAic", "nsnCy", "mDOYM", "aQTOj", "xuyJp", "timeZone", "MUUsD", "x-altcha-spam-filter", "expectedLanguages", "intro", "iyjFq", "stroke-width", "Vptfp", "number", "FtCaV", "SxCZm", "fLuak", "reject", "arsOR", "IUOxB", "setFloatingAnchor", "cdxAn", "Nojlf", "SkjJa", "rUlcJ", "NYwXb", "off", "clearText", "rxxmK", "zKqkp", "$$l_u", "zYLgQ", "$$cn", "Ehkbg", "Kxcaj", "WVpOm", "SHA-256", "YiGKU", "IryLE", "WHNBC", "MNRJn", "Kdywf", "span", "yUSpM", "UbjfQ", "refetchonexpire", "mAdNR", "attributes", "QBDAO", "alJnS", "XzjID", "(?<!\\r)\\n", "Challenge is too short. Min. 40 chars.", 'input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])', "CtzAd", "reduce", "xsAoi", "$$l", "PEofw", "meogQ", "pAQbj", "EOUOo", "log", "bound", "YRPWT", "ZaMKA", "KNrwc", "ydmRz", "prototype", "AprAP", "XOMWw", "onsubmit", "aCdhc", "ESGmi", "JmtSz", "ReFip", "SMKFh", "CzgVs", "Qjrtu", "PmwHG", "aufra", "payload", "PnfVr", "define", "NHNgN", "QUXHX", "0 0 24 24", "wgrlC", "LzMPw", "iNbHK", "PAhpj", "data-state", "add", "YxxYc", "JNgiu", "ZxSYP", "ZEsuX", "XZRwM", "QwBSd", "yndRC", "ipAddress", "oJple", "YMAqy", "ucjLt", "jtcJg", "sAWpK", "toUpperCase", "nmOtQ", "cQYNf", "etbWf", "form", "FzxTs", "digest", "scroll", "eHJct", "pop", "8ezOkqN", "jKzOt", "DVyiv", "YSbBO", "hCzsd", "TiASR", "open", "IpmAo", "BpAPi", "wEjUZ", "sGqax", "WIDYS", "then", "ownerDocument", "nDJkG", "AnmjC", "stroke-linecap", "workers", "Server responded with ", "XayQe", "ExYZC", "SEuAG", "jPRBm", "NiuFq", "BvtGj", "kfmbH", "phlpQ", "mkbHE", "default", "zzUWa", "qOwAQ", "innerHTML", "mJNcD", "pWMIN", "signature", "lBwGo", "JuSfl", "tUJMA", "wMNtC", "reset", "IMhrT", "BvFtq", "qXLAS", "rUmAP", "KCuLl", "TbNjV", "KjrTx", "UlIpH", "HsDEe", "StYga", "RsOvQ", "GekuB", "kKMoA", "TvgiD", "toAttribute", "TxCqo", "tLJoR", "EQDrB", "xXCkP", "xBFrm", "workerurl", "zPYgx", "hsiVg", "fBNwB", "$destroy", "deGTx", "textContent", "encode", "GhDrv", "cMKwN", "qNMki", "VNUKR", "stroke", "JokUX", "altchaPlugins", "gPLCF", "SrlXx", "Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.", "LMLWn", "$$r", "auKSB", "bottom", "altcha-spinner svelte-ddsc3z", "kmkHZ", "bubbles", "PvOQB", "ZPDwP", "xTIgt", "tTkvi", "CScwS", "susTx", "SpamFilter returned negative classification.", "decrypt", "https://altcha.org/", "JkoJC", "postMessage", "vHtcy", "title", "JXnPl", "Usexu", "XUqxT", "tFqCO", "10799610qWSzhu", "width", "Verification failed. Try again later.", "pYnxG", "ojDtq", "salt", "AxUAA", "data", "join", "sltwO", "JTVFZ", "lkypW", "XyzWO", "email", '">ALTCHA</a>', "wBzOr", "dirty", "attributeChangedCallback", "FCZPu", "KSeCl", "wsjQR", "wKgNP", "xkkvM", "BWHPx", "icBuy", "QIIYX", "oppmy", "IXHHh", "setAttribute", "hHfyP", "uKzcN", "UPWsc", "SKpsn", "ZGchL", "bOQOd", "eSucG", "$set", "jSsYY", "DjcnP", "ariaLinkLabel", "vbWKw", "iqlaL", "parse", "json", "$$set", "cancelable", "MJzhN", "getRootNode", "hydrate", "slice", "tCoDO", "tVoRf", "SkziS", "UEfHT", "$$g_p", "RTumo", "KeSCp", "action", "duxLh", "kpxzQ", "challenge", "YBycX", "rUKUC", "childNodes", "Number", "jnoKA", "iOVFP", "hsENE", "sAbws", "stringify", "SGyGr", "gdoTN", "CEMdS", "SkPwE", "qPwIA", "bBJuM", "LPPNP", "Unknown algorithm value. Allowed values: ", "RrShO", "createTextNode", "WrfrM", "ASaEP", "jEIFW", "gZfHz", "reportValidity", "utFTu", "YiveE", "catch", "IesOB", "mrlPu", "getTime", "JgWfF", "IJRWf", "VJgJO", "gYULU", "bAQVL", "qWkSF", "JodZM", "rfhHZ", "cEpdb", "icruo", "fCLrN", "altcha", "lMFio", "REQwz", "PmDrU", "TbrNq", "rILhX", "GLauD", "hvtzC", "TYBBt", "znCBX", "TXUuw", "fill", "ltUdh", "raw", "filter", "uBbDY", "IaGES", "OHUYm", "nLYYy", "npKXE", "nkHKN", "nasQj", "cFjHP", "mspnc", "QvhIR", "wXanm", "NwZGK", "LvxUZ", "CISmp", "style", "rrceQ", "promise", "LjRwb", "hKXPl", "Unexpected result returned.", "requestSubmit", "fxbjC", "AjoMY", "CKkig", "FLqHy", "viewBox", "tOPNp", "getState", "plNbb", "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gcChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGIoZSx0LHI9IlNIQS0yNTYiLG49MWU2LHM9MCl7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyLGE9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgYz1zO2M8PW47Yys9MSl7aWYoby5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCB3KHQsYyxyKT09PWUpcmV0dXJue251bWJlcjpjLHRvb2s6RGF0ZS5ub3coKS1hfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjpvfX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBnKGUsdD0xMil7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXJbbl09ZSUyNTYsZT1NYXRoLmZsb29yKGUvMjU2KTtyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBtKGUsdD0iIixyPTFlNixuPTApe2NvbnN0IHM9IkFFUy1HQ00iLG89bmV3IEFib3J0Q29udHJvbGxlcixhPURhdGUubm93KCksbD1hc3luYygpPT57Zm9yKGxldCB1PW47dTw9cjt1Kz0xKXtpZihvLnNpZ25hbC5hYm9ydGVkfHwhY3x8IXkpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOnMsaXY6Zyh1KX0sYyx5KTtpZihkKXJldHVybntjbGVhclRleHQ6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGQpLHRvb2s6RGF0ZS5ub3coKS1hfX1jYXRjaHt9fXJldHVybiBudWxsfTtsZXQgYz1udWxsLHk9bnVsbDt0cnl7eT1oKGUpO2NvbnN0IHU9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGYuZW5jb2RlKHQpKTtjPWF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHUscywhMSxbImRlY3J5cHQiXSl9Y2F0Y2h7cmV0dXJue3Byb21pc2U6UHJvbWlzZS5yZWplY3QoKSxjb250cm9sbGVyOm99fXJldHVybntwcm9taXNlOmwoKSxjb250cm9sbGVyOm99fWxldCBpO29ubWVzc2FnZT1hc3luYyBlPT57Y29uc3R7dHlwZTp0LHBheWxvYWQ6cixzdGFydDpuLG1heDpzfT1lLmRhdGE7bGV0IG89bnVsbDtpZih0PT09ImFib3J0IilpPT1udWxsfHxpLmFib3J0KCksaT12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtpZigib2JmdXNjYXRlZCJpbiByKXtjb25zdHtrZXk6YSxvYmZ1c2NhdGVkOmx9PXJ8fHt9O289YXdhaXQgbShsLGEscyxuKX1lbHNle2NvbnN0e2FsZ29yaXRobTphLGNoYWxsZW5nZTpsLHNhbHQ6Y309cnx8e307bz1iKGwsYyxhLHMsbil9aT1vLmNvbnRyb2xsZXIsby5wcm9taXNlLnRoZW4oYT0+e3NlbGYucG9zdE1lc3NhZ2UoYSYmey4uLmEsd29ya2VyOiEwfSl9KX19fSkoKTsK", "delete", "uwCht", "SNJQg", "fFXxL", "RWiJw", "defaultPrevented", "oLWqA", "ODXBs", ".altcha.org", "IZhRr", "OWbCP", "1.0.6", "biYrA", "tyeym", "DcUZT", "eSvOs", "LPHnW", "wYCvB", "getElementById", "IarPo", "jMdZq", "resolve", "footer", "AnHvl", "took", 'input[type="email"]:not([data-no-spamfilter])', "OLUUJ", "maxnumber", "yvaFv", "hidelogo", "ppUfC", "QgTkL", "CDiCl", "SpBJi", "Verifying...", "cxhia", "bRxnw", "NFzGe", "NDZoq", "bnpaf", "louVQ", "POST", "disableRules", "feMpB", "dispatch", "vyBMP", "height", "rzDkl", "rxLlo", "ALTCHA", "M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z", "XUPGv", "OlKUc", "vthcg", "IEBqR", "test", "getPlugin", "xeKGe", "hkBpc", "hycPN", "floatinganchor", "TsCdx", "oAPeG", "NEknx", "mkgIG", "currentColor", "tjyou", "6097365JBuJQf", "QyVdK", "Ntals", "expired", "rpDlH", "invalid", "seMTv", "forEach", "xkrFY", "sWYLE", "lzXmP", "floating", "YQKqv", "CGSkx", "TyWyZ", "SjaCd", "ouJlC", "zwrLc", "shadowRoot", "BmnUj", "Wavpf", "string", "Fwxrb", "koOEg", "Hsitd", "UTSdi", "HoXUe", "function", "FUUQy", "PRmDN", "qPKXM", "DvEXr", "vBkKu", "sEDyQ", "name", "Fmwpu", "acxWA", "URL", "uhTNq", "dVYmF", "iMQBa", "EsCTF", "bFZBL", "KvLEm", "vHLiw", "reflect", "bSBoC", "Pidfl", "LKgqw", "now", "addEventListener", "createElement", "strings", "QUnEM", "xadtO", "RIaRC", "altcha-footer svelte-ddsc3z", "pNJEv", "tEQBc", "OjVxD", "yhREA", "auqju", "OMEZy", "BisDm", "lpxtL", "classification", "Verification expired. Try again.", "lPzvI", "mLuCj", "oIIFp", "altcha-anchor-arrow svelte-ddsc3z", "AmMeK", "resolvedOptions", "jhQYS", "RFzel", "ayLsx", "getConfiguration", "script-widget", "iRgOr", "headers", "uYXFr", "YlIZt", "GloJT", "VifvV", "detail", "BoRsZ", "qMaOl", "Jtswj", "qZDSu", "EfoGx", "HiLoy", "SkagF", "OfXAt", "jPavr", "iErha", "jkFsC", "min", "blockedCountries", "wvjcX", "iWDKe", "on_mount", "dDiNK", "display", "unable to find floating anchor element", "configure", "hATGi", "ARRXy", "toProp", "11zMawxo", "props", "ipYDf", "fIdXn", "RZbTw", "_checkbox", "pjlIt", "ZDYQJ", "dnzPH", "clarify", "IdpjL", "contains", "lNHIE", "top", "altcha-label svelte-ddsc3z", "VTWrv", "auto", "ZNhYH", "PkEoq", "VXALE", "DateTimeFormat", "UNVERIFIED", "ALVxP", "IAeIM", "aIase", "Verified", "uLbPW", "yPDxg", "XhlGe", "TsBAS", "sXVUJ", "GcIXw", "div", "bXfys", "DVJur", "NtYfY", "aceva", "SRSQg", "unable to configure from X-Altcha-Config", "using provided json data", "ISJxc", "sNYiB", "rfDnO", "psPzP", "qxBfC", "ETpuM", "dMcbr", "kUgCy", "find", "wCfdC", "vtrZB", "Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution.", "KjDpK", "AAYtz", "XPSbK", "OEDZw", "http://www.w3.org/2000/svg", "signal", "rfhpB", "unshift", "pmrwj", "tLbZX", "Worker", "DkdNR", "generating test challenge", "nqmMw", "XVMmD", "IeNlO", "terminate", "Pwpsw", "qAynK", "GBlQs", "BAD", "clear", "keys", "gYRBh", "MVjpN", "wwcds", "iEVTg", "oACwl", "sPOkI", "HZFgn", "UBIzc", "Blob", "ZCtQg", "WYexw", "IvUpM", "voCfe", "QidFj", "vGXQx", "VcuDJ", "LUion", "ZhIXG", "kjdek", "revokeObjectURL", "altcha-main svelte-ddsc3z", "challengejson", "observedAttributes", "mxQFz", "cobxd", "WRetO", "ceil", "TaeWM", "vALlc", "payXT", "5HNRthS", "pXiOK", "destroy", "ebNZW", "CliRJ", "YyXCp", "yXSvw", "ROYdt", "HXnRL", "zWdtn", "kZyvV", "wvjwZ", "hTJoh", "TqYzg", "RMuev", "fdDwV", "NziEN", "NHbRd", "JNQKB", "xdCjb", "uBQKO", "using test mode", "obfuscation", "rcjBg", "CAfEe", "QLmpT", "bsGuL", "AmQnn", "ufDUU", "hgAEr", "insertBefore", "jFlsW", "importKey", "mpebe", "aezSN", "M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z", "nAIFR", "ulrJz", "KEyyk", "CzEdW", "PYBIs", "PBCZv", "pKVhh", "TIsuv", "ZvPoW", "YqTWW", "qaVjk", "$$p_d", "verifyurl", "YndCc", "$$scope", "qypAI", "verifying", "wvEQl", "push", "bjjSy", "Invalid challenge. Property algorithm is missing.", "AeAhK", "preventDefault", "SGSUh", "tcuHZ", "GMrxh", "ILqUz", "BuNTi", "fbEJJ", "apiKey=ckey_", "boolean", "OonDO", "qRTXd", "SVbcn", "Naedf", "aSkkC", "TKAEW", "toLowerCase", "ukykh", "ztyop", "WXCGp", "mDwzk", "DihCj", "jiHTp", "YlWsy", "AZHXu", "FRdsE", "TOffB", "Boolean", "3350436bHaHSK", "$$d", "gyrCs", "JMejX", "ENdsE", "bldVl", "EeVeS", "COfAZ", "Jhnij", "PzuxO", "utHRE", "ukTJg", "hcvIR", "indexOf", "hLlpk", "GLdZK", "QWWPp", "bjTII", "rhNVv", "TQqFu", "aLWsK", "eEAbL", "wAgtk", "ktVap", "NLRbo", "zWRjM", "jZayR", "EEeTs", "MlUYd", "ibgwG", "EmUbO", "KJsWZ", "SuKqP", "error", "SObqV", "$on", "focusin", "maBEm", "capture", "kuANw", "XjnPy", "data-floating", "object", "type", "skip_bound", "gXwoE", "kqhzw", "challengeurl", "context", "sfkgy", "tHsGH", "wmJYu", "for", "DQvgF", "DqewF", "change", "DzoJa", "Visit Altcha.org", "fPWQg", "YUSML", "VERIFIED", "MiXtm", "querySelector", "vzRsM", "yhyXa", "cMNxE", "JzQKe", "inHOl", "3|1|2|4|0", "attribute", "all", "SEZCh", "tNnxJ", "kITiu", "pTcYw", "WtFTb", "LhOlM", "floatingoffset", "pfBQT", "zPRHJ", "LmttA", "yvSgZ", "wvulm", "OdyXY", "EzuAs", "kyDwu", "VXcVA", "IooUe", "3604503fBZXnb", "JTpCD", "otRqO", "njMma", "wNzWl", "XFjXI", "XXFUt", "classList", "RKaff", "rqhCM", "bvANK", "hardwareConcurrency", "YBtVJ", "attachShadow", "label", "charCodeAt", "RMoQY", "XNDGS", "vFDxL", "ZdHSr", "expires", "Mocked error.", "OWDQb", "SHA-384", "39PmKXrK", "DFczE", "getFloatingAnchor", "TXlsv", "connectedCallback", "ehFeC", "GKHlQ", "jGdMR", "vVTCo", "OnPyT", "pluginName", "DJSdQ", "toString", "resize", "Akhpd", "dPWWV", "$$s", "input", "FoZpr", "after_update", "cVsrP", "HYHCs", "wLzWr", "xJpSX", "ckXHD", "xkbTV", "eVwAJ", "aSmQV", "LEYwD", '" target="_blank" aria-label="', "MpdwJ", "Ecewg", "debug", "svelte-ddsc3z", "uaQvS", "rgqOS", "onStateChange", "syJWK", "FBDvL", "Ywrmr", "DEoIZ", "constructor", "GLQwi", "create", "npYHp", "LSOkM", "includes", "ieDOC", "RCbpt", "hcBAq", "vIFBf", "AXetD", "VERIFYING", "wdZrs", "stopPropagation", "tjbAE", "vgLkH", "fGoxH", "none", "click", "webkitURL", "setState", "mzJFS", "ELdEs", "hMIbw", "rvXoh", "CsAbC", "rHwpK", "nbFwG", "YBesK", "dkPvB", "BnSUK", "aCbaJ", "HAswK", "gbueJ", "yTUpk", "MKOnJ", "NHhtv", "GkMSA", "QZBBU", "Cjcbr", "VSXHB", "sqBeN", "status", "lJywh", "KRffa", "solution", "RyhOt", "dMxhA", "kONBH", "round", "PznZu", "cDBzB", "IheZj", "drTLh", "IfWaD", "XIjZh", "mounted", "ctx", "sHILj", "href", "XjqWp", "has", "VTFdV", "splice", "xlNyE", "message", "split", "wtYxk", "load", "vjSNg", "pjDDT", "FVWxH", "kWjfZ", "nnhay", "SDkMY", "TtGvj", "nlhhJ", "wReca", "hisMZ", "ltArJ", "aborted", "rlCeZ", "stroke-linejoin", "CeMlL", "qTejr", "mnzHR", "xQKlE", "opacity", "7IuZCoF", "cnaPc", "random", "rrxmL", "WUbxL", "hTAWc", "WUuCQ", "gMuep", "head", "CebuH", "NMgNZ", "jbdoN", "EXCIK", "LvHCc", "zwlWh", "JEtKR", "bSXah", "EXPIRED", "gfftj", "max", "OLljL", "vMUbL", "Oekge", "uCcBg", "KsGmG", "dnviT", "block", "PxneK", "vDCfs", "path", "bHUQd", "RLAxM", "$$c", "fwKuC", "iNmjF", "AxQHr", "LfiKl", "parentNode", "delay", "JAmFB", "Kxxet", "urKrU", "aUqcd", "xuFng", "WHOMF", "vsEwl", "IHeHG", "MvKph", "QyIKx", "IBDnQ", "jloEk", "XmcdB", "kRert", "aSPlT", "NbSSt", "RMLqG", "gVXqp", "bhSmQ", "vQLWY", "LyuQz", "aria-label", "tTekq", "BwwLs", "svg", "TpOZL", "length", "UjHkw", "Attribute challengeurl not set.", "JMxKp", "xmlns", "hidefooter", "gfCEV", "mMYit", "SEPTC", "JQHTH", "TtmiD", "JuTMa", "disconnectedCallback", "laUGl", "5516376Wigmrq", "decode", "QnNtn", "map", "mybpH", "text", "RGqcW", "fragment", "oiJbN", "mpTNn", "cHOWM", "fetching challenge from", "getBoundingClientRect", "sheet"];
    v1 = function() {
        return e
    };
    return v1()
}

function k1(e, t) {
    const i = v1();
    return k1 = function(e, t) {
        e = e - (266 * -16 + 6 * 1659 + -118 * 46);
        let n = i[e];
        return n
    }, k1(e, t)
}

function A1(i) {
    const s = Oe,
          o = {
              DrOpW: function(e, t) {
                  return e === t
              },
              YZebk: function(e) {
                  return e()
              },
              zwrLc: function(e, t) {
                  return e(t)
              },
              JMejX: "div",
              wdZrs: function(e, t) {
                  return e(t)
              },
              AjoMY: function(e, t) {
                  return e(t)
              },
              xGsSd: s(1119),
              gyrCs: function(e) {
                  return e()
              },
              TbrNq: function(e) {
                  return e()
              },
              ltArJ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              UbjfQ: s(1033),
              yXSvw: function(e, t, n, i) {
                  return e(t, n, i)
              },
              KSeCl: s(805),
              jZayR: function(e, t) {
                  return e !== t
              },
              BwwLs: s(331),
              aceva: "off",
              bFZBL: s(1408),
              ETpuM: s(1135),
              sbupl: function(e, t, n, i) {
                  return e(t, n, i)
              },
              rvXoh: "altcha-hidden",
              ZiTvh: s(814),
              FKgDF: function(e, t, n, i) {
                  return e(t, n, i)
              },
              RLAxM: s(895),
              MSVJl: function(e, t, n, i) {
                  return e(t, n, i)
              },
              BhVCX: s(1586),
              GsSOv: function(e, t, n, i) {
                  return e(t, n, i)
              },
              yPbwr: s(1031),
              XvybN: function(e, t, n, i) {
                  return e(t, n, i)
              },
              NHhtv: function(e, t, n) {
                  return e(t, n)
              },
              PHsCO: function(e, t, n) {
                  return e(t, n)
              },
              VifvV: function(e, t, n) {
                  return e(t, n)
              },
              LhOlM: function(e, t, n, i) {
                  return e(t, n, i)
              },
              SEPTC: s(1045),
              vsEwl: function(e, t, n, i) {
                  return e(t, n, i)
              },
              xTIgt: s(697),
              SkPwE: function(e, t, n, i, s, o, r) {
                  return e(t, n, i, s, o, r)
              },
              JOist: function(e, t) {
                  return e + t
              },
              KjDpK: function(e, t) {
                  return e & t
              },
              GekuB: function(e, t) {
                  return e !== t
              },
              pWMIN: function(e, t) {
                  return e(t)
              },
              JTpCD: function(e, t) {
                  return e(t)
              },
              WyHSA: function(e, t) {
                  return e & t
              },
              ESGmi: s(351),
              DlJBj: function(e, t, n) {
                  return e(t, n)
              },
              YiGKU: function(e, t) {
                  return e(t)
              },
              IeNlO: function(e, t, n, i, s) {
                  return e(t, n, i, s)
              },
              lnNDg: function(e, t) {
                  return e === t
              },
              FtCaV: function(e) {
                  return e()
              },
              fGoxH: function(e, t) {
                  return e !== t
              },
              etbWf: function(e, t) {
                  return e === t
              }
          };
    let r, a, l, c, d, u, f, h, p, m, g, y, x, w, b, v, k;
    const A = i[-9885 + -291 * 3 + 10804]["default"],
          I = o[s(867)](ef, A, i, i[3 * 241 + 2 * 1277 + -808 * 4], null);
    let S = o["lnNDg"](i[1 * -4697 + -3868 + 4 * 2143], c1[s(1154)]) && o[s(274)](u1);

    function E(e, t) {
        const n = s;
        return o[n(1541)](e[-2184 + -1 * 8871 + 11062 * 1], c1["VERIFIED"]) ? p1 : o["DrOpW"](e[3119 * 3 + -6327 + 3023 * -1], c1[n(1154)]) ? h1 : f1
    }
    let T = o[s(297)](E, i),
        C = o["YiGKU"](T, i),
        B = (o[s(1159)](i[-6450 * -1 + 7911 + 3 * -4786], !(-7492 + -5 * 1021 + -57 * -221)) || i[-27 * 141 + -5854 * 1 + -9673 * -1]) && m1(i),
        D = (i[3 * -499 + -3738 + 5240] || o[s(369)](i[-206 * 41 + -1108 + 3 * 3187], c1[s(1248)])) && o[s(617)](g1, i),
        P = i[-8377 * 1 + -4472 * -1 + 2 * 1958][s(647)] && (i[1 * -3199 + -7131 + 82 * 126] !== !(-9958 + 63 * -121 + 1 * 17581) || i[-2 * 1013 + 391 * 20 + -5782]) && w1(i),
        R = i[-4 * 1266 + -3 * -1737 + -146] && b1(i);
    return {
        c() {
            const e = s;
            I && I["c"](), r = o[e(1397)](mf), a = o["zwrLc"](ff, o["JMejX"]), l = o[e(1155)](ff, o[e(993)]), S && S["c"](), c = o["YZebk"](mf), d = o[e(617)](ff, o["JMejX"]), u = ff(o[e(1326)]), p = o[e(992)](mf), m = o[e(709)](ff, o[e(993)]), C["c"](), g = mf(), B && B["c"](), y = mf(), D && D["c"](), x = o[e(992)](mf), P && P["c"](), w = o[e(584)](mf), R && R["c"](), o[e(1222)](M, u, o[e(304)], e(1461)), o[e(911)](M, u, "id", f = i[-2292 + 2859 * 3 + 6281 * -1] + o["KSeCl"]), u["required"] = h = o[e(1016)](i[-2709 + -1211 + 3920], o[e(1293)]) && (!i[-150 + 136 * -71 + 3269 * 3] || o["jZayR"](i[362 * 3 + -5 * 1188 + 4854], o["aceva"])), o[e(911)](M, u, o[e(734)], o[e(845)]), M(d, o[e(734)], "altcha-checkbox svelte-ddsc3z"), o["sbupl"](xf, d, o[e(1167)], i[4 * 1802 + -27 * 334 + 1817] === c1["VERIFYING"]), M(m, e(1408), o["ZiTvh"]), o["FKgDF"](M, l, o[e(734)], o[e(1262)]), o[e(1543)](M, a, o[e(734)], o["BhVCX"]), M(a, e(351), i[-937 * -8 + 8210 + -15699 * 1]), o[e(1499)](M, a, o[e(1441)], i[7975 + 7185 + 3 * -5053])
        },
        m(e, t) {
            const n = s;
            I && I["m"](e, t), o[n(911)](df, e, r, t), o[n(1534)](df, e, a, t), o[n(1179)](rf, a, l), S && S["m"](l, null), o[n(1179)](rf, l, c), rf(l, d), o[n(1179)](rf, d, u), u[n(1531)] = i[-8856 + -82 * 29 + 11242], o[n(1179)](rf, l, p), rf(l, m), C["m"](m, null), rf(l, g), B && B["m"](l, null), o[n(1179)](rf, a, y), D && D["m"](a, null), o["PHsCO"](rf, a, x), P && P["m"](a, null), o[n(775)](rf, a, w), R && R["m"](a, null), i[-1 * -3469 + 5344 + -8764](a), b = !(7689 + -4725 + -2964), v || (k = [o[n(1066)](gf, u, o["SEPTC"], i[8703 + 4526 + -13182]), o["LhOlM"](gf, u, o[n(1304)], i[-6044 * 1 + -2143 * 2 + 10343]), o[n(1276)](gf, u, o[n(463)], i[10 * 725 + 596 * -2 + -6044])], v = !(-5 * -1124 + -4832 + -788))
        },
        p(e, t) {
            const n = s;
            I && I["p"] && (!b || t[7057 * -1 + -7351 * 1 + 14409] & -3 * 4181 + 3 * -1209 + 32554) && o[n(551)](sf, I, A, e, e[-487 * 3 + 37 * 179 + -43 * 119], b ? nf(A, e[2083 + -611 + -1 * 1427], t, null) : of(e[2 * 971 + 6615 + -112 * 76]), null), e[1 * -7087 + 5 * 515 + -1 * -4519] === c1[n(1154)] ? S || (S = o[n(584)](u1), S["c"](), S["m"](l, c)) : S && (S["d"](-4117 + 5491 + -1373 * 1), S = null), (!b || t[-2841 + -919 * 3 + -18 * -311] & -4 * 2467 + 6816 + -767 * -4 && o[n(1016)](f, f = o[n(1387)](e[3964 + 3017 * 1 + -1 * 6977], o[n(497)]))) && o["MSVJl"](M, u, "id", f), (!b || o[n(852)](t[6696 + 1361 * -1 + -5335], 9793 + -2449 + 2447 * -3) && h !== (h = e[8139 * -1 + -9236 + 17375] !== o[n(1293)] && (!e[9813 + 2099 * -4 + -1 * 1416] || o[n(427)](e[-1 * 8291 + 3947 + -3 * -1448], o[n(836)])))) && (u["required"] = h), t[2 * 1154 + 9223 + -11531 * 1] & 5091 + -4148 + -687 * 1 && (u[n(1531)] = e[766 + 2631 * -1 + 1873]), (!b || t[-8885 + -3345 + 12230] & 1678 + -3486 * 1 + -8 * -242) && o["MSVJl"](xf, d, o[n(1167)], o[n(1541)](e[-5668 + 7521 + -1846], c1[n(1154)])), T === (T = o[n(709)](E, e)) && C ? C["p"](e, t) : (C["d"](-3 * -2539 + -5 * -1699 + -16111), C = o[n(409)](T, e), C && (C["c"](), C["m"](m, null))), o[n(1016)](e[3082 + -2 * 2564 + 2049], !(-3889 + -2338 * -3 + 1 * -3125)) || e[-6 * -1358 + -4303 * -2 + -16742] ? B ? B["p"](e, t) : (B = m1(e), B["c"](), B["m"](l, null)) : B && (B["d"](5 * 1714 + -7928 + -641), B = null), e[7528 * -1 + -3 * 2827 + 16014] || e[658 + 11 * 439 + -1370 * 4] === c1[n(1248)] ? D ? D["p"](e, t) : (D = g1(e), D["c"](), D["m"](a, x)) : D && (D["d"](-4051 + 1 * -8076 + 1516 * 8), D = null), e[4597 + 5590 + 106 * -96]["footer"] && (o[n(427)](e[-4 * -1471 + 421 + -33 * 191], !(-1478 + -478 * 5 + 3868)) || e[-1119 + -2289 * 3 + -1333 * -6]) ? P ? P["p"](e, t) : (P = o[n(1079)](w1, e), P["c"](), P["m"](a, w)) : P && (P["d"](7036 + 1 * 4071 + 1234 * -9), P = null), e[-2144 + -6219 + -82 * -102] ? R ? R["p"](e, t) : (R = o[n(1079)](b1, e), R["c"](), R["m"](a, null)) : R && (R["d"](-5643 + 9137 + -3493), R = null), (!b || o["WyHSA"](t[6600 + -900 * 4 + -3e3], -8017 * -1 + 9424 + 87 * -199)) && o[n(1543)](M, a, o[n(333)], e[1 * 2036 + 6163 * 1 + -8192]), (!b || t[-2461 * -1 + 3097 * -3 + 6830] & 2483 + -6977 + 16 * 281) && M(a, o[n(1441)], e[1 * -7981 + -1398 * -3 + -947 * -4])
        },
        i(e) {
            b || (Wf(I, e), b = !(3 * -1452 + 16 * 99 + 2772))
        },
        o(e) {
            o["DlJBj"](Qf, I, e), b = !(681 * 9 + 1 * -9447 + 3319)
        },
        d(e) {
            const t = s;
            e && (o["YiGKU"](uf, r), o[t(409)](uf, a)), I && I["d"](e), S && S["d"](), C["d"](), B && B["d"](), D && D["d"](), P && P["d"](), R && R["d"](), i[3171 + 109 * 15 + 4757 * -1](null), v = !(4794 + 8387 + 2636 * -5), Ju(k)
        }
    }
}
const I1 = Oe(1047),
      S1 = Oe(469);

function E1(e) {
    const t = Oe;
    return JSON[t(520)](e)
}

function T1(n, e, w) {
    const b = Oe,
          v = {
              JQHTH: "submit",
              eDbmf: b(415),
              TvgiD: b(1026),
              xsAoi: function(e, t) {
                  return e(t)
              },
              wqYrJ: b(1211),
              XOMWw: function(e, t) {
                  return e !== t
              },
              AnHvl: b(500),
              fLuak: function(e, t, n) {
                  return e(t, n)
              },
              AAYtz: b(1199),
              eXDRu: function(e, t, n) {
                  return e(t, n)
              },
              vQLWY: b(393),
              vGXQx: function(e) {
                  return e()
              },
              louVQ: "plugins",
              JgWfF: "none",
              EeVeS: function(e, t) {
                  return e(t)
              },
              IdpjL: function(e, t, n) {
                  return e(t, n)
              },
              LKgqw: b(816),
              NxrfB: function(e, t) {
                  return e(t)
              },
              voCfe: function(e, t) {
                  return e === t
              },
              ipYDf: b(1378),
              wgrlC: function(e, t) {
                  return e(t)
              },
              EBmde: b(851),
              LyuQz: function(e, t) {
                  return e(t)
              },
              lqjAA: function(e, t) {
                  return e !== t
              },
              EsCTF: b(275),
              wReca: function(e, t) {
                  return e / t
              },
              lMFio: function(e, t) {
                  return e !== t
              },
              cVsrP: "pLdMM",
              ouJlC: b(285),
              LecxN: function(e, t) {
                  return e && t
              },
              RTumo: function(e, t) {
                  return e === t
              },
              NtYfY: function(e) {
                  return e()
              },
              kjdek: function(e, t) {
                  return e == t
              },
              EQDrB: b(719),
              uemgU: function(e, t) {
                  return e !== t
              },
              oAPeG: function(e, t, n) {
                  return e(t, n)
              },
              BSGBL: function(e, t) {
                  return e === t
              },
              hcyJD: function(e, t, n) {
                  return e(t, n)
              },
              LUion: b(1345),
              fvZPT: b(1099),
              StYga: function(e, t) {
                  return e(t)
              },
              rkilW: b(839),
              VSXHB: b(864),
              zPYgx: function(e, t) {
                  return e(t)
              },
              wKgNP: function(e, t) {
                  return e != t
              },
              FmHtO: b(971),
              WIDYS: b(605),
              TIsuv: function(e, t) {
                  return e && t
              },
              ucjLt: b(956),
              TVjOq: b(535),
              hTJoh: function(e, t) {
                  return e + t
              },
              aQTOj: b(1544),
              atJeI: b(1298),
              rpDlH: b(1321),
              zBLGZ: function(e, t) {
                  return e !== t
              },
              KnEok: b(1523),
              WHOMF: b(1098),
              nasQj: b(1476),
              kuANw: "JuSfl",
              pmrwj: function(e, t) {
                  return e - t
              },
              msWGu: function(e, t) {
                  return e > t
              },
              JuTMa: function(e, t) {
                  return e(t)
              },
              icruo: b(1032),
              vDCfs: b(1351),
              mkgIG: "unable to configure from X-Altcha-Config",
              GcIXw: function(e, t) {
                  return e - t
              },
              tiogZ: function(e, t) {
                  return e(t)
              },
              QexTk: function(e, t) {
                  return e == t
              },
              iRgOr: b(713),
              OmnUU: b(650),
              fIdXn: function(e, t) {
                  return e(t)
              },
              bHUQd: function(e, t) {
                  return e === t
              },
              FoZpr: b(947),
              DqewF: function(e, t) {
                  return e && t
              },
              SrlXx: b(311),
              jpPuP: function(e, t) {
                  return e === t
              },
              LYEln: b(298),
              bOQOd: function(e, t) {
                  return e == t
              },
              tjOQN: function(e, t) {
                  return e != t
              },
              batKB: b(1522),
              cRkNg: function(e, t) {
                  return e || t
              },
              vyBMP: b(1216),
              QyVdK: function(e, t) {
                  return e instanceof t
              },
              YWNnx: b(1023),
              Fuqwe: function(e, t) {
                  return e == t
              },
              BmnUj: function(e, t, n) {
                  return e(t, n)
              },
              KjrTx: function(e, t) {
                  return e === t
              },
              TKAEW: function(e, t) {
                  return e === t
              },
              lzXmP: function(e, t, n, i) {
                  return e(t, n, i)
              },
              JodZM: function(e, t) {
                  return e !== t
              },
              DzoJa: function(e, t) {
                  return e && t
              },
              etEZH: function(e, t) {
                  return e === t
              },
              dkPvB: b(286),
              UEfHT: function(e, t) {
                  return e === t
              },
              nmOtQ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              YBesK: function(e, t) {
                  return e !== t
              },
              VNUKR: "FkynM",
              ZVGhd: b(408),
              nFoiL: function(e, t) {
                  return e == t
              },
              PPDMS: function(e, t) {
                  return e === t
              },
              wtYxk: "NIjXg",
              DFczE: b(1336),
              npKXE: function(e) {
                  return e()
              },
              DVJur: b(929),
              csuhG: function(e, t) {
                  return e == t
              },
              arsOR: "onsubmit",
              gmWqt: function(e, t) {
                  return e === t
              },
              gvcYW: function(e) {
                  return e()
              },
              pAQbj: function(e, t) {
                  return e !== t
              },
              RMLqG: function(e, t) {
                  return e === t
              },
              ZFStm: function(e, t) {
                  return e && t
              },
              QBDAO: function(e, t) {
                  return e === t
              },
              GXKCG: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ROYdt: function(e, t) {
                  return e === t
              },
              ObAbf: function(e) {
                  return e()
              },
              ayVRl: function(e, t) {
                  return e !== t
              },
              RrShO: "NnvpN",
              jPavr: function(e, t) {
                  return e !== t
              },
              dMxhA: function(e, t) {
                  return e(t)
              },
              vHrzl: function(e, t, n) {
                  return e(t, n)
              },
              DDouh: function(e, t) {
                  return e === t
              },
              bRxnw: b(1238),
              XayQe: b(930),
              qRTXd: b(1607),
              fiLhb: function(e, t, n) {
                  return e(t, n)
              },
              Miueg: function(e, t) {
                  return e === t
              },
              hZfwA: function(e, t) {
                  return e > t
              },
              flNnF: function(e, t) {
                  return e + t
              },
              TqYzg: function(e, t) {
                  return e + t
              },
              RSGBm: function(e, t) {
                  return e === t
              },
              xdCjb: b(813),
              jbdoN: function(e, t) {
                  return e - t
              },
              LkXDJ: function(e, t) {
                  return e - t
              },
              LPPNP: function(e, t) {
                  return e + t
              },
              lxNJQ: function(e, t) {
                  return e - t
              },
              ELPPJ: function(e, t, n, i) {
                  return e(t, n, i)
              },
              jHDtP: function(e, t) {
                  return e + t
              },
              Jhnij: function(e, t, n, i) {
                  return e(t, n, i)
              },
              uwCht: "bottom",
              OWDQb: function(e, t) {
                  return e + t
              },
              SNJQg: function(e, t) {
                  return e / t
              },
              GGSBL: function(e, t) {
                  return e(t)
              },
              ABJfs: function(e, t, n, i) {
                  return e(t, n, i)
              },
              uPJpA: b(1408),
              Naedf: function(e, t) {
                  return e !== t
              },
              utHRE: "Attribute verifyurl not set.",
              JMxKp: "vSDak",
              xuyJp: b(1007),
              ukTJg: function(e, t) {
                  return e === t
              },
              wuYqN: function(e, t, n) {
                  return e(t, n)
              },
              nDJkG: b(1438),
              IaGES: b(666),
              WVpOm: function(e, t, n) {
                  return e(t, n)
              },
              jNvJf: b(1486),
              RKaff: b(872),
              hDmcx: function(e, t, n) {
                  return e(t, n)
              },
              NziEN: function(e, t) {
                  return e(t)
              },
              wvjwZ: function(e, t) {
                  return e < t
              },
              IvUpM: function(e) {
                  return e()
              },
              susTx: function(e, t, n) {
                  return e(t, n)
              },
              iEVTg: b(703),
              koOEg: function(e, t) {
                  return e !== t
              },
              hzlBp: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ZkUeS: function(e, t, n, i) {
                  return e(t, n, i)
              },
              AprAP: function(e, t, n) {
                  return e(t, n)
              },
              tTekq: function(e, t) {
                  return e === t
              },
              TOffB: function(e, t) {
                  return e === t
              },
              MZZWO: b(373),
              PmwHG: b(1161),
              wHSIe: function(e, t) {
                  return e === t
              },
              DixiV: function(e, t, n) {
                  return e(t, n)
              },
              Jtswj: b(1058),
              lkypW: "Salt is too short. Min. 10 chars.",
              AmnWo: function(e, t) {
                  return e === t
              },
              jtwXb: "Invalid challenge. Property signature is missing.",
              lqdbC: b(961),
              MUUsD: function(e, t) {
                  return e < t
              },
              BvFtq: b(1294),
              IXHHh: b(1491),
              XIjZh: function(e, t, n, i) {
                  return e(t, n, i)
              },
              HzBMl: b(1230),
              GBlQs: ".25",
              kONBH: b(675),
              oiJbN: "currentColor",
              BnSUK: "altcha-spinner svelte-ddsc3z",
              cdxAn: function(e, t, n, i) {
                  return e(t, n, i)
              },
              Oekge: b(671),
              ZyTCQ: "0 0 24 24",
              hvtzC: b(1300),
              KsRCQ: b(856),
              iRUXL: function(e, t) {
                  return e === t
              },
              JcrpE: b(1012),
              KSSoC: function(e, t, n) {
                  return e(t, n)
              },
              vHLiw: function(e, t) {
                  return e !== t
              },
              AAbMg: b(1399),
              cEpdb: function(e, t) {
                  return e in t
              },
              kGfnr: function(e, t, n, i) {
                  return e(t, n, i)
              },
              ZvPoW: function(e, t, n, i, s) {
                  return e(t, n, i, s)
              },
              OnPyT: "abort",
              NGzCA: function(e, t) {
                  return e(t)
              },
              YUfmb: function(e, t) {
                  return e !== t
              },
              FVWxH: b(1021),
              ojDtq: b(984),
              NcrWg: "work",
              VpuAD: b(1141),
              rgqOS: function(e, t) {
                  return e * t
              },
              QqcVp: b(404),
              MJzhN: b(809),
              IXwXJ: function(e, t) {
                  return e === t
              },
              HsDEe: b(714),
              kRert: function(e, t, n) {
                  return e(t, n)
              },
              pXiOK: b(453),
              rtrkS: function(e, t) {
                  return e == t
              },
              sMrxD: function(e, t) {
                  return e === t
              },
              ENdsE: b(1392),
              ZaMKA: function(e, t, n) {
                  return e(t, n)
              },
              ZSyfl: function(e, t, n) {
                  return e(t, n)
              },
              wwcds: function(e, t, n) {
                  return e(t, n)
              },
              WXCGp: function(e, t, n) {
                  return e(t, n)
              },
              inHOl: function(e, t) {
                  return e !== t
              },
              txzCk: function(e, t) {
                  return e(t)
              },
              SkziS: function(e, t) {
                  return e !== t
              },
              eVLkn: function(e, t) {
                  return e !== t
              },
              ISJxc: function(e, t, n) {
                  return e(t, n)
              },
              wToUl: function(e, t, n) {
                  return e(t, n)
              },
              wLPDa: function(e, t, n) {
                  return e(t, n)
              },
              hsENE: function(e, t) {
                  return e == t
              },
              UJcxz: function(e, t) {
                  return e !== t
              },
              ZdHSr: function(e, t, n) {
                  return e(t, n)
              },
              rHwpK: function(e, t, n) {
                  return e(t, n)
              },
              CISmp: b(651),
              mXcRc: b(1423),
              kfmbH: function(e, t) {
                  return e(t)
              },
              pReuG: function(e, t, n) {
                  return e(t, n)
              },
              RMoQY: function(e, t, n) {
                  return e(t, n)
              },
              MlUYd: function(e, t) {
                  return e == t
              },
              rfhpB: function(e, t) {
                  return e !== t
              },
              ZXreC: function(e, t) {
                  return e !== t
              },
              kZyvV: b(349),
              ehFeC: b(847),
              YNTxG: function(e, t) {
                  return e(t)
              },
              QnNtn: function(e, t, n) {
                  return e(t, n)
              },
              WiKOf: function(e, t) {
                  return e === t
              },
              aEKZN: b(579),
              Fmwpu: b(663),
              kKMoA: function(e, t, n) {
                  return e(t, n)
              },
              tTkvi: function(e, t, n) {
                  return e(t, n)
              },
              WmITY: function(e, t) {
                  return e === t
              },
              tNnxJ: function(e, t) {
                  return e(t)
              },
              eRuag: function(e, t, n) {
                  return e(t, n)
              },
              gbueJ: function(e, t, n) {
                  return e(t, n)
              },
              wWrKC: function(e, t) {
                  return e(t)
              },
              GLdZK: b(832),
              SAnuT: b(946),
              DMyzz: function(e, t, n) {
                  return e(t, n)
              },
              Pidfl: b(341),
              PiOOe: function(e, t) {
                  return e === t
              },
              CKkig: function(e, t, n) {
                  return e(t, n)
              },
              ZPDwP: b(1559),
              BisDm: function(e, t) {
                  return e === t
              },
              hMIbw: b(504),
              lZvlm: function(e, t, n) {
                  return e(t, n)
              },
              DkdNR: function(e, t) {
                  return e / t
              },
              niWva: function(e, t) {
                  return e - t
              },
              aCdhc: function(e, t, n, i) {
                  return e(t, n, i)
              },
              EstVb: b(567),
              NiuFq: b(859),
              ebNZW: b(959),
              mpTNn: function(e, t) {
                  return e === t
              },
              wEjUZ: b(570),
              tswHP: b(885),
              RxnOn: b(1485),
              DjcnP: function(e, t) {
                  return e !== t
              },
              iNlUE: b(1361),
              HKfHj: function(e, t) {
                  return e in t
              },
              AxUAA: b(1330),
              kXGtE: function(e, t, n) {
                  return e(t, n)
              },
              HoXUe: function(e, t) {
                  return e in t
              },
              oACwl: function(e, t) {
                  return e in t
              },
              fBNwB: b(1134),
              SpBJi: "delay",
              ntNbJ: function(e, t, n) {
                  return e(t, n)
              },
              gCgjO: function(e, t, n) {
                  return e(t, n)
              },
              wgdYx: b(685),
              icBuy: b(1301),
              MbBKr: function(e, t) {
                  return e in t
              },
              SWRgD: "hidelogo",
              hATGi: function(e, t, n) {
                  return e(t, n)
              },
              VTFdV: function(e, t) {
                  return e in t
              },
              ggNqv: b(726),
              lJywh: function(e, t, n) {
                  return e(t, n)
              },
              TXlsv: function(e, t) {
                  return e in t
              },
              YlGNl: "maxnumber",
              tcuHZ: b(1594),
              BuNTi: function(e, t) {
                  return e in t
              },
              oLWqA: function(e, t) {
                  return e in t
              },
              Cxvtl: b(305),
              sgnTP: b(1437),
              eVwAJ: function(e, t, n) {
                  return e(t, n)
              },
              bjjSy: b(744),
              JEtKR: b(680),
              SDkMY: function(e, t) {
                  return e in t
              },
              iNmjF: function(e, t) {
                  return e in t
              },
              eSucG: function(e, t) {
                  return e in t
              },
              uYXFr: b(436),
              gefsA: function(e, t, n) {
                  return e(t, n)
              },
              OYrBk: function(e, t) {
                  return e in t
              },
              drTLh: "$$scope",
              hFvBr: function(e, t) {
                  return e & t
              },
              tUJMA: b(633),
              FUUQy: function(e, t) {
                  return e & t
              },
              ZEsuX: function(e, t) {
                  return e(t)
              },
              duxLh: function(e, t, n) {
                  return e(t, n)
              },
              Jjerq: b(825),
              lPzvI: "Verifying... please wait.",
              aZRpi: "statechange",
              pYIfh: b(580),
              sXVUJ: "SHA-256",
              DvmDG: "SHA-512",
              psPzP: function(e, t) {
                  return e == t
              },
              BoRsZ: function(e, t) {
                  return e(t)
              }
          };
    var t, F;
    let _, V, i, o, {
        $$slots: U = {},
        $$scope: j
    } = e,
        {
            auto: s = void(-7710 + -601 * 1 + 8311)
        } = e,
        {
            blockspam: y = void(826 + -3951 + -25 * -125)
        } = e,
        {
            challengeurl: k = void(-38 * 188 + 4975 + 2169)
        } = e,
        {
            challengejson: H = void(-5335 + -2173 + -1877 * -4)
        } = e,
        {
            debug: r = !(55 * -75 + -707 * 5 + 7661)
        } = e,
        {
            delay: a = -29 * 313 + 3177 * -1 + -1114 * -11
        } = e,
        {
            expire: A = void(-5819 * 1 + 4617 + 601 * 2)
        } = e,
        {
            floating: d = void(1739 + 4354 + -6093 * 1)
        } = e,
        {
            floatinganchor: u = void(1 * -3404 + -122 + 3526)
        } = e,
        {
            floatingoffset: f = void(2547 + -5560 + 3013 * 1)
        } = e,
        {
            hidefooter: l = !(-10 * 415 + -6268 + 10419)
        } = e,
        {
            hidelogo: c = !(8781 + -1 * -6857 + 15637 * -1)
        } = e,
        {
            name: h = v["pYIfh"]
        } = e,
        {
            maxnumber: p = -1016675 + 1343024 + 673651
        } = e,
        {
            mockerror: W = !(-3170 + 1206 * -4 + 39 * 205)
        } = e,
        {
            obfuscated: m = void(2645 + 499 + -3144)
        } = e,
        {
            plugins: Q = void(6963 + -5512 + -1451)
        } = e,
        {
            refetchonexpire: Y = !(79 * -15 + 9312 + 7 * -1161)
        } = e,
        {
            spamfilter: I = !(-1935 + -6264 + 8 * 1025)
        } = e,
        {
            strings: z = void(-2831 + 174 * -15 + 5441)
        } = e,
        {
            test: S = !(-4943 + -2363 + 7307)
        } = e,
        {
            verifyurl: x = void(6545 + 7670 + 1 * -14215)
        } = e,
        {
            workers: g = Math[b(788)](-3347 * 1 + -6538 + 9901 * 1, navigator[b(1089)] || 1 * -3517 + -869 * -5 + -820)
        } = e,
        {
            workerurl: G = void(1581 * 3 + 6189 + -5466 * 2)
        } = e;
    const K = Ef(),
          X = [v[b(830)], b(1101), v[b(1591)]],
          J = v[b(843)](F = v["hsENE"](t = document["documentElement"]["lang"], null) ? void(9488 + -538 * -14 + 10 * -1702) : t["split"]("-"), null) ? void(1627 + -3 * -1194 + 1 * -5209) : F[-3702 + -295 + 3997];
    let E = !(-6161 + -6437 + 12599),
        T, C = null,
        B = null,
        D = null,
        q = null,
        P = null,
        R = null,
        M = [],
        N = c1[b(821)];
    v[b(777)](Sf, () => {
        const e = b;
        Z(), D && (D["removeEventListener"](v[e(1305)], ue), D[e(1352)](v[e(1452)], fe), D[e(1352)](v[e(429)], de), D = null), P && (v[e(316)](clearTimeout, P), P = null), document[e(1352)]("click", ae), document[e(1352)](e(373), le), window[e(1352)](e(1115), me)
    }), If(() => {
        const t = b;
        if (v[t(330)](v[t(648)], v["AnHvl"])) return _0x1821cf[t(820)]()[t(764)]()[t(1618)];
        else {
            const e = {};
            e[t(1028)] = !(2 * -81 + -5352 + -919 * -6), v[t(276)](O, v[t(853)], t(636)), v[t(1390)](O, v[t(1289)], g), v[t(889)](oe), v[t(276)](O, v[t(665)], M[t(1296)] ? M[t(1313)](e => e[t(1143)][t(1112)])[t(486)](", ") : v[t(569)]), S && v[t(316)](O, t(926)), A && v[t(996)](xe, A), v[t(330)](s, void(3648 + -9459 + 5811)) && v[t(810)](O, v[t(740)], s), v[t(330)](d, void(-6389 * 1 + -2081 + 1 * 8470)) && v[t(1601)](we, d), D = T["closest"](t(370)), D && (D[t(742)](v[t(1305)], ue, e), D[t(742)](v[t(1452)], fe), s === t(1389) && D["addEventListener"](v[t(429)], de)), v[t(887)](s, v[t(802)]) && (m ? Ae() : v[t(889)](L)), _ && (l || c) && v[t(347)](O, v["EBmde"]), v[t(1290)](requestAnimationFrame, () => {
                K(v["wqYrJ"])
            })
        }
    });

    function $(e, t) {
        const n = b,
              i = {};
        return i[n(1350)] = e[n(1350)], i["challenge"] = e[n(538)], i["number"] = t[n(273)], i[n(483)] = e[n(483)], i[n(410)] = e[n(410)], i["test"] = S ? !(4 * 305 + -18 * 410 + 35 * 176) : void(-9182 + -1611 * -3 + -4349 * -1), i[n(649)] = t[n(649)], btoa(JSON["stringify"](i))
    }

    function Z() {
        const e = b;
        if (v[e(1540)](v[e(733)], v[e(733)])) return this["$$"][e(1200)][3029 + 8 * 509 + 65 * -109];
        else {
            for (const t of M) t[e(907)]()
        }
    }

    function ee() {
        const t = b,
              n = {
                  SkagF: function(e, t) {
                      const n = k1;
                      return v[n(1220)](e, t)
                  },
                  bAQVL: function(e, t) {
                      return e < t
                  }
              };
        if (v[t(581)](v[t(1122)], v[t(708)])) v["LecxN"](k, Y) && v[t(533)](N, c1[t(1050)]) ? L() : Be(c1[t(1248)], o[t(695)]);
        else {
            const i = [],
                  s = n[t(783)](_0x1822a7[t(1200)][t(1296)], -8599 + 17 * -289 + 1 * 13544);
            for (let e = -3948 + -2741 + 6689; n[t(573)](e, s); e++) i[e] = -(2945 + -4564 * 2 + -2 * -3092);
            return i
        }
    }
    async function te() {
        const s = b,
              t = {
                  uHKtj: function(e) {
                      const t = k1;
                      return v[t(835)](e)
                  },
                  sGqax: function(e, t) {
                      const n = k1;
                      return v[n(893)](e, t)
                  },
                  xXCkP: v[s(433)],
                  oQMxM: function(e, t) {
                      const n = s;
                      return v[n(1453)](e, t)
                  },
                  RCbpt: function(e, t) {
                      return e(t)
                  },
                  rqhCM: function(e, t, n) {
                      const i = s;
                      return v[i(687)](e, t, n)
                  },
                  wCfdC: function(e, t) {
                      return v["BSGBL"](e, t)
                  },
                  vunhD: function(e, t, n) {
                      return v["hcyJD"](e, t, n)
                  }
              };
        var e;
        if (W) throw v[s(1290)](O, v[s(891)]), new Error(v[s(1404)]);
        if (V) return v["StYga"](O, v["rkilW"]), V;
        if (S) return v["oAPeG"](O, v[s(1183)], {
            test: S
        }), v[s(437)](n1, v["wKgNP"](typeof S, v[s(1605)]) ? +S : void(5872 + 4996 * -2 + 1030 * 4));
        {
            if (v["lqjAA"](v[s(387)], v["WIDYS"])) {
                for (const i of _0x57fc36) t[s(386)](typeof i[s(1138)], t[s(434)]) && i[s(1138)](_0x27d57e);
                _0x5ee530 && t["oQMxM"](_0x2ea66, _0x11bccd[s(821)]) && t[s(1150)](_0x53a5db, () => {
                    const e = s;
                    t[e(1504)](_0x3afeb3)
                }), t[s(1087)](_0x2136db, 2 * 1811 + 8004 + -157 * 74, _0x40083b = t[s(849)](_0x4bbe03, _0x1241a6[s(1050)]))
            } else {
                if (v[s(948)](!k, D)) {
                    if (v[s(363)] === v[s(363)]) {
                        const h = D[s(1526)](v["TVjOq"]);
                        v[s(499)](h, null) && h[s(1148)]("/form/") && v["hcyJD"](w, 347 * 18 + -5 * -719 + -9826, k = v[s(917)](h, v[s(1616)]))
                    } else return this["$$"][s(1200)][-7209 + -11 * 188 + 16 * 582]
                }
                if (!k) throw new Error(v["atJeI"]);
                v[s(687)](O, v[s(696)], k);
                const o = {};
                o[s(1620)] = "1";
                const r = {};
                r[s(771)] = I ? o : {};
                const a = await fetch(k, r);
                if (v[s(1414)](a[s(1185)], -7700 + 69 * -41 + 10729 * 1)) throw new Error("Server responded with " + a["status"] + ".");
                const l = a[s(771)][s(1506)]("Expires"),
                      c = a[s(771)][s(1506)](v[s(1455)]),
                      d = await a["json"](),
                      u = new URLSearchParams(v[s(893)](e = d[s(483)]["split"]("?"), null) ? void(-2 * -3569 + 358 * -5 + -2 * 2674) : e[-4626 + 8146 + 1 * -3519]),
                      f = u[s(1506)](v[s(1275)]) || u[s(1506)](v[s(601)]);
                if (f) {
                    if (v[s(1029)] !== s(412)) return this["$$"][s(1200)][3908 + 1361 + -5226];
                    else {
                        const p = new Date(+f * (-23 * -373 + -4032 + -3547 * 1)),
                              m = v[s(1290)](isNaN, p["getTime"]()) ? -3093 + -2011 * -2 + -929 : v[s(860)](p[s(568)](), Date["now"]());
                        v[s(1324)](m, -9 * -1051 + 7136 + -16595) && v[s(1307)](xe, m)
                    }
                }
                if (c) try {
                    const g = JSON[s(520)](c);
                    g && v["kjdek"](typeof g, v[s(578)]) && (g[s(953)] && (g["verifyurl"] = new URL(g[s(953)], new URL(k))["toString"]()), v[s(437)](Ie, g))
                } catch (n) {
                    v[s(533)](v[s(1259)], v[s(1259)]) ? v["eXDRu"](O, v[s(689)], n) : (_0x11113e(_0x53c3c4, _0x1c0642, _0x517e32), _0x52ccba(_0x1dd662, _0x270788), t[s(1328)](_0x930d7, _0x546137, _0x4168c2), _0x2ace2f(_0x4feee7, _0x53ff22), t[s(1087)](_0x2e1834, _0x306b2b, _0x2dcec7), t[s(1087)](_0x21a06a, _0x4ac82b, _0x53283d))
                }
                if (!A && v["wKgNP"](l, null) && l[s(1296)]) {
                    const y = Date[s(520)](l);
                    if (y) {
                        const x = v[s(831)](y, Date["now"]());
                        x > -7519 + -1 * 3918 + -1 * -11437 && v["tiogZ"](xe, x)
                    }
                }
                return d
            }
        }
    }

    function ne(e) {
        const t = b;
        var n;
        const i = v["QexTk"](D, null) ? void(1297 * -1 + 6740 + 5443 * -1) : D["querySelector"](v["kjdek"](typeof e, v[t(770)]) ? 'input[name="' + e + '"]' : v["OmnUU"]);
        return ((n = v["QexTk"](i, null) ? void(2 * -1388 + -5354 + -542 * -15) : i[t(1344)]) == null ? void(-3639 + 4954 + -1315) : n["slice"](i[t(1344)]["indexOf"]("@"))) || void(6346 + -7 * -644 + -10854)
    }

    function ie() {
        const e = b,
              t = {};
        t[e(789)] = void(-350 * -14 + 1762 * 3 + -10186 * 1), t[e(1511)] = void(1 * 4903 + -7 * 916 + 1509), t[e(667)] = void(1411 * -5 + 746 + 6309), t[e(491)] = !(10 * 937 + -973 * 1 + -2099 * 4), t[e(1548)] = void(-7555 + 4043 + 3512), t[e(1621)] = void(-5986 + -9 * -519 + 1315), t[e(1507)] = !(-8693 + -8876 + 17570), t[e(360)] = void(-7330 * -1 + -8144 + 814), t[e(1315)] = void(3296 * -2 + -166 * -6 + 4 * 1399), t["timeZone"] = void(3720 + -2414 + -1306 * 1);
        const n = {};
        return n[e(789)] = void(2 * -3495 + 7737 + -747), n[e(1511)] = void(-6523 + -773 * -4 + 3431), n[e(667)] = void(-33 * -31 + 49 * 4 + 1 * -1219), n[e(491)] = void(-7100 + 5279 + 1821), n["expectedCountries"] = void(8987 * 1 + -6678 + -1 * 2309), n[e(1621)] = void(-1263 * 2 + -361 * 25 + 1 * 11551), n[e(1507)] = void(6426 + 166 * -16 + -3770), n[e(360)] = void(3369 + 13 * -119 + -1822 * 1), n["text"] = void(-4964 + -5953 + 3639 * 3), n[e(1618)] = void(-737 * -8 + -1045 + -4851), I === "ipAddress" ? t : typeof I == v["icruo"] ? I : n
    }

    function se(e) {
        const r = b,
              a = {
                  MbVuX: function(e, t) {
                      const n = k1;
                      return v[n(1261)](e, t)
                  },
                  JoIXu: v[r(1120)],
                  VXcVA: function(e, t) {
                      const n = r;
                      return v[n(1044)](e, t)
                  },
                  QFYOH: v[r(452)]
              };
        if (v[r(1430)]("OBSNT", v[r(1436)]))
            for (; _0x4355bb < _0x18c582[r(1296)];) {
                const t = _0x32e0eb[_0x5cca46];
                _0x27127c++, v[r(803)](_0x4b3153, t), v[r(1307)](_0x36a58e, t["$$"])
            } else return [...(v[r(512)](D, null) ? void(-5 * -1850 + 56 * -166 + -46 * -1) : D[r(1529)](v[r(1464)](e, null) && e[r(1296)] ? e[r(1313)](e => r(1368) + e + '"]')[r(486)](", ") : v[r(1473)])) || []][r(315)]((e, t) => {
                const n = r;
                if (a["MbVuX"](n(947), a["JoIXu"])) {
                    const i = t[n(726)],
                          s = t["value"];
                    return a[n(1076)](i, s) && (e[i] = /\n/ [n(680)](s) ? s[n(1565)](new RegExp(a["QFYOH"], "g"), "\r\n") : s), e
                } else {
                    const o = this[n(1263)][n(1025)](_0x44bf72, _0x3cdf84);
                    this[n(290)][n(1545)](_0xb2e99b, o)
                }
            }, {})
    }

    function oe() {
        const e = b,
              t = Q !== void(8807 * -1 + -200 + 9007) ? Q[e(1209)](",") : void(-9397 + 2839 + 6558),
              n = {};
        n["el"] = T, n[e(809)] = Ae, n[e(669)] = K, n[e(768)] = Se, n[e(1104)] = Ee, n[e(622)] = Ce, n[e(322)] = O, n[e(415)] = Be, n[e(1487)] = ve, n[e(1163)] = Pe, n[e(280)] = De, n[e(1492)] = L;
        for (const i of globalThis["altchaPlugins"])(!t || t[e(1148)](i["pluginName"])) && M[e(959)](new i(n))
    }

    function O(...e) {
        const t = b;
        v[t(887)](t(766), v[t(670)]) ? _0x1e8746[t(935)](_0x3c4b28, v["cRkNg"](_0x24b4ca, null)) : (r || e["some"](e => e instanceof Error)) && console[v[t(693)](e[-6434 + 807 + 5627], Error) ? v[t(1572)] : t(322)](t(674), t(1420) + h + "]", ...e)
    }

    function re() {
        const e = b;
        [c1[e(821)], c1[e(1463)], c1["EXPIRED"]]["includes"](N) ? I && v[e(1430)](v[e(1505)](D, null) ? void(101 * -23 + 2711 + -1 * 388) : D[e(562)](), !(-9383 * 1 + 5 * -751 + -1877 * -7)) ? v[e(711)](w, 4676 + -261 + -4407, E = !(-4201 + -337 * -11 + 495)) : m ? v[e(889)](Ae) : v[e(889)](L): v["fLuak"](w, 9458 + -1 * 6469 + -2981, E = !(-1054 + 1626 + -572))
    }

    function ae(e) {
        const t = b,
              n = e[t(1494)];
        d && n && !T[t(811)](n) && (v["bHUQd"](N, c1["VERIFIED"]) || v[t(422)](s, t(286)) && v[t(977)](N, c1[t(821)])) && v["lzXmP"](w, 213 * 7 + 7002 + -8484, T[t(609)][t(794)] = v[t(569)], T)
    }

    function le() {
        const e = b;
        d && v[e(575)](N, c1[e(821)]) && v[e(835)](ge)
    }

    function ce(e) {
        const t = b;
        if (v[t(1171)](v[t(447)], v["ZVGhd"])) {
            for (const n of M) v[t(1394)](typeof n[t(1347)], v[t(433)]) && n[t(1347)](q)
        } else {
            const i = _0x3f7a67[t(1494)];
            v[t(1046)](_0x5866e8, i) && !_0x41ff8f[t(811)](i) && (v[t(422)](_0x168751, _0x110ad5[t(1050)]) || v["etEZH"](_0x5917b4, v[t(1172)]) && v[t(531)](_0x26af70, _0x55a165[t(821)])) && v[t(367)](_0x1aeef7, -8114 + 3 * 3268 + 1 * -1681, _0x58fe34[t(609)]["display"] = v["JgWfF"], _0x4207c1)
        }
    }

    function de(e) {
        const t = b;
        if (v["PPDMS"](v[t(1210)], v[t(1103)])) return this["$$"][t(1200)][75 * -89 + -8453 + -5 * -3029];
        else v[t(1430)](N, c1[t(821)]) && v[t(599)](L)
    }

    function ue(e) {
        const i = b,
              t = {
                  ZbbaZ: function(e, t) {
                      return v["YBesK"](e, t)
                  },
                  CzgVs: v[i(834)],
                  IKoav: function(e, t) {
                      const n = i;
                      return v[n(1353)](e, t)
                  }
              };
        D && v[i(1520)](s, v[i(278)]) ? v["gmWqt"](N, c1[i(821)]) ? (e[i(963)](), e[i(1156)](), v[i(1554)](L)[i(388)](() => {
            const e = i;
            if (t["ZbbaZ"](t[e(337)], e(929))) return this["$$"][e(1200)][2 * 4387 + 28 + -8780];
            else t[e(1339)](D, null) || D[e(615)]()
        })) : v[i(320)](N, c1[i(1050)]) && (e[i(963)](), e["stopPropagation"](), v[i(1286)](N, c1[i(1154)]) && v[i(889)](he)) : v["ZFStm"](D, d) && v[i(308)](s, v[i(1172)]) && N === c1[i(821)] && (e[i(963)](), e[i(1156)](), v[i(1582)](w, 7224 + 25 * -192 + -2415, T["style"][i(794)] = i(1257), T), ge())
    }

    function fe() {
        v["vGXQx"](Be)
    }

    function he() {
        const e = b;
        v[e(912)](N, c1["VERIFYING"]) && o["waitAlert"] && v[e(996)](alert, o["waitAlert"])
    }

    function pe(e) {
        const t = b,
              n = {
                  hcBAq: function(e, t) {
                      const n = k1;
                      return v[n(1365)](e, t)
                  },
                  QWWPp: t(1291)
              };
        if (v["JodZM"](v["RrShO"], v[t(556)])) _0x580c4a[-1 * 266 + 9268 + -9002] & 5900 + -3067 + -785 * 1 && n[t(1151)](_0x3f86f3, _0x2b7fa1 = _0x2604d1[4252 + -529 * -6 + -1 * 7415][t(517)]) && _0x3eb925(_0x57fc3f, n[t(1006)], _0x438468);
        else {
            for (const i of M) v[t(512)](typeof i[t(1138)], v["EQDrB"]) && i[t(1138)](N);
            d && v[t(785)](N, c1[t(821)]) && v[t(1190)](requestAnimationFrame, () => {
                v["ObAbf"](ge)
            }), v[t(1532)](w, 17 * 439 + -5 * -1867 + -16790, E = N === c1[t(1050)])
        }
    }

    function me() {
        const e = b;
        if (v[e(1395)](v[e(661)], v[e(395)])) {
            for (const t of _0x5d42c0) t[e(907)]()
        } else d && v[e(1587)](ge)
    }

    function ge(e = 4632 + -9 * 967 + 4091) {
        const t = b;
        if (T) {
            if (B || (B = (u ? document["querySelector"](u) : D == null ? void(7704 + -3956 + 2 * -1874) : D[t(1052)](t(313))) || D), B) {
                if (v[t(973)] === t(378)) return this["$$"][t(1200)][26 * 343 + 1 * 7537 + -16418];
                else {
                    const n = v["fiLhb"](parseInt, f, -1 * 2411 + 3930 + -1509 * 1) || 2179 + 5824 + -7991,
                          i = B["getBoundingClientRect"](),
                          s = T[t(1322)](),
                          o = document["documentElement"]["clientHeight"],
                          r = document["documentElement"][t(1577)],
                          a = v[t(1488)](d, t(816)) ? v[t(1583)](v["flNnF"](v[t(918)](i["bottom"], s[t(671)]) + n, e), o) : v["RSGBm"](d, v[t(924)]),
                          l = Math["max"](e, Math["min"](v[t(1242)](v["LkXDJ"](r, e), s[t(479)]), v[t(1325)](v[t(554)](i[t(1470)], i["width"] / (1 * -927 + -6616 + 3 * 2515)), v[t(1220)](s[t(479)], -8493 + -9624 + 18119))));
                    if (a ? v[t(702)](w, 900 + -3 * -745 + -3126, T[t(609)]["top"] = v["lxNJQ"](i[t(813)], v[t(554)](s["height"], n)) + "px", T) : v[t(1610)](w, -7944 + 100 * -29 + 10853, T["style"][t(813)] = v["jHDtP"](i[t(457)], n) + "px", T), v[t(998)](w, -2 * -4834 + 1 * 7315 + -16974, T[t(609)][t(1470)] = l + "px", T), T["setAttribute"]("data-floating", a ? "top" : v[t(626)]), C) {
                        const c = C[t(1322)]();
                        w(8854 + -8727 + -117 * 1, C["style"][t(1470)] = v[t(1100)](v["pmrwj"](i["left"], l), v[t(627)](i["width"], 1 * 7071 + -9849 * -1 + -8459 * 2)) - v[t(1220)](c[t(479)], 8851 + -2 * -1318 + -1 * 11485) + "px", C)
                    }
                }
            } else v["GGSBL"](O, t(795))
        }
    }
    async function ye(e) {
        const t = b;
        if (v[t(975)]("rcjBg", t(928))) return this["$$"][t(1200)][-6803 * 1 + -7127 + 13972];
        else {
            if (!x) throw new Error(v[t(1e3)]);
            O("requesting server verification from", x);
            const n = {};
            n[t(341)] = e;
            const i = n;
            if (I) {
                if (v[t(1299)] === v[t(1617)]) {
                    const r = {
                        PYBIs: function(e, t, n, i) {
                            return v["ABJfs"](e, t, n, i)
                        },
                        qTejr: v[t(1524)]
                    };
                    let n;
                    return {
                        c() {
                            const e = t;
                            n = _0x196380(e(832)), r[e(945)](_0x2c6575, n, r[e(1227)], e(762))
                        },
                        m(e, t) {
                            _0x127f72(e, n, t), _0x3db699[6920 + 1428 + -8300](n)
                        },
                        p: _0x3fac26,
                        d(e) {
                            e && _0x2e3325(n), _0x4b3902[-2851 + -332 * -7 + 575 * 1](null)
                        }
                    }
                } else {
                    const {
                        blockedCountries: a,
                        classifier: l,
                        disableRules: c,
                        email: d,
                        expectedLanguages: u,
                        expectedCountries: f,
                        fields: h,
                        ipAddress: p,
                        text: m,
                        timeZone: g
                    } = v[t(889)](ie);
                    i[t(789)] = a, i[t(1511)] = l, i["disableRules"] = c, i[t(491)] = v[t(1001)](d, !(7391 + 1 * 7647 + -15037)) ? void(-9433 + 9833 + -400) : v[t(1564)](ne, d), i[t(1548)] = f, i[t(1621)] = u || (J ? [J] : void(-2619 + -3085 + -248 * -23)), i[t(1507)] = h === !(313 * -7 + 4449 + 1 * -2257) ? void(1035 + -3361 * 1 + -2326 * -1) : v[t(316)](se, h), i[t(360)] = v["ROYdt"](p, !(76 + 8047 + -62 * 131)) ? void(-231 * -3 + -7979 + 7286) : v[t(1340)](p, v["LKgqw"]), i["text"] = m, i[t(1618)] = g === !(1 * 8565 + -7764 + -800) ? void(-8150 + -1052 + 1 * 9202) : g || o1()
                }
            }
            const s = await v[t(1349)](fetch, x, {
                body: JSON[t(547)](i),
                headers: {
                    "content-type": v[t(390)]
                },
                method: v[t(596)]
            });
            if (v["XOMWw"](s[t(1185)], -494 * 17 + -7348 + -34 * -469)) throw new Error(t(394) + s[t(1185)] + ".");
            const o = await s[t(521)]();
            if (o != null && o[t(341)] && v[t(295)](w, 3217 * -1 + -9832 + 13055, R = o[t(341)]), K(v["jNvJf"], o), y && v[t(422)](o[t(757)], v[t(1086)])) throw new Error(t(467))
        }
    }

    function xe(e) {
        v["hDmcx"](O, "expire", e), P && (v["NziEN"](clearTimeout, P), P = null), v["wvjwZ"](e, -5 * -1511 + 7710 + 636 * -24) ? v["IvUpM"](ee) : P = setTimeout(ee, e)
    }

    function we(e) {
        const t = b;
        v["susTx"](O, v[t(878)], e), v[t(715)](d, e) && (v[t(1612)](w, 8413 + -302 * 23 + -1458 * 1, T[t(609)][t(1470)] = "", T), v[t(1538)](w, -4 * 2111 + -2987 + 11440, T[t(609)][t(813)] = "", T)), v[t(329)](w, 1 * 9740 + -3047 + 1673 * -4, d = v[t(1292)](e, !(1080 + 2323 + -3403)) || e === "" ? v["LKgqw"] : v[t(988)](e, !(6999 + -7397 + 7 * 57)) || e === t(1471) ? void(7695 + 4082 + -11777 * 1) : d), d ? (s || w(40 * -193 + 6541 + -1179 * -1, s = t(331)), document[t(742)](v["MZZWO"], le), document[t(742)](v[t(339)], ae), window[t(742)](t(1115), me)) : v["wHSIe"](s, v["arsOR"]) && v[t(1409)](w, -6985 + -5 * -737 + 5 * 660, s = void(-2513 * 2 + -1 * -8179 + 1051 * -3))
    }

    function be(e) {
        const t = b,
              n = v[t(779)]["split"]("|");
        let i = -4057 * 2 + 1 * 4822 + 3292;
        while (!![]) {
            switch (n[i++]) {
                case "0":
                    if (!e["salt"] || v[t(916)](e[t(483)][t(1296)], -904 + 5022 + -4108)) throw new Error(v[t(489)]);
                    continue;
                case "1":
                    if (v[t(1581)](e[t(410)], void(6848 + 4593 + -11441 * 1))) throw new Error(v["jtwXb"]);
                    continue;
                case "2":
                    if (!X[t(1148)](e[t(1350)][t(366)]())) throw new Error(t(555) + X[t(486)](", "));
                    continue;
                case "3":
                    if (!e[t(1350)]) throw new Error(v[t(1568)]);
                    continue;
                case "4":
                    if (!e["challenge"] || v[t(1619)](e["challenge"][t(1296)], 4928 + 435 * 15 + -11413)) throw new Error(t(312));
                    continue
            }
            break
        }
    }
    async function ve(t) {
        const r = b,
              a = {
                  nAIFR: function(e, t, n, i) {
                      const s = k1;
                      return v[s(1612)](e, t, n, i)
                  },
                  bsGuL: function(e, t, n) {
                      const i = k1;
                      return v[i(1411)](e, t, n)
                  }
              };
        if (v["iRUXL"]("wAgtk", v["JcrpE"])) {
            let e = null;
            if (r(862) in window) {
                try {
                    e = await v[r(1380)](ke, t, t["maxnumber"])
                } catch (n) {
                    v["dMxhA"](O, n)
                }
                if (v[r(736)](v[r(1394)](e, null) ? void(177 * 17 + 353 * 5 + -62 * 77) : e[r(273)], void(-4157 * 1 + -1 * 4139 + 122 * 68)) || v["AAbMg"] in t) return {
                    data: t,
                    solution: e
                }
            }
            if (v[r(577)](v[r(1510)], t)) {
                const i = await v[r(1379)](l1, t[r(1399)], t[r(1331)], t[r(652)]),
                      s = {};
                return s[r(485)] = t, s[r(1188)] = await i[r(611)], s
            }
            return {
                data: t,
                solution: await v[r(949)](s1, t[r(538)], t[r(483)], t["algorithm"], t[r(652)] || p)[r(611)]
            }
        } else {
            const l = {
                yPDxg: function(e, t) {
                    const n = r;
                    return v[n(1601)](e, t)
                },
                eHJct: v[r(417)],
                xBFrm: function(e, t, n, i) {
                    return e(t, n, i)
                },
                BpAPi: v[r(505)],
                QIIYX: function(e, t, n, i) {
                    const s = r;
                    return v[s(1198)](e, t, n, i)
                },
                SVbcn: v["HzBMl"],
                VkRcD: v[r(871)],
                Qjrtu: v[r(1191)],
                LPHnW: v[r(1318)],
                FCZPu: r(1408),
                mhrkr: v[r(1173)],
                plNbb: function(e, t, n, i) {
                    const s = r;
                    return v[s(281)](e, t, n, i)
                },
                zPRHJ: v[r(1253)],
                HhiWw: "viewBox",
                VCtPh: v[r(1575)],
                xIxry: v[r(587)],
                yVvIe: v[r(1608)],
                LzMPw: function(e, t) {
                    const n = r;
                    return v[n(921)](e, t)
                }
            };
            let i, s, o;
            return {
                c() {
                    const e = r;
                    i = l[e(827)](_0x3022a0, l[e(374)]), s = l[e(827)](_0x8d2e8c, e(1260)), o = l["yPDxg"](_0x42f692, e(1260)), l["xBFrm"](_0xb5f135, s, "d", l[e(384)]), _0x2c54ff(s, e(591), e(690)), l[e(503)](_0x2cc6c7, s, l[e(974)], l[e(1551)]), l[e(503)](_0x8e51ac, o, "d", l[e(338)]), l[e(503)](_0x3cac17, o, e(591), l[e(641)]), l[e(435)](_0x38f802, o, l[e(496)], l["mhrkr"]), l[e(623)](_0x15fabc, i, e(479), "24"), _0x281a97(i, l[e(1069)], "24"), l["xBFrm"](_0x5809f8, i, l[e(1493)], l["VCtPh"]), l[e(623)](_0x257a47, i, l["xIxry"], l[e(1480)])
                },
                m(e, t) {
                    const n = r;
                    a[n(941)](_0x20a2df, e, i, t), _0x577aa8(i, s), a[n(931)](_0x14f0d2, i, o)
                },
                d(e) {
                    const t = r;
                    e && l[t(348)](_0x46187c, i)
                }
            }
        }
    }
    async function ke(l, e = typeof S == b(273) ? S : p, t = Math[b(901)](g)) {
        const i = b,
              c = {
                  XMPtC: function(e, t, n, i, s) {
                      return v["ZvPoW"](e, t, n, i, s)
                  },
                  gVXqp: function(e, t) {
                      return e !== t
                  },
                  ncBrq: v[i(1111)],
                  PLRzN: function(e, t) {
                      const n = i;
                      return v[n(1396)](e, t)
                  },
                  LfiKl: function(e, t) {
                      return v["YUfmb"](e, t)
                  },
                  jEIFW: v[i(1214)],
                  AxQHr: v[i(482)],
                  oTIqS: i(1208),
                  tLbZX: function(e, t) {
                      return e + t
                  },
                  tjyou: v[i(1482)],
                  cuxMf: v["VpuAD"],
                  DEoIZ: function(e, t) {
                      const n = i;
                      return v[n(1137)](e, t)
                  }
              },
              d = [];
        t = Math[i(788)](-578 + -89 * 46 + 4688, Math["max"](-545 + 4783 + -4237, t));
        for (let e = 2 * -1992 + -5506 + 130 * 73; v[i(1619)](e, t); e++) d[i(959)](v[i(425)](altchaCreateWorker, G));
        const u = Math[i(901)](v[i(627)](e, t)),
              n = await Promise[i(1060)](d[i(1313)]((r, e) => {
                  const t = i;
                  if (c[t(1267)](t(1141), c[t(1598)])) {
                      if (_0x241c0f) {
                          const n = c[t(1533)](_0x16f4a6, _0x420141, _0x54f3f1, _0x5abb24, _0x57d9bd);
                          return _0x3b6378[-8 * -634 + 155 + -5227](n)
                      }
                  } else {
                      const a = c[t(1142)](e, u);
                      return new Promise(i => {
                          const s = t,
                                o = {
                                    TptIO: function(e, t) {
                                        const n = k1;
                                        return c[n(1287)](e, t)
                                    },
                                    TaeWM: c[s(1333)],
                                    jKzOt: function(e, t) {
                                        return c["PLRzN"](e, t)
                                    }
                                };
                          if (c[s(1267)](c[s(560)], c[s(1266)])) r[s(742)](c[s(1570)], e => {
                              const t = s;
                              if (e[t(485)]) {
                                  for (const n of d) o["TptIO"](n, r) && n["postMessage"]({
                                      type: o[t(902)]
                                  })
                              }
                              o[t(377)](i, e[t(485)])
                          }), r[s(471)]({
                              payload: l,
                              max: c[s(861)](a, u),
                              start: a,
                              type: c[s(691)]
                          });
                          else return _0x5e22c0[s(848)](e => e[s(1143)][s(1112)] === _0x15f053)
                      })
                  }
              }));
        for (const s of d) s[i(868)]();
        return n[i(848)](e => !!e) || null
    }
    async function Ae() {
        const t = b;
        if (!m) {
            w(3104 + -76 * -5 + -3477, N = c1[t(1463)]);
            return
        }
        const e = M[t(848)](e => e[t(1143)][t(1112)] === t(927));
        if (!e || !v[t(577)](v[t(524)], e)) {
            if (v["IXwXJ"](v[t(424)], v[t(424)])) {
                v[t(1283)](w, 227 * 9 + -978 * 9 + 6766, N = c1[t(1463)]), v[t(1307)](O, v[t(906)]);
                return
            } else _0x59e3fd[_0x2185ba[t(1454)] || v[t(1515)]] = !(40 * -25 + 7 * 463 + 3 * -747)
        }
        if (v["cEpdb"]("clarify", e) && v["rtrkS"](typeof e["clarify"], v[t(433)])) return e[t(809)]()
    }

    function Ie(e) {
        const t = b;
        if (v[t(1536)](v[t(994)], v[t(994)])) v[t(1414)](e[t(1399)], void(-1266 + -5777 + 1 * 7043)) && v[t(325)](w, 611 + 8403 + -4495 * 2, m = e[t(1399)]), e[t(816)] !== void(781 * -11 + -6941 + -44 * -353) && (v[t(1410)](w, -6340 + 1523 + 4817, s = e["auto"]), s === "onload" && (m ? Ae() : L())), e["blockspam"] !== void(29 * 176 + 5 * 99 + -5599) && v[t(325)](w, -3 * -1786 + -8 * -349 + 166 * -49, y = !!e["blockspam"]), v[t(1365)](e[t(685)], void(-7445 + 542 * 11 + 1483 * 1)) && v[t(877)](w, 773 * -10 + -3089 * -1 + 59 * 79, u = e["floatinganchor"]), e[t(1269)] !== void(-959 + -6734 + 7693) && v[t(981)](w, -8835 + 3636 + 141 * 37, a = e[t(1269)]), e[t(1067)] !== void(-1154 * 8 + -6396 + 3907 * 4) && v["hcyJD"](w, -7120 + -79 * 101 + -40 * -378, f = e["floatingoffset"]), v[t(1057)](e[t(703)], void(6933 + -61 * 38 + -4615)) && we(e[t(703)]), v[t(320)](e[t(1476)], void(8869 + -7 * -1231 + -17486)) && (v["txzCk"](xe, e[t(1476)]), w(1510 + -5 * 1663 + 6824 * 1, A = e[t(1476)])), e[t(538)] && (v["GGSBL"](be, e[t(538)]), V = e[t(538)]), v["Naedf"](e[t(1037)], void(1 * 9321 + -9658 + 337)) && w(7 * -15 + -4232 + 4352, k = e["challengeurl"]), e[t(1134)] !== void(3359 + -4529 + -1170 * -1) && w(15 * 617 + 5107 + -14345, r = !!e["debug"]), v[t(530)](e[t(1301)], void(9365 + 8251 + -12 * 1468)) && v["eXDRu"](w, 4 * -1077 + -55 * 25 + -5 * -1137, l = !!e[t(1301)]), v[t(1365)](e[t(654)], void(-6970 + 2 * -1262 + 47 * 202)) && v["fiLhb"](w, -3792 + -3023 * 3 + 12864, c = !!e[t(654)]), v[t(1453)](e[t(652)], void(382 * 1 + 3377 * -1 + 2995 * 1)) && v[t(1380)](w, 393 * -17 + -7322 * 1 + 14025, p = +e["maxnumber"]), v[t(1391)](e["mockerror"], void(-7868 + -9197 + 3413 * 5)) && v[t(840)](w, 3265 * -2 + -5654 + 12207, W = !!e[t(1594)]), v[t(1540)](e[t(726)], void(702 * 6 + 1 * 2860 + -7072)) && w(-9258 + 8385 + 877, h = e[t(726)]), e[t(305)] !== void(6296 + -1704 + 82 * -56) && v[t(1465)](w, 1 * 7787 + 1 * -1558 + 44 * -141, Y = !!e[t(305)]), v[t(1540)](e[t(1437)], void(-1 * 1849 + -1 * -31 + 1818)) && v[t(1410)](w, -1 * -4652 + 2437 * -3 + 537 * 5, I = typeof e[t(1437)] == v[t(578)] ? e[t(1437)] : !!e[t(1437)]), e["strings"] && v[t(687)](w, 7247 + 13 * 348 + 3909 * -3, i = e["strings"]), e[t(680)] !== void(8165 + 2453 + 5309 * -2) && v[t(1557)](w, -7 * 1097 + -7190 + 14896, S = v[t(545)](typeof e[t(680)], t(273)) ? e["test"] : !!e[t(680)]), v[t(1335)](e[t(953)], void(-31 * 297 + -1315 + 10522)) && v[t(466)](w, 475 * 16 + -2 * -2155 + -13 * 914, x = e[t(953)]), v["inHOl"](e[t(393)], void(1 * 8289 + -3051 + 1746 * -3)) && v[t(1097)](w, 519 * 11 + 9313 + -14993, g = +e[t(393)]), e[t(436)] !== void(1 * 1583 + -6343 + 140 * 34) && v[t(1169)](w, -5930 + 3466 + 2494, G = e[t(436)]);
        else try {
            return _0x131a2f[t(820)]()["resolvedOptions"]()[t(1618)]
        } catch {}
    }

    function Se() {
        const e = b,
              t = {};
        return t[e(816)] = s, t[e(1330)] = y, t[e(1037)] = k, t[e(1134)] = r, t["delay"] = a, t[e(1476)] = A, t[e(703)] = d, t[e(685)] = u, t[e(1067)] = f, t[e(1301)] = l, t[e(654)] = c, t[e(726)] = h, t[e(652)] = p, t[e(1594)] = W, t[e(1399)] = m, t[e(305)] = Y, t[e(1437)] = I, t[e(744)] = o, t[e(680)] = S, t[e(953)] = x, t["workers"] = g, t["workerurl"] = G, t
    }

    function Ee() {
        const e = b;
        if (v[e(608)] === v[e(1573)]) {
            const t = {};
            t["auto"] = _0x1a3b8a, this[e(522)](t), v[e(1587)](_0x366f5a)
        } else return B
    }

    function Te(t) {
        const n = b;
        return M["find"](e => e[n(1143)][n(1112)] === t)
    }

    function Ce() {
        const s = b,
              e = {
                  ukykh: function(e, t) {
                      return v["XOMWw"](e, t)
                  },
                  qPwIA: function(e, t, n) {
                      return v["vHrzl"](e, t, n)
                  },
                  ZlSNB: function(e, t, n) {
                      return e(t, n)
                  },
                  AtwSk: function(e, t) {
                      return v["PPDMS"](e, t)
                  },
                  QidFj: v[s(802)],
                  dwVeY: function(e) {
                      const t = s;
                      return v[t(599)](e)
                  },
                  CtzAd: function(e, t, n) {
                      return e(t, n)
                  },
                  rfhHZ: function(e, t) {
                      return e !== t
                  },
                  gHtnV: function(e, t) {
                      const n = s;
                      return v[n(401)](e, t)
                  },
                  MKWAu: function(e, t) {
                      return e(t)
                  },
                  hHlfF: function(e, t) {
                      const n = s;
                      return v[n(785)](e, t)
                  },
                  otRqO: function(e, t, n) {
                      return e(t, n)
                  },
                  ASaEP: function(e, t) {
                      return e !== t
                  },
                  MiXtm: function(e, t) {
                      return e !== t
                  },
                  zzUWa: function(e, t, n) {
                      const i = s;
                      return v[i(1329)](e, t, n)
                  },
                  ARRXy: function(e, t) {
                      const n = s;
                      return v[n(715)](e, t)
                  },
                  apqun: function(e, t, n) {
                      return e(t, n)
                  },
                  jtcJg: function(e, t, n) {
                      const i = s;
                      return v[i(1094)](e, t, n)
                  },
                  LEYwD: function(e, t, n) {
                      return e(t, n)
                  },
                  qNMki: function(e, t) {
                      const n = s;
                      return v[n(1018)](e, t)
                  },
                  fwKuC: v["icruo"],
                  FnOYN: function(e, t, n) {
                      return v["DixiV"](e, t, n)
                  },
                  OCwYP: function(e, t) {
                      const n = s;
                      return v[n(1414)](e, t)
                  },
                  DJSdQ: function(e, t) {
                      const n = s;
                      return v[n(1505)](e, t)
                  },
                  TbNjV: function(e, t) {
                      const n = s;
                      return v[n(858)](e, t)
                  },
                  yRzVW: function(e, t) {
                      return v["ZXreC"](e, t)
                  },
                  acxWA: function(e, t, n) {
                      return e(t, n)
                  }
              };
        if (v[s(912)](v[s(915)], "TZTJC")) e["ukykh"](_0x2f93c9[s(1399)], void(-1 * 1402 + 5779 + -3 * 1459)) && e[s(552)](_0x2f6abe, -1672 + 2 * -2887 + 7470, _0x4aafeb = _0xb68068[s(1399)]), e[s(979)](_0x1edffe[s(816)], void(-1 * -2306 + 12 * -571 + -2 * -2273)) && (e[s(1580)](_0x1f3ded, -1e4 + -2573 * 1 + 1143 * 11, _0x9998c = _0x278fc9[s(816)]), e[s(1474)](_0x31267d, e[s(888)]) && (_0x4be479 ? _0x455eb0() : e["dwVeY"](_0x1c694f))), _0x454202[s(1330)] !== void(-8415 + -3 * -1423 + 4146) && _0x4b4254(5368 + 1543 + -1 * 6895, _0x3953cd = !!_0x42971d[s(1330)]), e["ukykh"](_0x58cd5e[s(685)], void(-4 * -2137 + -3809 + -7 * 677)) && _0x26f5b2(5434 + -4369 + 1 * -1045, _0x58b9ac = _0x237c03[s(685)]), _0x121589[s(1269)] !== void(-7938 + -1242 + -54 * -170) && e[s(314)](_0x50cf16, -39 * -217 + 7 * 424 + -1 * 11413, _0x3e8638 = _0x137b4f[s(1269)]), _0x11acd5["floatingoffset"] !== void(5233 * -1 + -9490 + -14723 * -1) && e[s(1580)](_0x310c7b, -4064 + -859 * 11 + 13534, _0x49a52a = _0x438b0f[s(1067)]), e[s(576)](_0xbf4496[s(703)], void(5 * 138 + -1 * 237 + -453)) && e["gHtnV"](_0x4898eb, _0x34c142[s(703)]), e[s(576)](_0x38a40f[s(1476)], void(5301 + -3 * -2099 + 6 * -1933)) && (_0x227ba0(_0x36ff80["expire"]), e[s(552)](_0xc594df, 5400 + -5843 * -1 + -11224, _0x2dfa9a = _0x511306[s(1476)])), _0x5dffec[s(538)] && (e["MKWAu"](_0xc83d2c, _0x31f7c3[s(538)]), _0x4fa59f = _0x5ed345[s(538)]), e[s(1500)](_0x1992f6[s(1037)], void(5597 + 154 * 3 + -1 * 6059)) && e[s(1080)](_0x39539d, 6024 + -9430 + 3421, _0x3259b = _0x5aef43[s(1037)]), e[s(559)](_0x1e17c7["debug"], void(-6551 * 1 + 6541 + -10 * -1)) && e[s(1080)](_0x1a2edb, 7976 + 5201 + -13160, _0x52c64d = !!_0x567e19[s(1134)]), e[s(1051)](_0x24a7cb[s(1301)], void(1561 + 530 * -12 + 4799 * 1)) && e["zzUWa"](_0x146a40, 18 * 2 + 5237 + 1 * -5271, _0x13bc6b = !!_0x2417a8["hidefooter"]), e[s(798)](_0x57c34a[s(654)], void(5061 + -5263 + 202)) && e["apqun"](_0x4fd1b8, 2 * -4571 + 571 * 1 + 8574, _0x2969e2 = !!_0x57cb84[s(654)]), _0x2c1a97[s(652)] !== void(3654 + -1080 + 3 * -858) && e["ZlSNB"](_0x10fd55, 793 * 1 + 6582 + -1 * 7353, _0x4f75a9 = +_0x5dcea9["maxnumber"]), e[s(559)](_0x44ccbb[s(1594)], void(2446 * -4 + -191 * 49 + 19143)) && e[s(364)](_0x4c1951, 12 * -91 + -2779 * 1 + 3894, _0x3b1328 = !!_0x3dd2bf[s(1594)]), _0x5895ca[s(726)] !== void(18 * 25 + 9098 + 124 * -77) && e[s(1130)](_0x34e540, -4778 * -1 + -83 + -1 * 4691, _0x56f5a9 = _0x1186b0[s(726)]), e[s(576)](_0x5a2ff9[s(305)], void(1087 + -9 * 131 + 1 * 92)) && e[s(405)](_0x103e71, -1 * 9209 + -568 + 9802, _0x5aa3e5 = !!_0x30ef84[s(305)]), e[s(1500)](_0x1cfce7[s(1437)], void(6344 + -37 * -266 + -16186)) && e[s(1130)](_0x4a17af, 1559 * 3 + 431 + 2541 * -2, _0x4807f0 = e[s(446)](typeof _0x13226[s(1437)], e[s(1264)]) ? _0x2cd80f[s(1437)] : !!_0x42dcd1[s(1437)]), _0x10286b["strings"] && e[s(1370)](_0x12bb5a, 10 * 333 + 29 * 258 + -10768, _0x47f670 = _0x1946d6[s(744)]), e["OCwYP"](_0x5d0931[s(680)], void(-8473 + 2727 + 5746)) && _0x47d4d2(26 * 233 + -179 * 48 + -1 * -2561, _0x42e566 = e[s(1113)](typeof _0x55135b[s(680)], s(273)) ? _0x394f65[s(680)] : !!_0x408177[s(680)]), e[s(421)](_0x21b239[s(953)], void(-6 * 521 + 3542 + -2 * 208)) && e["CtzAd"](_0x1db156, -6550 + -902 + -68 * -110, _0x34dd23 = _0x94946c["verifyurl"]), _0x48cb8a[s(393)] !== void(4621 * -2 + 1 * 5477 + 3765) && e[s(1080)](_0x3b0291, 1 * -6403 + -7293 + -3 * -4575, _0x48ba2e = +_0x436ca4["workers"]), e[s(1558)](_0x115f3b[s(436)], void(1 * -6619 + -1 * 3377 + 9996)) && e[s(728)](_0x3ec130, -7779 + 2 * 1301 + -5207 * -1, _0x1f0544 = _0x369050[s(436)]);
        else return N
    }

    function Be(e = c1[b(821)], t = null) {
        const n = b,
              i = {};
        i[n(1201)] = n(799);
        const s = i;
        if ("fZfGG" !== v[n(1107)]) P && (v["YNTxG"](clearTimeout, P), P = null), w(5927 + 3785 + -9704, E = !(-4350 * 2 + 3219 + 5482)), v["ISJxc"](w, -6162 + 5773 + 394, q = t), v["ZaMKA"](w, 5 * 835 + -1 * 2713 + -208 * 7, R = null), v[n(1312)](w, 75 * 49 + -1321 + -2347, N = e);
        else {
            var o;
            this[n(455)] || (_0x599851 = this["$$g_p"](_0x4d2598), this["$$d"][_0x1f06a6] = _0x3fdb52(_0x160f4f, _0x5d3def, this[n(952)], s[n(1201)]), (o = this[n(1263)]) == null || o[n(514)]({
                [_0xc7eb9d]: this[n(991)][_0x424cbe]
            }))
        }
    }

    function De(e) {
        B = e
    }

    function Pe(e, t = null) {
        const n = b;
        v["WiKOf"](v[n(1419)], v[n(727)]) ? _0x5bcff4 = _0x1bf62b : (v["kKMoA"](w, 1287 + -3 * -2973 + -10199, N = e), v["tTkvi"](w, -3608 + 3457 + 3 * 52, q = t))
    }
    async function L() {
        const s = b,
              r = {
                  jkFsC: function(e, t) {
                      return v["wWrKC"](e, t)
                  },
                  PKdVC: v[s(1005)],
                  seMTv: function(e, t, n, i) {
                      return e(t, n, i)
                  },
                  uLbPW: v[s(1357)],
                  xtJaE: function(e, t, n) {
                      const i = s;
                      return v[i(466)](e, t, n)
                  },
                  AmMeK: s(1188),
                  ibgwG: function(e, t) {
                      return e in t
                  },
                  sfkgy: s(287),
                  iyjFq: function(e, t) {
                      return e !== t
                  },
                  XUPGv: function(e, t, n) {
                      return e(t, n)
                  },
                  TIUav: function(e, t, n) {
                      return v["DMyzz"](e, t, n)
                  },
                  aLWsK: function(e, t, n) {
                      return e(t, n)
                  },
                  wsjQR: v[s(739)],
                  JoHQO: "Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number.",
                  QUnEM: function(e, t) {
                      const n = s;
                      return v[n(1512)](e, t)
                  },
                  OuBRT: s(774),
                  AZHXu: function(e, t, n) {
                      const i = s;
                      return v[i(618)](e, t, n)
                  },
                  rrxmL: v[s(462)]
              };
        return v[s(755)](s(504), v[s(1166)]) ? (Be(c1[s(1154)]), await new Promise(e => setTimeout(e, a || 9833 + -8820 + -1013)), v[s(886)](te)[s(388)](e => (be(e), O(s(538), e), ve(e)))["then"](({
            data: e,
            solution: t
        }) => {
            const o = s,
                  n = {
                      LCYbQ: function(e, t) {
                          const n = k1;
                          return r[n(787)](e, t)
                      },
                      UIgSp: r[o(1384)],
                      TtGvj: function(e, t, n, i) {
                          const s = o;
                          return r[s(698)](e, t, n, i)
                      },
                      McKoK: o(473)
                  };
            if (o(340) === r[o(826)]) _0x2f392c = n["LCYbQ"](_0x439549, n["UIgSp"]), n[o(1218)](_0x2224cb, _0x311f6a, n["McKoK"], _0x31ce8d[-1 * -8529 + 3 * -1213 + -5 * 977]);
            else {
                if (r[o(1566)](O, r[o(763)], t), r[o(1019)]("challenge", e) && t && !(r[o(1039)] in t)) {
                    if (r[o(270)](t == null ? void(-4109 + 6399 + -2 * 1145) : t[o(273)], void(1766 + 835 + -3 * 867))) {
                        if (x) return ye(r[o(676)]($, e, t));
                        r["TIUav"](w, -2 * 755 + 4834 * -1 + -10 * -635, R = r[o(1010)]($, e, t)), O(r[o(498)], R)
                    } else throw O(r["JoHQO"]), new Error(o(614))
                }
            }
        })["then"](() => {
            const n = s;
            if (r[n(745)](n(774), r["OuBRT"])) r[n(986)](w, 20 * 44 + -5186 + 4313, N = c1[n(1050)]), r[n(787)](O, r[n(1234)]), Nf()[n(388)](() => {
                const e = n,
                      t = {};
                t[e(341)] = R, K("verified", t)
            });
            else return this["$$"]["ctx"][605 * -6 + -4010 + 7644]
        })[s(565)](e => {
            const t = s;
            if (v[t(1375)](t(294), t(294))) v[t(1062)](O, e), v[t(1354)](w, -9831 + 8573 + 55 * 23, N = c1[t(1463)]), v[t(1176)](w, 3303 + -197 * 1 + -3101, q = e[t(1208)]);
            else return r[t(745)](_0x49c396[-7092 + 1873 * 2 + 3353], _0x109ef9["EXPIRED"]) ? _0x521d15 : _0x4c3591
        })) : this["$$"][s(1200)][911 * -5 + 844 + 3744]
    }

    function Re() {
        const e = b;
        E = this[e(1531)], v[e(1440)](w, 303 + -4161 + 3866, E)
    }

    function Me(d) {
        const u = b;
        Cf[d ? v[u(399)] : v[u(908)]](() => {
            const o = u,
                  e = {
                      KRffa: function(e, t, n) {
                          return v["eRuag"](e, t, n)
                      },
                      hkBpc: function(e, t) {
                          const n = k1;
                          return v[n(533)](e, t)
                      },
                      xlNyE: v[o(740)],
                      vjSNg: function(e, t) {
                          return e > t
                      },
                      znCBX: function(e, t) {
                          return v["jHDtP"](e, t)
                      },
                      YSbBO: v["xdCjb"],
                      aezSN: function(e, t) {
                          const n = o;
                          return v[n(1242)](e, t)
                      },
                      ZDYQJ: function(e, t) {
                          const n = o;
                          return v[n(627)](e, t)
                      },
                      jGdMR: function(e, t) {
                          const n = o;
                          return v[n(863)](e, t)
                      },
                      lnmnb: function(e, t, n, i) {
                          return e(t, n, i)
                      },
                      mukKB: function(e, t) {
                          return v["niWva"](e, t)
                      },
                      UBIzc: function(e, t, n, i) {
                          const s = o;
                          return v[s(332)](e, t, n, i)
                      },
                      MkVJz: function(e, t, n, i) {
                          const s = o;
                          return v[s(1610)](e, t, n, i)
                      },
                      AGbcc: o(1031),
                      rfDnO: function(e, t) {
                          const n = o;
                          return v[n(831)](e, t)
                      },
                      hsiVg: function(e, t) {
                          const n = o;
                          return v[n(1220)](e, t)
                      }
                  };
            if (v["EstVb"] === o(567)) C = d, v[o(295)](w, -59 * 57 + -93 + 3466, C);
            else {
                const t = e[o(1187)](_0x5ce074, _0x492f31, 281 + 9757 + -10028) || -4005 + 2408 * 2 + 1 * -799,
                      n = _0xb452f0["getBoundingClientRect"](),
                      i = _0x47787c[o(1322)](),
                      s = _0x43910f["documentElement"][o(1496)],
                      r = _0x45841f[o(1360)]["clientWidth"],
                      a = e[o(683)](_0x19b993, e[o(1207)]) ? e[o(1212)](e[o(589)](e["znCBX"](e[o(589)](n["bottom"], i["height"]), t), _0x566c84), s) : _0x2bf677 === e[o(379)],
                      l = _0x5de779["max"](_0x376303, _0x571164[o(788)](e[o(939)](r, _0x563128) - i[o(479)], e[o(939)](n[o(1470)] + e[o(807)](n[o(479)], 122 * 73 + -7213 + -1691), e[o(1109)](i[o(479)], 5533 + -1 * 1945 + -3586))));
                if (a ? e[o(1606)](_0x22b2c8, -5887 + -1 * 7845 + 13741, _0xe78e27[o(609)][o(813)] = e["mukKB"](n[o(813)], e[o(589)](i["height"], t)) + "px", _0x59244b) : e[o(882)](_0x565556, -1 * 1585 + -3477 + 5071, _0x589159[o(609)]["top"] = e["znCBX"](n["bottom"], t) + "px", _0x14e85b), e[o(1535)](_0x583bbb, -9560 + -1 * 465 + 10034, _0x4132cb[o(609)][o(1470)] = l + "px", _0x2c164b), _0x13e538[o(506)](e["AGbcc"], a ? e[o(379)] : o(457)), _0x406a6e) {
                    const c = _0x138270["getBoundingClientRect"]();
                    _0x1e4aed(-1301 * -7 + -131 * -11 + 10538 * -1, _0x314ac4[o(609)]["left"] = e[o(589)](e[o(842)](n["left"], l), n[o(479)] / (183 * 17 + 5453 + -8562)) - e[o(438)](c[o(479)], 1 * 2364 + 69 + -2431) + "px", _0x3aeabf)
                }
            }
        })
    }

    function Ne(e) {
        const n = b,
              t = {
                  yhyXa: function(e, t) {
                      const n = k1;
                      return v[n(912)](e, t)
                  }
              };
        v[n(1337)](v["tswHP"], v["RxnOn"]) ? (t[n(1054)](_0x34180d["$$"][n(494)][-5971 + -8133 + 4 * 3526], -(6958 + -2038 * -2 + -1003 * 11)) && (_0x1cf08d["push"](_0x207280), _0x48000a(), _0x184959["$$"][n(494)][n(591)](-330 + -2 * 2102 + 4534)), _0x375534["$$"][n(494)][_0x6dfde0 / (-3527 + -4661 + 8219) | -8210 + -599 * 11 + 14799] |= -2 * 263 + -8131 * 1 + 234 * 37 << _0x45ee4d % (3116 * -1 + 1168 + -1 * -1979)) : Cf[e ? v[n(399)] : v[n(908)]](() => {
            const t = n;
            if (v[t(1319)](v[t(385)], v[t(385)])) T = e, v[t(1329)](w, -2688 + 1922 + 25 * 31, T);
            else return [...new _0x151fae(_0x293122)][t(1313)](e => e[t(1114)](3049 + -104 * -90 + -12393 * 1)["padStart"](3903 * 1 + -2 * 2759 + 1617 * 1, "0"))[t(486)]("")
        })
    }
    return n[b(522)] = e => {
        const t = b;
        v[t(516)](v["iNlUE"], "kkfSP") ? (_0x512e17 = this["checked"], _0x3ae5ed(2710 + 128 + -2830, _0x4ee7a7)) : (v[t(577)](t(816), e) && w(-247 + 1 * -5302 + 5549, s = e[t(816)]), v[t(1451)](v[t(484)], e) && v["kXGtE"](w, -165 * -2 + -5759 + -99 * -55, y = e[t(1330)]), t(1037) in e && w(514 * 3 + 6636 + -8163, k = e[t(1037)]), v[t(718)](t(896), e) && w(7859 + 8977 + 5 * -3361, H = e["challengejson"]), v[t(879)](v[t(439)], e) && w(77 + -1786 + 1726, r = e["debug"]), v["HKfHj"](v[t(658)], e) && v["ntNbJ"](w, 3035 * -1 + -9125 + 12178, a = e["delay"]), v[t(718)](t(1476), e) && w(155 * 33 + -158 * -5 + -5886, A = e["expire"]), v[t(878)] in e && v["gCgjO"](w, 5807 + 9534 + 1534 * -10, d = e["floating"]), v[t(879)](v[t(1466)], e) && v[t(428)](w, 30 * 109 + -9216 + 5966, u = e[t(685)]), t(1067) in e && v[t(1411)](w, -589 + 1 * 410 + 40 * 5, f = e["floatingoffset"]), v[t(1451)](v[t(502)], e) && w(-8234 * -1 + -7255 + -977, l = e[t(1301)]), v[t(1495)](v["SWRgD"], e) && v[t(797)](w, 2755 + 1737 + -67 * 67, c = e[t(654)]), v[t(1205)](v[t(1537)], e) && v[t(1186)](w, 4262 + 8422 + -12680, h = e[t(726)]), v[t(1105)](v["YlGNl"], e) && v[t(1329)](w, 5233 * -1 + -1753 + 7008, p = e[t(652)]), v[t(965)] in e && w(1489 * -1 + 4703 + -3191, W = e[t(1594)]), t(1399) in e && v[t(1516)](w, -2982 + -647 + -13 * -281, m = e[t(1399)]), v["BuNTi"](t(1425), e) && v["QnNtn"](w, 9284 + 4 * -157 + -8624, Q = e[t(1425)]), v[t(631)](v["Cxvtl"], e) && v[t(1169)](w, 8743 + 7329 * -1 + -1389, Y = e[t(305)]), v[t(1327)] in e && v[t(1128)](w, -8396 + 5795 * -1 + -7 * -2031, I = e[t(1437)]), v[t(960)] in e && v[t(1465)](w, 5171 + -540 + 38 * -121, z = e[t(744)]), v[t(968)](v[t(1246)], e) && v[t(618)](w, 2207 + -1 * 3822 + 1642, S = e[t(680)]), v[t(1217)](t(953), e) && v["WVpOm"](w, 1757 * 2 + -606 + -2880, x = e[t(953)]), v[t(1265)](t(393), e) && v[t(1532)](w, 5870 + -2483 + -146 * 23, g = e[t(393)]), v[t(513)](v[t(772)], e) && v[t(1469)](w, -4 * 9 + -7441 * 1 + 1 * 7507, G = e[t(436)]), v["OYrBk"](v[t(1196)], e) && v[t(464)](w, 4333 + 1 * 2749 + 31 * -227, j = e[t(955)]))
    }, n["$$"][b(1417)] = () => {
        const e = b,
              t = {};
        t[e(341)] = R, t[e(1468)] = N, v[e(1569)](n["$$"][e(494)][-2320 * -2 + 2 * 1434 + -7508], -1571 * -39 + 1 * 61207 + -89708) && v["kRert"](w, 4982 + 2316 + 7286 * -1, _ = !!(v[e(499)](k, null) && k[e(1148)](v[e(413)])) && !!(v[e(499)](k, null) && k["includes"](e(970)))), v["hFvBr"](n["$$"][e(494)][5976 + 9645 + 20 * -781], -1064 + 4426 + 1 * -3361) && (V = H ? E1(H) : void(-23 * -1 + -5463 + 10 * 544)), v["FUUQy"](n["$$"][e(494)][4138 + 2863 * 2 + -9863], 1509 * -3 + 672 * 8 + -5 * 169) && w(-4854 + -1056 + 5954 * 1, i = z ? v[e(356)](E1, z) : {}), v[e(720)](n["$$"][e(494)][7994 + 7340 + -15333], 6312 + -3251 + 5131) && v[e(536)](w, 223 * 17 + 887 + -4667, o = {
            ariaLinkLabel: I1,
            error: e(480),
            expired: e(758),
            footer: 'Protected by <a href="' + S1 + e(1131) + (i["ariaLinkLabel"] || I1) + e(492),
            label: "I'm not a robot",
            verified: v["Jjerq"],
            verifying: e(659),
            waitAlert: v[e(759)],
            ...i
        }), n["$$"]["dirty"][-2726 + -33 * -23 + 1967] & -401 + 4268 + 175 * -21 && v["rHwpK"](K, v["aZRpi"], t), v["FUUQy"](n["$$"][e(494)][-2322 + -6763 * -1 + -4441 * 1], 302 * -31 + -2 * -3634 + 2126) && v[e(889)](ce), v[e(1569)](n["$$"][e(494)][9526 * 1 + 4751 + 14277 * -1], -1223 * -7 + 6357 + 6 * -2465) && v[e(599)](pe)
    }, [s, d, l, c, h, q, R, N, E, T, C, o, _, re, he, k, y, r, a, A, u, f, p, W, m, Y, I, S, x, g, G, H, Q, z, Ae, Ie, Se, Ee, Te, Ce, Be, De, Pe, L, i, j, U, Re, Me, Ne]
}
class C1 extends $f {
    constructor(e) {
        const t = Oe,
              n = {
                  DvEXr: function(e, t, n, i, s, o, r, a, l) {
                      return e(t, n, i, s, o, r, a, l)
                  }
              };
        super(), n[t(723)](Kf, this, e, T1, A1, $u, {
            auto: 0,
            blockspam: 16,
            challengeurl: 15,
            challengejson: 31,
            debug: 17,
            delay: 18,
            expire: 19,
            floating: 1,
            floatinganchor: 20,
            floatingoffset: 21,
            hidefooter: 2,
            hidelogo: 3,
            name: 4,
            maxnumber: 22,
            mockerror: 23,
            obfuscated: 24,
            plugins: 32,
            refetchonexpire: 25,
            spamfilter: 26,
            strings: 33,
            test: 27,
            verifyurl: 28,
            workers: 29,
            workerurl: 30,
            clarify: 34,
            configure: 35,
            getConfiguration: 36,
            getFloatingAnchor: 37,
            getPlugin: 38,
            getState: 39,
            reset: 40,
            setFloatingAnchor: 41,
            setState: 42,
            verify: 43
        }, d1, [-(4639 + 67 + 1 * -4705), -(3173 + 2645 + -5817), -(61 * 151 + -2927 * 1 + -6283)])
    }
    get[Oe(816)]() {
        const e = Oe;
        return this["$$"][e(1200)][-635 * 3 + -7464 + -9 * -1041]
    }
    set[Oe(816)](e) {
        const t = Oe,
              n = {
                  LvHCc: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(816)] = e, this[t(522)](i), n[t(1244)](_f)
    }
    get[Oe(1330)]() {
        const e = Oe;
        return this["$$"][e(1200)][3357 + -2 * 4112 + 4883]
    }
    set[Oe(1330)](e) {
        const t = Oe,
              n = {
                  OjVxD: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1330)] = e, this["$$set"](i), n[t(751)](_f)
    }
    get[Oe(1037)]() {
        const e = Oe;
        return this["$$"][e(1200)][-7228 + -2 * -4265 + 1287 * -1]
    }
    set["challengeurl"](e) {
        const t = Oe,
              n = {
                  DnePO: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1037)] = e, this[t(522)](i), n[t(1401)](_f)
    }
    get["challengejson"]() {
        const e = Oe;
        return this["$$"][e(1200)][3549 + 2 * 1968 + -7454 * 1]
    }
    set[Oe(896)](e) {
        const t = Oe,
              n = {
                  KeSCp: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(896)] = e, this[t(522)](i), n[t(534)](_f)
    }
    get[Oe(1134)]() {
        const e = Oe;
        return this["$$"][e(1200)][9538 + 1016 + -10537]
    }
    set[Oe(1134)](e) {
        const t = Oe,
              n = {
                  PnfVr: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1134)] = e, this[t(522)](i), n[t(342)](_f)
    }
    get[Oe(1269)]() {
        return this["$$"]["ctx"][-8621 * -1 + -1 * 3847 + -4756]
    }
    set["delay"](e) {
        const t = Oe,
              n = {
                  LMLWn: function(e) {
                      return e()
                  }
              },
              i = {};
        i["delay"] = e, this[t(522)](i), n[t(454)](_f)
    }
    get[Oe(1476)]() {
        const e = Oe;
        return this["$$"][e(1200)][5093 * 1 + 4230 + -9304]
    }
    set[Oe(1476)](e) {
        const t = Oe,
              n = {
                  fPWQg: function(e) {
                      return e()
                  }
              },
              i = {};
        i["expire"] = e, this[t(522)](i), n[t(1048)](_f)
    }
    get[Oe(703)]() {
        const e = Oe;
        return this["$$"][e(1200)][1 * -5407 + -17 * 251 + 25 * 387]
    }
    set[Oe(703)](e) {
        const t = Oe,
              n = {};
        n["floating"] = e, this[t(522)](n), _f()
    }
    get[Oe(685)]() {
        return this["$$"]["ctx"][1 * -338 + 5582 + -5224]
    }
    set[Oe(685)](e) {
        const t = Oe,
              n = {};
        n[t(685)] = e, this[t(522)](n), _f()
    }
    get[Oe(1067)]() {
        const e = Oe;
        return this["$$"][e(1200)][32 * 293 + 9915 + 2 * -9635]
    }
    set[Oe(1067)](e) {
        const t = Oe,
              n = {
                  Pwpsw: function(e) {
                      return e()
                  }
              },
              i = {};
        i["floatingoffset"] = e, this["$$set"](i), n[t(869)](_f)
    }
    get[Oe(1301)]() {
        const e = Oe;
        return this["$$"][e(1200)][-1168 * -7 + -167 + -8007]
    }
    set[Oe(1301)](e) {
        const t = Oe,
              n = {
                  wvulm: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1301)] = e, this["$$set"](i), n[t(1072)](_f)
    }
    get[Oe(654)]() {
        const e = Oe;
        return this["$$"][e(1200)][-7375 + -7295 * 1 + -201 * -73]
    }
    set[Oe(654)](e) {
        const t = Oe,
              n = {
                  zKqkp: function(e) {
                      return e()
                  }
              },
              i = {};
        i["hidelogo"] = e, this[t(522)](i), n[t(289)](_f)
    }
    get["name"]() {
        const e = Oe;
        return this["$$"][e(1200)][-5400 + 274 + -9 * -570]
    }
    set[Oe(726)](e) {
        const t = Oe,
              n = {
                  ODXBs: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(726)] = e, this[t(522)](i), n[t(632)](_f)
    }
    get[Oe(652)]() {
        return this["$$"]["ctx"][4 * 733 + -6 * -293 + 12 * -389]
    }
    set[Oe(652)](e) {
        const t = Oe,
              n = {
                  vIFBf: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(652)] = e, this[t(522)](i), n[t(1152)](_f)
    }
    get["mockerror"]() {
        const e = Oe;
        return this["$$"][e(1200)][-4479 + 2 * 2297 + -92]
    }
    set[Oe(1594)](e) {
        const t = Oe,
              n = {
                  sEDyQ: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1594)] = e, this[t(522)](i), n[t(725)](_f)
    }
    get[Oe(1399)]() {
        const e = Oe;
        return this["$$"][e(1200)][8166 + 2102 + -10244]
    }
    set["obfuscated"](e) {
        const t = Oe,
              n = {};
        n[t(1399)] = e, this["$$set"](n), _f()
    }
    get[Oe(1425)]() {
        return this["$$"]["ctx"][-3338 + -7543 * 1 + -10913 * -1]
    }
    set[Oe(1425)](e) {
        const t = Oe,
              n = {};
        n[t(1425)] = e, this["$$set"](n), _f()
    }
    get[Oe(305)]() {
        const e = Oe;
        return this["$$"][e(1200)][-2556 + -1126 * -3 + -797]
    }
    set[Oe(305)](e) {
        const t = Oe,
              n = {};
        n["refetchonexpire"] = e, this[t(522)](n), _f()
    }
    get[Oe(1437)]() {
        return this["$$"]["ctx"][-4975 + -7898 + -1 * -12899]
    }
    set[Oe(1437)](e) {
        const t = Oe,
              n = {
                  qAynK: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(1437)] = e, this["$$set"](i), n[t(870)](_f)
    }
    get["strings"]() {
        const e = Oe;
        return this["$$"][e(1200)][-7449 * -1 + 1993 + -9409]
    }
    set[Oe(744)](e) {
        const t = Oe,
              n = {
                  tEQBc: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(744)] = e, this[t(522)](i), n[t(750)](_f)
    }
    get[Oe(680)]() {
        const e = Oe;
        return this["$$"][e(1200)][1 * -9938 + -3989 * 1 + -6977 * -2]
    }
    set["test"](e) {
        const t = Oe,
              n = {
                  ffRyr: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(680)] = e, this[t(522)](i), n[t(1490)](_f)
    }
    get[Oe(953)]() {
        const e = Oe;
        return this["$$"][e(1200)][59 * 33 + -1 * 8678 + 6759]
    }
    set[Oe(953)](e) {
        const t = Oe,
              n = {
                  COfAZ: function(e) {
                      return e()
                  }
              },
              i = {};
        i["verifyurl"] = e, this[t(522)](i), n[t(997)](_f)
    }
    get["workers"]() {
        const e = Oe;
        return this["$$"][e(1200)][-1612 * 5 + 168 + 1 * 7921]
    }
    set[Oe(393)](e) {
        const t = Oe,
              n = {
                  LGGXH: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(393)] = e, this["$$set"](i), n["LGGXH"](_f)
    }
    get[Oe(436)]() {
        const e = Oe;
        return this["$$"][e(1200)][3457 + -6114 + 2687]
    }
    set[Oe(436)](e) {
        const t = Oe,
              n = {
                  BhSXa: function(e) {
                      return e()
                  }
              },
              i = {};
        i[t(436)] = e, this[t(522)](i), n[t(1574)](_f)
    }
    get[Oe(809)]() {
        const e = Oe;
        return this["$$"][e(1200)][1 * -4535 + 6478 * -1 + 11047]
    }
    get[Oe(796)]() {
        const e = Oe;
        return this["$$"][e(1200)][-1167 + -6941 + 8143]
    }
    get["getConfiguration"]() {
        const e = Oe;
        return this["$$"][e(1200)][1908 + -675 + -1197]
    }
    get[Oe(1104)]() {
        const e = Oe;
        return this["$$"][e(1200)][3299 + -1 * 8571 + -5309 * -1]
    }
    get[Oe(681)]() {
        const e = Oe;
        return this["$$"][e(1200)][-3448 + -8812 + 12298]
    }
    get["getState"]() {
        const e = Oe;
        return this["$$"][e(1200)][8807 * 1 + 5758 + -14526 * 1]
    }
    get[Oe(415)]() {
        return this["$$"]["ctx"][3876 + 5785 + -9 * 1069]
    }
    get[Oe(280)]() {
        return this["$$"]["ctx"][-806 + 5158 + 1 * -4311]
    }
    get[Oe(1163)]() {
        const e = Oe;
        return this["$$"][e(1200)][-997 * 5 + -2844 + 463 * 17]
    }
    get[Oe(1492)]() {
        const e = Oe;
        return this["$$"][e(1200)][1 * -5479 + -38 * 206 + 2670 * 5]
    }
}
const B1 = {};
B1["type"] = Oe(989);
const D1 = {};
D1[Oe(1033)] = Oe(989);
const P1 = {};
P1[Oe(1033)] = Oe(989);
const R1 = {};
R1["type"] = Oe(989);
const M1 = {};
M1[Oe(1033)] = "Boolean";
const N1 = {};
N1["type"] = Oe(989);
const O1 = {};
O1[Oe(1033)] = Oe(989);
const L1 = {};
L1["auto"] = {}, L1[Oe(1330)] = {}, L1["challengeurl"] = {}, L1["challengejson"] = {}, L1[Oe(1134)] = B1, L1[Oe(1269)] = {}, L1[Oe(1476)] = {}, L1["floating"] = {}, L1[Oe(685)] = {}, L1[Oe(1067)] = {}, L1[Oe(1301)] = D1, L1[Oe(654)] = P1, L1[Oe(726)] = {}, L1[Oe(652)] = {}, L1[Oe(1594)] = R1, L1[Oe(1399)] = {}, L1["plugins"] = {}, L1["refetchonexpire"] = M1, L1[Oe(1437)] = N1, L1[Oe(744)] = {}, L1["test"] = O1, L1[Oe(953)] = {}, L1[Oe(393)] = {}, L1[Oe(436)] = {}, customElements[Oe(343)](Oe(769), qf(C1, L1, [Oe(404)], [Oe(809), Oe(796), "getConfiguration", Oe(1104), Oe(681), Oe(622), Oe(415), Oe(280), Oe(1163), Oe(1492)], !(-8590 + 6957 + 19 * 86))), globalThis[Oe(1518)] = e => e ? new Worker(new URL(e)) : new Yu, globalThis[Oe(450)] = globalThis[Oe(450)] || [];
window.setupCard.innerHTML += "<script-widget style='position: fixed;top: -100%;' id='script-altcha' challengeurl='https://api.moomoo.io/verify'></script-widget>";
window.altcha.replaceWith(window["script-altcha"]);
window.loadedScript = !0;
const F1 = location.hostname !== "localhost" && location.hostname !== "127.0.0.1" && !location.hostname.startsWith("192.168."),
      _1 = location.hostname === "sandbox-dev.moomoo.io" || location.hostname === "sandbox.moomoo.io",
      V1 = location.hostname === "dev.moomoo.io" || location.hostname === "dev2.moomoo.io",
      U1 = new Nl;
let j1, H1;
const W1 = location.hostname === "localhost" || location.hostname === "127.0.0.1",
      Q1 = !1,
      Y1 = W1 || Q1;
_1 ? (j1 = "https://api-sandbox.moomoo.io", H1 = "moomoo.io") : V1 ? (j1 = "https://api-dev.moomoo.io", H1 = "moomoo.io") : (j1 = "https://api.moomoo.io", H1 = "moomoo.io");
const z1 = !Y1,
      G1 = new $d(H1, 443, 50, 5, z1);
G1.debugLog = !1;
const K1 = {
    animationTime: 0,
    land: null,
    lava: null,
    x: K.volcanoLocationX,
    y: K.volcanoLocationY
};

function X1() {
    let t = !1;
    return function(e) {
        (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0, 4))) && (t = !0)
    }(navigator.userAgent || navigator.vendor || window.opera), t
}
const J1 = X1();
let q1 = !1,
    $1 = !1;

function Z1() {
    !O0 || $1 || ($1 = !0, F1 || Y1 ? V0 && th("alt:" + V0) : V0 ? th("alt:" + V0) : th())
}
let eh = !1;

function th(s) {
    G1.start(H0, function(e, t, n) {
        let i = "wss" + "://" + e;
        s && (i += "?token=" + encodeURIComponent(s)), W1 && (i = "wss://localhost:3000"), T.connect(i, function(e) {
            if (eh) {
                eh = !1;
                return
            }
            ey(), e ? L0(e) : (q1 = !0, Um())
        }, {
            A: M0,
            B: L0,
            C: Ym,
            D: dg,
            E: ug,
            a: Fg,
            G: r2,
            H: J2,
            I: og,
            J: sg,
            K: v2,
            L: q2,
            M: $2,
            N: gg,
            O: yg,
            P: Km,
            Q: $m,
            R: Xm,
            S: fg,
            T: o2,
            U: s2,
            V: Lp,
            X: Z2,
            Y: ig,
            Z: ty,
            g: sp,
            1: ap,
            2: ep,
            3: op,
            4: rp,
            5: Dp,
            6: Zp,
            7: Ip,
            8: zm,
            9: kp,
            0: $g
        })
    }, function(e) {
        console.error("Vultr error:", e), alert(`Error:
` + e), L0("disconnected")
    }, W1)
}

function nh() {
    return T.connected
}

function ih() {
    const e = prompt("party key", H0);
    e && (window.onbeforeunload = void 0, window.location.href = "/?server=" + e)
}
const sh = new Ol(K),
      oh = Math.PI,
      rh = oh * 2;
Math.lerpAngle = function(e, t, n) {
    S(t - e) > oh && (e > t ? t += rh : e += rh);
    const i = t + (e - t) * n;
    return i >= 0 && i <= rh ? i : i % rh
};
CanvasRenderingContext2D.prototype.roundRect = function(e, t, n, i, s) {
    return n < 2 * s && (s = n / 2), i < 2 * s && (s = i / 2), s < 0 && (s = 0), this.beginPath(), this.moveTo(e + s, t), this.arcTo(e + n, t, e + n, t + i, s), this.arcTo(e + n, t + i, e, t + i, s), this.arcTo(e, t + i, e, t, s), this.arcTo(e, t, e + n, t, s), this.closePath(), this
};
let ah;
typeof Storage < "u" && (ah = !0);

function lh(e, t) {
    ah && localStorage.setItem(e, t)
}

function ch(e) {
    return ah ? localStorage.getItem(e) : null
}
let dh = ch("moofoll");

function uh() {
    dh || (dh = !0, lh("moofoll", 1))
}
let fh, hh, ph = 1,
    mh, gh, yh, xh = Date.now();
let wh;
var bh = [],
    J = [];
let vh = [];
var kh = [],
    Ah = [],
    Ih = new Hl(wc, Ah, J, bh, C, x, K, X),
    Sh = new Wl(bh, zl, J, x, null, K, X);
let Eh, q, Th = 1,
    Ch = 0,
    Bh = 0,
    Dh = 0,
    Ph, Rh, Mh, Nh = 0;
var Oh = K.maxScreenWidth,
    Lh = K.maxScreenHeight;
let Fh, _h, Vh = !1;
document.getElementById("ad-container");
const Uh = document.getElementById("mainMenu"),
      jh = document.getElementById("enterGame"),
      Hh = document.getElementById("promoImg");
Hh.remove();
document.getElementById("promoImgHolder").remove();
const Wh = document.getElementById("joinPartyButton"),
      Qh = document.getElementById("settingsButton"),
      Yh = Qh.getElementsByTagName("span")[0],
      zh = document.getElementById("allianceButton"),
      Gh = document.getElementById("storeButton"),
      Kh = document.getElementById("chatButton"),
      Xh = document.getElementById("gameCanvas"),
      $ = Xh.getContext("2d");
Kh.remove();
var Jh = document.getElementById("serverBrowser");
const qh = document.getElementById("nativeResolution"),
      $h = document.getElementById("showPing");
document.getElementById("playMusic");
const Zh = document.getElementById("pingDisplay"),
      e0 = document.getElementById("shutdownDisplay"),
      t0 = document.getElementById("menuCardHolder"),
      n0 = document.getElementById("guideCard"),
      i0 = document.getElementById("loadingText"),
      s0 = document.getElementById("gameUI"),
      o0 = document.getElementById("actionBar"),
      r0 = document.getElementById("scoreDisplay"),
      a0 = document.getElementById("foodDisplay"),
      l0 = document.getElementById("woodDisplay"),
      c0 = document.getElementById("stoneDisplay"),
      d0 = document.getElementById("killCounter"),
      u0 = document.getElementById("leaderboardData"),
      f0 = document.getElementById("nameInput"),
      h0 = document.getElementById("itemInfoHolder"),
      p0 = document.getElementById("ageText"),
      m0 = document.getElementById("ageBarBody"),
      g0 = document.getElementById("upgradeHolder"),
      y0 = document.getElementById("upgradeCounter"),
      x0 = document.getElementById("allianceMenu"),
      w0 = document.getElementById("allianceHolder"),
      b0 = document.getElementById("allianceManager"),
      v0 = document.getElementById("mapDisplay"),
      k0 = document.getElementById("diedText"),
      A0 = document.getElementById("skinColorHolder"),
      I0 = v0.getContext("2d");
const S0 = document.getElementById("storeMenu"),
      E0 = document.getElementById("storeHolder"),
      T0 = document.getElementById("noticationDisplay"),
      C0 = xc.hats,
      B0 = xc.accessories;
var C = new jl(Gl, kh, X, K);
const D0 = "#525252",
      P0 = "#3d3f42",
      R0 = 5.5;
K.DAY_INTERVAL / 24;
K.DAY_INTERVAL / 2;
window.addEventListener("wheel", function(e) {
    if (!m.q) return;
    if (e.deltaY > 0) {
        Oh *= 1.05;
        Lh *= 1.05
    } else {
        Oh /= 1.05;
        Lh /= 1.05
    }
    sm()
});

function M0(e) {
    vh = e.teams
}
let N0 = !0;
var O0 = !1;
(!Y1 || W1) && (O0 = !0);
window.onblur = function() {
    N0 = !1
};
window.onfocus = function() {
    N0 = !0, z && z.alive && Am()
};
window.captchaCallbackHook = function() {
    O0 = !0
};
window.captchaCallbackComplete && window.captchaCallbackHook();
window.addEventListener("keydown", function(e) {
    e.keyCode == 32 && e.target == document.body && e.preventDefault()
});
Xh.oncontextmenu = function() {
    return !1
};
["touch-controls-left", "touch-controls-right", "touch-controls-fullscreen", "storeMenu"].forEach(e => {
    document.getElementById(e) && (document.getElementById(e).oncontextmenu = function(e) {
        e.preventDefault()
    })
});

function L0(e) {
    q1 = !1, T.close(), F0(e)
}

function F0(e, t) {
    Uh.style.display = "block", s0.style.display = "none", t0.style.display = "none", k0.style.display = "none", i0.style.display = "block", i0.innerHTML = e + (t ? "<a href='javascript:window.location.href=window.location.href' class='ytLink'>reload</a>" : "")
}

function _0() {
    Zh.hidden = false, i0.style.display = "none", Uh.style.display = "block", t0.style.display = "block", Op(), j0(), n2(), i0.style.display = "none", t0.style.display = "block";
    let e = ch("moo_name") || "";
    !e.length && FRVR.profile && (e = FRVR.profile.name(), e && (e += f(Math.random() * 90) + 9)), f0.value = e || ""
}
var V0;

function U0(e) {
    var t;
    ((t = e == null ? void 0 : e.detail) == null ? void 0 : t.state) === "verified" && (V0 = e.detail.payload, document.getElementById("script-altcha").remove(), jh.classList.remove("disabled"), ! function() {
        document.getElementById("enterGame").innerText = "Enter Game";
    }())
}
window.addEventListener("load", () => {
    document.getElementById("altcha_checkbox").click();
    document.getElementById("enterGame").innerText = "Generating Token";
    const e = document.getElementById("script-altcha");
    e == null || e.addEventListener("statechange", U0)
});

function j0() {
    jh.onclick = X.checkTrusted(function() {
        jh.classList.contains("disabled") || F0("Connecting..."), nh() ? Um() : Z1()
    }), X.hookTouchEvents(jh), Hh && (Hh.onclick = X.checkTrusted(function() {}), X.hookTouchEvents(Hh)), Wh && (Wh.onclick = X.checkTrusted(function() {
        setTimeout(function() {
            ih()
        }, 10)
    }), X.hookTouchEvents(Wh)), Qh.onclick = X.checkTrusted(function() {
        Vp()
    }), X.hookTouchEvents(Qh), zh.onclick = X.checkTrusted(function() {
        lp()
    }), X.hookTouchEvents(zh), Gh.onclick = X.checkTrusted(function() {
        Cp()
    }), X.hookTouchEvents(Gh), Kh.onclick = X.checkTrusted(function() {
        Qp()
    }), X.hookTouchEvents(Kh), v0.onclick = X.checkTrusted(function(e) {
        console.log(e);
        const t = v0.getBoundingClientRect();
        const n = e.clientX - t.left;
        const i = e.clientY - t.top;
        let s = 14400 / t.width;
        const o = n * s;
        const r = i * s;
        si?.updateChat(`goto ${o} ${r}`, z?.sid);
        si?.updateChat("path", z?.sid);
        Fm()
    }), X.hookTouchEvents(v0)
}
let H0;
const W0 = {
    view: () => {
        if (!G1.servers) return;
        let t = 0;
        const e = Object.keys(G1.servers).map(a => {
            const l = G1.regionInfo[a].name;
            let c = 0;
            const e = G1.servers[a].map(e => {
                var t;
                c += e.playerCount;
                const n = e.selected;
                let i = l + " " + e.name + " [" + Math.min(e.playerCount, 50) + "/" + 50 + "]";
                const s = e.name,
                      o = n ? "selected" : "";
                e.ping && ((t = e.pings) == null ? void 0 : t.length) >= 2 ? i += ` [${Math.floor(e.ping)}ms]` : n || (i += " [?]");
                let r = {
                    value: a + ":" + s
                };
                return o && (H0 = a + ":" + s, r.selected = !0), qd("option", r, i)
            });
            return t += c, [qd("option[disabled]", `${l} - ${c} players`), e, qd("option[disabled]")]
        });
        return qd("select", {
            value: H0,
            onfocus: () => {
                window.blockRedraw = !0
            },
            onblur: () => {
                window.blockRedraw = !1
            },
            onchange: X0
        }, [e, qd("option[disabled]", `All Servers - ${t} players`)])
    }
};
qd.mount(Jh, W0);
var Q0, Y0;
location.hostname == "sandbox.moomoo.io" ? (Q0 = "Back to MooMoo", Y0 = "//moomoo.io/") : (Q0 = "Try the sandbox", Y0 = "//sandbox.moomoo.io/");
document.getElementById("altServer").innerHTML = "<a href='" + Y0 + "'>" + Q0 + "<i class='material-icons' style='font-size:10px;vertical-align:middle'>arrow_forward_ios</i></a>";
const z0 = `${j1}/servers?v=1.26`,
      G0 = async () => fetch(z0).then(e => e.json()).then(async e => G1.processServers(e))["catch"](e => {
          console.error("Failed to load server data with status code:", e)
      }), K0 = () => G0().then(_0)["catch"](e => {
          console.error("Failed to load.")
      });
window.frvrSdkInitPromise.then(() => window.FRVR.bootstrapper.complete()).then(() => K0());
const X0 = e => {
    if (window.blockRedraw = !1, FRVR.channelCharacteristics.allowNavigation) {
        const [t, n] = e.target.value.split(":");
        G1.switchServer(t, n)
    } else q1 && (q1 = !1, $1 = !1, eh = !0, Wm = !0, T.close())
};
document.getElementById("pre-content-container");

function J0() {}
window.showPreAd = J0;

function q0(t, e, n) {
    if (z && t) {
        if (X.removeAllChildren(h0), h0.classList.add("visible"), X.generateElement({
            id: "itemInfoName",
            text: X.capitalizeFirst(t.name),
            parent: h0
        }), X.generateElement({
            id: "itemInfoDesc",
            text: t.desc,
            parent: h0
        }), !n)
            if (e) X.generateElement({
                "class": "itemInfoReq",
                text: t.type ? "secondary" : "primary",
                parent: h0
            });
            else {
                for (let e = 0; e < t.req.length; e += 2) X.generateElement({
                    "class": "itemInfoReq",
                    html: t.req[e] + "<span class='itemInfoReqVal'> x" + t.req[e + 1] + "</span>",
                    parent: h0
                });
                const i = _1 ? t.group.sandboxLimit || Math.max(t.group.limit * 3, 99) : t.group.limit;
                t.group.limit && X.generateElement({
                    "class": "itemInfoLmt",
                    text: (z.itemCounts[t.group.id] || 0) + "/" + i,
                    parent: h0
                })
            }
    } else h0.classList.remove("visible")
}
let $0 = [],
    Z0 = [];

function ep(e, t) {
    $0.push({
        sid: e,
        name: t
    }), b(`${t}[${e}] requested to join ${z.team}`, "", "blue", false, true);
    tp()
}
async function tp() {
    if ($0[0]) {
        var e = $0[0];
        var t = Ei.includes(e.sid) ? "#53a7db" : "#FFFFFF";
        X.removeAllChildren(T0);
        T0.style.display = "block";
        if (!(Ei.includes(e.sid) && gy("auto accept bots")?.checked) && true === false) {
            var n = X.generateElement({
                "class": "notificationText",
                parent: T0
            });
            n.textContent = e.name + ` [${e.sid}]`;
            n.style.color = t;
            X.generateElement({
                "class": "notifButton",
                html: "<i class='material-icons' style='font-size:28px;color:#cc5151;'>&#xE14C;</i>",
                parent: T0,
                onclick: function() {
                    up(0)
                },
                hookTouch: !0
            }), X.generateElement({
                "class": "notifButton",
                html: "<i class='material-icons' style='font-size:28px;color:#8ecc51;'>&#xE876;</i>",
                parent: T0,
                onclick: function() {
                    up(1)
                },
                hookTouch: !0
            })
        }
    } else T0.style.display = "none"
}
var np = 0;
async function ip(t, e) {
    np === 0 && (np = v);
    await A4();
    await A4();
    if (v - np <= 5) return;
    for (let e = 0; e < $0.length; e++) {
        if ($0[e].sid === t) {
            T.send("P", t, 1);
            $0.splice(e, 1);
            break;
            return
        }
    }
}

function sp(e) {
    vh.push(e), x0.style.display == "block" && dp()
}

function op(e, t) {
    z && (z.team = e, z.isOwner = t, x0.style.display == "block" && dp());
    if (e == undefined && t == undefined || e == null && t == false) {
        py = [];
        if (si?.goal?.pathing) {
            kh.forEach(e => {
                if (e.dmg && !te(e?.owner?.sid)) {
                    e.pathScale = e.scale + 47
                }
                if (e.name == "pit trap" && !te(e?.owner?.sid)) {
                    e.pathScale = e.scale + 38
                }
            });
            ri?.setBuildings(kh)
        }
    }
}

function rp(e) {
    Z0 = e, x0.style.display == "block" && dp();
    py = e;
    if (si?.goal?.pathing) {
        kh.forEach(e => {
            if (e.dmg && !te(e?.owner?.sid)) {
                e.pathScale = e.scale + 50
            }
            if (e.name == "pit trap" && !te(e?.owner?.sid)) {
                e.pathScale = e.scale + 40
            }
        });
        ri?.setBuildings(kh)
    }
}

function ap(t) {
    np = 0;
    for (let e = vh.length - 1; e >= 0; e--) vh[e].sid == t && vh.splice(e, 1);
    x0.style.display == "block" && dp()
}

function lp() {
    Am(), x0.style.display != "block" ? dp() : cp()
}

function cp() {
    x0.style.display == "block" && (x0.style.display = "none")
}

function dp() {
    if (z && z.alive) {
        if (Jp(), S0.style.display = "none", x0.style.display = "block", X.removeAllChildren(w0), z.team)
            for (var e = 0; e < Z0.length; e += 2)(function(e) {
                const t = X.generateElement({
                    "class": "allianceItem",
                    style: "color:" + (Z0[e] == z.sid ? "#fff" : Ei.includes(Z0[e]) ? "#53a7db" : "rgba(255,255,255,0.6)"),
                    text: Z0[e + 1] + ` [${Z0[e]}]`,
                    parent: w0
                });
                z.isOwner && Z0[e] != z.sid && X.generateElement({
                    "class": "joinAlBtn",
                    text: "Kick",
                    onclick: function() {
                        fp(Z0[e])
                    },
                    hookTouch: !0,
                    parent: t
                })
            })(e);
        else if (vh.length)
            for (var e = 0; e < vh.length; ++e)(function(e) {
                const t = X.generateElement({
                    "class": "allianceItem",
                    style: "color:" + (vh[e].sid == z.team ? "#fff" : "rgba(255,255,255,0.6)"),
                    text: vh[e].sid,
                    parent: w0
                });
                X.generateElement({
                    "class": "joinAlBtn",
                    text: "Join",
                    onclick: function() {
                        hp(e)
                    },
                    hookTouch: !0,
                    parent: t
                })
            })(e);
        else X.generateElement({
            "class": "allianceItem",
            text: "No Tribes Yet",
            parent: w0
        });
        X.removeAllChildren(b0), z.team ? X.generateElement({
            "class": "allianceButtonM",
            style: "width: 360px",
            text: z.isOwner ? "Delete Tribe" : "Leave Tribe",
            onclick: function() {
                mp()
            },
            hookTouch: !0,
            parent: b0
        }) : (X.generateElement({
            tag: "input",
            type: "text",
            id: "allianceInput",
            maxLength: 7,
            placeholder: "unique name",
            onchange: e => {
                e.target.value = (e.target.value || "").slice(0, 7)
            },
            onkeypress: e => {
                if (e.key === "Enter") return e.preventDefault(), pp(), !1
            },
            parent: b0
        }), X.generateElement({
            tag: "div",
            "class": "allianceButtonM",
            style: "width: 140px;",
            text: "Create",
            onclick: function() {
                pp()
            },
            hookTouch: !0,
            parent: b0
        }))
    }
}

function up(e) {
    np === 0 && (np = v);
    T.send("P", $0[0].sid, e), $0.splice(0, 1);
    tp()
}

function fp(e) {
    T.send("Q", e)
}

function hp(e) {
    T.send("b", vh[e].sid)
}

function pp(e = document.getElementById("allianceInput").value) {
    np = 0;
    T.send("L", e == "" ? String.fromCharCode(0) : e)
}

function mp() {
    np = 0;
    $0 = [], tp(), T.send("N")
}
let gp, yp, xp;
const wp = [];
let bp;

function vp() {
    this.init = function(e, t) {
        this.scale = 0, this.x = e, this.y = t, this.active = !0
    }, this.update = function(e, t) {
        this.active && (this.scale += .05 * t, this.scale >= K.mapPingScale ? this.active = !1 : (e.globalAlpha = 1 - oe(0, this.scale / K.mapPingScale), e.beginPath(), e.arc(this.x / K.mapScale * v0.width, this.y / K.mapScale * v0.width, this.scale, 0, ae), e.stroke()))
    }
}

function kp(e, t) {
    for (let e = 0; e < wp.length; ++e)
        if (!wp[e].active) {
            bp = wp[e];
            break
        } bp || (bp = new vp, wp.push(bp)), bp.init(e, t)
}

function Ap() {
    xp || (xp = {}), xp.x = z.x, xp.y = z.y
}

function Ip(e) {
    yp = e
}

function Sp(e) {
    if (z && z.alive) {
        I0.clearRect(0, 0, v0.width, v0.height), I0.strokeStyle = "#fff", I0.lineWidth = 4;
        if (Yt.length && Tt) {
            Yt.forEach(t => {
                let n = $n.find(e => e.name == t.name)?.url;
                if (n) {
                    I0.globalAlpha = 1;
                    let e = new Image;
                    e.src = n;
                    I0.drawImage(e, t.x / K.mapScale * v0.width - 32 / 2, t.y / K.mapScale * v0.height - 32 / 2, 32, 32)
                }
            })
        }
        I0.strokeStyle = "#fff", I0.lineWidth = 1;
        for (var t = 0; t < wp.length; ++t) bp = wp[t], bp.update(I0, e);
        if (I0.globalAlpha = 1, I0.fillStyle = "#fff", k(z.x / K.mapScale * v0.width, z.y / K.mapScale * v0.height, 7, I0, !0), z.team && yp)
            for (var t = 0; t < yp.length;) {
                I0.fillStyle = "rgba(255,255,255,0.35)";
                k(yp[t] / K.mapScale * v0.width, yp[t + 1] / K.mapScale * v0.height, 7, I0, !0), t += 2;
                gp && (I0.fillStyle = "#fc5553", I0.font = "34px Lilita One", I0.textBaseline = "middle", I0.textAlign = "center", I0.fillText("x", gp.x / K.mapScale * v0.width, gp.y / K.mapScale * v0.height)), xp && (I0.fillStyle = "#fff", I0.font = "34px Lilita One", I0.textBaseline = "middle", I0.textAlign = "center", I0.fillText("x", xp.x / K.mapScale * v0.width, xp.y / K.mapScale * v0.height))
            }
        si?.drawWaypointMap(I0, v0);
        ie.forEach(e => {
            if (e.enemies.length) {
                e.enemies.forEach(e => {
                    I0.fillStyle = "red";
                    I0.globalAlpha = 1;
                    k(e.x / K.mapScale * v0.width, e.y / K.mapScale * v0.height, 5, I0, !0)
                })
            }
        });
        if (Gn && zn.length) {
            for (let e = 0; e < zn.length; e++) {
                I0.globalAlpha = 1;
                I0.fillStyle = "#000000";
                k(zn[e].x2 / K.mapScale * v0.width, zn[e].y2 / K.mapScale * v0.height, 8, I0, !0)
            }
        }
        if (G["do"] && ie.length && ie[G.val]?.HERE) {
            I0.globalAlpha = 1;
            I0.fillStyle = "#000000";
            k(ie[G.val].x2 / K.mapScale * v0.width, ie[G.val].y2 / K.mapScale * v0.height, 8, I0, !0)
        }
        ht.forEach((t, e, n) => {
            let i = t?.sid ? Hg(t.sid) : t?.name ? J.find(e => e.name === t.name) : false;
            if (i?.visible) {
                i.color = t.color;
                i.spotted = true;
                n[e] = i
            }
            let s = wy(t);
            if (s) {
                s.color = t.color;
                let e = i && i.visible ? i : s;
                I0.fillStyle = e.color;
                I0.globalAlpha = 1;
                k(e.x / K.mapScale * v0.width, e.y / K.mapScale * v0.height, 9, I0, true)
            } else {
                t.spotted = false
            }
        })
    }
}
let Ep = 0;

function Tp(e) {
    Ep != e && (Ep = e, Pp())
}

function Cp() {
    S0.style.display != "block" ? (S0.style.display = "block", x0.style.display = "none", Jp(), Pp()) : Bp()
}

function Bp() {
    S0.style.display == "block" && (S0.style.display = "none", q0())
}

function Dp(e, t, n) {
    n ? e ? (z.tailIndex = t, Zt = t) : z.tails[t] = 1 : e ? (z.skinIndex = t, $t = t) : z.skins[t] = 1;
    S0.style.display == "block" && Pp();
    if (e == 0 && t != 0) {
        if (n == 0) Nn.push(t);
        if (n == 1) On.push(t);
        if (Fn.length && (n == 0 || n == 1)) {
            for (let e = 0; e < Fn.length; e++) {
                if (n == 0 && !Array.isArray(Fn[e]) && Fn[e] == t) {
                    Fn.splice(e, 1)
                }
                if (n == 1 && Array.isArray(Fn[e]) && Fn[e][0] == t) {
                    Fn.splice(e, 1)
                }
            }
            if ([40, 12, 22, 6, 7, 56, 53, 15, 31].includes(t) && !Gt.includes(t) && n == 0) Gt.push(t);
            if ([11, 19].includes(t) && !Kt.includes(t) && n == 1) Kt.push(t)
        }
    }
}

function Pp() {
    if (z) {
        X.removeAllChildren(E0);
        const r = Ep,
              a = r ? B0 : C0;
        for (let e = 0; e < a.length; ++e) a[e].dontSell || function(e) {
            const t = X.generateElement({
                id: "storeDisplay" + e,
                "class": "storeItem",
                onmouseout: q0(),
                onmouseover: () => q0(a[e], !1, !0),
                parent: E0
            });
            X.hookTouchEvents(t, !0);
            const n = "./img/" + (r ? "accessories/access_" : "hats/hat_") + a[e].id + (a[e].topSprite ? "_p" : "") + ".png";
            const i = X.generateElement({
                tag: "img",
                "class": "hatPreview smallImage",
                src: n,
                parent: t
            });
            const s = X.generateElement({
                tag: "span",
                style: "font-size: 85%; vertical-align: middle; line-height: 1.2;",
                text: `[${a[e].id}] ${a[e].name}`,
                parent: t
            });
            if (r ? !z.tails[a[e].id] : !z.skins[a[e].id]) {
                X.generateElement({
                    "class": "joinAlBtn",
                    style: "margin-top: 5px; font-size: 85%; vertical-align: middle; line-height: 1.51;",
                    text: "Buy",
                    onclick: () => Mp(a[e].id, r),
                    hookTouch: !0,
                    parent: t
                });
                X.generateElement({
                    tag: "span",
                    "class": "itemPrice",
                    style: "font-size: 85%; vertical-align: middle; line-height: 1.51;",
                    text: a[e].price / 1e3 >= 1 ? a[e].price / 1e3 + "k" : a[e].price,
                    parent: t
                })
            } else {
                const o = (r ? z.tailIndex : z.skinIndex) == a[e].id ? "Unequip" : "Equip";
                X.generateElement({
                    "class": "joinAlBtn",
                    style: "margin-top: 5px; font-size: 85%; vertical-align: middle; line-height: 1.51;",
                    text: o,
                    onclick: () => o == "Unequip" ? Rp(0, r) : Rp(a[e].id, r),
                    hookTouch: !0,
                    parent: t
                })
            }
        }(e)
    }
}

function Rp(e, t) {
    T.send("c", 0, e, t)
}

function Mp(e, t) {
    T.send("c", 1, e, t)
}

function Np() {
    S0.style.display = "none", x0.style.display = "none", Jp()
}

function Op() {
    const e = ch("native_resolution");
    Fp(e ? e == "true" : typeof cordova < "u"), hh = "true";
    Zh.hidden = false;
    ch("moo_moosic"), setInterval(function() {
        window.cordova && (document.getElementById("downloadButtonContainer").classList.add("cordova"), document.getElementById("mobileDownloadButtonContainer").classList.add("cordova"))
    }, 1e3), Up(), X.removeAllChildren(o0);
    for (var t = 0; t < x.weapons.length + x.list.length; ++t)(function(e) {
        X.generateElement({
            id: "actionBarItem" + e,
            "class": "actionBarItem",
            style: "display:none",
            onmouseout: function() {
                q0()
            },
            parent: o0
        })
    })(t);
    for (var t = 0; t < x.list.length + x.weapons.length; ++t)(function(n) {
        const i = document.createElement("canvas");
        i.width = i.height = 66;
        const s = i.getContext("2d");
        if (s.translate(i.width / 2, i.height / 2), s.imageSmoothingEnabled = !1, s.webkitImageSmoothingEnabled = !1, s.mozImageSmoothingEnabled = !1, x.weapons[n]) {
            s.rotate(Math.PI / 4 + Math.PI);
            var e = new Image;
            N2[x.weapons[n].src] = e, e.onload = function() {
                this.isLoaded = !0;
                const e = 1 / (this.height / this.width),
                      t = x.weapons[n].iPad || 1;
                s.drawImage(this, -(i.width * t * K.iconPad * e) / 2, -(i.height * t * K.iconPad) / 2, i.width * t * e * K.iconPad, i.height * t * K.iconPad), s.fillStyle = "rgba(0, 0, 70, 0.1)", s.globalCompositeOperation = "source-atop", s.fillRect(-i.width / 2, -i.height / 2, i.width, i.height), document.getElementById("actionBarItem" + n).style.backgroundImage = "url(" + i.toDataURL() + ")"
            }, e.src = "./img/weapons/" + x.weapons[n].src + ".png";
            var t = document.getElementById("actionBarItem" + n);
            t.onmouseover = X.checkTrusted(function() {
                q0(x.weapons[n], !0)
            }), t.onclick = X.checkTrusted(function() {
                Vm(n, !0)
            }), X.hookTouchEvents(t)
        } else {
            var e = j2(x.list[n - x.weapons.length], !0, true);
            const o = Math.min(i.width - K.iconPadding, e.width);
            s.globalAlpha = 1, s.drawImage(e, -o / 2, -o / 2, o, o), s.fillStyle = "rgba(0, 0, 70, 0.1)", s.globalCompositeOperation = "source-atop", s.fillRect(-o / 2, -o / 2, o, o), document.getElementById("actionBarItem" + n).style.backgroundImage = "url(" + i.toDataURL() + ")";
            var t = document.getElementById("actionBarItem" + n);
            t.onmouseover = X.checkTrusted(function() {
                q0(x.list[n - x.weapons.length])
            }), t.onclick = X.checkTrusted(function() {
                Vm(n - x.weapons.length)
            }), X.hookTouchEvents(t)
        }
    })(t);
    f0.onchange = e => {
        e.target.value = (e.target.value || "").slice(0, 15)
    }, f0.onkeypress = e => {
        if (e.key === "Enter") return e.preventDefault(), jh.onclick(e), !1
    }, qh.checked = fh, qh.onchange = X.checkTrusted(function(e) {
        Fp(e.target.checked)
    }), $h.checked = true;
    $h.onchange = X.checkTrusted(function(e) {
        hh = "true";
        Zh.hidden = true
    })
}

function Lp(e, t) {
    e && (t ? z.weapons = e : z.items = e);
    for (var n = 0; n < x.list.length; ++n) {
        const i = x.weapons.length + n;
        document.getElementById("actionBarItem" + i).style.display = z.items.indexOf(x.list[n].id) >= 0 ? "inline-block" : "none"
    }
    for (var n = 0; n < x.weapons.length; ++n) document.getElementById("actionBarItem" + n).style.display = z.weapons[x.weapons[n].type] == x.weapons[n].id ? "inline-block" : "none"
}

function Fp(e) {
    fh = e, ph = e && window.devicePixelRatio || 2, qh.checked = e, lh("native_resolution", e.toString()), sm()
}

function _p() {
    am ? n0.classList.add("touch") : n0.classList.remove("touch")
}

function Vp() {
    n0.classList.contains("showing") ? (n0.classList.remove("showing"), Yh.innerText = "Settings") : (n0.classList.add("showing"), Yh.innerText = "Close")
}

function Up() {
    let t = "";
    for (let e = 0; e < K.skinColors.length; ++e) e == Nh ? t += "<div class='skinColorItem activeSkin' style='background-color:" + K.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>" : t += "<div class='skinColorItem' style='background-color:" + K.skinColors[e] + "' onclick='selectSkinColor(" + e + ")'></div>";
    A0.innerHTML = t
}

function jp(e) {
    Nh = e, Up()
}
const Hp = document.getElementById("chatBox"),
      Wp = document.getElementById("chatHolder");

function Qp() {
    if (document.activeElement === we) return;
    am ? Xp(prompt("chat message")) : Wp.style.display == "block" ? (Hp.value && Xp(Hp.value), Jp()) : (S0.style.display = "none", x0.style.display = "none", Wp.style.display = "block", Hp.focus(), Am()), Hp.value = ""
}

function Yp(i, s, o, e = 1, t) {
    if (Ci.length + e >= 1500) {
        b(`Error amount exceeds player render capacity rate`, "", "#5c0620", false, true);
        return false
    }
    let r = i;
    i = Ci.find(e => e.purpose == "formation" && e.sid == i);
    console.log(Ci);
    if (!i) {
        b(`Error ID: ${r} not found`, "", "#5c0620", false, true);
        return false
    }
    for (let n = 0; n < e; n++) {
        let e = P3(i.x2, i.y2, Z(s) - Z(90), o * (n + 1));
        let t = {
            ...z
        };
        t.sid = Vi.length + 1;
        Vi.push({
            origin: r,
            distance: o * (n + 1),
            angle: s
        });
        x3(y3(t, e.x, e.y, 0, 0, 0), "formation")
    }
}

function zp() {
    b(`Pathfinder commands ↓`, "", "#5c0620", false, true);
    b(`"setPF (search radius) (resolution)" to adjust Pathfinder`, "", "#5c0620", false, true);
    b(`</ * path`, "", "#5c0620", false, true);
    b(`* stop`, "", "#5c0620", false, true);
    b(`* goal`, "", "#5c0620", false, true);
    b(`* <goal/goto> x [Number: x position]`, "", "#5c0620", false, true);
    b(`* <goal/goto> y [Number: y position]`, "", "#5c0620", false, true);
    b(`* <goal/goto> [x: Number] [y: Number]`, "", "#5c0620", false, true);
    b(`* waypoint set [name: String]`, "", "#5c0620", false, true);
    b(`* waypoint del [name: String]`, "", "#5c0620", false, true);
    b(`* waypoint goto [name: String]`, "", "#5c0620", false, true);
    b(`* follow player <[ID/Name: Any]/all(default)>`, "", "#5c0620", false, true);
    b(`* follow animal <[ID/Name: Any]/all(default)>`, "", "#5c0620", false, true);
    b(`* wander />`, "", "#5c0620", false, true);
    b(`---------------------------------------------------`, "", "#5c0620", false, true);
    b(`Bot commands ↓`, "", "#5c0620", false, true);
    b(`dc bots "!dc (any | all | botID) if using "any" → (number of bots)"`, "", "#5c0620", false, true);
    b(`"!clear (radius) (all | team | clan | enemy | enemies) (all)"`, "", "#5c0620", false, true);
    b(`"!summon" to summon bots "!summon false" to wander`, "", "#5c0620", false, true);
    b(`scout bot (best when bots set to wander) → "!find (sid or -(name))"`, "", "#5c0620", false, true);
    b(`bots attack → "!attack (sid | don't fill for nearest enemy) " (coming soon)`, "", "#5c0620", false, true);
    b(`q = proj sync with bots`, "", "#5c0620", false, true);
    b(`!q instachat (chatInput) [sets q sync chat]`, "", "#5c0620", false, true);
    b(`!target (id) [sets target for q sync insta] | !target [none] | resets target to nearest enemy (default)`, "", "#5c0620", false, true);
    b(`spawn bots press 'y'`, "", "#5c0620", false, true);
    b(`!watch (botID) to spectate bot`, "", "#5c0620", false, true);
    b(`!play (botID) to play as bot`, "", "#5c0620", false, true);
    b(`v = spike macro f = trap macro n = triple mills`, "", "#5c0620", false, true);
    b(`zoom = hold q and use mouse wheel`, "", "#5c0620", false, true);
    b(`p = reset camera zoom`, "", "#5c0620", false, true)
}

function Gp(t = 400) {
    let n = "";
    for (let e = 0; e < t; e++) {
        n += t
    }
    return n
}

function Kp(e) {
    if (e === "debug") {
        console.log("debugged");
        p = false;
        hn = false;
        $t = null;
        Zt = null;
        return true
    }
}
document.addEventListener("keydown", function(e) {
    if (e.key === "m") {
        Kp("debug")
    }
});

function Xp(n, e) {
    let t = function(e) {
        return n.toLowerCase().startsWith("!" + e.toLowerCase())
    };
    const s = n.split(" ");
    if (t("radius")) {
        const r = parseFloat(s[1]);
        if (!isNaN(r)) {
            s3 = r;
            b(`move circle radius set at ${r}`, "", Hy(), false, true);
            return true
        }
    } else if (t("speed")) {
        const r = parseFloat(s[1]);
        if (!isNaN(r)) {
            i3 = r;
            b(`move circle speed set at ${r}`, "", Hy(), false, true);
            return true
        }
    }
    if (t("botCount") || t("bc")) {
        b(`bot count is ${ie.length}`, "", Hy(), false, true);
        return true
    }
    if (t("kys")) {
        const r = parseFloat(s[1]);
        if (s[1] == ".all") {
            ie.forEach(e => {
                e.kys = !e.kys
            });
            return true
        } else if (!isNaN(r)) {
            let t = s[1].split(",").map(e => parseFloat(e.trim()));
            ie.forEach(e => {
                t.includes(e.sid) && (e.kys = !e.kys)
            });
            return true
        }
    }
    if (t("chat")) {
        const r = parseFloat(s[1]);
        if (!isNaN(r)) {
            for (let e = 0; e < r; e++) {
                xe.removeChild(xe.children[0])
            }
            return
        }
    }
    if (t("botMsg")) {
        if (s[1] == "?player") {
            let e = parseFloat(s[2]);
            if (isNaN(e)) {
                b(`${e} is NaN`, "", "red", false, true);
                return true
            }
            let t = Hg(e);
            if (!t) {
                b(`player [${e}] is NaN`, "", "red", false, true);
                return true
            } else {
                Rs.value = t.chatMessage;
                b(`botMsg copied chat ${t.name}[${t.sid}] "${s[1]}"`, "", "red", false, true);
                return true
            }
        }
        Rs.value = s[1];
        b(`botMsg is ${s[1]}`, "", "red", false, true);
        return true
    }
    if (t("logmsgs")) {
        Pi = !Pi;
        b(`logging messages is ${Pi}`, "", "red", false, true);
        return true
    }
    if (t("hitlist")) {
        let i = false;
        for (let n = 0; n < ht.length; n++) {
            let t = ht[n];
            if (t.name || t.sid) {
                i = true;
                let e = t?.sid && t?.name ? `${t.name}[${t.sid}]` : t.name ? `${t.name}` : `${t.sid}`;
                b(`${n+1}. ${e}`, "", t.color, false, true)
            }
        }
        if (i) return true
    }
    if (t("start")) {
        e5()
    }
    if (t("botdist")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) {
            ki = e;
            b(`bot distance set to ${e}`, "", Hy(), false, true);
            return true
        }
    }
    if (t("origin")) {
        Ci = Ci.filter(e => e?.purpose != "formation");
        Vi = [];
        _i.x = z.x2;
        _i.y = z.y2;
        let e = {
            ...z
        };
        e.sid = 1;
        Vi.push(e);
        x3(y3(e, z.x2, z.y2, 0, 0, 0), "formation");
        return true
    }
    if (t("changeBot")) {
        if (s.length !== 4) {
            b("Error: 3 parameters required (ID/all, property, value)", "", "red", false, true);
            return true
        }
        console.log(s);
        let t = s[1] === "all" ? "all" : parseFloat(s[1]);
        let n = isNaN(parseFloat(s[3])) ? s[3] === "true" || s[3] === "false" ? E(s[3]) : s[3] : parseFloat(s[3]);
        if (isNaN(t) && t !== "all") {
            return b("Error: 1st parameter invalid (all / ID)", "", "red", false, true)
        }
        if (s[2] === "dir" || s[2] === "d2" || s[2] === "d1") n = Z(n) - Z(90);
        Ci.forEach(e => {
            if (e.purpose === "formation" && (t === "all" || e.sid === t)) {
                e[s[2]] = n;
                b(`Fake ID: [${e.sid}] changed ${s[2]} to ${n}`, "", "red", false, true)
            }
        });
        return true
    }
    if (t("createFrom")) {
        if (!_i.x && !_i.y) {
            b("Error create an origin point first", "", "red", false, true)
        }
        let e = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3]), parseFloat(s[4])];
        for (let t = 0; t < 4; t++) {
            if (isNaN(e[t])) {
                let e;
                switch (t) {
                    case 0:
                        e = "Error first parameter (creation point) is NaN";
                        break;
                    case 1:
                        e = "Error second parameter (angle - degrees) is NaN";
                        break;
                    case 2:
                        e = "Error third parameter (distance) is NaN";
                        break
                }
                b(e, "", "red", false, true);
                return true
            }
        }
        Yp(e[0], e[1], e[2], e[3] || 1);
        return true
    }
    if (t("savePos") && _i.x) {}
    if (t("delay")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) {
            Mi = e;
            b(`preplace delay set to ${e}`, "", Hy(), false, true);
            return true
        }
    }
    if (t("pdelay")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) {
            Bi = e * 111;
            b(`preplace in advance delay set to ${e*111}`, "", Hy(), false, true);
            return true
        }
    }
    if (t("kick")) {
        let n = parseFloat(s[1]);
        if (!isNaN(n) && te(n)) {
            fp(n);
            let e = Hg(n);
            let t = e ? `kicked player: ${e.name}[${e.sid}]` : `kicked ID: [${n}]`;
            b(t, "", Hy(), false, true);
            return true
        } else {
            let e = isNaN(n) ? `Syntax Error: input value is not a number => !kick (teammate SID)` : `ID: ${n} is not in the clan`;
            b(e, "", Hy(), false, true);
            return true
        }
    }
if (t("repeater crossbow") && ie.length) {
    let n = parseFloat(s[1]);
    if (!isNaN(n)) {
        let e = ie.find(e => e.sid == n);
        if (!e) {
            b(`cannot set properties of bot undefined`, "", "red", false, true);
            return;
        }
        e.getCrossBow = !e.getCrossBow;
        b(`${e.name}[${n}] crossbow set to ${e.getCrossBow}`, "", Hy(), false, true);
        return true;
    }
    if (s[1] === "all") {
        let t = s[2] === "true" || s[2] === "false" ? E(s[2]) : !isNaN(parseFloat(s[2])) ? parseFloat(s[2]) : null;
        ie.forEach(e => {
            e.getCrossBow = t !== null ? t : !e.getCrossBow;
            b(`${e.name}[${n}] crossbow set to ${e.getCrossBow}`, "", Hy(), false, true);
        });
        return true;
    }
    b(`error in setting bot loadout`, "", "red", false, true);
}

    if (t("apd")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) {
            yi = e;
            b(`autoplace distance set to ${e}`, "", Hy(), false, true);
            return true
        }
    }
    if (t("botinfo")) {
        let t = parseFloat(s[1]);
        let e = ie.find(e => e.sid == t);
        if (!e) {
            b(`bot ID: ${t} not found`, "red", false, true);
            return true
        }
        if (!isNaN(t)) {
            console.log(e);
            return true
        }
    }
    if (t("watch") && ie.length) {
        let t = parseFloat(s[1]);
        let n = ie.find(e => e.sid == t);
        if (n) {
            let e = ie.findIndex(e => e.sid === n.sid);
            G = {
                "do": true,
                val: e,
                play: false
            };
            b(`watching Bot ID: ${t}`, "", Hy(), false, true);
            return
        } else {
            b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true)
        }
    }
    if (n === "!play" && G["do"]) {
        G.play = true;
        b(`playing as Bot: ${ts?.bot?.name}[${ts.bot?.sid}]`, "", Hy(), false, true);
        return
    } else if (t("play") && ie.length) {
        let i = [parseFloat(s[1]), parseFloat(s[2])];
        if (!isNaN(i[0])) {
            let e = ie.findIndex(e => e.sid === i[0]);
            let t = ie.find(e => e.sid === i[0]);
            if (!t) {
                b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true);
                return
            }
            G = {
                "do": true,
                val: e,
                play: true
            };
            let n = t.findPlayer(t.sid);
            b(`playing as Bot: ${n.name}[${n.sid}]`, "", Hy(), false, true);
            return
        } else {
            b(`Bot ID: ${s[1]} not found`, "", Hy(), false, true);
            return
        }
    }
    if (t("target")) {
        let e = parseFloat(s[1]);
        xi.ID = e;
        let t = isNaN(e) ? "target ID has been reset" : `projectile sync target set to ID: ${e}`;
        b(t, "", Hy(), false, true);
        return true
    }
    if (t("instachat")) {
        let e = s.slice(1).join(" ");
        bi = e;
        b(`Q sync insta chat set to ${e}`, "", Hy(), false, true);
        return true
    }
    if (t("botName")) {
        let e = s.slice(1).join(" ");
        _e = e;
        b(`bot name set to ${e}`, "", Hy(), false, true);
        return true
    }
    if (t("skip")) {
        if (qx !== null) {
            qx.pause();
            qx = null;
            return true
        }
    }
    if (t("syncChat")) {
        let e = s.slice(1).join(" ");
        vi = e;
        b(`syncChat name set to ${e}`, "", Hy(), false, true);
        return true
    }
    if (t("sDist")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) {
            li = e;
            b(`soldier distance set to ${e}`, "", Hy(), false, true);
            return true
        }
    }
    if (s[1] === ".clan") {}
    if (t("accept")) {
        let n = parseFloat(s[1]);
        T.send("P", n, 1);
        for (let t = 0; t < $0.length; t++) {
            let e = $0[t];
            if (e.sid === n) {
                b(`accepted request ${e.name}[${e.sid}]`, "", "#32CD32");
                $0.slice(t, 1)
            }
        }
        return true
    }
    if (t("decline")) {
        let n = parseFloat(s[1]);
        T.send("P", n, 0);
        for (let t = 0; t < $0.length; t++) {
            let e = $0[t];
            if (e.sid === n) {
                b(`declined request ${e.name}[${e.sid}]`, "", "#FF7F7F");
                $0.slice(t, 1)
            }
        }
        return true
    }
    if (t("kick")) {
        let n = parseFloat(s[1]);
        fp(n);
        for (let t = 0; t < py.length; t++) {
            let e = py[t];
            if (e.sid === n) {
                b(`kicked request ${e.name}[${e.sid}]`, "", "#FF7F7F");
                $0.slice(t, 1)
            }
        }
        return true
    }
    if (t("autodecline")) {
        let e = parseFloat(s[1]);
        if (!isNaN(e)) An.push(e)
    }
    if (t("clanreq")) {
        for (let t = 0; t < $0.length; t++) {
            let e = $0[t];
            if (t === 0) b(`clan requests`, "", "blue", false, true);
            b(`${t}. ${e.name}[${e.sid}]`, "", "blue", false, true)
        }
        return true
    }
    if (t("clanreset")) {
        for (let e = 0; e < $0.length; e++) {
            T.send("P", $0[e].sid, 0)
        }
        return true
    }
    if (t("search")) {
        let e = parseFloat(s[1]);
        let n = Hg(e);
        if (n) {
            let t = [`Deaths: ${n.deaths}`, n.noAnti ? `Leaks shame at: ${n.noAnti}` : `Could not find information about shame from heal tracking`];
            b(`Information found for ${n.name} [${n.sid}]`, "", "#f2e9d3", false, true);
            for (let e = 0; e < t.length; e++) {
                b(`${t[e]}`, "", "#f2e9d3", false, true)
            }
        } else {
            b(`Could not find player.`, "", "#f2e9d3", false, true)
        }
        return true
    }
    if (t("lookup")) {
        if (vh.length) {
            b(`Clans found: ${vh.length}`, "", "#baab99", false, true);
            for (var i = 0; i < vh.length; ++i) {
                let e = Hg(vh[i].owner);
                if (e) {
                    b(`Clan ${vh[i].sid} ${e.name} [${vh[i].owner}]`, "", "#f2e9d3", false, true)
                } else {
                    b(`Clan: ${vh[i].sid} [${vh[i].owner}]`, "", "#f2e9d3", false, true)
                }
            }
        } else {
            b(`No clans found.`, "", "#FF7F7F", false, true)
        }
        return true
    }
    if (t("ping")) {
        if (Hn && en) {
            Ki.send(le({
                msg: "pinger",
                player: z,
                sender: z?.sid,
                doing: false,
                time: Date.now(),
                server: location.href
            }));
            Gn = 1e4;
            zn = []
        }
        return true
    }
    if (t("XP")) {
        b(`Primary: ${z.weaponXP[z.weapons[0]]}, Secondary: ${z.weaponXP[z.weapons[1]]}`, "", "#baab99", false, true);
        return true
    }
    if (t("mute")) {
        const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])];
        if (!isNaN(r[0])) {
            Ii.push(r[0]);
            let e = Hg(r[0]);
            let t = e ? `${e.name}[${e.sid}]` : `ID: ${r[0]}`;
            b(`muted ${t}`, "", "red", false, true);
            return true
        }
        if (s[1] === ".clanval" && r[1]) {
            let t = Hg(r[1]);
            if (t && typeof t.team === "string") {
                J.forEach(e => {
                    if (e.team === t.team) {
                        Ii.push(e.sid);
                        b(`muted ${e.name}[${e.sid}] in clan ${t.team}`, "", "red", false, true)
                    }
                });
                return true
            }
        }
        b(`failed to mute parameter issue`, "", "red", false, true)
    }
    if (t("unmute")) {
        const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])];
        if (!isNaN(r[0]) && Ii.includes(r[0])) {
            Ii = Ii.filter(e => e != r[0]);
            let e = Hg(r[0]);
            let t = e ? `${e.name}[${e.sid}]` : `ID: ${r[0]}`;
            b(`unmuted ${t}`, "", "green", false, true);
            return true
        }
        if (s[1] === ".clanval" && r[1]) {
            let n = Hg(r[1]);
            if (n && typeof n.team === "string") {
                for (let t = 0; t < Ii.length; t++) {
                    J.forEach(e => {
                        if (e.team === n.team && Ii[t] === e.sid) {
                            Ii.splice(t, 1);
                            b(`unmuted ${e.name}[${e.sid}] in clan ${n.team}`, "", "green", false, true)
                        }
                    })
                }
                return true
            }
        }
        b(`failed to unmute parameter issue`, "", "green", false, true)
    }
    if (t("find")) {
        var o;
        const r = [parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3])];
        if (s[1] === ".del") {
            let t;
            if (s[2] == "all") {
                ht = [];
                b(`hit list cleared`, "", Hy(), false, true);
                return true
            }
            if (!isNaN(r[1])) {
                t = ht.find(e => e.sid == r[1]);
                ht = ht.filter(e => e.sid != r[1]);
                let e = t ? `${t.name}[${t.sid}]` : `${t.name}`;
                b(`${e} has been removed from hit list`, "", t.color, false, true);
                return true
            }
        }
        if (!isNaN(r[0])) {
            o = Hg(r[0]);
            if (o) {
                if (!o.color) o.color = Hy(ht);
                o.spotted = o.visible ? true : false;
                ht.push(o);
                b(`${o?.name}[${o.sid}] was added to the hit list`, "", o.color, false, true);
                return true
            } else {
                o = {};
                o.sid = r[0];
                if (!o.color) o.color = Hy(ht);
                o.spotted = false;
                ht.push(o);
                b(`ID: ${o.sid} was added to the hit list`, "", o.color, false, true);
                return true
            }
        }
        if (isNaN(r[0]) && typeof s[1] === "string") {
            let t = n.split(".");
            o = J.find(e => e.name == t[1]);
            if (o) {
                if (!o.color) o.color = Hy(ht);
                ht.push(o);
                o.spotted = o.visible ? true : false;
                b(`${o.name}[${o.sid}] was added to the hit list`, "", o.color, false, true);
                return true
            } else {
                o = {};
                o.name = t[1];
                if (!o.color) o.color = Hy(ht);
                o.spotted = false;
                ht.push(o);
                b(`${o.name} was added to the hit list`, "", o.color, false, true);
                return true
            }
        }
    }
    if (n.startsWith("setPF")) {
        if (!isNaN(s[1]) || !isNaN(s[2])) {
            ri.size = parseInt(s[1]);
            ri.res = parseInt(s[2]);
            ri.initiateCanvas();
            si.pathfinder.size = parseInt(s[1]);
            si.pathfinder.res = parseInt(s[2]);
            si.pathfinder.initiateCanvas();
            if (si.goal.pathing) {
                si?.updateChat("stop", z?.sid);
                si?.updateChat("path", z?.sid);
                b(`Change Pathfinder | radius: ${s[1]} resolution: ${s[2]} `, "", Hy())
            }
            return true
        }
    }
    si?.updateChat(n.slice(0, 30), z?.sid);
    if (t("commands") || t("help")) {
        zp();
        return true
    }
    if (t("teamID")) {
        vt = parseFloat(s[1]);
        b(`sync ID set to ${vt}`, "", Hy(), false, true);
        return true
    }
    if (t("bMin")) {
        ci = parseFloat(s[1]);
        b(`bMin is ${ci}`, "", Hy(), false, true);
        return true
    }
    if (t("bMax")) {
        di = parseFloat(s[1]);
        b(`max one tick distance: ${di}`, "", Hy(), false, true);
        return true
    }
    if (t("set")) {
        fi = parseFloat(s[1]);
        hi = s[2];
        gi = s[3];
        if (Vt) {
            setTimeout(() => {
                Xp(`!clear ${fi} ${hi} ${gi}`)
            }, 500)
        }
        return true
    }
    if (t("summon")) {
        ai = "Summon";
        return true
    }
    if (t("wander")) {
        ai = "Wander";
        return true
    }
    if (t("Static")) {
        ai = "Static";
        return true
    }
    if (t("dc")) {
        const r = [parseFloat(s[1]), parseFloat(s[2])];
        if (s[1] == "any") {
            if (!isNaN(r[1])) {
                ie.slice(-r[1]).forEach(e => {
                    e.close()
                });
                return true
            }
        }
        if (s[1] == "all") {
            ie.forEach(e => e.close());
            return true
        }
        if (!isNaN(r[0])) {
            ie.forEach(e => e.sid == r[0] && e.close());
            return true
        }
    }
    if (t("clear")) {
        const r = parseFloat(s[1]);
        if (!isNaN(r)) {
            if (!ts?.bot) {
                Ft = {
                    x: z.x2,
                    y: z.y2,
                    scale: r
                };
                let n = s[2];
                !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n;
                s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : "");
                let i = s[3];
                Ut = {
                    x: z.x2,
                    y: z.y2,
                    types: i,
                    IDS: n,
                    value: r,
                    r: false
                };
                Vt = kh.filter(e => {
                    const t = se(z, e);
                    if (e.name == "pit trap") {
                        e.opacity = 1
                    } else e.opacity = 1;
                    if (t <= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) {
                        if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true;
                        if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true;
                        if (typeof n === "number" && e?.owner?.sid === n) {
                            return true
                        }
                        if (n == "all" || n == "every" || n == "everything") return true;
                        if (!n && e?.owner?.sid === x.sid) return true
                    }
                    return false
                })
            } else {
                Ft = {
                    x: ts?.bot.x,
                    y: ts?.bot.y,
                    scale: r
                };
                let n = s[2];
                !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n;
                s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : "");
                let i = s[3];
                Ut = {
                    x: ts?.bot.x,
                    y: ts?.bot.y,
                    types: i,
                    IDS: n,
                    value: r,
                    r: false
                };
                Vt = ts.builds.filter(e => {
                    const t = se(ts.bot, e);
                    if (e.name == "pit trap") {
                        e.opacity = 1
                    } else e.opacity = 1;
                    if (t <= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) {
                        if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true;
                        if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true;
                        if (typeof n === "number" && e?.owner?.sid === n) {
                            return true
                        }
                        if (n == "all" || n == "every" || n == "everything") return true;
                        if (!n && e?.owner?.sid === x.sid) return true
                    }
                    return false
                })
            }
            return true
        }
    }
    if (t("rclear")) {
        const r = parseFloat(s[1]);
        if (!isNaN(r)) {
            Ft = {
                x: z.x2,
                y: z.y2,
                scale: r
            };
            let n = s[2];
            !n ? n = x.sid : !isNaN(parseFloat(n)) ? n = parseFloat(n) : n = n;
            s[3] = s[3] + (s[4] !== undefined && s[4] !== null && typeof s[4] !== "number" ? s[4] : "");
            let i = s[3];
            Ut = {
                x: z.x2,
                y: z.y2,
                types: i,
                IDS: n,
                value: r,
                r: true
            };
            Vt = kh.filter(e => {
                const t = se(z, e);
                if (e.name == "pit trap") {
                    e.opacity = 1
                } else e.opacity = 1;
                if (t >= r && (i != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || i == "all" || e?.name == i || e?.group?.name == i) && (e.type === null || e.type === undefined)) {
                    if ((n == "team" || n == "clan" || n == "tribe") && te(e?.owner?.sid)) return true;
                    if ((n == "enemy" || n == "enemies" || n == "hostile" || n == "nEnemy") && !te(e?.owner?.sid)) return true;
                    if (typeof n === "number" && e?.owner?.sid === n) {
                        return true
                    }
                    if (n == "all" || n == "every" || n == "everything") return true;
                    if (!n && e?.owner?.sid === x.sid) return true
                }
                return false
            });
            return true
        }
    }
    if (G["do"] && ie.length) {
        ie[G.val].emit("6", n.slice(0, 30));
        return
    }
    if ($p) {
        !e && T.send("6", n.slice(0, 30), false)
    } else if (qp) {
        Ki.send(le({
            message: n.slice(0, 30),
            id: z.sid,
            time: 3e3
        }))
    }
}

function Jp() {
    Hp.value = "", Wp.style.display = "none"
}
let qp = false;
let $p = true;

function Zp(e, n) {
    const t = Hg(e);
    if (Pi) console.log(`${t.name}[${t.sid}] ${n}`);
    if ((!Ei.includes(e) || ts?.bot?.sid === e) && !Ii.includes(t.sid)) b(`${t.name}[${t.sid}]: `, n, z.sid == e || ts?.bot?.sid === e ? "#0aa8fc" : "#FFFFFF");
    if ((e == z.sid || ts?.bot?.sid === e) && Hn && document.getElementById("send ws")?.checked) {
        Ki.send(le({
            message: n,
            id: z.sid === e ? z.sid : ts?.bot?.sid,
            time: 3e3
        }))
    }
    if (e == z.sid && n == "spectate none" && Hn && en) {
        es.isDoing = false;
        b(`You have stopped spectating`, "", "#2b0640", false, true);
        Ki.send(le({
            msg: "spectate",
            playerToSpec: undefined,
            sender: z?.sid,
            doing: false,
            time: Date.now(),
            server: location.href
        }))
    } else if (e == z.sid && n.startsWith("spectate") && Hn && en) {
        let e = n.split("spectate");
        let t = Number(e[1]);
        if (t != z?.sid) {
            b(`You are now spectating ${Hg(t)?.name} [${t}]`, "", "#2b0640", false, true);
            es.isDoing = true;
            Ki.send(le({
                msg: "spectate",
                playerToSpec: t,
                sender: z?.sid,
                time: Date.now(),
                server: location.href
            }))
        } else {
            b(`You cannot spectate yourself.`, "", "#2b0640", false, true)
        }
    }
    if (e == z.sid && n == "ping" && Hn && en) {
        Ki.send(le({
            msg: "pinger",
            player: z,
            sender: z?.sid,
            doing: false,
            time: Date.now(),
            server: location.href
        }));
        Gn = 1e4;
        zn = []
    }
    Hn && document.getElementById("send ws").checked && (!Ei.includes(e) || ts?.bot?.sid === e) && Ki.send(le({
        chat: n,
        id: t,
        chatter: false,
        color: z.sid == e || ts?.bot?.sid === e ? "#0aa8fc" : "#FFFFFF",
        server: location.href
    }));
    t && (t.chatMessage = n, t.chatCountdown = K.chatCountdown)
}
window.addEventListener("resize", X.checkTrusted(sm));
async function em() {
    if (Oh > K.maxScreenWidth + 1) {
        await wx(2);
        Oh /= 1.05;
        Lh /= 1.05;
        sm();
        em()
    } else if (Oh < K.maxScreenWidth - 1) {
        await wx(2);
        Oh *= 1.05;
        Lh *= 1.05;
        sm();
        em()
    } else return
}
let tm = window.innerWidth;
let nm = window.innerHeight;
let im = 1;

function sm() {
    Fh = window.innerWidth;
    _h = window.innerHeight;
    im *= Math.min(Oh / tm, Lh / nm);
    tm = Oh;
    nm = Lh;
    const e = Math.max(Fh / Oh, _h / Lh) * ph;
    Xh.width = Fh * ph;
    Xh.height = _h * ph;
    Xh.style.width = Fh + "px";
    Xh.style.height = _h + "px";
    $.setTransform(e, 0, 0, e, (Fh * ph - Oh * e) / 2, (_h * ph - Lh * e) / 2)
}
var om = {
    x: null,
    y: null,
    x2: null,
    y2: null
};

function rm(e, t) {
    t = Xh.getBoundingClientRect();
    if (e) {
        om.x = e.clientX;
        om.y = e.clientY
    }
    const n = (om.x - Fh / 2) * im * .91975;
    const i = (om.y - _h / 2) * im * .91975;
    const s = z.x2 + n;
    const o = z.y2 + i;
    om.x2 = s;
    om.y2 = o;
    return {
        x: s,
        y: o
    }
}
sm();
let am;
lm(!1);

function lm(e) {
    am = e, _p()
}
window.setUsingTouch = lm;
let cm = document.getElementById("leaderboardButton"),
    dm = document.getElementById("leaderboard");
cm.addEventListener("touchstart", () => {
    dm.classList.add("is-showing")
});
const um = () => {
    dm.classList.remove("is-showing")
};
document.body.addEventListener("touchend", um);
document.body.addEventListener("touchleave", um);
document.body.addEventListener("touchcancel", um);
if (!J1) {
    let e = function(e) {
        rm(e);
        e.preventDefault(), e.stopPropagation(), lm(!1), Bh = e.clientX, Dh = e.clientY
    },
        t = function(e) {
            if (e.button == 0) {
                if (m.lc === undefined) m.lc = 0;
                m.lc = 1
            }
            if (e.button == 1) {
                if (m.mc === undefined) m.mc = 0;
                m.mc = 1
            }
            if (e.button == 2) {
                if (m.rc === undefined) m.rc = 0;
                m.rc = 1
            }
            lm(!1), wh != 1 && (wh = 1, Bm())
        },
        n = function(e) {
            if (e.button == 0) {
                if (m.lc === undefined) m.lc = 0;
                m.lc = 0
            }
            if (e.button == 1) {
                if (m.mc === undefined) m.mc = 0;
                m.mc = 0
            }
            if (e.button == 2) {
                if (m.rc === undefined) m.rc = 0;
                m.rc = 0
            }
            lm(!1), wh != 0 && (wh = 0, Bm())
        };
    var fm = e,
        hm = t,
        pm = n;
    const E4 = document.getElementById("touch-controls-fullscreen");
    E4.style.display = "block", E4.addEventListener("mousemove", e, !1), E4.addEventListener("mousedown", t, !1), E4.addEventListener("mouseup", n, !1)
}
let mm = !1,
    gm;

function ym() {
    let e = 0,
        t = 0,
        n;
    if (am) {
        if (!mm) return;
        n = gm
    }
    for (var i in km) {
        var s = km[i];
        e += !!vm[i] * s[0], t += !!vm[i] * s[1]
    }
    if ((e != 0 || t != 0) && (n = P(t, e)), n !== void 0) return X.fixTo(n, 2)
}
let xm;

function wm(e) {
    if (ct && !e) return z.dir;
    return z ? (!z.lockDir && !am && (xm = P(Dh - _h / 2, Bh - Fh / 2)), X.fixTo(xm || 0, 2)) : 0
}

function bm() {
    return z ? (!z.lockDir && !am && (xm = P(Dh - _h / 2, Bh - Fh / 2)), X.fixTo(xm || 0, 2)) : 0
}
var vm = {},
    km = {
        87: [0, -1],
        83: [0, 1],
        65: [-1, 0],
        68: [1, 0]
    };

function Am() {
    vm = {}
}

function Im() {
    return x0.style.display != "block" && Wp.style.display != "block"
}
var Sm = false;
var Em = false;

function Tm(e) {
    if (!I4() || !en) return;
    const t = e.which || e.keyCode || 0;
    78 == t && (on.status = !on.status);
    e.key == "e" && (Ct = !Ct);
    if (m[e.key] === undefined) m[e.key] = 0;
    m[e.key] <= 2 && m[e.key]++;
    t == 27 ? Np() : z && z.alive && Im() && (vm[t] || (vm[t] = 1, t == 75 ? si?.setWaypoint("quick", z) : t == 88 ? Lm() : z.weapons[t - 49] != null ? Vm(z.weapons[t - 49], !0) : z.items[t - 49 - z.weapons.length] != null ? Vm(z.items[t - 49 - z.weapons.length]) : t == 82 ? Fm() : t == 32 && (wh = 1, Bm())));
    Ue[e.keyCode] = 1;
    let n;
    if (e.keyCode == 79) {
        if (ai == "Wander") {
            ai = "Summon"
        } else {
            ai = "Wander"
        }
        U1.showText(z.x2, z.y2, 30, .2, 400, ai, "#fff")
    } else if (e.keyCode == 189) {
        if (ai == "Static") {
            ai = "Summon"
        } else {
            n = ai;
            ai = "Static"
        }
        U1.showText(z.x2, z.y2, 30, .2, 400, ai, "#fff")
    }
    if (ie.length) {
        if (e.keyCode === 37) {
            G["do"] = true;
            G.val = (G.val - 1 + ie.length) % ie.length;
            G.play = false
        } else if (e.keyCode === 39) {
            G["do"] = true;
            G.val = (G.val + 1) % ie.length;
            G.play = false
        }
    }
    if (e.code == "ShiftRight") {
        G["do"] = false;
        G.play = false
    }
    if (e.keyCode == 66 && ie.length) {
        if (!Vt) {
            Xp(`!clear ${fi} ${hi} ${gi}`)
        } else {
            Ut = null;
            Vt = null;
            kh.forEach(e => {
                if (e.name == "pit trap") {
                    e.opacity = 1
                } else {
                    e.opacity = 1
                }
            })
        }
    }
    Ue[e.keyCode] = 1;
    if (m[e.key] === undefined) m[e.key] = 0;
    m[e.key] <= 2 && m[e.key]++;
    if (m.q) {
        xn = true;
        setTimeout(() => {
            xn = false
        }, ce)
    }
    if (e.code == "ShiftRight" || e.code == "ShiftLeft") {
        if (m[e.code] === undefined) m[e.key] = 0;
        m[e.code] = 1
    }
    e.key == "l" && (In = !In, U1.showText(z.x2, z.y2, 30, .2, 400, In, "#fff"));
    e.key == "U" && !Hn && (T5(), console.log("trying to connect"));
    e.key == "p" && em();
    e.key == "r" && (un = un == "normal" ? un = false : un = "normal");
    e.key == "R" && (un = un == "reverse" ? un = false : un = "reverse");
    e.code == "NumpadMultiply" && (fn = !fn, U1.showText(z.x2, z.y2, 30, .2, 400, fn, "#fff"));
    e.code == "NumpadSubtract" && (z.customColor = Array.from(F)[f(Math.random() * F.size)]);
    e.key == "t" && si.goal.pathing ? si?.updateChat("stop", z?.sid) : e.key == "t" ? si?.updateChat("path", z?.sid) : null;
    e.key == "0" && (Em = false);
    if (e.keyCode == 32) {
        if (m.mc === undefined) m.mc = 0;
        m.mc = 1
    }
    if (e.key == "y") {

        const i = async () => {
            let e = [];
            for (let e = 0; e < 20; e++) {
                bx(ie.length);
                if (!Em) {
                    console.log("stopped spawning");
                    break
                }
            }
        };
        i().then(() => {})["catch"](e => {})
    }
    m["1"] == 1 && (qt = ee);
    m["2"] == 1 && A != null && (qt = A)
}
window.addEventListener("keydown", X.checkTrusted(Tm));

function Cm(e) {
    if (z && z.alive) {
        const t = e.which || e.keyCode || 0;
        if (t == 13) {
            if (x0.style.display === "block") return;
            Qp()
        } else {
            Im() && vm[t] && (vm[t] = 0, t == 32 && (wh = 0, Bm()))
        }
        if (m[e.key] === undefined) m[e.key] = 0;
        m[e.key] = 0;
        m[e.key] = 0;
        Ue[e.keyCode] = 0
    }
    if (e.code == "ShiftRight" || e.code == "ShiftLeft") {
        if (m[e.code] === undefined) m[e.key] = 0;
        m[e.code] = 0
    }
    if (e.key === "Enter") {
        if (document.activeElement === we) {
            const n = we.value.trim();
            if (n !== "") {
                Xp(we.value, true);
                document.getElementById("send ws").checked && Ki.send(le({
                    chat: n,
                    id: z,
                    chatter: true,
                    color: "#0aa8fc",
                    server: location.href,
                    pm: true
                }))
            }
            we.value = "";
            setTimeout(() => {
                we.blur()
            }, 0)
        }
    }
    if (e.key === "/" && "chatbox" !== document.activeElement.id.toLowerCase()) {
        we.focus()
    }
    if (e.keyCode == 32) {
        if (m.mc === undefined) m.mc = 0;
        m.mc = 0
    }
}
window.addEventListener("keyup", X.checkTrusted(Cm));
bo.onclick = function() {
    if (bo.checked) {
        K.healthBarWidth = 50
    } else {
        K.healthBarWidth = 35
    }
};

function Bm() {
    return
}
var Dm = null;

function Pm(e, t, n, i, s, o) {
    return D((e - i) ** 2 + (t - s) ** 2) - (n + o) < 1
}
const Rm = W / 12;

function Mm(t) {
    let n = w4(z) * y4;
    w;
    if (t === undefined) return undefined;
    if (Nm(t, n) === null) {
        for (let e = 0; e < W; e += Rm) {
            if (Nm(t + e, n) !== null) return t + e;
            if (Nm(t - e, n) !== null) return t - e
        }
        return W + null
    }
    return t
}

function Nm(e, t) {
    let s = z.x2 + U(e) * t;
    let o = z.y2 + V(e) * t;
    let r = 45;
    if (Pm(s, o, 35, Nt.x, Nt.y, 45)) {
        let e = P(s - Nt.x, o - Nt.y),
            t = D((s - Nt.x) ** 2 + (o - Nt.y) ** 2) + 35;
        let n = s + U(e) * t;
        let i = o + V(e) * t;
        if (Pm(n, i, 35, Nt.x, Nt.y, r)) {
            return null
        }
    }
    return e
}

function Om(e = false) {
    var t = ym();
    let n = {
        ...z
    };
    let i = Vg(1, t);
    n.buildIndex = -1;
    n.weaponIndex = y != null ? y : z.weaponIndex;
    n.skinIndex = z.skins[i.skinIndex] ? i.skinIndex : z.skinIndex;
    n.tailIndex = z.tails[i.tailIndex] ? i.tailIndex : z.tailIndex;
    e = !isNaN(t) ? E3(z, t, l4(n, t, n, 1)) : false;
    let s = !(ie.length && G["do"] && G.play) ? false : true;
    let o = s ? ui : Dm;
    if (e && !m.ShiftLeft && !(ni == "pathfinder" && si.goal.pathing)) t = undefined;
    if (t == Dn && !s) return;
    if ((null == ui || null == t || Math.abs(t - ui) > .3) && !(ni == "pathfinder" && si.goal.pathing && !s) && !jt) {
        if (!s) {
            T.send("a", t);
            ui = t
        } else {
            ie[G.val].emit("a", t);
            Dm = t
        }
    }
}

function Lm() {
    z.lockDir = z.lockDir ? 0 : 1
}

function Fm() {
    T.send("S", 1)
}

function _m() {
    T.send("K", 1)
}

function Vm(e, t) {
    T.send("G", e, t)
}
window.io = T;

function Um() {
    Zh.hidden = !hh, window.onbeforeunload = function(e) {
        return "Are you sure?"
    }, window.FRVR && window.FRVR.tracker.levelStart("game_start"), lh("moo_name", f0.value), !Vh && nh() && (Vh = !0, sh.stop("menu"), F0("Loading..."), T.send("M", {
        name: f0.value,
        moofoll: 1,
        skin: Nh === 10 ? "constructor" : Nh
    })), jm()
}

function jm() {
    var e = document.getElementById("ot-sdk-btn-floating");
    e && (e.style.display = "none")
}

function Hm() {
    var e = document.getElementById("ot-sdk-btn-floating");
    e && (e.style.display = "block")
}
let Wm = !0,
    Qm = !1;

function Ym(e) {
    en = true;
    st = true;
    on = {
        status: false,
        w: null,
        a: null,
        s: null,
        d: null,
        aim: null,
        x: 0,
        y: 0
    };
    i0.style.display = "none", t0.style.display = "block", Uh.style.display = "none", vm = {}, Eh = e, wh = 0, Vh = !0, Wm && (Wm = !1, kh.length = 0);
    J1 && Fu.enable({
        onStartMoving: () => {
            Bp(), cp(), lm(!0), mm = !0
        },
        onStopMoving: () => {
            mm = !1, Om()
        },
        onRotateMoving: (e, t) => {
            t.force < .25 || (gm = -t.angle.radian, Om(), Qm || (xm = -t.angle.radian))
        }
    })
}

function zm(e, t, n, i) {
    if (n < 0 || !hs.checked) {
        i === -1 ? U1.showText(e, t, 50, .18, 500, n, "#ee5551") : ps.checked ? zi.push({
            x: e,
            y: t,
            value: n
        }) : U1.showText(e, t, 50, .18, 500, S(n), n >= 0 ? "#fff" : "#8ecc51")
    }
}
let Gm = 99999;
async function Km() {
    Vh = !1, Hm();
    en = false;
    St = 0;
    p = false;
    on = {
        status: false,
        w: null,
        a: null,
        s: null,
        d: null,
        aim: null,
        x: 0,
        y: 0
    };
    si?.setWaypoint("death", z);
    s0.style.display = "none", Np(), gp = {
        x: z.x,
        y: z.y
    }, i0.style.display = "none", k0.style.display = "block", k0.style.fontSize = "0px", Gm = 0, setTimeout(function() {
        t0.style.display = "block", Uh.style.display = "block", k0.style.display = "none"
    }, K.deathFadeout), G0();
    await A4();
    setTimeout(() => {
        b(le(z.dmgpots), "", "black", false, true);
        b(le(z.healths), "", "#ff17dd", false, true);
        b(`Ping: ${window.pingTime}`, "", "black", false, true);
        b(`Shame Leak attempted: ${z.shameLeak}`, "", "black", false, true)
    }, 10)
}

function Xm(t) {
    if (xi.ID == t) {
        b(`target ID reset to undefined`, "", "green", false, true);
        xi.ID = null
    }
    kh = kh.filter(e => e?.owner?.sid != t);
    ht = ht.filter(e => e?.sid != t);
    ie.length && (ie = ie.filter(e => e.HERE));
    $0 = $0.filter(e => e.sid != t)
}

function Jm(r, s, t, e) {
    let a;
    let l;
    let c = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450);
    let d = {};
    let u = x.list[ly].scale - 50;
    for (let e = 0; e < t.length; e++) {
        let o = t[e];
        for (let i = 0; i < s.length; i++) {
            let n = true;
            for (let t = 0; t < o.placePot.possible.length; t++) {
                let e = o.placePot.possible[t];
                d[s[i].angle + o.name + o.sid + e.angle] = S4(s[i], e);
                if (d[s[i].angle + o.name + o.sid + e.angle] <= s[i].scale + e.scale) {
                    s[i].placePriority = true;
                    n = false;
                    break
                }
            }
            let e = S4(s[i], o);
            if (e <= 200) s[i].points += 1;
            if (e <= 20.4) {
                s[i].points += 1
            }
            if (e <= 50) {
                s[i].collide.push(o.sid);
                s[i].points += Nt ? 4 : 2
            }
            let t = c.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !o.team && e?.owner?.sid != o.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - s[i].x, e.y - s[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !s[i].sids.includes(e.sid));
            if (t.length) {
                s[i].points += 1 + t.length;
                s[i].canPush = true
            }
            if (e <= o.placePot.placeRange) {
                if (n) {
                    s[i].points += 1
                } else {
                    s[i].points += .5
                }
            }
            if (!l || l.points <= s[i].points) l = s[i]
        }
        for (let s = 0; s < r.length; s++) {
            r[s].bounce = false;
            r[s].collision = false;
            if (kx(r[s])) continue;
            let e = S4(r[s], o);
            let n = true;
            for (let t = 0; t < o.placePot.possible.length; t++) {
                let e = o.placePot.possible[t];
                if (d[r[s].angle + o.name + o.sid + e.angle] + u <= r[s].scale + e.scale) {
                    r[s].placePriority = true;
                    n = false;
                    break
                }
            }
            let t = o.inTrap ? S4(r[s], o.inTrap) : Infinity;
            let i = Ay(P(r[s].y - z.y2, r[s].x - z.x2), Ay(P(o.y2 - z.y2, o.x2 - z.x2)));
            if (e <= 35 + r[s].scale) {
                if (r[s].collide.length >= 1) r[s].origin.push({
                    amount: 1,
                    from: `collides with ${o.name}[${o.sid}]`,
                    player: o
                });
                r[s].collide.push(o.sid);
                r[s].collision = true;
                let e = j5(r[s], c, o);
                if (e.building) {
                    r[s].into = e;
                    if (e.building.name == "pit trap" && !(r[s].preplace && o.inTrap && r[s].sids.includes(o.inTrap.sid))) {
                        r[s].points += 2.5
                    } else if (e.bounce) {
                        r[s].bounce = true;
                        r[s].points += 5
                    } else if (e.building.name !== "pit trap") {
                        r[s].points += 3
                    } else {
                        r[s].into = false
                    }
                }
                if (o.inTrap && !r[s].sids.includes(o.inTrap.sid)) {
                    r[s].points += 2;
                    r[s].spikeTrap = true;
                    r[s].canPush = true
                }
            }
            if (o.inTrap && !r[s].sids.includes(o.inTrap.sid) && t <= 50 + r[s].scale + 21) {
                r[s].canPush = true;
                r[s].points += 1
            }
            if (o.inTrap && e <= 250 && (Ay(r[s].angle, o.inTrap.angToMe) >= 1.5 || Dn === null || Dn === undefined)) {
                r[s].points += 2
            }
            if (o.inTrap && jt && Ay(ne.dir, P(o.y2 - z.y2, o.x2 - z.x2)) > 4.7) {
                i4("prevents bounce back");
                r[s].points += 2
            }
            if (n && e <= o.placePot.placeRange) {
                r[s].points += 1
            }
            if (!a || a.points <= r[s].points) a = r[s]
        }
        d = {}
    }
    return {
        spikes: r,
        traps: s,
        bestSpike: a,
        bestTrap: l
    }
}
let qm = false;

function $m(s, e, t) {
    kh = kh.filter(e => {
        if (e.sid !== s) return true;
        if (!L3(z, e)) {
            e.TICK = v;
            Yt.push(e)
        }
        if (e.sid == s && Nt.sid === e.sid) {
            I(6, z.tailIndex)
        }
        if (e.sid == s && Y && Y?.globalTrap?.sid === e.sid && se(z, e) <= 126) {
            cn.push({
                build: e,
                destroyedAt: v
            });
            if (gt) {
                c4(z.items[2], B(z, e));
                c4(z.items[2], B(z, Y))
            }
        }
        if (e.sid === s && !qm && Y && se(z, Y) <= 235 && se(z, e) <= 190 && ms.checked && x.list[z.items[4]]?.name == "pit trap") {
            const n = F5(ly, 0, 0, W / ls.value);
            const i = F5(uy, 0, 0, W / ls.value);
            const o = Jm(n, i, ss);
            const {
                bestTrap: r,
                bestSpike: a
            } = o;
            o.spikes.sort((e, t) => t.points - e.points);
            o.traps.sort((e, t) => t.points - e.points);
            if (o.spikes.length && o.traps.length) {
                function t(n, e = o.spikes.concat(o.traps)) {
                    e = e.filter(e => e.points > 0);
                    if (He >= 85 || !a && !r && !m.c) return;
                    e.sort((e, t) => {
                        if (t.points === e.points && e.name !== t.name) {
                            return e.name === "pit trap" ? -1 : 1
                        }
                        return t.points - e.points
                    });
                    for (let t of e) {
                        const i = n.some(e => S4(e, t) <= e.scale + t.scale);
                        const s = os.some(e => S4(e, t) <= e.scale + t.scale);
                        if (!i && !s) {
                            n.push(t)
                        }
                        if (n.length === 4) break
                    }
                    for (let e of n) {
                        if (!e.did) {
                            Z5(e.id, e.angle);
                            rs.push(e);
                            Tn.push({
                                ...e,
                                tick: v
                            })
                        }
                    }
                }
                let e = [];
                if (a && a.points > 0 && !os.some(e => S4(e, a) <= e.scale + a.scale) && (!r.canPush || a.into) && (jt && r.points > 0 || a.bounce)) {
                    if (a.into) {
                        m3(a.into.newPos)
                    }
                    if (a.collision) {
                        i4(`spike sync tester`)
                    }
                    if (a.placePriority) {
                        Z5(Nt ? 15 : ly, a.angle);
                        Tn.push({
                            ...a,
                            tick: v
                        })
                    } else {
                        Z5(Nt ? 15 : ly, a.angle);
                        Tn.push({
                            ...a,
                            tick: v
                        })
                    }
                    a.did = true;
                    e.push(a);
                    rs.push(a)
                }
                if (r && r.points > 0 && !os.some(e => S4(e, r) <= e.scale + r.scale) && !(a && a.points > 0 && (!jt && a.bounce) && se(r, a) <= r.scale + a.scale) || r?.canPush || jt) {
                    if (r.placePriority) {
                        Z5(uy, r.angle);
                        Tn.push({
                            ...r,
                            tick: v
                        })
                    } else {
                        Z5(uy, r.angle);
                        Tn.push({
                            ...r,
                            tick: v
                        })
                    }
                    r.did = true;
                    e.push(r);
                    rs.push(r)
                }
                t(e)
            }
        }
        return false
    })
}

function Zm() {
    r0.innerText = z.points, a0.innerText = z.food, l0.innerText = z.wood, c0.innerText = z.stone, d0.innerText = z.kills
}
const e2 = {},
      t2 = ["crown", "skull"];

function n2() {
    for (let e = 0; e < t2.length; ++e) {
        const t = new Image;
        t.onload = function() {
            this.isLoaded = !0
        }, t.src = "./img/icons/" + t2[e] + ".png", e2[t2[e]] = t
    }
}
const i2 = [];

function s2(e, t) {
    pg();
    if (z.upgradePoints = e, z.upgrAge = t, e > 0) {
        i2.length = 0, X.removeAllChildren(g0);
        for (var n = 0; n < x.weapons.length; ++n)
            if (x.weapons[n].age == t && (x.weapons[n].pre == null || z.weapons.indexOf(x.weapons[n].pre) >= 0)) {
                var i = X.generateElement({
                    id: "upgradeItem" + n,
                    "class": "actionBarItem",
                    onmouseout: function() {
                        q0()
                    },
                    parent: g0
                });
                i.style.backgroundImage = document.getElementById("actionBarItem" + n).style.backgroundImage, i2.push(n)
            } for (var n = 0; n < x.list.length; ++n)
                if (x.list[n].age == t && (x.list[n].pre == null || z.items.indexOf(x.list[n].pre) >= 0)) {
                    const s = x.weapons.length + n;
                    var i = X.generateElement({
                        id: "upgradeItem" + s,
                        "class": "actionBarItem",
                        onmouseout: function() {
                            q0()
                        },
                        parent: g0
                    });
                    i.style.backgroundImage = document.getElementById("actionBarItem" + s).style.backgroundImage, i2.push(s)
                } for (var n = 0; n < i2.length; n++)(function(e) {
                    const t = document.getElementById("upgradeItem" + e);
                    t.onmouseover = function() {
                        x.weapons[e] ? q0(x.weapons[e], !0) : q0(x.list[e - x.weapons.length])
                    }, t.onclick = X.checkTrusted(function() {
                        T.send("H", e)
                    }), X.hookTouchEvents(t)
                })(i2[n]);
        i2.length ? (g0.style.display = "block", y0.style.display = "block", y0.innerHTML = "SELECT ITEMS (" + e + ")") : (g0.style.display = "none", y0.style.display = "none", q0())
    } else g0.style.display = "none", y0.style.display = "none", q0()
}

function o2(e, t, n) {
    e != null && (z.XP = e), t != null && (z.maxXP = t), n != null && (z.age = n), n == K.maxAge ? (p0.innerHTML = "MAX AGE", m0.style.width = "100%") : (p0.innerHTML = "AGE " + z.age, m0.style.width = z.XP / z.maxXP * 100 + "%")
}

function r2(t) {
    X.removeAllChildren(u0);
    let n = 1;
    for (let e = 0; e < t.length; e += 3) {
        (function(e) {
            X.generateElement({
                "class": "leaderHolder",
                style: "font-size: 14px; display: flex; justify-content: space-between; align-items: center;",
                parent: u0,
                children: [X.generateElement({
                    "class": "",
                    style: "color:" + (t[e] == Eh ? "#fff; font-size: 14px;" : "rgba(255,255,255,0.6); font-size: 14px;"),
                    text: `${t[e+1]} [${t[e]}]`
                }), X.generateElement({
                    "class": "leaderScore",
                    style: "font-size: 14px;",
                    text: X.kFormat(t[e + 2]) || "0"
                })]
            })
        })(e);
        n++
    }
}
let a2 = null;

function l2() {
    {
        if (z && (!yh || gh - yh >= 1e3 / K.clientSendRate)) {
            yh = gh;
            const r = wm();
            a2 !== r && (a2 = r)
        }
        let e = !ts?.bot && !es.isDoing ? z : es.isDoing ? es?.rPlayer : ts?.bot;
        if (Gm < 120 && (Gm += .1 * mh, k0.style.fontSize = j(H(Gm), 120) + "px"), e) {
            const r = X.getDistance(Ph, Rh, e.x, e.y),
                  v = X.getDirection(e.x, e.y, Ph, Rh),
                  a = j(r * .01 * mh, r);
            r > .05 ? (Ph += a * U(v), Rh += a * V(v)) : (Ph = e.x, Rh = e.y)
        } else Ph = K.mapScale / 2, Rh = K.mapScale / 2;
        const x = gh - ce;
        for (var i, s = 0, o = J.concat(Ci, ts.players, es.rPlayers); s < o.length + bh.length; ++s)
            if ((q = o[s] || bh[s - o.length]) && q && (q?.visible || q?.fake))
                if (q.forcePos) q.x = q.x2, q.y = q.y2, q.dir = q.d2;
                else {
                    var r = q.t2 - q.t1,
                        a = (x - q.t1) / r,
                        l = 170;
                    q.dt += mh;
                    var c = j(1.7, q.dt / l);
                    var i = q.x2 - q.x1;
                    q.x = q.x1 + i * c, i = q.y2 - q.y1, q.y = q.y1 + i * c, q.lastx = q.x;
                    q.lasty = q.y;
                    q.dir = Math.lerpAngle(q.d2, q.d1, j(1.2, a));
                    if (q?.bot) {
                        let e = ie[G?.val]?.findPlayer(q.sid);
                        e && (e = q)
                    }
                } const w = Ph - Oh / 2 + pi,
                      b = Rh - Lh / 2 + mi;
        K.snowBiomeTop - b <= 0 && K.mapScale - K.snowBiomeTop - b >= Lh ? ($.fillStyle = "#b6db66", $.fillRect(0, 0, Oh, Lh)) : K.mapScale - K.snowBiomeTop - b <= 0 ? ($.fillStyle = "#dbc666", $.fillRect(0, 0, Oh, Lh)) : K.snowBiomeTop - b >= Lh ? ($.fillStyle = "#fff", $.fillRect(0, 0, Oh, Lh)) : K.snowBiomeTop - b >= 0 ? ($.fillStyle = "#fff", $.fillRect(0, 0, Oh, K.snowBiomeTop - b), $.fillStyle = "#b6db66", $.fillRect(0, K.snowBiomeTop - b, Oh, Lh - (K.snowBiomeTop - b))) : ($.fillStyle = "#b6db66", $.fillRect(0, 0, Oh, K.mapScale - K.snowBiomeTop - b), $.fillStyle = "#dbc666", $.fillRect(0, K.mapScale - K.snowBiomeTop - b, Oh, Lh - (K.mapScale - K.snowBiomeTop - b))), Wm || (Th += Ch * K.waveSpeed * mh, Th >= K.waveMax ? (Th = K.waveMax, Ch = -1) : Th <= 1 && (Th = Ch = 1), $.globalAlpha = 1, $.fillStyle = "#dbc666", p2(w, b, $, K.riverPadding), $.fillStyle = "#91b2db", p2(w, b, $, (Th - 1) * 250)), $.lineWidth = 4, $.strokeStyle = "#000", $.globalAlpha = .06, $.beginPath();
        if (!gs.checked && !vo.checked) {
            for (var d = (14400 - w) % 1440; d < Oh; d += 1440) d > 0 && ($.moveTo(d, 0), $.lineTo(d, Lh));
            for (var u = (14400 - b) % 1440; u < Lh; u += 1440) u > 0 && ($.moveTo(0, u), $.lineTo(Oh, u))
        } else {
            for (var f = -Ph; f < Oh; f += Lh / 18) f > 0 && ($.moveTo(f, 0), $.lineTo(f, Lh));
            for (let e = -Rh; e < Lh; e += Lh / 18) f > 0 && ($.moveTo(0, e), $.lineTo(Oh, e))
        }
        $.stroke(), $.globalAlpha = 1, $.strokeStyle = D0, b2(-1, w, b), $.globalAlpha = 1, $.lineWidth = R0, c2(0, w, b), A2(w, b, 0), $.globalAlpha = 1;
        for (var s = 0; s < bh.length; ++s) q = bh[s], q.active && q.visible && (q.animate(mh), $.save(), $.translate(q.x - w, q.y - b), $.rotate(q.dir + q.dirPlus - W / 2), lg(q, $), $.restore());
        if (b2(0, w, b), c2(1, w, b), b2(1, w, b), A2(w, b, 1), b2(2, w, b), b2(3, w, b), $.fillStyle = "#000", $.globalAlpha = .09, w <= 0 && $.fillRect(0, 0, -w, Lh), K.mapScale - w <= Oh) {
            var h = oe(0, -b);
            $.fillRect(K.mapScale - w, h, Oh - (K.mapScale - w), Lh - h)
        }
        if (b <= 0 && $.fillRect(-w, 0, Oh + w, -b), K.mapScale - b <= Lh) {
            var p = oe(0, -w);
            let e = 0;
            K.mapScale - w <= Oh && (e = Oh - (K.mapScale - w)), $.fillRect(p, K.mapScale - b, Oh - p - e, Lh - (K.mapScale - b))
        }
        if (z && si?.goal?.pathing) {
            $.globalAlpha = 1;
            $.save();
            $.translate(-w, -b);
            ri?.drawPath($, "#ffffff", z, "#00FF00");
            si?.drawWaypoints($, z.skinRot);
            $.restore()
        }
        $.fillStyle = vo.checked ? `rgba(0, 0, 70, 0.35)` : `rgba(15, 0, 70, 0.49)`;
        $.globalAlpha = 1, $.fillRect(0, 0, Oh, Lh), $.strokeStyle = P0;
        let t = J.concat(ts.players, es.rPlayers);
        for (var s = 0; s < t.length + bh.length; ++s)
            if (q = t[s] || bh[s - t.length], q?.visible && (q?.skinIndex != 10 || q?.skinIndex == 10 || q == z || q?.team && q?.team == z.team)) {
                const v = (q.team ? "[" + q.team + "] " : "") + (q.name || "");
                if (!eo.checked && !Ei.includes(q.sid) && ws.checked) {
                    if (v !== "") {
                        $.font = (q.nameScale || 30) + "px Lilita One";
                        $.fillStyle = bo.checked ? "#fff" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team === z.team ? "#a6c7e7" : "#ebaebc";
                        $.textBaseline = "middle";
                        $.textAlign = "center";
                        $.lineWidth = q.nameScale ? 11 : 8;
                        $.lineJoin = "round";
                        const A = q.x - w;
                        const I = q.y - b - q.scale - K.nameY;
                        $.strokeText(v, A, I);
                        $.fillText(v, A, I);
                        if (q.isLeader && e2.crown.isLoaded) {
                            const S = K.crownIconScale;
                            const E = A - S / 2 - $.measureText(v).width / 2 - K.crownPad;
                            $.drawImage(e2.crown, E, I - S / 2 - 5, S, S)
                        }
                        if (q.iconIndex === 1 && e2.skull.isLoaded) {
                            const T = K.crownIconScale;
                            const C = A + $.measureText(v).width / 2 + K.crownPad - T / 2;
                            $.drawImage(e2.skull, C, I - T / 2 - 5, T, T)
                        }
                    }
                }
                if (q.isPlayer && ws.checked) {
                    $.globalAlpha = 1;
                    $.textAlign = "center";
                    $.fillStyle = q.customColor;
                    $.font = "19px Lilita One";
                    $.strokeStyle = "#212123";
                    $.lineWidth = 6;
                    $.strokeText(q.sid, q.x - w, q.y - b);
                    $.fillText(q.sid, q.x - w, q.y - b)
                }
                if (q.isPlayer && ws.checked && !Ei.includes(q.sid)) {
                    if (!Ei.includes(q.sid) || G?.["do"] && ts?.bot?.sid == q.sid) {
                        if (q.sid != z.sid && !vo.checked) {
                            $.globalAlpha = 1;
                            $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One", $.strokeStyle = "#212123", $.lineWidth = 3, $.strokeText(`[${q.gainSpeed?H(q.gainSpeed):0} / ${q.leakSpeed?H(q.leakSpeed):0}]`, q.x - w, q.y - b - 50);
                            $.fillText(`[${q.gainSpeed?H(q.gainSpeed):0} / ${q.leakSpeed?H(q.leakSpeed):0}]`, q.x - w, q.y - b - 50)
                        }
                        if (xs.checked || !vo.checked) {
                            const B = bo.checked ? 29 : 12;
                            $.textAlign = "center", $.fillStyle = bo.checked ? "#fff" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc", $.font = "18px Lilita One", $.strokeStyle = P0, $.lineWidth = 5, $.strokeText(!q.clowned ? q.shameCount : q.shameTimer > 0 ? H(1e3 * q.shameTimer) / 1e3 : 0, q.x - w, q.y - b + q.scale + K.nameY + B), $.fillText(!q.clowned ? q.shameCount : q.shameTimer > 0 ? H(1e3 * q.shameTimer) / 1e3 : 0, q.x - w, q.y - b + q.scale + K.nameY + B)
                        }
                        if (!vo.checked || (ys.checked || bo.checked)) {
                            $.globalAlpha = .06;
                            $.beginPath();
                            $.arc(q.x - w, q.y - b, q.scale, W / 2, W / 2 + W / 1.5);
                            $.stroke();
                            $.strokeStyle = q.lastpr != 1 ? `hsl(${100-q.pr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)";
                            $.lineWidth = 4;
                            $.beginPath();
                            $.globalAlpha = q.lastpr == 1 ? .06 : 1;
                            $.arc(q.x - w, q.y - b, q.scale, W / 2, W / 2 + W / 1.5 * (q.lastpr + (q.multpr - q.lastpr) * j(1, q.dt / q.delta)), false);
                            $.stroke();
                            $.strokeStyle = "rgba(0, 0, 70, 0.35)";
                            $.lineWidth = 6;
                            $.globalAlpha = .06;
                            $.beginPath();
                            $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5 * 2, W / 2 + W / 1.5 * 2 + W / 1.5);
                            $.stroke();
                            $.globalAlpha = q.lastsr == 1 ? .06 : 1;
                            $.strokeStyle = q.lastsr != 1 ? `hsl(${100-q.sr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)";
                            $.lineWidth = 4;
                            $.beginPath();
                            $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5 * 2, W / 2 + W / 1.5 * 2 + W / 1.5 * (q.lastsr + (q.multsr - q.lastsr) * j(1, q.dt / q.delta)), false);
                            $.stroke();
                            $.strokeStyle = "rgba(0, 0, 70, 0.35)";
                            $.lineWidth = 6;
                            $.globalAlpha = .06;
                            $.beginPath();
                            $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5, W / 2 + W / 1.2 + W / 2);
                            $.stroke();
                            $.globalAlpha = q.lasttr == 1 ? .06 : 1;
                            $.strokeStyle = q.lasttr != 1 ? `hsl(${100-q.tr*405},100%,50%)` : "rgba(0, 0, 70, 0.35)";
                            $.lineWidth = 4;
                            $.beginPath();
                            $.arc(q.x - w, q.y - b, q.scale, W / 2 + W / 1.5, W / 2 + W / 1.2 + W / 2 * (q.lasttr + (q.tr - q.lasttr) * j(1, q.dt / q.delta)), false);
                            $.stroke()
                        }
                        $.globalAlpha = 1;
                        if (bs.checked && z.sid == q.sid) {
                            let e = He;
                            let t = 0;
                            t += (e - t) * .75;
                            const D = 120;
                            const P = t / D;
                            let n, i, s;
                            if (P < .5) {
                                n = Math.floor(510 * P);
                                i = 255;
                                s = 0
                            } else {
                                n = 255;
                                i = Math.floor(510 * (1 - P));
                                s = 0
                            }
                            const R = `rgb(${n},${i},${s})`;
                            $.fillStyle = P0;
                            $.roundRect(q.x - w - K.healthBarWidth - K.healthBarPad + 34.7, q.y - b + q.scale - 170 + K.nameY, K.healthBarWidth * 2 / 3.25 + K.healthBarPad * 2, 17, 8);
                            $.fill();
                            $.fillStyle = R;
                            $.roundRect(q.x - w - K.healthBarWidth + 34.7, q.y - b + q.scale - 170 + K.nameY + K.healthBarPad, K.healthBarWidth * 2 / 3.25 * (t / 120), 17 - K.healthBarPad * 2, 7);
                            $.fill()
                        }
                    }
                    if (Y && q.sid == Y.sid && typeof Ny === "object" && jt) {
                        $.globalAlpha = .3;
                        $.fillStyle = "#5f6ee7";
                        $.strokeStyle = "#5f6ee7";
                        $.beginPath();
                        $.arc(Ny.x - w, Ny.y - b, 35, 0, ae);
                        $.arc(Y.x2 + ne.x - w, Y.y2 + ne.y - b, 35, 0, ae);
                        $.fill()
                    }
                }
                $.font = "20px Lilita One";
                const k = $.measureText(q.name).width;
                if (Y && q.isPlayer && q.sid == Y.sid && !vo.checked) {
                    const e = se(z, Y) - 35;
                    if (e > 350) {
                        $.globalAlpha = 0;
                        $.fillStyle = "black";
                        $.strokeStyle = "black";
                        $.lineWidth = 5;
                        $.beginPath();
                        $.moveTo(z.x - w, z.y - b);
                        $.lineTo(q.x - w, q.y - b);
                        $.stroke();
                        $.globalAlpha = 1;
                        $.fillStyle = "white";
                        $.lineWidth = 5;
                        const M = (q.x + z.x) / 2 - w;
                        const N = (q.y + z.y) / 2 - b;
                        const O = M - k / 2;
                        const L = N + 15;
                        $.strokeText(q.name, O, L);
                        $.fillText(q.name, O, L)
                    }
                }
                if (q.isAI) {
                    $.globalAlpha = 1;
                    $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One", $.strokeStyle = "#212123", $.lineWidth = 3, $.strokeText(q.health, q.x - w, q.y - b), $.fillText(q.health, q.x - w, q.y - b)
                }
                if (Vt?.length && q.sid == z.sid) {
                    $.globalAlpha = .4;
                    $.lineWidth = 5;
                    $.strokeStyle = "black";
                    $.beginPath();
                    $.arc(Ft.x - w, Ft.y - b, Ft.scale, 0, ae);
                    $.stroke();
                    $.globalAlpha = 1
                }
                if (Y && q.sid == Y.sid && q.isPlayer && (un || fn && ee == 5)) {
                    $.globalAlpha = 1;
                    if (q.scaler === undefined) {
                        q.scaler = 0;
                        q.scalerR = false;
                        q.rotater = 0;
                        q.rotaterR = false
                    }
                    q.scalerR ? q.scaler -= .05 : q.scaler += .05;
                    q.rotaterR ? q.rotater -= 1.8 : q.rotater += 1.8;
                    if (q.rotater >= 360) q.rotater = 0;
                    if (Math.round(q.scaler * 10) / 10 >= 1 || Math.round(q.scaler * 10) / 10 <= -1) q.scalerR = !q.scalerR;
                    $.strokeStyle = "#ba5e69";
                    $.lineWidth = 5;
                    let o = q.scale + 15 + q.scaler * 5;
                    let e = Math.PI / 6;
                    let i = 2 * Math.PI / 3 - e;
                    for (let n = 0; n < 3; n++) {
                        let e = 2 * Math.PI / 3 * n + Z(q.rotater);
                        let t = e + i;
                        $.beginPath();
                        $.arc(q.x - w, q.y - b, o, e, t);
                        $.stroke()
                    }
                    $.fillStyle = "#ba5e69";
                    let t = 3;
                    let n = 20 + q.scaler * 4;
                    let r = 30 + q.scaler * 6;
                    let a = [Z(q.rotater) + i / 2 + W / 3, Z(q.rotater) + 2 * W / 3 + i / 2 + W / 3, Z(q.rotater) + 4 * W / 3 + i / 2 + W / 3];
                    for (let s = 0; s < t; s++) {
                        let e = a[s];
                        let t = f2(q.x, q.y, e, o);
                        let n = f2(t.x, t.y, e + W / 6, r);
                        let i = f2(t.x, t.y, e - W / 6, r);
                        $.beginPath();
                        $.moveTo(t.x - w, t.y - b);
                        $.lineTo(n.x - w, n.y - b);
                        $.lineTo(i.x - w, i.y - b);
                        $.closePath();
                        $.fill()
                    }
                }
                if (q.sid === z.sid && !q.isAI) {
                    Ci.forEach(e => {
                        if (e.purpose === "formation" && e.showSID) {
                            $.globalAlpha = 1;
                            $.textAlign = "center";
                            $.fillStyle = "white";
                            $.font = "19px Lilita One";
                            $.strokeStyle = "black";
                            $.lineWidth = 6;
                            $.strokeText(e.sid, e.x - w, e.y - b);
                            $.fillText(e.sid, e.x - w, e.y - b)
                        }
                    });
                    $.globalAlpha = 1;
                    $.lineWidth = 5;
                    for (let e = 0; e < Q.length; e++) {
                        if (Q[e].group !== undefined && Q[e].type === null && Q[e].distance <= 300 && ks.checked && Q[e].health !== Q[e].maxHealth) {
                            const F = Q[e].health;
                            $.fillStyle = bo.checked ? "black" : z.sid == Q[e].owner.sid ? de("#657ba3", .35) : te(Q[e].owner.sid) && Q[e].owner.sid !== z.sid ? de("#657ba3", .35) : de("#a4628a", .35);
                            $.roundRect(Q[e].x - w - 33 - K.healthBarPad, Q[e].y - b + Q[e].scale + K.nameY - 90, 1.45 * 45 + 2 * K.healthBarPad, 17, 10);
                            $.fill();
                            $.fillStyle = bo.checked ? z.sid == Q[e].owner.sid ? "#2693c7" : te(Q[e].owner.sid) && Q[e].owner.sid != z.sid ? "#2693c7" : "#c9346b" : z.sid == Q[e].owner.sid ? "#93d1fa" : te(Q[e].owner.sid) && Q[e].owner.sid !== z.sid ? "#93d1fa" : "#d38595";
                            $.roundRect(Q[e].x - w - 33, Q[e].y - b + Q[e].scale + K.nameY - 90 + K.healthBarPad, 1.45 * 45 * (Q[e].health / Q[e].maxHealth), 17 - 2 * K.healthBarPad, 10);
                            $.fill()
                        }
                        if (Q[e].group !== undefined && Q[e].owner?.sid > 0 && Q[e].active !== 0 && As.checked) {
                            $.fillStyle = bo.checked ? te(Q[e].owner.sid) ? "#2693c7" : "#c9346b" : te(Q[e].owner.sid) ? "#93d1fa" : "#d38595";
                            $.textBaseline = "middle";
                            $.textAlign = "center";
                            $.font = "13px Lilita One";
                            $.strokeStyle = bo.checked ? "black" : "#212123";
                            $.strokeText(Q[e].owner.sid.toString(), Q[e].x - w, Q[e].y - b + Q[e].scale - 20);
                            $.fillText(Q[e].owner.sid.toString(), Q[e].x - w, Q[e].y - b + Q[e].scale - 20)
                        }
                    }
                    $.globalAlpha = 1;
                    if (kt.length && Gs.checked) {
                        $.globalAlpha = 1;
                        $.textAlign = "center";
                        $.fillStyle = "#fff";
                        $.font = "20px Lilita One";
                        $.strokeStyle = "#212123";
                        $.lineWidth = 3;
                        $.strokeText(le(kt), q.x - w, q.y - b - 50);
                        $.fillText(le(kt), q.x - w, q.y - b - 50)
                    }
                }
                if (q.sid === z.sid && ws.checked) {
                    $.globalAlpha = .45;
                    Wi.forEach(e => {
                        "#212123";
                        $.fillStyle = e.assumeBreak ? "#c9346b" : "#2693c7";
                        $.strokeStyle = e.assumeBreak ? "#c9346b" : "#2693c7", $.beginPath();
                        $.arc(e.x - w, e.y - b, e.scale * .35, 0, ae);
                        $.fill();
                        $.stroke()
                    })
                }
                if (q.sid == z.sid && ws.checked && vs.checked) {
                    $.globalAlpha = 1;
                    $.textAlign = "center", $.fillStyle = "#fff", $.font = "20px Lilita One";
                    $.strokeStyle = "black";
                    $.lineWidth = 3;
                    $.strokeText(He, q.x - w, q.y - b - 100 + q.scale + K.nameY - 70);
                    $.fillText(He, q.x - w, q.y - b - 100 + q.scale + K.nameY - 70)
                }
                if (Y3 && Y3.length && q.sid == z.sid) {
                    $.lineCap = "round";
                    $.strokeStyle = "white";
                    $.lineWidth = 3;
                    $.beginPath();
                    var m = Y3.length;
                    $.moveTo(Y3[0] - w, Y3[1] - b);
                    for (let e = 0; e < m; e += 2) {
                        $.lineTo(Y3[e] - w, Y3[e + 1] - b);
                        $.stroke()
                    }
                }
                $.strokeStyle = P0;
                $.globalAlpha = 1;
                q.health2 += (q.health - q.health2) * .5;
                if (q.health > 0 && !Ei.includes(q.sid) || G?.["do"] && ts?.bot?.sid == q.sid) {
                    let e = bo.checked ? 0 : 20;
                    $.fillStyle = P0;
                    $.roundRect(q.x - w - K.healthBarWidth - K.healthBarPad, q.y - b + q.scale + K.nameY - e, K.healthBarWidth * 2 + K.healthBarPad * 2, 17, 8);
                    $.fill();
                    $.fillStyle = bo.checked ? P0 : de(q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc", .35);
                    $.roundRect(q.x - w - K.healthBarWidth, q.y - b + q.scale + K.nameY + K.healthBarPad - e, K.healthBarWidth * 2, 17 - K.healthBarPad * 2, 7);
                    $.fill();
                    $.fillStyle = bo.checked ? q == z || q.team && q.team == z.team ? "#8ecc51" : "#cc5151" : q.isAI ? "#f2eff9" : q === z ? "#a0cac2" : q.team && q.team == z.team ? "#a6c7e7" : "#ebaebc";
                    let t = !bo.checked ? q.isAI ? q.health2 : q.lastHealth == undefined || q.animatedHealth == undefined ? q.health2 : q.lastHealth + (q.health - q.lastHealth) * j(1, oe(0, 1 - re(1 - j(1, (Date.now() - q.animatedHealth) / 250), 2))) : q.health;
                    let n = t / q.maxHealth;
                    let i = K.healthBarWidth * 2 * n;
                    $.roundRect(q.x - w - K.healthBarWidth, q.y - b + q.scale + K.nameY + K.healthBarPad - e, i, 17 - K.healthBarPad * 2, 7);
                    $.fill()
                }
            } U1.update(mh, $, w, b);
        let n = J.concat(ts.players, es.rPlayer);
        for (var s = 0; s < n.length; ++s) {
            if (q = n[s], q?.visible && !Ei.includes(q?.sid) && q.chatCountdown > 0) {
                q.chatCountdown -= mh, q.chatCountdown <= 0 && (q.chatCountdown = 0);
                $.font = "32px Lilita One";
                const v = $.measureText(q.chatMessage);
                $.strokeStyle = "2d3030";
                $.textBaseline = "middle", $.textAlign = "center";
                var p = q.x - w,
                    h = q.y - q.scale - b - 90;
                const c = 47,
                      e = v.width + 17;
                $.lineWidth = 11;
                $.strokeStyle = "black";
                $.fillStyle = $.color;
                $.strokeText(q.chatMessage, p, h);
                $.fillStyle = "rgba(0,0,0,0.2)";
                $.roundRect(p - e / 2, h - c / 2, e, c, 6);
                $.fill();
                $.fillStyle = "#fff";
                $.fillText(q.chatMessage, p, h)
            }
            if (Zn.time > 0 && (q = n[s])?.sid == z?.sid && en) {
                Zn.time -= mh;
                $.font = "32px Lilita One";
                $.strokeStyle = "#2d3030";
                var g = $.measureText(Zn.message);
                $.textBaseline = "middle", $.textAlign = "center", p = q.x - w, h = q.y - q.scale - b - 140;
                var y = g.width + 17;
                $.fillStyle = "rgba(0,0,0,.5)", $.roundRect(p - y / 2, h - 23.5, y, 47, 6), $.fill(), $.fillStyle = "#fff", $.fillText(Zn.message, p, h)
            }
        }
        if (!Ss.checked) {
            Et += (1 - Et) / 160;
            const _ = $.getTransform();
            $.setTransform(1, 0, 0, 1, 0, 0);
            $.fillStyle = `rgba(${[24,0,82,.3].map(e=>e*Et).join(", ")})`;
            $.fillRect(0, 0, Xh.width, Xh.height);
            $.setTransform(_)
        }
    }
    Sp(mh)
}

function c2(t, n, i) {
    for (let e = 0; e < Ah.length; ++e) q = Ah[e], q.active && q.layer == t && (q.update(mh), q.active && cg(q.x - n, q.y - i, q.scale) && ($.save(), $.translate(q.x - n, q.y - i), $.rotate(q.dir), u2(0, 0, q, $), $.restore()))
}
const d2 = {};

function u2(e, t, n, i, s) {
    if (n.src) {
        var o = x.projectiles[n.indx].src,
            r = d2[o];
        if (!r) {
            r = new Image;
            r.onload = function() {
                this.isLoaded = true;
                fe.weapons[o] = Le(1, this, n.scale)
            };
            r.src = ".././img/weapons/" + o + ".png";
            d2[o] = r
        } else if (r && fe.weapons[o] == undefined) {
            r = new Image;
            r.onload = function() {
                this.isLoaded = true;
                fe.weapons[o] = Le(1, this, n.scale)
            };
            r.src = ".././img/weapons/" + o + ".png";
            d2[o] = r
        }
        if (r.isLoaded) {
            var a = Es.checked ? fe.weapons[o] : r;
            if (a) {
                i.drawImage(a, e - n.scale / 2, t - n.scale / 2, n.scale, n.scale)
            }
        }
    } else if (n.indx === 1) {
        i.fillStyle = "#939393";
        k(e, t, n.scale, i)
    }
}

function f2(e, t, n, i) {
    return {
        x: e + i * U(n),
        y: t + i * V(n)
    }
}

function h2() {
    const e = Ph - Oh / 2,
          t = Rh - Lh / 2;
    K1.animationTime += mh, K1.animationTime %= K.volcanoAnimationDuration;
    const n = K.volcanoAnimationDuration / 2,
          i = 1.7 + .3 * (S(n - K1.animationTime) / n),
          s = K.innerVolcanoScale * i;
    $.drawImage(K1.land, K1.x - K.volcanoScale - e, K1.y - K.volcanoScale - t, K.volcanoScale * 2, K.volcanoScale * 2), $.drawImage(K1.lava, K1.x - s - e, K1.y - s - t, s * 2, s * 2)
}

function p2(e, t, n, i) {
    const s = K.riverWidth + i,
          o = K.mapScale / 2 - t - s / 2;
    o < Lh && o + s > 0 && n.fillRect(0, o, Oh, s)
}
const m2 = .05;
const g2 = .025;
const y2 = .1;
const x2 = 1;

function w2(e) {
    if (!e.fadingOut) {
        e.opacity2 += m2;
        if (e.opacity2 >= x2) {
            e.opacity2 = x2;
            e.fadingOut = true
        }
    } else {
        e.opacity2 -= g2;
        if (e.opacity2 <= y2) {
            e.opacity2 = y2;
            e.fadingOut = false
        }
    }
    return e.opacity2
}

function b2(t, n, i, s) {
    let o, r, a, l;
    s = en ? Xt.concat(Ze, ts.builds, es.rBuilds) : kh;
    l = s.length;
    for (let e = 0; e < l; ++e) {
        q = s[e];
        if (!q || !q.active) continue;
        r = q.x + q.xWiggle - n;
        a = q.y + q.yWiggle - i;
        if (t === 0) q.update(mh);
        Wi;
        if (q.layer === t && cg(r, a, q.scale + (q.blocker || 0))) {
            if (Wi.some(e => e.sid === q.sid)) {
                w2(q);
                $.globalAlpha = q.hideFromEnemy ? .6 : q.preplace ? .7 : q.fake ? .3 : q.opacity2
            } else {
                $.globalAlpha = q.hideFromEnemy ? .6 : q.preplace ? .7 : q.fake ? .3 : q.opacity
            }
            if (q.isItem) {
                if (q.fake && !Ns.checked) {
                    $.save();
                    $.translate(r, a);
                    $.rotate(q.dir);
                    $.beginPath();
                    $.arc(0, 0, q.scale, 0, ae);
                    $.fillStyle = q.restricter ? "#6bed5f" : q.preplace ? "#d4577c" : "#7da7b1";
                    $.fill();
                    $.stroke();
                    $.restore()
                } else {
                    o = H2(q, false, false, q);
                    $.save();
                    $.translate(r, a);
                    $.rotate(q.dir);
                    $.drawImage(o, -(o.width / 2), -(o.height / 2));
                    if (q.blocker) {
                        $.strokeStyle = "#db6e6e";
                        $.globalAlpha = .3;
                        $.lineWidth = 6;
                        k(0, 0, q.blocker, $, false, true)
                    }
                    $.restore()
                }
            } else if (q.type === 4) {
                h2()
            } else {
                o = F2(q);
                $.drawImage(o, r - o.width / 2, a - o.height / 2)
            }
        }
    }
}
async function v2(e, t, n, i, s) {
    if (!i) {
        if (s = Hg(e)) {
            s.startAnim(t, n);
            k2(e, t, n, false);
            s.hitBuild = t
        }
        await A4();
        if (t) {
            s = Hg(e);
            ft.forEach(e => {
                e.attemptResolve(s, s.skinIndex, v)
            })
        }
    } else {
        s = i.findPlayer(e);
        s.startAnim(t, n)
    }
}

function k2(e, n, t, i, s, o) {
    if (!i) return pn.push({
        id: k2,
        data: [e, t, n, true]
    });
    o = Hg(e);
    if (o === null) return;
    n > 9 ? o.sr = 0 : o.pr = 0;
    o.slowMult -= x.weapons[n].hitSlow || .3;
    if (o.slowMult < 0) o.slowMult = 0;
    o.sid == z.sid && (z.invisTime = 1e3);
    o.skinIndex == 20 && n > 9 ? o.samRS = .78 : o.samRS = 1;
    o.skinIndex == 20 && n < 9 ? o.samRP = .78 : o.samRP = 1;
    s = Hg(e);
    let r = J.concat(bh);
    r.filter(e => {
        let t = e.sid != s.sid && se(s, e, "player") <= x.weapons[n].range && (s.team && s.team != e.team || !s.team) && X.getAngleDist(B(s, e), s.d2) <= h ? true : false;
        if (!e.isAI && t) {
            if (n >= 9 && (s.secondaryVar === 3 || s.skinIndex == 21) || n < 9 && (s.primaryVar === 3 || s.skinIndex == 21)) e.poison = 5
        }
        if (t) {
            if (s.skinIndex == 58 || s.skinIndex == 55 || s.tailIndex == 18) {
                s.gatherHeal = {
                    dmg: x.weapons[n].dmg,
                    tick: v
                }
            }
        }
    })
}

function A2(i, s, o, r) {
    for (let e = 0, n = J.concat(Ci, ts.players, es.rPlayers); e < n.length; ++e) {
        let t = n[e];
        if (t) {
            if (t?.zIndex == o) {
                t.animate(mh);
                if (t.fake) {
                    $.globalAlpha = t.vals && (t.vals = oe(0, t.vals -= t.decay))
                } else if (r) {
                    $.globalAlpha = .55
                } else if (Ei.includes(t.sid)) {
                    $.globalAlpha = .295
                } else {
                    $.globalAlpha = !Ls.checked ? 1 : .67
                }
                if (t.visible || t.fake || t.spectate) {
                    t.skinRot += .002 * mh;
                    let e = (t == z ? wm() : t.dir) + t.dirPlus;
                    $.save();
                    $.translate(t.x - i, t.y - s);
                    $.rotate(e);
                    I2(t, $);
                    $.restore()
                }
            }
        }
    }
}

function k(e, t, n, i, s, o) {
    i = i || $;
    i.beginPath();
    i.arc(e, t, n, 0, ae);
    o || i.fill();
    s || i.stroke()
}

function I2(e, t) {
    t = t || $, t.lineWidth = R0, t.lineJoin = "miter";
    const n = W / 4 * (x.weapons[e.weaponIndex].armS || 1),
          i = e.buildIndex < 0 && x.weapons[e.weaponIndex].hndS || 1,
          s = e.buildIndex < 0 && x.weapons[e.weaponIndex].hndD || 1;
    if (e.tailIndex > 0 && M2(e.tailIndex, t, e), e.buildIndex < 0 && !x.weapons[e.weaponIndex].aboveHand && (O2(x.weapons[e.weaponIndex], K.weaponVariants[e.weaponVariant]?.src, e.scale, 0, t), x.weapons[e.weaponIndex].projectile != null && !x.weapons[e.weaponIndex].hideProjectile && u2(e.scale, 0, x.projectiles[x.weapons[e.weaponIndex].projectile], $)), t.fillStyle = e.customColor, k(e.scale * U(n), e.scale * V(n), 14), k(e.scale * s * U(-n * i), e.scale * s * V(-n * i), 14), e.buildIndex < 0 && x.weapons[e.weaponIndex].aboveHand && (O2(x.weapons[e.weaponIndex], K.weaponVariants[e.weaponVariant]?.src, e.scale, 0, t), x.weapons[e.weaponIndex].projectile != null && !x.weapons[e.weaponIndex].hideProjectile && u2(e.scale, 0, x.projectiles[x.weapons[e.weaponIndex].projectile], $)), e.buildIndex >= 0) {
        const o = j2(x.list[e.buildIndex]);
        t.drawImage(o, e.scale - x.list[e.buildIndex].holdOffset, -o.width / 2)
    }
    k(0, 0, e.scale, t), e.skinIndex > 0 && (t.rotate(W / 2), C2(e.skinIndex, t, null, e));
    D2(e, t)
}
const S2 = {},
      E2 = {};
let T2;

function C2(e, t, n, i) {
    if (!(T2 = S2[e])) {
        var s = new Image;
        s.onload = function() {
            this.isLoaded = true;
            this.onload = null;
            fe.hats[e] = Le(1, this, o.scale)
        };
        s.src = ".././img/hats/hat_" + e + ".png";
        S2[e] = s;
        T2 = s
    }
    var o = n || E2[e];
    if (!o) {
        for (var r = 0; r < C0.length; ++r) {
            if (C0[r].id == e) {
                o = C0[r];
                break
            }
        }
        E2[e] = o
    }
    if (T2.isLoaded) {
        var a = gy("shadows")?.checked ? fe.hats[e] : T2;
        if (a) {
            t.drawImage(a, -o.scale / 2, -o.scale / 2, o.scale, o.scale)
        }
        if (!n && o.topSprite) {
            t.save();
            t.rotate(i.skinRot);
            C2(e + "_top", t, o, i);
            t.restore()
        }
    }
}

function B2(e, t, n, i, s, o, r) {
    let a = e[t];
    if (!a) {
        const c = new Image;
        c.onload = function() {
            this.isLoaded = true;
            this.onload = null;
            e[t] = Le(r, this, o)
        };
        c.src = i + t + s;
        a = c
    }
    const l = gy("shadows")?.checked ? e[t] : a;
    if (l) {
        n.drawImage(l, -s.scale / 2, -s.scale / 2, s.scale, s.scale)
    }
    if (!i && s.topSprite) {
        n.save();
        n.rotate(o.skinRot);
        B2(e, t + "_top", n, i, s, o, r);
        n.restore()
    }
}

function D2(e, t) {
    if (Y && e.sid == Y?.sid && jt) {
        t.strokeStyle = "blue";
        t.fillStyle = "blue";
        if (Ne(ne.x, ne.y) > 10) {
            t.beginPath();
            t.moveTo(0, 0);
            t.lineTo(ne.x, ne.y);
            t.stroke()
        }
    }
}
const P2 = {},
      R2 = {};

function M2(t, e, n) {
    let i = R2[t];
    if (!(T2 = P2[t])) {
        var s = new Image;
        s.onload = function() {
            this.isLoaded = true;
            fe.accessories[t] = Le("accessory", this, i.scale, i.scale, n.fake)
        };
        s.src = ".././img/accessories/access_" + t + ".png";
        P2[t] = s;
        T2 = s
    }
    if (!i) {
        for (let e = 0; e < B0.length; ++e)
            if (B0[e].id == t) {
                i = B0[e];
                break
            } R2[t] = i
    }
    if (T2.isLoaded) {
        var o = gy("shadows")?.checked ? fe.accessories[t] : T2;
        if (o) {
            e.save();
            e.translate(-20 - (i.xOff || 0), 0);
            if (i.spin) {
                e.rotate(n.skinRot)
            }
            e.drawImage(o, -i.scale / 2, -i.scale / 2, i.scale, i.scale);
            e.restore()
        }
    }
}
var N2 = {};

function O2(e, t, n, i, s) {
    var o = e.src + (t || ""),
        r = N2[o];
    if (!r) {
        r = new Image;
        r.onload = function() {
            this.isLoaded = true;
            fe.weapons[o] = Le("weapon", this, e.length, e.width)
        };
        r.src = ".././img/weapons/" + o + ".png";
        N2[o] = r
    } else if (r && fe.weapons[o] == undefined) {
        r = new Image;
        r.onload = function() {
            this.isLoaded = true;
            fe.weapons[o] = Le("weapon", this, e.length, e.width)
        };
        r.src = ".././img/weapons/" + o + ".png";
        N2[o] = r
    }
    if (r.isLoaded) {
        var a = gy("shadows")?.checked ? fe.weapons[o] : r;
        if (a) {
            s.drawImage(a, n + e.xOff - e.length / 2, i + e.yOff - e.width / 2, e.length, e.width)
        }
    }
}
const L2 = {};

function F2(e) {
    const n = e.y >= K.mapScale - K.snowBiomeTop ? 2 : e.y <= K.snowBiomeTop ? 1 : 0,
          i = e.type + "_" + e.scale + "_" + n;
    let s = Es.checked && !n ? 0 : 54;
    let o = L2[i + s];
    if (!o) {
        let t = Es.checked;
        const a = document.createElement("canvas");
        a.width = a.height = e.scale * 2.1 + R0;
        const l = a.getContext("2d");
        if (l.translate(a.width / 2, a.height / 2), l.rotate(X.randFloat(0, W)), l.strokeStyle = D0, l.lineWidth = R0, e.type == 0) {
            let e;
            for (var r = 0; r < 2; ++r) {
                l.shadowBlur = r === 0 && t ? 21 : 0;
                l.shadowColor = r === 0 && t ? "rgba(0, 0, 0, 1)" : 0;
                e = q.scale * (r ? .5 : 1), Q2(l, q.sid % 2 === 0 ? 5 : 7, e, e * .7), l.fillStyle = n ? r ? "#fff" : "#e3f1f4" : r ? "#b4db62" : "#9ebf57", l.fill(), r || l.stroke()
            }
        } else if (e.type == 1) {
            if (n == 2) l.fillStyle = "#606060", Q2(l, 6, e.scale * .3, e.scale * .71), l.fill(), l.stroke(), l.fillStyle = "#89a54c", k(0, 0, e.scale * .55, l), l.fillStyle = "#a5c65b", k(0, 0, e.scale * .3, l, !0);
            else {
                l.shadowBlur = t ? 22 : 0;
                l.shadowColor = t ? "rgba(0, 0, 0, 1)" : null;
                G2(l, 6, q.scale, q.scale * .7), l.fillStyle = n ? "#e3f1f4" : "#89a54c", l.fill(), l.shadowBlur = 0;
                l.shadowColor = null;
                l.stroke(), l.fillStyle = n ? "#6a64af" : "#c15555";
                let e;
                const c = 4,
                      d = rh / c;
                for (var r = 0; r < c; ++r) e = X.randInt(q.scale / 3.5, q.scale / 2.3), k(e * U(d * r), e * V(d * r), X.randInt(10, 12), l)
            }
        } else {
            e.type == 2 || e.type == 3;
            l.shadowBlur = t ? 12 : 0;
            l.shadowColor = t ? "rgba(0, 0, 0, 1)" : null;
            l.fillStyle = e.type == 2 ? n == 2 ? "#938d77" : "#939393" : "#e0c655", Q2(l, 3, e.scale, e.scale), l.fill(), l.stroke(), l.fillStyle = e.type == 2 ? n == 2 ? "#b2ab90" : "#bcbcbc" : "#ebdca3", l.shadowBlur = 0;
            l.shadowColor = null;
            Q2(l, 3, e.scale * .55, e.scale * .65), l.fill();
            l.shadowBlur = 0;
            l.shadowColor = null
        }
        o = a, L2[i + s] = o
    }
    return o
}

function _2(t, n, i) {
    const s = t.lineWidth || 0;
    i /= 2, t.beginPath();
    let o = ae / n;
    for (let e = 0; e < n; e++) t.lineTo(i + (i - s / 2) * U(o * e), i + (i - s / 2) * V(o * e));
    t.closePath()
}

function V2() {
    const e = K.volcanoScale * 2,
          t = document.createElement("canvas");
    t.width = e, t.height = e;
    const n = t.getContext("2d");
    n.strokeStyle = "#3e3e3e", n.lineWidth = R0 * 2, n.fillStyle = "#7f7f7f", _2(n, 10, e), n.fill(), n.stroke(), K1.land = t;
    const i = document.createElement("canvas"),
          s = K.innerVolcanoScale * 2;
    i.width = s, i.height = s;
    const o = i.getContext("2d");
    o.strokeStyle = D0, o.lineWidth = R0 * 1.6, o.fillStyle = "#f54e16", o.strokeStyle = "#f56f16", _2(o, 10, s), o.fill(), o.stroke(), K1.lava = i
}
V2();
const U2 = [];

function j2(i, e, s, o) {
    let t = Es.checked && !s && !e ? 0 : 54;
    let r = U2[i.id + t];
    if (!r || e || i.lastAnim != ws.checked) {
        const f = document.createElement("canvas");
        f.width = f.height = i.scale * 2.5 + R0 + (x.list[i.id].spritePadding || 0);
        const h = f.getContext("2d");
        let n = Es.checked && !s ? true : 0;
        h.shadowBlur = n ? 15 : 0;
        h.shadowColor = `rgba(0, 0, 0, 0.35)`;
        if (h.translate(f.width / 2, f.height / 2), h.rotate(e ? 0 : W / 2), h.strokeStyle = D0, h.lineWidth = R0 * (e ? f.width / 81 : 1), i.name == "apple") {
            h.fillStyle = "#c15555", k(0, 0, i.scale, h), h.fillStyle = "#89a54c";
            const p = -(W / 2);
            W2(i.scale * U(p), i.scale * V(p), 25, p + W / 2, h)
        } else if (i.name == "cookie") {
            h.fillStyle = "#cca861", k(0, 0, i.scale, h), h.fillStyle = "#937c4b";
            for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0)
        } else if (i.name == "cheese") {
            h.fillStyle = "#f4f3ac", k(0, 0, i.scale, h), h.fillStyle = "#c3c28b";
            for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0)
        } else if (i.name == "wood wall" || i.name == "stone wall" || i.name == "castle wall") {
            h.fillStyle = i.name == "castle wall" ? "#83898e" : i.name == "wood wall" ? "#a5974c" : "#939393";
            const p = i.name == "castle wall" ? 4 : 3;
            Q2(h, p, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = i.name == "castle wall" ? "#9da4aa" : i.name == "wood wall" ? "#c9b758" : "#bcbcbc", Q2(h, p, i.scale * .65, i.scale * .65), h.fill()
        } else if (i.name == "spikes" || i.name == "greater spikes" || i.name == "poison spikes" || i.name == "spinning spikes") {
            let e = i.name == "spikes" ? 8 : 8.5;
            let t = i.name == "spikes" ? .6 : .65;
            h.shadowBlur = n ? e : 0;
            h.shadowColor = `rgba(0, 0, 0, ${t})`;
            h.fillStyle = i.name == "poison spikes" ? "#7b935d" : "#79A9CA";
            var u = i.scale * .6;
            if (s || (Os.checked ? true : !o?.fake)) {
                Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u);
                h.fill();
                h.stroke();
                h.fillStyle = "#a5974c";
                h.shadowBlur = 0, h.shadowColor = null;
                k(0, 0, u, h);
                h.fillStyle = "#c9b758";
                k(0, 0, u / 2, h, !0)
            } else if (o?.fake) {
                h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#000000", Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u);
                h.stroke();
                h.shadowBlur = 0, h.shadowColor = null;
                if (!o?.fake) {
                    h.beginPath();
                    h.arc(0, 0, u, 0, ae);
                    h.stroke()
                }
            }
        } else if (i.name == "windmill" || i.name == "faster windmill" || i.name == "power mill") h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fillStyle = "#c9b758", z2(0, 0, i.scale * 1.5, 29, 4, h), h.shadowBlur = 0, h.shadowColor = null, h.fillStyle = "#a5974c", k(0, 0, i.scale * .5, h);
        else if (i.name == "mine") h.fillStyle = "#939393", Q2(h, 3, i.scale, i.scale), h.fill(), h.stroke(), h.fillStyle = "#bcbcbc", Q2(h, 3, i.scale * .55, i.scale * .65), h.fill();
        else if (i.name == "sapling")
            for (var d = 0; d < 2; ++d) {
                var u = i.scale * (d ? .5 : 1);
                Q2(h, 7, u, u * .7), h.fillStyle = d ? "#b4db62" : "#9ebf57", h.fill(), d || h.stroke()
            } else if (i.name == "pit trap") {
                h.shadowBlur = n ? 8.5 : 0;
                h.shadowColor = `rgba(0, 0, 0, ${.65})`;
                if (s || (Os.checked ? true : !o?.fake)) {
                    h.fillStyle = "#a5974c", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = D0, Q2(h, 3, i.scale * .65, i.scale * .65), h.fill()
                } else if (o?.fake || o?.preplace) {
                    h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#5e79db", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.stroke();
                    if (!o?.fake) {
                        Q2(h, 3, i.scale * .65, i.scale * .65), h.stroke()
                    }
                }
            } else if (i.name == "boost pad") h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#dbd97d", K2(i.scale * 1, h);
        else if (i.name == "turret") {
            h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.fillStyle = "#939393";
            const p = 50;
            Y2(0, -p / 2, i.scale * .9, p, h), k(0, 0, i.scale * .6, h), h.fill(), h.stroke()
        } else if (i.name == "platform") {
            h.fillStyle = "#cebd5f";
            const p = 4,
                  m = i.scale * 2,
                  g = m / p;
            let e = -(i.scale / 2);
            for (var d = 0; d < p; ++d) Y2(e - g / 2, 0, g, i.scale * 2, h), h.fill(), h.stroke(), e += m / p
        } else i.name == "healing pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "spawn pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#71aad6", k(0, 0, i.scale * .6, h)) : i.name == "blocker" ? (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "teleporter" && (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#d76edb", k(0, 0, i.scale * .5, h, !0));
        r = f, e || (U2[i.id + t] = r)
    }
    i.lastAnim = ws.checked;
    return r
}

function H2(i, e, s, o) {
    let t = Es.checked && !s && !e ? 0 : 54;
    let r = U2[i.id + t];
    if (!r || e || i.lastAnim != ws.checked) {
        const f = document.createElement("canvas");
        f.width = f.height = i.scale * 2.5 + R0 + (x.list[i.id].spritePadding || 0);
        const h = f.getContext("2d");
        let n = Es.checked && !s ? true : 0;
        h.shadowBlur = n ? 15 : 0;
        h.shadowColor = `rgba(0, 0, 0, 0.35)`;
        if (h.translate(f.width / 2, f.height / 2), h.rotate(e ? 0 : W / 2), h.strokeStyle = D0, h.lineWidth = R0 * (e ? f.width / 81 : 1), i.name == "apple") {
            h.fillStyle = "#c15555", k(0, 0, i.scale, h), h.fillStyle = "#89a54c";
            const p = -(W / 2);
            W2(i.scale * U(p), i.scale * V(p), 25, p + W / 2, h)
        } else if (i.name == "cookie") {
            h.fillStyle = "#cca861", k(0, 0, i.scale, h), h.fillStyle = "#937c4b";
            for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0)
        } else if (i.name == "cheese") {
            h.fillStyle = "#f4f3ac", k(0, 0, i.scale, h), h.fillStyle = "#c3c28b";
            for (var a = 4, l = rh / a, c, d = 0; d < a; ++d) c = X.randInt(i.scale / 2.5, i.scale / 1.7), k(c * U(l * d), c * V(l * d), X.randInt(4, 5), h, !0)
        } else if (i.name == "wood wall" || i.name == "stone wall" || i.name == "castle wall") {
            h.fillStyle = i.name == "castle wall" ? "#83898e" : i.name == "wood wall" ? "#a5974c" : "#939393";
            const p = i.name == "castle wall" ? 4 : 3;
            Q2(h, p, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = i.name == "castle wall" ? "#9da4aa" : i.name == "wood wall" ? "#c9b758" : "#bcbcbc", Q2(h, p, i.scale * .65, i.scale * .65), h.fill()
        } else if (i.name == "spikes" || i.name == "greater spikes" || i.name == "poison spikes" || i.name == "spinning spikes") {
            let e = i.name == "spikes" ? 8 : 8.5;
            let t = i.name == "spikes" ? .6 : .65;
            h.shadowBlur = n ? e : 0;
            h.shadowColor = `rgba(0, 0, 0, ${t})`;
            h.fillStyle = i.name == "poison spikes" ? "#7b935d" : "#79A9CA";
            var u = i.scale * .6;
            if (s || (Os.checked ? true : !o?.fake)) {
                Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u);
                h.fill();
                h.stroke();
                h.fillStyle = "#a5974c";
                h.shadowBlur = 0, h.shadowColor = null;
                k(0, 0, u, h);
                h.fillStyle = "#c9b758";
                k(0, 0, u / 2, h, !0)
            } else if (o?.fake) {
                h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#000000", Q2(h, i.name == "spikes" ? 5 : 6, i.scale, u);
                h.stroke();
                h.shadowBlur = 0, h.shadowColor = null;
                if (!o?.fake) {
                    h.beginPath();
                    h.arc(0, 0, u, 0, ae);
                    h.stroke()
                }
            }
        } else if (i.name == "windmill" || i.name == "faster windmill" || i.name == "power mill") h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fillStyle = "#c9b758", z2(0, 0, i.scale * 1.5, 29, 4, h), h.shadowBlur = 0, h.shadowColor = null, h.fillStyle = "#a5974c", k(0, 0, i.scale * .5, h);
        else if (i.name == "mine") h.fillStyle = "#939393", Q2(h, 3, i.scale, i.scale), h.fill(), h.stroke(), h.fillStyle = "#bcbcbc", Q2(h, 3, i.scale * .55, i.scale * .65), h.fill();
        else if (i.name == "sapling")
            for (var d = 0; d < 2; ++d) {
                var u = i.scale * (d ? .5 : 1);
                Q2(h, 7, u, u * .7), h.fillStyle = d ? "#b4db62" : "#9ebf57", h.fill(), d || h.stroke()
            } else if (i.name == "pit trap") {
                h.shadowBlur = n ? 8.5 : 0;
                h.shadowColor = `rgba(0, 0, 0, ${.65})`;
                if (s || (Os.checked ? true : !o?.fake)) {
                    h.fillStyle = "#a5974c", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.fill(), h.stroke(), h.fillStyle = D0, Q2(h, 3, i.scale * .65, i.scale * .65), h.fill()
                } else if (o?.fake || o?.preplace) {
                    h.strokeStyle = !o?.fake ? "#525252" : o?.restricter ? "#6bed5f" : o?.preplace ? "#d4577c" : "#5e79db", Q2(h, 3, i.scale * 1.1, i.scale * 1.1), h.stroke();
                    if (!o?.fake) {
                        Q2(h, 3, i.scale * .65, i.scale * .65), h.stroke()
                    }
                }
            } else if (i.name == "boost pad") h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#dbd97d", K2(i.scale * 1, h);
        else if (i.name == "turret") {
            h.fillStyle = "#a5974c", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.fillStyle = "#939393";
            const p = 50;
            Y2(0, -p / 2, i.scale * .9, p, h), k(0, 0, i.scale * .6, h), h.fill(), h.stroke()
        } else if (i.name == "platform") {
            h.fillStyle = "#cebd5f";
            const p = 4,
                  m = i.scale * 2,
                  g = m / p;
            let e = -(i.scale / 2);
            for (var d = 0; d < p; ++d) Y2(e - g / 2, 0, g, i.scale * 2, h), h.fill(), h.stroke(), e += m / p
        } else i.name == "healing pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "spawn pad" ? (h.fillStyle = "#7e7f82", Y2(0, 0, i.scale * 2, i.scale * 2, h), h.fill(), h.stroke(), h.fillStyle = "#71aad6", k(0, 0, i.scale * .6, h)) : i.name == "blocker" ? (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#db6e6e", z2(0, 0, i.scale * .65, 20, 4, h, !0)) : i.name == "teleporter" && (h.fillStyle = "#7e7f82", k(0, 0, i.scale, h), h.fill(), h.stroke(), h.rotate(W / 4), h.fillStyle = "#d76edb", k(0, 0, i.scale * .5, h, !0));
        r = f, e || (U2[i.id + t] = r)
    }
    i.lastAnim = ws.checked;
    return r
}

function W2(e, t, n, i, s) {
    const o = e + n * U(i),
          r = t + n * V(i),
          a = n * .4;
    s.moveTo(e, t), s.beginPath(), s.quadraticCurveTo((e + o) / 2 + a * U(i + W / 2), (t + r) / 2 + a * V(i + W / 2), o, r), s.quadraticCurveTo((e + o) / 2 - a * U(i + W / 2), (t + r) / 2 - a * V(i + W / 2), e, t), s.closePath(), s.fill(), s.stroke()
}

function k(e, t, n, i, s, o) {
    i = i || $, i.beginPath(), i.arc(e, t, n, 0, ae), o || i.fill(), s || i.stroke()
}

function Q2(t, n, i, s) {
    let o = W / 2 * 3,
        r, a;
    const l = W / n;
    t.beginPath(), t.moveTo(0, -i - 25e-6);
    for (let e = 0; e < n; e++) r = U(o) * i, a = V(o) * i, t.lineTo(r, a), o += l, r = U(o) * s, a = V(o) * s, t.lineTo(r, a), o += l;
    t.lineTo(0, -i), t.closePath()
}

function Y2(e, t, n, i, s, o) {
    s.fillRect(e - n / 2, t - i / 2, n, i), o || s.strokeRect(e - n / 2, t - i / 2, n, i)
}

function z2(e, t, n, i, s, o, r) {
    o.save(), o.translate(e, t), s = c(s / 2);
    for (let e = 0; e < s; e++) Y2(0, 0, n * 2, i, o, r), o.rotate(W / s);
    o.restore()
}

function G2(t, n, i, s) {
    let o = W / 2 * 3;
    const r = W / n;
    let a;
    t.beginPath(), t.moveTo(0, -s);
    for (let e = 0; e < n; e++) a = X.randInt(i + .9, i * 1.2), t.quadraticCurveTo(U(o + r) * a, V(o + r) * a, U(o + r * 2) * s, V(o + r * 2) * s), o += r * 2;
    t.lineTo(0, -s), t.closePath()
}

function K2(e, t) {
    t = t || $;
    const n = e * (D(3) / 2);
    t.beginPath(), t.moveTo(0, -n / 2), t.lineTo(-e / 2, n / 2), t.lineTo(e / 2, n / 2), t.lineTo(0, -n / 2), t.fill(), t.closePath()
}

function X2() {
    const e = K.mapScale / 2;
    C.add(0, e, e + 200, 0, K.treeScales[3], 0), C.add(1, e, e - 480, 0, K.treeScales[3], 0), C.add(2, e + 300, e + 450, 0, K.treeScales[3], 0), C.add(3, e - 950, e - 130, 0, K.treeScales[2], 0), C.add(4, e - 750, e - 400, 0, K.treeScales[3], 0), C.add(5, e - 700, e + 400, 0, K.treeScales[2], 0), C.add(6, e + 800, e - 200, 0, K.treeScales[3], 0), C.add(7, e - 260, e + 340, 0, K.bushScales[3], 1), C.add(8, e + 760, e + 310, 0, K.bushScales[3], 1), C.add(9, e - 800, e + 100, 0, K.bushScales[3], 1), C.add(10, e - 800, e + 300, 0, x.list[4].scale, x.list[4].id, x.list[10]), C.add(11, e + 650, e - 390, 0, x.list[4].scale, x.list[4].id, x.list[10]), C.add(12, e - 400, e - 450, 0, K.rockScales[2], 2)
}

function J2(e, t) {
    for (var n = 0; n < e.length; n += 8) {
        C.add(...e.slice(n, n + 6), x.list[e[n + 6]], true, e[n + 7] >= 0 ? {
            sid: e[n + 7]
        } : null);
        t = Hg(e[n + 7]);
        if (e[n + 7] !== null && t != null && L3(z, t)) {
            b4(Hg(e[n + 7]).loadout, e[n + 6])
        }
    }
}
async function q2(e, t) {
    await A4();
    if (q = Qg(t)) {
        q.xWiggle += K.gatherWiggle * U(e);
        q.yWiggle += K.gatherWiggle * V(e);
        q.tick = v;
        ft.push(new O3(e, q));
        q.lastHealth = q.health;
        q.animatedHealth = Date.now()
    }
}

function $2(e, t) {
    if (q = Qg(e)) {
        q.dir = t;
        q.xWiggle += K.gatherWiggle * U(t + W);
        q.yWiggle += K.gatherWiggle * V(t + W)
    }
}

function Z2(e, t, n, i, s, o, r, a, l) {
    N0 && (Ih.addProjectile(e, t, n, i, s, o, null, null, r).sid = a);
    if (!l) {
        tg(e, t, n, i, s, o)
    }
}

function eg(t, n) {
    n = Xt.filter(e => e.name == "platform");
    if (!n.length) return 0;
    for (let e = 0; e < n.length; e++) {
        if (S4(n[e], t) <= 35 + n[e].scale) {
            return 1
        }
    }
    return 0
}
async function tg(i, s, o, e, t, n, r, a, l, c) {
    if (r && !a && !l) return r.updater.push({
        id: tg,
        data: [i, s, o, e, t, n, r, true]
    });
    if (!r && !a && !l) return pn.push({
        id: tg,
        data: [i, s, o, e, t, n, false, true]
    });
    if (n == 1) {
        let e = v4(i, s);
        if (l && e) return e;
        if (e) return
    }
    let d = Infinity;
    let u = -1;
    let f = null;
    let h = P3(i, s, o + W, 70);
    for (let e = 0; e < J.length; e++) {
        c = J[e];
        if (t == 1.5 && n == 1) {
            if (c.visible && c.skinIndex == 53 && se({
                x: i,
                y: s
            }, c) <= 2) {
                f = c;
                break
            }
        }
        if (!(t == 1.5 && n == 1)) {
            if (c.visible && c?.weaponIndex == c?.secondary && c.d2 === o && x.weapons[c.weaponIndex].projectile == n && S4(h, c) <= 20) {
                f = c;
                break
            }
        }
    }
    if (l) return f;
    if (f) {
        Ln.push({
            x: f.x2,
            y: f.y2,
            dir: o,
            spd: t * (f.skinIndex === 1 ? 1.3 : 1),
            avoid: t == 1.5 || eg(f) ? 1 : 0,
            max: x.projectiles[n].range,
            dmg: x.projectiles[n].dmg,
            traveled: 0,
            owner: f,
            building: null,
            hit: null,
            info: x.projectiles[n]
        });
        let e = ng.find(e => e.player.sid === f.sid);
        if (!e) {
            ng.push({
                player: f,
                projs: [n],
                amt: 1,
                tick: v
            })
        } else {
            if (!e.projs.includes(n)) e.amt++;
            e.projs.push(n);
            e.tick = v
        }
    }
    if (t == 1.5 && n == 1 && f) {
        if (rn[f.sid] === 1 && !te(f.sid) && se(f, z) <= 300 && (f.primary === 5 && f.primaryVar >= 2 || f.primary === undefined)) {
            wn = 1;
            $y()
        }
        f.tr = 0
    }
    if (t != 1.5 && n != 1 && f) {
        f.skinIndex == 20 ? f.samRS = .78 : f.samRS = 1;
        f.sr = 0
    }
    if (f && !te(f.sid)) {
        let e = B({
            x: i,
            y: s
        }, z);
        let t = B(z, {
            x: i,
            y: s
        });
        let n = ng.find(e => e.player?.sid == f.sid);
        if (Ay(o, e) < .6 && n?.amt >= 3) {
            b(`anti bow insta ${f.name}[${f.sid}]`, "", "red", false, true);
            c4(cy, t);
            c4(ay, t);
            if (!z.inTrap) {
                T.send("a", o + Z(90))
            }
            p = true;
            I(6, 11);
            setTimeout(() => {
                c4(ry)
            }, ce);
            setTimeout(() => {
                c4(ry);
                c4(ry);
                T.send("a", undefined);
                p = false
            }, 222)
        }
    }
}
var ng = [];

function ig(t, n) {
    for (let e = 0; e < Ah.length; ++e) Ah[e].sid == t && (Ah[e].range = n)
}
async function sg(e) {
    if (q = Wg(e)) {
        q.startAnim();
        await A4();
        ft.forEach(e => {
            e.attemptResolve(1, 1, v, 0, q)
        })
    }
}

function og(n) {
    Xi = undefined;
    Ji = undefined;
    qi = undefined;
    for (var e = bh.length; e--;) {
        bh[e].forcePos = !bh[e].visible;
        bh[e].visible = false
    }
    if (n) {
        for (let e = 0, t = Date.now(); e < n.length; e += 7) {
            if (q = Wg(n[e])) {
                q.index = n[e + 1];
                q.t1 = q.t2 === undefined ? t : q.t2;
                q.t2 = t;
                q.x1 = q.x;
                q.y1 = q.y;
                q.x2 = n[e + 2];
                q.y2 = n[e + 3];
                q.d1 = q.d2 === undefined ? n[e + 4] : q.d2;
                q.d2 = n[e + 4];
                q.health = n[e + 5];
                q.dt = 0;
                q.visible = true
            } else {
                q = Sh.spawn(n[e + 2], n[e + 3], n[e + 4], n[e + 1]);
                q.x2 = q.x;
                q.y2 = q.y;
                q.d2 = q.dir;
                q.health = n[e + 5];
                if (!Sh.aiTypes[n[e + 1]].name) q.name = K.cowNames[n[e + 6]];
                q.forcePos = true;
                q.sid = n[e];
                q.visible = true
            }
            if (q.id < 6) continue;
            if (q.name === "MOOSTAFA") Xi = q;
            else if (q.name === "MOOFIE") Ji = q;
            else if (q.name === "Treasure") qi = q
        }
    }
}

function rg() {
    let {
        playerGathers: e,
        playerHits: a,
        objectsWiggled: t,
        newBuilds: n
    } = thisTick;
    let l = a.length;
    for (let e = t.length; e--;) {
        By((q = t[e]).ignoreWiggleDirs, q.wiggleDirs);
        let s = Xi ? P(Xi.y - q.y, Xi.x - q.x) : undefined;
        let o = Ji ? P(Ji.y - q.y, Ji.x - q.x) : undefined;
        let r = qi ? P(qi.y - q.y, qi.x - q.x) : undefined;
        for (let e = q.wiggleDirs.length, t, n, i; e--;) {
            for (n = l, t = q.wiggleDirs[e]; n--;) {
                if (X.getAngleDist(P(q.y - (i = a[n]).y2, q.x - i.x2), t) <= .05) {
                    q.wiggleDirs[e] = undefined;
                    q.health -= i.gatherWeapon.dmg;
                    (i.gatherWeapon.sDmg || 1) * (i.skinObj?.bDmg || 1);
                    U1.showText(q.x, q.y, 20, .085, 350, H(i.gatherWeapon.dmg * (i.gatherWeapon.sDmg || 1) * (i.skinObj?.bDmg || 1)), "#00aaff");
                    break
                }
            }
            if (X.getAngleDist(t, s) <= .05 || X.getAngleDist(t, o) <= .05) {
                q.wiggleDirs[e] = undefined;
                q.health -= 100;
                U1.showText(q.x, q.y, 20, .085, 350, 100, "#00aaff");
                break
            } else if (X.getAngleDist(t, r) <= .05) {
                q.wiggleDirs[e] = undefined;
                q.health -= 200;
                U1.showText(q.x, q.y, 20, .085, 350, 200, "#00aaff");
                break
            }
        }
    }
    let i = t.length;
    for (; i--;) {
        t[i].ignoreWiggleDirs.length = 0
    }
    t.length = a.length = e.length = n.length = 0
}
const ag = {};

function lg(e, t) {
    const n = e.index;
    let i = ag[n];
    if (!i) {
        const s = new Image;
        s.onload = function() {
            this.isLoaded = !0, this.onload = null
        }, s.src = "./img/animals/" + e.src + ".png", i = s, ag[n] = i
    }
    if (i.isLoaded) {
        const s = e.scale * 1.2 * (e.spriteMlt || 1);
        t.drawImage(i, -s, -s, s * 2, s * 2)
    }
}

function cg(e, t, n) {
    return e + n >= 0 && e - n <= Oh && t + n >= 0 && t - n <= Lh
}

function dg(t, n, i) {
    let e = jg(t[0]);
    if (!i) {
        !e && !n && !i && b(`Encountered ${t[2]}[${t[1]}]`, "", "#15c283");
        e || (e = new mc(t[0], t[1], K, X, Ih, C, J, bh, x, C0, B0), J.push(e)), e.spawn(n ? dh : null), e.visible = !1, e.x2 = void 0, e.y2 = void 0, e.setData(t, e), n && (z = e, Ph = z.x, Rh = z.y, Lp(), Zm(), o2(), s2(0), s0.style.display = "block")
    } else {
        let e = i.findPlayer(t[1]);
        e || (e = new mc(t[0], t[1], K, X, Ih, C, i.players, bh, x, C0, B0), i.players.push(e));
        e.spawn(n ? dh : null);
        e.visible = !1;
        e.x2 = void 0;
        e.y2 = void 0;
        e.setData(t, e, true);
        return
    }!e.customColor && (e.customColor = Array.from(F)[f(Math.random() * F.size)]);
    !e.color && (e.color = Hy(J));
    rn[t[1]] = 1, an[t[1]] = 1, e.pr = 1, e.sr = 1;
    !e.seenCount ? e.seenCount = 1 : e.seenCount++, e.primary = null;
    e.secondary = null;
    e.samRP = 1;
    e.didDeath = false;
    e.samRS = 1;
    e.noAntiList = e.noAntiList ?? new Array(10).fill(0);
    e.healArr = [];
    e.loadout = {
        spike: x.list[9],
        spawnpad: false,
        utility: undefined,
        windmill: undefined,
        trap: true,
        wall: x.list[3],
        food: x.list[0]
    };
    ln[t[1]] = 1;
    e.deathDmgs = [];
    e.dmgsNow = [];
    !e.trackLeak && (e.trackLeak = []);
    !e.trackGain && (e.trackGain = []);
    e.tr = 1;
    e.shameCount = 0;
    e.healTrack = [];
    e.Alive = true;
    if (e.seenCount > 1 && !n) b(`Encountered ${t[2]}[${t[1]}] ${m4(e.seenCount)} time`, "", "#15c283");
    if (e.sid === z.sid && Hn) Ki.send(le({
        updating: z,
        server: location.href
    }))
}

function ug(t) {
    ie.length && (ie = ie.filter(e => e.HERE));
    Ln.length && (Ln = Ln.filter(e => e.owner.sid != t));
    $0 = $0.filter(e => e.sid != t);
    for (let e = 0; e < J.length; e++)
        if (J[e].id == t) {
            b(`${J[e].name}[${J[e].sid}] has left`, " ", "red");
            J.splice(e, 1);
            break
        }
}

function fg(e, t) {
    z && (z.itemCounts[e] = t);
    pg(e)
}
var hg = [];

function pg(i = undefined) {
    for (let n = 3; n < x.list.length; ++n) {
        let e = x.list[n].group.id;
        let t = x.weapons.length + n;
        if (!hg[t]) {
            hg[t] = document.createElement("div");
            hg[t].id = "itemCount" + t;
            gy("actionBarItem" + t).appendChild(hg[t]);
            hg[t].style = `
                        display: block;
                        position: absolute;
                        padding-left: 5px;
                        font-size: 2em;
                        color: #fff;
                        `;
            hg[t].innerHTML = z.itemCounts[e] || 0
        } else {
            if (i == e) hg[t].innerHTML = z.itemCounts[i] || 0
        }
    }
}
let mg = ["food", "stone", "wood"];
async function gg(e, t, n) {
    if (z) {
        z[e] = t;
        if (mg.includes(e.toString())) {
            const i = parseInt(document.getElementById(`${e}Display`).innerText),
                  s = t - i;
            await A4();
            if (s > 0) {
                if (!z.weaponXP[z.weaponIndex]) z.weaponXP[z.weaponIndex] = 0;
                z.weaponXP[z.weaponIndex] += s
            }
        }
        n && Zm()
    }
}

function yg(e, t) {
    if (!(q = Hg(e))) return;
    let n = Date.now();
    let i = t - q.health;
    q.isPlayer && q.healArr.push([i, t, n]);
    q.lastHealth = q.health;
    q.animatedHealth = Date.now();
    q.health = t
}

function xg(e, t) {
    const n = e.concat(t);
    const i = n.filter((t, e, n) => {
        return e === n.findIndex(e => e.sid === t.sid)
    });
    return i
}

function wg(s, t, e = Q) {
    let o = e.filter(e => se(z, e, "object") <= t);
    let r = B(z, s);
    let a = [s];
    let l = 0;
    let c = 0;
    for (let t = 0; t < 36; t++) {
        let n = B(z, s) + Z(t * 10);
        let i = [];
        let e = o.reduce((e, t) => {
            if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, s), n) <= h) {
                i.push(t);
                return e + 1
            }
            return e
        }, 0);
        if (X.getAngleDist(B(z, s), n) <= h) {
            if (e > c) {
                c = e;
                r = n;
                a = i
            }
        }
        if (e > l) {
            l = e
        }
    }
    Wi.push(a);
    Wi = Wi.flat();
    return r
}

function bg(o, t, e = Q) {
    let r = e.filter(e => se(z, e, "object") <= t);
    let a = B(z, o);
    let l = [o];
    if (r.length > 1) {
        let s = 0;
        for (let t = 0; t < 36; t++) {
            let n = B(z, o) + Z(t * 10);
            let i = [];
            let e = r.reduce((e, t) => {
                if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, o), n) <= h) {
                    i.push(t);
                    return e + 1
                }
                return e
            }, 0);
            if (e > s) {
                s = e;
                a = n;
                l = i
            }
        }
    }
    Wi.push(l);
    Wi = Wi.flat();
    return a
}

function vg(o, t, e = Q) {
    let r = e.filter(e => se(z, e, "object") <= t);
    let a = B(z, o);
    let l = [o];
    if (r.length > 1) {
        let s = 0;
        for (let t = 0; t < 36; t++) {
            let n = B(z, o) + Z(t * 10);
            let i = [];
            let e = r.reduce((e, t) => {
                if (X.getAngleDist(B(z, t), n) <= h && X.getAngleDist(B(z, o), n) <= h) {
                    i.push(t);
                    return e + 1
                }
                return e
            }, 0);
            if (e > s) {
                s = e;
                a = n;
                l = i
            }
        }
    }
    Wi.push(l);
    Wi = Wi.flat();
    return a
}

function kg(e, t) {
    const n = e.x2 - t.x;
    const i = e.y2 - t.y;
    return n * n + i * i
}

function Ag(e, t, n) {
    const i = t.reduce((e, t) => e + t.x, 0) / t.length;
    const s = t.reduce((e, t) => e + t.y, 0) / t.length;
    const o = P(s - e.y2, i - e.x2);
    if (!n) return o;
    if (n) return {
        x: i,
        y: s
    }
}

function Ig(e, t, n) {
    const i = t.reduce((e, t) => e + t.x2, 0) / t.length;
    const s = t.reduce((e, t) => e + t.y2, 0) / t.length;
    const o = P(s - e.y2, i - e.x2);
    if (!n) return o;
    if (n) return {
        x: i,
        y: s
    }
}
var Sg;

function Eg(e, t, n, i, s) {
    if (!(v > 5 && !Ci.length)) return;
    s.x = e;
    s.x2 = t;
    s.x1 = e;
    s.y = t;
    s.y1 = t;
    s.y2 = t;
    s.sid = 1e3;
    s.distance = 1e4
}

function Tg(n, e) {
    Q.forEach(e => {
        e.assumeBreak = false
    });
    for (let e = 0; e < J.length; e++) {
        if (!J[e].visible || z.sid === J[e].sid) continue;
        n = J[e];
        n.bDmg = n?.secondary === 10 && (n.sr === 1 || Bi && _y(n, Bi) === 1) ? {
            dmg: 10 * (En[n.secondaryVar] * 7.5 * 3.3),
            wep: 10
        } : n?.primary && (n?.pr === 1 || n.weaponIndex == n.primary && Bi && _y(n, Bi) === 1) ? {
            dmg: x.weapons[n?.primary]?.dmg * 3.3 * En[n.primaryVar],
            wep: n.primary
        } : 0;
        if (n.bDmg === 0) continue;
        for (let t = 0; t < Q.length; t++) {
            if (Q[t].type !== null || !Q[t]?.owner?.sid) continue;
            let e = se(n, Q[t], "object") <= x.weapons[n.bDmg.wep].range;
            e && (!Q[t].dmgpot || Q[t].dmgpot < n.bDmg.dmg) && (Q[t].dmgpot = n.bDmg.dmg);
            if (Q[t].dmgpot >= Q[t].health && e) {
                Q[t].assumeBreak = true;
                continue
            }
        }
    }
}

function Cg(t, n, i, s, o, e, r, a, l, c, d, u) {
    if (!vn.length) return;
    for (let e = vn.length; e--;) {
        if (vn[e].skinIndex == 11 || vn[e].tailIndex == 21 || vn[e].tailIndex == 16) {
            a = B(z, vn[e]);
            if (se(z, vn[e], "player") <= x.weapons[n].range && X.getAngleDist(a, t) <= h) {
                l = x.weapons[n].dmg * (C0.find(e => e.id === s)?.dmgMultO || 1) * (B0.find(e => e.id === o)?.dmgMultO || 1) * En[i];
                d = vn[e].skinIndex === 11 ? .45 : 0;
                u = vn[e].tailIndex === 21 ? .25 : vn[e].tailIndex === 16 ? .15 : 0;
                c = l * (d + u);
                if (n === 10 && z.sr === 1 || n != 10 && z.pr === 1) {
                    U1.showText(vn[e].x2, vn[e].y2, 20, .18, 300, c, "#fff")
                }
            }
        }
    }
}

function Bg(e, n, i, s, o, t, r, a, l) {
    for (let t = 0; t < Q.length; t++) {
        a = B(z, Q[t]);
        if (se(z, Q[t], "object") <= x.weapons[n].range && X.getAngleDist(a, e) <= h && Q[t].type === null) {
            l = x.weapons[n].dmg * (n === 10 ? 7.5 : 1) * (s === 40 ? 3.3 : 1) * En[i];
            let e = (n === 10 && z.sr === 1 || n != 10 && z.pr === 1) && Q[t].dmgpot + l >= Q[t].health;
            if (o && !e) Wi.push(Q[t]);
            if (e) {
                Q[t].assumeBreak = true;
                Q[t].manualBreak = true;
                Wi.push(Q[t])
            }
        }
    }
}

function Dg(n, e, i) {
    if ((m.q >= 1 || xn) && lo.checked) return true;
    if (!ho.checked) return false;
    if (!po.checked) return true;
    let t = bh.filter(e => e.visible);
    let s = Xt.concat(t, n.enemies);
    let o = Infinity;
    let r = null;
    s.forEach(t => {
        let e = t.realScale ? t.realScale : t.scale;
        if (X.lineInRect((t.x2 || t.x) - e, (t.y2 || t.y) - e, (t.x2 || t.x) + e, (t.y2 || t.y) + e, n.x2, n.y2, n.x2 + i * U(n.dir), n.y2 + i * V(n.dir))) {
            const e = S4(n, t);
            if (e < o) {
                o = e;
                r = t
            }
        }
    });
    return r.isPlayer && e.sid == r.sid
}
let Pg = [];

function Rg(e) {
    let n = bh.filter(e => e.visible);
    let t = [];
    for (let c = 0; c < Ln.length; c++) {
        let s = Infinity;
        let o = Infinity;
        let r = [];
        let a = Ln[c];
        let t = Hg(a.owner.sid);
        if (!t) {
            Ln.splice(c, 1);
            continue
        }
        let e = J.filter(e => e.visible && !(typeof t.team == "string" && e.team == t.team) && e.sid != t.sid);
        let l = Xt.filter(e => !e.ignoreCollision && e.elevation > a.avoid).concat(n, e);
        for (let i = 0; i < l.length; i++) {
            let e = l[i];
            let t = e.realScale ? e.realScale : e.scale;
            const n = S4(a, e);
            r[0] = X.lineInRect((e.x2 || e.x) - t, (e.y2 || e.y) - t, (e.x2 || e.x) + t, (e.y2 || e.y) + t, a.owner.x2, a.owner.y2, a.x + a.spd * ce * U(a.dir), a.y + a.spd * ce * V(a.dir));
            r[1] = X.lineInRect((e.x2 || e.x) - t, (e.y2 || e.y) - t, (e.x2 || e.x) + t, (e.y2 || e.y) + t, a.owner.x2, a.owner.y2, a.x + a.spd * u * U(a.dir), a.y + a.spd * u * V(a.dir));
            if (r[0]) {
                if (n < s) {
                    s = n;
                    Ln[c].hit = e;
                    if (e.realScale) {
                        Ln[c].building = e
                    } else Ln[c].building = null
                }
            }
            if (r[1]) {
                if (n < o) {
                    o = n;
                    Ln[c].futureHit = e
                }
            }
        }
        if (Ln[c].futureHit && !Ln[c].hit) {
            if (Ln[c].futureHit.isPlayer) {
                Hg(Ln[c].futureHit.sid).hitProjs += Ln[c].dmg;
                if (z.sid == Ln[c].futureHit.sid) b(`updated projectile dmgpot`, "", "red");
                if (oo.checked) b(`${Ln[c].futureHit.name}[${Ln[c].futureHit.sid}] getting hit next tick ${v+1} by ${Ln[c].info.src}[${Ln[c].owner.sid}]`, "", "red");
                if (Ln[c].owner.sid != z.sid && te(Ln[c].owner.sid) && Y && Ln[c].futureHit.sid == Y.sid) {
                    U1.showText(Hg(Ln[c].futureHit.sid).x2, Hg(Ln[c].futureHit.sid).y2, 20, .18, 300, "sync ally proj hit", "#fff");
                    if (ee == 5 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) {
                        un = false;
                        p = true;
                        I(7, 18);
                        g[0] = B(z, Y);
                        ct = true;
                        T.send("D", B(z, Y), "client");
                        T.send("G", ee, true);
                        y = ee;
                        setTimeout(() => {
                            p = false
                        }, 120)
                    }
                }
            }
        }
        Ln[c].x += a.spd * ce * U(a.dir);
        Ln[c].y += a.spd * ce * V(a.dir);
        Ln[c].traveled += a.spd * ce;
        if (Ln[c].hit && oo.checked) b(`${Ln[c].info.src}[${Ln[c].owner.sid}] has hit ${Ln[c].hit.name} [${Ln[c].hit.sid}] on ${v}`, "", "red")
    }
    Ln.forEach(t => {
        if (t.building) {
            setTimeout(() => {
                ft.forEach(e => {
                    e.attemptResolve(1, 1, v, t)
                })
            }, 10)
        }
    });
    Ln = Ln.filter(e => {
        if (e.hit || e.traveled >= e.max) return;
        if (!e.hit && e.traveled < e.max) return e
    })
}

function Mg() {}

function Ng() {}

function Og() {
    m.f >= 1 && c4(z.items[4]);
    m.v >= 1 && c4(z.items[2]);
    m.h >= 1 && c4(hy);
    m.m >= 1 && c4(fy);
    m.i >= 1 && c4(ay, bm());
    m.j >= 1 && dy != null && c4(dy)
}

function Lg(e, t = {}, n) {
    const i = {
        ...e,
        tick: v
    };
    t.skinIndex = e.skinIndex;
    t.skinTick = v;
    t.tailIndex = e.tailIndex;
    t.tailTick = v;
    if (e.skinIndex !== t.skinIndex) {
        console.log(n, "OLD", i.skinIndex, "NEW", t.skinIndex)
    }
    if (e.tailIndex !== t.tailIndex) {
        console.log(n, "OLD", i.tailIndex, "NEW", t.tailIndex)
    }
}
async function Fg(i) {
    Qe = 0;
    At = false;
    $y();
    Ot = false;
    tn = Date.now();
    v++;
    if (!(v % 9)) {
        Ye.push(He);
        if (Ye.length > 5) Ye.shift();
        ze = c(Ye.reduce((e, t) => e + t) / Ye.length);
        He = 0
    }
    ss.length = ns.length = is.length = vn.length = Sn.length = 0;
    y = null;
    for (var e = J.length; e--;) {
        J[e].visible ? J[e].vis2 = true : J[e].vis2 = false;
        (q = J[e]).forcePos = !q.visible;
        q.visible = false
    }
    let n = ce,
        s = i.length;
    for (let e = 0, t = Date.now(); e < s; e += 13) {
        if (!(q = Hg(i[e]))) continue;
        q.t1 = void 0 === q.t2 ? t : q.t2, Xe[q.sid] = q, q.t2 = t, q.x1 = q.x, q.y1 = q.y, q.preX = q.x2, q.preY = q.y2, q.pmovDir = q.movDir, q.x2 = i[e + 1], q.y2 = i[e + 2], q.d1 = void 0 === q.d2 ? i[e + 3] : q.d2, q.d2 = i[e + 3], q.delta = q.dt, q.dt = 0, q.buildIndex = i[e + 4], q.weaponIndex = i[e + 5], q.xVel = q.x2 - q.preX, q.xVel2 = q.x2 - q.x1, q.yVel = q.y2 - q.preY, q.yVel2 = q.x2 - q.x1, q.weaponVariant = i[e + 6], q.team = i[e + 7], q.isLeader = i[e + 8], q.skinIndex = i[e + 9], q.skinIndex != 45 && (q.shameTimer = 30, q.clowned = false), q.skinIndex == 45 && q.shameTimer == 30 && x5(q), q.tailIndex = i[e + 10], q.iconIndex = i[e + 11], q.zIndex = i[e + 12], q.visible = true, q.slowMult = oe(1, q.slowMult + 8e-4 * n), q.movSpd = D((q.preY - q.y2) ** 2 + (q.preX - q.x2) ** 2), q.movSpd2 = D((q.y1 - q.y2) ** 2 + (q.x1 - q.x2) ** 2), q.movDir = P(q.y2 - q.preY, q.x2 - q.preX), (q.movDir == 0 && q.movSpd == 0 || q.preX == q.x2 && q.preY == q.y2) && (q.movDir = undefined), q.weaponIndex >= 9 ? q.secondary = q.weaponIndex : q.primary = q.weaponIndex, q.weaponIndex == q.primary && (q.primaryVar = q.weaponVariant), q.weaponIndex == q.secondary && (q.secondaryVar = q.weaponVariant), q.lastpr = q.pr, q.lastsr = q.sr, q.lasttr = q.tr, q.tick = v, xy(q), q.weaponE = q.weaponIndex == q.secondary ? q.sr : q.pr, q.multpr = q.lastpr == q.pr && q.pr == 0 ? (q.multpr = .015, q.lastpr = .015) : q.pr, q.multsr = q.lastsr == q.sr && q.sr == 0 ? (q.multsr = .015, q.lastsr = .015) : q.sr, q.hitProjs = 0, q.hitSpike = false, q.np = l4(q), q.inWater = q.y2 >= K.mapScale / 2 - K.riverWidth / 2 && q.y2 <= K.mapScale / 2 + K.riverWidth / 2, q.buildIndex != -1 && b4(q.loadout, q.buildIndex), q.assumeAge = g4(q);
        if (te(q.sid)) {
            Sn.push(q)
        } else {
            vn.push(q)
        }
    }
    rm();
    yy();
    if (z.d1 == z.dir && z.d2 == z.dir && g[0] === null) ct = false;
    ie.length && (ie = ie.filter(e => e.HERE));
    z.shameLeak = false;
    Og();
    await wx(1);
    Xt = kh.filter(e => (e.distance = X5(e.x - z.x2, e.y - z.y2)) <= 2e3);
    Q = Xt.filter(e => e.distance <= 800);
    $e = $e.filter(e => C.checkItemLocation(e.x, e.y, e.scale, .6, e.id, false) && v - e.sid <= 3);
    os = [];
    qm = false;
    Ve.forEach(e => e());
    Ve = [];
    pn.forEach(e => e.id(...e.data));
    pn = [];
    ri?.setPos(z.x2, z.y2);
    si?.setSend(T.send.bind(T));
    si?.setSelf(z);
    si?.updatePlayers(J);
    _ = false;
    for (let e = J.length; e--;) {
        if (i = J[e]) {
            i.visible && (i.weaponR = i.weaponIndex == i.secondary ? i.sr : i.pr);
            if (isNaN(i.poison)) i.poison = 0;
            i.poison > 0 && (i.poison = oe(0, i.poison - i.delta / 1e3));
            if (!i?.Alive2 && !i?.Alive) {
                let n = "";
                i.deathDmgs.forEach((e, t) => {
                    n += `${le(e)}`;
                    if (t < i.deathDmgs.length - 1) {
                        n += ", "
                    }
                });
                n = n.replace(/,/g, ", ");
                b(`${i.name}[${i.sid}] has died ${n}`, "", "#ed5a55");
                i.deaths++
            }
            i.Alive2 = true;
            if (hs.checked) {
                if (i.dmgs >= 0 && i.dmgs < 100 && (!Ei.includes(i.sid) || G["do"] && ts?.bot?.sid === i.sid)) U1.showText(i.x2, i.y2, 50, .18, 700, H(S(i.dmgs)), i.customColor);
                if (i.dmgs >= 100) U1.showText(i.x2, i.y2, 60, .18, 1e3, Fs.checked ? "☠️" : H(i.dmgs), i.customColor)
            }
            i.dmgs = "XD";
            if (i.vis2 == false && i.visible && i.buildIndex == -1) {
                if (i.weaponIndex != i?.primary && i.primaryVar <= 2) {
                    i.primaryVar = 3
                } else if (i.weaponIndex != i?.secondary && i.secondaryVar <= 2 && (i.secondary == 10 || i.secondary == 14)) i.secondaryVar = 3
            }
            if (i.healArr.length) {
                i.healArr.forEach(e => l5(i.sid, e[0], e[1], e[2])), i.healArr = []
            }
            if (i.dmgsNow.length) i.deathDmgs.push(i.dmgsNow);
            i.dmgsNow = [];
            if (i.health === 100) i.deathDmgs = [];
            i.bleed = i.lastBull ? ((v - i.lastBull + (i.sid === z.sid ? et : 0)) % 9 + 9) % 9 : undefined
        }
    }
    if (Ts.checked && window.pingTime >= 95) {
        z.Qheal = false;
        if (en && z?.dmgpot?.add + z?.dmgpot?.turretGear >= 100 && z.shameCount < 7 && !z.shameLeak) {
            p4();
            b(`AutoQ`, "", "#5c0620", false, true);
            z.Qheal = true
        } else if ((!_n && (z.health < 85 || z.shameCount > 0 && z.health < 100) || _n && z.health < 100) && en && z.skinIndex != 45) {
            setTimeout(() => {
                if (Ts.checked && z.health < 100 && (z.health > z.dmgpot?.hp * (z.skinIndex == 6 && !z.hitting && !p ? .75 : 1) || z.shameCount >= 7)) u4()
            }, 120 - xt + 9)
        }
    }
    if (en && zi.length > 0) {
        Gi = zi.reduce((e, t) => e + S(t.value), 0);
        U1.showText(zi[0].x, zi[0].y, 50, .18, 500, Gi, "#8ecc51");
        zi = []
    }
    if (!z.dmgpots) z.dmgpots = [];
    if (vn.length) {
        for (let e = vn.length; e--;) vn[e].distance = D((vn[e].x2 - z.x2) ** 2 + (vn[e].y2 - z.y2) ** 2);
        vn = vn.sort((e, t) => e.distance - t.distance)
    }
    Y = vn[0];
    xi.player = J.find(e => e.sid === xi.ID && e.visible);
    if (xi.player) {
        xi.player.positions = a4(xi.player, 6)
    } else if (Y) {
        xi.player = Y;
        xi.player.positions = a4(xi.player, 6)
    }
    z.antiOneTickBowInsta = false;
    z.hitting = false;
    z.movSpd != 0 && (z.invisTime = 1e3);
    z.movSpd == 0 && (z.invisTime -= z.delta);
    k4();
    if (!ie.length || !G["do"]) ts = {
        players: [],
        bot: null,
        builds: [],
        realBuilds: []
    };
    Zy();
    h3();
    w3();
    Ei = ie.map(e => e?.sid);
    ri?.setBuildings(kh);
    by();
    ri?.setSpeed(55 * x4(z));
    L5(ly, 1, 0, W / ls.value);
    let t = p == true || z.hitting ? true : false;
    Xs.checked && fs.checked && Y && Hn && Ki.send(le({
        team: z,
        busy: t,
        msg: "status",
        move: Dn,
        server: location.href
    }));
    e3();
    Yt = Yt.filter(t => v - t.TICK <= 200 && !L3(z, t) && !ie.find(e => L3(e, t)));
    if (Gn) {
        Hn && fs.checked && Ki.send(le({
            msg: "ping",
            player: z,
            time: tn,
            server: location.href
        }));
        Gn = oe(Gn - z.delta, 0)
    }
    s4();
    P5(un);
    Rg();
    cn = cn.filter(e => v - e.destroyedAt <= 2);
    for (let e = vn.length; e--;) {
        if (i = vn[e]) {
            if (i.distance <= 275) ss.push(i);
            i.kbpot = w5(i, z, B(i, z));
            i.KB = w5(z, i, B(z, i));
            i.placePot = i.distance <= 300 ? O5(i, i.loadout.spike.id, B(i, z)) : {
                onPlayer: [],
                possible: [],
                placeRange: null
            };
            i.dmgpot = m5(i);
            i.inTrap = false;
            i.globalTrap = false;
            for (let e = Xt.length; e--;) {
                if (Xt[e].name === "pit trap" && S4(i, Xt[e]) <= 47 && te(Xt[e]?.owner?.sid)) {
                    i.inTrap = Xt[e];
                    break
                }
            }
            for (let e = Xt.length; e--;) {
                if (Xt[e].name === "pit trap" && S4(i, Xt[e]) <= 47 && (te(Xt[e]?.owner?.sid) || !i.team && Xt[e]?.owner?.sid != i.sid)) {
                    i.globalTrap = Xt[e];
                    break
                }
            }
            if (i.inTrap) i.inTrap.angToMe = B(z, i.inTrap);
            const o = B(z, i),
                  e = se(z, i);
            if (se(z, i.np.accel) < se(z, i) && se(i.np.accel, z) < 200 && Ay(B(i, z), i.movDir) < 1 && i.movSpd >= 114 && z.delta < 123 && v - Xe[i.sid].tick <= 1) {
                if (hy != null && x.list[hy]?.name == "blocker" && z.canBuild(x.list[hy])) {
                    for (let e = 0; e < 18; e++) {
                        u5(hy, o + Z(e * 20));
                        u5(hy, o - Z(e * 20))
                    }
                    console.log("anti boost blocker")
                } else if (z.canBuild(x.list[ly])) {
                    u5(ly, o + Z(90));
                    u5(ly, o - Z(90));
                    u5(ly, o + Z(180));
                    console.log("anti boost spike")
                } else if (uy != null && z.canBuild(x.list[uy])) {
                    for (let e = 0; e < 18; e++) {
                        u5(uy, o + Z(e * 20));
                        u5(uy, o - Z(e * 20))
                    }
                    console.log("anti boost trap")
                } else {
                    for (let e = 0; e < 18; e++) {
                        u5(ay, o + Z(e * 20));
                        u5(ay, o - Z(e * 20))
                    }
                    console.log("anti boost wall")
                }
            }
            if (i.movSpd <= 5 && z.movSpd <= 5 && (i.secondary == 9 || i.secondary == null || i.secondary == undefined) && (e >= 665 && e <= 705)) {
                z.antiOneTickBowInsta = true
            }
        }
    }
    z.dmgpot = p5();
    Wi = [];
    Tg();
    sy();
    Yx();
    z.primaryVar > 1 && ee == 5 && A == 10 ? Yx() : Qx();
    jx();
    ii = Sn.find(e => e.sid == vt);
    ng = ng.filter(e => v - e?.tick <= 4);
    Nt = false;
    for (let e = Q.length; e--;) {
        if (D((Q[e].x - z.x2) ** 2 + (Q[e].y - z.y2) ** 2) > 350 && (!(Q[e].dmg || Q[e].trap) || Q[e]?.type !== 1 && Q[e].y < 12e3)) continue;
        if (Q[e].dmg || Q[e]?.type === 1 && Q[e].y >= 12e3) {
            ns.push(Q[e])
        } else if (Q[e].trap) {
            is.push(Q[e])
        }
    }
    for (let e = Q.length; e--;) {
        if ((q = Q[e]).trap) {
            if (D((q.x - z.x2) ** 2 + (q.y - z.y2) ** 2) <= 47 && !te(q?.owner?.sid)) {
                Nt = q;
                break
            }
        }
    }
    z.spikeTrap = Q.filter(e => Nt && e?.group?.name === "spikes" && (Y && se(z, Y) <= 130 && Ay(B(Y, e), B(Y, z)) <= 3 || se(z, e) <= 35 + e.realScale + 2) && !te(e.owner.sid) && se(z, e, "object") <= (A === 10 ? 75 : x.weapons[ee]?.range)).sort((e, t) => se(z, e, "object") - se(z, t, "object"))[0];
    Js.checked ? Ly() : Oy();
    fn && Nx();
    if (Cs.checked && ee == 5 && A == 10 && Y && !(Y.inTrap && Wx(x.list[ly], B(z, Y.inTrap), Y.inTrap) && jt && ee == 5 && z.primaryVar > 0) && !Mt && _y(Y) == 1 && !p && Y.weaponR != 1 && !gt && (Y.weaponIndex <= 10 && Y.weaponIndex != 9 && Y)) {
        if (Vy(z, Y, x.weapons[A].range, true) && o4(z, Y) && (z.primaryVar >= 1 || z.secondaryVar >= 1 && z.primaryVar < 1 && (v - Y?.lastBull) % 9 == 8) && Y.skinIndex == 6 && z.pr == 1 && z.sr == 1 && z.tr == 1 && Y) {
            ct = true;
            b(`AI on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
            p = true;
            y = A;
            I(53);
            T.send("G", A, true);
            g[0] = B(z, Y);
            T.send("D", g[0], "client");
            setTimeout(() => {
                y = ee;
                T.send("G", ee, true);
                I(7);
                g[0] = B(z, Y);
                T.send("D", g[0], "client")
            }, ce);
            setTimeout(() => {
                p = false;
                ct = false;
                g[0] = null
            }, u)
        }
    }
    if (Y && !Mt && !p && A == 10 && ee == 5 && Bs.checked) {
        let e = x.weapons[A].range;
        if (Y && Vy(z, Y, e, true) && Y && o4(z, Y) && (v - Y?.lastBull) % 9 == 8 && (z.primaryVar == 3 || z.primaryVar >= 2 && z.secondaryVar == 3) && Y.skinIndex != 6 && z.pr === 1 && z.sr === 1) {
            p = true;
            b(`Bleed Insta on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
            y = A;
            ct = true;
            T.send("G", A, true);
            g[0] = B(z, Y);
            I(7, 18);
            T.send("D", g[0], "client");
            setTimeout(() => {
                y = ee;
                T.send("G", ee, true);
                I(7, 18);
                g[0] = B(z, Y);
                T.send("D", g[0], "client")
            }, ce);
            setTimeout(() => {
                p = false;
                ct = false;
                y = null
            }, u)
        }
    }
    Hn && Ki.send(le({
        fixer: z,
        server: location.href,
        time: Date.now()
    }));
    Sg = no.checked ? Xt.filter(e => e.name == "turret" && se(z, e) <= 700 + z.movSpd && e?.time == 2200 && !te(e?.owner?.sid)) : [];
    z.doAssassin = io.checked && !Sg.length && Nn.includes(56) && z.invisTime <= 0 && "chatbox" !== document.activeElement.id.toLowerCase() && z.health === 100 && (Dn === undefined || Dn === null) && z.movSpd == 0 ? true : false;
    g[0] = null;
    Om();
    z.selectedWeapon = null;
    if (Nt && !p && Ds.checked) {
        let e;
        if (!(z.spikeTrap && Vs.checked)) {
            e = B(z, Nt);
            z.selectedWeapon = A == 10 && Nt.health - x.weapons[ee].dmg * K.weaponVariants[z.primaryVar].val <= 0 && (ee == 7 ? true : z.pr === 1)
        } else {
            e = B(z, z.spikeTrap);
            z.selectedWeapon = A == 10 && z.spikeTrap.health - x.weapons[ee].dmg * K.weaponVariants[z.primaryVar].val <= 0 && (ee == 7 ? true : z.pr === 1)
        }
        if (z.selectedWeapon ? z.pr === 1 : z.pr == 1 && A != 10 || z.sr == 1 && A == 10) {
            g[0] = e
        }
        Bg(e, z.selectedWeapon ? ee : A === 10 ? A : ee, z.selectedWeapon ? z.primaryVar : A === 10 ? z.secondaryVar : z.primaryVar, z?.dmgpot?.forceSoldier ? 6 : z.selectedWeapon ? 0 : Nn.includes(40) ? 40 : 0, 1)
    }
    if (Nt && !p && Ds.checked) {
        y = z.selectedWeapon ? ee : A != 10 ? ee : 10;
        if (z.selectedWeapon ? z.pr === 1 : z.sr == 1 && A == 10 || z.pr == 1 && A != 10) {
            I(Sg.length ? 22 : z?.dmgpot?.forceSoldier ? 6 : z.selectedWeapon ? 6 : 40, 11);
            z.hitting = true
        }
    }
    if (!p && !gt) {
        if (!Nt) {
            if (m.lc) {
                y = ee;
                if (z.weaponIndex != ee || z.buildIndex != null) T.send("G", ee, true);
                if (z.pr == 1) {
                    if (z.tailIndex === 11) {
                        Rp(On.includes(18) ? 19 : 0, 1)
                    } else {
                        I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : 7, 18)
                    }
                    z.hitting = true
                }
                Bg(bm(), y, z.primaryVar, 0, 1)
            }
            if (m.rc) {
                !m.ShiftLeft && A == 10 ? y = A : y = ee;
                if (z.sr == 1 && A == 10 && z.weaponIndex == A && !m.ShiftLeft || z.pr == 1 && (z.weaponIndex == ee || m.ShiftLeft)) {
                    I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : et < 2 ? 40 : 7, 11, 1);
                    z.hitting = true
                }
                Bg(bm(), y, y === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) ? 40 : 0, 1)
            }
            if (m.mc) {
                for (let n = Q.filter(e => e.health && se(z, e, "object") <= (!m.ShiftLeft && A === 10 ? 75 : x.weapons[ee].range)).sort((e, t) => Ne(z.x2 - e.x, z.y2 - e.y) - Ne(z.x2 - t.x, z.y2 - e.y)), i = n.length; i--;) {
                    let e = n[i];
                    let t = bg(e, A === 10 ? 75 : x.weapons[ee].range, n);
                    !m.ShiftLeft && A == 10 ? y = A : y = ee;
                    if (z.sr == 1 && A == 10 && z.weaponIndex == A && !m.ShiftLeft || z.pr == 1 && (z.weaponIndex == ee || m.ShiftLeft)) {
                        I(z.dmgpot?.soldier ? 6 : Sg.length ? 22 : et < 2 ? 40 : 7, 11, 1);
                        z.hitting = true
                    }
                    g[0] = t;
                    Bg(t, y, y === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) ? 40 : 0, 1);
                    break
                }
            }
        }
        Vg()
    }
    if (z.lastBull && Nn.includes(7) && !z.hitSpike && z.dmgpot?.hp < 80 && z.shameCount > 0 && z.poison <= 0 && !z.dmgpot?.soldier && z.bleed === 0 && en && !Sg.length && $t != 7) {
        if (z.lastDamage == 0 && z.skinIndex != 45) {
            z.shameLeak = true;
            et++;
            I(7, 11)
        }
    }
    if (z.hitSpike && Nt || !Nt && z.hitSpike && z?.dmgpot?.shouldHeal) {
        if (z.health <= z.hitSpike.dmg || z.hitSpike.dmg + z?.dmgpot?.primary + z?.dmgpot?.turretGear >= z.health) p4()
    } else if (Us.checked) {
        if (z.alive && z.health <= z.dmgpot?.hp * (z.skinIndex == 6 && !z.hitting && !p && !Sg.length && !gt && !z.shameLeak ? .75 : 1) && z.skinIndex != 45 && z.shameCount < 7) {
            u4()
        } else if ((!_n && (z.health < 85 || z.shameCount > 0 && z.health < 100) || _n && Date.now() - z.lastDamage >= 100 && z.health < 100 || _n && z.health <= 69) && en && z.skinIndex != 45) {
            if (z.health <= 69) {
                setTimeout(() => {
                    u4()
                }, 120 - xt + 9)
            } else {
                u4()
            }
        }
    }
    Ze = [];
    e4();
    Je = Q.concat($e);
    if (!p && !gt) {
        if (g[0]) ct = true;
        if (z.dir != g[0] && g[0] !== null) T.send("D", g[0]);
        if (y && (y == ee || y == A) && (z.weaponIndex != y || z.buildIndex != -1)) T.send("G", y, true);
        if (g[0] === null && z.dir != bm()) T.send("D", bm())
    }
    if (z.dmgpots.length >= 4) z.dmgpots.pop();
    if (z.dmgpot) z.dmgpots.unshift({
        ping: window.pingTime,
        tick: v,
        dmgpot: z.dmgpot,
        health: z.health,
        packets: He,
        currentHat: z.skinIndex,
        nextHat: $t,
        shameCount: z.shameCount,
        spikeTrap: z.hitSpike && Nt
    });
    k5[1] = false;
    A5();
    t3();
    if (Ct || p && !At && !hn || m.rc || m.lc || m.mc || z.hitting || gt || Ot) {
        if (St % 2 == 0 && en) {
            T.send("K", 1)
        }
    } else {
        if (St % 2 == 1) {
            T.send("K", 1)
        }
    }
    d5();
    Iy()
}

function _g(e, t, n, i, s = 6) {
    let o = Ei.includes(e.sid) ? l4(e, e.moveDirection, e, 1).real : e.np.real;
    let r = {
        norm: {
            dir: null,
            ticks: null,
            dist: null
        },
        marks: {
            dir: null,
            ticks: null,
            dist: null
        }
    };
    let a = Array.isArray(t) ? t : a4(i, 6);
    for (let t = 0; t < a.length; t++) {
        let e = {
            dir: B(o, a[t].real),
            dist: se(o, a[t].real) - 105,
            position: a[t]
        };
        if (l(e.dist, n * 111) === t && !r.norm.dir) {
            r.norm.dir = e.dir;
            r.norm.ticks = t;
            r.norm.dist = e.dist + 105;
            r.position = e.position
        }
        if (l(e.dist, n * 111 * 1.3) === t && !r.marks.dir) {
            r.marks.dir = e.dir;
            r.marks.ticks = t;
            r.marks.dist = e.dist + 105;
            r.position = e.position
        }
    }
    if (r.norm.dir || r.marks.dir) return r;
    return null;

    function l(e, t) {
        if (t === 0) {
            throw new Error("Cannot divide by zero.")
        }
        const n = Math.floor(e / t);
        const i = e % t;
        const s = i > 0 ? 1 : 0;
        return n + s
    }
}

function Vg(t, e = Dn) {
    if (Ot && !z.dmgpot.soldier && !t) return;
    let n = Y && se(z, Y) <= li && !z.inWater && js.checked ? true : false;
    let i = Y && se(z, Y) <= li && !Ws.checked ? 21 : 11;
    if (!js.checked) {
        if (z.dmgpot?.add >= 100 || z.dmgpot?.secondary >= 100 || z.dmgpot?.soldier || e === undefined) {
            if (t) return {
                skinIndex: 6,
                tailIndex: Ws.checked ? 21 : 21
            };
            n = true
        }
    }
    if (Hs.checked || t) {
        if (!z.antiOneTickBowInsta && z.doAssassin) {
            I(56, 0);
            if (t) return {
                skinIndex: 56,
                tailIndex: 0
            }
        } else {
            if (!z.antiOneTickBowInsta && !z.hitting && S0.style.display == "none" && !At) {
                if (!Sg.length && !(et >= 2 && !z.dmgpot.soldier) && (e === undefined || n || Nt && Ds.checked) && !z.doAssassin || !n && i === 19) {
                    let e = 6;
                    if (!n && i === 19) e = b5(1).skinIndex;
                    if (t) return {
                        skinIndex: e,
                        tailIndex: i
                    };
                    I(e, i)
                } else if (!wn && !Sg.length && !(et >= 2 && !z.dmgpot.soldier) && !z.doAssassin) {
                    if (t) return b5(1);
                    b5()
                } else if (et >= 2 && !z.antiOneTickBowInsta && !wn) {
                    if (t) return {
                        skinIndex: 7,
                        tailIndex: z.tailIndex
                    };
                    I(7)
                } else if (!wn) {
                    if (t) return {
                        skinIndex: 22,
                        tailIndex: 11
                    };
                    I(22, 11)
                }
            }
            if (t) return b5(1)
        }
    }
}

function Ug(e) {
    if (Fi) {
        I(Fi)
    }
}

function jg(t) {
    for (let e = 0; e < J.length; ++e)
        if (J[e].id == t) return J[e];
    return null
}

function Hg(t) {
    for (let e = 0; e < J.length; ++e)
        if (J[e].sid == t) return J[e];
    return null
}

function Wg(t) {
    for (let e = 0; e < bh.length; ++e)
        if (bh[e].sid == t) return bh[e];
    return null
}

function Qg(t) {
    for (let e = kh.length; e--;) {
        if (kh[e].sid === t) {
            return kh[e]
        }
    }
    return null
}

function Yg(t) {
    for (let e = 0; e < es.players.length; ++e) {
        if (es.players[e].sid == t) {
            return es.players[e]
        }
    }
    return null
}

function zg(t) {
    for (let e = 0; e < es.builds.length; ++e) {
        if (es.builds[e].sid == t) {
            return es.builds[e]
        }
    }
    return null
}
let Gg = -1;
const Kg = document.getElementById("fakePing");
Kg.addEventListener("change", function() {
    const e = document.getElementById("sliderContainer");
    if (this.checked) {
        e.style.display = "block"
    } else {
        e.style.display = "none"
    }
});
const Xg = document.getElementById("pingSlider");
const Jg = document.getElementById("pingSliderValue");
Xg.addEventListener("input", function() {
    Jg.innerText = this.value
});
const qg = false;

function $g() {
    const e = Date.now() - Gg;
    window.pingTime = e;
    bn = e;
    if (!qg || !qg.checked) {
        if (!Kg.checked) {
            wd = e
        } else {
            const t = parseInt(Xg.value);
            wd = f(Math.random() * t) + parseInt(Xg.value) + 90
        }
        Zh.innerText = e + (Kg.checked ? wd : "") + " ms";
        yt.push(e);
        if (yt.length >= 4) {
            yt.shift()
        }
        xt = yt.reduce((e, t) => e + t, 0) / yt.length
    } else {
        Zh.innerText = "Hidden"
    }
}
let Zg;

function ey() {
    Zg && clearTimeout(Zg), nh() && (Gg = Date.now(), T.send("0")), Zg = setTimeout(ey, 400)
}

function ty(e) {
    if (e < 0) return;
    const t = f(e / 60);
    let n = e % 60;
    n = ("0" + n).slice(-2), e0.innerText = "Server restarting in " + t + ":" + n, e0.hidden = !1
}
window.requestAFrame = function() {
    return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(e) {
        window.setTimeout(e, 1e3 / 60)
    }
}();

function ny() {
    gh = Date.now(), mh = gh - xh, xh = gh, l2(), requestAFrame(ny)
}
X2();
ny();

function iy(e) {
    window.open(e, "_blank")
}
window.openLink = iy;
window.aJoinReq = up;
window.follmoo = uh;
window.kickFromClan = fp;
window.sendJoin = hp;
window.leaveAlliance = mp;
window.createAlliance = pp;
window.storeBuy = Mp;
window.storeEquip = Rp;
window.showItemInfo = q0;
window.selectSkinColor = jp;
window.changeStoreIndex = Tp;
window.config = K;
async function sy(e) {
    if (!Y || ee != 5 || z.tr != 1 || z.pr != 1 || p || Mt || !to.checked) return;
    if (Y && Vy(z, Y, x.weapons[ee].range, true) && o4(z, Y) && !Y?.inTrap) {
        let e = [v3(Y, B(z.np.real, Y.np.real), se(Y, Y.KB.fpriTKB), true, 1), v3(Y, B(z.np.real, Y.np.real), se(Y, Y.KB.fsecKB), true, 1)];
        if (!e[0]) return;
        let t = {
            newPos: {
                ...Y
            }
        };
        let n = Ne(Y.np.real.x - e[0].x, Y.np.real.y - e[0].y);
        let i = P3(Y.np.real.x, Y.np.real.y, B(z, Y), j(n, 170));
        t.newPos.NEWX = i.x;
        t.newPos.NEWY = i.y;
        t.originDir = B(z, Y);
        t.newPos.dstSpd = n;
        t.newPos["static"] = true;
        t.newPos.expire = 3;
        m3(t.newPos);
        b(`KnockBack Insta on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
        hn = true;
        p = true;
        I(53, 11);
        g[0] = B(z, Y);
        ct = true;
        T.send("G", A, true);
        y = A;
        await A4();
        if (Y) {
            p = true;
            hn = false;
            y = ee;
            T.send("G", ee, true);
            g[0] = B(z, Y);
            T.send("D", B(z, Y), "client");
            I(7, 18)
        } else {
            p = false;
            return
        }
        await A4();
        p = false
    }
}

function Z(e) {
    return e * (W / 180)
}

function oy(e) {
    return e * 180 / W
}
var ee, A, ry, ay, ly, cy, dy, uy, fy, hy, py = [];

function my(e) {
    return e.offsetParent !== null
}

function gy(e) {
    return document.getElementById(e)
}

function te(t) {
    if (t == z.sid) return true;
    for (let e = 0; e < py.length; e += 2) {
        if (t == py[e]) return true
    }
    return false
}

function yy() {
    ee = null;
    ry = null;
    A = null;
    dy = null;
    ay = null;
    ly = null;
    cy = null;
    fy = null;
    hy = null;
    for (let e = 0; e < 9; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            ee = e
        }
    }
    for (let e = 9; e < 16; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            A = e
        }
    }
    for (let e = 16; e < 19; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            ry = e - 16
        }
    }
    for (let e = 19; e < 22; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            ay = e - 16
        }
    }
    for (let e = 22; e < 26; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            ly = e - 16
        }
    }
    for (let e = 26; e < 29; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            cy = e - 16
        }
    }
    for (let e = 29; e < 31; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            dy = e - 16
        }
    }
    for (let e = 31; e < 33; e++) {
        if (my(document.getElementById("actionBarItem" + e))) {
            uy = e - 16
        }
    }
    if (my(document.getElementById("actionBarItem" + 36))) {
        fy = 36 - 16
    }
    for (let e = 33; e < 39; e++) {
        if (my(document.getElementById("actionBarItem" + e)) && e != 36) {
            hy = e - 16
        }
    }

    function e(e) {
        return null !== e.offsetParent
    }!A && (qt = ee)
}

function xy(t, e) {
    if (Ei.includes(t.sid) && !e) return;
    if (e) {
        t = Hg(t.sid)
    }
    if (e && t === null) return;
    if (t.buildIndex == -1) {
        if (t.weaponIndex <= 8) {
            let {
                speed: e
            } = x.weapons[t.primary];
            t.pr = j(1, t.pr + (t.delta > 190 ? t.delta : ce) / (e * t.samRP))
        } else if (t.weaponIndex > 8) {
            let {
                speed: e
            } = x.weapons[t.secondary];
            t.sr = j(1, t.sr + (t.delta > 190 ? t.delta : ce) / (e * t.samRS))
        }
    }
    t.tr = j(1, t.tr + t.delta / 2400);
    rn[t.sid] = t.pr;
    an[t.sid] = t.sr;
    ln[t.sid] = t.tr;
    if (t.sid != z.sid) {
        if (!t.hasSoldier && t.skinIndex == 6) {
            t.hasSoldier = true
        }
        if (!t.hasTank && t.skinIndex == 40) {
            t.hasTank = true
        }
    }
}

function wy(i) {
    for (let n = 0; n < ie.length; n++) {
        for (let e = 0; e < ie[n].players.length; e++) {
            let t = ie[n].players[e];
            if ((i.name && !i.sid && t.name == i.name || i.sid && i.sid == t.sid) && t.visible) {
                if (!i.spotted) {
                    let e = `${t.name}[${t.sid}]`;
                    if (!L3(z, t)) b(`bot ID: [${ie[n].sid}] spotted ${e}`, "", i.color, false, true)
                }
                i.spotted = true;
                return t
            }
        }
    }
    return false
}

function by(t) {
    for (let e = 0; e < J.length; e++) {
        if (!J[e].visible && J[e].sid != z.sid && !Ei.includes(J[e].sid)) {
            t = J[e];
            t.pr != undefined && t.pr !== 1 && (t.pr = j(1, t.pr + ce / (x.weapons[t?.primary]?.speed * t.samRP)));
            t.sr != undefined && t.sr !== 1 && (t.sr = j(1, t.sr + ce / (x.weapons[t?.secondary]?.speed * t.samRS)));
            t.tr != undefined && t.tr !== 1 && (t.tr = j(1, t.tr + ce / 2500));
            rn[t.sid] = t.pr;
            an[t.sid] = t.sr;
            ln[t.sid] = t.tr
        }
    }
}

function vy(e, t) {
    return se(e, t)
}

function ky(e, t) {
    return S(e.x - t.x) + S(e.y - t.y)
}

function Ay(e, t) {
    let n = S(e - t);
    n = n % ae;
    if (n > W) {
        n = ae - n
    }
    return n
}

function Iy() {
    if (Nn.length + On.length >= 66 || !en || !_n || S0.style.display != "none" || !Qs.checked) return;
    if (Fn.length) {
        if (!Array.isArray(Fn[0]) && z.points >= C0.find(e => e.id == Fn[0]).price) Mp(Fn[0], 0);
        if (Array.isArray(Fn[0]) && z.points >= B0.find(e => e.id == Fn[0][0]).price) Mp(Fn[0][0], 1)
    }
    if (Fn.length == 0 && Nn.length != C0.length - 1) {
        let e = C0.find(e => e.id != 45 && !Nn.includes(e.id) && z.points >= e.price);
        if (e) Mp(e.id, 0);
        let t = B0.find(e => !On.includes(e.id) && z.points >= e.price);
        if (t) Mp(t.id, 1)
    }
}

function Sy(e, t) {
    const n = e * (W / 180);
    const i = t * (W / 180);
    const s = (n + i) / 2;
    let o = s % ae;
    if (o < 0) {
        o += ae
    }
    o = o * (180 / W);
    return o
}
var Ey = false;
async function Ty(e, t, n, i, s, o, r = Math.abs, a = Math.round) {
    if (!Y || Ey) return;
    let l = B(z, Y),
        c = l4(z, l),
        d = B(c.accel, Y),
        u = c.accel.x - Y.x2,
        f = c.accel.y - Y.y2,
        h = se(c.accel, Y);
    T.send("a", l, "client");
    if (r(u) <= 70 || r(f) <= 70) {
        const m = u * u + f * f;
        var p = Math.sqrt(m) - 70;
        if (p <= 0) {
            Ey = true;
            p = p * -.5;
            n = Y.x2 - p * Math.cos(d);
            i = Y.y2 - p * Math.sin(d);
            s = n + p * Math.cos(d);
            o = i + p * Math.sin(d);
            console.log({
                x: n,
                y: i
            }, {
                x: s,
                y: o
            }, "did", v);
            console.log(a(Y.movSpd), a(z.movSpd), p)
        }
    }
    await A4();
    console.log(se({
        x: n,
        y: i
    }, Y));
    Ey = false;
    console.log("_____________________________")
}

function I(e, t) {
    if (!isNaN(e)) {
        if (!Nn.includes(e)) {
            if ($t != 0) Rp(0, 0), lt = 0, nn = 0
        } else {
            if ($t != e) Rp(e, 0), lt = e, nn = e
        }
    }
    if (!isNaN(t)) {
        if (!On.includes(t)) {
            if (Zt != 0) Rp(0, 1), mt = 0, sn = 0
        } else {
            if (Zt != t) Rp(t, 1), mt = t, sn = t
        }
    }
}

function Cy(e, t) {
    if (e.x2 && t.x2) return D(re(t.y2 - e.y2, 2) + re(t.x2 - e.x2, 2));
    if (!e.x2 == undefined && !t.x2) return D(re(t.y - e.y, 2) + re(t.x - e.x, 2));
    if (e.x2 && !t.x2) return D(re(t.y - e.y2, 2) + re(t.x - e.x2, 2));
    if (!e.x2 && t.x2) return D(re(t.y2 - e.y, 2) + re(t.x2 - e.x, 2))
}

function By(i, s) {
    for (let e = 0, t, n; e < i.length; e++) {
        for (n = s.length, t = i[e]; n--;) {
            if (t === s[n]) {
                i.splice(e, 1);
                s.splice(n, 1);
                e--;
                break
            }
        }
    }
}

function B(e, t) {
    return P((t.y2 || t.y) - (e.y2 || e.y), (t.x2 || t.x) - (e.x2 || e.x))
}

function Dy(e, t) {
    return d((e.x2 || e.x) - (t.x2 || t.x), (e.y2 || e.y) - (t.y2 || t.y))
}

function Py(e, t, n) {
    return (e.x * t + e.y * n) / (e.x * n - e.y * t)
}
var Ry, My = 65,
    ne = {
        x: null,
        y: null,
        objs: [],
        dev: null,
        dir: null
    },
    Ny = {
        x: null,
        y: null
    };

function Oy(r, e, t, n, i, s, o) {
    if (!Y?.inTrap || !Y || !In || Y && z.skinIndex == 45 && se(z, Y) > 90) {
        jt = false;
        Ht = false;
        jn = "not";
        ne = "not";
        Ny = "not";
        ni == "autopush" && T.send("a", undefined);
        return false
    }
    let a;
    let l;
    jt = false;
    Ht = false;
    r = B(z, Y);
    ne = {
        x: U(r),
        y: V(r),
        objs: [],
        dev: null,
        dir: null
    };
    let c = Q.sort((e, t) => se(e, Y) - se(t, Y));
    for (let e = 0; e < c.length; e++) {
        i = c[e];
        if (Y.inTrap.sid === i.sid) continue;
        if (se(Y.inTrap, i) <= 50 + (i.type == 1 ? i.scale * .55 : i.scale) + 26 && (te(i?.owner?.sid) && i?.group?.name == "spikes" || !Y.team && i?.group?.name == "spikes" && i?.owner?.sid != Y.sid || i?.type === 1 && i.y >= 12e3) || ne.objs.length === 1 && se(i, Y.inTrap) <= 50 + i.scale + 22.5 && se(i, ne.objs[0]) <= ne.objs[0].scale + i.scale + 42.5 && !i.ignoreCollision) {
            let e = P(i.y - Y.y2, i.x - Y.x2);
            let t = 170 - Dy(i, Y);
            if (ne.objs[0] && Ay(B(i, Y.inTrap), B(ne.objs[0], Y.inTrap)) <= 1.9 && se(i, ne.objs[0]) <= i.scale + ne.objs[0].scale + 67.5 || !ne.objs.length) {
                ne.x += t * U(e);
                ne.y += t * V(e);
                if (ne.objs[0]) console.log(Ay(B(i, Y.inTrap), B(ne.objs[0], Y.inTrap)), Math.round(se(i, ne.objs[0])) - (ne.objs[0].scale + i.scale));
                ne.objs.push(i)
            }
            if (Py(ne, Y.inTrap.x - Y.x2, Y.inTrap.y - Y.y2) > 0) {
                ne.x += (Y.inTrap.x - Y.x2) * 2;
                ne.y += (Y.inTrap.y - Y.y2) * 2
            }
        }
    }
    if (Ne(ne.x, ne.y) > 5) {
        let e = Dy(Y, z);
        let t = Ay(r, P(ne.y, ne.x));
        let i = ne.objs[0];
        let n = se(Y, i) <= i.scale + 38.75;
        let s = 3600 + re(e, 2) - (28.5 + (n ? 71.5 : 0)) * e * U(t);
        let o = Math.acos((re(e, 2) + s - 3600) / (2 * e * D(s)));
        if (o) {
            l = r - Math.sign((Y.x2 - z.x2) * ne.y - (Y.y2 - z.y2) * ne.x) * o;
            let e = se(z, Y) + 30;
            Ny = {
                x: z.x2 + e * U(l),
                y: z.y2 + e * V(l)
            };
            let t = E3(z, l, l4(z, l, z, 1));
            let n = Ay(B(Y, i), B(z, Y)) <= 2;
            if ((!Y.hitSpike || se(z, Ny) > 100 && Y.hitSpike) && Ys.checked || !Ys.checked && n && !t) {
                T.send("a", l, "autopush");
                ne.dev = o;
                ne.dir = l
            } else {
                T.send("a", null, "autopush")
            }
            jt = true;
            Ht = true
        }
    }
}

function Ly(t, n, e) {
    if (!Y?.inTrap || !Y || !In) {
        jt = false;
        Ht = false;
        jn = "not";
        Ny = "not";
        ni == "autopush" && T.send("a", undefined);
        ne = "not";
        return false
    }
    if (!t) t = [];
    let i = Q.filter(e => !t.includes(e.sid) && se(Y.inTrap, e) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 26 && (te(e?.owner?.sid) && e?.group?.name == "spikes" || !Y.team && e?.group?.name == "spikes" && e?.owner?.sid != Y.sid || e?.type == 1 && e.y >= 12e3)).sort((e, t) => se(e, Y) - se(t, Y));
    if (!i.length || se(z, Y) >= 400) {
        Ht = false;
        jt = false;
        jn = "not";
        ne = "not";
        Ny = "not";
        ni == "autopush" && T.send("a", undefined);
        return false
    }
    Y = Hg(Y.sid);
    const s = Y.x2 - i[0].x;
    const o = Y.y2 - i[0].y;
    const r = Y.x2 - z.x2;
    const a = Y.y2 - z.y2;
    const l = Y.x2 - Y.inTrap.x;
    const c = Y.y2 - Y.inTrap.y;
    const d = i[0].x - Y.inTrap.x;
    const u = i[0].y - Y.inTrap.y;
    const f = D(s * s + o * o);
    Qn = {
        x: s / f,
        y: o / f
    };
    const h = D(r * r + a * a);
    Wn = {
        x: r / h,
        y: a / h
    };
    const p = D(l * l + c * c);
    Yn = {
        x: l / p,
        y: c / p
    };
    const m = D(d * d + u * u);
    let g = {
        x: d / m,
        y: u / m
    };
    const y = [P(Qn.y, Qn.x), P(Yn.y, Yn.x), P(Wn.y, Wn.x)];
    const x = [(y[0] + y[1]) / 2, (y[0] + y[2]) / 2];
    const w = [{
        x: U(x[0]),
        y: V(x[0])
    }, {
        x: U(x[1]),
        y: V(x[2])
    }];
    Jn = Qn.x * Wn.x + Qn.y * Wn.y;
    Xn = i[0]?.type == 1 ? (i[0].scale * .55, i[0].realScale = i[0].scale * .55) : i[0].scale;
    qn = i[0];
    jn = {
        x: Y.x2 + Qn.x * (Jn + Xn),
        y: Y.y2 + Qn.y * (Jn + Xn)
    };
    const b = B(z, jn);
    const v = se(z, jn);
    const k = Ay(b, B(z, Y));
    e = v <= 100 && k <= 2;
    let A = C.checkCollision2(Y, i[0]);
    let I = {
        x: Y.x2,
        y: Y.y2,
        scale: 35,
        "do": true
    };
    let S = e ? Q : Q.concat(I);
    let E = Date.now();
    Y3 = [];
    if (A) {
        Fy()
    }
    if (Y.hitSpike && !zs.checked) {
        jt = false;
        Ht = false;
        jn = "not";
        Ny = "not";
        ni == "autopush" && T.send("a", undefined);
        ne = "not";
        return
    }
    if (e) {
        Oy()
    }
    if (!e) {
        U3({
            player: z,
            target: {
                x: Y.x2 + Qn.x * (Jn + Xn + 35),
                y: Y.y2 + Qn.y * (Jn + Xn + 35)
            },
            buildings: S,
            clan: py
        }).then(e => {
            let t = e;
            Y = Hg(Y.sid);
            Ht = false;
            jt = true;
            if (!t) {
                Ht = false;
                jt = false;
                jn = "not";
                ne = "not";
                Ny = "not";
                return false
            }
            n = Ax(E, 360, true);
            if (!n) {
                Ht = false;
                jt = false;
                jn = "not";
                ne = "not";
                Ny = "not";
                Y3 = [];
                return
            }
        })["catch"](e => {
            jt = false;
            Ht = false;
            jn = "not";
            return false
        })
    }
}
async function Fy() {
    if (Y && (Y.weaponR == 1 || Y.skinIndex != 6) && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && en && (Y.weaponIndex == 11 && X.getAngleDist(B(z, Y) + W, Y.dir) > W / 3 || Y.weaponIndex != 11)) {
        un = false;
        p = true;
        if (z.skinIndex != 11) {
            I(7, 18)
        } else Rp(19, 1);
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        T.send("G", ee, true);
        y = ee;
        await A4();
        I(53);
        await A4();
        p = false
    }
}

function _y(e, t) {
    if (!e) return;
    !t && (t = 111);
    return j(1, e.weaponR + t / x.weapons[e.weaponIndex]?.speed)
}

function Vy(e, t, n, i) {
    return se(e, t, "player") <= n || i && se(e?.np?.real, t?.np?.real, "player") <= n
}

function Uy(e, t, n, i, s, o) {
    s = se(e, t) - 35;
    o = s / (i * 111);
    return o
}

function jy(e, s, t, n) {
    const i = e.map(e => {
        let t = P3(e.x2, e.y2, B(e, s), 35);
        const n = Uy(t, s, 5, 3.6);
        const i = Uy(t, s, 1, 1.54);
        return {
            player: e,
            musketTicks: n,
            turretBallTicks: i
        }
    });
    i.sort((e, t) => e.musketTicks - t.musketTicks);
    const o = oe(...i.map(e => e.turretBallTicks));
    i.forEach(e => {
        e.waitTicksForTurretBall = o - e.turretBallTicks
    });
    const r = i.map(e => e.player.name);
    i.forEach(e => {
        e.waitTimeForMusket = e.musketTicks * 111;
        e.waitTimeForTurretBall = e.waitTicksForTurretBall * 111
    });
    return {
        pP: i,
        syncOrder: r
    }
}

function Hy(e) {
    const t = f(Math.random() * 360);
    const n = f(Math.random() * 81) + 20;
    const i = f(Math.random() * 61) + 20;
    const s = `hsl(${t}, ${n}%, ${i}%)`;
    if (!e) return s;
    if (e.some(({
        color: e
    }) => e && Wy(e, s))) {
        return Hy(e)
    }
    return s
}

function Wy(e, t) {
    const [n, i, s] = Qy(e);
    const [o, r, a] = Qy(t);
    const l = S(n - o);
    const c = S(i - r);
    const d = S(s - a);
    return l <= 60 && c <= 20 && d <= 20
}

function Qy(e) {
    const t = e.indexOf(",") > -1 ? "," : " ";
    const [n, i, s] = e.substr(e.indexOf("(") + 1).split(")")[0].split(t).map(Number);
    const o = n / 255;
    const r = i / 255;
    const a = s / 255;
    const l = Math.max(o, r, a);
    const c = Math.min(o, r, a);
    let d, u, f;
    if (l === c) {
        d = 0
    } else if (l === o) {
        d = 60 * ((r - a) / (l - c)) + 0
    } else if (l === r) {
        d = 60 * ((a - o) / (l - c)) + 120
    } else {
        d = 60 * ((o - r) / (l - c)) + 240
    }
    f = (l + c) / 2;
    if (l === c) {
        u = 0
    } else if (f <= .5) {
        u = (l - c) / (l + c)
    } else {
        u = (l - c) / (2 - l - c)
    }
    return [H(d), H(f * 100), H(u * 100)]
}

function Yy(e) {
    return e.type === 1 && e.y >= 12e3 ? e.scale * .55 : e.type === 1 ? e.scale * .6 : e.type === 0 ? e.scale * .7 : e.scale
}
const zy = `
self.onmessage = (msg) => {

    const bitmap = msg.data.bitmap;
    const player = JSON.parse(msg.data.R)
    const time = msg.data.time
    const size = msg.data.size
    const res = msg.data.res
    const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
    const ctx = canvas.getContext("2d");
    ctx.drawImage(bitmap, 0, 0);
    ctx.clearRect(Math.floor(bitmap.width/2), Math.floor(bitmap.height/2), 1, 1);

    const endpoints = [];
    const data = ctx.getImageData(0,0,bitmap.width, bitmap.height).data;

    const map = new Map(canvas,player,size,res);

    for(let i = 0;i < data.length;i += 4){

        let l = i / 4;

map.graph[l % bitmap.width][Math.floor(l / bitmap.width)].cost = data[i]


        if(data[i + 2]){
            endpoints.push({
                x: l % bitmap.width,
                y: Math.floor(l / bitmap.width),
            });
        }
    }
    bitmap.close();

    if(!endpoints.length){
        endpoints.push(map.getCentreNode());
    }

    //begin the pathfinding

    let openSet = new BinHeap();
    openSet.setCompare = (a, b) => a.f > b.f;
    openSet.push(map.getCentreNode());

    let currentNode;


    while(openSet.length){
        currentNode = openSet.remove(0)

        if(endpoints.some((goal) => goal.x == currentNode.x && goal.y == currentNode.y)){
            break;
        }

        let neighbors = map.getNeighbor(currentNode.x, currentNode.y,player,size,res);
        for(let i = 0;i < neighbors.length;i++){
            let neighbor = neighbors[i];
            if(neighbor && neighbor.cost == 0){//make weighted later
                let tempG = currentNode.g + Map[i % 2 == 0 ? "DiagonalCost" : "TraversalCost"];
                if(tempG < neighbor.g){
                    neighbor.parent = currentNode;
                    neighbor.g = tempG;
                    neighbor.h = Math.min.apply(Math, endpoints.map((goal) => fastHypot(neighbor.x - goal.x, neighbor.y - goal.y)));
                    if(!neighbor.inset){
                        openSet.insert(neighbor);
                    }
                }
            }
        }
    }


    //recontruct path
    if(!endpoints.some((goal) => goal.x == currentNode.x && goal.y == currentNode.y)){
        currentNode = map.getLowest('h',player,size,res);
    }
    let output = [];
    while(currentNode.parent){
        let nextNode = currentNode.parent;
        let d = Math.round(Math.atan2(nextNode.y - currentNode.y, nextNode.x - currentNode.x) / Math.PI * 4);
        if(d < 0){d+=8};
        output.push(d);
        currentNode = nextNode;
    }
    output = new Uint8Array(output.reverse()).buffer;

    self.postMessage(output, [output]);

}

//approximate hypot
function fastHypot(a, b){
    const c = Math.SQRT2-1;
    a = Math.abs(a);
    b = Math.abs(b);
    if(a > b){
        let temp = a;
        a = b;
        b = temp;
    }
    return (c * a) + b
}

//Map Constructor for object
class Map{
    static TraversalCost = 1;
    static DiagonalCost = Math.sqrt(2) * 1;
    constructor(canvas,player,size,res){
        //init variables
        this.width = canvas.width;
        this.height = canvas.height;

        this.middleWidth = Math.floor(this.width / 2);
        this.middleHeight = Math.floor(this.height / 2);
        this.graph = new Array(canvas.width);

        for(let x = 0;x < this.width;x++){
            this.graph[x] = new Array(this.height);
            for(let y = 0;y < this.height; y++){
                this.graph[x][y] = new Node(x, y);
            }
        }
        this.getCentreNode(player,size,res).g = 0;
        this.getCentreNode(player,size,res).pending = false;
    }
    getLowest(type,player,size,res){
        let lowestNode = this.graph[0][0];
        for(let x = 0;x < this.width;x++){

            for(let y = 0;y < this.height; y++){

            let node = this.getNode(x, y, player,size,res)
                if(lowestNode[type] > node[type]){
                    lowestNode = node;
                }
            }
        }
        return lowestNode;
    }
    getNode(x, y, player,size,res){

let X =  x*res+ player.x2-size, Y = y*res + player.y2-size
if(X<0||Y<0||X>14400||Y>14400){
if(this.graph[x] && this.graph[x][y]?.cost!=undefined){
this.graph[x][y].cost = 100
return this.graph[x][y];
}

return undefined
 }


        if(this.graph[x]){
            return this.graph[x][y];
        }
    }
    getCentreNode(player,size,res){
        return this.graph[this.middleWidth][this.middleHeight];
    }
    getNeighbor(x, y,player,size,res){

        return [
            this.getNode(x - 1, y - 1,player,size,res),
            this.getNode(x + 0, y - 1,player,size,res),
            this.getNode(x + 1, y - 1,player,size,res),
            this.getNode(x + 1, y + 0,player,size,res),
            this.getNode(x + 1, y + 1,player,size,res),
            this.getNode(x + 0, y + 1,player,size,res),
            this.getNode(x - 1, y + 1,player,size,res),
            this.getNode(x - 1, y + 0,player,size,res),
        ]
    }

lineOfSight(node1, node2) {
    let x0 = node1.x;
    let y0 = node1.y;
    let x1 = node2.x;
    let y1 = node2.y;

    let dx = Math.abs(x1 - x0);
    let dy = Math.abs(y1 - y0);
    let sx = x0 < x1 ? 1 : -1;
    let sy = y0 < y1 ? 1 : -1;
    let err = dx - dy;

    while (x0 !== x1 || y0 !== y1) {
        if (this.graph[x0][y0].cost !== 0) {
            return false; // Line-of-sight blocked
        }

        let e2 = 2 * err;
        if (e2 > -dy) {
            err -= dy;
            x0 += sx;
        }
        if (e2 < dx) {
            err += dx;
            y0 += sy;
        }
    }

    return true; // Line-of-sight clear
}
}

//Node for Map
class Node{
    constructor(x, y){
        this.x = x;
        this.y = y;
        this.g = Number.POSITIVE_INFINITY;//distance to start
        this.h = Number.POSITIVE_INFINITY;//estimated distance to end
        this.parent;//where it came from
    }
    get f(){
        return this.h + this.g;
    }
}

//binary heap object constructor
class BinHeap extends Array {
    //private variable declaration
    #compare = (a, b) => a < b;
    //constuctor
    constructor(len = 0) {
        super(len);
    }
    //change compare function
    set setCompare(func) {
        if (typeof func == "function") {
            this.#compare = func;
        } else {
            throw new Error("Needs a function for comparing")
        }
    }
    //sort into a binary heap
    sort() {
        for (let i = Math.trunc(this.length / 2); i >= 0; i--) {
            this.siftDown(i)
        }
    }
    //old array sort
    arraySort(compare) {
        super.sort(compare)
    }
    //sift down
    siftDown(index) {
        let left = index * 2 + 1;
        let right = index * 2 + 2;
        let max = index;
        if (left < this.length && this.#compare(this[max], this[left])){
            max = left;
        }
        if (right < this.length && this.#compare(this[max], this[right])){
            max = right;
        }
        if (max != index) {
            this.swap(index, max);
            this.siftDown(max);
        }
    }
    //sift up
    siftUp(index) {
        let parent = (index - (index % 2 || 2)) / 2;
        if (parent >= 0 && this.#compare(this[parent], this[index])) {
            this.swap(index, parent);
            this.siftUp(parent);
        }
    }
    //inserts element into the binary heap
    insert(elem) {
        this.push(elem);
        this.siftUp(this.length - 1);
    }
    //removes elem at index from binary heap
    remove(index) {
        if (index < this.length) {
            this.swap(index, this.length - 1);
            let elem = super.pop();
            this.siftUp(index);
            this.siftDown(index);
            return elem;
        } else {
            throw new Error("Index Out Of Bounds")
        }
    }
    //changes elem at index
    update(index, elem) {
        if (index < this.length) {
            this[index] = elem;
            this.siftUp(index);
            this.siftDown(index);
        } else {
            throw new Error("Index Out Of Bounds")
        }
    }
    //swap two elem at indexes
    swap(i1, i2) {
        let temp = this[i1];
        this[i1] = this[i2];
        this[i2] = temp;
    }
}
`;
var Gy;
var Ky;
class Xy {
    constructor(e, t) {
        this.size = e;
        this.res = t;
        this.prevPos = {};
        this.prevPath = [];
        b(`Default pathfinder | radius: ${e} resolution: ${t} `, "", "#5c0620", false, true);
        b(`use !help, !commands to navigate hack.`, "", "#5c0620", false, true);
        this.blob = new Blob([zy], {
            type: "application/javascript"
        });
        this.url = URL.createObjectURL(this.blob);
        this.worker = new Worker(this.url);
        this.worker.url = this.url;
        this.worker.onmessage = e => {
            Ky = Date.now() - Gy;
            this.attemptFulfil(new Uint8Array(e.data))
        };
        this.worker.onerror = e => {
            throw e
        };
        this.initiateCanvas()
    }
    close() {
        this.worker.terminate();
        URL.revokeObjectURL(this.url);
        si = null
    }
    attemptFulfil(e, t = 0) {
        if (this.resolve) {
            this.resolve(e);
            this.resolve = null
        } else {
            if (t < 10) {
                setTimeout(() => {
                    this.attemptFulfil(e, t + 1)
                }, 0)
            } else {
                console.error("Unexpected Message from Worker at ", this)
            }
        }
    }
    initiateCanvas() {
        this.width = c(this.size * 2 / this.res) + 1;
        if (this.canvas) {
            this.canvas.width = this.width;
            this.canvas.height = this.width
        } else {
            this.canvas = new OffscreenCanvas(this.width, this.width);
            this.ctx = this.canvas.getContext("2d")
        }
    }
    setBuildings(e) {
        this.buildings = e
    }
    setSpeed(e) {
        this.estimatedSpeed = e
    }
    setPos(e, t) {
        this.x = e;
        this.y = t
    }
    clearPath() {
        this.prevPath = []
    }
    pathBlocked(e) {
        if (se(e[0], si.finalGoal) >= 30) {
            this.pathBlocked = true
        }
    }
    async drawPath(n, e = "#0000FF", i = this, t = "#00FF00") {
        if (this.prevPath.length) {
            const s = Date.now() * .3;
            n.lineWidth = 5;
            n.globalAlpha = 1;
            for (let e = 0; e < this.prevPath.length - 1; e++) {
                const o = (e / (this.prevPath.length - 1) * 360 + s) % 360;
                const r = ((e + 1) / (this.prevPath.length - 1) * 360 + s) % 360;
                const [a, l, c] = qy(o / 360, 1, .55);
                const [d, u, f] = qy(r / 360, 1, .55);
                const h = n.createLinearGradient(this.prevPath[e].x, this.prevPath[e].y, this.prevPath[e + 1].x, this.prevPath[e + 1].y);
                h.addColorStop(0, `rgba(${a}, ${l}, ${c}, 1)`);
                h.addColorStop(1, `rgba(${d}, ${u}, ${f}, 1)`);
                n.beginPath();
                n.moveTo(this.prevPath[e].x, this.prevPath[e].y);
                n.lineTo(this.prevPath[e + 1].x, this.prevPath[e + 1].y);
                n.strokeStyle = h;
                n.stroke()
            }
            if (i.x && i.y) {
                n.lineWidth = 5;
                n.globalAlpha = 1;
                n.strokeStyle = "#ffffff";
                n.beginPath();
                for (let t of this.prevPath) {
                    n.globalAlpha = 1;
                    let e = Math.hypot(i.x - t.x, i.y - t.y);
                    if (e < this.estimatedSpeed + this.res * 2) {
                        if (e > this.estimatedSpeed) {
                            n.moveTo(i.x, i.y);
                            n.lineTo(t.x, t.y)
                        }
                        break
                    }
                }
                n.stroke()
            }
        }
    }
    async response() {
        return await new Promise(e => {
            this.resolve = e
        })
    }
    checkBoundaries(e, t) {
        return e >= 0 && t >= 0 && e <= 14400 && t <= 14400
    }
    fastHypot(t, n) {
        const e = Math.SQRT2 - 1;
        t = Math.abs(t);
        n = Math.abs(n);
        if (t > n) {
            let e = t;
            t = n;
            n = e
        }
        return e * t + n
    }
    getPath() {
        window.pf = this;
        for (let n in this.prevPath) {
            let e = this.prevPath[n];
            let t = Math.hypot(z.x2 - e.x, z.y2 - e.y);
            if (t < this.estimatedSpeed + this.res * 2) {
                if (t > this.estimatedSpeed) {
                    return {
                        ang: Math.atan2(e.y - z.y2, e.x - z.x2),
                        dist: parseInt(n)
                    }
                } else {
                    break
                }
            }
        }
    }
    norm(e) {
        return Math.max(0, Math.min(this.width - 1, e))
    }
    async initCalc(t, e = false, n) {
        if (this.resolve) {
            return
        }
        this.prevGoal = t.map(e => {
            return {
                x: e.x,
                y: e.y
            }
        });
        if (e && !n) {
            this.prevPos = this.prevPath[0]
        } else {
            this.prevPos = {
                x: this.x,
                y: this.y
            }
        }
        t = t.map(e => {
            return {
                x: this.norm((e.x - this.prevPos.x + this.size) / this.res),
                y: this.norm((e.y - this.prevPos.y + this.size) / this.res)
            }
        });
        const s = ae;
        this.ctx.fillStyle = "#FF0000";
        for (let i of this.buildings) {
            let e = (i.x - this.prevPos.x + this.size) / this.res;
            let t = (i.y - this.prevPos.y + this.size) / this.res;
            let n = i.pathScale;
            this.ctx.beginPath();
            this.ctx.arc(e, t, n / this.res, 0, s);
            this.ctx.fill()
        }
        this.ctx.fillStyle = "#0000FF";
        for (let e of t) {
            this.ctx.fillRect(Math.round(e.x), Math.round(e.y), 1, 1)
        }
        let i = await createImageBitmap(this.canvas, 0, 0, this.width, this.width);
        this.worker.postMessage({
            bitmap: i,
            R: le(z),
            time: Date.now(),
            res: this.res,
            size: this.size
        });
        Gy = Date.now();
        this.initiateCanvas();
        let o = await this.response();
        const r = [-1, -1, 0, 1, 1, 1, 0, -1];
        const a = [0, -1, -1, -1, 0, 1, 1, 1];
        if (!e || n) {
            this.prevPath = []
        }
        let l = {
            x: this.prevPos.x,
            y: this.prevPos.y
        };
        for (let e = 0; e < o.length; e++) {
            l = {
                x: l.x + r[o[e]] * this.res,
                y: l.y + a[o[e]] * this.res
            };
            this.checkBoundaries(l.x, l.y) && this.prevPath.unshift(l)
        }
        return
    }
    async pathTo(n, t) {
        if (!(n instanceof Array)) {
            n = [n]
        }
        if (this.prevGoal?.length == n.length && this.prevGoal.every((e, t) => e.x == n[t].x && e.y == n[t].y) || t) {
            let e = this.getPath();
            if (e) {
                if (e.dist < 150 || t) {
                    this.initCalc(n, true, t)
                }
                return e
            }
        }
        await this.initCalc(n, false, t);
        return this.getPath()
    }
}
ri = new Xy(2e3, 10);
class Jy {
    constructor(e) {
        this.pathfinder = e;
        this.goal = {
            pathing: false,
            type: null,
            entity: null,
            pos: {
                x: null,
                y: null
            },
            hasGoal: false
        };
        this.finalGoal = {
            x: null,
            y: null
        };
        this.waypoints = {
            death: {
                x: null,
                y: null
            },
            quick: {
                x: null,
                y: null
            }
        }
    }
    setWaypoint(e, t) {
        if (t.x && t.y) {
            this.waypoints[e] = {
                x: t.x,
                y: t.y
            }
        }
    }
    drawWaypointMap(t, n) {
        t.font = "34px Lilita One";
        t.textBaseline = "middle";
        t.textAlign = "center";
        for (let e in this.waypoints) {
            if (e == "death") {
                t.fillStyle = "#E44"
            } else if (e == "quick") {
                t.fillStyle = "#44E"
            } else {
                t.fillStyle = "#fff"
            }
            if (this.waypoints[e].x && this.waypoints[e].y) {
                t.fillText("x", this.waypoints[e].x / 14400 * n.width, this.waypoints[e].y / 14400 * n.height)
            }
        }
        t.strokeStyle = "#4E4";
        if (this.goal.type == "xpos") {
            t.beginPath();
            t.moveTo(this.goal.pos.x / 14400 * n.width, 0);
            t.lineTo(this.goal.pos.x / 14400 * n.width, n.height);
            t.stroke()
        } else if (this.goal.type == "ypos") {
            t.beginPath();
            t.moveTo(0, this.goal.pos.y / 14400 * n.height);
            t.lineTo(n.width, this.goal.pos.y / 14400 * n.height);
            t.stroke()
        } else if (this.goal.pos.x && this.goal.pos.y) {
            t.fillStyle = "#4E4";
            t.fillText("x", this.goal.pos.x / 14400 * n.width, this.goal.pos.y / 14400 * n.height)
        }
    }
    drawWaypoints(n, i) {
        for (let e in this.waypoints) {
            if (e == "death") {
                n.strokeStyle = "#E44"
            } else if (e == "quick") {
                n.strokeStyle = "#44E"
            } else {
                n.strokeStyle = "#fff"
            }
            if (this.waypoints[e].x && this.waypoints[e].y) {
                n.save();
                n.translate(this.waypoints[e].x, this.waypoints[e].y);
                n.rotate(i);
                n.globalAlpha = .6;
                n.lineWidth = 8;
                for (let e = 0; e < 4; e++) {
                    n.rotate(e * Math.PI / 2);
                    n.beginPath();
                    n.arc(0, 0, 50, 0, Math.PI / 4);
                    n.stroke()
                }
                n.lineWidth = 6;
                n.globalAlpha = Math.min(.4, 1 - Math.pow(Math.sin(i / 2), 2) / 1.2);
                n.beginPath();
                n.arc(0, 0, 50 + Math.max(0, Math.tan(i / 2)), 0, ae);
                n.stroke();
                n.restore()
            }
        }
        n.strokeStyle = "#4F4";
        n.lineWidth = 10;
        n.globalAlpha = .8;
        if (this.goal.type == "xpos") {
            n.beginPath();
            n.moveTo(this.goal.pos.x, 0);
            n.lineTo(this.goal.pos.x, 14400);
            n.stroke()
        } else if (this.goal.type == "ypos") {
            n.beginPath();
            n.moveTo(0, this.goal.pos.y);
            n.lineTo(14400, this.goal.pos.y);
            n.stroke()
        } else if (this.goal.pos.x && this.goal.pos.y) {
            n.save();
            n.translate(this.goal.pos.x, this.goal.pos.y);
            n.beginPath();
            n.arc(0, 0, 10, 0, ae);
            n.stroke();
            n.beginPath();
            n.rotate(i / 3);
            let t = Math.cos(i) * 10;
            for (let e = 0; e < 3; e++) {
                n.rotate(ae / 3);
                n.moveTo(60 + t, 0);
                n.lineTo(120 + t, -20);
                n.lineTo(100 + t, 0);
                n.lineTo(120 + t, 20);
                n.closePath()
            }
            n.stroke();
            n.restore()
        }
    }
    setSelf(e) {
        this.self = e
    }
    setSend(e) {
        this.send = e
    }
    abort() {
        this.goal.pathing = false
    }
    updateChat(e, t) {
        if (t != this.self.sid) {
            return
        }
        let n = e.trimEnd().split(" ");
        if (n[0] == "path") {
            if (this.goal.type) {
                this.goal.pathing = true;
                this.pathfinder.clearPath()
            }
        } else if (n[0] == "stop") {
            if (this.goal.pathing) {
                this.goal.pathing = false;
                this.pathfinder.clearPath();
                T.send("a", null, "client")
            }
        } else if (n[0] == "goal" || n[0] == "goto") {
            if (isNaN(parseInt(n[1]))) {
                if (n[1] == "x") {
                    let e = parseInt(n[2]);
                    if (e >= 0 && e <= 14400) {
                        this.goal.pathing = n[0] == "goto";
                        this.goal.type = "xpos";
                        this.goal.pos.x = e
                    }
                } else if (n[1] == "y") {
                    let e = parseInt(n[2]);
                    if (e >= 0 && e <= 14400) {
                        this.goal.pathing = n[0] == "goto";
                        this.goal.type = "ypos";
                        this.goal.pos.y = e
                    }
                } else if (n[0] == "goal" && !n[1]) {
                    this.goal.type = "pos";
                    this.goal.pos.x = this.self.x;
                    this.goal.pos.y = this.self.y
                }
            } else {
                let e = parseInt(n[1]);
                let t = parseInt(n[2]);
                if (e >= 0 && e <= 14400 && t >= 0 && t <= 14400) {
                    this.goal.pathing = n[0] == "goto";
                    this.goal.type = "pos";
                    this.goal.pos.x = e;
                    this.goal.pos.y = t
                }
            }
        } else if (n[0] == "thisway" || n[0] == "project") {
            let e = parseInt(n[1]);
            let t = parseFloat(n[2]) || this.self.dir;
            if (!isNaN(e) && this.self.x && this.self.y && this.self.dir) {
                this.goal.type = "pos";
                this.goal.pos.x = Math.max(0, Math.min(14400, this.self.x + Math.cos(t) * e));
                this.goal.pos.y = Math.max(0, Math.min(14400, this.self.y + Math.sin(t) * e))
            }
        } else if (n[0] == "follow" || n[0] == "flw") {
            if (n[1] == "player" || n[1] == "ply") {
                this.goal.pathing = true;
                this.goal.type = "player";
                if (n[2]) {
                    this.goal.entity = n.slice(2).join(" ")
                } else {
                    this.goal.entity = -1
                }
            } else if (n[1] == "team") {
                this.goal.pathing = true;
                this.goal.type = "team"
            } else if (n[1] == "animal") {
                this.goal.pathing = true;
                this.goal.type = "animal";
                if (n[2]) {
                    this.goal.entity = n[2]
                } else {
                    this.goal.entity = -1
                }
            }
        } else if (n[0] == "find" || n[0] == "fnd") {} else if (n[0] == "waypoint" || n[0] == "wp") {
            if (n[1] == "set") {
                if (Boolean(n[2]) && !this.waypoints[n[2]]) {
                    this.waypoints[n[2]] = {
                        x: this.self.x,
                        y: this.self.y
                    }
                }
            } else if (n[1] == "del") {
                delete this.waypoints[n[2]]
            } else if (n[1] == "goto") {
                if (this.waypoints[n[2]]?.x && this.waypoints[n[2]]?.y) {
                    this.goal.pathing = true;
                    this.goal.type = "pos";
                    this.goal.pos.x = this.waypoints[n[2]].x;
                    this.goal.pos.y = this.waypoints[n[2]].y
                }
            }
        } else if (n[0] == "wander" || n[0] == "wnd") {
            this.goal.pathing = true;
            this.goal.type = "wander";
            this.goal.pos.x = Math.random() * 14400;
            this.goal.pos.y = Math.random() * 14400
        }
    }
    reachedGoal() {
        if (this.goal.type == "xpos") {
            return Math.abs(this.self.x - this.goal.pos.x) < this.pathfinder.estimatedSpeed
        } else if (this.goal.type == "ypos") {
            return Math.abs(this.self.y - this.goal.pos.y) < this.pathfinder.estimatedSpeed
        } else if (this.goal.type == "pos" || this.goal.type == "wander") {
            return Math.hypot(this.self.x - this.goal.pos.x, this.self.y - this.goal.pos.y) < this.pathfinder.estimatedSpeed
        }
    }
    async updatePlayers(n) {
        if (this.goal.pathing) {
            let t;
            if (this.goal.type == "xpos") {
                t = [];
                for (let e = -this.pathfinder.size; e <= this.pathfinder.size; e++) {
                    t.push({
                        x: this.goal.pos.x,
                        y: this.self.y + e * this.pathfinder.res
                    })
                }
            } else if (this.goal.type == "ypos") {
                t = [];
                for (let e = -this.pathfinder.size; e <= this.pathfinder.size; e += 3) {
                    t.push({
                        x: this.self.x + e * this.pathfinder.res,
                        y: this.goal.pos.y
                    })
                }
            } else if (this.goal.type == "pos" || this.goal.type == "wander") {
                t = {
                    x: this.goal.pos.x,
                    y: this.goal.pos.y
                }
            } else if (this.goal.type == "player") {
                if (this.goal.entity === -1) {
                    t = [];
                    for (let e of n) {
                        if (e.visible && e.sid != this.self.sid) {
                            t.push(e)
                        }
                    }
                    if (!t.length) {
                        t = null
                    }
                } else {
                    for (let e of n) {
                        if (e.visible && e.sid != this.self.sid && (e.sid == this.goal.entity || e.name == this.goal.entity)) {
                            t = e;
                            break
                        }
                    }
                }
            } else if (this.goal.type == "team") {
                t = [];
                for (let e of n) {
                    if (e.team == this.self.team && e.sid != this.self.sid) {
                        t.push(e)
                    }
                }
                if (!t.length || !this.self.team) {
                    t = null
                }
            }
            if (t && !jt) {
                if (this.reachedGoal()) {
                    if (this.goal.type == "wander") {
                        this.goal.pos.x = Math.random() * 14400;
                        this.goal.pos.y = Math.random() * 14400
                    } else {
                        this.goal.pathing = false
                    }
                    this.pathfinder.clearPath();
                    T.send("a", undefined, "pathfinder")
                } else {
                    let e = await ri.pathTo(t);
                    if (e) {
                        T.send("a", e.ang, "pathfinder")
                    } else {
                        T.send("a", undefined, "pathfinder")
                    }
                }
            }
            this.finalGoal = t
        }
    }
    async updateAnimals(n) {
        if (this.goal.type == "animal" && this.goal.pathing) {
            let t;
            if (this.goal.entity === -1) {
                t = [];
                for (let e of n) {
                    if (e.visible && e.sid != this.self.sid) {
                        t.push(e)
                    }
                }
                if (!t.length) {
                    t = null
                }
            } else {
                for (let e of n) {
                    if (e.visible && (e.sid == this.goal.entity || e.name == this.goal.entity)) {
                        t = e;
                        break
                    }
                }
            }
            if (this.reachedGoal()) {
                this.pathfinder.clearPath();
                this.goal.pathing = false;
                T.send("a", undefined, "client")
            } else if (t) {
                let e = await this.pathfinder.pathTo(t);
                if (e) {
                    T.send("a", e.ang, "pathfinder")
                } else {
                    T.send("a", undefined, "pathfinder")
                }
            }
            this.finalGoal = t
        }
    }
    async addBuilding(n) {
        await new Promise(e => {
            let t = setInterval(() => {
                if (!this.pathfinder.resolve) {
                    e();
                    clearInterval(t)
                }
            })
            });
        let e = this.pathfinder.getPath();
        let i = e?.dist + this.pathfinder.estimatedSpeed / this.pathfinder.res + 3;
        i = Math.min(this.pathfinder.prevPath.length - 1, Math.trunc(i));
        if (i && !jt) {
            for (let t = i; t >= 0; t--) {
                let e = this.pathfinder.prevPath[t];
                if (Math.hypot(e.x - n.x, e.y - n.y) < n.pathScale) {
                    this.pathfinder.prevPath = this.pathfinder.prevPath.slice(t);
                    let e = await this.pathfinder.pathTo(this.finalGoal, true);
                    e && T.send("a", e.ang, "pathfinder");
                    break
                }
            }
        }
    }
}
si = new Jy(ri);

function qy(e, t, n) {
    let i, s, o;
    if (t === 0) {
        i = s = o = n
    } else {
        const r = function r(e, t, n) {
            if (n < 0) n += 1;
            if (n > 1) n -= 1;
            if (n < 1 / 6) return e + (t - e) * 6 * n;
            if (n < 1 / 2) return t;
            if (n < 2 / 3) return e + (t - e) * (2 / 3 - n) * 6;
            return e
        };
        const a = n < .5 ? n * (1 + t) : n + t - n * t;
        const l = 2 * n - a;
        i = r(l, a, e + 1 / 3);
        s = r(l, a, e);
        o = r(l, a, e - 1 / 3)
    }
    return [H(i * 255), H(s * 255), H(o * 255)]
}
async function $y() {
    if (wn) {
        I(6, 11);
        await A4();
        await A4();
        await A4();
        wn = false
    }
}

function Zy() {
    if (ro.checked && !Ut) {
        const e = (e, t) => (e => e > W ? ae - e : e)(S(e - t) % ae);
        const s = (e, t) => D(((t.x2 ?? t.x) - (e.x2 ?? e.x)) ** 2 + ((t.y2 ?? t.y) - (e.y2 ?? e.y)) ** 2);
        const n = ie.filter(e => s(z, e) <= s3 + 80 && !((xn || m.q) && s(z, e) < 900 && e.sr === 1 && lo.checked) && !e.inTrap && (e.millCount === 299 || e.upgraded >= 7));
        const i = n.reduce((e, t) => {
            const n = x4(t);
            return e + n
        }, 0) / n.length;
        let t = !isNaN(ae * n.length * i / s3) ? ae * n.length * i / s3 : 0;
        o3 += i3;
        const o = Array.from({
            length: n.length
        }, (e, t) => o3 + ae * t / n.length);
        const r = o.map(e => ({
            x: z.x2 + s3 * U(e),
            y: z.y2 + s3 * V(e)
        }));
        n.forEach((e, t) => {
            e.emit("a", B(e, r[t]));
            e.emit("D", B(z, e));
            e.bh(1)
        });
        const a = ae / n.length;
        ie.forEach((e, t) => {
            let n = s(z, e),
                i = B(e, z);
            if (n > s3 + 80 && !e.inTrap && (e.millCount === 299 || e.upgraded >= 7)) {
                e.bh();
                e.emit("a", i);
                e.emit("D", i);
                e.emit("d", 1, i);
                e.emit("d", 0, i)
            }
        })
    }
}

function e3() {
    if (!ie.length || !Ut) {
        Ut = null;
        Vt = null;
        return
    }
    Vt = kh.filter(e => {
        const t = Ut.r ? se(Ut, e) >= Ut.value : se(Ut, e) <= Ut.value;
        if (t && (Ut.types != "all" && (e.group?.name === "spikes" || e.name === "pit trap" || e?.name == "turret" && Zs.checked || e?.name == "teleporter" && Zs.checked) || Ut.types == "all" || e?.name == Ut.types || e?.group?.name == Ut.types) && (e.type === null || e.type === undefined)) {
            if ((Ut.IDS == "team" || Ut.IDS == "clan") && te(e?.owner?.sid)) {
                e.opacity = .15;
                return true
            }
            if ((Ut.IDS == "enemy" || Ut.IDS == "enemies" || Ut.IDS == "hostile" || Ut.IDS == "nEnemy") && !te(e?.owner?.sid)) {
                e.opacity = .15;
                return true
            }
            if (typeof Ut.IDS === "number" && e?.owner?.sid === Ut.IDS) {
                e.opacity = .15;
                return true
            }
            if (Ut.IDS == "all" || Ut.IDS == "every" || Ut.IDS == "everything") {
                e.opacity = .15;
                return true
            }
            if (!Ut.IDS && e?.owner?.sid === z.sid) {
                e.opacity = .15;
                return true
            }
        }
        return false
    });
    if (!Vt?.length) {
        Ut = null;
        Vt = null;
        U1.showText(z.x2, z.y2, 25, .35, 1500, "cleared buildings", "#fff")
    }
}

function t3(e, t) {
    if (!Ms.checked) return;
    t = x.weapons[ee]?.spdMult >= x.weapons[A]?.spdMult || A == null ? t = ee : t = A;
    if (e && z.buildIndex != -1) return t;
    if (p || Mt || hn || y || gt || z.pr != 1 || z.sr != 1 || z.hitting || At || Ct || z.buildIndex != -1) return;
    if (z.weaponIndex != t) T.send("G", t, true);
    if (e) return t
}

function n3() {
    return l4(z, 0, {
        buildIndex: -1,
        weaponIndex: z.weaponIndex,
        skinIndex: z.skinIndex,
        tailIndex: z.tailIndex,
        y2: z.y2,
        zIndex: null
    })
}
Si = x.weapons;
var i3 = .07;
var s3 = 650;
let o3 = 0;
const r3 = re(.993, 111);
const a3 = .5;

function l3(e, t) {
    if (isNaN(e) || e == Infinity) return null;
    let n = e;
    while (n >= .5) {
        n = n * re(.993, 111);
        e += n
    }
    return e
}

function c3(e, t, n, i) {
    return {
        buildIndex: !i ? -1 : i,
        weaponIndex: e,
        skinIndex: t,
        tailIndex: n,
        y: z.y2,
        zIndex: null
    }
}
const d3 = 1e3;
const u3 = Math.PI;
const f3 = 2 * Math.PI / d3;

function h3(t) {
    function n(e, t) {
        return typeof e === "number" && (e > t || t === undefined)
    }
    const i = new Map;
    Ci.forEach(e => {
        if (e.sid) {
            const t = i.get(e.sid);
            if (!t || n(e.expire, t.expire)) {
                i.set(e.sid, {
                    ...e
                })
            }
        }
    });
    Ci = Array.from(i.values());
    Ci.forEach(t => {
        if (t.deathAnim === true) {
            let e = P3(t.x, t.y, t.originDir, t.dstSpd);
            t.t1 = void 0 === t.t2 ? Date.now() : t.t2;
            t.t2 = Date.now();
            t.distance -= t.dstSpd;
            t.dt = 0;
            t.d1 = t.d2;
            t.spinSpd ? t.d2 += t.spinSpd : t.d2 = z.d2;
            t.x1 = t.x;
            t.y1 = t.y;
            t.x2 = e.x;
            t.y2 = e.y;
            if (t.tick === v + 1 && t.dstSpd === 0) {
                U1.showText(z.x2, z.y2, 50, .1, 500, H((se({
                    x: t.positions.accel.x,
                    y: t.positions.accel.y
                }, z) - 0) * 100) / 100, "#fff", true)
            }
        } else if (!isNaN(t.expire)) {
            t.t1 = void 0 === t.t2 ? Date.now() : t.t2;
            t.t2 = Date.now();
            t.distance -= t.dstSpd;
            t.dt = 0;
            t.d1 = t.d2;
            t.expire -= 1;
            t.x1 = t.x;
            t.y1 = t.y;
            t.x2 = t.NEWX;
            t.y2 = t.NEWY
        }
    });
    for (let e = 0; e < Ci.length; e++) {
        t = Ci[e];
        if (!t.deathAnim) continue;
        if (t.distance <= 0 || t.tick < v + 1 && t.dstSpd === 0 || t.vals === 0) Ci.splice(e, 1)
    }
    Ci = Ci.filter(e => e.expire >= 0 || e.expire === undefined)
}
var p3 = 0;

function m3(e, t, n) {
    if (!Ks || Date.now() - p3 < 730) return;
    var i = {
        ...e
    };
    i.vals = .5;
    i.expire = 3;
    i.decay = 0;
    i.distance = t;
    i.fake = true;
    i.dstSpd = t;
    i.orginDir = n;
    Ci.push(i);
    p3 = Date.now()
}

function g3(e, t, n, i, s, o, r, a) {
    var l = {
        ...e
    };
    l.skinIndex = i;
    l.tailIndex = s;
    l.vals = .8;
    l.deathAnim = true;
    l.spinSpd = n || 0;
    l.decay = o || 0;
    l.distance = 3e3;
    l.fake = true;
    l.dstSpd = t;
    l.tick = v + r + 1;
    l.positions = a;
    l.originDir = e.sid === z.sid ? Math.random() * 1e3 : B(z, e);
    Ci.push(l)
}

function y3(e, t, n, i, s, o) {
    var r = {
        ...e
    };
    r.x1 = t;
    r.y1 = n;
    r.x2 = t;
    r.y2 = n;
    r.showSID = true;
    r.skinIndex = i || 0;
    r.tailIndex = s || 0;
    r.weaponIndex = o || 0;
    console.log(r);
    return r
}

function x3(e, t, n, i) {
    var s = {
        ...e
    };
    s.purpose = t;
    s.moving = n;
    s.spinning = i;
    Ci.push(s)
}
async function w3() {
    if (!G["do"] || !ie.length || !ie[G?.val]) return;
    let n = ie[G.val];
    let e = Hg(n.sid);
    if (Date.now() - n.spawnTime < 300) return;
    const t = (t, e) => e.some(e => e.sid === t.sid);
    const i = (t, e) => e.some(e => e.visible && t.visible && e.sid === t.sid && e.sid != n.sid || t.sid == n.sid && e.sid === n.sid && e.visible);
    const s = n.builds.filter(e => !t(e, Xt));
    const o = n.players.filter(e => !i(e, J));
    ts = {
        players: o,
        bot: e?.visible ? e : n.findPlayer(n.sid),
        builds: s
    }
}
async function b3() {
    if ($i == z.sid) {
        Hn && fs.checked && Ki.send(le({
            msg: "spectateData",
            sender: z?.sid,
            player: z,
            players: J,
            builds: kh,
            time: tn,
            server: location.href
        }))
    }
    if (!es.isDoing) {
        es.rPlayer = null;
        es.players = [];
        es.builds = []
    } else {
        es.rBuilds = es?.builds.filter(e => !as(e, Xt));
        es.rPlayer = es?.player;
        es.rPlayers = es?.players
    }
}

function v3(o, r, a, e, l, c, d, u, f) {
    let t = {
        x: Infinity,
        y: Infinity,
        fake: true
    };
    c = Q.filter(e => e?.group?.name == "spikes" && (o.sid != z.sid ? te(e?.owner?.sid) || o?.team === null && e?.owner?.sid != o.sid : !te(e?.owner?.sid)) || e?.type == 1 && e.y >= 12e3);
    if (!c) return false;
    if (e) {
        d = o.np.real.x;
        u = o.np.real.y
    } else {
        d = o.x2;
        u = o.y2
    }
    for (let s in c) {
        let t = c[s];
        f = t.type === 1 ? f = t.scale * .55 + 35 : t.scale + 35;
        let n = se(o, t);
        let e = P3(d, u, r, n);
        let i = se(e, t);
        if (i < f && n - f < a && (l && t.dmg >= 35 || t.type === 1 || !l)) {
            let e = P3(d, u, r, n - f);
            return {
                x: e.x,
                y: e.y,
                obj: t
            }
        }
    }
    return false
}

function k3(o, r, a, e, t, l, c, d, u) {
    let n = {
        x: Infinity,
        y: Infinity,
        fake: true
    };
    l = Q.filter(e => e.name == "pit trap" && (o.sid != z.sid ? te(e?.owner?.sid) || o?.team === null && e?.owner?.sid != o.sid : !te(e?.owner?.sid)));
    if (!l) return false;
    if (e) {
        c = o.np.real.x;
        d = o.np.real.y
    } else {
        c = o.x2;
        d = o.y2
    }
    for (let s in l) {
        let t = l[s];
        u = t.scale + 35;
        let n = se(o, t);
        let e = P3(c, d, r, n);
        let i = se(e, t);
        if (i < u && n - u < a) {
            let e = P3(c, d, r, n - u);
            return {
                x: e.x,
                y: e.y,
                obj: t
            }
        }
    }
    return false
}
let A3 = 0;
let I3 = {
    time: Date.now(),
    type: null
};
var S3 = 0;

function E3(c, d, u, f, h, p) {
    if (!en) return;
    h = Q.filter(e => e?.group?.name == "spikes" && !te(e?.owner?.sid) || e?.type == 1 && e.y >= 12e3 || e.name == "teleporter").sort((e, t) => Ne(c.x2 - e.x, c.y2 - e.y) - Ne(c.x2 - t.x, c.y2 - e.y));
    if (!h.length) return false;
    for (let a = 0, l; a < h.length; a++) {
        p = (l = h[a]).type === 1 ? l.scale * .6 + 35 : l.teleport ? l.scale * .75 + 35 : l.scale + 35;
        let e = [l3(u.vel), l3(c.movSpd)];
        let t = [P3(c.x2, c.y2, d, e[0]), P3(c.x2, c.y2, d, e[1])];
        let n = se(t[0], l) <= p || se(t[1], l) <= p;
        isNaN(f) === true && (f = 0);
        let i = A === 10 ? 75 : x.weapons[ee].range;
        let s = [se(c, l, "object") <= i, se(c.np.decel, l, "object") <= i];
        let o = Ps.checked && (s[0] || s[1]) && n && l.type !== 1;
        let r = n || (s[0] || s[1]) && n && l.type !== 1;
        if (r) {
            let e;
            if (o) {
                e = vg(l, A === 10 ? 75 : x.weapons[ee].range, h)
            }
            if (!m.ShiftLeft) {
                T.send("a", undefined);
                if (Date.now() - I3.time >= 250 && I3.type == "static" || I3.type != "static") U1.showText(c.x2, c.y2, 30, .1, 500, "stop", "#fff", true), I3 = {
                    time: Date.now(),
                    type: "static"
                };
                if (o && (A === 10 && c.sr === 1 || c.pr === 1 && A != 10 && ee != 8)) {
                    y = A === 10 ? 10 : ee;
                    Ot = true;
                    S3 = v;
                    g[0] = e;
                    Bg(e, A === 10 ? A : ee, A === 10 ? z.secondaryVar : z.primaryVar, Nn.includes(40) && !z.dmgpot.soldier ? 40 : 6, 1);
                    ct = true;
                    if ($t != 40) I(z.dmgpot.soldier ? 6 : 40, 11);
                    nn = z.dmgpot.soldier ? 6 : 40
                }
            } else if (Date.now() - I3.time >= 250 && I3.type == "override" || I3.type != "override") U1.showText(c.x2, c.y2, 20, .22, 500, "override", "#fff"), I3 = {
                time: Date.now(),
                type: "override"
            };
            return l
        }
    }
    return false
}

function T3(e, t, n, i) {
    const s = t[0] - e[0];
    const o = t[1] - e[1];
    const r = s * s + o * o;
    if (r === 0) {
        const d = (e[0] - n[0]) ** 2 + (e[1] - n[1]) ** 2;
        return d <= i ** 2
    }
    const a = oe(0, j(1, ((n[0] - e[0]) * s + (n[1] - e[1]) * o) / r));
    const l = e[0] + a * s;
    const c = e[1] + a * o;
    const d = (l - n[0]) ** 2 + (c - n[1]) ** 2;
    return d <= i ** 2
}

function C3(a, l, c, d) {
    if (a.inTrap || !yo.checked) return;
    c = a.builds.filter(e =>
        (e?.group?.name == "spikes" && !a.teamer(e?.owner?.sid)) ||
        e.name == "teleporter" ||
        e.name == "boost pad" // Added boost pads
    ).sort((e, t) => Ne(a.x2 - e.x, a.y2 - e.y) - Ne(a.x2 - t.x, a.y2 - e.y));
    a.np = l4(a, l, a, 1);
    if (!c.length) return false;
    for (let r = 0; r < c.length; r++) {
        let e = c[r];
        d = e.type === 1 ? e.scale * .6 :
            e.teleport ? e.scale * .8 :
            e.name == "boost pad" ? e.scale * .7 : // Adjusted scale for boost pads
            e.scale;
        d += 35;
        let t = l3(a.np.vel);
        let n = P3(a.x2, a.y2, l, j(d, t));
        let i = se(n, e) <= d;
        let s = a.weapons[1] === 10 ? x.weapons[10].range : x.weapons[a.weapons[0]].range;
        let o = xo.checked && (i || a.tick - a.stopHit <= 3 && (se(a, e, "object") <= s || se(a.np.decel, e, "object") <= s) && e.type !== 1 && a.skinIndex === 40) ? true : false;
        if (o) {
            a.emit("a", null);
            a["break"](e);
            a.stopHit = a.tick;
        }
        if (i) return {
            obj: e,
            "break": o
        };
    }
    return false;
}


function B3(t, n, i) {
    let s = function(t) {
        for (let e = 0; e < C0.length; e++)
            if (t == C0[e].id) {
                return C0[e].spdMult
            }
    }($t) || 1;
    let e = function(t) {
        for (let e = 0; e < B0.length; e++)
            if (t == B0[e].id) {
                return B0[e].spdMult
            }
    }(Zt) || 1;
    let o = x.weapons[z.weapons[z.weaponIndex] || z.weapons[0]].spdMult || 1;
    Ry = My * o * s * e * (z.y2 < K.snowBiomeTop && $t != 15 ? K.snowSpeed : 1);
    if (Dn !== undefined) {
        n = {
            x2: z.x2 + Ry * U(Dn) + (z.x2 - z.x1) / 100,
            y2: z.y2 + Ry * V(Dn) + (z.y2 - z.y1) / 100
        };
        for (let e = 0; e < Q.length; e++) {
            i = Q[e];
            if (se(x, i) > Ry + 100) {
                break
            }
            if (i?.group?.name == "spikes" && !te(i.owner.sid) || i.type === 1 && i.y >= 12e3) {
                let e = Dy(i, n);
                if (Dy(i, n) < i.scale + 40) {
                    t = null;
                    T.send("a", t);
                    return true;
                    break
                }
            }
        }
    }
    if (Dn === undefined) {
        n = {
            x2: z.x2 + Ry * U(Dn) + (z.x2 - z.x1) / 90,
            y2: z.y2 + Ry * V(Dn) + (z.y2 - z.y1) / 90
        };
        for (let e = 0; e < Q.length; e++) {
            i = Q[e];
            if (se(x, i) > Ry + 100) {
                break
            }
            if (i?.group?.name == "spikes" && !te(i.owner.sid) || i.type === 1 && i.y >= 12e3) {
                let e = Dy(i, n);
                if (Dy(i, n) < i.scale + 40) {
                    if (Dy(Y, z) > x.weapons[z.weapons[z.weapons[1] == 10 ? 1 : 0]].range + 200 && z.skins[40]) {
                        let e = Ry * .3 / s;
                        n = {
                            x2: z.x2 + e * U(Dn) + (z.x2 - z.x1) / 90,
                            y2: z.y2 + e * V(Dn) + (z.y2 - z.y1) / 90
                        };
                        if (Dy(i, n) > i.scale + 60) {} else {
                            t = null;
                            T.send("a", t);
                            return true
                        }
                    } else {
                        t = null;
                        T.send("a", t);
                        return true
                    }
                    break
                }
            }
        }
    }
    return false
}

function D3(s, o, r, a, t) {
    let l = {
        x: Infinity,
        y: Infinity,
        fake: true
    };
    t = Xt.concat(J, bh);
    for (let e in t) {
        let i = t[e];
        if (!i.ignoreCollision) {
            let t = ky(s, o, i.x, i.y);
            let e = P3(s, o, r, t);
            let n = ky(e.x, e.y, i.x, i.y);
            if (n < i.scale && t - i.scale < a) {
                let e = P3(s, o, r, t - i.scale);
                if (ky(l.x, l.y, z.x, z.y) > ky(e.x, e.y, z.x, z.y)) {
                    l = e
                }
            }
        }
    }
    if (l.fake) {
        return false
    } else {
        return l
    }
}

function P3(e, t, n, i) {
    if (n == undefined) {
        return {
            x: z.x,
            y: z.y
        }
    } else {
        e = e + i * U(n);
        t = t + i * V(n);
        return {
            x: e,
            y: t
        }
    }
}

function R3(t, n, i, e) {
    let s = e(z, {
        x: t,
        y: n
    });
    let o = P3(t, n, i, e);
    let r = e(z, o);
    if (r < 35 && s - 35 < e) {
        let e = P3(t, n, i, s - 35);
        return true
    } else {
        return false
    }
}

function M3(e, t, n) {
    return t <= e + n / 2 && t >= e - n / 2 || (e >= 0 ? e + n / 2 > 3.14 && t <= -3.14 + (e + n / 2 - 3.14) : e - n / 2 < -3.14 && t >= 3.14 + (e - n / 2 + 3.14))
}

function N3(e, t) {
    return Math.atan2(t.y - e.y, t.x - e.x)
}
class O3 {
    constructor(e, t) {
        this.dir = e;
        this.building = t;
        this.building.players = [];
        let n = this;
        new Promise(function(e, t) {
            n.resolve = e;
            setTimeout(function() {
                t()
            }, 111)
        }).then(function(e) {
            n.building.health -= e;
            n.remove()
        })["catch"](function() {
            n.remove()
        })
    }
    remove() {
        for (let e = 0; e < ft.length; e++) {
            if (ft[e] == this) {
                ft.splice(e, 1);
                break
            }
        }
    }
    attemptResolve(s, o, r, e, t) {
        if (e && this.building.sid == e.building.sid && r === this.building.tick) {
            this.resolve(this.building.projDmg ? e.dmg : 0)
        } else if (t && !e && r === this.building.tick) {
            this.resolve(200);
            if (ws.checked) U1.showText(this.building.x, this.building.y, 20, .085, 350, 200, "#00aaff")
        } else if (!e && this.building.owner != null && this.building.name != "mine" && this.building.name != "sapling") {
            let e = P(this.building.y - s.y2, this.building.x - s.x2);
            let t = B(s, this.building);
            let n = Math.hypot(s.x2 - this.building.x, s.y2 - this.building.y);
            let i = {
                x: s.x2 + Math.cos(s.d2) * 35 * (n > this.building.scale),
                y: s.y2 + Math.sin(s.d2) * 35 * (n > this.building.scale)
            };
            if ((H(e * 10) / 10 == this.dir || Ay(H(e * 10) / 10, this.dir) <= .1005) && r == this.building.tick && se(s, this.building, "object") <= x.weapons[s.weaponIndex].range && X.getAngleDist(t, s.d2) <= h && !this.building.players.includes(s.sid)) {
                this.resolve(En[s.weaponVariant] * (o == 40 ? 3.3 : 1) * x.weapons[s.weaponIndex].dmg * (s.weaponIndex == 10 ? 7.5 : 1));
                this.building.players.push(s.sid);
                if (!Ei.includes(s.sid) && ws.checked) U1.showText(this.building.x, this.building.y, 20, .085, 350, H(En[s.weaponVariant] * (o == 40 ? 3.3 : 1) * x.weapons[s.weaponIndex].dmg * (s.weaponIndex == 10 ? 7.5 : 1)), "#00aaff")
            }
        }
    }
}

function L3(e, t) {
    let n = S((e.x2 || e.x) - (t.x2 || t.x));
    let i = S((e.y2 || e.y) - (t.y2 || t.y));
    if (n <= K.maxScreenWidth / 2 * 1.3 && i <= K.maxScreenHeight / 2 * 1.3) {
        return true
    }
    return false
}
const F3 = "(" + (() => {
    const {
        sqrt: u,
        abs: f,
        floor: h
    } = Math;
    const {
        MAX_VALUE: p
    } = Number;
    const r = u(2);
    const m = 900;
    const g = 12;
    const y = g / 2;
    const t = JSON.stringify(new Array(Math.round(m / g)).fill([]));
    const x = JSON.parse(t).length;
    const w = [0, -1, 0, 1, -1, 0, 1, 0, 1, 1, 1, -1, -1, 1, -1, -1];
    const b = w.length;
    const e = ["boost pad", "teleporter"];

    function v(e, t, n, i) {
        return u((e - n) ** 2 + (t - i) ** 2)
    }

    function k(e, t, n, i) {
        const s = f(e - n);
        const o = f(t - i);
        return ((s === 0) + (o === 0)) * g + (s !== 0 && o !== 0) * g * r
    }

    function A(s, o, r, a, l) {
        let e = JSON.parse(t),
            c = 0,
            d = 0;
        for (let i = 0; i < x; i++) {
            let t = e[i];
            for (let e = 0; e < x; e++) {
                let n = t[e] = {
                    x: i * g - m / 2 + s,
                    y: e * g - m / 2 + o,
                    obstacle: false,
                    available: 1,
                    n: i * x + e
                };
                if (n.x < 0 || n.x > 14400 || n.y < 0 || n.y > 14400) {
                    n.obstacle = 1;
                    continue
                }
                for (let e = r.length, t; e--, t = r[e];) {
                    if (n.obstacle = f(t.x - n.x) <= t.scale2 + 20 && f(t.y - n.y) <= t.scale2 + 20 && u((t.x - n.x) ** 2 + (t.y - n.y) ** 2) - t.scale2 - 20 <= 0) break
                }
                n.target = f(n.x - a) <= y && f(n.y - l) <= y;
                c = n.target * n.n + !n.target * c;
                n.start = f(n.x - s) <= y && f(n.y - o) <= y;
                d = n.start * n.n + !n.start * d;
                n.fCost = n.start * -p;
                n.gCost = !n.start * p;
                if (n.target + n.start > 0) continue
            }
        }
        return {
            map: e,
            targetNode: c,
            startNode: d
        }
    }
    onmessage = function(e) {
        let {
            player: t,
            target: s,
            buildings: n,
            clan: i
        } = e.data;
        if (v(t.x2, t.y2, s.x, s.y) <= 0) return postMessage("reached target");
        let {
            map: o,
            startNode: r,
            targetNode: a
        } = A(t.x2, t.y2, n.filter(e => {
            e.scale2 = (e.owner == null || e.name == "sapling") && e.type === 0 ? e.scale * .7 : e.dmg && !i.includes(e?.owner?.sid) && e?.owner?.sid != t.sid ? e.scale + 40 : e.type === 1 && e.y < 12e3 && (e.teleport || e.boostSpeed) ? e.scale + 35 : e["do"] ? e.scale : e.scale - 10;
            return (e.ignoreCollision ? e.name === "pit trap" ? e?.owner?.sid != t.sid && !i.includes(e.owner?.sid) : e.name === "boost pad" || e.name === "teleporter" : true) && v(e.x, e.y, t.x2, t.y2) < m
        }), s.x, s.y);
        let l = [],
            c = [],
            d, u = 1e5;
        l.push(r);
        while (l.length * u--) {
            let n = Infinity,
                i;
            for (let e = l.length, t; e--;) {
                t = o[h(l[e] / x)][l[e] % x];
                if (t.fCost < n) {
                    d = t;
                    n = t.fCost;
                    i = e
                }
            }
            l.splice(i, 1);
            c.push(d.n);
            if (d.target) break;
            for (let t = 0, n; t < b; t++) {
                n = o[h(d.n / x) + w[t]]?.[d.n % x + w[t + 1]];
                if (!n || c.includes(n.n)) continue;
                let e = d.gCost + k(w[t], w[t + 1], 0, 0);
                if (!n.obstacle && n.available === 1) {
                    if (!l.includes(n.n)) {
                        n.parent = d.n;
                        n.gCost = e;
                        n.hCost = v(n.x, n.y, s.x, s.y);
                        n.fCost = e + n.hCost;
                        l.push(n.n)
                    } else if (e < n.gCost) {
                        n.parent = d.n;
                        n.gCost = e;
                        n.fCost = e + n.hCost
                    }
                }
            }
        }
        if (u === 0) return postMessage("reached max iterations");
        if (!l.length) return postMessage("couldn't reach target");
        l = [];
        while (!d.start) {
            l.push(d.y, d.x);
            d = o[h(d.parent / x)][d.parent % x]
        }
        postMessage(l.reverse())
    }
}).toString() + ")();";
var _3 = [];
var V3 = [];

function U3(o) {
    return new Promise((n, t) => {
        o = JSON.parse(le(o));
        let i = -1;
        for (let e = 0; e < V3.length; e++) {
            if (V3[e]) {
                i = e;
                V3[e] = false;
                _3[e].postMessage(o);
                break
            }
        }
        if (i === -1) {
            j3();
            i = _3.length - 1;
            V3.push(false);
            _3[i].postMessage(o)
        }

        function e(e) {
            let t = false;
            if (typeof e.data === "string") {
                Y3 = [];
                t = false
            } else {
                Y3 = e.data;
                t = e.data.length > 0
            }
            H3(_3[i]);
            n(t)
        }

        function s(e) {
            t(e)
        }
        _3[i].onmessage = e;
        _3[i].onerror = s
    })
}

function j3() {
    let e = new Blob([F3]);
    let t = URL.createObjectURL(e);
    e = new Worker(t);
    _3.push(e);
    V3.push(true)
}

function H3(t) {
    for (let e = _3.length; e--;) {
        if (_3[e] === t) {
            V3[e] = true;
            return
        }
    }
}
var W3, Q3;
var Y3 = [];
var z3;
var G3 = Infinity;
var K3;
var X3 = 0;
var J3 = 0;
var q3, ie = [];
var $3 = [],
    Z3 = [],
    ex = {
        x: 0,
        y: 0
    },
    tx = [];
const nx = document.createElement("style");
nx.innerHTML = `
    #customMenu {
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 600px;
        height: 600px;
        background-color: white;
        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: flex-start;
        border-radius: 10px;
        display: none;
        padding: 20px;
        box-sizing: border-box;
        overflow-y: auto; /* Vertical scroll bar */
    }
    #botPanelText {
        margin-bottom: 10px;
        font-size: 1.5em;
        font-weight: bold;
    }
    #botCount {
        margin-bottom: 20px;
        font-size: 1.2em;
        color: #4CAF50; /* Green color */
        font-weight: bold;
    }
    .tabContainer {
        display: flex;
        flex-direction: column; /* Display tabs vertically */
        align-items: center; /* Center-align tabs */
        width: 100%;
    }
    .menuTab {
        margin: 5px;
        padding: 15px 30px;
        background-color: #007BFF;
        color: white;
        text-align: center;
        border-radius: 5px;
        cursor: pointer;
        text-decoration: none;
        font-size: 1.2em;
        position: relative; /* Positioning for relative elements */
    }
    #backBtn {
        margin-top: 20px; /* Add margin to separate from tabs */
        padding: 15px 30px;
        background-color: #FF5733;
        color: white;
        text-align: center;
        border-radius: 5px;
        cursor: pointer;
        text-decoration: none;
        display: none;
        font-size: 1.2em;
    }
    .pageContent {
        display: none;
        text-align: center;
        width: 100%;
        height: 100%;
        overflow: auto;
        position: relative; /* Positioning for relative elements */
    }
    .pageContent h1 {
        margin-top: 0;
    }
    .disconnectBtn {
        position: absolute;
        bottom: 10px;
        left: 50%;
        transform: translateX(-50%);
        background-color: #FF5733;
        color: white;
        border: none;
        padding: 8px 16px;
        border-radius: 5px;
        cursor: pointer;
        font-size: 1em;
    }
    .navBtn {
        position: absolute;
        bottom: 10px;
        font-size: 1em;
        padding: 8px 16px;
        border-radius: 5px;
        cursor: pointer;
    }
    .prevBtn {
        left: 20px;
        background-color: #FFA500; /* Orange color */
        color: white;
    }
    .nextBtn {
        right: 20px;
        background-color: #FFA500; /* Orange color */
        color: white;
    }
`;
document.head.appendChild(nx);
const ix = document.createElement("div");
ix.id = "customMenu";
const sx = document.createElement("div");
sx.id = "botPanelText";
sx.innerText = "x18k Bot Panel";
ix.appendChild(sx);
const ox = document.createElement("div");
ox.id = "botCount";
ox.innerText = "Bot Count: 0";
ix.appendChild(ox);
const rx = document.createElement("div");
rx.className = "tabContainer";
ix.appendChild(rx);
const ax = document.createElement("a");
ax.id = "backBtn";
ax.innerText = "Back to Menu";
ax.href = "#";
ax.onclick = function(e) {
    e.preventDefault();
    gx()
};
ix.appendChild(ax);
document.body.appendChild(ix);
let lx = 0;
document.addEventListener("keydown", function(e) {
    if (e.key === "`") {
        if (ix.style.display === "none" || ix.style.display === "") {
            ix.style.display = "flex";
            gx()
        } else {
            ix.style.display = "none"
        }
    }
});
let cx;
let dx;
let ux;

function fx(t) {
    const e = document.createElement("a");
    e.className = "menuTab";
    e.innerText = `Bot ${t}`;
    e.href = `#page${t}`;
    e.id = `tab${t}`;
    e.onclick = function(e) {
        e.preventDefault();
        mx(t)
    };
    ix.appendChild(e);
    const n = document.createElement("div");
    n.className = "pageContent";
    n.id = `page${t}`;
    cx = document.createElement("p");
    cx.id = `age${t}`;
    cx.innerText = `Age: 0`;
    n.appendChild(cx);
    dx = document.createElement("p");
    dx.id = `windmillCount${t}`;
    dx.innerText = `Windmill Count: 0`;
    n.appendChild(dx);
    ux = document.createElement("p");
    ux.id = `gold${t}`;
    ux.innerText = `Gold: 0`;
    n.appendChild(ux);
    const i = document.createElement("p");
    i.innerText = `You are Viewing: Bot ${t}`;
    n.appendChild(i);
    const s = document.createElement("button");
    s.className = "disconnectBtn";
    s.innerText = "Disconnect";
    s.onclick = function() {
        hx(t);
        Xp(`!dc ${t}`)
    };
    n.appendChild(s);
    const o = document.createElement("button");
    o.className = "navBtn prevBtn";
    o.innerText = "Prev";
    o.onclick = function() {
        if (t > 1) {
            mx(t - 1)
        }
    };
    n.appendChild(o);
    const r = document.createElement("button");
    r.className = "navBtn nextBtn";
    r.innerText = "Next";
    r.onclick = function() {
        const e = document.querySelectorAll(".menuTab").length;
        if (t < e) {
            mx(t + 1)
        }
    };
    n.appendChild(r);
    ix.appendChild(n)
}

function hx(e) {
    const t = document.getElementById(`tab${e}`);
    if (t) {
        t.remove();
        const n = document.getElementById(`page${e}`);
        if (n) {
            n.remove()
        }
    }
}

function px() {
    rx.innerHTML = "";
    const e = document.querySelectorAll(".pageContent");
    e.forEach(e => e.remove())
}

function mx(e) {
    const t = document.querySelectorAll(".menuTab");
    t.forEach(e => e.style.display = "none");
    ax.style.display = "block";
    const n = document.querySelectorAll(".pageContent");
    n.forEach(e => e.style.display = "none");
    const i = document.getElementById(`page${e}`);
    if (i) {
        i.style.display = "block"
    }
    lx = e
}

function gx() {
    const e = document.querySelectorAll(".menuTab");
    e.forEach(e => e.style.display = "block");
    ax.style.display = "none";
    const t = document.querySelectorAll(".pageContent");
    t.forEach(e => e.style.display = "none")
}
const yx = document.getElementById("botCount");
let xx;
const wx = async t => new Promise(e => setTimeout(e, t));
const bx = (e, t) => {

console.log(V0);
    const n = q3.url.split("token=")[0] + "token=" + encodeURIComponent("alt:" + V0);

console.log(n);
    let c = new WebSocket(n);
    c.binaryType = "arraybuffer";
    c.botType = t;
    c.healTimeout = Date.now();
    c.builds = [];
    c.primary = null;
    c.secondary = null;
    c.invisTime = 1e3;
    c.players = [];
    c.oldCoords = {};
    c.millCount = 0;
    c.spawnTime = Date.now();
    c.HERE = true;
    c.enemies = [];
    c.pingTime = -1;
    c.holdItem = 0;
    c.aimAt = 0;
    c.nEnemy = null;
    c.kys = false;
    c.alive = false;
    c.deaths = 0;
    c.clanMates = [];
    c.samRS = 1;
    c.samRP = 1;
    c.breaker = false;
    c.stopHit = false;
    c.upgraded = 0;
    c.moveDir = 0;
    c.moveDirection = 0;
    c.health = 100;
    c.gold = 100;
    c.doMills = true;
    c.fS = false;
    c.x2 = 0;
    c.sid = null;
    c.y2 = 0;
    c.buyer = [
        [11], 40, 1, 53, 6, 7, 56, 12, 15, 31, [21], 22, 26, 11, 20, [18],
        [19],
        [13]
    ];
    c.x = 0;
    c.y = 0;
    c.getCrossBow = true;
    c.ping = 0;
    c.pingavg = 0;
    c.pingarr = [];
    c.weaponIndex = 0;
    c.packets = 0;
    c.autoHit = false;
    c.hitPacket = 0;
    c.player = [];
    c.skins = [0];
    c.tails = [];
    c.pr = 1;
    c.sr = 1;
    c.tr = 1;
    c.updater = [];
    c.moveRan = {
        angle: vx(),
        x: 0,
        y: 0,
        lastChange: 0
    };
    c.justShot = Date.now();
    c.emit = (e, t, n, i) => {
        if (e == "G") e = "z";
        if (e == "d") e = "F";
        if (e == "a") e = "9";
        if (!c.fS) {
            c.fS = true;
            setTimeout(() => {
                c.fS = false;
                c.packets = 0
            }, 1e3)
        }
        c.packets++;
        if (c.packets >= 85) return;
        if (e == "9") c.moveDir = t;
        if (e === "K") {
            c.hitPacket++
        }
        c.send(window.msgpack.encode([e, [t, n, i]]))
    };
    c.findPlayer = function(t) {
        for (let e = 0; e < c.players.length; e++) {
            if (c.players[e].sid == t) return c.players[e]
        }
        return null
    };
    c.findBuilding = function(t) {
        for (let e = 0; e < c.builds.length; e++) {
            if (c.builds[e].sid == t) return c.builds[e]
        }
        return null
    };
    c.spawn = function(e) {
        c.wood = 100;
        c.stone = 100;
        c.food = 100;
        c.points = 100;
        c.upgraded = 0;
        c.alive = true;
        c.kys = false;
        c.sr = 1;
        c.pr = 1;
        c.weapons = [0];
        c.primary = 0;
        c.secondary = null;
        c.items = [0, 3, 6, 10];
        e = H(Math.random() * 11);
        c.emit("M", {
            name: _e,
            moofoll: 1,
            skin: 0
        });
        c.health = 100
    };
    c.storeEquip = function(e, t) {
        c.emit("c", 0, e, t)
    };
    c.checkMove = function(s, o, r, e, t, a, l, c) {
        let n = {
            x: Infinity,
            y: Infinity,
            fake: true
        };
        if (e) {
            a = s.np.real.x;
            l = s.np.real.y
        } else {
            a = s.x2;
            l = s.y2
        }
        for (let e in t) {
            let i = t[e];
            c = i.real.scale + 35 + 30;
            if (Y.team == null) {
                let t = se(s, i);
                let e = P3(a, l, o, t);
                let n = se(e, i);
                if (n < c && t - c < r + c) {
                    let e = P3(a, l, o, t - c);
                    return {
                        x: e.x,
                        y: e.y,
                        obj: i
                    }
                }
            }
        }
        return false
    };
    c.storeBuy = function(e, t) {
        c.emit("c", 1, e, t)
    };
    c.wait = async function(e) {
        await wx(e)
    };
    c.buyEquip = function(t, e) {
        if (e == 0) {
            if (c.skins.includes(t)) {
                if (c.skinIndex != t) {
                    c.storeEquip(t, 0)
                }
            } else {
                let e = C0.find(e => e.id == t)?.price;
                if (c.gold >= e) {
                    c.storeBuy(t, 0)
                }
            }
        } else if (e == 1) {
            if (c.tails.includes(t)) {
                if (c.tailIndex != t) {
                    c.storeEquip(t, 1)
                }
            } else {
                if (t == 11) {
                    B0.find(e => c.gold >= e?.price);
                    if (c.gold >= 2e3) {
                        c.storeBuy(t, 1)
                    } else {
                        if (c.tailIndex != 0) {
                            c.storeEquip(0, 1)
                        }
                    }
                }
            }
        }
    };
    c.Hg = function(e, t) {
        if (c.kys) e = 7;
        if (e) c.buyEquip(e, 0);
        if (t) c.buyEquip(m.ShiftLeft ? c.skins.includes(19) ? 19 : 0 : t, 1)
    };
    c.bh = function(e) {
        let t = c.nEnemy && c.nEnemy.distance < 300 || c.health <= 80 || c.moveDirection === null || c.moveDirection === undefined ? true : false;
        if (c.y < 2400) {
            c.Hg(t ? 6 : 15, m.ShiftLeft ? 0 : 11)
        } else if (c.y >= K.mapScale / 2 - K.riverWidth / 2 && c.y <= K.mapScale / 2 + K.riverWidth / 2) {
            c.Hg(31, 11)
        } else {
            c.Hg(t ? 6 : 12, m.ShiftLeft ? 0 : 11)
        }
    };
    c.checkPlace = function(e, t, n, i) {
        i = x.list[e];
        n = i.scale + 35 + (i.placeOffset || 0);
        var s = c.x2 + n * U(t);
        var o = c.y2 + n * V(t);
        if (C.checkItemLocationBot(s, o, i.scale, .6, i.id, false, c.builds)) {
            c.emit("G", e);
            c.emit("d", 1, t);
            c.emit("G", c.weaponIndex, 1)
        }
    };

    function i() {
        c.emit("G", c.items[0]);
        c.emit("G", 1);
        c.emit("G", c.weaponIndex, true)
    }
    c.autobuy = function() {
        if (c.skins.length + c.tails.length >= 66) return;
        if (c.buyer.length) {
            if (!Array.isArray(c.buyer[0]) && c.gold >= C0.find(e => e.id == c.buyer[0]).price) c.storeBuy(c.buyer[0], 0);
            if (Array.isArray(c.buyer[0]) && c.gold >= B0.find(e => e.id == c.buyer[0][0]).price) c.storeBuy(c.buyer[0][0], 1)
        }
        if (c.buyer.length == 0 && c.skins.length != C0.length - 1) {
            let e = C0.find(e => e.id != 45 && !c.skins.includes(e.id) && c.gold >= e.price);
            if (e) c.storeBuy(e.id, 0);
            let t = B0.find(e => !c.tails.includes(e.id) && c.gold >= e.price);
            if (t) c.storeBuy(t.id, 1)
        }
    };

    function s(e) {
        return e * (W / 180)
    }
    c.upgrade = function(e) {
        c.emit("H", e)
    };
    c.mill = {
        x: 0,
        y: 0
    };
    c.old = {
        x: 0,
        y: 0
    };
    c.miller = function() {
        if ((c.old.x != c.x || c.old.y != c.y) && !(c.y >= K.mapScale / 2 - K.riverWidth / 2 && c.y <= K.mapScale / 2 + K.riverWidth / 2)) {
            if (Math.hypot(c.mill.y - c.y, c.mill.x - c.x) > 94) {
                c.place(c.items[3], c.moveDirection - s(94 / 1.25) + W);
                c.place(c.items[3], c.moveDirection + s(94 / 1.25) + W);
                c.place(c.items[3], c.moveDirection + W);
                c.emit("G", c.primary, true);
                c.mill.x = c.x;
                c.mill.y = c.y
            }
            c.old.x = c.x;
            c.old.y = c.y
        }
    };
    c.weapons = [0];
    c.items = [0, 3, 6, 10];
    c.autoaiming = false;
    c.tick = 0;
    c.time = Date.now();
    c.teamer = function(e) {
        if (e == c.sid) return true;
        return c.clanMates.includes(e)
    };
    c.mapping = Date.now();
    c.mapFix = function() {
        c.oldCoords = {
            x: c.x,
            y: c.y
        }
    };
    c.doProjectileSync = (e, t) => {
        let n = Hg(xi ? xi : Y.sid);
        if (xi && (!n || !n.visible)) n = Y;
        let i = n.sid === Y.sid ? Y.positions : n;
        let s = n ? _g(c, i, x.weapons[c.weapons[1]].projSpd, n) : null;
        let o;
        let r = [];
        let a = {
            ...n
        };
        a.sid = 1e5;
        if (s === null) return false;
        if (uo.checked) {
            if (s.norm.dist > 700 || c.secondary === 12) {
                a.x2 = s.marks.pos.x;
                a.x2 = s.marks.pos.y;
                if (Dg(c, N5, t)) {
                    o = s.marks.dir;
                    r = [1, 11]
                }
            }
            if (!r.length && s.norm.dist <= 700) {
                a.x2 = s.norm.pos.x;
                a.x2 = s.norm.pos.y;
                if (Dg(c, N5, t)) {
                    o = s.norm.dir;
                    r = [53, 11]
                }
            }
        } else {
            o = B(c, Y);
            r = [53, 11]
        }
        c.Hg(r[0], r[1]);
        c.emit("G", c.weapons[1], true);
        c.emit("D", o);
        if (c.items[5] == 18) {
            c.place(c.items[5], o, c.weapons[1]);
            c.place(c.items[5], o + Z(180), c.weapons[1]);
            c.place(c.items[5], o - Z(90), c.weapons[1]);
            c.place(c.items[5], o + Z(90), c.weapons[1])
        }
        c.emit("d", 1, o);
        c.emit("d", 0, o)
    };
    c.place = function(e, t, n) {
        !n && (n = c.weaponIndex);
        c.emit("G", e, null);
        c.emit("d", 1, t);
        n && c.emit("G", n, true)
    };
    c.pingSocketResponse = function() {
        c.pingTime = Date.now()
    };
    c.health = 100;
    c.onopen = async () => {
        c.HERE = true;
        await wx(111);
        c.spawn();
        c.pingSocketResponse()
    };
    c["break"] = function(e) {
        let t = B(c, e);
        c.emit("D", t);
        c.emit("d", 1, t);
        c.emit("d", 0, t);
        c.Hg(40, 11)
    };
    c.onclose = () => {
        c.HERE = false;
        c.ISHERE && ie.length && (ie = ie.filter(e => e.HERE));
        if (c.ISHERE) b(`Bot count is ${ie.length}, -1`, "", Hy(), false, true);
        yx.innerText = `Bot Count: ${ie.length}`;
        $3[c.botType] = [];
        Z3[c.botType] = [];
        hx(c.sid)
    };
    c.heal = function(e, t = [20, 40, 30]) {
        for (var n = e; n < 100; n += t[c.items[0]]) c.place(c.items[0], null)
    };
    c.reloadConfig = function(e, t, n, i, s, o) {
        if (!i) return c.updater.push({
            id: c.reloadConfig,
            data: [e, n, t, true]
        });
        o = c.findPlayer(e);
        if (c.sid == e) {
            t > 9 ? c.sr = 0 : c.pr = 0;
            c.invisTime = 1e3;
            c.skinIndex == 20 && t > 9 ? c.samRS = .78 : c.samRS = 1;
            c.skinIndex == 20 && t < 9 ? c.samRP = .78 : c.samRP = 1
        }
        t > 9 ? o.sr = 0 : o.pr = 0;
        o.skinIndex == 20 && t > 9 ? o.samRS = .78 : o.samRS = 1;
        o.skinIndex == 20 && t < 9 ? o.samRP = .78 : o.samRP = 1
    };
    c.projDetect = function(t, n, i, e, s, o, r, a) {
        if (!r) c.updater.push({
            id: c.projDetect,
            data: [t, n, i, e, s, o, true]
        });
        let l = null;
        if (s == 1.5 && o == 1) {
            if (c.skinIndex == 53 && se({
                x: t,
                y: n
            }, c) <= 2) {
                l = c
            }
        }
        if (!(s == 1.5 && o == 1)) {
            if (c?.weaponIndex == c?.secondary && c.dir === i && x.weapons[c.weaponIndex].projectile == o) {
                let e = P3(t, n, i + W, 70);
                if (S4(e, c) <= 20) l = c
            }
        }
        if (!l) return;
        if (l) {
            if (s == 1.5 && o == 1) {
                if (c.sid == l.sid) c.tr = 0;
                l.tr = 0
            } else {
                if (l.sid === c.sid) {
                    c.sr = 0;
                    c.samRS = c.skinIndex === 20 ? .78 : 1
                }
                l.sr = 0;
                l.samRS = l.skinIndex === 20 ? .78 : 1
            }
        }
    };
    c.reloadWeapon = function(e, t) {
        if (!t) {
            if (e.buildIndex == -1) {
                if (e.weaponIndex <= 8) {
                    e.pr = j(1, e.pr + 111 / (x.weapons[e.primary].speed * e.samRP))
                } else if (e.weaponIndex > 8) {
                    e.sr = j(1, e.sr + 111 / (x.weapons[e.secondary].speed * e.samRS))
                }
            }
            e.tr = j(1, e.tr + 111 / 2400)
        } else {
            if (c.buildIndex == -1) {
                if (c.weaponIndex <= 8) {
                    c.pr = j(1, c.pr + 111 / (x.weapons[c.primary].speed * c.samRP))
                } else if (c.weaponIndex > 8) {
                    c.sr = j(1, c.sr + 111 / (x.weapons[c.secondary].speed * c.samRS))
                }
            }
            c.tr = j(1, c.tr + 111 / 2400)
        }
    };
    c.doAll = function(e, t) {
        if (!t && e.length) {
            $3[c.botType] = e;
            c.sid = e[0];
            c.speed = Ne(c.x - e[1], c.y - e[2]);
            c.speed != 0 && (c.invisTime = 1e3);
            c.speed == 0 && (c.invisTime -= z.delta);
            c.xVel = e[1] - c.x;
            c.yVel = e[2] - c.y;
            c.sid = e[0];
            c.x2 = e[1];
            c.y2 = e[2];
            c.x = e[1];
            c.y = e[2];
            c.dir = e[3];
            c.dt = 0;
            c.buildIndex = e[4];
            c.weaponIndex = e[5];
            c.team = e[7];
            c.isLeader = e[8];
            c.skinIndex = e[9];
            c.tailIndex = e[10];
            c.isSkull = e[11];
            c.visb = true;
            c.enemies.length && (c.enemies = c.enemies.map(e => ({
                enemy: e,
                distance: S4(e, c)
            })).sort((e, t) => e.distance - t.distance));
            c.nEnemy = c.enemies[0];
            c.doMills = window.location.hostname != "sandbox.moomoo.io" || c.upgraded >= 7 && (c.buyer.length <= 8 || c.millCount >= 230 || ai == "Summon" || ai == "Static" || ro.checked || ao.value == "Cursor" && ai == "Summon") || c.millCount === 299 ? false : true
        }
        c.reloadWeapon(c, 1);
        c.updater.forEach(e => e.id(...e.data));
        c.updater = [];
        if (c.tick % 7 === 0 && !(G["do"] && G.play && ts?.bot?.sid === c.sid)) {}
        if (c.doMills && Date.now() - c.moveRan.lastChange >= 1e4 || D(re(c.moveRan.y - c.y, 2) + re(c.moveRan.x - c.x, 2)) > 3300 || c.speed === 0) {
            c.moveRan.angle = vx(c.moveRan.angle);
            c.moveRan.y = c.y;
            c.moveRan.x = c.x;
            c.moveRan.lastChange = Date.now()
        }
        c.autobuy();
        c.ownerDist = ao.value == "Cursor" && ai == "Summon" ? Ne(om.x2 - c.x, om.y2 - c.y) : Ne(z.x2 - c.x, z.y2 - c.y);
        if (G["do"] && ts?.bot?.sid === c.sid) {
            xi.player = c.players.find(e => e.sid === xi.ID && e.visible);
            if (xi.player) {
                xi.player.positions = a4(xi.player, 6)
            } else if (c.nEnemy) {
                xi.player = c.nEnemy.enemy;
                xi.player.positions = a4(xi.player, 6)
            }
        }
        if (G["do"] && G.play && ts?.bot?.sid === c.sid) {
            c.moveDirection = Dm
        } else if (c.doMills && window.location.hostname == "sandbox.moomoo.io" || ai === "Wander") {
            c.moveDirection = c.moveRan.angle
        } else if (ai === "Static") {
            c.moveDirection = null
        } else if (ai === "Summon") {
            if (ao.value == "Cursor") {
                c.moveDirection = B(c, om)
            } else if (ao.value == "Towards") {
                c.moveDirection = B(c, z.np.real)
            } else {
                if (c.ownerDist <= ki) {
                    if (ao.value == "Copy") {
                        c.moveDirection = Dn
                    } else c.moveDirection = null
                } else c.moveDirection = B(c, z.np.real)
            }
        }
        c.inTrap = c.builds.find(e => e.name === "pit trap" && e.owner?.sid != c.sid && !c.teamer(e.owner?.sid) && Ne(e.x - c.x, e.y - c.y) <= 50);
        ie.forEach((e, t) => {
            if (e.sid == c.sid) {
                c.botType = t;
                ie[t] = c
            }
        });
        c.doingAll = c.upgraded >= 7 || window.location.hostname != "sandbox.moomoo.io";
        if (c.alive) {
            let e;
            if (!(ai === "Summon" && ro.checked && c.doingAll) && !(Vt?.length && c.doingAll)) {
                e = C3(c, c.moveDirection);
                !e && c.emit("a", c.moveDirection)
            }!e && !c.inTrap && c.emit("D", c.moveDirection);
            if (m.z && x.list[c?.items[4]]?.name === "pit trap") {
                c.place(c.items[4], c.moveDirection);
                c.place(c.items[4], c.moveDirection + Z(180));
                c.place(c.items[4], c.moveDirection - Z(90));
                c.place(c.items[4], c.moveDirection + Z(90));
                c.emit("G", c.weaponIndex, true)
            }
            if (c.inTrap && go.checked) {
                c.autohit = true;
                let e = B(c, c.inTrap);
                c.emit("G", c.weapons[0], true);
                c.emit("D", e);
                c.emit("d", 1, e);
                c.emit("d", 0, e);
                if (c.pr === 1) {
                    c.Hg(40, 11)
                } else c.Hg(6, 11)
            } else if (e) {} else if (c.secondary && (G["do"] ? true : c.ownerDist < 900) && (m.q || xn) && c.sr === 1 && xi.player && lo.checked) {
                let e = xi.player.positions;
                let t = _g(c, e, x.weapons[c.weapons[1]].projSpd, xi.player);
                let n;
                let i = [];
                if (uo.checked && t) {
                    if (t.norm.dist > 700 || c.weapons[1] === 12) {
                        n = t.marks.dir;
                        i = [1, 11]
                    }
                    if (!i.length && t.norm.dist <= 700) {
                        n = t.norm.dir;
                        i = [53, 11]
                    }
                } else {
                    n = B(c, Y);
                    i = [53, 11]
                }
                c.Hg(i[0], i[1]);
                if (c.items[5] == 18) {
                    c.place(c.items[5], n);
                    c.place(c.items[5], n + Z(180));
                    c.place(c.items[5], n - Z(90));
                    c.place(c.items[5], n + Z(90))
                }
                c.emit("G", c.weapons[1], true);
                c.emit("d", 1, n);
                c.emit("d", 0, n);
                c.emit("D", n)
            } else if (Vt?.length && c.doingAll) {
                c.weaponIndex != c.primary && c.emit("G", c.primary, true);
                const n = Vt?.reduce((e, t) => {
                    const n = Ne(c.x - t.x, c.y - t.y);
                    if (e === null || n < e.distance) {
                        return {
                            building: t,
                            distance: n
                        }
                    } else {
                        return e
                    }
                }, null).building;
                let e = B(c, n);
                let t = n.name === "pit trap" && !c.teamer(n.owner.sid) ? 0 : x.weapons[c.weapons[0]].range;
                if (se(c, n, "object") <= t) {
                    c.emit("a", null);
                    if (c.pr === 1) {
                        c.emit("D", e);
                        c.emit("d", 1, e);
                        c.emit("d", 0, e);
                        c.Hg(40, 11)
                    }
                } else {
                    c.emit("a", e);
                    c.bh();
                    c.emit("d", 1, e);
                    c.emit("d", 0, e);
                    c.emit("D", e)
                }
            } else if (Nt && se(c, Nt, "object") <= x.weapons[c.weapons[0]].range) {
                if (c.pr === 1) {
                    c["break"](Nt)
                } else {
                    c.Hg(6, 11)
                }
            } else {
                let e = c.sr != 1 ? c.secondary : c.primary;
                (c.weaponIndex != e || c.buildIndex != -1) && c.emit("G", e, true);
                if (c.doMills) {
                    c.miller()
                }
                if (e != c.secondary && c.invisTime <= 0 && mo.checked && c.health === 100 && (c.ownerDist <= ki || ai == "Static" && !c.doMills)) {
                    c.Hg(56, 0)
                } else {
                    if (e != c.secondary && c.weaponIndex != c.secondary && ai !== "Static" && !(ai == "Summon" && c.ownerDist <= ki) || ao.value == "Cursor" && ai == "Summon" && c.weaponIndex != c.secondary) {
                        c.emit("d", 1, c.moveDirection);
                        c.emit("d", 0, c.moveDirection)
                    }
                    c.bh()
                }
            }
            if (c.skinIndex != 45 && c.alive && c.health != 100 && !c.kys) {
                if (c.health >= 64.5) {
                    setTimeout(() => {
                        c.heal(c.health)
                    }, 85)
                } else {
                    c.heal(c.health)
                }
            }
        }
        if (c.sid === lx) {
            document.getElementById(`age${c.sid}`).innerText = `Age: ${c.upgraded}`;
            document.getElementById(`windmillCount${c.sid}`).innerText = `Windmills: ${c.millCount}`;
            document.getElementById(`gold${c.sid}`).innerText = `Gold: ${c.gold}`
        }
    };
    c.onmessage = e => {
        let t = window.msgpack.decode(new Uint8Array(e.data));
        let s;
        if (t.length > 1) {
            s = [t[0], ...t[1]];
            if (s[1] instanceof Array) {
                s = s
            }
        } else {
            s = t
        }
        if (!s) return;
        if (s[0] == "O") {
            c.findPlayer(s[1]).health = s[2];
            if (s[1] == c.sid) c.health = s[2]
        }
        if (s[0] == "A") {
            c.team = s[1].teams
        }
        if (s[0] == "4") {
            c.alliancePlayers = s[1];
            c.clanMates = s[1]
        }
        if (s[0] == "0") {
            c.ping = Date.now() - c.pingTime;
            setTimeout(() => {}, 350)
        }
        if (s[0] == "K") {
            c.reloadConfig(s[1], s[2], s[3]);
            if (s[1] == c.sid) {
                c.invisTime = 1e3
            }
            if (G.val === c.botType) v2(s[1], s[2], s[3], c)
        }
        if (s[0] == "X") {
            c.projDetect(s[1], s[2], s[3], s[4], s[5], s[6]);
            if (L3(z, {
                x: s[1],
                y: s[2]
            })) return;
            Z2(s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], c)
        }
        if (s[0] == "L") {
            if (G.val == c.botType) {
                (q = c.findBuilding(s[2])) && (q.xWiggle += K.gatherWiggle * U(s[1]), q.yWiggle += K.gatherWiggle * V(s[1]))
            }
        }
        if (s[0] == "3") {
            if (s[1] == undefined && s[2] == undefined || s[1] == null && s[2] == false) c.clanMates = []
        }
        if (s[0] == "P") {
            c.health = 100;
            c.alive = false;
            c.deaths++;
            setTimeout(() => {
                c.spawn()
            }, 111)
        }
        if (s[0] == "C") {
            c.sid = s[1];
            !c.ISHERE && ie.push(c) && b(`Bot count is ${ie.length}`, "", Hy(), false, true);
            c.ISHERE = true;
            yx.innerText = `Bot Count: ${ie.length}`;
            fx(c.sid)
        }
        if (s[0] == "V") {
            if (s[1]) {
                if (s[2]) {
                    c.weapons = s[1];
                    c.primary = s[1][0];
                    c.secondary = s[1][1]
                } else c.items = s[1]
            }
        }
        if (s[0] == "S") {
            if (s[1] == 3) {
                c.millCount = s[2]
            }
        }
        if (s[0] == "I") {}
        if (s[0] === "H") {
            for (var n = 0; n < s[1].length;) {
                let e = s[1];
                C.add(e[n], e[n + 1], e[n + 2], e[n + 3], e[n + 4], e[n + 5], x.list[e[n + 6]], !0, e[n + 7] >= 0 ? {
                    sid: e[n + 7]
                } : null, c);
                n += 8
            }
        }
        if (s[0] == "D") {
            dg(s[1], s[2], c)
        }
        if (s[0] == "R") {
            c.players = c.players.filter(e => e.sid != s[1]);
            c.builds = c.builds.filter(e => e?.owner?.sid != s[1])
        }
        if (s[0] == "6") {
            let e = c.findPlayer(s[1]);
            e.chatMessage = s[2];
            e.chatCountdown = 3500
        }
        if (s[0] == "N") {
            if (s[1] == "wood") c.wood = s[2];
            if (s[1] == "food") c.food = s[2];
            if (s[1] == "stone") c.stone = s[2];
            if (s[1] == "points") c.gold = s[2]
        }
        if (s[0] == "U") {
            if (s[1] > 0) {
                if (c.upgraded == 0) {
                    c.upgrade(3)
                } else if (c.upgraded == 1) {
                    c.upgrade(17)
                } else if (c.upgraded == 2) {
                    c.upgrade(31)
                } else if (c.upgraded == 3) {
                    c.upgrade(23)
                } else if (c.upgraded == 4) {
                    c.upgrade(9)
                } else if (c.upgraded == 5) {
                    c.upgrade(34)
                } else if (c.upgraded == 6) {
                    c.upgrade(12)
                } else if (c.upgraded == 7) {
                    c.upgrade(c.getCrossBow ? 25 : 15)
                }
                c.upgraded++
            }
        }
        if (s[0] == "5") {
            if (s[3]) {
                if (!s[1]) {
                    c.tails.push(s[2])
                } else c.tailIndex = s[2]
            } else {
                if (!s[1]) {
                    c.skins.push(s[2])
                } else c.skinIndex = s[2]
            }
            if (c.buyer.length && (s[3] == 0 || s[3] == 1)) {
                for (let e = 0; e < c.buyer.length; e++) {
                    if (s[3] == 0 && !Array.isArray(c.buyer[e]) && c.buyer[e] == s[2]) {
                        c.buyer.splice(e, 1)
                    }
                    if (s[3] == 1 && Array.isArray(c.buyer[e]) && c.buyer[e][0] == s[2]) {
                        c.buyer.splice(e, 1)
                    }
                }
            }
        }
        if (s[0] == "Q") {
            c.builds = c.builds.filter(e => e.sid != s[1])
        }
        if (s[0] == "a") {
            c.tick++;
            c.time = Date.now();
            c.players.forEach(e => {
                e.forcePos = false, e.visible = !1
            });
            let i = [];
            xx = null;
            for (let n = 0; n < s[1].length / 13; n++) {
                let e = s[1].slice(13 * n, 13 * n + 13);
                c.enemies = [];
                let t = c.findPlayer(e[0]);
                t.t1 = void 0 === t.t2 ? Date.now() : t.t2;
                t.t2 = Date.now();
                if (t != null) {
                    if (G["do"] && c.botType != G.val || !G["do"]) {
                        t.x = e[1];
                        t.y = e[2]
                    }
                    t.x1 = t.x;
                    t.y1 = t.y;
                    t.speed = Ne(t.x2 - e[1], t.y2 - e[2]);
                    t.xVel = e[1] - t.x2;
                    t.yVel = e[2] - t.y2;
                    t.x2 = e[1];
                    t.y2 = e[2];
                    t.d1 = void 0 === t.d2 ? e[3] : t.d2;
                    t.d2 = e[3];
                    t.dt = 0;
                    t.buildIndex = e[4];
                    t.weaponIndex = e[5];
                    t.weaponIndex >= 9 ? t.secondary = t.weaponIndex : t.primary = t.weaponIndex;
                    t.weaponVariant = e[6];
                    t.team = e[7];
                    t.isLeader = e[8];
                    t.skinIndex = e[9];
                    t.tailIndex = e[10];
                    t.isSkull = e[11];
                    t.visible = true;
                    !Ei.includes(t.sid) && !c.teamer(t.sid) && c.enemies.push(t);
                    if (!(e[0] == c.sid || e[7] && e[7] == c.clan)) {
                        Z3[c.botType] = e
                    }
                }
                if (e[0] === c.sid) {
                    i = e
                }
                c.reloadWeapon(t)
            }
            c.doAll(i, c.skinIndex == 56 && !i ? true : false);
            if (c.autohit) {
                if (c.hitPacket % 2 == 0 && c.alive) {}
            } else {
                if (c.hitPacket % 2 == 1) {}
            }
            if (G["do"] && ts?.bot?.sid === c.sid) {}
            if (z.team && c.team != z.team) {
                if (c.team && c.team != z.team) {
                    c.emit("Q", undefined)
                } else {
                    if (c.team != z.team) {
                        c.emit("b", z.team);
                        ip(c.sid)
                    }
                }
            }
        }
    }
};

function vx(e, t) {
    t = Math.random() * ae;
    if (e && Ay(e, t) <= 2) {
        return vx(e)
    }
    return t
}

function kx(t) {
    if (Y3.length && (Ht == false && jt) && t.name != "pit trap") {
        for (let e = 0; e < Y3.length; e += 2) {
            if (se({
                x: Y3[e],
                y: Y3[e + 1]
            }, t) <= t.scale - 7.5) {
                return true
            }
        }
    }
    return false
}

function Ax(e, i, s) {
    if (Y3 && Y3.length && (m.z || Ht == false && jt)) {
        let t = 0,
            n = 0;
        if (jt && Y3.length * 7 >= i) return;
        while (n < Y3.length) {
            const o = Y3[n];
            const r = Y3[n + 1];
            const a = D((z.x2 - o) ** 2 + (z.y2 - r) ** 2);
            let e = s ? 10 : 35;
            if (a <= e) {
                t += 2
            } else {
                if (!jt) break
            }
            if (jt && a > i) {
                return false
            }
            n += 2
        }
        if (t + 2 < Y3.length) {
            const l = {
                x: Y3[t],
                y: Y3[t + 1]
            };
            T.send("a", B(z, l), "pathfinder");
            Y3.splice(0, t)
        }
    }
    return true
}

function Ix(e) {
    e = H(Math.random() * z.items.length - 1);
    if (e == 0) return Ix();
    return e
}

function Sx(t, n, i = []) {
    for (let e = 0; e < t.length; e += 13) {
        i.push(t[e]);
        for (let e = 0; e < n.length; e += 13) {
            if (i.includes(n[e])) n.splice(e, 13)
        }
    }
    return t.concat(n)
}
$n = x.list;

function Ex(e, t, l, c, n, d = [], u = [], i, f = x.weapons[ee].range, h = x.projectiles[1].range + 35) {
    const s = {
        buildIndex: -1,
        weaponIndex: 0,
        skinIndex: [e, 53, 7][c] || 0,
        tailIndex: 0,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    c == 2 ? i = 2 : i = 3;
    Array.from({
        length: i
    }, (e, t) => {
        d[t] = {
            ...s,
            ...c === 0 || c === 1 ? {
                weaponIndex: [A, ee, ee][t],
                buildIndex: t === 2 ? 3 : -1
            } : {},
            ...c === 2 ? {
                tailIndex: t === 0 ? 19 : 0,
                weaponIndex: ee
            } : {}
        }
    });
    const o = (n, e, i, s, o, r, t = []) => {
        !s && (s = z);
        for (let t = 0; t < l.length; t++) {
            const a = l4(s, 111, l[t], {
                ...d[n]
            });
            console.log(c, s, l[t], {
                ...d[n]
            });
            o = i ? a.decel : a.accel;
            const e = c === 2 ? se(o, Y.np.real, "player") : se(o, Y.np.real);
            console.log(l[t]);
            r = {
                pos: a,
                move: i ? undefined : l[t],
                ...d[n],
                distance: e,
                x2: o.x,
                y2: o.y,
                sid: z.sid,
                xVel: a.xVel,
                yVel: a.yVel,
                type: i ? "decel" : "accel"
            };
            r.t1 = c == 0 ? r : s.t1 ? s.t1 : 0;
            r.t2 = c == 1 ? r : s.t2 ? s.t2 : 0;
            if (c == 2) r.t3 = r;
            (!c || c === 1) && e >= h && u.push(r);
            c === 2 && e <= f && u.push(r)
        }
    };
    e: for (const a of Kt) {
        if (a == 11 && c === 2) continue e;
        for (let t = 0; t < i; t++) {
            d[t].tailIndex = a;
            n ? n.forEach(e => o(t, a, false, e)) : o(t, a)
        }
    }
    console.log(u);
    console.log("move", u.move);
    if (!c) return u;
    if (c === 1) return Mx(7, f, l, 2, u);
    let r = h + f;
    u.length ? u = u.reduce((e, t) => {
        const n = t.t2.distance + t.t3.distance;
        const i = e.t2.distance + e.t3.distance;
        const s = Math.abs(i - r);
        const o = Math.abs(n - r);
        if (o < s) {
            return t
        } else {
            return e
        }
    }) : u = null;
    return u
}

function Tx(e, t, n = 53) {
    return {
        buildIndex: t,
        weaponIndex: e,
        skinIndex: n,
        tailIndex: 0,
        y: z.y2,
        zIndex: null
    }
}

function Cx(e, t, n, i) {
    const s = {
        ...i,
        tailIndex: n
    };
    e = JSON.parse(JSON.stringify(e));
    console.log(e);
    const o = l4(e, 111, t, s);
    return {
        ...s,
        x2: o.accel.x,
        y2: o.accel.y,
        dist: se(o.accel, e),
        xVel: e.xVel,
        yVel: e.yVel,
        sid: z.sid
    }
}

function Bx(e, t, n, i = [], s = [], o) {
    i[0] = Tx(ee, -1, e);
    i[1] = Tx(A, -1, e);
    i[2] = Tx(z.primary, 3, e);
    o = Y.np.real;
    for (let e = 0; e < 3; e++) {
        s[e] = {
            pos: l4(z, 111, B(z, Y), i[e]),
            move: n,
            loadout: i[e]
        };
        s[e].dist = se(s[e].pos.accel, o);
        s[e].x2 = s[e].pos.accel.x;
        s[e].y2 = s[e].pos.accel.y
    }
    if (Kt.includes(11)) {
        for (let e = 0; e < 3; e++) {
            i[e].tailIndex = 11;
            s[e + 3] = {
                pos: l4(z, 111, B(z, Y), i[e]),
                move: n,
                loadout: i[e]
            };
            s[e + 3].dist = se(s[e + 3].pos.accel, o);
            s[e + 3].x2 = s[e + 3].pos.accel.x;
            s[e + 3].y2 = s[e + 3].pos.accel.y
        }
    }
    if (Kt.includes(19)) {
        for (let e = 0; e < 3; e++) {
            i[e].tailIndex = 19;
            s[e + 6] = {
                pos: l4(z, 111, B(z, Y), i[e]),
                move: n,
                loadout: i[e]
            };
            s[e + 6].dist = se(s[e + 6].pos.accel, o);
            s[e + 6].x2 = s[e + 6].pos.accel.x;
            s[e + 6].y2 = s[e + 6].pos.accel.y
        }
    }
    s = s.filter(e => e.dist >= t);
    console.log(`Loadouts ${s}`);
    return s
}

function Dx(e, t, n = [], i = []) {
    for (let e = 0; e < 3; e++) {
        i[e] = Tx(e === 0 ? A : ee, e === 2 ? 3 : -1)
    }
    const s = {
        pos: z,
        move: undefined
    };
    console.log(i);
    s.dist = se(s.pos, i);
    s.x2 = s.pos.x;
    s.y2 = s.pos.y;
    e.push(s);
    for (const t of e) {
        for (let e = 0; e < 3; e++) {
            n.push(Cx(t.pos, t.move, 0, i[e]));
            n.push(Cx(t.pos, t.move, 11, i[e]))
        }
        if (Kt.includes(19)) {
            for (let e = 0; e < 3; e++) {
                n.push(Cx(t.pos, t.move, 19, i[e]))
            }
        }
    }
    return n
}

function Px(e, t, n = [], i = []) {
    for (let e = 0; e < 2; e++) {
        i[e] = Tx(ee, -1, 53);
        i[e].tailIndex = e === 0 ? 19 : 0
    }
    const s = {
        pos: z,
        move: undefined
    };
    s.dist = se(s.pos, i);
    s.x2 = s.pos.x;
    s.y2 = s.pos.y;
    e.push(s);
    console.log(s);
    for (const t of e) {
        for (let e = 0; e < 3; e++) {
            n.push(Cx(t.pos, t.move, 0, i[e]));
            n.push(Cx(t.pos, t.move, 11, i[e]))
        }
        if (Kt.includes(19)) {
            for (let e = 0; e < 3; e++) {
                n.push(Cx(t.pos, t.move, 19, i[e]))
            }
        }
    }
    return n
}

function Rx(e, t, n) {
    let i = [];
    let s = Bx(e, t, n);
    console.log(s);
    s = Dx(s, null, i);
    s = Px(s, null, i);
    return s
}

function Mx(e, t, n, l, i, c = []) {
    const s = {
        buildIndex: -1,
        weaponIndex: 0,
        skinIndex: [e, 53, 7][l] || 0,
        tailIndex: 0,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    const o = l === 2 ? 2 : 3;
    const d = Array.from({
        length: o
    }, (e, t) => ({
        ...s,
        ...l === 0 || l === 1 ? {
            weaponIndex: [A, ee, ee][t],
            buildIndex: t === 2 ? 3 : -1
        } : {},
        ...l === 2 ? {
            tailIndex: t === 0 ? 19 : 0,
            weaponIndex: ee
        } : {}
    }));
    const r = (i, e, s, t) => {
        console.log(t);
        const o = !t ? z : {
            t1: t.t1 || 0,
            t2: t.t2 || 0,
            t3: l === 2 ? t : 0
        };
        console.log(o, o);
        for (const r of n) {
            const a = l4(z, r, {
                ...d[i]
            });
            let e = s ? a.decel : a.accel;
            (!l || l === 1) && console.log(se(e, Y.np.real));
            const t = l === 2 ? se(e, Y.np.real, "player") : se(e, Y.np.real);
            let n = {
                pos: a,
                move: s ? undefined : r,
                ...d[i],
                distance: t,
                x2: a.x,
                y2: a.y,
                sid: z.sid,
                xVel: a.xVel,
                yVel: a.yVel,
                type: s ? "decel" : "accel",
                ...o
            };
            console.log(`distance: ${t}`);
            (!l || l === 1) && t >= x.projectiles[1].speed * 111 + 35 && c.push(n);
            l === 2 && t <= x.weapons[ee].range && c.push(n)
        }
    };
    for (const u of Kt) {
        if (u == 11 && l === 2) continue;
        for (let t = 0; t < o; t++) {
            d[t].tailIndex = u;
            i ? i.forEach(e => r(t, u, false, e)) : r(t, u)
        }
    }
    if (!l) return c;
    if (l === 1) return Mx(7, x.weapons[ee].range, n, 2, c);
    const a = x.projectiles[1].speed * 111 + 35 + x.weapons[ee].range;
    c.length && (c = c.reduce((e, t) => {
        const n = t.t2.distance + t.t3.distance;
        const i = e.t2.distance + e.t3.distance;
        const s = Math.abs(i - a);
        const o = Math.abs(n - a);
        return o < s ? t : e
    }));
    return c || null
}
async function Nx(t, e, n, i, s, o, r) {
    if (!Y || ee != 5 || p || !fn) {
        hn = false;
        return
    }
    t = x.projectiles[1].speed * 111 + 35;
    e = se(z, Y);
    n = [B(z, Y), B(Y, z), undefined];
    s = Gt.map(e => Mx(e, t, n, 0));
    console.log(s);
    o = Mx(53, t, n, 1, s);
    hn = true;
    if (o.move && z.tr === 1 && z.pr === 1) {
        fn = false;
        console.log(o);
        r = o.t1;
        I(r.skinIndex, r.tailIndex);
        T.send("G", r.weaponIndex, true);
        T.send("a", r.move, "pathfinder");
        await A4();
        r = o.t2;
        ct = true;
        g[0] = B(z, Y);
        y = ee;
        U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o.t2, z), "#fff");
        T.send("G", r.weaponIndex, true);
        I(53, r.tailIndex);
        T.send("a", r.move, "pathfinder");
        await A4();
        r = o;
        hn = false;
        p = true;
        ct = true;
        y = ee;
        U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o.t2, z), "#fff");
        T.send("G", r.weaponIndex, true);
        g[0] = B(z, Y);
        T.send("D", B(z, Y));
        T.send("a", r.move, "pathfinder");
        I(7, r.tailIndex);
        await A4();
        p = false;
        y = null;
        T.send("a", null);
        U1.showText(z.x2, z.y2, 50, .3, 1e3, se(o, z), "#fff")
    } else if (e < t) {
        Dn != n[1] && T.send("a", n[1], "pathfinder")
    } else if (e > t) {
        Dn != n[0] && T.send("a", n[0], "pathfinder")
    }
}

function Ox(e, t, l, c, n, d = []) {
    const i = {
        buildIndex: -1,
        weaponIndex: 0,
        skinIndex: [e, 53, 7][c] || 0,
        tailIndex: 0,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    const s = c === 2 ? 2 : 3;
    const u = Array.from({
        length: s
    }, (e, t) => ({
        ...i,
        ...c === 0 || c === 1 ? {
            weaponIndex: [A, ee, ee][t],
            buildIndex: t === 2 ? 3 : -1
        } : {},
        ...c === 2 ? {
            tailIndex: t === 0 ? 19 : 0,
            weaponIndex: ee
        } : {}
    }));
    const o = (n, e, i, s, o, r, t = []) => {
        !s && (s = z);
        for (let t = 0; t < l.length; t++) {
            const a = l4(s, 111, l[t], {
                ...u[n]
            });
            console.log(c, s, l[t], {
                ...u[n]
            });
            o = i ? a.decel : a.accel;
            const e = c === 2 ? se(o, Y.np.real, "player") : se(o, Y.np.real);
            console.log("dist", e);
            console.log("type", c);
            r = {
                pos: a,
                move: i ? undefined : l[t],
                ...u[n],
                distance: e,
                x2: o.x,
                y2: o.y,
                sid: z.sid,
                xVel: a.xVel,
                yVel: a.yVel,
                type: i ? "decel" : "accel"
            };
            r.tick1 = c == 0 ? r : s.tick1 ? s.tick1 : 0;
            r.tick2 = c == 1 ? r : s.tick2 ? s.tick2 : 0;
            if (c == 2) r.tick3 = r;
            (!c || c === 1) && e >= x.projectiles[1].range + 35 && d.push(r);
            c === 2 && e <= x.projectiles[1].range + 35 && d.push(r)
        }
    };
    for (const a of Kt) {
        if (a == 11 && c === 2) continue;
        for (let t = 0; t < s; t++) {
            u[t].tailIndex = a;
            n ? n.forEach(e => o(t, a, false, e)) : o(t, a)
        }
    }
    if (!c) return d;
    if (c === 1) return Mx(7, x.weapons[ee].range, l, 2, d);
    const r = x.projectiles[1].range + x.weapons[ee].range;
    d.length && (d = d.reduce((e, t) => {
        const n = t.t2.distance + t.t3.distance;
        const i = e.t2.distance + e.t3.distance;
        const s = Math.abs(i - r);
        const o = Math.abs(n - r);
        return o < s ? t : e
    }));
    return d || null
}

function Lx(e, t, l, c, n, d = []) {
    const i = {
        buildIndex: -1,
        weaponIndex: 0,
        skinIndex: [e, 53, 7][c] || 0,
        tailIndex: 0,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    const s = c === 2 ? 2 : 3;
    const u = Array.from({
        length: s
    }, (e, t) => ({
        ...i,
        ...c === 0 || c === 1 ? {
            weaponIndex: [A, ee, ee][t],
            buildIndex: t === 2 ? 3 : -1
        } : {},
        ...c === 2 ? {
            tailIndex: t === 0 ? 19 : 0,
            weaponIndex: ee
        } : {}
    }));
    const o = (t, e, n, i) => {
        for (const s of l) {
            const o = l4(z, 111, s, {
                ...u[t]
            });
            const r = n ? o.decel : o.accel;
            const e = c === 2 ? se(r, Y.np.real, "player") : se(r, Y.np.real);
            console.log("next", o, "dist", e, "dir", s);
            console.log(n ? "decel" : "accel");
            const a = {
                pos: o,
                move: n ? undefined : s,
                ...u[t],
                distance: e,
                x2: r.x,
                y2: r.y,
                sid: z.sid,
                xVel: o.xVel,
                yVel: o.yVel,
                type: n ? "decel" : "accel"
            };
            a.tick1 = c == 0 ? a : z.tick1 ? z.tick1 : 0;
            a.tick2 = c == 1 ? a : z.tick2 ? z.tick2 : 0;
            if (c == 2) a.tick3 = a;
            (!c || c === 1) && e >= x.projectiles[1].range + 35 && d.push(a);
            c === 2 && e <= x.weapons[ee].range && d.push(a);
            console.log("v", d)
        }
    };
    for (const a of Kt) {
        if (a == 11 && c === 2) continue;
        for (let t = 0; t < s; t++) {
            u[t].tailIndex = a;
            n ? n.forEach(e => o(t, a, false, e)) : o(t, a)
        }
    }
    if (!c) return d;
    if (c === 1) return Mx(7, x.weapons[ee].range, l, 2, d);
    const r = x.projectiles[1].range + x.weapons[ee].range;
    d.length && (d = d.reduce((e, t) => {
        const n = t.tick2.distance + t.tick3.distance;
        const i = e.tick2.distance + e.tick3.distance;
        const s = S(i - r);
        const o = S(n - r);
        return o < s ? t : e
    }));
    return d || null
}

function Fx(i = [], s = 0, e, t) {
    if (!Y) return;
    const o = {
        buildIndex: -1,
        weaponIndex: z.weaponIndex,
        skinIndex: z.skinIndex,
        tailIndex: z.tailIndex,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    const r = a4(Y, 3, Y.movDir);
    const a = s === 0 ? Gt.concat([19], [0]) : s === 1 ? [53] : [7];
    const l = [B(z, Y), B(Y, z), B(z, r[2].real), B(r[2].real, z), undefined];
    const c = [ee, A, [ay]];
    let d;
    const u = function(e, t, n) {
        console.log(e, t, n);
        e.tick = v + s;
        e.skinIndex = n.skinIndex;
        e.tailIndex = n.tailIndex;
        e.weaponIndex = n.weaponIndex;
        e.buildIndex = n.buildIndex;
        e.xVel = e.xVel;
        e.yVel = e.yVel;
        e.x2 = e.real.x;
        e.y2 = e.real.y;
        e.moveAngle = t;
        e.distance = s === 2 ? se(e, r[2], "player") : se(e, r[s]);
        console.log(s, se(e, r[2], "player"), se(e, r[s]))
    };
    for (let n = 0; n < a.length; n++) {
        for (let t = 0; t < l.length; t++) {
            for (let e = 0; e < c.length; e++) {
                const f = {
                    ...o
                };
                if (!Array.isArray(a[n])) {
                    f.skinIndex = a[n];
                    f.weaponIndex = s === 2 ? ee : c[e];
                    f.buildIndex = !Array.isArray(c[e]) || s === 2 ? -1 : ay;
                    d = l4(z, l[t], f)
                } else {
                    f.tailIndex = a[n][0];
                    f.weaponIndex = !Array.isArray(c[e]) ? c[e] : z.weaponIndex;
                    f.buildIndex = Array.isArray(c[e]) ? ay : -1;
                    d = l4(z, l[t], f)
                }
                if (s === 1 && se(d.real, r[1].real) > x.projectiles[1] * 111 - 35 || s === 2 && se(d.real, r[2].real, "player") <= x.weapons[ee].range || s === 0) {
                    i.push(d);
                    u(d, l[t], f)
                }
            }
        }
    }
}

function _x(e, t, n = 0, i = 4, o = {
    hat: null,
    tail: null,
    weapon: null
}, s = []) {
    const r = {
        buildIndex: -1,
        weaponIndex: null,
        skinIndex: null,
        tailIndex: null,
        y: z.y2,
        zIndex: null,
        sid: z.sid
    };
    const a = Gt.concat([19], [0]);
    if (n < i) {
        const d = a4(t, n, t.movDir);
        const u = [B(z, t), B(Y, z), B(z, d[n - 1].real), B(d[n - 1].real, z), undefined];

        function l(e, t, n, i, s = 111) {
            a.forEach(n => {
                u.forEach(e => {
                    const t = {
                        ...o,
                        skinIndex: n,
                        tailIndex: n
                    }
                    })
            })
        }
        if (n === i) {
            console.log("Final positions:", s)
        }


        function c(e, t, n, i, s, o, r) {
            let a = {
                ...e
            };
            e.x2 = i;
            e.y2 = s;
            e.xVel = o;
            e.yVel = r;
            e.skinIndex = t;
            e.tailIndex = n;
            return e
        }
    }
}

function Vx(e, t, n, i, s) {
    i = Ux(e, t, n);
    i && (s = true);
    i = Ux(e, t + Z(15), n);
    i && (s = true);
    i = Ux(e, t - Z(15), n);
    i && (s = true);
    i = Ux(e, t + Z(30), n);
    i && (s = true);
    i = Ux(e, t - Z(30), n);
    i && (s = true);
    i = Ux(e, t + Z(45), n);
    i && (s = true);
    i = Ux(e, t - Z(45), n);
    i && (s = true);
    if (s) return true;
    return false
}

function Ux(e, t, n, i) {
    i = 35 + e.scale + (e.placeOffset || 0);
    let s = Y.x2 - (z.x2 + U(t) * i),
        o = Y.y2 - (z.y2 + V(t) * i),
        r = 35 + e.scale,
        a = C.checkItemLocation3(z.x2 + U(t) * i, z.y2 + V(t) * i, e.scale, .6, e.id, false);
    if (n && a) {
        if ((S(s) <= r || S(o) <= r) && se(Y, z) <= 35 + n.scale) {
            c4(e.id, t);
            return true
        }
    }
    return false
}

function jx(t, n, i, s) {
    if (!Y || z.pr != 1 || p || !ko.checked || hn) return;
    if (ee == 3 || ee == 4 || ee == 5) {
        for (let e = kn.length - 1; e >= 0; e--) {
            t = kn[e];
            if (!L3(z, t)) {
                kn.splice(e, 1);
                continue
            }
            n = C.checkItemLocation2(t.x, t.y, x.list[ly].scale, .6, t.id, false);
            if (!n) {
                kn.splice(e, 1);
                continue
            }
            console.log(t);
            if (n && !p && se(z, t) <= 126 && se(Y, t) <= t.scale + 35 && se(z, Y, "player") <= x.weapons[ee].range) {
                i = Wx(x.list[ly], B(z, t), t);
                console.log("n", i);
                if (!i) {
                    kn.splice(e, 1);
                    continue
                }
                kn.splice(e, 1);
                b(`Spike tick on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
                c4(z.items[2], B(z, t));
                p = true;
                s = B(z, Y);
                g[0] = s;
                T.send("D", s, "client");
                ct = true;
                I(7, 18);
                y = ee;
                T.send("G", ee, true);
                setTimeout(() => {
                    p = false;
                    ct = false;
                    y = null
                }, 1)
            }
        }
        kn = []
    }
}

function Hx(e, t, n, i, s) {
    s = 35 + e.scale + (e.placeOffset || 0);
    let o = Y.x2 - (z.x2 + U(t) * s),
        r = Y.y2 - (z.y2 + V(t) * s),
        a = 35 + e.scale,
        l = C.checkItemLocation4(z.x2 + U(t) * s, z.y2 + V(t) * s, e.scale, .6, n.id, false, n);
    if (n && l) {
        if ((S(o) <= a || S(r) <= a) && se(Y, n) <= n.scale + 35) {
            return true
        }
    }
    return false
}

function Wx(e, t, n, i, s) {
    i = Hx(e, t, n);
    i && (s = true);
    i = Hx(e, t + Z(15), n);
    i && (s = true);
    i = Hx(e, t - Z(15), n);
    i && (s = true);
    i = Hx(e, t + Z(30), n);
    i && (s = true);
    i = Hx(e, t - Z(30), n);
    i && (s = true);
    if (s) return true;
    return false
}
async function Qx(t, n, i, s, o) {
    if (!fo.checked || !Y || A != 10 || !Y?.inTrap || gt || p || hn || jt || z.sr != 1 || z.pr != 1) return;
    if (ee == 3 || ee == 4 || ee == 5) {
        let e;
        n = Y.inTrap;
        t = B(z, n);
        i = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) >= n.health;
        s = x.weapons;
        o = [se(z, n, "object"), se(z, Y, "player")];
        if (o[0] <= s[A].range && o[1] <= s[ee].range && Wx(x.list[ly], t, n) && o4(z, Y) && i && (ee == 5 && z?.primaryVar == 1 || ee == 4 && z?.primaryVar > 1 ? Y.weaponR == 1 && Y.weaponIndex <= 10 : true) && z.tailIndex != 11) {
            gt = true;
            if (z?.dmgpot?.soldier && Y.pr == 1 && z?.dmgpot?.shouldHeal && [4, 5].includes(Y?.primary)) {
                b(`Cancelled TA due to spike sync threat`, "", "#5c0620", false, true);
                I(6, 0)
            } else {
                I(40, 0)
            }
            g[0] = t;
            T.send("D", t);
            ct = true;
            y = A;
            z.hitting = true;
            T.send("G", A, true);
            Mt = true;
            b(`TA on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
            await A4();
            b(`${Y.health}`, "", "#5c0620", false, true);
            gt = false;
            p = true;
            y = ee;
            if (z?.dmgpot?.soldier && Y.pr == 1 && z?.dmgpot?.shouldHeal && [4, 5].includes(Y?.primary)) {
                b(`Cancelled TA due to spike sync threat`, "", "#5c0620", false, true);
                I(6)
            } else {
                I(7)
            }
            T.send("G", ee, true);
            t = B(z, n);
            z.hitting = true;
            g[0] = t;
            T.send("D", B(z, Y));
            c4(ly, t + Z(15), ee);
            c4(ly, t - Z(15), ee);
            c4(ly, B(z, Y), ee);
            T.send("D", B(z, Y));
            T.send("G", ee, true);
            await A4();
            ct = false;
            y = null;
            Mt = false;
            g[0] = null;
            p = false
        }
    }
}
async function Yx(e, t, n, i, s, o) {
    if (ee != 5 || z.primaryVar < 2 || !fo.checked || !Y || A != 10 || !Y?.inTrap || gt || p || hn || jt || z.sr != 1 || z.pr != 1) return;
    let r;
    t = Y.inTrap;
    e = B(z, t);
    n = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) >= t.health;
    i = 75 * En[z.secondaryVar] * (Nn.includes(40) ? 3.3 : 1) + (Y.secondary == 10 ? 75 : x.weapons[Y.primary].dmg) * En[z.secondary == 10 ? Y.secondaryVar : Y.primaryVar] * 3.3 >= t.health;
    s = x.weapons;
    o = [se(z, t, "object"), se(z, Y, "player")];
    if (o[0] <= s[A].range && o[1] <= s[ee].range && Wx(x.list[ly], e, t) && o4(z, Y) && z.tailIndex != 11) {
        if (n) {
            gt = true;
            I(40, 0);
            g[0] = e;
            T.send("D", e, "client");
            ct = true;
            y = A;
            z.hitting = true;
            T.send("G", A, true);
            Mt = true;
            b(`PA on ${Y.name}[${Y.sid}]`, "", "#5c0620", false, true);
            Bg(e, A, z.secondaryVar, 40, 1);
            await A4();
            p = true;
            y = ee;
            I(7, 18);
            T.send("G", ee, true);
            e = B(z, t);
            z.hitting = true;
            g[0] = e;
            T.send("D", B(z, Y), "client");
            c4(ly, e + Z(15), ee);
            c4(ly, e - Z(15), ee);
            c4(ly, B(z, Y), ee);
            c4(ly, e, ee);
            T.send("D", B(z, Y), "client");
            T.send("G", ee, true);
            await A4();
            ct = false;
            gt = false;
            y = null;
            Mt = false;
            g[0] = null;
            p = false
        }
    }
}

function zx() {
    if (!Y || !z.pr || !z.sr || !(z.primaryVar === 3 || z.secondaryVar === 3) || A != 10 || ee != 5) return
}

function Gx() {
    if (z && en && ii) {
        return oe(o5(z, Y, 1, 1.5, B(z, Y)), o5(ii, Y, 1, 1.5, B(ii, Y)))
    }
}

function Kx() {
    if (Sn.length > 0 && en && Y) {
        return oe(...Sn.map(e => o5(e, Y, 1, 1.5, B(e, Y))))
    }
}
let Xx = [];
let Jx = [];
let qx = null;

function $x(e) {
    Xx = e;
    if (gy("music")?.checked) {
        if (qx !== null) {
            qx.pause()
        }
        if (Jx.length === Xx.length) {
            Jx = []
        }
        let e;
        do {
            e = f(Math.random() * Xx.length)
        } while (Jx.includes(e));
        const t = Xx[e];
        qx = new Audio;
        qx.src = t;
        qx.preload = "auto";
        qx.play();
        qx.addEventListener("ended", Zx)
    } else {
        if (qx !== null) {
            qx.pause()
        }
    }
}

function Zx() {
    if (qx !== null) {
        qx.removeEventListener("ended", Zx);
        Jx.push(Xx.indexOf(qx.src));
        qx = null
    }
}

function e5() {
    if (qx === null) {
        $x(Xx)
    }
}
const t5 = ["https://example.com/song1.mp3", "https://example.com/song2.mp3", "https://example.com/song3.mp3"];

function n5(e, t) {
    if (z.sr !== 1 || z.tr !== 1 || !Y || !ii || se(z, Y) > 700 || se(ii, Y) > 700 || ii.sr !== 1 || ii.tr !== 1) return;
    if (z && en && Y && ii) {
        var n;
        var i = o5(z, Y, 1, 1.5, B(z, Y));
        var s = Gx();
        var o;
        if (x.list[hy].name == "platform") c4(hy, B(z, Y));
        if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) == o5(z, Y, 5, 3.6, B(z, Y))) {
            o = o5(z, Y, 5, 3.6, B(z, Y))
        } else if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) {
            o = o5(z, Y, 5, 4.68, B(z, Y))
        }
        if (A == 9) {
            o = o5(z, Y, 0, 1.6, B(z, Y))
        }
        if (A == 13) {
            o = o5(z, Y, 3, 2, B(z, Y))
        }
        if (A == 12) {
            o = o5(z, Y, 2, 2.5, B(z, Y))
        }
        e = s * 111 - o * 111;
        t = s * 111 - i * 111
    }
    setTimeout(() => {
        p = true;
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        I(53, 0)
    }, t);
    setTimeout(() => {
        if (o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) {
            I(1, 0)
        }
        p = true;
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        T.send("G", A, true);
        y = A
    }, e);
    setTimeout(() => {
        p = false
    }, 666)
}
async function i5(e) {
    if (!m.R || z.sr !== 1 || z.tr !== 1 || !Y) return;
    if (z && en && Y) {
        var t;
        var n = o5(z, Y, 1, 1.5, B(z, Y));
        var i;
        if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) == o5(z, Y, 5, 3.6, B(z, Y))) {
            i = o5(z, Y, 5, 3.6, B(z, Y))
        } else if (A == 15 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) {
            i = o5(z, Y, 5, 4.68, B(z, Y))
        }
        if (A == 9) {
            i = o5(z, Y, 0, 1.6, B(z, Y))
        }
        if (A == 13) {
            i = o5(z, Y, 3, 2, B(z, Y))
        }
        if (A == 12) {
            i = o5(z, Y, 2, 2.5, B(z, Y))
        }
        e = n * 111 - i * 111;
        console.log(e)
    }
    p = true;
    g[0] = B(z, Y);
    ct = true;
    T.send("D", B(z, Y));
    I(53, 0);
    await s5(e);
    if (o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 5, 3.6, B(z, Y))) {
        I(1, 0)
    }
    p = true;
    g[0] = B(z, Y);
    ct = true;
    T.send("D", B(z, Y));
    T.send("G", A, true);
    y = A;
    await s5(222);
    p = false
}

function s5(t) {
    return new Promise(e => setTimeout(e, t))
}

function o5(e, t, n, i, s) {
    var o = i * U(s);
    var r = i * V(s);
    var a = se(e, t);
    var l;
    if (n !== 1) {
        l = oe((a - 105) / D(o * o + r * r), 0)
    } else {
        l = oe((a - 35) / D(o * o + r * r), 0)
    }
    var c;
    c = f(l / 111);
    return c
}

function r5(e, t, n, i, s) {
    var o = i * U(s);
    var r = i * V(s);
    var a = se(z, t);
    var l = (a - 35) / (i * 111);
    l = l < 1 ? 0 : c(l);
    return l
}

function a5(e, t, n) {
    n = P3(z.x2, z.y2, B(z, Y), e == 1 ? 0 : 70);
    return (se(n, Y) - 35) / t
}
async function l5(e, t, n, i, s, o) {
    let r;
    o = Hg(e);
    if (o.health <= 0 && o.vis2 && !o.visible && !o.didDeath) g3(o, 55, .28, 48, 13, .00215, 0), o.deaths++, o.didDeath = true;
    if (!z.healths) z.healths = [];
    if (o.sid == z.sid) {
        if (z.healths.length >= 8) z.healths.pop();
        if (o.sid == z.sid) z.healths.push({
            hp: o.health,
            tick: v
        })
    }
    if (t == -5 * (o.skinIndex == 6 ? .75 : 1) && o.poison) {
        o.lastBull = v - 1
    }
    if (o.health <= 0) o.Alive = false, o.Alive2 = false;
    if (t < 0) {
        if (o.sid != z.sid && o.dmgs == "XD") {
            o.dmgs = 0
        }
        if (o.sid != z.sid) {
            o.dmgs += S(t)
        }
        if (o == z) z.lastDamage3 = i
    }
    o.dmgsNow.unshift(H(t * 100) / 100);
    if (t > 0) {
        if (o.skinIndex == 13) {
            if (o.tailIndex == 13) {
                t == 6 && (o.lastBull = v - 1);
                z == o && (et = 0);
                return
            } else {
                t == 3 && (o.lastBull = v - 1);
                z == o && (et = 0);
                return
            }
        }
        if (!isNaN(o.shameCount) && o.lastDamage) {
            if (i - o.lastDamage <= 120) {
                o.healTime = i - o.lastDamage2;
                o.shameCount >= 8 && o.assumeAge >= 7 && S(tn - i) <= 2 && t <= 10 && o.loadout.utility == undefined && (o.loadout.utility = z.list[2]);
                r = o.assumeAge >= 7 && o.loadout?.utility?.name == "cheese" && S(tn - i) <= 2 && t <= 10 ? true : false;
                if (!r) {
                    o.noAntiList = o.noAntiList.map(e => e * .95);
                    !o.shameUp && (o.shameUp = []);
                    o.shameUp.length >= 5 && o.shameUp.shift();
                    o.shameUp.push(o.healTime);
                    o.gainSpeed = o.shameUp.reduce((e, t) => e + t, 0) / o.shameUp.length;
                    o.prevShameUp = o.shameCount;
                    if (o.lowHealth <= 40) {
                        o.noAntiList[o.shameCount]--
                    }
                    o.shameCount = j(8, o.shameCount + 1)
                }
            } else {
                r = o.assumeAge >= 7 && o.loadout?.utility?.name == "cheese" && S(tn - i) <= 2 && t <= 10 ? true : false;
                if (!r) {
                    o.healTime = i - o.lastDamage2;
                    !o.shameDown && (o.shameDown = []);
                    o.shameDown.length >= 5 && o.shameDown.shift();
                    o.shameDown.push(o.healTime);
                    o.leakSpeed = o.shameDown.reduce((e, t) => e + t, 0) / o.shameDown.length;
                    o.prevShameDown = o.shameCount;
                    if (o.lowHealth <= 60) {
                        o.noAntiList[o.shameCount]++;
                        let t = o.noAntiList.reduce((e, t) => e + (t > 0 ? t : 0), 0);
                        if (t >= 3) {
                            let e = o.noAntiList.indexOf(Math.max(...o.noAntiList));
                            if (o.noAntiList[e] * 2 > t) {
                                o.noAnti = e
                            }
                        }
                    }
                    o.shameCount = oe(0, o.shameCount - 2)
                }
            }
            o.lastDamage = 0;
            o.lastDamage2 = 0;
            o.thisHealth = undefined
        }
    } else {
        o.lowHealth = n;
        o.lastDamage = i;
        o.lastDamage2 = i;
        o.dmgDate = i;
        o.thisHealth = o.health;
        if (!te(o.sid) && Y?.inTrap) {
            let e = Xt.filter(e => se(Y.inTrap, e) <= 50 + e.scale + 35 && (te(e?.owner?.sid) && e?.group?.name == "spikes" || Y && !Y.team && e?.group?.name == "spikes" && e?.owner?.sid != Y.sid || e?.type == 1 && e.y >= 12e3));
            if (e.length && t == -(e[0]?.type != 1 ? e[0]?.dmg : 35) * (o.skinIndex == 6 ? .75 : 1)) o.hitSpike = true
        }
        if (o.sid === z.sid) {
            let e = Xt.filter(e => se(z, e) <= e.scale + 35 && (!te(e?.owner?.sid) && e?.group?.name == "spikes" || e?.type == 1 && e.y >= 12e3));
            if (e.length && t == -(e[0]?.type != 1 ? e[0]?.dmg : 35) * (o.skinIndex == 6 ? .75 : 1)) {
                o.hitSpike = e[0]
            }
        }
        if (o.skinIndex == 7) {
            if (o.tailIndex == 13) {
                if (t == -2) {
                    o.lastBull = v - 1;
                    o.lastBull2 = Date.now();
                    o.bTT = 1e3;
                    return
                }
            } else {
                if (t == -5) {
                    if (o == z) {
                        et = 0
                    }
                    if (z.sid === o.sid) console.log(v - o.lastBull - 1, Date.now() - o.lastBull2);
                    o.lastBull2 = Date.now();
                    o.bTT = 1e3;
                    o.lastBull = v - 1;
                    return
                }
            }
        }
    }
}

function c5(e) {
    if (e == "reverse") {
        let e = [{
            hit: true,
            weapon: A,
            hat: 53,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "apple") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: "none",
            tail: "none",
            restrict: {
                hat: [53, 7],
                tail: "none"
            },
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }]
        }
    if (e == "no bull") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: "none",
            tail: "none",
            restrict: {
                hat: [7, 53],
                tail: [11]
            },
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 53,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "rubyPH") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "applePH") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: 53,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "regular") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 53,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "age 1") {
        let e = [{
            hit: true,
            weapon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapoon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: 53,
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: A,
            hat: "none",
            tail: "none",
            aim: "closest enemy"
        }, {
            hit: true,
            weapon: ee,
            hat: 7,
            tail: "none",
            aim: "closest enemy"
        }];
        return e
    }
    if (e == "bow insta") {}
}

function d5() {
    if (!en || on.status == false || !z.canBuild(x.list[cy])) return on.status = false;
    if (S4(z, on) > 100) {
        if (on.status) {
            c4(cy, Dn + Z(180));
            c4(cy, Dn + Z(180) - Z(69));
            c4(cy, Dn + Z(180) + Z(69))
        }
        on.x = z.x2, on.y = z.y2
    }
}

function u5(e, t, n, i, s, o, r, a, l, c, d, u, f) {
    r = x.list[e];
    r?.name == "blocker" ? d = 300 : d = 0;
    if (!r) return;
    a = 35 + r.scale + (r.placeOffset || 0);
    l = z.x2 + U(t) * a;
    c = z.y2 + V(t) * a;
    if (o == "outplace") {
        f = C.checkItemLocation3(l, c, r?.scale, .6, r?.id, false, true)
    } else {
        f = C.checkItemLocation(l, c, r?.scale, .6, r?.id, false, i)
    }
    if (n || f && !n) ct = true;
    if (r && (f || n)) {
        c4(e, t);
        if (s) {
            C.add(v, s.x, s.y, s.angle, s.scale, null, x.list[s.item.id], !0, {
                sid: z.sid
            }, false, false, true, true)
        }
    }
    let h = x.list[e];
    if (f) {}
    if (n && !f) {}
}

function f5(t, n, i, s, e, o, r) {
    for (var a = 0; a < Xt.length; ++a) {
        let e = Xt[a];
        var l = e.blocker ? e.blocker : e.getScale(s, e.isItem);
        if (se({
            x: t,
            y: n
        }, e) < i + l) return !1
    }
    return !(!o && 18 != e && n >= K.mapScale / 2 - K.riverWidth / 2 && n <= K.mapScale / 2 + K.riverWidth / 2)
}

function h5(e) {}

function p5(n) {
    if (!en) return;
    let i = {
        hp: 0,
        primary: 0,
        secondary: 0,
        maxOT: 0,
        turretGear: 0,
        add: 0,
        inrange: 0,
        spikes: 0,
        soldier: 0,
        forceSoldier: 0,
        shouldHeal: false
    };
    for (let e = vn.length, t; e--;) {
        n = (t = vn[e]).dmgpot.range + t.movSpd + z.movSpd + 50;
        if (se(z, t, "player") <= n) {
            if (i.hp == null || i.hp == undefined) i.hp = t.dmgpot.min + z.hitProjs;
            t.dmgpot.min > i.hp && (i.hp = t.dmgpot.min);
            i.primary += t.dmgpot.primary;
            i.secondary += t?.dmgpot.secondary;
            i.add += i.primary + i.secondary;
            i.turretGear += t?.dmgpot.turretGear;
            i.inrange += 1;
            i.spikes += i.spikes;
            !i.soldier && (t.dmgpot.soldier || i.primary >= 100 || z.hitProjs >= 100) && (i.soldier = true);
            !i.forceSoldier && t.dmgpot.forceSoldier && (i.forceSoldier = true)
        }
    }
    i.shouldHeal = i.hp >= z.health;
    return i
}

function m5(n) {
    let i = {
        primary: 0,
        secondary: 0,
        turretGear: 0,
        soldier: false,
        forceSoldier: false,
        min: 0,
        m1: 0,
        spikes: 0,
        m2: 0
    };
    let t = !n.secondary ? 15 : n.secondary;
    let s = !isNaN(n.primary) && n.primary != null ? n.primary : 5;
    let o = x.weapons.filter(e => e.age > n.assumeAge && e.id > 8 && (null == e?.pre || e.uF.includes(t) && !e.uF.includes(s)));
    o.length ? o = o.reduce((e, t) => e.dmg > t.dmg ? e : t) : o = 0;
    let e = x.weapons.filter(e => e.age > n.assumeAge && e.id <= 8 && (null == e?.pre || e.uF.includes(s) && e.uF.includes(t) && e.uF.includes(o?.id)));
    e.length ? e = e.reduce((e, t) => e.dmg > t.dmg ? e : t) : e = 0;
    let r = e !== 0 && (s && n.pr == 1 && x.weapons[s].dmg < e.dmg || !n.pr && s) ? e.dmg * (n.tailIndex === 11 ? 1 : 1.5) : s && n.pr == 1 ? x.weapons[s]?.dmg * En[n?.primaryVar] * 1.5 : 0;
    let a = o !== 0 && (t && n.sr == 1 && x.weapons[t].dmg < o.dmg || !n.sr && t) ? o.dmg * (o.projectile == undefined ? 1.5 : 1) : t && n.sr == 1 ? x.weapons[t].dmg * (x.weapons[t].projectile == undefined ? En[n?.secondaryVar] * (n.tailIndex === 11 ? 1 : 1.5) : 1) : 0;
    if (r && n.primaryVar == 3 && z.bleed === 0 || z.poison > 0 && z.bleed === 0) r += 5;
    if (a && (n.secondary == 10 || n.secondary == 14) && z.bleed === 0 || z.poison > 0 && z.bleed === 0) a += 5;
    let l = v3(z, B(n.np.real, z.np.real), se(z, n.kbpot.fpriTKB), true, 0);
    let c = v3(z, B(n.np.real, z.np.real), se(z, n.kbpot.priKB), true, 0);
    let d = Q.filter(e => Nt && e?.group?.name === "spikes" && (!e.manualBreak || !e.assumeBreak) && (se(z, n) <= 130 && Ay(B(n, e), B(n, z)) <= 3) && !te(e.owner.sid) && se(z, e, "object") <= (A === 10 ? 75 : x.weapons[ee]?.range)).sort((e, t) => se(z, e, "object") - se(z, t, "object"));
    let u = 0,
        f = 0;
    let h = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450);
    i.range = e?.range != undefined && e?.range > x.weapons[s].range ? e?.range : x.weapons[s].range;
    i.primary += r;
    if ((n.secondary === 10 || n.secondary == 14) && se(z, n, "player") <= x.weapons[t].range || !isNaN(x.weapons[t]?.projectile) && se(z, n) - 105 <= x.projectiles[x?.weapons[t]?.projectile]?.range * 111 + 40) {
        i.secondary += a
    }
    if (n.placePot.onPlayer.length && h.length) {
        let e = U5(n.placePot.onPlayer, h, z);
        if (e.building && (e.bounce || e.building.name != "pit trap")) {
            u = e.building.dmg;
            m3(e.newPos)
        }
    }
    if (d.length > 0)
        for (let t = d.length; t--;) {
            let e = d[t];
            if (se(z, n, "player") <= x.weapons[s].range && (se(z, e) <= 35 + e.realScale || z.spdMult > 0 && se(z.np.decel, e) <= 35 + e.realScale + 3.5)) {
                f += e.dmg;
                if (n.pr == 1 && (s == 3 || s == 4 || s == 5) && f + i.primary >= z.health) i.forceSoldier = true;
                if (i.forceSoldier) {
                    U1.showText(z.x2, z.y2, 20, .18, 800, "anti melee sync test", "#fff")
                }
            }
        }
    i.spikes = 0;
    i.spikes = n.placePot.onPlayer.length ? n.loadout.spike.dmg + u : l && !Nt ? l.obj.dmg : 0;
    if (n.tr === 1 && y5(z, n, 1.5 * 111 + 60, 0, 1)) {
        i.turretGear += 25
    }
    i.m1 = i.primary;
    i.m2 = i.secondary + i.turretGear;
    i.min = i.m1 >= i.m2 ? i.m1 + i.spikes : i.m2 + i.spikes;
    i.soldier = n.placePot.onPlayer.length ? true : c && n.pr === 1 && !Nt ? true : false;
    return i
}

function g5(e) {
    if (Dn != e) {
        T.send("a", e, "client")
    }
}

function y5(e, t, n, i = undefined, s) {
    if (s && se(e.np.real, t.np.real, i) <= n) {
        return true
    }
    if (se(e, t, i) <= n) {
        return true
    }
    return false
}
async function x5(e, t = Hg(e.sid)) {
    if (e.shameTimer <= 0 || e.skinIndex != 45 || t == null || t == undefined) return;
    t.shameCount = 0;
    t.clowned = true;
    t.shameTimer -= e.delta / 1e3;
    await A4();
    x5(t)
}

function w5(e, t, n, i) {
    let s = .3 + (x.weapons[e?.primary]?.knock || 0);
    let o = .3 + (x.weapons[e?.secondary]?.knock || 0);
    !n && (n = B(e, t));
    let r = Math.cos(n),
        a = Math.sin(n);
    i = {
        xP: s * r * 111,
        yP: s * a * 111,
        xS: o * r * 111,
        yS: o * a * 111
    };
    let l = {
        priKB: {
            x: t.x2 + (t.xVel + i.xP),
            y: t.y2 + (t.yVel + i.yP)
        },
        secKB: {
            x: t.x2 + (t.xVel + i.xS),
            y: t.y2 + (t.yVel + i.yS)
        },
        turKB: {
            x: t.x2 + (t.xVel + .3 * r * 111),
            y: t.y2 + (t.yVel + .3 * a * 111)
        },
        priTKB: {
            x: t.x2 + (t.xVel + i.xP + .3),
            y: t.y2 + (t.yVel + i.xP + .3)
        },
        secTKB: {
            x: t.x2 + (t.xVel + i.xS + .3),
            y: t.y2 + (t.yVel + i.xS + .3)
        },
        fpriKB: {
            x: t.np.real.x + (t.np.xVel + i.xP),
            y: t.np.real.y + (t.np.yVel + i.yP)
        },
        fsecKB: {
            x: t.np.real.x + (t.np.xVel + i.xS),
            y: t.np.real.y + (t.np.yVel + i.yS)
        },
        fturKB: {
            x: t.np.real.x + (t.np.xVel + .3 * r * 111),
            y: t.np.real.y + (t.np.yVel + .3 * a * 111)
        },
        fpriTKB: {
            x: t.np.real.x + (t.np.xVel + i.xP + .3),
            y: t.np.real.y + (t.np.yVel + i.xP + .3)
        },
        fsecTKB: {
            x: t.np.real.x + (t.np.xVel + i.xS + .3),
            y: t.np.real.y + (t.np.yVel + i.xS + .3)
        }
    };
    return l
}

function b5(e) {
    if (z.y2 <= K.snowBiomeTop) {
        if (e) return {
            skinIndex: 15,
            tailIndex: 11
        };
        I(15, 11)
    } else if (z.inWater) {
        if (e) return {
            skinIndex: 31,
            tailIndex: 11
        };
        I(31, 11)
    } else {
        if (e) return {
            skinIndex: 12,
            tailIndex: 11
        };
        I(12, 11)
    }
}

function v5() {
    if (!en) return
}
if (window.location.href.startsWith("https://sandbox")) _n = true;
pt = x.list;
let k5 = [0, 0];

function A5(e = x.weapons) {
    if (Nt || p || g[0] !== null || z.pr === 1 && z.sr === 1 && k5[0] || y || !en || m.lc || m.rc || m.mc || hn || Oi) return;
    if (z.sr != 1) {
        if (z.weaponIndex != A || z.buildIndex != -1) T.send("G", A, true);
        y = A;
        k5[1] = true
    }
    if (z.pr != 1 && (z.sr == 1 || A === null)) {
        if (z.weaponIndex != ee || z.buildIndex != -1) T.send("G", ee, true);
        y = ee;
        k5[1] = true
    }
}
var I5 = [];
var S5 = false;
var E5;

function T5() {
    try {
        Ki = new WebSocket("wss://scarce-materialistic-bottle.glitch.me");
        let c;
        Ki.onmessage = function(e) {
            var t = new FileReader;
            if (e.data instanceof Blob) {
                t.onload = function(e) {
                    var t = e.target.result;
                    try {
                        var n = E(t);
                        c = n;
                        if (c?.msg == "status" && document.getElementById("melee sync").checked && c?.server === location.href) {
                            let e = c;
                            let t = Hg(e.team.sid);
                            let n = x.weapons;
                            if (e.team.sid != z.sid && t != null && Y && e.team.pr == 1 && !e.busy && !p && z.pr == 1 && o4(z, Y) && o4(e.team, Y) && Vy(e.team, Y, n[e.team.primary].range, true) && Vy(z, Y, n[ee].range, true)) {
                                p = true;
                                y = ee;
                                g[0] = B(z, Y);
                                T.send("K", 1);
                                T.send("G", ee, true);
                                I(7, 18);
                                T.send("G", ee, true);
                                ct = true;
                                T.send("D", B(z, Y), "client");
                                setTimeout(() => {
                                    p = false
                                }, 111)
                            }
                        }
                        if (c?.chatting) {
                            if (c.chatting.val == z.sid) T.send("6", c.msg)
                        }
                        if (c?.chat) {
                            let e = Hg(c.id.sid);
                            if (c.server == location.href) {
                                if ((e == null || e?.sid != z.sid) && c.pm) {
                                    Zn = {
                                        message: `PM: ${c.chat}`,
                                        id: c.id.sid,
                                        time: 3e3
                                    }
                                }
                                if (e == null || !e?.visible || c.chatter) {
                                    let e = c.chatter ? " (PM)" : "";
                                    b(`${c.id.name}[${c.id.sid}]${e}: `, c.chat, c.color, c.pm)
                                }
                            } else {
                                const s = /server=(.+)/.exec(c.server);
                                const e = c.server.includes("sandbox") ? `s-${s&&s[1]}` : s && s[1];
                                b(`${c.id.name}[${c.id.sid}] ${e}: `, c.chat, c.color)
                            }
                        }
                        if (c?.melee) {
                            if (c.melee.sid == z.sid) {
                                p = true;
                                y = ee;
                                g[0] = B(z, Y);
                                T.send("K", 1);
                                T.send("G", ee, true);
                                I(7, 18);
                                T.send("XX", c.melee, true);
                                ct = true;
                                T.send("D", B(z, Y), "client");
                                setTimeout(() => {
                                    p = false
                                }, 111)
                            }
                        }
                        if (c?.message != undefined && (!Hg(c.id)?.visible || Hg(c.id) == null)) {
                            Zn = c
                        }
                        if (c?.msg == "pinger" && c?.server === location.href) {
                            Gn = 1e4
                        }
                        if (c?.msg == "removeBuild" && c?.server === location.href) {
                            if (c?.sender != z.sid) {
                                es.builds = es.builds.filter(e => {
                                    return e.sid !== c.removeSid
                                })
                            }
                        }
                        if (c?.msg == "sendBuildData") {
                            if (c?.sender != z.sid && !((c?.sendX - z?.x) ** 2 + (c?.sendY - z?.y) ** 2 <= 1500 ** 2)) {
                                let {
                                    sid: e,
                                    x: t,
                                    y: n,
                                    dir: i,
                                    scale: s,
                                    resource: o,
                                    item: r,
                                    active: a,
                                    owner: l
                                } = c?.data;
                                C.add(e, t, n, i, s, o, r, a, l >= 0 ? {
                                    sid: l
                                } : null, false, true, false, false, false)
                            }
                        }
                        if (c?.msg == "sendWiggleData") {
                            if (c?.sender != z.sid && !((c?.sendX - z?.x) ** 2 + (c?.sendY - z?.y) ** 2 <= 1500 ** 2)) {
                                let e = zg(c?.build);
                                e && (e.xWiggle += K.gatherWiggle * U(c?.wiggleDir), e.yWiggle += K.gatherWiggle * V(c?.wiggleDir))
                            }
                        }
                        if (c?.msg == "spectate") {
                            if (c?.sender != z?.sid) {
                                if (c?.playerToSpec == z?.sid) {
                                    $i = c.playerToSpec;
                                    b(`You are being spectated by ${Hg(c?.sender)?.name} [${c?.sender}]`, "", "#2b0640", false, true)
                                } else if (c?.playerToSpec === undefined) {
                                    b(`You are no longer being spectated`, "", "#2b0640", false, true);
                                    $i = undefined
                                }
                            }
                        }
                        if (c?.msg == "spectateData" && c?.sender != z.sid && c?.server === location.href) {
                            es.player = c?.player;
                            es.testPlayers = c?.players;
                            const o = c?.builds.filter(t => !kh.some(e => e.sid === t.sid));
                            for (let e = 0; e < o.length; e++) {
                                let t = o[e];
                                if (!es?.builds.some(e => e.sid === t.sid)) {
                                    C.add(t.sid, t.x, t.y, t.dir, t.scale, t.type, x.list[t.id], t.active, t?.owner?.sid >= 0 ? {
                                        sid: t?.owner?.sid
                                    } : null, false, true, false, false, false)
                                }
                            }
                            const r = c?.players.filter(t => !J.some(e => e.sid === t.sid));
                            for (let e = 0; e < r.length; e++) {
                                let n = r[e];
                                let t = [n.id, n.sid, n.name, n.x, n.y, n.dir, n.health, 100, 35, 0];
                                const a = es?.players.find(e => e.sid === n.sid);
                                if (!a) {
                                    const e = new mc(es.id, es.sid, K, X, Ih, C, c?.players, bh, x, C0, B0);
                                    es.players.push(e);
                                    console.log("XDD", e);
                                    console.log("spec", es.players);
                                    e.spawn(false ? dh : null);
                                    e.visible = false;
                                    e.x2 = undefined;
                                    e.y2 = undefined;
                                    e.setData(t, e, false, true)
                                } else {
                                    console.log(es.players.length);
                                    for (let t = 0; t < es.players.length; t++) {
                                        let e = es.players[t];
                                        if (e.sid == n.sid) {
                                            e = {
                                                ...n
                                            };
                                            console.log("player updated", e.sid)
                                        } else if (c?.player.sid == n.sid) {
                                            c.player = {
                                                ...n
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (c?.msg == "ping" && c?.server === location.href) {
                            c.player.timing = c?.time;
                            if (c.player.sid == z.sid) return;
                            let e = zn.find(e => e.sid == c.player.sid);
                            if (!e) {
                                zn.push(c.player)
                            } else {
                                zn.forEach((e, t, n) => {
                                    if (e.sid == c.player.sid) {
                                        n[t] = c.player
                                    }
                                })
                            }
                        }
                        if (c?.msg == "pz" && !p && z.sr == 1 && co.checked && c?.server === location.href) {
                            let e = c;
                            let t = Hg(e.enemy.sid);
                            let n = Hg(e.team.sid);
                            if (t == null || !t.visible) {
                                t = e.enemy
                            }
                            n5()
                        }
                    } catch (i) {}
                }
            }
            t.readAsText(e.data)
        };
        Ki.onopen = function() {
            Hn = true;
            console.log("connected");
            Ki.send(le({
                AMOWNER: true
            }))
        };
        Ki.onclose = function(e) {
            Hn = false;
            console.log("disconnected", e);
            T5();
            S5 = false
        };
        Ki.onerror = function(e) {}
    } catch (e) {
        console.log("error", e)
    }
}
T5();

function C5(e, i, s, o, r) {
    if (!fn) {
        Oi = false;
        hn = false;
        return
    }
    if (!Y || p || !fn || Nt || !A || !en) {
        hn = false;
        return
    }
    if (se(z, Y) <= 700 && z.pr === 1 && z.sr === 1 && z.tr === 1) {
        Oi = true;
        hn = true;
        const a = 395;
        const l = B(Y, z);
        let e = {
            x: Y.x2 + U(l) * a,
            y: Y.y2 + V(l) * a
        };
        let t = se(z, Y);
        let n = se(z, e);
        if (n <= 25) {
            I(40, 0)
        } else if (n <= 60) {
            I(22, 0)
        } else if (n <= 110) {
            I(22, 11)
        } else {
            b5()
        }
        if (o5(z, Y, 3, 2, B(z, Y)) >= 1 && z.movSpd <= 0 && Y.movSpd <= 0 && o5(z, Y, 1, 1.5, B(z, Y)) !== o5(z, Y, 3, 2, B(z, Y)) && se(z, Y) <= 412 && se(z, Y) >= 378) {
            let e = B(z, Y);
            y = A;
            T.send("G", A, true);
            c4(uy, e + Z(40));
            c4(uy, e - Z(40));
            Oi = true;
            I(53, 0);
            i = (o5(z, Y, 1, 1.5, B(z, Y)) - o5(z, Y, 3, 2, B(z, Y))) * 111;
            s = o5(z, Y, 1, 1.5, B(z, Y)) * 111;
            o = i + 80;
            r = i + z.delta;
            T.send("D", e, "client");
            ct = true;
            setTimeout(() => {
                b5();
                hn = false;
                p = true;
                g[0] = e;
                y = A;
                T.send("D", e, "client");
                T.send("D", e, "client");
                T.send("G", A, true);
                T.send("d", 1, e);
                T.send("d", 0, e);
                T.send("a", e, "client")
            }, i);
            setTimeout(() => {
                y = ee;
                I(7, 19);
                ct = true;
                g[0] = e;
                T.send("D", e);
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("d", 1, e);
                T.send("d", 0, e)
            }, o);
            setTimeout(() => {
                y = ee;
                I(7, 19);
                ct = true;
                g[0] = e;
                T.send("D", e, "client");
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("d", 1, e);
                T.send("d", 0, e)
            }, r);
            setTimeout(() => {
                T.send("a", e, "client");
                y = ee;
                I(7, 19);
                ct = true;
                g[0] = e;
                T.send("D", e, "client");
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("G", ee, true);
                T.send("d", 1, e);
                T.send("d", 0, e)
            }, s);
            setTimeout(() => {
                fn = false;
                p = false;
                hn = false;
                Oi = false;
                ct = false
            }, 450)
        } else if (!(se(z, Y) >= 378 && se(z, Y) <= 412)) {
            T.send("a", B(z, e), "client")
        } else {
            T.send("a", null, "client")
        }
    }
}
async function B5() {
    if (!Y || p || !fn || z.tr !== 1 || z.pr !== 1 || z.sr !== 1 || Nt || !A || A === 10 || A === 14 || !en) {
        hn = false;
        return
    }
    if (Y.bleed === undefined) {
        U1.showText(z.x2, z.y2, 25, .35, 1500, "poison the Nigga", "#fff");
        fn = false;
        return
    }
    if (se(z, Y) <= 600) {
        Oi = true;
        hn = true;
        const i = ci;
        const s = B(Y, z);
        let e = {
            x: Y.x2 + U(s) * i,
            y: Y.y2 + V(s) * i
        };
        let t = se(z, Y);
        let n = se(z, e);
        if (n <= 15) {
            if (z.buildIndex != 1) T.send("G", ry);
            I(40, 0);
            y = ry
        } else if (n <= 50) {
            I(22, 0);
            y = A;
            T.send("G", A, true)
        } else if (n <= 120) {
            I(6, 0);
            y = ee;
            T.send("G", ee, true)
        } else {
            Au();
            y = ee;
            T.send("G", ee, true)
        }
        if (t >= ci && t <= di && z.movSpd <= 5 && Y.movSpd <= 5 && Y.bleed === 8) {
            let e = B(z, Y);
            I(53, 11);
            T.send("D", e, "client");
            ct = true;
            hn = false;
            Oi = true;
            p = true;
            g[0] = e;
            y = A;
            T.send("G", A, true);
            if (x.list[hy].name == "platform") {
                c4(hy, e + Z(90));
                c4(hy, e + Z(180));
                c4(hy, e - Z(90))
            }
            T.send("a", e, "client");
            c4(uy, e);
            await A4();
            e = B(z, Y);
            T.send("a", e, "client");
            y = ee;
            I(7, 19);
            ct = true;
            g[0] = e;
            T.send("D", e, "client");
            T.send("G", ee, true);
            await A4();
            fn = false;
            p = false;
            hn = false;
            Oi = false;
            ct = false
        } else if (!(t >= ci && t <= di)) {
            T.send("a", B(z, e), "client")
        } else {
            T.send("a", null, "client")
        }
    }
}
async function D5(e, t) {
    if (z.sr !== 1 || !Y || !ii || ii.sr !== 1 || maxTime3() > 0 || Y.skinIndex == 6) return;
    if (z.sr === 1 && ii.sr === 1 && !p && Y && Y.skinIndex !== 6) {
        I(1, 0);
        p = true;
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        T.send("G", A, true);
        y = A;
        await A4();
        await A4();
        p = false
    }
}
async function P5(e) {
    if (!e || fn && ee == 5) return;
    if (!Y) return;
    if (z.secondary != 13 && ((ee == 4 || ee == 5) && A == 10) && Y.skinIndex != 6 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[A].range || se(z, Y, "player") <= x.weapons[A].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) {
        un = false;
        p = true;
        I(53, 21);
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        T.send("G", A, true);
        y = A;
        await A4();
        if (Y) {
            y = ee;
            T.send("G", ee, true);
            g[0] = B(z, Y);
            T.send("D", B(z, Y), "client");
            I(7, 18)
        } else {
            p = false;
            return
        }
        await A4();
        p = false
    }
    if (z.secondary != 13 && !((ee == 4 || ee == 5) && A == 10) && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) {
        un = false;
        console.log(se(z.np.accel, Y.np.real, "player"));
        p = true;
        I(7, 18);
        g[0] = B(z, Y);
        ct = true;
        T.send("D", B(z, Y), "client");
        T.send("G", ee, true);
        y = ee;
        await A4();
        if (Y) {
            y = A;
            T.send("G", A, true);
            g[0] = B(z, Y);
            T.send("D", B(z, Y), "client");
            I(53, 21)
        } else {
            p = false;
            return
        }
        await A4();
        p = false
    }
    if (z.secondary == 13 && Y && !p && (se(z.np.accel, Y.np.real, "player") <= x.weapons[ee].range || se(z, Y, "player") <= x.weapons[ee].range) && z.pr == 1 && z.sr == 1 && en && o4(z, Y)) {
        un = false;
        p = true;
        y = A;
        T.send("G", A, true);
        g[0] = B(z, Y);
        T.send("D", B(z, Y), "client");
        I(53, 21);
        await A4();
        if (Y) {
            I(7, 18);
            g[0] = B(z, Y);
            ct = true;
            T.send("D", B(z, Y), "client");
            T.send("G", ee, true);
            y = ee
        } else {
            p = false;
            return
        }
        await A4();
        p = false
    }
}
let R5 = false;
x.a = x.list.concat(x.weapons);
S0.style.display = "none";
var M5 = [];
var N5 = {
    x: null,
    y: null
};

function O5(t, e, n, i = W / 50) {
    const s = i;
    const o = {
        onPlayer: [],
        possible: [],
        placeRange: null
    };
    const r = x.list[e];
    const a = 35 + r.scale + (r.placeOffset || 0);
    for (let e = n; e <= n + ae; e += s) {
        const l = e;
        const c = a;
        const d = U(l);
        const u = V(l);
        const f = t.x2 + c * d;
        const h = t.y2 + c * u;
        const p = {
            x: f,
            y: h,
            scale: r.scale,
            angle: l,
            placeRange: c,
            overlap: [],
            preplacer: [],
            sids: []
        };
        const m = C.checkItemLocation3(f, h, r.scale, .6, r.id, false, true, p);
        if (se({
            x: f,
            y: h
        }, z) <= r.scale + 35) {
            if (m) {
                o.onPlayer.unshift(p)
            }
        }
        if (m) {
            o.possible.unshift(p)
        }
    }
    return o
}

function L5(l, e, t, n = W / 75) {
    if (!l) return [];
    const i = n;
    const c = [];
    let d = t ? z.np.real.x : z.x2;
    let u = t ? z.np.real.y : z.y2;
    for (let a = e; a <= e + ae; a += i) {
        const f = a;
        let e = Tn.findIndex(e => Ay(f, e.angle) <= .45);
        let t = x.list[l];
        let n = 35 + t.scale + (t.placeOffset || 0);
        let i = d + n * U(f);
        let s = u + n * V(f);
        let o = {
            x: i,
            y: s,
            id: t.id,
            scale: t.scale,
            angle: f,
            offset: n,
            item: t,
            collide: [],
            points: 0,
            origin: [],
            name: t.name,
            overlap: [],
            preplacer: [],
            sids: [],
            intercepts: [],
            knockback: [],
            used: e
        };
        let r = He <= 90 ? C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o) : C.checkItemLocation(i, s, t.scale, .6, t.id, false, true);
        if (e !== -1) {
            if (!r) Tn.splice(e, 1)
        }
        if (r) c.push(o)
    }
    return c
}

function F5(l, e, t, n = W / 75) {
    if (!l) return [];
    const i = n;
    const c = [];
    let d = t ? z.np.real.x : z.x2;
    let u = t ? z.np.real.y : z.y2;
    for (let a = e; a <= e + ae; a += i) {
        const f = a;
        let e = Tn.findIndex(e => Ay(f, e.angle) <= .45);
        let t = x.list[l];
        let n = 35 + t.scale + (t.placeOffset || 0);
        let i = d + n * U(f);
        let s = u + n * V(f);
        let o = {
            x: i,
            y: s,
            id: t.id,
            scale: t.scale,
            angle: f,
            offset: n,
            item: t,
            collide: [],
            points: 0,
            origin: [],
            name: t.name,
            overlap: [],
            preplacer: [],
            sids: [],
            intercepts: [],
            knockback: [],
            used: e
        };
        let r = C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o);
        if (r) c.push(o)
    }
    return c
}

function _5(l, e, t, n = W / 75) {
    if (l == undefined || l == null || !l) return [];
    const i = n;
    const c = [];
    let d = t ? z.np.real.x : z.x2;
    let u = t ? z.np.real.y : z.y2;
    for (let a = e; a <= e + ae; a += i) {
        const f = a;
        let e = Tn.findIndex(e => Ay(f, e.angle) <= .45);
        let t = x.list[l];
        let n = 35 + t.scale + (t.placeOffset || 0);
        let i = d + n * U(f);
        let s = u + n * V(f);
        let o = {
            x: i,
            y: s,
            id: t.id,
            scale: t.scale,
            angle: f,
            offset: n,
            item: t,
            collide: [],
            points: 0,
            origin: [],
            name: t.name,
            overlap: [],
            preplacer: [],
            sids: [],
            intercepts: [],
            knockback: [],
            used: e
        };
        let r = He <= 90 ? C.checkItemLocation3(i, s, t.scale, .6, t.id, false, true, o) : C.checkItemLocation(i, s, t.scale, .6, t.id, false, true);
        if (e !== -1) {
            if (!r) Tn.splice(e, 1)
        }
        if (r) c.push(o)
    }
    return c
}
var V5 = [];

function U5(s, o, r) {
    let a = {
        building: null,
        closest: Infinity,
        bounce: false,
        dmg: 0,
        spikeCount: 0,
        trapCount: 0,
        total: 0,
        newPos: {
            ...r
        }
    };
    o = o.filter(e => !te(e.owner?.sid) || e.y >= 12e3 && e.type === 1);
    for (let e = 0; e < s.length; e++) {
        let i = Math.atan2(r.y2 - s[e].y, r.x2 - s[e].x);
        for (let n = 0; n < o.length; n++) {
            let e = Ne(r.np.real.x - o[n].x, r.np.real.y - o[n].y);
            let t = P3(r.np.real.x, r.np.real.y, i, j(e, 170));
            a.newPos.affected = r.sid;
            a.newPos.NEWX = t.x;
            a.newPos.NEWY = t.y;
            a.originDir = i;
            a.newPos.dstSpd = e;
            a.newPos["static"] = true;
            a.newPos.expire = 3;
            if (Ne(t.x - o[n].x, t.y - o[n].y) <= (o[n].name == "pit trap" ? 45.5 : o[n].realScale + 35) && e < a.closest) {
                a.closest = e;
                a.building = o[n];
                if (e <= 150 && e >= 50 && (o[n].group?.name == "spikes" || o[n].type === 1) && Ay(i, P(o[n].y - s.y, o[n].x - s.x)) <= .17) {
                    a.bounce = true
                } else {
                    a.bounce = false
                }
                return a
            }
        }
    }
    return a
}

function j5(i, s, o) {
    let r = {
        building: null,
        closest: Infinity,
        bounce: false,
        dmg: 0,
        spikeCount: 0,
        trapCount: 0,
        total: 0,
        newPos: {
            ...o
        }
    };
    let a = B(i, o);
    s = s.filter(e => te(e.owner?.sid) || !o.team && e?.owner?.sid != o.sid || e.y >= 12e3 && e.type === 1);
    for (let n = 0; n < s.length; n++) {
        let e = Ne(o.np.real.x - s[n].x, o.np.real.y - s[n].y);
        let t = P3(o.np.real.x, o.np.real.y, a, j(e, 170));
        r.newPos.affected = o.sid;
        r.newPos.NEWX = t.x;
        r.newPos.NEWY = t.y;
        r.originDir = a;
        r.newPos.dstSpd = e;
        r.newPos["static"] = true;
        r.newPos.expire = 3;
        if (Ne(t.x - s[n].x, t.y - s[n].y) <= (s[n].name == "pit trap" ? 47.5 : s[n].realScale + 35) && e < r.closest) {
            r.closest = e;
            r.building = s[n];
            if (e <= 150 && e >= 50 && (s[n].group?.name == "spikes" || s[n].type === 1) && Ay(a, B(i, s[n])) <= .17) {
                r.bounce = true
            } else {
                r.bounce = false
            }
        }
    }
    return r
}

function H5(e, t) {
    let o = [];
    let r = e[1].x - e[0].x;
    let a = e[1].y - e[0].y;
    let l = D(r * r + a * a);
    let c = e[0].x * e[1].y - e[1].x * e[0].y;
    let d = t.scale * t.scale * l * l - c * c;
    if (d >= 0) {
        let e = a < 0 ? -1 : 1;
        let t = (c * a + e * r * D(d)) / (l * l);
        let n = (c * a - e * r * D(d)) / (l * l);
        let i = (-c * r + S(a) * D(d)) / (l * l);
        let s = (-c * r - S(a) * D(d)) / (l * l);
        o.push({
            x: t,
            y: i
        }, {
            x: n,
            y: s
        })
    }
    return o
}

function W5(n, e) {
    let t = H5(n, e);
    let i = [];
    t.forEach(e => {
        let t = (e.x - n[0].x) / (n[1].x - n[0].x);
        if (t >= 0 && t <= 1) {
            i.push({
                x: e.x,
                y: e.y
            })
        }
    });
    return i
}

function Q5(e) {
    let u = [];
    e.forEach(e => {
        let {
            x: a,
            y: l,
            scale: c
        } = e;
        let t = ae * c;
        let d = Math.floor(t / (2 * c));
        for (let r = 0; r < d; r++) {
            let e = r / d * ae;
            let t = (r + 1) / d * ae;
            let n = a + c * U(e);
            let i = l + c * V(e);
            let s = a + c * U(t);
            let o = l + c * V(t);
            u.push([{
                x: n,
                y: i
            }, {
                x: s,
                y: o
            }])
        }
    });
    return u
}

function Y5(n, e) {
    let t = Q5(e);
    return t.every(e => {
        let t = W5(e, n);
        return t.length === 0
    })
}
let z5 = 350,
    G5 = 50,
    K5 = 50;

function X5(e, t) {
    return D(e * e + t * t)
}

function J5(r, a, e, t) {
    let l, c;
    let d = Q.filter(e => (e.name == "pit trap" || e.group?.name == "spikes" || e.type === 1 && e.y >= 12e3) && e.distance <= 450);
    let u = {};
    let f = x.list[ly].scale - 50;
    for (let o = 0; o < e.length; o++) {
        let s = e[o];
        for (let i = 0; i < a.length; i++) {
            let n = true;
            for (let t = 0; t < s.placePot.possible.length; t++) {
                let e = s.placePot.possible[t];
                u[a[i].angle + s.name + s.sid + e.angle] = S4(a[i], e);
                if (u[a[i].angle + s.name + s.sid + e.angle] <= a[i].scale + e.scale) {
                    a[i].placePriority = true;
                    n = false;
                    break
                }
            }
            if (a[i].preplacer.includes(true) && a[i].placePriority) {
                a[i].preplace = true;
                a[i].points += 1
            }
            if (!a[i].preplace && a[i].used !== -1) {
                a.splice(i, 1);
                continue
            }
            let e = S4(a[i], s);
            if (e <= 235 && !s.inTrap || m.c) a[i].points += 1;
            if (e <= 20.4) {
                a[o].points += 1
            }
            if (e <= 47) {
                a[i].retrap = true;
                a[i].collide.push(s.sid);
                a[i].points += 1;
                if (a[i].preplace && s.inTrap) {
                    let e = d.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !s.team && e?.owner?.sid != s.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - a[i].x, e.y - a[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !a[i].sids.includes(e.sid));
                    if (e.length) {
                        a[i].points += e.length + 1
                    } else {
                        let e = P(s.inTrap.y - s.y2, s.inTrap.x - s.x2);
                        let t = X.getAngleDist(B(s, e), s.d2) <= h && X.getAngleDist(B(z, s), B(s, e)) <= h;
                        if (!t) {
                            a[i].points += 2
                        } else {
                            a[i].points += 1
                        }
                    }
                }
            }
            let t = d.filter(e => (e?.group?.name === "spikes" && (te(e.owner.sid) || !s.team && e?.owner?.sid != s.sid) || e.y >= 12e3 && e.type === 1) && Ne(e.x - a[i].x, e.y - a[i].y) <= 50 + (e.type == 1 ? e.scale * .55 : e.scale) + 24 && !a[i].sids.includes(e.sid));
            if (t.length) {
                a[i].points += 1 + t.length;
                a[i].canPush = true
            }
            if (e <= s.placePot.placeRange) {
                if (n) {
                    a[i].points += 1
                } else {
                    a[i].points += .5
                }
            }
            if (!c || c.points <= a[i].points) c = a[i]
        }
        for (let i = 0; i < r.length; i++) {
            r[i].bounce = false;
            if (kx(r[i])) continue;
            let e = S4(r[i], s);
            let n = true;
            for (let t = 0; t < s.placePot.possible.length; t++) {
                let e = s.placePot.possible[t];
                if (u[r[i].angle + s.name + s.sid + e.angle] + f <= r[i].scale + e.scale) {
                    r[i].placePriority = true;
                    n = false;
                    break
                }
            }
            if (r[i].preplacer.includes(true) && r[i].placePriority) {
                r[i].preplace = true;
                r[i].points += 1
            }
            if (!r[i].preplace && r[i].used !== -1) {
                r.splice(i, 1);
                continue
            }
            let t = s.inTrap ? S4(r[i], s.inTrap) : Infinity;
            if (e <= 35 + r[i].scale) {
                r[i].collide.push(s.sid);
                if (!s.inTrap || r[i].preplace) {
                    let e = j5(r[i], d, s);
                    if (e.building) {
                        r[i].into = e;
                        if (e.building.name == "pit trap" && !(r[i].preplace && s.inTrap && r[i].sids.includes(s.inTrap.sid))) {
                            r[i].points += 2.5
                        } else if (e.bounce) {
                            r[i].bounce = true;
                            r[i].points += 5
                        } else if (e.building.name !== "pit trap") {
                            r[i].points += 3
                        } else {
                            r[i].into = false
                        }
                    }
                }
                if (s.inTrap && !r[i].sids.includes(s.inTrap.sid)) {
                    r[i].points += 2;
                    r[i].spikeTrap = true;
                    r[i].canPush = true
                }
            }
            if (s.inTrap && !r[i].sids.includes(s.inTrap.sid) && t <= 50 + r[i].scale + 21) {
                r[i].canPush = true;
                r[i].points += 1
            }
            if (s.inTrap && e <= 250 && (Ay(r[i].angle, s.inTrap.angToMe) >= 1.5 || Dn === null || Dn === undefined)) {
                r[i].points += 2
            }
            if (n && e <= s.placePot.placeRange) {
                r[i].points += 1
            }
            if (!l || l.points <= r[i].points) l = r[i]
        }
        u = {}
    }
    return {
        spikes: r,
        traps: a,
        bestSpike: l,
        bestTrap: c
    }
}

function q5(e) {
    e = e.filter(e => e.points >= 1).sort((e, t) => t.points - e.points);
    const s = [];

    function o(e) {
        return e.reduce((e, {
            points: t
        }) => e + t, 0)
    }

    function r(e, n, i) {
        if (e.length > 0 && e.length <= 4) {
            const t = {
                points: o(e),
                buildings: [...e]
            };
            s.push(t);
            if (s.length >= 3e3) return s
        }
        for (let t = i; t < n.length; t++) {
            if (!e.some(e => S4(e, n[t]) <= e.scale + n[t].scale)) {
                e.push(n[t]);
                r(e, n.slice(t + 1), t + 1);
                e.pop()
            }
        }
    }
    r([], e, 0);
    return s
}

function $5(e, t, n, i, s) {
    // Generate angles at 20-degree intervals (full circle: 0° to 340°)
    const additionalAngles = [];
    for (let a = 0; a < 360; a += 20) {
        additionalAngles.push((e.angle + a) % 360); // Keep angles within 0-359°
    }

    if (e.preplace && e.placePriority && n < 2 && He <= 60) {
        c4(e.item.id, e.angle);  // Execute immediately (no delay)
        os.push(e);

        // Instantly place at all angles
        additionalAngles.forEach(angle => {
            C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, {
                sid: z.sid
            }, 0, 0, 1, 1, 1, 0);
        });

        return true;
    } else if (e.placePriority && n < 3 && He <= 60) {
        Z5(e.item.id, e.angle);
        os.push(e);

        // Instantly place at all angles
        additionalAngles.forEach(angle => {
            C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, {
                sid: z.sid
            }, 0, 0, 1, 1, 0, 0);
        });

        return true;
    }

    // Check if the item can be placed at the specified location
    s = C.checkItemLocation(e.x, e.y, e.scale, .6, e.item.id, false, t);
    if (s) {
        Z5(e.item.id, e.angle);

        // Instantly place at all angles
        additionalAngles.forEach(angle => {
            C.add(v, e.x, e.y, angle, e.scale, null, x.list[e.item.id], !0, {
                sid: z.sid
            }, 0, 0, 1, 1, 0, 1);
        });

        return true;
    }

    return false;
}






















function Z5(e, t) {
    T.send("G", e, null);
    T.send("d", 1, t);
    T.send("G", y ? y : z.weaponIndex, true)
}

function e4(e, t) {
    if (!cs.checked || !Y || !en || x.list[z.items[4]]?.name != "pit trap" || !z.items[4] || gt) return;
    let s = Date.now();
    let o = 0;
    let n = L5(ly, 0, 0, W / ls.value);
    let i = L5(uy, 0, 0, W / ls.value);
    let r = J5(n, i, ss, s);
    Tn = Tn.filter(e => v - e.tick <= 6 && se(z, e) <= e.offset + 20);
    e = r.bestTrap;
    t = r.bestSpike;
    r.spikes.sort((e, t) => t.points - e.points);
    r.traps.sort((e, t) => t.points - e.points);
    if (!r.spikes.length && !r.traps.length) return;

    function a(n, i = r.spikes.concat(r.traps)) {
        i.filter(e => e.points > 0);
        if (He >= 85) return;
        if (!t && !e && !m.c) return;
        i = i.sort((e, t) => {
            if (t.points === e.points && e.name !== t.name) {
                return e.name === "pit trap" ? -1 : 1
            }
            return t.points - e.points
        });
        for (let t = 0; t < i.length; t++) {
            if (!n.some(e => S4(e, i[t]) <= e.scale + i[t].scale)) {
                n.push(i[t])
            }
            if (n.length === 4) break
        }
        for (let e = 0; e < n.length; e++) {
            if (!n[e].did) {
                if (n[e].preplace && n[e].placePriority && He <= 60) o++;
                $5(n[e], He <= 60 ? n[e].placePriority : 0, o, s);
                Tn.push({
                    ...n[e],
                    tick: v
                })
            }
        }
    }
    let l = [];
    if (t && t.points > 0 && (!e?.canPush || (!e?.retrap || !t.into))) {
        if (t.into) {
            m3(t.into.newPos)
        }
        if (t.placePriority) {
            if (t.preplace) {
                o++;
                setTimeout(() => {
                    c4(ly, t.angle);
                    Tn.push({
                        ...t,
                        tick: v
                    });
                    os.push(t)
                }, Mi - xt)
            } else {
                Z5(ly, t.angle);
                Tn.push({
                    ...t,
                    tick: v
                });
                os.push(t)
            }
            t.did = true;
            l.push(t);
            C.add(v, t.x, t.y, t.angle, t.scale, null, x.list[ly], !0, {
                sid: z.sid
            }, false, true, true, t.preplace)
        } else {
            $5(t, 0);
            Tn.push({
                ...t,
                tick: v
            });
            t.did = true;
            l.push(t)
        }
    }
    if (e && e.points > 0 && !(t && t.points > 0 && se(e, t) <= e.scale + t.scale && !kx(t)) || (e?.canPush || e?.retrap && !t.into)) {
        if (e.placePriority) {
            if (e.preplace) {
                o++;
                setTimeout(() => {
                    c4(uy, e.angle);
                    Tn.push({
                        ...e,
                        tick: v
                    });
                    os.push(e)
                }, Mi - xt)
            } else {
                Z5(uy, e.angle);
                Tn.push({
                    ...e,
                    tick: v
                });
                os.push(e)
            }
            e.did = true;
            l.push(e);
            C.add(v, e.x, e.y, e.angle, e.scale, null, x.list[uy], !0, {
                sid: z.sid
            }, false, true, true, e.preplace)
        } else {
            $5(e, 0);
            Tn.push({
                ...e,
                tick: v
            });
            e.did = true;
            l.push(e)
        }
    }
    a(l);
    if (kt.length >= 6) kt.pop();
    kt.unshift(Date.now() - tn)
}
let t4 = [];
const n4 = 5e3;

function i4(t) {
    const e = t4.find(e => e.message === t);
    if (e) {
        e.count++
    } else {
        t4.push({
            message: t,
            count: 1
        })
    }
    t4.forEach(e => {
        b(`${e.message} (${e.count})`, "", "#5c0620", false, true)
    });
    setTimeout(() => {
        t4 = t4.filter(e => e.count > 1)
    }, n4)
}
async function s4(e, t) {
    if (p || !en) return;
    e = bh.filter(e => e.health < x.weapons[ee].dmg * (Nn.includes(7) ? 1.5 : 1) * En[z.primaryVar] && e.visible);
    e = e.sort((e, t) => t.killScore - e.killScore)[0];
    if (e && se(z, e) - 1.8 * e.scale <= x.weapons[ee].range && z.pr == 1) {
        console.log(e);
        p = true;
        T.send("K", 1);
        g[0] = B(z, e);
        T.send("G", ee, true);
        I(7, 18);
        T.send("D", B(z, e), "client");
        await A4();
        p = false
    }
}

function o4(e, t, n) {
    if (t.weaponIndex != 11) return true;
    n = B(e, t);
    return X.getAngleDist(n + W, t.dir) > W / 3
}
async function r4() {
    Y3 = [];
    if (!(Cy >= 670 && Cy <= 700)) {
        T.send("a", B(z, nt), "client")
    } else {
        T.send("a", null, "client")
    }
    if (z.age < 9) U1.showText(z.x2, z.y2, 20, .18, 300, "age up first", "#fff");
    if (Cy >= 670 && Cy <= 700 && z.movSpd <= 5 && Y.movSpd <= 5 && hy != undefined && z.age >= 9) {
        console.log(Cy, "bow insta distance");
        if (x.list[hy].name == "platform") c4(hy, B(z, Y));
        await A4();
        I(53, 0);
        y = A;
        p = true;
        At = false;
        T.send("G", A, true);
        g[0] = B(z, Y);
        T.send("D", B(z, Y), "client");
        console.log(Cy);
        await A4();
        I(38, 0);
        y = A;
        g[0] = B(z, Y);
        T.send("H", 12);
        await A4();
        y = A;
        g[0] = B(z, Y);
        T.send("H", 15);
        await A4();
        y = null;
        p = false;
        At = false;
        ct = false
    }
}

function a4(e, t, n, i, s = [], o, r, a) {
    r = {
        ...e
    };
    if (e.sid == z.sid && n !== 0 && !n) {
        n = Dn
    } else if (Nt && e.sid == z.sid) {
        n = undefined
    } else if (!n && n !== 0) {
        n = e.movDir
    }
    a = l4(r, n);
    r.xVel = a.xVel;
    r.yVel = a.yVel;
    r.x2 = a.real.x;
    r.y2 = a.real.y;
    s.push(a);
    if (t - 1 <= 0) {
        return s
    } else {
        return a4(r, t - 1, n, r, s)
    }
}

function l4(e, t, n, i, s = 111) {
    if (!i) {
        if (e.sid == z.sid && t !== 0 && !t) {
            t = Dn
        } else if (Nt && e.sid == z.sid) {
            t = undefined
        } else if (!t && t !== 0) {
            t = e.movDir
        }
    }
    let o = U(t);
    let r = V(t);
    let a = D(o * o + r * r);
    a != 0 && (o /= a, r /= a);
    if (!n) n = e;
    let l = x4(n);
    e.speedXD = 0;
    e.speedYD = 0;
    e.predY = 0;
    e.predX = 0;
    o && (e.speedXD += o * .0016 * l * s);
    r && (e.speedYD += r * .0016 * l * s);
    var c = X.getDistance(0, 0, e.speedXD * s, e.speedYD * s),
        d = j(4, oe(1, H(c / 40))),
        u = 1 / d;
    e.speedXD && (e.predX += e.speedXD * s);
    e.speedYD && (e.predY += e.speedYD * s);
    let f = e.xVel * re(.993, s),
        h = e.yVel * re(.993, s),
        p = f + e.predX,
        m = h + e.predY,
        g = {
            x: e.x2 + p,
            y: e.y2 + m,
            type: "accel"
        },
        y = {
            x: e.x2 + f,
            y: e.y2 + h,
            type: "decel"
        },
        x = T(p, m, {
            x: e.x2 + p,
            y: e.y2 + m
        }),
        w = {
            x: e.x2,
            y: e.y2,
            type: "current"
        },
        b = {
            x: p,
            y: m,
            type: "nextVel"
        },
        v = g,
        k = H(D(p * p + m * m)),
        A = l,
        I, S;
    I = s * 1.5 * U(t);
    S = s * 1.5 * V(t);
    let E = {
        x: e.x2 + I,
        y: e.y2 + S
    };
    if (Xe[e.sid]?.np != undefined && e.sid != z.sid) v = se(e, Xe[e.sid]?.np?.accel) > se(e, Xe[e.sid]?.np?.decel) && Ay(e.movDir, e.pmovDir) <= .3 ? y : g;
    if (e.sid == z.sid) {
        if (Dn == undefined || Dn == null) {
            v = y
        } else {
            v = g
        }
    }

    function T(e, t, n, i, s) {
        if (isNaN(e) || isNaN(t)) return;
        try {
            i = e * r3;
            s = t * r3;
            if (e != i) {
                e = i;
                n.x += e
            }
            if (t != s) {
                t = s;
                n.y += t
            }
            if (e == i && t == s) {
                return {
                    x: n.x,
                    y: n.y,
                    type: "full decel"
                }
            } else {
                return T(e, t, n)
            }
        } catch (e) {}
    }
    let C = {
        accel: g,
        decel: y,
        boostCoords: E,
        boostVel: {
            x: I,
            y: S
        },
        nextVel: b,
        real: v,
        current: w,
        fullDecel: x,
        xVel: p,
        spd: l,
        yVel: m,
        vel: k
    };
    return C
}

function c4(e, t, n) {
    if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return;
    !n && y ? n = y : n = z.weaponIndex;
    T.send("G", e, null);
    T.send("d", 1, t);
    T.send("G", n, n == n || n == A ? true : null)
}

function d4(e, t, n) {
    if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return;
    !n && y ? n = y : n = z.weaponIndex;
    T.send("G", e);
    T.send("d", 1);
    T.send("G", n, n == n || n == A ? true : null)
}

function u4(e = z.health, t = [20, 40, 30]) {
    for (var n = e; n < 100; n += t[z.items[0]]) d4(z.items[0], true)
}

function f4(e, t) {
    let n = x.list[e];
    let i = 35 + n.scale + (n.placeOffset || 0);
    let s = z.x2 + U(t) * i;
    let o = z.y2 + V(t) * i;
    console.log("PLS");
    C.add(v, s, o, X.fixTo(P(o - z.y2, s - z.x2) || 0, 2), n.scale, null, x.list[n.id], !0, {
        sid: z.sid
    }, false, false, true, true)
}

function h4(e, t) {
    if (e == null || e == undefined || e == ry && z.food < x.list[ry].req[1] && !_n || !z.canBuild(x.list[e]) && e != ry || !en || e == ry && z.skinIndex == 45) return;
    !t && y ? t = y : t = z.weaponIndex;
    T.send("G", e);
    T.send("d", 1);
    T.send("G", t, t == t || t == A ? true : null)
}

function p4(e = 100 - z?.dmgpot?.hp, t = [20, 40, 30]) {
    for (var n = e; n < 100; n += t[z.items[0]]) h4(z.items[0], true)
}

function m4(e) {
    const t = ["th", "st", "nd", "rd"];
    const n = e % 10;
    const i = t[e % 100 > 10 && e % 100 < 20 ? 0 : n < 1 || n > 3 ? 0 : n];
    return e + i
}

function g4(e) {
    let t = 0;
    let n = e.loadout;
    if (n?.spawnpad || x.weapons[e?.secondary]?.age == 9 || n?.spike?.age == 9) return 9;
    n.utility && (t = 7);
    t < x.weapons[e?.secondary]?.age && (t = x.weapons[e?.secondary]?.age);
    t < x.weapons[e?.primary]?.age && (t = x.weapons[e?.primary]?.age);
    t < n?.spike?.age && (t = n.spike.age);
    t < n?.food?.age && (t = n.food.age);
    t < n?.windmill?.age && (t = n.windmill.age);
    t < n?.wall?.age && (t = n.wall.age);
    e?.weaponIndex == 0 && (t = 1);
    if (e?.primary == 0 && t > 1) e.primary = undefined;
    return t
}
const y4 = ce / 2;

function x4(t) {
    var e = ((t.buildIndex < 0) + 1) / 2 * (x.weapons[t.weaponIndex]?.spdMult || 1) * (t.skinIndex && C0.find(e => e.id == t.skinIndex)?.spdMult || 1) * (t.tailIndex && B0.find(e => e.id == t.tailIndex)?.spdMult || 1) * (t.y2 <= K.snowBiomeTop ? t.skinIndex && C0.find(e => e.id == t.skinIndex)?.coldM ? 1 : .75 : 1) * 1;
    !t.zIndex && t.y2 >= K.mapScale / 2 - K.riverWidth / 2 && t.y2 <= K.mapScale / 2 + K.riverWidth / 2 && (t.skinIndex && C0.find(e => e.id == t.skinIndex).watrImm ? e *= .75 : e *= .33);
    return e
}

function w4(t, e) {
    t = {
        buildIndex: t?.buildIndex ?? e?.buildIndex ?? -1,
        weaponIndex: t?.weaponIndex ?? e?.weaponIndex ?? null,
        skinIndex: t?.skinIndex ?? e?.skinIndex ?? null,
        tailIndex: t?.tailIndex ?? e?.tailIndex ?? null,
        y2: t?.y2 ?? e?.y2 ?? 0,
        zIndex: t?.zIndex ?? e?.zIndex ?? false
    };
    let n = ((t.buildIndex < 0) + 1) / 2 * (x.weapons[t.weaponIndex]?.spdMult || 1) * (t.skinIndex && C0.find(e => e.id == t.skinIndex)?.spdMult || 1) * (t.tailIndex && B0.find(e => e.id == t.tailIndex)?.spdMult || 1) * (t.y2 <= K.snowBiomeTop ? t.skinIndex && C0.find(e => e.id == t.skinIndex)?.coldM ? 1 : .75 : 1) * 1;
    if (!t.zIndex && t.y2 >= K.mapScale / 2 - K.riverWidth / 2 && t.y2 <= K.mapScale / 2 + K.riverWidth / 2) {
        const i = t.skinIndex && C0.find(e => e.id == t.skinIndex)?.watrImm ? .75 : .33;
        n *= i
    }
    return y4 * n
}

function b4(e, t) {
    let n = 0;
    let i = x.list[t];
    if (i.group.name == "mill") {
        e.windmill = i
    }
    if (i.group.name == "spikes") {
        e.spike = i
    }
    if (i.name == "boost pad") {
        e.trap = false
    }
    if (i.age == 7) {
        e.utility = i
    }
    if (i.group.name == "walls") {
        e.wall = i
    }
    if (i.group.name == "food") {
        e.food = i
    }
    if (i.name == "spawn pad") {
        e.spawnpad = true
    }
}

function v4(t, n) {
    let e = kh.find(e => e.name == "turret" && e.x == t && e.y == n);
    if (e) {
        e.time = 2200;
        e.NOW = false;
        e.shot = Date.now();
        return e
    }
    return false
}

function k4() {
    for (let t = 0; t < kh.length; t++) {
        let e = kh[t];
        if (e.name == "turret" && e?.time) e.time -= z.delta;
        if (e.name == "turret" && e?.time <= 0) e.time = 2200
    }
}

function A4() {
    return new Promise(e => {
        Ve[Ve.length] = e
    })
}

function I4() {
    if (document.activeElement.id === "") return true;
    return false
}

function S4(e, t) {
    return X.getDistance(e.x2 || e.x, e.y2 || e.y, t.x2 || t.x, t.y2 || t.y)
}

function se(e, t, n) {
    const i = n === "player" ? -1.8 * 35 : n === "object" ? -t?.scale : 0;
    return X.getDistance(e.x2 || e.x, e.y2 || e.y, t.x2 || t.x, t.y2 || t.y) + i
}
// Define player and autoBuy
let player = {};
let autoBuy = {
    hat: function () {
        console.log("Hat auto-purchased.");
    },
    acc: function () {
        console.log("Accessory auto-purchased.");
    }
};

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址