const buildTimestamp = "1755857762079"; const dictionary = {"game":"aD","gIsReplay":"gw","playerData":"ag","rawPlayerNames":"a0n","playerBalances":"gp","playerTerritories":"gb","gIsTeamGame":"hh","playerId":"eX","playerNames":"yc","gameState":"a09","fontSize":"fontSize","x":"eu","y":"ew","canvas":"hp","gHumans":"kA","playerStates":"a3T","fontGeneratorFunction":"bA.qb.sQ","gLobbyMaxJoin":"xE","data":"data","playerCount":"playerCount","gBots":"kW","strs":"aAw","gIsSingleplayer":"kU","uiSizes":"bc","gap":"gap","gMaxPlayers":"ek","i":"aB","MenuManager":"aa","getState":"a1K"}; (()=>{"use strict";var e={2862:(e,t,n)=>{var o=n(6863);n(4151),e.exports=o},5124:(e,t,n)=>{n(9678);var o=n(7015);e.exports=o("Array","toReversed")},9306:(e,t,n)=>{var o=n(4901),r=n(6823),i=TypeError;e.exports=function(e){if(o(e))return e;throw new i(r(e)+" is not a function")}},6469:(e,t,n)=>{var o=n(8227),r=n(2360),i=n(4913).f,a=o("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:r(null)}),e.exports=function(e){s[a][e]=!0}},8551:(e,t,n)=>{var o=n(34),r=String,i=TypeError;e.exports=function(e){if(o(e))return e;throw new i(r(e)+" is not an object")}},9617:(e,t,n)=>{var o=n(5397),r=n(5610),i=n(6198),a=function(e){return function(t,n,a){var s=o(t),l=i(s);if(0===l)return!e&&-1;var c,u=r(a,l);if(e&&n!=n){for(;l>u;)if((c=s[u++])!=c)return!0}else for(;l>u;u++)if((e||u in s)&&s[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7628:(e,t,n)=>{var o=n(6198);e.exports=function(e,t){for(var n=o(e),r=new t(n),i=0;i{var o=n(9504),r=o({}.toString),i=o("".slice);e.exports=function(e){return i(r(e),8,-1)}},7740:(e,t,n)=>{var o=n(9297),r=n(5031),i=n(7347),a=n(4913);e.exports=function(e,t,n){for(var s=r(t),l=a.f,c=i.f,u=0;u{var o=n(3724),r=n(4913),i=n(6980);e.exports=o?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},6980:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},6840:(e,t,n)=>{var o=n(4901),r=n(4913),i=n(283),a=n(9433);e.exports=function(e,t,n,s){s||(s={});var l=s.enumerable,c=void 0!==s.name?s.name:t;if(o(n)&&i(n,c,s),s.global)l?e[t]=n:a(t,n);else{try{s.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=n:r.f(e,t,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},9433:(e,t,n)=>{var o=n(4576),r=Object.defineProperty;e.exports=function(e,t){try{r(o,e,{value:t,configurable:!0,writable:!0})}catch(n){o[e]=t}return t}},3724:(e,t,n)=>{var o=n(9039);e.exports=!o((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,n)=>{var o=n(4576),r=n(34),i=o.document,a=r(i)&&r(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},7015:(e,t,n)=>{var o=n(4576),r=n(9504);e.exports=function(e,t){return r(o[e].prototype[t])}},8727:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2839:(e,t,n)=>{var o=n(4576).navigator,r=o&&o.userAgent;e.exports=r?String(r):""},9519:(e,t,n)=>{var o,r,i=n(4576),a=n(2839),s=i.process,l=i.Deno,c=s&&s.versions||l&&l.version,u=c&&c.v8;u&&(r=(o=u.split("."))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&a&&(!(o=a.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=a.match(/Chrome\/(\d+)/))&&(r=+o[1]),e.exports=r},6518:(e,t,n)=>{var o=n(4576),r=n(7347).f,i=n(6699),a=n(6840),s=n(9433),l=n(7740),c=n(2796);e.exports=function(e,t){var n,u,d,p,f,h=e.target,y=e.global,m=e.stat;if(n=y?o:m?o[h]||s(h,{}):o[h]&&o[h].prototype)for(u in t){if(p=t[u],d=e.dontCallGetSet?(f=r(n,u))&&f.value:n[u],!c(y?u:h+(m?".":"#")+u,e.forced)&&void 0!==d){if(typeof p==typeof d)continue;l(p,d)}(e.sham||d&&d.sham)&&i(p,"sham",!0),a(n,u,p,e)}}},9039:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},616:(e,t,n)=>{var o=n(9039);e.exports=!o((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,n)=>{var o=n(616),r=Function.prototype.call;e.exports=o?r.bind(r):function(){return r.apply(r,arguments)}},350:(e,t,n)=>{var o=n(3724),r=n(9297),i=Function.prototype,a=o&&Object.getOwnPropertyDescriptor,s=r(i,"name"),l=s&&"something"===function(){}.name,c=s&&(!o||o&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:c}},9504:(e,t,n)=>{var o=n(616),r=Function.prototype,i=r.call,a=o&&r.bind.bind(i,i);e.exports=o?a:function(e){return function(){return i.apply(e,arguments)}}},7751:(e,t,n)=>{var o=n(4576),r=n(4901);e.exports=function(e,t){return arguments.length<2?(n=o[e],r(n)?n:void 0):o[e]&&o[e][t];var n}},5966:(e,t,n)=>{var o=n(9306),r=n(4117);e.exports=function(e,t){var n=e[t];return r(n)?void 0:o(n)}},4576:function(e,t,n){var o=function(e){return e&&e.Math===Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||o("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,n)=>{var o=n(9504),r=n(8981),i=o({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(r(e),t)}},421:e=>{e.exports={}},397:(e,t,n)=>{var o=n(7751);e.exports=o("document","documentElement")},5917:(e,t,n)=>{var o=n(3724),r=n(9039),i=n(4055);e.exports=!o&&!r((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,n)=>{var o=n(9504),r=n(9039),i=n(2195),a=Object,s=o("".split);e.exports=r((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},3706:(e,t,n)=>{var o=n(9504),r=n(4901),i=n(7629),a=o(Function.toString);r(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},1181:(e,t,n)=>{var o,r,i,a=n(8622),s=n(4576),l=n(34),c=n(6699),u=n(9297),d=n(7629),p=n(6119),f=n(421),h="Object already initialized",y=s.TypeError,m=s.WeakMap;if(a||d.state){var b=d.state||(d.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,o=function(e,t){if(b.has(e))throw new y(h);return t.facade=e,b.set(e,t),t},r=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var g=p("state");f[g]=!0,o=function(e,t){if(u(e,g))throw new y(h);return t.facade=e,c(e,g,t),t},r=function(e){return u(e,g)?e[g]:{}},i=function(e){return u(e,g)}}e.exports={set:o,get:r,has:i,enforce:function(e){return i(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=r(t)).type!==e)throw new y("Incompatible receiver, "+e+" required");return n}}}},4901:e=>{var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},2796:(e,t,n)=>{var o=n(9039),r=n(4901),i=/#|\.prototype\./,a=function(e,t){var n=l[s(e)];return n===u||n!==c&&(r(t)?o(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=a.data={},c=a.NATIVE="N",u=a.POLYFILL="P";e.exports=a},4117:e=>{e.exports=function(e){return null==e}},34:(e,t,n)=>{var o=n(4901);e.exports=function(e){return"object"==typeof e?null!==e:o(e)}},6395:e=>{e.exports=!1},757:(e,t,n)=>{var o=n(7751),r=n(4901),i=n(1625),a=n(7040),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return r(t)&&i(t.prototype,s(e))}},6198:(e,t,n)=>{var o=n(8014);e.exports=function(e){return o(e.length)}},283:(e,t,n)=>{var o=n(9504),r=n(9039),i=n(4901),a=n(9297),s=n(3724),l=n(350).CONFIGURABLE,c=n(3706),u=n(1181),d=u.enforce,p=u.get,f=String,h=Object.defineProperty,y=o("".slice),m=o("".replace),b=o([].join),g=s&&!r((function(){return 8!==h((function(){}),"length",{value:8}).length})),v=String(String).split("String"),w=e.exports=function(e,t,n){"Symbol("===y(f(t),0,7)&&(t="["+m(f(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!a(e,"name")||l&&e.name!==t)&&(s?h(e,"name",{value:t,configurable:!0}):e.name=t),g&&n&&a(n,"arity")&&e.length!==n.arity&&h(e,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?s&&h(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var o=d(e);return a(o,"source")||(o.source=b(v,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&p(this).source||c(this)}),"toString")},741:e=>{var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var o=+e;return(o>0?n:t)(o)}},2360:(e,t,n)=>{var o,r=n(8551),i=n(6801),a=n(8727),s=n(421),l=n(397),c=n(4055),u=n(6119),d="prototype",p="script",f=u("IE_PROTO"),h=function(){},y=function(e){return"<"+p+">"+e+""},m=function(e){e.write(y("")),e.close();var t=e.parentWindow.Object;return e=null,t},b=function(){try{o=new ActiveXObject("htmlfile")}catch(e){}var e,t,n;b="undefined"!=typeof document?document.domain&&o?m(o):(t=c("iframe"),n="java"+p+":",t.style.display="none",l.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(y("document.F=Object")),e.close(),e.F):m(o);for(var r=a.length;r--;)delete b[d][a[r]];return b()};s[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[d]=r(e),n=new h,h[d]=null,n[f]=e):n=b(),void 0===t?n:i.f(n,t)}},6801:(e,t,n)=>{var o=n(3724),r=n(8686),i=n(4913),a=n(8551),s=n(5397),l=n(1072);t.f=o&&!r?Object.defineProperties:function(e,t){a(e);for(var n,o=s(t),r=l(t),c=r.length,u=0;c>u;)i.f(e,n=r[u++],o[n]);return e}},4913:(e,t,n)=>{var o=n(3724),r=n(5917),i=n(8686),a=n(8551),s=n(6969),l=TypeError,c=Object.defineProperty,u=Object.getOwnPropertyDescriptor,d="enumerable",p="configurable",f="writable";t.f=o?i?function(e,t,n){if(a(e),t=s(t),a(n),"function"==typeof e&&"prototype"===t&&"value"in n&&f in n&&!n[f]){var o=u(e,t);o&&o[f]&&(e[t]=n.value,n={configurable:p in n?n[p]:o[p],enumerable:d in n?n[d]:o[d],writable:!1})}return c(e,t,n)}:c:function(e,t,n){if(a(e),t=s(t),a(n),r)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw new l("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},7347:(e,t,n)=>{var o=n(3724),r=n(9565),i=n(8773),a=n(6980),s=n(5397),l=n(6969),c=n(9297),u=n(5917),d=Object.getOwnPropertyDescriptor;t.f=o?d:function(e,t){if(e=s(e),t=l(t),u)try{return d(e,t)}catch(e){}if(c(e,t))return a(!r(i.f,e,t),e[t])}},8480:(e,t,n)=>{var o=n(1828),r=n(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,r)}},3717:(e,t)=>{t.f=Object.getOwnPropertySymbols},1625:(e,t,n)=>{var o=n(9504);e.exports=o({}.isPrototypeOf)},1828:(e,t,n)=>{var o=n(9504),r=n(9297),i=n(5397),a=n(9617).indexOf,s=n(421),l=o([].push);e.exports=function(e,t){var n,o=i(e),c=0,u=[];for(n in o)!r(s,n)&&r(o,n)&&l(u,n);for(;t.length>c;)r(o,n=t[c++])&&(~a(u,n)||l(u,n));return u}},1072:(e,t,n)=>{var o=n(1828),r=n(8727);e.exports=Object.keys||function(e){return o(e,r)}},8773:(e,t)=>{var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!n.call({1:2},1);t.f=r?function(e){var t=o(this,e);return!!t&&t.enumerable}:n},4270:(e,t,n)=>{var o=n(9565),r=n(4901),i=n(34),a=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&r(n=e.toString)&&!i(s=o(n,e)))return s;if(r(n=e.valueOf)&&!i(s=o(n,e)))return s;if("string"!==t&&r(n=e.toString)&&!i(s=o(n,e)))return s;throw new a("Can't convert object to primitive value")}},5031:(e,t,n)=>{var o=n(7751),r=n(9504),i=n(8480),a=n(3717),s=n(8551),l=r([].concat);e.exports=o("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},7750:(e,t,n)=>{var o=n(4117),r=TypeError;e.exports=function(e){if(o(e))throw new r("Can't call method on "+e);return e}},6119:(e,t,n)=>{var o=n(5745),r=n(3392),i=o("keys");e.exports=function(e){return i[e]||(i[e]=r(e))}},7629:(e,t,n)=>{var o=n(6395),r=n(4576),i=n(9433),a="__core-js_shared__",s=e.exports=r[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.44.0",mode:o?"pure":"global",copyright:"© 2014-2025 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.44.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,n)=>{var o=n(7629);e.exports=function(e,t){return o[e]||(o[e]=t||{})}},4495:(e,t,n)=>{var o=n(9519),r=n(9039),i=n(4576).String;e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},5610:(e,t,n)=>{var o=n(1291),r=Math.max,i=Math.min;e.exports=function(e,t){var n=o(e);return n<0?r(n+t,0):i(n,t)}},5397:(e,t,n)=>{var o=n(7055),r=n(7750);e.exports=function(e){return o(r(e))}},1291:(e,t,n)=>{var o=n(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:o(t)}},8014:(e,t,n)=>{var o=n(1291),r=Math.min;e.exports=function(e){var t=o(e);return t>0?r(t,9007199254740991):0}},8981:(e,t,n)=>{var o=n(7750),r=Object;e.exports=function(e){return r(o(e))}},2777:(e,t,n)=>{var o=n(9565),r=n(34),i=n(757),a=n(5966),s=n(4270),l=n(8227),c=TypeError,u=l("toPrimitive");e.exports=function(e,t){if(!r(e)||i(e))return e;var n,l=a(e,u);if(l){if(void 0===t&&(t="default"),n=o(l,e,t),!r(n)||i(n))return n;throw new c("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},6969:(e,t,n)=>{var o=n(2777),r=n(757);e.exports=function(e){var t=o(e,"string");return r(t)?t:t+""}},6823:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,n)=>{var o=n(9504),r=0,i=Math.random(),a=o(1.1.toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++r+i,36)}},7040:(e,t,n)=>{var o=n(4495);e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,n)=>{var o=n(3724),r=n(9039);e.exports=o&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},8622:(e,t,n)=>{var o=n(4576),r=n(4901),i=o.WeakMap;e.exports=r(i)&&/native code/.test(String(i))},8227:(e,t,n)=>{var o=n(4576),r=n(5745),i=n(9297),a=n(3392),s=n(4495),l=n(7040),c=o.Symbol,u=r("wks"),d=l?c.for||c:c&&c.withoutSetter||a;e.exports=function(e){return i(u,e)||(u[e]=s&&i(c,e)?c[e]:d("Symbol."+e)),u[e]}},9678:(e,t,n)=>{var o=n(6518),r=n(7628),i=n(5397),a=n(6469),s=Array;o({target:"Array",proto:!0},{toReversed:function(){return r(i(this),s)}}),a("toReversed")},4151:(e,t,n)=>{n(9678)},6863:(e,t,n)=>{var o=n(5124);e.exports=o}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const o=JSON.parse('{"rE":"0.6.15","_e":"Aug 22","Ao":["Fix for game update v2.10.9","Fixed the message in the FX Client update notification popup being inaccurate - just reloading the page normally no longer works, you have to instead press the \\"Update\\" (previously \\"Reload\\") button on the popup for the update to be applied.","Fixed win counter counting wins in replays"]}'),r=e=>parseFloat(e.toFixed(12));function i(e){const t=document.createElement("p");t.innerText="Attack Percentage Keybinds";const n=document.createElement("div");n.className="arrayinput";const o=document.createElement("button");o.innerText="Add",e.append(t,n,o),e.className="keybinds-input",this.container=n,this.objectKeys=["key","type","value"],this.objectArray=[],this.addObject=function(){this.objectArray.push({key:"",type:"absolute",value:.8}),this.container.appendChild(i(this.objectArray.length-1)),o.scrollIntoView(!1)},o.addEventListener("click",this.addObject.bind(this)),this.update=function(e){this.objectArray=e.attackPercentageKeybinds,this.displayObjects()},this.displayObjects=function(){if(this.container.innerHTML="",0===this.objectArray.length)return this.container.innerText="No custom attack percentage keybinds added";for(var e=0;e{var t=document.createElement("div");this.objectKeys.forEach((n=>{t.appendChild(this.createInputField(e,n))}));var n=document.createElement("button");return n.textContent="Delete",n.addEventListener("click",this.deleteObject.bind(this,e)),t.appendChild(n),t};return this.createInputField=function(e,t){let n=document.createElement("type"===t?"select":"input");if("type"===t)n.innerHTML='',n.addEventListener("change",this.updateObject.bind(this,e,t));else if("key"===t)n.type="text",n.setAttribute("readonly",""),n.setAttribute("placeholder","No key set"),n.addEventListener("click",this.startKeyInput.bind(this,e,t));else{const o="absolute"===this.objectArray[e].type;n.type=o?"text":"number",o?n.addEventListener("click",this.convertIntoNumberInput.bind(this,e,t),{once:!0}):n.setAttribute("step","0.1"),n.addEventListener("input",this.updateObject.bind(this,e,t))}return"value"===t&&"absolute"===this.objectArray[e].type?n.value=r(100*this.objectArray[e][t])+"%":n.value=this.objectArray[e][t],n},this.recreateInputField=function(e,t){this.container.children[e].children[this.objectKeys.indexOf(t)].replaceWith(this.createInputField(e,t))},this.startKeyInput=function(e,t,n){n.target.value="Press any key";const o=this.updateObject.bind(this,e,t);n.target.addEventListener("keydown",o,{once:!0}),n.target.addEventListener("blur",(()=>{n.target.removeEventListener("keydown",o),n.target.value=this.objectArray[e][t]}),{once:!0})},this.convertIntoNumberInput=function(e,t,n){n.target.value=n.target.value.slice(0,-1),n.target.type="number",n.target.addEventListener("blur",(()=>{this.recreateInputField(e,t)}),{once:!0})},this.updateObject=function(e,t,n){if(e>=this.objectArray.length)return;const o="value"===t?"absolute"===this.objectArray[e].type?r(parseFloat(n.target.value)/100):parseFloat(n.target.value):"key"===t?n.key:n.target.value;this.objectArray[e][t]=o,"key"===t?this.recreateInputField(e,t):"type"===t&&this.recreateInputField(e,"value")},this.deleteObject=function(e){this.objectArray.splice(e,1),this.displayObjects()},this}const a={count:0,removeWins:function(){confirm("Do you really want to reset your wins?")&&(a.count=0,localStorage.removeItem("fx_winCount"),alert("Successfully reset wins"))}};null!==localStorage.getItem("fx_winCount")&&(a.count=localStorage.getItem("fx_winCount"));const s=a;var l={};const c=document.getElementById("windowContainer");function u(e){l[e.name]=e,l[e.name].isOpen=!1}function d(e){!1!==l[e].isOpen&&(l[e].isOpen=!1,l[e].element.style.display="none",void 0!==l[e].onClose&&l[e].onClose())}function p(){Object.values(l).forEach((function(e){!1!==e.closable&&d(e.name)}))}document.addEventListener("mousedown",(e=>{c.contains(e.target)||p(),L().useFullscreenMode&&O()}),{passive:!0,capture:!0}),document.getElementById("canvasA").addEventListener("touchstart",p,{passive:!0}),document.addEventListener("keydown",(e=>{"Escape"===e.key&&p()}));const f={create:function(e){const t=document.createElement("div");if(e.element=t,t.className="window"+(void 0!==e.classes?" "+e.classes:" scrollable selectable"),t.style.display="none",!0===e.closeWithButton){const n=document.createElement("button");n.addEventListener("click",(()=>d(e.name))),n.textContent="Close",setTimeout((()=>t.appendChild(n)))}return c.appendChild(t),u(e),t},add:u,openWindow:function(e,...t){!0!==l[e].isOpen&&(void 0!==l[e].beforeOpen&&l[e].beforeOpen(...t),l[e].isOpen=!0,l[e].element.style.display=null)},closeWindow:d,closeAll:p},{Ao:h,rE:y}=o,m=f.create({name:"changelog",closeWithButton:!0}),b=document.createElement("h1");b.textContent="What's new";const g=document.createElement("p");g.textContent=`in FX Client v${y}`;const v=document.createElement("ul");function w(){f.openWindow("changelog")}h.forEach((e=>{const t=document.createElement("li");t.textContent=e,v.appendChild(t)})),m.append(b,g,v),window.__fx=window.__fx||{};const x=window.__fx;var E={displayWinCounter:!0,useFullscreenMode:!1,hoveringTooltip:!0,realisticNames:!1,showPlayerDensity:!0,coloredDensity:!0,densityDisplayStyle:"absoluteQuotient",hideBotNames:!1,highlightClanSpawns:!1,detailedTeamPercentage:!1,openDonationHistoryFromLb:!0,customBackgroundUrl:"",keybindButtons:!1,attackPercentageKeybinds:[]};x.settings=E;const k=["hideAllLinks","fontName"];x.makeMainMenuTransparent=!1;const S=new function(){const e=[{for:"displayWinCounter",type:"checkbox",label:"Display win counter",note:"The win counter tracks multiplayer solo wins (not in team games)"},{type:"button",text:"Reset win counter",action:s.removeWins},{for:"useFullscreenMode",type:"checkbox",label:"Use fullscreen mode",note:"Note: fullscreen mode will trigger after you click anywhere on the page due to browser policy restrictions."},{for:"hoveringTooltip",type:"checkbox",label:"Hovering tooltip",note:"Display map territory info constantly (on mouse hover) instead of only when right clicking on the map"},{for:"realisticNames",type:"checkbox",label:"Realistic Bot Names"},{for:"showPlayerDensity",type:"checkbox",label:"Show player density"},{for:"coloredDensity",type:"checkbox",label:"Colored density",note:"Display the density with a color between red and green depending on the density value"},{for:"densityDisplayStyle",type:"selectMenu",label:"Density value display style:",tooltip:"Controls how the territorial density value should be rendered",options:[{value:"percentage",label:"Percentage"},{value:"absoluteQuotient",label:"Value from 0 to 150 (BetterTT style)"}]},{for:"hideBotNames",type:"checkbox",label:"Hide bot names"},{for:"highlightClanSpawns",type:"checkbox",label:"Highlight clan spawnpoints",note:"Increases the spawnpoint glow size for members of your clan"},{for:"detailedTeamPercentage",type:"checkbox",label:"Detailed team pie chart percentage",note:"For example: this would show 25.82% instead of 26% on the pie chart in team games"},{for:"openDonationHistoryFromLb",type:"checkbox",label:"Open donation history from the leaderboard",note:"Changes whether or not clicking on a player's name in the in-game leaderboard in team games will open their donation history"},{for:"customBackgroundUrl",type:"textInput",label:"Custom main menu background:",placeholder:"Enter an image URL here",tooltip:"A custom image to be shown as the main menu background instead of the currently selected map."},i,{for:"keybindButtons",type:"checkbox",label:"Keybind buttons",note:"Show keybind buttons above the troop selector (max 6)"},function(e){const t=document.createElement("p");t.innerText=`FX Client v${o.rE}`;const n=document.createElement("p");n.innerHTML='Discord server |\n Github repository';const r=document.createElement("button");r.innerText="Changelog",r.addEventListener("click",w),e.append(t,n,r)}],t=document.querySelector(".settings .scrollable");var n={},r={},a=[];e.forEach((e=>{if("function"==typeof e){const n=document.createElement("div");return a.push(new e(n)),t.append(n)}const o=document.createElement("label");e.tooltip&&(o.title=e.tooltip);const i=e.type.endsWith("Input"),s=document.createElement(i||"checkbox"===e.type?"input":"selectMenu"===e.type?"select":"button");if("textInput"===e.type&&(s.type="text"),e.placeholder&&(s.placeholder=e.placeholder),(i||"selectMenu"===e.type)&&(n[e.for]=s),e.text&&(s.innerText=e.text),e.action&&s.addEventListener("click",e.action),e.label&&o.append(e.label+" "),e.note){const t=document.createElement("small");t.innerText=e.note,o.append(document.createElement("br"),t)}if(e.options&&e.options.forEach((e=>{const t=document.createElement("option");t.setAttribute("value",e.value),t.innerText=e.label,s.append(t)})),o.append(s),"checkbox"===e.type){s.type="checkbox";const t=document.createElement("span");t.className="checkmark",o.className="checkbox",o.append(t),r[e.for]=s}else o.append(document.createElement("br"));t.append(o,document.createElement("br"))})),this.save=function(){Object.keys(n).forEach((function(e){E[e]=n[e].value.trim()})),Object.keys(r).forEach((function(e){E[e]=r[e].checked})),this.applySettings(),f.closeWindow("settings"),k.forEach((e=>delete E[e])),localStorage.setItem("fx_settings",JSON.stringify(E)),window.location.reload()};const l=document.createElement("input");function c(e){const t=e.target,n=t.files[0];if(!n)return;if(t.removeEventListener("change",c),t.value="",!n.name.endsWith(".json"))return alert("Invalid file format");const o=new FileReader;o.onload=function(){let e;try{e=JSON.parse(o.result),confirm('Warning: This will override all current settings, click "OK" to confirm')&&(x.settings=E=e),localStorage.setItem("fx_settings",JSON.stringify(E)),window.location.reload()}catch(e){alert("Error\n"+e)}},o.readAsText(n)}l.type="file",this.importFromFile=function(){l.click(),l.addEventListener("change",c)},this.exportToFile=function(){var e,t,n;e=JSON.stringify(E),t=document.createElement("a"),n=new Blob([e],{type:"application/json"}),t.href=URL.createObjectURL(n),t.download="FX_client_settings.json",t.click(),URL.revokeObjectURL(t.href)},this.syncFields=function(){Object.keys(n).forEach((function(e){n[e].value=E[e]})),Object.keys(r).forEach((function(e){r[e].checked=E[e]})),a.forEach((e=>e.update?.(E)))},this.resetAll=function(){confirm("Are you Really SURE you want to RESET ALL SETTINGS back to the default?")&&(localStorage.removeItem("fx_settings"),window.location.reload())},this.applySettings=function(){""!==E.customBackgroundUrl&&(document.body.style.backgroundImage="url("+E.customBackgroundUrl+")",document.body.style.backgroundSize="cover",document.body.style.backgroundPosition="center"),x.makeMainMenuTransparent=""!==E.customBackgroundUrl},E.useFullscreenMode&&O()};function O(){null===document.fullscreenElement&&document.fullscreenEnabled&&document.documentElement.requestFullscreen({navigationUI:"hide"}).then((()=>{console.log("Fullscreen mode activated")})).catch((e=>{console.warn("Could not enter fullscreen mode:",e)}))}f.add({name:"settings",element:document.querySelector(".settings"),beforeOpen:function(){S.syncFields()}}),null!==localStorage.getItem("fx_settings")&&(x.settings=E={...E,...JSON.parse(localStorage.getItem("fx_settings"))}),S.applySettings();const T=S;function L(){return E}const I=["playerTerritories","playerBalances","rawPlayerNames"],j=["playerId","gIsTeamGame","gHumans","gLobbyMaxJoin","gameState","gIsSingleplayer"],C=e=>I.includes(e)?window[dictionary.playerData]?.[dictionary[e]]:j.includes(e)?window[dictionary.game]?.[dictionary[e]]:window[dictionary[e]],A=()=>Math.floor(window[dictionary.uiSizes]?.[dictionary.gap]??10),P=new function(){this.playersToInclude=[],this.tabLabels=["ALL","CLAN"],this.filteredLeaderboard=[],this.tabBarOffset=0,this.windowWidth=0,this.verticalClickThreshold=1e3,this.hoveringOverTabs=!1,this.scrollToTop=()=>{},this.repaintLeaderboard=()=>{},this.setUpdateFlag=()=>{},this.parseClanFromPlayerName=()=>{console.warn("parse function not set")},this.selectedTab=0,this.tabHovering=-1,this.enabled=!1,this.drawTabs=function(e,t,n,o){e.textBaseline="middle",e.textAlign="center";const r=t/this.tabLabels.length,i=n+this.tabBarOffset/2;this.tabLabels.forEach(((t,a)=>{0!==a&&e.fillRect(r*a,n,1,this.tabBarOffset),this.selectedTab===a&&(e.fillStyle=o,e.fillRect(r*a,n,r,this.tabBarOffset),e.fillStyle="rgb(255,255,255)"),this.tabHovering===a&&(e.fillStyle="rgba(255,255,255,0.3)",e.fillRect(r*a,n,r,this.tabBarOffset),e.fillStyle="rgb(255,255,255)"),e.fillText(t,r*a+r/2,i)}))},this.setHovering=(e,t)=>{let n=!1;if(e){const e=Math.floor(t/(this.windowWidth/this.tabLabels.length));this.tabHovering!==e&&(this.tabHovering=e,n=!0)}return e!==this.hoveringOverTabs&&(this.hoveringOverTabs=e,!1===e&&(this.tabHovering=-1),e||(n=!0)),n&&this.repaintLeaderboard(),e},this.handleMouseDown=e=>{const t=Math.floor(e/(this.windowWidth/this.tabLabels.length));return this.selectedTab!==t&&(this.selectedTab=t,0===this.selectedTab?this.clearFilter():1===this.selectedTab&&(this.filterByOwnClan(),this.setUpdateFlag()),this.repaintLeaderboard()),!0},this.filterByOwnClan=()=>{this.playersToInclude=[];const e=C("playerId"),t=this.parseClanFromPlayerName(C("rawPlayerNames")[e]);C("rawPlayerNames").forEach(((n,o)=>{o!==e&&this.parseClanFromPlayerName(n)!==t||this.playersToInclude.push(o)})),this.enabled=!0,this.scrollToTop()},this.clearFilter=()=>{this.enabled=!1},this.reset=()=>{this.enabled=!1,this.selectedTab=0,F.refresh()}},F=new function(){this.inOwnClan=new Array(512),this.inOwnClan.fill(!1),this.refresh=()=>{const e=C("gHumans"),t=P.parseClanFromPlayerName(C("rawPlayerNames")[C("playerId")]);null===t?this.inOwnClan.fill(!1):C("rawPlayerNames").forEach(((n,o)=>{this.inOwnClan[o]=o/g,">").replace(/"/g,""").replace(/'/g,"'")}let N=null;n(2862),f.add({name:"donationHistory",element:document.querySelector("#donationhistory"),beforeOpen:function(e){document.getElementById("donationhistory_note").style.display="none"},onClose:function(){M.openedWindowPlayerID=null}});const M=new function(){this.openedWindowPlayerID=null,this.contentElement=document.querySelector("#donationhistory_content"),this.donationHistory=Array(512);let e=!1;function t(e,t,n,o){const r=C("rawPlayerNames"),i=document.createElement("tr");o&&i.setAttribute("class","new");let a=`${t}. `;return n===e[1]?a+=`Received ${e[2]} resources from ${B(r[e[0]])}`:a+=`Sent ${e[2]} resources to ${B(r[e[1]])}`,a+="",i.innerHTML=a,i}this.getHistoryOf=function(t){return function(e,t){try{return e()}catch(e){throw N=t,setTimeout((()=>{null!==N&&(N=null)})),e}}((()=>this.donationHistory[t].toReversed()),{playerID:t,resetCalled:e,type:typeof this.donationHistory[t],isArray:Array.isArray(this.donationHistory[t])})},this.reset=function(){e=!0;for(var t=0;t<512;t++)this.donationHistory[t]=[]},this.logDonation=function(e,n,o){const r=[e,n,o];if(this.donationHistory[n].push(r),this.donationHistory[e].push(r),this.openedWindowPlayerID===e||this.openedWindowPlayerID===n){const o=this.donationHistory[this.openedWindowPlayerID===e?e:n].length;this.contentElement.prepend(t(r,o,this.openedWindowPlayerID,!0))}},this.displayHistory=function(e,n=C("rawPlayerNames"),o=C("gIsSingleplayer")){var r=M.getHistoryOf(e);console.log("History for "+n[e]+":"),console.log(r),document.querySelector("#donationhistory h1").innerHTML="Donation history for "+B(n[e]),this.contentElement.innerHTML="",r.length>0?r.forEach(((n,o)=>{this.contentElement.appendChild(t(n,r.length-o,e))})):this.contentElement.innerText="Nothing to display",this.openedWindowPlayerID=e,f.openWindow("donationHistory",o)}},H=M,W=new function(){const e=document.createElement("img");e.setAttribute("src","assets/players_icon.png"),document.getElementById("playerlist_content").addEventListener("click",(e=>{const t=e.target.closest("tr[data-player-id]")?.getAttribute("data-player-id");t&&C("gIsTeamGame")&&(f.closeWindow("playerList"),H.displayHistory(t))})),this.display=function(e){const t=C("gHumans"),n=C("gLobbyMaxJoin");let o=`

Players (${t})

`;for(let r=0;rBots (${n-t})`),o+=`${r+1}. ${B(e[r])}`;document.getElementById("playerlist_content").innerHTML=o,document.getElementById("playerlist_content").setAttribute("class",C("gIsTeamGame")?"clickable":""),f.openWindow("playerList")},this.hoveringOverButton=!1,this.drawButton=(t,n,o,r)=>{t.fillRect(n,o,r,r),t.fillStyle=this.hoveringOverButton?"#aaaaaaaa":"#000000aa",t.clearRect(n+1,o+1,r-2,r-2),t.fillRect(n+1,o+1,r-2,r-2),t.fillStyle="#ffffff",t.imageSmoothingEnabled=!0,t.drawImage(e,n+2,o+2,r-4,r-4),t.imageSmoothingEnabled=!1}};f.add({name:"playerList",element:document.getElementById("playerlist")});const D=W,_={getMaxTroops:function(e,t){return(150*e[t]).toString()},getDensity:function(e,t=C("playerBalances"),n=C("playerTerritories")){return"percentage"===L().densityDisplayStyle?(t[e]/(150*(0===n[e]?1:n[e]))*100).toFixed(1)+"%":(t[e]/(0===n[e]?1:n[e])).toFixed(1)},isPointInRectangle:function(e,t,n,o,r,i){return e>=n&&e<=n+r&&t>=o&&t<=o+i},fillTextMultiline:function(e,t,n,o,r){const i=parseInt(e.font.split(" ").find((e=>e.endsWith("px"))).slice(0,-2));t.split("\n").forEach(((t,a)=>e.fillText(t,n,o+a*i,r)))},textStyleBasedOnDensity:function(e){const t=C("playerBalances"),n=C("playerTerritories");return`hsl(${t[e]/(1.5*n[e])}, 100%, 50%, 1)`}},R=new function(){let e=!1;function t(t){if(!L().hoveringTooltip||!C("gameState")||e)return;let n,o;if(t.type.includes("touch")){const{touches:e,changedTouches:r}=t.originalEvent??t,i=e[0]??r[0];n=i.pageX,o=i.pageY}else t.type.includes("mouse")&&(n=t.clientX,o=t.clientY);e=!0;try{this.active=!0,this.display(this.canvasPixelScale*n,this.canvasPixelScale*o),this.active=!1}catch(t){console.error(t)}setTimeout((()=>e=!1),100)}this.display=()=>{},this.active=!1,this.canvasPixelScale=1,document.getElementById("canvasA").addEventListener("mousemove",t.bind(this)),document.getElementById("canvasA").addEventListener("touchstart",t.bind(this))},U={setAbsolute:()=>{},setRelative:()=>{},repaintAttackPercentageBar:()=>{}};function $(e){"absolute"===e.type?U.setAbsolute(e.value):U.setRelative(e.value),U.repaintAttackPercentageBar()}let G,J=0,K=0;const X={setSize:(e,t,n)=>{if(!0!==L().keybindButtons)return;J=e,K=t,G=document.createElement("canvas"),G.width=e,G.height=t;const o=G.getContext("2d"),r=n.font.split("px ",2)[1];o.font="bold "+t/2+"px "+r,o.textAlign="center",o.textBaseline="middle";const i=L().attackPercentageKeybinds.slice(0,6),a=A()/4,s=(e-5*a)/6;i.forEach(((e,n)=>{o.fillStyle="rgba(0, 0, 0, 0.8)",o.fillRect(n*(s+a),0,s,t),o.fillStyle="white";const r="absolute"===e.type?(100*e.value).toFixed()+"%":"x "+Math.round(100*e.value)/100;o.fillText(r,(n+.5)*(s+a),t/2)}))},click:e=>{if(e<0||e>J)return!1;const t=L().attackPercentageKeybinds,n=Math.floor(e/J*6);return!(n>=t.length||($(t[n]),0))},draw:(e,t,n)=>{e.drawImage(G,t,n-(K+A()/4))}};let z=!1,q="",V=()=>{},Y=()=>{},Q=(e,t)=>{};const Z=new TextEncoder,ee=new TextDecoder;f.add({name:"lobbyJoinMenu",element:document.getElementById("customLobbyJoinMenu")}),f.create({name:"customLobbiesUnavailable",closeWithButton:!0}).innerHTML='

The latest version of FX Client doesn\'t support custom lobbies yet. Use the stable version at https://fxclient.github.io/custom-lobbies

';const te=f.create({name:"customLobby",classes:"scrollable selectable flex-column text-align-center",closable:!1}),ne=document.createElement("h2");ne.textContent="Custom Lobby";const oe=document.createElement("div");oe.className="customlobby-main";const re=document.createElement("div"),ie=document.createElement("p");ie.textContent="0 Players";const ae=document.createElement("div");re.append(ie,ae);const se=document.createElement("div");se.className="text-align-left";const le={mode:{label:"Mode:",type:"selectMenu",options:[{value:0,label:"2 Teams"},{value:1,label:"3 Teams"},{value:2,label:"4 Teams"},{value:3,label:"5 Teams"},{value:4,label:"6 Teams"},{value:5,label:"7 Teams"},{value:6,label:"8 Teams"},{value:7,label:"Battle Royale"},{value:10,label:"No Fullsend Battle Royale"},{value:9,label:"Zombie mode"}]},map:{label:"Map:",type:"selectMenu"},difficulty:{label:"Difficulty:",type:"selectMenu",options:[{value:0,label:"Very Easy (Default)"},{value:1,label:"Easy (1v1)"},{value:2,label:"Normal"},{value:3,label:"Hard"},{value:4,label:"Very Hard"},{value:5,label:"Impossible"}]},spawnSelection:{label:"Spawn selection",type:"checkbox"},botCount:{label:"Bot & player count:",type:"numberInput",attributes:{min:"1",max:"512"}}},ce={},ue={};function de(e,t){"checkbox"===le[e].type?ce[e].checked=0!==t:ce[e].value=t.toString(),ue[e]=t}function pe(e,t){we("options",[e,parseInt(t.target.value)])}function fe(e,t){we("options",[e,t.target.checked?1:0])}Object.entries(le).forEach((([e,t])=>{const n=document.createElement("label");t.tooltip&&(n.title=t.tooltip);const o=t.type.endsWith("Input"),r=document.createElement(o||"checkbox"===t.type?"input":"selectMenu"===t.type?"select":"button");if(ce[e]=r,"textInput"===t.type&&(r.type="text"),"numberInput"===t.type&&(r.type="number"),t.placeholder&&(r.placeholder=t.placeholder),(o||"selectMenu"===t.type)&&r.addEventListener("change",pe.bind(void 0,e)),t.text&&(r.innerText=t.text),t.action&&r.addEventListener("click",t.action),t.label&&n.append(t.label+" "),t.note){const e=document.createElement("small");e.innerText=t.note,n.append(document.createElement("br"),e)}if(t.options&&ve(t.options,r),t.attributes&&Object.entries(t.attributes).forEach((([e,t])=>r.setAttribute(e,t))),n.append(r),"checkbox"===t.type){r.type="checkbox";const t=document.createElement("span");t.className="checkmark",n.className="checkbox",n.append(t),r.addEventListener("change",fe.bind(void 0,e))}else n.append(document.createElement("br"));se.append(n)})),oe.append(re,se);const he=document.createElement("footer");function ye(e,t){const n=document.createElement("button");return n.textContent=e,n.addEventListener("click",t),n}he.style.marginTop="10px";const me=ye("Start game",(function(){f.closeWindow("customLobby"),we("startGame")})),be=ye("Leave lobby",(()=>Y())),ge=ye("Copy link",(()=>{navigator.clipboard.writeText(`${window.location.href}#lobby=${q}`),ge.textContent="Copied!",setTimeout((()=>ge.textContent="Copy link"),1e3)}));function ve(e,t){e.forEach((e=>{const n=document.createElement("option");n.setAttribute("value",e.value),n.textContent=e.label,t.append(n)}))}function we(e,t){const n=void 0!==t?{t:e,d:t}:{t:e},o=Z.encode(JSON.stringify(n)),r=new ArrayBuffer(o.length+1);new DataView(r).setUint8(0,120),new Uint8Array(r,1).set(o),Q(1,r)}he.append(me,be,ge),te.append(ne,oe,he),document.getElementById("lobbyCode").addEventListener("input",(({target:e})=>{5===e.value.length&&(q=e.value.toLowerCase(),e.value="",f.closeWindow("lobbyJoinMenu"),z=!0,V())})),document.getElementById("createLobbyButton").addEventListener("click",(()=>{q="",f.closeWindow("lobbyJoinMenu"),z=!0,V()}));let xe,Ee=!1,ke=[];function Se(e,t){const n=document.createElement("span");return n.textContent=e,n.className=t?"":"d-none",n}function Oe(e){const t=document.createElement("div");t.className="lobby-player",t.textContent=e.name;const n=document.createElement("button");n.textContent="Kick",n.className=Ee&&!e.isHost?"":"d-none",n.addEventListener("click",Te);const o=Se("Host",e.isHost),r=Se("In Game",e.inGame);t.append(o,r,n),ae.append(t),ke.push({element:t,hostBadge:o,inGameBadge:r,kickButton:n,isHost:e.isHost,inGame:e.inGame})}function Te(e){const t=e.target;for(let e=0;eIe()));const je={gameInfo:ue,showJoinPrompt:function(){return f.openWindow("customLobbiesUnavailable")},isCustomMessage:function(e){if(120!==e[0])return!1;if(1===e.length)return!0;const t=new Uint8Array(e.buffer,1),n=JSON.parse(ee.decode(t)),{t:o,d:r}=n;if("lobby"===o)f.openWindow("customLobby"),ne.textContent="Custom Lobby "+r.code,q=r.code,Ee=r.isHost,me.disabled=!Ee,Ee?se.classList.remove("disabled"):se.classList.add("disabled"),Object.entries(r.options).forEach((([e,t])=>de(e,t))),i=r.players,a=r.id,ke=[],ae.innerHTML="",i.forEach(Oe),xe=ke[a],Le();else if("addPlayer"===o)Oe({name:r.name,inGame:!1,isHost:!1}),Le();else if("removePlayer"===o){const e=r;ke[e].element.remove(),ke.splice(e,1),Le()}else if("inLobby"===o){const e=r;ke[e].inGame=!1,ke[e].inGameBadge.className="d-none"}else if("options"===o){const[e,t]=r;de(e,t)}else if("setHost"===o){const e=r;ke[e].isHost=!0,ke[e].hostBadge.className=""}else"host"===o?(Ee=!0,me.disabled=!1,se.classList.remove("disabled"),ke.forEach((e=>{e.isHost||(e.kickButton.className="")}))):"serverMessage"===o&&alert(r);var i,a;return!0},getSocketURL:function(){return"wss://fx.peshomir.workers.dev/"+(""===q?"create":"join?"+q)},getPlayerId:function(){let e=0;for(let t=0;tve(e.map(((e,t)=>({value:t.toString(),label:e.name}))),ce.map)),0)},rejoinLobby:function(){V()},hideWindow:function(){f.closeWindow("customLobby")},isActive:()=>z,setActive:function(e){z=e,!1===e&&f.closeWindow("customLobby")}},{rE:Ce,_e:Ae}=o,Pe=localStorage.getItem("fx_version");Pe!==Ce&&(localStorage.setItem("fx_version",Ce),null!==Pe&&w()),window.__fx=window.__fx||{};const Fe=window.__fx;Fe.version=Ce+" "+Ae,Fe.settingsManager=T,Fe.leaderboardFilter=P,Fe.utils=_,Fe.WindowManager=f,Fe.keybindFunctions=U,Fe.keybindHandler=e=>{const t=L().attackPercentageKeybinds.find((t=>t.key===e));return void 0!==t&&(0!==C("gameState")&&$(t),!0)},Fe.mobileKeybinds=X,Fe.donationsTracker=H,Fe.reportError=function(e,t){function n(e){try{return C(e)}catch(e){return e.toString()}}t=e.filename+" "+e.lineno+" "+e.colno+" "+e.message+"\n"+t,fetch("https://fx.peshomir.workers.dev/stats/errors",{body:JSON.stringify({message:t,context:{debug:N,gameState:n("gameState"),singleplayer:n("gIsSingleplayer"),swState:navigator.serviceWorker?.controller?.state,location:window.location.toString(),userAgent:navigator.userAgent,dictionary:JSON.stringify(dictionary),buildTimestamp,scripts:Array.from(document.scripts).map((e=>e.src))}}),method:"POST"}).catch((e=>alert("Failed to report error: "+e)))},Fe.playerList=D,Fe.hoveringTooltip=R,Fe.clanFilter=F,Fe.wins=s,Fe.customLobby=je,console.log("Successfully loaded FX Client")})();