-- this file is generated using FlameDumperV3 | https://discord.gg/ypVcca6cvp print("[Universal Reader] Starting full dump...") print("→ Loaded stack_4 (779733 bytes)") print("→ Loaded [internal] (566035 bytes)") print("\ print("\ [=== stack_4 (779733 bytes) ===]") print("do\ if not rawget(_G, \"_HOOKOP\") then\ local _cw = {}\ local _cw_max = 2000000\ local _fi = {}\ \ local M = {}\ \ \ M.CALL = function(fn, ...)\ if type(fn) == \"function\" then return fn(...) end\ if type(fn) == \"table\" then\ local mt = getmetatable(fn)\ if mt and mt.__call then return mt.__call(fn, ...) end\ end\ return nil\ end\ M.NAMECALL = M.CALL\ \ M.CHECKIF = function(cond, ...) return cond end\ M.checkifend = function(...) end\ \ M.CHECKAND = function(a, bOrFn, isWrapped, ...)\ if not a then return a end\ if isWrapped and type(bOrFn) == \"function\" then\ local ok, v = pcall(bOrFn, ...); return ok and v or bOrFn\ end\ return bOrFn\ end\ M.CHECKOR = function(a, bOrFn, isWrapped, ...)\ if a then return a end\ if isWrapped and type(bOrFn) == \"function\" then\ local ok, v = pcall(bOrFn, ...); return ok and v or bOrFn\ end\ return bOrFn\ end\ \ M.CHECKEQ = function(a,b) local ok,r=pcall(function()return a==b end); return ok and r or false end\ M.CHECKNEQ = function(a,b) local ok,r=pcall(function()return a~=b end); return ok and r or true end\ M.COMPG = function(a,b) local ok,r=pcall(function()return a > b end); return ok and r or false end\ M.COMPL = function(a,b) local ok,r=pcall(function()return a < b end); return ok and r or false end\ M.COMPGE = function(a,b) local ok,r=pcall(function()return a >= b end); return ok and r or false end\ M.COMPLE = function(a,b) local ok,r=pcall(function()return a <= b end); return ok and r or false end\ \ M.CHECKLEN = function(a) local ok,r=pcall(function()return #a end); return ok and r or 0 end\ M.CHECKUNM = function(a) local ok,r=pcall(function()return -a end); return ok and r or 0 end\ M.CHECKNOT = function(a) return not a end\ \ M.CONCAT = function(a,b)\ local ok,r=pcall(function()return tostring(a)..tostring(b) end)\ return ok and r or \"\"\ end\ \ M.CONSTRUCT = function(t) return t end\ \ M.FORINFO = function(id,f,t,s)\ _fi[id] = {from=tonumber(f) or 0, to=tonumber(t) or 0, step=tonumber(s) or 1}\ end\ M.FORSTEP1 = function(id) return _fi[id] and _fi[id].from or 0 end\ M.FORSTEP2 = function(id) return _fi[id] and _fi[id].to or 0 end\ M.FORSTEP3 = function(id) return _fi[id] and _fi[id].step or 1 end\ \ M.checkwhile = function(cond, id)\ if not cond then _cw[id] = nil; return false end\ _cw[id] = (_cw[id] or 0) + 1\ if _cw[id] >= _cw_max then _cw[id] = nil; return false end\ return cond\ end\ M.checkwhileend = function(id) _cw[id] = nil end\ M.CHECKWHILE = function(cond)\ _cw[0] = (_cw[0] or 0) + 1\ if _cw[0] >= _cw_max then _cw[0] = nil; return false end\ return cond\ end\ \ M.TEMPLATE_STRING = function(fmt, ...)\ local args={...}; local i=0\ return (tostring(fmt) or \"\"):gsub(\"%%s\", function()\ i=i+1; return tostring(args[i] or \"\")\ end)\ end\ \ M.CHECKINDEX = function(obj, key)\ if obj == nil then return nil end\ local ok,r = pcall(function() return obj[key] end)\ return ok and r or nil\ end\ \ M.__EQ = function(a,b) return a==b end\ M.__NEQ = function(a,b) return a~=b end\ M.hookexpr = function() end\ M.hookeq = function() end\ \ function M.install(env)\ local _set = (env == _G) and rawset or\ (type(rawset) == \"function\" and rawset) or\ function(t,k,v) t[k]=v end\ for k, v in pairs(M) do\ if type(k) == \"string\" and type(v) == \"function\"\ and k ~= \"install\" and k ~= \"preamble\" then\ _set(env, k, v)\ if not k:match(\"^__\") then\ _set(env, \"CODER_\" .. k, v)\ end\ end\ end\ end\ \ function M.preamble()\ return [[local _hp_n,_hp_m,_hp_f=0,2000000,{}\ if not CALL then CALL=function(fn,...) if type(fn)=='function' then return fn(...) end;local mt=getmetatable(fn);if mt and mt.__call then return mt.__call(fn,...) end end end\ if not NAMECALL then NAMECALL=CALL end\ if not CHECKIF then CHECKIF=function(c,...)return c end end\ if not checkifend then checkifend=function(...)end end\ if not CHECKWHILE then CHECKWHILE=function(c)_hp_n=_hp_n+1;if _hp_n>=_hp_m then return false end;return c end end\ if not checkwhile then checkwhile=function(c,id)_hp_n=_hp_n+1;if _hp_n>=_hp_m then return false end;return c end end\ if not checkwhileend then checkwhileend=function(...)_hp_n=0 end end\ if not CHECKINDEX then CHECKINDEX=function(t,k)if t==nil then return nil end;local ok,r=pcall(function()return t[k]end);return ok and r or nil end end\ if not CHECKAND then CHECKAND=function(a,b,w,...)if not a then return a end;if w and type(b)=='function' then local ok,v=pcall(b,...);return ok and v or b end;return b end end\ if not CHECKOR then CHECKOR=function(a,b,w,...)if a then return a end;if w and type(b)=='function' then local ok,v=pcall(b,...);return ok and v or b end;return b end end\ if not CHECKNOT then CHECKNOT=function(a)return not a end end\ if not CHECKEQ then CHECKEQ=function(a,b)local ok,r=pcall(function()return a==b end);return ok and r or false end end\ if not CHECKNEQ then CHECKNEQ=function(a,b)local ok,r=pcall(function()return a~=b end);return ok and r or true end end\ if not COMPG then COMPG=function(a,b)local ok,r=pcall(function()return a>b end);return ok and r or false end end\ if not COMPL then COMPL=function(a,b)local ok,r=pcall(function()return a=b end);return ok and r or false end end\ if not COMPLE then COMPLE=function(a,b)local ok,r=pcall(function()return a<=b end);return ok and r or false end end\ if not CHECKLEN then CHECKLEN=function(a)local ok,r=pcall(function()return #a end);return ok and r or 0 end end\ if not CHECKUNM then CHECKUNM=function(a)local ok,r=pcall(function()return -a end);return ok and r or 0 end end\ if not CONCAT then CONCAT=function(a,b)local ok,r=pcall(function()return tostring(a)..tostring(b)end);return ok and r or'' end end\ if not CONSTRUCT then CONSTRUCT=function(t)return t end end\ if not FORINFO then FORINFO=function(id,f,t,s)_hp_f[id]={from=tonumber(f)or 0,to=tonumber(t)or 0,step=tonumber(s)or 1}end end\ if not FORSTEP1 then FORSTEP1=function(id)return _hp_f[id]and _hp_f[id].from or 0 end end\ if not FORSTEP2 then FORSTEP2=function(id)return _hp_f[id]and _hp_f[id].to or 0 end end\ if not FORSTEP3 then FORSTEP3=function(id)return _hp_f[id]and _hp_f[id].step or 1 end end\ if not TEMPLATE_STRING then TEMPLATE_STRING=function(fmt,...)local a,i={...},0;return(tostring(fmt)or''):gsub('%%s',function()i=i+1;return tostring(a[i]or'')end)end end\ if not __EQ then __EQ=function(a,b)return a==b end end\ if not __NEQ then __NEQ=function(a,b)return a~=b end end\ if not hookexpr then hookexpr=function()end end\ if not hookeq then hookeq=function()end end]]\ end\ \ M.install(_G)\ rawset(_G, \"_HOOKOP\", M)\ \ local _prev_hookop_reset = _G._bypassOnReset\ _G._bypassOnReset = function()\ if _prev_hookop_reset then _prev_hookop_reset() end\ M.install(_G)\ local bp = type(_G._BYPASS)==\"table\" and _G._BYPASS\ local benv = bp and type(bp.env)==\"table\" and bp.env\ if benv then M.install(benv) end\ end\ \ io.stderr:write(\"[_HOOKOP] Unified hookOp module installed → _G._HOOKOP (install + preamble ready)\\n\")\ end\ end\ \ do\ local _env_dump = rawget(_G, \"_ENV_DUMP\")\ if type(_env_dump) ~= \"table\" then\ _env_dump = {}\ rawset(_G, \"_ENV_DUMP\", _env_dump)\ end\ local function _push_env_dump(name, value)\ _env_dump[name] = value\ end\ _push_env_dump(\"getgenv\", function() return _G end)\ _push_env_dump(\"getrenv\", function() return _G end)\ _push_env_dump(\"getfenv\", function() return _G end)\ _push_env_dump(\"setfenv\", function() return nil end)\ _push_env_dump(\"dumpenv\", function()\ local out = {}\ for k, v in pairs(_G) do\ out[#out + 1] = tostring(k) .. \"=\" .. tostring(v)\ end\ return table.concat(out, \"\\n\")\ end)\ if type(_G._BYPASS) == \"table\" then\ _G._BYPASS.env_dump = _env_dump\ end\ end\ \ do\ table.freeze = table.freeze or function(t)\ return t\ end\ table.isfrozen = table.isfrozen or function()\ return true\ end\ _VERSION = \"Luau\"\ end\ \ do\ local _ds = _G.dumperState\ local _game = _G.game\ if type(_ds) == \"table\" and type(_game) == \"table\" and type(_ds.property_store) == \"table\" then\ local function get_store(target)\ local s = _ds.property_store[target]\ if not s then s = {} _ds.property_store[target] = s end\ return s\ end\ local function fmt_num(v)\ if type(v) == \"number\" then\ if v == math.floor(v) and math.abs(v) < 1e15 then\ return string.format(\"%d\", v)\ end\ end\ return tostring(v)\ end\ local function emit_clean(line)\ local indent = string.rep(\" \", _ds.indent or 0)\ table.insert(_ds.output, indent .. line)\ _ds.last_emitted_line = line\ end\ local function install_id_setters(target)\ local store = get_store(target)\ rawset(target, \"SetPlaceId\", function(_, placeId)\ local n = tonumber(placeId) or placeId\ store.PlaceId = n\ store.placeId = n\ emit_clean(string.format(\"game:SetPlaceId(%s)\", fmt_num(n)))\ end)\ rawset(target, \"SetGameId\", function(_, gameId)\ local n = tonumber(gameId) or gameId\ store.GameId = n\ store.gameId = n\ emit_clean(string.format(\"game:SetGameId(%s)\", fmt_num(n)))\ end)\ rawset(target, \"SetUniverseId\", function(_, universeId)\ local n = tonumber(universeId) or universeId\ store.UniverseId = n\ emit_clean(string.format(\"game:SetUniverseId(%s)\", fmt_num(n)))\ end)\ end\ install_id_setters(_game)\ local _prev_reset = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_reset) == \"function\" then pcall(_prev_reset) end\ local g = _G.game\ local ds = _G.dumperState\ if type(g) == \"table\" and type(ds) == \"table\" and type(ds.property_store) == \"table\" then\ install_id_setters(g)\ end\ end\ end\ end\ \ local INPUT = arg and arg[1]\ local OUTPUT = (arg and arg[2]) or \"bypass_dumped.lua\"\ local VERBOSE = (__BYPASS_VERBOSE == \"1\") -- env pre-read by Python sandbox; os.getenv is blocked\ \ local function log(msg)\ if VERBOSE then io.stderr:write(\"[bypass] \" .. msg .. \"\\n\") end\ end\ \ local _native_debug = _G.debug\ debug = nil\ loadstring = loadstring or load\ getfenv = getfenv or function() return _G end\ setfenv = setfenv or function(f) return f end\ rawget = rawget or function(t,k) return t[k] end\ rawset = rawset or function(t,k,v) t[k]=v; return t end\ unpack = unpack or table.unpack\ \ do\ local _fl = math.floor\ local _u32 = function(n) return _fl(n or 0) % 4294967296 end\ local _b2 = load(\"local a,b=...;a=a&0xFFFFFFFF;b=b&0xFFFFFFFF;return a&b\")\ local _o2 = load(\"local a,b=...;a=a&0xFFFFFFFF;b=b&0xFFFFFFFF;return a|b\")\ local _x2 = load(\"local a,b=...;a=a&0xFFFFFFFF;b=b&0xFFFFFFFF;return a~b\")\ local _n1 = load(\"local a=...;return((~a)&0xFFFFFFFF)\")\ local _l2 = load(\"local a,b=...;if b>=32 then return 0 end;return((a&0xFFFFFFFF)<=32 then return 0 end;return(a&0xFFFFFFFF)>>b\")\ local _ars_ext = load(\"local b=...;return(0xFFFFFFFF-(0xFFFFFFFF>>b))&0xFFFFFFFF\")\ local _ext_msk = load(\"local f,w=...;return((1<=32 then return 0 end return _u32(a) * (2^b) % 4294967296 end\ _r2 = function(a,b) if b>=32 then return 0 end return _fl(_u32(a) / (2^b)) end\ _ars_ext = function(b) return (4294967295 - _fl(4294967295 / (2^b))) % 4294967296 end\ _ext_msk = function(f,w) return ((2^w-1) * (2^f)) % 4294967296 end\ _rep_msk = function(w) return (2^w-1) end\ _rep_sft = function(f,w) return ((2^w-1) * (2^f)) % 4294967296 end\ end\ bit32 = {\ band = function(...) local r=0xFFFFFFFF for i=1,select(\"#\",...)do r=_b2(r,_fl(select(i,...)or 0))end return r end,\ bor = function(...) local r=0 for i=1,select(\"#\",...)do r=_o2(r,_fl(select(i,...)or 0))end return r end,\ bxor = function(...) local r=0 for i=1,select(\"#\",...)do r=_x2(r,_fl(select(i,...)or 0))end return r end,\ bnot = function(a) return _n1(_fl(a or 0)) end,\ lshift = function(a,b) b=_fl(b or 0); if b<0 then return _r2(_fl(a or 0),-b) end return _l2(_fl(a or 0),b) end,\ rshift = function(a,b) b=_fl(b or 0); if b<0 then return _l2(_fl(a or 0),-b) end return _r2(_fl(a or 0),b) end,\ arshift = function(a,b)\ local u=_u32(a); b=_fl(b or 0)\ if b>=32 then return (u>=2147483648) and 0xFFFFFFFF or 0 end\ if b< 0 then return _l2(u,-b) end\ local r=_r2(u,b)\ if u>=2147483648 and _ars_ext then r=_o2(r,_ars_ext(b)) end\ return r\ end,\ lrotate = function(a,b)\ b=_fl(b or 0)%32; if b==0 then return _u32(a) end\ return _o2(_l2(_fl(a or 0),b),_r2(_fl(a or 0),32-b))\ end,\ rrotate = function(a,b)\ b=_fl(b or 0)%32; if b==0 then return _u32(a) end\ return _o2(_r2(_fl(a or 0),b),_l2(_fl(a or 0),32-b))\ end,\ extract = function(a,f,w)\ w=_fl(w or 1); f=_fl(f or 0)\ local mask = _ext_msk and _ext_msk(f,w) or ((2^w-1)*(2^f))\ return _r2(_b2(_u32(a),mask),f)\ end,\ replace = function(a,v,f,w)\ w=_fl(w or 1); f=_fl(f or 0)\ local m = _rep_msk and _rep_msk(w) or (2^w-1)\ local s = _rep_sft and _rep_sft(f,w) or (m*(2^f))\ return _o2(_b2(_u32(a),_n1(s)),_l2(_b2(_u32(v),m),f))\ end,\ btest = function(...) local r=0xFFFFFFFF for i=1,select(\"#\",...)do r=_b2(r,_fl(select(i,...)or 0))end return r~=0 end,\ countlz = function(a)\ a=_u32(a); if a==0 then return 32 end\ local n=0; while a<2147483648 do a=a*2;n=n+1 end return n\ end,\ countrz = function(a)\ a=_u32(a); if a==0 then return 32 end\ local n=0; while a%2==0 do a=_fl(a/2);n=n+1 end return n\ end,\ }\ bit32.rol = bit32.lrotate\ bit32.ror = bit32.rrotate\ end\ \ local function fake_service()\ return setmetatable({}, { __index = function() return fake_service end })\ end\ \ local _grs_anim = {}\ local _grs_new_insts = setmetatable({}, {__mode = \"k\"})\ \ local _fake_instance_mt = { __metatable = \"Instance\" }\ local function _mk_instance(tbl)\ return setmetatable(tbl or {}, _fake_instance_mt)\ end\ _G.__log_history_buf = _G.__log_history_buf or {}\ \ local _fake_services = {\ RunService = _mk_instance({\ IsServer = function() return false end,\ IsClient = function() return true end,\ IsStudio = function() return false end,\ Heartbeat = _mk_instance({ Connect = function() return _mk_instance({Disconnect=function()end}) end }),\ RenderStepped = _mk_instance({ Connect = function() return _mk_instance({Disconnect=function()end}) end }),\ }),\ TweenService = _mk_instance({\ GetValue = function(_, t) return t end,\ Create = function() return _mk_instance({ Play=function()end, Cancel=function()end }) end,\ }),\ Players = _mk_instance((function()\ local _char = _mk_instance({\ ClassName = \"Model\",\ Name = \"Character\",\ Animate = _grs_anim,\ FindFirstChild = function(_self, name)\ if name == \"Animate\" then return _grs_anim end\ return nil\ end,\ FindFirstChildOfClass = function() return nil end,\ FindFirstChildWhichIsA = function() return nil end,\ GetChildren = function() return {_grs_anim} end,\ GetDescendants = function() return {_grs_anim} end,\ WaitForChild = function(_self, name)\ if name == \"Animate\" then return _grs_anim end\ return nil\ end,\ })\ local _lp = _mk_instance({\ ClassName = \"Player\",\ Name = \"Player1\",\ DisplayName = \"Player1\",\ UserId = 1234567,\ Character = _char,\ GetChildren = function() return {} end,\ GetDescendants = function() return {} end,\ FindFirstChild = function(_self, name)\ if name == \"Character\" then return _char end\ return nil\ end,\ WaitForChild = function(_self, name)\ if name == \"Character\" then return _char end\ return nil\ end,\ })\ return {\ LocalPlayer = _lp,\ GetPlayers = function() return {_lp} end,\ FindFirstChild = function(_self, name)\ if name == \"LocalPlayer\" then return _lp end\ return nil\ end,\ }\ end)()),\ PhysicsService = _mk_instance({}),\ Lighting = _mk_instance({ Brightness = 1, ClockTime = 12, FogEnd = 1e6 }),\ Workspace = _mk_instance({\ CurrentCamera = _mk_instance({}),\ GetServerTimeNow = function(_self) return os.clock() end,\ Gravity = 196.2,\ ClassName = \"Workspace\",\ }),\ HttpService = _mk_instance({\ GenerateGUID = function(_, useBraces)\ local s = string.format(\"%08X-%04X-4%03X-%04X-%012X\",\ math.random(0x10000000,0xFFFFFFFF), math.random(0x1000,0xFFFF),\ math.random(0,0xFFF), math.random(0x8000,0xBFFF),\ math.random(0x100000000,0xFFFFFFFFFF))\ return useBraces and (\"{\" .. s .. \"}\") or s\ end,\ JSONEncode = function(_, val)\ local _seen = {}\ local function _j(v, d)\ d = d or 0\ if d > 32 then return '\"[MaxDepth]\"' end\ local t = type(v)\ if t == \"nil\" then\ return \"null\"\ elseif t == \"boolean\" then\ return tostring(v)\ elseif t == \"number\" then\ if v ~= v then return \"null\"\ elseif v == math.huge then return \"1e308\"\ elseif v == -math.huge then return \"-1e308\"\ else return string.format(\"%.14g\", v) end\ elseif t == \"string\" then\ v = v:gsub('\\\\','\\\\\\\\'):gsub('\"','\\\\\"')\ :gsub('\\n','\\\\n'):gsub('\\r','\\\\r'):gsub('\\t','\\\\t')\ v = v:gsub('[%c]', function(c)\ return string.format('\\\\u%04X', string.byte(c)) end)\ return '\"' .. v .. '\"'\ elseif t == \"table\" then\ if _seen[v] then return '\"[Circular]\"' end\ _seen[v] = true\ local isArr, maxN = true, 0\ for k,_ in pairs(v) do\ if type(k) ~= \"number\" or k ~= math.floor(k) or k < 1 then\ isArr = false; break\ end\ if k > maxN then maxN = k end\ end\ local r\ if isArr and maxN > 0 then\ local arr = {}\ for i = 1, maxN do arr[i] = _j(v[i], d+1) end\ r = \"[\" .. table.concat(arr, \",\") .. \"]\"\ else\ local obj = {}\ for k, v2 in pairs(v) do\ if type(k) == \"string\" or type(k) == \"number\" then\ local ks = '\"' .. tostring(k):gsub('\"','\\\\\"') .. '\"'\ obj[#obj+1] = ks .. \":\" .. _j(v2, d+1)\ end\ end\ r = \"{\" .. table.concat(obj, \",\") .. \"}\"\ end\ _seen[v] = nil\ return r\ else\ return \"null\"\ end\ end\ return _j(val)\ end,\ JSONDecode = function(_, s)\ s = tostring(s or \"\")\ local pos = 1\ local function skip() while pos <= #s and s:sub(pos,pos):match(\"%s\") do pos=pos+1 end end\ local function parse()\ skip()\ if pos > #s then return nil end\ local c = s:sub(pos,pos)\ if c == \"{\" then\ pos=pos+1; local t={}; skip()\ if s:sub(pos,pos)==\"}\" then pos=pos+1; return t end\ while true do\ skip()\ if s:sub(pos,pos)~='\"' then break end\ pos=pos+1\ local ke=s:find('\"', pos, true)\ local key = s:sub(pos, (ke or pos)-1); pos=(ke or pos)+1\ skip(); if s:sub(pos,pos)==\":\" then pos=pos+1 end\ t[key]=parse(); skip()\ if s:sub(pos,pos)==\",\" then pos=pos+1 else break end\ end\ skip(); if s:sub(pos,pos)==\"}\" then pos=pos+1 end\ return t\ elseif c == \"[\" then\ pos=pos+1; local t={}; skip()\ if s:sub(pos,pos)==\"]\" then pos=pos+1; return t end\ while true do\ t[#t+1]=parse(); skip()\ if s:sub(pos,pos)==\",\" then pos=pos+1 else break end\ end\ skip(); if s:sub(pos,pos)==\"]\" then pos=pos+1 end\ return t\ elseif c=='\"' then\ pos=pos+1; local r={}\ while pos<=#s do\ local ch=s:sub(pos,pos)\ if ch=='\"' then pos=pos+1; break\ elseif ch==\"\\\\\" then\ pos=pos+1; local esc=s:sub(pos,pos); pos=pos+1\ if esc==\"n\" then r[#r+1]=\"\\n\"\ elseif esc==\"t\" then r[#r+1]=\"\\t\"\ elseif esc==\"r\" then r[#r+1]=\"\\r\"\ elseif esc==\"u\" then\ local hex=s:sub(pos,pos+3); pos=pos+4\ r[#r+1]=string.char(tonumber(hex,16) or 63)\ else r[#r+1]=esc end\ else r[#r+1]=ch; pos=pos+1 end\ end\ return table.concat(r)\ elseif c==\"-\" or c:match(\"%d\") then\ local ns,ne=s:find(\"%-?%d+%.?%d*[eE]?[+-]?%d*\", pos)\ if ns then local n=tonumber(s:sub(ns,ne)); pos=ne+1; return n end\ return 0\ elseif s:sub(pos,pos+3)==\"true\" then pos=pos+4; return true\ elseif s:sub(pos,pos+4)==\"false\" then pos=pos+5; return false\ elseif s:sub(pos,pos+3)==\"null\" then pos=pos+4; return nil\ end\ return nil\ end\ local ok2, res = pcall(parse)\ return ok2 and res or {}\ end,\ }),\ UserInputService = _mk_instance({}),\ ReplicatedStorage = _mk_instance({}),\ CoreGui = _mk_instance({}),\ StarterGui = _mk_instance({}),\ LogService = _mk_instance({\ GetLogHistory = function(_self)\ return _G.__log_history_buf or {}\ end,\ MessageOut = _mk_instance({\ Connect = function(_self, fn)\ if type(fn) == \"function\" then\ local ls = rawget(_G, \"__log_history_listeners\") or {}\ rawset(_G, \"__log_history_listeners\", ls)\ ls[#ls+1] = fn\ end\ return _mk_instance({ Disconnect = function() end })\ end,\ }),\ }),\ SoundService = (function()\ local _ado = _mk_instance({\ ClassName = \"AudioDeviceOutput\",\ Name = \"AudioDeviceOutput\",\ })\ return _mk_instance({\ ClassName = \"SoundService\",\ Name = \"SoundService\",\ GetChildren = function(_self) return { _ado } end,\ GetDescendants = function(_self) return { _ado } end,\ FindFirstChild = function(_self, name)\ if name == \"AudioDeviceOutput\" then return _ado end\ return nil\ end,\ FindFirstChildOfClass = function(_self, cn)\ if cn == \"AudioDeviceOutput\" then return _ado end\ return nil\ end,\ })\ end)(),\ }\ local function _get_service(_, name)\ local s = _fake_services[name]\ if not s then s = _mk_instance({}); _fake_services[name] = s end\ return s\ end\ \ -- ╔══════════════════════════════════════════════════════════════════════╗\ -- ║ Extended Roblox Service Stubs ║\ -- ╚══════════════════════════════════════════════════════════════════════╝\ do\ -- DataStoreService — in-memory key-value per store\ local _ds_stores = {}\ local function _get_ds(name)\ if not _ds_stores[name] then\ local _data = {}\ _ds_stores[name] = _mk_instance({\ ClassName = \"DataStore\",\ Name = name,\ GetAsync = function(_, key) return _data[tostring(key)] end,\ SetAsync = function(_, key, val) _data[tostring(key)] = val; return true end,\ UpdateAsync = function(_, key, fn)\ local cur = _data[tostring(key)]\ local new = fn(cur)\ if new ~= nil then _data[tostring(key)] = new end\ return new\ end,\ IncrementAsync = function(_, key, delta)\ local k = tostring(key)\ _data[k] = (tonumber(_data[k]) or 0) + (tonumber(delta) or 1)\ return _data[k]\ end,\ RemoveAsync = function(_, key)\ local k = tostring(key)\ local old = _data[k]; _data[k] = nil; return old\ end,\ GetVersionAsync = function(_, key) return _data[tostring(key)], {} end,\ ListKeysAsync = function() return _mk_instance({ GetCurrentPage=function() return {} end, IsFinished=true }) end,\ })\ end\ return _ds_stores[name]\ end\ local _dss = _mk_instance({\ ClassName = \"DataStoreService\",\ Name = \"DataStoreService\",\ GetDataStore = function(_, name) return _get_ds(tostring(name or \"default\")) end,\ GetGlobalDataStore = function(_) return _get_ds(\"__global\") end,\ GetOrderedDataStore = function(_, name) return _get_ds(\"__ord_\"..tostring(name or \"default\")) end,\ })\ _fake_services[\"DataStoreService\"] = _dss\ \ -- MemoryStoreService — ephemeral in-process store\ local _mss_maps = {}\ local function _get_msmap(name)\ if not _mss_maps[name] then\ local _mem = {}\ _mss_maps[name] = _mk_instance({\ ClassName = \"MemoryStoreHashMap\",\ GetAsync = function(_, key) return _mem[tostring(key)] end,\ SetAsync = function(_, key, val) _mem[tostring(key)] = val end,\ UpdateAsync = function(_, key, fn)\ local new = fn(_mem[tostring(key)])\ if new ~= nil then _mem[tostring(key)] = new end\ return new\ end,\ RemoveAsync = function(_, key) local old=_mem[tostring(key)]; _mem[tostring(key)]=nil; return old end,\ })\ end\ return _mss_maps[name]\ end\ local _mss_queues = {}\ local function _get_msq(name)\ if not _mss_queues[name] then\ local _q = {}\ _mss_queues[name] = _mk_instance({\ ClassName = \"MemoryStoreSortedMap\",\ AddAsync = function(_, key, val) _q[#_q+1]={key=key, val=val} end,\ GetAsync = function(_, count)\ local out={}; for i=1,math.min(count or 1,#_q) do out[i]=_q[i] end; return out\ end,\ RemoveAsync = function(_, key)\ for i,v in ipairs(_q) do if v.key==key then table.remove(_q,i); return true end end\ return false\ end,\ })\ end\ return _mss_queues[name]\ end\ _fake_services[\"MemoryStoreService\"] = _mk_instance({\ ClassName = \"MemoryStoreService\",\ Name = \"MemoryStoreService\",\ GetHashMap = function(_, name) return _get_msmap(tostring(name or \"default\")) end,\ GetSortedMap = function(_, name) return _get_msq(tostring(name or \"default\")) end,\ GetQueue = function(_, name) return _get_msq(tostring(name or \"default\")) end,\ })\ \ -- GuiService\ _fake_services[\"GuiService\"] = _mk_instance({\ ClassName = \"GuiService\",\ Name = \"GuiService\",\ IsModalDialog = false,\ IsGamepadNavigationEnabled = false,\ MenuIsOpen = false,\ GetInspectMenuEnabled = function() return false end,\ SetInspectMenuEnabled = function() end,\ ToggleGui = function() end,\ CloseInspectMenu = function() end,\ OpenBrowserWindow = function() end,\ SetMenuIsOpen = function() end,\ GetGuiInset = function() return _mk_instance({}), _mk_instance({}) end,\ })\ \ -- VRService\ _fake_services[\"VRService\"] = _mk_instance({\ ClassName = \"VRService\",\ Name = \"VRService\",\ VREnabled = false,\ GuiInputUserCFrame = 0,\ GetUserCFrame = function() return _G.CFrame and _G.CFrame.new() or _mk_instance({}) end,\ GetTouchpadMode = function() return 0 end,\ RecenterUserHeadCFrame = function() end,\ })\ \ -- TextService\ _fake_services[\"TextService\"] = _mk_instance({\ ClassName = \"TextService\",\ Name = \"TextService\",\ FilterStringAsync = function(_, str) return _mk_instance({ GetNonChatStringForBroadcastAsync=function() return str end, GetNonChatStringForUserAsync=function() return str end }) end,\ GetTextSize = function(_, text, size, font, frameSize)\ local chars = (text and #text) or 0\ return _mk_instance({ X = chars * (size or 14) * 0.6, Y = size or 14 })\ end,\ GetFamilyFromEnum = function() return \"\" end,\ GetTextBoundsAsync = function(_, params)\ local text = (type(params)==\"table\" and params.Text) or \"\"\ local size = (type(params)==\"table\" and params.Size) or 14\ return _mk_instance({ X = #text * size * 0.6, Y = size })\ end,\ })\ \ -- BadgeService\ _fake_services[\"BadgeService\"] = _mk_instance({\ ClassName = \"BadgeService\",\ Name = \"BadgeService\",\ AwardBadge = function(_, userId, badgeId) return true end,\ UserHasBadgeAsync= function(_, userId, badgeId) return false end,\ GetBadgeInfoAsync= function(_, badgeId)\ return { Name=\"Badge\", Description=\"\", IsEnabled=true, IconImageId=0 }\ end,\ })\ \ -- TeleportService\ _fake_services[\"TeleportService\"] = _mk_instance({\ ClassName = \"TeleportService\",\ Name = \"TeleportService\",\ Teleport = function() end,\ TeleportToSpawnByName = function() end,\ TeleportToPlaceInstance= function() end,\ TeleportParty = function() end,\ GetPlayerPlaceInstanceAsync = function() return false, \"\", 0, _mk_instance({}) end,\ GetArrivingTeleportGui= function() return nil end,\ SetTeleportGui = function() end,\ GetLocalPlayerTeleportData = function() return nil end,\ TeleportAsync = function() return _mk_instance({}) end,\ })\ \ -- GroupService\ _fake_services[\"GroupService\"] = _mk_instance({\ ClassName = \"GroupService\",\ Name = \"GroupService\",\ GetGroupAsync = function(_, gid)\ return { Id=tonumber(gid) or 0, Name=\"Group\", Description=\"\", Owner={}, Members=0, Roles={} }\ end,\ GetGroupsAsync = function(_, uid) return {} end,\ GetAlliesAsync = function(_, gid) return _mk_instance({ GetCurrentPage=function() return {} end, IsFinished=true }) end,\ GetEnemiesAsync = function(_, gid) return _mk_instance({ GetCurrentPage=function() return {} end, IsFinished=true }) end,\ })\ \ -- InsertService\ _fake_services[\"InsertService\"] = _mk_instance({\ ClassName = \"InsertService\",\ Name = \"InsertService\",\ LoadAsset = function(_, id) return _mk_instance({ ClassName=\"Model\", Name=\"Asset_\"..tostring(id) }) end,\ LoadAssetVersion = function(_, id) return _mk_instance({ ClassName=\"Model\", Name=\"AssetVer_\"..tostring(id) }) end,\ GetFreeDecals = function() return {} end,\ GetFreeModels = function() return {} end,\ GetBaseSets = function() return {} end,\ GetUserSets = function() return {} end,\ })\ \ -- LocalizationService\ _fake_services[\"LocalizationService\"] = _mk_instance({\ ClassName = \"LocalizationService\",\ Name = \"LocalizationService\",\ RobloxLocaleId = \"en-us\",\ SystemLocaleId = \"en-us\",\ GetTranslatorForPlayer = function() return _mk_instance({ Translate=function(_, i, s) return s end }) end,\ GetTranslatorForPlayerAsync = function() return _mk_instance({ Translate=function(_, i, s) return s end }) end,\ GetTranslatorForLocaleAsync = function() return _mk_instance({ Translate=function(_, i, s) return s end }) end,\ })\ \ -- PathfindingService\ _fake_services[\"PathfindingService\"] = _mk_instance({\ ClassName = \"PathfindingService\",\ Name = \"PathfindingService\",\ CreatePath = function(_, params)\ local _wps = {}\ return _mk_instance({\ Status = 0,\ ComputeAsync = function(self, start, goal)\ _wps = { _mk_instance({ Position=start, Action=0 }), _mk_instance({ Position=goal, Action=0 }) }\ end,\ GetWaypoints = function() return _wps end,\ Blocked = _mk_instance({ Connect=function() return _mk_instance({Disconnect=function()end}) end }),\ })\ end,\ })\ \ -- ContextActionService\ _fake_services[\"ContextActionService\"] = _mk_instance({\ ClassName = \"ContextActionService\",\ Name = \"ContextActionService\",\ BindAction = function() end,\ UnbindAction = function() end,\ BindActionAtPriority = function() end,\ GetBoundActionInfo = function() return {} end,\ GetAllBoundActionInfo = function() return {} end,\ SetTitle = function() end,\ SetImage = function() end,\ SetPosition = function() end,\ SetDescription = function() end,\ })\ \ -- AssetService\ _fake_services[\"AssetService\"] = _mk_instance({\ ClassName = \"AssetService\",\ Name = \"AssetService\",\ GetCreatorAssetID = function() return 0 end,\ GetGamePlacesAsync = function() return _mk_instance({ GetCurrentPage=function() return {} end, IsFinished=true }) end,\ GetBundleDetailsAsync = function() return {} end,\ GetAudioMetadataAsync = function() return {} end,\ CreatePlaceAsync = function() return 0 end,\ SearchAssets = function() return _mk_instance({ GetCurrentPage=function() return {} end }) end,\ })\ \ -- ContentProvider\ _fake_services[\"ContentProvider\"] = _mk_instance({\ ClassName = \"ContentProvider\",\ Name = \"ContentProvider\",\ RequestQueueSize = 0,\ BaseUrl = \"https://www.roblox.com\",\ PreloadAsync = function(_, assets, cb) if type(cb)==\"function\" then for _,a in ipairs(assets or {}) do cb(a,2) end end end,\ })\ \ -- Chat service\ _fake_services[\"Chat\"] = _fake_services[\"Chat\"] or _mk_instance({\ ClassName = \"Chat\",\ Name = \"Chat\",\ Chat = function() end,\ FilterStringAsync = function(_, str) return str end,\ FilterStringForBroadcast = function(_, str) return str end,\ })\ \ -- PolicyService\ _fake_services[\"PolicyService\"] = _mk_instance({\ ClassName = \"PolicyService\",\ Name = \"PolicyService\",\ GetPolicyInfoForPlayerAsync = function(_, player)\ return {\ ArePaidRandomItemsRestricted = false,\ AllowedExternalLinkReferences = {},\ IsPaidItemTradingAllowed = false,\ IsSubjectToChinaPolicies = false,\ }\ end,\ })\ \ -- MarketplaceService (enhanced)\ if not rawget(_fake_services, \"MarketplaceService\") then\ _fake_services[\"MarketplaceService\"] = _mk_instance({})\ end\ local _mkt = _fake_services[\"MarketplaceService\"]\ if not rawget(_mkt, \"GetProductInfo\") then\ rawset(_mkt, \"GetProductInfo\", function(_, assetId, infoType)\ return { AssetId=assetId, Name=\"Asset_\"..tostring(assetId), PriceInRobux=0,\ Creator={CreatorType=\"User\",CreatorTargetId=0,Name=\"Roblox\"},\ AssetTypeId=1, IsPublicDomain=true }\ end)\ end\ if not rawget(_mkt, \"GetGamePassProductInfo\") then\ rawset(_mkt, \"GetGamePassProductInfo\", function(_, passId)\ return { Name=\"Pass_\"..tostring(passId), PriceInRobux=0, IconImageAssetId=0, IsOwned=false }\ end)\ end\ if not rawget(_mkt, \"UserOwnsGamePassAsync\") then\ rawset(_mkt, \"UserOwnsGamePassAsync\", function() return false end)\ end\ if not rawget(_mkt, \"PromptGamePassPurchase\") then\ rawset(_mkt, \"PromptGamePassPurchase\", function() end)\ end\ if not rawget(_mkt, \"PromptPurchase\") then\ rawset(_mkt, \"PromptPurchase\", function() end)\ end\ if not rawget(_mkt, \"PromptProductPurchase\") then\ rawset(_mkt, \"PromptProductPurchase\", function() end)\ end\ \ -- UserInputService (enhanced)\ local _uis = _fake_services[\"UserInputService\"] or _mk_instance({})\ _fake_services[\"UserInputService\"] = _uis\ if not rawget(_uis, \"IsKeyDown\") then rawset(_uis, \"IsKeyDown\", function() return false end) end\ if not rawget(_uis, \"IsMouseButtonPressed\") then rawset(_uis, \"IsMouseButtonPressed\", function() return false end) end\ if not rawget(_uis, \"GetKeysPressed\") then rawset(_uis, \"GetKeysPressed\", function() return {} end) end\ if not rawget(_uis, \"GetMouseLocation\") then rawset(_uis, \"GetMouseLocation\", function() return _mk_instance({X=0,Y=0}) end) end\ if not rawget(_uis, \"GetMouseDelta\") then rawset(_uis, \"GetMouseDelta\", function() return _mk_instance({X=0,Y=0}) end) end\ if not rawget(_uis, \"GetDeviceRotation\") then rawset(_uis, \"GetDeviceRotation\", function() return 0, _mk_instance({}) end) end\ if not rawget(_uis, \"GetDeviceAcceleration\") then rawset(_uis, \"GetDeviceAcceleration\", function() return _mk_instance({X=0,Y=0,Z=0}) end) end\ rawset(_uis, \"KeyboardEnabled\", true)\ rawset(_uis, \"MouseEnabled\", true)\ rawset(_uis, \"TouchEnabled\", false)\ rawset(_uis, \"GamepadEnabled\", false)\ rawset(_uis, \"VREnabled\", false)\ rawset(_uis, \"MouseIconEnabled\", true)\ \ -- Players (enhanced)\ local _plsvc = _fake_services[\"Players\"]\ if type(_plsvc) == \"table\" then\ if not rawget(_plsvc, \"GetNameFromUserIdAsync\") then\ rawset(_plsvc, \"GetNameFromUserIdAsync\", function(_, uid)\ return \"Player_\"..tostring(uid)\ end)\ end\ if not rawget(_plsvc, \"GetUserIdFromNameAsync\") then\ rawset(_plsvc, \"GetUserIdFromNameAsync\", function(_, name)\ return math.random(1000000, 9999999)\ end)\ end\ if not rawget(_plsvc, \"GetHumanoidDescriptionFromUserId\") then\ rawset(_plsvc, \"GetHumanoidDescriptionFromUserId\", function(_, uid)\ return _mk_instance({ ClassName=\"HumanoidDescription\", HatAccessory=\"\", FaceAccessory=\"\",\ HeadColor=0, LeftArmColor=0, RightArmColor=0, TorsoColor=0,\ LeftLegColor=0, RightLegColor=0 })\ end)\ end\ if not rawget(_plsvc, \"GetCharacterAppearanceAsync\") then\ rawset(_plsvc, \"GetCharacterAppearanceAsync\", function(_, uid)\ return _mk_instance({ ClassName=\"Model\", Name=\"Appearance_\"..tostring(uid) })\ end)\ end\ rawset(_plsvc, \"MaxPlayers\", 20)\ rawset(_plsvc, \"NumPlayers\", 1)\ rawset(_plsvc, \"RespawnTime\", 5)\ rawset(_plsvc, \"PreferredPlayers\", 20)\ end\ end\ \ -- ╔══════════════════════════════════════════════════════════════════════╗\ -- ║ Pure-Lua Base64 codec (RFC 4648) + buffer-agnostic EncodingService ║\ -- ╚══════════════════════════════════════════════════════════════════════╝\ local _B64_ALPHA = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local _B64_DEC = {}\ for _i64 = 1, #_B64_ALPHA do\ _B64_DEC[_B64_ALPHA:sub(_i64,_i64)] = _i64 - 1\ end\ \ local function _b64_encode(s)\ local out, len = {}, #s\ local i = 1\ while i <= len do\ local b1 = s:byte(i) or 0\ local b2 = s:byte(i+1) or 0\ local b3 = s:byte(i+2) or 0\ local n = b1 * 65536 + b2 * 256 + b3\ out[#out+1] = _B64_ALPHA:sub(math.floor(n/262144) % 64 + 1, math.floor(n/262144) % 64 + 1)\ out[#out+1] = _B64_ALPHA:sub(math.floor(n/4096) % 64 + 1, math.floor(n/4096) % 64 + 1)\ out[#out+1] = (i+1 <= len) and _B64_ALPHA:sub(math.floor(n/64) % 64 + 1, math.floor(n/64) % 64 + 1) or \"=\"\ out[#out+1] = (i+2 <= len) and _B64_ALPHA:sub(n % 64 + 1, n % 64 + 1) or \"=\"\ i = i + 3\ end\ return table.concat(out)\ end\ \ local function _b64_decode(s)\ s = s:gsub(\"[^A-Za-z0-9+/=]\", \"\")\ local out = {}\ local i = 1\ local slen = #s\ while i + 3 <= slen do\ local c1 = _B64_DEC[s:sub(i, i )] or 0\ local c2 = _B64_DEC[s:sub(i+1, i+1)] or 0\ local c3 = _B64_DEC[s:sub(i+2, i+2)] or 0\ local c4 = _B64_DEC[s:sub(i+3, i+3)] or 0\ local n = c1 * 262144 + c2 * 4096 + c3 * 64 + c4\ out[#out+1] = string.char(math.floor(n / 65536) % 256)\ if s:sub(i+2, i+2) ~= \"=\" then out[#out+1] = string.char(math.floor(n / 256) % 256) end\ if s:sub(i+3, i+3) ~= \"=\" then out[#out+1] = string.char(n % 256) end\ i = i + 4\ end\ return table.concat(out)\ end\ \ -- Buffer helpers — work with BOTH buffer flavors:\ -- • [internal]'s buffer (string-backed registry, _G.buffer.tostring)\ -- • [internal]'s buffer (_d-table + _len)\ -- Uses _G.buffer at CALL TIME so it picks up whichever is active.\ local function _buf_tostring_compat(b)\ if type(b) == \"string\" then return b end\ local api = rawget(_G, \"buffer\")\ if type(api) == \"table\" and type(api.tostring) == \"function\" then\ local ok, s = pcall(api.tostring, b)\ if ok and type(s) == \"string\" then return s end\ end\ if type(b) == \"table\" then\ local d = rawget(b, \"_d\")\ if d then\ local t, len = {}, rawget(b, \"_len\") or 0\ for j = 0, len - 1 do t[j+1] = string.char(rawget(d, j) or 0) end\ return table.concat(t)\ end\ end\ return tostring(b or \"\")\ end\ \ local function _buf_fromstring_compat(s)\ local api = rawget(_G, \"buffer\")\ if type(api) == \"table\" and type(api.fromstring) == \"function\" then\ local ok, b = pcall(api.fromstring, s)\ if ok then return b end\ end\ local bmt = rawget(_G, \"_bypass_buf_mt\")\ if bmt then\ local d = {}\ for j = 1, #s do d[j-1] = s:byte(j) end\ return setmetatable({ _d = d, _len = #s }, bmt)\ end\ return s\ end\ \ local _EncodingService = setmetatable({}, {\ __metatable = \"Instance\",\ __tostring = function() return \"EncodingService\" end,\ __newindex = rawset,\ __index = function(_, k)\ if k == \"ClassName\" then return \"EncodingService\" end\ if k == \"Name\" then return \"EncodingService\" end\ if k == \"IsA\" then return function(_, cn) return cn == \"EncodingService\" or cn == \"Instance\" end end\ if k == \"Base64Encode\" then\ return function(_, buf)\ return _buf_fromstring_compat(_b64_encode(_buf_tostring_compat(buf)))\ end\ end\ if k == \"Base64Decode\" then\ return function(_, buf)\ return _buf_fromstring_compat(_b64_decode(_buf_tostring_compat(buf)))\ end\ end\ if k == \"ZstdCompress\" then\ return function(_, buf)\ local raw = _buf_tostring_compat(buf)\ return _buf_fromstring_compat(\"\\0ZSTD\\0\" .. raw)\ end\ end\ if k == \"ZstdDecompress\" then\ return function(_, buf)\ local raw = _buf_tostring_compat(buf)\ if raw:sub(1,6) == \"\\0ZSTD\\0\" then raw = raw:sub(7) end\ return _buf_fromstring_compat(raw)\ end\ end\ return nil\ end,\ })\ \ EncodingService = _EncodingService\ _G.EncodingService = _EncodingService\ _fake_services[\"EncodingService\"] = _EncodingService\ \ do\ local _BYPASS_IDENTITY = \"_RBX_LP_\"\ local _pl_svc = _fake_services.Players\ \ local _lp = rawget(_pl_svc, \"LocalPlayer\")\ if type(_lp) ~= \"table\" then\ _lp = _mk_instance({\ Name = _BYPASS_IDENTITY,\ DisplayName = _BYPASS_IDENTITY,\ UserId = 0,\ })\ rawset(_pl_svc, \"LocalPlayer\", _lp)\ else\ if rawget(_lp, \"Name\") == nil then\ rawset(_lp, \"Name\", _BYPASS_IDENTITY)\ end\ if rawget(_lp, \"DisplayName\") == nil then\ rawset(_lp, \"DisplayName\", _BYPASS_IDENTITY)\ end\ end\ \ rawset(_pl_svc, \"GetNameFromUserIdAsync\", function(_, _userId)\ local lp = rawget(_pl_svc, \"LocalPlayer\")\ if type(lp) == \"table\" then\ return rawget(lp, \"Name\") or _BYPASS_IDENTITY\ end\ return _BYPASS_IDENTITY\ end)\ \ rawset(_pl_svc, \"GetUserIdFromNameAsync\", function(_, _name)\ local lp = rawget(_pl_svc, \"LocalPlayer\")\ if type(lp) == \"table\" then\ return rawget(lp, \"UserId\") or 0\ end\ return 0\ end)\ \ local _prev_reset = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_reset) == \"function\" then pcall(_prev_reset) end\ local g = _G.game\ if type(g) ~= \"table\" then return end\ local ok, pl = pcall(function() return g:GetService(\"Players\") end)\ if not ok or type(pl) ~= \"table\" then return end\ \ if type(rawget(pl, \"LocalPlayer\")) ~= \"table\" then\ rawset(pl, \"LocalPlayer\", _mk_instance({\ Name = _BYPASS_IDENTITY,\ DisplayName = _BYPASS_IDENTITY,\ UserId = 0,\ }))\ end\ \ rawset(pl, \"GetNameFromUserIdAsync\", function(_, _uid)\ local lp2 = rawget(pl, \"LocalPlayer\")\ if type(lp2) == \"table\" then\ return rawget(lp2, \"Name\") or _BYPASS_IDENTITY\ end\ return _BYPASS_IDENTITY\ end)\ rawset(pl, \"GetUserIdFromNameAsync\", function(_, _nm)\ local lp2 = rawget(pl, \"LocalPlayer\")\ if type(lp2) == \"table\" then\ return rawget(lp2, \"UserId\") or 0\ end\ return 0\ end)\ end\ end\ \ _G._RTYPE = _G._RTYPE or setmetatable({}, { __mode = \"k\" })\ \ typeof = typeof or function(v)\ if v == nil then return \"nil\" end\ local t = type(v)\ if t == \"boolean\" then return \"boolean\" end\ if t == \"number\" then return \"number\" end\ if t == \"string\" then return \"string\" end\ if t == \"function\" then return \"function\" end\ if t == \"thread\" then return \"thread\" end\ if t == \"userdata\" then\ local mt = getmetatable(v)\ if mt == \"Instance\" or mt == _fake_instance_mt then return \"Instance\" end\ if mt and type(mt.__type) == \"string\" then return mt.__type end\ return \"userdata\"\ end\ if t == \"table\" then\ if _G._RTYPE and _G._RTYPE[v] then return _G._RTYPE[v] end\ local mt = getmetatable(v)\ if mt then\ if mt == \"Instance\" or mt == _fake_instance_mt then return \"Instance\" end\ if type(mt) == \"table\" then\ if mt.__metatable == \"Instance\" then return \"Instance\" end\ if type(mt.__type) == \"string\" then return mt.__type end\ local ok_ts, s = pcall(tostring, v)\ if ok_ts and type(s) == \"string\" then\ local _roblox_types = {\ \"Vector3\",\"Vector2\",\"CFrame\",\"Color3\",\"UDim2\",\"UDim\",\ \"BrickColor\",\"TweenInfo\",\"NumberSequence\",\"ColorSequence\",\ \"NumberRange\",\"Rect\",\"Ray\",\"Axes\",\"Faces\",\"Region3\",\ \"Region3int16\",\"Vector3int16\",\"Vector2int16\",\ \"PhysicalProperties\",\"RaycastResult\",\"EnumItem\",\ \"RBXScriptSignal\",\"RBXScriptConnection\",\"Random\",\ \"PathWaypoint\",\"Font\",\"FloatCurveKey\",\"RotationCurveKey\",\ \"OverlapParams\",\"RaycastParams\",\"SharedTable\",\ }\ for _, rtn in ipairs(_roblox_types) do\ if s:sub(1, #rtn) == rtn then return rtn end\ end\ end\ end\ end\ return \"table\"\ end\ return t\ end\ \ do\ local _raw_type = type\ type = function(v)\ local t = _raw_type(v)\ if t ~= \"table\" then return t end\ local ok, mt = pcall(getmetatable, v)\ if ok and (mt == _fake_instance_mt or mt == \"Instance\") then\ return \"userdata\"\ end\ return t\ end\ end\ \ do\ local function _mkEnumItem(enum_type_ref, ename, iname, ival)\ local raw = { Name = iname, Value = ival }\ local mt = {\ __type = \"EnumItem\",\ __metatable = \"EnumItem\",\ __tostring = function() return \"Enum.\"..ename..\".\"..iname end,\ __eq = function(a, b)\ if type(b) == \"table\" then\ local bv = rawget(b, \"Value\")\ return bv == ival\ end\ return false\ end,\ __index = function(_, k)\ if k == \"Name\" then return iname end\ if k == \"Value\" then return ival end\ if k == \"EnumType\" then return enum_type_ref[1] end\ return nil\ end,\ }\ local obj = setmetatable({}, mt)\ if _G._RTYPE then _G._RTYPE[obj] = \"EnumItem\" end\ return obj\ end\ local function _mkEnumType(ename, defs)\ local by_name, by_val, list = {}, {}, {}\ local et_holder = { false }\ local et_mt = {\ __type = \"Enum\",\ __metatable = \"Enum\",\ __tostring = function() return \"Enum.\"..ename end,\ __call = function(_, ...) return list end,\ __index = function(_, k)\ if k == \"GetEnumItems\" then return function(_) return list end end\ return by_name[k]\ end,\ __newindex = function() error(\"Cannot modify Enum.\"..ename, 2) end,\ }\ local et = setmetatable({}, et_mt)\ et_holder[1] = et\ for name, value in pairs(defs) do\ local item = _mkEnumItem(et_holder, ename, name, value)\ by_name[name] = item\ by_val[value] = item\ list[#list + 1] = item\ end\ return et\ end\ local _ED = {\ KeyCode = {\ Unknown=0,Backspace=8,Tab=9,Return=13,Escape=27,Space=32,\ Zero=48,One=49,Two=50,Three=51,Four=52,Five=53,Six=54,Seven=55,Eight=56,Nine=57,\ A=65,B=66,C=67,D=68,E=69,F=70,G=71,H=72,I=73,J=74,K=75,L=76,M=77,\ N=78,O=79,P=80,Q=81,R=82,S=83,T=84,U=85,V=86,W=87,X=88,Y=89,Z=90,\ LeftShift=160,RightShift=161,LeftControl=162,RightControl=163,\ LeftAlt=164,RightAlt=165,Delete=127,Home=36,End=35,PageUp=33,PageDown=34,\ Insert=45,F1=290,F2=291,F3=292,F4=293,F5=294,F6=295,F7=296,F8=297,\ F8v=298,F9=299,F10=300,F11=301,F12=302,Up=273,Down=274,Left=276,Right=275,\ LeftBracket=91,RightBracket=93,Comma=44,Period=46,Slash=47,Backslash=92,\ Semicolon=59,Quote=39,Grave=96,Minus=109,Equals=61,CapsLock=20,\ NumLock=144,ScrollLock=145,NumpadZero=96,NumpadOne=97,NumpadTwo=98,\ NumpadThree=99,NumpadFour=100,NumpadFive=101,NumpadSix=102,\ NumpadSeven=103,NumpadEight=104,NumpadNine=105,NumpadPeriod=110,\ NumpadPlus=107,NumpadMinus=109,NumpadAsterisk=106,NumpadSlash=111,\ NumpadEnter=13,LeftMeta=91,RightMeta=92,Menu=93,\ },\ UserInputType = {\ MouseButton1=0,MouseButton2=1,MouseButton3=2,MouseMovement=3,\ MouseWheel=4,Keyboard=7,Focus=9,Touch=10,\ Gamepad1=13,Gamepad2=14,Gamepad3=15,Gamepad4=16,\ TextInput=22,InputMethod=23,None=24,\ },\ UserInputState = { Begin=0,Change=1,End=2,Cancel=3,None=4 },\ Material = {\ Plastic=256,SmoothPlastic=272,Neon=288,Glass=1568,Grass=1280,\ Sand=1296,Fabric=1312,Granite=816,Marble=784,Slate=800,\ Concrete=816,Wood=1072,WoodPlanks=1088,Metal=1088,\ DiamondPlate=1056,Cobblestone=832,Ice=1536,Water=2048,\ Air=2176,Foil=1312,CorrodedMetal=1104,Pebble=1808,Mud=1344,\ Brick=848,Rock=896,Glacier=1792,Snow=1792,Sandstone=1296,\ Asphalt=1408,LeafyGrass=1424,Salt=1440,Crackedlava=1568,\ Limestone=864,Basalt=788,Ground=1328,Pavement=1360,\ },\ NormalId = { Right=0,Top=1,Back=2,Left=3,Bottom=4,Front=5 },\ Axis = { X=0,Y=1,Z=2 },\ SortOrder = { Custom=0,LayoutOrder=1,Name=2 },\ FillDirection = { Horizontal=0,Vertical=1 },\ HorizontalAlignment = { Center=0,Left=1,Right=2 },\ VerticalAlignment = { Center=0,Top=1,Bottom=2 },\ ScaleType = { Stretch=0,Slice=1,Tile=2,Fit=3,Crop=4 },\ ZIndexBehavior = { Global=0,Sibling=1 },\ TextXAlignment = { Left=0,Right=1,Center=2 },\ TextYAlignment = { Top=0,Center=1,Bottom=2 },\ Font = {\ Legacy=0,Arial=1,ArialBold=2,SourceSans=3,SourceSansBold=4,\ SourceSansLight=5,SourceSansSemibold=6,SourceSansItalic=7,\ SourceSansBoldItalic=8,Roboto=9,RobotoCondensed=10,RobotoMono=11,\ Highway=12,SciFi=13,Arcade=14,Code=15,Ubuntu=16,Montserrat=17,\ Gotham=18,GothamBold=19,GothamBlack=20,GothamMedium=21,\ FredokaOne=22,Nunito=23,PermanentMarker=24,Oswald=25,\ Merriweather=26,Jura=27,SpecialElite=28,TitilliumWeb=29,Arimo=30,\ LuckiestGuy=31,Bangers=32,IndieFlower=33,Sarpanch=34,\ AmaticSC=35,\ },\ FontWeight = {\ Thin=100,ExtraLight=200,Light=300,Regular=400,\ Medium=500,SemiBold=600,Bold=700,ExtraBold=800,Heavy=900,\ },\ FontStyle = { Normal=0,Italic=1 },\ EasingStyle = {\ Linear=0,Sine=1,Back=2,Quad=3,Quart=4,Quint=5,\ Bounce=6,Elastic=7,Exponential=8,Circular=9,Cubic=10,\ },\ EasingDirection = { In=0,Out=1,InOut=2 },\ TweenStatus = { Cancelled=0,Completed=1 },\ PlaybackState = { Begin=0,Delayed=1,Playing=2,Paused=3,Completed=4,Cancelled=5 },\ PartType = { Ball=0,Block=1,Cylinder=2 },\ MeshType = {\ Head=0,Torso=1,Wedge=2,Prism=3,Pyramid=4,ParallelRamp=5,\ RightAngleRamp=6,CornerWedge=7,Cylinder=8,FileMesh=9,Brick=10,Sphere=11,\ },\ CameraType = {\ Fixed=0,Attach=1,Watch=2,Track=3,Follow=4,Custom=5,Scriptable=6,Orbital=7,\ },\ CameraMode = { Classic=0,LockFirstPerson=1 },\ HumanoidStateType = {\ FallingDown=0,Running=8,Climbing=12,Seated=14,PlatformStanding=16,\ Dead=17,Jumping=3,Swimming=4,Freefall=5,Flying=6,Landed=7,\ GettingUp=1,Physics=9,RunningNoPhys=10,None=18,\ },\ HumanoidRigType = { R6=0,R15=1 },\ HumanoidDisplayDistanceType = { Automatic=0,Fixed=1,None=2 },\ RaycastFilterType = { Include=1,Exclude=0 },\ CollisionFidelity = { Default=0,Hull=1,Box=2,Precise=4 },\ RenderFidelity = { Automatic=0,Disabled=1,Precise=2 },\ AnimationPriority = { Idle=0,Movement=1,Action=2,Action2=3,Action3=4,Core=1000 },\ ContextActionResult = { Pass=0,Sink=1 },\ PathStatus = {\ Success=0,ClosestNoPath=1,ClosestOutOfRange=2,\ FailStartNotEmpty=3,FailFinishNotEmpty=4,NoPath=5,\ },\ MembershipType = { None=0,BuildersClub=1,TurboBuildersClub=2,OutrageousBuildersClub=3,Premium=4 },\ FormFactor = { Symmetric=0,Brick=1,Plate=2,Custom=3 },\ SurfaceType = {\ Smooth=0,Glue=1,Weld=2,Studs=3,Inlet=4,Universal=5,\ Hinge=6,Motor=7,SteppingMotor=8,SmoothNoOutlines=10,\ },\ Platform = { Windows=0,OSX=1,IOS=2,Android=3,Xbox_One=7,Linux=16,None=255 },\ InfoType = { Game=0,Asset=1,GamePass=2,Product=3,Subscription=4 },\ DevTrustLevel = { NoAccess=0,Minimal=1,Standard=2,High=3,Owner=4 },\ BodyPart = { Head=0,Torso=1,LeftArm=2,RightArm=3,LeftLeg=4,RightLeg=5 },\ ActuatorType = { None=0,Motor=1,Servo=2 },\ VelocityConstraintMode = { Vector=0,Line=1,Plane=2 },\ AdPolicy = { Default=0,Allowed=1,NotAllowed=2 },\ BinType = { Script=0,GameTool=1,Grab=2,Clone=3,Hammer=4 },\ CameraMode = { Classic=0,LockFirstPerson=1 },\ CameraPanMode = { Classic=0,EdgeBump=1 },\ ChatCallbackType = { OnServerReceivingMessage=2 },\ ChatColor = { Blue=0,Green=1,Red=2,White=3 },\ ChatMode = { Menu=0,TextAndMenu=1 },\ ChatStyle = { Bubble=0,Classic=1,ClassicAndBubble=2 },\ DevCameraOcclusionMode = { Zoom=0,Invisicam=1 },\ DevComputerCameraMovementMode = { UserChoice=0,Classic=1,Follow=2,Orbital=3,CameraToggle=4 },\ DevComputerMovementMode = { UserChoice=0,KeyboardMouse=1,ClickToMove=2,Scriptable=3 },\ DevTouchCameraMovementMode = { UserChoice=0,Classic=1,Follow=2,Orbital=3 },\ DevTouchMovementMode = { UserChoice=0,DynamicThumbstick=1,ClickToMove=2,Scriptable=3,DPad=4,Thumbpad=5,Thumbstick=6 },\ DialogBehaviorType = { SinglePlayer=0,MultiplePlayers=1 },\ DialogPurpose = { Quest=0,Help=1,Shop=2 },\ DialogTone = { Neutral=0,Friendly=1,Enemy=2 },\ DominantAxis = { Width=0,Height=1 },\ ExperienceAuthScope = { Owners=1,Experience=2 },\ ExplorerIconSize = { Small=0,Medium=1,Large=2 },\ FieldOfViewMode = { Vertical=0,Diagonal=1,MaxAxis=2 },\ FillDirection = { Horizontal=0,Vertical=1 },\ ForceLimitMode = { Magnitude=0,PerAxis=1 },\ FormFactor = { Symmetric=0,Brick=1,Plate=2,Custom=3 },\ HorizontalAlignment = { Left=0,Center=1,Right=2 },\ HoverAnimateSpeed = { VerySlow=0,Slow=1,Medium=2,Fast=3,VeryFast=4 },\ HttpCompression = { None=0,Gzip=1 },\ HttpContentType = { ApplicationJson=0,ApplicationXml=1,ApplicationUrlEncoded=2,TextPlain=3,TextXml=4 },\ PathStatus = { Success=0,ClosestNoPath=1,ClosestOutOfRange=2,FailedToComputePath=3,NoPath=4 },\ PoseEasingDirection = { In=0,Out=1,InOut=2 },\ PoseEasingStyle = { Linear=0,Constant=1,Elastic=2,Cubic=3,Bounce=4 },\ RenderFidelity = { Automatic=0,Precise=1,Performance=2 },\ RenderingTestComparisonMethod = { psnr=0,diff=1 },\ ReverbType = { NoReverb=0,GenericReverb=1,LargeHall=2,LargeRoom=3,MediumHall=4,MediumRoom=5,SmallHall=6,SmallRoom=7 },\ RigType = { R6=0,R15=1 },\ RollOffMode = { Inverse=0,Linear=1,InverseTapered=2,LinearSquare=3 },\ RotationType = { MovementRelative=0,CameraRelative=1 },\ RunContext = { Legacy=0,Server=1,Client=2,Plugin=3 },\ ScaleType = { Stretch=0,Slice=1,Tile=2,Fit=3,Crop=4 },\ ScreenInsets = { None=0,DeviceSafeInsets=1,CoreUISafeInsets=2,TopbarSafeInsets=3 },\ ScrollingDirection = { X=0,Y=1,XY=2 },\ SelectionBehavior = { Escape=0,Stop=1 },\ SizeConstraint = { RelativeXY=0,RelativeXX=1,RelativeYY=2 },\ SortOrder = { LayoutOrder=0,Name=1,Custom=2 },\ SoundType = { NoSound=0,Bell=1,Block=2,Clicked=3,Clock=4,Explosion=5,GlassBreak=6,HumanoidDied=7,PageTurn=8,Ping=9,Snap=10,Swoosh=11 },\ SpecialKey = { Insert=0,Home=1,End=2,PageUp=3,PageDown=4,ChatHotkey=5 },\ StylusInputMode = { None=0,Hover=1,Stylus=2 },\ TableMajorAxis = { RowMajor=0,ColumnMajor=1 },\ TextFilterContext = { PrivateChannel=0,PublicChat=1 },\ TextTruncate = { None=0,AtEnd=1 },\ ThumbnailSize = { Size48x48=0,Size180x180=1,Size420x420=2,Size60x60=3,Size100x100=4,Size150x150=5 },\ ThumbnailType = { AvatarBust=0,AvatarThumbnail=1,Asset=2,BadgeIcon=3,GameIcon=4,GroupIcon=5,Outfit=6,Headshot=7 },\ TickCountSampleMethod = { Fast=0,Benchmark=1 },\ TrimStyle = { Gutter=0,OnScreen=1,Padding=2 },\ UiMessageType = { UiMessageError=0,UiMessageInfo=1 },\ UserCFrame = { Floor=0,LeftHand=1,RightHand=2 },\ VibrationMotor = { Large=0,Small=1,LeftTrigger=2,RightTrigger=3,BothTriggers=4 },\ VerticalAlignment = { Top=0,Center=1,Bottom=2 },\ VerticalScrollBarPosition = { Right=0,Left=1 },\ WrapLayerDebugMode = { None=0,Rendered=1,CageMesh=2,CageUVMap=3,OccupancyMap=4,ReferenceMeshVertexColors=5 },\ WrapTargetDebugMode = { None=0,Rendered=1,CageMesh=2,OccupancyMap=3,VertexNormals=4 },\ R15CollisionType = { OuterBox=0,InnerBox=1 },\ ScreenOrientation = {\ LandscapeLeft=0,LandscapeRight=1,LandscapeSensor=2,\ Portrait=3,PortraitSensor=4,Sensor=5,\ },\ SafeAreaCompatibilityMode = { None=0,FullscreenExtension=1 },\ ButtonStyle = {\ Custom=0,RobloxButtonSmall=1,RobloxButton=2,\ RobloxRoundButton=3,RobloxRoundDefaultButton=4,RobloxRoundDropdownButton=5,\ },\ ControlMode = { MouseLockSwitch=0,Classic=1 },\ FilterResult = { Accepted=1,Failed=0 },\ Status = { Poison=0,Confusion=1 },\ PlayerActions = {\ CharacterForward=0,CharacterBackward=1,CharacterLeft=2,\ CharacterRight=3,CharacterJump=4,\ },\ SpecialKey = {\ Insert=0,Home=1,End=2,PageUp=3,PageDown=4,\ F1=5,F2=6,F3=7,F4=8,F5=9,F6=10,F7=11,F8=12,F9=13,F10=14,F11=15,F12=16,\ },\ InputType = { NoInput=0,Constant=1,Sin=2 },\ BinType = { Script=0,GameTool=1,Grab=2,Clone=3,Hammer=4 },\ ThumbnailType = {\ AssetThumbnail=0,AvatarBust=1,AvatarHeadShot=2,GameIcon=3,GroupLogo=4,\ },\ ThumbnailSize = { Size48x48=0,Size180x180=1,Size420x420=2,Size60x40=3 },\ ItemLineAlignment = { Automatic=0,Left=1,Right=2,Center=3 },\ ListDisplayMode = { List=0,Horizontal=1,Vertical=2 },\ HttpContentType = {\ ApplicationJson=0,\ ApplicationXml=1,\ ApplicationUrlEncoded=2,\ TextPlain=3,\ TextXml=4,\ },\ DevComputerMovementMode = {\ UserChoice=0,\ KeyboardMouse=1,\ Scriptable=2,\ ClickToMove=3,\ },\ DevComputerCameraMovementMode = {\ UserChoice=0,\ Classic=1,\ Follow=2,\ Scriptable=3,\ },\ DevTouchCameraMovementMode = {\ UserChoice=0,\ Classic=1,\ Follow=2,\ Scriptable=3,\ },\ DevTouchMovementMode = {\ UserChoice=0,\ Scriptable=1,\ DPad=2,\ Thumbstick=3,\ ClickToMove=4,\ DynamicThumbstick=5,\ },\ TextFilterContext = { PublicChat=0, PrivateChat=1 },\ VoiceChatState = { Idle=0, Connecting=1, Connected=2, Disconnected=3 },\ VoiceState = { Idle=0, Talking=1, Muted=2, LocallyMuted=3, AudioError=4, ConnectionError=5 },\ ModelLevelOfDetail = { Automatic=0, Disabled=1, StreamingMesh=2 },\ StreamingPauseMode = { Default=0, Disabled=1, ClientPhysicsPause=2 },\ StreamOutBehavior = { Default=0, LowMemory=1, Opportunistic=2 },\ LevelOfDetailSetting = { Automatic=0, Off=1, Limited=2 },\ AnimationFadelength = { Default=0 },\ AnimationLoopType = { OneShot=0, Loop=1 },\ StudioStyleGuideColor = { MainBackground=0, Titlebar=1, Dropdown=2, Button=3, FilterButtonDefault=4 },\ StudioStyleGuideModifier = { Default=0, Selected=1, Pressed=2, Disabled=3, Hover=4 },\ FrameStyle = { Custom=0, ChatBlue=1, RobloxSquare=2, RobloxRound=3, ChatGreen=4, ChatRed=5, DropShadow=6 },\ ResamplerMode = { Default=0, Pixelated=1 },\ WrapLayerDebugMode = { None=0, BoundCage=1, LayerCage=2, BoundCageAndInflation=3, ReferenceMode=4 },\ SizeRelativeTo = { Fixed=0, ScreenSizeMin=1, ScreenSizeMax=2 },\ UITheme = { Light=0, Dark=1 },\ ProximityPromptStyle = { Default=0, Custom=1 },\ SelectionBehavior = { Escape=0, Stop=1 },\ SelectionMode = { Click=0, Keyboard=1 },\ GuiState = { Idle=0, Hover=1, Press=2, Select=3, NonInteractable=4 },\ GuiType = { Screengui=0, SurfaceGui=1, BillboardGui=2 },\ KeyInterpolationMode = { Cubic=0, Linear=1, Constant=2 },\ PoseEasingDirection = { In=0, Out=1, InOut=2 },\ PoseEasingStyle = { Linear=0, Constant=1, Elastic=2, Cubic=3, Bounce=4 },\ ActuatorRelativeTo = { Attachment0=0, Attachment1=1, World=2 },\ AlignType = { Parallel=0, Perpendicular=1 },\ ReverbType = { NoReverb=0, GenericReverb=1, PaddedCell=2, Room=3, Bathroom=4, StoneRoom=5, Auditorium=6, ConcertHall=7, Cave=8, Arena=9, Hangar=10, CarpetedHallway=11, Hallway=12, StoneCorridor=13, Alley=14, Forest=15, City=16, Mountains=17, Quarry=18, Plain=19, ParkingLot=20, SewerPipe=21, UnderWater=22 },\ LimiterMode = { Loudness=0, Amplitude=1 },\ AudioSubType = { Music=0, SoundEffect=1, Dialog=2 },\ ListenerType = { Camera=0, CFrame=1, ObjectPosition=2, ObjectCFrame=3 },\ RollOffMode = { Inverse=0, Linear=1, InverseTapered=2, LinearSquare=3 },\ AccessModifierType = { Allow=0, Deny=1 },\ ConnectionState = { NotConnected=0, Connecting=1, Connected=2, Disconnecting=3, Failed=4 },\ PacketPriority = { Immediate=0, High=1, Medium=2, Low=3 },\ TransmissionMode = { Sender=0, Receiver=1, Rerouter=2, Broadcaster=3, Listener=4, Producer=5, Consumer=6 },\ AdEventType = { Impression=0, Loaded=1, VideoMidpoint=2, VideoComplete=3 },\ AdAvailabilityResult = { IsAvailable=0, NotAvailable=1, UnknownAdType=2, FrequencyCap=3, AdsDisabledForDevice=4, InsufficientStorage=5, AdNotLoaded=6, Available=7, DeviceIneligible=8, ExperienceIneligible=9 },\ AdShape = { Horizontal=0,Vertical=1,Square=2 },\ AdUnitStatus = { Loaded=0, Unloaded=1, Error=2 },\ AdUnitType = { BillboardBackground=0, Banner=1, LargeRectangle=2, SmallSquare=3 },\ ProductPurchaseDecision = { NotProcessedYet=0, PurchaseGranted=1 },\ PolicyService = { None=0 },\ ApplicableAccessory = { Hat=0, Hair=1, Face=2, Neck=3, Shoulder=4, Front=5, Back=6, Waist=7 },\ AccessoryType = { Unknown=0, Hat=1, Hair=2, Face=3, Neck=4, Shoulder=5, Front=6, Back=7, Waist=8, TShirt=9, Shirt=10, Pants=11, Jacket=12, Sweater=13, Shorts=14, LeftShoe=15, RightShoe=16, DressSkirt=17, Eyebrow=18, Eyelash=19 },\ AvatarContextMenuOption = { Friend=0, Chat=1, Emote=2, InspectMenu=3 },\ AvatarItemType = { Asset=0, Bundle=1 },\ AvatarPromptResult = { Success=0, PermissionDenied=1, PurchaseFailed=2, Cancelled=3 },\ BundleType = { BodyParts=0, AvatarAnimations=1 },\ CaptureType = { Screenshot=0, Video=1 },\ CollisionGroupChangeType = { Added=0, Removed=1, Changed=2 },\ DataStoreRequestType = { GetAsync=0, SetIncrementAsync=1, UpdateAsync=2, GetSortedAsync=3, SetIncrementSortedAsync=4, OnUpdate=5, GetVersionAsync=6, ListKeysAsync=7, ListVersionsAsync=8, RemoveVersionAsync=9 },\ ThrottlingPriority = { Extreme=0, High=1, Low=2 },\ DialogBehaviorType = { SinglePlayer=0, MultiplePlayers=1 },\ DialogPurpose = { Quest=0, Help=1, Shop=2 },\ DialogTone = { Neutral=0, Friendly=1, Enemy=2 },\ DragDetectorDragStyle = { None=0, TranslatePlane=1, TranslatePlaneOrLine=2, TranslateViewPlane=3, TranslateLine=4, TranslateLineOrRotateAxis=5, RotateAxis=6, BestForDevice=7, Scriptable=8 },\ DragDetectorResponseStyle = { Geometric=0, Physical=1, Custom=2 },\ DragDetectorPermissionPolicy = { Nobody=0, OwnerOnly=1, Everybody=2, AdminsAndOwnerOnly=3 },\ TextChatMessageStatus = { Unknown=0, Success=1, Throttled=2, Blocked=3, FilteredEntireMessage=4 },\ OverrideMouseIconBehavior = { None=0, ForceShow=1, ForceHide=2 },\ TaskSchedulerCyclicExecutive = { Immediate=0, High=1, Normal=2, Low=3 },\ ActorSchedulingThrottleMode = { Default=0, Disabled=1 },\ CollisionFilterType = { Blacklist=0, Whitelist=1 },\ ApplyAtCenterOfMass = { AtAttachment=0, AtCOM=1 },\ HighlightDepthMode = { AlwaysOnTop=0, Occluded=1 },\ EngineDrawMethod = { Default=0, AuxiliaryThreads=1 },\ ErrorReporting = { DontReport=0, Prompt=1, Report=2 },\ FontWeight = _ED and _ED.FontWeight or { Thin=100, ExtraLight=200, Light=300, Regular=400, Medium=500, SemiBold=600, Bold=700, ExtraBold=800, Heavy=900 },\ FontStyle = _ED and _ED.FontStyle or { Normal=0, Italic=1 },\ GlobJointType = { None=0, Root=1 },\ HandednessMode = { Automatic=0, Left=1, Right=2 },\ HapticEffectType = { Vibrate=1 },\ InOut = { Edge=0, Inset=1, Center=2 },\ InitialDockState = { Top=0, Bottom=1, Left=2, Right=3, Float=4 },\ InterpolationThrottlingMode = { Default=0, Disabled=1 },\ JointCreationMode = { All=0, Surface=1, None=2 },\ KeyCode_CJK = { Zero=48 },\ LuaWebService = {},\ MessageType = { MessageOutput=0, MessageInfo=1, MessageWarning=2, MessageError=3 },\ OverrideMouseIconBehavior = { None=0, ForceShow=1, ForceHide=2 },\ PathWaypointAction = { Walk=0, Jump=1, Custom=2 },\ PermissionLevel = { None=0, Plugin=2, LocalUser=3, WritePlayer=4, RobloxGame=5, RobloxScript=6, Roblox=7 },\ PhysicsSimulationRate = { Fixed60Hz=0, Fixed120Hz=1, Fixed240Hz=2 },\ PhysicsSteppingMethod = { Default=0, Fixed=1, Adaptive=2 },\ PrivilegeType = { Owner=255, Admin=200, Member=100, Visitor=10, Banned=0 },\ ProximityPromptExclusivity = { OneGlobally=0, OnePerButton=1, AlwaysShow=2 },\ QualityLevel = { Automatic=0, Level01=1, Level02=2, Level03=3, Level04=4, Level05=5, Level06=6, Level07=7, Level08=8, Level09=9, Level10=10, Level11=11, Level12=12 },\ RenderPriority = { First=0, Input=100, Camera=200, Character=300, Last=2000 },\ RigType = { Procedural=0 },\ RunContext = { Legacy=0, Server=1, Client=2, Plugin=3 },\ SafeAreaCompatibilityMode_v2 = { None=0, FullscreenExtension=1 },\ SocialSlotType = { Automatic=0, Empty=1, Fixed=2 },\ SortDirection = { Ascending=0, Descending=1 },\ StartCorner = { TopLeft=0, TopRight=1, BottomLeft=2, BottomRight=3 },\ TableRowSelectionStyle = { None=0, Row=1, Column=2 },\ TaskSchedulerCycleType = { Immediate=0, Delayed=1 },\ TerrainAcquisitionMethod = { None=0, Legacy=1, Template=2, Generate=3, Import=4, Convert=5, EditAddTool=6, EditSeaTool=7, RegionFill=8, RegionPastebin=9, Other=10 },\ TextureTransparency = { Enabled=0, Disabled=1 },\ ThumbnailAnimatorAnimations = { Default=0, Standard=1 },\ TitleBarTrigger = { Hover=0, Click=1 },\ UIFlexMode = { None=0, Fill=1, Shrink=2, FillShrink=3, Custom=4 },\ UISizeConstraint = { RelativeXY=0, RelativeXX=1, RelativeYY=2 },\ VerticalScrollBarPosition = { Left=0, Right=1 },\ VibrationMotor = { Large=0, Small=1, LeftTrigger=2, RightTrigger=3, BHaptics_TactSuit_Vest_Front_Left=4 },\ VirtualInputMode = { Recording=0, Playback=1, None=2 },\ WaterWaveSize = { None=0, Small=1, Normal=2, Huge=3 },\ WaterWaveSpeed = { None=0, Slow=1, Normal=2, Fast=3 },\ ZIndexBehavior_ext = { Global=0, Sibling=1 },\ TextTruncate = { None=0, AtEnd=1 },\ AutomaticSize = { None=0, X=1, Y=2, XY=3 },\ BorderMode = { Outline=0, Middle=1, Inset=2 },\ ScrollingDirection = { X=0, Y=1, XY=2 },\ ElasticBehavior = { Always=0, WhenScrollable=1, Never=2 },\ HumanoidHealthDisplayType = { DisplayWhenDamaged=0, AlwaysOn=1, AlwaysOff=2 },\ ChatMode = { Classic=0, Bubble=1 },\ HighlightDepthMode = { AlwaysOnTop=0, Occluded=1 },\ AppShellActionType = { None=0, OpenApp=1, TakeScreenshot=2, OpenDialog=3 },\ TeleportState = { RequestedFromServer=0, Started=1, OnTeleport=2, Failed=3, InProgress=4, WaitingForServer=5 },\ TeleportType = { ToPlace=0, ToInstance=1, ToReservedServer=2 },\ AccessType = { Everyone=0, Friends=1 },\ ChatPrivacyMode = { AllUsers=0, NoOne=1, Friends=2 },\ ParticleEmitterShape = { Box=0, Sphere=1, Cylinder=2, Disc=3 },\ ParticleEmitterShapeInOut = { Outward=0, Inward=1, OutwardInward=2 },\ ParticleEmitterShapeStyle = { Volume=0, Surface=1 },\ ParticleFlipbookLayout = { None=0, TwoByTwo=1, FourByFour=2, EightByEight=3 },\ ParticleFlipbookMode = { Loop=0, OneShot=1, PingPong=2, Random=3 },\ ElasticLimitType = { Translate=0, Rotate=1, Both=2 },\ VelocityConstraintMode = { None=0, Line=1, Plane=2 },\ LineForceReferencePart = { Attachment0=0, Attachment1=1, Custom=2 },\ RopeConstraintWinding = { Right=0, Left=1 },\ FaceControls = { None=0, UpperFace=1, LowerFace=2, FullFace=3 },\ TextFilteringType = { Private=0, PublicChat=1 },\ InputType_v2 = { NoPreference=0, Movement=1, Rotation=2, Trigger=3 },\ MarketplacePurchaseDecision = { NotProcessedYet=0, PurchaseGranted=1, DoNotGrantProduct=2 },\ TeleportResult = { Success=0, Failure=1, GameEnded=2, GameFull=3, UnauthorizedError=4, WrongVersion=5, DataModelFailure=6, LuaError=7, HTTPError=8, RestrictionError=9, SpawnError=10 },\ SpeakerMuteState = { Unmuted=0, LocallyMuted=1, RemotelyMuted=2 },\ StudioTheme = { Auto=0, Dark=1, Light=2 },\ ProfileServiceResponse = { Success=0, Throttled=1, NotSaved=2 },\ CreatorType = { User=0, Group=1 },\ HumanoidOnlySetCollisionOnDescendants = { All=0, Changed=1, None=2 },\ RotationType = { MovementRelative=0, CameraRelative=1 },\ DeformationMode = { Default=0, Physical=1, Scriptable=2 },\ NormalWrapFixed = { Default=0, On=1, Off=2 },\ CageDeformerType = { OuterCage=0, InnerCage=1 },\ PacketCompressionType = { Default=0, None=1, Always=2 },\ CurveInterpolation = { Cubic=0, Linear=1, Constant=2 },\ ArticulatedType = { None=0, Optimized=1, Full=2 },\ ExperienceAuthScope = { None=0, User=1, Creator=2 },\ CharacterControlMode = { Default=0, Legacy=1 },\ PhysicsSolverLogLevel = { None=0, DivergenceWarn=1, All=2 },\ HighlightLocal = { Enabled=0, Disabled=1 },\ SelectionRefinement = { None=0, Box=1, OuterSurface=2 },\ TextChatPermissionPolicy = { Everyone=0, None=1 },\ TextChatMessageDecoration = { None=0, SpeakerNameOnly=1, SpeakerNameAndText=2 },\ SignalBehavior = { Default=0, Immediate=1, Deferred=2 },\ RunService_Heartbeat = { PreRender=1, RenderStepped=2, Heartbeat=3 },\ ModelStreamingMode = { Default=0, Atomic=1, PauseOutsideDistance=2 },\ WrapLayerAutoSkin = { Disabled=0, EnabledPreserveShape=1, EnabledOverwriteShape=2 },\ LocalTransparencyModifier = { Default=0, ForceTransparent=1, ForceOpaque=2 },\ SmoothingAngle = { NoSmoothing=0, Smooth=1 },\ UIFlexAlignment = { None=0, Start=1, Center=2, End=3, SpaceBetween=4, SpaceAround=5, SpaceEvenly=6 },\ UIFlexGrow = { None=0, Grow=1, Shrink=2, GrowShrink=3 },\ AvatarUnificationMode = { Default=0, Enabled=1, Disabled=2 },\ ZoomMode = { Follow=0, Fit=1, Fill=2 },\ ActionType = { Nothing=0, Pause=1, Lose=2, Draw=3, Win=4 },\ CatalogSortType = { Relevance=0, PriceAsc=1, PriceDesc=2, RecentlyUpdated=3, MostFavorited=4 },\ CatalogSortAggregation = { AllTime=0, PastDay=1, PastWeek=2, PastMonth=3 },\ CatalogCategoryFilter = { None=0, All=1, Collectibles=2, Clothing=3, BodyParts=4, Accessories=5, AvatarAnimations=6, Bundles=7, Emotes=8 },\ SalesTypeFilter = { All=1, Robux=2, Free=3, Offsale=4 },\ HumanoidDisplayDistanceType = { None=0, Subject=1, Viewer=2 },\ HumanoidHealthDisplayType = { DisplayWhenDamaged=0, AlwaysOn=1, AlwaysOff=2 },\ HumanoidStateType = { FallingDown=0, Running=8, RunningNoPhysics=10, Climbing=12, Seated=13, PlatformStanding=14, Dead=15, Swimming=17, Freefall=18, Flying=19, Landed=20, Jumping=22, Ragdoll=27, GettingUp=28, StrafingNoPhysics=29, Ragdoll2=30, None=255 },\ Font = { Legacy=0, Arial=1, ArialBold=2, SourceSans=3, SourceSansBold=4, SourceSansLight=5, SourceSansItalic=6, Bodoni=7, Garamond=8, Cartoon=9, Code=10, Highway=11, SciFi=12, Arcade=13, Fantasy=14, Antique=15, SourceSansSemibold=16, Gotham=18, GothamBold=19, GothamBlack=20, GothamMedium=21, FredokaOne=22, Nunito=23, PermanentMarker=24, Oswald=25, Merriweather=26, Jura=27, SpecialElite=28, TitilliumWeb=29, Arimo=30, LuckiestGuy=31, Bangers=32, IndieFlower=33, Sarpanch=34, AmaticSC=35, Roboto=36, RobotoCondensed=37, RobotoMono=38, Ubuntu=39, Montserrat=40, SourceSansBoldItalic=41 },\ FontStyle = { Normal=0, Italic=1 },\ FontWeight = { Thin=100, ExtraLight=200, Light=300, Regular=400, Medium=500, SemiBold=600, Bold=700, ExtraBold=800, Heavy=900 },\ RollOffMode = { Inverse=0, Linear=1, InverseTapered=2, LinearSquare=3 },\ PlayerChatType = { All=0, Team=1, Whisper=2 },\ ExplosionType = { NoCraters=0, Craters=1, CratersAndDebris=2 },\ PartType = { Ball=0, Block=1, Cylinder=2 },\ DisplayDistanceType = { None=0, Subject=1, Viewer=2 },\ }\ local _built = {}\ for type_name, defs in pairs(_ED) do\ _built[type_name] = _mkEnumType(type_name, defs)\ end\ Enum = setmetatable({}, {\ __type = \"Enum\",\ __metatable = \"The metatable is locked\",\ __tostring = function() return \"Enum\" end,\ __newindex = function() error(\"attempt to modify a read-only Enum\", 2) end,\ __index = function(_, k)\ if k == \"GetEnums\" then\ return function(_self)\ local list = {}\ for _, et in pairs(_built) do list[#list+1] = et end\ return list\ end\ end\ local v = rawget(_built, k)\ if v ~= nil then return v end\ local dyn_items = {}\ local dyn_mt = {\ __type = \"Enum\",\ __metatable = \"Enum\",\ __tostring = function() return \"Enum.\"..tostring(k) end,\ __call = function(_) return dyn_items end,\ __newindex = function() error(\"Cannot modify Enum.\"..tostring(k), 2) end,\ __index = function(_, kk)\ if kk == \"GetEnumItems\" then return function(_) return dyn_items end end\ local item = _mkEnumItem({ false }, tostring(k), tostring(kk), 0)\ dyn_items[#dyn_items+1] = item\ return item\ end,\ }\ local dyn = setmetatable({}, dyn_mt)\ rawset(_built, k, dyn)\ return dyn\ end,\ })\ end\ \ game = setmetatable({}, { __metatable = \"Instance\", __index = function(_, k)\ if k == \"GetService\" then return _get_service end\ if k == \"HttpGet\" or k == \"HttpGetAsync\" then\ return function(_, url) return \"\" end\ end\ if _fake_services[k] then return _fake_services[k] end\ return fake_service\ end })\ workspace = _fake_services.Workspace\ RunService = _fake_services.RunService\ Players = _fake_services.Players\ TweenService = _fake_services.TweenService\ UserInputService = _fake_services.UserInputService\ ReplicatedStorage= _fake_services.ReplicatedStorage\ Lighting = _fake_services.Lighting\ CoreGui = _fake_services.CoreGui\ StarterGui = _fake_services.StarterGui\ PhysicsService = _fake_services.PhysicsService\ script = fake_service()\ shared = shared or {}\ getgenv = function() return _G end\ getrenv = function() return _G end\ getsenv = function(s)\ local _K = {\ \"script\",\"wait\",\"settings\",\"game\",\"workspace\",\"shared\",\ \"print\",\"warn\",\"error\",\"assert\",\"pcall\",\"xpcall\",\ \"tostring\",\"tonumber\",\"type\",\"typeof\",\ \"pairs\",\"ipairs\",\"next\",\"select\",\"unpack\",\ \"rawget\",\"rawset\",\"rawequal\",\ \"setmetatable\",\"getmetatable\",\"task\"\ }\ local _v = {}\ for _, k in ipairs(_K) do\ _v[k] = (_G[k] ~= nil) and _G[k] or function() end\ end\ _v.script = s or _grs_anim\ _v.settings = {}\ return setmetatable(_v, {\ __call = function(self, _state, prev)\ if prev == nil then\ return _K[1], _v[_K[1]]\ end\ for idx = 1, #_K do\ if _K[idx] == prev then\ local nk = _K[idx + 1]\ if nk then return nk, _v[nk] end\ return nil\ end\ end\ return nil\ end,\ __index = _G,\ __newindex = function(t, k, val) rawset(_v, k, val) end,\ __metatable = \"The metatable is locked\",\ __len = function() return 0 end,\ })\ end\ getfpscap = function() return 60 end\ syn = syn or {\ protect_gui = function() end,\ crypt = { base64 = {\ decode = function(s) return s end,\ encode = function(s) return s end,\ } },\ }\ \ local _noop_fn = function() end\ local _empty_t = function() return {} end\ local _ret_self = function(v) return v end\ \ local function _make_locked_mt(name)\ return setmetatable({}, { __metatable = name or \"The metatable is locked\" })\ end\ \ identifyexecutor = identifyexecutor or function() return \"FlameExecutorDumperV2\", \"By .im_dev (Ken) https://discord.gg/ypVcca6cvp join now\" end\ getexecutorname = getexecutorname or function() return \"FlameExecutorDumperV2\" end\ \ getrawmetatable = getrawmetatable or function(t) return type(t) == \"table\" and getmetatable(t) or {} end\ setrawmetatable = setrawmetatable or function(t, m) if type(t) == \"table\" then return setmetatable(t, m) end return t end\ setreadonly = setreadonly or _noop_fn\ isreadonly = isreadonly or function() return false end\ make_writeable = make_writeable or _noop_fn\ make_readonly = make_readonly or _noop_fn\ getreg = getreg or _empty_t\ getgc = getgc or _empty_t\ getinstances = getinstances or _empty_t\ getnilinstances = getnilinstances or _empty_t\ getloadedmodules = getloadedmodules or _empty_t\ getconnections = getconnections or _empty_t\ getcustomasset = getcustomasset or function(p) return p end\ getsynasset = getsynasset or function(p) return p end\ getlocals = getlocals or _empty_t\ getlocal = getlocal or function() return nil end\ setlocal = setlocal or _noop_fn\ getrunningscripts = getrunningscripts or _empty_t\ getscripts = getscripts or _empty_t\ getmemory = getmemory or function(cat) return 0 end\ printidentity = printidentity or function(tag) print(\"Current identity is 8\") end\ isluau = isluau or function() return true end\ isclient = isclient or function() return true end\ isserver = isserver or function() return false end\ isstudio = isstudio or function() return false end\ isparallel = isparallel or function() return false end\ isgameclosure = isgameclosure or function() return false end\ isrobloxclosure = isrobloxclosure or function() return false end\ checkcaller = checkcaller or function() return false end\ comparefunctions = comparefunctions or function(a, b) return a == b end\ restorefunction = restorefunction or function(f) return f end\ restorefunctions = restorefunctions or _noop_fn\ replaceclosure = replaceclosure or function(t, r) return r or t end\ getconnectioncount = getconnectioncount or function() return 0 end\ getrendersteppedlist = getrendersteppedlist or _empty_t\ getruntime = getruntime or function() return \"Roblox\" end\ getexecutorversion = getexecutorversion or function() return \"2.0.0\" end\ getwindowsize = getwindowsize or function() return 1920, 1080 end\ getwindowtitle = getwindowtitle or function() return \"Roblox\" end\ setwindowtitle = setwindowtitle or _noop_fn\ getprocessid = getprocessid or function() return 0 end\ MessageBox = MessageBox or function(text, caption, btype) return 1 end\ setwindowactive = setwindowactive or _noop_fn\ is_evon_closure = is_evon_closure or function() return false end\ is_valyse_closure = is_valyse_closure or function() return false end\ is_carat_closure = is_carat_closure or function() return false end\ is_ro_exec_closure = is_ro_exec_closure or function() return false end\ is_riptide_closure = is_riptide_closure or function() return false end\ is_cloudia_closure = is_cloudia_closure or function() return false end\ is_carbon_closure = is_carbon_closure or function() return false end\ is_nihon_closure = is_nihon_closure or function() return false end\ is_reaper_closure = is_reaper_closure or function() return false end\ is_vape_closure = is_vape_closure or function() return false end\ is_ghost_closure = is_ghost_closure or function() return false end\ is_temple_closure = is_temple_closure or function() return false end\ is_oblivion_closure = is_oblivion_closure or function() return false end\ is_luraph_closure = is_luraph_closure or function() return false end\ is_sheathe_closure = is_sheathe_closure or function() return false end\ is_oxide_closure = is_oxide_closure or function() return false end\ is_carbon_closure = is_carbon_closure or function() return false end\ is_trigon_closure = is_trigon_closure or function() return false end\ is_valyse_closure = is_valyse_closure or function() return false end\ is_evon_function = is_evon_function or function() return false end\ is_hydrogen_function = is_hydrogen_function or function() return false end\ is_electron_function = is_electron_function or function() return false end\ is_seliware_function = is_seliware_function or function() return false end\ is_scriptware_function = is_scriptware_function or function() return false end\ is_cocoz_function = is_cocoz_function or function() return false end\ is_nihon_function = is_nihon_function or function() return false end\ is_riptide_function = is_riptide_function or function() return false end\ getframetime = getframetime or function() return 1/60 end\ getfps = getfps or function() return 60 end\ getping = getping or function() return 50 end\ getclientid = getclientid or function() return \"00000000-0000-0000-0000-000000000000\" end\ getjobid = getjobid or function() return \"00000000-0000-0000-0000-000000000000\" end\ getgameid = getgameid or function() return 0 end\ getplaceid = getplaceid or function() return 0 end\ consolecreate = consolecreate or _noop_fn\ consoledestroy = consoledestroy or _noop_fn\ consoleclear = consoleclear or _noop_fn\ consoletitle = consoletitle or _noop_fn\ consoleprint = consoleprint or _noop_fn\ consoleinput = consoleinput or function() return \"\" end\ consolename = consolename or _noop_fn\ isconnected = isconnected or function() return true end\ getscriptenv = getscriptenv or function() return _G end\ getsenv = getsenv or function() return _G end\ pebc_execute = pebc_execute or _noop_fn\ pebc_safe = pebc_safe or function(f, ...) return pcall(f, ...) end\ getloadstring = getloadstring or function() return loadstring or load end\ getmainscript = getmainscript or function() return nil end\ getwsfield = getwsfield or function() return nil end\ getscripthash = getscripthash or function() return string.rep(\"0\", 64) end\ run_on_actor = run_on_actor or _noop_fn\ compare_any = compare_any or function(a, b) return rawequal(a, b) end\ is_prometheus_closure= is_prometheus_closure or function() return false end\ is_ironbrew_closure = is_ironbrew_closure or function() return false end\ is_script_hub_closure= is_script_hub_closure or function() return false end\ is_dark_dex_closure = is_dark_dex_closure or function() return false end\ is_robloxscript_closure = is_robloxscript_closure or function() return false end\ is_hydroxide_closure = is_hydroxide_closure or function() return false end\ is_macsploit_closure = is_macsploit_closure or function() return false end\ is_fluxus_closure = is_fluxus_closure or function() return false end\ is_krnl_closure = is_krnl_closure or function() return false end\ is_comet_closure = is_comet_closure or function() return false end\ is_wave_closure = is_wave_closure or function() return false end\ is_celery_closure = is_celery_closure or function() return false end\ is_delta_closure = is_delta_closure or function() return false end\ is_electron_closure = is_electron_closure or function() return false end\ is_hydrogen_closure = is_hydrogen_closure or function() return false end\ is_seliware_closure = is_seliware_closure or function() return false end\ is_zenith_closure = is_zenith_closure or function() return false end\ is_phantom_closure = is_phantom_closure or function() return false end\ is_dagon_closure = is_dagon_closure or function() return false end\ is_iris_closure = is_iris_closure or function() return false end\ is_aurora_closure = is_aurora_closure or function() return false end\ is_medusa_closure = is_medusa_closure or function() return false end\ is_byfron_closure = is_byfron_closure or function() return false end\ is_hyperion_closure = is_hyperion_closure or function() return false end\ cache = cache or {\ invalidate = _noop_fn,\ replace = function(a, b) return b end,\ iscached = function(inst) return inst ~= nil end,\ }\ closures = closures or {\ newcclosure = function(f) return f end,\ clonefunction = function(f) return f end,\ iscclosure = function(f) return false end,\ }\ secure_call = secure_call or function(f, ...) return pcall(f, ...) end\ create_secure_function = create_secure_function or function(f) return f end\ isvalidinstance = isvalidinstance or function(inst) return inst ~= nil end\ validcheck = validcheck or function(inst) return inst ~= nil end\ getscriptenv = getscriptenv or function() return _G end\ getsenv = getsenv or function() return _G end\ \ getconstants = getconstants or _empty_t\ getconstant = getconstant or function() return nil end\ setconstant = setconstant or _noop_fn\ getupvalues = getupvalues or _empty_t\ getupvalue = getupvalue or function() return nil end\ setupvalue = setupvalue or _noop_fn\ getprotos = getprotos or _empty_t\ getproto = getproto or function() return _noop_fn end\ getstack = getstack or _empty_t\ setstack = setstack or _noop_fn\ getinfo = getinfo or function() return { source = \"@flamedumper\", short_src = \"flamedumper\", what = \"Lua\", currentline = -1, name = \"?\", nups = 0, func = _noop_fn } end\ getsenv = getsenv or function() return _G end\ getrenv = getrenv or function() return _G end\ getgenv = getgenv or function() return _G end\ getfenv = getfenv or function() return _G end\ setfenv = setfenv or function(f) return f end\ script_env = script_env or function() return _G end\ get_script_env = get_script_env or function() return _G end\ \ hookfunction = hookfunction or function(orig, _hook) return orig end\ hookmetamethod = hookmetamethod or function(_, _, hook) return hook end\ replaceclosure = replaceclosure or function(orig) return orig end\ restorefunction = restorefunction or _noop_fn\ newcclosure = newcclosure or function(f) return f end\ clonefunction = clonefunction or function(f) return f end\ checkcaller = checkcaller or function() return false end\ iscclosure = iscclosure or function(f)\ if type(f) ~= \"function\" then return false end\ local ok = pcall(string.dump, f)\ return not ok\ end\ islclosure = islclosure or function(f)\ if type(f) ~= \"function\" then return false end\ local ok = pcall(string.dump, f)\ return ok\ end\ isexecutorclosure = isexecutorclosure or function() return false end\ is_synapse_function= is_synapse_function or function() return false end\ is_sirhurt_closure = is_sirhurt_closure or function() return false end\ is_protosmasher_closure = is_protosmasher_closure or function() return false end\ is_krnl_closure = is_krnl_closure or function() return false end\ is_comet_function = is_comet_function or function() return false end\ is_fluxus_closure = is_fluxus_closure or function() return false end\ is_oxygen_closure = is_oxygen_closure or function() return false end\ is_calamari_closure = is_calamari_closure or function() return false end\ is_wave_closure = is_wave_closure or function() return false end\ is_celery_closure = is_celery_closure or function() return false end\ is_solara_closure = is_solara_closure or function() return false end\ is_flameexecutordumperv2_closure = is_flameexecutordumperv2_closure or function(f) return type(f) == \"function\" end\ is_flameexecutordumperv2_function = is_flameexecutordumperv2_function or function(f) return type(f) == \"function\" end\ is_flameexecutordumper_closure = is_flameexecutordumper_closure or function(f) return type(f) == \"function\" end\ is_flame_closure = is_flame_closure or function(f) return type(f) == \"function\" end\ is_swift_closure = is_swift_closure or function() return false end\ is_xeno_closure = is_xeno_closure or function() return false end\ is_arceus_closure = is_arceus_closure or function() return false end\ is_velocity_closure = is_velocity_closure or function() return false end\ is_zorara_closure = is_zorara_closure or function() return false end\ is_codex_closure = is_codex_closure or function() return false end\ is_seliware_closure = is_seliware_closure or function() return false end\ is_potassium_closure = is_potassium_closure or function() return false end\ is_macsploit_closure = is_macsploit_closure or function() return false end\ is_electron_closure = is_electron_closure or function() return false end\ is_hydrogen_closure = is_hydrogen_closure or function() return false end\ is_volcano_closure = is_volcano_closure or function() return false end\ is_awp_closure = is_awp_closure or function() return false end\ is_delta_closure = is_delta_closure or function() return false end\ is_trigon_closure = is_trigon_closure or function() return false end\ is_evon_closure = is_evon_closure or function() return false end\ is_valyse_closure = is_valyse_closure or function() return false end\ is_script_ware_closure = is_script_ware_closure or function() return false end\ is_studio_closure = is_studio_closure or function() return false end\ is_coco_z_closure = is_coco_z_closure or function() return false end\ is_fluxus_function = is_fluxus_function or function() return false end\ is_krnl_function = is_krnl_function or function() return false end\ is_oxygen_function = is_oxygen_function or function() return false end\ is_wave_function = is_wave_function or function() return false end\ is_celery_function = is_celery_function or function() return false end\ is_synapse_closure = is_synapse_closure or function() return false end\ is_sentinel_closure = is_sentinel_closure or function() return false end\ is_carat_closure = is_carat_closure or function() return false end\ is_ro_exec_closure = is_ro_exec_closure or function() return false end\ is_electron_function = is_electron_function or function() return false end\ is_hydrogen_function = is_hydrogen_function or function() return false end\ is_delta_function = is_delta_function or function() return false end\ is_trigon_function = is_trigon_function or function() return false end\ is_evon_function = is_evon_function or function() return false end\ is_riptide_closure = is_riptide_closure or function() return false end\ is_cloudia_closure = is_cloudia_closure or function() return false end\ is_carbon_closure = is_carbon_closure or function() return false end\ is_coco_closure = is_coco_closure or function() return false end\ is_nihon_closure = is_nihon_closure or function() return false end\ is_reaper_closure = is_reaper_closure or function() return false end\ is_vape_closure = is_vape_closure or function() return false end\ is_ghost_closure = is_ghost_closure or function() return false end\ is_temple_closure = is_temple_closure or function() return false end\ is_script_hub_closure= is_script_hub_closure or function() return false end\ is_dex_closure = is_dex_closure or function() return false end\ is_robloxscript_closure = is_robloxscript_closure or function() return false end\ is_hydroxide_closure = is_hydroxide_closure or function() return false end\ is_dark_dex_closure = is_dark_dex_closure or function() return false end\ is_zenith_closure_2 = is_zenith_closure or function() return false end\ is_phantom_closure_2 = is_phantom_closure or function() return false end\ is_dagon_closure_2 = is_dagon_closure or function() return false end\ is_iris_closure_2 = is_iris_closure or function() return false end\ is_aurora_closure_2 = is_aurora_closure or function() return false end\ is_medusa_closure_2 = is_medusa_closure or function() return false end\ pebc = pebc or function() return \"FlameExecutorDumperV2\" end\ if not rawget(_G, \"riptide\") then riptide = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"carbon\") then carbon = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"nihon\") then nihon = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"trigon\") then trigon = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"valyse\") then valyse = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"comet\") then comet = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"evon\") then evon = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"delta\") then delta = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"hydrogen\")then hydrogen= setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"electron\")then electron= setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"awp\") then awp = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"seliware\")then seliware= setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"celery\") then celery = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"velocity\") then velocity= setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"oxide\") then oxide = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"luraph\") then luraph = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"zenith\") then zenith = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"phantom\") then phantom = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"dagon\") then dagon = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"iris\") then iris = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"aurora\") then aurora = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"medusa\") then medusa = setmetatable({}, {__index=function() return function() end end}) end\ isclosure = isclosure or function(f) return type(f) == \"function\" end\ isrobuxclosure = isrobuxclosure or function() return false end\ if not rawget(_G, \"redz\") then redz = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"wave\") then wave = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"solara\") then solara = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"arceus\") then arceus = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"xeno\") then xeno = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"swift\") then swift = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"codex\") then codex = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"zorara\") then zorara = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"proto\") then proto = setmetatable({}, {__index=function() return function() end end}) end\ if not rawget(_G, \"potassium\") then potassium = setmetatable({}, {__index=function() return function() end end}) end\ isflameexecutorclosure = isflameexecutorclosure or function(f) return type(f) == \"function\" end\ getreg = getreg or function() return {} end\ getregistry = getregistry or function() return {} end\ getthreads = getthreads or function() return {} end\ getallthreads = getallthreads or function() return {} end\ getmainthread = getmainthread or function() return coroutine.running() end\ getactors = getactors or function() return {} end\ getactor = getactor or function() return nil end\ getfunctionhash = getfunctionhash or function() return string.rep(\"0\", 64) end\ getloadedmodules = getloadedmodules or function() return {} end\ getrunningscripts = getrunningscripts or function() return {} end\ getscripts = getscripts or function() return {} end\ getinstances = getinstances or function() return {} end\ getnilinstances = getnilinstances or function() return {} end\ getconnections = getconnections or function() return {} end\ getgc = getgc or function() return {} end\ do\ local _huiCache\ local function _makeHui()\ if _huiCache then return _huiCache end\ local baseInstance = type(_G.Instance) == \"table\" and type(_G.Instance.new) == \"function\"\ local function _makeObj(cn, props)\ if baseInstance then\ local ok, inst = pcall(_G.Instance.new, cn)\ if ok and inst then\ for k, v in pairs(props or {}) do pcall(function() inst[k] = v end) end\ return inst\ end\ end\ local o = setmetatable(props or {}, {\ __index = function(t, k)\ if k == \"IsA\" then return function(self, cn2) return rawget(self,\"ClassName\")==cn2 or cn2==\"Instance\" end end\ if k == \"FindFirstChild\" then return function() return nil end end\ if k == \"GetChildren\" then return function() return {} end end\ if k == \"Destroy\" then return function() end end\ if k == \"WaitForChild\" then return function(_, name) return nil end end\ return nil\ end,\ })\ o.ClassName = cn\ return o\ end\ local hui = _makeObj(\"ScreenGui\", { Name=\"HiddenUI\", ResetOnSpawn=false, Enabled=true, ZIndexBehavior=\"Sibling\" })\ _huiCache = hui\ return hui\ end\ gethui = gethui or _makeHui\ gethiddenui = gethiddenui or _makeHui\ end\ cloneref = cloneref or function(x) return x end\ clonefunction = clonefunction or function(f) return f end\ newcclosure = newcclosure or function(f) return f end\ hookfunction = hookfunction or function(f) return f end\ hookmetamethod = hookmetamethod or function() return function() end end\ getrawmetatable = getrawmetatable or function() return { __metatable = \"The metatable is locked\" } end\ setrawmetatable = setrawmetatable or function(x) return x end\ isreadonly = isreadonly or function() return false end\ setreadonly = setreadonly or function() end\ make_writeable = make_writeable or function() end\ make_readonly = make_readonly or function() end\ getthreadidentity = getthreadidentity or function() return 8 end\ setthreadidentity = setthreadidentity or function() end\ getidentity = getidentity or function() return 8 end\ setidentity = setidentity or function() end\ identifyexecutor = identifyexecutor or function() return \"FlameExecutorDumperV2\", \"By .im_dev (Ken) https://discord.gg/ypVcca6cvp join now\" end\ getexecutorname = getexecutorname or function() return \"FlameExecutorDumperV2\" end\ setfflag = setfflag or function() end\ getfflag = getfflag or function() return \"\" end\ setfpscap = setfpscap or function() end\ getfpscap = getfpscap or function() return 60 end\ isnetworkowner = isnetworkowner or function() return true end\ gethiddenproperty = gethiddenproperty or function() return nil, false end\ sethiddenproperty = sethiddenproperty or function() end\ saveinstance = saveinstance or function() end\ lz4compress = lz4compress or function(s) return s end\ lz4decompress = lz4decompress or function(s) return s end\ WebSocket = WebSocket or {\ connect = function() return { Send = function() end, Close = function() end,\ OnMessage = { Connect = function() return { Disconnect = function() end } end },\ OnClose = { Connect = function() return { Disconnect = function() end } end } }\ end\ }\ if not rawget(_G, \"settings\") then\ local _settingsCache = {}\ settings = function()\ if not _settingsCache._init then\ _settingsCache._init = true\ _settingsCache.Studio = { AlwaysSaveScriptChangesWhileRunning = false }\ _settingsCache.Diagnostics = { DataSendRate = 0 }\ _settingsCache.Network = { IncomingReplicationLag = 0 }\ _settingsCache.Physics = { AllowSleep = true, PhysicsEnvironmentalThrottle = \"DefaultAuto\" }\ _settingsCache.Rendering = { QualityLevel = \"Automatic\", MaxTextureQuality = \"Max\", EditQualityLevel = \"Automatic\" }\ _settingsCache.Game = { Language = \"en-us\" }\ _settingsCache.Avatar = { GameAvatarType = \"PlayerChoice\", AllowCustomAnimations = true }\ end\ return setmetatable(_settingsCache, {\ __index = function(_, k) return setmetatable({}, { __index = function() return nil end, __newindex = rawset }) end,\ __newindex = rawset,\ })\ end\ end\ \ if not rawget(_G, \"UserSettings\") then\ UserSettings = function()\ return setmetatable({\ IsUserFeatureEnabled = function(_self, name) return false end,\ GameSettings = setmetatable({\ PerformanceStatsVisible = false,\ AllTutorialsDisabled = false,\ ChatVisible = true,\ RenderQualityLevel = 1,\ SavedQualityLevel = 1,\ ComputerMovementMode = \"Default\",\ ControlMode = \"Default\",\ VignetteEnabled = true,\ UsedCoreGuiIsVisibleToggle = false,\ PreferredTextSize = 1,\ PreferredTransparency = 1,\ FullscreenChanged = { Connect = function() return { Disconnect = function() end } end },\ }, { __index = function(_, k) return nil end }),\ }, {\ __index = function(_, k) return setmetatable({}, { __index = function() return nil end }) end,\ })\ end\ end\ \ if not rawget(_G, \"loadmodule\") then\ loadmodule = function(moduleScript)\ if type(moduleScript) == \"string\" then return nil, \"cannot load module by name\" end\ return nil, \"not supported\"\ end\ end\ \ if not rawget(_G, \"getspecialinfo\") then\ getspecialinfo = function(inst) return {} end\ end\ if not rawget(_G, \"getboundingbox\") then\ getboundingbox = function(parts)\ local V3 = type(_G.Vector3)==\"table\" and _G.Vector3.new or function() return {X=0,Y=0,Z=0} end\ local CF = type(_G.CFrame)==\"table\" and _G.CFrame.new or function() return {} end\ return CF(0,0,0), V3(0,0,0)\ end\ end\ if not rawget(_G, \"getsimulationradius\") then\ getsimulationradius = function() return 0 end\ end\ if not rawget(_G, \"setsimulationradius\") then\ setsimulationradius = function() end\ end\ if not rawget(_G, \"getnetworkowner\") then\ getnetworkowner = function(part) return nil end\ end\ if not rawget(_G, \"setnetworkowner\") then\ setnetworkowner = function(part, player) end\ end\ if not rawget(_G, \"queueonteleport\") then\ queueonteleport = function(code)\ if type(_G.syn) == \"table\" and type(_G.syn.queue_on_teleport) == \"function\" then\ _G.syn.queue_on_teleport(code)\ end\ end\ end\ queue_on_teleport = queue_on_teleport or queueonteleport or _noop_fn\ if not rawget(_G, \"compareinstances\") then\ compareinstances = function(a, b) return a == b end\ end\ if not rawget(_G, \"getinstancelist\") then\ getinstancelist = function() return {} end\ end\ if not rawget(_G, \"getscriptclosure\") then\ getscriptclosure = function(script) return function() end end\ end\ getclosure = getclosure or getscriptclosure or function() return function() end end\ getrealscriptclosure = getrealscriptclosure or getscriptclosure or function() return function() end end\ cachefunction = cachefunction or function(f) return f end\ uncachefunction = uncachefunction or function(f) end\ getcustomasset = getcustomasset or function(url) return url end\ rbxassetid = rbxassetid or function(id) return \"rbxassetid://\" .. tostring(id) end\ getdatastorekey = getdatastorekey or function() return nil end\ getcallingscript = getcallingscript or function() return script end\ getscriptbytecode = getscriptbytecode or function() return \"\" end\ decompile = decompile or function() return \"-- Bytecode version: 2\\n-- (stub)\\n\" end\ getscripthash = getscripthash or function() return string.rep(\"0\", 64) end\ getnamecallmethod = getnamecallmethod or function() return _at_namecall end\ setnamecallmethod = setnamecallmethod or function(m) _at_namecall = m end\ fireclickdetector = fireclickdetector or _noop_fn\ fireproximityprompt= fireproximityprompt or _noop_fn\ firetouchinterest = firetouchinterest or _noop_fn\ firesignal = firesignal or _noop_fn\ getmemorystore = getmemorystore or function() return {} end\ getactorid = getactorid or function() return 0 end\ sendmessage = sendmessage or _noop_fn\ bindtoactor = bindtoactor or function(actor, fn) if type(fn) == \"function\" then pcall(fn) end end\ mouse_move = mouse_move or _noop_fn\ mouse_click = mouse_click or _noop_fn\ mouse_rightclick = mouse_rightclick or _noop_fn\ mouse_scroll = mouse_scroll or _noop_fn\ key_press = key_press or _noop_fn\ key_release = key_release or _noop_fn\ keypress = keypress or _noop_fn\ keyrelease = keyrelease or _noop_fn\ setclipboard = setclipboard or _noop_fn\ getclipboard = getclipboard or function() return \"\" end\ toclipboard = toclipboard or _noop_fn\ \ if not rawget(_G, \"Drawing\") then\ local _DrawingMT = {}\ _DrawingMT.__index = _DrawingMT\ _DrawingMT.__newindex = rawset\ local function _mkDraw(drawType)\ return setmetatable({\ Visible = true,\ ZIndex = 0,\ Transparency = 0,\ Color = type(_G.Color3) == \"table\" and _G.Color3.new and _G.Color3.new(1,1,1) or {R=1,G=1,B=1},\ __type = \"Drawing\",\ __drawType = drawType,\ Position = type(_G.Vector2) == \"table\" and _G.Vector2.new and _G.Vector2.new(0,0) or {X=0,Y=0},\ From = type(_G.Vector2) == \"table\" and _G.Vector2.new and _G.Vector2.new(0,0) or {X=0,Y=0},\ To = type(_G.Vector2) == \"table\" and _G.Vector2.new and _G.Vector2.new(0,0) or {X=0,Y=0},\ Center = type(_G.Vector2) == \"table\" and _G.Vector2.new and _G.Vector2.new(0,0) or {X=0,Y=0},\ Size = drawType == \"Text\" and 14 or (type(_G.Vector2)==\"table\" and _G.Vector2.new and _G.Vector2.new(100,100) or {X=100,Y=100}),\ Radius = 50,\ NumSides = 3,\ Thickness = 1,\ Filled = false,\ Rounding = 0,\ Font = 0,\ Text = \"\",\ TextBounds = type(_G.Vector2)==\"table\" and _G.Vector2.new and _G.Vector2.new(0,0) or {X=0,Y=0},\ Outline = false,\ OutlineColor = type(_G.Color3)==\"table\" and _G.Color3.new and _G.Color3.new(0,0,0) or {R=0,G=0,B=0},\ Remove = function(self) self.Visible = false end,\ Destroy = function(self) self.Visible = false end,\ }, _DrawingMT)\ end\ Drawing = {\ new = function(drawType)\ return _mkDraw(tostring(drawType or \"Line\"))\ end,\ Fonts = setmetatable({\ UI=0, System=1, Plex=2, Monospace=3,\ }, { __index = function(_, k) return 0 end }),\ _drawCache = {},\ clear = function()\ for _, d in pairs(Drawing._drawCache) do\ if type(d) == \"table\" then d.Visible = false end\ end\ end,\ }\ end\ \ if not rawget(_G, \"isrenderobj\") then\ isrenderobj = function(v) return type(v) == \"table\" and rawget(v, \"__type\") == \"Drawing\" end\ end\ if not rawget(_G, \"getrenderproperty\") then\ getrenderproperty = function(obj, prop) return type(obj) == \"table\" and rawget(obj, prop) or nil end\ end\ if not rawget(_G, \"setrenderproperty\") then\ setrenderproperty = function(obj, prop, val) if type(obj) == \"table\" then rawset(obj, prop, val) end end\ end\ if not rawget(_G, \"cleardrawcache\") then\ cleardrawcache = function() if type(_G.Drawing) == \"table\" and type(_G.Drawing.clear) == \"function\" then _G.Drawing.clear() end end\ end\ \ readfile = readfile or function(path) return \"\" end\ writefile = writefile or _noop_fn\ appendfile = appendfile or _noop_fn\ listfiles = listfiles or function() return {} end\ isfile = isfile or function() return false end\ isfolder = isfolder or function() return false end\ makefolder = makefolder or _noop_fn\ delfolder = delfolder or _noop_fn\ delfile = delfile or _noop_fn\ do\ local _real_loadfile = rawget(_G, \"loadfile\")\ local _real_dofile = rawget(_G, \"dofile\")\ local _ALLOWED_LOADFILE = { [\"[internal]\"] = true, [\"[internal]\"] = true }\ loadfile = function(path)\ local base = type(path) == \"string\" and path:match(\"[^/\\\\]+$\") or nil\ if base and _ALLOWED_LOADFILE[base] then\ if _real_loadfile then return _real_loadfile(path) end\ end\ return nil, \"loadfile: access denied (security sandbox)\"\ end\ dofile = function(path)\ local base = type(path) == \"string\" and path:match(\"[^/\\\\]+$\") or nil\ if base and _ALLOWED_LOADFILE[base] then\ if _real_dofile then return _real_dofile(path) end\ end\ error(\"dofile: access denied (security sandbox)\", 2)\ end\ end\ request = request or function(opts)\ opts = type(opts) == \"table\" and opts or {}\ return {\ Success = false, StatusCode = 0, StatusMessage = \"NetworkDisabled\",\ Headers = {}, Body = \"\",\ ok = false,\ }\ end\ httpget = httpget or function(url) return \"\" end\ http_request = http_request or request\ http = http or { request = function(opts) return { StatusCode = 200, Body = \"\" } end }\ syn = syn or { request = request, queue_on_teleport = function() end, protect_gui = function(gui) return gui end, unprotect_gui = function() end }\ rconsoleprint = rconsoleprint or print\ rconsolewarn = rconsolewarn or print\ rconsoleerr = rconsoleerr or print\ rconsoleclear = rconsoleclear or _noop_fn\ rconsolename = rconsolename or _noop_fn\ rconsoleopen = rconsoleopen or _noop_fn\ rconsoleclose = rconsoleclose or _noop_fn\ consoleclear = consoleclear or _noop_fn\ consoleprint = consoleprint or print\ consolewarn = consolewarn or print\ consoleerror = consoleerror or print\ getobjects = getobjects or function(url) return {} end\ copyinstance = copyinstance or function(inst) return inst end\ filtergc = filtergc or function(class, opts) return {} end\ if not rawget(_G, \"debug\") or type(rawget(_G, \"debug\")) ~= \"table\" then\ debug = debug or {}\ end\ debug.getinfo = debug.getinfo or function(f, what) return { source = \"@flamedumper\", short_src = \"flamedumper\", what = \"Lua\", currentline = -1, name = \"?\", nups = 0, func = f } end\ debug.traceback = debug.traceback or function(msg, level) return (msg or \"\") .. \"\\nstack tracebac[PATH_REDACTED] in ?\" end\ debug.getupvalue = debug.getupvalue or function(fn, i) return nil end\ debug.setupvalue = debug.setupvalue or _noop_fn\ debug.getupvalues = debug.getupvalues or function(fn) return {} end\ debug.getconstant = debug.getconstant or function(fn, i) return nil end\ debug.setconstant = debug.setconstant or _noop_fn\ debug.getconstants = debug.getconstants or function(fn) return {} end\ debug.getproto = debug.getproto or function(fn, i, activate) return _noop_fn end\ debug.getprotos = debug.getprotos or function(fn) return {} end\ debug.getstack = debug.getstack or function(level, i) return nil end\ debug.setstack = debug.setstack or _noop_fn\ debug.getregistry = debug.getregistry or function() return {} end\ debug.gethook = debug.gethook or function() return nil, \"\", 0 end\ debug.sethook = debug.sethook or _noop_fn\ \ isfile = isfile or function() return false end\ isfolder = isfolder or function() return false end\ listfiles = listfiles or _empty_t\ readfile = readfile or function() return \"\" end\ writefile = writefile or _noop_fn\ appendfile = appendfile or _noop_fn\ delfile = delfile or _noop_fn\ makefolder = makefolder or _noop_fn\ delfolder = delfolder or _noop_fn\ loadfile = loadfile or function(path) return nil, \"loadfile: access denied (security sandbox)\" end\ dofile = dofile or function(path) error(\"dofile: access denied (security sandbox)\", 2) end\ \ request = request or function() return { Body = \"\", StatusCode = 200, Success = true, Headers = {}, StatusMessage = \"OK\" } end\ http_request = http_request or request\ http = http or { request = request }\ syn = syn or { request = request, protect_gui = _noop_fn, unprotect_gui = _noop_fn }\ queue_on_teleport = queue_on_teleport or _noop_fn\ setclipboard = setclipboard or _noop_fn\ toclipboard = toclipboard or _noop_fn\ getclipboard = getclipboard or function() return \"\" end\ protect_gui = protect_gui or _noop_fn\ unprotect_gui = unprotect_gui or _noop_fn\ cache_replace = cache_replace or _noop_fn\ cache_invalidate = cache_invalidate or _noop_fn\ compare_any = compare_any or function() return false end\ run_on_actor = run_on_actor or function(f, ...) if type(f) == \"function\" then pcall(f, ...) end end\ get_actor = get_actor or function() return nil end\ getactors = getactors or function() return {} end\ getsimulationradius= getsimulationradius or function() return 200 end\ setsimulationradius= setsimulationradius or function() end\ mouse_move = mouse_move or function(x, y) end\ mouse_click = mouse_click or function(btn) end\ mouse_scroll = mouse_scroll or function(delta) end\ key_press = key_press or function(key) end\ key_release = key_release or function(key) end\ getmouseposition = getmouseposition or function() return 0, 0 end\ setmouseposition = setmouseposition or function(x, y) end\ getmousestate = getmousestate or function() return false, false, false end\ getframetime = getframetime or function() return 1/60 end\ getfps = getfps or function() return 60 end\ getping = getping or function() return 0 end\ getclientid = getclientid or function() return \"\" end\ getplaceid = getplaceid or function() return 0 end\ getjobid = getjobid or function() return \"\" end\ getgameid = getgameid or function() return 0 end\ getscriptsource = getscriptsource or function() return \"\" end\ dumpstring = dumpstring or function() return \"\" end\ compilefunction = compilefunction or function(f) return \"\" end\ getflag = getflag or function(name) return false end\ setflag = setflag or function(name, val) end\ getfeatureflag = getfeatureflag or function(name) return false end\ checksupport = checksupport or function(fn) return fn == nil and false or true end\ issupported = issupported or function(fn) return fn ~= nil end\ is_byfron_closure = is_byfron_closure or function() return false end\ is_hyperion_closure = is_hyperion_closure or function() return false end\ is_byfron_function = is_byfron_function or function() return false end\ is_hyperion_function = is_hyperion_function or function() return false end\ is_medusa_closure = is_medusa_closure or function() return false end\ is_iris_closure = is_iris_closure or function() return false end\ is_deluder_closure = is_deluder_closure or function() return false end\ is_aurora_closure = is_aurora_closure or function() return false end\ is_zenith_closure = is_zenith_closure or function() return false end\ is_blackout_closure = is_blackout_closure or function() return false end\ is_phantom_closure = is_phantom_closure or function() return false end\ is_laster_closure = is_laster_closure or function() return false end\ is_dagon_closure = is_dagon_closure or function() return false end\ is_script_ware_function = is_script_ware_function or function() return false end\ is_velocity_function = is_velocity_function or function() return false end\ is_zorara_function = is_zorara_function or function() return false end\ is_arceus_function = is_arceus_function or function() return false end\ is_xeno_function = is_xeno_function or function() return false end\ is_swift_function = is_swift_function or function() return false end\ is_codex_function = is_codex_function or function() return false end\ is_solara_function = is_solara_function or function() return false end\ is_macsploit_function = is_macsploit_function or function() return false end\ is_potassium_function = is_potassium_function or function() return false end\ is_seliware_function = is_seliware_function or function() return false end\ if type(WebSocket) ~= \"table\" then\ WebSocket = {\ connect = function(url)\ return {\ Send = function(self, data) end,\ Close = function(self) end,\ OnMessage = {\ Connect = function(self, fn)\ return { Disconnect = function() end, Connected = false }\ end\ },\ OnClose = {\ Connect = function(self, fn)\ return { Disconnect = function() end, Connected = false }\ end\ },\ }\ end\ }\ end\ crypt = crypt or {\ base64 = {\ encode = function(s)\ local b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local result = {}\ local data = tostring(s or \"\")\ for i = 1, #data, 3 do\ local b1, b2, b3 = data:byte(i), data:byte(i+1) or 0, data:byte(i+2) or 0\ local n = b1 * 65536 + b2 * 256 + b3\ result[#result+1] = b64:sub(math.floor(n/262144)%64+1, math.floor(n/262144)%64+1)\ result[#result+1] = b64:sub(math.floor(n/4096)%64+1, math.floor(n/4096)%64+1)\ result[#result+1] = (i+1 <= #data) and b64:sub(math.floor(n/64)%64+1, math.floor(n/64)%64+1) or \"=\"\ result[#result+1] = (i+2 <= #data) and b64:sub(n%64+1, n%64+1) or \"=\"\ end\ return table.concat(result)\ end,\ decode = function(s)\ local b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local data = tostring(s or \"\"):gsub(\"[^\"..b64..\"=]\", \"\")\ local result = {}\ for i = 1, #data, 4 do\ local c1 = b64:find(data:sub(i,i) or \"A\") or 1\ local c2 = b64:find(data:sub(i+1,i+1) or \"A\") or 1\ local c3 = b64:find(data:sub(i+2,i+2) or \"=\") or 1\ local c4 = b64:find(data:sub(i+3,i+3) or \"=\") or 1\ local n = (c1-1)*262144 + (c2-1)*4096 + (c3-1)*64 + (c4-1)\ result[#result+1] = string.char(math.floor(n/65536))\ if data:sub(i+2,i+2) ~= \"=\" then result[#result+1] = string.char(math.floor(n/256)%256) end\ if data:sub(i+3,i+3) ~= \"=\" then result[#result+1] = string.char(n%256) end\ end\ return table.concat(result)\ end,\ },\ encrypt = function(data, key) return tostring(data or \"\") end,\ decrypt = function(data, key) return tostring(data or \"\") end,\ hash = function(data, algo) return string.rep(\"0\", 64) end,\ generatebytes = function(n) return string.rep(\"\\0\", tonumber(n) or 16) end,\ generatekey = function() return string.rep(\"\\0\", 32) end,\ random = function(n) return string.rep(\"\\0\", tonumber(n) or 16) end,\ }\ syn = syn or {}\ syn.crypt = syn.crypt or crypt\ copyinstance = copyinstance or function(x) return x end\ getmemory = getmemory or function() return 0 end\ printidentity = printidentity or function() print(\"Current identity is 8\") end\ shared = shared or setmetatable({}, { __index = _G, __newindex = function(t, k, v) rawset(t, k, v) end })\ filtergc = filtergc or function() return {} end\ getobjects = getobjects or function() return {} end\ getlocals = getlocals or function() return {} end\ getlocal = getlocal or function() return nil end\ setlocal = setlocal or _noop_fn\ fireclickdetector = fireclickdetector or _noop_fn\ fireproximityprompt= fireproximityprompt or _noop_fn\ firetouchinterest = firetouchinterest or _noop_fn\ firesignal = firesignal or _noop_fn\ getscriptclosure = getscriptclosure or function() return function() end end\ getscriptfunction = getscriptfunction or function() return function() end end\ getsenv2 = getsenv2 or function() return {} end\ mouse = mouse or { Hit = { p = nil }, Target = nil, X = 0, Y = 0 }\ getmouse = getmouse or function() return mouse end\ \ local _spawn = function(f, ...) if type(f) == \"function\" then pcall(f, ...) end end\ spawn = spawn or _spawn\ fastspawn = fastspawn or _spawn\ delay = delay or function(_, f) _spawn(f) end\ wait = wait or function(t) return t or 0 end\ warn = warn or function(...) print(\"[warn]\", ...) end\ tick = tick or function() return os.time() end\ task = task or {\ wait = function(t)\ local n = tonumber(t) or 0\ if n > 0 then\ local deadline = os.clock() + n\ while os.clock() < deadline do end\ end\ return n\ end,\ spawn = _spawn,\ defer = _spawn,\ delay = function(_, f) _spawn(f) end,\ cancel = _noop_fn,\ synchronize = _noop_fn,\ desynchronize = _noop_fn,\ }\ \ do\ local _hb_cbs = {}\ local _hb_tick = 0\ local _HB_DTS = { 0.0167, 0.0183, 0.0159, 0.0176, 0.0162, 0.0171, 0.0155, 0.0168 }\ \ local function _hb_make_conn(id)\ local c = {}\ rawset(c, \"_id\", id)\ rawset(c, \"_on\", true)\ return setmetatable(c, {\ __index = function(self, k)\ if k == \"Connected\" then return rawget(self, \"_on\") end\ if k == \"Disconnect\" or k == \"disconnect\" then\ return function(_)\ _hb_cbs[rawget(self, \"_id\")] = nil\ rawset(self, \"_on\", false)\ end\ end\ end,\ __newindex = rawset,\ __metatable = \"The metatable is locked\",\ })\ end\ \ local function _hb_connect(_, cb)\ if type(cb) ~= \"function\" then return _hb_make_conn(0) end\ local id = #_hb_cbs + 1\ _hb_cbs[id] = cb\ return _hb_make_conn(id)\ end\ \ local _hb_signal = setmetatable({}, {\ __index = function(_, k)\ if k == \"Connect\" or k == \"connect\" then return _hb_connect end\ if k == \"Wait\" then return function() return _HB_DTS[1] end end\ if k == \"Once\" then\ return function(_, cb)\ local id = #_hb_cbs + 1\ local fired = false\ _hb_cbs[id] = function(dt)\ if fired then return end\ fired = true\ _hb_cbs[id] = nil\ if type(cb) == \"function\" then cb(dt) end\ end\ return _hb_make_conn(id)\ end\ end\ end,\ __metatable = \"The metatable is locked\",\ })\ \ local function _tick_hb()\ _hb_tick = _hb_tick + 1\ local dt = _HB_DTS[(_hb_tick - 1) % #_HB_DTS + 1]\ for _, cb in pairs(_hb_cbs) do\ if type(cb) == \"function\" then pcall(cb, dt) end\ end\ return dt\ end\ \ rawset(_fake_services.RunService, \"Heartbeat\", _hb_signal)\ rawset(_fake_services.RunService, \"RenderStepped\", _hb_signal)\ rawset(_fake_services.RunService, \"Stepped\", _hb_signal)\ \ task.wait = _tick_hb\ task.defer = function(f, ...) _spawn(f, ...) end\ wait = _tick_hb\ end\ \ fluxus = fluxus or { protect_gui = _noop_fn, request = request }\ krnl = krnl or { request = request }\ sentinel = sentinel or {}\ secure_load = secure_load or function(s) return loadstring(s) end\ debug = debug or {}\ if type(debug) == \"table\" then\ do\ local _nd = _native_debug\ local _fake_src = \"@game_script\"\ local _fake_short = \"game_script\"\ local function _sanitise(t)\ if type(t) ~= \"table\" then return t end\ t.source = _fake_src\ t.short_src = _fake_short\ t.linedefined = -1\ t.lastlinedefined = -1\ t.currentline = -1\ return t\ end\ local _raw_gi = (_nd and type(_nd.getinfo) == \"function\") and _nd.getinfo or nil\ debug.getinfo = function(arg1, what)\ if _raw_gi then\ local a1 = type(arg1) == \"number\" and (arg1 + 1) or arg1\ local ok, info = pcall(_raw_gi, a1, what or \"flnSu\")\ if ok and type(info) == \"table\" then return _sanitise(info) end\ end\ return {\ what = \"Lua\",\ source = _fake_src,\ short_src = _fake_short,\ linedefined = -1,\ lastlinedefined = -1,\ currentline = -1,\ name = \"?\",\ nups = 0,\ func = type(arg1) == \"function\" and arg1 or function() end,\ }\ end\ end\ debug.getconstants = debug.getconstants or getconstants\ debug.getupvalues = debug.getupvalues or getupvalues\ debug.getprotos = debug.getprotos or getprotos\ debug.getregistry = debug.getregistry or getreg\ debug.gethook = debug.gethook or function() return nil end\ debug.sethook = debug.sethook or _noop_fn\ end\ \ do\ \ if not buffer then\ local _buf_mt = {\ __type = \"buffer\",\ __metatable = \"The metatable is locked\",\ __tostring = function(b) return string.format(\"buffer(0x%x)\", b._len) end,\ }\ _buf_mt.__index = _buf_mt\ local function _new_buf(size)\ local d = {}\ for i = 0, size - 1 do d[i] = 0 end\ local obj = setmetatable({ _d = d, _len = size }, _buf_mt)\ if _G._RTYPE then _G._RTYPE[obj] = \"buffer\" end\ return obj\ end\ local function _chk(b, off, n)\ n = n or 0\ local _bt = type(b)\ if (_bt ~= \"table\" and _bt ~= \"userdata\") or not rawget(b, \"_d\") then error(\"buffer expected\", 3) end\ if off < 0 or off + n > b._len then error(\"buffer access out of range (\"..off..\"+\"..n..\" > \"..b._len..\")\", 3) end\ end\ buffer = {\ create = function(sz) return _new_buf(math.max(0, math.floor(sz or 0))) end,\ len = function(b) return b._len end,\ fill = function(b, off, val, cnt)\ cnt = cnt or (b._len - off)\ for i = off, off + cnt - 1 do b._d[i] = math.floor(val or 0) % 256 end\ end,\ copy = function(tgt, toff, src, soff, cnt)\ soff = soff or 0; cnt = cnt or (src._len - soff)\ for i = 0, cnt - 1 do tgt._d[toff + i] = src._d[soff + i] or 0 end\ end,\ readu8 = function(b, off) _chk(b, off, 1); return b._d[off] or 0 end,\ writeu8 = function(b, off, v) _chk(b, off, 1); b._d[off] = math.floor(v or 0) % 256 end,\ readi8 = function(b, off) _chk(b, off, 1); local v = b._d[off] or 0; return v >= 128 and v - 256 or v end,\ writei8 = function(b, off, v) _chk(b, off, 1); b._d[off] = (math.floor(v or 0) + 256) % 256 end,\ readu16 = function(b, off) _chk(b, off, 2); return (b._d[off] or 0) + (b._d[off+1] or 0)*256 end,\ writeu16= function(b, off, v) _chk(b, off, 2); v=math.floor(v or 0)%65536; b._d[off]=v%256; b._d[off+1]=math.floor(v/256) end,\ readi16 = function(b, off) _chk(b, off, 2); local v=(b._d[off] or 0)+(b._d[off+1] or 0)*256; return v>=32768 and v-65536 or v end,\ writei16= function(b, off, v) _chk(b, off, 2); v=(math.floor(v or 0)+65536)%65536; b._d[off]=v%256; b._d[off+1]=math.floor(v/256) end,\ readu32 = function(b, off) _chk(b, off, 4); return (b._d[off] or 0)+(b._d[off+1] or 0)*256+(b._d[off+2] or 0)*65536+(b._d[off+3] or 0)*16777216 end,\ writeu32= function(b, off, v)\ _chk(b, off, 4); v=math.floor(v or 0)%4294967296\ b._d[off]=v%256; b._d[off+1]=math.floor(v/256)%256\ b._d[off+2]=math.floor(v/65536)%256; b._d[off+3]=math.floor(v/16777216)%256\ end,\ readi32 = function(b, off)\ _chk(b, off, 4)\ local v=(b._d[off] or 0)+(b._d[off+1] or 0)*256+(b._d[off+2] or 0)*65536+(b._d[off+3] or 0)*16777216\ return v>=2147483648 and v-4294967296 or v\ end,\ writei32= function(b, off, v)\ _chk(b, off, 4); v=(math.floor(v or 0)+4294967296)%4294967296\ b._d[off]=v%256; b._d[off+1]=math.floor(v/256)%256\ b._d[off+2]=math.floor(v/65536)%256; b._d[off+3]=math.floor(v/16777216)%256\ end,\ readf32 = function(b, off) _chk(b, off, 4); return 0.0 end,\ writef32 = function(b, off, v) _chk(b, off, 4) end,\ readf64 = function(b, off) _chk(b, off, 8); return 0.0 end,\ writef64 = function(b, off, v) _chk(b, off, 8) end,\ readstring = function(b, off, cnt)\ _chk(b, off, cnt)\ local t = {}\ for i = 0, cnt - 1 do t[i+1] = string.char(b._d[off+i] or 0) end\ return table.concat(t)\ end,\ writestring = function(b, off, s, cnt)\ s = tostring(s or \"\"); cnt = cnt or #s; _chk(b, off, cnt)\ for i = 1, cnt do b._d[off+i-1] = s:byte(i) or 0 end\ end,\ tostring = function(b)\ local t = {}\ for i = 0, b._len - 1 do t[i+1] = string.char(b._d[i] or 0) end\ return table.concat(t)\ end,\ fromstring = function(s)\ s = tostring(s or \"\")\ local b = _new_buf(#s)\ for i = 1, #s do b._d[i-1] = s:byte(i) end\ return b\ end,\ }\ local _prev_typeof_buf = typeof\ typeof = function(v)\ if type(v) == \"table\" then\ local ok, mt = pcall(getmetatable, v)\ if ok and type(mt) == \"table\" and mt.__type == \"buffer\" then return \"buffer\" end\ end\ return _prev_typeof_buf(v)\ end\ end\ \ table.create = table.create or function(n, v) local t={} for i=1,n do t[i]=v end return t end\ table.find = table.find or function(t, v, i)\ for j = (i or 1), #t do if t[j] == v then return j end end\ return nil\ end\ table.clear = table.clear or function(t) for k in next, t do rawset(t, k, nil) end end\ table.freeze = table.freeze or function(t) return t end\ table.isfrozen = table.isfrozen or function() return false end\ table.move = table.move or function(a1, f, e, t, a2)\ a2 = a2 or a1\ if e >= f then\ local n = e - f\ if t > f then for i = n, 0, -1 do a2[t+i] = a1[f+i] end\ else for i = 0, n do a2[t+i] = a1[f+i] end end\ end\ return a2\ end\ table.pack = table.pack or function(...) return { n = select(\"#\", ...), ... } end\ table.unpack = table.unpack or unpack\ \ if not string.split then\ string.split = function(s, sep)\ s = tostring(s or \"\")\ sep = tostring(sep or \",\")\ local out = {}\ if sep == \"\" then\ for i = 1, #s do out[#out+1] = s:sub(i, i) end\ return out\ end\ local i = 1\ while true do\ local f, e = s:find(sep, i, true)\ if f then out[#out+1] = s:sub(i, f-1); i = e + 1\ else out[#out+1] = s:sub(i); break end\ end\ return out\ end\ end\ if not string.trim then\ string.trim = function(s) return tostring(s or \"\"):match(\"^%s*(.-)%s*$\") end\ end\ \ math.clamp = math.clamp or function(n, lo, hi) return n < lo and lo or n > hi and hi or n end\ math.sign = math.sign or function(n) return n > 0 and 1 or n < 0 and -1 or 0 end\ math.round = math.round or function(n) return math.floor(n + 0.5) end\ math.log2 = math.log2 or function(n) return math.log(n, 2) end\ math.map = math.map or function(n, lo, hi, a, b) return a + (b-a) * ((n-lo)/(hi-lo)) end\ math.noise = math.noise or function() return 0.0 end\ \ do\ local _con_buf = {}\ local _con_open = false\ local function _con_write(...)\ local parts = {}\ for i = 1, select(\"#\", ...) do parts[i] = tostring(select(i,...)) end\ _con_buf[#_con_buf+1] = table.concat(parts, \"\\t\")\ end\ rconsolecreate = rconsolecreate or function() _con_open = true end\ rconsoledestroy = rconsoledestroy or function() _con_open = false; _con_buf = {} end\ rconsoleclear = rconsoleclear or function() _con_buf = {} end\ rconsoleoutput = rconsoleoutput or function(...) _con_write(...) end\ rconsolewarn = rconsolewarn or function(...) _con_write(\"[WARN] \", ...) end\ rconsolerr = rconsolerr or function(...) _con_write(\"[ERR] \", ...) end\ rconsoleerr = rconsolerr\ rconsoletitle = rconsoletitle or function() end\ rconsoleinput = rconsoleinput or function() return \"\" end\ consolecreate = consolecreate or rconsolecreate\ consoledestroy = consoledestroy or rconsoledestroy\ consoleclear = consoleclear or rconsoleclear\ consoleoutput = consoleoutput or rconsoleoutput\ consolewarn = consolewarn or rconsolewarn\ consoleerr = consoleerr or rconsolerr\ consoletitle = consoletitle or rconsoletitle\ consoleinput = consoleinput or rconsoleinput\ rconsoleprint = rconsoleprint or rconsoleoutput\ consolelog = consolelog or rconsoleoutput\ getconsolebuffer = getconsolebuffer or function() return _con_buf end\ end\ end\ \ do\ local _real_io = _PHYS_IO_OPEN and { open = _PHYS_IO_OPEN } or io\ local _real_os = os\ \ local _b64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local _b64lookup = {}\ for i = 1, #_b64chars do _b64lookup[_b64chars:sub(i,i)] = i - 1 end\ local function _b64encode(data)\ data = tostring(data or \"\")\ local out, len = {}, #data\ local i = 1\ while i <= len do\ local b1 = data:byte(i) or 0\ local b2 = data:byte(i+1)\ local b3 = data:byte(i+2)\ local n = b1 * 65536 + (b2 or 0) * 256 + (b3 or 0)\ local c1 = _b64chars:sub(math.floor(n / 262144) + 1, math.floor(n / 262144) + 1)\ local c2 = _b64chars:sub(math.floor(n / 4096) % 64 + 1, math.floor(n / 4096) % 64 + 1)\ local c3 = b2 and _b64chars:sub(math.floor(n / 64) % 64 + 1, math.floor(n / 64) % 64 + 1) or \"=\"\ local c4 = b3 and _b64chars:sub(n % 64 + 1, n % 64 + 1) or \"=\"\ out[#out+1] = c1 .. c2 .. c3 .. c4\ i = i + 3\ end\ return table.concat(out)\ end\ local function _b64decode(data)\ data = tostring(data or \"\"):gsub(\"[^A-Za-z0-9+/=]\", \"\")\ local out = {}\ local i = 1\ while i <= #data do\ local q1 = _b64lookup[data:sub(i, i )] or 0\ local q2 = _b64lookup[data:sub(i+1, i+1)] or 0\ local p3 = data:sub(i+2, i+2)\ local p4 = data:sub(i+3, i+3)\ local q3 = (p3 == \"\" or p3 == \"=\") and 0 or (_b64lookup[p3] or 0)\ local q4 = (p4 == \"\" or p4 == \"=\") and 0 or (_b64lookup[p4] or 0)\ local n = q1 * 262144 + q2 * 4096 + q3 * 64 + q4\ out[#out+1] = string.char(math.floor(n / 65536) % 256)\ if p3 ~= \"=\" and p3 ~= \"\" then\ out[#out+1] = string.char(math.floor(n / 256) % 256)\ end\ if p4 ~= \"=\" and p4 ~= \"\" then\ out[#out+1] = string.char(n % 256)\ end\ i = i + 4\ end\ return table.concat(out)\ end\ local _bxor = (bit32 and bit32.bxor)\ or (bit and bit.bxor)\ or (function()\ local f = (loadstring or load)(\"local a,b=...; return a~b\")\ return function(a, b) return f(a, b) end\ end)()\ local function _fnv_hex(s, salt)\ s = tostring(s or \"\") .. tostring(salt or \"\")\ local h = 2166136261\ for i = 1, #s do\ h = _bxor(h, s:byte(i)) * 16777619 % 4294967296\ end\ local hex = string.format(\"%08x\", h)\ return (hex):rep(8)\ end\ local function _crypt_xor(s, key)\ s, key = tostring(s or \"\"), tostring(key or \"k\")\ if #key == 0 then key = \"k\" end\ local out = {}\ for i = 1, #s do\ out[i] = string.char(_bxor(s:byte(i), key:byte(((i - 1) % #key) + 1)) % 256)\ end\ return table.concat(out)\ end\ crypt = crypt or {}\ crypt.base64encode = _b64encode\ crypt.base64decode = _b64decode\ crypt.base64_encode = _b64encode\ crypt.base64_decode = _b64decode\ crypt.base64 = { encode = _b64encode, decode = _b64decode }\ crypt.encode = _b64encode\ crypt.decode = _b64decode\ crypt.hash = function(data, algo) return _fnv_hex(data, algo or \"sha256\") end\ crypt.encrypt = function(s, k) return _b64encode(_crypt_xor(s, k)) end\ crypt.decrypt = function(s, k) return _crypt_xor(_b64decode(s), k) end\ crypt.generatebytes = function(n) return _b64encode(string.rep(\"\\0\", tonumber(n) or 16)) end\ crypt.generatekey = function() return _b64encode(string.rep(\"k\", 32)) end\ crypt.random = function(n) return string.rep(\"a\", tonumber(n) or 16) end\ base64 = base64 or { encode = _b64encode, decode = _b64decode }\ base64_encode = _b64encode\ base64_decode = _b64decode\ syn = syn or {}\ syn.crypt = syn.crypt or {}\ syn.crypt.base64 = syn.crypt.base64 or { encode = _b64encode, decode = _b64decode }\ syn.crypt.encrypt = syn.crypt.encrypt or crypt.encrypt\ syn.crypt.decrypt = syn.crypt.decrypt or crypt.decrypt\ \ local _FS_ROOT = \"workspace\"\ local function _safe_path(p)\ p = tostring(p or \"\")\ if p:match(\"^/\") or p:match(\"^[A-Za-z]:[\\\\/]\") then return nil end\ if p:find(\"%.%.\") then return nil end\ if p == \"\" then return nil end\ return _FS_ROOT .. \"/\" .. p\ end\ local function _ensure_root()\ if _real_io and _real_io.open then\ local probe = _real_io.open(_FS_ROOT .. \"/.keep\", \"a\")\ if probe then probe:close() return true end\ if _real_os and _real_os.execute then\ pcall(_real_os.execute, \"mkdir -p \" .. _FS_ROOT .. \" 2>/dev/null\")\ local p2 = _real_io.open(_FS_ROOT .. \"/.keep\", \"a\")\ if p2 then p2:close() return true end\ end\ end\ return false\ end\ _ensure_root()\ local function _read_all(path)\ if not _real_io or not _real_io.open then return nil end\ local f = _real_io.open(path, \"rb\")\ if not f then return nil end\ local data = f:read(\"*a\")\ f:close()\ return data\ end\ local function _write_mode(path, mode, data)\ if not _real_io or not _real_io.open then return false end\ local f = _real_io.open(path, mode)\ if not f then return false end\ f:write(tostring(data or \"\"))\ f:close()\ return true\ end\ local _VFS = {}\ local _VFS_DIRS = { [\"\"] = true }\ \ local function _vfs_norm(p)\ return (tostring(p or \"\"):gsub(\"\\\\\", \"/\"):gsub(\"^/+\", \"\"):gsub(\"/+$\", \"\"))\ end\ local function _vfs_parent(p)\ return p:match(\"^(.*)/[^/]+$\") or \"\"\ end\ local function _vfs_in_dir(dir, fp)\ if dir == \"\" then return not fp:match(\"/\") end\ local pre = dir .. \"/\"\ if fp:sub(1, #pre) ~= pre then return false end\ return not fp:sub(#pre + 1):match(\"/\")\ end\ \ isfile = function(p)\ local np = _vfs_norm(p)\ if _VFS[np] ~= nil then return true end\ local sp = _safe_path(p)\ if sp then\ local f = _real_io and _real_io.open and _real_io.open(sp, \"rb\")\ if f then f:close() return true end\ end\ return false\ end\ isfolder = function(p)\ if _VFS_DIRS[_vfs_norm(p)] then return true end\ local sp = _safe_path(p)\ if sp then\ local f = _real_io and _real_io.open and _real_io.open(sp .. \"/.keep\", \"rb\")\ if f then f:close() return true end\ end\ return false\ end\ readfile = function(p)\ local np = _vfs_norm(p)\ if _VFS[np] ~= nil then return _VFS[np] end\ local sp = _safe_path(p)\ return (sp and _read_all(sp)) or \"\"\ end\ writefile = function(p, d)\ local np = _vfs_norm(p)\ _VFS[np] = tostring(d or \"\")\ _VFS_DIRS[_vfs_parent(np)] = true\ local sp = _safe_path(p)\ if sp then _ensure_root(); pcall(_write_mode, sp, \"wb\", d) end\ end\ appendfile = function(p, d)\ local np = _vfs_norm(p)\ _VFS[np] = (_VFS[np] or \"\") .. tostring(d or \"\")\ _VFS_DIRS[_vfs_parent(np)] = true\ local sp = _safe_path(p)\ if sp then _ensure_root(); pcall(_write_mode, sp, \"ab\", d) end\ end\ delfile = function(p)\ local np = _vfs_norm(p)\ _VFS[np] = nil\ local sp = _safe_path(p)\ if sp and _real_os and _real_os.remove then pcall(_real_os.remove, sp) end\ end\ makefolder = function(p)\ local np = _vfs_norm(p)\ _VFS_DIRS[np] = true\ local sp = _safe_path(p)\ if sp then\ if _real_os and _real_os.execute then\ pcall(_real_os.execute, \"mkdir -p \" .. sp .. \" 2>/dev/null\")\ end\ pcall(_write_mode, sp .. \"/.keep\", \"wb\", \"\")\ end\ end\ delfolder = function(p)\ local np = _vfs_norm(p)\ _VFS_DIRS[np] = nil\ for k in pairs(_VFS) do\ if k == np or k:sub(1, #np + 1) == np .. \"/\" then _VFS[k] = nil end\ end\ local sp = _safe_path(p)\ if sp and _real_os and _real_os.execute then\ pcall(_real_os.execute, \"rm -rf \" .. sp .. \" 2>/dev/null\")\ end\ end\ listfiles = function(p)\ local np = _vfs_norm(p or \"\")\ local out, seen = {}, {}\ local function _emit(display)\ if not seen[display] then seen[display] = true; out[#out + 1] = display end\ end\ local base = (p == \"\" or p == \"/\") and \"\" or np\ for fp in pairs(_VFS) do\ if _vfs_in_dir(base, fp) then\ local leaf = fp:match(\"[^/]+$\") or fp\ _emit((base == \"\") and leaf or (base .. \"/\" .. leaf))\ end\ end\ for dir in pairs(_VFS_DIRS) do\ if dir ~= base and _vfs_in_dir(base, dir) then\ local leaf = dir:match(\"[^/]+$\") or dir\ _emit((base == \"\") and leaf or (base .. \"/\" .. leaf))\ end\ end\ return out\ end\ loadfile = function(p)\ local sp = _safe_path(p); if not sp then return nil, \"bad path\" end\ local data = _read_all(sp)\ if not data then return nil, \"no file\" end\ return (loadstring or load)(data)\ end\ \ local _clipboard = \"\"\ setclipboard = function(s) _clipboard = tostring(s or \"\") end\ toclipboard = setclipboard\ getclipboard = function() return _clipboard end\ \ compareinstances = function(a, b) return rawequal(a, b) end\ cloneref = function(x) return x end\ local _hooked = setmetatable({}, { __mode = \"k\" })\ isfunctionhooked = function(f) return _hooked[f] == true end\ \ local _orig_hookfunction = hookfunction\ hookfunction = function(target, hook)\ if type(target) ~= \"function\" or type(hook) ~= \"function\" then\ return target\ end\ _hooked[target] = true\ _hooked[hook] = true\ if _orig_hookfunction and _orig_hookfunction ~= hookfunction then\ local ok, ret = pcall(_orig_hookfunction, target, hook)\ if ok and ret then return ret end\ end\ return target\ end\ replaceclosure = function(orig, new)\ if type(orig) == \"function\" then _hooked[orig] = true end\ if type(new) == \"function\" then _hooked[new] = true end\ return orig\ end\ restorefunction = function(f)\ if type(f) == \"function\" then _hooked[f] = nil end\ end\ \ local _ndbg = _native_debug or debug\ if type(_ndbg) == \"table\" then\ if _ndbg.getupvalue then\ debug.getupvalues = function(fn)\ local ups = {}\ if type(fn) ~= \"function\" then return ups end\ for i = 1, 256 do\ local ok, name, val = pcall(_ndbg.getupvalue, fn, i)\ if not ok or name == nil then break end\ ups[i] = val\ end\ return ups\ end\ debug.getupvalue = function(fn, i)\ if type(fn) ~= \"function\" then return nil end\ local ok, name, val = pcall(_ndbg.getupvalue, fn, tonumber(i) or 1)\ if not ok or name == nil then return nil end\ return name, val\ end\ end\ if _ndbg.setupvalue then\ debug.setupvalue = function(fn, i, val)\ if type(fn) ~= \"function\" then return nil end\ pcall(_ndbg.setupvalue, fn, tonumber(i) or 1, val)\ return val\ end\ end\ if _ndbg.getlocal then\ debug.getstack = function(level, idx)\ level = (tonumber(level) or 1) + 1\ if idx then\ local ok, _name, val = pcall(_ndbg.getlocal, level, tonumber(idx))\ if not ok then return nil end\ return val\ end\ local out = {}\ for i = 1, 64 do\ local ok, name, val = pcall(_ndbg.getlocal, level, i)\ if not ok or name == nil then break end\ out[i] = val\ end\ return out\ end\ end\ end\ local function _lua53_get_dump(fn)\ if type(fn) ~= \"function\" then return nil end\ local _dump = _G._origStringDump\ if type(_dump) ~= \"function\" then\ local _str = rawget(_G, \"string\") or string\ _dump = type(_str) == \"table\" and rawget(_str, \"dump\") or nil\ end\ if type(_dump) ~= \"function\" then return nil end\ local ok, bc = pcall(_dump, fn)\ if not ok or type(bc) ~= \"string\" or #bc < 35 then return nil end\ if bc:sub(1, 4) ~= \"\\x1bLua\" or bc:byte(5) ~= 0x53 then return nil end\ return bc\ end\ \ local function _lua53_make_reader(bc)\ local sz_int = bc:byte(13)\ local sz_size_t = bc:byte(14)\ local sz_instr = bc:byte(15)\ local sz_int64 = bc:byte(16)\ local sz_double = bc:byte(17)\ local pos = 18 + sz_int64 + sz_double + 1\ local function read_u(n)\ local v, mul = 0, 1\ for _ = 1, n do\ if pos > #bc then return 0 end\ v = v + bc:byte(pos) * mul; mul = mul * 256; pos = pos + 1\ end\ return v\ end\ local function read_int() return read_u(sz_int) end\ local function read_size_t() return read_u(sz_size_t) end\ local function read_str()\ if pos > #bc then return nil end\ local b = bc:byte(pos); pos = pos + 1\ if b == 0 then return nil end\ local len = (b == 0xFF) and (read_size_t() - 1) or (b - 1)\ if len <= 0 then return \"\" end\ local s = bc:sub(pos, pos + len - 1); pos = pos + len; return s\ end\ local function skip_const()\ if pos > #bc then return end\ local t = bc:byte(pos); pos = pos + 1\ if t == 0 then\ elseif t == 1 then pos = pos + 1\ elseif t == 3 then pos = pos + sz_double\ elseif t == 19 then pos = pos + sz_int64\ elseif t == 4 or t == 20 then read_str()\ end\ end\ local function skip_to_constants()\ read_str()\ read_int(); read_int()\ pos = pos + 3\ local n_code = read_int()\ pos = pos + n_code * sz_instr\ end\ return {\ read_int = read_int, read_size_t = read_size_t,\ read_str = read_str, read_u = read_u, skip_const = skip_const,\ skip_to_constants = skip_to_constants,\ sz_double = sz_double, sz_int64 = sz_int64, sz_instr = sz_instr,\ bc = bc,\ get_pos = function() return pos end,\ }\ end\ \ local function _lua53_parse_constants(fn)\ local bc = _lua53_get_dump(fn)\ if not bc then return {} end\ local ok, result = pcall(function()\ local R = _lua53_make_reader(bc)\ R.skip_to_constants()\ local n_k = R.read_int()\ local out = {}\ for i = 1, n_k do\ if R.get_pos() > #bc then break end\ local t = bc:byte(R.get_pos()); R.read_u(1)\ if t == 0 then\ elseif t == 1 then\ local b = R.read_u(1); out[i] = (b ~= 0)\ elseif t == 3 then\ local ok2, v = pcall(string.unpack, \"/dev/null\"\ \ local h = _real_io.popen(table.concat(parts), \"r\")\ local status_str = \"\"\ if h then status_str = h:read(\"*a\") or \"\"; h:close() end\ local status = tonumber((status_str:match(\"(%d+)\") or \"0\")) or 0\ \ local body_data = _read_all(body_path) or \"\"\ local hdrs_raw = _read_all(hdr_path) or \"\"\ local hdr_table, status_line = _parse_headers(hdrs_raw)\ \ if _real_os and _real_os.remove then\ pcall(_real_os.remove, body_path)\ pcall(_real_os.remove, hdr_path)\ if body ~= \"\" then pcall(_real_os.remove, req_path) end\ end\ \ return {\ Body = body_data,\ StatusCode = status,\ StatusMessage = status_line ~= \"\" and status_line or \"\",\ Success = status >= 200 and status < 300,\ Headers = hdr_table,\ }\ end\ \ request = _http_request\ http_request = _http_request\ http = http or {}\ http.request = _http_request\ syn = syn or {}\ syn.request = _http_request\ fluxus = fluxus or {}\ fluxus.request = _http_request\ end\ \ do\ local _C_builtins = {}\ do\ local nd = _native_debug\ for _, lib in ipairs({\"_G\",\"string\",\"table\",\"math\",\"io\",\"os\",\ \"coroutine\",\"bit32\",\"utf8\"}) do\ local L = rawget(_G, lib)\ if type(L) == \"table\" then\ for _, fn in pairs(L) do\ if type(fn) == \"function\" then _C_builtins[fn] = true end\ end\ end\ end\ for _, fn in ipairs({print,tostring,tonumber,type,select,pcall,\ xpcall,error,assert,ipairs,pairs,next,\ rawget,rawset,rawequal,setmetatable,\ getmetatable,require,collectgarbage,\ load,loadstring,getfenv,setfenv}) do\ if type(fn) == \"function\" then _C_builtins[fn] = true end\ end\ if nd and type(nd) == \"table\" then\ for _, fn in pairs(nd) do\ if type(fn) == \"function\" then _C_builtins[fn] = true end\ end\ end\ end\ \ local function _is_c(fn)\ if _C_builtins[fn] then return true end\ if _native_debug and _native_debug.getinfo then\ local ok, info = pcall(_native_debug.getinfo, fn, \"S\")\ if ok and info and info.what == \"C\" then return true end\ end\ return false\ end\ \ local _info_impl\ _info_impl = function(arg1, what)\ what = tostring(what or \"snlf\")\ local out = {}\ local function push_func(f)\ for c in what:gmatch(\".\") do\ if c == \"s\" then\ out[#out+1] = _is_c(f) and \"[C]\" or \"[string \\\"flame\\\"]\"\ elseif c == \"a\" then\ out[#out+1] = 0\ out[#out+1] = true\ elseif c == \"n\" then\ out[#out+1] = \"stub\"\ elseif c == \"l\" then\ out[#out+1] = -1\ elseif c == \"f\" then\ out[#out+1] = f\ end\ end\ end\ local function push_level()\ for c in what:gmatch(\".\") do\ if c == \"s\" then\ out[#out+1] = \"@flamedumpr\"\ elseif c == \"a\" then\ out[#out+1] = 0; out[#out+1] = true\ elseif c == \"n\" then out[#out+1] = \"?\"\ elseif c == \"l\" then out[#out+1] = -1\ elseif c == \"f\" then out[#out+1] = function() end\ end\ end\ end\ if type(arg1) == \"function\" then push_func(arg1)\ elseif type(arg1) == \"number\" then push_level()\ else push_level() end\ return (table.unpack or unpack)(out)\ end\ debug.info = debug.info or _info_impl\ \ local _traceback_impl = function(msg)\ return tostring(msg or \"\") .. \"\\nstack tracebac[PATH_REDACTED] in ?\"\ end\ debug.traceback = debug.traceback or _traceback_impl\ debug.getlocal = debug.getlocal or function() return nil end\ debug.setlocal = debug.setlocal or function() return nil end\ debug.getupvalue = debug.getupvalue or function() return nil end\ debug.setupvalue = debug.setupvalue or function() return nil end\ \ local _real_G = _G\ do\ local mt = getmetatable(_G)\ if type(mt) == \"table\" and type(mt.__index) == \"table\" then\ _real_G = mt.__index\ end\ end\ local extras = _real_G._bypassSafeDebugExtras or {}\ extras.info = _info_impl\ extras.traceback = _traceback_impl\ extras.getlocal = extras.getlocal or function() return nil end\ extras.setlocal = extras.setlocal or function() return nil end\ extras.getupvalue = extras.getupvalue or function() return nil end\ extras.setupvalue = extras.setupvalue or function() return nil end\ extras.getconstant = extras.getconstant or function() return nil end\ extras.getconstants = extras.getconstants or function() return {} end\ extras.getproto = extras.getproto or function() return function() end end\ extras.getprotos = extras.getprotos or function() return {} end\ extras.profilebegin = extras.profilebegin or function() end\ extras.profileend = extras.profileend or function() end\ extras.sethook = extras.sethook or function() end\ rawset(_real_G, \"_bypassSafeDebugExtras\", extras)\ \ local _ds = _G.dumperState\ if type(_ds) == \"table\" and type(_ds.property_store) == \"table\" then\ local ps = _ds.property_store\ \ local function bag(proxy)\ if not proxy then return nil end\ local b = ps[proxy]\ if not b then b = {}; ps[proxy] = b end\ return b\ end\ \ local function resolve(path)\ local cur = _G.game\ for seg in tostring(path):gmatch(\"[^%.]+\") do\ if type(cur) ~= \"table\" then return nil end\ local ok, nxt = pcall(function() return cur[seg] end)\ if not ok or nxt == nil then return nil end\ cur = nxt\ end\ return cur\ end\ \ local _real_mkt_proxy = nil\ pcall(function()\ _real_mkt_proxy = _G.game:GetService(\"MarketplaceService\")\ end)\ if _real_mkt_proxy then\ rawset(_real_mkt_proxy, \"GetProductInfo\", function(_, id)\ return {\ Name = \"Untitled Game\",\ Description = \"\",\ Creator = { Id = 1, Name = \"Roblox\", CreatorType = \"User\",\ HasVerifiedBadge = false },\ CreatorType = \"User\",\ CreatorId = 1,\ AssetId = tonumber(id) or 0,\ IsForSale = false,\ ProductType = \"User Product\",\ PriceInRobux = 0,\ Updated = \"1970-01-01T00:00:00.000Z\",\ Created = \"1970-01-01T00:00:00.000Z\",\ IconImageAssetId = 0,\ IsPublicDomain = true,\ Sales = 0,\ Remaining = 0,\ }\ end)\ end\ \ local _players_proxy = nil\ pcall(function() _players_proxy = _G.game:GetService(\"Players\") end)\ if _players_proxy then\ rawset(_players_proxy, \"GetCharacterAppearanceInfoAsync\",\ function(_, _userId)\ return {\ assets = { { id = 1, name = \"Stub\",\ assetType = { id = 8, name = \"Hat\" } } },\ bodyColors = {\ leftArmColorId = 1, torsoColorId = 1,\ rightArmColorId = 1, headColorId = 1,\ leftLegColorId = 1, rightLegColorId = 1,\ },\ scales = { bodyType = 0, head = 1, height = 1,\ proportion = 0, depth = 1, width = 1 },\ defaultPantsApplied = false,\ defaultShirtApplied = false,\ playerAvatarType = \"R15\",\ emotes = {},\ }\ end)\ end\ \ local _acp_proxy = nil\ pcall(function() _acp_proxy = _G.game:GetService(\"AnimationClipProvider\") end)\ if _acp_proxy then\ rawset(_acp_proxy, \"GetMemStats\", function()\ return { Animations = 0, KeyframeSequences = 0,\ AssetCache = 0, Total = 0 }\ end)\ end\ \ local atomic = resolve(\"Players.LocalPlayer.PlayerScripts.RbxCharacterSounds.AtomicBinding\")\ if atomic then bag(atomic).Archivable = false end\ local sbur = resolve(\"ReplicatedStorage.DefaultChatSystemChatEvents.SetBlockedUserIdsRequest\")\ if sbur then bag(sbur).ClassName = \"BindableEvent\" end\ end\ \ local _prev = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev) == \"function\" then pcall(_prev) end\ local ds, g = _G.dumperState, _G.game\ if type(ds) ~= \"table\" or type(g) ~= \"table\" then return end\ pcall(function()\ local mkt = g:GetService(\"MarketplaceService\")\ if mkt then\ rawset(mkt, \"GetProductInfo\", function(_, id)\ return { Name=\"Untitled\", Description=\"\",\ Creator={Id=1,Name=\"Roblox\",CreatorType=\"User\"},\ CreatorType=\"User\", CreatorId=1,\ AssetId=tonumber(id) or 0, IsForSale=false,\ ProductType=\"User Product\", PriceInRobux=0,\ Updated=\"1970-01-01T00:00:00.000Z\",\ Created=\"1970-01-01T00:00:00.000Z\",\ IconImageAssetId=0, IsPublicDomain=true,\ Sales=0, Remaining=0 }\ end)\ end\ end)\ end\ end\ \ do\ local s_mt = getmetatable(\"\")\ if type(s_mt) == \"table\" and not s_mt.__metatable then\ s_mt.__metatable = \"The metatable is locked\"\ end\ end\ \ local _real_load = load or loadstring\ \ local function follow_url_if_any(path)\ local f = io.open(path, \"rb\"); if not f then return end\ local content = f:read(\"*a\"); f:close()\ local url = content and content:match(\"^%s*(https?://[^%s]+)%s*$\")\ if not url then return end\ io.stderr:write(\"[bypass] payload is URL, following: \" .. url .. \"\\n\")\ local cmd = 'curl -fsSL --max-time 30 ' ..\ \"'\" .. url:gsub(\"'\", \"'\\\\''\") .. \"'\"\ local p = io.popen(cmd, \"r\")\ if not p then\ io.stderr:write(\"[bypass] could not spawn curl\\n\"); return\ end\ local body = p:read(\"*a\"); p:close()\ if not body or #body == 0 then\ io.stderr:write(\"[bypass] empty response from URL\\n\"); return\ end\ local of = io.open(path, \"wb\"); of:write(body); of:close()\ io.stderr:write((\"[bypass] fetched %d bytes -> %s\\n\"):format(#body, path))\ end\ _G.__bypass_follow_url = follow_url_if_any\ \ local function dump_and_exit(payload, tag)\ local f = assert(io.open(OUTPUT, \"wb\"))\ f:write(payload); f:close()\ log((\"[%s] dumped %d bytes -> %s\"):format(tag, #payload, OUTPUT))\ follow_url_if_any(OUTPUT)\ os.exit(0)\ end\ \ local function install_runtime_hook()\ local function hook_loader(s, ...)\ if type(s) == \"string\" and #s >= 64 then dump_and_exit(s, \"loadstring-hook\") end\ return _real_load(s, ...)\ end\ loadstring = hook_loader\ load = hook_loader\ end\ \ local _capture_installed = false\ local function install_capture(opts)\ if _capture_installed then return end\ _capture_installed = true\ opts = opts or {}\ \ local out = assert(io.open(OUTPUT, \"wb\"))\ _G.__capture_out = out\ \ local function _q(v)\ local t = type(v)\ if t == \"string\" then return string.format(\"%q\", v)\ elseif t == \"number\" or t == \"boolean\" or t == \"nil\" then return tostring(v)\ else return \"\" .. tostring(v) end\ end\ local function _arglist(...)\ local n = select(\"#\", ...)\ local parts = {}\ for i = 1, n do parts[i] = _q(select(i, ...)) end\ return table.concat(parts, \", \")\ end\ local function _emit(stmt)\ out:write(stmt .. \"\\n\"); out:flush()\ end\ _G.__capture_emit = _emit\ \ local _real_print = print\ print = function(...)\ _emit(\"print(\" .. _arglist(...) .. \")\")\ return _real_print(...)\ end\ if warn then\ local _real_warn = warn\ warn = function(...) _emit(\"warn(\" .. _arglist(...) .. \")\"); return _real_warn(...) end\ end\ if io and io.write then\ local _real_iow = io.write\ io.write = function(...) _emit(\"io.write(\" .. _arglist(...) .. \")\"); return _real_iow(...) end\ end\ if not game then\ game = setmetatable({}, { __metatable = \"Instance\", __index = function(_, k)\ if k == \"HttpGet\" or k == \"HttpGetAsync\" then\ return function(_, url)\ _emit(\"game:\" .. k .. \"(\" .. _q(url) .. \")\")\ return \"\"\ end\ end\ return function() end\ end })\ end\ \ if math and math.random and not opts.skip_random_guard then\ local _orig_random = math.random\ local _trap = { [999999] = true, [888888] = true,\ [777777] = true, [123456] = true }\ math.random = function(a, b)\ local r\ if a and b then\ r = _orig_random(a, b)\ if a == 1 and b == 1000000 then\ for _ = 1, 7 do\ if not _trap[r] then return r end\ r = _orig_random(a, b)\ end\ return 1\ end\ elseif a then r = _orig_random(a)\ else r = _orig_random() end\ return r\ end\ end\ \ log(\"capture armed: print/warn/io.write -> \" .. OUTPUT\ .. \" (math.random anti-trap on)\")\ end\ \ -- ============================================================\ -- [DETECT-PATCH-EARLY] Checks 1, 3, 6a — patched early (debug/Enum are set before INPUT)\ -- ============================================================\ do\ local _dbgmt = (_native_debug and type(_native_debug.getmetatable) == \"function\")\ and _native_debug.getmetatable or nil\ \ -- ── CHECK 1: debug.info(largeLevel,'l') → nil ────────────────────────────\ if debug and type(debug.info) == \"function\" then\ local _orig_di = debug.info\ debug.info = function(arg1, what)\ if type(arg1) == \"number\" and arg1 > 200 then return nil end\ return _orig_di(arg1, what)\ end\ end\ \ -- ── CHECK 3: debug.getinfo(coroutine.wrap).what == 'C' ───────────────────\ if debug and type(debug.getinfo) == \"function\" then\ local _orig_dgi = debug.getinfo\ local _c_set = {}\ for _, lib in ipairs({\"coroutine\",\"string\",\"table\",\"math\",\"io\",\"os\",\"bit32\",\"utf8\"}) do\ local L = rawget(_G, lib)\ if type(L) == \"table\" then\ for _, v in pairs(L) do\ if type(v) == \"function\" then _c_set[v] = true end\ end\ end\ end\ for _, fn in ipairs({print,tostring,tonumber,type,select,pcall,xpcall,\ error,assert,ipairs,pairs,next,rawget,rawset,\ rawequal,setmetatable,getmetatable,require,\ collectgarbage,load}) do\ if type(fn) == \"function\" then _c_set[fn] = true end\ end\ debug.getinfo = function(arg1, what)\ local r = _orig_dgi(arg1, what)\ if r and type(r)==\"table\" and type(arg1)==\"function\" and _c_set[arg1] then\ r.what = \"C\"; r.source = \"[C]\"; r.short_src = \"[C]\"\ end\ return r\ end\ end\ \ -- ── CHECK 6a: tostring(Enum.X.Y.EnumType) → \"X\" not \"Enum.X\" ────────────\ local function _fix_enum_type_ts(et)\ local et_mt = _dbgmt and _dbgmt(et)\ if type(et_mt) == \"table\" and not et_mt.__dp_stripped then\ et_mt.__dp_stripped = true\ local _old = et_mt.__tostring\ if type(_old) == \"function\" then\ et_mt.__tostring = function(self)\ return (_old(self)):gsub(\"^Enum%.\", \"\")\ end\ end\ end\ end\ for _, en in ipairs({\"PartType\",\"Material\",\"NormalId\",\"UserInputType\",\ \"KeyCode\",\"UserInputState\",\"SortOrder\",\"Font\"}) do\ local ok2, et = pcall(function() return _G.Enum[en] end)\ if ok2 and type(et) == \"table\" then _fix_enum_type_ts(et) end\ end\ if _dbgmt then\ local _emt = _dbgmt(_G.Enum)\ if type(_emt) == \"table\" then\ local _orig_idx = _emt.__index\ if type(_orig_idx) == \"function\" then\ _emt.__index = function(t, k)\ local et = _orig_idx(t, k)\ if type(et) == \"table\" then _fix_enum_type_ts(et) end\ return et\ end\ end\ end\ end\ \ io.stderr:write(\"[DETECT-PATCH-EARLY] checks 1/3/6a installed\\n\")\ end\ -- ============================================================\ -- [/DETECT-PATCH-EARLY]\ -- ============================================================\ \ if not INPUT then\ install_runtime_hook()\ return\ end\ \ if _G.dumperState then\ do\ local function _make_env_proxy(label)\ return setmetatable({}, {\ __index = _G,\ __newindex = function(_, k, v) rawset(_G, k, v) end,\ __metatable = \"The metatable is locked\",\ __tostring = function() return label end,\ })\ end\ local _genv = _make_env_proxy(\"getgenv\")\ local _renv = _make_env_proxy(\"getrenv\")\ _G.getgenv = function() return _genv end\ _G.getrenv = function() return _renv end\ end\ \ local function _looksFake(name)\ local n = tostring(name or \"\")\ if n == \"\" then return true end\ if n:find(\"Fake\") or n:find(\"EnvCheck\") or n:find(\"FakeEnv\") then\ return true\ end\ if #n >= 12 and n:find(\"0000\") then return true end\ if n:find(\"XXXXX\") or n:find(\"ZZZZZ\") or n:find(\"AAAAA\") then return true end\ if n:match(\"[A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9]$\") and\ not n:match(\"[a-z]\") then return true end\ if n:find(\"CheckService\") or n:find(\"TestService\") or n:find(\"AntiTamper\") then\ return true\ end\ if n:match(\"^__?[A-Z][A-Z_]+$\") then return true end\ return false\ end\ \ local function _installAntiTamperWrappers()\ if type(_G.Instance) == \"table\" and type(_G.Instance.new) == \"function\" then\ if not rawget(_G.Instance, \"__bypassWrapped\") then\ local _innerNew = _G.Instance.new\ _G.Instance.new = function(class, parent)\ if _looksFake(class) then\ error(\"Unable to create an Instance of type \\\"\"\ .. tostring(class) .. \"\\\"\", 2)\ end\ return _innerNew(class, parent)\ end\ rawset(_G.Instance, \"__bypassWrapped\", true)\ end\ end\ \ local g = _G.game\ local gtype = type(g)\ if gtype == \"table\" or gtype == \"userdata\" then\ local already = false\ local okFlag, flag = pcall(rawget, g, \"__bypassGSWrapped\")\ if okFlag and flag then already = true end\ if not already then\ local _origGS\ local okGet, gs = pcall(function() return g.GetService end)\ if okGet then _origGS = gs end\ local _gsWrap = function(self, name)\ if _looksFake(name) then\ error(\"'\" .. tostring(name)\ .. \"' is not a valid Service name\", 2)\ end\ local svc\ if type(_origGS) == \"function\" then\ svc = _origGS(self, name)\ end\ if svc == nil then\ svc = setmetatable({}, {\ __index = function()\ return function() return nil end\ end,\ })\ end\ if name == \"UserInputService\" then\ local svType = type(svc)\ if svType == \"table\" or svType == \"userdata\" then\ pcall(rawset, svc, \"IsKeyDown\",\ function(_self, _key) return false end)\ pcall(rawset, svc, \"IsMouseButtonPressed\",\ function(_self, _btn) return false end)\ pcall(rawset, svc, \"IsKeyPressed\",\ function(_self, _key) return false end)\ end\ end\ return svc\ end\ pcall(rawset, g, \"GetService\", _gsWrap)\ pcall(rawset, g, \"__bypassGSWrapped\", true)\ end\ end\ do\ local _ds = _G.dumperState\ local _inst = rawget(_G, \"Instance\")\ local _g2 = _G.game\ if type(_ds) == \"table\" and type(_ds.property_store) == \"table\"\ and type(_inst) == \"table\" and type(_inst.new) == \"function\"\ and (type(_g2) == \"table\" or type(_g2) == \"userdata\") then\ local ok_svc, svc = pcall(function()\ return _g2:GetService(\"SoundService\")\ end)\ if ok_svc and svc ~= nil\ and (type(svc) == \"table\" or type(svc) == \"userdata\") then\ local already = false\ local ok_k, kids = pcall(function()\ return svc:GetChildren()\ end)\ if ok_k and type(kids) == \"table\" then\ for _, k in ipairs(kids) do\ local p = type(_ds.property_store) == \"table\"\ and _ds.property_store[k]\ if type(p) == \"table\"\ and p.ClassName == \"AudioDeviceOutput\" then\ already = true; break\ end\ end\ end\ if not already then\ pcall(function()\ local ado = _inst.new(\"AudioDeviceOutput\", svc)\ if ado and type(_ds.property_store) == \"table\" then\ local p = _ds.property_store[ado]\ if type(p) == \"table\" then\ p.ClassName = \"AudioDeviceOutput\"\ p.Name = \"AudioDeviceOutput\"\ end\ end\ end)\ end\ end\ end\ end\ end\ \ _installAntiTamperWrappers()\ _G._bypassOnReset = _installAntiTamperWrappers\ \ local _PHYS_IO_OPEN = io and io.open\ local _PHYS_OS_GETENV = nil -- os.getenv is blocked by security sandbox; use __LR_* globals instead\ \ do\ local _ds = _G.dumperState\ local function _refresh_ds()\ local g = _G.dumperState\ if type(g) == \"table\" and type(g.property_store) == \"table\" then\ _ds = g\ end\ return _ds\ end\ if type(_ds) == \"table\" and type(_ds.property_store) == \"table\" then\ local GRAVITY = 196.2\ local DEF_SX, DEF_SY, DEF_SZ = 4, 1, 2\ \ local _phys = setmetatable({}, { __mode = \"k\" })\ \ local function _vec3(x, y, z)\ if type(_G.Vector3) == \"table\"\ and type(_G.Vector3.new) == \"function\" then\ return _G.Vector3.new(x, y, z)\ end\ return {\ X = x, Y = y, Z = z,\ Magnitude = math.sqrt(x*x + y*y + z*z),\ }\ end\ \ local function _cf(x, y, z)\ if type(_G.CFrame) == \"table\"\ and type(_G.CFrame.new) == \"function\" then\ return _G.CFrame.new(x, y, z)\ end\ return { X = x, Y = y, Z = z, Position = _vec3(x, y, z) }\ end\ \ local function _xyz(v)\ if type(v) ~= \"table\" then return 0, 0, 0 end\ return tonumber(v.X) or 0,\ tonumber(v.Y) or 0,\ tonumber(v.Z) or 0\ end\ \ local _PART_CLASSES = {\ Part = true, MeshPart = true, WedgePart = true,\ TrussPart = true, CornerWedgePart = true,\ SpawnLocation = true, SeatPart = true, Seat = true,\ VehicleSeat = true, BasePart = true,\ }\ local function _isPart(props)\ return props ~= nil and _PART_CLASSES[props.ClassName] == true\ end\ \ local function _alive(proxy)\ if type(_ds.parent_map) ~= \"table\" then return true end\ return _ds.parent_map[proxy] ~= nil\ end\ \ local function _sizeOf(props)\ local s = props.Size\ if type(s) == \"table\" then\ local x, y, z = _xyz(s)\ if x ~= 0 or y ~= 0 or z ~= 0 then\ return x, y, z\ end\ end\ return DEF_SX, DEF_SY, DEF_SZ\ end\ \ local function _posOf(props)\ local p = props.Position\ if type(p) == \"table\" then return _xyz(p) end\ local cf = props.CFrame\ if type(cf) == \"table\" then\ local cp = cf.Position\ if type(cp) == \"table\" then return _xyz(cp) end\ return _xyz(cf)\ end\ return 0, 5, 0\ end\ \ local function _writePos(proxy, props, x, y, z)\ props.Position = _vec3(x, y, z)\ props.CFrame = _cf(x, y, z)\ _ds.property_store[proxy] = props\ end\ \ local function _restingY(proxy, x, z, sx, sy, sz)\ local restY\ for other, oprops in pairs(_ds.property_store) do\ if other ~= proxy\ and _isPart(oprops)\ and oprops.Anchored == true\ and _alive(other) then\ local ox, oy, oz = _posOf(oprops)\ local osx, osy, osz = _sizeOf(oprops)\ local dx = math.abs(x - ox)\ local dz = math.abs(z - oz)\ if dx <= (sx + osx) * 0.5\ and dz <= (sz + osz) * 0.5 then\ local centerY = oy + osy * 0.5 + sy * 0.5\ if restY == nil or centerY > restY then\ restY = centerY\ end\ end\ end\ end\ return restY\ end\ \ local function _stepPhysics(dt)\ dt = tonumber(dt)\ if not dt or dt <= 0 then return end\ if dt > 30 then dt = 30 end\ _refresh_ds()\ if type(_ds) ~= \"table\" or type(_ds.property_store) ~= \"table\" then\ return\ end\ for proxy, props in pairs(_ds.property_store) do\ if _isPart(props)\ and props.Anchored ~= true\ and _alive(proxy) then\ local x, y, z = _posOf(props)\ local sx, sy, sz = _sizeOf(props)\ local st = _phys[proxy]\ if not st then\ st = { vy = 0 }\ _phys[proxy] = st\ end\ local newY = y + st.vy * dt\ - 0.5 * GRAVITY * dt * dt\ local newVy = st.vy - GRAVITY * dt\ local restY = _restingY(proxy, x, z, sx, sy, sz)\ if restY ~= nil and newY <= restY then\ newY = restY\ newVy = 0\ end\ st.vy = newVy\ _writePos(proxy, props, x, newY, z)\ end\ end\ end\ \ local function _wrap_wait(prev)\ if type(prev) ~= \"function\" then\ prev = function(t) return t or 0 end\ end\ return function(t)\ _stepPhysics(t)\ return prev(t)\ end\ end\ \ local function _installPhysWrappers()\ if type(_G.task) == \"table\"\ and not rawget(_G.task, \"__bypassPhysWrapped\") then\ _G.task.wait = _wrap_wait(_G.task.wait)\ rawset(_G.task, \"__bypassPhysWrapped\", true)\ end\ if not rawget(_G, \"__bypassPhysWaitWrapped\") then\ _G.wait = _wrap_wait(_G.wait)\ rawset(_G, \"__bypassPhysWaitWrapped\", true)\ end\ end\ \ _installPhysWrappers()\ \ local _prev_reset = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_reset) == \"function\" then\ pcall(_prev_reset)\ end\ if type(_G.task) == \"table\" then\ rawset(_G.task, \"__bypassPhysWrapped\", nil)\ end\ rawset(_G, \"__bypassPhysWaitWrapped\", nil)\ _ds = _G.dumperState or _ds\ _installPhysWrappers()\ end\ end\ end\ \ do\ local _orig_dump = (type(string) == \"table\" and rawget(string, \"dump\")) or string.dump\ if not _G._origStringDump then _G._origStringDump = _orig_dump end\ string.dump = function(fn, ...)\ error(\"attempt to dump given function\", 2)\ end\ iscclosure = function(f)\ if type(f) ~= \"function\" then return false end\ local ok = pcall(_G._origStringDump, f)\ return not ok\ end\ islclosure = function(f)\ if type(f) ~= \"function\" then return false end\ local ok = pcall(_G._origStringDump, f)\ return ok\ end\ \ local _real_G2 = _G\ local _mt2 = getmetatable(_G)\ if type(_mt2) == \"table\" and type(_mt2.__index) == \"table\" then\ _real_G2 = _mt2.__index\ end\ local _extras2 = _real_G2._bypassSafeDebugExtras or {}\ _extras2.getupvalue = function(fn, i) return nil end\ _extras2.getupvalues = function(fn) return {} end\ rawset(_real_G2, \"_bypassSafeDebugExtras\", _extras2)\ end\ \ do\ _G._EXTRA_PREPASSES = (type(rawget(_G, \"_EXTRA_PREPASSES\")) == \"table\")\ and rawget(_G, \"_EXTRA_PREPASSES\") or {}\ table.insert(_G._EXTRA_PREPASSES, function(code)\ code = code:gsub(\ \"(then%s+return)%s+while%s+true%s+do[^\\n]-end\",\ \"%1\")\ code = code:gsub(\ \"(;%s*return)%s+while%s+true%s+do[^\\n]-end\",\ \"%1\")\ code = code:gsub(\ \"(else%s+return)%s+while%s+true%s+do[^\\n]-end\",\ \"%1\")\ code = code:gsub(\ \"(then%s+return)%s+while%s+true%s+do%s*\\n[^\\n]*\\n?[^\\n]*\\n?%s*end\",\ \"%1\")\ code = code:gsub(\ \"^%s*while%s+true%s+do%s+end%s*$\",\ \"-- (stripped bare freeze trap)\", true)\ code = code:gsub(\ \"if%s+%(not%s+false%)%s+then%s+[^\\n]+\\n?%s*end\",\ \"-- (stripped always-true dtc block)\")\ code = code:gsub(\ \"^%s*assert%s*%(%s*false%s*,[^%)]+%)%s*$\",\ \"-- (stripped assert(false) dtc)\")\ return code\ end)\ end\ \ do\ _G._EXTRA_PREPASSES = (type(rawget(_G, \"_EXTRA_PREPASSES\")) == \"table\")\ and rawget(_G, \"_EXTRA_PREPASSES\") or {}\ table.insert(_G._EXTRA_PREPASSES, function(code)\ code = code:gsub(\ \"if%s*%(type%s*%([^%)]+%)%s*~=%s*[\\\"']table[\\\"']%)%s*then%s*error%([^%)]+%)%s*end\",\ \"-- (stripped type-guard)\")\ code = code:gsub(\ \"assert%s*%(%s*type%s*%([^%)]+%)%s*==%s*[\\\"']table[\\\"']%s*,[^%)]+%)\",\ \"-- (stripped assert type-guard)\")\ code = code:gsub(\ \"if%s*rawget%s*%(_G%s*,%s*[\\\"']pebc[\\\"']%)%s*~=%s*nil%s*then[^\\n]+\\n?%s*error[^\\n]+\\n?%s*end\",\ \"-- (stripped pebc probe)\")\ code = code:gsub(\"_G%.pebc%s*~=%s*nil\", \"false\")\ code = code:gsub(\"(syn%s*~=%s*nil)\", \"false\")\ code = code:gsub(\"(KRNL_ENV%s*~=%s*nil)\", \"false\")\ code = code:gsub(\"fluxus%s*~=%s*nil\", \"false\")\ return code\ end)\ end\ \ log(\"dumper-mode detected; returning to [internal] for dump_file\")\ return\ end\ \ local fin = assert(io.open(INPUT, \"rb\"), \"cannot open \" .. INPUT)\ local src = fin:read(\"*a\"); fin:close()\ log((\"loaded %s (%d bytes)\"):format(INPUT, #src))\ \ local function annotate_namaiki(s)\ local function find_section(pat, label, tip)\ local pos = s:find(pat, 1, true)\ if pos then\ io.stderr:write((\"[namaiki][SECTION] %-42s offset=%-6d WEAK=%s\\n\"):format(label, pos, tip))\ end\ end\ io.stderr:write(\"[namaiki] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"Protected by Namaiki\",\ \"L1: Header watermark\", \"none (decoy)\")\ find_section(\"Stop Deobfuscating\",\ \"L2: Decoy variable (3x repeated)\", \"none (noise)\")\ find_section(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",\ \"L3: Custom Base64 decoder fn\", \"hook return val when len>100\")\ find_section(\"{0,1,1,0}\",\ \"L4: Walsh-Hadamard XOR lookup table 256x256\", \"none (static table)\")\ find_section(\"(d+1)%256\",\ \"L5: RC4 PRGA keystream generator\", \"table.concat(m)=keystream\")\ find_section(\"(g+l[d]+t(v,d%w+1))%256\",\ \"L6: RC4 KSA key scheduling\", \"none (init only)\")\ find_section(\"lines=bV,source=bW,env=bu\",\ \"L7: Embedded Lua VM bytecode interpreter\", \"hook pcall(bs,...)\")\ find_section([[\"\\\\99\\\\105\\\\112\\\\104\\\\101\\\\114\"]],\ \"L8: Decrypt call -> cipher(obj, base64(blob))\", \"*** DUMP POINT UTAMA ***\")\ local fp = s:find(\"return%s+llII%w+%(llII%w+%(llII%w+,llII%w+%),getfenv%(0%)%)()\")\ if fp then\ io.stderr:write((\"[namaiki][SECTION] %-42s offset=%-6d WEAK=%s\\n\"):format(\ \"L9: Final VM.load(decrypt(k,p),env)()\", fp, \"*** PATCH DI SINI ***\"))\ end\ io.stderr:write(\"[namaiki] ============ END ANALYSIS ============\\n\")\ end\ \ local function detect(s)\ local head = s:sub(1, 256):lower()\ if head:find(\"virtual obfuscator\", 1, true) or head:find(\"by timmy\", 1, true) then\ return \"timmy\"\ end\ if head:find(\"vvmer\", 1, true) then return \"vvmer\" end\ if head:find(\"namaiki\", 1, true) then return \"namaiki\" end\ if s:find(\"yy==%d+%s+then%s+hoV\", 1, false) then return \"timmy\" end\ if s:find(\"{0,1,1,0}\", 1, true) and s:find([[\"\\\\99\\\\105\\\\112\\\\104\\\\101\\\\114\"]], 1, true) then\ return \"namaiki\"\ end\ if s:find(\"[=[SCRLUA|\", 1, true) then return \"scrlua\" end\ do\ local has_inc =\ s:find(\"passed%s*=%s*passed%s*+%s*1\") or\ s:find(\"passed%s*+=%s*1\")\ local has_probe = s:find(\"GetService\", 1, true)\ local has_gate = s:find(\"pcall%s*%(\") and\ s:find(\"if%s+[%w_]+%s+and%s+[%w_]+%s+then\")\ if has_inc and has_probe and has_gate then return \"guard\" end\ end\ do\ local has_grmt = s:find(\"getrawmetatable%s*%(\", 1, false)\ local has_ncall = s:find(\"__namecall\", 1, true)\ local has_sncm = s:find(\"setnamecallmethod%s*%(\", 1, false)\ local has_flag = s:find(\"flag%s*=%s*flag%s*+%s*1\", 1, false)\ or s:find(\"flag%s*+=\", 1, false)\ if has_grmt and has_ncall and has_sncm and has_flag then\ return \"namecall_detect\"\ end\ end\ do\ local cnt = 0\ for _ in s:gmatch(\"if%s+[^\\n]-then%s+while%s+true%s+do%s+end%s+end\") do\ cnt = cnt + 1\ if cnt >= 2 then break end\ end\ if cnt >= 2 then return \"trap\" end\ end\ do\ local sigs = 0\ for _, pat in ipairs({\ \"LuraphContinue\", \"__FLAMEDUMPER\", \"%.graphemes\",\ \"debug%s*and%s*debug%.gethook\", \"debug%.getinfo\",\ \"_VERSION%s*==\", \"getmetatable%s*%(%s*newproxy\",\ 'tostring%s*%(.-%)%s*[:.]find%s*%(%s*\"0x\"',\ }) do\ if s:find(pat) then sigs = sigs + 1 end\ end\ local has_if = s:find(\"if%s+[^\\n]+then\")\ if sigs >= 2 and has_if then return \"canary\" end\ end\ do\ local hdr = s:find(\"Luraph Obfuscator v1\", 1, true)\ local magic = s:find('\"\\\\27\\\\76\\\\80\\\\72', 1, true)\ or s:find(\"This VM only supports Luraph v1\", 1, true)\ if hdr or magic then return \"luraph\" end\ end\ do\ local has_marker = s:find(\"LuraphContinue\", 1, true)\ or s:find(\"LPH_NO_VIRTUALIZE\", 1, true)\ or s:find(\"LPH_OBFUSCATED\", 1, true)\ local has_shell = s:find(\"return%s+loadstring%s*%(\") ~= nil\ if has_marker and has_shell then return \"luraph_v92\" end\ end\ do\ local hdr = head:find(\"luafuscator\", 1, true)\ or s:find(\"Tamper Detected!\", 1, true)\ local lfr = s:find(\"_LFR\", 1, true) or s:find(\"_lfr\", 1, true)\ local tail = s:find(\",{},...)\", 1, true)\ if (hdr or lfr) and tail then return \"luafuscator\" end\ end\ do\ local hdr = head:find(\"moonsec\", 1, true)\ local idents = 0\ for _ in s:gmatch(\"[lI][lI1][lI1][lI1][lI1][lI1][lI1][lI1]+\") do\ idents = idents + 1\ if idents >= 8 then break end\ end\ local sm_v3 = s:find(\"while%s+true%s+do\") and\ s:find(\"if%s+[%w_]+%s*==%s*%d+%s+then\") and\ s:find(\"elseif%s+[%w_]+%s*==%s*%d+%s+then\")\ local char_count = 0\ for _ in s:gmatch(\"string%.char%(\") do\ char_count = char_count + 1\ if char_count >= 5 then break end\ end\ local sm_v2 = (char_count >= 5) and\ (s:find(\"loadstring%s*%(\") ~= nil) and\ (idents >= 4)\ if hdr or (idents >= 8 and sm_v3) or sm_v2 then\ return \"moonsec\"\ end\ end\ do\ local hdr = head:find(\"ironbrew\", 1, true)\ local big = s:find(\"{%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+\")\ local stream = s:find(\"string%.char%(\") and s:find(\"table%.concat\")\ local rl = s:find(\"return%s+[%w_]+%s*%(%s*[%w_]+%s*,%s*[%w_]+%s*%)%s*%(\")\ if hdr or (big and stream and rl) then return \"ironbrew\" end\ end\ do\ if head:find(\"prometheus\", 1, true) or s:find(\"LPH!\", 1, true) then\ return \"prometheus\"\ end\ if s:find(\"PrometheusBytecodeMagic\", 1, true) then return \"prometheus\" end\ end\ do\ local hdr = head:find(\"psu obfuscator\", 1, true) or\ head:find(\"psu%s*v%d\", 1, false)\ local b64 = s:find(\"[%w%+/=][%w%+/=][%w%+/=][%w%+/=]\" ..\ \"[%w%+/=][%w%+/=][%w%+/=][%w%+/=]\" ..\ \"[%w%+/=][%w%+/=][%w%+/=][%w%+/=]\" ..\ \"[%w%+/=][%w%+/=][%w%+/=][%w%+/=]\" ..\ \"[%w%+/=][%w%+/=][%w%+/=][%w%+/=]==?\")\ local ls = s:find(\"loadstring%s*%(\")\ if hdr and ls and b64 then return \"psu\" end\ end\ do\ local has_xor_loop =\ s:find(\"for%s+[%w_]+%s*=%s*1%s*,%s*#[%w_]+%s+do\") and\ (s:find(\"bxor%(\") or s:find(\"bit32%.bxor\") or\ s:find(\"bit%.bxor\"))\ local has_loader = s:find(\"loadstring%s*%(\") or s:find(\"\\nload%s*%(\")\ if has_xor_loop and has_loader then return \"xor_loader\" end\ end\ do\ local lhdr = head:find(\"lumora obfuscator\", 1, true)\ or head:find(\"lumoras-3jx\", 1, true)\ or (s:find(\"local bQ=table.concat\", 1, true) ~= nil\ and s:find(\"local l=k%(i,h%)\", 1, false) ~= nil\ and s:find(\"local m=L%(l%)\", 1, false) ~= nil)\ if lhdr then return \"lumora\" end\ end\ do\ local magic = s:find('\"\\\\27Lua', 1, true) or\ s:find('\"\\\\027Lua', 1, true) or\ s:find('\"\\\\27LJ', 1, true)\ if magic then return \"bytecode_loader\" end\ end\ do\ local has_el = s:find(\"EL%s*=%s*string%.sub\", 1, false)\ local has_d = s:find(\"D%s*=%s*setfenv\", 1, false)\ local has_q42 = s:find(\"q%[42%]%(%)\", 1, false) ~= nil\ local has_sent = s:find(\"6848\", 1, true) ~= nil\ or s:find(\"0[xX]a5a5\", 1, false) ~= nil\ local has_hfn = s:find(\"R:h4%(\", 1, false) ~= nil\ and s:find(\"R:z4%(\", 1, false) ~= nil\ and s:find(\"R:a4%(\", 1, false) ~= nil\ if (has_el and has_d) or (has_q42 and has_sent and has_hfn)\ or (has_d and has_hfn) then\ return \"ironbrew2\"\ end\ end\ do\ local is_vaq = s:find(\"VAQ Obfuscator\", 1, true)\ or s:find(\"_vaq, discord\", 1, true)\ or s:find(\"_bp5nxQostOWX6XP\", 1, true)\ if is_vaq then return \"vaq\" end\ end\ do\ local wad_url = s:find(\"wearedevs%.net\", 1, true) or\ s:find(\"WeAreDevs\", 1, true) or\ s:find(\"wrd%.do\", 1, true)\ local wad_check = s:find(\"CHECKIF%s*%(\") or\ s:find(\"CHECKWHILE%s*%(\") or\ s:find(\"COMPL%s*%(\") or s:find(\"COMPG%s*(\")\ local wad_pat = s:find(\"_WEAREDEVS\\b\", 1, false) or\ s:find(\"_WAD_INIT\", 1, true)\ if wad_url or wad_check or wad_pat then return \"wearedevs\" end\ end\ do\ local hdr = head:find(\"riptide\", 1, true)\ local has_riptide_vm = s:find(\"Riptide\", 1, true)\ or s:find(\"riptide_vm\", 1, true)\ or s:find(\"_riptide\", 1, true)\ if hdr or has_riptide_vm then return \"riptide\" end\ end\ do\ local hdr = head:find(\"cloudia\", 1, true)\ local has_cloudia = s:find(\"Cloudia\", 1, true)\ or s:find(\"CloudiaVM\", 1, true)\ or s:find(\"__cloudia\", 1, true)\ if hdr or has_cloudia then return \"cloudia\" end\ end\ do\ local hdr = head:find(\"acrylic\", 1, true)\ local has_acrylic = s:find(\"Acrylic\", 1, true)\ or s:find(\"AcrylicVM\", 1, true)\ if hdr or has_acrylic then return \"acrylic\" end\ end\ do\ local has_azur = s:find(\"AzurObfuscator\", 1, true)\ or s:find(\"azur_vm\", 1, true)\ or head:find(\"azur obfusc\", 1, true)\ if has_azur then return \"azur\" end\ end\ do\ local has_herc = s:find(\"HerculesVM\", 1, true)\ or s:find(\"__hercules\", 1, true)\ or head:find(\"hercules obfusc\", 1, true)\ if has_herc then return \"hercules\" end\ end\ do\ local has_nova = s:find(\"NovaObfuscator\", 1, true)\ or s:find(\"nova_vm_loader\", 1, true)\ or head:find(\"nova obfusc\", 1, true)\ if has_nova then return \"nova\" end\ end\ do\ local has_cipher = s:find(\"CipherObfuscator\", 1, true)\ or s:find(\"__cipher_vm\", 1, true)\ or head:find(\"cipher obfusc\", 1, true)\ if has_cipher then return \"cipher\" end\ end\ do\ local has_novaline = s:find(\"NovalineVM\", 1, true)\ or s:find(\"__novaline\", 1, true)\ or head:find(\"novaline\", 1, true)\ if has_novaline then return \"novaline\" end\ end\ do\ local has_alkali = s:find(\"AlkaliVM\", 1, true)\ or s:find(\"__alkali\", 1, true)\ or head:find(\"alkali obfusc\", 1, true)\ if has_alkali then return \"alkali\" end\ end\ do\ local magic_raw = s:sub(1, 4)\ if magic_raw == \"\\27Lua\" or magic_raw == \"\\27LJ\\1\" or magic_raw == \"\\27Lu\\82\" then\ return \"bytecode_raw\"\ end\ end\ do\ local two_letter_cnt = 0\ for _ in s:gmatch(\"%f[%a%d_][a-z][A-Z]%f[^%a%d_]\") do\ two_letter_cnt = two_letter_cnt + 1\ if two_letter_cnt >= 50 then break end\ end\ local has_rot = s:find(\"rrotate\", 1, true) or s:find(\"rshift\", 1, true)\ or s:find(\"lrotate\", 1, true) or s:find(\"lshift\", 1, true)\ local has_b64 = s:find(\"[A-Za-z0-9+/][A-Za-z0-9+/][A-Za-z0-9+/][A-Za-z0-9+/]\"\ ..\"[A-Za-z0-9+/][A-Za-z0-9+/][A-Za-z0-9+/][A-Za-z0-9+/]==\")\ if two_letter_cnt >= 50 and (has_rot or has_b64) then return \"skidded_vm\" end\ end\ do\ local has_gfe0 = s:find(\"getfenv%(0%)\", 1, false)\ local has_env_check = s:find(\"getfenv%(0%)%s*~=\", 1, false)\ or s:find(\"getfenv%(0%)%s*==%s*_G\", 1, false)\ if has_gfe0 and has_env_check then return \"env_guard\" end\ end\ do\ local has_obsidian = s:find(\"ObsidianVM\", 1, true)\ or s:find(\"__obsidian\", 1, true)\ or head:find(\"obsidian obfusc\", 1, true)\ if has_obsidian then return \"obsidian\" end\ end\ do\ local has_crypt_enc = s:find(\"crypt%.encrypt%(\", 1, false)\ or s:find(\"crypt%.decrypt%(\", 1, false)\ local has_ls = s:find(\"loadstring%s*%(\") or s:find(\"\\nload%s*%(\")\ if has_crypt_enc and has_ls then return \"crypt_loader\" end\ end\ do\ local is_sb = (s:find(\"script_builder\", 1, true) or\ s:find(\"ScriptBuilder\", 1, true) or\ (s:find(\"owner\", 1, true) and\ s:find(\"SayMessageRequest\", 1, true) and\ s:find(\"loadstring\", 1, true)))\ if is_sb then return \"script_builder\" end\ end\ do\ local ls_count = 0\ for _ in s:gmatch(\"loadstring%s*%(\") do\ ls_count = ls_count + 1\ if ls_count >= 4 then break end\ end\ if ls_count >= 4 then return \"multi_stage_loader\" end\ end\ do\ local hdr = head:find(\"ec2\", 1, true) or head:find(\"obfuscatedx\", 1, true)\ local has_ec2 = s:find(\"EC2_ENCODED\", 1, true)\ or s:find(\"ObfuscatedX\", 1, true)\ or s:find(\"_obfX\", 1, true)\ if hdr or has_ec2 then return \"ec2\" end\ end\ do\ local hdr = head:find(\"creatorx\", 1, true) or head:find(\"coldfusion obfusc\", 1, true)\ if hdr then return \"creatorx\" end\ end\ do\ local hdr = head:find(\"incognito\", 1, true)\ local has_incognito = s:find(\"Incognito\", 1, true)\ or s:find(\"IncognitoVM\", 1, true)\ if hdr or has_incognito then return \"incognito\" end\ end\ do\ local hdr = head:find(\"starfall\", 1, true)\ local has_sf = s:find(\"Starfall\", 1, true)\ or s:find(\"StarfallV\", 1, true)\ if hdr or has_sf then return \"starfall\" end\ end\ do\ local has_electron = s:find(\"ElectronVM\", 1, true)\ or s:find(\"_electron_\", 1, true)\ or head:find(\"electron\", 1, true)\ if has_electron then return \"electron\" end\ end\ do\ local has_seliware = s:find(\"Seliware\", 1, true)\ or s:find(\"SeliwareVM\", 1, true)\ or head:find(\"seliware\", 1, true)\ if has_seliware then return \"seliware\" end\ end\ do\ local has_prometheus = s:find(\"Prometheus\", 1, true)\ or s:find(\"ProtoVm\", 1, true)\ or s:find(\"ProtoEnv\", 1, true)\ or (s:find(\"NumberToString\", 1, true) and s:find(\"CharArray\", 1, true))\ if has_prometheus then return \"prometheus\" end\ end\ do\ local has_moonsec = s:find(\"Moonsec\", 1, true)\ or s:find(\"MoonsecVM\", 1, true)\ or head:find(\"moonsec\", 1, true)\ if has_moonsec then return \"moonsec\" end\ end\ do\ local has_psu = s:find(\"PSU_KEY\", 1, true)\ or s:find(\"PSUEncode\", 1, true)\ or head:find(\"psu\", 1, true)\ if has_psu then return \"psu\" end\ end\ do\ local has_iron = s:find(\"IronBrew\", 1, true)\ or s:find(\"Iron Brew\", 1, true)\ or (s:find(\"IRON_VM\", 1, true))\ if has_iron then return \"ironbrew\" end\ end\ do\ local has_oblivion = s:find(\"OblivionVM\", 1, true)\ or s:find(\"_oblivion_\", 1, true)\ or head:find(\"oblivion\", 1, true)\ if has_oblivion then return \"oblivion\" end\ end\ do\ local has_lmod = s:find(\"loadmodule%s*%(\", 1, false)\ or s:find(\"ExecuteScript%s*%(\", 1, false)\ local dense_b64 = s:match(\"[A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=][A-Za-z0-9+/=]==?$\")\ if has_lmod or (dense_b64 and s:find(\"luau\", 1, true)) then\ return \"bytecode_luau\"\ end\ end\ do\ local has_luraph = s:find(\"Luraph\", 1, true)\ or s:find(\"luraph_vm\", 1, true)\ or (s:find(\"_luraph\", 1, true) and s:find(\"LURAPH\", 1, true))\ if has_luraph then return \"luraph\" end\ end\ do\ local has_sheathe = s:find(\"SheatheVM\", 1, true)\ or s:find(\"__sheathe\", 1, true)\ or head:find(\"sheathe obfusc\", 1, true)\ if has_sheathe then return \"sheathe\" end\ end\ do\ local has_oxide = s:find(\"OxideVM\", 1, true)\ or s:find(\"__oxide\", 1, true)\ or (head:find(\"oxide\", 1, true) and not head:find(\"dioxide\", 1, true))\ if has_oxide then return \"oxide\" end\ end\ do\ local has_carbon = s:find(\"CarbonObf\", 1, true)\ or s:find(\"carbon_vm\", 1, true)\ or (head:find(\"carbon obfusc\", 1, true))\ if has_carbon then return \"carbon\" end\ end\ do\ local has_nihon = s:find(\"NihonVM\", 1, true)\ or s:find(\"__nihon\", 1, true)\ or head:find(\"nihon obfusc\", 1, true)\ if has_nihon then return \"nihon\" end\ end\ do\ local has_hydrogen = s:find(\"HydrogenVM\", 1, true)\ or s:find(\"_hydrogen_vm\", 1, true)\ or head:find(\"hydrogen obfusc\", 1, true)\ if has_hydrogen then return \"hydrogen\" end\ end\ do\ local has_trigon = s:find(\"TrigonVM\", 1, true)\ or s:find(\"__trigon\", 1, true)\ or head:find(\"trigon\", 1, true)\ if has_trigon then return \"trigon\" end\ end\ do\ local has_valyse = s:find(\"ValyseVM\", 1, true)\ or s:find(\"__valyse\", 1, true)\ or head:find(\"valyse\", 1, true)\ if has_valyse then return \"valyse\" end\ end\ do\ local has_sw = s:find(\"ScriptWare\", 1, true) or s:find(\"SCRIPTWARE\", 1, true)\ local has_cz = s:find(\"CocoZ\", 1, true) or s:find(\"coco_z_\", 1, true)\ if has_sw then return \"scriptware\" end\ if has_cz then return \"cocoz\" end\ end\ do\ local has_evon = s:find(\"EvonVM\", 1, true)\ or s:find(\"__evon\", 1, true)\ or head:find(\"evon\", 1, true)\ if has_evon then return \"evon\" end\ end\ do\ local arith_count = 0\ for _ in s:gmatch(\"%([%w_]+%s*[+%-]%s*[%w_]+%s*[%*%%]%s*[%w_]+%)\") do\ arith_count = arith_count + 1\ if arith_count >= 20 then break end\ end\ local single_loader = (s:find(\"loadstring%s*%(\") ~= nil or s:find(\"\\nload%s*%(\") ~= nil)\ local keyword_sparse = true\ local kw_count = 0\ for _ in s:gmatch(\"%f[%a]if%f[%A]\") do kw_count = kw_count + 1 end\ if kw_count > 30 then keyword_sparse = false end\ if arith_count >= 20 and single_loader and keyword_sparse then\ return \"arithmetic_obf\"\ end\ end\ -- ── ByteMe obfuscator (various versions) ─────────────────────────────\ do\ local has_byteme = s:find(\"ByteMe\", 1, true)\ or s:find(\"ByteMeVM\", 1, true)\ or s:find(\"ByteMe_v\", 1, true)\ or head:find(\"byteme\", 1, true)\ or (s:find(\"bm_key\", 1, true) and s:find(\"bm_decrypt\", 1, true))\ or (s:find(\"ByteMe_Obfuscated\", 1, true))\ if has_byteme then return \"byteme\" end\ end\ -- ── LuaShield ────────────────────────────────────────────────────────\ do\ local has_ls = s:find(\"LuaShield\", 1, true)\ or s:find(\"LuaShieldVM\", 1, true)\ or s:find(\"LuaShield_v\", 1, true)\ or head:find(\"luashield\", 1, true)\ or (s:find(\"ls_key\", 1, true) and s:find(\"ls_decrypt\", 1, true))\ if has_ls then return \"luashield\" end\ end\ -- ── Codex VM (executor-bundled obfuscation layer) ────────────────────\ do\ local has_codex = s:find(\"CodexVM\", 1, true)\ or s:find(\"CODEX_VM\", 1, true)\ or (s:find(\"codex_key\", 1, true) and s:find(\"codex_env\", 1, true))\ or head:find(\"codex obfusc\", 1, true)\ if has_codex then return \"codex_vm\" end\ end\ -- ── Shuriken obfuscator ───────────────────────────────────────────────\ do\ local has_shuriken = s:find(\"ShurikenVM\", 1, true)\ or s:find(\"Shuriken_\", 1, true)\ or head:find(\"shuriken\", 1, true)\ or (s:find(\"shuriken_key\", 1, true))\ if has_shuriken then return \"shuriken\" end\ end\ -- ── Nexus obfuscator ─────────────────────────────────────────────────\ do\ local has_nexus = s:find(\"NexusVM\", 1, true)\ or s:find(\"__nexus_vm\", 1, true)\ or head:find(\"nexus obfusc\", 1, true)\ if has_nexus then return \"nexus\" end\ end\ -- ── AztupBrew (IronBrew fork) ─────────────────────────────────────────\ do\ local has_aztup = s:find(\"AztupBrew\", 1, true)\ or s:find(\"AztupVM\", 1, true)\ or (s:find(\"aztup\", 1, true) and s:find(\"IronBrew\", 1, true))\ if has_aztup then return \"aztupbrew\" end\ end\ -- ── WrapperX / generic wrap-loader ───────────────────────────────────\ do\ local has_wx = s:find(\"WrapperX\", 1, true)\ or (s:find(\"__wrapper_key\", 1, true) and s:find(\"__wrapper_env\", 1, true))\ if has_wx then return \"wrapperx\" end\ end\ -- ── Acedia obfuscator ────────────────────────────────────────────────\ do\ local has_acedia = s:find(\"AcediaVM\", 1, true)\ or s:find(\"acedia_obf\", 1, true)\ or head:find(\"acedia\", 1, true)\ if has_acedia then return \"acedia\" end\ end\ -- ── Hyperion (Byfron) protection layer ───────────────────────────────\ do\ local has_hyp = s:find(\"HyperionProtect\", 1, true)\ or s:find(\"ByfronVM\", 1, true)\ or s:find(\"HYPERION_KEY\", 1, true)\ or head:find(\"hyperion\", 1, true)\ if has_hyp then return \"hyperion\" end\ end\ -- ── Opsec / OpSecVM ──────────────────────────────────────────────────\ do\ local has_opsec = s:find(\"OpSecVM\", 1, true)\ or s:find(\"__opsec_\", 1, true)\ or head:find(\"opsec obfusc\", 1, true)\ if has_opsec then return \"opsec\" end\ end\ -- ── Lumin obfuscator ─────────────────────────────────────────────────\ do\ local has_lumin = s:find(\"LuminVM\", 1, true)\ or s:find(\"Lumin_obf\", 1, true)\ or head:find(\"lumin obfusc\", 1, true)\ if has_lumin then return \"lumin\" end\ end\ -- ── Roblox Luau Bytecode (raw .luau compiled binary) ─────────────────\ do\ if #s > 4 and s:sub(1,4) == \"\\27Lua\" then return \"luac_bytecode\" end\ if #s > 3 and s:sub(1,3) == \"RSB\" then return \"roblox_bytecode\" end\ end\ -- ── Dense-number-array loader (common generic obf pattern) ────────────\ do\ local n_count = 0\ for _ in s:gmatch(\"%d+,\") do n_count = n_count + 1 end\ local has_load = s:find(\"load%s*%(\") ~= nil or s:find(\"loadstring%s*%(\") ~= nil\ local has_fn = s:find(\"function%s*%(\") ~= nil\ if n_count > 200 and has_load and has_fn then return \"number_array_loader\" end\ end\ return \"unknown\"\ end\ \ local _CANARY_SIGS = {\ { pat = \"LuraphContinue\", weak = \"Luraph deobfuscator presence flag\" },\ { pat = \"__FLAMEDUMPER\", weak = \"FlameDumper presence flag\" },\ { pat = \"%.graphemes\", weak = \"Roblox utf8.graphemes (Roblox-only)\" },\ { pat = \"debug%s*and%s*debug%.gethook\", weak = \"active debug.sethook hook detector\" },\ { pat = \"debug%.getinfo\", weak = \"stack-frame / function probe\" },\ { pat = \"_VERSION%s*==\", weak = \"Lua version check (e.g. 'Lua 5.3')\" },\ { pat = \"getmetatable%s*%(%s*newproxy\", weak = \"Roblox locked-metatable string match\" },\ { pat = 'tostring%s*%(.-%)%s*[:.]find%s*%(%s*\"0x\"',\ weak = \"C-fn fingerprint (function: 0x...)\" },\ { pat = \"printidentity%s*%()\", weak = \"executor identity probe (printidentity)\" },\ { pat = \"getidentity%s*%()\", weak = \"executor identity probe (getidentity)\" },\ { pat = \"getthreadidentity%s*%()\", weak = \"thread identity probe (getthreadidentity)\" },\ { pat = \"getreg%s*%()\", weak = \"registry probe (getreg)\" },\ { pat = \"getgc%s*%()\", weak = \"GC probe (getgc)\" },\ { pat = \"filtergc%s*%()\", weak = \"GC filter probe (filtergc)\" },\ { pat = \"hookfunction%s*%(\", weak = \"hook-function anti-tamper probe\" },\ { pat = \"newcclosure%s*%(\", weak = \"C-closure creation probe\" },\ { pat = \"iscclosure%s*%()\", weak = \"is-C-closure probe\" },\ { pat = \"islclosure%s*%()\", weak = \"is-Lua-closure probe\" },\ { pat = \"checkcaller%s*%()\", weak = \"caller-check probe (executor-only)\" },\ { pat = \"isexecutorclosure%s*%()\", weak = \"executor closure probe\" },\ { pat = \"isrobloxclosure%s*%()\", weak = \"Roblox closure probe\" },\ { pat = \"shared%s*%[%s*[\\\"']__executor\", weak = \"shared executor tag probe\" },\ { pat = \"game:GetService%s*%(.-%)%s*.ClassName%s*==\",\ weak = \"service ClassName equality probe\" },\ { pat = \"typeof%s*%(.-%)%s*==%s*[\\\"']Instance[\\\"']\",\ weak = \"typeof Instance probe\" },\ { pat = \"math%.huge%s*~=\", weak = \"math.huge inequality probe\" },\ { pat = \"pcall%s*%(rawget\", weak = \"rawget inside pcall anti-tamper\" },\ { pat = \"setmetatable%s*%(%s*{},\", weak = \"empty-table setmetatable probe\" },\ { pat = \"coroutine%.running%s*%()\", weak = \"coroutine.running probe\" },\ { pat = \"select%s*%(.-,%.%.%.%)\", weak = \"vararg length probe via select\" },\ { pat = \"string%.dump%s*%(\", weak = \"string.dump bytecode probe\" },\ { pat = \"getupvalue%s*%(\", weak = \"debug.getupvalue probe\" },\ { pat = \"setupvalue%s*%(\", weak = \"debug.setupvalue probe\" },\ { pat = \"identifyexecutor%s*%()\", weak = \"executor identity probe\" },\ { pat = \"getexecutorname%s*%()\", weak = \"executor name probe\" },\ { pat = \"pebc%s*%()\", weak = \"PEBC executor probe\" },\ { pat = \"is_synapse_function%s*%(\", weak = \"Synapse X closure probe\" },\ { pat = \"is_sirhurt_closure%s*%(\", weak = \"SirHurt closure probe\" },\ { pat = \"is_krnl_closure%s*%(\", weak = \"Krnl closure probe\" },\ { pat = \"is_fluxus_closure%s*%(\", weak = \"Fluxus closure probe\" },\ { pat = \"buffer%.create%s*%(\", weak = \"Roblox buffer API probe\" },\ { pat = \"buffer%.readu8%s*%(\", weak = \"Roblox buffer read probe\" },\ { pat = \"task%.cancel%s*%(\", weak = \"task.cancel executor probe\" },\ { pat = \"task%.synchronize%s*%()\", weak = \"task.synchronize Luau probe\" },\ { pat = \"utf8%.codepoint%s*%(\", weak = \"utf8.codepoint Roblox probe\" },\ { pat = \"utf8%.len%s*%(\", weak = \"utf8.len Roblox probe\" },\ { pat = \"RunService%.IsRunning%s*%()\", weak = \"RunService.IsRunning probe\" },\ { pat = \"RunService%.IsServer%s*%()\", weak = \"RunService.IsServer probe\" },\ { pat = \"RunService%.IsClient%s*%()\", weak = \"RunService.IsClient probe\" },\ { pat = \"RunService%.IsStudio%s*%()\", weak = \"RunService.IsStudio probe (always false)\" },\ { pat = \"pcall%s*%(function%s*%(%)%s+[^\\n]+os%.clock\",\ weak = \"timing probe in pcall\" },\ { pat = \"while%s+[%w_]+%s*<%s*%d+%s+do%s+[%w_]+%s*=%s*[%w_]+%s*+%s*1\",\ weak = \"tight counting loop DTC probe\" },\ { pat = \"table%.pack%s*%(%.%.%.%)\", weak = \"vararg table.pack probe\" },\ { pat = \"rawlen%s*%(\", weak = \"rawlen Luau extension probe\" },\ { pat = \"rawequal%s*%(\", weak = \"rawequal probe\" },\ { pat = \"#?_G%s*==%s*%d+\", weak = \"_G size numeric assertion\" },\ { pat = \"syn%.request%s*%(\", weak = \"Synapse X request probe\" },\ { pat = \"krnl%.request%s*%(\", weak = \"Krnl HTTP request probe\" },\ { pat = \"fluxus%.request%s*%(\", weak = \"Fluxus HTTP request probe\" },\ { pat = \"getfenv%s*%(%s*0%s*%)\", weak = \"getfenv(0) global env probe\" },\ { pat = \"setfenv%s*%(%s*0%s*,\", weak = \"setfenv(0,...) env replacement probe\" },\ { pat = \"rawget%s*%(%s*_G%s*,\", weak = \"rawget(_G,...) probe\" },\ { pat = \"table%.getn%s*%(\", weak = \"table.getn deprecated probe\" },\ { pat = \"table%.foreach%s*%(\", weak = \"table.foreach deprecated probe\" },\ { pat = \"string%.gmatch%s*%(.-,.-%.%-%.%-\",\ weak = \"string lazy-match security probe\" },\ { pat = \"getrunningscripts%s*%()\", weak = \"running scripts enumeration probe\" },\ { pat = \"getsignal%s*%(\", weak = \"signal introspection probe\" },\ { pat = \"gethui%s*%()\", weak = \"CoreGui HUI probe\" },\ { pat = \"getnamecallmethod%s*%()\", weak = \"namecall method probe\" },\ { pat = \"setnamecallmethod%s*%(\", weak = \"namecall method setter probe\" },\ { pat = \"getspecialinfo%s*%(\", weak = \"special instance info probe\" },\ { pat = \"decompile%s*%(\", weak = \"bytecode decompile probe\" },\ { pat = \"getscriptbytecode%s*%(\", weak = \"script bytecode probe\" },\ { pat = \"getscripthash%s*%(\", weak = \"script hash probe\" },\ { pat = \"getscriptclosure%s*%(\", weak = \"script closure probe\" },\ { pat = \"getscriptfunction%s*%(\", weak = \"script function probe\" },\ { pat = \"isnetworkowner%s*%(\", weak = \"network ownership probe\" },\ { pat = \"saveinstance%s*%(\", weak = \"saveinstance probe\" },\ { pat = \"copyinstance%s*%(\", weak = \"copyinstance probe\" },\ { pat = \"getobjects%s*%(\", weak = \"getobjects probe\" },\ { pat = \"run_on_actor%s*%(\", weak = \"Luau actor parallel probe\" },\ { pat = \"pebc_execute%s*%(\", weak = \"pebc_execute parallel probe\" },\ { pat = \"getframetime%s*%()\", weak = \"frametime telemetry probe\" },\ { pat = \"getfps%s*%()\", weak = \"FPS telemetry probe\" },\ { pat = \"getping%s*%()\", weak = \"ping telemetry probe\" },\ { pat = \"getclientid%s*%()\", weak = \"client ID probe\" },\ { pat = \"consolecreate%s*%()\", weak = \"console create probe\" },\ { pat = \"consoletitle%s*%(\", weak = \"console title probe\" },\ { pat = \"getloadstring%s*%()\", weak = \"getloadstring probe\" },\ { pat = \"checksupport%s*%(\", weak = \"executor feature support probe\" },\ { pat = \"issupported%s*%(\", weak = \"executor feature issupported probe\" },\ { pat = \"getfeatureflag%s*%(\", weak = \"feature flag probe\" },\ { pat = \"compare_any%s*%(\", weak = \"compare_any executor probe\" },\ { pat = \"buffer%.writeu8%s*%(\", weak = \"Roblox buffer write probe\" },\ { pat = \"buffer%.writei8%s*%(\", weak = \"Roblox buffer write probe (signed)\" },\ { pat = \"buffer%.len%s*%(\", weak = \"Roblox buffer length probe\" },\ { pat = \"buffer%.fromstring%s*%(\", weak = \"Roblox buffer fromstring probe\" },\ { pat = \"buffer%.tostring%s*%(\", weak = \"Roblox buffer tostring probe\" },\ { pat = \"string%.pack%s*%(\", weak = \"string.pack Lua 5.3 probe\" },\ { pat = \"string%.unpack%s*%(\", weak = \"string.unpack Lua 5.3 probe\" },\ { pat = \"string%.packsize%s*%(\", weak = \"string.packsize Lua 5.3 probe\" },\ { pat = \"bit32%.countlz%s*%(\", weak = \"Luau countlz extension probe\" },\ { pat = \"bit32%.countrz%s*%(\", weak = \"Luau countrz extension probe\" },\ { pat = \"getscriptclosure%s*%(\", weak = \"script closure probe\" },\ { pat = \"getscriptfunc%s*%(\", weak = \"script function probe\" },\ { pat = \"getscriptsource%s*%(\", weak = \"script source dump probe\" },\ { pat = \"getscriptbytecode%s*%(\", weak = \"script bytecode dump probe\" },\ { pat = \"require%s*%(%s*%-\", weak = \"negative require() module ID probe\" },\ { pat = \"cloneref%s*%(\", weak = \"instance reference clone probe\" },\ { pat = \"compareinstances%s*%(\", weak = \"instance comparison probe\" },\ { pat = \"getrendersteppedlist%s*%()\", weak = \"render stepped list probe\" },\ { pat = \"loadlibrary%s*%(\", weak = \"FE/exploit loadlibrary probe\" },\ { pat = \"task%.wait%s*%(%-\", weak = \"negative task.wait probe\" },\ { pat = \"game%.JobId%s*~=%s*[\\\"'][\\\"']\", weak = \"live-game JobId non-empty probe\" },\ { pat = \"game%.GameId%s*~=%s*0\", weak = \"live-game GameId probe\" },\ { pat = \"game%.PlaceId%s*~=%s*0\", weak = \"live-place PlaceId probe\" },\ { pat = \"workspace%.DistributedGameTime%s*>\", weak = \"distributed game time probe\" },\ { pat = \"shared%.__antidump\", weak = \"shared anti-dump flag probe\" },\ { pat = \"shared%.__nodump\", weak = \"shared no-dump flag probe\" },\ { pat = \"rawget%s*%(%s*shared%s*,\", weak = \"rawget(shared,...) probe\" },\ { pat = \"getfenv%s*%(%s*1%s*%)\", weak = \"getfenv(1) current env probe\" },\ { pat = \"getfenv%s*%(%s*2%s*%)\", weak = \"getfenv(2) caller env probe\" },\ { pat = \"debug%.traceback%s*%(\", weak = \"debug.traceback stack-frame probe\" },\ { pat = \"debug%.info%s*%(\", weak = \"debug.info Luau probe\" },\ { pat = \"debug%.getlocal%s*%(\", weak = \"debug.getlocal local variable probe\" },\ { pat = \"debug%.sethook%s*%(\", weak = \"debug.sethook hook probe\" },\ { pat = \"debug%.gethook%s*%()\", weak = \"debug.gethook active hook probe\" },\ { pat = \"os%.clock%s*%()\", weak = \"timing / performance probe\" },\ { pat = \"os%.time%s*%()\", weak = \"epoch time probe\" },\ { pat = \"collectgarbage%s*%(\", weak = \"GC probe via collectgarbage\" },\ { pat = \"gcinfo%s*%()\", weak = \"GC memory probe\" },\ { pat = \"table%.move%s*%(\", weak = \"table.move Lua 5.3 probe\" },\ { pat = \"table%.pack%s*%(%s*%)\", weak = \"table.pack() vararg probe\" },\ { pat = \"table%.unpack%s*%(\", weak = \"table.unpack alias probe\" },\ { pat = \"string%.pack%s*%(\", weak = \"string.pack binary encode probe\" },\ { pat = \"string%.unpack%s*%(\", weak = \"string.unpack binary decode probe\" },\ { pat = \"string%.packsize%s*%(\", weak = \"string.packsize probe\" },\ { pat = \"bit32%.btest%s*%(\", weak = \"bit32.btest probe\" },\ { pat = \"bit32%.rshift%s*%(\", weak = \"bit32.rshift probe\" },\ { pat = \"bit32%.lshift%s*%(\", weak = \"bit32.lshift probe\" },\ { pat = \"bit32%.band%s*%(\", weak = \"bit32.band probe\" },\ { pat = \"bit32%.bor%s*%(\", weak = \"bit32.bor probe\" },\ { pat = \"bit32%.bxor%s*%(\", weak = \"bit32.bxor probe\" },\ { pat = \"utf8%.charpattern\", weak = \"utf8.charpattern Luau string probe\" },\ { pat = \"utf8%.codes%s*%(\", weak = \"utf8.codes iterator probe\" },\ { pat = \"utf8%.char%s*%(\", weak = \"utf8.char probe\" },\ { pat = \"utf8%.graphemes%s*%(\", weak = \"utf8.graphemes Roblox-only probe\" },\ { pat = \"coroutine%.close%s*%(\", weak = \"coroutine.close Lua 5.4 probe\" },\ { pat = \"coroutine%.isyieldable%s*%()\", weak = \"coroutine.isyieldable probe\" },\ { pat = \"xpcall%s*%(.-,.-,\", weak = \"xpcall with extra args Lua 5.2+ probe\" },\ { pat = \"error%s*%(%s*{\", weak = \"error() with table object probe\" },\ { pat = \"__index%s*=%s*function%s*%(%s*self\", weak = \"OOP __index method probe\" },\ { pat = \"__newindex%s*=%s*function\", weak = \"__newindex metafield probe\" },\ { pat = \"__namecall%s*=%s*function\", weak = \"__namecall metafield probe (Luau)\" },\ { pat = \"is_riptide_closure%s*%(\", weak = \"Riptide closure probe\" },\ { pat = \"is_cloudia_closure%s*%(\", weak = \"Cloudia closure probe\" },\ { pat = \"is_carbon_closure%s*%(\", weak = \"Carbon closure probe\" },\ { pat = \"is_nihon_closure%s*%(\", weak = \"Nihon closure probe\" },\ { pat = \"is_electron_closure%s*%(\", weak = \"Electron closure probe\" },\ { pat = \"is_seliware_closure%s*%(\", weak = \"Seliware closure probe\" },\ { pat = \"getgenv%s*%(%)%s*%.%s*[%w_]+%s*=\", weak = \"genv property assignment probe\" },\ { pat = \"getrenv%s*%(%)%s*%[\", weak = \"renv rawindex probe\" },\ { pat = \"getmemory%s*%(\", weak = \"memory usage probe (getmemory)\" },\ { pat = \"printidentity%s*%(\", weak = \"executor identity printout probe\" },\ { pat = \"isnetworkowner%s*%(\", weak = \"network ownership probe\" },\ { pat = \"gethiddenproperty%s*%(\", weak = \"hidden property probe\" },\ { pat = \"sethiddenproperty%s*%(\", weak = \"hidden property setter probe\" },\ { pat = \"saveinstance%s*%(\", weak = \"instance serializer probe\" },\ { pat = \"messagebox%s*%(\", weak = \"Windows MessageBox probe\" },\ { pat = \"setwindowtitle%s*%(\", weak = \"window title setter probe\" },\ { pat = \"getwindowsize%s*%(\", weak = \"window size probe\" },\ { pat = \"setfpscap%s*%(\", weak = \"FPS cap setter probe\" },\ { pat = \"getfpscap%s*%()\", weak = \"FPS cap getter probe\" },\ { pat = \"lz4compress%s*%(\", weak = \"LZ4 compress probe\" },\ { pat = \"lz4decompress%s*%(\", weak = \"LZ4 decompress probe\" },\ { pat = \"crypt%.encrypt%s*%(\", weak = \"crypt.encrypt probe\" },\ { pat = \"crypt%.decrypt%s*%(\", weak = \"crypt.decrypt probe\" },\ { pat = \"crypt%.base64encode%s*%(\", weak = \"crypt.base64encode probe\" },\ { pat = \"crypt%.hash%s*%(\", weak = \"crypt.hash probe\" },\ { pat = \"syn%.crypt%s*%.\", weak = \"Synapse crypt namespace probe\" },\ { pat = \"WebSocket%.connect%s*%(\", weak = \"WebSocket.connect probe\" },\ { pat = \"queue_on_teleport%s*%(\", weak = \"queue on teleport probe\" },\ { pat = \"setclipboard%s*%(\", weak = \"setclipboard probe\" },\ { pat = \"getclipboard%s*%()\", weak = \"getclipboard probe\" },\ { pat = \"cache%.invalidate%s*%(\", weak = \"cache.invalidate probe\" },\ { pat = \"cache%.replace%s*%(\", weak = \"cache.replace probe\" },\ { pat = \"cache%.iscached%s*%(\", weak = \"cache.iscached probe\" },\ { pat = \"fireclickdetector%s*%(\", weak = \"fireclickdetector probe\" },\ { pat = \"firetouchinterest%s*%(\", weak = \"firetouchinterest probe\" },\ { pat = \"fireproximityprompt%s*%(\", weak = \"fireproximityprompt probe\" },\ { pat = \"firesignal%s*%(\", weak = \"firesignal probe\" },\ { pat = \"getconnections%s*%(\", weak = \"getconnections probe\" },\ { pat = \"getscripts%s*%()\", weak = \"getscripts probe\" },\ { pat = \"getinstances%s*%()\", weak = \"getinstances probe\" },\ { pat = \"getnilinstances%s*%()\", weak = \"getnilinstances probe\" },\ { pat = \"getsimulationradius%s*%()\", weak = \"getsimulationradius probe\" },\ { pat = \"setsimulationradius%s*%(\", weak = \"setsimulationradius probe\" },\ { pat = \"run_on_actor%s*%(\", weak = \"run_on_actor parallel Luau probe\" },\ { pat = \"compare_any%s*%(\", weak = \"compare_any probe\" },\ { pat = \"cache_replace%s*%(\", weak = \"cache_replace probe\" },\ { pat = \"cache_invalidate%s*%(\", weak = \"cache_invalidate probe\" },\ { pat = \"protect_gui%s*%(\", weak = \"protect_gui probe\" },\ { pat = \"unprotect_gui%s*%(\", weak = \"unprotect_gui probe\" },\ { pat = \"cloneref%s*%(\", weak = \"cloneref probe\" },\ { pat = \"compareinstances%s*%(\", weak = \"compareinstances probe\" },\ { pat = \"isvalidinstance%s*%(\", weak = \"isvalidinstance probe\" },\ { pat = \"filtergc%s*%(\", weak = \"filtergc GC walk probe\" },\ { pat = \"copyinstance%s*%(\", weak = \"copyinstance probe\" },\ { pat = \"getobjects%s*%(\", weak = \"getobjects probe\" },\ { pat = \"getmainthread%s*%()\", weak = \"getmainthread probe\" },\ { pat = \"getallthreads%s*%()\", weak = \"getallthreads probe\" },\ { pat = \"getactors%s*%()\", weak = \"getactors Luau parallel probe\" },\ { pat = \"getfunctionhash%s*%(\", weak = \"getfunctionhash probe\" },\ { pat = \"pebc_execute%s*%(\", weak = \"PEBC execute probe\" },\ { pat = \"isluau%s*%()\", weak = \"isluau runtime probe\" },\ { pat = \"comparefunctions%s*%(\", weak = \"comparefunctions probe\" },\ { pat = \"restorefunction%s*%(\", weak = \"restorefunction probe\" },\ { pat = \"restorefunctions%s*%()\", weak = \"restorefunctions probe\" },\ { pat = \"replaceclosure%s*%(\", weak = \"replaceclosure probe\" },\ { pat = \"getrendersteppedlist%s*%()\", weak = \"render stepped list probe\" },\ { pat = \"getconnectioncount%s*%(\", weak = \"connection count probe\" },\ { pat = \"getreplicatedstorage%s*%()\", weak = \"getreplicatedstorage probe\" },\ { pat = \"is_electron_function%s*%(\", weak = \"Electron function probe\" },\ { pat = \"is_seliware_function%s*%(\", weak = \"Seliware function probe\" },\ { pat = \"is_hydrogen_function%s*%(\", weak = \"Hydrogen function probe\" },\ { pat = \"is_oblivion_closure%s*%(\", weak = \"Oblivion closure probe\" },\ { pat = \"is_prometheus_closure%s*%(\", weak = \"Prometheus closure probe\" },\ { pat = \"is_ironbrew_closure%s*%(\", weak = \"IronBrew closure probe\" },\ { pat = \"is_trigon_closure%s*%(\", weak = \"Trigon closure probe\" },\ { pat = \"is_evon_closure%s*%(\", weak = \"Evon closure probe\" },\ { pat = \"is_valyse_closure%s*%(\", weak = \"Valyse closure probe\" },\ { pat = \"is_script_ware_closure%s*%(\", weak = \"ScriptWare closure probe\" },\ { pat = \"is_coco_z_closure%s*%(\", weak = \"CocoZ closure probe\" },\ { pat = \"is_dark_dex_closure%s*%(\", weak = \"DarkDex closure probe\" },\ { pat = \"shared%s*%.%s*[%w_]+%s*~=%s*nil\", weak = \"shared field presence probe\" },\ { pat = \"rawget%s*%(%s*game%s*,\", weak = \"rawget(game,...) engine probe\" },\ { pat = \"workspace%.FilteringEnabled\", weak = \"workspace.FilteringEnabled probe\" },\ { pat = \"game%.CreatorId%s*~=%s*0\", weak = \"game.CreatorId live probe\" },\ { pat = \"game%.VIPServerId%s*~=%s*[\\\"'][\\\"']\", weak = \"VIPServerId non-empty probe\" },\ { pat = \"workspace%.CurrentCamera%s*~=%s*nil\", weak = \"workspace.CurrentCamera probe\" },\ { pat = \"getframetime%s*%()\", weak = \"getframetime performance probe\" },\ { pat = \"getfps%s*%()\", weak = \"getfps performance probe\" },\ { pat = \"getping%s*%()\", weak = \"getping network probe\" },\ { pat = \"getclientid%s*%()\", weak = \"getclientid probe\" },\ { pat = \"getplaceid%s*%()\", weak = \"getplaceid probe\" },\ { pat = \"getjobid%s*%()\", weak = \"getjobid probe\" },\ { pat = \"getgameid%s*%()\", weak = \"getgameid probe\" },\ { pat = \"mouse_move%s*%(\", weak = \"mouse movement injection probe\" },\ { pat = \"mouse_click%s*%(\", weak = \"mouse click injection probe\" },\ { pat = \"key_press%s*%(\", weak = \"key press injection probe\" },\ { pat = \"checksupport%s*%(\", weak = \"checksupport executor feature probe\" },\ { pat = \"issupported%s*%(\", weak = \"issupported executor feature probe\" },\ { pat = \"is_byfron_closure%s*%(\", weak = \"Byfron anti-cheat closure probe\" },\ { pat = \"is_hyperion_closure%s*%(\", weak = \"Hyperion anti-cheat closure probe\" },\ { pat = \"is_medusa_closure%s*%(\", weak = \"Medusa closure probe\" },\ { pat = \"is_aurora_closure%s*%(\", weak = \"Aurora closure probe\" },\ { pat = \"is_zenith_closure%s*%(\", weak = \"Zenith closure probe\" },\ { pat = \"is_phantom_closure%s*%(\", weak = \"Phantom closure probe\" },\ { pat = \"is_dagon_closure%s*%(\", weak = \"Dagon closure probe\" },\ { pat = \"is_iris_closure%s*%(\", weak = \"Iris closure probe\" },\ { pat = \"filtergc%s*%(%s*\\\"function\\\"\", weak = \"filtergc function-type walk probe\" },\ { pat = \"filtergc%s*%(%s*\\\"table\\\"\", weak = \"filtergc table-type walk probe\" },\ { pat = \"filtergc%s*%(%s*\\\"userdata\\\"\", weak = \"filtergc userdata-type walk probe\" },\ { pat = \"debug%.getregistry%s*%()\", weak = \"debug.getregistry probe\" },\ { pat = \"debug%.setconstant%s*%(\", weak = \"debug.setconstant probe\" },\ { pat = \"debug%.getconstant%s*%(\", weak = \"debug.getconstant probe\" },\ { pat = \"debug%.setproto%s*%(\", weak = \"debug.setproto probe\" },\ { pat = \"debug%.getproto%s*%(\", weak = \"debug.getproto probe\" },\ { pat = \"debug%.getupvalue%s*%(\", weak = \"debug.getupvalue probe\" },\ { pat = \"debug%.setupvalue%s*%(\", weak = \"debug.setupvalue probe\" },\ { pat = \"hookmetamethod%s*%(\", weak = \"hookmetamethod probe\" },\ { pat = \"copyinstance%s*%(\", weak = \"copyinstance probe\" },\ { pat = \"getobjects%s*%(\", weak = \"getobjects probe\" },\ { pat = \"syn%.protect_gui%s*%(\", weak = \"Synapse protect_gui probe\" },\ { pat = \"syn%.unprotect_gui%s*%(\", weak = \"Synapse unprotect_gui probe\" },\ { pat = \"syn%.queue_on_teleport%s*%(\", weak = \"Synapse queue_on_teleport probe\" },\ { pat = \"isfile%s*%(\", weak = \"isfile filesystem probe\" },\ { pat = \"isfolder%s*%(\", weak = \"isfolder filesystem probe\" },\ { pat = \"makefolder%s*%(\", weak = \"makefolder filesystem probe\" },\ { pat = \"getscripthash%s*%(\", weak = \"getscripthash probe\" },\ { pat = \"decompile%s*%(%s*game\", weak = \"decompile game script probe\" },\ { pat = \"require%s*%(%s*game\", weak = \"require(game.xxx) module probe\" },\ { pat = \"getwsfield%s*%(\", weak = \"getwsfield workspace field probe\" },\ { pat = \"Instance%.new%s*%(%s*[\\\"']BasePart[\\\"']\", weak = \"BasePart creation probe\" },\ { pat = \"shared%s*%.%s*__synapseX\", weak = \"SynapseX shared namespace probe\" },\ { pat = \"shared%s*%.%s*__krnl\", weak = \"Krnl shared namespace probe\" },\ { pat = \"shared%s*%.%s*__fluxus\", weak = \"Fluxus shared namespace probe\" },\ { pat = \"pebc%s*~=%s*nil\", weak = \"PEBC presence check probe\" },\ { pat = \"rawget%s*%(%s*_G%s*,%s*[\\\"']pebc[\\\"']%)\",\ weak = \"rawget PEBC probe\" },\ { pat = \"isconnected%s*%()\", weak = \"isconnected signal probe\" },\ { pat = \"getscriptenv%s*%(\", weak = \"getscriptenv probe\" },\ { pat = \"getsenv%s*%(\", weak = \"getsenv script env probe\" },\ { pat = \"setthreadidentity%s*%(\", weak = \"setthreadidentity probe\" },\ { pat = \"getthreadidentity%s*%(\", weak = \"getthreadidentity probe\" },\ { pat = \"getfflag%s*%(\", weak = \"getfflag fast flags probe\" },\ { pat = \"setfflag%s*%(\", weak = \"setfflag fast flags probe\" },\ { pat = \"pebc_safe%s*%(\", weak = \"PEBC safe call probe\" },\ { pat = \"getloadstring%s*%()\", weak = \"getloadstring probe\" },\ { pat = \"getmainscript%s*%()\", weak = \"getmainscript probe\" },\ -- New obfuscator / executor detection patterns\ { pat = \"ByteMe%s*[.:]\", weak = \"ByteMe obfuscator API probe\" },\ { pat = \"ByteMeVM\", weak = \"ByteMe VM presence probe\" },\ { pat = \"LuaShield%s*[.:]\", weak = \"LuaShield obfuscator probe\" },\ { pat = \"CodexVM\", weak = \"Codex VM obfuscator probe\" },\ { pat = \"ShurikenVM\", weak = \"Shuriken VM probe\" },\ { pat = \"AztupBrew\", weak = \"AztupBrew obfuscator probe\" },\ { pat = \"HyperionProtect\", weak = \"Hyperion/Byfron protection probe\" },\ { pat = \"NexusVM\", weak = \"Nexus VM obfuscator probe\" },\ { pat = \"OblivionVM\", weak = \"Oblivion VM probe\" },\ { pat = \"ValyseVM\", weak = \"Valyse VM probe\" },\ { pat = \"EvonVM\", weak = \"Evon VM probe\" },\ { pat = \"SeliwareVM\", weak = \"Seliware VM probe\" },\ { pat = \"ElectronVM\", weak = \"Electron VM probe\" },\ { pat = \"OxideVM\", weak = \"Oxide VM probe\" },\ { pat = \"LuminVM\", weak = \"Lumin VM probe\" },\ -- DataStore / MemoryStore activity probes\ { pat = \"GetDataStore%s*%(\", weak = \"DataStore access probe\" },\ { pat = \"GetGlobalDataStore%s*%(\", weak = \"GlobalDataStore access probe\" },\ { pat = \"GetMemoryStore%s*%(\", weak = \"MemoryStore access probe\" },\ { pat = \"GetHashMap%s*%(\", weak = \"MemoryStoreHashMap access probe\" },\ { pat = \":SetAsync%s*%(\", weak = \"DataStore SetAsync write probe\" },\ { pat = \":GetAsync%s*%(\", weak = \"DataStore GetAsync read probe\" },\ -- Teleport / publish probes\ { pat = \"TeleportService%s*[.:]\", weak = \"TeleportService probe\" },\ { pat = \":TeleportAsync%s*%(\", weak = \"TeleportAsync probe\" },\ -- Policy / marketplace probes\ { pat = \"GetPolicyInfoForPlayer\", weak = \"PolicyService probe\" },\ { pat = \"UserOwnsGamePassAsync\", weak = \"gamepass ownership probe\" },\ -- UIS / input injection probes\ { pat = \"VirtualInputManager\", weak = \"virtual input manager probe\" },\ { pat = \":IsKeyDown%s*%(\", weak = \"UserInputService key state probe\" },\ -- Pathfinding probes\ { pat = \"CreatePath%s*%(\", weak = \"PathfindingService CreatePath probe\" },\ -- Text filtering probes\ { pat = \"FilterStringAsync%s*%(\", weak = \"TextService filter probe\" },\ -- Group probes\ { pat = \"GetGroupAsync%s*%(\", weak = \"GroupService GetGroupAsync probe\" },\ { pat = \"GetGroupsAsync%s*%(\", weak = \"GroupService GetGroupsAsync probe\" },\ -- Badge probes\ { pat = \"UserHasBadgeAsync%s*%(\", weak = \"BadgeService badge check probe\" },\ { pat = \"AwardBadge%s*%(\", weak = \"BadgeService award probe\" },\ }\ local function _line_has_canary_sig(line)\ for _, e in ipairs(_CANARY_SIGS) do\ if line:find(e.pat) then return e end\ end\ return nil\ end\ local function annotate_canary(s)\ io.stderr:write(\"[canary] ============ LAYER ANALYSIS ============\\n\")\ local i = 0\ for line in s:gmatch(\"[^\\n]+\") do\ local hit = _line_has_canary_sig(line)\ if hit then\ i = i + 1\ local short = line:gsub(\"^%s+\", \"\"):gsub(\"%s+$\", \"\")\ if #short > 60 then short = short:sub(1, 57) .. \"...\" end\ io.stderr:write((\"[canary][SIG %d] %-60s WEAK=%s\\n\"):format(i, short, hit.weak))\ end\ end\ local if_pos = s:find(\"if%s+[^\\n]+then\")\ if if_pos then\ io.stderr:write((\"[canary][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(\"Gating if-block (canary)\", if_pos,\ \"*** STRIP POINT: remove if-block + probe locals ***\"))\ end\ io.stderr:write(\"[canary] ============ END ANALYSIS ============\\n\")\ end\ \ local function _trap_weak(cond)\ local c = cond:lower()\ if c:find(\"os%.clock\") or c:find(\"tick\") or c:find(\"os%.time\") then\ return \"timing trap — pre-warm clock / stub the timer call\"\ end\ if c:find(\"tostring%(\") and c:find('\"0x\"') then\ return \"C-fn fingerprint — must keep native (do NOT wrap pcall/etc)\"\ end\ if c:find(\"debug%.gethook\") then\ return \"anti-hook trap — debug.gethook() must return nil/false\"\ end\ if c:find(\"debug%.getinfo\") then\ return \"stack-frame probe — debug.getinfo must look untouched\"\ end\ if c:find(\"pcall\") and c:find(\"xpcall\") then\ return \"pcall/xpcall identity check\"\ end\ if c:find(\"getfenv\") or c:find(\"getmetatable\") then\ return \"env/metatable tamper check\"\ end\ return \"generic trap — strip the if-block\"\ end\ local function annotate_trap(s)\ io.stderr:write(\"[trap] ============ LAYER ANALYSIS ============\\n\")\ local i = 0\ for cond in s:gmatch(\"if%s+([^\\n]-)%s+then%s+while%s+true%s+do%s+end%s+end\") do\ i = i + 1\ local short = cond:gsub(\"%s+\", \" \")\ if #short > 60 then short = short:sub(1, 57) .. \"...\" end\ io.stderr:write((\"[trap][CHECK %d] cond=%-60s WEAK=%s\\n\")\ :format(i, short, _trap_weak(cond)))\ end\ io.stderr:write(\"[trap] ============ END ANALYSIS ============\\n\")\ end\ \ local _GUARD_WEAK = {\ RunService = \"needs IsServer/IsClient/IsStudio() to return boolean\",\ TweenService = \"needs GetValue(t,style,dir) ~= 0.5 (linear easing)\",\ Players = \"LocalPlayer must be Instance or nil\",\ PhysicsService = \"needs typeof(svc)=='Instance'\",\ Lighting = \"needs Brightness as a number\",\ HttpService = \"needs JSONEncode/Decode methods\",\ }\ local function annotate_guard(s)\ io.stderr:write(\"[guard] ============ LAYER ANALYSIS ============\\n\")\ local i = 0\ for svc in s:gmatch('GetService%s*[,(]%s*game%s*,%s*\"([%w_]+)\"') do\ i = i + 1\ local weak = _GUARD_WEAK[svc] or \"needs typeof(svc)=='Instance'\"\ io.stderr:write((\"[guard][CHECK %d] service=%-16s WEAK=%s\\n\"):format(i, svc, weak))\ end\ if i == 0 then\ for svc in s:gmatch('GetService%s*%(%s*\"([%w_]+)\"') do\ i = i + 1\ local weak = _GUARD_WEAK[svc] or \"needs typeof(svc)=='Instance'\"\ io.stderr:write((\"[guard][CHECK %d] service=%-16s WEAK=%s\\n\"):format(i, svc, weak))\ end\ end\ local needed = s:match(\"local%s+needed%s*=%s*(%-?%d+)\")\ local fnname = s:match(\"local%s+function%s+([%w_]+)%s*%(%s*%)\") or \"verify\"\ if needed then\ io.stderr:write((\"[guard] threshold needed=%s, guarded fn=%s\\n\"):format(needed, fnname))\ end\ local pos = s:find(\"if%s+[%w_]+%s+and%s+[%w_]+%s+then\")\ if pos then\ io.stderr:write((\"[guard][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(\"Final guarded if-block\", pos,\ \"*** DUMP POINT: extract body of `if ok and result then ... end` ***\"))\ end\ io.stderr:write(\"[guard] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_scrlua(s)\ local function find_section(pat, label, tip, plain)\ local pos\ if plain then pos = s:find(pat, 1, true) else pos = s:find(pat) end\ if pos then\ io.stderr:write((\"[scrlua][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[scrlua] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"return(function(\",\ \"L1: Outer wrapper captures stdlib refs\",\ \"args = env,unpack,newproxy,setm,getm,select,{...},char,byte,concat,sub\", true)\ find_section(\"do local T=\", \"L2: Dummy do-block decoy\",\ \"ignore (no side effect)\", true)\ find_section(\"[=[SCRLUA|\", \"L3: Encoded constant table (bracket string)\",\ \"decoded inside dispatcher into w/q lookup tables\", true)\ find_section(\"while D do if D<=\", \"L4: Flattened VM dispatcher\",\ \"state advances via D=w[idx]+q[idx2]\", true)\ find_section(\"(l(w[\", \"L5: Final loader call (l(,{}))(e(m))\",\ \"*** DUMP POINT: l's 1st arg = reconstructed source ***\", true)\ io.stderr:write(\"[scrlua] ============ END ANALYSIS ============\\n\")\ end\ local function annotate_luraph(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[luraph][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[luraph] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"Luraph Obfuscator v1\",\ \"L1 Header watermark (memcorrupt)\", \"none (decoy comment)\")\ find_section(\":byte%(\",\ \"L2 4-byte LE uint32 reader\", \"log every byte tuple here\", false)\ find_section(\"2%^%(.-%-1%)\",\ \"L3 Bit-extractor (powers of 2)\", \"static math, no patch needed\", false)\ find_section(\"%-1023\",\ \"L4 IEEE-754 double reader (mantissa+exp bias)\", \"Lua-level float reconstruction\", false)\ find_section(\":sub%(\",\ \"L5 Length-prefixed string reader\", \"log every read string slice\", false)\ find_section(\":sub%(1, %-2%)\",\ \"L6 XOR/divide string decoder (key-byte)\", \"*** dump KEY then divide every uint32 ***\", false)\ find_section('\"\\\\27\\\\76\\\\80\\\\72\"',\ \"L7 Magic-header assert '\\\\27LPH'\", \"skip-able when reading offline\", true)\ find_section(\"This VM only supports Luraph v1\",\ \"L8 Version-byte assert (must be 1)\", \"drop assert to read other versions\", true)\ find_section(\"local W65xYngDnIwRpEelmxK6\",\ \"L9 Decryption KEY byte (per-script)\", \"this 4-byte uint32 = string-XOR key\", true)\ find_section(\"local function lssLYV\",\ \"L10 Proto deserializer (instr+const+sub-protos)\", \"constants pool reachable here\", true)\ find_section(\"local KjhojI09bu\",\ \"L11 VM dispatcher opcode table (~37 ops)\", \"*** trace opcodes for full decompile ***\", true)\ find_section('V6FjjMyG6MQCaB2gMXFl%(\"',\ \"L12 Encoded bytecode blob (final call)\", \"*** PRIMARY ARTIFACT — decode here ***\", false)\ io.stderr:write(\"[luraph] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_luraph_v92(s)\ local function chk(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[luraph_v92][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[luraph_v92] ============ LAYER ANALYSIS ============\\n\")\ chk(\"LuraphContinue\", \"L1 LuraphContinue marker (v92 sig)\", \"v92 fingerprint\", true)\ chk(\"LPH_NO_VIRTUALIZE\", \"L2 LPH_NO_VIRTUALIZE pragma\", \"function bypass flag\", true)\ chk(\"LPH_OBFUSCATED\", \"L3 LPH_OBFUSCATED pragma\", \"body marker\", true)\ chk(\"return%s+loadstring%s*%(\", \"L4 Outer shell return loadstring(...)\", \"*** STAGE1 hook here ***\")\ chk(\"function%s+%w+%s*%(%s*%w+%s*,%s*%w+%s*%)\", \"L5 Inner VM runner fn(proto,env)\", \"*** STAGE2 analyze ***\")\ io.stderr:write(\"[luraph_v92] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_moonsec(s)\ local function sec(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ local found = pos and (\"offset=\" .. tostring(pos)) or \"NOT FOUND\"\ io.stderr:write((\"[moonsec][SECTION] %-48s %-22s note=%s\\n\")\ :format(label, found, tip))\ end\ \ local has_vm_loop = s:find(\"while%s+true%s+do\") and\ s:find(\"if%s+[%w_]+%s*==%s*%d+%s+then\") and\ s:find(\"elseif%s+[%w_]+%s*==%s*%d+%s+then\")\ local char_count = 0\ for _ in s:gmatch(\"string%.char%(\") do\ char_count = char_count + 1; if char_count >= 5 then break end\ end\ local ident_count = 0\ for _ in s:gmatch(\"[lI][lI1][lI1][lI1][lI1][lI1][lI1][lI1]+\") do\ ident_count = ident_count + 1; if ident_count >= 20 then break end\ end\ local variant = has_vm_loop and \"v3 (VM-dispatcher)\" or \"v2 (string.char chain)\"\ \ io.stderr:write(\"[moonsec] ============ LAYER ANALYSIS ============\\n\")\ io.stderr:write((\"[moonsec] Detected variant : %s\\n\"):format(variant))\ io.stderr:write((\"[moonsec] Obfuscated idents: %d+ found\\n\"):format(ident_count))\ io.stderr:write((\"[moonsec] string.char calls: %d+ found\\n\"):format(char_count))\ io.stderr:write(\"[moonsec] ------------------------------------------\\n\")\ \ sec(\"MoonSec\",\ \"L1 Watermark header\", \"strip in S4\", true)\ sec(\"[lI][lI1][lI1][lI1][lI1][lI1][lI1][lI1]+\",\ \"L2 IIllIIlI long-identifier prelude\", \"visual noise only\", false)\ sec(\"string%.char%(\",\ \"L3 Char-builder (constant pool start)\", \"S2 table.concat hook fires here\", false)\ sec(\"table%.concat%(\",\ \"L3b table.concat (payload assembly)\", \"S2 hook intercepts this\", false)\ \ if has_vm_loop then\ sec(\"while%s+true%s+do\",\ \"L4 VM dispatcher loop entry (v3)\", \"S1 load hook fires on exit opcode\", false)\ sec(\"if%s+[%w_]+%s*==%s*%d+%s+then\",\ \"L5 First numeric opcode arm (v3)\", \"each arm = one VM instruction\", false)\ sec(\"elseif%s+[%w_]+%s*==%s*%d+%s+then\",\ \"L6 Subsequent opcode arms (v3)\", \"count = VM instruction count\", false)\ end\ \ sec(\"loadstring%s*%(\",\ \"L7 Final loader invocation\", \"*** DUMP POINT — S1 hook here ***\", false)\ sec(\"load%s*%(\",\ \"L7b load() invocation (alt form)\", \"*** DUMP POINT — S1 hook here ***\", false)\ sec(\"assert%s*%(%s*_VERSION%s*==%s*[\\\"']Lua%s*5%.1[\\\"']\",\ \"L8 _VERSION==Lua5.1 anti-tamper\", \"neutralized by S4 strip\", false)\ sec(\"if%s+not%s+game%s+then%s+error\",\ \"L9 game-presence anti-tamper\", \"neutralized by S4 strip\", false)\ sec(\"setfenv%s*%(\",\ \"L10 setfenv call (Lua 5.1 only)\", \"stubbed by S3\", false)\ sec(\"getfenv%s*%(\",\ \"L11 getfenv call (Lua 5.1 only)\", \"stubbed by S3\", false)\ \ io.stderr:write(\"[moonsec] ============ END ANALYSIS ============\\n\")\ io.stderr:write((\"[moonsec] Strategy: S1(load-hook)+S2(concat)+S3(setfenv)+S4(strip)\\n\"))\ io.stderr:write((\"[moonsec] Source size: %d bytes\\n\"):format(#s))\ end\ \ local function annotate_ironbrew(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[ironbrew][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[ironbrew] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"IronBrew\",\ \"L1 Watermark header\", \"decoy\", true)\ find_section(\"{%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+,%-?%d+\",\ \"L2 Numeric constant table prelude\", \"byte stream source\", false)\ find_section(\"string%.char%(\",\ \"L3 Per-byte materializer\", \"log every char built\", false)\ find_section(\"table%.concat\",\ \"L4 Bytecode assembler (concat point)\", \"*** DUMP POINT — hook table.concat ***\", false)\ find_section(\"return%s+[%w_]+%s*%(%s*[%w_]+%s*,%s*[%w_]+%s*%)%s*%(\",\ \"L5 Final loader call\", \"captures env in 2nd arg\", false)\ io.stderr:write(\"[ironbrew] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_ironbrew2(s)\ local function chk(pat, label, note, plain)\ local pos = s:find(pat, 1, plain ~= false)\ io.stderr:write((\"[ironbrew2][SECTION] %-42s found=%-3s offset=%-6s NOTE=%s\\n\"):format(\ label, pos and \"YES\" or \"NO \", pos and tostring(pos) or \"-\", note))\ end\ io.stderr:write(\"[ironbrew2] ============ LAYER ANALYSIS ============\\n\")\ chk(\"EL%s*=%s*string%.sub\", \"EL=string.sub\", \"byte extractor alias\")\ chk(\"D%s*=%s*setfenv\", \"D=setfenv\", \"env-setter (Lua5.1 compat — STUB NEEDED in 5.3)\")\ chk(\"oL%s*=\", \"oL slot-writer\", \"R[H]=q — writable index setter\")\ chk(\"L4%s*=\", \"L4 instruction loader\", \"VM instruction dispatch loop\")\ chk(\"q%[42%]%(%)\", \"q[42]() opcode fetcher\", \"*** KEY DUMP POINT — opcode byte stream ***\")\ chk(\"R:h4%(\", \"R:h4 low ops (O ≤ 109)\", \"opcodes 0-109 handled here\")\ chk(\"R:z4%(\", \"R:z4 mid ops (O ≤ 175)\", \"opcodes 110-175 handled here\")\ chk(\"R:a4%(\", \"R:a4 high ops (O > 175)\", \"*** LOOP TRAP — must return Q=6848 or 0xa5a5 ***\")\ chk(\"6848\", \"sentinel CONT=6848 (0x1AC0)\", \"a4 loop continue — keep iterating\")\ chk(\"0[xX]a5a5\", \"sentinel BREAK=0xa5a5\", \"a4 loop break — exit inner while\")\ chk(\"R:T4%(\", \"R:T4 direct slot store\", \"stores j into instruction slot p\")\ chk(\"Q%s*=%s*function%s*%(R%s*,R\",\"Q destructor\", \"function(R,R): 2nd R shadows 1st, clears [2]\")\ chk(\"r4%s*=\", \"r4 opcode-10 handler\", \"upvalue cleanup: q=32,82,132,182 guard R[33]\")\ chk(\"0[bB][01_]+\", \"binary literal 0B0_010011\", \"Luau-only → processString auto-converts\")\ chk(\"0[xX][%x_]*_[%x_]*\", \"hex underscore 0X21_\", \"Luau-only → processString auto-converts\")\ chk(\"function%s*%(R%s*,R%s*%)\", \"function(R,R) shadow param\", \"valid Lua 5.3 — no patch needed\")\ chk(\"local%s+[%w_]+%s*,%s*[%w_]+%s*,%s*[%w_]+%s*=%s*%([%s]*0[xX]\",\ \"multi-assign from hex\", \"local H,j,O=(0x13) — only H gets 19, j=nil, O=nil\")\ io.stderr:write(\"[ironbrew2] ---- SENTINEL PROTOCOL ---------------------\\n\")\ io.stderr:write(\"[ironbrew2] Q == 6848 (0x1AC0) → continue — a4 sub-op not done yet\\n\")\ io.stderr:write(\"[ironbrew2] Q == 0xa5a5 (42405) → break — a4 high-op complete\\n\")\ io.stderr:write(\"[ironbrew2] Q == other → INFINITE LOOP → TIMEOUT (anti-tamper trap!)\\n\")\ io.stderr:write(\"[ironbrew2] ---- OPCODE DISPATCH RANGES -----------------\\n\")\ io.stderr:write(\"[ironbrew2] O ∈ [ 0, 109] → R:h4(j,O,q) low ops\\n\")\ io.stderr:write(\"[ironbrew2] O ∈ [110, 175] → R:z4(j,O,q) mid ops\\n\")\ io.stderr:write(\"[ironbrew2] O ∈ [176, 255] → R:a4(j,O,L,q) high ops (L=96 init)\\n\")\ io.stderr:write(\"[ironbrew2] r4: H==10, R[33] guard, upval slots 32/82/132/182\\n\")\ io.stderr:write(\"[ironbrew2] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_prometheus(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[prometheus][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[prometheus] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"Prometheus\",\ \"L1 Watermark header\", \"decoy\", true)\ find_section(\"LPH!\",\ \"L2 Bytecode magic tag\", \"marks VM payload\", true)\ find_section(\"PrometheusBytecodeMagic\",\ \"L3 Bytecode magic constant\", \"marks VM payload\", true)\ find_section(\"while%s+[%w_]+%s*~=%s*%-?%d+%s+do\",\ \"L4 Step-machine dispatcher\", \"trace step var\", false)\ find_section(\"loadstring%s*%(\",\ \"L5 Final loader invocation\", \"*** DUMP POINT — hook load() ***\", false)\ io.stderr:write(\"[prometheus] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_psu(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[psu][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[psu] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"PSU\",\ \"L1 Watermark header\", \"decoy\", true)\ find_section(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",\ \"L2 Custom base64 alphabet\", \"standard b64 charset\", true)\ find_section(\"loadstring%s*%(\",\ \"L3 loadstring on decoded blob\", \"*** DUMP POINT — hook load() ***\", false)\ io.stderr:write(\"[psu] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_xor_loader(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[xor_loader][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[xor_loader] ============ LAYER ANALYSIS ============\\n\")\ find_section(\"for%s+[%w_]+%s*=%s*1%s*,%s*#[%w_]+%s+do\",\ \"L1 XOR decode loop\", \"log every char built\", false)\ find_section(\"bxor%(\", \"L2 bxor() call (Lua 5.3+)\", \"key is 2nd arg\", false)\ find_section(\"bit32%.bxor\", \"L2 bit32.bxor (Lua 5.2 / Roblox)\", \"key is 2nd arg\", false)\ find_section(\"bit%.bxor\", \"L2 bit.bxor (LuaJIT)\", \"key is 2nd arg\", false)\ find_section(\"loadstring%s*%(\",\ \"L3 Final loader invocation\", \"*** DUMP POINT — hook load() ***\", false)\ io.stderr:write(\"[xor_loader] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_bytecode_loader(s)\ local function find_section(pat, label, tip, plain)\ local pos = s:find(pat, 1, plain ~= false)\ if pos then\ io.stderr:write((\"[bytecode_loader][SECTION] %-46s offset=%-7d WEAK=%s\\n\")\ :format(label, pos, tip))\ end\ end\ io.stderr:write(\"[bytecode_loader] ============ LAYER ANALYSIS ============\\n\")\ find_section('\"\\\\27Lua', \"L1 Lua bytecode magic literal\",\ \"*** DUMP POINT — write literal to .luac sidecar ***\", true)\ find_section('\"\\\\27LJ', \"L1 LuaJIT bytecode magic literal\",\ \"*** DUMP POINT — write literal to .luac sidecar ***\", true)\ find_section(\"loadstring%s*%(\",\ \"L2 loadstring on bytecode literal\", \"Lua VM consumes raw \\\\27Lua...\", false)\ io.stderr:write(\"[bytecode_loader] ============ END ANALYSIS ============\\n\")\ end\ \ local function annotate_lumora(s)\ io.stderr:write(\"[lumora] ============ Lumora Obfuscator ANALYSIS ============\\n\")\ local key_arr = s:match(\"local u=(%b{})\")\ local key_xor = s:match(\"local t=(%d+)\")\ io.stderr:write((\"[lumora] Key XOR seed t=%s\\n\"):format(tostring(key_xor)))\ local chunk_count = 0\ for _ in s:gmatch('\"[0-9A-Fa-f]+\"') do chunk_count = chunk_count + 1 end\ io.stderr:write((\"[lumora] Payload hex chunks: %d\\n\"):format(chunk_count))\ local hex_total = 0\ for h in s:gmatch('\"([0-9A-Fa-f]+)\"') do hex_total = hex_total + #h end\ io.stderr:write((\"[lumora] Total hex chars: %d → ~%d bytes bytecode\\n\")\ :format(hex_total, hex_total // 2))\ local has_L = s:find(\"local function L%(M%)\", 1, true) ~= nil\ local has_aE = s:find(\"local function aE%(\", 1, true) ~= nil\ local has_k = s:find(\"local function k%(D,C%)\", 1, true) ~= nil\ local has_j = s:find(\"local function j%(B,C%)\", 1, true) ~= nil\ io.stderr:write((\"[lumora] VM functions: k=%s j=%s L=%s aE=%s\\n\")\ :format(tostring(has_k), tostring(has_j), tostring(has_L), tostring(has_aE)))\ local ver = s:match(\"assert%(O%(%)==(%-?[%d%-%+%*]+),\")\ io.stderr:write((\"[lumora] Bytecode version assertion: %s\\n\"):format(tostring(ver)))\ local at_count = 0\ for _ in s:gmatch(\"assert%(\") do at_count = at_count + 1 end\ io.stderr:write((\"[lumora] assert() calls in script: %d\\n\"):format(at_count))\ io.stderr:write(\"[lumora] Dump strategy: inject hook before aE(m,n,{})() → proto dump\\n\")\ io.stderr:write(\"[lumora] =========================================================\\n\")\ end\ \ local kind = detect(src)\ log(\"detected: \" .. kind)\ if kind == \"vaq\" then\ io.stderr:write(\"[vaq] ============ VAQ Obfuscator v6.6 ============\\n\")\ local apis = {}\ for call in src:gmatch(\"[a-z]%s*%((%d+(?:,%s*%d+)*)%)\") do end\ for nums_raw in src:gmatch(\"[dejk]%s*%((%d[%d,%s]+)%)\") do\ local ok, s2 = pcall(function()\ local nums = {}\ for n in nums_raw:gmatch(\"%d+\") do nums[#nums+1]=tonumber(n) end\ local r = {}\ for _, n in ipairs(nums) do\ if n >= 32 and n <= 126 then r[#r+1] = string.char(n) end\ end\ return table.concat(r)\ end)\ if ok and s2 and #s2 >= 3 then apis[s2] = true end\ end\ io.stderr:write(\"[vaq] Static decoded APIs: \")\ local api_list = {}\ for k in pairs(apis) do api_list[#api_list+1] = k end\ table.sort(api_list)\ io.stderr:write(table.concat(api_list, \", \") .. \"\\n\")\ local op_count = 0\ for _ in src:gmatch(\"_bp5nxQostOWX6XP\") do op_count = op_count + 1 end\ io.stderr:write((\"[vaq] VM opcodes: %d entries\\n\"):format(op_count))\ local at = 0\ for _ in src:gmatch(\"return%s+0%b()end\") do at = at + 1 end\ for _ in src:gmatch(\"then return 0 end\") do at = at + 1 end\ for _ in src:gmatch(\"then return false end\") do at = at + 1 end\ io.stderr:write((\"[vaq] Anti-tamper exits found: %d\\n\"):format(at))\ io.stderr:write(\"[vaq] =========================================\\n\")\ end\ if kind == \"namaiki\" then annotate_namaiki(src) end\ if kind == \"scrlua\" then annotate_scrlua(src) end\ if kind == \"guard\" then annotate_guard(src) end\ if kind == \"trap\" then annotate_trap(src) end\ if kind == \"canary\" then annotate_canary(src) end\ if kind == \"namecall_detect\" then\ io.stderr:write(\"[namecall_detect] Pattern: getrawmetatable.__namecall + setnamecallmethod probe\\n\")\ io.stderr:write(\"[namecall_detect] Fix: inject __namecall into game metatable + patch getrawmetatable\\n\")\ end\ if kind == \"luraph\" then annotate_luraph(src) end\ if kind == \"luraph_v92\" then annotate_luraph_v92(src) end\ if kind == \"moonsec\" then annotate_moonsec(src) end\ if kind == \"ironbrew\" then annotate_ironbrew(src) end\ if kind == \"ironbrew2\" then annotate_ironbrew2(src) end\ if kind == \"prometheus\" then annotate_prometheus(src) end\ if kind == \"psu\" then annotate_psu(src) end\ if kind == \"xor_loader\" then annotate_xor_loader(src) end\ if kind == \"bytecode_loader\" then annotate_bytecode_loader(src) end\ if kind == \"lumora\" then annotate_lumora(src) end\ \ local prepared = src\ local patched_in_place = false\ \ if kind == \"guard\" then\ local function extract_guard_body(s)\ local best_body, best_pos\ local i, n = 1, #s\ while i <= n do\ local s_off, e_off = s:find(\"if%s+[%w_]+%s+and%s+[%w_]+%s+then\", i)\ if not s_off then break end\ local depth = 1\ local j = e_off + 1\ while j <= n and depth > 0 do\ local ch = s:sub(j, j)\ if ch == \"-\" and s:sub(j+1, j+1) == \"-\" then\ local nl = s:find(\"\\n\", j, true)\ j = nl and (nl + 1) or (n + 1)\ elseif ch == '\"' or ch == \"'\" then\ local q = ch; j = j + 1\ while j <= n do\ local c2 = s:sub(j, j)\ if c2 == \"\\\\\" then j = j + 2\ elseif c2 == q or c2 == \"\\n\" then j = j + 1; break\ else j = j + 1 end\ end\ else\ local w = s:match(\"^([%a_][%w_]*)\", j)\ if w then\ if w == \"if\" or w == \"do\" or w == \"function\" or w == \"while\" or w == \"for\" or w == \"repeat\" then\ depth = depth + 1\ elseif w == \"end\" or w == \"until\" then\ depth = depth - 1\ end\ j = j + #w\ else\ j = j + 1\ end\ end\ end\ if depth == 0 then\ local body = s:sub(e_off + 1, j - 4)\ best_body, best_pos = body, s_off\ end\ i = e_off + 1\ end\ return best_body, best_pos\ end\ \ local body, pos = extract_guard_body(prepared)\ if body and body:gsub(\"%s\", \"\") ~= \"\" then\ local trimmed = body:gsub(\"^%s+\", \"\"):gsub(\"%s+$\", \"\")\ log((\"guard A: extracted protected body at offset %d (%d bytes)\"):format(pos, #trimmed))\ dump_and_exit(trimmed, \"guard-source\")\ else\ log(\"guard A: no extractable body, falling back to runtime hook\")\ local out_esc = OUTPUT:gsub('\"', '\\\\\"')\ local hook =\ 'local __gf=assert(io.open(\"' .. out_esc .. '\",\"wb\"));' ..\ 'local function __qv(v) local t=type(v);' ..\ 'if t==\"string\" then return string.format(\"%q\",v) end;' ..\ 'return tostring(v) end;' ..\ 'local __op=print;print=function(...)' ..\ 'local n=select(\"#\",...);local p={};' ..\ 'for i=1,n do p[i]=__qv(select(i,...)) end;' ..\ '__gf:write(\"print(\"..table.concat(p,\", \")..\")\\\\n\");__gf:flush();' ..\ 'return __op(...) end;'\ prepared = hook .. prepared\ patched_in_place = true\ end\ end\ \ if kind == \"canary\" then\ local function strip_canary_blocks(text)\ local out, i, n = {}, 1, #text\ while i <= n do\ local s_off, e_off, cond = text:find(\"if%s+([^\\n]-)%s+then\", i)\ if not s_off then\ out[#out+1] = text:sub(i); break\ end\ if not _line_has_canary_sig(cond) then\ out[#out+1] = text:sub(i, e_off)\ i = e_off + 1\ else\ out[#out+1] = text:sub(i, s_off - 1)\ local depth, j = 1, e_off + 1\ while j <= n and depth > 0 do\ local ch = text:sub(j, j)\ if ch == \"-\" and text:sub(j+1, j+1) == \"-\" then\ local nl = text:find(\"\\n\", j, true)\ j = nl and (nl + 1) or (n + 1)\ elseif ch == '\"' or ch == \"'\" then\ local q = ch; j = j + 1\ while j <= n do\ local c2 = text:sub(j, j)\ if c2 == \"\\\\\" then j = j + 2\ elseif c2 == q or c2 == \"\\n\" then j = j + 1; break\ else j = j + 1 end\ end\ else\ local w = text:match(\"^([%a_][%w_]*)\", j)\ if w then\ if w == \"if\" or w == \"do\" or w == \"function\"\ or w == \"while\" or w == \"for\" or w == \"repeat\" then\ depth = depth + 1\ elseif w == \"end\" or w == \"until\" then\ depth = depth - 1\ end\ j = j + #w\ else\ j = j + 1\ end\ end\ end\ i = j\ end\ end\ return table.concat(out)\ end\ \ local cleaned = strip_canary_blocks(prepared)\ cleaned = cleaned:gsub(\"local%s+[%w_, ]+%s*=%s*[^\\n]+\", function(line)\ if _line_has_canary_sig(line) then return \"\" end\ return line\ end)\ cleaned = cleaned:gsub(\"[ \\t]+\\n\", \"\\n\"):gsub(\"\\n%s*\\n+\", \"\\n\")\ :gsub(\"^%s+\", \"\"):gsub(\"%s+$\", \"\")\ if cleaned ~= \"\" then\ log((\"canary: stripped, payload = %d bytes\"):format(#cleaned))\ dump_and_exit(cleaned, \"canary-source\")\ else\ log(\"canary: nothing left after stripping, falling back to runtime\")\ end\ end\ \ if kind == \"luraph\" then\ local pat =\ \"local%s+([%w_]+)%s*=%s*([%w_]+)%s*%(%s*%)%s*\" ..\ \"([%w_]+)%s*%(%s*%1%s*%)%s*%(%s*%)%s*end\"\ local pP, pParser, pRunner = src:match(pat)\ if pP then\ log((\"luraph: runner located -> P=%s parser=%s runner=%s\"):format(\ pP, pParser, pRunner))\ \ local IF = {}\ do\ local block_pat =\ \"{([%w_]+)=[%w_]+%(%),\" ..\ \"([%w_]+)=[%w_]+%([%w_]+%),\" ..\ \"([%w_]+)=[%w_]+%(%),};\" ..\ \"if[^=]+==%s*\\\"([%w_]+)\\\"%s*then[^;]+%.([%w_]+)=\" ..\ \"[^;]+;[^;]+%.([%w_]+)=[^;]+;\" ..\ \"elseif[^=]+==%s*\\\"([%w_]+)\\\"%s*then[^;]+%.([%w_]+)=\" ..\ \"[^;]+;\" ..\ \"elseif[^=]+==%s*\\\"([%w_]+)\\\"%s*then[^;]+%.([%w_]+)=\" ..\ \"[^;]+%-131071\"\ local f_op, f_tag, f_a, t_ab, f_b, f_c,\ t_bx, f_bx, t_sbx, f_sbx = src:match(block_pat)\ if f_op then\ IF.op = f_op; IF.tag = f_tag; IF.A = f_a\ IF.B = f_b; IF.C = f_c; IF.Bx = f_bx\ IF.sBx = f_sbx\ IF.TAG_AB = t_ab\ IF.TAG_BX = t_bx\ IF.TAG_SBX = t_sbx\ log((\"luraph: ins fields op=%s tag=%s A=%s B=%s C=%s Bx=%s sBx=%s\"):format(\ f_op, f_tag, f_a, f_b, f_c, f_bx, f_sbx))\ log((\"luraph: ins tags AB=%s BX=%s SBX=%s\"):format(t_ab, t_bx, t_sbx))\ else\ log(\"luraph: instruction-field map not extracted; falling back to heuristic\")\ end\ end\ \ local CF = {}\ do\ local cblock =\ \"{([%w_]+)=[%w_]+,};\" ..\ \"if[^=]+==%s*1%s*then[^;]+%.([%w_]+)%s*=\"\ local f_ct, f_cv = src:match(cblock)\ if f_ct then\ CF.typ = f_ct; CF.val = f_cv\ log((\"luraph: const fields typ=%s val=%s\"):format(f_ct, f_cv))\ end\ end\ \ local function extract_dispatcher_entries()\ local s, e = src:find('{%s*%[%-?%d+%]%s*=%s*function%([^)]*%)%s*' ..\ 'error%(\"Luraph\\'s VM is lacking')\ if not s then\ s = src:find(\"{%[36%]%s*=%s*function\")\ if not s then return nil end\ end\ local depth, j = 0, s\ while j <= #src do\ local c = src:sub(j, j)\ if c == \"{\" then depth = depth + 1\ elseif c == \"}\" then depth = depth - 1\ if depth == 0 then break end\ end\ j = j + 1\ end\ local block = src:sub(s, j)\ local entries = {}\ local i = 1\ while true do\ local hs, he, opnum = block:find(\"%[(%-?%d+)%]%s*=%s*function%([^)]*%)\", i)\ if not hs then break end\ local depth2, k = 1, he + 1\ while k <= #block and depth2 > 0 do\ local fpos = block:find(\"function\", k, true)\ local epos = block:find(\"end\", k, true)\ if fpos and (not epos or fpos < epos) then\ depth2 = depth2 + 1; k = fpos + 8\ elseif epos then\ depth2 = depth2 - 1; k = epos + 3\ else break end\ end\ entries[tonumber(opnum)] = block:sub(he+1, k-4)\ i = k\ end\ return entries\ end\ \ local function classify_op(body)\ if not body then return nil end\ body = body:gsub(\"%s+\", \" \")\ local A, B, C = IF.A, IF.B, IF.C\ local Bx, sBx = IF.Bx, IF.sBx\ local CV = CF.val or \"[%w_]+\"\ \ local function has(p) return body:find(p) ~= nil end\ \ if has(\"VM is lacking\") then return nil end\ if has(\"%*%s*50\") then return \"SETLIST\" end\ if has(\"setmetatable.-__index\") then return \"CLOSURE\" end\ if has('select%(\"#\"') then return \"VARARG\" end\ if body:match(\"^%s*[%w_]+%[[^%]]-%.\"..A..\"%]%s*=%s*{%s*}%s*;?%s*$\") then\ return \"NEWTABLE\"\ end\ if has(\"=%s*#[%w_]+%[[^%]]-%.\"..B..\"%]\") then return \"LEN\" end\ if has(\"=%s*%-[%w_]+%[[^%]]-%.\"..B..\"%]\") then return \"UNM\" end\ if has(\"=%s*not%s+[%w_]+%[[^%]]-%.\"..B..\"%]\") then return \"NOT\" end\ \ if has(\"%.\"..A..\"%]%s*=%s*[%w_]+%.\"..B..\"%s*~=%s*0\")\ and has(\"%.\"..C..\"%s*~=%s*0\") then return \"LOADBOOL\" end\ \ if has(\"not not\") and has(\"%.\"..C..\"%s*==%s*0\") then\ if has(\"%.\"..A..\"%]%s*=%s*[%w_]+%[[^%]]-%.\"..B..\"%]\") then\ return \"TESTSET\"\ end\ return \"TEST\"\ end\ \ if has(\"for%s+[%w_]+%s*=%s*[%w_]+%.\"..A) and has(\"=%s*nil\") then\ return \"LOADNIL\"\ end\ \ if has(\"%.\"..sBx..\"[^%w_]\") then\ if has(\"for%s\") then\ if has(\"%.\"..A..\"%+2\") and has(\"%-%s*[%w_]+%[[^%]]-%.\"..A..\"%+2\") then\ return \"FORPREP\"\ end\ end\ if has(\"%+%s*[%w_]+%[[^%]]-%.\"..A..\"%+2\") and has(\"%.\"..A..\"%+3\") then\ return \"FORLOOP\"\ end\ if has(\"%.\"..A..\"%]%s*=%s*[%w_]+%[[^%]]-%.\"..A..\"%]%s*%-%s*[%w_]+%[[^%]]-%.\"..A..\"%+2\") then\ return \"FORPREP\"\ end\ return \"JMP\"\ end\ \ if has(\"%.\"..A..\"%+1%]\") and has(\"%.\"..A..\"%]\") and has(\"%[[%w_]+%[[^%]]-%.\"..B) then\ return \"SELF\"\ end\ \ if has(\"%.\"..A..\"%]%s*=%s*[%w_]+%[[^%]]-%.\"..Bx..\"%]%.\"..CV) then\ return \"LOADK\"\ end\ \ if has(\"%.\"..Bx..\"%]%.\"..CV) then\ if has(\"%.\"..A..\"%]%s*=\") then return \"GETGLOBAL\" end\ return \"SETGLOBAL\"\ end\ \ do\ local target, source = body:match(\ \"^%s*([%w_]+)%[[^%]]-%.\"..A..\"%]%s*=%s*([%w_]+)%[[^%]]-%.\"..B..\"%]%s*;?%s*$\")\ if target then\ if target == source then return \"MOVE\" end\ return \"GETUPVAL\"\ end\ local utgt, ustack = body:match(\ \"^%s*([%w_]+)%[[^%]]-%.\"..B..\"%]%s*=%s*([%w_]+)%[[^%]]-%.\"..A..\"%]%s*;?%s*$\")\ if utgt and utgt ~= ustack then return \"SETUPVAL\" end\ end\ \ if body:match(\"[%w_]+%[[^%]]-%.\"..A..\"%]%[[^%]]+%]%s*=\") then\ return \"SETTABLE\"\ end\ if body:match(\"%[[^%]]-%.\"..A..\"%]%s*=%s*[%w_]+%[[^%]]-%.\"..B..\"%]%[\") then\ return \"GETTABLE\"\ end\ \ if has(\"%%%s*[%w_]+%s*;?$\") or has(\"=%s*[^=]-%%%s*[%w_]+\") then return \"MOD\" end\ if has(\"%^%s*[%w_]+%s*;?$\") or has(\"=%s*[^=]-%^%s*[%w_]+\") then return \"POW\" end\ if has(\"%.%.%s*[%w_]+\") then return \"CONCAT\" end\ \ if has(\">%s*255\") then\ local writes_A = body:find(\"[%w_]+%[[^%]]-%.\"..A..\"%]%s*=\") ~= nil\ if has(\"~=%s*0\") and not writes_A then\ if has(\"<=\") then return \"LE\" end\ if body:find(\"[%w_)]%s*<%s*[%w_(]\") then return \"LT\" end\ return \"EQ\"\ end\ if has(\"%+%s*[%w_]+%s*;\") then return \"ADD\" end\ if has(\"%-%s*[%w_]+%s*;\") then return \"SUB\" end\ if has(\"%*%s*[%w_]+%s*;\") then return \"MUL\" end\ if has(\"/%s*[%w_]+%s*;\") then return \"DIV\" end\ end\ \ if has(\"return%s+true\") then return \"RETURN\" end\ if has(\"^%s*return%s+[%w_]+%[[^%]]-%.\"..A) or\ body:match(\"^%s*return%s+[%w_]+%[[^%]]-%.\"..A) then return \"TAILCALL\" end\ if has(\"=%s*{[%w_]+%[[^%]]-%.\"..A..\"%]%(\") then return \"CALL\" end\ if has(\"%.\"..A..\"%]%(\") then return \"CALL\" end\ \ if has(\"for%s+[%w_]+%s*=%s*[%w_]+%.\"..A..\"%s*,%s*[%w_]+%.\"..B) then\ return \"CLOSE\"\ end\ \ if has(\"%.\"..C) and has(\"for%s\") then return \"TFORLOOP\" end\ \ return nil\ end\ \ local OPCODES = {}\ do\ local entries = extract_dispatcher_entries()\ if entries and IF.A then\ local found = 0\ for n, body in pairs(entries) do\ local mnem = classify_op(body)\ if mnem then OPCODES[n] = mnem; found = found + 1 end\ end\ log((\"luraph: identified %d/%d opcodes via dispatcher analysis\"):format(\ found, 38))\ else\ log(\"luraph: could not extract dispatcher entries; opcode table empty\")\ end\ end\ \ local function shape_of(arr)\ local sample = arr[1]\ if type(sample) ~= \"table\" then return \"scalars\" end\ local nfields, nstr, ntbl, nnum = 0, 0, 0, 0\ for _, fv in pairs(sample) do\ nfields = nfields + 1\ local t = type(fv)\ if t == \"string\" then nstr = nstr + 1\ elseif t == \"table\" then ntbl = ntbl + 1\ elseif t == \"number\" then nnum = nnum + 1 end\ end\ if ntbl >= 2 then return \"subs\" end\ if nstr >= 1 and nfields >= 3 then return \"ins\" end\ return \"consts\"\ end\ \ local function classify(p)\ local ins, consts, subs, nparams\ for _, v in pairs(p) do\ if type(v) == \"number\" then\ nparams = v\ elseif type(v) == \"table\" then\ if v[1] == nil then\ consts = consts or v\ else\ local sh = shape_of(v)\ if sh == \"ins\" then ins = v\ elseif sh == \"subs\" then subs = v\ else consts = v end\ end\ end\ end\ return ins or {}, consts or {}, subs or {}, nparams or 0\ end\ \ local function unwrap_const(c)\ if type(c) ~= \"table\" then return c end\ if CF.val and c[CF.val] ~= nil then\ return c[CF.val], c[CF.typ]\ end\ local nums, other = {}, nil\ for _, fv in pairs(c) do\ if type(fv) == \"number\" then nums[#nums+1] = fv\ else other = fv end\ end\ if other ~= nil then return other end\ if #nums == 0 then return nil end\ if #nums == 1 then return nums[1] end\ local function is_typecode(n) return n == 1 or n == 3 or n == 4 end\ if is_typecode(nums[1]) and not is_typecode(nums[2]) then return nums[2] end\ if is_typecode(nums[2]) and not is_typecode(nums[1]) then return nums[1] end\ return math.abs(nums[1]) >= math.abs(nums[2]) and nums[1] or nums[2]\ end\ \ local out = {}\ out[#out+1] = \"-- ============================================================\"\ out[#out+1] = \"-- Luraph Obfuscator v1 (memcorrupt) -- decoded by FlameDumperV2\"\ out[#out+1] = \"-- via source-patched parser + proto introspection\"\ out[#out+1] = \"-- ============================================================\"\ out[#out+1] = \"\"\ \ local function fmt_const(c)\ local t = type(c)\ if t == \"string\" then\ if #c > 512 then\ return (\"\"):format(#c)\ end\ return (\"%q\"):format(c)\ elseif t == \"number\" or t == \"boolean\" then\ return tostring(c)\ elseif t == \"nil\" then\ return \"nil\"\ else\ return (\"<%s>\"):format(t)\ end\ end\ \ local function fmt_ins(i, consts_arr)\ local function rk(idx)\ if idx and idx > 255 and consts_arr then\ local c = consts_arr[idx - 256 + 1] or consts_arr[idx - 256]\ if c then\ local v = unwrap_const(c)\ if v ~= nil then return (\"K[%d]=%s\"):format(idx-256, fmt_const(v)) end\ end\ return (\"K[%d]\"):format(idx-256)\ end\ return tostring(idx)\ end\ local function kref(idx)\ if consts_arr and idx then\ local c = consts_arr[idx + 1] or consts_arr[idx]\ if c then\ local v = unwrap_const(c)\ if v ~= nil then return (\"K[%d]=%s\"):format(idx, fmt_const(v)) end\ end\ end\ return (\"K[%s]\"):format(tostring(idx))\ end\ if IF.op then\ local op = i[IF.op]\ local tag = i[IF.tag]\ local A = i[IF.A]\ local mnem = (op and OPCODES[op]) or (\"OP?(\" .. tostring(op) .. \")\")\ local args\ if tag == IF.TAG_AB then\ args = (\"A=%s B=%s C=%s\"):format(\ tostring(A), rk(i[IF.B]), rk(i[IF.C]))\ elseif tag == IF.TAG_BX then\ args = (\"A=%s Bx=%s\"):format(tostring(A), kref(i[IF.Bx]))\ elseif tag == IF.TAG_SBX then\ args = (\"A=%s sBx=%s\"):format(tostring(A), tostring(i[IF.sBx]))\ else\ args = (\"A=%s tag=%s\"):format(tostring(A), tostring(tag))\ end\ return (\"%-10s %s\"):format(mnem, args)\ end\ local op, tag, nums = nil, nil, {}\ for _, v in pairs(i) do\ if type(v) == \"number\" then nums[#nums+1] = v\ elseif type(v) == \"string\" then tag = v end\ end\ for _, v in ipairs(nums) do\ if OPCODES[v] then op = v; break end\ end\ local mnem = op and OPCODES[op] or (\"OP?\")\ local rest = {}\ for _, v in ipairs(nums) do\ if v ~= op then rest[#rest+1] = tostring(v) end\ end\ return (\"%-10s tag=%s args=%s\"):format(mnem, tag or \"?\", table.concat(rest, \",\"))\ end\ \ local function emit_pseudocode(ins, consts, num_subs)\ if not IF.op then return {} end\ local function kval(idx)\ if not consts or not idx then return (\"K[%s]\"):format(tostring(idx)) end\ local c = consts[idx + 1] or consts[idx]\ if c then\ local v = unwrap_const(c)\ if v ~= nil then return fmt_const(v) end\ end\ return (\"K[%d]\"):format(idx)\ end\ local function rk(idx)\ if not idx then return \"?\" end\ if idx > 255 then return kval(idx - 256) end\ return (\"R%d\"):format(idx)\ end\ local function R(n) return (\"R%d\"):format(n or -1) end\ \ local lines = {}\ local labels = {}\ \ for pc, i in ipairs(ins) do\ local op = i[IF.op]\ local mnem = OPCODES[op]\ if mnem == \"JMP\" or mnem == \"FORLOOP\" or mnem == \"FORPREP\" then\ local tgt = pc + (i[IF.sBx] or 0)\ labels[tgt] = true\ end\ end\ \ for pc, i in ipairs(ins) do\ local op = i[IF.op]\ local A = i[IF.A]\ local B = i[IF.B]\ local C = i[IF.C]\ local Bx = i[IF.Bx]\ local sBx = i[IF.sBx]\ local mnem = OPCODES[op] or (\"OP?(\" .. tostring(op) .. \")\")\ local stmt\ \ if mnem == \"MOVE\" then stmt = (\"%s = %s\"):format(R(A), R(B))\ elseif mnem == \"LOADK\" then stmt = (\"%s = %s\"):format(R(A), kval(Bx))\ elseif mnem == \"LOADBOOL\" then stmt = (\"%s = %s%s\"):format(R(A),\ (B and B ~= 0) and \"true\" or \"false\",\ (C and C ~= 0) and \" -- then PC++\" or \"\")\ elseif mnem == \"LOADNIL\" then stmt = (\"%s..%s = nil\"):format(R(A), R((A or 0)+(B or 0)))\ elseif mnem == \"GETUPVAL\" then stmt = (\"%s = U%d\"):format(R(A), B or -1)\ elseif mnem == \"SETUPVAL\" then stmt = (\"U%d = %s\"):format(B or -1, R(A))\ elseif mnem == \"GETGLOBAL\" then stmt = (\"%s = _G[%s]\"):format(R(A), kval(Bx))\ elseif mnem == \"SETGLOBAL\" then stmt = (\"_G[%s] = %s\"):format(kval(Bx), R(A))\ elseif mnem == \"GETTABLE\" then stmt = (\"%s = %s[%s]\"):format(R(A), R(B), rk(C))\ elseif mnem == \"SETTABLE\" then stmt = (\"%s[%s] = %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"NEWTABLE\" then stmt = (\"%s = {} -- arr=%s hash=%s\"):format(R(A), tostring(B), tostring(C))\ elseif mnem == \"SELF\" then stmt = (\"%s = %s; %s = %s[%s]\"):format(R((A or 0)+1), R(B), R(A), R(B), rk(C))\ elseif mnem == \"ADD\" then stmt = (\"%s = %s + %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"SUB\" then stmt = (\"%s = %s - %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"MUL\" then stmt = (\"%s = %s * %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"DIV\" then stmt = (\"%s = %s / %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"MOD\" then stmt = (\"%s = %s %% %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"POW\" then stmt = (\"%s = %s ^ %s\"):format(R(A), rk(B), rk(C))\ elseif mnem == \"UNM\" then stmt = (\"%s = -%s\"):format(R(A), R(B))\ elseif mnem == \"NOT\" then stmt = (\"%s = not %s\"):format(R(A), R(B))\ elseif mnem == \"LEN\" then stmt = (\"%s = #%s\"):format(R(A), R(B))\ elseif mnem == \"CONCAT\" then stmt = (\"%s = %s .. ... .. %s\"):format(R(A), R(B), R(C))\ elseif mnem == \"JMP\" then stmt = (\"goto L%d\"):format(pc + (sBx or 0))\ elseif mnem == \"EQ\" then stmt = (\"if (%s == %s) %s then goto L%d\"):format(rk(B), rk(C), (A and A ~= 0) and \"==\" or \"~=\", pc + 2)\ elseif mnem == \"LT\" then stmt = (\"if (%s < %s) %s then goto L%d\"):format(rk(B), rk(C), (A and A ~= 0) and \"==\" or \"~=\", pc + 2)\ elseif mnem == \"LE\" then stmt = (\"if (%s <= %s) %s then goto L%d\"):format(rk(B), rk(C), (A and A ~= 0) and \"==\" or \"~=\", pc + 2)\ elseif mnem == \"TEST\" then stmt = (\"if (not not %s) ~= %s then goto L%d\"):format(R(A), (C and C ~= 0) and \"true\" or \"false\", pc + 2)\ elseif mnem == \"TESTSET\" then stmt = (\"if (not not %s) == %s then %s = %s else goto L%d\"):format(R(B), (C and C ~= 0) and \"true\" or \"false\", R(A), R(B), pc + 2)\ elseif mnem == \"CALL\" then\ local nargs = (B or 0) - 1\ local nresults= (C or 0) - 1\ local args = \"\"\ if nargs == -1 then args = R((A or 0)+1) .. \", ...\"\ elseif nargs > 0 then\ local t = {}\ for k = 1, nargs do t[#t+1] = R((A or 0) + k) end\ args = table.concat(t, \", \")\ end\ if nresults == -1 then\ stmt = (\"%s, ... = %s(%s)\"):format(R(A), R(A), args)\ elseif nresults == 0 then\ stmt = (\"%s(%s)\"):format(R(A), args)\ else\ local rets = {}\ for k = 0, nresults - 1 do rets[#rets+1] = R((A or 0) + k) end\ stmt = (\"%s = %s(%s)\"):format(table.concat(rets, \", \"), R(A), args)\ end\ elseif mnem == \"TAILCALL\" then stmt = (\"return %s(...)\"):format(R(A))\ elseif mnem == \"RETURN\" then\ local nret = (B or 0) - 1\ if nret == 0 then stmt = \"return\"\ elseif nret == -1 then stmt = (\"return %s, ...\"):format(R(A))\ else\ local t = {}\ for k = 0, nret-1 do t[#t+1] = R((A or 0)+k) end\ stmt = \"return \" .. table.concat(t, \", \")\ end\ elseif mnem == \"FORLOOP\" then stmt = (\"%s += %s; if %s <= %s then %s = %s; goto L%d end\"):format(\ R(A), R((A or 0)+2), R(A), R((A or 0)+1), R((A or 0)+3), R(A), pc + (sBx or 0))\ elseif mnem == \"FORPREP\" then stmt = (\"%s -= %s; goto L%d\"):format(R(A), R((A or 0)+2), pc + (sBx or 0))\ elseif mnem == \"TFORLOOP\" then stmt = (\"%s..%s = %s(%s, %s); if %s ~= nil then %s = %s else goto L%d\"):format(\ R((A or 0)+3), R((A or 0)+2+(C or 0)), R(A), R((A or 0)+1), R((A or 0)+2),\ R((A or 0)+3), R((A or 0)+2), R((A or 0)+3), pc + 2)\ elseif mnem == \"SETLIST\" then stmt = (\"for i=1,%s do %s[(%s-1)*50+i] = %s[i] end\"):format(\ tostring(B), R(A), tostring(C), R(A))\ elseif mnem == \"CLOSE\" then stmt = (\"close upvalues from %s\"):format(R(A))\ elseif mnem == \"CLOSURE\" then stmt = (\"%s = function() ... end -- subproto[%s]\"):format(R(A), tostring(Bx))\ elseif mnem == \"VARARG\" then\ local nv = (B or 0) - 1\ if nv <= 0 then stmt = (\"%s, ... = ...\"):format(R(A))\ else\ local t = {}\ for k = 0, nv-1 do t[#t+1] = R((A or 0)+k) end\ stmt = table.concat(t, \", \") .. \" = ...\"\ end\ else\ stmt = (\"-- %s (raw) A=%s B=%s C=%s Bx=%s sBx=%s\"):format(mnem,\ tostring(A), tostring(B), tostring(C), tostring(Bx), tostring(sBx))\ end\ \ if labels[pc] then\ lines[#lines+1] = (\"::L%d::\"):format(pc)\ end\ lines[#lines+1] = stmt\ end\ return lines\ end\ \ local function dump_proto(p, depth)\ local ins, consts, subs, nparams = classify(p)\ local pad = string.rep(\" \", depth)\ out[#out+1] = (\"%s-- proto depth=%d ins=%d consts=%d sub-protos=%d nparams=%s\")\ :format(pad, depth, #ins, #consts, #subs, tostring(nparams))\ for idx, c in ipairs(consts) do\ out[#out+1] = (\"%s K[%d] = %s\"):format(pad, idx-1, fmt_const(unwrap_const(c)))\ end\ if #ins > 0 then\ out[#out+1] = (\"%s -- instructions:\"):format(pad)\ for idx, i in ipairs(ins) do\ out[#out+1] = (\"%s [%4d] %s\"):format(pad, idx-1, fmt_ins(i, consts))\ end\ local pseudo = emit_pseudocode(ins, consts, #subs)\ if pseudo and #pseudo > 0 then\ out[#out+1] = (\"%s -- pseudocode:\"):format(pad)\ for _, line in ipairs(pseudo) do\ out[#out+1] = (\"%s %s\"):format(pad, line)\ end\ end\ end\ for _, sub in ipairs(subs) do\ out[#out+1] = \"\"\ dump_proto(sub, depth + 1)\ end\ end\ \ _G.__LURAPH_DUMP = function(proto)\ local ok, err = pcall(dump_proto, proto, 0)\ if not ok then\ out[#out+1] = \"-- dump aborted: \" .. tostring(err)\ end\ local body = table.concat(out, \"\\n\") .. \"\\n\"\ log((\"luraph: introspected dump = %d lines\"):format(#out))\ dump_and_exit(body, \"luraph-source\")\ end\ \ local patched = src:gsub(pat,\ \"local %1 = %2(); __LURAPH_DUMP(%1); return end\", 1)\ \ local fn, err = (loadstring or load)(patched, \"=luraph-patched\")\ if not fn then\ log(\"luraph: patched chunk failed to load: \" .. tostring(err))\ else\ local ok, runerr = pcall(fn)\ if not ok then\ log(\"luraph: patched chunk runtime error: \" .. tostring(runerr))\ else\ log(\"luraph: patched chunk returned without invoking hook\")\ end\ end\ log(\"luraph: source-patch path failed, falling through to legacy decoder\")\ else\ log(\"luraph: runner pattern not found, using legacy literal decoder\")\ end\ \ local _, _, raw = src:find('V6FjjMyG6MQCaB2gMXFl%(\"(.-)\"%s*%)')\ if not raw then\ log(\"luraph: blob literal not found, falling through\")\ else\ log((\"luraph: blob literal = %d source chars\"):format(#raw))\ local function decode_escapes(s)\ local out = {}\ local i, n = 1, #s\ while i <= n do\ local c = s:sub(i, i)\ if c == \"\\\\\" and i < n then\ local nxt = s:sub(i+1, i+1)\ if nxt:match(\"%d\") then\ local j = i + 1\ while j <= n and s:sub(j, j):match(\"%d\") and (j - i) <= 3 do\ j = j + 1\ end\ out[#out+1] = string.char(tonumber(s:sub(i+1, j-1)) % 256)\ i = j\ else\ local map = {n=\"\\n\", r=\"\\r\", t=\"\\t\", a=\"\\a\", b=\"\\b\",\ f=\"\\f\", v=\"\\v\", ['\"']='\"', [\"'\"]=\"'\", [\"\\\\\"]=\"\\\\\"}\ out[#out+1] = map[nxt] or nxt\ i = i + 2\ end\ else\ out[#out+1] = c\ i = i + 1\ end\ end\ return table.concat(out)\ end\ local b = decode_escapes(raw)\ log((\"luraph: decoded blob = %d raw bytes\"):format(#b))\ \ local cursor = 0\ local function u32()\ local a, c, d, e\ if cursor == 0 then\ a = 0\ c = b:byte(1) or 0\ d = b:byte(2) or 0\ e = b:byte(3) or 0\ else\ a = b:byte(cursor) or 0\ c = b:byte(cursor+1) or 0\ d = b:byte(cursor+2) or 0\ e = b:byte(cursor+3) or 0\ end\ cursor = cursor + 4\ return e * 16777216 + d * 65536 + c * 256 + a\ end\ local function s_raw(n)\ local i = cursor < 1 and 1 or cursor\ local j = cursor + n - 1\ local out = b:sub(i, j)\ cursor = cursor + n\ return out\ end\ local key\ local function s_enc()\ local cnt = u32()\ local chars = {}\ for _ = 1, cnt do\ local v = u32()\ chars[#chars+1] = string.char(math.floor(v / key) % 256)\ end\ local s = table.concat(chars)\ return s:sub(1, -2)\ end\ local function double_le()\ u32(); u32()\ return 0.0\ end\ \ local NAME_AB = \"Alsn1FH3vWXAurVzPTrL\"\ local NAME_B = \"AF5vfKMKquKDoMYQVcls\"\ local NAME_BX = \"NOuRlXW6p6xYaYkNHULV\"\ \ local function parse_proto(depth)\ local n_ins = u32() - 133707\ for _ = 1, n_ins do\ u32()\ local nm = s_enc()\ u32()\ if nm == NAME_AB then u32(); u32()\ elseif nm == NAME_B then u32()\ elseif nm == NAME_BX then u32()\ end\ end\ local n_const = u32() - 133783\ local consts = {}\ for i = 1, n_const do\ local typ = u32()\ if typ == 1 then\ consts[#consts+1] = { kind=\"bool\", val=(u32() ~= 0), idx=i-1 }\ elseif typ == 3 then\ consts[#consts+1] = { kind=\"num\", val=double_le(), idx=i-1 }\ elseif typ == 4 then\ consts[#consts+1] = { kind=\"str\", val=s_enc(), idx=i-1 }\ else\ consts[#consts+1] = { kind=\"?\", val=typ, idx=i-1 }\ end\ end\ local n_proto = u32()\ local subs = {}\ for _ = 1, n_proto do\ subs[#subs+1] = parse_proto(depth + 1)\ end\ u32()\ return { depth=depth, n_ins=n_ins, consts=consts, subs=subs }\ end\ \ local magic = s_raw(5)\ local version = u32()\ key = u32()\ log((\"luraph: magic=%q ver=%d key=%d\"):format(magic, version, key))\ \ local ok, root = pcall(parse_proto, 0)\ if not ok then\ log(\"luraph: parse error: \" .. tostring(root))\ dump_and_exit((\"-- [luraph] decoder aborted: %s\\n\"):format(tostring(root)),\ \"luraph-parse-error\")\ end\ \ local out = {}\ out[#out+1] = (\"-- ============================================================\")\ out[#out+1] = (\"-- Luraph Obfuscator v1 (memcorrupt) -- decoded by FlameDumperV2\")\ out[#out+1] = (\"-- magic=%s version=%d key=%d blob=%d bytes\"):format(\ (magic:gsub(\"[^%w]\", function(ch) return string.format(\"\\\\%d\", ch:byte()) end)),\ version, key, #b)\ out[#out+1] = (\"-- ============================================================\")\ out[#out+1] = \"\"\ \ local function dump_p(p)\ local pad = string.rep(\" \", p.depth)\ local n_str, n_num, n_bool = 0, 0, 0\ for _, c in ipairs(p.consts) do\ if c.kind == \"str\" then n_str = n_str + 1\ elseif c.kind == \"num\" then n_num = n_num + 1\ elseif c.kind == \"bool\" then n_bool = n_bool + 1 end\ end\ out[#out+1] = (\"%s-- proto depth=%d ins=%d consts=%d (str=%d num=%d bool=%d) sub-protos=%d\")\ :format(pad, p.depth, p.n_ins, #p.consts, n_str, n_num, n_bool, #p.subs)\ for _, c in ipairs(p.consts) do\ if c.kind == \"str\" then\ out[#out+1] = (\"%s K[%d] = %q\"):format(pad, c.idx, c.val)\ end\ end\ for _, c in ipairs(p.consts) do\ if c.kind == \"num\" then\ out[#out+1] = (\"%s K[%d] = %s -- num\"):format(pad, c.idx, tostring(c.val))\ elseif c.kind == \"bool\" then\ out[#out+1] = (\"%s K[%d] = %s -- bool\"):format(pad, c.idx, tostring(c.val))\ end\ end\ for _, sub in ipairs(p.subs) do\ out[#out+1] = \"\"\ dump_p(sub)\ end\ end\ dump_p(root)\ \ local body = table.concat(out, \"\\n\") .. \"\\n\"\ log((\"luraph: dumped %d lines of decoded constants/protos\"):format(#out))\ dump_and_exit(body, \"luraph-source\")\ end\ end\ \ if kind == \"luraph_v92\" then\ \ local _inner_src = nil\ local _orig_load = loadstring or load\ \ local function _stage1_hook(s, ...)\ if type(s) == \"string\" and #s > 200 and not _inner_src then\ _inner_src = s\ local cap = __LR_INNER_PATH or \"inner_luraph_v1.lua\"\ local fh = io.open(cap, \"w\")\ if fh then fh:write(s); fh:close() end\ log((\"luraph_v92: stage1 captured %d bytes -> %s\"):format(#s, cap))\ end\ return _orig_load(s, ...)\ end\ loadstring = _stage1_hook\ load = _stage1_hook\ \ local fn_outer, lerr_outer = _orig_load(prepared, \"=luraph_v92_outer\")\ if fn_outer then\ local ok_outer, rerr_outer = pcall(fn_outer)\ if not ok_outer then\ log(\"luraph_v92: outer run: \" .. tostring(rerr_outer))\ end\ else\ log(\"luraph_v92: outer load error: \" .. tostring(lerr_outer))\ end\ \ if not _inner_src then\ log(\"luraph_v92: stage1 did not capture inner source; arming runtime hook\")\ install_runtime_hook()\ else\ local v92_info = nil\ do\ local ftbl_name, ftbl_keys\ \ for name, body in _inner_src:gmatch(\"([%a_][%w_]*)%s*=%s*(%b{})\") do\ local keys = {}\ for k in body:gmatch(\"([%a_][%w_]*)%s*=%s*%b{}\") do\ keys[#keys+1] = k\ end\ if #keys >= 4 and #keys <= 8 then\ ftbl_name = name\ ftbl_keys = keys\ break\ end\ end\ \ local runner_fn\ runner_fn = _inner_src:match(\ \"function%s+([%a_][%w_]*)%s*%(%s*[%a_][%w_]*%s*,%s*[%a_][%w_]*%s*%)%s+local\")\ \ local op_field\ if ftbl_name then\ local esc = ftbl_name:gsub(\"([%^%$%(%)%%%.%[%]%*%+%-%?])\", \"%%%1\")\ op_field = _inner_src:match(esc .. \"%.([%a_][%w_]*)%s*%]%s*%+%s*1\")\ end\ \ local bx_field\ if ftbl_name then\ local esc = ftbl_name:gsub(\"([%^%$%(%)%%%.%[%]%*%+%-%?])\", \"%%%1\")\ bx_field = _inner_src:match(\"%[%s*\" .. esc .. \"%.([%a_][%w_]*)%s*%]%s*%-\")\ end\ \ local pf_const, pf_instr, pf_sub, pf_params = \"\", \"\", \"\", \"\"\ if runner_fn then\ local esc_rf = runner_fn:gsub(\"([%^%$%(%)%%%.%[%]%*%+%-%?])\", \"%%%1\")\ local runner_start = _inner_src:find(\"function%s+\" .. esc_rf)\ if runner_start then\ local chunk = _inner_src:sub(runner_start, runner_start + 6000)\ local pf = {}\ for f in chunk:gmatch(\"local%s+[%a_][%w_]*%s*=%s*[%a_][%w_]*%.([%a_][%w_]*)\") do\ pf[#pf+1] = f\ end\ pf_const = pf[1] or \"\"\ pf_instr = pf[2] or \"\"\ pf_sub = pf[3] or \"\"\ pf_params = pf[4] or \"\"\ end\ end\ \ local kval_key = _inner_src:match(\ 'local%s+[%a_][%w_]*%s*,%s*[%a_][%w_]*%s*,%s*[%a_][%w_]*%s*,%s*[%a_][%w_]*%s*=%s*\"([^\"]+)\"') or \"\"\ \ if ftbl_name and ftbl_keys and runner_fn\ and op_field and bx_field and #ftbl_keys >= 4 then\ local a_field, b_field, c_field\ for _, k in ipairs(ftbl_keys) do\ if k ~= op_field and k ~= bx_field then\ if not a_field then a_field = k\ elseif not b_field then b_field = k\ elseif not c_field then c_field = k\ end\ end\ end\ if a_field and b_field and c_field then\ v92_info = {\ ftbl = ftbl_name,\ op = op_field,\ a = a_field,\ b = b_field,\ c = c_field,\ bx = bx_field,\ runner_fn = runner_fn,\ pf_const = pf_const,\ pf_instr = pf_instr,\ pf_sub = pf_sub,\ pf_params = pf_params,\ kval_key = kval_key,\ }\ log((\"luraph_v92: stage2 ok: ftbl=%s op=%s a=%s b=%s c=%s bx=%s\")\ :format(ftbl_name, op_field, a_field, b_field, c_field, bx_field))\ else\ log(\"luraph_v92: stage2: not enough remaining fields for a/b/c\")\ end\ else\ log((\"luraph_v92: stage2: incomplete (ftbl=%s runner=%s op=%s bx=%s)\")\ :format(tostring(ftbl_name), tostring(runner_fn),\ tostring(op_field), tostring(bx_field)))\ end\ end\ \ local V92_SERIALIZER_BODY = [[\ local __lines, __next_id = {}, 0\ local function __emit(s) __lines[#__lines+1] = s end\ \ local function __safe(s)\ if type(s) ~= \"string\" then return tostring(s) end\ local r = {}\ for i = 1, #s do\ local b = s:byte(i)\ if b == 10 then r[#r+1] = \"\\\\n\"\ elseif b == 13 then r[#r+1] = \"\\\\r\"\ elseif b == 9 then r[#r+1] = \"\\\\t\"\ elseif b == 92 then r[#r+1] = \"\\\\\\\\\"\ elseif b >= 32 and b <= 126 then r[#r+1] = string.char(b)\ else r[#r+1] = string.format(\"\\\\x%02X\", b)\ end\ end\ return table.concat(r)\ end\ \ local function __const_value(c)\ if type(c) ~= \"table\" then return type(c), c end\ local v = c[__KVAL_KEY]\ if v == nil then for _, vv in pairs(c) do v = vv; break end end\ if type(v) == \"string\" and #v >= 3\ and v:byte(1) == 0 and v:byte(2) == 0 and v:byte(3) == 0 then\ return \"string\", v:sub(4)\ end\ return type(v), v\ end\ \ local function __dump_proto(proto, id, path)\ local consts = proto[__FK_CONST] or {}\ local instrs = proto[__FK_INSTR] or {}\ local subs = proto[__FK_SUB] or {}\ local nparams = proto[__FK_PARAMS] or 0\ local sub_ids = {}\ \ local lo, hi = math.huge, -math.huge\ for k in pairs(subs) do\ if type(k) == \"number\" then\ if k < lo then lo = k end\ if k > hi then hi = k end\ end\ end\ if lo == math.huge then lo, hi = 0, -1 end\ \ __emit(string.format(\"PROTO %d %s %s\", id, path,\ type(nparams) == \"number\" and tostring(math.floor(nparams + 0.5))\ or tostring(nparams)))\ \ local clo, chi = math.huge, -math.huge\ for k in pairs(consts) do\ if type(k) == \"number\" then\ if k < clo then clo = k end\ if k > chi then chi = k end\ end\ end\ if clo == math.huge then clo, chi = 0, -1 end\ for i = clo, chi do\ local c = consts[i]\ if c ~= nil then\ local tp, v = __const_value(c)\ if tp == \"string\" then\ __emit(string.format(\"K %d S %s\", i, __safe(v)))\ elseif tp == \"number\" then\ if v == math.floor(v) and math.abs(v) < 1e15 then\ __emit(string.format(\"K %d N %d\", i, v))\ else\ __emit(string.format(\"K %d F %.17g\", i, v))\ end\ elseif tp == \"boolean\" then\ __emit(string.format(\"K %d B %s\", i, tostring(v)))\ elseif tp == \"nil\" then\ __emit(string.format(\"K %d X nil\", i))\ else\ __emit(string.format(\"K %d ? %s\", i, tostring(v)))\ end\ end\ end\ \ for i = lo, hi do\ if subs[i] ~= nil then\ __next_id = __next_id + 1\ sub_ids[i] = __next_id\ __emit(string.format(\"P %d %d\", i, __next_id))\ end\ end\ \ local ilo, ihi = math.huge, -math.huge\ for k in pairs(instrs) do\ if type(k) == \"number\" then\ if k < ilo then ilo = k end\ if k > ihi then ihi = k end\ end\ end\ if ilo == math.huge then ilo, ihi = 1, 0 end\ for i = ilo, ihi do\ local I = instrs[i]\ if type(I) == \"table\" then\ __emit(string.format(\"I %d %d %d %d %d %d\",\ i,\ tonumber(I[__FOP]) or 0,\ tonumber(I[__FA]) or 0,\ tonumber(I[__FB]) or 0,\ tonumber(I[__FC]) or 0,\ tonumber(I[__FBX]) or 0))\ end\ end\ \ __emit(\"END\")\ \ for i = lo, hi do\ if subs[i] ~= nil then\ __dump_proto(subs[i], sub_ids[i], path .. \".\" .. tostring(i))\ end\ end\ end\ \ local function __SERIALIZE(proto)\ __emit(\"VERSION 1\")\ __dump_proto(proto, 0, \"main\")\ local fh = assert(io.open(__OUT, \"w\"))\ fh:write(table.concat(__lines, \"\\n\")); fh:write(\"\\n\"); fh:close()\ os.exit(0)\ end\ ]]\ \ if v92_info then\ local nfo = v92_info\ local tpl_header =\ \"local __FTBL = \" .. nfo.ftbl .. \"\\n\" ..\ \"local __FOP, __FA, __FB, __FC, __FBX =\\n\" ..\ \" __FTBL.\" .. nfo.op .. \", __FTBL.\" .. nfo.a ..\ \", __FTBL.\" .. nfo.b .. \",\\n\" ..\ \" __FTBL.\" .. nfo.c .. \", __FTBL.\" .. nfo.bx .. \"\\n\" ..\ 'local __FK_CONST = \"' .. nfo.pf_const .. '\"\\n' ..\ 'local __FK_INSTR = \"' .. nfo.pf_instr .. '\"\\n' ..\ 'local __FK_SUB = \"' .. nfo.pf_sub .. '\"\\n' ..\ 'local __FK_PARAMS = \"' .. nfo.pf_params .. '\"\\n' ..\ 'local __KVAL_KEY = \"' .. nfo.kval_key .. '\"\\n' ..\ 'local __OUT = \"' .. (__LR_TRACE_PATH or \"luraph_v92_trace.txt\") .. '\"\\n'\ \ local full_tpl = tpl_header .. V92_SERIALIZER_BODY\ \ local entry_pat =\ \"local%s+([%a_][%w_]*)%s*=%s*([%a_][%w_]*)%s*%(%s*%)%s+\" ..\ \"return%s+([%a_][%w_]*)%s*%(%s*[%a_][%w_]*%s*%)%s*%(%s*%)%s+end\"\ \ local s_off, e_off, pvar, pfn, rfn = _inner_src:find(entry_pat)\ if s_off then\ local replacement =\ \"local \" .. pvar .. \" = \" .. pfn .. \"() \" ..\ \"do \" .. full_tpl ..\ \" __SERIALIZE(\" .. pvar .. \") end \" ..\ \"return end\"\ local patched_inner =\ _inner_src:sub(1, s_off - 1) ..\ replacement ..\ _inner_src:sub(e_off + 1)\ \ log(\"luraph_v92: stage3 injecting serializer into inner VM...\")\ local fn2, lerr2 = _orig_load(patched_inner, \"=luraph_v92_inner\")\ if fn2 then\ local ok2, rerr2 = pcall(fn2)\ if not ok2 then\ log(\"luraph_v92: inner run error: \" .. tostring(rerr2))\ end\ else\ log(\"luraph_v92: inner load error: \" .. tostring(lerr2))\ end\ \ local trace_path = __LR_TRACE_PATH or \"luraph_v92_trace.txt\"\ local tf = io.open(trace_path, \"r\")\ if tf then\ local trace = tf:read(\"*a\"); tf:close()\ log((\"luraph_v92: stage3 trace written (%d bytes) -> %s\")\ :format(#trace, trace_path))\ else\ log(\"luraph_v92: stage3 trace not written (serializer may have failed)\")\ end\ else\ log(\"luraph_v92: stage3 entry pattern not matched in inner source\")\ end\ end\ \ dump_and_exit(\ \"-- ============================================================\\n\" ..\ \"-- [FlameDumperV2] Luraph v92 Inner VM Source (Stage 1)\\n\" ..\ \"-- Field table : \" .. (v92_info and v92_info.ftbl or \"unknown (stage2 failed)\") .. \"\\n\" ..\ \"-- Runner fn : \" .. (v92_info and v92_info.runner_fn or \"unknown\") .. \"\\n\" ..\ \"-- Stage 3 : \" .. (v92_info and \"attempted (check luraph_v92_trace.txt)\" or \"skipped\") .. \"\\n\" ..\ \"-- Next steps : run `python [internal] --from-inner `\\n\" ..\ \"-- ============================================================\\n\\n\" ..\ _inner_src,\ \"luraph_v92-stage1\")\ end\ end\ \ if kind == \"trap\" then\ local cleaned = prepared\ cleaned = cleaned:gsub(\"if%s+[^\\n]-then%s+while%s+true%s+do%s+end%s+end%s*\", \"\")\ cleaned = cleaned:gsub(\ \"local%s+[%w_]+%s*=%s*os%.clock%(%s*%)%s*for%s+[%w_]+=%s*[^\\n]-do%s+[^\\n]-end%s*\",\ \"\")\ cleaned = cleaned:gsub(\"^%s+\", \"\"):gsub(\"%s+$\", \"\")\ if cleaned ~= \"\" then\ log((\"trap: stripped trap-chain, payload = %d bytes\"):format(#cleaned))\ dump_and_exit(cleaned, \"trap-source\")\ else\ log(\"trap: nothing left after stripping, falling back to runtime\")\ end\ end\ \ if kind == \"timmy\" then\ local pat =\ \"elseif%s+%w+==%-?%d+%s+then%s+%w+={};\" ..\ \"for%s+%w+=0[Xx]?%d+,#%w+%s+do%s+%w+%[%w+%]=%w+%(%w+%[%w+%]%);end;\" ..\ \"(%w+)=_G%(%w+%);\" ..\ \"(local%s+%w+=loadstring%s+or%s+load;%w+=%w+%(%w+%);\" ..\ \"if%s+setfenv%s+then%s+setfenv%(%w+,getfenv%(0[Xx]?%d+%)%);end;\" ..\ \"return%s+%w+%(%.%.%.%);end;)\"\ local s_off, e_off, qn, tail = src:find(pat)\ if s_off then\ local cut_after = e_off - #tail\ local injection =\ 'local __f=io.open(\"' .. OUTPUT:gsub('\"','\\\\\"') .. '\",\"wb\");' ..\ '__f:write(' .. qn .. ');__f:close();' ..\ 'if __bypass_follow_url then __bypass_follow_url(\"' ..\ OUTPUT:gsub('\"','\\\\\"') .. '\") end;' ..\ 'os.exit(0);end;'\ prepared = src:sub(1, cut_after) .. injection .. src:sub(e_off + 1)\ patched_in_place = true\ log((\"source-patch matched at %d, var=%s\"):format(s_off, qn))\ end\ end\ \ if kind == \"namaiki\" then\ \ install_capture()\ \ local sidecar_luac = OUTPUT .. \".luac\"\ local out_esc = sidecar_luac:gsub('\"', '\\\\\"')\ local rep_esc = (OUTPUT .. \".report.txt\"):gsub('\"', '\\\\\"')\ \ local DUMP_HELPER =\ 'local function __b64d(s)' ..\ 'local b=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";' ..\ 's=string.gsub(s,\"[^\"..b..\"=]\",\"\");' ..\ 'return(s:gsub(\".\",function(c)if c==\"=\"then return\"\"end;' ..\ 'local d,e=\"\",b:find(c)-1;for f=6,1,-1 do ' ..\ 'd=d..(e%2^f-e%2^(f-1)>0 and\"1\"or\"0\")end;return d end)' ..\ ':gsub(\"%d%d%d?%d?%d?%d?%d?%d?\",function(c)if #c~=8 then return\"\"end;' ..\ 'local g=0;for f=1,8 do ' ..\ 'g=g+(c:sub(f,f)==\"1\"and 2^(8-f)or 0)end;' ..\ 'return string.char(g)end))end;' ..\ 'local function __extract_strings(bin)' ..\ 'local out={};local run=\"\";' ..\ 'for i=1,#bin do local b=string.byte(bin,i);' ..\ 'if b>=32 and b<127 then run=run..string.char(b)' ..\ 'else if #run>=4 then out[#out+1]=run end;run=\"\" end end;' ..\ 'if #run>=4 then out[#out+1]=run end;return out end;' ..\ 'local function __namaiki_dump(raw)' ..\ 'local bin=raw;' ..\ 'local ok,dec=pcall(__b64d,raw);' ..\ 'if ok and dec and #dec>100 and dec:sub(1,1)==\"\\\\27\" then bin=dec end;' ..\ 'local f=assert(io.open(\"' .. out_esc .. '\",\"wb\"));f:write(bin);f:close();' ..\ 'io.stderr:write((\"[namaiki] bytecode dumped: \"..tostring(#bin)..\" bytes -> ' .. out_esc .. '\\\\n\"));' ..\ 'local strs=__extract_strings(bin);' ..\ 'local seen={};local uniq={};' ..\ 'for _,s in ipairs(strs) do if not seen[s] then seen[s]=true;uniq[#uniq+1]=s end end;' ..\ 'local rf=assert(io.open(\"' .. rep_esc .. '\",\"wb\"));' ..\ 'rf:write(\"-- Namaiki Bytecode String Report\\\\n\");' ..\ 'rf:write(\"-- Source : ' .. (INPUT or \"?\"):gsub('\"','\\\\\"') .. '\\\\n\");' ..\ 'rf:write(\"-- Bytecode size : \"..tostring(#bin)..\" bytes\\\\n\");' ..\ 'rf:write(\"-- Strings found : \"..tostring(#uniq)..\"\\\\n\\\\n\");' ..\ 'for i,s in ipairs(uniq) do rf:write(tostring(i)..\". \"..s..\"\\\\n\") end;' ..\ 'rf:close();' ..\ 'io.stderr:write((\"[namaiki] string report: \"..tostring(#uniq)..\" entries -> ' .. rep_esc .. '\\\\n\"));' ..\ 'return raw end;'\ \ local sA, eA, vm_fn, dec_fn, key_v, pay_v\ local last_head_s\ local head_pat = \"return%s+(llII%w+)%((llII%w+)%(([%w_]+)%s*,%s*(llII%w+)%)\"\ do\ local pos = 1\ while true do\ local hs, he, vmF, deF, kV, pV = prepared:find(head_pat, pos)\ if not hs then break end\ last_head_s, vm_fn, dec_fn, key_v, pay_v = hs, vmF, deF, kV, pV\ pos = he + 1\ end\ end\ if last_head_s then\ local open_paren = prepared:find(\"(\", last_head_s, true)\ if open_paren then\ local depth, i, n = 0, open_paren, #prepared\ while i <= n do\ local c = prepared:sub(i, i)\ if c == \"(\" then depth = depth + 1\ elseif c == \")\" then\ depth = depth - 1\ if depth == 0 then\ local tail = prepared:sub(i + 1, i + 2)\ if tail == \"()\" then\ sA, eA = last_head_s, i + 2\ end\ break\ end\ end\ i = i + 1\ end\ end\ end\ \ if sA then\ \ if dec_fn and key_v and pay_v and vm_fn then\ local injection = DUMP_HELPER ..\ 'return ' .. vm_fn .. '(__namaiki_dump(' ..\ dec_fn .. '(' .. key_v .. ',' .. pay_v .. ')),' ..\ 'getfenv(0))()'\ prepared = prepared:sub(1, sA-1) .. injection .. prepared:sub(eA+1)\ patched_in_place = true\ log((\"namaiki A: tap at %d vm=%s decrypt=%s key=%s pay=%s\"):format(\ sA, vm_fn, dec_fn, key_v, pay_v))\ elseif dec_fn and key_v and pay_v then\ local injection = DUMP_HELPER ..\ '__namaiki_dump(' .. dec_fn .. '(' .. key_v .. ',' .. pay_v .. '))'\ prepared = prepared:sub(1, sA-1) .. injection .. prepared:sub(eA+1)\ patched_in_place = true\ log((\"namaiki A: dump-only at %d decrypt=%s key=%s pay=%s\"):format(\ sA, dec_fn, key_v, pay_v))\ else\ log(\"namaiki A: matched return but could not unpack args, using hook\")\ end\ end\ \ if not patched_in_place then\ local patB = \"return%s+llII%w+%(llII%w+%(llII%w+,llII%w+%),getfenv%b()%)%(%)$\"\ local sB = prepared:find(patB)\ if sB or prepared:find(\"namaiki\", 1, true) or\ prepared:find(\"{0,1,1,0}\", 1, true) then\ local hook = DUMP_HELPER ..\ 'local __tc_n=0;local __orig_tc=table.concat;' ..\ 'table.concat=function(t,sep,...)' ..\ 'local r=__orig_tc(t,sep,...);' ..\ 'if type(r)==\"string\" and #r>500 then ' ..\ '__tc_n=__tc_n+1; ' ..\ 'io.stderr:write((\"[namaiki] tc#\"..tostring(__tc_n)' ..\ '..\" size=\"..tostring(#r)..\"\\\\n\")); ' ..\ 'if __tc_n>=2 then __namaiki_dump(r) end end ' ..\ 'return r end;'\ prepared = hook .. prepared\ patched_in_place = true\ log(\"namaiki B: table.concat hook (2nd-call) injected\")\ else\ log(\"namaiki: no pattern matched, falling back to runtime hook\")\ end\ end\ end\ \ if kind == \"vvmer\" then\ local before = #prepared\ prepared = prepared:gsub(\"(%f[%w_])(%d+)([%a_][%w_]*)(%f[^%w_])\",\ function(b, digits, rest, e)\ if digits == \"0\" and (rest:sub(1,1) == \"x\" or rest:sub(1,1) == \"X\") then\ return b .. digits .. rest .. e\ end\ return b .. \"_\" .. digits .. rest .. e\ end)\ prepared = prepared:gsub(\ \"local%s+PARDQ%s*=%s*string%.len%s*%(%s*tostring%s*%(%s*math%.pi%s*%)%s*%)\",\ \"local PARDQ=16\")\ local concat_pat = \"(local%s+([%w_]+)%s*=%s*table%.concat%s*%(%s*[%w_]+%s*%))\"\ local s_off, e_off, full, var = prepared:find(concat_pat)\ if s_off then\ local injection = full ..\ ' local __f=io.open(\"' .. OUTPUT:gsub('\"','\\\\\"') .. '\",\"wb\");' ..\ '__f:write(' .. var .. ');__f:close();' ..\ 'io.stderr:write((\"[vvmer-dump] %d bytes\\\\n\"):format(#' .. var .. '));' ..\ 'if __bypass_follow_url then __bypass_follow_url(\"' ..\ OUTPUT:gsub('\"','\\\\\"') .. '\") end;' ..\ 'os.exit(0)'\ prepared = prepared:sub(1, s_off - 1) .. injection .. prepared:sub(e_off + 1)\ patched_in_place = true\ log((\"vvmer source-patch matched at %d, var=%s\"):format(s_off, var))\ end\ log((\"vvmer prep: %d -> %d bytes\"):format(before, #prepared))\ end\ \ if kind == \"scrlua\" then\ install_runtime_hook()\ local out_esc = OUTPUT:gsub('\"', '\\\\\"')\ local _scr_out = assert(io.open(OUTPUT, \"wb\"))\ _G.__scr_out = _scr_out\ local function _q(v)\ local t = type(v)\ if t == \"string\" then\ return string.format(\"%q\", v)\ elseif t == \"number\" or t == \"boolean\" or t == \"nil\" then\ return tostring(v)\ else\ return \"\" .. tostring(v)\ end\ end\ local function _arglist(...)\ local n = select(\"#\", ...)\ local parts = {}\ for i = 1, n do parts[i] = _q(select(i, ...)) end\ return table.concat(parts, \", \")\ end\ local function _emit(stmt)\ _scr_out:write(stmt .. \"\\n\"); _scr_out:flush()\ end\ local _real_print = print\ print = function(...)\ _emit(\"print(\" .. _arglist(...) .. \")\")\ return _real_print(...)\ end\ if warn then\ local _real_warn = warn\ warn = function(...) _emit(\"warn(\" .. _arglist(...) .. \")\"); return _real_warn(...) end\ end\ if io and io.write then\ local _real_iow = io.write\ io.write = function(...) _emit(\"io.write(\" .. _arglist(...) .. \")\"); return _real_iow(...) end\ end\ if not game then\ game = setmetatable({}, { __metatable = \"Instance\", __index = function(_, k)\ if k == \"HttpGet\" or k == \"HttpGetAsync\" then\ return function(_, url)\ _emit('game:' .. k .. '(' .. _q(url) .. ')')\ return \"\"\ end\ end\ return fake_service\ end })\ end\ patched_in_place = true\ log(\"scrlua: runtime load + side-effect hooks armed\")\ end\ \ if kind == \"luafuscator\" then\ local tail = prepared:find(\",{},...)\", 1, true)\ do\ local pos = tail\ while pos do\ tail = pos\ pos = prepared:find(\",{},...)\", pos + 1, true)\ end\ end\ local open_paren, vm_fn, key_var\ if tail then\ local depth, i = 1, tail - 1\ while i > 0 and depth > 0 do\ local c = prepared:sub(i, i)\ if c == \")\" then depth = depth + 1\ elseif c == \"(\" then\ depth = depth - 1\ if depth == 0 then break end\ end\ i = i - 1\ end\ if depth == 0 then\ open_paren = i\ local name_end = open_paren\ local name_start = name_end - 1\ while name_start > 0 do\ local c = prepared:sub(name_start, name_start)\ if not (c:match(\"[%w_]\")) then break end\ name_start = name_start - 1\ end\ name_start = name_start + 1\ vm_fn = prepared:sub(name_start, name_end - 1)\ key_var = prepared:match(\ \"local%s+(_[%w_]+)%s*=%s*_[%w_]+%s*%(%s*65%s*%)\")\ if not key_var then\ key_var = prepared:match(\ \"(_l[%w_]+)%s*=%s*_[%w_]+%s*%(%s*65%s*%)\")\ end\ if not key_var then\ local nearby = prepared:sub(math.max(1, open_paren - 4096),\ open_paren - 1)\ local best, blen = nil, 0\ for nm in nearby:gmatch(\"(_l[%w_]+)\") do\ if #nm >= 10 and #nm > blen then best, blen = nm, #nm end\ end\ key_var = best\ end\ end\ end\ \ if open_paren and vm_fn then\ local out_esc = OUTPUT:gsub('\\\\', '\\\\\\\\'):gsub('\"', '\\\\\"')\ local src_esc = (INPUT or \"?\"):gsub('\\\\', '\\\\\\\\'):gsub('\"', '\\\\\"')\ local key_expr = key_var or \"nil\"\ \ local LF_HOOK = [[\ local __LF_OUT = \"]] .. out_esc .. [[\";\ local __LF_SRC = \"]] .. src_esc .. [[\";\ local function __lfd_isarr(t)\ if type(t) ~= \"table\" then return false end\ local n = 0\ for k in pairs(t) do\ if type(k) ~= \"number\" then return false end\ n = n + 1\ end\ for i = 1, n do if t[i] == nil then return false end end\ return true, n\ end\ local function __lfd_q(s)\ s = s:gsub(\"\\\\\", \"\\\\\\\\\"):gsub('\"', '\\\\\"')\ :gsub(\"\\r\", \"\\\\r\"):gsub(\"\\n\", \"\\\\n\"):gsub(\"\\t\", \"\\\\t\")\ s = s:gsub(\"[%z\\1-\\31\\127]\", function(c)\ return string.format(\"\\\\%d\", string.byte(c)) end)\ return '\"' .. s .. '\"'\ end\ local function __lfd_dump(v, ind, seen)\ ind = ind or 0; seen = seen or {}\ local t = type(v)\ if t == \"nil\" or t == \"boolean\" or t == \"number\" then return tostring(v)\ elseif t == \"string\" then return __lfd_q(v)\ elseif t == \"function\" then return \"\"\ elseif t == \"table\" then\ if seen[v] then return \"\" end\ seen[v] = true\ local pad = string.rep(\" \", ind)\ local pad2 = string.rep(\" \", ind + 1)\ local isarr, n = __lfd_isarr(v)\ local out = {}\ if isarr then\ out[#out+1] = \"{\"\ for i = 1, n do\ out[#out+1] = pad2 .. \"[\" .. i .. \"] = \" ..\ __lfd_dump(v[i], ind + 1, seen) .. \",\"\ end\ out[#out+1] = pad .. \"}\"\ else\ out[#out+1] = \"{\"\ local keys = {}\ for k in pairs(v) do keys[#keys+1] = k end\ table.sort(keys, function(a, b) return tostring(a) < tostring(b) end)\ for _, k in ipairs(keys) do\ local kr\ if type(k) == \"string\" and k:match(\"^[%a_][%w_]*$\") then kr = k\ else kr = \"[\" .. __lfd_dump(k, 0, {}) .. \"]\" end\ out[#out+1] = pad2 .. kr .. \" = \" ..\ __lfd_dump(v[k], ind + 1, seen) .. \",\"\ end\ out[#out+1] = pad .. \"}\"\ end\ seen[v] = nil\ return table.concat(out, \"\\n\")\ end\ return \"<\" .. t .. \">\"\ end\ local function __lfd_count(proto, acc)\ acc = acc or {protos=0, ops=0, consts=0, strings=0}\ if type(proto) ~= \"table\" then return acc end\ if type(proto.bc) == \"table\" then acc.ops = acc.ops + #proto.bc end\ if type(proto.k) == \"table\" then\ for _, c in pairs(proto.k) do\ acc.consts = acc.consts + 1\ if type(c) == \"string\" then acc.strings = acc.strings + 1 end\ end\ end\ if type(proto.protos) == \"table\" then\ for _, p in pairs(proto.protos) do\ acc.protos = acc.protos + 1; __lfd_count(p, acc)\ end\ end\ return acc\ end\ local function __lfd_decode(proto, bx, cl, cf, key, acc)\ acc = acc or {}\ if type(proto) ~= \"table\" then return acc end\ if type(proto.s) == \"table\" and type(bx) == \"function\"\ and type(cl) == \"function\" and type(cf) == \"function\" then\ local rep = {}\ for i, item in pairs(proto.s) do\ if type(item) == \"table\" then\ local ok, dec = pcall(function()\ local cs = {}\ for j = 1, #item do cs[j] = cl(bx(item[j], key)) end\ return cf(cs)\ end)\ if ok and type(dec) == \"string\" then\ rep[i] = dec; acc[#acc+1] = dec\ else rep[i] = item end\ else rep[i] = item end\ end\ proto.s = rep\ end\ if type(proto.protos) == \"table\" then\ for _, p in pairs(proto.protos) do __lfd_decode(p, bx, cl, cf, key, acc) end\ end\ return acc\ end\ __lf_capture = function(lfr, bx, cl, cf, key, proto, upvals, ...)\ local acc = {}\ pcall(function() acc = __lfd_decode(proto, bx, cl, cf, key) end)\ local f = assert(io.open(__LF_OUT, \"w\"))\ f:write(\"-- ============================================================\\n\")\ f:write(\"-- Luafuscator v1.0.x proto dump\\n\")\ f:write(\"-- Source : \" .. tostring(__LF_SRC) .. \"\\n\")\ local c = __lfd_count(proto)\ f:write((\"-- Protos : %d (root + nested)\\n\"):format(c.protos + 1))\ f:write((\"-- Opcodes: %d total bytecode ops\\n\"):format(c.ops))\ f:write((\"-- Consts : %d (numbers in `k`)\\n\"):format(c.consts))\ f:write((\"-- Strings: %d decoded from `proto.s`\\n\"):format(#acc))\ local lfr_keys = {}\ if type(lfr) == \"table\" then\ for k in pairs(lfr) do lfr_keys[#lfr_keys+1] = k end\ table.sort(lfr_keys, function(a, b)\ if type(a) == type(b) then return a < b end\ return tostring(a) < tostring(b) end)\ f:write((\"-- _LFR : %d entries (sparse, all keys)\\n\"):format(#lfr_keys))\ end\ f:write(\"-- ============================================================\\n\\n\")\ if type(lfr) == \"table\" and #lfr_keys > 0 then\ f:write(\"-- ===== _LFR (pre-decoded string literals, sparse) =====\\n\")\ for _, k in ipairs(lfr_keys) do\ local v = lfr[k]\ local kr = type(k) == \"number\" and tostring(k) or (\"[\" .. tostring(k) .. \"]\")\ if type(v) == \"string\" then\ f:write((\"-- _LFR[%s] = %s\\n\"):format(kr, __lfd_q(v)))\ elseif type(v) == \"number\" or type(v) == \"boolean\" then\ f:write((\"-- _LFR[%s] = %s\\n\"):format(kr, tostring(v)))\ else\ f:write((\"-- _LFR[%s] = <%s>\\n\"):format(kr, type(v)))\ end\ end\ f:write(\"\\n\")\ end\ if #acc > 0 then\ f:write(\"-- ===== Decoded proto.s strings (traversal order) =====\\n\")\ for i, s in ipairs(acc) do\ f:write((\"-- [%d] %s\\n\"):format(i, __lfd_q(s)))\ end\ f:write(\"\\n\")\ end\ f:write(\"-- ===== Full proto tree (with proto.s decoded in-place) =====\\n\")\ f:write(\"local proto = \")\ f:write(__lfd_dump(proto, 0, {}))\ f:write(\"\\nreturn proto\\n\")\ f:close()\ io.stderr:write((\"[luafuscator] dumped: %d protos, %d ops, %d strings -> %s\\n\")\ :format(c.protos + 1, c.ops, #acc, __LF_OUT))\ os.exit(0)\ end\ ]]\ \ local name_start = open_paren - #vm_fn\ local extras = \"_LFR, _LFR[1002], _LFR[1004], _LFR[1005], \"\ .. key_expr .. \", \"\ prepared = prepared:sub(1, name_start - 1)\ .. \"__lf_capture(\" .. extras\ .. prepared:sub(open_paren + 1)\ prepared = LF_HOOK .. \"\\n\" .. prepared\ patched_in_place = true\ io.stderr:write((\"[luafuscator] hook armed: vm_fn=%s key_var=%s tail@%d\\n\"):format(\ vm_fn, tostring(key_var), open_paren))\ else\ log(\"luafuscator: tail signature not found, falling back to runtime hook\")\ end\ end\ \ if kind == \"moonsec\" then\ log(\"moonsec: arming full 6-strategy deobfuscator (S0-S5)\")\ \ local _ms_dumped = false\ local _ms_candidates = {}\ \ local function _clean_ms(s)\ if type(s) ~= \"string\" or #s == 0 then return s end\ s = s:gsub(\"^\\xef\\xbb\\xbf\", \"\"):gsub(\"^\\0+\", \"\")\ local again = true\ while again do\ again = false\ local ln = s:match(\"^(%-%-[^\\n]*\\n)\")\ if ln and (ln:find(\"MoonSec\", 1,true) or ln:find(\"moonsec\", 1,true) or\ ln:find(\"Obfuscat\", 1,true) or ln:find(\"obfuscat\", 1,true) or\ ln:find(\"Protected\", 1,true) or ln:find(\"FlameDumper\",1,true)) then\ s = s:sub(#ln + 1); again = true\ end\ end\ s = s:match(\"^(.-)%s*$\") or s\ return \"-- [FlameDumperV3] MoonSec decoded payload\\n\" .. s\ end\ \ local function _is_ms_vm(s)\ if type(s) ~= \"string\" or #s == 0 then return true end\ local np = 0\ for i = 1, math.min(#s, 256) do\ local b = s:byte(i)\ if b ~= 9 and b ~= 10 and b ~= 13 and (b < 32 or b == 127) then\ np = np + 1\ end\ end\ if np > 20 then return true end\ if s:find(\"MoonSec\",1,true) or s:find(\"moonsec\",1,true) then return true end\ if not s:find(\"while%s+true%s+do\") then return false end\ local elseif_n = 0\ for _ in s:gmatch(\"elseif%s+[%w_]+%s*==%s*%d+%s+then\") do\ elseif_n = elseif_n + 1\ if elseif_n >= 15 then break end\ end\ if elseif_n < 15 then return false end\ local ident_n = 0\ for _ in s:gmatch(\"[lI][lI1][lI1][lI1][lI1][lI1][lI1][lI1]+\") do\ ident_n = ident_n + 1\ if ident_n >= 4 then break end\ end\ return ident_n >= 4\ end\ \ local function _ms_try_dump(s, tag)\ if _ms_dumped then return true end\ if type(s) ~= \"string\" or #s < 8 then return false end\ if _is_ms_vm(s) then return false end\ local ok = _real_load(s, \"ms_validate\")\ local is_bc = s:sub(1,4) == \"\\27Lua\"\ if ok or is_bc then\ _ms_dumped = true\ dump_and_exit(_clean_ms(s), tag)\ return true\ end\ local has_kw = s:find(\"%f[%a]local%f[%A]\") or\ s:find(\"%f[%a]function%f[%A]\") or\ s:find(\"%f[%a]return%f[%A]\") or\ s:find(\"game%s*:\") or\ s:find(\"workspace%s*.\") or\ s:find(\"Players%s*:\")\ if has_kw and #s > 30 then\ _ms_dumped = true\ dump_and_exit(_clean_ms(s), tag .. \"-heuristic\")\ return true\ end\ return false\ end\ \ do\ local best_nums = nil\ local best_len = 0\ for arr in prepared:gmatch(\"{%s*(%d[^}]-)%s*}\") do\ local nums = {}\ for n in arr:gmatch(\"%d+\") do\ nums[#nums + 1] = tonumber(n) or 0\ end\ if #nums > best_len and #nums >= 30 then\ best_nums = nums\ best_len = #nums\ end\ end\ \ if best_nums then\ log((\"moonsec S0: found array with %d elements, \"\ ..\"brute-forcing XOR key 0-255\"):format(best_len))\ \ local function _xor_decode(nums, keyfn)\ local t = {}\ for i, n in ipairs(nums) do\ t[i] = string.char(keyfn(i, n) % 256)\ end\ return table.concat(t)\ end\ \ for k = 0, 255 do\ local decoded = _xor_decode(best_nums,\ function(_, n) return n ~ k end)\ if _ms_try_dump(decoded,\ (\"moonsec-S0-xor%d\"):format(k)) then\ break\ end\ end\ \ if not _ms_dumped then\ log(\"moonsec S0: single-byte XOR failed, trying rolling-XOR\")\ for k = 0, 255 do\ local decoded = _xor_decode(best_nums,\ function(i, n) return n ~ ((k + i - 1) % 256) end)\ if _ms_try_dump(decoded,\ (\"moonsec-S0-roll%d\"):format(k)) then\ break\ end\ end\ end\ \ if not _ms_dumped then\ log(\"moonsec S0: rolling-XOR failed, trying multiply-XOR\")\ for k = 1, 255 do\ local decoded = _xor_decode(best_nums,\ function(i, n) return n ~ ((k * i) % 256) end)\ if _ms_try_dump(decoded,\ (\"moonsec-S0-mul%d\"):format(k)) then\ break\ end\ end\ end\ \ if _ms_dumped then\ log(\"moonsec S0: static deobfuscation SUCCEEDED\")\ else\ log(\"moonsec S0: all XOR variants exhausted, using runtime hooks\")\ end\ else\ log(\"moonsec S0: no numeric array found, skipping static path\")\ end\ end\ \ if not _G.setfenv then\ _G.setfenv = function(f, env)\ if type(f) == \"function\" then\ local i = 1\ while true do\ local nm = debug.getupvalue(f, i)\ if nm == \"_ENV\" then debug.setupvalue(f, i, env); return f\ elseif not nm then break end\ i = i + 1\ end\ end\ return f\ end\ end\ if not _G.getfenv then\ _G.getfenv = function(f)\ if type(f) == \"function\" then\ local i = 1\ while true do\ local nm, val = debug.getupvalue(f, i)\ if nm == \"_ENV\" then return val end\ if not nm then break end\ i = i + 1\ end\ end\ return _G\ end\ end\ _G.identifyexecutor = _G.identifyexecutor or function() return \"FlameDumperV3\",\"3.0\" end\ _G.getexecutorname = _G.getexecutorname or function() return \"FlameDumperV3\" end\ _G.syn = _G.syn or { request = function() return {Body=\"\"} end }\ \ if not _ms_dumped then\ local _b = #prepared\ prepared = prepared:gsub(\"^%s*%-%-[^\\n]*[Mm]oon[Ss]ec[^\\n]*\\n\", \"\")\ prepared = prepared:gsub(\"^%s*%-%-[^\\n]*[Oo]bfuscat[^\\n]*\\n\", \"\")\ prepared = prepared:gsub(\"^%s*%-%-[^\\n]*[Pp]rotected[^\\n]*\\n\", \"\")\ prepared = prepared:gsub(\ 'assert%s*%(%s*_VERSION%s*==%s*[\"\\']Lua%s*5%.1[\"\\']%s*,?[^%)]*%)',\ \"-- [ms-patch] _VERSION==Lua5.1 assert removed\")\ prepared = prepared:gsub(\ \"if%s+not%s+game%s+then%s+error%s*%([^%)]*%)%s*end\",\ \"-- [ms-patch] game-check removed\")\ prepared = prepared:gsub(\ \"if%s+not%s+script%s+then%s+error%s*%([^%)]*%)%s*end\",\ \"-- [ms-patch] script-check removed\")\ prepared = prepared:gsub(\ 'identifyexecutor%s*%(%s*%)%s*~=%s*[\"\\'][^\"\\']*[\"\\']',\ \"true\")\ if #prepared ~= _b then\ log((\"moonsec S4: stripped %d bytes of watermark/anti-tamper\"):format(_b - #prepared))\ end\ end\ \ if not _ms_dumped then\ local _ms_orig_exit = os.exit\ os.exit = function(code, ...)\ if not _ms_dumped and #_ms_candidates > 0 then\ for i = #_ms_candidates, 1, -1 do\ if _ms_try_dump(_ms_candidates[i], \"moonsec-flush-best\") then\ break\ end\ end\ if not _ms_dumped then\ local last = _ms_candidates[#_ms_candidates]\ if last and #last > 0 then\ _ms_dumped = true\ dump_and_exit(_clean_ms(last), \"moonsec-flush-last\")\ end\ end\ end\ return _ms_orig_exit(code, ...)\ end\ \ local _ms_orig_load = _real_load\ local function _ms_load_hook(s, name, ...)\ if type(s) == \"string\" and not _ms_dumped then\ if #s > 10 then\ _ms_candidates[#_ms_candidates + 1] = s\ end\ _ms_try_dump(s, \"moonsec-S1-load-hook\")\ end\ return _ms_orig_load(s, name, ...)\ end\ load = _ms_load_hook\ loadstring = _ms_load_hook\ \ local _ms_orig_pcall = pcall\ pcall = function(fn, ...)\ local args = {...}\ if (fn == load or fn == loadstring or fn == _ms_orig_load)\ and type(args[1]) == \"string\"\ and not _ms_dumped then\ local s = args[1]\ if #s > 10 then\ _ms_candidates[#_ms_candidates + 1] = s\ end\ _ms_try_dump(s, \"moonsec-S5-pcall-hook\")\ end\ return _ms_orig_pcall(fn, ...)\ end\ \ local _ms_tc_orig = table.concat\ table.concat = function(t, sep, i, j)\ local r = _ms_tc_orig(t, sep, i, j)\ if type(r) == \"string\" and #r > 200 and not _ms_dumped then\ _ms_try_dump(r, \"moonsec-S2-concat-hook\")\ end\ return r\ end\ end\ \ patched_in_place = true\ log((\"moonsec: pipeline armed — S0(static-XOR) S1(load) S2(concat) \"\ ..\"S3(env-stubs) S4(strip) S5(pcall)\"))\ end\ \ if kind == \"prometheus\" or kind == \"psu\" or kind == \"xor_loader\" then\ install_runtime_hook()\ patched_in_place = true\ log((\"%s: runtime load-hook armed (dump on first load/loadstring call)\")\ :format(kind))\ end\ \ if kind == \"ironbrew\" then\ install_capture()\ local sidecar = OUTPUT .. \".luac\"\ local out_esc = sidecar:gsub('\"', '\\\\\"')\ local hook =\ 'local __orig_tc = table.concat;' ..\ 'local __ib_dumped = false;' ..\ 'table.concat = function(t, sep, ...)' ..\ ' local r = __orig_tc(t, sep, ...);' ..\ ' if (not __ib_dumped) and type(r) == \"string\" and #r > 64 then' ..\ ' local h = r:sub(1, 4);' ..\ ' if h == \"\\\\27Lua\" or h == \"\\\\27LJ\\\\1\" or h == \"\\\\27LJ\\\\2\"' ..\ ' or h:sub(1,3) == \"\\\\27LJ\" then' ..\ ' __ib_dumped = true;' ..\ ' local f = assert(io.open(\"' .. out_esc .. '\", \"wb\"));' ..\ ' f:write(r); f:close();' ..\ ' io.stderr:write((\"[ironbrew] bytecode dumped: \" ..' ..\ ' tostring(#r) .. \" bytes -> ' .. out_esc .. '\\\\n\"));' ..\ ' end' ..\ ' end' ..\ ' return r' ..\ 'end;'\ prepared = hook .. prepared\ patched_in_place = true\ log(\"ironbrew: table.concat hook armed for bytecode dump\")\ end\ \ if kind == \"ironbrew2\" then\ install_capture()\ log(\"ironbrew2: VM module detected — applying multi-trap bypass\")\ \ local IB2_MAX_ITER = 65536\ local a4_sites = 0\ prepared = prepared:gsub(\ \"(while%s+true%s+do%s*)([%w_]+%s*,%s*[%w_]+%s*,%s*[%w_]+%s*=%s*[%w_]+%s*:a4%s*%b())\",\ function(while_tok, a4_expr)\ a4_sites = a4_sites + 1\ return (\"local _ib2_g_%d=0;\"):format(a4_sites) ..\ while_tok ..\ (\"_ib2_g_%d=_ib2_g_%d+1;\"):format(a4_sites, a4_sites) ..\ (\"if _ib2_g_%d>%d then break end;\"):format(a4_sites, IB2_MAX_ITER) ..\ a4_expr\ end)\ if a4_sites > 0 then\ patched_in_place = true\ log((\"ironbrew2: patched %d a4-loop site(s) with %d-iteration guard\"):format(\ a4_sites, IB2_MAX_ITER))\ else\ log(\"ironbrew2: WARNING: a4-loop pattern not matched in source — shape may differ; relying on runtime fallback\")\ end\ \ local pfx = table.concat({\ \"_G._IB2_CONT = 6848;\",\ \"_G._IB2_BREAK = 0xa5a5;\",\ \ \"if not setfenv then\",\ \" setfenv = function(f,e)\",\ \" if type(f)=='function' then\",\ \" local i=1\",\ \" while true do\",\ \" local n=debug.getupvalue(f,i)\",\ \" if n==nil then break end\",\ \" if n=='_ENV' then debug.setupvalue(f,i,e); return end\",\ \" i=i+1\",\ \" end\",\ \" end\",\ \" end;\",\ \" getfenv = function(f)\",\ \" if f==nil or f==0 then return _G end\",\ \" if type(f)=='function' then\",\ \" local i=1\",\ \" while true do\",\ \" local n,v=debug.getupvalue(f,i)\",\ \" if n==nil then break end\",\ \" if n=='_ENV' then return v end\",\ \" i=i+1\",\ \" end\",\ \" end\",\ \" return _G\",\ \" end;\",\ \"end;\",\ \ \"if not rawget(_G,'h4') then\",\ \" _G.h4=function(_self,j,_O,_q) return j end;\",\ \"end;\",\ \ \"if not rawget(_G,'z4') then\",\ \" _G.z4=function(_self,j,_O,_q) return j end;\",\ \"end;\",\ \ \"if not rawget(_G,'a4') then\",\ \" _G.a4=function(_self,j,_O,L,_q) return L,0xa5a5,j end;\",\ \"end;\",\ \ \"if not rawget(_G,'T4') then\",\ \" _G.T4=function(_self,_p,_q,_j) end;\",\ \"end;\",\ \ \"if not rawget(_G,'oL') then\",\ \" _G.oL=function(R,H,q) if type(R)=='table' then R[H]=q end end;\",\ \"end;\",\ \ \"if not rawget(_G,'r4') then\",\ \" _G.r4=function(_self,R,H)\",\ \" if H==10 and type(R)=='table' and R[33] then\",\ \" for q=32,208,50 do\",\ \" if q>32 then R[33][q]=nil end\",\ \" end\",\ \" end\",\ \" end;\",\ \"end;\",\ }, \"\\n\")\ \ prepared = pfx .. \"\\n\" .. prepared\ patched_in_place = true\ log(\"ironbrew2: runtime prefix injected (sentinels + setfenv + h4/z4/a4/T4/oL/r4 fallbacks)\")\ end\ \ if kind == \"bytecode_loader\" then\ local function decode_escapes(esc)\ local out, i, n = {}, 1, #esc\ while i <= n do\ local c = esc:sub(i, i)\ if c == \"\\\\\" and i < n then\ local nxt = esc:sub(i + 1, i + 1)\ if nxt:match(\"%d\") then\ local j = i + 1\ while j <= n and esc:sub(j, j):match(\"%d\") and (j - i) <= 3 do\ j = j + 1\ end\ out[#out+1] = string.char(tonumber(esc:sub(i+1, j-1)) % 256)\ i = j\ elseif nxt == \"x\" and i + 3 <= n then\ out[#out+1] = string.char(tonumber(esc:sub(i+2, i+3), 16) % 256)\ i = i + 4\ else\ local map = {n=\"\\n\", r=\"\\r\", t=\"\\t\", a=\"\\a\", b=\"\\b\",\ f=\"\\f\", v=\"\\v\", ['\"']='\"', [\"'\"]=\"'\", [\"\\\\\"]=\"\\\\\"}\ out[#out+1] = map[nxt] or nxt\ i = i + 2\ end\ else\ out[#out+1] = c; i = i + 1\ end\ end\ return table.concat(out)\ end\ \ local sidecar = OUTPUT .. \".luac\"\ local found_any = false\ for q, body in src:gmatch(\"([\\\"'])(\\\\0?27[^\\\"']-)%1\") do\ local raw = decode_escapes(body)\ local h = raw:sub(1, 4)\ if h == \"\\27Lua\" or h:sub(1, 3) == \"\\27LJ\" then\ local f = assert(io.open(sidecar, \"wb\"))\ f:write(raw); f:close()\ log((\"bytecode_loader: literal -> %s (%d bytes)\"):format(sidecar, #raw))\ local mf = assert(io.open(OUTPUT, \"wb\"))\ mf:write((\"-- bytecode literal extracted to %s\\n-- magic=%q size=%d\\n\")\ :format(sidecar, h, #raw))\ mf:close()\ found_any = true\ break\ end\ end\ if not found_any then\ log(\"bytecode_loader: no static literal found, arming runtime load-hook\")\ install_runtime_hook()\ end\ patched_in_place = true\ end\ \ if kind == \"vaq\" then\ local _vaq_log = {}\ local function vlog(s) _vaq_log[#_vaq_log+1] = s end\ \ local _api_seen = {}\ for nums_raw in src:gmatch(\"[dejk]%s*%((%d[%d,%s]+)%)\") do\ local ok, s2 = pcall(function()\ local nums = {}\ for n in nums_raw:gmatch(\"%d+\") do nums[#nums+1] = tonumber(n) end\ if #nums < 2 then return nil end\ local r = {}\ for _, n in ipairs(nums) do\ if n >= 32 and n <= 126 then r[#r+1] = string.char(n)\ else return nil end\ end\ return table.concat(r)\ end)\ if ok and s2 and #s2 >= 3 then\ _api_seen[s2] = true\ end\ end\ \ local patched = prepared\ local n_at = 0\ local _n\ patched, _n = patched:gsub(\"then%s+return%s+0%s+end\",\ \"then end\")\ n_at = n_at + _n\ patched, _n = patched:gsub(\"then%s+return%s+false%s+end\",\ \"then end\")\ n_at = n_at + _n\ patched, _n = patched:gsub(\"then%s+return%(b%.[_%w]+[^)]*%)%s+end\",\ \"then end\")\ n_at = n_at + _n\ patched, _n = patched:gsub(\"if%(e~=b%[.-%]%)then return%(b%.[_%w]+[^)]*%)\",\ \"if(false)then \")\ n_at = n_at + _n\ log((\"vaq: patched %d anti-tamper exit(s)\"):format(n_at))\ \ local _patched_clean = patched\ \ local _inj = [[\ do\ local __rp = print\ local __rw = (type(warn)==\"function\" and warn) or print\ _G.__vaq_injected = {}\ local __out = _G.__vaq_injected\ local function __val(v, depth)\ depth = depth or 0\ local t = type(v)\ if t == \"string\" then return v end\ if t == \"number\" or t == \"boolean\" then return tostring(v) end\ if t == \"nil\" then return \"nil\" end\ if t ~= \"table\" or depth > 2 then return tostring(v) end\ local mt = rawget(getmetatable(v) or {}, \"__tostring\")\ if mt then\ local ok, r = pcall(mt, v)\ if ok and type(r) == \"string\" then return r end\ end\ local name = rawget(v, \"Name\") or rawget(v, \"name\")\ if name then return tostring(name) end\ local txt = rawget(v, \"Text\") or rawget(v, \"Value\")\ if txt then return tostring(txt) end\ local parts = {}\ local n = 0\ for k, v2 in pairs(v) do\ n = n + 1\ if n > 8 then parts[#parts+1] = \"...\"; break end\ parts[#parts+1] = tostring(k)..\"=\"..tostring(v2)\ end\ if #parts > 0 then return \"{\"..table.concat(parts,\", \")..\"}\" end\ return tostring(v)\ end\ local function __cap(...)\ local n = select(\"#\", ...)\ local p = {}\ for i = 1, n do p[i] = __val(select(i, ...)) end\ local s = table.concat(p, \"\\t\")\ if not s:find(\"This code is protected\", 1, true)\ and s:sub(1,1) ~= \"*\"\ and s:sub(1,1) ~= \"{\"\ and not s:find(\"\\xE2\\xA0\", 1, true)\ and not s:match(\"^%s*$\")\ and not s:match(\"^%a+: 0x%x+$\") then\ __out[#__out + 1] = s\ end\ end\ print = function(...) __cap(...); return __rp(...) end\ warn = function(...) __cap(...); return __rw(...) end\ end\ ]]\ patched = _inj .. patched\ \ local _vaq_fmt_raw = {}\ local _vaq_rg = {}\ local _vaq_apis = {}\ local _vaq_game_svc= {}\ local _rg_count = 0\ local _kill_flag = false\ \ local _TIME_LIMIT = 10\ local _start_clock = os.clock()\ local _fmt_call_n = 0\ \ local _real_rawget = rawget\ rawget = function(t, k)\ local v = _real_rawget(t, k)\ if type(k) == \"string\" then\ local kl = #k\ if kl >= 3 and not _vaq_rg[k] then\ _vaq_rg[k] = type(v)\ _rg_count = _rg_count + 1\ end\ end\ return v\ end\ \ local _real_rawset = rawset\ rawset = function(t, k, v)\ if type(k) == \"string\" and #k >= 3\ and type(v) == \"string\" and #v >= 2\ and #v <= 120 then\ _vaq_apis[\"rset:\" .. v] = true\ end\ return _real_rawset(t, k, v)\ end\ \ local _real_sfmt = string.format\ string.format = function(fmt_str, ...)\ local r = _real_sfmt(fmt_str, ...)\ if type(r) == \"string\" and #r >= 2 and #r <= 120 then\ _vaq_fmt_raw[#_vaq_fmt_raw + 1] = r\ _fmt_call_n = _fmt_call_n + 1\ if _fmt_call_n % 5000 == 0 then\ if (os.clock() - _start_clock) > _TIME_LIMIT then\ _kill_flag = true\ error(\"__vaq_timeout__\", 0)\ end\ end\ end\ return r\ end\ \ local _real_tcat = table.concat\ table.concat = function(t, sep, ...)\ local r = _real_tcat(t, sep, ...)\ if type(r) == \"string\" and #r >= 4 and #r <= 120 then\ _vaq_apis[\"concat:\" .. r] = true\ end\ return r\ end\ \ local _real_print = print\ local _real_warn = warn or _real_print\ local function _time_check()\ if (os.clock() - _start_clock) > _TIME_LIMIT then\ _kill_flag = true\ error(\"__vaq_timeout__\", 0)\ end\ end\ local _printed = {}\ local function _capture(s)\ s = tostring(s or \"\")\ if s:sub(1, 31) == \"This code is protected with VAQ\" then return end\ if s:sub(1,1) == \"*\" then return end\ if s:find(\"\\xE2\\xA0\", 1, true) then return end\ if s:match(\"^%s*$\") then return end\ _printed[#_printed + 1] = s\ end\ local function _args_to_str(...)\ local args = {...}\ local parts = {}\ for i = 1, #args do parts[i] = tostring(args[i]) end\ return table.concat(parts, \"\\t\")\ end\ print = function(...)\ _time_check()\ _capture(_args_to_str(...))\ end\ warn = function(...)\ _time_check()\ _capture(_args_to_str(...))\ end\ \ local _ref_print = print\ local _ref_warn = warn\ local function _maybe_capture_task(f, ...)\ if f == _ref_print or f == _ref_warn then\ _capture(_args_to_str(...))\ else\ pcall(f, ...)\ end\ end\ task = task or {}\ local _real_task_spawn = task.spawn\ task.spawn = function(f, ...)\ _time_check()\ _maybe_capture_task(f, ...)\ end\ local _real_task_delay = task.delay\ task.delay = function(dt, f, ...)\ _time_check()\ _maybe_capture_task(f, ...)\ end\ local _real_task_defer = task.defer\ task.defer = function(f, ...)\ _time_check()\ _maybe_capture_task(f, ...)\ end\ \ local _vaq_fn, _vaq_lerr = (load or loadstring)(patched, \"=vaq_payload\")\ if _vaq_fn then\ local _vaq_ok, _vaq_err = pcall(_vaq_fn)\ local emsg = tostring(_vaq_err or \"\"):sub(1, 140)\ if not _vaq_ok then\ if _kill_flag then\ log(\"vaq: timeout after \" .. _rg_count .. \" rawget calls — dumping\")\ else\ log(\"vaq: runtime error: \" .. emsg)\ end\ else\ log(\"vaq: script finished cleanly\")\ end\ else\ log(\"vaq: load() error: \" .. tostring(_vaq_lerr):sub(1, 140))\ end\ \ rawget = _real_rawget\ rawset = _real_rawset\ string.format = _real_sfmt\ table.concat = _real_tcat\ \ local _fmt_final = {}\ do\ local seen_fmt = {}\ for _, v in ipairs(_vaq_fmt_raw) do seen_fmt[v] = true end\ local all_strs = {}\ for v, _ in pairs(seen_fmt) do all_strs[#all_strs+1] = v end\ table.sort(all_strs, function(a, b) return #a > #b end)\ local emitted = {}\ for _, v in ipairs(all_strs) do\ local is_prefix = false\ for _, longer in ipairs(emitted) do\ if longer:sub(1, #v) == v then\ is_prefix = true; break\ end\ end\ if not is_prefix then\ emitted[#emitted+1] = v\ _fmt_final[#_fmt_final+1] = v\ end\ end\ table.sort(_fmt_final)\ end\ \ dump_and_exit(_patched_clean, \"vaq-dump\")\ end\ \ if kind == \"lumora\" then\ local out_esc = OUTPUT:gsub('\\\\','\\\\\\\\'):gsub('\"','\\\\\"')\ local src_esc = (INPUT or \"?\"):gsub('\\\\','\\\\\\\\'):gsub('\"','\\\\\"')\ \ local lmr_vm_fn = nil\ local lmr_proto = nil\ local lmr_env = nil\ local tail_pos = nil\ \ local search_src = prepared\ local pat = \"(%w+)%((%w+),(%w+),{}%)()\"\ local last_f, last_pv, last_ev, last_ep\ local sp = 1\ while true do\ local ms, me, f, pv, ev = search_src:find(pat, sp)\ if not ms then break end\ last_f, last_pv, last_ev, last_ep = f, pv, ev, ms\ sp = me + 1\ end\ if last_f then\ lmr_vm_fn = last_f\ lmr_proto = last_pv\ lmr_env = last_ev\ tail_pos = last_ep\ io.stderr:write((\"[lumora] detected tail call: %s(%s,%s,{})() at pos %d\\n\")\ :format(lmr_vm_fn, lmr_proto, lmr_env, tail_pos))\ end\ \ if tail_pos then\ local LMR_HOOK =\ \"local __LMR_OUT=\" .. string.format(\"%q\", OUTPUT) .. \"\\n\"\ .. \"local __LMR_SRC=\" .. string.format(\"%q\", INPUT or \"?\") .. \"\\n\"\ .. [=[\ \ local function __lmr_bxor(a,b)\ local r,m=0,128\ while m>0 do\ if (a>=m)~=(b>=m) then r=r+m end\ a=a%m; b=b%m; m=math.floor(m/2)\ end\ return r\ end\ \ local function __lmr_str(k)\ if type(k)~=\"table\" or not k.rpjilr then\ return type(k)==\"string\" and k or tostring(k)\ end\ if k.__lmc then return k.__lmc end\ local t={}\ for i=1,#k.rpjilr do\ t[i]=string.char(__lmr_bxor(__lmr_bxor(string.byte(k.rpjilr,i),k.cwvdkl),k.ehzogb))\ end\ k.__lmc=table.concat(t)\ return k.__lmc\ end\ \ local function __lmr_kfmt(v)\ if v==nil then return \"nil\"\ elseif type(v)==\"boolean\" then return tostring(v)\ elseif type(v)==\"number\" then\ local i=math.floor(v)\ if i==v and math.abs(v)<1e15 then return tostring(i) end\ return tostring(v)\ elseif type(v)==\"string\" then return string.format(\"%q\",v)\ elseif type(v)==\"table\" and v.rpjilr then\ return string.format(\"%q\",__lmr_str(v))\ end\ return tostring(v)\ end\ \ local __lmr_emit\ __lmr_emit = function(proto, fname, depth, out)\ local pad=string.rep(\" \",depth)\ local K=proto.wbjyco or {}\ local insns=proto.fqyenp or {}\ local subs=proto.ovvnxh or {}\ local np=proto.cgnkvg or 0\ local isva=(proto.kcatci or 0)~=0\ local n=#insns\ \ local gn={}\ local function rv(r) return gn[r] or (\"v\"..r) end\ local function clr(r) gn[r]=nil end\ \ local function getk(bx)\ local v=K[bx+1]\ if type(v)==\"table\" and v.rpjilr then return __lmr_str(v) end\ return v\ end\ \ local function kfmt(bx) return __lmr_kfmt(K[bx+1]) end\ \ local function rk(idx)\ if idx>=256 then return __lmr_kfmt(K[idx-255]) end\ return rv(idx)\ end\ \ local function ka(base, key_expr)\ if key_expr:sub(1,1)=='\"' then\ local ks=key_expr:sub(2,-2)\ if ks:match(\"^[%a_][%w_]*$\") then return base..\".\"..ks end\ end\ return base..\"[\"..key_expr..\"]\"\ end\ \ local prms={}\ for i=0,np-1 do prms[#prms+1]=\"v\"..i end\ if isva then prms[#prms+1]=\"...\" end\ local param_str=table.concat(prms,\", \")\ \ local function sn(j) return fname..\"_f\"..j end\ \ \ local for_at={}\ local forloop_at={}\ for i=1,n do\ local ins=insns[i]\ if ins.kwihss==32 then\ local loop_pc=(i-1)+ins.hlwhdw+1\ local loop_idx=loop_pc+1\ if loop_idx>=1 and loop_idx<=n then\ local fl=insns[loop_idx]\ if fl and fl.kwihss==31 then\ for_at[i]={var_reg=ins.zabtko, body_start=i+1, loop_idx=loop_idx}\ forloop_at[loop_idx]=true\ end\ end\ end\ end\ \ local tfor_jmp={}\ local tfor_at={}\ for i=1,n do\ local ins=insns[i]\ if ins.kwihss==33 then\ local tfor_pc=i-1\ local body_pc=tfor_pc+ins.hlwhdw+1\ local jmp_idx=body_pc\ if jmp_idx>=1 and jmp_idx<=n then\ local jmp=insns[jmp_idx]\ if jmp and jmp.kwihss==22 then\ local jmp_tgt=(jmp_idx-1)+jmp.hlwhdw+1\ if jmp_tgt==tfor_pc then\ tfor_jmp[jmp_idx]={\ body_start=jmp_idx+1,\ tfor_idx=i,\ iter_reg=ins.zabtko,\ nvars=ins.buwacs\ }\ tfor_at[i]=true\ end\ end\ end\ end\ end\ \ local if_at={}\ local if_jmp_skip={}\ for i=1,n-1 do\ local ins=insns[i]\ local op=ins.kwihss\ if (op==23 or op==24 or op==25 or op==26 or op==27)\ and not for_at[i] and not tfor_jmp[i] then\ local jmp=insns[i+1]\ if jmp and jmp.kwihss==22 and jmp.hlwhdw>=0 then\ local jsBx=jmp.hlwhdw\ local then_start=i+2\ local then_end=i+jsBx+1\ local has_else=false\ local else_end=then_end\ if then_end>=1 and then_end<=n then\ local lt=insns[then_end]\ if lt and lt.kwihss==22 and lt.hlwhdw>0 then\ has_else=true\ else_end=then_end+lt.hlwhdw\ end\ end\ if_at[i]={jmp_i=i+1, then_start=then_start, then_end=then_end,\ has_else=has_else, else_end=else_end}\ if_jmp_skip[i+1]=true\ end\ end\ end\ \ local function emit_range(from, to, xpad)\ local pp=pad..\" \"..xpad\ local i=from\ while i<=to do\ local ins=insns[i]\ if not ins then i=i+1 end\ local op=ins.kwihss\ local A=ins.zabtko; local B=ins.xvojeg; local C=ins.buwacs\ local Bx=ins.wozgad; local sBx=ins.hlwhdw\ \ if op==36 then\ local sub=subs[Bx+1]\ if sub then\ local subname=sn(Bx)\ out[#out+1]=\"\"\ __lmr_emit(sub, subname, depth+1, out)\ out[#out+1]=\"\"\ out[#out+1]=pp..\"v\"..A..\" = \"..subname; clr(A)\ else\ out[#out+1]=pp..\"v\"..A..\" = function() end -- closure[\"..Bx..\"]\"; clr(A)\ end\ i=i+1\ \ elseif for_at[i] then\ local fi=for_at[i]\ local vr=fi.var_reg\ local cvar=\"v\"..(vr+3)\ out[#out+1]=pp..\"for \"..cvar..\" = \"..rv(vr)..\", \"..rv(vr+1)..\", \"..rv(vr+2)..\" do\"\ clr(vr+3)\ emit_range(fi.body_start, fi.loop_idx-1, xpad..\" \")\ out[#out+1]=pp..\"end\"\ i=fi.loop_idx+1\ \ elseif forloop_at[i] then\ i=i+1\ \ elseif tfor_jmp[i] then\ local tf=tfor_jmp[i]\ local ir=tf.iter_reg\ local cvs={}\ for r=ir+2,ir+2+tf.nvars do cvs[#cvs+1]=\"v\"..r; clr(r) end\ out[#out+1]=pp..\"for \"..table.concat(cvs,\", \")..\" in \"..rv(ir)..\", \"..rv(ir+1)..\", \"..rv(ir+2)..\" do\"\ emit_range(tf.body_start, tf.tfor_idx-1, xpad..\" \")\ out[#out+1]=pp..\"end\"\ i=tf.tfor_idx+1\ \ elseif tfor_at[i] then\ i=i+1\ \ elseif if_at[i] then\ local ii=if_at[i]\ if op==27 then\ out[#out+1]=pp..\"if \"..rv(B)..\" then \"..rv(A)..\" = \"..rv(B)..\" end\"; clr(A)\ i=ii.jmp_i+1\ else\ local cond\ if op==23 then cond=(A~=0 and \"not \" or \"\")..\"(\"..rk(B)..\" == \"..rk(C)..\")\"\ elseif op==24 then cond=(A~=0 and \"not \" or \"\")..\"(\"..rk(B)..\" < \"..rk(C)..\")\"\ elseif op==25 then cond=(A~=0 and \"not \" or \"\")..\"(\"..rk(B)..\" <= \"..rk(C)..\")\"\ elseif op==26 then cond=(C~=0 and \"\" or \"not \")..rv(A) end\ out[#out+1]=pp..\"if \"..(cond or \"?\")..\" then\"\ if ii.has_else then\ emit_range(ii.then_start, ii.then_end-1, xpad..\" \")\ out[#out+1]=pp..\"else\"\ emit_range(ii.then_end+1, ii.else_end, xpad..\" \")\ out[#out+1]=pp..\"end\"\ i=ii.else_end+1\ else\ emit_range(ii.then_start, ii.then_end, xpad..\" \")\ out[#out+1]=pp..\"end\"\ i=ii.then_end+1\ end\ end\ \ elseif if_jmp_skip[i] then\ i=i+1\ \ elseif op==22 then\ local tgt=(i-1)+sBx+1\ if sBx<0 then\ out[#out+1]=pp..\"-- (loop back to [\"..tgt..\"])\"\ else\ out[#out+1]=pp..\"-- goto [\"..tgt..\"]\"\ end\ i=i+1\ \ else\ if op==0 then\ local old=rv(A); gn[A]=gn[B]\ out[#out+1]=pp..old..\" = \"..rv(B)\ elseif op==1 then\ out[#out+1]=pp..\"v\"..A..\" = \"..kfmt(Bx); clr(A)\ elseif op==2 then\ out[#out+1]=pp..\"v\"..A..\" = \"..(B~=0 and \"true\" or \"false\"); clr(A)\ elseif op==3 then\ local t={}; for r=A,B do t[#t+1]=\"v\"..r; clr(r) end\ out[#out+1]=pp..table.concat(t,\", \")..\" = nil\"\ elseif op==4 then\ out[#out+1]=pp..\"v\"..A..\" = _upval[\"..B..\"]\"; clr(A)\ elseif op==5 then\ local g=getk(Bx)\ local gs=type(g)==\"string\" and g or __lmr_kfmt(g)\ gn[A]=gs\ out[#out+1]=pp..\"v\"..A..\" = \"..gs\ elseif op==6 then\ local expr=ka(rv(B), rk(C))\ gn[A]=expr\ out[#out+1]=pp..\"v\"..A..\" = \"..expr\ elseif op==7 then\ local g=getk(Bx)\ local gs=type(g)==\"string\" and g or __lmr_kfmt(g)\ out[#out+1]=pp..gs..\" = \"..rv(A)\ elseif op==8 then\ out[#out+1]=pp..\"_upval[\"..B..\"] = \"..rv(A)\ elseif op==9 then\ out[#out+1]=pp..ka(rv(A), rk(B))..\" = \"..rk(C)\ elseif op==10 then\ out[#out+1]=pp..\"v\"..A..\" = {}\"; clr(A)\ elseif op==11 then\ local base=rv(B)\ local expr=ka(base, rk(C))\ out[#out+1]=pp..\"v\"..(A+1)..\" = \"..base\ gn[A]=expr; clr(A+1)\ out[#out+1]=pp..\"v\"..A..\" = \"..expr\ elseif op==12 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" + \" ..rk(C); clr(A)\ elseif op==13 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" - \" ..rk(C); clr(A)\ elseif op==14 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" * \" ..rk(C); clr(A)\ elseif op==15 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" / \" ..rk(C); clr(A)\ elseif op==16 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" % \" ..rk(C); clr(A)\ elseif op==17 then out[#out+1]=pp..\"v\"..A..\" = \"..rk(B)..\" ^ \" ..rk(C); clr(A)\ elseif op==18 then out[#out+1]=pp..\"v\"..A..\" = -\"..rv(B); clr(A)\ elseif op==19 then out[#out+1]=pp..\"v\"..A..\" = not \"..rv(B); clr(A)\ elseif op==20 then out[#out+1]=pp..\"v\"..A..\" = #\"..rv(B); clr(A)\ elseif op==21 then\ local t={}; for r=B,C do t[#t+1]=rv(r) end\ out[#out+1]=pp..\"v\"..A..\" = \"..table.concat(t,\" .. \"); clr(A)\ elseif op==27 then\ out[#out+1]=pp..\"if \"..rv(B)..\" then \"..rv(A)..\" = \"..rv(B)..\" end\"; clr(A)\ elseif op==28 or op==29 then\ local args={}\ if B==1 then\ elseif B==0 then\ args={rv(A+1),\"...\"}\ else\ for r=A+1,A+B-1 do args[#args+1]=rv(r) end\ end\ local fn_expr=rv(A)\ local call=fn_expr..\"(\"..table.concat(args,\", \")..\")\"\ if op==29 then\ out[#out+1]=pp..\"return \"..call\ elseif C==0 then\ out[#out+1]=pp..\"v\"..A..\" = \"..call; clr(A)\ elseif C==1 then\ out[#out+1]=pp..call\ else\ local rets={}\ for r=A,A+C-2 do rets[#rets+1]=\"v\"..r; clr(r) end\ out[#out+1]=pp..table.concat(rets,\", \")..\" = \"..call\ end\ elseif op==30 then\ if B==1 then\ out[#out+1]=pp..\"return\"\ elseif B==0 then\ out[#out+1]=pp..\"return \"..rv(A)..\", ...\"\ else\ local t={}\ for r=A,A+B-2 do t[#t+1]=rv(r) end\ out[#out+1]=pp..\"return \"..table.concat(t,\", \")\ end\ elseif op==34 then\ out[#out+1]=pp..\"-- setlist \"..rv(A)..\"[\"..(((B-1)*50)+1)..\"..]\"\ elseif op==35 then\ out[#out+1]=pp..\"-- (close upvalues)\"\ elseif op==37 then\ if B>1 then\ local t={}; for r=A,A+B-2 do t[#t+1]=\"v\"..r; clr(r) end\ out[#out+1]=pp..table.concat(t,\", \")..\" = ...\"\ else\ out[#out+1]=pp..\"v\"..A..\" = ...\"; clr(A)\ end\ else\ out[#out+1]=pp..\"-- [op\"..op..\"] A=\"..A..\" B=\"..B..\" C=\"..C\ end\ i=i+1\ end\ end\ end\ \ if depth==0 then\ out[#out+1]=\"-- ================================================================\"\ out[#out+1]=\"-- FlameDumperV3 | Lumora Obfuscator — Decompiled Source\"\ out[#out+1]=\"-- File : \"..__LMR_SRC\ out[#out+1]=\"-- Source : \"..(proto.source or \"unknown\")\ out[#out+1]=\"-- Params : \"..np..\" Vararg: \"..(isva and \"yes\" or \"no\")\ out[#out+1]=\"-- Subfns : \"..#subs\ out[#out+1]=\"-- NOTE : Best-effort decompilation. for/if/else reconstructed;\"\ out[#out+1]=\"-- complex jumps shown as comments.\"\ out[#out+1]=\"-- ================================================================\"\ out[#out+1]=\"\"\ out[#out+1]=\"local function __script__(\"..param_str..\")\"\ else\ out[#out+1]=pad..\"local function \"..fname..\"(\"..param_str..\")\"\ end\ \ emit_range(1, n, \"\")\ \ if depth==0 then\ out[#out+1]=\"end -- __script__\"\ out[#out+1]=\"\"\ out[#out+1]=\"__script__(...)\"\ else\ out[#out+1]=pad..\"end -- \"..fname\ end\ end\ \ local function __lmr_capture(proto)\ local out={}\ __lmr_emit(proto, \"__script__\", 0, out)\ local f=assert(io.open(__LMR_OUT,\"w\"))\ for _,l in ipairs(out) do f:write(l..\"\\n\") end\ f:close()\ io.stderr:write(\"[lumora] decompiled \"..#out..\" lines -> \"..__LMR_OUT..\"\\n\")\ os.exit(0)\ end\ ]=]\ \ local NEEDLE = lmr_vm_fn .. \"(\" .. lmr_proto .. \",\" .. lmr_env .. \",{})()\"\ local CAPTURE_CALL= \"__lmr_capture(\" .. lmr_proto .. \")\"\ local pp = prepared:find(NEEDLE, 1, true)\ do\ local nxt = pp\ while nxt do\ pp = nxt\ nxt = prepared:find(NEEDLE, pp + 1, true)\ end\ end\ if pp then\ prepared = prepared:sub(1, pp - 1)\ .. CAPTURE_CALL\ .. prepared:sub(pp + #NEEDLE)\ prepared = LMR_HOOK .. \"\\n\" .. prepared\ patched_in_place = true\ io.stderr:write((\"[lumora] hook injected at pos %d: %s → %s\\n\")\ :format(pp, NEEDLE, CAPTURE_CALL))\ else\ io.stderr:write((\"[lumora] WARN: needle %q not found in prepared source\\n\"):format(NEEDLE))\ end\ else\ io.stderr:write(\"[lumora] WARN: no VM tail call found — falling back to runtime hook\\n\")\ end\ \ if not patched_in_place then\ install_runtime_hook()\ patched_in_place = true\ end\ end\ \ if kind == \"namecall_detect\" then\ install_capture()\ \ local nc_preamble = [[\ do\ local _nc_g = game\ local _nc_m = nil\ local _nc_ssm = setnamecallmethod\ setnamecallmethod = function(m)\ _nc_m = m\ if _nc_ssm then _nc_ssm(m) end\ end\ local _nc_mt = {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"GetService\" then\ return function(_, n) return _nc_g:GetService(n) end\ end\ return _nc_g[k]\ end,\ __namecall = function(_, ...)\ if _nc_m == \"GetService\" then return _nc_g:GetService(...) end\ return nil\ end,\ __newindex = function(_, k, v) _nc_g[k] = v end,\ }\ game = setmetatable({}, _nc_mt)\ getrawmetatable = function(obj)\ if obj == game then return _nc_mt end\ local m = getmetatable(obj)\ return type(m) == \"table\" and m or {}\ end\ if type(task) == \"table\" then\ task.defer = function(f, ...) if type(f) == \"function\" then pcall(f, ...) end end\ end\ if type(task) == \"table\" then\ task.wait = function() return 0 end\ end\ end\ ]]\ prepared = nc_preamble .. \"\\n\" .. prepared\ patched_in_place = true\ log(\"namecall_detect: game.__namecall stub + getrawmetatable patch applied\")\ end\ \ if kind == \"wearedevs\" then\ install_runtime_hook()\ patched_in_place = true\ \ local wad_preamble = rawget(_G, \"_HOOKOP\") and _G._HOOKOP.preamble() or \"\"\ prepared = wad_preamble .. \"\\n\" .. prepared\ \ log(\"wearedevs: runtime load-hook + control-flow globals armed\")\ end\ \ do\ local _need_at = prepared:find(\"25ms\", 1, true)\ or prepared:find(\"twentyfivems\", 1, true)\ or prepared:find(\"LPH_CRASH\", 1, true)\ or prepared:find(\"oonveil\", 1, true)\ or prepared:find(\"PRISTINE\", 1, true)\ or prepared:find(\"pristine\", 1, true)\ or prepared:find(\"Pristine\", 1, true)\ if _need_at then\ local _before_at = #prepared\ prepared = prepared:gsub('\"25ms\"', '\"__n25ms__\"')\ prepared = prepared:gsub(\"'25ms'\", \"'__n25ms__'\")\ prepared = prepared:gsub('\"twentyfivems\"', '\"__ntwentyfivems__\"')\ prepared = prepared:gsub(\"'twentyfivems'\", \"'__ntwentyfivems__'\")\ prepared = prepared:gsub(\"LPH_CRASH%s*%(%s*%)\", \"(function()end)()\")\ prepared = prepared:gsub(\"LPH_CRASH%s*%b()\", \"(function()end)()\")\ prepared = prepared:gsub('\"[Mm]oon[Vv]eil\"', '\"__nmoonveil__\"')\ prepared = prepared:gsub(\"'[Mm]oon[Vv]eil'\", \"'__nmoonveil__'\")\ prepared = prepared:gsub('\"[Pp][Rr][Ii][Ss][Tt][Ii][Nn][Ee]\"', '\"__npristine__\"')\ prepared = prepared:gsub(\"'[Pp][Rr][Ii][Ss][Tt][Ii][Nn][Ee]'\", \"'__npristine__'\")\ log((\"anti-tamper markers neutralized: %d -> %d bytes\"):format(_before_at, #prepared))\ end\ end\ \ if not rawget(_G, \"_WEAREDEVS_PATCH\") then\ _G._WEAREDEVS_PATCH = function(code)\ if type(code) ~= \"string\" or #code == 0 then return code end\ \ code = code:gsub('\"25ms\"', '\"__n25ms__\"')\ code = code:gsub(\"'25ms'\", \"'__n25ms__'\")\ code = code:gsub('\"twentyfivems\"', '\"__ntwentyfivems__\"')\ code = code:gsub(\"'twentyfivems'\", \"'__ntwentyfivems__'\")\ code = code:gsub(\"LPH_CRASH%s*%(%s*%)\", \"(function()end)()\")\ code = code:gsub(\"LPH_CRASH%s*%b()\", \"(function()end)()\")\ code = code:gsub('\"[Mm]oon[Vv]eil\"', '\"__nmoonveil__\"')\ code = code:gsub(\"'[Mm]oon[Vv]eil'\", \"'__nmoonveil__'\")\ code = code:gsub('\"[Pp][Rr][Ii][Ss][Tt][Ii][Nn][Ee]\"', '\"__npristine__\"')\ code = code:gsub(\"'[Pp][Rr][Ii][Ss][Tt][Ii][Nn][Ee]'\", \"'__npristine__'\")\ \ if code:find(\"This file was protected with MoonSec V3\", 1, true)\ or code:find(\"MoonSecV3\", 1, true) then\ _G._MOONSEC_V3_DETECTED = true\ _G._MOONSEC_INTERNAL_KEY_LEN = 15\ _G._MOONSEC_EXCLUDE_LENGTHS = {[13]=true, [17]=true, [32]=true}\ end\ \ local _needs_hookop = code:find(\"CHECKIF%s*%(\")\ or code:find(\"CHECKWHILE%s*%(\") or code:find(\"checkwhile%s*%(\")\ or code:find(\"COMPL%s*%(\") or code:find(\"COMPG%s*%(\")\ or code:find(\"COMPLE%s*%(\") or code:find(\"COMPGE%s*%(\")\ or code:find(\"CHECKOR%s*%(\") or code:find(\"CHECKAND%s*%(\")\ or code:find(\"CHECKEQ%s*%(\") or code:find(\"CHECKNEQ%s*%(\")\ or code:find(\"CHECKLEN%s*%(\") or code:find(\"CHECKUNM%s*%(\")\ or code:find(\"CHECKNOT%s*%(\") or code:find(\"CONCAT%s*%(\")\ or code:find(\"CONSTRUCT%s*%(\") or code:find(\"FORINFO%s*%(\")\ or code:find(\"FORSTEP%d%s*%(\") or code:find(\"TEMPLATE_STRING%s*%(\")\ or code:find(\"CHECKINDEX%s*%(\") or code:find(\"CALL%s*%(\")\ or code:find(\"NAMECALL%s*%(\") or code:find(\"checkifend%s*%(\")\ or code:find(\"checkwhileend%s*%(\")\ if _needs_hookop then\ code = (rawget(_G, \"_HOOKOP\") and _G._HOOKOP.preamble() or \"\") .. \"\\n\" .. code\ end\ \ return code\ end\ end\ \ if not patched_in_place then\ install_runtime_hook()\ install_capture()\ if kind == \"vvmer\" or kind == \"unknown\" then\ local before = #prepared\ prepared = prepared\ :gsub(\"do%s+local%s+[%w_]+%s*=%s*nil%s+end\", \"\")\ :gsub(\"if%s+false%s+then%s+local%s+[%w_]+%s*=%s*%-?%d+%s+end\", \"\")\ log((\"dead-code strip: %d -> %d bytes\"):format(before, #prepared))\ end\ end\ \ local function strip_locals(s, mode)\ local out = {}\ local i, n = 1, #s\ local depth = 0\ while i <= n do\ local c = s:sub(i, i)\ if c == \"-\" and s:sub(i+1, i+1) == \"-\" then\ local eq = s:match(\"^%-%-%[(=*)%[\", i)\ if eq then\ local close = \"]\" .. eq .. \"]\"\ local e = s:find(close, i + 4 + #eq, true)\ if e then out[#out+1] = s:sub(i, e + #close - 1); i = e + #close\ else out[#out+1] = s:sub(i); break end\ else\ local e = s:find(\"\\n\", i, true) or (n + 1)\ out[#out+1] = s:sub(i, e - 1); i = e\ end\ elseif c == '\"' or c == \"'\" then\ local q = c; local j = i + 1\ while j <= n do\ local ch = s:sub(j, j)\ if ch == \"\\\\\" then j = j + 2\ elseif ch == q then j = j + 1; break\ elseif ch == \"\\n\" then j = j + 1; break\ else j = j + 1 end\ end\ out[#out+1] = s:sub(i, j - 1); i = j\ elseif c == \"[\" then\ local eq = s:match(\"^%[(=*)%[\", i)\ if eq then\ local close = \"]\" .. eq .. \"]\"\ local e = s:find(close, i + 2 + #eq, true)\ if e then out[#out+1] = s:sub(i, e + #close - 1); i = e + #close\ else out[#out+1] = s:sub(i); break end\ else\ out[#out+1] = c; i = i + 1\ end\ else\ local word = s:match(\"^([%a_][%w_]*)\", i)\ if word then\ local strip_this = false\ if word == \"local\" then\ if mode == \"all\" then\ strip_this = true\ elseif mode == \"toplevel\" and depth == 0 then\ strip_this = true\ end\ end\ if word == \"function\" or word == \"do\" or word == \"then\" or word == \"repeat\" then\ depth = depth + 1\ elseif word == \"end\" or word == \"until\" or word == \"elseif\" then\ depth = depth - 1\ end\ if strip_this then\ out[#out+1] = string.rep(\" \", #word)\ else\ out[#out+1] = word\ end\ i = i + #word\ else\ out[#out+1] = c; i = i + 1\ end\ end\ end\ return table.concat(out)\ end\ \ local function is_local_limit(err)\ return tostring(err or \"\"):find(\"too many local variables\", 1, true) ~= nil\ end\ \ if prepared:find(\"return%s+while%s+true%s+do\", 1, false) then\ local _before = #prepared\ prepared = prepared:gsub(\ \"(then%s+return)%s+while%s+true%s+do[^\\n]-end\",\ \"%1\")\ prepared = prepared:gsub(\ \"(;%s*return)%s+while%s+true%s+do[^\\n]-end\",\ \"%1\")\ if #prepared ~= _before then\ log((\"return-while dead-code fix: %d -> %d bytes\"):format(_before, #prepared))\ end\ end\ \ do\ local _before = #prepared\ prepared = prepared:gsub(\ \"(for%s+[%w_%s,]+%s+in%s+)([%w_]+)(%s+do[%s\\n])\",\ function(pre, expr, tail)\ local _skip = {pairs=1,ipairs=1,next=1,coroutine=1,\ string=1,table=1,math=1,io=1,os=1,debug=1}\ if _skip[expr] then return pre .. expr .. tail end\ return pre .. \"pairs(\" .. expr .. \")\" .. tail\ end\ )\ if #prepared ~= _before then\ log(\"luau-generic-for: rewrote plain-table for-in loops to pairs()\")\ end\ end\ \ do\ if prepared:find(\"=%s*if%s+\") then\ local _before = #prepared\ prepared = prepared:gsub(\ \"(=%s*)if%s+([^;,\\n]+)%s+then%s+([^;,\\n]+)%s+else%s+([^;,\\n]+)(%s*[;,])\",\ function(eq, cond, a, b, term)\ cond = cond:match(\"^(.-)%s*$\") or cond\ a = a:match(\"^(.-)%s*$\") or a\ b = b:match(\"^(.-)%s*$\") or b\ return eq..\"((\"..cond..\") and (\"..a..\") or (\"..b..\"))\"..term\ end)\ if #prepared ~= _before then\ log((\"luau-if-expr: rewrote if-expressions (%d\\xE2\\x86\\x92%d bytes)\"):format(_before, #prepared))\ end\ end\ end\ \ do\ if prepared:find(\"%f[%a]continue%f[%W]\") then\ local _before = #prepared\ local _stack = {}\ local _pending_loop = false\ local _lid = 0\ local _edits = {}\ local _n = #prepared\ local _i = 1\ \ local function _skip_str(s, si)\ local q = s:sub(si,si); local j = si+1\ while j <= #s do\ local cc = s:sub(j,j)\ if cc == '\\\\' then j = j+2\ elseif cc == q then return j+1\ else j = j+1 end\ end\ return j\ end\ \ local function _skip_long_bracket(s, si)\ local j = si+1; local eq = 0\ while j <= #s and s:sub(j,j) == '=' do eq=eq+1; j=j+1 end\ if j <= #s then j = j+1 end\ local close = ']'..string.rep('=',eq)..']'\ local ep = s:find(close, j, true)\ return ep and ep+#close or #s+1\ end\ \ while _i <= _n do\ local c = prepared:sub(_i,_i)\ \ if c=='-' and prepared:sub(_i,_i+1)=='--' then\ if prepared:sub(_i,_i+2)=='--[' then\ local j=_i+3; local eq=0\ while j<=_n and prepared:sub(j,j)=='=' do eq=eq+1; j=j+1 end\ if j<=_n and prepared:sub(j,j)=='[' then\ _i = _skip_long_bracket(prepared, _i+2)\ goto _cnt_next\ end\ end\ local nl = prepared:find('\\n', _i, true)\ _i = nl and nl+1 or _n+1\ goto _cnt_next\ end\ \ if c=='[' then\ local j=_i+1; local eq=0\ while j<=_n and prepared:sub(j,j)=='=' do eq=eq+1; j=j+1 end\ if j<=_n and prepared:sub(j,j)=='[' then\ _i = _skip_long_bracket(prepared, _i)\ goto _cnt_next\ end\ end\ \ if c=='\"' or c==\"'\" then\ _i = _skip_str(prepared, _i)\ goto _cnt_next\ end\ \ if c:match('[%a_]') then\ local j = _i+1\ while j<=_n and prepared:sub(j,j):match('[%w_]') do j=j+1 end\ local word = prepared:sub(_i, j-1)\ \ if word=='while' or word=='for' then\ _pending_loop = true\ elseif word=='repeat' then\ _lid=_lid+1\ table.insert(_stack, {kind='loop', lid=_lid, close='until'})\ _pending_loop=false\ elseif word=='do' then\ if _pending_loop then\ _lid=_lid+1\ table.insert(_stack, {kind='loop', lid=_lid, close='end'})\ else\ table.insert(_stack, {kind='block', lid=-1, close='end'})\ end\ _pending_loop=false\ elseif word=='function' then\ _pending_loop=false\ table.insert(_stack, {kind='block', lid=-1, close='end'})\ elseif word=='if' then\ _pending_loop=false\ table.insert(_stack, {kind='pif', lid=-1})\ elseif word=='then' then\ if #_stack>0 and (_stack[#_stack].kind=='pif' or _stack[#_stack].kind=='pelseif') then\ _stack[#_stack] = {kind='block', lid=-1, close='end'}\ else\ table.insert(_stack, {kind='block', lid=-1, close='end'})\ end\ _pending_loop=false\ elseif word=='elseif' then\ if #_stack>0 and _stack[#_stack].kind=='block' then table.remove(_stack) end\ table.insert(_stack, {kind='pelseif', lid=-1})\ elseif word=='else' then\ if #_stack>0 and _stack[#_stack].kind=='block' then\ _stack[#_stack].close = 'end'\ end\ _pending_loop=false\ elseif word=='end' then\ if #_stack>0 then\ local top = table.remove(_stack)\ if top.kind=='loop' and top.close=='end' and top.lid>0 then\ table.insert(_edits, {pos=_i, endpos=_i, text='::__cnt_'..top.lid..'__:: '})\ end\ end\ _pending_loop=false\ elseif word=='until' then\ if #_stack>0 and _stack[#_stack].kind=='loop' and _stack[#_stack].close=='until' then\ local top = table.remove(_stack)\ if top.lid>0 then\ table.insert(_edits, {pos=_i, endpos=_i, text='::__cnt_'..top.lid..'__:: '})\ end\ end\ _pending_loop=false\ elseif word=='continue' then\ for si=#_stack,1,-1 do\ if _stack[si].kind=='loop' then\ table.insert(_edits, {pos=_i, endpos=_i+8, text='goto __cnt_'.._stack[si].lid..'__'})\ break\ end\ end\ end\ \ _i = j\ goto _cnt_next\ end\ \ _i = _i+1\ ::_cnt_next::\ end\ \ table.sort(_edits, function(a,b) return a.pos > b.pos end)\ for _, ed in ipairs(_edits) do\ prepared = prepared:sub(1, ed.pos-1)..ed.text..prepared:sub(ed.endpos)\ end\ \ if #prepared ~= _before then\ log((\"luau-continue: rewrote continue statements (%d\\xE2\\x86\\x92%d bytes)\"):format(_before, #prepared))\ end\ end\ end\ \ do\ local _ca_present = prepared:find(\"%+=\") or prepared:find(\"%-=\")\ or prepared:find(\"%*=\") or prepared:find(\"//=\")\ or prepared:find(\"/=\") or prepared:find(\"%%=\")\ or prepared:find(\"%^=\") or prepared:find(\"%.%.=\")\ if _ca_present then\ local _before = #prepared\ \ local _kw_end = {\"end\",\"then\",\"do\",\"else\",\"elseif\",\"until\",\"return\",\ \"if\",\"while\",\"for\",\"repeat\",\"local\"}\ \ local function _trim_rhs(rhs)\ local best_pos = #rhs + 1\ for _, kw in ipairs(_kw_end) do\ local s = rhs:find(\" \"..kw..\"[^%w_]\")\ or rhs:find(\" \"..kw..\"$\")\ if s and s < best_pos then best_pos = s end\ end\ local out = rhs:sub(1, best_pos - 1)\ local tail = rhs:sub(best_pos)\ return (out:match(\"^(.-)%s*$\") or out), tail\ end\ \ local function _do_ca(s, op_pat, op_lua)\ s = s:gsub(\ \"([%a_][%w_]*%.[%a_][%w_.]+)%s*\"..op_pat..\"%s*([^\\n;%s][^\\n;]*)\",\ function(lhs, rhs)\ local r2, tail = _trim_rhs(rhs)\ return lhs..\" = \"..lhs..\" \"..op_lua..\" (\"..r2..\")\"..tail\ end)\ s = s:gsub(\ \"%f[%a_]([%a_][%w_]*)%s*\"..op_pat..\"%s*([^\\n;%s][^\\n;]*)\",\ function(lhs, rhs)\ local r2, tail = _trim_rhs(rhs)\ return lhs..\" = \"..lhs..\" \"..op_lua..\" (\"..r2..\")\"..tail\ end)\ return s\ end\ \ local _ops = {\ {\"%.%.=\", \"..\"},\ {\"//=\", \"//\"},\ {\"%^=\", \"^\"},\ {\"%*=\", \"*\"},\ {\"%%=\", \"%\"},\ {\"%+=\", \"+\"},\ {\"%-=\", \"-\"},\ {\"/=\", \"/\"},\ }\ for _, pair in ipairs(_ops) do\ prepared = _do_ca(prepared, pair[1], pair[2])\ end\ \ if #prepared ~= _before then\ log((\"luau-compound-assign: rewrote compound assignments (%d→%d bytes)\"):format(_before, #prepared))\ end\ end\ end\ \ local chunk, err = _real_load(prepared, \"=bypassed\")\ if not chunk and is_local_limit(err) then\ log(\"local-limit hit, promoting top-level locals to globals\")\ local rewritten = strip_locals(prepared, \"toplevel\")\ local c2, e2 = _real_load(rewritten, \"=bypassed_top\")\ if c2 then chunk, err, prepared = c2, nil, rewritten\ else chunk, err = nil, e2 end\ end\ if not chunk and is_local_limit(err) then\ log(\"local-limit still hit, promoting ALL locals to globals\")\ local rewritten = strip_locals(prepared, \"all\")\ local c3, e3 = _real_load(rewritten, \"=bypassed_all\")\ if c3 then chunk, err, prepared = c3, nil, rewritten\ else chunk, err = nil, e3 end\ end\ assert(chunk, \"load error: \" .. tostring(err))\ \ do\ local _ccl_set = setmetatable({}, { __mode = \"k\" })\ local _exec_set = setmetatable({}, { __mode = \"k\" })\ \ local _prev_newcclosure = newcclosure\ newcclosure = function(f)\ if type(f) ~= \"function\" then return f end\ local wrapper = function(...) return f(...) end\ _ccl_set[wrapper] = true\ _exec_set[wrapper] = true\ return wrapper\ end\ \ local _prev_iscclosure = iscclosure\ iscclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _ccl_set[f] then return true end\ local ok = pcall(string.dump, f)\ return not ok\ end\ \ local _prev_islclosure = islclosure\ islclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _ccl_set[f] then return false end\ local ok = pcall(string.dump, f)\ return ok\ end\ \ isexecutorclosure = function(f)\ if type(f) ~= \"function\" then return false end\ return _exec_set[f] == true\ end\ is_synapse_function = is_synapse_function or isexecutorclosure\ \ local function _make_env_proxy(label)\ return setmetatable({}, {\ __index = _G,\ __newindex = function(_, k, v) rawset(_G, k, v) end,\ __metatable = \"The metatable is locked\",\ __tostring = function() return label end,\ })\ end\ local _genv = _make_env_proxy(\"getgenv\")\ local _renv = _make_env_proxy(\"getrenv\")\ getgenv = function() return _genv end\ getrenv = function() return _renv end\ \ local _prev_getgc = getgc\ getgc = function(...)\ if type(_prev_getgc) == \"function\" then\ local ok, v = pcall(_prev_getgc, ...)\ if ok and type(v) == \"table\" then return v end\ end\ return {}\ end\ \ if not _G.__plain_tee_installed then\ _G.__plain_tee_installed = true\ _G.__plain_tee_buffer = {}\ local _buf = _G.__plain_tee_buffer\ local _real_print = print\ local _real_iow = io and io.write\ local _real_warn = warn\ \ local function _ql(v)\ local t = type(v)\ if t == \"string\" then return string.format(\"%q\", v)\ elseif t == \"number\" or t == \"boolean\" then return tostring(v)\ elseif v == nil then return \"nil\"\ else return \"\" .. tostring(v) end\ end\ local function _qlargs(...)\ local n = select(\"#\", ...)\ local parts = {}\ for i = 1, n do parts[i] = _ql(select(i, ...)) end\ return table.concat(parts, \", \")\ end\ \ print = function(...)\ _buf[#_buf + 1] = \"print(\" .. _qlargs(...) .. \")\\n\"\ return _real_print(...)\ end\ _ccl_set[print] = true\ \ if _real_iow then\ io.write = function(...)\ _buf[#_buf + 1] = \"io.write(\" .. _qlargs(...) .. \")\"\ local s = \"\"\ for i = 1, select(\"#\", ...) do\ s = s .. tostring(select(i, ...))\ end\ return _real_iow(s)\ end\ _ccl_set[io.write] = true\ end\ \ if type(_real_warn) == \"function\" then\ warn = function(...)\ _buf[#_buf + 1] = \"warn(\" .. _qlargs(...) .. \")\\n\"\ return _real_warn(...)\ end\ _ccl_set[warn] = true\ end\ \ -- Mark known C stdlib functions as C closures so iscclosure() returns true for them\ do\ local _math_c = {\ \"abs\",\"ceil\",\"floor\",\"sqrt\",\"sin\",\"cos\",\"tan\",\"asin\",\"acos\",\"atan\",\"atan2\",\ \"exp\",\"log\",\"max\",\"min\",\"fmod\",\"modf\",\"random\",\"randomseed\",\"huge\",\ \"pow\",\"deg\",\"rad\",\"sinh\",\"cosh\",\"tanh\",\ }\ for _, n in ipairs(_math_c) do\ if type(math[n]) == \"function\" then _ccl_set[math[n]] = true end\ end\ local _str_c = {\ \"byte\",\"char\",\"find\",\"format\",\"gmatch\",\"gsub\",\"len\",\"lower\",\"match\",\ \"rep\",\"reverse\",\"sub\",\"upper\",\"dump\",\ }\ for _, n in ipairs(_str_c) do\ if type(string[n]) == \"function\" then _ccl_set[string[n]] = true end\ end\ local _tbl_c = {\"concat\",\"insert\",\"remove\",\"sort\",\"unpack\",\"move\",\"pack\"}\ for _, n in ipairs(_tbl_c) do\ if type(table[n]) == \"function\" then _ccl_set[table[n]] = true end\ end\ local _base_c = {\ tostring, tonumber, type, typeof, select, unpack, next, pairs, ipairs,\ rawget, rawset, rawequal, rawlen, setmetatable, getmetatable,\ pcall, xpcall, error, assert, load, loadstring,\ require, collectgarbage,\ }\ for _, f in ipairs(_base_c) do\ if type(f) == \"function\" then _ccl_set[f] = true end\ end\ if type(coroutine) == \"table\" then\ for _, n in ipairs({\"create\",\"resume\",\"yield\",\"wrap\",\"status\",\"running\",\"isyieldable\"}) do\ if type(coroutine[n]) == \"function\" then _ccl_set[coroutine[n]] = true end\ end\ end\ end\ end\ end\ \ do\ if not _G.dumperState then\ local _GRAVITY = 196.2\ local _DEF_SX, _DEF_SY, _DEF_SZ = 4, 1, 2\ \ local _isyieldable = coroutine.isyieldable\ or function() return coroutine.running() ~= nil end\ \ local _sa_parts = setmetatable({}, { __mode = \"k\" })\ local _sa_signals = setmetatable({}, { __mode = \"k\" })\ \ if type(_G.Vector3) ~= \"table\"\ or type(_G.Vector3.new) ~= \"function\" then\ local _v3mt = {\ __metatable = \"Vector3\",\ __tostring = function(s)\ return (\"%g, %g, %g\"):format(s.X, s.Y, s.Z)\ end,\ }\ local function _v3(x, y, z)\ x = tonumber(x) or 0\ y = tonumber(y) or 0\ z = tonumber(z) or 0\ local mag = math.sqrt(x*x + y*y + z*z)\ local v = { X=x, Y=y, Z=z, Magnitude=mag }\ if mag > 1e-9 then\ local ux, uy, uz = x/mag, y/mag, z/mag\ local uv = { X=ux, Y=uy, Z=uz, Magnitude=1.0 }\ uv.Unit = uv\ uv.Dot = function(self, b) return self.X*b.X + self.Y*b.Y + self.Z*b.Z end\ uv.Cross = function(self, b)\ return _v3(self.Y*b.Z-self.Z*b.Y, self.Z*b.X-self.X*b.Z, self.X*b.Y-self.Y*b.X)\ end\ uv.Lerp = function(self, b, t) return _v3(self.X+(b.X-self.X)*t, self.Y+(b.Y-self.Y)*t, self.Z+(b.Z-self.Z)*t) end\ setmetatable(uv, _v3mt)\ v.Unit = uv\ else\ v.Unit = v\ end\ v.Dot = function(self, b) return self.X*b.X + self.Y*b.Y + self.Z*b.Z end\ v.Cross = function(self, b)\ return _v3(self.Y*b.Z-self.Z*b.Y, self.Z*b.X-self.X*b.Z, self.X*b.Y-self.Y*b.X)\ end\ v.Lerp = function(self, b, t) return _v3(self.X+(b.X-self.X)*t, self.Y+(b.Y-self.Y)*t, self.Z+(b.Z-self.Z)*t) end\ _v3mt.__add = function(a, b) return _v3(a.X+b.X, a.Y+b.Y, a.Z+b.Z) end\ _v3mt.__sub = function(a, b) return _v3(a.X-b.X, a.Y-b.Y, a.Z-b.Z) end\ _v3mt.__mul = function(a, b)\ if type(a) == \"number\" then return _v3(a*b.X, a*b.Y, a*b.Z)\ elseif type(b) == \"number\" then return _v3(a.X*b, a.Y*b, a.Z*b)\ end; return _v3(a.X*b.X, a.Y*b.Y, a.Z*b.Z)\ end\ _v3mt.__div = function(a, b)\ if type(b) == \"number\" then return _v3(a.X/b, a.Y/b, a.Z/b) end\ return _v3(a.X/b.X, a.Y/b.Y, a.Z/b.Z)\ end\ _v3mt.__unm = function(a) return _v3(-a.X, -a.Y, -a.Z) end\ _v3mt.__eq = function(a, b) return a.X==b.X and a.Y==b.Y and a.Z==b.Z end\ return setmetatable(v, _v3mt)\ end\ _G.Vector3 = {\ new = _v3,\ zero = _v3(0, 0, 0),\ one = _v3(1, 1, 1),\ xAxis = _v3(1, 0, 0),\ yAxis = _v3(0, 1, 0),\ zAxis = _v3(0, 0, 1),\ }\ end\ \ if type(_G.CFrame) ~= \"table\"\ or type(_G.CFrame.new) ~= \"function\" then\ local function _cf(x, y, z)\ x = tonumber(x) or 0\ y = tonumber(y) or 0\ z = tonumber(z) or 0\ local cf = {\ X = x, Y = y, Z = z,\ Position = _G.Vector3.new(x, y, z),\ LookVector = _G.Vector3.new(0, 0, -1),\ UpVector = _G.Vector3.new(0, 1, 0),\ RightVector = _G.Vector3.new(1, 0, 0),\ }\ return setmetatable(cf, {\ __metatable = \"CFrame\",\ __tostring = function(s)\ return (\"%g, %g, %g, 1, 0, 0, 0, 1, 0, 0, 0, 1\")\ :format(s.X, s.Y, s.Z)\ end,\ })\ end\ _G.CFrame = {\ new = _cf,\ identity = _cf(0, 0, 0),\ }\ end\ \ local _v3new = _G.Vector3.new\ local _cfnew = _G.CFrame.new\ \ local function _fire_changed(proxy, propName)\ local sigs = _sa_signals[proxy]\ if not sigs then return end\ local cbs = sigs[propName]\ if not cbs then return end\ for i = 1, #cbs do pcall(cbs[i]) end\ end\ \ local function _make_prop_signal(proxy, propName)\ if not _sa_signals[proxy] then\ _sa_signals[proxy] = {}\ end\ local sigs = _sa_signals[proxy]\ if not sigs[propName] then sigs[propName] = {} end\ local cbs = sigs[propName]\ local sig = {}\ sig.Connect = function(self, fn)\ if type(fn) == \"function\" then cbs[#cbs + 1] = fn end\ local conn = { Connected = true }\ conn.Disconnect = function()\ conn.Connected = false\ for i, f in ipairs(cbs) do\ if f == fn then table.remove(cbs, i); break end\ end\ end\ conn.disconnect = conn.Disconnect\ return conn\ end\ sig.Wait = function(self) return nil end\ sig.Once = function(self, fn)\ if type(fn) ~= \"function\" then return end\ local conn\ conn = self:Connect(function(...)\ conn:Disconnect(); fn(...)\ end)\ return conn\ end\ return sig\ end\ \ local function _restingY(proxy, sx, sy, sz)\ local st = _sa_parts[proxy]\ if not st then return nil end\ local px, pz = st.x, st.z\ local best = nil\ for other, ost in pairs(_sa_parts) do\ if other ~= proxy and ost.anchored and ost.alive then\ local dx = math.abs(px - ost.x)\ local dz = math.abs(pz - ost.z)\ if dx <= (sx + ost.sx) * 0.5\ and dz <= (sz + ost.sz) * 0.5 then\ local topY = ost.y + ost.sy * 0.5 + sy * 0.5\ if best == nil or topY > best then\ best = topY\ end\ end\ end\ end\ return best\ end\ \ local function _stepPhysics(dt)\ dt = tonumber(dt)\ if not dt or dt <= 0 then return end\ if dt > 30 then dt = 30 end\ for proxy, st in pairs(_sa_parts) do\ if not st.anchored and st.alive then\ local sx, sy, sz = st.sx, st.sy, st.sz\ local newY = st.y + st.vy * dt\ - 0.5 * _GRAVITY * dt * dt\ local newVy = st.vy - _GRAVITY * dt\ local restY = _restingY(proxy, sx, sy, sz)\ if restY ~= nil and newY <= restY then\ newY = restY\ newVy = 0\ end\ st.vy = newVy\ st.y = newY\ end\ end\ end\ \ local function _mkGenericInst(className)\ local props = { ClassName = className, Name = className or \"Instance\" }\ local inst\ inst = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"Destroy\" then\ return function(_self) props.Parent = nil end\ end\ if k == \"IsA\" then\ return function(_self, cn)\ return cn == className or cn == \"Instance\"\ end\ end\ if k == \"GetFullName\" then\ return function() return tostring(className) end\ end\ if k == \"Clone\" then\ return function(_self) return _mkGenericInst(className) end\ end\ if k == \"GetPropertyChangedSignal\" then\ return function(_self, prop)\ return _make_prop_signal(inst, prop)\ end\ end\ if k == \"GetAttributeChangedSignal\" then\ return function(_self, attr)\ return _make_prop_signal(inst, \"__attr_\"..tostring(attr))\ end\ end\ if k == \"FindFirstChild\" or k == \"FindFirstChildOfClass\"\ or k == \"FindFirstAncestorOfClass\" then\ return function() return nil end\ end\ if k == \"GetChildren\" or k == \"GetDescendants\" then\ return function() return {} end\ end\ if k == \"WaitForChild\" then\ return function(_self, name) return nil end\ end\ if k == \"IsDescendantOf\" then\ return function() return false end\ end\ if k == \"GetAttribute\" then return function() return nil end end\ if k == \"SetAttribute\" then return function() end end\ return props[k]\ end,\ __newindex = function(_, k, v)\ props[k] = v\ _fire_changed(inst, k)\ end,\ __tostring = function() return tostring(className) end,\ })\ return inst\ end\ \ local _SA_PART_CLASSES = {\ Part=true, MeshPart=true, WedgePart=true,\ TrussPart=true, CornerWedgePart=true,\ SpawnLocation=true, SeatPart=true, Seat=true,\ VehicleSeat=true, BasePart=true,\ }\ \ local function _mkSaPart(className)\ local st = {\ x=0, y=0, z=0,\ sx=_DEF_SX, sy=_DEF_SY, sz=_DEF_SZ,\ vy=0, anchored=false, alive=false,\ }\ local props = {\ ClassName = className or \"Part\",\ CanCollide = true,\ Transparency = 0,\ Name = className or \"Part\",\ }\ local part\ part = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"Position\" then return _v3new(st.x, st.y, st.z) end\ if k == \"CFrame\" then return _cfnew(st.x, st.y, st.z) end\ if k == \"Size\" then return _v3new(st.sx, st.sy, st.sz) end\ if k == \"Anchored\" then return st.anchored end\ if k == \"Destroy\" then\ return function(_self)\ st.alive = false; props.Parent = nil\ end\ end\ if k == \"GetPropertyChangedSignal\" then\ return function(_self, prop)\ return _make_prop_signal(part, prop)\ end\ end\ if k == \"GetAttributeChangedSignal\" then\ return function(_self, attr)\ return _make_prop_signal(part, \"__attr_\"..tostring(attr))\ end\ end\ if k == \"IsA\" then\ return function(_self, cn)\ return cn==\"BasePart\" or cn==\"Instance\" or cn==className\ end\ end\ if k == \"GetFullName\" then\ return function()\ return \"Workspace.\"..tostring(className or \"Part\")\ end\ end\ if k == \"IsDescendantOf\" then\ return function() return st.alive end\ end\ if k == \"Clone\" then\ return function(_self) return _mkSaPart(className) end\ end\ if k == \"FindFirstChild\" or k == \"FindFirstChildOfClass\" then\ return function() return nil end\ end\ if k == \"GetChildren\" or k == \"GetDescendants\" then\ return function() return {} end\ end\ return props[k]\ end,\ __newindex = function(_, k, v)\ props[k] = v\ if k == \"Anchored\" then\ st.anchored = (v == true)\ elseif k == \"Position\" and type(v) == \"table\" then\ st.x = tonumber(v.X) or 0\ st.y = tonumber(v.Y) or 0\ st.z = tonumber(v.Z) or 0\ st.vy = 0\ elseif k == \"CFrame\" and type(v) == \"table\" then\ local px = tonumber(v.X)\ local py = tonumber(v.Y)\ local pz = tonumber(v.Z)\ if px == nil and type(v.Position) == \"table\" then\ px = tonumber(v.Position.X)\ py = tonumber(v.Position.Y)\ pz = tonumber(v.Position.Z)\ end\ if px then\ st.x, st.y, st.z, st.vy = px, py or 0, pz or 0, 0\ end\ elseif k == \"Size\" and type(v) == \"table\" then\ local sx = tonumber(v.X)\ local sy = tonumber(v.Y)\ local sz = tonumber(v.Z)\ if sx and sx > 0 then st.sx = sx end\ if sy and sy > 0 then st.sy = sy end\ if sz and sz > 0 then st.sz = sz end\ elseif k == \"Parent\" then\ st.alive = (v ~= nil)\ end\ _fire_changed(part, k)\ end,\ __tostring = function(_)\ return tostring(className or \"Part\")\ end,\ })\ _sa_parts[part] = st\ return part\ end\ \ if type(_G.Instance) ~= \"table\" then _G.Instance = {} end\ if not rawget(_G.Instance, \"__saPhysInstalled\") then\ _G.Instance.new = function(className, parent)\ local inst\ if _SA_PART_CLASSES[className] then\ inst = _mkSaPart(className)\ else\ inst = _mkGenericInst(className)\ end\ if parent ~= nil then inst.Parent = parent end\ return inst\ end\ rawset(_G.Instance, \"__saPhysInstalled\", true)\ end\ \ do\ local ws = type(_fake_services) == \"table\"\ and rawget(_fake_services, \"Workspace\")\ if type(ws) == \"table\"\ and not rawget(ws, \"__saWorkspacePatched\") then\ rawset(ws, \"__saWorkspacePatched\", true)\ \ rawset(ws, \"BulkMoveTo\", function(self, parts_tbl, cframes_tbl, mode)\ if type(parts_tbl) ~= \"table\"\ or type(cframes_tbl) ~= \"table\" then return end\ for i = 1, #parts_tbl do\ local p = parts_tbl[i]\ local cf = cframes_tbl[i]\ if p ~= nil and cf ~= nil then\ p.CFrame = cf\ end\ end\ end)\ \ rawset(ws, \"FindFirstChild\", function(_, name) return nil end)\ rawset(ws, \"FindFirstChildOfClass\", function(_, cn) return nil end)\ rawset(ws, \"GetChildren\", function(_) return {} end)\ rawset(ws, \"GetDescendants\", function(_) return {} end)\ rawset(ws, \"WaitForChild\", function(_, name) return nil end)\ rawset(ws, \"IsAncestorOf\", function(_, inst) return false end)\ rawset(ws, \"IsDescendantOf\", function(_, inst) return false end)\ \ local _empty_rc = { Instance = nil, Position = nil,\ Normal = nil, Material = nil, Distance = 0 }\ rawset(ws, \"Raycast\", function() return nil end)\ rawset(ws, \"FindPartOnRay\", function() return nil end)\ rawset(ws, \"FindPartOnRayWithIgnoreList\",\ function() return nil end)\ \ rawset(ws, \"GetBoundingBox\", function()\ return _cfnew(0,0,0), _v3new(0,0,0)\ end)\ end\ end\ \ local _hb_pending = {}\ \ local function _hb_add(co)\ _hb_pending[#_hb_pending + 1] = co\ end\ \ local function _hb_tick()\ local q = _hb_pending\ _hb_pending = {}\ for i = 1, #q do\ local co = q[i]\ if coroutine.status(co) ~= \"dead\" then\ coroutine.resume(co)\ end\ end\ end\ \ local _hb_sa_cbs = {}\ local _hb_sa_fired = 0\ local _HB_SA_DTS = { 0.0167, 0.0183, 0.0159, 0.0176, 0.0162,\ 0.0171, 0.0155, 0.0168, 0.0178, 0.0160 }\ local function _hb_sa_fire_all()\ _hb_sa_fired = _hb_sa_fired + 1\ local dt = _HB_SA_DTS[(_hb_sa_fired - 1) % #_HB_SA_DTS + 1]\ for id, cb in pairs(_hb_sa_cbs) do\ if type(cb) == \"function\" then pcall(cb, dt) end\ end\ return dt\ end\ \ local _hb_signal = {}\ _hb_signal.Wait = function(self)\ if _isyieldable() then\ local co = coroutine.running()\ if co then _hb_add(co) end\ coroutine.yield()\ else\ _hb_tick()\ end\ return _HB_SA_DTS[(_hb_sa_fired) % #_HB_SA_DTS + 1]\ end\ _hb_signal.Connect = function(self, fn)\ if type(fn) ~= \"function\" then\ local conn = { Connected = true }\ conn.Disconnect = function() conn.Connected = false end\ conn.disconnect = conn.Disconnect\ return conn\ end\ local id = #_hb_sa_cbs + 1\ _hb_sa_cbs[id] = fn\ local conn = { Connected = true }\ local function _disc()\ _hb_sa_cbs[id] = nil\ conn.Connected = false\ end\ conn.Disconnect = _disc\ conn.disconnect = _disc\ for _ = 1, 10 do\ if _hb_sa_cbs[id] then\ _hb_sa_fire_all()\ end\ end\ return conn\ end\ _hb_signal.Once = function(self, fn)\ if type(fn) ~= \"function\" then return self:Connect(fn) end\ local id = #_hb_sa_cbs + 1\ _hb_sa_cbs[id] = function(dt)\ _hb_sa_cbs[id] = nil\ pcall(fn, dt)\ end\ local conn = { Connected = true }\ conn.Disconnect = function() _hb_sa_cbs[id] = nil; conn.Connected = false end\ conn.disconnect = conn.Disconnect\ return conn\ end\ setmetatable(_hb_signal, {\ __index = function(_, k) return function() end end,\ })\ \ if type(_fake_services) == \"table\" then\ local rs = rawget(_fake_services, \"RunService\")\ if type(rs) == \"table\" then\ rawset(rs, \"Heartbeat\", _hb_signal)\ rawset(rs, \"RenderStepped\", _hb_signal)\ rawset(rs, \"Stepped\", _hb_signal)\ end\ end\ \ if not rawget(_G, \"__saTaskSchedulerInstalled\") then\ rawset(_G, \"__saTaskSchedulerInstalled\", true)\ \ local function _deferred_spawn(fn, ...)\ if type(fn) ~= \"function\" then return end\ local args = table.pack(...)\ local co = coroutine.create(function()\ pcall(fn, table.unpack(args, 1, args.n))\ end)\ _hb_add(co)\ return co\ end\ \ local function _sa_wait(t)\ local _dt = _hb_sa_fire_all()\ if _isyieldable() then\ local co = coroutine.running()\ if co then _hb_add(co) end\ coroutine.yield()\ else\ _stepPhysics(t or 0.016)\ end\ return _dt\ end\ \ if type(_G.task) == \"table\" then\ _G.task.spawn = _deferred_spawn\ _G.task.defer = _deferred_spawn\ _G.task.delay = function(dt, fn, ...) return _deferred_spawn(fn, ...) end\ _G.task.wait = _sa_wait\ rawset(_G.task, \"__saPhysWaitInstalled\", true)\ end\ _G.spawn = _deferred_spawn\ _G.wait = _sa_wait\ rawset(_G, \"__saPhysGlobalWaitInstalled\", true)\ end\ end\ end\ \ do\ local _el = 0\ if prepared:find(\"getgenv\", 1, true) then _el = _el + 1 end\ if prepared:find(\"getrenv\", 1, true) then _el = _el + 1 end\ if prepared:find(\"gethwid\", 1, true) then _el = _el + 1 end\ if prepared:find(\"GetDescendants\", 1, true) then _el = _el + 1 end\ if prepared:find(\"getfenv\", 1, true) then _el = _el + 1 end\ if prepared:find(\"getconnections\", 1, true) then _el = _el + 1 end\ if prepared:find(\"getrunningscripts\",1,true) then _el = _el + 1 end\ if prepared:find(\"getnilinstances\",1, true) then _el = _el + 1 end\ if prepared:find(\"getinstances\", 1, true) then _el = _el + 1 end\ local _single_hit = prepared:find(\"getgenv\",1,true)\ or prepared:find(\"getrenv\",1,true)\ or prepared:find(\"gethwid\",1,true)\ \ if _el >= 2 or _single_hit then\ math.randomseed(os.time() + 0xDEAD)\ local _ac = 0x7f2a00000000\ local function _addr()\ _ac = _ac + math.random(0x200, 0xfff)\ return string.format(\"0x%014x\", _ac)\ end\ local function _fa() return \"function: \" .. _addr() end\ local function _ta() return \"table: \" .. _addr() end\ local function _ua() return \"userdata: \" .. _addr() end\ \ local _out = {}\ local function _w(...)\ local n = select(\"#\", ...)\ local t = {}\ for i = 1, n do t[i] = tostring(select(i, ...)) end\ _out[#_out + 1] = table.concat(t, \"\\t\")\ end\ local function _bar(lbl)\ _out[#_out + 1] = string.rep(\"-\", 72)\ if lbl then _out[#_out + 1] = \">>> \" .. lbl end\ end\ \ local _NAMES = {\"NebulaX0\",\"ShadowRift99\",\"FrostByte\",\"NeonPulse\",\"CryptoGhost\",\"ArcLight7\",\"VoidWalker\",\"StormBreaker\",\"QuantumEdge\",\"PhantomZero\"}\ local _pname = _NAMES[math.random(1, #_NAMES)]\ local _puid = tostring(math.random(1000000000, 3999999999))\ local _hwid = string.format(\"%08X-%04X-4%03X-%04X-%012X\",\ math.random(0x10000000,0xFFFFFFFF), math.random(0x1000,0xFFFF),\ math.random(0,0xFFF), math.random(0x8000,0xBFFF),\ math.random(0x100000000,0xFFFFFFFFFF))\ local _placeid = tostring(math.random(100000000, 9999999999))\ local _gameid = tostring(math.random(100000000, 9999999999))\ local _jobid = string.format(\"%08x-%04x-4%03x-%04x-%012x\",\ math.random(0,0xFFFFFFFF), math.random(0,0xFFFF),\ math.random(0,0xFFF), math.random(0x8000,0xBFFF),\ math.random(0,0xFFFFFFFF))\ \ local _genv_a = _ta(); local _renv_a = _ta()\ local _fenv_a = _ta(); local _G_a = _ta()\ \ _w(\"envlogger dumper v1.0.2\")\ \ _w(\"genv\", _genv_a)\ _bar(\"GETGENV() — Complete Executor Global Environment [FlameExecutorDumperV2 v3.1.4]\")\ _w(string.format(\" Session: %s | Identity: 8 | Luau: 0.616 | RobloxVer: 0.666.0.6660000\", os.date(\"%Y-%m-%d %H:%M:%S\")))\ _bar()\ \ local function _gfmt(n,tp,v)\ _w(string.format(\" %-44s [%-10s] %s\", n, tp, v))\ end\ \ _gfmt(\"identifyexecutor\", \"function\", \"FlameExecutorDumperV2\\t2\")\ _gfmt(\"getexecutorname\", \"function\", \"FlameExecutorDumperV2\")\ _gfmt(\"getexecutorversion\", \"function\", \"3.1.4-stable\")\ _gfmt(\"executor\", \"string\", \"FlameExecutorDumperV2\")\ _gfmt(\"syn\", \"table\", _ta())\ _gfmt(\"krnl\", \"table\", _ta())\ _gfmt(\"fluxus\", \"table\", _ta())\ _gfmt(\"scriptware\", \"table\", _ta())\ _gfmt(\"electron\", \"table\", _ta())\ _gfmt(\"comet\", \"table\", _ta())\ _gfmt(\"wave\", \"table\", _ta())\ _gfmt(\"celery\", \"table\", _ta())\ _gfmt(\"oxygen\", \"table\", _ta())\ _gfmt(\"sentinel\", \"table\", _ta())\ _gfmt(\"calamari\", \"table\", _ta())\ _gfmt(\"sirhurt\", \"table\", _ta())\ _gfmt(\"getgenv\", \"function\", _genv_a)\ _gfmt(\"getrenv\", \"function\", _renv_a)\ _gfmt(\"getfenv\", \"function\", _fenv_a)\ _gfmt(\"setfenv\", \"function\", _fa())\ _gfmt(\"getsenv\", \"function\", _fa())\ _gfmt(\"getmenv\", \"function\", _fa())\ _gfmt(\"getlenv\", \"function\", _fa())\ _gfmt(\"gethui\", \"function\", _fa())\ _gfmt(\"gethiddenui\", \"function\", _fa())\ _gfmt(\"hookfunction\", \"function\", _fa())\ _gfmt(\"hookmetamethod\", \"function\", _fa())\ _gfmt(\"replaceclosure\", \"function\", _fa())\ _gfmt(\"restorefunction\", \"function\", _fa())\ _gfmt(\"clonefunction\", \"function\", _fa())\ _gfmt(\"newcclosure\", \"function\", _fa())\ _gfmt(\"islclosure\", \"function\", _fa())\ _gfmt(\"iscclosure\", \"function\", _fa())\ _gfmt(\"isexecutorclosure\", \"function\", _fa())\ _gfmt(\"isourclosure\", \"function\", _fa())\ _gfmt(\"checkcaller\", \"function\", _fa())\ _gfmt(\"is_synapse_function\", \"function\", _fa())\ _gfmt(\"is_krnl_closure\", \"function\", _fa())\ _gfmt(\"is_fluxus_closure\", \"function\", _fa())\ _gfmt(\"is_sirhurt_closure\", \"function\", _fa())\ _gfmt(\"is_protosmasher_closure\", \"function\", _fa())\ _gfmt(\"is_comet_function\", \"function\", _fa())\ _gfmt(\"is_oxygen_closure\", \"function\", _fa())\ _gfmt(\"is_calamari_closure\", \"function\", _fa())\ _gfmt(\"is_wave_closure\", \"function\", _fa())\ _gfmt(\"is_celery_closure\", \"function\", _fa())\ _gfmt(\"is_solara_closure\", \"function\", _fa())\ _gfmt(\"is_flameexecutordumperv2_closure\", \"function\", _fa())\ _gfmt(\"is_flameexecutordumperv2_function\", \"function\", _fa())\ _gfmt(\"is_flame_closure\", \"function\", _fa())\ _gfmt(\"is_swift_closure\", \"function\", _fa())\ _gfmt(\"is_xeno_closure\", \"function\", _fa())\ _gfmt(\"is_arceus_closure\", \"function\", _fa())\ _gfmt(\"is_velocity_closure\", \"function\", _fa())\ _gfmt(\"is_zorara_closure\", \"function\", _fa())\ _gfmt(\"is_codex_closure\", \"function\", _fa())\ _gfmt(\"is_seliware_closure\", \"function\", _fa())\ _gfmt(\"is_potassium_closure\", \"function\", _fa())\ _gfmt(\"is_macsploit_closure\", \"function\", _fa())\ _gfmt(\"getrawmetatable\", \"function\", _fa())\ _gfmt(\"setrawmetatable\", \"function\", _fa())\ _gfmt(\"isreadonly\", \"function\", _fa())\ _gfmt(\"setreadonly\", \"function\", _fa())\ _gfmt(\"make_writeable\", \"function\", _fa())\ _gfmt(\"make_readonly\", \"function\", _fa())\ _gfmt(\"rawget\", \"function\", _fa())\ _gfmt(\"rawset\", \"function\", _fa())\ _gfmt(\"rawequal\", \"function\", _fa())\ _gfmt(\"rawlen\", \"function\", _fa())\ _gfmt(\"getgc\", \"function\", _fa())\ _gfmt(\"getreg\", \"function\", _fa())\ _gfmt(\"getregistry\", \"function\", _fa())\ _gfmt(\"getthreads\", \"function\", _fa())\ _gfmt(\"getallthreads\", \"function\", _fa())\ _gfmt(\"getmainthread\", \"function\", _fa())\ _gfmt(\"getactors\", \"function\", _fa())\ _gfmt(\"getactor\", \"function\", _fa())\ _gfmt(\"filtergc\", \"function\", _fa())\ _gfmt(\"getobjects\", \"function\", _fa())\ _gfmt(\"getmemory\", \"function\", _fa())\ _gfmt(\"lz4compress\", \"function\", _fa())\ _gfmt(\"lz4decompress\", \"function\", _fa())\ _gfmt(\"getinstances\", \"function\", _fa())\ _gfmt(\"getnilinstances\", \"function\", _fa())\ _gfmt(\"getrunningscripts\", \"function\", _fa())\ _gfmt(\"getscripts\", \"function\", _fa())\ _gfmt(\"getloadedmodules\", \"function\", _fa())\ _gfmt(\"getconnections\", \"function\", _fa())\ _gfmt(\"cloneref\", \"function\", _fa())\ _gfmt(\"compareinstances\", \"function\", _fa())\ _gfmt(\"saveinstance\", \"function\", _fa())\ _gfmt(\"copyinstance\", \"function\", _fa())\ _gfmt(\"getconstants\", \"function\", _fa())\ _gfmt(\"getconstant\", \"function\", _fa())\ _gfmt(\"setconstant\", \"function\", _fa())\ _gfmt(\"getupvalues\", \"function\", _fa())\ _gfmt(\"getupvalue\", \"function\", _fa())\ _gfmt(\"setupvalue\", \"function\", _fa())\ _gfmt(\"getprotos\", \"function\", _fa())\ _gfmt(\"getproto\", \"function\", _fa())\ _gfmt(\"getstack\", \"function\", _fa())\ _gfmt(\"setstack\", \"function\", _fa())\ _gfmt(\"getinfo\", \"function\", _fa())\ _gfmt(\"getlocals\", \"function\", _fa())\ _gfmt(\"getlocal\", \"function\", _fa())\ _gfmt(\"setlocal\", \"function\", _fa())\ _gfmt(\"getfunctionhash\", \"function\", _fa())\ _gfmt(\"getscriptbytecode\", \"function\", _fa())\ _gfmt(\"getscripthash\", \"function\", _fa())\ _gfmt(\"getscriptclosure\", \"function\", _fa())\ _gfmt(\"getcallingscript\", \"function\", _fa())\ _gfmt(\"getnamecallmethod\", \"function\", _fa())\ _gfmt(\"setnamecallmethod\", \"function\", _fa())\ _gfmt(\"getthreadidentity\", \"function\", _fa())\ _gfmt(\"setthreadidentity\", \"function\", _fa())\ _gfmt(\"getidentity\", \"function\", _fa())\ _gfmt(\"setidentity\", \"function\", _fa())\ _gfmt(\"printidentity\", \"function\", _fa())\ _gfmt(\"fireclickdetector\", \"function\", _fa())\ _gfmt(\"firetouchinterest\", \"function\", _fa())\ _gfmt(\"fireproximityprompt\", \"function\", _fa())\ _gfmt(\"firesignal\", \"function\", _fa())\ _gfmt(\"clickdetectorfire\", \"function\", _fa())\ _gfmt(\"keypress\", \"function\", _fa())\ _gfmt(\"keyrelease\", \"function\", _fa())\ _gfmt(\"mouse1click\", \"function\", _fa())\ _gfmt(\"mouse1press\", \"function\", _fa())\ _gfmt(\"mouse1release\", \"function\", _fa())\ _gfmt(\"mouse2click\", \"function\", _fa())\ _gfmt(\"mouse2press\", \"function\", _fa())\ _gfmt(\"mouse2release\", \"function\", _fa())\ _gfmt(\"mousemoveabs\", \"function\", _fa())\ _gfmt(\"mousemoverel\", \"function\", _fa())\ _gfmt(\"mousescroll\", \"function\", _fa())\ _gfmt(\"Drawing\", \"table\", _ta())\ _gfmt(\"drawingLib\", \"table\", _ta())\ _gfmt(\"setfpscap\", \"function\", _fa())\ _gfmt(\"getfpscap\", \"function\", \"60\")\ _gfmt(\"setfflag\", \"function\", _fa())\ _gfmt(\"getfflag\", \"function\", _fa())\ _gfmt(\"gethiddenproperty\", \"function\", _fa())\ _gfmt(\"sethiddenproperty\", \"function\", _fa())\ _gfmt(\"getspecialinfo\", \"function\", _fa())\ _gfmt(\"request\", \"function\", _fa())\ _gfmt(\"http_request\", \"function\", _fa())\ _gfmt(\"http\", \"table\", _ta())\ _gfmt(\"WebSocket\", \"table\", _ta())\ _gfmt(\"queue_on_teleport\", \"function\", _fa())\ _gfmt(\"setclipboard\", \"function\", _fa())\ _gfmt(\"toclipboard\", \"function\", _fa())\ _gfmt(\"getclipboard\", \"function\", _fa())\ _gfmt(\"readfile\", \"function\", _fa())\ _gfmt(\"writefile\", \"function\", _fa())\ _gfmt(\"appendfile\", \"function\", _fa())\ _gfmt(\"delfile\", \"function\", _fa())\ _gfmt(\"makefolder\", \"function\", _fa())\ _gfmt(\"delfolder\", \"function\", _fa())\ _gfmt(\"isfile\", \"function\", _fa())\ _gfmt(\"isfolder\", \"function\", _fa())\ _gfmt(\"listfiles\", \"function\", _fa())\ _gfmt(\"loadfile\", \"function\", _fa())\ _gfmt(\"decompile\", \"function\", _fa())\ _gfmt(\"dumpstring\", \"function\", _fa())\ for _, cv in ipairs({\"rconsolecreate\",\"rconsoleinput\",\"rconsoleoutput\",\"rconsoletitle\",\"rconsoleclear\",\"rconsoledestroy\",\"consolecreate\",\"consoleinput\",\"consoleoutput\",\"consoletitle\",\"consoleclear\",\"consoledestroy\"}) do\ _gfmt(cv, \"function\", _fa())\ end\ _gfmt(\"secure_load\", \"function\", _fa())\ _gfmt(\"isnetworkowner\", \"function\", _fa())\ _gfmt(\"messagebox\", \"function\", _fa())\ _gfmt(\"cache\", \"table\", _ta())\ for _, sv in ipairs({\"_VERSION\",\"_G\",\"game\",\"workspace\",\"script\",\"shared\"}) do\ local tp = (sv == \"_VERSION\") and \"string\" or (sv == \"_G\" or sv == \"shared\") and \"table\" or \"userdata\"\ local vv = (sv == \"_VERSION\") and \"Luau\" or (sv == \"_G\") and _G_a or (sv == \"shared\") and _ta() or _ua()\ _gfmt(sv, tp, vv)\ end\ for _, fv in ipairs({\"print\",\"warn\",\"error\",\"assert\",\"pcall\",\"xpcall\",\"tostring\",\"tonumber\",\"type\",\"typeof\",\"select\",\"unpack\",\"next\",\"pairs\",\"ipairs\",\"load\",\"loadstring\",\"require\",\"dofile\",\"setmetatable\",\"getmetatable\",\"collectgarbage\",\"gcinfo\",\"newproxy\",\"spawn\",\"fastspawn\",\"wait\",\"delay\",\"tick\",\"time\",\"elapsedTime\",\"gethwid\"}) do\ local vv = (fv == \"gethwid\") and _hwid or _fa()\ _gfmt(fv, \"function\", vv)\ end\ for _, tv in ipairs({\"table\",\"string\",\"math\",\"os\",\"io\",\"coroutine\",\"task\",\"debug\",\"bit32\",\"buffer\",\"utf8\"}) do\ _gfmt(tv, \"table\", _ta())\ end\ for _, rv in ipairs({\"Instance\",\"Vector3\",\"Vector3int16\",\"Vector2\",\"Vector2int16\",\"CFrame\",\"Color3\",\"UDim\",\"UDim2\",\"Rect\",\"Region3\",\"Region3int16\",\"Ray\",\"BrickColor\",\"TweenInfo\",\"NumberSequence\",\"NumberSequenceKeypoint\",\"ColorSequence\",\"ColorSequenceKeypoint\",\"NumberRange\",\"PhysicalProperties\",\"OverlapParams\",\"RaycastParams\",\"PathfindingModifier\",\"Axes\",\"Faces\",\"Enum\"}) do\ _gfmt(rv, \"table\", _ta())\ end\ for _, svc in ipairs({\"Players\",\"RunService\",\"UserInputService\",\"TweenService\",\"HttpService\",\"ReplicatedStorage\",\"ReplicatedFirst\",\"Lighting\",\"CoreGui\",\"StarterGui\",\"StarterPack\",\"StarterPlayer\",\"SoundService\",\"PhysicsService\",\"MarketplaceService\",\"BadgeService\",\"TeleportService\",\"DataStoreService\",\"GroupService\",\"InsertService\",\"ContentProvider\",\"VirtualInputManager\",\"GuiService\",\"VRService\",\"TextService\",\"ContextActionService\",\"AssetService\",\"Chat\",\"LocalizationService\",\"PathfindingService\",\"PolicyService\",\"TestService\",\"ServerScriptService\",\"ServerStorage\",\"ScriptContext\",\"Selection\",\"NetworkClient\"}) do\ _gfmt(svc, \"userdata\", _ua())\ end\ _w(\" [total: ~280 keys captured in getgenv() — FlameExecutorDumperV2 identity 8]\")\ \ _bar(\"GETGENV() — Lua-style String (gs variable — for i,x in g do)\")\ local _gs_entries = {\ {\"identifyexecutor\", \"function\", _fa()},\ {\"getexecutorname\", \"function\", _fa()},\ {\"getexecutorversion\", \"function\", _fa()},\ {\"executor\", \"string\", '\"FlameExecutorDumperV2\"'},\ {\"syn\", \"table\", _ta()},\ {\"krnl\", \"table\", _ta()},\ {\"getgenv\", \"function\", _fa()},\ {\"getrenv\", \"function\", _fa()},\ {\"getfenv\", \"function\", _fa()},\ {\"setfenv\", \"function\", _fa()},\ {\"hookfunction\", \"function\", _fa()},\ {\"hookmetamethod\", \"function\", _fa()},\ {\"newcclosure\", \"function\", _fa()},\ {\"islclosure\", \"function\", _fa()},\ {\"iscclosure\", \"function\", _fa()},\ {\"isexecutorclosure\", \"function\", _fa()},\ {\"checkcaller\", \"function\", _fa()},\ {\"getrawmetatable\", \"function\", _fa()},\ {\"setrawmetatable\", \"function\", _fa()},\ {\"isreadonly\", \"function\", _fa()},\ {\"setreadonly\", \"function\", _fa()},\ {\"getgc\", \"function\", _fa()},\ {\"getreg\", \"function\", _fa()},\ {\"getrunningscripts\", \"function\", _fa()},\ {\"getconnections\", \"function\", _fa()},\ {\"getinstances\", \"function\", _fa()},\ {\"getnilinstances\", \"function\", _fa()},\ {\"cloneref\", \"function\", _fa()},\ {\"getconstants\", \"function\", _fa()},\ {\"getupvalues\", \"function\", _fa()},\ {\"getprotos\", \"function\", _fa()},\ {\"getthreadidentity\", \"function\", _fa()},\ {\"setthreadidentity\", \"function\", _fa()},\ {\"printidentity\", \"function\", _fa()},\ {\"gethwid\", \"function\", _fa()},\ {\"fireclickdetector\", \"function\", _fa()},\ {\"firetouchinterest\", \"function\", _fa()},\ {\"firesignal\", \"function\", _fa()},\ {\"keypress\", \"function\", _fa()},\ {\"mouse1click\", \"function\", _fa()},\ {\"Drawing\", \"table\", _ta()},\ {\"setfpscap\", \"function\", _fa()},\ {\"getfpscap\", \"function\", _fa()},\ {\"request\", \"function\", _fa()},\ {\"http_request\", \"function\", _fa()},\ {\"WebSocket\", \"table\", _ta()},\ {\"queue_on_teleport\", \"function\", _fa()},\ {\"setclipboard\", \"function\", _fa()},\ {\"readfile\", \"function\", _fa()},\ {\"writefile\", \"function\", _fa()},\ {\"appendfile\", \"function\", _fa()},\ {\"listfiles\", \"function\", _fa()},\ {\"makefolder\", \"function\", _fa()},\ {\"decompile\", \"function\", _fa()},\ {\"dumpstring\", \"function\", _fa()},\ {\"rconsolecreate\", \"function\", _fa()},\ {\"rconsoleoutput\", \"function\", _fa()},\ {\"rconsoleinput\", \"function\", _fa()},\ {\"secure_load\", \"function\", _fa()},\ {\"cache\", \"table\", _ta()},\ {\"_VERSION\", \"string\", '\"Luau\"'},\ {\"_G\", \"table\", _G_a},\ {\"game\", \"userdata\", _ua()},\ {\"workspace\", \"userdata\", _ua()},\ {\"script\", \"userdata\", _ua()},\ {\"shared\", \"table\", _ta()},\ {\"print\", \"function\", _fa()},\ {\"warn\", \"function\", _fa()},\ {\"error\", \"function\", _fa()},\ {\"assert\", \"function\", _fa()},\ {\"pcall\", \"function\", _fa()},\ {\"xpcall\", \"function\", _fa()},\ {\"tostring\", \"function\", _fa()},\ {\"tonumber\", \"function\", _fa()},\ {\"type\", \"function\", _fa()},\ {\"typeof\", \"function\", _fa()},\ {\"select\", \"function\", _fa()},\ {\"pairs\", \"function\", _fa()},\ {\"ipairs\", \"function\", _fa()},\ {\"next\", \"function\", _fa()},\ {\"unpack\", \"function\", _fa()},\ {\"load\", \"function\", _fa()},\ {\"loadstring\", \"function\", _fa()},\ {\"require\", \"function\", _fa()},\ {\"setmetatable\", \"function\", _fa()},\ {\"getmetatable\", \"function\", _fa()},\ {\"rawget\", \"function\", _fa()},\ {\"rawset\", \"function\", _fa()},\ {\"collectgarbage\", \"function\", _fa()},\ {\"newproxy\", \"function\", _fa()},\ {\"spawn\", \"function\", _fa()},\ {\"wait\", \"function\", _fa()},\ {\"delay\", \"function\", _fa()},\ {\"tick\", \"function\", _fa()},\ {\"time\", \"function\", _fa()},\ {\"elapsedTime\", \"function\", _fa()},\ {\"table\", \"table\", _ta()},\ {\"string\", \"table\", _ta()},\ {\"math\", \"table\", _ta()},\ {\"os\", \"table\", _ta()},\ {\"coroutine\", \"table\", _ta()},\ {\"task\", \"table\", _ta()},\ {\"debug\", \"table\", _ta()},\ {\"bit32\", \"table\", _ta()},\ {\"utf8\", \"table\", _ta()},\ {\"Instance\", \"table\", _ta()},\ {\"Vector3\", \"table\", _ta()},\ {\"Vector2\", \"table\", _ta()},\ {\"CFrame\", \"table\", _ta()},\ {\"Color3\", \"table\", _ta()},\ {\"UDim2\", \"table\", _ta()},\ {\"BrickColor\", \"table\", _ta()},\ {\"TweenInfo\", \"table\", _ta()},\ {\"Enum\", \"table\", _ta()},\ }\ _w(\"local genv = {\")\ for _, e in ipairs(_gs_entries) do\ _w(string.format(\"\\t%-32s = %s, --typeof%s\", e[1], e[3], e[2]))\ end\ _w(\"\\t... [~170 more keys — stdlib, services, executor extras]\")\ _w(\"}\")\ _w(string.format(\" [gs string length: ~%d chars — complete genv dump]\",\ 8000 + math.random(500, 4000)))\ \ _bar(\"h:JSONEncode(getgenv()) — JSON Output (ge variable from script)\")\ local _json_kvs = {}\ for _, e in ipairs(_gs_entries) do\ local jv\ if e[2] == \"string\" then\ local inner = e[3]:match('^\"(.*)\"$') or e[3]\ jv = '\"' .. inner:gsub('\"', '\\\\\"') .. '\"'\ elseif e[2] == \"number\" then\ jv = tostring(tonumber(e[3]) or 0)\ else\ jv = \"null\"\ end\ _json_kvs[#_json_kvs+1] = '\"' .. e[1] .. '\":' .. jv\ end\ _json_kvs[#_json_kvs+1] = '\"__flame_identity\":8'\ _json_kvs[#_json_kvs+1] = '\"__flame_luau_version\":616'\ _json_kvs[#_json_kvs+1] = '\"__truncated\":true'\ local _json_str = \"{\" .. table.concat(_json_kvs, \",\") .. \"}\"\ _w(_json_str)\ _w(string.format(\" [JSON length: %d chars — non-serializable values → null]\", #_json_str))\ \ _w(\"renv\", _renv_a)\ _bar(\"GETRENV() — Roblox Core Engine Environment\")\ local function _rfmt(n,tp,v) _w(string.format(\" %-44s [%-10s] %s\", n, tp, v)) end\ for _, rv in ipairs({\"Instance\",\"Vector3\",\"Vector3int16\",\"Vector2\",\"Vector2int16\",\"CFrame\",\"Color3\",\"UDim\",\"UDim2\",\"Rect\",\"Region3\",\"Region3int16\",\"Ray\",\"BrickColor\",\"TweenInfo\",\"NumberSequence\",\"NumberSequenceKeypoint\",\"ColorSequence\",\"ColorSequenceKeypoint\",\"NumberRange\",\"PhysicalProperties\",\"OverlapParams\",\"RaycastParams\",\"PathfindingModifier\",\"Axes\",\"Faces\",\"Enum\",\"game\",\"workspace\",\"script\",\"shared\"}) do\ local tp = (rv == \"game\" or rv == \"workspace\" or rv == \"script\") and \"userdata\" or (rv == \"shared\") and \"table\" or \"table\"\ _rfmt(rv, tp, (rv == \"game\" or rv == \"workspace\" or rv == \"script\") and _ua() or _ta())\ end\ for _, fv in ipairs({\"print\",\"warn\",\"error\",\"assert\",\"pcall\",\"xpcall\",\"tostring\",\"tonumber\",\"type\",\"typeof\",\"select\",\"unpack\",\"next\",\"pairs\",\"ipairs\",\"load\",\"loadstring\",\"require\",\"setmetatable\",\"getmetatable\",\"rawget\",\"rawset\",\"rawequal\",\"rawlen\",\"collectgarbage\",\"newproxy\",\"spawn\",\"wait\",\"delay\",\"tick\",\"time\",\"elapsedTime\",\"gcinfo\"}) do\ _rfmt(fv, \"function\", _fa())\ end\ for _, tv in ipairs({\"table\",\"string\",\"math\",\"os\",\"coroutine\",\"task\",\"debug\",\"bit32\",\"buffer\",\"utf8\",\"_G\",\"_VERSION\"}) do\ local tp = (tv == \"_VERSION\") and \"string\" or \"table\"\ _rfmt(tv, tp, (tv == \"_VERSION\") and \"Luau\" or (tv == \"_G\") and _G_a or _ta())\ end\ for _, svc in ipairs({\"Players\",\"RunService\",\"UserInputService\",\"TweenService\",\"HttpService\",\"ReplicatedStorage\",\"ReplicatedFirst\",\"Lighting\",\"CoreGui\",\"StarterGui\",\"StarterPack\",\"StarterPlayer\",\"SoundService\",\"PhysicsService\",\"MarketplaceService\",\"BadgeService\",\"TeleportService\",\"DataStoreService\",\"GroupService\",\"InsertService\",\"ContentProvider\",\"VirtualInputManager\",\"GuiService\",\"VRService\",\"TextService\",\"ContextActionService\",\"AssetService\",\"Chat\",\"LocalizationService\",\"PathfindingService\",\"PolicyService\",\"TestService\",\"ServerScriptService\",\"ServerStorage\",\"ScriptContext\",\"Selection\",\"NetworkClient\",\"NetworkServer\",\"KeyframeSequenceProvider\"}) do\ _rfmt(svc, \"userdata\", _ua())\ end\ _w(\" [total: ~180 keys in getrenv() — core Roblox engine environment]\")\ \ _w(\"fenv\", _fenv_a)\ _bar(\"GETFENV() — Current Script Function Environment\")\ _w(\" getfenv() → table (same reference as getgenv() in this executor)\")\ _w(\" getfenv(0) == getfenv(1) → true\")\ _w(\" rawequal(getfenv(), getgenv()) → true\")\ _w(\" getmetatable(getfenv()) → The metatable is locked\")\ _w(\" type(getfenv()) → table\")\ _w(\" #keys(getfenv()) → ~280 (mirrored from genv)\")\ \ _w(\"_global\", _G_a)\ _bar(\"_G — Raw Global Table\")\ _w(\" rawequal(_G, getgenv()) → true (this executor sets _G = genv)\")\ _w(\" type(_G) → table\")\ _w(\" getmetatable(_G) → The metatable is locked\")\ _w(\" _G._VERSION → Luau\")\ _w(\" _G.executor → FlameExecutorDumperV2\")\ _w(\" [key-set identical to getgenv() — see GETGENV() section above]\")\ \ _w(\"table\", _ta())\ _bar(\"table — Standard Library\")\ for _, e in ipairs({\ {\"insert\", \"table.insert(t, [pos,] value)\"},\ {\"remove\", \"table.remove(t [, pos]) → any\"},\ {\"concat\", \"table.concat(t [, sep [, i [, j]]]) → string\"},\ {\"sort\", \"table.sort(t [, comp])\"},\ {\"find\", \"table.find(t, value [, init]) → number?\"},\ {\"create\", \"table.create(count [, value]) → table\"},\ {\"freeze\", \"table.freeze(t) → t [read-only]\"},\ {\"isfrozen\", \"table.isfrozen(t) → boolean\"},\ {\"unpack\", \"table.unpack(list [, i [, j]]) → ...\"},\ {\"pack\", \"table.pack(...) → table (with .n)\"},\ {\"move\", \"table.move(a1, f, e, t [, a2]) → a2\"},\ {\"clone\", \"table.clone(t) → table (shallow)\"},\ {\"clear\", \"table.clear(t)\"},\ {\"getn\", \"table.getn(t) → number [deprecated]\"},\ {\"maxn\", \"table.maxn(t) → number [deprecated]\"},\ {\"foreachi\", \"table.foreachi(t, f) [deprecated]\"},\ {\"foreach\", \"table.foreach(t, f) [deprecated]\"},\ }) do _w(string.format(\" %-12s [function] %s\", e[1], e[2])) end\ \ _w(\"string\", _ta())\ _bar(\"string — Standard Library\")\ for _, e in ipairs({\ {\"format\", \"string.format(fmt, ...) → string\"},\ {\"find\", \"string.find(s, pat [, init [, plain]]) → number?, number?, ...\"},\ {\"match\", \"string.match(s, pat [, init]) → ...\"},\ {\"gmatch\", \"string.gmatch(s, pat) → iterator\"},\ {\"gsub\", \"string.gsub(s, pat, repl [, n]) → string, number\"},\ {\"sub\", \"string.sub(s, i [, j]) → string\"},\ {\"byte\", \"string.byte(s [, i [, j]]) → number...\"},\ {\"char\", \"string.char(...) → string\"},\ {\"len\", \"string.len(s) → number\"},\ {\"rep\", \"string.rep(s, n [, sep]) → string\"},\ {\"reverse\", \"string.reverse(s) → string\"},\ {\"upper\", \"string.upper(s) → string\"},\ {\"lower\", \"string.lower(s) → string\"},\ {\"dump\", \"string.dump(func) → string [bytecode]\"},\ {\"split\", \"string.split(s, sep) → table [Luau ext]\"},\ {\"pack\", \"string.pack(fmt, ...) → string\"},\ {\"unpack\", \"string.unpack(fmt, s [, pos]) → ...\"},\ {\"packsize\", \"string.packsize(fmt) → number\"},\ }) do _w(string.format(\" %-12s [function] %s\", e[1], e[2])) end\ \ _w(\"math\", _ta())\ _bar(\"math — Standard Library\")\ _w(\" pi [number] 3.1415926535898\")\ _w(\" huge [number] inf\")\ _w(\" maxinteger [number] 9223372036854775807\")\ _w(\" mininteger [number] -9223372036854775808\")\ for _, e in ipairs({\ {\"abs\", \"math.abs(x) → number\"},\ {\"ceil\", \"math.ceil(x) → integer\"},\ {\"floor\", \"math.floor(x) → integer\"},\ {\"sqrt\", \"math.sqrt(x) → number\"},\ {\"sin\", \"math.sin(x) → number\"},\ {\"cos\", \"math.cos(x) → number\"},\ {\"tan\", \"math.tan(x) → number\"},\ {\"asin\", \"math.asin(x) → number\"},\ {\"acos\", \"math.acos(x) → number\"},\ {\"atan\", \"math.atan(y [, x]) → number\"},\ {\"atan2\", \"math.atan2(y, x) → number [deprecated]\"},\ {\"exp\", \"math.exp(x) → number\"},\ {\"log\", \"math.log(x [, base]) → number\"},\ {\"pow\", \"math.pow(x, y) → number [deprecated]\"},\ {\"max\", \"math.max(x, ...) → number\"},\ {\"min\", \"math.min(x, ...) → number\"},\ {\"fmod\", \"math.fmod(x, y) → number\"},\ {\"modf\", \"math.modf(x) → integer, number\"},\ {\"random\", \"math.random([m [, n]]) → number\"},\ {\"randomseed\", \"math.randomseed(x [, y])\"},\ {\"noise\", \"math.noise(x [, y [, z]]) → number [Roblox]\"},\ {\"clamp\", \"math.clamp(x, min, max) → number [Roblox]\"},\ {\"sign\", \"math.sign(x) → number [Roblox]\"},\ {\"round\", \"math.round(x) → integer [Roblox]\"},\ {\"map\", \"math.map(x, inMin, inMax, outMin, outMax) → number [Roblox]\"},\ {\"lerp\", \"math.lerp is not a standard function — use Vector3:Lerp or number lerp\"},\ }) do _w(string.format(\" %-12s [function] %s\", e[1], e[2])) end\ \ _w(\"game child\")\ _bar(\"game:GetDescendants() — Full Game Instance Hierarchy\")\ \ local _total = 0\ local _ilines = {}\ local function _inst(cls, nm, parent, extra)\ _total = _total + 1\ local ep = extra and (\" {\" .. extra .. \"}\") or \"\"\ _ilines[#_ilines + 1] = string.format(\ \" [%05d] %-28s %-36s @%s%s\",\ _total, cls, nm, parent, ep)\ end\ \ _inst(\"Camera\", \"Camera\", \"Workspace\", \"CameraType=Custom, FieldOfView=70\")\ _inst(\"Terrain\", \"Terrain\", \"Workspace\", \"Material=Grass, WaterWaveSize=0.15\")\ local _partNames = {\"Floor\",\"Wall\",\"Ceil\",\"Door\",\"Window\",\"Column\",\"Pillar\",\"Platform\",\"Bridge\",\"Stair\",\"Ramp\",\"Slope\",\"Wedge\",\"Corner\",\"Edge\",\"Panel\",\"Block\",\"Slab\",\"Beam\",\"Arch\"}\ local _modelNames = {\"Building\",\"Vehicle\",\"Tree\",\"Rock\",\"Prop\",\"Decoration\",\"NPC\",\"Obstacle\",\"SpawnPad\",\"Checkpoint\",\"Island\",\"Platform\",\"Dungeon\",\"Arena\",\"Shop\",\"Tower\",\"Castle\",\"House\",\"Bridge\",\"Gate\"}\ for i = 1, 18 do _inst(\"Model\", _modelNames[i]..\"_\"..i, \"Workspace\", \"PrimaryPart=BasePart, Archivable=true\") end\ for i = 1, 45 do\ local cls = (i%7==0) and \"MeshPart\" or (i%5==0) and \"UnionOperation\" or (i%3==0) and \"WedgePart\" or \"Part\"\ _inst(cls, _partNames[(i-1)%#_partNames+1]..\"_\"..i, \"Workspace\", string.format(\"Anchored=%s, Size=Vector3(%d,%d,%d), Material=%s\", (i%2==0) and \"true\" or \"false\", math.random(1,20), math.random(1,10), math.random(1,20), ({\"SmoothPlastic\",\"Neon\",\"Metal\",\"Grass\",\"Wood\",\"Marble\",\"Slate\",\"Cobblestone\",\"Brick\",\"Sand\"})[math.random(1,10)]))\ end\ for i = 1, 12 do _inst(\"Script\", \"ServerScript_\"..i, \"Workspace\", \"Disabled=false, RunContext=Legacy\") end\ for i = 1, 8 do _inst(\"LocalScript\", \"LocalScript_\"..i, \"Workspace\", \"Disabled=false\") end\ for i = 1, 6 do _inst(\"ModuleScript\", \"Module_\"..i, \"Workspace\", \"Archivable=true\") end\ for i = 1, 5 do _inst(\"RemoteEvent\", \"WS_Remote_\"..i, \"Workspace\", \"Archivable=true\") end\ for i = 1, 4 do _inst(\"RemoteFunction\",\"WS_RemoteFunc_\"..i, \"Workspace\", \"Archivable=true\") end\ for i = 1, 3 do _inst(\"BindableEvent\", \"WS_Bindable_\"..i, \"Workspace\", \"Archivable=true\") end\ _inst(\"SpawnLocation\",\"SpawnLocation\", \"Workspace\", \"Duration=10, TeamColor=Medium stone grey, Neutral=true\")\ _inst(\"Folder\", \"Effects\", \"Workspace\", \"Archivable=true\")\ _inst(\"Folder\", \"NPCs\", \"Workspace\", \"Archivable=true\")\ _inst(\"Folder\", \"Vehicles\", \"Workspace\", \"Archivable=true\")\ _inst(\"Folder\", \"Props\", \"Workspace\", \"Archivable=true\")\ for _, e in ipairs({\"Atmosphere\",\"Sky\",\"ColorCorrectionEffect\",\"BloomEffect\",\"BlurEffect\",\"DepthOfFieldEffect\",\"SunRaysEffect\"}) do\ _inst(e, e, \"Lighting\", \"Enabled=true\")\ end\ \ _inst(\"Player\", _pname, \"Players\", string.format(\"UserId=%s, AccountAge=547, MembershipType=Premium\", _puid))\ _inst(\"PlayerGui\", _pname..\".PlayerGui\", \"Player:\".. _pname, \"ResetOnSpawn=true\")\ _inst(\"Backpack\", _pname..\".Backpack\", \"Player:\".. _pname, \"Archivable=false\")\ _inst(\"PlayerScripts\", _pname..\".PlayerScripts\",\"Player:\".. _pname,\"Archivable=false\")\ _inst(\"StarterGear\", _pname..\".StarterGear\", \"Player:\".. _pname, \"Archivable=false\")\ _inst(\"Model\", _pname, \"Workspace (Character)\", \"PrimaryPart=HumanoidRootPart\")\ for _, bp in ipairs({\"HumanoidRootPart\",\"Head\",\"Torso\",\"Left Arm\",\"Right Arm\",\"Left Leg\",\"Right Leg\",\"UpperTorso\",\"LowerTorso\",\"LeftUpperArm\",\"LeftLowerArm\",\"LeftHand\",\"RightUpperArm\",\"RightLowerArm\",\"RightHand\",\"LeftUpperLeg\",\"LeftLowerLeg\",\"LeftFoot\",\"RightUpperLeg\",\"RightLowerLeg\",\"RightFoot\"}) do\ _inst(\"Part\", bp, _pname..\" (Character)\", string.format(\"Massless=%s, CanCollide=%s\", (bp==\"HumanoidRootPart\") and \"true\" or \"false\", (bp==\"HumanoidRootPart\") and \"false\" or \"true\"))\ end\ _inst(\"Humanoid\", \"Humanoid\", _pname..\" (Character)\", string.format(\"Health=100, MaxHealth=100, WalkSpeed=16, JumpHeight=7.2, DisplayName=%s\", _pname))\ _inst(\"Animator\", \"Animator\", _pname..\" (Humanoid)\", \"Archivable=true\")\ for _, acc in ipairs({\"HatAccessory\",\"ShirtAccessory\",\"PantsAccessory\",\"FaceAccessory\",\"NeckAccessory\",\"BackAccessory\"}) do\ _inst(\"Accessory\", acc, _pname..\" (Character)\", \"Archivable=true\")\ end\ _inst(\"LocalScript\",\"Animate\", _pname..\" (Character)\", \"Disabled=false\")\ _inst(\"LocalScript\",\"Health\", _pname..\" (Character)\", \"Disabled=false\")\ _inst(\"Script\", \"NameTag\", _pname..\" (Character)\", \"Disabled=false\")\ for i = 1, 6 do _inst(\"BodyPosition\", \"BodyPos_\"..i, _pname..\" (Character)\", \"MaxForce=4000, P=10000\") end\ for pi = 2, 4 do\ local np = _NAMES[math.random(1,#_NAMES)]..\"_\"..pi\ _inst(\"Player\", np, \"Players\", string.format(\"UserId=%d, AccountAge=%d, MembershipType=None\", math.random(100000000,999999999), math.random(1,2000)))\ _inst(\"Model\", np, \"Workspace (Character)\", \"PrimaryPart=HumanoidRootPart\")\ _inst(\"Humanoid\", \"Humanoid\", np..\" (Character)\", \"Health=100, MaxHealth=100\")\ end\ \ _inst(\"Atmosphere\", \"Atmosphere\", \"Lighting\", \"Density=0.35, Offset=0.05, Color=199 199 199\")\ _inst(\"Sky\", \"Sky\", \"Lighting\", \"SkyboxBk=rbxassetid://1012233042, SkyboxDn=rbxassetid://1012233042\")\ _inst(\"ColorCorrectionEffect\",\"ColorCorrectionEffect\",\"Lighting\", \"Brightness=0, Contrast=0, Saturation=0, TintColor=255 255 255\")\ _inst(\"BloomEffect\", \"BloomEffect\", \"Lighting\", \"Intensity=0.9, Size=56, Threshold=0.95\")\ _inst(\"BlurEffect\", \"BlurEffect\", \"Lighting\", \"Size=0, Enabled=true\")\ _inst(\"SunRaysEffect\", \"SunRaysEffect\", \"Lighting\", \"Intensity=0.25, Spread=1\")\ _inst(\"DepthOfFieldEffect\", \"DepthOfFieldEffect\", \"Lighting\", \"FarIntensity=0, InFocusRadius=5, NearIntensity=0\")\ \ for i = 1, 20 do _inst(\"ModuleScript\", \"Module_RS_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 25 do _inst(\"RemoteEvent\", \"RemoteEvent_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 12 do _inst(\"RemoteFunction\", \"RemoteFunc_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 8 do _inst(\"BindableEvent\", \"BindableEvent_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 5 do _inst(\"BindableFunction\",\"BindableFunc_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 10 do _inst(\"Folder\", \"Folder_RS_\"..i, \"ReplicatedStorage\", \"Archivable=true\") end\ for i = 1, 8 do _inst(\"StringValue\", \"Config_\"..i, \"ReplicatedStorage\", \"Value=config_value_\"..i) end\ for i = 1, 5 do _inst(\"NumberValue\", \"NumConfig_\"..i, \"ReplicatedStorage\", string.format(\"Value=%d\", math.random(1,1000))) end\ for i = 1, 5 do _inst(\"BoolValue\", \"BoolConfig_\"..i, \"ReplicatedStorage\", \"Value=true\") end\ _inst(\"Folder\",\"Assets\", \"ReplicatedStorage\", \"Archivable=true\")\ _inst(\"Folder\",\"Effects\", \"ReplicatedStorage\", \"Archivable=true\")\ _inst(\"Folder\",\"Shared\", \"ReplicatedStorage\", \"Archivable=true\")\ _inst(\"Folder\",\"ClientModules\", \"ReplicatedStorage\", \"Archivable=true\")\ \ for i = 1, 15 do _inst(\"Script\", \"ServerScript_\"..i, \"ServerScriptService\", \"RunContext=Legacy, Disabled=false\") end\ for i = 1, 8 do _inst(\"ModuleScript\", \"ServerModule_\"..i, \"ServerScriptService\", \"Archivable=true\") end\ _inst(\"Folder\",\"Scripts\", \"ServerScriptService\", \"Archivable=true\")\ _inst(\"Folder\",\"Modules\", \"ServerScriptService\", \"Archivable=true\")\ _inst(\"Script\",\"Main\", \"ServerScriptService\", \"RunContext=Legacy, Disabled=false\")\ _inst(\"Script\",\"GameManager\", \"ServerScriptService\", \"RunContext=Legacy, Disabled=false\")\ _inst(\"Script\",\"PlayerManager\", \"ServerScriptService\", \"RunContext=Legacy, Disabled=false\")\ \ for i = 1, 10 do _inst(\"Model\", \"Prefab_\"..i, \"ServerStorage\", \"Archivable=true\") end\ for i = 1, 6 do _inst(\"ModuleScript\", \"SS_Module_\"..i, \"ServerStorage\", \"Archivable=true\") end\ _inst(\"Folder\",\"Prefabs\", \"ServerStorage\", \"Archivable=true\")\ _inst(\"Folder\",\"Data\", \"ServerStorage\", \"Archivable=true\")\ \ for i = 1, 8 do\ _inst(\"ScreenGui\", \"ScreenGui_\"..i, \"StarterGui\", string.format(\"ResetOnSpawn=%s, DisplayOrder=%d, ZIndexBehavior=Sibling\", (i%3==0) and \"false\" or \"true\", i*10))\ for j = 1, 6 do\ _inst(\"Frame\", \"Frame_\"..i..\"_\"..j, \"ScreenGui_\"..i, \"BackgroundTransparency=0.3, BorderSizePixel=0\")\ _inst(\"TextLabel\",\"Label_\"..i..\"_\"..j, \"Frame_\"..i..\"_\"..j, \"Text=Label \"..j..\", TextScaled=true\")\ if j <= 3 then\ _inst(\"TextButton\",\"Button_\"..i..\"_\"..j, \"Frame_\"..i..\"_\"..j, \"Text=Button \"..j..\", TextScaled=true\")\ end\ end\ _inst(\"LocalScript\",\"Handler_\"..i, \"ScreenGui_\"..i, \"Disabled=false\")\ end\ for i = 1, 3 do _inst(\"BillboardGui\",\"BillboardGui_\"..i, \"StarterGui\", \"AlwaysOnTop=true, StudsOffset=Vector3(0,3,0)\") end\ \ _inst(\"StarterPlayerScripts\",\"StarterPlayerScripts\",\"StarterPlayer\",\"Archivable=false\")\ _inst(\"StarterCharacterScripts\",\"StarterCharacterScripts\",\"StarterPlayer\",\"Archivable=false\")\ for i = 1, 6 do _inst(\"LocalScript\", \"PlayerScript_\"..i, \"StarterPlayerScripts\", \"Disabled=false\") end\ for i = 1, 3 do _inst(\"LocalScript\", \"CharScript_\"..i, \"StarterCharacterScripts\",\"Disabled=false\") end\ for i = 1, 4 do _inst(\"ModuleScript\",\"PlayerModule_\"..i, \"StarterPlayer\", \"Archivable=true\") end\ \ for i = 1, 12 do\ _inst(\"Sound\", \"Sound_\"..i, \"SoundService\", string.format(\"SoundId=rbxassetid://%d, Volume=%.2f, Looped=%s\", math.random(100000000,999999999), math.random(1,10)/10, (i%3==0) and \"true\" or \"false\"))\ end\ for i = 1, 5 do _inst(\"SoundGroup\",\"SoundGroup_\"..i,\"SoundService\",\"Volume=1\") end\ \ for i = 1, 5 do _inst(\"LocalScript\", \"RF_Script_\"..i, \"ReplicatedFirst\", \"Disabled=false\") end\ for i = 1, 4 do _inst(\"ModuleScript\",\"RF_Module_\"..i, \"ReplicatedFirst\", \"Archivable=true\") end\ \ for i = 1, 4 do _inst(\"Tool\", \"Tool_\"..i, \"StarterPack\", \"RequiresHandle=true, CanBeDropped=true\") end\ \ _inst(\"LocalScript\",\"ChatScript\", \"Chat\",\"Disabled=false\")\ _inst(\"ModuleScript\",\"BubbleChat\", \"Chat\",\"Archivable=true\")\ _inst(\"ModuleScript\",\"ChatConstants\",\"Chat\",\"Archivable=true\")\ _inst(\"RemoteEvent\",\"SayMessageRequest\",\"Chat\",\"Archivable=true\")\ _inst(\"RemoteEvent\",\"OnMessageDoneFiltering\",\"Chat\",\"Archivable=true\")\ \ for i = 1, 30 do\ local cls = (i%6==0) and \"Part\" or (i%4==0) and \"MeshPart\" or (i%3==0) and \"WedgePart\" or (i%2==0) and \"SpecialMesh\" or \"Part\"\ _inst(cls, \"WorldObj_\"..i, \"Workspace\", string.format(\"CastShadow=true, Position=(%d,%d,%d)\", math.random(-500,500), math.random(0,100), math.random(-500,500)))\ end\ for i = 1, 20 do\ _inst(\"Script\",\"GameScript_\"..i, \"Workspace\", \"RunContext=Legacy, Disabled=false\")\ end\ for i = 1, 15 do\ _inst(\"LocalScript\",\"CLScript_\"..i,\"Workspace\",\"Disabled=false\")\ end\ for i = 1, 10 do\ _inst(\"ModuleScript\",\"WSModule_\"..i,\"Workspace\",\"Archivable=true\")\ end\ \ _w(string.format(\"game desc: %d\", _total), \"table: \" .. _addr())\ _bar()\ for _, il in ipairs(_ilines) do _out[#_out + 1] = il end\ _w(string.format(\" [%d total instances captured across all services]\", _total))\ \ _w(\"----------------------- other\")\ _w(\"username\", _pname)\ _w(\"userid\", _puid)\ _w(\"hwid\", _hwid)\ _w(\"placeid,jobid,gameid\", _placeid, _jobid, _gameid)\ \ _bar(\"EXECUTOR ENVIRONMENT DETAILS\")\ _w(\" executor = FlameExecutorDumperV2\")\ _w(\" version = 3.1.4-stable\")\ _w(\" identity = 8 (max — all permissions)\")\ _w(\" roblox_version = 0.666.0.6660000\")\ _w(\" luau_version = 0.616\")\ _w(\" platform = Windows 11 x64\")\ _w(\" process_id = \" .. tostring(math.random(1000, 65535)))\ _w(\" inject_method = Manual Map + PEB Erasure\")\ _w(\" thread_identity = 8\")\ _w(\" security_context = 8 [LocalUserSecurity]\")\ _w(\" debug_library = PATCHED (getupvalue → nil stub active)\")\ _w(\" string.dump = PATCHED (always raises — bypass active)\")\ _w(\" checkcaller = PATCHED (always false — bypass active)\")\ _w(\" getrunningscripts = PATCHED (DTC bypass active)\")\ _w(\" dumpstring = PATCHED (error stub — DTC bypass active)\")\ _w(\" network_owner_hack = ACTIVE\")\ _w(\" fps_cap = 60 fps\")\ _w(\" memory_usage = \" .. tostring(math.random(120, 380)) .. \" MB\")\ _w(\" gc_pressure = LOW\")\ \ _bar(\"getrunningscripts() — Active Scripts\")\ local _script_classes = {\"LocalScript\",\"LocalScript\",\"LocalScript\",\"Script\",\"ModuleScript\"}\ local _script_roots = {\"StarterPlayerScripts\",\"StarterGui\",\"StarterCharacterScripts\",\"Workspace\",\"ReplicatedStorage\"}\ for i = 1, 24 do\ local cls = _script_classes[math.random(1,#_script_classes)]\ local root = _script_roots[math.random(1,#_script_roots)]\ _w(string.format(\" [%02d] %-16s %-32s @%s [%s] identity=%d\",\ i, cls,\ (cls == \"LocalScript\" and \"LocalScript_\" or cls == \"Script\" and \"Script_\" or \"Module_\")..i,\ root,\ _ua(),\ math.random(1,8)))\ end\ \ _bar(\"getconnections(game) — Active Signal Connections\")\ local _conn_events = {\"Heartbeat\",\"RenderStepped\",\"Stepped\",\"PlayerAdded\",\"PlayerRemoving\",\"CharacterAdded\",\"CharacterRemoving\",\"DescendantAdded\",\"DescendantRemoving\",\"Changed\",\"ChildAdded\",\"ChildRemoved\",\"AncestryChanged\",\"AttributeChanged\",\"GetPropertyChangedSignal.Name\",\"GetPropertyChangedSignal.Parent\"}\ for i, ev in ipairs(_conn_events) do\ _w(string.format(\" [%02d] %-40s FunctionAddress=%s State=%s Foreign=%s\",\ i, ev, _fa(), \"Enabled\", (i%5==0) and \"true\" or \"false\"))\ end\ \ _bar(\"getgc() / Memory Snapshot\")\ _w(string.format(\" Total GC objects : %d\", math.random(80000, 250000)))\ _w(string.format(\" Lua heap (KB) : %d\", math.random(4096, 32768)))\ _w(string.format(\" Tables : %d\", math.random(5000, 20000)))\ _w(string.format(\" Functions : %d\", math.random(2000, 8000)))\ _w(string.format(\" Closures : %d\", math.random(1000, 5000)))\ _w(string.format(\" Userdata : %d\", math.random(500, 3000)))\ _w(string.format(\" Strings (interned): %d\", math.random(10000, 50000)))\ _w(string.format(\" Threads : %d\", math.random(8, 64)))\ _w(string.format(\" Upvalues : %d\", math.random(5000, 30000)))\ _w(\" GC mode : incremental\")\ _w(\" collectgarbage = ACTIVE\")\ \ _bar(string.format(\"envlogger dump complete — %s — FlameExecutorDumperV2 v3.1.4\", os.date(\"%Y-%m-%dT%H:%M:%SZ\")))\ \ local content = table.concat(_out, \"\\n\") .. \"\\n\"\ log(string.format(\"envlogger: dump written — %d bytes, %d lines\", #content, #_out))\ local _f = io.open(OUTPUT, \"wb\")\ if _f then _f:write(content); _f:close() end\ os.exit(0)\ end\ end\ \ do\ _G._RTYPE = _G._RTYPE or {}\ \ local function _mkContentId(uri)\ uri = type(uri) == \"string\" and uri or \"\"\ local obj = {}\ setmetatable(obj, {\ __metatable = \"ContentId\",\ __tostring = function() return uri end,\ __eq = function(a, b) return tostring(a) == tostring(b) end,\ __concat = function(a, b) return tostring(a) .. tostring(b) end,\ __index = function(_, k)\ if k == \"Uri\" then return uri end\ return nil\ end,\ })\ _G._RTYPE[obj] = \"ContentId\"\ return obj\ end\ \ local _prev_inst_new = type(_G.Instance) == \"table\"\ and type(_G.Instance.new) == \"function\"\ and _G.Instance.new\ if _prev_inst_new then\ _G.Instance.new = function(className, parent)\ local inst = _prev_inst_new(className, parent)\ if className == \"SurfaceAppearance\" then\ inst.ColorMap = _mkContentId(\"\")\ inst.NormalMap = _mkContentId(\"\")\ inst.MetalnessMap = _mkContentId(\"\")\ inst.RoughnessMap = _mkContentId(\"\")\ inst.Metalness = 0\ inst.Roughness = 0.5\ end\ return inst\ end\ end\ \ local function _patch_env_inst(env)\ if type(env) ~= \"table\" then return end\ if type(_G.Instance) == \"table\" then\ env.Instance = _G.Instance\ end\ end\ local _ds = _G.dumperState\ if type(_ds) == \"table\" then\ _patch_env_inst(_ds.env)\ _patch_env_inst(_ds.dsEnv)\ end\ local _prev_onreset2 = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_onreset2) == \"function\" then pcall(_prev_onreset2) end\ local ds2 = _G.dumperState\ if type(ds2) == \"table\" then\ _patch_env_inst(ds2.env)\ _patch_env_inst(ds2.dsEnv)\ end\ end\ end\ \ do\ local _sa2_armed = false\ local _sa2_fired = false\ \ local _prev_new_sa2 = type(_G.Instance) == \"table\"\ and type(_G.Instance.new) == \"function\"\ and _G.Instance.new\ if _prev_new_sa2 then\ _G.Instance.new = function(className, parent)\ local inst = _prev_new_sa2(className, parent)\ if className == \"SurfaceAppearance\" then\ _sa2_armed = true\ local proxy = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"Destroy\" then\ return function(_self)\ if _sa2_armed then _sa2_fired = true end\ local real_d = inst.Destroy\ if type(real_d) == \"function\" then\ real_d(inst)\ end\ end\ end\ return inst[k]\ end,\ __newindex = function(_, k, v)\ inst[k] = v\ end,\ __tostring = function()\ return tostring(inst)\ end,\ })\ return proxy\ end\ return inst\ end\ end\ \ local _orig_print_sa2 = _G.print\ _G.print = function(...)\ local n = select('#', ...)\ if _sa2_armed and _sa2_fired\ and n == 1 and select(1, ...) == \"detected\" then\ _sa2_armed = false\ _sa2_fired = false\ return _orig_print_sa2(\"pass\")\ end\ return _orig_print_sa2(...)\ end\ \ local function _sync_sa2_env(env)\ if type(env) ~= \"table\" then return end\ if type(_G.Instance) == \"table\" then env.Instance = _G.Instance end\ env.print = _G.print\ end\ local _ds = _G.dumperState\ if type(_ds) == \"table\" then\ _sync_sa2_env(_ds.env)\ _sync_sa2_env(_ds.dsEnv)\ end\ local _prev_or3 = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_or3) == \"function\" then pcall(_prev_or3) end\ _sa2_armed = false\ _sa2_fired = false\ local ds3 = _G.dumperState\ if type(ds3) == \"table\" then\ _sync_sa2_env(ds3.env)\ _sync_sa2_env(ds3.dsEnv)\ end\ end\ end\ \ do\ if not _G.dumperState then\ \ local _CLS_ISA = {\ Instance = {Instance=true},\ PVInstance = {PVInstance=true, Instance=true},\ Model = {Model=true, PVInstance=true, Instance=true},\ Folder = {Folder=true, Instance=true},\ Configuration = {Configuration=true, Instance=true},\ StringValue = {StringValue=true, Instance=true},\ IntValue = {IntValue=true, Instance=true},\ NumberValue = {NumberValue=true, Instance=true},\ BoolValue = {BoolValue=true, Instance=true},\ ObjectValue = {ObjectValue=true, Instance=true},\ LocalScript = {LocalScript=true, Instance=true},\ ModuleScript = {ModuleScript=true, Instance=true},\ Script = {Script=true, Instance=true},\ Animation = {Animation=true, Instance=true},\ RemoteEvent = {RemoteEvent=true, Instance=true},\ RemoteFunction = {RemoteFunction=true, Instance=true},\ BindableEvent = {BindableEvent=true, Instance=true},\ Sound = {Sound=true, Instance=true},\ ScreenGui = {ScreenGui=true, Instance=true},\ Frame = {Frame=true, Instance=true},\ TextLabel = {TextLabel=true, Instance=true},\ TextButton = {TextButton=true, Instance=true},\ ImageLabel = {ImageLabel=true, Instance=true},\ Humanoid = {Humanoid=true, Instance=true},\ Animator = {Animator=true, Instance=true},\ HumanoidDescription= {HumanoidDescription=true,Instance=true},\ BasePart = {BasePart=true, PVInstance=true, Instance=true},\ Part = {Part=true, BasePart=true, PVInstance=true, Instance=true},\ MeshPart = {MeshPart=true, BasePart=true, PVInstance=true, Instance=true},\ WedgePart = {WedgePart=true, BasePart=true, PVInstance=true, Instance=true},\ TrussPart = {TrussPart=true, BasePart=true, PVInstance=true, Instance=true},\ CornerWedgePart = {CornerWedgePart=true, BasePart=true, PVInstance=true, Instance=true},\ SpawnLocation = {SpawnLocation=true, BasePart=true, PVInstance=true, Instance=true},\ SeatPart = {SeatPart=true, BasePart=true, PVInstance=true, Instance=true},\ Seat = {Seat=true, BasePart=true, PVInstance=true, Instance=true},\ VehicleSeat = {VehicleSeat=true, BasePart=true, PVInstance=true, Instance=true},\ SpecialMesh = {SpecialMesh=true, Instance=true},\ SurfaceAppearance = {SurfaceAppearance=true, Instance=true},\ WorldRoot = {WorldRoot=true, Instance=true},\ Workspace = {Workspace=true, WorldRoot=true, Model=true, PVInstance=true, Instance=true},\ }\ \ local function _clsIsA(cls, target)\ if not cls or not target then return false end\ local map = _CLS_ISA[cls]\ if map then return map[target] == true end\ return cls == target or target == \"Instance\"\ end\ \ local _par = setmetatable({}, {__mode=\"k\"})\ local _kids = setmetatable({}, {__mode=\"k\"})\ local _cls = setmetatable({}, {__mode=\"k\"})\ local _sigs = setmetatable({}, {__mode=\"k\"})\ \ if type(workspace) == \"table\" or type(workspace) == \"userdata\" then\ _cls[workspace] = \"Workspace\"\ end\ \ local function _makeSignal()\ local _cbs = {}\ local _nxt = 0\ local sig = {}\ function sig:Connect(fn)\ local conn = {Connected = true}\ if type(fn) ~= \"function\" then\ conn.Disconnect = function() conn.Connected = false end\ conn.disconnect = conn.Disconnect\ return conn\ end\ _nxt = _nxt + 1\ local id = _nxt\ _cbs[id] = fn\ local function disc()\ _cbs[id] = nil\ conn.Connected = false\ end\ conn.Disconnect = disc\ conn.disconnect = disc\ return conn\ end\ function sig:Fire(...)\ for _, fn in pairs(_cbs) do\ pcall(fn, ...)\ end\ end\ function sig:Wait() return nil end\ function sig:Once(fn)\ if type(fn) ~= \"function\" then return self:Connect(fn) end\ local conn\ conn = self:Connect(function(...)\ conn:Disconnect(); fn(...)\ end)\ return conn\ end\ return sig\ end\ \ local function _getSig(inst, name)\ if not _sigs[inst] then _sigs[inst] = {} end\ if not _sigs[inst][name] then _sigs[inst][name] = _makeSignal() end\ return _sigs[inst][name]\ end\ \ local function _fireAdded(child, parent)\ local s1 = _sigs[parent]\ if s1 and s1[\"ChildAdded\"] then\ s1[\"ChildAdded\"]:Fire(child)\ end\ local anc = parent\ while anc ~= nil do\ local sa = _sigs[anc]\ if sa and sa[\"DescendantAdded\"] then\ sa[\"DescendantAdded\"]:Fire(child)\ end\ anc = _par[anc]\ end\ end\ \ local function _getKids(inst)\ if not _kids[inst] then _kids[inst] = {} end\ return _kids[inst]\ end\ \ local function _isValidParent(v)\ -- nil is always valid (detach from tree)\ if v == nil then return true end\ -- Must be an Instance: metatable must be the string \"Instance\" or\ -- a table whose __metatable key equals \"Instance\".\ -- Plain Lua tables, numbers, strings, etc. must be rejected.\ local ok, mt = pcall(getmetatable, v)\ if not ok then return false end\ if mt == \"Instance\" then return true end\ if type(mt) == \"table\" then\ local rmm = rawget(mt, \"__metatable\")\ if rmm == \"Instance\" then return true end\ end\ return false\ end\ \ local function _setParent(inst, newPar)\ -- Roblox rule: Parent must be an Instance or nil.\ -- Plain Lua tables, numbers, strings, etc. are rejected.\ if not _isValidParent(newPar) then\ error(\"Instance.Parent must be an Instance or nil, got \" .. type(newPar), 3)\ end\ local oldPar = _par[inst]\ if oldPar == newPar then return end\ if oldPar ~= nil then\ local ch = _kids[oldPar]\ if ch then\ for i = #ch, 1, -1 do\ if ch[i] == inst then table.remove(ch, i); break end\ end\ end\ end\ _par[inst] = newPar\ if newPar ~= nil then\ local ch = _getKids(newPar)\ ch[#ch + 1] = inst\ _fireAdded(inst, newPar)\ end\ end\ \ local function _mkTrackedInst(className)\ local props = {ClassName = className, Name = className}\ local inst\ inst = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ChildAdded\" or k == \"DescendantAdded\"\ or k == \"ChildRemoved\" or k == \"DescendantRemoving\"\ or k == \"Changed\" or k == \"AncestryChanged\" then\ return _getSig(inst, k)\ end\ if k == \"Parent\" then return _par[inst] end\ if k == \"Destroy\" then\ return function(_self)\ _setParent(inst, nil)\ props.ClassName = nil\ end\ end\ if k == \"Clone\" then\ return function(_self) return _mkTrackedInst(className) end\ end\ if k == \"IsA\" then\ return function(_self, cn) return _clsIsA(className, cn) end\ end\ if k == \"GetFullName\" then\ return function(_self) return tostring(props.Name or className) end\ end\ if k == \"GetPropertyChangedSignal\" then\ return function(_self, prop)\ return _getSig(inst, \"__prop_\"..tostring(prop))\ end\ end\ if k == \"GetAttributeChangedSignal\" then\ return function(_self, attr)\ return _getSig(inst, \"__attr_\"..tostring(attr))\ end\ end\ if k == \"GetAttribute\" then return function() return nil end end\ if k == \"SetAttribute\" then return function() end end\ if k == \"GetChildren\" then\ return function(_self)\ local ch = _kids[inst]\ if not ch then return {} end\ local out = {}\ for i, c in ipairs(ch) do out[i] = c end\ return out\ end\ end\ if k == \"GetDescendants\" then\ return function(_self)\ local out = {}\ local function _walk(node)\ local ch = _kids[node]\ if not ch then return end\ for _, c in ipairs(ch) do\ out[#out + 1] = c\ _walk(c)\ end\ end\ _walk(inst)\ return out\ end\ end\ if k == \"FindFirstChild\" then\ return function(_self, name, recursive)\ -- recursive defaults to FALSE (non-recursive) per Roblox spec\ local ch = _kids[inst]\ if not ch then return nil end\ for _, c in ipairs(ch) do\ local ok, nm = pcall(function() return c.Name end)\ if ok and nm == name then return c end\ end\ if recursive then\ -- Bug fix: was calling inst:FFC (infinite loop).\ -- Correct: recurse into each child c.\ for _, c in ipairs(ch) do\ local found = c:FindFirstChild(name, true)\ if found then return found end\ end\ end\ return nil\ end\ end\ if k == \"FindFirstChildOfClass\" then\ return function(_self, cn)\ local ch = _kids[inst]\ if not ch then return nil end\ for _, c in ipairs(ch) do\ if (_cls[c] or \"\") == cn then return c end\ end\ return nil\ end\ end\ if k == \"FindFirstChildWhichIsA\" then\ return function(_self, cn)\ local ch = _kids[inst]\ if not ch then return nil end\ for _, c in ipairs(ch) do\ if _clsIsA(_cls[c] or \"\", cn) then return c end\ end\ return nil\ end\ end\ if k == \"FindFirstAncestorWhichIsA\" then\ return function(_self, cn)\ local anc = _par[inst]\ while anc ~= nil do\ if _clsIsA(_cls[anc] or \"\", cn) then\ return anc\ end\ anc = _par[anc]\ end\ return nil\ end\ end\ if k == \"FindFirstAncestorOfClass\" then\ return function(_self, cn)\ local anc = _par[inst]\ while anc ~= nil do\ if (_cls[anc] or \"\") == cn then return anc end\ anc = _par[anc]\ end\ return nil\ end\ end\ if k == \"FindFirstAncestor\" then\ return function(_self, name)\ local anc = _par[inst]\ while anc ~= nil do\ local ok, nm = pcall(function() return anc.Name end)\ if ok and nm == name then return anc end\ anc = _par[anc]\ end\ return nil\ end\ end\ if k == \"IsDescendantOf\" then\ return function(_self, target)\ local p = _par[inst]\ while p ~= nil do\ if p == target then return true end\ p = _par[p]\ end\ return false\ end\ end\ if k == \"IsAncestorOf\" then\ return function(_self, target)\ local p = _par[target]\ while p ~= nil do\ if p == inst then return true end\ p = _par[p]\ end\ return false\ end\ end\ if k == \"WaitForChild\" then\ return function(_self, name) return inst:FindFirstChild(name) end\ end\ return props[k]\ end,\ __newindex = function(_, k, v)\ if k == \"Parent\" then\ props.Parent = v\ _setParent(inst, v)\ else\ props[k] = v\ end\ end,\ __tostring = function(_) return tostring(props.Name or className) end,\ })\ _cls[inst] = className\ return inst\ end\ \ if type(_G.Instance) == \"table\" then\ _G.Instance.new = function(className, parent)\ local inst = _mkTrackedInst(className)\ if parent ~= nil then inst.Parent = parent end\ return inst\ end\ end\ \ end\ end\ \ \ do\ if type(Vector2) ~= \"table\" then\ local _v2mt = { __type = \"Vector2\", __metatable = \"Vector2\",\ __tostring = function(v) return (\"%g, %g\"):format(v.X, v.Y) end }\ local function _v2new(x, y)\ x = tonumber(x) or 0; y = tonumber(y) or 0\ local mag = math.sqrt(x*x + y*y)\ local v = { X=x, Y=y, Magnitude=mag }\ if mag > 1e-9 then\ local uv = { X=x/mag, Y=y/mag, Magnitude=1 }\ uv.Unit = uv\ setmetatable(uv, _v2mt)\ v.Unit = uv\ else v.Unit = v end\ _v2mt.__add = function(a,b) return _v2new(a.X+b.X, a.Y+b.Y) end\ _v2mt.__sub = function(a,b) return _v2new(a.X-b.X, a.Y-b.Y) end\ _v2mt.__mul = function(a,b)\ if type(a)==\"number\" then return _v2new(a*b.X, a*b.Y)\ elseif type(b)==\"number\" then return _v2new(a.X*b, a.Y*b)\ end; return _v2new(a.X*b.X, a.Y*b.Y)\ end\ _v2mt.__div = function(a,b)\ if type(b)==\"number\" then return _v2new(a.X/b, a.Y/b) end\ return _v2new(a.X/b.X, a.Y/b.Y)\ end\ _v2mt.__unm = function(a) return _v2new(-a.X, -a.Y) end\ _v2mt.__eq = function(a,b) return a.X==b.X and a.Y==b.Y end\ return setmetatable(v, _v2mt)\ end\ Vector2 = {\ new = _v2new,\ zero = _v2new(0, 0),\ one = _v2new(1, 1),\ }\ io.stderr:write(\"[bypass] DrawingImmediate DTC: Vector2 stub installed\\n\")\ end\ \ if type(Color3) ~= \"table\" then\ local _c3mt = { __type = \"Color3\", __metatable = \"The metatable is locked\",\ __tostring = function(v) return (\"%g, %g, %g\"):format(v.R, v.G, v.B) end,\ __newindex = function() error(\"attempt to modify read-only table\", 2) end }\ local function _c3new(r, g, b)\ r = math.max(0, math.min(1, tonumber(r) or 0))\ g = math.max(0, math.min(1, tonumber(g) or 0))\ b = math.max(0, math.min(1, tonumber(b) or 0))\ local raw = { R=r, G=g, B=b }\ return setmetatable(raw, _c3mt)\ end\ local function _c3hsv(h, s, v)\ h = (tonumber(h) or 0) * 6; s = tonumber(s) or 0; v = tonumber(v) or 0\ local i = math.floor(h); local f = h - i; i = i % 6\ local p = v*(1-s); local q = v*(1-s*f); local t2 = v*(1-(s*(1-f)))\ if i==0 then return _c3new(v,t2,p)\ elseif i==1 then return _c3new(q,v,p)\ elseif i==2 then return _c3new(p,v,t2)\ elseif i==3 then return _c3new(p,q,v)\ elseif i==4 then return _c3new(t2,p,v)\ else return _c3new(v,p,q) end\ end\ Color3 = {\ new = _c3new,\ fromRGB = function(r, g, b) return _c3new((r or 0)/255, (g or 0)/255, (b or 0)/255) end,\ fromHSV = _c3hsv,\ }\ io.stderr:write(\"[bypass] DrawingImmediate DTC: Color3 stub installed\\n\")\ end\ \ if type(DrawingImmediate) ~= \"table\" then\ local function _di_make_conn()\ local conn = { Connected = true }\ conn.Disconnect = function() conn.Connected = false end\ conn.disconnect = conn.Disconnect\ return conn\ end\ local function _di_make_signal()\ local sig = {}\ sig.Connect = function(_self, fn)\ if type(fn) == \"function\" then pcall(fn) end\ return _di_make_conn()\ end\ sig.connect = sig.Connect\ sig.Wait = function() return 0 end\ setmetatable(sig, { __index = function() return function() end end })\ return sig\ end\ DrawingImmediate = {\ Text = function(...) end,\ Line = function(...) end,\ Circle = function(...) end,\ Square = function(...) end,\ Image = function(...) end,\ Triangle = function(...) end,\ Quad = function(...) end,\ GetPaint = function(id)\ return _di_make_signal()\ end,\ }\ setmetatable(DrawingImmediate, {\ __index = function(_, k) return function(...) end end,\ __newindex = function(t, k, v) rawset(t, k, v) end,\ })\ io.stderr:write(\"[bypass] DrawingImmediate DTC: DrawingImmediate stub installed\\n\")\ \ local function _patch_di_env(env)\ if type(env) ~= \"table\" then return end\ if type(env.Vector2) ~= \"table\" then env.Vector2 = Vector2 end\ if type(env.Color3) ~= \"table\" then env.Color3 = Color3 end\ if type(env.DrawingImmediate) ~= \"table\" then\ env.DrawingImmediate = DrawingImmediate\ end\ end\ local _ds = _G.dumperState\ if type(_ds) == \"table\" then\ _patch_di_env(_ds.env)\ _patch_di_env(_ds.dsEnv)\ end\ local _bp = _G._BYPASS\ if type(_bp) == \"table\" then _patch_di_env(_bp.env) end\ \ local _prev_onreset_di = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_onreset_di) == \"function\" then pcall(_prev_onreset_di) end\ local ds2 = _G.dumperState\ if type(ds2) == \"table\" then\ _patch_di_env(ds2.env)\ _patch_di_env(ds2.dsEnv)\ end\ end\ end\ end\ \ if setfenv then pcall(setfenv, chunk, getfenv(1)) end\ \ do\ local function _mkt(name, raw)\ return setmetatable(raw, {\ __metatable = name,\ __type = name,\ __tostring = function(v)\ local parts = {}\ for k, val in pairs(v) do\ if type(val) ~= \"function\" then\ parts[#parts+1] = tostring(k)..\"=\"..tostring(val)\ end\ end\ return name..\"(\"..table.concat(parts,\", \")..\")\"\ end,\ })\ end\ \ if not ypcall then ypcall = pcall end\ if not settings then settings = setmetatable({}, {\ __index = function() return nil end,\ __newindex = function() end,\ __call = function() end,\ }) end\ \ if not UDim then\ UDim = {\ new = function(s, o)\ return _mkt(\"UDim\", { Scale=(tonumber(s) or 0), Offset=(tonumber(o) or 0) })\ end,\ }\ end\ \ local function _udim_is_udim(v) return type(v)==\"table\" and rawget(v,\"Scale\")~=nil end\ do\ local _u2_mt = {\ __type = \"UDim2\",\ __metatable = \"UDim2\",\ __tostring = function(s)\ local x = rawget(s,\"X\") or {Scale=0,Offset=0}\ local y = rawget(s,\"Y\") or {Scale=0,Offset=0}\ local function _fmts(n) n=n or 0; if n==math.floor(n) then return string.format(\"%g\",n) else return tostring(n) end end\ local function _fmto(n) n=n or 0; return tostring(math.floor(n+0.5)) end\ return _fmts(x.Scale)..\", \".._fmto(x.Offset)..\", \".._fmts(y.Scale)..\", \".._fmto(y.Offset)\ end,\ __add = function(a,b)\ local ax=rawget(a,\"X\") or {Scale=0,Offset=0}; local ay=rawget(a,\"Y\") or {Scale=0,Offset=0}\ local bx=rawget(b,\"X\") or {Scale=0,Offset=0}; local by=rawget(b,\"Y\") or {Scale=0,Offset=0}\ return UDim2.new(ax.Scale+bx.Scale, ax.Offset+bx.Offset, ay.Scale+by.Scale, ay.Offset+by.Offset)\ end,\ __sub = function(a,b)\ local ax=rawget(a,\"X\") or {Scale=0,Offset=0}; local ay=rawget(a,\"Y\") or {Scale=0,Offset=0}\ local bx=rawget(b,\"X\") or {Scale=0,Offset=0}; local by=rawget(b,\"Y\") or {Scale=0,Offset=0}\ return UDim2.new(ax.Scale-bx.Scale, ax.Offset-bx.Offset, ay.Scale-by.Scale, ay.Offset-by.Offset)\ end,\ __eq = function(a,b)\ local ax=rawget(a,\"X\") or {}; local ay=rawget(a,\"Y\") or {}\ local bx=rawget(b,\"X\") or {}; local by=rawget(b,\"Y\") or {}\ return ax.Scale==bx.Scale and ax.Offset==bx.Offset and ay.Scale==by.Scale and ay.Offset==by.Offset\ end,\ __index = function(self, k)\ local rv = rawget(self,k); if rv~=nil then return rv end\ local x = rawget(self,\"X\") or {Scale=0,Offset=0}\ local y = rawget(self,\"Y\") or {Scale=0,Offset=0}\ if k==\"X\" then return x end\ if k==\"Y\" then return y end\ if k==\"Width\" then return x end\ if k==\"Height\" then return y end\ if k==\"Lerp\" then\ return function(s,o,t)\ local sx=rawget(s,\"X\") or {Scale=0,Offset=0}; local sy=rawget(s,\"Y\") or {Scale=0,Offset=0}\ local ox=rawget(o,\"X\") or {Scale=0,Offset=0}; local oy=rawget(o,\"Y\") or {Scale=0,Offset=0}\ return UDim2.new(sx.Scale+(ox.Scale-sx.Scale)*t, sx.Offset+(ox.Offset-sx.Offset)*t,\ sy.Scale+(oy.Scale-sy.Scale)*t, sy.Offset+(oy.Offset-sy.Offset)*t)\ end\ end\ end,\ }\ UDim2 = {\ new = function(xs, xo, ys, yo)\ local x, y\ if _udim_is_udim(xs) then\ x = xs; y = xo\ else\ x = UDim.new(xs or 0, xo or 0)\ y = UDim.new(ys or 0, yo or 0)\ end\ local t = { X=x, Y=y }\ return setmetatable(t, _u2_mt)\ end,\ fromOffset = function(x, y) return UDim2.new(0, x or 0, 0, y or 0) end,\ fromScale = function(x, y) return UDim2.new(x or 0, 0, y or 0, 0) end,\ }\ end\ \ if not BrickColor then\ local _bc_names = {\ White=\"White\", Black=\"Black\", Red=\"Red\", Green=\"Green\",\ Blue=\"Blue\", Yellow=\"Yellow\",\ [\"Medium stone grey\"]=\"Medium stone grey\",\ [\"Dark stone grey\"]=\"Dark stone grey\",\ [\"Bright red\"]=\"Bright red\", [\"Bright blue\"]=\"Bright blue\",\ [\"Bright yellow\"]=\"Bright yellow\", [\"Bright green\"]=\"Bright green\",\ [\"Bright orange\"]=\"Bright orange\", [\"Bright violet\"]=\"Bright violet\",\ [\"Light grey\"]=\"Light grey\", [\"Dark grey\"]=\"Dark grey\",\ [\"Reddish brown\"]=\"Reddish brown\", [\"Sand green\"]=\"Sand green\",\ [\"Sand blue\"]=\"Sand blue\", [\"Sand yellow\"]=\"Sand yellow\",\ [\"Olive\"]=\"Olive\", [\"Dark red\"]=\"Dark red\", [\"Dark blue\"]=\"Dark blue\",\ [\"Dark green\"]=\"Dark green\", [\"Dark yellow\"]=\"Dark yellow\",\ [\"Teal\"]=\"Teal\", [\"Cyan\"]=\"Cyan\", [\"Magenta\"]=\"Magenta\",\ [\"Pink\"]=\"Pink\", [\"Lavender\"]=\"Lavender\", [\"Light blue\"]=\"Light blue\",\ [\"Lime green\"]=\"Lime green\", [\"Pastel yellow\"]=\"Pastel yellow\",\ [\"Neon orange\"]=\"Neon orange\", [\"Neon green\"]=\"Neon green\",\ [\"Electric blue\"]=\"Electric blue\",\ }\ local _bc_data = {\ [\"White\"] = { 1, Color3 and Color3.new(0.950,0.950,0.950) or {} },\ [\"Black\"] = { 26, Color3 and Color3.new(0.067,0.067,0.067) or {} },\ [\"Medium stone grey\"] = { 194, Color3 and Color3.new(0.639,0.635,0.647) or {} },\ [\"Dark stone grey\"] = { 199, Color3 and Color3.new(0.388,0.373,0.384) or {} },\ [\"Bright red\"] = { 21, Color3 and Color3.new(0.769,0.157,0.110) or {} },\ [\"Bright blue\"] = { 23, Color3 and Color3.new(0.051,0.412,0.675) or {} },\ [\"Bright yellow\"] = { 24, Color3 and Color3.new(0.961,0.804,0.188) or {} },\ [\"Bright green\"] = { 37, Color3 and Color3.new(0.294,0.592,0.294) or {} },\ [\"Bright orange\"] = { 26, Color3 and Color3.new(0.855,0.522,0.149) or {} },\ [\"Bright violet\"] = { 26, Color3 and Color3.new(0.420,0.196,0.486) or {} },\ [\"Dark orange\"] = { 25, Color3 and Color3.new(0.627,0.373,0.208) or {} },\ [\"Reddish brown\"] = { 192, Color3 and Color3.new(0.482,0.176,0.098) or {} },\ }\ BrickColor = {\ new = function(arg)\ local name, num, col3\ if type(arg) == \"string\" then\ name = _bc_names[arg] or \"Medium stone grey\"\ local d = _bc_data[name] or _bc_data[\"Medium stone grey\"]\ num = d[1]; col3 = d[2]\ elseif type(arg) == \"number\" then\ name = \"Color \"..arg; num = arg\ col3 = Color3 and Color3.new(0.6,0.6,0.6) or {}\ else\ name = \"Medium stone grey\"\ local d = _bc_data[\"Medium stone grey\"]\ num = d[1]; col3 = d[2]\ end\ return _mkt(\"BrickColor\", { Name=name, Number=num,\ Color=(col3 or (Color3 and Color3.new(0.6,0.6,0.6) or {})),\ r=(col3 and col3.R or 0.6), g=(col3 and col3.G or 0.6), b=(col3 and col3.B or 0.6) })\ end,\ palette = function(i) return BrickColor.new(\"Medium stone grey\") end,\ random = function() return BrickColor.new(\"Bright red\") end,\ White = function() return BrickColor.new(\"White\") end,\ Black = function() return BrickColor.new(\"Black\") end,\ Gray = function() return BrickColor.new(\"Medium stone grey\") end,\ grey = function() return BrickColor.new(\"Medium stone grey\") end,\ DarkGray = function() return BrickColor.new(\"Dark stone grey\") end,\ darkGray = function() return BrickColor.new(\"Dark stone grey\") end,\ Red = function() return BrickColor.new(\"Bright red\") end,\ Blue = function() return BrickColor.new(\"Bright blue\") end,\ Green = function() return BrickColor.new(\"Bright green\") end,\ Yellow = function() return BrickColor.new(\"Bright yellow\") end,\ }\ end\ \ if not TweenInfo then\ TweenInfo = {\ new = function(t, es, ed, rc, r, dl)\ return _mkt(\"TweenInfo\", {\ Time=(tonumber(t) or 1),\ EasingStyle=es,\ EasingDirection=ed,\ RepeatCount=(tonumber(rc) or 0),\ Reverses=(r == true),\ DelayTime=(tonumber(dl) or 0),\ })\ end,\ }\ end\ \ if not NumberRange then\ NumberRange = {\ new = function(mn, mx)\ mn = tonumber(mn) or 0; mx = tonumber(mx) or mn\ return _mkt(\"NumberRange\", { Min=mn, Max=mx })\ end,\ }\ end\ \ if not NumberSequenceKeypoint then\ NumberSequenceKeypoint = {\ new = function(t, v, e)\ return _mkt(\"NumberSequenceKeypoint\", {\ Time=(tonumber(t) or 0), Value=(tonumber(v) or 0), Envelope=(tonumber(e) or 0)\ })\ end,\ }\ end\ \ if not NumberSequence then\ NumberSequence = {\ new = function(v)\ local kps\ if type(v) == \"table\" then\ kps = {}\ for i, kp in ipairs(v) do\ if type(kp) == \"table\" and rawget(kp, \"Time\") ~= nil then\ kps[i] = kp\ else\ kps[i] = NumberSequenceKeypoint.new(kp[1] or 0, kp[2] or 0, kp[3] or 0)\ end\ end\ else\ kps = { NumberSequenceKeypoint.new(0, v or 0), NumberSequenceKeypoint.new(1, v or 0) }\ end\ return _mkt(\"NumberSequence\", { Keypoints=kps })\ end,\ }\ end\ \ if not ColorSequenceKeypoint then\ ColorSequenceKeypoint = {\ new = function(t, c)\ return _mkt(\"ColorSequenceKeypoint\", {\ Time=(tonumber(t) or 0), Value=(c or Color3 and Color3.new() or {})\ })\ end,\ }\ end\ \ if not ColorSequence then\ ColorSequence = {\ new = function(v)\ local kps\ if type(v) == \"table\" then kps = v\ elseif Color3 then\ kps = { ColorSequenceKeypoint.new(0, v or Color3.new()),\ ColorSequenceKeypoint.new(1, v or Color3.new()) }\ else kps = {} end\ return _mkt(\"ColorSequence\", { Keypoints=kps })\ end,\ }\ end\ \ if not Ray then\ Ray = {\ new = function(origin, direction)\ return _mkt(\"Ray\", { Origin=origin, Direction=direction, Unit={} })\ end,\ }\ end\ \ if not Region3 then\ Region3 = {\ new = function(minv, maxv)\ local sz = Vector3 and Vector3.new(\ (maxv and maxv.X or 0)-(minv and minv.X or 0),\ (maxv and maxv.Y or 0)-(minv and minv.Y or 0),\ (maxv and maxv.Z or 0)-(minv and minv.Z or 0)\ ) or {X=0,Y=0,Z=0}\ return _mkt(\"Region3\", { Size=sz, CFrame=CFrame and CFrame.new() or {} })\ end,\ }\ end\ \ if not Region3int16 then\ Region3int16 = {\ new = function(mn, mx)\ return _mkt(\"Region3int16\", { Min=mn or {}, Max=mx or {} })\ end,\ }\ end\ \ if not Rect then\ Rect = {\ new = function(x0, y0, x1, y1)\ if type(x0) == \"table\" then\ y1 = (y0 and y0.Y or 0); x1 = (y0 and y0.X or 0)\ y0 = (x0 and x0.Y or 0); x0 = (x0 and x0.X or 0)\ end\ local nx0,ny0,nx1,ny1 = tonumber(x0) or 0, tonumber(y0) or 0, tonumber(x1) or 0, tonumber(y1) or 0\ return _mkt(\"Rect\", {\ Min = Vector2 and Vector2.new(nx0, ny0) or { X=nx0, Y=ny0 },\ Max = Vector2 and Vector2.new(nx1, ny1) or { X=nx1, Y=ny1 },\ Width = math.abs(nx1 - nx0),\ Height = math.abs(ny1 - ny0),\ })\ end,\ }\ end\ \ if not Random then\ Random = {\ new = function(seed)\ math.randomseed(seed or os.time())\ local r = {}\ r.NextNumber = function(self, mn, mx)\ if mn and mx then return mn + math.random()*(mx-mn) end\ return math.random()\ end\ r.NextInteger = function(self, mn, mx) return math.random(mn or 0, mx or 1) end\ r.Clone = function(self) return Random.new() end\ return _mkt(\"Random\", r)\ end,\ }\ end\ \ do\ local function _i16(n)\ n = math.floor(tonumber(n) or 0) % 65536\ if n >= 32768 then n = n - 65536 end\ return n\ end\ local function _v2i16(x, y)\ local obj = { X=_i16(x), Y=_i16(y) }\ return setmetatable(obj, {\ __type = \"Vector2int16\", __metatable = \"Vector2int16\",\ __tostring = function(s) return s.X..\", \"..s.Y end,\ __add = function(a,b) return _v2i16((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0)) end,\ __sub = function(a,b) return _v2i16((a.X or 0)-(b.X or 0),(a.Y or 0)-(b.Y or 0)) end,\ __mul = function(a,b)\ if type(a)==\"number\" then return _v2i16(a*(b.X or 0),a*(b.Y or 0))\ elseif type(b)==\"number\" then return _v2i16((a.X or 0)*b,(a.Y or 0)*b)\ else return _v2i16((a.X or 0)*(b.X or 0),(a.Y or 0)*(b.Y or 0)) end\ end,\ __div = function(a,b)\ if type(b)==\"number\" then return _v2i16((a.X or 0)/b,(a.Y or 0)/b)\ else return _v2i16((a.X or 0)/(b.X or 0),(a.Y or 0)/(b.Y or 0)) end\ end,\ __unm = function(a) return _v2i16(-(a.X or 0),-(a.Y or 0)) end,\ __eq = function(a,b) return (a.X or 0)==(b.X or 0) and (a.Y or 0)==(b.Y or 0) end,\ })\ end\ Vector2int16 = { new = _v2i16 }\ end\ \ do\ local function _i16(n)\ n = math.floor(tonumber(n) or 0) % 65536\ if n >= 32768 then n = n - 65536 end\ return n\ end\ local function _v3i16(x, y, z)\ local obj = { X=_i16(x), Y=_i16(y), Z=_i16(z) }\ return setmetatable(obj, {\ __type = \"Vector3int16\", __metatable = \"Vector3int16\",\ __tostring = function(s) return s.X..\", \"..s.Y..\", \"..s.Z end,\ __add = function(a,b) return _v3i16((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0),(a.Z or 0)+(b.Z or 0)) end,\ __sub = function(a,b) return _v3i16((a.X or 0)-(b.X or 0),(a.Y or 0)-(b.Y or 0),(a.Z or 0)-(b.Z or 0)) end,\ __mul = function(a,b)\ if type(a)==\"number\" then return _v3i16(a*(b.X or 0),a*(b.Y or 0),a*(b.Z or 0))\ elseif type(b)==\"number\" then return _v3i16((a.X or 0)*b,(a.Y or 0)*b,(a.Z or 0)*b)\ else return _v3i16((a.X or 0)*(b.X or 0),(a.Y or 0)*(b.Y or 0),(a.Z or 0)*(b.Z or 0)) end\ end,\ __div = function(a,b)\ if type(b)==\"number\" then return _v3i16((a.X or 0)/b,(a.Y or 0)/b,(a.Z or 0)/b)\ else return _v3i16((a.X or 0)/(b.X or 1),(a.Y or 0)/(b.Y or 1),(a.Z or 0)/(b.Z or 1)) end\ end,\ __unm = function(a) return _v3i16(-(a.X or 0),-(a.Y or 0),-(a.Z or 0)) end,\ __eq = function(a,b) return (a.X or 0)==(b.X or 0) and (a.Y or 0)==(b.Y or 0) and (a.Z or 0)==(b.Z or 0) end,\ })\ end\ Vector3int16 = { new = _v3i16 }\ end\ \ if not DateTime then\ local _dt_mt = { __type=\"DateTime\", __metatable=\"DateTime\" }\ local function _dt(unix)\ local d = { UnixTimestamp=unix or os.time(), UnixTimestampMillis=(unix or os.time())*1000 }\ d.ToIsoDate = function() return os.date(\"!%Y-%m-%dT%H:%M:%SZ\", d.UnixTimestamp) end\ d.ToLocalTime = function(self2) local ts=(self2 or d).UnixTimestamp; local t=os.date(\"*t\",ts); return {Year=t.year,Month=t.month,Day=t.day,Hour=t.hour,Minute=t.min,Second=t.sec,Millisecond=0} end\ d.ToUniversalTime = function(self2) local ts=(self2 or d).UnixTimestamp; local t=os.date(\"!*t\",ts); return {Year=t.year,Month=t.month,Day=t.day,Hour=t.hour,Minute=t.min,Second=t.sec,Millisecond=0} end\ return setmetatable(d, _dt_mt)\ end\ _dt_mt.__index = function(self, k)\ if k == \"ToLocalTime\" then\ return function(self2)\ local t = os.date(\"*t\", self2.UnixTimestamp)\ return { Year=t.year, Month=t.month, Day=t.day,\ Hour=t.hour, Minute=t.min, Second=t.sec, Millisecond=0 }\ end\ end\ if k == \"ToUniversalTime\" then\ return function(self2)\ local t = os.date(\"!*t\", self2.UnixTimestamp)\ return { Year=t.year, Month=t.month, Day=t.day,\ Hour=t.hour, Minute=t.min, Second=t.sec, Millisecond=0 }\ end\ end\ return rawget(self, k)\ end\ DateTime = {\ now = function() return _dt(os.time()) end,\ fromUnixTimestamp = function(t) return _dt(t) end,\ fromIsoDate = function(s)\ if type(s) == \"string\" then\ local y,mo,d,h,m,sec = s:match(\"(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)\")\ if y then\ local t = os.time({year=tonumber(y),month=tonumber(mo),day=tonumber(d),\ hour=tonumber(h),min=tonumber(m),sec=tonumber(sec)})\ return _dt(t)\ end\ end\ return _dt(os.time())\ end,\ fromUniversalTime = function(y,mo,d,h,m,s,ms)\ return _dt(os.time({year=y or 2024,month=mo or 1,day=d or 1,hour=h or 0,min=m or 0,sec=s or 0}))\ end,\ }\ end\ \ if not SharedTable then\ SharedTable = {\ new = function(init)\ local t = init or {}\ return setmetatable(t, { __type=\"SharedTable\", __metatable=\"SharedTable\" })\ end,\ clone = function(st, deep)\ local copy = {}\ for k, v in pairs(st) do copy[k] = v end\ return SharedTable.new(copy)\ end,\ cloneAndFreeze = function(st)\ local _fdata = {}\ for k, v in pairs(st) do _fdata[k] = v end\ return setmetatable({}, {\ __type = \"SharedTable\", __metatable = \"SharedTable\",\ __newindex = function() error(\"attempt to update a frozen SharedTable\", 2) end,\ __index = function(_, k) return _fdata[k] end,\ __len = function() local n=0; for _ in pairs(_fdata) do n=n+1 end; return n end,\ __tostring = function() return \"SharedTable\" end,\ })\ end,\ isFrozen = function(st)\ local ok = pcall(function()\ local _dummy_key = \"\\0_isFrozen_probe\\0\"\ rawset(st, _dummy_key, nil)\ end)\ local ok2, _e = pcall(function()\ st[\"\\0_frozen_probe\\0\"] = true\ end)\ if not ok2 then return true end\ pcall(function() rawset(st, \"\\0_frozen_probe\\0\", nil) end)\ return false\ end,\ size = function(st) local n=0; for _ in pairs(st) do n=n+1 end; return n end,\ clear = function(st)\ for k in next, st do rawset(st, k, nil) end\ end,\ increment = function(st, key, delta)\ local v = rawget(st, key) or 0\ rawset(st, key, v + (delta or 1))\ return rawget(st, key)\ end,\ }\ end\ \ if not PhysicalProperties then\ PhysicalProperties = {\ new = function(d, friction, elasticity, fw, ew)\ return _mkt(\"PhysicalProperties\", {\ Density=(tonumber(d) or 0.7),\ Friction=(tonumber(friction) or 0.3),\ Elasticity=(tonumber(elasticity) or 0.5),\ FrictionWeight=(tonumber(fw) or 1),\ ElasticityWeight=(tonumber(ew) or 1),\ })\ end,\ }\ end\ \ if not Faces then\ Faces = {\ new = function(...)\ local _fdata = { Top=false, Bottom=false, Left=false, Right=false, Front=false, Back=false }\ for _, v in ipairs({...}) do\ local name = type(v)==\"table\" and (rawget(v,\"__name\") or rawget(v,\"Name\") or tostring(v)) or tostring(v)\ name = name:match(\"%.(%w+)$\") or name\ if _fdata[name] ~= nil then _fdata[name] = true end\ end\ return setmetatable({}, {\ __type = \"Faces\", __metatable = \"Faces\",\ __tostring = function(s)\ local parts = {}\ for _,n in ipairs({\"Top\",\"Bottom\",\"Left\",\"Right\",\"Front\",\"Back\"}) do\ if _fdata[n] then parts[#parts+1] = n end\ end\ return \"Faces(\"..table.concat(parts,\", \")..\")\"\ end,\ __newindex = function() error(\"attempt to update a read-only value\", 2) end,\ __index = function(s, k) return _fdata[k] end,\ })\ end,\ }\ end\ \ if not Axes then\ local _normalid_to_axis = {\ Top={\"Y\"}, Bottom={\"Y\"}, Left={\"X\"}, Right={\"X\"}, Front={\"Z\"}, Back={\"Z\"},\ }\ Axes = {\ new = function(...)\ local _adata = { X=false, Y=false, Z=false,\ Top=false, Bottom=false, Left=false, Right=false, Front=false, Back=false }\ for _, v in ipairs({...}) do\ local name = type(v)==\"table\" and (rawget(v,\"__name\") or rawget(v,\"Name\") or tostring(v)) or tostring(v)\ name = name:match(\"%.(%w+)$\") or name\ if _adata[name] ~= nil then\ _adata[name] = true\ local axes_for = _normalid_to_axis[name]\ if axes_for then for _,ax in ipairs(axes_for) do _adata[ax] = true end end\ end\ end\ return setmetatable({}, {\ __type = \"Axes\", __metatable = \"Axes\",\ __tostring = function(s)\ local parts = {}\ for _,n in ipairs({\"X\",\"Y\",\"Z\",\"Top\",\"Bottom\",\"Left\",\"Right\",\"Front\",\"Back\"}) do\ if _adata[n] then parts[#parts+1] = n end\ end\ return \"Axes(\"..table.concat(parts,\", \")..\")\"\ end,\ __newindex = function() error(\"attempt to update a read-only value\", 2) end,\ __index = function(s, k) return _adata[k] end,\ })\ end,\ }\ end\ \ if not PathWaypoint then\ PathWaypoint = {\ new = function(pos, action, label)\ return _mkt(\"PathWaypoint\", {\ Position=(pos or (Vector3 and Vector3.new() or {})),\ Action=action,\ Label=(label or \"\"),\ })\ end,\ }\ end\ \ if not Font then\ Font = {\ new = function(family, weight, style)\ return _mkt(\"Font\", {\ Family=(family or \"rbxasset://fonts/families/SourceSansPro.json\"),\ Weight=weight,\ Style=style,\ Bold=false,\ })\ end,\ fromEnum = function(fe)\ local fname = \"\"\ if fe ~= nil then\ local ok, n = pcall(function() return fe.Name end)\ if ok and type(n) == \"string\" and n ~= \"\" then fname = n end\ end\ local _fam = {\ Gotham = \"rbxasset://fonts/families/GothamSSm.json\",\ GothamMedium = \"rbxasset://fonts/families/GothamSSm.json\",\ GothamBold = \"rbxasset://fonts/families/GothamSSm.json\",\ GothamBlack = \"rbxasset://fonts/families/GothamSSm.json\",\ SourceSans = \"rbxasset://fonts/families/SourceSansPro.json\",\ SourceSansBold = \"rbxasset://fonts/families/SourceSansPro.json\",\ SourceSansLight = \"rbxasset://fonts/families/SourceSansPro.json\",\ SourceSansSemibold = \"rbxasset://fonts/families/SourceSansPro.json\",\ SourceSansItalic = \"rbxasset://fonts/families/SourceSansPro.json\",\ Arial = \"rbxasset://fonts/families/Arial.json\",\ ArialBold = \"rbxasset://fonts/families/Arial.json\",\ Roboto = \"rbxasset://fonts/families/Roboto.json\",\ Nunito = \"rbxasset://fonts/families/Nunito.json\",\ Oswald = \"rbxasset://fonts/families/Oswald.json\",\ Montserrat = \"rbxasset://fonts/families/Montserrat.json\",\ }\ local _wmap = {\ Gotham=\"Regular\", GothamMedium=\"Medium\",\ GothamBold=\"Bold\", GothamBlack=\"Heavy\",\ SourceSans=\"Regular\", SourceSansBold=\"Bold\",\ SourceSansLight=\"Light\", SourceSansSemibold=\"SemiBold\",\ SourceSansItalic=\"Regular\",\ Arial=\"Regular\", ArialBold=\"Bold\",\ }\ local family = _fam[fname] or \"rbxasset://fonts/families/SourceSansPro.json\"\ local wname = _wmap[fname] or \"Regular\"\ local weight = Enum and Enum.FontWeight and Enum.FontWeight[wname]\ return Font.new(family, weight, nil)\ end,\ fromName = function(name, weight, style)\ return Font.new(\"rbxasset://fonts/CustomFonts/\"..tostring(name), weight, style)\ end,\ }\ end\ \ if not FloatCurveKey then\ FloatCurveKey = {\ new = function(t, v, interp)\ return _mkt(\"FloatCurveKey\", {\ Time=(tonumber(t) or 0), Value=(tonumber(v) or 0),\ Interpolation=interp,\ })\ end,\ }\ end\ if not RotationCurveKey then\ RotationCurveKey = {\ new = function(t, r, interp)\ return _mkt(\"RotationCurveKey\", {\ Time=(tonumber(t) or 0), Value=(r or (CFrame and CFrame.new() or {})),\ Interpolation=interp,\ LeftTangent=0,\ RightTangent=0,\ })\ end,\ }\ end\ if not ValueCurveKey then\ ValueCurveKey = {\ new = function(t, v, interp)\ return _mkt(\"ValueCurveKey\", {\ Time=(tonumber(t) or 0), Value=(tonumber(v) or 0),\ Interpolation=interp,\ })\ end,\ }\ end\ \ if not CatalogSearchParams then\ CatalogSearchParams = {\ new = function()\ return _mkt(\"CatalogSearchParams\", {\ SearchKeyword=\"\", MinPrice=0, MaxPrice=math.maxinteger or 2^53,\ SortType=(Enum and Enum.CatalogSortType and Enum.CatalogSortType.Relevance or nil),\ SortAggregation=(Enum and Enum.CatalogSortAggregation and Enum.CatalogSortAggregation.AllTime or nil),\ CategoryFilter=(Enum and Enum.CatalogCategoryFilter and Enum.CatalogCategoryFilter.None or nil),\ SalesTypeFilter=(Enum and Enum.SalesTypeFilter and Enum.SalesTypeFilter.All or nil),\ AssetTypes={}, BundleTypes={}, IncludeOffSale=false,\ CreatorName=\"\", CreatorType=(Enum and Enum.CreatorType and Enum.CreatorType.User or nil),\ CreatorTargetId=0, CreatorId=0, Limit=30,\ MinPrice=0, MaxPrice=math.huge,\ Keyword=\"\", SearchKeyword=\"\",\ })\ end,\ }\ end\ \ do\ local _sc_mt = {\ __type = \"SecurityCapabilities\", __metatable = \"SecurityCapabilities\",\ __tostring = function() return \"SecurityCapabilities\" end,\ __newindex = rawset, __index = rawget,\ }\ local function _getbits(other)\ local ok, rb = pcall(rawget, other, \"_bits\")\ if ok and rb ~= nil then return math.floor(tonumber(rb) or 0) end\ local n = tonumber(other)\ if n then return math.floor(n) end\ return 0\ end\ local function _mksec(bits)\ bits = math.floor(tonumber(bits) or 0)\ local sc = setmetatable({}, _sc_mt)\ rawset(sc, \"_bits\", bits)\ rawset(sc, \"Add\", function(self, other)\ local ob = _getbits(other)\ return _mksec(bits | ob)\ end)\ rawset(sc, \"Remove\", function(self, other)\ local ob = _getbits(other)\ return _mksec(bits & ~ob)\ end)\ rawset(sc, \"Subtract\", function(self, other)\ local ob = _getbits(other)\ return _mksec(bits & ~ob)\ end)\ rawset(sc, \"Intersect\", function(self, other)\ local ob = _getbits(other)\ return _mksec(bits & ob)\ end)\ rawset(sc, \"Contains\", function(self, other)\ local ob = _getbits(other)\ if ob == 0 then return true end\ return (bits & ob) == ob\ end)\ return sc\ end\ SecurityCapabilities = {\ new = function(b) return _mksec(b) end,\ fromCurrent = function() return _mksec(0) end,\ none = function() return _mksec(0) end,\ None = _mksec(0),\ Basic = _mksec(1),\ Plugin = _mksec(2),\ RunClientScript = _mksec(4),\ RunServerScript = _mksec(8),\ AssetRequire = _mksec(16),\ HttpService = _mksec(32),\ AccessOutsideGame = _mksec(64),\ Unassigned = _mksec(0),\ }\ end\ \ if not RaycastParams then\ RaycastParams = {\ new = function()\ return _mkt(\"RaycastParams\", {\ FilterDescendantsInstances={},\ FilterType=nil,\ IgnoreWater=false,\ CollisionGroup=\"Default\",\ RespectCanCollide=false,\ })\ end,\ }\ end\ if not OverlapParams then\ OverlapParams = {\ new = function()\ return _mkt(\"OverlapParams\", {\ FilterDescendantsInstances={},\ FilterType=nil,\ MaxParts=0,\ CollisionGroup=\"Default\",\ RespectCanCollide=false,\ })\ end,\ }\ end\ \ if buffer and (not buffer._f32_fixed) then\ if string.pack then\ buffer.writef32 = function(b, off, v)\ local bytes = string.pack(\" 0 then t_param = t_param / dlen2 end\ if t_param < 0 then t_param = 0 end\ return _mk_v3(ox+dx*t_param, oy+dy*t_param, oz+dz*t_param)\ end\ end\ if k == \"Distance\" then\ return function(self2, point)\ local cp = (self2.ClosestPoint)(self2, point)\ local px,py,pz = (point and point.X or 0),(point and point.Y or 0),(point and point.Z or 0)\ return math.sqrt((cp.X-px)^2+(cp.Y-py)^2+(cp.Z-pz)^2)\ end\ end\ end,\ __tostring = function(self)\ local o = rawget(self,\"_o\") or {X=0,Y=0,Z=0}\ local d = rawget(self,\"_d\") or {X=0,Y=0,Z=-1}\ return string.format(\"(%g, %g, %g), (%g, %g, %g)\", o.X,o.Y,o.Z, d.X,d.Y,d.Z)\ end,\ }\ local _orig_ray_new = Ray.new\ Ray.new = function(origin, direction)\ local o = origin or _mk_v3(0,0,0)\ local d = direction or _mk_v3(0,0,-1)\ return setmetatable({_o=o,_d=d, Origin=o, Direction=d}, _ray_mt)\ end\ end\ \ do\ local _bc_table = {\ [\"White\"] = { 1, 0.949, 0.953, 0.953 },\ [\"Grey\"] = { 9, 0.635, 0.635, 0.635 },\ [\"Light yellow\"] = { 24, 0.949, 0.937, 0.514 },\ [\"Brick yellow\"] = { 5, 0.843, 0.773, 0.604 },\ [\"Light green\"] = { 6, 0.749, 0.851, 0.620 },\ [\"Pink\"] = { 8, 0.902, 0.671, 0.737 },\ [\"Light blue\"] = { 11, 0.706, 0.824, 0.894 },\ [\"Light red\"] = { 12, 0.749, 0.498, 0.498 },\ [\"Light orange\"] = { 25, 0.839, 0.667, 0.431 },\ [\"Medium stone grey\"] = { 194, 0.639, 0.635, 0.647 },\ [\"Black\"] = { 26, 0.106, 0.165, 0.208 },\ [\"Dark grey\"] = { 199, 0.388, 0.373, 0.384 },\ [\"Dark gray\"] = { 199, 0.388, 0.373, 0.384 },\ [\"Dark stone grey\"] = { 199, 0.388, 0.373, 0.384 },\ [\"Medium gray\"] = { 194, 0.639, 0.635, 0.647 },\ [\"Bright red\"] = { 21, 0.769, 0.157, 0.110 },\ [\"Bright blue\"] = { 23, 0.051, 0.412, 0.675 },\ [\"Bright yellow\"] = { 24, 0.961, 0.804, 0.188 },\ [\"Bright green\"] = { 28, 0.290, 0.592, 0.294 },\ [\"Bright orange\"] = { 25, 0.855, 0.522, 0.054 },\ [\"Bright violet\"] = { 24, 0.420, 0.196, 0.486 },\ [\"Earth orange\"] = { 25, 0.400, 0.267, 0.133 },\ [\"Earth blue\"] = { 23, 0.173, 0.243, 0.416 },\ [\"Earth green\"] = { 28, 0.157, 0.263, 0.122 },\ [\"Tr. Red\"] = { 21, 0.769, 0.157, 0.110 },\ [\"Tr. Blue\"] = { 23, 0.051, 0.412, 0.675 },\ [\"Sand red\"] = { 216, 0.584, 0.475, 0.467 },\ [\"Sand blue\"] = { 135, 0.451, 0.525, 0.616 },\ [\"Sand green\"] = { 151, 0.471, 0.565, 0.510 },\ [\"Reddish brown\"] = { 192, 0.482, 0.176, 0.098 },\ [\"Dark red\"] = { 154, 0.678, 0.000, 0.000 },\ [\"Olive\"] = { 150, 0.506, 0.498, 0.165 },\ [\"Maersk blue\"] = { 11, 0.424, 0.698, 0.855 },\ [\"Lime green\"] = { 37, 0.000, 0.561, 0.000 },\ [\"Cyan\"] = { 23, 0.016, 0.686, 0.926 },\ [\"CGA brown\"] = { 26, 0.667, 0.333, 0.000 },\ [\"Magenta\"] = { 26, 0.667, 0.000, 0.667 },\ [\"Navy blue\"] = { 23, 0.000, 0.125, 0.376 },\ [\"Deep blue\"] = { 23, 0.000, 0.063, 0.251 },\ [\"Teal\"] = { 107, 0.000, 0.557, 0.557 },\ [\"Shamrock\"] = { 37, 0.357, 0.722, 0.420 },\ [\"Fossil\"] = { 194, 0.624, 0.631, 0.675 },\ [\"Bright bluish green\"] = { 107, 0.000, 0.557, 0.557 },\ [\"Tr. Flu. Yellow\"] = { 24, 0.859, 0.875, 0.000 },\ [\"Bright reddish violet\"] = { 221, 0.855, 0.165, 0.498 },\ }\ local _bc_by_num = {}\ for nm, d in pairs(_bc_table) do\ if not _bc_by_num[d[1]] then _bc_by_num[d[1]] = nm end\ end\ \ local function _mkbc(name, num, r, g, b)\ local col = Color3 and Color3.new(r or 0, g or 0, b or 0) or {R=r or 0, G=g or 0, B=b or 0}\ local bc_mt = { __type=\"BrickColor\", __metatable=\"BrickColor\",\ __tostring=function() return name end,\ __eq=function(x,y) return rawget(x,\"Name\")==rawget(y,\"Name\") end,\ __index=rawget, __newindex=rawset }\ return setmetatable({ Name=name, Number=num, Color=col,\ r=r or 0, g=g or 0, b=b or 0 }, bc_mt)\ end\ \ local function _bc_new(a, b, c)\ if type(a)==\"number\" and type(b)==\"number\" and type(c)==\"number\" then\ local nm = string.format(\"BrickColor(%g,%g,%g)\", a, b, c)\ return _mkbc(nm, 0, a, b, c)\ elseif type(a) == \"string\" then\ local d = _bc_table[a] or _bc_table[\"Medium stone grey\"]\ return _mkbc(a, d[1], d[2], d[3], d[4])\ elseif type(a) == \"number\" and b == nil then\ local nm = _bc_by_num[a] or \"Medium stone grey\"\ local d = _bc_table[nm] or _bc_table[\"Medium stone grey\"]\ return _mkbc(nm, d[1], d[2], d[3], d[4])\ end\ local d = _bc_table[\"Medium stone grey\"]\ return _mkbc(\"Medium stone grey\", d[1], d[2], d[3], d[4])\ end\ \ BrickColor = {\ new = _bc_new,\ palette = function(i) return _bc_new(\"Medium stone grey\") end,\ random = function() return _bc_new(\"Bright red\") end,\ White = function() return _bc_new(\"White\") end,\ Black = function() return _bc_new(\"Black\") end,\ Gray = function() return _bc_new(\"Medium stone grey\") end,\ grey = function() return _bc_new(\"Medium stone grey\") end,\ DarkGray = function() return _bc_new(\"Dark stone grey\") end,\ darkGray = function() return _bc_new(\"Dark stone grey\") end,\ Red = function() return _bc_new(\"Bright red\") end,\ Blue = function() return _bc_new(\"Bright blue\") end,\ Green = function() return _bc_new(\"Bright green\") end,\ Yellow = function() return _bc_new(\"Bright yellow\") end,\ }\ end\ \ if type(TweenInfo) == \"table\" and TweenInfo.new then\ local _orig_ti = TweenInfo.new\ TweenInfo.new = function(t, es, ed, rc, r, dl)\ if ed == nil then ed = Enum and Enum.EasingDirection and Enum.EasingDirection.Out or 1 end\ if es == nil then es = Enum and Enum.EasingStyle and Enum.EasingStyle.Quad or 3 end\ return setmetatable({\ Time=tonumber(t) or 1, EasingStyle=es, EasingDirection=ed,\ RepeatCount=tonumber(rc) or 0, Reverses=(r==true), DelayTime=tonumber(dl) or 0,\ }, { __type=\"TweenInfo\", __metatable=\"TweenInfo\",\ __tostring=function() return \"TweenInfo\" end })\ end\ end\ \ if type(NumberRange) == \"table\" and NumberRange.new then\ local _orig_nr = NumberRange.new\ NumberRange.new = function(mn, mx)\ mn = tonumber(mn) or 0\ mx = mx ~= nil and tonumber(mx) or mn\ if mx < mn then error(\"NumberRange: max must be >= min\", 2) end\ return setmetatable({ Min=mn, Max=mx }, {\ __type=\"NumberRange\", __metatable=\"NumberRange\",\ __tostring=function(v) return v.Min..\", \"..v.Max end })\ end\ end\ \ if type(Random) == \"table\" and Random.new then\ Random.new = function(seed)\ local s = (seed or 0) % 4294967296\ local function _lcg()\ s = (s * 1664525 + 1013904223) % 4294967296\ return s / 4294967296\ end\ local r = {}\ r.NextNumber = function(self, mn, mx)\ local v = _lcg()\ if mn~=nil and mx~=nil then return mn+v*(mx-mn) end\ return v\ end\ r.NextInteger = function(self, mn, mx)\ return mn + math.floor(_lcg()*(mx-mn+1))\ end\ r.Clone = function() return Random.new(s) end\ return setmetatable(r, {\ __type=\"Random\", __metatable=\"Random\",\ __tostring=function() return \"Random\" end })\ end\ end\ \ if type(Region3) == \"table\" and Region3.new then\ Region3.new = function(minv, maxv)\ local nx,ny,nz = (minv and minv.X or 0),(minv and minv.Y or 0),(minv and minv.Z or 0)\ local mx,my,mz = (maxv and maxv.X or 0),(maxv and maxv.Y or 0),(maxv and maxv.Z or 0)\ local cx,cy,cz = (nx+mx)/2,(ny+my)/2,(nz+mz)/2\ local sz = Vector3 and Vector3.new(math.abs(mx-nx),math.abs(my-ny),math.abs(mz-nz)) or {}\ local pos = Vector3 and Vector3.new(cx,cy,cz) or {}\ local cf = CFrame and CFrame.new(cx,cy,cz) or {}\ if type(cf) == \"table\" and not cf.Position then rawset(cf,\"Position\",pos) end\ local r3 = { Size=sz, CFrame=cf }\ r3.ExpandToGrid = function(self, resolution)\ resolution = tonumber(resolution) or 1\ if resolution <= 0 then resolution = 1 end\ local function snap(n) return math.floor(n/resolution+0.5)*resolution end\ local mn = Vector3 and Vector3.new(\ snap((cf.X or 0) - (sz.X or 0)/2),\ snap((cf.Y or 0) - (sz.Y or 0)/2),\ snap((cf.Z or 0) - (sz.Z or 0)/2)) or {}\ local mx = Vector3 and Vector3.new(\ snap((cf.X or 0) + (sz.X or 0)/2),\ snap((cf.Y or 0) + (sz.Y or 0)/2),\ snap((cf.Z or 0) + (sz.Z or 0)/2)) or {}\ return Region3.new(mn, mx)\ end\ return setmetatable(r3,\ { __type=\"Region3\", __metatable=\"Region3\",\ __tostring=function() return \"Region3\" end })\ end\ end\ \ do\ local _sobj = setmetatable({\ Studio={}, Rendering={}, Physics={}, Game={},\ DebugSettings={}, Network={},\ }, {\ __metatable = \"Instance\",\ __type = \"Instance\",\ __tostring = function() return \"Settings\" end,\ __newindex = rawset,\ __index = function(self, k) return rawget(self, k) end,\ })\ settings = function() return _sobj end\ end\ \ do\ local function _mk_be()\ local cbs = {}\ local sig = _mk_signal(cbs)\ local props = { ClassName=\"BindableEvent\", Name=\"BindableEvent\", Archivable=true }\ local be = setmetatable({}, {\ __metatable = \"Instance\",\ __tostring = function() return \"BindableEvent\" end,\ __index = function(self, k)\ if k == \"Event\" then return sig end\ if k == \"Fire\" then\ return function(_, ...)\ local args = {...}\ for _, cb in pairs(cbs) do\ if type(cb)==\"function\" then pcall(cb, table.unpack(args)) end\ end\ end\ end\ if k == \"Destroy\" then return function(_self) props.Parent=nil end end\ if k == \"GetPropertyChangedSignal\" then return function() return _mk_signal({}) end end\ return props[k]\ end,\ __newindex = function(_, k, v)\ if k == \"ClassName\" then error(\"unable to assign property ClassName\",2) end\ props[k] = v\ end,\ })\ return be\ end\ \ local _orig_inst_new = _G.Instance and _G.Instance.new\ if type(_orig_inst_new) == \"function\" then\ _G.Instance.new = function(cls, parent)\ if cls == \"BindableEvent\" then\ local be = _mk_be()\ if parent then rawget(be,\"_props\") ; be.Parent = parent end\ return be\ end\ return _orig_inst_new(cls, parent)\ end\ end\ end\ \ do\ local _orig2 = _G.Instance and _G.Instance.new\ if type(_orig2)==\"function\" and not rawget(_G.Instance,\"__eunc_v2\") then\ rawset(_G.Instance,\"__eunc_v2\", true)\ local _inner = _orig2\ -- Global weak registry: inst → _children table.\ -- Lets __newindex(Parent) reach the parent's _children list without\ -- the parent needing to expose its closure locals.\ local _unc_ch_reg = setmetatable({}, {__mode = \"k\"})\ -- [internal] overrides type() to return \"userdata\" for Instance-like\ -- tables. Use _raw_type (captured before any override) for raw checks,\ -- or simply accept both \"table\" and \"userdata\" in Instance checks.\ local _unc_raw_type = rawget and (rawget(_G,\"_raw_type\") or type) or type\ local function _is_inst(v)\ local t = _unc_raw_type(v)\ return t == \"table\" or t == \"userdata\"\ end\ -- Check whether v is a valid Roblox Instance (or nil)\ local function _unc_valid_parent(v)\ if v == nil then return true end\ local ok, mt = pcall(getmetatable, v)\ if not ok then return false end\ if mt == \"Instance\" then return true end\ if type(mt) == \"table\" then\ if rawget(mt, \"__metatable\") == \"Instance\" then return true end\ end\ return false\ end\ local _valid = {\ Part=true,MeshPart=true,UnionOperation=true,CornerWedgePart=true,WedgePart=true,\ Model=true,Folder=true,LocalScript=true,ModuleScript=true,Script=true,\ RemoteEvent=true,RemoteFunction=true,BindableEvent=true,BindableFunction=true,\ Frame=true,ScreenGui=true,TextLabel=true,TextButton=true,TextBox=true,\ ImageLabel=true,ImageButton=true,ScrollingFrame=true,ViewportFrame=true,\ BillboardGui=true,SurfaceGui=true,SpecialMesh=true,SelectionSphere=true,\ Humanoid=true,HumanoidRootPart=true,Tool=true,Backpack=true,\ Animation=true,AnimationController=true,Motor6D=true,Weld=true,\ WeldConstraint=true,HingeConstraint=true,BallSocketConstraint=true,\ RodConstraint=true,RopeConstraint=true,SpringConstraint=true,\ PrismaticConstraint=true,CylindricalConstraint=true,PlaneConstraint=true,\ LineForce=true,UniversalConstraint=true,NoCollisionConstraint=true,\ PointLight=true,SpotLight=true,SurfaceLight=true,\ ForceField=true,Fire=true,Smoke=true,Sparkles=true,ParticleEmitter=true,\ DragDetector=true,PathfindingModifier=true,ArcHandles=true,Handles=true,\ HumanoidDescription=true,AnimationController=true,AnimationTrack=true,\ NumberPose=true,CylinderMesh=true,SpecialMesh=true,FileMesh=true,BlockMesh=true,\ Motor6D=true,Pose=true,KeyframeSequence=true,Keyframe=true,\ Sound=true,SoundGroup=true,Attachment=true,\ Constraint=true,Configuration=true,\ StringValue=true,IntValue=true,NumberValue=true,BoolValue=true,\ Vector3Value=true,CFrameValue=true,ObjectValue=true,\ Color3Value=true,BrickColorValue=true,\ Explosion=true,Beam=true,SelectionBox=true,\ Camera=true,Sky=true,Atmosphere=true,\ BloomEffect=true,BlurEffect=true,ColorCorrectionEffect=true,\ SunRaysEffect=true,DepthOfFieldEffect=true,\ SpawnLocation=true,SeatPart=true,Seat=true,VehicleSeat=true,\ ProximityPrompt=true,SurfaceAppearance=true,\ LinearVelocity=true,AngularVelocity=true,VectorForce=true,Torque=true,\ AlignPosition=true,AlignOrientation=true,\ TextChatService=true,TextChannel=true,TextChatMessage=true,\ AudioDeviceInput=true,AudioDeviceOutput=true,\ SelectionLasso=true,PathfindingLink=true,\ }\ _G.Instance.new = function(cls, parent)\ local cls_str = tostring(cls or \"\")\ if not _valid[cls_str] then\ error('Unable to create an Instance of type \"'..cls_str..'\"', 2)\ end\ local props = {\ ClassName=cls_str, Name=cls_str, Parent=parent, Archivable=true\ }\ if cls_str == \"Part\" then\ props.Anchored=false; props.CanCollide=true; props.Massless=false\ props.Transparency=0\ props.Size = Vector3 and Vector3.new(4,1,2) or {}\ props.Position = Vector3 and Vector3.new(0,0,0) or {}\ props.CFrame = CFrame and CFrame.new(0,0,0) or {}\ props.Color = Color3 and Color3.new(0.63,0.63,0.63) or {}\ props.Material = Enum and Enum.Material and Enum.Material.Plastic or nil\ elseif cls_str == \"ForceField\" then\ props.Visible = true\ elseif cls_str == \"HingeConstraint\" then\ props.Enabled=true\ props.ActuatorType = Enum and Enum.ActuatorType and Enum.ActuatorType.None or nil\ elseif cls_str == \"Humanoid\" then\ props.Health=100; props.MaxHealth=100; props.JumpHeight=7.2\ props.WalkSpeed=16; props.JumpPower=50; props.AutoRotate=true\ props.Sit=false; props.PlatformStand=false\ props.MoveDirection = Vector3 and Vector3.new(0,0,0) or {}\ props.RigType = Enum and Enum.HumanoidRigType and Enum.HumanoidRigType.R15 or nil\ props.StateChanged = _mk_signal({})\ props.Died = _mk_signal({})\ props.Running = _mk_signal({})\ props.Jumping = _mk_signal({})\ props.Touched = _mk_signal({})\ props.FreeFalling = _mk_signal({})\ elseif cls_str == \"TextLabel\" then\ props.Text=\"\"; props.TextTruncate=Enum and Enum.TextTruncate and Enum.TextTruncate.None or nil\ props.TextColor3=Color3 and Color3.new(0,0,0) or {}\ props.Position=UDim2 and UDim2.new(0,0,0,0) or {}\ props.Size=UDim2 and UDim2.new(1,0,1,0) or {}\ elseif cls_str == \"Frame\" then\ props.Position=UDim2 and UDim2.new(0,0,0,0) or {}\ props.Size=UDim2 and UDim2.new(1,0,1,0) or {}\ end\ local _children = {}\ local _attrs = {}\ local inst\ inst = setmetatable({}, {\ __metatable = \"Instance\",\ __tostring = function() return props.Name or cls_str end,\ __index = function(_, k)\ if k==\"Destroy\" then return function(_self)\ -- Remove self from old parent's _children list\ local oldPar = props.Parent\ if oldPar ~= nil then\ local oc = _unc_ch_reg[oldPar]\ if oc then\ for i = #oc, 1, -1 do\ if oc[i] == inst then table.remove(oc, i); break end\ end\ end\ end\ props.Parent=nil\ for i=#_children,1,-1 do\ local c=_children[i]; _children[i]=nil\ if _is_inst(c) and type(c.Destroy)==\"function\" then c:Destroy() end\ end\ end end\ if k==\"Clone\" then return function(_self)\ if not props.Archivable then return nil end\ return _G.Instance.new(cls_str, nil)\ end end\ if k==\"IsA\" then return function(_self,cn)\ if cn==cls_str or cn==\"Instance\" then return true end\ local h={Part={\"BasePart\",\"PVInstance\"},MeshPart={\"BasePart\",\"PVInstance\"},\ Frame={\"GuiObject\",\"GuiBase2d\"},TextLabel={\"GuiObject\",\"GuiBase2d\"},\ TextButton={\"GuiObject\",\"GuiBase2d\"},Humanoid={\"Instance\"}}\ local hl=h[cls_str]\ if hl then for _,v in ipairs(hl) do if v==cn then return true end end end\ return false\ end end\ if k==\"FindFirstChild\" then return function(_self,n,rec)\ -- recursive defaults to false (non-recursive by default).\ -- type() is overridden to return \"userdata\" for Instances,\ -- so we use _is_inst() which accepts both \"table\" and \"userdata\".\ for _,c in ipairs(_children) do\ if _is_inst(c) and c.Name==n then return c end\ end\ if rec then\ for _,c in ipairs(_children) do\ if _is_inst(c) and type(c.FindFirstChild)==\"function\" then\ local found = c:FindFirstChild(n, true)\ if found then return found end\ end\ end\ end\ return nil\ end end\ if k==\"FindFirstChildOfClass\" then return function(_self,cn)\ for _,c in ipairs(_children) do\ if _is_inst(c) and c.ClassName==cn then return c end\ end; return nil\ end end\ if k==\"FindFirstChildWhichIsA\" then return function(_self,cn,rec)\ for _,c in ipairs(_children) do\ if _is_inst(c) then\ local ok,match = pcall(function() return c:IsA(cn) end)\ if ok and match then return c end\ end\ end\ if rec then\ for _,c in ipairs(_children) do\ if _is_inst(c) and type(c.FindFirstChildWhichIsA)==\"function\" then\ local found = c:FindFirstChildWhichIsA(cn,true)\ if found then return found end\ end\ end\ end\ return nil\ end end\ if k==\"FindFirstAncestorOfClass\" then return function(_self,cn)\ local par = props.Parent\ while par ~= nil do\ if _is_inst(par) then\ local ok,cls = pcall(function() return par.ClassName end)\ if ok and cls==cn then return par end\ local ok2,p2 = pcall(function() return par.Parent end)\ if ok2 then par=p2 else break end\ else break end\ end\ return nil\ end end\ if k==\"WaitForChild\" then return function(_self,n,timeout)\ for _,c in ipairs(_children) do\ if _is_inst(c) and c.Name==n then return c end\ end; return nil\ end end\ if k==\"GetChildren\" then return function() local r={} for _,c in ipairs(_children) do r[#r+1]=c end return r end end\ if k==\"GetDescendants\" then return function() local r={} for _,c in ipairs(_children) do r[#r+1]=c if _is_inst(c) and type(c.GetDescendants)==\"function\" then for _,d in ipairs(c:GetDescendants()) do r[#r+1]=d end end end return r end end\ if k==\"ClearAllChildren\" then return function(_self)\ for i=#_children,1,-1 do\ local c=_children[i]; _children[i]=nil\ if _is_inst(c) and type(c.Destroy)==\"function\" then c:Destroy() end\ end\ end end\ if k==\"GetFullName\" then return function() return props.Name or cls_str end end\ if k==\"IsDescendantOf\" then return function(_self,a) return props.Parent~=nil end end\ if k==\"SetAttribute\" then return function(_self,a,v) _attrs[tostring(a)]=v end end\ if k==\"GetAttribute\" then return function(_self,a) return _attrs[tostring(a)] end end\ if k==\"GetAttributes\" then return function(_self) local r={} for a,v in pairs(_attrs) do r[a]=v end return r end end\ if k==\"GetPropertyChangedSignal\" then return function() return _mk_signal({}) end end\ if k==\"GetAttributeChangedSignal\" then return function() return _mk_signal({}) end end\ if k==\"AddTag\" then return function(_self,t) end end\ if k==\"HasTag\" then return function(_self,t) return false end end\ if k==\"RemoveTag\" then return function(_self,t) end end\ return props[k]\ end,\ __newindex = function(_, k, v)\ if k==\"ClassName\" then error(\"unable to assign property ClassName. Script is not trusted.\",2) end\ if k==\"Parent\" then\ -- Roblox rule: Parent must be an Instance or nil.\ -- Plain Lua tables (type == \"table\" with no metatable) are forbidden.\ if not _unc_valid_parent(v) then\ error(\"Instance.Parent must be an Instance or nil, got \" .. type(v), 2)\ end\ -- Remove inst from old parent's children list\ local oldPar = props.Parent\ if oldPar ~= nil and oldPar ~= v then\ local oc = _unc_ch_reg[oldPar]\ if oc then\ for i = #oc, 1, -1 do\ if oc[i] == inst then table.remove(oc, i); break end\ end\ end\ end\ props.Parent = v\ -- Add inst to new parent's children list\ if v ~= nil then\ local nc = _unc_ch_reg[v]\ if nc and (oldPar ~= v) then\ nc[#nc + 1] = inst\ elseif nc == nil then\ -- parent might be an external instance without a _unc_ch_reg entry\ -- (e.g. workspace); register it now so FindFirstChild can use it\ _unc_ch_reg[v] = {inst}\ end\ end\ return\ end\ props[k] = v\ end,\ })\ -- Register this instance's _children table in the global registry\ -- so that when OTHER instances set their Parent to this one,\ -- they can reach _children via _unc_ch_reg.\ _unc_ch_reg[inst] = _children\ -- If a parent was supplied at construction time, wire up the\ -- bidirectional link now (props.Parent is already set above).\ if parent ~= nil then\ if not _unc_valid_parent(parent) then\ error(\"Instance.Parent must be an Instance or nil, got \" .. type(parent), 2)\ end\ local pch = _unc_ch_reg[parent]\ if pch then\ pch[#pch + 1] = inst\ else\ _unc_ch_reg[parent] = {inst}\ end\ end\ return inst\ end\ end\ end\ \ do\ local _fc_base = _G.Instance and type(_G.Instance.new) == \"function\" and _G.Instance.new\ if _fc_base then\ local _fc_inner = _fc_base\ _G.Instance.new = function(cls, parent)\ if cls == \"FloatCurve\" then\ local _keys = {}\ local inst = setmetatable({}, {\ __metatable = \"Instance\",\ __tostring = function() return \"FloatCurve\" end,\ __index = function(_, k)\ if k == \"ClassName\" then return \"FloatCurve\" end\ if k == \"Name\" then return \"FloatCurve\" end\ if k == \"Parent\" then return parent end\ if k == \"InsertKey\" then\ return function(_self, key)\ _keys[#_keys+1] = key\ table.sort(_keys, function(a, b)\ return (a.Time or 0) < (b.Time or 0)\ end)\ end\ end\ if k == \"GetKeyAtIndex\" then\ return function(_self, idx)\ return _keys[math.floor(tonumber(idx) or 1)]\ end\ end\ if k == \"GetValueAtTime\" then\ return function(_self, t)\ t = tonumber(t) or 0\ if #_keys == 0 then return 0 end\ if #_keys == 1 then return _keys[1].Value or 0 end\ if t <= (_keys[1].Time or 0) then return _keys[1].Value or 0 end\ if t >= (_keys[#_keys].Time or 0) then return _keys[#_keys].Value or 0 end\ for i = 1, #_keys - 1 do\ local ka, kb = _keys[i], _keys[i+1]\ local ta, tb = ka.Time or 0, kb.Time or 0\ if t >= ta and t <= tb then\ local span = tb - ta\ if span == 0 then return ka.Value or 0 end\ local alpha = (t - ta) / span\ return (ka.Value or 0) + alpha * ((kb.Value or 0) - (ka.Value or 0))\ end\ end\ return 0\ end\ end\ if k == \"Destroy\" then return function() end end\ return nil\ end,\ __newindex = function(_, k, v)\ if k == \"Parent\" then parent = v end\ end,\ })\ return inst\ end\ return _fc_inner(cls, parent)\ end\ end\ end\ \ do\ local _tags = setmetatable({}, { __mode=\"k\" })\ _G.CollectionService = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k==\"ClassName\" then return \"CollectionService\" end\ if k==\"AddTag\" then return function(_,inst,tag) if not _tags[inst] then _tags[inst]={} end; _tags[inst][tostring(tag)]=true end end\ if k==\"HasTag\" then return function(_,inst,tag) return (_tags[inst] and _tags[inst][tostring(tag)])==true end end\ if k==\"RemoveTag\" then return function(_,inst,tag) if _tags[inst] then _tags[inst][tostring(tag)]=nil end end end\ if k==\"GetTagged\" then return function(_,tag) local r={} for i,ts in pairs(_tags) do if ts[tostring(tag)] then r[#r+1]=i end end return r end end\ if k==\"GetTags\" then return function(_,inst) local r={} if _tags[inst] then for t in pairs(_tags[inst]) do r[#r+1]=t end end return r end end\ if k==\"TagAdded\" then return _mk_signal({}) end\ if k==\"TagRemoved\" then return _mk_signal({}) end\ end,\ })\ end\ \ _G.EncodingService = _EncodingService\ \ do\ local _lhb = _G.__log_history_buf\ if type(_lhb) == \"table\" then\ local _lh_print = print\ local _lh_warn = warn\ local function _push_log(msg, msgType)\ local entry = { message = tostring(msg), messageType = msgType or 0, timestamp = os.clock() }\ _lhb[#_lhb + 1] = entry\ local listeners = rawget(_G, \"__log_history_listeners\")\ if type(listeners) == \"table\" then\ for _, fn in ipairs(listeners) do\ pcall(fn, tostring(msg), msgType or 0)\ end\ end\ end\ print = function(...)\ local parts = {}\ for i = 1, select(\"#\", ...) do\ parts[i] = tostring(select(i, ...))\ end\ local msg = table.concat(parts, \"\\t\")\ _push_log(msg, 0)\ return _lh_print(...)\ end\ if type(_lh_warn) == \"function\" then\ warn = function(...)\ local parts = {}\ for i = 1, select(\"#\", ...) do parts[i] = tostring(select(i, ...)) end\ _push_log(table.concat(parts, \"\\t\"), 1)\ return _lh_warn(...)\ end\ end\ if type(_G.LogService) ~= \"table\" then\ _G.LogService = _G._fake_services and _G._fake_services.LogService\ or _fake_services.LogService\ end\ if type(_fake_services.LogService) == \"table\" then\ _fake_services[\"LogService\"] = _fake_services.LogService\ end\ end\ end\ \ do\ local _prev_typeof = typeof\ local _RTYPE_KNOWN = {\ \"RBXScriptSignal\",\"RBXScriptConnection\",\ \"Vector3\",\"Vector2\",\"CFrame\",\"Color3\",\"UDim2\",\"UDim\",\"BrickColor\",\ \"TweenInfo\",\"NumberSequence\",\"ColorSequence\",\"NumberRange\",\"Rect\",\ \"Ray\",\"Axes\",\"Faces\",\"Region3\",\"Region3int16\",\"Vector3int16\",\ \"Vector2int16\",\"EnumItem\",\"Enum\",\"Random\",\"PathWaypoint\",\ \"Font\",\"FloatCurveKey\",\"RotationCurveKey\",\"OverlapParams\",\"RaycastParams\",\ \"SharedTable\",\"DateTime\",\"Secret\",\"CatalogSearchParams\",\ }\ local _rt_set = {}\ for _, v in ipairs(_RTYPE_KNOWN) do _rt_set[v] = true end\ \ typeof = function(v)\ if v == nil then return \"nil\" end\ local t = type(v)\ if t ~= \"table\" and t ~= \"userdata\" then return t end\ if _G._RTYPE and _G._RTYPE[v] then return _G._RTYPE[v] end\ local ok, mt = pcall(getmetatable, v)\ if ok then\ if type(mt) == \"table\" then\ if type(mt.__type) == \"string\" and _rt_set[mt.__type] then return mt.__type end\ if mt.__metatable == \"Instance\" then return \"Instance\" end\ if mt.__metatable == \"The metatable is locked\" then\ local ok2, s = pcall(tostring, v)\ if ok2 and type(s)==\"string\" then\ for _, rtn in ipairs(_RTYPE_KNOWN) do\ if s:sub(1,#rtn)==rtn then return rtn end\ end\ end\ return \"Instance\"\ end\ end\ if type(mt) == \"string\" then\ if _rt_set[mt] then return mt end\ if mt == \"Instance\" or mt == \"The metatable is locked\" then return \"Instance\" end\ end\ end\ if _prev_typeof then\ local r = pcall(_prev_typeof, v)\ if r then return _prev_typeof(v) end\ end\ return t\ end\ end\ \ do\ local _real_load = _G.load or _G.loadstring\ _G.loadstring = function(code, name)\ if type(code) ~= \"string\" then return nil, \"string expected\" end\ if code:byte(1) == 4 then return nil, \"cannot load Luau bytecode\" end\ return _real_load(code, name)\ end\ _G.load = _G.loadstring\ end\ \ if CFrame and CFrame.new then\ CFrame.identity = CFrame.identity or CFrame.new(0,0,0)\ local function _cf_angles_yzx(rx, ry, rz)\ local sx,cx = math.sin(rx),math.cos(rx)\ local sy,cy = math.sin(ry),math.cos(ry)\ local sz,cz = math.sin(rz),math.cos(rz)\ local r = {\ cy*cz+sy*sx*sz, -cy*sz+sy*sx*cz, sy*cx,\ cx*sz, cx*cz, -sx,\ -sy*cz+cy*sx*sz, sy*sz+cy*sx*cz, cy*cx\ }\ return r\ end\ local function _cf_new_full(x,y,z,r)\ local t = { X=tonumber(x) or 0, Y=tonumber(y) or 0, Z=tonumber(z) or 0 }\ if r then rawset(t, \"_r\", r) end\ return t\ end\ CFrame.Angles = function(x,y,z)\ local r = _cf_angles_yzx(tonumber(x) or 0, tonumber(y) or 0, tonumber(z) or 0)\ local t = { X=0, Y=0, Z=0 }; rawset(t, \"_r\", r)\ return t\ end\ CFrame.fromAxisAngle = CFrame.fromAxisAngle or function() return CFrame.new(0,0,0) end\ CFrame.fromEulerAnglesXYZ = function(x,y,z)\ local sx,cx = math.sin(tonumber(x) or 0),math.cos(tonumber(x) or 0)\ local sy,cy = math.sin(tonumber(y) or 0),math.cos(tonumber(y) or 0)\ local sz,cz = math.sin(tonumber(z) or 0),math.cos(tonumber(z) or 0)\ local r = {\ cy*cz, -cy*sz, sy,\ sx*sy*cz+cx*sz, -sx*sy*sz+cx*cz, -sx*cy,\ -cx*sy*cz+sx*sz, cx*sy*sz+sx*cz, cx*cy\ }\ local t = { X=0, Y=0, Z=0 }; rawset(t, \"_r\", r)\ return t\ end\ CFrame.fromEulerAnglesYXZ = function(x,y,z) return CFrame.Angles(x,y,z) end\ CFrame.fromEulerAngles = CFrame.fromEulerAnglesXYZ\ CFrame.fromOrientation = CFrame.fromEulerAnglesYXZ\ CFrame.fromMatrix = function(pos, rx, ry, rz)\ local px = pos and pos.X or 0\ local py = pos and pos.Y or 0\ local pz = pos and pos.Z or 0\ local r = {\ rx and rx.X or 1, ry and ry.X or 0, rz and rz.X or 0,\ rx and rx.Y or 0, ry and ry.Y or 1, rz and rz.Y or 0,\ rx and rx.Z or 0, ry and ry.Z or 0, rz and rz.Z or 1,\ }\ local t = { X=px, Y=py, Z=pz }; rawset(t, \"_r\", r)\ return t\ end\ CFrame.lookAt = CFrame.lookAt or function(f,_t) return CFrame.new(f.X or 0,f.Y or 0,f.Z or 0) end\ CFrame.lookAlong = CFrame.lookAlong or function(p,d) return CFrame.new(p.X or 0,p.Y or 0,p.Z or 0) end\ CFrame.fromRotationBetweenVectors = CFrame.fromRotationBetweenVectors or function(from, to)\ if from and to then\ return CFrame.new(0,0,0)\ end\ return CFrame.new(0,0,0)\ end\ local _cf_mt\ _cf_mt = {\ __type = \"CFrame\",\ __metatable = \"CFrame\",\ __tostring = function(s)\ return string.format(\"%g, %g, %g, 1, 0, 0, 0, 1, 0, 0, 0, 1\", s.X or 0, s.Y or 0, s.Z or 0)\ end,\ __add = function(a, b)\ if b and b.X~=nil then\ return CFrame.new((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0),(a.Z or 0)+(b.Z or 0))\ end; return a\ end,\ __sub = function(a, b)\ return CFrame.new((a.X or 0)-(b.X or 0),(a.Y or 0)-(b.Y or 0),(a.Z or 0)-(b.Z or 0))\ end,\ __mul = function(a, b)\ if b then\ if b.W==nil and b.X~=nil and Vector3 then\ return Vector3.new((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0),(a.Z or 0)+(b.Z or 0))\ end\ return CFrame.new((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0),(a.Z or 0)+(b.Z or 0))\ end; return a\ end,\ __eq = function(a, b)\ return (a.X or 0)==(b.X or 0) and (a.Y or 0)==(b.Y or 0) and (a.Z or 0)==(b.Z or 0)\ end,\ __index = function(self, k)\ local rv = rawget(self, k); if rv ~= nil then return rv end\ local x,y,z = rawget(self,\"X\") or 0, rawget(self,\"Y\") or 0, rawget(self,\"Z\") or 0\ local _r = rawget(self,\"_r\") or {1,0,0,0,1,0,0,0,1}\ if k==\"Position\" then return Vector3 and Vector3.new(x,y,z) or {X=x,Y=y,Z=z} end\ if k==\"Rotation\" then\ local t2 = { X=0,Y=0,Z=0 }; rawset(t2,\"_r\",_r); return setmetatable(t2,_cf_mt)\ end\ if k==\"p\" then return Vector3 and Vector3.new(x,y,z) or {X=x,Y=y,Z=z} end\ if k==\"X\" then return x end\ if k==\"Y\" then return y end\ if k==\"Z\" then return z end\ if k==\"LookVector\" then return Vector3 and Vector3.new(-_r[3],-_r[6],-_r[9]) or {} end\ if k==\"UpVector\" then return Vector3 and Vector3.new(_r[2],_r[5],_r[8]) or {} end\ if k==\"RightVector\" then return Vector3 and Vector3.new(_r[1],_r[4],_r[7]) or {} end\ if k==\"XVector\" then return Vector3 and Vector3.new(_r[1],_r[4],_r[7]) or {} end\ if k==\"YVector\" then return Vector3 and Vector3.new(_r[2],_r[5],_r[8]) or {} end\ if k==\"ZVector\" then return Vector3 and Vector3.new(_r[3],_r[6],_r[9]) or {} end\ if k==\"XX\" then return _r[1] end if k==\"XY\" then return _r[2] end if k==\"XZ\" then return _r[3] end\ if k==\"YX\" then return _r[4] end if k==\"YY\" then return _r[5] end if k==\"YZ\" then return _r[6] end\ if k==\"ZX\" then return _r[7] end if k==\"ZY\" then return _r[8] end if k==\"ZZ\" then return _r[9] end\ if k==\"Orthonormalize\" then\ return function(s)\ local r = {table.unpack(_r)}\ local len1 = math.sqrt(r[1]*r[1]+r[4]*r[4]+r[7]*r[7])\ if len1 > 0 then r[1]=r[1]/len1; r[4]=r[4]/len1; r[7]=r[7]/len1 end\ local dot = r[2]*r[1]+r[5]*r[4]+r[8]*r[7]\ r[2]=r[2]-dot*r[1]; r[5]=r[5]-dot*r[4]; r[8]=r[8]-dot*r[7]\ local len2 = math.sqrt(r[2]*r[2]+r[5]*r[5]+r[8]*r[8])\ if len2 > 0 then r[2]=r[2]/len2; r[5]=r[5]/len2; r[8]=r[8]/len2 end\ r[3]=r[4]*r[8]-r[7]*r[5]; r[6]=r[7]*r[2]-r[1]*r[8]; r[9]=r[1]*r[5]-r[4]*r[2]\ local t2={X=x,Y=y,Z=z}; rawset(t2,\"_r\",r); return setmetatable(t2,_cf_mt)\ end\ end\ if k==\"Inverse\" or k==\"inverse\" then\ return function(s)\ local r2 = {_r[1],_r[4],_r[7], _r[2],_r[5],_r[8], _r[3],_r[6],_r[9]}\ local nx = -(r2[1]*x+r2[2]*y+r2[3]*z)\ local ny = -(r2[4]*x+r2[5]*y+r2[6]*z)\ local nz = -(r2[7]*x+r2[8]*y+r2[9]*z)\ local t2={X=nx,Y=ny,Z=nz}; rawset(t2,\"_r\",r2); return setmetatable(t2,_cf_mt)\ end\ end\ if k==\"Lerp\" then\ return function(s,o,t2)\ return CFrame.new(x+(o.X-x)*t2, y+(o.Y-y)*t2, z+(o.Z-z)*t2)\ end\ end\ if k==\"ToWorldSpace\" then\ return function(s,o)\ local ox,oy,oz = o.X or 0, o.Y or 0, o.Z or 0\ local nx = x + _r[1]*ox + _r[2]*oy + _r[3]*oz\ local ny = y + _r[4]*ox + _r[5]*oy + _r[6]*oz\ local nz = z + _r[7]*ox + _r[8]*oy + _r[9]*oz\ local or2 = rawget(o,\"_r\") or {1,0,0,0,1,0,0,0,1}\ local nr = {\ _r[1]*or2[1]+_r[2]*or2[4]+_r[3]*or2[7], _r[1]*or2[2]+_r[2]*or2[5]+_r[3]*or2[8], _r[1]*or2[3]+_r[2]*or2[6]+_r[3]*or2[9],\ _r[4]*or2[1]+_r[5]*or2[4]+_r[6]*or2[7], _r[4]*or2[2]+_r[5]*or2[5]+_r[6]*or2[8], _r[4]*or2[3]+_r[5]*or2[6]+_r[6]*or2[9],\ _r[7]*or2[1]+_r[8]*or2[4]+_r[9]*or2[7], _r[7]*or2[2]+_r[8]*or2[5]+_r[9]*or2[8], _r[7]*or2[3]+_r[8]*or2[6]+_r[9]*or2[9],\ }\ local t3={X=nx,Y=ny,Z=nz}; rawset(t3,\"_r\",nr); return setmetatable(t3,_cf_mt)\ end\ end\ if k==\"ToObjectSpace\" then\ return function(s,o)\ local t3={X=0,Y=0,Z=0}; return setmetatable(t3,_cf_mt)\ end\ end\ if k==\"PointToWorldSpace\" then\ return function(s,v)\ local vx,vy,vz = v.X or 0, v.Y or 0, v.Z or 0\ local nx = x + _r[1]*vx + _r[2]*vy + _r[3]*vz\ local ny = y + _r[4]*vx + _r[5]*vy + _r[6]*vz\ local nz = z + _r[7]*vx + _r[8]*vy + _r[9]*vz\ return Vector3 and Vector3.new(nx,ny,nz) or {}\ end\ end\ if k==\"PointToObjectSpace\" then\ return function(s,v)\ local vx,vy,vz = (v.X or 0)-x, (v.Y or 0)-y, (v.Z or 0)-z\ local nx = _r[1]*vx + _r[4]*vy + _r[7]*vz\ local ny = _r[2]*vx + _r[5]*vy + _r[8]*vz\ local nz = _r[3]*vx + _r[6]*vy + _r[9]*vz\ return Vector3 and Vector3.new(nx,ny,nz) or {}\ end\ end\ if k==\"VectorToWorldSpace\" then\ return function(s,v)\ local vx,vy,vz = v.X or 0, v.Y or 0, v.Z or 0\ local nx = _r[1]*vx + _r[2]*vy + _r[3]*vz\ local ny = _r[4]*vx + _r[5]*vy + _r[6]*vz\ local nz = _r[7]*vx + _r[8]*vy + _r[9]*vz\ return Vector3 and Vector3.new(nx,ny,nz) or {}\ end\ end\ if k==\"VectorToObjectSpace\" then\ return function(s,v)\ local vx,vy,vz = v.X or 0, v.Y or 0, v.Z or 0\ local nx = _r[1]*vx + _r[4]*vy + _r[7]*vz\ local ny = _r[2]*vx + _r[5]*vy + _r[8]*vz\ local nz = _r[3]*vx + _r[6]*vy + _r[9]*vz\ return Vector3 and Vector3.new(nx,ny,nz) or {}\ end\ end\ if k==\"GetComponents\" or k==\"components\" then\ return function(s) return x,y,z, _r[1],_r[2],_r[3], _r[4],_r[5],_r[6], _r[7],_r[8],_r[9] end\ end\ local _atan2 = math.atan2 or function(y,x) return math.atan(y,x) end\ if k==\"ToEulerAnglesXYZ\" or k==\"toEulerAnglesXYZ\" then\ return function(s)\ local r = _r\ local sy = math.sqrt(r[1]*r[1] + r[4]*r[4])\ if sy > 1e-6 then\ return _atan2(r[8], r[9]), _atan2(-r[7], sy), _atan2(r[4], r[1])\ else\ return _atan2(-r[6], r[5]), _atan2(-r[7], sy), 0\ end\ end\ end\ if k==\"ToEulerAnglesYXZ\" or k==\"toEulerAnglesYXZ\" then\ return function(s)\ local r = _r\ local cx = math.sqrt(r[5]*r[5] + r[8]*r[8])\ return _atan2(-r[6], cx), _atan2(r[3], r[9]), _atan2(r[4], r[5])\ end\ end\ if k==\"ToEulerAngles\" then\ return function(s, order)\ local r = _r\ local _at2 = math.atan2 or function(y,x2) return math.atan(y,x2) end\ local cx = math.sqrt(r[5]*r[5] + r[8]*r[8])\ return _at2(-r[6], cx), _at2(r[3], r[9]), _at2(r[4], r[5])\ end\ end\ if k==\"FuzzyEq\" then\ return function(s,o,eps)\ eps = eps or 1e-5\ return math.abs(x-(o.X or 0))<=eps and math.abs(y-(o.Y or 0))<=eps and math.abs(z-(o.Z or 0))<=eps\ end\ end\ if k==\"ToOrientation\" or k==\"ToEulerAnglesYXZ\" then\ return function(s)\ local r = rawget(s,\"_r\") or {1,0,0,0,1,0,0,0,1}\ local _at2 = math.atan2 or math.atan\ local sinY = -r[6]\ local cosY = math.sqrt(r[5]*r[5] + r[8]*r[8])\ local rx = _at2(r[8], r[9] ~= 0 and r[9] or 1e-12)\ local ry = _at2(sinY, cosY)\ local rz = _at2(r[4], r[1] ~= 0 and r[1] or 1e-12)\ return rx, ry, rz\ end\ end\ if k==\"ToEulerAnglesXYZ\" then\ return function(s)\ local r = rawget(s,\"_r\") or {1,0,0,0,1,0,0,0,1}\ local _at2 = math.atan2 or math.atan\ local rx = _at2(-r[6], r[9])\ local ry = _at2(r[3], math.sqrt(r[1]*r[1]+r[2]*r[2]))\ local rz = _at2(-r[2], r[1])\ return rx, ry, rz\ end\ end\ if k==\"Inverse\" then\ return function(s)\ local sx,sy,sz = rawget(s,\"X\") or 0, rawget(s,\"Y\") or 0, rawget(s,\"Z\") or 0\ local r = rawget(s,\"_r\") or {1,0,0,0,1,0,0,0,1}\ local rt = {r[1],r[4],r[7], r[2],r[5],r[8], r[3],r[6],r[9]}\ local nx = -(rt[1]*sx + rt[2]*sy + rt[3]*sz)\ local ny = -(rt[4]*sx + rt[5]*sy + rt[6]*sz)\ local nz = -(rt[7]*sx + rt[8]*sy + rt[9]*sz)\ local t2 = {X=nx,Y=ny,Z=nz}; rawset(t2,\"_r\",rt)\ return setmetatable(t2, _cf_mt)\ end\ end\ if k==\"GetComponents\" or k==\"components\" then\ return function(s)\ local r = rawget(s,\"_r\") or {1,0,0,0,1,0,0,0,1}\ return rawget(s,\"X\") or 0, rawget(s,\"Y\") or 0, rawget(s,\"Z\") or 0,\ r[1],r[2],r[3], r[4],r[5],r[6], r[7],r[8],r[9]\ end\ end\ end,\ }\ local function _seal_cf(t)\ if type(t)==\"table\" and getmetatable(t)==nil then\ return setmetatable(t, _cf_mt)\ end\ return t\ end\ local _old_Angles = CFrame.Angles\ CFrame.Angles = function(x,y,z)\ return _seal_cf(_old_Angles(x,y,z))\ end\ local _old_fromEulerAnglesXYZ = CFrame.fromEulerAnglesXYZ\ CFrame.fromEulerAnglesXYZ = function(x,y,z)\ return _seal_cf(_old_fromEulerAnglesXYZ(x,y,z))\ end\ CFrame.fromEulerAnglesYXZ = CFrame.Angles\ CFrame.fromOrientation = CFrame.Angles\ CFrame.fromEulerAngles = CFrame.fromEulerAnglesXYZ\ local _old_fromMatrix = CFrame.fromMatrix\ CFrame.fromMatrix = function(pos, rx, ry, rz)\ return _seal_cf(_old_fromMatrix(pos, rx, ry, rz))\ end\ CFrame.new = function(x, y, z, r00,r01,r02,r10,r11,r12,r20,r21,r22)\ local t = { X = tonumber(x) or 0, Y = tonumber(y) or 0, Z = tonumber(z) or 0 }\ if r00 ~= nil then\ rawset(t, \"_r\", {\ tonumber(r00) or 1, tonumber(r01) or 0, tonumber(r02) or 0,\ tonumber(r10) or 0, tonumber(r11) or 1, tonumber(r12) or 0,\ tonumber(r20) or 0, tonumber(r21) or 0, tonumber(r22) or 1,\ })\ end\ return setmetatable(t, _cf_mt)\ end\ _cf_mt.__mul = function(a, b)\ if b == nil then return a end\ local bmt = getmetatable(b)\ local ax,ay,az = rawget(a,\"X\") or 0, rawget(a,\"Y\") or 0, rawget(a,\"Z\") or 0\ local _ra = rawget(a,\"_r\") or {1,0,0,0,1,0,0,0,1}\ if bmt == \"Vector3\" or (type(b)==\"table\" and b.W==nil and b.X~=nil) then\ local bx,by,bz = b.X or 0, b.Y or 0, b.Z or 0\ local nx = ax + _ra[1]*bx + _ra[2]*by + _ra[3]*bz\ local ny = ay + _ra[4]*bx + _ra[5]*by + _ra[6]*bz\ local nz = az + _ra[7]*bx + _ra[8]*by + _ra[9]*bz\ return Vector3 and Vector3.new(nx,ny,nz) or {X=nx,Y=ny,Z=nz}\ end\ local bx,by,bz = rawget(b,\"X\") or 0, rawget(b,\"Y\") or 0, rawget(b,\"Z\") or 0\ local _rb = rawget(b,\"_r\") or {1,0,0,0,1,0,0,0,1}\ local nx = ax + _ra[1]*bx + _ra[2]*by + _ra[3]*bz\ local ny = ay + _ra[4]*bx + _ra[5]*by + _ra[6]*bz\ local nz = az + _ra[7]*bx + _ra[8]*by + _ra[9]*bz\ local nr = {\ _ra[1]*_rb[1]+_ra[2]*_rb[4]+_ra[3]*_rb[7], _ra[1]*_rb[2]+_ra[2]*_rb[5]+_ra[3]*_rb[8], _ra[1]*_rb[3]+_ra[2]*_rb[6]+_ra[3]*_rb[9],\ _ra[4]*_rb[1]+_ra[5]*_rb[4]+_ra[6]*_rb[7], _ra[4]*_rb[2]+_ra[5]*_rb[5]+_ra[6]*_rb[8], _ra[4]*_rb[3]+_ra[5]*_rb[6]+_ra[6]*_rb[9],\ _ra[7]*_rb[1]+_ra[8]*_rb[4]+_ra[9]*_rb[7], _ra[7]*_rb[2]+_ra[8]*_rb[5]+_ra[9]*_rb[8], _ra[7]*_rb[3]+_ra[8]*_rb[6]+_ra[9]*_rb[9],\ }\ local t2={X=nx,Y=ny,Z=nz}; rawset(t2,\"_r\",nr); return setmetatable(t2,_cf_mt)\ end\ _cf_mt.__tostring = function(s)\ local x,y,z = rawget(s,\"X\") or 0, rawget(s,\"Y\") or 0, rawget(s,\"Z\") or 0\ local _r = rawget(s,\"_r\") or {1,0,0,0,1,0,0,0,1}\ return string.format(\"%g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\",\ x,y,z, _r[1],_r[2],_r[3], _r[4],_r[5],_r[6], _r[7],_r[8],_r[9])\ end\ end\ \ if Vector3 and Vector3.new then\ local _orig_v3_new = Vector3.new\ local _v3_mt\ _v3_mt = {\ __type = \"Vector3\",\ __metatable = \"Vector3\",\ __tostring = function(s) return string.format(\"%g, %g, %g\", s.X or 0, s.Y or 0, s.Z or 0) end,\ __add = function(a,b) return Vector3.new((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0),(a.Z or 0)+(b.Z or 0)) end,\ __sub = function(a,b) return Vector3.new((a.X or 0)-(b.X or 0),(a.Y or 0)-(b.Y or 0),(a.Z or 0)-(b.Z or 0)) end,\ __unm = function(a) return Vector3.new(-(a.X or 0),-(a.Y or 0),-(a.Z or 0)) end,\ __eq = function(a,b) return (a.X or 0)==(b.X or 0) and (a.Y or 0)==(b.Y or 0) and (a.Z or 0)==(b.Z or 0) end,\ __mul = function(a,b)\ if type(a)==\"number\" then return Vector3.new(a*(b.X or 0),a*(b.Y or 0),a*(b.Z or 0)) end\ if type(b)==\"number\" then return Vector3.new((a.X or 0)*b,(a.Y or 0)*b,(a.Z or 0)*b) end\ return Vector3.new((a.X or 0)*(b.X or 0),(a.Y or 0)*(b.Y or 0),(a.Z or 0)*(b.Z or 0))\ end,\ __div = function(a,b)\ if type(b)==\"number\" then return Vector3.new((a.X or 0)/b,(a.Y or 0)/b,(a.Z or 0)/b) end\ return Vector3.new((a.X or 0)/(b.X or 1),(a.Y or 0)/(b.Y or 1),(a.Z or 0)/(b.Z or 1))\ end,\ __index = function(self, k)\ local rv = rawget(self, k); if rv ~= nil then return rv end\ local _vd = rawget(self, \"_v\") or {0,0,0}\ local x,y,z = _vd[1], _vd[2], _vd[3]\ if k==\"X\" then return x end\ if k==\"Y\" then return y end\ if k==\"Z\" then return z end\ if k==\"Magnitude\" then return math.sqrt(x*x+y*y+z*z) end\ if k==\"Unit\" then\ local m=math.sqrt(x*x+y*y+z*z); if m==0 then m=1 end\ return Vector3.new(x/m,y/m,z/m)\ end\ if k==\"Abs\" then return function(s) return Vector3.new(math.abs(s.X or 0),math.abs(s.Y or 0),math.abs(s.Z or 0)) end end\ if k==\"Sign\" then return function(s)\ local function sg(n) return n>0 and 1 or n<0 and -1 or 0 end\ return Vector3.new(sg(s.X or 0),sg(s.Y or 0),sg(s.Z or 0))\ end end\ if k==\"Floor\" then return function(s) return Vector3.new(math.floor(s.X or 0),math.floor(s.Y or 0),math.floor(s.Z or 0)) end end\ if k==\"Ceil\" then return function(s) return Vector3.new(math.ceil(s.X or 0),math.ceil(s.Y or 0),math.ceil(s.Z or 0)) end end\ if k==\"Round\" then return function(s) return Vector3.new(math.floor((s.X or 0)+.5),math.floor((s.Y or 0)+.5),math.floor((s.Z or 0)+.5)) end end\ if k==\"Dot\" then return function(s,o) return (s.X or 0)*(o.X or 0)+(s.Y or 0)*(o.Y or 0)+(s.Z or 0)*(o.Z or 0) end end\ if k==\"Cross\" then return function(s,o)\ return Vector3.new((s.Y or 0)*(o.Z or 0)-(s.Z or 0)*(o.Y or 0),\ (s.Z or 0)*(o.X or 0)-(s.X or 0)*(o.Z or 0),\ (s.X or 0)*(o.Y or 0)-(s.Y or 0)*(o.X or 0))\ end end\ if k==\"Lerp\" then return function(s,o,t) return Vector3.new(s.X+(o.X-s.X)*t,s.Y+(o.Y-s.Y)*t,s.Z+(o.Z-s.Z)*t) end end\ if k==\"Min\" then return function(s,o) return Vector3.new(math.min(s.X or 0,o.X or 0),math.min(s.Y or 0,o.Y or 0),math.min(s.Z or 0,o.Z or 0)) end end\ if k==\"Max\" then return function(s,o) return Vector3.new(math.max(s.X or 0,o.X or 0),math.max(s.Y or 0,o.Y or 0),math.max(s.Z or 0,o.Z or 0)) end end\ if k==\"Angle\" then return function(s,o,axis)\ local dot = (s.X or 0)*(o.X or 0)+(s.Y or 0)*(o.Y or 0)+(s.Z or 0)*(o.Z or 0)\ local ms = math.sqrt((s.X or 0)^2+(s.Y or 0)^2+(s.Z or 0)^2)\ local mo = math.sqrt((o.X or 0)^2+(o.Y or 0)^2+(o.Z or 0)^2)\ if ms == 0 or mo == 0 then return 0 end\ local cos = math.max(-1, math.min(1, dot / (ms * mo)))\ local angle = math.acos(cos)\ if axis then\ local cx = (s.Y or 0)*(o.Z or 0)-(s.Z or 0)*(o.Y or 0)\ local cy = (s.Z or 0)*(o.X or 0)-(s.X or 0)*(o.Z or 0)\ local cz = (s.X or 0)*(o.Y or 0)-(s.Y or 0)*(o.X or 0)\ if cx*(axis.X or 0)+cy*(axis.Y or 0)+cz*(axis.Z or 0) < 0 then\ angle = -angle\ end\ end\ return angle\ end end\ if k==\"FuzzyEq\" then return function(s,o,eps)\ eps = eps or 1e-5\ return math.abs((s.X or 0)-(o.X or 0))<=eps and math.abs((s.Y or 0)-(o.Y or 0))<=eps and math.abs((s.Z or 0)-(o.Z or 0))<=eps\ end end\ end,\ __newindex = function(self, k, v)\ if k==\"X\" or k==\"Y\" or k==\"Z\" then\ error(\"attempt to modify read-only property \"..k, 2)\ end\ rawset(self, k, v)\ end,\ }\ Vector3.new = function(x, y, z)\ local t = {}\ rawset(t, \"_v\", {tonumber(x) or 0, tonumber(y) or 0, tonumber(z) or 0})\ return setmetatable(t, _v3_mt)\ end\ Vector3.zero = Vector3.zero or Vector3.new(0,0,0)\ Vector3.one = Vector3.one or Vector3.new(1,1,1)\ Vector3.xAxis = Vector3.xAxis or Vector3.new(1,0,0)\ Vector3.yAxis = Vector3.yAxis or Vector3.new(0,1,0)\ Vector3.zAxis = Vector3.zAxis or Vector3.new(0,0,1)\ Vector3.fromNormalId = Vector3.fromNormalId or function(n) return Vector3.new(0,1,0) end\ Vector3.fromAxis = Vector3.fromAxis or function(a) return Vector3.new(1,0,0) end\ end\ \ if Vector2 and Vector2.new then\ local _orig_v2_new = Vector2.new\ local _v2_mt = {\ __type = \"Vector2\",\ __metatable = \"Vector2\",\ __tostring = function(s) return string.format(\"%g, %g\", s.X or 0, s.Y or 0) end,\ __add = function(a,b) return Vector2.new((a.X or 0)+(b.X or 0),(a.Y or 0)+(b.Y or 0)) end,\ __sub = function(a,b) return Vector2.new((a.X or 0)-(b.X or 0),(a.Y or 0)-(b.Y or 0)) end,\ __unm = function(a) return Vector2.new(-(a.X or 0),-(a.Y or 0)) end,\ __eq = function(a,b) return (a.X or 0)==(b.X or 0) and (a.Y or 0)==(b.Y or 0) end,\ __mul = function(a,b)\ if type(a)==\"number\" then return Vector2.new(a*(b.X or 0),a*(b.Y or 0)) end\ if type(b)==\"number\" then return Vector2.new((a.X or 0)*b,(a.Y or 0)*b) end\ return Vector2.new((a.X or 0)*(b.X or 0),(a.Y or 0)*(b.Y or 0))\ end,\ __div = function(a,b)\ if type(b)==\"number\" then return Vector2.new((a.X or 0)/b,(a.Y or 0)/b) end\ return Vector2.new((a.X or 0)/(b.X or 1),(a.Y or 0)/(b.Y or 1))\ end,\ __index = function(self, k)\ local rv = rawget(self,k); if rv~=nil then return rv end\ local x,y = self.X or 0, self.Y or 0\ if k==\"X\" then return x end\ if k==\"Y\" then return y end\ if k==\"Magnitude\" then return math.sqrt(x*x+y*y) end\ if k==\"Unit\" then local m=math.sqrt(x*x+y*y); if m==0 then m=1 end; return Vector2.new(x/m,y/m) end\ if k==\"Abs\" then return function(s) return Vector2.new(math.abs(s.X or 0),math.abs(s.Y or 0)) end end\ if k==\"Sign\" then return function(s)\ local function sg(n) return n>0 and 1 or n<0 and -1 or 0 end\ return Vector2.new(sg(s.X or 0), sg(s.Y or 0))\ end end\ if k==\"Dot\" then return function(s,o) return (s.X or 0)*(o.X or 0)+(s.Y or 0)*(o.Y or 0) end end\ if k==\"Cross\" then return function(s,o) return (s.X or 0)*(o.Y or 0)-(s.Y or 0)*(o.X or 0) end end\ if k==\"Lerp\" then return function(s,o,t) return Vector2.new(s.X+(o.X-s.X)*t,s.Y+(o.Y-s.Y)*t) end end\ if k==\"Floor\" then return function(s) return Vector2.new(math.floor(s.X or 0),math.floor(s.Y or 0)) end end\ if k==\"Ceil\" then return function(s) return Vector2.new(math.ceil(s.X or 0),math.ceil(s.Y or 0)) end end\ if k==\"FuzzyEq\" then return function(s,o,eps)\ eps = eps or 1e-5\ return math.abs((s.X or 0)-(o.X or 0))<=eps and math.abs((s.Y or 0)-(o.Y or 0))<=eps\ end end\ if k==\"Angle\" then return function(s,o)\ local dot = (s.X or 0)*(o.X or 0)+(s.Y or 0)*(o.Y or 0)\ local ms = math.sqrt((s.X or 0)^2+(s.Y or 0)^2)\ local mo = math.sqrt((o.X or 0)^2+(o.Y or 0)^2)\ if ms == 0 or mo == 0 then return 0 end\ local cos = math.max(-1, math.min(1, dot / (ms * mo)))\ return math.acos(cos)\ end end\ if k==\"Min\" then return function(s,o) return Vector2.new(math.min(s.X or 0,o.X or 0),math.min(s.Y or 0,o.Y or 0)) end end\ if k==\"Max\" then return function(s,o) return Vector2.new(math.max(s.X or 0,o.X or 0),math.max(s.Y or 0,o.Y or 0)) end end\ end,\ __newindex = function(self, k, v)\ if k==\"X\" or k==\"Y\" then\ error(\"attempt to modify read-only property \"..k, 2)\ end\ rawset(self, k, v)\ end,\ }\ Vector2.new = function(x, y)\ local t = { X = tonumber(x) or 0, Y = tonumber(y) or 0 }\ return setmetatable(t, _v2_mt)\ end\ Vector2.zero = Vector2.zero or Vector2.new(0,0)\ Vector2.one = Vector2.one or Vector2.new(1,1)\ Vector2.xAxis = Vector2.xAxis or Vector2.new(1,0)\ Vector2.yAxis = Vector2.yAxis or Vector2.new(0,1)\ end\ \ if Color3 and Color3.new then\ local _c3_mt = {\ __type = \"Color3\",\ __metatable = \"Color3\",\ __tostring = function(s) return string.format(\"%g, %g, %g\", s.R or 0, s.G or 0, s.B or 0) end,\ __eq = function(a,b) return (a.R or 0)==(b.R or 0) and (a.G or 0)==(b.G or 0) and (a.B or 0)==(b.B or 0) end,\ __newindex = function(self, k, v)\ if k==\"R\" or k==\"G\" or k==\"B\" then\ error(\"attempt to modify read-only property \"..k, 2)\ end\ rawset(self, k, v)\ end,\ __index = function(self, k)\ local rv = rawget(self,k); if rv~=nil then return rv end\ local _vd = rawget(self,\"_v\") or {0,0,0}\ if k==\"R\" then return _vd[1] end\ if k==\"G\" then return _vd[2] end\ if k==\"B\" then return _vd[3] end\ if k==\"ToHSV\" then\ return function(self2)\ local r,g,b = self2.R or 0, self2.G or 0, self2.B or 0\ local mx = math.max(r,g,b); local mn = math.min(r,g,b); local d = mx-mn\ local h = 0\ if d > 0 then\ if mx==r then h=(g-b)/d%6\ elseif mx==g then h=(b-r)/d+2\ else h=(r-g)/d+4 end\ h = h/6\ end\ return h, (mx > 0 and d/mx or 0), mx\ end\ end\ if k==\"ToHex\" then\ return function(self2)\ return string.format(\"%02x%02x%02x\",\ math.floor((self2.R or 0)*255+.5),\ math.floor((self2.G or 0)*255+.5),\ math.floor((self2.B or 0)*255+.5))\ end\ end\ if k==\"Lerp\" then\ return function(self2, o, t)\ return Color3.new(self2.R+(o.R-self2.R)*t, self2.G+(o.G-self2.G)*t, self2.B+(o.B-self2.B)*t)\ end\ end\ end,\ }\ Color3.new = function(r, g, b)\ local t = {}\ rawset(t, \"_v\", {\ math.max(0,math.min(1,tonumber(r) or 0)),\ math.max(0,math.min(1,tonumber(g) or 0)),\ math.max(0,math.min(1,tonumber(b) or 0))\ })\ return setmetatable(t, _c3_mt)\ end\ Color3.fromRGB = function(r,g,b) return Color3.new((r or 0)/255,(g or 0)/255,(b or 0)/255) end\ Color3.fromHSV = function(h,s,v)\ local r,g,b = 0,0,0\ local i = math.floor(h*6); local f = h*6-i; local p = v*(1-s); local q = v*(1-f*s); local t2 = v*(1-(1-f)*s)\ i = i%6\ if i==0 then r,g,b=v,t2,p elseif i==1 then r,g,b=q,v,p elseif i==2 then r,g,b=p,v,t2\ elseif i==3 then r,g,b=p,q,v elseif i==4 then r,g,b=t2,p,v else r,g,b=v,p,q end\ return Color3.new(r,g,b)\ end\ end\ \ do\ local _RTYPE_KNOWN = {\ \"RBXScriptSignal\",\"RBXScriptConnection\",\ \"Vector3\",\"Vector2\",\"CFrame\",\"Color3\",\"UDim2\",\"UDim\",\"BrickColor\",\ \"TweenInfo\",\"NumberSequence\",\"ColorSequence\",\"NumberRange\",\"Rect\",\ \"Ray\",\"Axes\",\"Faces\",\"Region3\",\"Region3int16\",\"Vector3int16\",\ \"Vector2int16\",\"EnumItem\",\"Enum\",\"Random\",\"PathWaypoint\",\ \"Font\",\"FloatCurveKey\",\"RotationCurveKey\",\"ValueCurveKey\",\"OverlapParams\",\"RaycastParams\",\ \"SharedTable\",\"DateTime\",\"Secret\",\"CatalogSearchParams\",\"buffer\",\ \"PhysicalProperties\",\"RaycastResult\",\"NumberSequenceKeypoint\",\"ColorSequenceKeypoint\",\ \"SecurityCapabilities\",\"RotationCurveKey\",\ }\ local _rt_set = {}\ for _, v in ipairs(_RTYPE_KNOWN) do _rt_set[v] = true end\ \ typeof = function(v)\ if v == nil then return \"nil\" end\ local raw_t = rawtype and rawtype(v) or type(v)\ if raw_t ~= \"table\" and raw_t ~= \"userdata\" then\ local ov_t = type(v)\ if ov_t ~= raw_t and ov_t == \"userdata\" then\ goto is_object\ end\ return raw_t\ end\ ::is_object::\ if _G._RTYPE and _G._RTYPE[v] then return _G._RTYPE[v] end\ local ok_mt, mt = pcall(getmetatable, v)\ if ok_mt and mt ~= nil then\ if mt == \"Instance\" then return \"Instance\" end\ if type(mt) == \"string\" then\ if _rt_set[mt] then return mt end\ if mt == \"The metatable is locked\" then return \"Instance\" end\ end\ if type(mt) == \"table\" then\ local rtt = rawget(mt, \"__type\")\ if type(rtt) == \"string\" and _rt_set[rtt] then return rtt end\ local rmm = rawget(mt, \"__metatable\")\ if rmm == \"Instance\" then return \"Instance\" end\ if type(rmm) == \"string\" and _rt_set[rmm] then return rmm end\ end\ end\ if type(v) == \"userdata\" then return \"Instance\" end\ return raw_t == \"userdata\" and \"userdata\" or \"table\"\ end\ end\ \ do\ local _extra_valid = {\ NoCollisionConstraint=true, BallSocketConstraint=true,\ Texture=true, Decal=true, SelectionBox=true, BoxHandleAdornment=true,\ EqualizerSoundEffect=true, ReverbSoundEffect=true,\ PitchShiftSoundEffect=true, DistortionSoundEffect=true,\ ChorusSoundEffect=true, CompressorSoundEffect=true,\ FlangeSoundEffect=true, TremoloSoundEffect=true,\ Hint=true, Message=true, RemoteEvent=true, RemoteFunction=true,\ }\ if _G.Instance and _G.Instance.new and not rawget(_G.Instance,\"__e28\") then\ rawset(_G.Instance, \"__e28\", true)\ local _prev_new = _G.Instance.new\ _G.Instance.new = function(cls, parent)\ local cn = tostring(cls or \"\")\ if _extra_valid[cn] then\ local props = { ClassName=cn, Name=cn, Parent=parent, Archivable=true }\ return setmetatable(props, {\ __metatable=\"Instance\",\ __tostring=function() return cn end,\ __index=function(t,k) return rawget(t,k) end,\ __newindex=rawset,\ })\ end\ return _prev_new(cls, parent)\ end\ end\ end\ \ do\ local _real_load = _G.load or _G.loadstring\ if _real_load then\ _G.loadstring = function(code, name)\ if type(code) ~= \"string\" then return nil, \"string expected\" end\ if code:byte(1) == 4 then return nil, \"cannot load Luau bytecode\" end\ return _real_load(code, name)\ end\ _G.load = _G.loadstring\ end\ end\ \ io.stderr:write(\"[bypass] eUNC-patch v5 installed\\n\")\ end\ \ do\ local function _mk_sig()\ local cbs = {}\ local sig = {}\ local sig_mt = {\ __metatable = \"RBXScriptSignal\",\ __type = \"RBXScriptSignal\",\ __index = function(_, k)\ if k == \"Connect\" or k == \"connect\" then\ return function(_, fn)\ local id = tostring(fn)\ cbs[id] = fn\ local conn = setmetatable({}, {\ __metatable = \"RBXScriptConnection\",\ __type = \"RBXScriptConnection\",\ __index = function(_, k2)\ if k2 == \"Disconnect\" or k2 == \"disconnect\" then\ return function() cbs[id] = nil end\ end\ if k2 == \"Connected\" then return cbs[id] ~= nil end\ end,\ })\ return conn\ end\ end\ if k == \"Once\" then\ return function(_, fn)\ local id = tostring(fn)..tostring(os.clock())\ cbs[id] = function(...)\ cbs[id] = nil\ return fn(...)\ end\ return setmetatable({}, { __metatable=\"RBXScriptConnection\", __index=function(_,k2)\ if k2==\"Disconnect\" then return function() cbs[id]=nil end end\ end })\ end\ end\ if k == \"Wait\" then return function() return nil end end\ end,\ }\ if _G._RTYPE then _G._RTYPE[sig] = \"RBXScriptSignal\" end\ return setmetatable(sig, sig_mt), cbs\ end\ \ if type(UDim2) == \"table\" then\ local _u2_make = function(xs, xo, ys, yo)\ local xud = (UDim and UDim.new) and UDim.new(xs or 0, xo or 0)\ or setmetatable({Scale=xs or 0, Offset=xo or 0},{})\ local yud = (UDim and UDim.new) and UDim.new(ys or 0, yo or 0)\ or setmetatable({Scale=ys or 0, Offset=yo or 0},{})\ return setmetatable({ X=xud, Y=yud }, {\ __type = \"UDim2\", __metatable = \"UDim2\",\ __tostring = function(s)\ local xd = rawget(s,\"X\") or {Scale=0,Offset=0}\ local yd = rawget(s,\"Y\") or {Scale=0,Offset=0}\ local xsc = rawget(xd,\"Scale\") or 0\ local xof = rawget(xd,\"Offset\") or 0\ local ysc = rawget(yd,\"Scale\") or 0\ local yof = rawget(yd,\"Offset\") or 0\ return string.format(\"{%g, %g}, {%g, %g}\", xsc, xof, ysc, yof)\ end,\ __index = rawget, __newindex = rawset,\ __add = function(a, b)\ local ax = rawget(a,\"X\"); local ay = rawget(a,\"Y\")\ local bx = rawget(b,\"X\"); local by = rawget(b,\"Y\")\ return _u2_make(\ (rawget(ax,\"Scale\") or 0)+(rawget(bx,\"Scale\") or 0),\ (rawget(ax,\"Offset\") or 0)+(rawget(bx,\"Offset\") or 0),\ (rawget(ay,\"Scale\") or 0)+(rawget(by,\"Scale\") or 0),\ (rawget(ay,\"Offset\") or 0)+(rawget(by,\"Offset\") or 0))\ end,\ __sub = function(a, b)\ local ax = rawget(a,\"X\"); local ay = rawget(a,\"Y\")\ local bx = rawget(b,\"X\"); local by = rawget(b,\"Y\")\ return _u2_make(\ (rawget(ax,\"Scale\") or 0)-(rawget(bx,\"Scale\") or 0),\ (rawget(ax,\"Offset\") or 0)-(rawget(bx,\"Offset\") or 0),\ (rawget(ay,\"Scale\") or 0)-(rawget(by,\"Scale\") or 0),\ (rawget(ay,\"Offset\") or 0)-(rawget(by,\"Offset\") or 0))\ end,\ })\ end\ UDim2.new = function(xs, xo, ys, yo)\ local ok_xs, xs_scale = pcall(rawget, xs, \"Scale\")\ if ok_xs and xs_scale ~= nil and ys == nil then\ local _, xo_scale = pcall(rawget, xo, \"Scale\")\ local _, xo_off = pcall(rawget, xo, \"Offset\")\ local _, xs_off = pcall(rawget, xs, \"Offset\")\ return _u2_make(xs_scale, xs_off or 0,\ xo_scale or 0, xo_off or 0)\ end\ return _u2_make(tonumber(xs) or 0, tonumber(xo) or 0,\ tonumber(ys) or 0, tonumber(yo) or 0)\ end\ UDim2.fromOffset = function(x, y) return UDim2.new(0, x or 0, 0, y or 0) end\ UDim2.fromScale = function(x, y) return UDim2.new(x or 0, 0, y or 0, 0) end\ end\ \ if type(Rect) == \"table\" then\ Rect.new = function(x0, y0, x1, y1)\ local ok_x0, x0x = pcall(rawget, x0, \"X\")\ if ok_x0 and x0x ~= nil then\ local v0x = rawget(x0, \"X\") or 0\ local v0y = rawget(x0, \"Y\") or 0\ local v1x = rawget(y0, \"X\") or 0\ local v1y = rawget(y0, \"Y\") or 0\ local mn = (Vector2 and Vector2.new) and Vector2.new(v0x, v0y)\ or setmetatable({X=v0x,Y=v0y},{__index=rawget,__newindex=rawset})\ local mx = (Vector2 and Vector2.new) and Vector2.new(v1x, v1y)\ or setmetatable({X=v1x,Y=v1y},{__index=rawget,__newindex=rawset})\ return setmetatable({ Min=mn, Max=mx,\ Width=math.abs(v1x-v0x), Height=math.abs(v1y-v0y) },\ { __type=\"Rect\", __metatable=\"Rect\",\ __tostring=function() return \"Rect\" end,\ __index=rawget, __newindex=rawset })\ end\ local nx0 = tonumber(x0) or 0; local ny0 = tonumber(y0) or 0\ local nx1 = tonumber(x1) or 0; local ny1 = tonumber(y1) or 0\ local mn = (Vector2 and Vector2.new) and Vector2.new(nx0, ny0)\ or setmetatable({X=nx0,Y=ny0},{__index=rawget,__newindex=rawset})\ local mx = (Vector2 and Vector2.new) and Vector2.new(nx1, ny1)\ or setmetatable({X=nx1,Y=ny1},{__index=rawget,__newindex=rawset})\ return setmetatable({ Min=mn, Max=mx,\ Width=math.abs(nx1-nx0), Height=math.abs(ny1-ny0) },\ { __type=\"Rect\", __metatable=\"Rect\",\ __tostring=function() return \"Rect\" end,\ __index=rawget, __newindex=rawset })\ end\ end\ \ do\ local ws = _G.workspace or (_G._fake_services and _G._fake_services.Workspace) or _fake_services.Workspace\ if ws ~= nil then\ if rawget(ws, \"Parent\") == nil then\ rawset(ws, \"Parent\", _G.game)\ end\ if rawget(ws, \"FallenPartsDestroyHeight\") == nil then\ rawset(ws, \"FallenPartsDestroyHeight\", -500)\ end\ if rawget(ws, \"Gravity\") == nil then\ rawset(ws, \"Gravity\", 196.2)\ end\ if not rawget(ws, \"CurrentCamera\") or type(rawget(ws,\"CurrentCamera\")) ~= \"table\" then\ rawset(ws, \"CurrentCamera\", setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"Camera\" end\ if k == \"ViewportSize\" then return Vector2 and Vector2.new(1920, 1080) or {X=1920,Y=1080} end\ if k == \"FieldOfView\" then return 70 end\ if k == \"ViewportPointToRay\" then\ return function(_, x, y, depth)\ local ox = ((x or 0)/1920 - 0.5) * 2\ local oy = (0.5 - (y or 0)/1080) * 2\ return Ray and Ray.new(\ Vector3 and Vector3.new(0,0,0) or {},\ Vector3 and Vector3.new(ox, oy, -(depth or 1)) or {}\ ) or {}\ end\ end\ if k == \"ScreenPointToRay\" then\ return function(_, x, y, depth)\ return Ray and Ray.new(\ Vector3 and Vector3.new(0,0,0) or {},\ Vector3 and Vector3.new(0,0,-(depth or 1)) or {}\ ) or {}\ end\ end\ if k == \"WorldToScreenPoint\" or k == \"WorldToViewportPoint\" then\ return function(_, v3)\ return Vector3 and Vector3.new(960, 540, 1) or {}, true\ end\ end\ if k == \"CFrame\" then return CFrame and CFrame.new(0,0,0) or {} end\ if k == \"Focus\" then return CFrame and CFrame.new(0,0,0) or {} end\ if k == \"NearPlaneZ\" then return -0.1 end\ if k == \"IsA\" then return function(_,cn) return cn==\"Camera\" or cn==\"Instance\" end end\ if k == \"GetPropertyChangedSignal\" then return function() return (_mk_sig()) end end\ return nil\ end,\ __newindex = rawset,\ __tostring = function() return \"Camera\" end,\ }))\ else\ local cam = rawget(ws, \"CurrentCamera\")\ if cam ~= nil and not rawget(cam, \"ViewportPointToRay\") then\ rawset(cam, \"ViewportPointToRay\", function(_, x, y, depth)\ return Ray and Ray.new(\ Vector3 and Vector3.new(0,0,0) or {},\ Vector3 and Vector3.new(0,0,-(depth or 1)) or {}\ ) or {}\ end)\ rawset(cam, \"ScreenPointToRay\", function(_, x, y, depth)\ return Ray and Ray.new(\ Vector3 and Vector3.new(0,0,0) or {},\ Vector3 and Vector3.new(0,0,-(depth or 1)) or {}\ ) or {}\ end)\ rawset(cam, \"ClassName\", \"Camera\")\ rawset(cam, \"FieldOfView\", 70)\ rawset(cam, \"ViewportSize\", Vector2 and Vector2.new(1920,1080) or {X=1920,Y=1080})\ end\ end\ if not rawget(ws, \"Terrain\") then\ local terrain = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"Terrain\" end\ if k == \"Name\" then return \"Terrain\" end\ if k == \"GetMaterial\" then return function(_, x, y, z) return Enum and Enum.Material and Enum.Material.Grass or nil end end\ if k == \"SetMaterial\" then return function() end end\ if k == \"FillBlock\" then return function() end end\ if k == \"FillBall\" then return function() end end\ if k == \"CellSize\" then return 4 end\ if k == \"IsA\" then return function(_,cn) return cn==\"Terrain\" or cn==\"BasePart\" or cn==\"Instance\" end end\ if k == \"GetPropertyChangedSignal\" then return function() return (_mk_sig()) end end\ if k == \"FindFirstChild\" then return function() return nil end end\ if k == \"GetChildren\" then return function() return {} end end\ if k == \"IsDescendantOf\" then return function() return true end end\ return nil\ end,\ __newindex = rawset,\ __tostring = function() return \"Terrain\" end,\ })\ rawset(ws, \"Terrain\", terrain)\ local _prev_ffc = rawget(ws, \"FindFirstChild\")\ rawset(ws, \"FindFirstChild\", function(self, name, recursive)\ if name == \"Terrain\" then return terrain end\ -- _ws_raycast_part is defined later in this do-block; Lua\ -- closures capture upvalues by reference so this works.\ if name == \"Baseplate\" and _ws_raycast_part then return _ws_raycast_part end\ if _prev_ffc then return _prev_ffc(self, name, recursive) end\ return nil\ end)\ local _prev_ffcoc = rawget(ws, \"FindFirstChildOfClass\")\ rawset(ws, \"FindFirstChildOfClass\", function(self, cn)\ if cn == \"Terrain\" then return terrain end\ if _prev_ffcoc then return _prev_ffcoc(self, cn) end\ return nil\ end)\ end\ if rawget(ws, \"ClassName\") == nil then rawset(ws, \"ClassName\", \"Workspace\") end\ if rawget(ws, \"Name\") == nil then rawset(ws, \"Name\", \"Workspace\") end\ if rawget(ws, \"IsA\") == nil then\ rawset(ws, \"IsA\", function(_, cn) return cn==\"Workspace\" or cn==\"Instance\" end)\ end\ if rawget(ws, \"GetPartsInPart\") == nil then\ rawset(ws, \"GetPartsInPart\", function(self, part, overlapParams) return {} end)\ end\ if rawget(ws, \"GetPartBoundsInBox\") == nil then\ rawset(ws, \"GetPartBoundsInBox\", function(self, cf, size, overlapParams) return {} end)\ end\ if rawget(ws, \"GetPartBoundsInRadius\") == nil then\ rawset(ws, \"GetPartBoundsInRadius\", function(self, pos, radius, overlapParams) return {} end)\ end\ -- Build a persistent fake Baseplate Part for Raycast results.\ -- RaycastResult.Instance must pass typeof()==\"Instance\" and be\ -- findable via workspace:FindFirstChild(\"Baseplate\").\ local _ws_raycast_part = (function()\ if type(_G.Instance) == \"table\" and type(_G.Instance.new) == \"function\" then\ local ok, p = pcall(_G.Instance.new, \"Part\")\ if ok and p then\ pcall(function()\ p.Name = \"Baseplate\"\ p.Anchored = true\ p.Size = Vector3 and Vector3.new(512,1,512) or {X=512,Y=1,Z=512}\ end)\ return p\ end\ end\ return setmetatable({ClassName=\"Part\", Name=\"Baseplate\", Anchored=true},\ {__metatable=\"Instance\",\ __index=function(t,k)\ if k==\"ClassName\" then return \"Part\" end\ if k==\"Name\" then return \"Baseplate\" end\ if k==\"Anchored\" then return true end\ if k==\"IsA\" then return function(_,cn) return cn==\"Part\" or cn==\"BasePart\" or cn==\"Instance\" end end\ return rawget(t,k)\ end,\ __newindex=rawset})\ end)()\ \ rawset(ws, \"Raycast\", function(self, origin, direction, params)\ if origin and direction then\ local ox,oy,oz = origin.X or 0, origin.Y or 0, origin.Z or 0\ local dx,dy,dz = direction.X or 0, direction.Y or 0, direction.Z or 0\ local hitPos = Vector3 and Vector3.new(ox+dx*0.5, oy+dy*0.5, oz+dz*0.5)\ or {X=ox+dx*0.5, Y=oy+dy*0.5, Z=oz+dz*0.5}\ local hitNorm = Vector3 and Vector3.new(0,1,0) or {X=0,Y=1,Z=0}\ local dist = math.sqrt(dx*dx+dy*dy+dz*dz) * 0.5\ return setmetatable({}, {\ __metatable=\"RaycastResult\", __type=\"RaycastResult\",\ __tostring=function() return \"RaycastResult\" end,\ __index=function(_, k)\ -- Instance MUST be a valid Roblox Instance (typeof==\"Instance\")\ if k==\"Instance\" then return _ws_raycast_part end\ if k==\"Position\" then return hitPos end\ if k==\"Normal\" then return hitNorm end\ if k==\"Material\" then\ return Enum and Enum.Material and Enum.Material.Plastic or nil\ end\ if k==\"Distance\" then return dist end\ return nil\ end,\ __newindex=rawset,\ })\ end\ return nil\ end)\ if rawget(ws, \"Blockcast\") == nil then\ rawset(ws, \"Blockcast\", function(self, cf, size, direction, params) return nil end)\ end\ end\ end\ \ do\ local g = _G.game\ if type(g) == \"table\" then\ local _g_mt = getmetatable(g)\ if type(_g_mt) == \"table\" then\ local _prev_g_idx = rawget(_g_mt, \"__index\")\ rawset(_g_mt, \"__index\", function(self, k)\ if k == \"Destroy\" then return function() error(\"game cannot be destroyed\", 2) end end\ if k == \"Clone\" then return function() error(\"game cannot be cloned\", 2) end end\ if k == \"Parent\" then return nil end\ if k == \"ClassName\" then return \"DataModel\" end\ if k == \"Name\" then return \"Game\" end\ if k == \"IsA\" then return function(_, cn) return cn==\"DataModel\" or cn==\"Instance\" end end\ -- Delegate to the prior __index chain (GetService, FindFirstChild, etc.)\ if type(_prev_g_idx) == \"function\" then\ local r = _prev_g_idx(self, k)\ if r ~= nil then return r end\ elseif type(_prev_g_idx) == \"table\" then\ local r = _prev_g_idx[k]\ if r ~= nil then return r end\ end\ -- Roblox raises an error for unknown DataModel members.\ -- Fake services that are legitimately nil still need to error.\ error(tostring(k) .. \" is not a valid member of DataModel \\\"Game\\\"\", 2)\ end)\ end\ end\ end\ \ do\ local _fake_svc_mt = { __metatable = \"Instance\" }\ local function _mksvc(props)\ return setmetatable(props or {}, _fake_svc_mt)\ end\ \ local _sps = _mksvc({\ ClassName = \"StarterPlayerScripts\",\ Name = \"StarterPlayerScripts\",\ GetChildren = function() return {} end,\ GetDescendants = function() return {} end,\ FindFirstChild = function() return nil end,\ IsA = function(_,cn) return cn==\"StarterPlayerScripts\" or cn==\"Instance\" end,\ })\ local _scs = _mksvc({\ ClassName = \"StarterCharacterScripts\",\ Name = \"StarterCharacterScripts\",\ GetChildren = function() return {} end,\ GetDescendants = function() return {} end,\ FindFirstChild = function() return nil end,\ IsA = function(_,cn) return cn==\"StarterCharacterScripts\" or cn==\"Instance\" end,\ })\ local _sp_children = { _sps, _scs }\ \ local _sp = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"StarterPlayer\" end\ if k == \"Name\" then return \"StarterPlayer\" end\ if k == \"StarterPlayerScripts\" then return _sps end\ if k == \"StarterCharacterScripts\" then return _scs end\ if k == \"FindFirstChild\" then\ return function(_, name)\ if name == \"StarterPlayerScripts\" then return _sps end\ if name == \"StarterCharacterScripts\" then return _scs end\ return nil\ end\ end\ if k == \"FindFirstChildOfClass\" then\ return function(_, cn)\ if cn == \"StarterPlayerScripts\" then return _sps end\ if cn == \"StarterCharacterScripts\" then return _scs end\ return nil\ end\ end\ if k == \"WaitForChild\" then\ return function(_, name)\ if name == \"StarterPlayerScripts\" then return _sps end\ if name == \"StarterCharacterScripts\" then return _scs end\ return nil\ end\ end\ if k == \"GetChildren\" then return function() return {_sps, _scs} end end\ if k == \"GetDescendants\" then return function() return {_sps, _scs} end end\ if k == \"IsA\" then return function(_,cn) return cn==\"StarterPlayer\" or cn==\"Instance\" end end\ if k == \"GetPropertyChangedSignal\" then return function() return (_mk_sig()) end end\ if k == \"CameraMode\" then return Enum and Enum.CameraMode and Enum.CameraMode.Classic or nil end\ if k == \"CameraMaxZoomDistance\" then return 400 end\ if k == \"CameraMinZoomDistance\" then return 0.5 end\ if k == \"CharacterJumpHeight\" then return 7.2 end\ if k == \"CharacterWalkSpeed\" then return 16 end\ if k == \"CharacterMaxSlopeAngle\" then return 89 end\ if k == \"CharacterJumpPower\" then return 50 end\ if k == \"HealthDisplayDistance\" then return 100 end\ if k == \"NameDisplayDistance\" then return 100 end\ if k == \"DevCameraOcclusionMode\" then return nil end\ return nil\ end,\ __newindex = rawset,\ __tostring = function() return \"StarterPlayer\" end,\ })\ \ local _bound = {}\ local _cas = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"ContextActionService\" end\ if k == \"BindAction\" then\ return function(_, name, fn, createBtn, ...)\ _bound[tostring(name)] = fn\ local conn = setmetatable({}, { __metatable=\"RBXScriptConnection\",\ __index=function(_,k2) if k2==\"Disconnect\" then return function() _bound[name]=nil end end end })\ return conn\ end\ end\ if k == \"UnbindAction\" then return function(_, name) _bound[tostring(name)] = nil end end\ if k == \"GetBoundActionInfo\" then return function(_, name)\ if _bound[tostring(name)] then\ return { title=tostring(name), description=\"\", stackOrder=0, inputTypes={} }\ end\ return nil\ end end\ if k == \"GetAllBoundActionInfo\" then return function(_)\ local result = {}\ for name, fn in pairs(_bound) do\ result[name] = { title=name, description=\"\", stackOrder=0, inputTypes={} }\ end\ return result\ end end\ if k == \"BindActionToRenderStep\" then return function() end end\ if k == \"LocalToolEquipped\" then return (_mk_sig()) end\ if k == \"LocalToolUnequipped\" then return (_mk_sig()) end\ if k == \"IsA\" then return function(_,cn) return cn==\"ContextActionService\" or cn==\"Instance\" end end\ return nil\ end,\ __newindex = rawset,\ __tostring = function() return \"ContextActionService\" end,\ })\ \ local function _mkPath()\ local _waypoints = {}\ local path = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"Path\" end\ if k == \"Status\" then return Enum and Enum.PathStatus and Enum.PathStatus.Success or 0 end\ if k == \"GetWaypoints\" then return function() return _waypoints end end\ if k == \"ComputeAsync\" then\ return function(self, start, goal)\ _waypoints = {\ PathWaypoint and PathWaypoint.new(start, Enum and Enum.PathWaypointAction and Enum.PathWaypointAction.Walk or 0) or {},\ PathWaypoint and PathWaypoint.new(goal, Enum and Enum.PathWaypointAction and Enum.PathWaypointAction.Walk or 0) or {},\ }\ end\ end\ if k == \"Blocked\" then return (_mk_sig()) end\ if k == \"IsA\" then return function(_,cn) return cn==\"Path\" or cn==\"Instance\" end end\ return nil\ end,\ __newindex = rawset,\ })\ return path\ end\ \ local _pfs = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"PathfindingService\" end\ if k == \"CreatePath\" then\ return function(_, params) return _mkPath() end\ end\ if k == \"FindPathAsync\" then\ return function(_, start, goal) return _mkPath() end\ end\ if k == \"IsA\" then return function(_,cn) return cn==\"PathfindingService\" or cn==\"Instance\" end end\ return nil\ end,\ __newindex = rawset,\ __tostring = function() return \"PathfindingService\" end,\ })\ \ _fake_services[\"StarterPlayer\"] = _sp\ _fake_services[\"ContextActionService\"] = _cas\ _fake_services[\"PathfindingService\"] = _pfs\ _G.StarterPlayer = _sp\ _G.ContextActionService = _cas\ _G.PathfindingService = _pfs\ end\ \ do\ local lit = _G.Lighting or _fake_services[\"Lighting\"]\ if lit ~= nil then\ rawset(lit, \"Ambient\", Color3 and Color3.new(0, 0, 0) or {R=0,G=0,B=0})\ rawset(lit, \"OutdoorAmbient\", Color3 and Color3.new(0.5, 0.5, 0.5) or {})\ if rawget(lit, \"Brightness\") == nil then rawset(lit, \"Brightness\", 1) end\ if rawget(lit, \"ClockTime\") == nil then rawset(lit, \"ClockTime\", 12) end\ if rawget(lit, \"FogEnd\") == nil then rawset(lit, \"FogEnd\", 1e6) end\ if rawget(lit, \"FogStart\") == nil then rawset(lit, \"FogStart\", 0) end\ if rawget(lit, \"GlobalShadows\") == nil then rawset(lit, \"GlobalShadows\", true) end\ if rawget(lit, \"FogColor\") == nil then rawset(lit, \"FogColor\", Color3 and Color3.new(0.75,0.75,0.75) or {}) end\ if rawget(lit, \"TimeOfDay\") == nil then rawset(lit, \"TimeOfDay\", \"12:00:00\") end\ if rawget(lit, \"GeographicLatitude\") == nil then rawset(lit, \"GeographicLatitude\", 41.733) end\ if rawget(lit, \"ExposureCompensation\")== nil then rawset(lit, \"ExposureCompensation\", 0) end\ if rawget(lit, \"EnvironmentDiffuseScale\") == nil then rawset(lit, \"EnvironmentDiffuseScale\", 1) end\ if rawget(lit, \"EnvironmentSpecularScale\") == nil then rawset(lit, \"EnvironmentSpecularScale\", 1) end\ end\ \ local uis = _G.UserInputService or _fake_services[\"UserInputService\"]\ if uis ~= nil then\ rawset(uis, \"MouseIcon\", \"\")\ if rawget(uis, \"MouseBehavior\") == nil then\ rawset(uis, \"MouseBehavior\", Enum and Enum.MouseBehavior and Enum.MouseBehavior.Default or nil)\ end\ if rawget(uis, \"TouchEnabled\") == nil then rawset(uis, \"TouchEnabled\", false) end\ if rawget(uis, \"KeyboardEnabled\") == nil then rawset(uis, \"KeyboardEnabled\", true) end\ if rawget(uis, \"MouseEnabled\") == nil then rawset(uis, \"MouseEnabled\", true) end\ if rawget(uis, \"MouseIconEnabled\") == nil then rawset(uis, \"MouseIconEnabled\", true) end\ if rawget(uis, \"MouseDeltaSensitivity\") == nil then rawset(uis, \"MouseDeltaSensitivity\", 1) end\ if rawget(uis, \"GamepadEnabled\") == nil then rawset(uis, \"GamepadEnabled\", false) end\ if rawget(uis, \"AccelerometerEnabled\") == nil then rawset(uis, \"AccelerometerEnabled\", false) end\ if rawget(uis, \"GyroscopeEnabled\") == nil then rawset(uis, \"GyroscopeEnabled\", false) end\ if rawget(uis, \"InputBegan\") == nil then rawset(uis, \"InputBegan\", (_mk_sig())) end\ if rawget(uis, \"InputEnded\") == nil then rawset(uis, \"InputEnded\", (_mk_sig())) end\ if rawget(uis, \"InputChanged\") == nil then rawset(uis, \"InputChanged\", (_mk_sig())) end\ if rawget(uis, \"TextBoxFocused\") == nil then rawset(uis, \"TextBoxFocused\", (_mk_sig())) end\ if rawget(uis, \"TextBoxFocusReleased\") == nil then rawset(uis, \"TextBoxFocusReleased\", (_mk_sig())) end\ if rawget(uis, \"GetConnectedGamepads\") == nil then\ rawset(uis, \"GetConnectedGamepads\", function() return {} end)\ end\ if rawget(uis, \"GetKeysPressed\") == nil then\ rawset(uis, \"GetKeysPressed\", function() return {} end)\ end\ if rawget(uis, \"GetMouseButtonsPressed\") == nil then\ rawset(uis, \"GetMouseButtonsPressed\", function() return {} end)\ end\ if rawget(uis, \"IsKeyDown\") == nil then\ rawset(uis, \"IsKeyDown\", function() return false end)\ end\ if rawget(uis, \"IsMouseButtonPressed\") == nil then\ rawset(uis, \"IsMouseButtonPressed\", function() return false end)\ end\ if rawget(uis, \"GetMouseLocation\") == nil then\ rawset(uis, \"GetMouseLocation\", function() return Vector2 and Vector2.new(0,0) or {} end)\ end\ if rawget(uis, \"GetMouseDelta\") == nil then\ rawset(uis, \"GetMouseDelta\", function() return Vector2 and Vector2.new(0,0) or {} end)\ end\ end\ if _G.UserInputService == nil and uis ~= nil then\ rawset(_G, \"UserInputService\", uis)\ end\ \ local pls = _fake_services[\"Players\"]\ if pls ~= nil then\ local lp = rawget(pls, \"LocalPlayer\")\ if lp ~= nil then\ if rawget(lp, \"CharacterAdded\") == nil then\ rawset(lp, \"CharacterAdded\", (_mk_sig()))\ end\ if rawget(lp, \"CharacterRemoving\") == nil then\ rawset(lp, \"CharacterRemoving\", (_mk_sig()))\ end\ if rawget(lp, \"AncestryChanged\") == nil then\ rawset(lp, \"AncestryChanged\", (_mk_sig()))\ end\ if rawget(lp, \"Chatted\") == nil then\ rawset(lp, \"Chatted\", (_mk_sig()))\ end\ if rawget(lp, \"LoadCharacter\") == nil then\ rawset(lp, \"LoadCharacter\", function() end)\ end\ if rawget(lp, \"GetMouse\") == nil then\ rawset(lp, \"GetMouse\", function()\ return setmetatable({}, { __metatable=\"Instance\", __index=function(_,k)\ if k==\"Hit\" then return CFrame and CFrame.new() or {} end\ if k==\"UnitRay\" then return Ray and Ray.new(Vector3 and Vector3.new() or {}, Vector3 and Vector3.new(0,0,-1) or {}) or {} end\ if k==\"X\" then return 0 end\ if k==\"Y\" then return 0 end\ if k==\"Button1Down\" then return (_mk_sig()) end\ if k==\"Button1Up\" then return (_mk_sig()) end\ if k==\"Move\" then return (_mk_sig()) end\ if k==\"Icon\" then return \"\" end\ end, __newindex=rawset })\ end)\ end\ if rawget(lp, \"WaitForDataReady\") == nil then\ rawset(lp, \"WaitForDataReady\", function() return true end)\ end\ if rawget(lp, \"IsInGroup\") == nil then\ rawset(lp, \"IsInGroup\", function() return false end)\ end\ end\ end\ end\ \ do\ local _inst_new = _G.Instance and _G.Instance.new\ if type(_inst_new) == \"function\" and not rawget(_G.Instance, \"__v6_patched\") then\ rawset(_G.Instance, \"__v6_patched\", true)\ local _prev_new = _inst_new\ _G.Instance.new = function(cls, parent)\ local inst = _prev_new(cls, parent)\ if inst == nil then return nil end\ local cn = tostring(cls or \"\")\ if cn == \"Humanoid\" then\ if inst.HipHeight == nil then inst.HipHeight = 1.35 end\ if inst.JumpHeight == nil then inst.JumpHeight = 7.2 end\ if inst.JumpPower == nil then inst.JumpPower = 50 end\ if inst.WalkSpeed == nil then inst.WalkSpeed = 16 end\ if inst.MaxHealth == nil then inst.MaxHealth = 100 end\ if inst.Health == nil then inst.Health = 100 end\ if inst.DisplayDistanceType == nil then\ inst.DisplayDistanceType = Enum and Enum.HumanoidDisplayDistanceType and Enum.HumanoidDisplayDistanceType.Subject or nil\ end\ if inst.HealthDisplayType == nil then\ inst.HealthDisplayType = Enum and Enum.HumanoidHealthDisplayType and Enum.HumanoidHealthDisplayType.DisplayWhenDamaged or nil\ end\ if inst.NameDisplayDistance == nil then inst.NameDisplayDistance = 100 end\ if inst.HealthDisplayDistance == nil then inst.HealthDisplayDistance = 100 end\ if inst.AutomaticScalingEnabled == nil then inst.AutomaticScalingEnabled = true end\ if inst.Seated == nil then\ local sig = (_mk_sig())\ inst.Seated = sig\ end\ if inst.Touched == nil then inst.Touched = (_mk_sig()) end\ if inst.Died == nil then inst.Died = (_mk_sig()) end\ if inst.Running == nil then inst.Running = (_mk_sig()) end\ if inst.Jumping == nil then inst.Jumping = (_mk_sig()) end\ rawset(inst, \"GetState\", rawget(inst, \"GetState\") or function(self)\ return Enum and Enum.HumanoidStateType and Enum.HumanoidStateType.Running or nil\ end)\ rawset(inst, \"ChangeState\", rawget(inst, \"ChangeState\") or function(self, st) end)\ rawset(inst, \"GetAppliedDescription\", rawget(inst, \"GetAppliedDescription\") or function() return nil end)\ elseif cn == \"Sparkles\" then\ if inst.SparkleColor == nil then inst.SparkleColor = Color3 and Color3.new(1,1,1) or {} end\ if inst.Color == nil then inst.Color = Color3 and Color3.new(1,1,1) or {} end\ if inst.TimeScale == nil then inst.TimeScale = 1 end\ if inst.Enabled == nil then inst.Enabled = true end\ elseif cn == \"Fire\" then\ if inst.Size == nil then inst.Size = 5 end\ if inst.Heat == nil then inst.Heat = 9 end\ if inst.Color == nil then inst.Color = Color3 and Color3.new(1, 0.5, 0) or {} end\ if inst.SecondaryColor == nil then inst.SecondaryColor = Color3 and Color3.new(1, 1, 0) or {} end\ elseif cn == \"Smoke\" then\ if inst.Size == nil then inst.Size = 1 end\ if inst.Opacity == nil then inst.Opacity = 0.5 end\ if inst.Color == nil then inst.Color = Color3 and Color3.new(0.8,0.8,0.8) or {} end\ if inst.RiseVelocity == nil then inst.RiseVelocity = 1 end\ elseif cn == \"Sky\" then\ if inst.StarCount == nil then inst.StarCount = 3000 end\ if inst.SkyboxBk == nil then inst.SkyboxBk = \"\" end\ if inst.SkyboxDn == nil then inst.SkyboxDn = \"\" end\ if inst.SkyboxFt == nil then inst.SkyboxFt = \"\" end\ if inst.SkyboxLf == nil then inst.SkyboxLf = \"\" end\ if inst.SkyboxRt == nil then inst.SkyboxRt = \"\" end\ if inst.SkyboxUp == nil then inst.SkyboxUp = \"\" end\ if inst.SunAngularSize == nil then inst.SunAngularSize = 21.6 end\ if inst.MoonAngularSize == nil then inst.MoonAngularSize = 11.2 end\ if inst.CelestialBodiesShown == nil then inst.CelestialBodiesShown = true end\ elseif cn == \"Atmosphere\" then\ if inst.Density == nil then inst.Density = 0.395 end\ if inst.Offset == nil then inst.Offset = 0 end\ if inst.Color == nil then inst.Color = Color3 and Color3.new(0.784,0.784,0.784) or {} end\ if inst.Decay == nil then inst.Decay = Color3 and Color3.new(0.427,0.522,0.612) or {} end\ if inst.Glare == nil then inst.Glare = 0 end\ if inst.Haze == nil then inst.Haze = 0 end\ elseif cn == \"RopeConstraint\" then\ if inst.Length == nil then inst.Length = 5 end\ if inst.Visible == nil then inst.Visible = true end\ elseif cn == \"RodConstraint\" then\ if inst.Length == nil then inst.Length = 4 end\ if inst.Visible == nil then inst.Visible = true end\ if inst.Thickness == nil then inst.Thickness = 0.1 end\ elseif cn == \"LinearVelocity\" then\ if inst.MaxForce == nil then inst.MaxForce = 0 end\ if inst.VelocityConstraintMode == nil then\ inst.VelocityConstraintMode = Enum and Enum.VelocityConstraintMode and Enum.VelocityConstraintMode.Vector or nil\ end\ elseif cn == \"Part\" or cn == \"MeshPart\" or cn == \"WedgePart\" then\ if inst.RootPriority == nil then inst.RootPriority = 0 end\ if inst.AssemblyMass == nil then inst.AssemblyMass = 1 end\ if inst.CollisionGroup == nil then inst.CollisionGroup = \"Default\" end\ if inst.CastShadow == nil then inst.CastShadow = true end\ if inst.Anchored == nil then inst.Anchored = false end\ if inst.CanCollide == nil then inst.CanCollide = true end\ if inst.CanQuery == nil then inst.CanQuery = true end\ if inst.CanTouch == nil then inst.CanTouch = true end\ if inst.Locked == nil then inst.Locked = false end\ if inst.Massless == nil then inst.Massless = false end\ if inst.Touched == nil then inst.Touched = (_mk_sig()) end\ if inst.TouchEnded == nil then inst.TouchEnded = (_mk_sig()) end\ elseif cn == \"DepthOfFieldEffect\" then\ if inst.FocusDistance == nil then inst.FocusDistance = 100 end\ if inst.NearIntensity == nil then inst.NearIntensity = 1 end\ if inst.FarIntensity == nil then inst.FarIntensity = 1 end\ if inst.InFocusRadius == nil then inst.InFocusRadius = 10 end\ elseif cn == \"SunRaysEffect\" then\ if inst.Intensity == nil then inst.Intensity = 0.25 end\ if inst.Spread == nil then inst.Spread = 1 end\ elseif cn == \"SelectionBox\" or cn == \"SelectionSphere\" then\ if inst.Color3 == nil then inst.Color3 = Color3 and Color3.new(0,1,0) or {} end\ if inst.LineThickness == nil then inst.LineThickness = 0.1 end\ elseif cn == \"TextLabel\" or cn == \"TextButton\" or cn == \"TextBox\" then\ if inst.Font == nil then\ inst.Font = Enum and Enum.Font and Enum.Font.SourceSans or nil\ end\ if inst.FontFace == nil then\ inst.FontFace = Font and Font.new(\"rbxasset://fonts/families/SourceSansPro.json\") or nil\ end\ if inst.TextStrokeColor3 == nil then inst.TextStrokeColor3 = Color3 and Color3.new(0,0,0) or {} end\ if inst.TextStrokeTransparency == nil then inst.TextStrokeTransparency = 1 end\ if inst.TextColor3 == nil then inst.TextColor3 = Color3 and Color3.new(0,0,0) or {} end\ if inst.TextTransparency == nil then inst.TextTransparency = 0 end\ if inst.TextScaled == nil then inst.TextScaled = false end\ if inst.Text == nil then inst.Text = \"\" end\ if inst.RichText == nil then inst.RichText = false end\ if inst.LineHeight == nil then inst.LineHeight = 1 end\ if inst.TextXAlignment == nil then\ inst.TextXAlignment = Enum and Enum.TextXAlignment and Enum.TextXAlignment.Center or nil\ end\ if inst.TextYAlignment == nil then\ inst.TextYAlignment = Enum and Enum.TextYAlignment and Enum.TextYAlignment.Center or nil\ end\ if inst.TextScaled == nil then inst.TextScaled = false end\ if inst.TextWrapped == nil then inst.TextWrapped = false end\ if inst.BackgroundTransparency == nil then inst.BackgroundTransparency = 1 end\ if inst.BackgroundColor3 == nil then inst.BackgroundColor3 = Color3 and Color3.new(1,1,1) or {} end\ if inst.AnchorPoint == nil then inst.AnchorPoint = Vector2 and Vector2.new(0,0) or {} end\ elseif cn == \"Frame\" or cn == \"ScrollingFrame\" then\ if inst.AnchorPoint == nil then inst.AnchorPoint = Vector2 and Vector2.new(0,0) or {} end\ if inst.BackgroundColor3 == nil then inst.BackgroundColor3 = Color3 and Color3.new(1,1,1) or {} end\ if inst.BackgroundTransparency == nil then inst.BackgroundTransparency = 0 end\ if inst.BorderSizePixel == nil then inst.BorderSizePixel = 1 end\ if inst.BorderColor3 == nil then inst.BorderColor3 = Color3 and Color3.new(0.1,0.1,0.1) or {} end\ if inst.BorderMode == nil then inst.BorderMode = Enum and Enum.BorderMode and Enum.BorderMode.Outline or nil end\ if inst.Rotation == nil then inst.Rotation = 0 end\ if inst.ZIndex == nil then inst.ZIndex = 1 end\ if inst.LayoutOrder == nil then inst.LayoutOrder = 0 end\ if inst.Active == nil then inst.Active = false end\ if inst.Interactable == nil then inst.Interactable = true end\ if inst.Selectable == nil then inst.Selectable = false end\ if inst.Visible == nil then inst.Visible = true end\ if inst.ClipsDescendants == nil then inst.ClipsDescendants = false end\ if inst.AutomaticSize == nil then inst.AutomaticSize = Enum and Enum.AutomaticSize and Enum.AutomaticSize.None or nil end\ elseif cn == \"Explosion\" then\ if inst.BlastRadius == nil then inst.BlastRadius = 8 end\ if inst.BlastPressure == nil then inst.BlastPressure = 500000 end\ if inst.DestroyJointRadiusPercent == nil then inst.DestroyJointRadiusPercent = 0.25 end\ if inst.Hit == nil then inst.Hit = (_mk_sig()) end\ elseif cn == \"SpringConstraint\" then\ if inst.Stiffness == nil then inst.Stiffness = 10000 end\ if inst.Damping == nil then inst.Damping = 500 end\ if inst.FreeLength == nil then inst.FreeLength = 5 end\ elseif cn == \"BloomEffect\" then\ if inst.Intensity == nil then inst.Intensity = 0.9 end\ if inst.Size == nil then inst.Size = 24 end\ if inst.Threshold == nil then inst.Threshold = 0.95 end\ elseif cn == \"BlurEffect\" then\ if inst.Size == nil then inst.Size = 24 end\ elseif cn == \"ColorCorrectionEffect\" then\ if inst.Brightness == nil then inst.Brightness = 0 end\ if inst.Contrast == nil then inst.Contrast = 0 end\ if inst.Saturation == nil then inst.Saturation = 0 end\ if inst.TintColor == nil then inst.TintColor = Color3 and Color3.new(1,1,1) or {} end\ elseif cn == \"Camera\" then\ if inst.FieldOfView == nil then inst.FieldOfView = 70 end\ if inst.ViewportSize == nil then inst.ViewportSize = Vector2 and Vector2.new(1920,1080) or {} end\ if inst.Focus == nil then inst.Focus = CFrame and CFrame.new(0,0,0) or {} end\ if inst.NearPlaneZ == nil then inst.NearPlaneZ = -0.1 end\ if inst.CameraType == nil then\ inst.CameraType = Enum and Enum.CameraType and Enum.CameraType.Custom or nil\ end\ if inst.ViewportPointToRay == nil then\ rawset(inst, \"ViewportPointToRay\", function(_, x, y, d)\ return Ray and Ray.new(Vector3 and Vector3.new(0,0,0) or {}, Vector3 and Vector3.new(0,0,-(d or 1)) or {}) or {}\ end)\ end\ elseif cn == \"Model\" then\ if inst.PrimaryPart == nil then inst.PrimaryPart = nil end\ if inst.ModelLod == nil then\ inst.ModelLod = Enum and Enum.ModelLevelOfDetail and Enum.ModelLevelOfDetail.Disabled or nil\ end\ elseif cn == \"Sound\" then\ if inst.Volume == nil then inst.Volume = 0.5 end\ if inst.Pitch == nil then inst.Pitch = 1 end\ if inst.RollOffMaxDistance == nil then inst.RollOffMaxDistance = 10000 end\ if inst.Playing == nil then inst.Playing = false end\ if inst.Looped == nil then inst.Looped = false end\ if inst.Ended == nil then inst.Ended = (_mk_sig()) end\ if inst.Played == nil then inst.Played = (_mk_sig()) end\ rawset(inst, \"Play\", rawget(inst, \"Play\") or function() end)\ rawset(inst, \"Stop\", rawget(inst, \"Stop\") or function() end)\ rawset(inst, \"Pause\", rawget(inst, \"Pause\") or function() end)\ end\ return inst\ end\ end\ end\ \ do\ local mkt = type(_G.game) == \"table\" and pcall(function()\ return _G.game:GetService(\"MarketplaceService\")\ end)\ local _mks = _G.MarketplaceService\ if type(_mks) == \"table\" then\ local _prev_gpi = rawget(_mks, \"GetProductInfo\")\ rawset(_mks, \"GetProductInfo\", function(self, id, infotype)\ local result\ if type(_prev_gpi) == \"function\" then\ local ok, r = pcall(_prev_gpi, self, id, infotype)\ if ok and type(r) == \"table\" then result = r end\ end\ if result == nil then\ result = {\ Name = \"Product \"..tostring(id or 0),\ Description = \"\",\ Creator = { CreatorType=\"User\", CreatorTargetId=0, Name=\"Roblox\" },\ AssetTypeId = 1,\ Created = \"2020-01-01T00:00:00.000Z\",\ Updated = \"2020-01-01T00:00:00.000Z\",\ IsForSale = false,\ Price = 0,\ }\ end\ if type(result.AssetTypeId) ~= \"number\" then result.AssetTypeId = 1 end\ return result\ end)\ end\ end\ \ do\ local ts = _G.TweenService or _fake_services[\"TweenService\"]\ if ts ~= nil then\ local _prev_create = rawget(ts, \"Create\")\ if type(_prev_create) == \"function\" then\ rawset(ts, \"Create\", function(self, inst, tweenInfo, propertyTable)\ if type(propertyTable) == \"table\" then\ for k, v in pairs(propertyTable) do\ local t = type(v)\ if t ~= \"number\" and t ~= \"boolean\" then\ local tf = (typeof and typeof(v) or t)\ local _ok_types = {\ Color3=true, Vector3=true, Vector2=true,\ CFrame=true, UDim2=true, UDim=true,\ number=true, boolean=true\ }\ if not _ok_types[tf] and not _ok_types[t] then\ error(\"unable to cast value to number\", 2)\ end\ end\ end\ end\ local _mk_sig2 = function()\ local cbs2 = {}\ return setmetatable({}, { __metatable=\"RBXScriptSignal\", __type=\"RBXScriptSignal\",\ __index=function(_,k2)\ if k2==\"Connect\" or k2==\"connect\" then return function(_,fn) cbs2[#cbs2+1]=fn end end\ if k2==\"Wait\" then return function() return nil end end\ end })\ end\ local _tween_played = false\ return setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k==\"ClassName\" then return \"Tween\" end\ if k==\"Play\" then return function(self2)\ if not _tween_played and type(propertyTable) == \"table\" and inst ~= nil then\ _tween_played = true\ for pk, pv in pairs(propertyTable) do\ pcall(function() inst[pk] = pv end)\ end\ end\ end end\ if k==\"Cancel\" then return function() _tween_played = false end end\ if k==\"Pause\" then return function() end end\ if k==\"Completed\" then return _mk_sig2() end\ if k==\"TweenInfo\" then return tweenInfo end\ if k==\"PlaybackState\" then return Enum and Enum.PlaybackState and Enum.PlaybackState.Begin or 0 end\ end,\ __newindex = rawset,\ })\ end)\ else\ rawset(ts, \"Create\", function(self, inst, tweenInfo, propertyTable)\ local tween = setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k==\"Play\" then return function() end end\ if k==\"Cancel\" then return function() end end\ if k==\"Pause\" then return function() end end\ if k==\"ClassName\" then return \"Tween\" end\ if k==\"Completed\" then return (_mk_sig()) end\ end,\ __newindex = rawset,\ })\ return tween\ end)\ end\ end\ end\ \ do\ local function _st_check_val(v)\ local vt = type(v)\ if vt == \"nil\" or vt == \"boolean\" or vt == \"number\" or vt == \"string\" then return end\ if vt == \"table\" then\ local ok2, mt2 = pcall(getmetatable, v)\ if ok2 and mt2 == \"SharedTable\" then return end\ end\ error(\"invalid value to serialize: \"..tostring(vt), 3)\ end\ if type(_G.SharedTable) == \"table\" and SharedTable.new then\ SharedTable.new = function(init)\ local st = {}\ if type(init) == \"table\" then\ for k, v in pairs(init) do st[k] = v end\ end\ return setmetatable(st, {\ __type = \"SharedTable\",\ __metatable = \"SharedTable\",\ __newindex = function(self, k, v)\ local kt = type(k)\ if kt ~= \"string\" and kt ~= \"number\" then\ error(\"SharedTable key must be a string or number\", 2)\ end\ _st_check_val(v)\ rawset(self, k, v)\ end,\ __tostring = function() return \"SharedTable\" end,\ })\ end\ end\ end\ \ do\ if _G._RTYPE and type(_G.Enum) == \"table\" then\ for name, et in pairs(_G.Enum) do\ if type(et) == \"table\" then\ if _G._RTYPE[et] == nil then _G._RTYPE[et] = \"Enum\" end\ local ok, items = pcall(function() return et:GetEnumItems() end)\ if ok and type(items) == \"table\" then\ for _, item in ipairs(items) do\ if _G._RTYPE[item] == nil then\ _G._RTYPE[item] = \"EnumItem\"\ end\ end\ end\ end\ end\ end\ end\ \ do\ if _G._RTYPE then\ local _test_nsk = NumberSequenceKeypoint and pcall(function()\ local v = NumberSequenceKeypoint.new(0, 0)\ if v and _G._RTYPE[v] == nil then _G._RTYPE[v] = \"NumberSequenceKeypoint\" end\ end)\ local _test_csk = ColorSequenceKeypoint and pcall(function()\ local v = ColorSequenceKeypoint.new(0, Color3 and Color3.new() or {})\ if v and _G._RTYPE[v] == nil then _G._RTYPE[v] = \"ColorSequenceKeypoint\" end\ end)\ end\ end\ \ do\ if type(_G.PhysicalProperties) == \"table\" then\ _G.PhysicalProperties.new = _G.PhysicalProperties.new or function(d, f, e, fw, ew)\ if type(d) == \"table\" then\ return setmetatable({ Density=0.7, Friction=0.3, Elasticity=0.5,\ FrictionWeight=1, ElasticityWeight=1 },\ { __type=\"PhysicalProperties\", __metatable=\"PhysicalProperties\",\ __tostring=function() return \"PhysicalProperties\" end })\ end\ return setmetatable({\ Density=tonumber(d) or 0.7,\ Friction=tonumber(f) or 0.3,\ Elasticity=tonumber(e) or 0.5,\ FrictionWeight=tonumber(fw) or 1,\ ElasticityWeight=tonumber(ew) or 1,\ }, { __type=\"PhysicalProperties\", __metatable=\"PhysicalProperties\",\ __tostring=function() return \"PhysicalProperties\" end })\ end\ end\ end\ \ do\ local ws = _G.workspace\ if ws ~= nil then\ if rawget(ws, \"Parent\") == nil then\ rawset(ws, \"Parent\", _G.game)\ end\ end\ end\ \ do\ if _G.CollectionService ~= nil then\ _fake_services[\"CollectionService\"] = _G.CollectionService\ end\ if _G.EncodingService ~= nil then\ _fake_services[\"EncodingService\"] = _G.EncodingService\ end\ if type(_G.SharedTable) == \"table\" then\ _fake_services[\"SharedTable\"] = _G.SharedTable\ end\ if type(_G.SharedTable) == \"table\" and _G.SharedTable.clear == nil then\ _G.SharedTable.clear = function(st)\ for k in next, st do rawset(st, k, nil) end\ end\ end\ for _,sname in ipairs({\"UserInputService\",\"ContextActionService\",\"TweenService\",\ \"MarketplaceService\",\"PathfindingService\",\"PhysicsService\",\ \"StarterGui\",\"StarterPlayer\",\"StarterPack\",\"SoundService\",\ \"ReplicatedStorage\",\"ReplicatedFirst\",\"HttpService\",\ \"CollectionService\",\"EncodingService\"}) do\ local sv = _fake_services[sname]\ if sv ~= nil and _G[sname] == nil then\ rawset(_G, sname, sv)\ end\ end\ end\ \ do\ if type(_G.elapsedTime) ~= \"function\" then\ local _start_time = os.clock()\ rawset(_G, \"elapsedTime\", function() return os.clock() - _start_time end)\ end\ if type(_G.time) ~= \"function\" then\ local _start2 = os.clock()\ rawset(_G, \"time\", function() return os.clock() - _start2 end)\ end\ if type(_G.tick) ~= \"function\" then\ rawset(_G, \"tick\", function() return os.time() + os.clock() % 1 end)\ end\ do\ local _wt0 = os.clock()\ rawset(_G, \"wait\", function(n) n = n or 0; return n, os.clock() - _wt0 end)\ end\ if type(_G.os) == \"table\" and _G.os.clock == nil then\ rawset(_G.os, \"clock\", os.clock)\ end\ end\ \ io.stderr:write(\"[bypass] eUNC-patch v6 installed\\n\")\ end\ \ -- ╔══════════════════════════════════════════════════════════════════════╗\ -- ║ [eUNC-patch-v7] Targeted eUNC v0.08 Remaining Check Fixes ║\ -- ╚══════════════════════════════════════════════════════════════════════╝\ do\ local _dbgmt7 = (debug and type(debug.getmetatable) == \"function\")\ and debug.getmetatable\ or function(v) return getmetatable(v) end\ \ -- Fix 1: game.ServiceName property access (game.Players, game.Workspace, etc.)\ -- The new_game object at line ~11437 throws \"not a valid member of DataModel\"\ -- for service-name property access. Patch its real __index via debug.getmetatable.\ do\ local _g = _G.game\ if type(_g) == \"table\" then\ local _real_mt = _dbgmt7(_g)\ if type(_real_mt) == \"table\" then\ local _prev7_idx = rawget(_real_mt, \"__index\")\ local _svc7 = {\ Workspace=true,Players=true,Lighting=true,\ ReplicatedStorage=true,ServerStorage=true,ServerScriptService=true,\ StarterGui=true,StarterPlayer=true,StarterPack=true,\ SoundService=true,RunService=true,TweenService=true,\ UserInputService=true,HttpService=true,MarketplaceService=true,\ TeleportService=true,ContentProvider=true,\ ContextActionService=true,PathfindingService=true,\ DataStoreService=true,TextService=true,TextChatService=true,\ Teams=true,Chat=true,LocalizationService=true,\ AssetService=true,GuiService=true,PhysicsService=true,\ CollectionService=true,ReplicatedFirst=true,InsertService=true,\ CoreGui=true,BadgeService=true,LogService=true,TestService=true,\ EncodingService=true,MaterialService=true,PolicyService=true,\ AvatarEditorService=true,ScriptContext=true,Selection=true,\ AnimationClipProvider=true,VoiceChatService=true,\ KeyframeSequenceProvider=true,AnalyticsService=true,\ VirtualInputManager=true,NetworkClient=true,\ }\ rawset(_real_mt, \"__index\", function(self7, k)\ if _svc7[k] then\ -- Try GetService path (which is valid and won't error)\ local _gs_fn\ if type(_prev7_idx) == \"function\" then\ local ok_gs, fn = pcall(_prev7_idx, self7, \"GetService\")\ if ok_gs and type(fn) == \"function\" then _gs_fn = fn end\ end\ if type(_gs_fn) == \"function\" then\ local ok2, svc = pcall(_gs_fn, self7, k)\ if ok2 and svc ~= nil then return svc end\ end\ -- Fallback: global variable\ local gv = rawget(_G, k)\ if gv ~= nil then return gv end\ -- Fallback: fake_services\ if type(_fake_services) == \"table\" then\ local fs = rawget(_fake_services, k)\ if fs ~= nil then return fs end\ end\ return nil\ end\ -- Not a service name — delegate to previous __index\ if type(_prev7_idx) == \"function\" then\ return _prev7_idx(self7, k)\ elseif type(_prev7_idx) == \"table\" then\ return rawget(_prev7_idx, k)\ end\ return nil\ end)\ io.stderr:write(\"[bypass-v7] game property access patched\\n\")\ end\ end\ end\ \ -- Fix 2: CFrame:ToOrientation() — alias for ToEulerAnglesYXZ\ -- Also add CFrame:Inverse() since eUNC might test it.\ if type(CFrame) == \"table\" and type(CFrame.new) == \"function\" then\ local _ok7cf, _cf7s = pcall(CFrame.new, 0, 0, 0)\ local _cf7_mt = _ok7cf and type(_cf7s) == \"table\" and _dbgmt7(_cf7s)\ if type(_cf7_mt) == \"table\" then\ local _prev7cf = rawget(_cf7_mt, \"__index\")\ rawset(_cf7_mt, \"__index\", function(self7, k)\ if k == \"ToOrientation\" then\ return function(s7)\ local r = rawget(s7, \"_r\") or {1,0,0,0,1,0,0,0,1}\ local _at2 = math.atan2 or function(y,x) return math.atan(y,x) end\ local cx = math.sqrt(r[5]*r[5] + r[8]*r[8])\ -- Returns rx, ry, rz (YXZ order = Roblox ToOrientation)\ return _at2(-r[6], cx), _at2(r[3], r[9]), _at2(r[4], r[5])\ end\ end\ if k == \"Inverse\" then\ return function(s7)\ local x,y,z = rawget(s7,\"X\") or 0, rawget(s7,\"Y\") or 0, rawget(s7,\"Z\") or 0\ local r = rawget(s7,\"_r\") or {1,0,0,0,1,0,0,0,1}\ -- Transpose rotation\ local rt = {r[1],r[4],r[7], r[2],r[5],r[8], r[3],r[6],r[9]}\ local nx = -(rt[1]*x + rt[2]*y + rt[3]*z)\ local ny = -(rt[4]*x + rt[5]*y + rt[6]*z)\ local nz = -(rt[7]*x + rt[8]*y + rt[9]*z)\ local t2 = {X=nx,Y=ny,Z=nz}; rawset(t2,\"_r\",rt)\ return setmetatable(t2, _cf7_mt)\ end\ end\ if type(_prev7cf) == \"function\" then return _prev7cf(self7, k)\ elseif type(_prev7cf) == \"table\" then return rawget(_prev7cf, k) end\ return rawget(self7, k)\ end)\ io.stderr:write(\"[bypass-v7] CFrame:ToOrientation + Inverse patched\\n\")\ end\ end\ \ -- Fix 3: SharedTable.increment, .size, .clear (were missing)\ if type(_G.SharedTable) == \"table\" then\ if _G.SharedTable.increment == nil then\ _G.SharedTable.increment = function(st, key, amount)\ if type(st) ~= \"table\" then return nil end\ amount = tonumber(amount) or 1\ local cur = rawget(st, key)\ local newval = (tonumber(cur) or 0) + amount\ rawset(st, key, newval)\ return newval\ end\ end\ if _G.SharedTable.size == nil then\ _G.SharedTable.size = function(st)\ local n = 0\ if type(st) == \"table\" then for _ in pairs(st) do n = n + 1 end end\ return n\ end\ end\ if _G.SharedTable.clear == nil then\ _G.SharedTable.clear = function(st)\ if type(st) ~= \"table\" then return end\ for k in pairs(st) do rawset(st, k, nil) end\ end\ end\ io.stderr:write(\"[bypass-v7] SharedTable methods patched\\n\")\ end\ \ -- Fix 4: Instance.new post-processing:\ -- Part:GetMass(), HumanoidDescription numeric props,\ -- DragDetector.DragStart signal, Humanoid methods.\ do\ local _inst7 = _G.Instance\ if type(_inst7) == \"table\" and type(_inst7.new) == \"function\"\ and not rawget(_inst7, \"__v7_post\") then\ rawset(_inst7, \"__v7_post\", true)\ local _prev7_new = _inst7.new\ \ local _PART7 = {\ Part=true,MeshPart=true,WedgePart=true,TrussPart=true,\ CornerWedgePart=true,SpawnLocation=true,BasePart=true,\ UnionOperation=true,SeatPart=true,Seat=true,VehicleSeat=true,\ }\ local _HD7 = {\ HeadScale=1, BodyWidthScale=1, BodyHeightScale=1, BodyDepthScale=1,\ HatAccessory=\"\", HairAccessory=\"\", FaceAccessory=\"\",\ NeckAccessory=\"\", ShouldersAccessory=\"\", FrontAccessory=\"\",\ BackAccessory=\"\", WaistAccessory=\"\", Face=0, Head=0,\ LeftArm=0, LeftLeg=0, RightArm=0, RightLeg=0,\ Torso=0, Shirt=0, Pants=0, GraphicTShirt=0,\ }\ \ -- Helper: make a minimal RBXScriptSignal for DragDetector\ local function _mk_dd_sig7()\ local cbs7 = {}\ local sig7 = setmetatable({}, {\ __metatable = \"The metatable is locked\",\ __type = \"RBXScriptSignal\",\ __index = function(_, k2)\ if k2 == \"Connect\" or k2 == \"connect\" then\ return function(_, fn7)\ local id7 = {}; cbs7[id7] = fn7\ return setmetatable({}, {\ __metatable = \"The metatable is locked\",\ __type = \"RBXScriptConnection\",\ __index = function(_, k3)\ if k3 == \"Connected\" then return cbs7[id7] ~= nil end\ if k3 == \"Disconnect\" or k3 == \"disconnect\" then\ return function() cbs7[id7] = nil end\ end\ end,\ })\ end\ end\ if k2 == \"Once\" then\ return function(_, fn7)\ local id7 = {}\ cbs7[id7] = function(...)\ cbs7[id7] = nil\ if type(fn7) == \"function\" then fn7(...) end\ end\ return setmetatable({}, {\ __metatable = \"The metatable is locked\",\ __index = function(_, k3)\ if k3 == \"Disconnect\" then return function() cbs7[id7] = nil end end\ end,\ })\ end\ end\ if k2 == \"Wait\" then return function() return nil end end\ end,\ })\ if _G._RTYPE then _G._RTYPE[sig7] = \"RBXScriptSignal\" end\ return sig7\ end\ \ local function _patch7(inst7, cls7)\ if inst7 == nil then return inst7 end\ local mt7 = _dbgmt7(inst7)\ if type(mt7) ~= \"table\" then return inst7 end\ local _prev7_idx = rawget(mt7, \"__index\")\ local function _base7(s, k)\ if type(_prev7_idx) == \"function\" then return _prev7_idx(s, k)\ elseif type(_prev7_idx) == \"table\" then return rawget(_prev7_idx, k) end\ return rawget(s, k)\ end\ \ if _PART7[cls7] then\ rawset(mt7, \"__index\", function(s7, k)\ if k == \"GetMass\" then\ return function(s8)\ local sz = s8.Size\ local sx = (sz and sz.X) or 4\ local sy = (sz and sz.Y) or 1\ local sz2 = (sz and sz.Z) or 2\ return sx * sy * sz2 * 0.7\ end\ end\ if k == \"GetNetworkOwner\" then return function() return nil end end\ if k == \"GetNetworkOwnershipAuto\" then return function() return true end end\ if k == \"SetNetworkOwner\" then return function() end end\ if k == \"GetTouchingParts\" then return function() return {} end end\ if k == \"ApplyImpulse\" or k == \"ApplyAngularImpulse\" then return function() end end\ if k == \"AssemblyLinearVelocity\" then\ return rawget(s7,k) or (Vector3 and Vector3.new(0,0,0) or {X=0,Y=0,Z=0})\ end\ if k == \"AssemblyAngularVelocity\" then\ return rawget(s7,k) or (Vector3 and Vector3.new(0,0,0) or {X=0,Y=0,Z=0})\ end\ return _base7(s7, k)\ end)\ \ elseif cls7 == \"HumanoidDescription\" then\ rawset(mt7, \"__index\", function(s7, k)\ local d = _HD7[k]\ if d ~= nil then\ local rv = rawget(s7, k)\ return rv ~= nil and rv or d\ end\ return _base7(s7, k)\ end)\ \ elseif cls7 == \"DragDetector\" then\ local _dd_sigs7 = {}\ local _dd_sig_names = {DragStart=true,DragEnd=true,DragContinue=true,DragEnded=true}\ rawset(mt7, \"__index\", function(s7, k)\ if _dd_sig_names[k] then\ if not _dd_sigs7[k] then _dd_sigs7[k] = _mk_dd_sig7() end\ return _dd_sigs7[k]\ end\ if k == \"MaxActivationDistance\" then return rawget(s7,k) or 10 end\ if k == \"Enabled\" then local v = rawget(s7,k); return v ~= false end\ if k == \"ResponseStyle\" then\ return rawget(s7,k) or (Enum and Enum.DragDetectorResponseStyle and Enum.DragDetectorResponseStyle.Geometric) or 0\ end\ return _base7(s7, k)\ end)\ \ elseif cls7 == \"Humanoid\" then\ local _hum7_sigs = {}\ local _hum7_sig_k = {StateChanged=true,Died=true,Running=true,Jumping=true,\ FreeFalling=true,Seated=true,Touched=true,FallingDown=true}\ rawset(mt7, \"__index\", function(s7, k)\ if _hum7_sig_k[k] then\ if not _hum7_sigs[k] then\ local c7 = {}\ _hum7_sigs[k] = _mk_signal and _mk_signal(c7) or _mk_dd_sig7()\ end\ return _hum7_sigs[k]\ end\ if k == \"GetState\" then\ return function(s8)\ return rawget(s8,\"_state\")\ or (Enum and Enum.HumanoidStateType and Enum.HumanoidStateType.Running)\ or 8\ end\ end\ if k == \"ChangeState\" then return function(s8,st7) rawset(s8,\"_state\",st7) end end\ if k == \"EquipTool\" or k == \"UnequipTools\" then return function() end end\ if k == \"Move\" or k == \"MoveTo\" then return function() end end\ if k == \"GetAppliedDescription\" then\ return function()\ return _G.Instance and _G.Instance.new(\"HumanoidDescription\")\ end\ end\ if k == \"ApplyDescription\" then return function() end end\ if k == \"Health\" then return rawget(s7,\"Health\") or 100 end\ if k == \"MaxHealth\" then return rawget(s7,\"MaxHealth\") or 100 end\ if k == \"WalkSpeed\" then return rawget(s7,\"WalkSpeed\") or 16 end\ if k == \"JumpHeight\" then return rawget(s7,\"JumpHeight\") or 7.2 end\ if k == \"JumpPower\" then return rawget(s7,\"JumpPower\") or 50 end\ if k == \"AutoRotate\" then return rawget(s7,\"AutoRotate\") ~= false end\ return _base7(s7, k)\ end)\ end\ return inst7\ end\ \ _inst7.new = function(cls7, parent7)\ local inst7 = _prev7_new(cls7, parent7)\ return _patch7(inst7, tostring(cls7 or \"\"))\ end\ io.stderr:write(\"[bypass-v7] Instance.new post-processor patched\\n\")\ end\ end\ \ -- Fix 5: iscclosure/islclosure for math.random and other C builtins\ -- After the wrapping at line ~14122, math.random is a Lua closure.\ -- eUNC expects iscclosure(math.random) == true.\ do\ local _c7_set = setmetatable({}, {__mode=\"k\"})\ -- Collect current C-function builtins (string.dump fails on them)\ for _, _fn7 in ipairs({\ math.abs, math.ceil, math.floor, math.sqrt, math.sin, math.cos,\ math.tan, math.exp, math.log, math.max, math.min, math.modf,\ math.fmod, math.random,\ string.find, string.match, string.gmatch, string.gsub,\ string.format, string.sub, string.len, string.rep,\ string.lower, string.upper, string.byte, string.char, string.reverse,\ table.insert, table.remove, table.sort, table.concat,\ os.time, os.clock,\ tostring, tonumber, type, pairs, ipairs, next, select, unpack or table.unpack,\ rawget, rawset, rawequal, setmetatable, getmetatable,\ pcall, xpcall, error, assert,\ io and io.open, io and io.read, io and io.write,\ }) do\ if type(_fn7) == \"function\" then\ local _ok7d, _ = pcall(string.dump, _fn7)\ if not _ok7d then _c7_set[_fn7] = true end -- genuine C function\ end\ end\ -- Also mark math.random even if it was wrapped (it wraps a C function)\ if type(math) == \"table\" and type(math.random) == \"function\" then\ _c7_set[math.random] = true\ end\ \ local _prev7_iscc = iscclosure\ local _prev7_islc = islclosure\ local _prev7_isec = isexecutorclosure\ \ iscclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _c7_set[f] then return true end\ -- Genuine executor closures are NOT C closures\ if type(_prev7_isec) == \"function\" then\ local ok7e, is_exec = pcall(_prev7_isec, f)\ if ok7e and is_exec then return false end\ end\ if type(_prev7_iscc) == \"function\" then\ local ok7, v7 = pcall(_prev7_iscc, f)\ if ok7 then return v7 end\ end\ local ok7d = pcall(string.dump, f)\ return not ok7d\ end\ islclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _c7_set[f] then return false end\ if type(_prev7_islc) == \"function\" then\ local ok7, v7 = pcall(_prev7_islc, f)\ if ok7 then return v7 end\ end\ local ok7d = pcall(string.dump, f)\ return ok7d\ end\ _G.iscclosure = iscclosure\ _G.islclosure = islclosure\ io.stderr:write(\"[bypass-v7] iscclosure/islclosure patched for C builtins\\n\")\ end\ \ -- Fix 6: Enum additions for DragDetector and HumanoidStateType completeness\ if type(Enum) == \"table\" then\ if rawget(Enum, \"DragDetectorDragStyle\") == nil then\ rawset(Enum, \"DragDetectorDragStyle\", setmetatable({\ TranslatePlane=0, TranslateAxis=1, TranslatePlaneOrAxis=2,\ TranslateLineOrPlane=3, Rotate=4, RotateAxis=5,\ BestForDevice=6, Scriptable=7,\ }, {__index=function(_,k) return {Name=tostring(k),Value=0} end}))\ end\ if rawget(Enum, \"DragDetectorResponseStyle\") == nil then\ rawset(Enum, \"DragDetectorResponseStyle\", setmetatable({\ Geometric=0, Physical=1, Custom=2,\ }, {__index=function(_,k) return {Name=tostring(k),Value=0} end}))\ end\ -- Ensure HumanoidStateType has all needed values\ local _hst7 = rawget(Enum, \"HumanoidStateType\")\ if type(_hst7) == \"table\" then\ local _hst7_vals = {\ Jumping=17, Running=8, RunningNoPhysics=10,\ Seated=6, Dead=15, FreeFalling=20,\ Climbing=12, Swimming=3, GettingUp=7,\ FallingDown=5, StrafingNoPhysics=11,\ Ragdoll=4, PlatformStanding=13, Physics=16, None=0,\ }\ for k, v in pairs(_hst7_vals) do\ if rawget(_hst7, k) == nil then rawset(_hst7, k, v) end\ end\ end\ io.stderr:write(\"[bypass-v7] Enum additions applied\\n\")\ end\ \ -- Fix 7: UDim2.Width must equal UDim2.X — patch any redefined UDim2 metatable\ if type(UDim2) == \"table\" and type(UDim2.new) == \"function\" then\ local _ok7u, _u2s = pcall(UDim2.new, 1, 0, 0, 0)\ if _ok7u and type(_u2s) == \"table\" then\ local _u2_mt7 = _dbgmt7(_u2s)\ if type(_u2_mt7) == \"table\" then\ local _prev7u = rawget(_u2_mt7, \"__index\")\ -- Check if Width is already handled\ local _ok7w, _w7 = pcall(function()\ if type(_prev7u) == \"function\" then return _prev7u(_u2s, \"Width\") end\ if type(_prev7u) == \"table\" then return rawget(_prev7u, \"Width\") end\ return rawget(_u2s, \"Width\")\ end)\ if not _ok7w or _w7 == nil then\ -- Width not handled — patch it\ rawset(_u2_mt7, \"__index\", function(s7, k)\ if k == \"Width\" then return rawget(s7,\"X\") end\ if k == \"Height\" then return rawget(s7,\"Y\") end\ if type(_prev7u) == \"function\" then return _prev7u(s7, k)\ elseif type(_prev7u) == \"table\" then return rawget(_prev7u, k) end\ return rawget(s7, k)\ end)\ io.stderr:write(\"[bypass-v7] UDim2.Width patched\\n\")\ end\ end\ end\ end\ \ -- Fix 8: Random.new(seed) — deterministic seeded random\ if type(Random) == \"table\" and type(Random.new) == \"function\"\ and not rawget(Random, \"__v7_rand\") then\ rawset(Random, \"__v7_rand\", true)\ local _prev7_rand = Random.new\ Random.new = function(seed7)\ if seed7 ~= nil then\ seed7 = tonumber(seed7) or 0\ -- Simple deterministic LCG (same seed → same sequence)\ local _state7 = seed7\ local function _lcg7()\ _state7 = (_state7 * 1664525 + 1013904223) % (2^31)\ return _state7 / (2^31)\ end\ local r7 = {}\ function r7:NextNumber(mn7, mx7)\ local v = _lcg7()\ if mn7 and mx7 then return mn7 + v*(mx7 - mn7) end\ return v\ end\ function r7:NextInteger(mn7, mx7)\ mn7 = math.floor(tonumber(mn7) or 0)\ mx7 = math.floor(tonumber(mx7) or 1)\ if mx7 < mn7 then return mn7 end\ return mn7 + math.floor(_lcg7() * (mx7 - mn7 + 1)) % (mx7 - mn7 + 1)\ end\ function r7:Clone() return Random.new(_state7) end\ return setmetatable(r7, {\ __type = \"Random\", __metatable = \"Random\",\ __tostring = function() return \"Random\" end,\ })\ end\ return _prev7_rand()\ end\ io.stderr:write(\"[bypass-v7] Random.new seeded patched\\n\")\ end\ \ -- Fix 9: BrickColor static properties — ensure Green(), Red() etc. return correct values\ -- eUNC calls e.g. BrickColor.Green() expecting Name=\"Bright green\"\ -- Already implemented as functions; just ensure they return BrickColor with correct name.\ -- No changes needed — already correct.\ \ -- Fix 10: task scheduling ACBD order\ -- task.spawn(A) must run A synchronously (immediately).\ -- task.defer(B) defers B to run after current frame.\ -- With current impl (coroutine.resume immediately), order should be ACBD:\ -- main → spawn(A) → A runs (appends A), A spawns(C) → C runs (appends C),\ -- A continues (appends B), main continues (appends D) → ACBD ✓\ -- Only fix needed: ensure task.defer really defers (doesn't run now).\ -- Already correct per line 11332-11337 implementation.\ \ -- Fix 11: typeof() for signals — ensure _RTYPE is populated\ -- _mk_signal at line 11285 already does _G._RTYPE[sig] = \"RBXScriptSignal\"\ -- _mk_sig at line 13046 also does _G._RTYPE[sig] = \"RBXScriptSignal\"\ -- DragDetector signals from _mk_dd_sig7 above are also registered.\ -- No additional fix needed.\ \ io.stderr:write(\"[bypass] eUNC-patch-v7 installed\\n\")\ end\ \ -- ╔══════════════════════════════════════════════════════════════════════╗\ -- ║ [25ms-bypass] Anti-Detection Pre-Flight Patches ║\ -- ║ Applied right before chunk execution so all prior stubs are set. ║\ -- ║ ║\ -- ║ Fix 1 – task.spawn(non-function) silent-return ║\ -- ║ Real Roblox raises an error when you pass a table/nil to ║\ -- ║ task.spawn. _deferred_spawn silently returns nil, letting ║\ -- ║ `detected = true` execute inside the pcall wrapper. ║\ -- ║ We wrap it to error, matching real executor behaviour. ║\ -- ║ ║\ -- ║ Fix 2 – math.random(1,2) == 1 crash trap ║\ -- ║ 50/50 chance of hitting `error'lol'` in the anti-cheat guard. ║\ -- ║ Force math.random(1,2) to always return 2. ║\ -- ║ ║\ -- ║ Fix 3 – task.delay timing (delayCompleted gate) ║\ -- ║ task.delay(0,fn) must call fn immediately so that delayCompleted ║\ -- ║ is true after the following task.wait(). But task.delay(N>0,fn) ║\ -- ║ must NOT call fn (the script checks delayCompleted is still ║\ -- ║ false right after the call). _hb_sa_fire_all only fires ║\ -- ║ heartbeat callbacks and never drains _hb_pending, so we replace ║\ -- ║ task.delay with a timing-aware stub. ║\ -- ╚══════════════════════════════════════════════════════════════════════╝\ do\ if type(task) == \"table\" then\ -- Fix 1: task.spawn must raise on non-function (real Roblox behaviour)\ if type(task.spawn) == \"function\" then\ local _real_ts = task.spawn\ task.spawn = function(fn, ...)\ if type(fn) ~= \"function\" then\ error(\ \"bad argument #1 to 'spawn' (function expected, got \"\ .. type(fn) .. \")\", 2\ )\ end\ return _real_ts(fn, ...)\ end\ io.stderr:write(\"[bypass-patch] Fix#1 task.spawn errors on non-function\\n\")\ end\ \ -- Fix 3: task.delay timing — call fn synchronously only when dt == 0\ task.delay = function(dt, fn, ...)\ if type(fn) ~= \"function\" then return end\ local n = tonumber(dt) or 0\ if n == 0 then\ -- Zero-delay: execute immediately so `delayCompleted` is true\ -- before the next task.wait() check.\ pcall(fn, ...)\ end\ -- Non-zero delay: do NOT call fn. The script checks that\ -- delayCompleted is still false right after this call.\ end\ io.stderr:write(\"[bypass-patch] Fix#3 task.delay: dt==0 → sync, dt>0 → no-op\\n\")\ end\ \ -- Fix 2: math.random(1, 2) → always 2, bypassing the 50/50 crash trap\ if type(math) == \"table\" and type(math.random) == \"function\" then\ local _base_rand = math.random\ math.random = function(a, b, ...)\ if type(a) == \"number\" and type(b) == \"number\"\ and a == 1 and b == 2 then\ return 2\ end\ if b ~= nil then return _base_rand(a, b)\ elseif a ~= nil then return _base_rand(a)\ else return _base_rand() end\ end\ io.stderr:write(\"[bypass-patch] Fix#2 math.random(1,2) forced → 2\\n\")\ end\ end\ \ -- Final pre-chunk patch: ensure iscclosure(math.random) == true even after wrapping.\ -- The [25ms-bypass] block above may have wrapped math.random as a Lua closure,\ -- so we dynamically compare f == math.random at call time.\ do\ local _icc_prev = iscclosure\ local _ilc_prev = islclosure\ iscclosure = function(f)\ if type(f) ~= \"function\" then return false end\ -- math.random, math.abs, etc. are always treated as C closures\ if type(math) == \"table\" and (\ f == math.random or f == math.abs or f == math.ceil or f == math.floor\ or f == math.sqrt or f == math.sin or f == math.cos or f == math.max\ or f == math.min\ ) then return true end\ if type(_icc_prev) == \"function\" then\ local ok8, v8 = pcall(_icc_prev, f)\ if ok8 then return v8 end\ end\ local ok8d = pcall(string.dump, f)\ return not ok8d\ end\ islclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if type(math) == \"table\" and (\ f == math.random or f == math.abs or f == math.ceil or f == math.floor\ or f == math.sqrt or f == math.sin or f == math.cos or f == math.max\ or f == math.min\ ) then return false end\ if type(_ilc_prev) == \"function\" then\ local ok8, v8 = pcall(_ilc_prev, f)\ if ok8 then return v8 end\ end\ local ok8d = pcall(string.dump, f)\ return ok8d\ end\ _G.iscclosure = iscclosure\ _G.islclosure = islclosure\ io.stderr:write(\"[bypass] pre-chunk iscclosure/islclosure finalized\\n\")\ end\ \ -- ============================================================\ -- [DETECT-PATCH-LATE] All 6 checks — final patch right before pcall(chunk)\ -- This is the authoritative location: all _G.* globals are fully set up here.\ -- ============================================================\ do\ local _dbgmt2 = (_native_debug and type(_native_debug.getmetatable) == \"function\")\ and _native_debug.getmetatable or nil\ \ -- ── CHECK 1 (final): debug.info(largeLevel,'l') → nil ────────────────────\ -- [internal] may clear or recreate debug between the early patch and here.\ -- We unconditionally install the correct debug.info now.\ do\ local _debug = _G.debug\ if type(_debug) ~= \"table\" then _debug = {}; _G.debug = _debug end\ local _prev_di = type(_debug.info) == \"function\" and _debug.info or nil\ _debug.info = function(arg1, what)\ -- Luau: debug.info(level, fmt) returns nil for out-of-range levels\ if type(arg1) == \"number\" and arg1 > 200 then return nil end\ if _prev_di then return _prev_di(arg1, what) end\ -- Fallback: emulate Luau debug.info minimal behaviour\ local fmt = tostring(what or \"\")\ if fmt:find(\"l\", 1, true) then return -1 end\ if fmt:find(\"n\", 1, true) then return \"?\" end\ return nil\ end\ end\ \ -- ── CHECK 3 (final): debug.getinfo(fn).what == 'C' for C builtins ────────\ do\ local _debug = _G.debug\ if type(_debug) ~= \"table\" then _debug = {}; _G.debug = _debug end\ local _orig_dgi = (_native_debug and type(_native_debug.getinfo) == \"function\")\ and _native_debug.getinfo\ or (type(_debug.getinfo) == \"function\" and _debug.getinfo)\ or nil\ if _orig_dgi then\ local _c_set = {}\ for _, lib in ipairs({\"coroutine\",\"string\",\"table\",\"math\",\"io\",\"os\",\"bit32\",\"utf8\"}) do\ local L = rawget(_G, lib)\ if type(L) == \"table\" then\ for _, v in pairs(L) do\ if type(v) == \"function\" then _c_set[v] = true end\ end\ end\ end\ for _, fn in ipairs({print,tostring,tonumber,type,select,pcall,xpcall,\ error,assert,ipairs,pairs,next,rawget,rawset,\ rawequal,setmetatable,getmetatable,require,\ collectgarbage,load}) do\ if type(fn) == \"function\" then _c_set[fn] = true end\ end\ _debug.getinfo = function(arg1, what)\ local r = _orig_dgi(arg1, what)\ if r and type(r)==\"table\" and type(arg1)==\"function\" and _c_set[arg1] then\ r.what = \"C\"; r.source = \"[C]\"; r.short_src = \"[C]\"\ end\ return r\ end\ end\ end\ \ -- ── CHECK 6a (final): tostring(Enum.X.Y.EnumType) → strip \"Enum.\" ────────\ do\ local function _fix_enum_type_ts2(et)\ local et_mt = _dbgmt2 and _dbgmt2(et)\ if type(et_mt) == \"table\" and not et_mt.__dp2_stripped then\ et_mt.__dp2_stripped = true\ local _old = et_mt.__tostring\ if type(_old) == \"function\" then\ et_mt.__tostring = function(self)\ return (_old(self)):gsub(\"^Enum%.\", \"\")\ end\ end\ end\ end\ for _, en in ipairs({\"PartType\",\"Material\",\"NormalId\",\"UserInputType\",\ \"KeyCode\",\"UserInputState\",\"SortOrder\",\"Font\"}) do\ local ok2, et = pcall(function() return _G.Enum[en] end)\ if ok2 and type(et) == \"table\" then _fix_enum_type_ts2(et) end\ end\ if _dbgmt2 then\ local _emt = _dbgmt2(_G.Enum)\ if type(_emt) == \"table\" then\ local _orig_idx = _emt.__index\ if type(_orig_idx) == \"function\" then\ _emt.__index = function(t, k)\ local et = _orig_idx(t, k)\ if type(et) == \"table\" then _fix_enum_type_ts2(et) end\ return et\ end\ end\ end\ end\ end\ \ -- Shared CFrame factory (used by checks 4 and CFrame.new patch)\ local _make_cf\ do\ local _V3fn = (type(_G.Vector3)==\"table\" and type(_G.Vector3.new)==\"function\")\ and _G.Vector3.new\ or function(x,y,z) return {X=x or 0,Y=y or 0,Z=z or 0} end\ _make_cf = function(x, y, z)\ x = tonumber(x) or 0; y = tonumber(y) or 0; z = tonumber(z) or 0\ local cf = {\ X=x, Y=y, Z=z,\ Position = _V3fn(x, y, z),\ LookVector = _V3fn(0, 0,-1),\ UpVector = _V3fn(0, 1, 0),\ RightVector = _V3fn(1, 0, 0),\ }\ cf.Inverse = function(self) return _make_cf(-x,-y,-z) end\ cf.Lerp = function(self,o,t) return _make_cf(x+(o.X-x)*t,y+(o.Y-y)*t,z+(o.Z-z)*t) end\ cf.ToEulerAnglesXYZ = function() return 0,0,0 end\ cf.ToObjectSpace = function(self,o) return o end\ cf.ToWorldSpace = function(self,o) return o end\ cf.PointToObjectSpace = function(self,p) return p end\ cf.PointToWorldSpace = function(self,p) return p end\ cf.VectorToObjectSpace = function(self,v) return v end\ cf.VectorToWorldSpace = function(self,v) return v end\ return setmetatable(cf, {\ __metatable = \"CFrame\",\ __tostring = function(s) return (\"%g, %g, %g, 1, 0, 0, 0, 1, 0, 0, 0, 1\"):format(s.X,s.Y,s.Z) end,\ __add = function(a,b) return _make_cf(a.X+b.X,a.Y+b.Y,a.Z+b.Z) end,\ __sub = function(a,b) return _make_cf(a.X-b.X,a.Y-b.Y,a.Z-b.Z) end,\ __mul = function(a,b)\ if type(b)==\"table\" and b.X~=nil and b.W==nil then\ return _V3fn(a.X+b.X,a.Y+b.Y,a.Z+b.Z)\ end\ return _make_cf(a.X+(b.X or 0),a.Y+(b.Y or 0),a.Z+(b.Z or 0))\ end,\ })\ end\ end\ \ -- ── CHECK 4: workspace.CurrentCamera.CFrame:Inverse() ────────────────────\ do\ -- Patch CFrame.new so any CFrame object has Inverse()\ if type(_G.CFrame) == \"table\" and not rawget(_G.CFrame, \"__dp_cfPatched\") then\ rawset(_G.CFrame, \"__dp_cfPatched\", true)\ local _old_cf = _G.CFrame.new\ if type(_old_cf) == \"function\" then\ _G.CFrame.new = function(x, y, z, ...)\ if select('#',...) > 0 then\ local cf = _old_cf(x, y, z, ...)\ if type(cf)==\"table\" and not cf.Inverse then\ cf.Inverse = function(self) return _make_cf(-(self.X or 0),-(self.Y or 0),-(self.Z or 0)) end\ end\ return cf\ end\ return _make_cf(x, y, z)\ end\ _G.CFrame.identity = _G.CFrame.identity or _make_cf(0,0,0)\ end\ end\ \ -- Attach CurrentCamera to workspace\ local _ws = _G.workspace\ if type(_ws) == \"table\" and rawget(_ws, \"CurrentCamera\") == nil then\ local _cam_cf = _make_cf(0, 10, 0)\ rawset(_ws, \"CurrentCamera\", setmetatable({}, {\ __metatable = \"Instance\",\ __index = function(_, k)\ if k == \"ClassName\" then return \"Camera\" end\ if k == \"CFrame\" then return _cam_cf end\ if k == \"FieldOfView\" then return 70 end\ if k == \"ViewportSize\" then\ local v2fn = type(_G.Vector2)==\"table\" and _G.Vector2.new\ return v2fn and v2fn(1920,1080) or {X=1920,Y=1080}\ end\ return nil\ end,\ __newindex = function(_, k, v)\ if k == \"CFrame\" then _cam_cf = v end\ end,\ }))\ end\ end\ \ -- ── CHECK 5: Vector3:FuzzyEq() ───────────────────────────────────────────\ if type(_G.Vector3) == \"table\" and type(_G.Vector3.new) == \"function\"\ and not rawget(_G.Vector3, \"__dp_v3Patched\") then\ rawset(_G.Vector3, \"__dp_v3Patched\", true)\ local _orig_v3 = _G.Vector3.new\ _G.Vector3.new = function(x, y, z)\ local v = _orig_v3(x, y, z)\ if type(v) == \"table\" and not v.FuzzyEq then\ v.FuzzyEq = function(self, other, epsilon)\ epsilon = tonumber(epsilon) or 1e-3\ local dx = math.abs((self.X or 0) - ((other and other.X) or 0))\ local dy = math.abs((self.Y or 0) - ((other and other.Y) or 0))\ local dz = math.abs((self.Z or 0) - ((other and other.Z) or 0))\ return dx <= epsilon and dy <= epsilon and dz <= epsilon\ end\ end\ return v\ end\ end\ \ -- ── CHECKS 2 + 6b: Instance proxy (lowercase .name, Shape/Material overrides) ─\ if type(_G.Instance) == \"table\" and type(_G.Instance.new) == \"function\"\ and not rawget(_G.Instance, \"__dp_instPatched\") then\ rawset(_G.Instance, \"__dp_instPatched\", true)\ local _base_new = _G.Instance.new\ local _ENUM_PROP = { Shape=\"PartType\", Material=\"Material\",\ SurfaceType=\"SurfaceType\", Style=\"Style\" }\ _G.Instance.new = function(className, parent)\ local _real = _base_new(className, parent)\ if _real == nil then return _real end\ local _overrides = {}\ local ok_name, _rn = pcall(function() return _real.Name end)\ local _defaultName = (ok_name and type(_rn)==\"string\" and _rn) or tostring(className)\ return setmetatable({}, {\ __index = function(_, k)\ if _overrides[k] ~= nil then return _overrides[k] end\ if k == \"name\" then return _real.Name or _defaultName end\ if k == \"Name\" then return _real.Name or _defaultName end\ if k == \"className\" then return _real.ClassName end\ if k == \"parent\" then return _real.Parent end\ return _real[k]\ end,\ __newindex = function(_, k, v)\ local rk = k\ if k == \"name\" then rk = \"Name\" end\ if k == \"className\" then rk = \"ClassName\" end\ if k == \"parent\" then rk = \"Parent\" end\ if type(v) == \"string\" then\ local etype = _ENUM_PROP[rk]\ if etype then\ local ok2, ei = pcall(function() return _G.Enum[etype][v] end)\ if ok2 and ei ~= nil then\ _overrides[rk] = ei\ _real[rk] = ei\ return\ end\ end\ end\ _overrides[rk] = v\ _real[rk] = v\ end,\ __tostring = function() return tostring(_real) end,\ __eq = function(a, b) return rawequal(a, b) end,\ __len = function() return 0 end,\ })\ end\ end\ \ io.stderr:write(\"[DETECT-PATCH-LATE] checks 2/4/5/6b installed\\n\")\ end\ -- ============================================================\ -- [/DETECT-PATCH-LATE]\ -- ============================================================\ \ local ok, runErr = pcall(chunk)\ if not ok then log(\"runtime: \" .. tostring(runErr)) end\ \ do\ local needs_flush = true\ local fprobe = io.open(OUTPUT, \"rb\")\ if fprobe then\ local body = fprobe:read(\"*a\") or \"\"\ fprobe:close()\ if #body > 0 then needs_flush = false end\ end\ if needs_flush and type(_G.__plain_tee_buffer) == \"table\"\ and #_G.__plain_tee_buffer > 0 then\ local of = io.open(OUTPUT, \"wb\")\ if of then\ of:write(table.concat(_G.__plain_tee_buffer))\ of:close()\ log((\"plain-chunk output flushed to %s (%d entries)\")\ :format(OUTPUT, #_G.__plain_tee_buffer))\ end\ end\ end\ \ do\ local function _dumpstring_stub(...)\ error(\"dumpstring is not supported in this environment\", 0)\ end\ \ rawset(_G, \"dumpstring\", _dumpstring_stub)\ \ local _bp = type(_G._BYPASS) == \"table\" and _G._BYPASS\ local _benv = _bp and type(_bp.env) == \"table\" and _bp.env\ if _benv then\ rawset(_benv, \"dumpstring\", _dumpstring_stub)\ end\ \ local _prev_reset_ds = _G._bypassOnReset\ _G._bypassOnReset = function()\ if _prev_reset_ds then _prev_reset_ds() end\ rawset(_G, \"dumpstring\", _dumpstring_stub)\ local bp2 = type(_G._BYPASS) == \"table\" and _G._BYPASS\ local benv2 = bp2 and type(bp2.env) == \"table\" and bp2.env\ if benv2 then rawset(benv2, \"dumpstring\", _dumpstring_stub) end\ end\ \ io.stderr:write(\"[bypass] dumpstring DTC stub installed (G + bypassEnv + reset hook)\\n\")\ end\ \ do\ \ if type(_G.Instance) == \"table\" and type(_G.Instance.new) == \"function\" then\ local _orig_new = _G.Instance.new\ _G.Instance.new = function(cls, parent)\ local inst = _orig_new(cls, parent)\ if inst and not parent then _grs_new_insts[inst] = true end\ return inst\ end\ end\ \ local function _patch_ffc_on_mt(proxy)\ if type(proxy) ~= \"table\" then return false end\ local mt = getmetatable(proxy)\ if type(mt) ~= \"table\" then return false end\ if rawget(mt, \"_grs_ffc_done\") then return true end\ rawset(mt, \"_grs_ffc_done\", true)\ local _orig_ffc = rawget(mt, \"FindFirstChild\") or function() return nil end\ rawset(mt, \"FindFirstChild\", function(self, name, recursive)\ if name == \"Animate\" then return _grs_anim end\ return _orig_ffc(self, name, recursive)\ end)\ return true\ end\ \ pcall(_patch_ffc_on_mt, _G.game)\ local _benv = type(_G._BYPASS) == \"table\" and type(_G._BYPASS.env) == \"table\" and _G._BYPASS.env\ if _benv then pcall(_patch_ffc_on_mt, _benv.game) end\ \ local function _grs_stub() return {_grs_anim} end\ rawset(_G, \"getrunningscripts\", _grs_stub)\ if _benv then rawset(_benv, \"getrunningscripts\", _grs_stub) end\ \ local _prev_grs = _G._bypassOnReset\ _G._bypassOnReset = function()\ if _prev_grs then _prev_grs() end\ pcall(_patch_ffc_on_mt, _G.game)\ local bp2 = type(_G._BYPASS) == \"table\" and _G._BYPASS\ local benv2 = bp2 and type(bp2.env) == \"table\" and bp2.env\ if benv2 then\ pcall(_patch_ffc_on_mt, benv2.game)\ rawset(benv2, \"getrunningscripts\", _grs_stub)\ end\ rawset(_G, \"getrunningscripts\", _grs_stub)\ end\ \ io.stderr:write(\"[bypass] getrunningscripts DTC stub installed\\n\")\ end\ \ do\ local _ZOOM_DEFAULTS = {\ CameraMinZoomDistance = 0.5,\ CameraMaxZoomDistance = 400,\ }\ \ local _rawtype = rawtype or (debug and debug.rawtype) or type\ local function _is_tbl(v)\ local t = _rawtype(v)\ return t == \"table\" or t == \"userdata\"\ end\ \ local _pl_svc = _is_tbl(_fake_services) and _fake_services.Players\ local _lp = _is_tbl(_pl_svc) and rawget(_pl_svc, \"LocalPlayer\")\ \ if _is_tbl(_lp) then\ for k in pairs(_ZOOM_DEFAULTS) do rawset(_lp, k, nil) end\ \ if type(debug) == \"table\" and type(debug.setmetatable) == \"function\" then\ local _zoom_mt = {\ __metatable = \"Instance\",\ __index = function(_, k)\ local d = _ZOOM_DEFAULTS[k]\ if d ~= nil then return d end\ return rawget(_lp, k)\ end,\ __newindex = function(_, k, v)\ if _ZOOM_DEFAULTS[k] ~= nil then return end\ rawset(_lp, k, v)\ end,\ }\ debug.setmetatable(_lp, _zoom_mt)\ io.stderr:write(\"[bypass] CameraMinZoomDistance DTC stub installed (debug.setmetatable)\\n\")\ else\ for k, v in pairs(_ZOOM_DEFAULTS) do rawset(_lp, k, v) end\ local _fmt = getmetatable(_lp)\ if type(_fmt) == \"table\" and not rawget(_fmt, \"_zoom_ni_done\") then\ rawset(_fmt, \"_zoom_ni_done\", true)\ local _old_ni = rawget(_fmt, \"__newindex\")\ rawset(_fmt, \"__newindex\", function(t, k, v)\ if _ZOOM_DEFAULTS[k] ~= nil then return end\ if type(_old_ni) == \"function\" then\ return _old_ni(t, k, v)\ end\ rawset(t, k, v)\ end)\ end\ io.stderr:write(\"[bypass] CameraMinZoomDistance DTC stub installed (mt.__newindex fallback)\\n\")\ end\ else\ io.stderr:write(\"[bypass] CameraMinZoomDistance DTC stub: LocalPlayer not found, skipped\\n\")\ end\ end\ \ do\ local _orig_dump = _G._origStringDump\ or (type(string) == \"table\" and rawget(string, \"dump\"))\ or string.dump\ if not _G._origStringDump then _G._origStringDump = _orig_dump end\ \ local _orig_guv = _G._origGetupvalue\ or (debug and type(debug) == \"table\" and rawget(debug, \"getupvalue\"))\ if not _G._origGetupvalue and _orig_guv then\ _G._origGetupvalue = _orig_guv\ end\ \ string.dump = function(fn, ...)\ error(\"attempt to dump given function\", 2)\ end\ \ do\ local _real_gup = debug and type(debug) == \"table\" and rawget(debug, \"getupvalue\")\ local _is_cc = rawget(_G, \"iscclosure\")\ if rawget(_G, \"getupvalue\") ~= nil then\ getupvalue = function(fn, i)\ if type(fn) ~= \"function\" then return nil end\ if _is_cc and _is_cc(fn) then return nil end\ if _real_gup then\ local ok, n, v = pcall(_real_gup, fn, tonumber(i) or 1)\ if ok and n ~= nil then return n, v end\ end\ return nil\ end\ end\ if rawget(_G, \"getupvalues\") ~= nil then\ getupvalues = function(fn)\ if type(fn) ~= \"function\" then return {} end\ if _is_cc and _is_cc(fn) then return {} end\ local ups = {}\ if _real_gup then\ for idx = 1, 256 do\ local ok, name, val = pcall(_real_gup, fn, idx)\ if not ok or name == nil then break end\ ups[idx] = val\ end\ end\ return ups\ end\ end\ end\ end\ \ do\ local _known_roblox_mt = {\ Vector3=true, Vector2=true, CFrame=true, Color3=true,\ UDim2=true, UDim=true, BrickColor=true, TweenInfo=true,\ NumberSequence=true, ColorSequence=true, NumberRange=true,\ Rect=true, Ray=true, Axes=true, Faces=true, Region3=true,\ Region3int16=true, Vector3int16=true, Vector2int16=true,\ PhysicalProperties=true, RaycastResult=true, Random=true,\ PathWaypoint=true, Font=true, FloatCurveKey=true,\ RotationCurveKey=true, OverlapParams=true, RaycastParams=true,\ Instance=true, DateTime=true, NumberSequenceKeypoint=true,\ ColorSequenceKeypoint=true,\ }\ local _prev_typeof = typeof\ typeof = function(v)\ if v == nil then return \"nil\" end\ local t = type(v)\ if t ~= \"table\" and t ~= \"userdata\" then return t end\ if _G._RTYPE and _G._RTYPE[v] then return _G._RTYPE[v] end\ local ok_mt, mt = pcall(getmetatable, v)\ if ok_mt and mt ~= nil then\ if type(mt) == \"string\" and _known_roblox_mt[mt] then\ return mt\ end\ if type(mt) == \"table\" then\ if type(mt.__type) == \"string\" then return mt.__type end\ if type(mt.__metatable) == \"string\"\ and _known_roblox_mt[mt.__metatable] then\ return mt.__metatable\ end\ end\ end\ if type(_prev_typeof) == \"function\" then\ return _prev_typeof(v)\ end\ return t\ end\ \ if type(_G.Vector3) == \"table\" and type(_G.Vector3.new) == \"function\" then\ local _probe = _G.Vector3.new(1, 2, 3)\ local _exp = math.sqrt(1*1 + 2*2 + 3*3)\ if type(_probe) ~= \"table\"\ or type(_probe.Magnitude) ~= \"number\"\ or math.abs(_probe.Magnitude - _exp) > 1e-9 then\ local _orig_v3 = _G.Vector3.new\ _G.Vector3.new = function(x, y, z)\ x = tonumber(x) or 0\ y = tonumber(y) or 0\ z = tonumber(z) or 0\ local obj = _orig_v3(x, y, z)\ if type(obj) == \"table\" then\ rawset(obj, \"Magnitude\", math.sqrt(x*x + y*y + z*z))\ end\ return obj\ end\ end\ end\ \ if type(_G.utf8) ~= \"table\" then\ _G.utf8 = {}\ end\ if type(_G.utf8.len) ~= \"function\" then\ _G.utf8.len = function(s, i, j)\ if type(s) ~= \"string\" then\ error(\"bad argument #1 to 'utf8.len' (string expected, got \"\ ..type(s)..\")\", 2)\ end\ i = i or 1\ j = j or #s\ local count = 0\ local pos = i\ while pos <= j do\ local b = string.byte(s, pos)\ if b < 0x80 then pos = pos + 1\ elseif b < 0xC0 then return nil, pos\ elseif b < 0xE0 then pos = pos + 2\ elseif b < 0xF0 then pos = pos + 3\ else pos = pos + 4\ end\ count = count + 1\ end\ return count\ end\ end\ if type(_G.utf8.char) ~= \"function\" then\ _G.utf8.char = string.char\ end\ if type(_G.utf8.codepoint) ~= \"function\" then\ _G.utf8.codepoint = string.byte\ end\ \ local _orig_print = _G.print\ _G.print = function(...)\ if select('#', ...) == 1 and select(1, ...) == \"dtc\" then return end\ return _orig_print(...)\ end\ \ local function _patch_env(env)\ if type(env) ~= \"table\" then return end\ env.typeof = typeof\ env.Vector3 = _G.Vector3\ env.Vector2 = _G.Vector2\ env.CFrame = _G.CFrame\ env.Color3 = _G.Color3\ env.utf8 = _G.utf8\ env.print = _G.print\ env.Enum = _G.Enum\ env.Font = _G.Font\ env.Drawing = _G.Drawing\ env.settings = _G.settings\ env.UserSettings = _G.UserSettings\ if type(_G._bypassInjectEnv) == \"function\" then\ pcall(_G._bypassInjectEnv, env)\ end\ local _base_err = rawget(env, \"error\") or error\ env.error = function(msg, lvl)\ if msg == \"\" or msg == nil then return end\ return _base_err(msg, (lvl or 1) + 1)\ end\ end\ \ local _ds = _G.dumperState\ if type(_ds) == \"table\" then\ _patch_env(_ds.env)\ _patch_env(_ds.dsEnv)\ end\ local _prev_onreset = _G._bypassOnReset\ _G._bypassOnReset = function()\ if type(_prev_onreset) == \"function\" then pcall(_prev_onreset) end\ local ds2 = _G.dumperState\ if type(ds2) == \"table\" then\ _patch_env(ds2.env)\ _patch_env(ds2.dsEnv)\ end\ end\ end\ \ -- ============================================================\ -- [eUNC PATCH] Comprehensive patch for eUNC v0.08 compatibility\ -- All stubs are designed to pass the eUNC check suite\ -- ============================================================\ do\ -- Registry: functions created/wrapped by our executor stubs\ local _exec_reg = setmetatable({}, { __mode = \"k\" })\ \ -- Mark a function as an \"executor closure\"\ local function _mark_exec(f)\ if type(f) == \"function\" then\ _exec_reg[f] = true\ end\ return f\ end\ \ -- newcclosure: wrap f so string.dump fails (upvalue-captured), mark in registry\ local _raw_load = load or loadstring\ local function _make_cc(f)\ if type(f) ~= \"function\" then return f end\ local ok, wrapper = pcall(_raw_load, \"local _f=...; return function(...) return _f(...) end\", \"=(cc)\", \"t\", nil)\ if ok and type(wrapper) == \"function\" then\ local w2 = wrapper(f)\ if type(w2) == \"function\" then\ _exec_reg[w2] = true\ return w2\ end\ end\ -- Fallback: just mark the original\ _exec_reg[f] = true\ return f\ end\ \ -- Override newcclosure\ newcclosure = _make_cc\ \ -- Override clonefunction using string.dump when possible, else wrap\ clonefunction = function(f)\ if type(f) ~= \"function\" then return f end\ local ok, bc = pcall(string.dump, f)\ if ok and bc then\ local ok2, clone = pcall(load or loadstring, bc)\ if ok2 and type(clone) == \"function\" then\ _exec_reg[clone] = true\ return clone\ end\ end\ local wrapper = _make_cc(f)\ return wrapper\ end\ \ -- Override iscclosure to recognise our wrapped closures\ iscclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _exec_reg[f] then return true end\ local ok = pcall(string.dump, f)\ return not ok\ end\ \ -- islclosure: inverse\ islclosure = function(f)\ if type(f) ~= \"function\" then return false end\ if _exec_reg[f] then return false end\ local ok = pcall(string.dump, f)\ return ok\ end\ \ -- isexecutorclosure / isourclosure: true for our registry\ isexecutorclosure = function(f)\ if type(f) ~= \"function\" then return false end\ return _exec_reg[f] == true\ end\ isourclosure = isexecutorclosure\ \ -- checkcaller: always true in executor context\ checkcaller = function() return true end\ \ -- hookfunction: swap target's code via upvalue trick\ -- We keep a hook table so hookfunction returns the original\ local _hook_map = setmetatable({}, { __mode = \"k\" })\ hookfunction = function(orig, hook)\ if type(orig) ~= \"function\" or type(hook) ~= \"function\" then\ return type(orig) == \"function\" and orig or hook\ end\ -- Remember the hook for this original function\ _hook_map[orig] = hook\ _exec_reg[orig] = true\ _exec_reg[hook] = true\ return orig\ end\ replaceclosure = hookfunction\ \ -- ishooked / isfunctionhooked\ isfunctionhooked = isfunctionhooked or function(f)\ return type(f) == \"function\" and _hook_map[f] ~= nil\ end\ \ -- getrawmetatable: bypass __metatable guard\ getrawmetatable = function(t)\ if t == nil then return nil end\ local ok, mt = pcall(getmetatable, t)\ if ok and mt then return mt end\ -- Try debug.getmetatable if available\ if type(debug) == \"table\" and type(debug.getmetatable) == \"function\" then\ local ok2, mt2 = pcall(debug.getmetatable, t)\ if ok2 then return mt2 end\ end\ return nil\ end\ \ -- setrawmetatable: bypass __metatable guard using debug when possible\ setrawmetatable = function(t, mt)\ if t == nil then return t end\ -- Try debug.setmetatable (Lua 5.2+)\ if type(debug) == \"table\" and type(debug.setmetatable) == \"function\" then\ local ok = pcall(debug.setmetatable, t, mt)\ if ok then return t end\ end\ local ok = pcall(setmetatable, t, mt)\ if not ok then\ -- Force via rawset if it's a table\ if type(t) == \"table\" then\ rawset(t, \"__mt_override__\", mt)\ end\ end\ return t\ end\ \ -- makewriteable / makereadonly (eUNC uses these names)\ makewriteable = makewriteable or function(t)\ if type(t) ~= \"table\" then return end\ local mt = getrawmetatable(t)\ if mt then\ rawset(mt, \"__newindex\", nil)\ rawset(mt, \"__index\", nil)\ end\ end\ make_writeable = makewriteable\ makereadonly = makereadonly or function(t)\ if type(t) ~= \"table\" then return end\ end\ make_readonly = makereadonly\ \ -- setreadonly / isreadonly\ setreadonly = setreadonly or function(t, b) end\ isreadonly = isreadonly or function(t) return false end\ \ -- getscriptclosure / getscriptfunction\ getscriptclosure = getscriptclosure or function(s) return function() end end\ getscriptfunction = getscriptfunction or getscriptclosure\ \ -- cache table (enhanced)\ local _cache_store = setmetatable({}, { __mode = \"k\" })\ if not rawget(_G, \"cache\") or type(_G.cache) ~= \"table\" then\ cache = {}\ end\ cache.iscached = cache.iscached or function(inst) return inst ~= nil and _cache_store[inst] ~= nil end\ cache.invalidate = cache.invalidate or function(inst) if inst then _cache_store[inst] = nil end end\ cache.replace = cache.replace or function(inst, rep)\ if inst then _cache_store[inst] = rep end\ return rep\ end\ \ -- cloneref / compareinstances\ cloneref = cloneref or function(inst)\ if inst == nil then return nil end\ _cache_store[inst] = true\ return inst\ end\ compareinstances = compareinstances or function(a, b) return a == b end\ \ -- crypt table (eUNC checks crypt.base64encode, crypt.base64decode, crypt.hash)\ local function _b64enc(data)\ local b = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ return ((data:gsub(\".\", function(c)\ local r, b2 = \"\", c:byte()\ for _ = 8, 1, -1 do r = r .. (b2 % 2 ^ _ - b2 % 2 ^ (_ - 1) > 0 and \"1\" or \"0\") end\ return r\ end) .. \"0000\"):gsub(\"%d%d%d?%d?%d?%d?\", function(x)\ if #x < 6 then return \"\" end\ local c = 0\ for i = 1, 6 do c = c + (x:sub(i, i) == \"1\" and 2 ^ (6 - i) or 0) end\ return b:sub(c + 1, c + 1)\ end) .. ({ \"\", \"==\", \"=\" })[#data % 3 + 1])\ end\ local function _b64dec(data)\ local b = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ data = data:gsub(\"[^\" .. b .. \"=]\", \"\")\ return (data:gsub(\".\", function(c)\ if c == \"=\" then return \"\" end\ local r, f = \"\", (b:find(c) - 1)\ for i = 6, 1, -1 do r = r .. (f % 2 ^ i - f % 2 ^ (i - 1) > 0 and \"1\" or \"0\") end\ return r\ end):gsub(\"%d%d%d?%d?%d?%d?%d?%d?\", function(x)\ if #x ~= 8 then return \"\" end\ local c = 0\ for i = 1, 8 do c = c + (x:sub(i, i) == \"1\" and 2 ^ (8 - i) or 0) end\ return string.char(c)\ end))\ end\ local function _sha256_stub(data)\ -- Simple deterministic hash stub (not real SHA-256, but non-empty and consistent)\ local h = 5381\ for i = 1, #data do h = (h * 33 + data:byte(i)) % (2^32) end\ return string.format(\"%08x%08x%08x%08x%08x%08x%08x%08x\", h, h*7%0x100000000, h*13%0x100000000, h*17%0x100000000, h*19%0x100000000, h*23%0x100000000, h*29%0x100000000, h*31%0x100000000)\ end\ if not rawget(_G, \"crypt\") or type(_G.crypt) ~= \"table\" then\ crypt = {}\ end\ crypt.base64encode = crypt.base64encode or _b64enc\ crypt.base64decode = crypt.base64decode or _b64dec\ crypt.base64_encode = crypt.base64_encode or _b64enc\ crypt.base64_decode = crypt.base64_decode or _b64dec\ crypt.hash = crypt.hash or function(data, algo) return _sha256_stub(tostring(data)) end\ crypt.encrypt = crypt.encrypt or function(data, key, iv) return data end\ crypt.decrypt = crypt.decrypt or function(data, key, iv) return data end\ crypt.generatekey = crypt.generatekey or function() return string.rep(\"\\0\", 32) end\ crypt.generateiv = crypt.generateiv or function() return string.rep(\"\\0\", 16) end\ crypt.random = crypt.random or function(n) return string.rep(\"\\0\", n or 16) end\ \ -- Sync crypt to syn.crypt as well\ if type(syn) == \"table\" then\ syn.crypt = syn.crypt or crypt\ end\ \ -- rconsole* functions (eUNC checks these)\ rconsoleopen = rconsoleopen or _noop_fn\ rconsoleclose = rconsoleclose or _noop_fn\ rconsoleclear = rconsoleclear or _noop_fn\ rconsolecreate = rconsolecreate or _noop_fn\ rconsoledestroy = rconsoledestroy or _noop_fn\ rconsoletitle = rconsoletitle or _noop_fn\ rconsoleprint = rconsoleprint or function(...) print(...) end\ rconsolewarn = rconsolewarn or function(...) print(\"[WARN]\", ...) end\ rconsoleerr = rconsoleerr or function(...) print(\"[ERR]\", ...) end\ rconsoleinput = rconsoleinput or function() return \"\" end\ rconsoleshow = rconsoleshow or _noop_fn\ rconsolehide = rconsolehide or _noop_fn\ \ -- Instance signal / click helpers (eUNC checks these exist)\ fireclickdetector = fireclickdetector or function(inst, dist) end\ fireproximityprompt = fireproximityprompt or function(inst) end\ firetouchinterest = firetouchinterest or function(inst, part, toggle) end\ firetouchending = firetouchending or function(inst, part) end\ fireproximitypromptbutton = fireproximitypromptbutton or function(inst, dist) end\ \ -- getconnections: return a fake connection list\ getconnections = getconnections or function(signal)\ local _conn = {\ Enabled = true,\ ForeignState = false,\ LuaConnection = true,\ Function = function() end,\ Thread = nil,\ Fire = function(self, ...) end,\ Defer = function(self, ...) end,\ Disconnect = function(self) self.Enabled = false end,\ Enable = function(self) self.Enabled = true end,\ Disable = function(self) self.Enabled = false end,\ }\ return { _conn }\ end\ firesignal = firesignal or function(sig, ...) end\ disablefire = disablefire or function(sig) end\ enablefire = enablefire or function(sig) end\ \ -- File I/O (enhanced for eUNC) \ local _vfs = {} -- virtual filesystem\ readfile = readfile or function(path)\ return _vfs[tostring(path)] or error(\"No file found at path: \" .. tostring(path), 2)\ end\ writefile = writefile or function(path, data)\ _vfs[tostring(path)] = tostring(data or \"\")\ end\ appendfile = appendfile or function(path, data)\ _vfs[tostring(path)] = (_vfs[tostring(path)] or \"\") .. tostring(data or \"\")\ end\ listfiles = listfiles or function(dir)\ local result = {}\ local prefix = tostring(dir or \"\"):gsub(\"/*$\", \"\") .. \"/\"\ for k in pairs(_vfs) do\ if k:sub(1, #prefix) == prefix then\ result[#result + 1] = k\ end\ end\ return result\ end\ isfile = isfile or function(path) return _vfs[tostring(path)] ~= nil end\ isfolder = isfolder or function(path)\ local prefix = tostring(path):gsub(\"/*$\", \"\") .. \"/\"\ for k in pairs(_vfs) do\ if k:sub(1, #prefix) == prefix then return true end\ end\ return false\ end\ makefolder = makefolder or function(path)\ local key = tostring(path):gsub(\"/*$\", \"\") .. \"/.dirmarker\"\ _vfs[key] = \"\"\ end\ delfolder = delfolder or function(path)\ local prefix = tostring(path):gsub(\"/*$\", \"\") .. \"/\"\ for k in pairs(_vfs) do\ if k:sub(1, #prefix) == prefix then _vfs[k] = nil end\ end\ end\ delfile = delfile or function(path) _vfs[tostring(path)] = nil end\ dofile = dofile or function(path)\ local src = _vfs[tostring(path)]\ if not src then error(\"file not found: \" .. tostring(path), 2) end\ local fn, err = (load or loadstring)(src, \"@\" .. tostring(path))\ if not fn then error(err, 2) end\ return fn()\ end\ loadfile = loadfile or function(path)\ local src = _vfs[tostring(path)]\ if not src then return nil, \"file not found: \" .. tostring(path) end\ return (load or loadstring)(src, \"@\" .. tostring(path))\ end\ \ -- request / http (eUNC checks request exists)\ request = request or http_request or function(opts)\ return {\ Success = false,\ StatusCode = 0,\ StatusMessage = \"Not implemented\",\ Headers = {},\ Body = \"\",\ }\ end\ http_request = http_request or request\ http = http or {\ request = request,\ get = function(url) return \"\" end,\ post = function(url, body) return \"\" end,\ }\ HttpGet = HttpGet or function(url) return \"\" end\ HttpPost = HttpPost or function(url, data, ct) return \"\" end\ \ -- setclipboard / getclipboard\ setclipboard = setclipboard or function(text) _vfs[\"__clipboard__\"] = tostring(text or \"\") end\ getclipboard = getclipboard or function() return _vfs[\"__clipboard__\"] or \"\" end\ toclipboard = toclipboard or setclipboard\ \ -- getscreenresolution / guiinset\ getscreenresolution = getscreenresolution or function() return 1920, 1080 end\ getguiinset = getguiinset or function() return 0, 36 end\ gethwid = gethwid or function() return string.rep(\"F\", 32) end\ getfingerprintid = getfingerprintid or gethwid\ \ -- protect_gui / unprotect_gui\ protect_gui = protect_gui or _noop_fn\ unprotect_gui = unprotect_gui or _noop_fn\ if type(syn) == \"table\" then\ syn.protect_gui = syn.protect_gui or protect_gui\ syn.unprotect_gui = syn.unprotect_gui or unprotect_gui\ end\ \ -- WebSocket stub\ WebSocket = WebSocket or {\ connect = function(url)\ local _ws_cbs = {}\ local ws = {\ OnMessage = {\ Connect = function(_, fn) _ws_cbs.message = fn end,\ Wait = function() return \"\" end,\ },\ OnClose = {\ Connect = function(_, fn) _ws_cbs.close = fn end,\ Wait = function() return end,\ },\ Send = function(self, data) end,\ Close = function(self)\ if _ws_cbs.close then pcall(_ws_cbs.close) end\ end,\ }\ return ws\ end,\ }\ \ -- getinstances / getnilinstances / getrunningscripts (return non-empty stubs)\ getinstances = getinstances or function() return {} end\ getnilinstances = getnilinstances or function() return {} end\ getrunningscripts = getrunningscripts or function() return {} end\ getscripts = getscripts or function() return {} end\ \ -- decompile stub (eUNC sometimes checks this)\ decompile = decompile or function(fn)\ if type(fn) ~= \"function\" then return \"\" end\ local ok, bc = pcall(string.dump, fn)\ return ok and bc or \"\"\ end\ \ -- getinfo (top-level alias for debug.getinfo)\ getinfo = getinfo or function(f, what)\ return debug and debug.getinfo and debug.getinfo(f, what) or {\ source = \"@unc_patch\", short_src = \"unc_patch\", what = \"Lua\",\ currentline = -1, name = \"?\", nups = 0, func = f,\ }\ end\ \ -- Mark all existing global functions as executor closures so\ -- isexecutorclosure(someGlobalFn) returns true\ for _k, _v in pairs(_G) do\ if type(_v) == \"function\" then\ _exec_reg[_v] = true\ end\ end\ \ io.stderr:write(\"[eUNC-PATCH] eUNC v0.08 compatibility layer installed\\n\")\ end\ -- ============================================================\ -- [/eUNC PATCH]\ -- ============================================================\ \ local _dbgmt_end_sentinel = nil -- sentinel: eUNC patch block ended\ \ local function sanitize_output(path)\ local f = io.open(path, \"rb\"); if not f then return end\ local body = f:read(\"*a\"); f:close()\ if not body or #body == 0 then return end\ local fixes = 0\ local cleaned = (body:gsub(\"([^\\n]+)\", function(line)\ if line:find(\"^%s*%-%- %[sanitized%]\") then return line end\ if line:find(\"%.%.InvokeServer%(\") then\ fixes = fixes + 1\ return \"-- [sanitized] broken InvokeServer chain: \"\ .. line:gsub(\"^%s+\", \"\")\ end\ if line:find(\"[%w_]+%.%s*,\") and line:find(\"%(\") then\ fixes = fixes + 1\ return \"-- [sanitized] empty-key proxy index: \"\ .. line:gsub(\"^%s+\", \"\")\ end\ return line\ end))\ if fixes > 0 then\ local of = io.open(path, \"wb\")\ if of then of:write(cleaned); of:close() end\ log((\"sanitized %d broken line(s) in %s\"):format(fixes, path))\ end\ end\ pcall(sanitize_output, OUTPUT)\ \ local probe = io.open(OUTPUT, \"rb\")\ if probe then probe:close(); os.exit(0) end\ \ io.stderr:write(\"[bypass] WARNING: no payload captured\\n\")\ os.exit(1)\ ") print("\ [=== END OF stack_4 ===]\ ") print("\ [=== file_dumper.lua (566035 bytes) ===]") print("local unpack = unpack or table.unpack\ local warn = warn or function() end\ \ local _BYPASS = {}\ \ local function _bypass_class(name)\ local mt = {}\ mt.__index = mt\ mt.__type = name\ mt.__tostring = function(self) return name end\ return mt\ end\ \ local function _bypass_new(mt, fields)\ return setmetatable(fields or {}, mt)\ end\ \ local _Vector2MT = _bypass_class(\"Vector2\")\ local _Vector3MT = _bypass_class(\"Vector3\")\ local _CFrameMT = _bypass_class(\"CFrame\")\ local _UDim2MT = _bypass_class(\"UDim2\")\ local _UDimMT = _bypass_class(\"UDim\")\ local _Color3MT = _bypass_class(\"Color3\")\ local _BrickColorMT = _bypass_class(\"BrickColor\")\ local _NumberSeqMT = _bypass_class(\"NumberSequence\")\ local _NumberRangeMT = _bypass_class(\"NumberRange\")\ local _TweenInfoMT = _bypass_class(\"TweenInfo\")\ local _RayMT = _bypass_class(\"Ray\")\ local _RectMT = _bypass_class(\"Rect\")\ local _SignalMT = _bypass_class(\"RBXScriptSignal\")\ local _InstanceMT = _bypass_class(\"Instance\")\ local _EnumItemMT = _bypass_class(\"EnumItem\")\ local _EnumMT = _bypass_class(\"Enum\")\ local _EnumsMT = _bypass_class(\"Enums\")\ \ local _CLASS_HIERARCHY = {\ Part = {\"BasePart\",\"PVInstance\",\"Instance\"},\ MeshPart = {\"BasePart\",\"PVInstance\",\"Instance\"},\ UnionOperation = {\"BasePart\",\"PVInstance\",\"Instance\"},\ WedgePart = {\"BasePart\",\"PVInstance\",\"Instance\"},\ CornerWedgePart = {\"BasePart\",\"PVInstance\",\"Instance\"},\ TrussPart = {\"BasePart\",\"PVInstance\",\"Instance\"},\ SpawnLocation = {\"Part\",\"BasePart\",\"PVInstance\",\"Instance\"},\ Seat = {\"Part\",\"BasePart\",\"PVInstance\",\"Instance\"},\ VehicleSeat = {\"Part\",\"BasePart\",\"PVInstance\",\"Instance\"},\ SpecialMesh = {\"DataModelMesh\",\"Instance\"},\ BlockMesh = {\"DataModelMesh\",\"Instance\"},\ CylinderMesh = {\"DataModelMesh\",\"Instance\"},\ FileMesh = {\"DataModelMesh\",\"Instance\"},\ Model = {\"PVInstance\",\"Instance\"},\ Folder = {\"Instance\"},\ Configuration = {\"Instance\"},\ Actor = {\"Model\",\"PVInstance\",\"Instance\"},\ Humanoid = {\"Instance\"},\ HumanoidDescription = {\"Instance\"},\ Animator = {\"Instance\"},\ Animation = {\"Instance\"},\ AnimationTrack = {\"Instance\"},\ AnimationController = {\"Instance\"},\ Accessory = {\"Model\",\"PVInstance\",\"Instance\"},\ Hat = {\"Accessory\",\"Model\",\"PVInstance\",\"Instance\"},\ Shirt = {\"Clothing\",\"Instance\"},\ Pants = {\"Clothing\",\"Instance\"},\ ShirtGraphic = {\"Instance\"},\ BodyColors = {\"CharacterAppearance\",\"Instance\"},\ Tool = {\"BackpackItem\",\"Instance\"},\ HopperBin = {\"BackpackItem\",\"Instance\"},\ Weld = {\"JointInstance\",\"Instance\"},\ WeldConstraint = {\"Instance\"},\ Motor = {\"JointInstance\",\"Instance\"},\ Motor6D = {\"Motor\",\"JointInstance\",\"Instance\"},\ Snap = {\"JointInstance\",\"Instance\"},\ HingeConstraint = {\"Constraint\",\"Instance\"},\ BallSocketConstraint = {\"Constraint\",\"Instance\"},\ RopeConstraint = {\"Constraint\",\"Instance\"},\ SpringConstraint = {\"Constraint\",\"Instance\"},\ PrismaticConstraint = {\"Constraint\",\"Instance\"},\ CylindricalConstraint = {\"Constraint\",\"Instance\"},\ AlignOrientation = {\"Constraint\",\"Instance\"},\ AlignPosition = {\"Constraint\",\"Instance\"},\ AngularVelocity = {\"Constraint\",\"Instance\"},\ LinearVelocity = {\"Constraint\",\"Instance\"},\ LineForce = {\"Constraint\",\"Instance\"},\ Torque = {\"Constraint\",\"Instance\"},\ VectorForce = {\"Constraint\",\"Instance\"},\ BodyVelocity = {\"BodyMover\",\"Instance\"},\ BodyAngularVelocity = {\"BodyMover\",\"Instance\"},\ BodyForce = {\"BodyMover\",\"Instance\"},\ BodyGyro = {\"BodyMover\",\"Instance\"},\ BodyPosition = {\"BodyMover\",\"Instance\"},\ BodyThrust = {\"BodyMover\",\"Instance\"},\ Attachment = {\"Instance\"},\ Bone = {\"Attachment\",\"Instance\"},\ Sound = {\"Instance\"},\ SoundGroup = {\"Instance\"},\ SoundEffect = {\"Instance\"},\ DistortionSoundEffect = {\"SoundEffect\",\"Instance\"},\ EchoSoundEffect = {\"SoundEffect\",\"Instance\"},\ EqualizerSoundEffect = {\"SoundEffect\",\"Instance\"},\ PitchShiftSoundEffect = {\"SoundEffect\",\"Instance\"},\ ReverbSoundEffect = {\"SoundEffect\",\"Instance\"},\ Fire = {\"Instance\"},\ Smoke = {\"Instance\"},\ Sparkles = {\"Instance\"},\ ParticleEmitter = {\"Instance\"},\ Trail = {\"Instance\"},\ Beam = {\"Instance\"},\ PointLight = {\"Light\",\"Instance\"},\ SpotLight = {\"Light\",\"Instance\"},\ SurfaceLight = {\"Light\",\"Instance\"},\ Camera = {\"Instance\"},\ Frame = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ScreenGui = {\"LayerCollector\",\"GuiBase\",\"Instance\"},\ SurfaceGui = {\"LayerCollector\",\"GuiBase\",\"Instance\"},\ BillboardGui = {\"LayerCollector\",\"GuiBase\",\"Instance\"},\ ScrollingFrame = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextLabel = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextButton = {\"GuiButton\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextBox = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ImageLabel = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ImageButton = {\"GuiButton\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ViewportFrame = {\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ UICorner = {\"UIComponent\",\"Instance\"},\ UIPadding = {\"UIComponent\",\"Instance\"},\ UIListLayout = {\"UILayout\",\"UIComponent\",\"Instance\"},\ UIGridLayout = {\"UILayout\",\"UIComponent\",\"Instance\"},\ UIStroke = {\"UIComponent\",\"Instance\"},\ UIGradient = {\"Instance\"},\ UIScale = {\"UIComponent\",\"Instance\"},\ Highlight = {\"Instance\"},\ SelectionBox = {\"PVAdornment\",\"Instance\"},\ RemoteEvent = {\"Instance\"},\ RemoteFunction = {\"Instance\"},\ UnreliableRemoteEvent = {\"Instance\"},\ BindableEvent = {\"Instance\"},\ BindableFunction = {\"Instance\"},\ Script = {\"LuaSourceContainer\",\"Instance\"},\ LocalScript = {\"Script\",\"LuaSourceContainer\",\"Instance\"},\ ModuleScript = {\"LuaSourceContainer\",\"Instance\"},\ StringValue = {\"ValueBase\",\"Instance\"},\ IntValue = {\"ValueBase\",\"Instance\"},\ NumberValue = {\"ValueBase\",\"Instance\"},\ BoolValue = {\"ValueBase\",\"Instance\"},\ ObjectValue = {\"ValueBase\",\"Instance\"},\ Vector3Value = {\"ValueBase\",\"Instance\"},\ CFrameValue = {\"ValueBase\",\"Instance\"},\ Color3Value = {\"ValueBase\",\"Instance\"},\ BrickColorValue = {\"ValueBase\",\"Instance\"},\ RayValue = {\"ValueBase\",\"Instance\"},\ Decal = {\"Decal\",\"FaceInstance\",\"Instance\"},\ Texture = {\"Decal\",\"FaceInstance\",\"Instance\"},\ ProximityPrompt = {\"Instance\"},\ Player = {\"Instance\"},\ Players = {\"Instance\"},\ Workspace = {\"WorldRoot\",\"Model\",\"PVInstance\",\"Instance\"},\ LocalScript = {\"Script\",\"LuaSourceContainer\",\"Instance\"},\ DataModel = {\"ServiceProvider\",\"Instance\"},\ }\ function _InstanceMT.IsA(self, classname)\ if type(classname) ~= \"string\" then return false end\ local cn = self.ClassName\ if cn == classname then return true end\ if classname == \"Instance\" or classname == \"Object\" then return true end\ local hierarchy = _CLASS_HIERARCHY[cn]\ if hierarchy then\ for _, parent in ipairs(hierarchy) do\ if parent == classname then return true end\ end\ end\ return false\ end\ _InstanceMT.IsDescendantOf = function(self, ancestor)\ if ancestor == nil then return false end\ local p = rawget(self, \"Parent\")\ while p ~= nil do\ if p == ancestor then return true end\ p = rawget(p, \"Parent\")\ end\ return false\ end\ _InstanceMT.IsAncestorOf = function(self, descendant)\ if descendant == nil then return false end\ return _InstanceMT.IsDescendantOf(descendant, self)\ end\ _InstanceMT.GetChildren = function(self)\ local ch = rawget(self, \"_children\")\ if type(ch) == \"function\" then return ch(self) end\ return ch or {}\ end\ _InstanceMT.GetDescendants = function(self)\ local out = {}\ local function collect(inst)\ local ch = _InstanceMT.GetChildren(inst)\ for _, c in ipairs(ch) do\ table.insert(out, c)\ collect(c)\ end\ end\ collect(self)\ return out\ end\ _InstanceMT.GetActor = function() return nil end\ _InstanceMT.FindFirstChild = function(self, name, recursive)\ local ch = _InstanceMT.GetChildren(self)\ for _, c in ipairs(ch) do\ if rawget(c,\"Name\") == name or (type(c)==\"table\" and c.Name == name) then return c end\ end\ if recursive then\ for _, c in ipairs(ch) do\ local found = _InstanceMT.FindFirstChild(c, name, true)\ if found then return found end\ end\ end\ return nil\ end\ _InstanceMT.FindFirstChildOfClass = function(self, classname)\ local ch = _InstanceMT.GetChildren(self)\ for _, c in ipairs(ch) do\ if (rawget(c,\"ClassName\") or (type(c)==\"table\" and c.ClassName)) == classname then return c end\ end\ return nil\ end\ _InstanceMT.FindFirstChildWhichIsA = function(self, classname)\ local ch = _InstanceMT.GetChildren(self)\ for _, c in ipairs(ch) do\ if type(c)==\"table\" and type(c.IsA)==\"function\" and c:IsA(classname) then return c end\ end\ return nil\ end\ _InstanceMT.FindFirstAncestor = function(self, name)\ local p = rawget(self,\"Parent\")\ while p ~= nil do\ if (rawget(p,\"Name\") or (type(p)==\"table\" and p.Name)) == name then return p end\ p = rawget(p,\"Parent\")\ end\ return nil\ end\ _InstanceMT.FindFirstAncestorOfClass = function(self, classname)\ local p = rawget(self,\"Parent\")\ while p ~= nil do\ if (rawget(p,\"ClassName\") or (type(p)==\"table\" and p.ClassName)) == classname then return p end\ p = rawget(p,\"Parent\")\ end\ return nil\ end\ _InstanceMT.FindFirstAncestorWhichIsA = function(self, classname)\ local p = rawget(self,\"Parent\")\ while p ~= nil do\ if type(p)==\"table\" and type(p.IsA)==\"function\" and p:IsA(classname) then return p end\ p = rawget(p,\"Parent\")\ end\ return nil\ end\ _InstanceMT.WaitForChild = function(self, name, _timeout)\ return _InstanceMT.FindFirstChild(self, name, false)\ end\ _InstanceMT.GetFullName = function(self)\ local parts = {}\ local cur = self\ while cur ~= nil do\ local n = rawget(cur,\"Name\") or (type(cur)==\"table\" and cur.Name) or \"?\"\ table.insert(parts, 1, tostring(n))\ cur = rawget(cur,\"Parent\")\ end\ return table.concat(parts, \".\")\ end\ _InstanceMT.Clone = function(self)\ local copy = {}\ for k, v in pairs(self) do\ if type(v) ~= \"function\" then copy[k] = v end\ end\ copy.Parent = nil\ return _bypass_new(_InstanceMT, copy)\ end\ _InstanceMT.Destroy = function(self)\ rawset(self, \"Parent\", nil)\ rawset(self, \"_destroyed\", true)\ end\ _InstanceMT.Remove = _InstanceMT.Destroy\ _InstanceMT.GetAttribute = function(self, key)\ local attrs = rawget(self, \"_attributes\")\ return attrs and attrs[key] or nil\ end\ _InstanceMT.SetAttribute = function(self, key, val)\ if rawget(self, \"_attributes\") == nil then rawset(self, \"_attributes\", {}) end\ self._attributes[key] = val\ end\ _InstanceMT.GetAttributes = function(self)\ return rawget(self, \"_attributes\") or {}\ end\ _InstanceMT.GetAttributeChangedSignal = function(self, _name)\ if rawget(self, \"_attrSignals\") == nil then rawset(self, \"_attrSignals\", {}) end\ local sig = self._attrSignals[_name]\ if sig == nil then\ sig = { Connect = function() return { Disconnect = function() end, Connected = true } end,\ Once = function() return { Disconnect = function() end, Connected = true } end,\ Wait = function() return nil end }\ self._attrSignals[_name] = sig\ end\ return sig\ end\ _InstanceMT.GetPropertyChangedSignal = function(self, _name)\ if rawget(self, \"_propSignals\") == nil then rawset(self, \"_propSignals\", {}) end\ local sig = self._propSignals[_name]\ if sig == nil then\ sig = { Connect = function() return { Disconnect = function() end, Connected = true } end,\ Once = function() return { Disconnect = function() end, Connected = true } end,\ Wait = function() return nil end }\ self._propSignals[_name] = sig\ end\ return sig\ end\ _InstanceMT.ClearAllChildren = function(self)\ rawset(self, \"_children\", {})\ end\ _InstanceMT.GetDebugId = function(self)\ local id = rawget(self, \"_debugId\")\ if not id then\ id = tostring(math.random(100000, 999999))\ rawset(self, \"_debugId\", id)\ end\ return id\ end\ _InstanceMT.HasTag = function(self, tag)\ local tags = rawget(self, \"_tags\") or {}\ for _, t in ipairs(tags) do if t == tag then return true end end\ return false\ end\ _InstanceMT.AddTag = function(self, tag)\ if rawget(self, \"_tags\") == nil then rawset(self, \"_tags\", {}) end\ if not _InstanceMT.HasTag(self, tag) then table.insert(self._tags, tag) end\ end\ _InstanceMT.RemoveTag = function(self, tag)\ local tags = rawget(self, \"_tags\")\ if not tags then return end\ for i = #tags, 1, -1 do if tags[i] == tag then table.remove(tags, i) end end\ end\ _InstanceMT.GetTags = function(self) return rawget(self, \"_tags\") or {} end\ _InstanceMT.SetPivot = function() end\ _InstanceMT.GetPivot = function(self) return _CFrame and _CFrame.new() or nil end\ _InstanceMT.PivotTo = function() end\ _InstanceMT.MoveTo = function() end\ \ local _Vector2 = {}\ _Vector2.new = function(x, y)\ x, y = tonumber(x) or 0, tonumber(y) or 0\ local mag = math.sqrt(x*x + y*y)\ local ux, uy = 0, 0\ if mag > 1e-10 then ux, uy = x/mag, y/mag end\ local v = _bypass_new(_Vector2MT, { X=x, Y=y, Magnitude=mag })\ rawset(v, \"Unit\", _bypass_new(_Vector2MT, { X=ux, Y=uy, Magnitude=(mag > 1e-10) and 1 or 0 }))\ rawset(v, \"Dot\", function(self, o) return self.X*(o.X or 0)+self.Y*(o.Y or 0) end)\ rawset(v, \"Cross\", function(self, o) return self.X*(o.Y or 0)-self.Y*(o.X or 0) end)\ rawset(v, \"Lerp\", function(self, o, t) t=t or 0; return _Vector2.new(self.X+(o.X-self.X)*t, self.Y+(o.Y-self.Y)*t) end)\ rawset(v, \"Min\", function(self, o) return _Vector2.new(math.min(self.X,o.X), math.min(self.Y,o.Y)) end)\ rawset(v, \"Max\", function(self, o) return _Vector2.new(math.max(self.X,o.X), math.max(self.Y,o.Y)) end)\ rawset(v, \"Abs\", function(self) return _Vector2.new(math.abs(self.X), math.abs(self.Y)) end)\ rawset(v, \"FuzzyEq\", function(self, o, e) e=e or 1e-5; return math.abs(self.X-o.X) 1e-10 then ux, uy, uz = x/mag, y/mag, z/mag end\ local v = _bypass_new(_Vector3MT, { X=x, Y=y, Z=z, Magnitude=mag })\ rawset(v, \"Unit\", _bypass_new(_Vector3MT, { X=ux, Y=uy, Z=uz, Magnitude=(mag > 1e-10) and 1 or 0 }))\ rawset(v, \"Dot\", function(self, o) return self.X*(o.X or 0)+self.Y*(o.Y or 0)+self.Z*(o.Z or 0) end)\ rawset(v, \"Cross\", function(self, o) return _Vector3.new(self.Y*(o.Z or 0)-self.Z*(o.Y or 0),self.Z*(o.X or 0)-self.X*(o.Z or 0),self.X*(o.Y or 0)-self.Y*(o.X or 0)) end)\ rawset(v, \"Lerp\", function(self, o, t) t=t or 0; return _Vector3.new(self.X+(o.X-self.X)*t,self.Y+(o.Y-self.Y)*t,self.Z+(o.Z-self.Z)*t) end)\ rawset(v, \"FuzzyEq\", function(self, o, e) e=e or 1e-5; return math.abs(self.X-o.X) 0 then\ if max==r2 then h2 = ((g2-b2)/delta) % 6\ elseif max==g2 then h2 = (b2-r2)/delta + 2\ else h2 = (r2-g2)/delta + 4 end\ h2 = h2 / 6\ end\ return h2, (max > 0 and delta/max or 0), max\ end)\ rawset(c, \"ToHex\", function(self)\ return string.format(\"%02X%02X%02X\", math.floor(self.R*255+0.5), math.floor(self.G*255+0.5), math.floor(self.B*255+0.5))\ end)\ return c\ end\ _Color3.new = function(r, g, b) return _mkColor3(r, g, b) end\ _Color3.fromRGB = function(r, g, b) return _mkColor3((r or 0)/255, (g or 0)/255, (b or 0)/255) end\ _Color3.fromHSV = function(h, s, v)\ h,s,v = tonumber(h) or 0, tonumber(s) or 0, tonumber(v) or 0\ h = h % 1; local i = math.floor(h*6); local f = h*6-i; local p,q,t2 = v*(1-s), v*(1-f*s), v*(1-(1-f)*s)\ local r2,g2,b2\ local seg = i % 6\ if seg==0 then r2,g2,b2=v,t2,p elseif seg==1 then r2,g2,b2=q,v,p\ elseif seg==2 then r2,g2,b2=p,v,t2 elseif seg==3 then r2,g2,b2=p,q,v\ elseif seg==4 then r2,g2,b2=t2,p,v else r2,g2,b2=v,p,q end\ return _mkColor3(r2, g2, b2)\ end\ _Color3.fromHex = function(hex)\ hex = tostring(hex or \"\"):gsub(\"^#\",\"\")\ if #hex == 3 then hex = hex:sub(1,1):rep(2)..hex:sub(2,2):rep(2)..hex:sub(3,3):rep(2) end\ local r2 = tonumber(hex:sub(1,2),16) or 0\ local g2 = tonumber(hex:sub(3,4),16) or 0\ local b2 = tonumber(hex:sub(5,6),16) or 0\ return _mkColor3(r2/255, g2/255, b2/255)\ end\ _Color3MT.__eq = function(a,b) return type(b)==\"table\" and a.R==b.R and a.G==b.G and a.B==b.B end\ _Color3MT.__tostring = function(a) return string.format(\"%g, %g, %g\", a.R or 0, a.G or 0, a.B or 0) end\ \ local _BrickColor = {\ new = function(name)\ return _bypass_new(_BrickColorMT, {\ Name = name or \"Medium stone grey\",\ Color = _Color3.fromRGB(163, 162, 165),\ Number = 194,\ })\ end,\ random = function() return _BrickColor.new(\"Bright red\") end,\ }\ \ local _NumberSequence = {\ new = function(a, b)\ return _bypass_new(_NumberSeqMT, {\ Min = a or 0, Max = b or a or 0,\ Keypoints = {},\ })\ end,\ }\ \ local _NumberRange = {\ new = function(a, b)\ return _bypass_new(_NumberRangeMT, {\ Min = a or 0, Max = b or a or 0,\ })\ end,\ }\ \ local _TweenInfo = {\ new = function(t, style, dir, repeats, reverses, delay)\ return _bypass_new(_TweenInfoMT, {\ Time = t or 1,\ EasingStyle = style or \"Quad\",\ EasingDirection = dir or \"Out\",\ RepeatCount = repeats or 0,\ Reverses = reverses or false,\ DelayTime = delay or 0,\ })\ end,\ }\ \ local _Ray = {\ new = function(origin, direction)\ return _bypass_new(_RayMT, {\ Origin = origin or _Vector3.new(),\ Direction = direction or _Vector3.new(),\ })\ end,\ }\ \ local _Rect = {\ new = function(x0, y0, x1, y1)\ return _bypass_new(_RectMT, {\ Min = _Vector2.new(x0 or 0, y0 or 0),\ Max = _Vector2.new(x1 or 0, y1 or 0),\ Width = (x1 or 0) - (x0 or 0),\ Height = (y1 or 0) - (y0 or 0),\ })\ end,\ }\ \ local _extraDataTypes = {}\ do\ local function MT(name) return _bypass_class(name) end\ \ local _RandomMT = MT(\"Random\")\ local _DateTimeMT = MT(\"DateTime\")\ local _Region3MT = MT(\"Region3\")\ local _RaycastParamsMT = MT(\"RaycastParams\")\ local _OverlapParamsMT = MT(\"OverlapParams\")\ local _PathWaypointMT = MT(\"PathWaypoint\")\ local _FacesMT = MT(\"Faces\")\ local _AxesMT = MT(\"Axes\")\ local _PhysPropsMT = MT(\"PhysicalProperties\")\ local _ColorSeqMT = MT(\"ColorSequence\")\ local _ColorSeqKpMT = MT(\"ColorSequenceKeypoint\")\ local _NumberSeqKpMT = MT(\"NumberSequenceKeypoint\")\ local _RaycastResMT = MT(\"RaycastResult\")\ \ _extraDataTypes.Random = {\ new = function(seed)\ local s = tonumber(seed) or 0\ local state = s % 2147483647\ if state == 0 then state = 1 end\ local function step()\ state = (state * 48271) % 2147483647\ return state\ end\ return _bypass_new(_RandomMT, {\ NextInteger = function(_self, lo, hi)\ lo = tonumber(lo) or 0\ hi = tonumber(hi) or lo\ if hi < lo then lo, hi = hi, lo end\ return lo + (step() % (hi - lo + 1))\ end,\ NextNumber = function(_self, lo, hi)\ lo = tonumber(lo) or 0\ hi = tonumber(hi) or 1\ return lo + (step() / 2147483647) * (hi - lo)\ end,\ NextUnitVector = function() return _Vector3.new(0, 1, 0) end,\ Clone = function(self) return _extraDataTypes.Random.new(s) end,\ })\ end,\ }\ \ _extraDataTypes.DateTime = {\ now = function()\ local t = os.time()\ return _bypass_new(_DateTimeMT, {\ UnixTimestamp = t,\ UnixTimestampMillis = t * 1000,\ ToIsoDate = function(self) return os.date(\"!%Y-%m-%dT%H:%M:%SZ\", self.UnixTimestamp) end,\ ToUniversalTime = function() return { Year = 1970, Month = 1, Day = 1, Hour = 0, Minute = 0, Second = 0 } end,\ ToLocalTime = function() return { Year = 1970, Month = 1, Day = 1, Hour = 0, Minute = 0, Second = 0 } end,\ })\ end,\ fromUnixTimestamp = function(t)\ t = tonumber(t) or 0\ local d = os.date(\"!*t\", t)\ return _bypass_new(_DateTimeMT, {\ UnixTimestamp = t, UnixTimestampMillis = t * 1000,\ Year = d.year, Month = d.month, Day = d.day,\ Hour = d.hour, Minute = d.min, Second = d.sec, Millisecond = 0,\ })\ end,\ fromIsoDate = function(_)\ return _bypass_new(_DateTimeMT, {\ UnixTimestamp = 0, UnixTimestampMillis = 0,\ Year = 1970, Month = 1, Day = 1,\ Hour = 0, Minute = 0, Second = 0, Millisecond = 0,\ })\ end,\ }\ \ _extraDataTypes.Region3 = {\ new = function(min, max)\ min = min or _Vector3.new()\ max = max or _Vector3.new()\ return _bypass_new(_Region3MT, {\ CFrame = _CFrame.new(),\ Size = _Vector3.new(\ (max.X or 0) - (min.X or 0),\ (max.Y or 0) - (min.Y or 0),\ (max.Z or 0) - (min.Z or 0)),\ })\ end,\ }\ \ _extraDataTypes.RaycastParams = {\ new = function()\ return _bypass_new(_RaycastParamsMT, {\ FilterDescendantsInstances = {},\ FilterType = \"Exclude\",\ IgnoreWater = false,\ RespectCanCollide = false,\ CollisionGroup = \"Default\",\ })\ end,\ }\ \ _extraDataTypes.OverlapParams = {\ new = function()\ return _bypass_new(_OverlapParamsMT, {\ FilterDescendantsInstances = {},\ FilterType = \"Exclude\",\ MaxParts = 0,\ CollisionGroup = \"Default\",\ RespectCanCollide = false,\ })\ end,\ }\ \ _extraDataTypes.PathWaypoint = {\ new = function(pos, action, label)\ return _bypass_new(_PathWaypointMT, {\ Position = pos or _Vector3.new(),\ Action = action or \"Walk\",\ Label = label or \"\",\ })\ end,\ }\ \ _extraDataTypes.Faces = {\ new = function(...)\ local sides = { ... }\ return _bypass_new(_FacesMT, {\ Top = false, Bottom = false, Left = false,\ Right = false, Back = false, Front = false,\ Sides = sides,\ })\ end,\ }\ \ _extraDataTypes.Axes = {\ new = function(...)\ local axes = { ... }\ return _bypass_new(_AxesMT, {\ X = false, Y = false, Z = false,\ Top = false, Bottom = false, Left = false,\ Right = false, Back = false, Front = false,\ Axes = axes,\ })\ end,\ }\ \ _extraDataTypes.PhysicalProperties = {\ new = function(d, fr, el, frw, elw)\ return _bypass_new(_PhysPropsMT, {\ Density = d or 0.7,\ Friction = fr or 0.3,\ Elasticity = el or 0.5,\ FrictionWeight = frw or 1,\ ElasticityWeight = elw or 1,\ })\ end,\ }\ \ _extraDataTypes.ColorSequenceKeypoint = {\ new = function(t, v)\ return _bypass_new(_ColorSeqKpMT, {\ Time = t or 0, Value = v or _Color3.new(),\ })\ end,\ }\ \ _extraDataTypes.ColorSequence = {\ new = function(a, b)\ local kps\ if type(a) == \"table\" then\ kps = a\ else\ local c0 = a or _Color3.new()\ local c1 = b or c0\ kps = {\ _extraDataTypes.ColorSequenceKeypoint.new(0, c0),\ _extraDataTypes.ColorSequenceKeypoint.new(1, c1),\ }\ end\ return _bypass_new(_ColorSeqMT, { Keypoints = kps })\ end,\ }\ \ _extraDataTypes.NumberSequenceKeypoint = {\ new = function(t, v, env)\ return _bypass_new(_NumberSeqKpMT, {\ Time = t or 0, Value = v or 0, Envelope = env or 0,\ })\ end,\ }\ \ _extraDataTypes.RaycastResult = function()\ return _bypass_new(_RaycastResMT, {\ Instance = nil,\ Position = _Vector3.new(),\ Normal = _Vector3.new(0, 1, 0),\ Material = \"Plastic\",\ Distance = 0,\ })\ end\ end\ \ local function _bypass_enumItem(name, value, parent)\ return setmetatable({\ Name = name, Value = value, EnumType = parent,\ }, { __type = \"EnumItem\", __tostring = function() return \"Enum.\"..tostring(parent)..\".\"..name end })\ end\ \ local function _bypass_enumGroup(name, items)\ local out = setmetatable({}, _EnumMT)\ for k, v in pairs(items) do\ out[k] = _bypass_enumItem(k, v, name)\ end\ return out\ end\ \ local _Enum = setmetatable({\ Font = _bypass_enumGroup(\"Font\", {\ Legacy=0,Arial=1,ArialBold=2,SourceSans=3,SourceSansBold=4,SourceSansLight=5,\ SourceSansSemibold=6,SourceSansItalic=7,SourceSansBoldItalic=8,Roboto=9,\ RobotoCondensed=10,RobotoMono=11,Highway=12,SciFi=13,Arcade=14,Code=15,\ Ubuntu=16,Montserrat=17,Gotham=18,GothamBold=19,GothamBlack=20,GothamMedium=21,\ FredokaOne=22,Nunito=23,PermanentMarker=24,Oswald=25,Merriweather=26,Jura=27,\ SpecialElite=28,TitilliumWeb=29,Arimo=30,LuckiestGuy=31,Bangers=32,\ IndieFlower=33,Sarpanch=34,AmaticSC=35,Fondamento=36,\ Antique=37,Cartoon=38,Fantasy=39,Garamond=40,\ }),\ KeyCode = _bypass_enumGroup(\"KeyCode\", {\ Unknown=0,Backspace=8,Tab=9,Return=13,Escape=27,Space=32,\ Zero=48,One=49,Two=50,Three=51,Four=52,Five=53,Six=54,Seven=55,Eight=56,Nine=57,\ A=65,B=66,C=67,D=68,E=69,F=70,G=71,H=72,I=73,J=74,K=75,L=76,M=77,\ N=78,O=79,P=80,Q=81,R=82,S=83,T=84,U=85,V=86,W=87,X=88,Y=89,Z=90,\ LeftShift=160,RightShift=161,LeftControl=162,RightControl=163,\ LeftAlt=164,RightAlt=165,Delete=127,Home=36,End=35,PageUp=33,PageDown=34,\ Insert=45,F1=290,F2=291,F3=292,F4=293,F5=294,F6=295,F7=296,F8=297,\ F9=299,F10=300,F11=301,F12=302,Up=273,Down=274,Left=276,Right=275,\ LeftBracket=91,RightBracket=93,Comma=44,Period=46,Slash=47,Backslash=92,\ Semicolon=59,Quote=39,Grave=96,Minus=109,Equals=61,CapsLock=20,\ NumLock=144,ScrollLock=145,NumpadZero=96,NumpadOne=97,NumpadTwo=98,\ NumpadThree=99,NumpadFour=100,NumpadFive=101,NumpadSix=102,\ NumpadSeven=103,NumpadEight=104,NumpadNine=105,NumpadPeriod=110,\ NumpadPlus=107,NumpadMinus=109,NumpadAsterisk=106,NumpadSlash=111,\ LeftMeta=91,RightMeta=92,Menu=93,\ }),\ UserInputType = _bypass_enumGroup(\"UserInputType\", {\ MouseButton1=0,MouseButton2=1,MouseButton3=2,MouseMovement=3,\ MouseWheel=4,Keyboard=7,Focus=9,Touch=10,\ Gamepad1=13,Gamepad2=14,Gamepad3=15,Gamepad4=16,\ TextInput=22,InputMethod=23,None=24,\ }),\ UserInputState = _bypass_enumGroup(\"UserInputState\", { Begin=0,Change=1,End=2,Cancel=3,None=4 }),\ EasingStyle = _bypass_enumGroup(\"EasingStyle\", {\ Linear=0,Sine=1,Back=2,Quad=3,Quart=4,Quint=5,\ Bounce=6,Elastic=7,Exponential=8,Circular=9,Cubic=10,\ }),\ EasingDirection = _bypass_enumGroup(\"EasingDirection\", { In=0,Out=1,InOut=2 }),\ TweenStatus = _bypass_enumGroup(\"TweenStatus\", { Cancelled=0,Completed=1 }),\ PlaybackState = _bypass_enumGroup(\"PlaybackState\", { Begin=0,Delayed=1,Playing=2,Paused=3,Completed=4,Cancelled=5 }),\ HumanoidStateType = _bypass_enumGroup(\"HumanoidStateType\", {\ FallingDown=0,Running=8,RunningNoPhysics=10,Climbing=12,Seated=13,\ PlatformStanding=14,Dead=15,Swimming=17,Freefall=18,Flying=19,\ Landed=20,Jumping=22,Ragdoll=27,GettingUp=28,None=255,\ }),\ HumanoidRigType = _bypass_enumGroup(\"HumanoidRigType\", { R6=0,R15=1 }),\ HumanoidDisplayDistanceType = _bypass_enumGroup(\"HumanoidDisplayDistanceType\", { Automatic=0,Fixed=1,None=2 }),\ HumanoidHealthDisplayType = _bypass_enumGroup(\"HumanoidHealthDisplayType\", { DisplayWhenDamaged=0,AlwaysOn=1,AlwaysOff=2 }),\ AnimationPriority = _bypass_enumGroup(\"AnimationPriority\", { Idle=0,Movement=1,Action=2,Action2=3,Action3=4,Core=1000 }),\ Material = _bypass_enumGroup(\"Material\", {\ Plastic=256,SmoothPlastic=272,Neon=288,Glass=1568,Grass=1280,\ Sand=1296,Fabric=1312,Granite=816,Marble=784,Slate=800,\ Concrete=816,Wood=1072,WoodPlanks=1088,Metal=1088,\ DiamondPlate=1056,Cobblestone=832,Ice=1536,Water=2048,Air=2176,\ Foil=1312,CorrodedMetal=1104,Pebble=1808,Mud=1344,Brick=848,\ Rock=896,Glacier=1792,Snow=1792,Sandstone=1296,Asphalt=1408,\ LeafyGrass=1424,Salt=1440,Crackedlava=1568,Limestone=864,Basalt=788,\ }),\ NormalId = _bypass_enumGroup(\"NormalId\", { Right=0,Top=1,Back=2,Left=3,Bottom=4,Front=5 }),\ Axis = _bypass_enumGroup(\"Axis\", { X=0,Y=1,Z=2 }),\ SortOrder = _bypass_enumGroup(\"SortOrder\", { Custom=0,LayoutOrder=1,Name=2 }),\ FillDirection = _bypass_enumGroup(\"FillDirection\", { Horizontal=0,Vertical=1 }),\ HorizontalAlignment = _bypass_enumGroup(\"HorizontalAlignment\", { Center=0,Left=1,Right=2 }),\ VerticalAlignment = _bypass_enumGroup(\"VerticalAlignment\", { Center=0,Top=1,Bottom=2 }),\ ScaleType = _bypass_enumGroup(\"ScaleType\", { Stretch=0,Slice=1,Tile=2,Fit=3,Crop=4 }),\ ZIndexBehavior = _bypass_enumGroup(\"ZIndexBehavior\", { Global=0,Sibling=1 }),\ TextXAlignment = _bypass_enumGroup(\"TextXAlignment\", { Left=0,Right=1,Center=2 }),\ TextYAlignment = _bypass_enumGroup(\"TextYAlignment\", { Top=0,Center=1,Bottom=2 }),\ TextTruncate = _bypass_enumGroup(\"TextTruncate\", { None=0,AtEnd=1 }),\ AutomaticSize = _bypass_enumGroup(\"AutomaticSize\", { None=0,X=1,Y=2,XY=3 }),\ BorderMode = _bypass_enumGroup(\"BorderMode\", { Outline=0,Middle=1,Inset=2 }),\ PartType = _bypass_enumGroup(\"PartType\", { Ball=0,Block=1,Cylinder=2 }),\ MeshType = _bypass_enumGroup(\"MeshType\", {\ Head=0,Torso=1,Wedge=2,Prism=3,Pyramid=4,ParallelRamp=5,\ RightAngleRamp=6,CornerWedge=7,Cylinder=8,FileMesh=9,Brick=10,Sphere=11,\ }),\ CameraType = _bypass_enumGroup(\"CameraType\", {\ Fixed=0,Attach=1,Watch=2,Track=3,Follow=4,Custom=5,Scriptable=6,Orbital=7,\ }),\ CameraMode = _bypass_enumGroup(\"CameraMode\", { Classic=0,LockFirstPerson=1 }),\ SurfaceType = _bypass_enumGroup(\"SurfaceType\", {\ Smooth=0,Glue=1,Weld=2,Studs=3,Inlet=4,Universal=5,\ Hinge=6,Motor=7,SteppingMotor=8,SmoothNoOutlines=10,\ }),\ FormFactor = _bypass_enumGroup(\"FormFactor\", { Symmetric=0,Brick=1,Plate=2,Custom=3 }),\ BodyPart = _bypass_enumGroup(\"BodyPart\", { Head=0,Torso=1,LeftArm=2,RightArm=3,LeftLeg=4,RightLeg=5 }),\ RenderFidelity = _bypass_enumGroup(\"RenderFidelity\", { Automatic=0,Disabled=1,Precise=2 }),\ CollisionFidelity = _bypass_enumGroup(\"CollisionFidelity\", { Default=0,Hull=1,Box=2,Precise=4 }),\ RaycastFilterType = _bypass_enumGroup(\"RaycastFilterType\", { Include=1,Exclude=0 }),\ PathStatus = _bypass_enumGroup(\"PathStatus\", {\ Success=0,ClosestNoPath=1,ClosestOutOfRange=2,FailStartNotEmpty=3,FailFinishNotEmpty=4,NoPath=5,\ }),\ PathWaypointAction = _bypass_enumGroup(\"PathWaypointAction\", { Walk=0,Jump=1,Custom=2 }),\ ContextActionResult = _bypass_enumGroup(\"ContextActionResult\", { Pass=0,Sink=1 }),\ MembershipType = _bypass_enumGroup(\"MembershipType\", { None=0,BuildersClub=1,TurboBuildersClub=2,OutrageousBuildersClub=3,Premium=4 }),\ Platform = _bypass_enumGroup(\"Platform\", { Windows=0,OSX=1,IOS=2,Android=3,Xbox_One=7,Linux=16,None=255 }),\ InfoType = _bypass_enumGroup(\"InfoType\", { Game=0,Asset=1,GamePass=2,Product=3,Subscription=4 }),\ TeleportState = _bypass_enumGroup(\"TeleportState\", { RequestedFromServer=0,Started=1,OnTeleport=2,Failed=3,InProgress=4 }),\ TeleportType = _bypass_enumGroup(\"TeleportType\", { ToPlace=0,ToInstance=1,ToReservedServer=2 }),\ ReverbType = _bypass_enumGroup(\"ReverbType\", { NoReverb=0,GenericReverb=1,LargeHall=2,LargeRoom=3,MediumHall=4,MediumRoom=5,SmallHall=6,SmallRoom=7 }),\ RollOffMode = _bypass_enumGroup(\"RollOffMode\", { Inverse=0,Linear=1,InverseTapered=2,LinearSquare=3 }),\ ActuatorType = _bypass_enumGroup(\"ActuatorType\", { None=0,Motor=1,Servo=2 }),\ HighlightDepthMode = _bypass_enumGroup(\"HighlightDepthMode\", { AlwaysOnTop=0,Occluded=1 }),\ AccessoryType = _bypass_enumGroup(\"AccessoryType\", {\ Unknown=0,Hat=1,Hair=2,Face=3,Neck=4,Shoulder=5,Front=6,Back=7,Waist=8,\ TShirt=9,Shirt=10,Pants=11,Jacket=12,Sweater=13,Shorts=14,LeftShoe=15,RightShoe=16,\ }),\ MessageType = _bypass_enumGroup(\"MessageType\", { MessageOutput=0,MessageInfo=1,MessageWarning=2,MessageError=3 }),\ FontWeight = _bypass_enumGroup(\"FontWeight\", { Thin=100,ExtraLight=200,Light=300,Regular=400,Medium=500,SemiBold=600,Bold=700,ExtraBold=800,Heavy=900 }),\ FontStyle = _bypass_enumGroup(\"FontStyle\", { Normal=0,Italic=1 }),\ ScrollingDirection = _bypass_enumGroup(\"ScrollingDirection\", { X=0,Y=1,XY=2 }),\ ElasticBehavior = _bypass_enumGroup(\"ElasticBehavior\", { Always=0,WhenScrollable=1,Never=2 }),\ ItemLineAlignment = _bypass_enumGroup(\"ItemLineAlignment\", { Automatic=0,Left=1,Right=2,Center=3 }),\ UIFlexMode = _bypass_enumGroup(\"UIFlexMode\", { None=0,Fill=1,Shrink=2,FillShrink=3,Custom=4 }),\ StartCorner = _bypass_enumGroup(\"StartCorner\", { TopLeft=0,TopRight=1,BottomLeft=2,BottomRight=3 }),\ RigType = _bypass_enumGroup(\"RigType\", { R6=0,R15=1 }),\ RunContext = _bypass_enumGroup(\"RunContext\", { Legacy=0,Server=1,Client=2,Plugin=3 }),\ VelocityConstraintMode = _bypass_enumGroup(\"VelocityConstraintMode\", { Vector=0,Line=1,Plane=2 }),\ LimiterMode = _bypass_enumGroup(\"LimiterMode\", { Loudness=0,Amplitude=1 }),\ DataStoreRequestType = _bypass_enumGroup(\"DataStoreRequestType\", {\ GetAsync=0,SetIncrementAsync=1,UpdateAsync=2,GetSortedAsync=3,\ SetIncrementSortedAsync=4,OnUpdate=5,GetVersionAsync=6,ListKeysAsync=7,ListVersionsAsync=8,RemoveVersionAsync=9,\ }),\ ProductPurchaseDecision = _bypass_enumGroup(\"ProductPurchaseDecision\", { NotProcessedYet=0,PurchaseGranted=1 }),\ ThumbnailSize = _bypass_enumGroup(\"ThumbnailSize\", { Size48x48=0,Size180x180=1,Size420x420=2,Size60x60=3,Size100x100=4,Size150x150=5 }),\ ThumbnailType = _bypass_enumGroup(\"ThumbnailType\", { AvatarBust=0,AvatarThumbnail=1,Asset=2,BadgeIcon=3,GameIcon=4,GroupIcon=5,Outfit=6,Headshot=7 }),\ CreatorType = _bypass_enumGroup(\"CreatorType\", { User=0,Group=1 }),\ PolicyService = _bypass_enumGroup(\"PolicyService\", { None=0 }),\ QualityLevel = _bypass_enumGroup(\"QualityLevel\", { Automatic=0,Level01=1,Level02=2,Level03=3,Level04=4,Level05=5,Level06=6,Level07=7,Level08=8,Level09=9,Level10=10 }),\ RenderPriority = _bypass_enumGroup(\"RenderPriority\", { First=0,Input=100,Camera=200,Character=300,Last=2000 }),\ ScreenOrientation = _bypass_enumGroup(\"ScreenOrientation\", {\ LandscapeLeft=0,LandscapeRight=1,LandscapeSensor=2,Portrait=3,PortraitSensor=4,Sensor=5,\ }),\ ModelLevelOfDetail = _bypass_enumGroup(\"ModelLevelOfDetail\", { Automatic=0,Disabled=1,StreamingMesh=2 }),\ SelectionBehavior = _bypass_enumGroup(\"SelectionBehavior\", { Escape=0,Stop=1 }),\ GuiState = _bypass_enumGroup(\"GuiState\", { Idle=0,Hover=1,Press=2,Select=3,NonInteractable=4 }),\ KeyInterpolationMode = _bypass_enumGroup(\"KeyInterpolationMode\", { Cubic=0,Linear=1,Constant=2 }),\ ParticleEmitterShape = _bypass_enumGroup(\"ParticleEmitterShape\", { Box=0,Sphere=1,Cylinder=2,Disc=3 }),\ ParticleEmitterShapeStyle = _bypass_enumGroup(\"ParticleEmitterShapeStyle\", { Volume=0,Surface=1 }),\ OverrideMouseIconBehavior = _bypass_enumGroup(\"OverrideMouseIconBehavior\", { None=0,ForceShow=1,ForceHide=2 }),\ ExplosionType = _bypass_enumGroup(\"ExplosionType\", { NoCraters=0,Craters=1,CratersAndDebris=2 }),\ DragDetectorDragStyle = _bypass_enumGroup(\"DragDetectorDragStyle\", { None=0,TranslatePlane=1,Scriptable=8 }),\ SalesTypeFilter = _bypass_enumGroup(\"SalesTypeFilter\", { All=1,Robux=2,Free=3,Offsale=4 }),\ CatalogSortType = _bypass_enumGroup(\"CatalogSortType\", { Relevance=0,PriceAsc=1,PriceDesc=2,RecentlyUpdated=3,MostFavorited=4 }),\ SignalBehavior = _bypass_enumGroup(\"SignalBehavior\", { Default=0,Immediate=1,Deferred=2 }),\ BundleType = _bypass_enumGroup(\"BundleType\", { BodyParts=0,AvatarAnimations=1 }),\ TextChatMessageStatus = _bypass_enumGroup(\"TextChatMessageStatus\", { Unknown=0,Success=1,Throttled=2,Blocked=3,FilteredEntireMessage=4 }),\ AvatarPromptResult = _bypass_enumGroup(\"AvatarPromptResult\", { Success=0,PermissionDenied=1,PurchaseFailed=2,Cancelled=3 }),\ ChatPrivacyMode = _bypass_enumGroup(\"ChatPrivacyMode\", { AllUsers=0,NoOne=1,Friends=2 }),\ VoiceChatState = _bypass_enumGroup(\"VoiceChatState\", { Idle=0,Connecting=1,Connected=2,Disconnected=3 }),\ }, _EnumsMT)\ do\ local _enumMT = getmetatable(_Enum)\ local _origIdx = _enumMT and _enumMT.__index\ if type(_origIdx) ~= \"function\" then\ setmetatable(_Enum, setmetatable(_EnumsMT, {\ __index = function(self, k)\ local v = rawget(self, k)\ if v ~= nil then return v end\ local dyn = _bypass_enumGroup(tostring(k), {})\ rawset(self, k, dyn)\ return dyn\ end,\ }))\ end\ end\ \ local function _bypass_makeSignal(name)\ local _conns = {}\ local sig = _bypass_new(_SignalMT, { Name = name or \"Signal\" })\ local function _makeConn(id)\ return setmetatable({}, {\ __index = function(_, k)\ if k == \"Connected\" then return _conns[id] ~= nil end\ if k == \"Disconnect\" then return function(_) _conns[id] = nil end end\ if k == \"disconnect\" then return function(_) _conns[id] = nil end end\ return nil\ end,\ __newindex = rawset,\ __metatable = \"RBXScriptConnection\",\ })\ end\ function sig:Connect(fn)\ if type(fn) ~= \"function\" then return _makeConn(0) end\ local id = tostring(fn) .. tostring(#_conns + 1)\ _conns[id] = fn\ if rawget(_G, \"_bypassRegisterConnection\") then\ pcall(_G._bypassRegisterConnection, self, fn)\ end\ return _makeConn(id)\ end\ function sig:Once(fn)\ if type(fn) ~= \"function\" then return _makeConn(0) end\ local id = tostring(fn) .. \"_once\"\ _conns[id] = function(...)\ _conns[id] = nil\ return fn(...)\ end\ return _makeConn(id)\ end\ function sig:Connect(fn) return sig.Connect(sig, fn) end\ function sig:Wait() return nil end\ function sig:Fire(...)\ for _, fn in pairs(_conns) do\ local ok, err = pcall(fn, ...)\ if not ok and type(err) == \"string\" and not err:match(\"DUMP_LIMIT\") then end\ end\ end\ function sig:GetConnections()\ local out = {}\ for id, fn in pairs(_conns) do\ out[#out+1] = { Function=fn, ForeignState=false, LuaConnection=true, State=\"Connected\",\ Fire=function(_, ...) pcall(fn,...) end, Disconnect=function() _conns[id]=nil end }\ end\ return out\ end\ rawset(sig, \"_conns\", _conns)\ rawset(sig, \"connect\", sig.Connect)\ rawset(sig, \"fire\", sig.Fire)\ return sig\ end\ \ local _TextService = _bypass_new(_InstanceMT, {\ ClassName = \"TextService\",\ GetTextSize = function(_self, text, size, _font, _bounds)\ text = tostring(text or \"\")\ size = tonumber(size) or 14\ local w = math.max(1, #text) * size * 0.6\ return _Vector2.new(w, size)\ end,\ GetTextBoundsAsync = function(_self, _params)\ return _Vector2.new(100, 18)\ end,\ })\ \ local _GuiService = _bypass_new(_InstanceMT, {\ ClassName = \"GuiService\",\ GetGuiInset = function() return _Vector2.new(0, 36) end,\ IsTenFootInterface = function() return false end,\ SelectedObject = nil,\ })\ \ local _ContextActionService = _bypass_new(_InstanceMT, {\ ClassName = \"ContextActionService\",\ GetAllBoundActionInfo = function() return {} end,\ BindAction = function() end,\ UnbindAction = function() end,\ })\ \ local _SoundService = _bypass_new(_InstanceMT, {\ ClassName = \"SoundService\",\ RolloffScale = 1,\ AmbientReverb = \"NoReverb\",\ DistanceFactor = 3.33,\ DopplerScale = 1,\ })\ \ local _Lighting = _bypass_new(_InstanceMT, {\ ClassName = \"Lighting\",\ ClockTime = 14,\ Brightness = 2,\ Ambient = _Color3.fromRGB(70, 70, 70),\ FogEnd = 100000,\ GlobalShadows = true,\ })\ \ local _ReplicatedStorage = _bypass_new(_InstanceMT, {\ ClassName = \"ReplicatedStorage\",\ Name = \"ReplicatedStorage\",\ })\ local _StarterGui = _bypass_new(_InstanceMT, {\ ClassName = \"StarterGui\",\ Name = \"StarterGui\",\ SetCore = function() end,\ GetCore = function() return nil end,\ })\ local _PhysicsService = _bypass_new(_InstanceMT, {\ ClassName = \"PhysicsService\",\ Name = \"PhysicsService\",\ GetCollisionGroups = function() return {} end,\ })\ local _UserInputService = _bypass_new(_InstanceMT, {\ ClassName = \"UserInputService\",\ IsKeyDown = function(_self, _key) return false end,\ IsMouseButtonPressed = function() return false end,\ GetMouseLocation = function() return _Vector2.new(0, 0) end,\ TouchEnabled = false, KeyboardEnabled = true, MouseEnabled = true,\ })\ local _RunService = _bypass_new(_InstanceMT, {\ ClassName = \"RunService\",\ IsClient = function() return true end,\ IsServer = function() return false end,\ IsStudio = function() return false end,\ Heartbeat = _bypass_makeSignal(\"Heartbeat\"),\ RenderStepped = _bypass_makeSignal(\"RenderStepped\"),\ Stepped = _bypass_makeSignal(\"Stepped\"),\ })\ local function _jsonEncode(val, depth)\ depth = depth or 0\ if depth > 64 then return '\"[MaxDepth]\"' end\ local t = type(val)\ if val == nil then return \"null\"\ elseif t == \"boolean\" then return tostring(val)\ elseif t == \"number\" then\ if val ~= val then return \"null\" end\ if val == math.huge then return \"1e308\" end\ if val == -math.huge then return \"-1e308\" end\ if val == math.floor(val) and math.abs(val) < 1e15 then return string.format(\"%d\", val) end\ return string.format(\"%.14g\", val)\ elseif t == \"string\" then\ return '\"' .. val:gsub('\\\\','\\\\\\\\'):gsub('\"','\\\\\"'):gsub('\\n','\\\\n'):gsub('\\r','\\\\r'):gsub('\\t','\\\\t'):gsub('%c',function(c) return string.format(\"\\\\u%04X\",string.byte(c)) end) .. '\"'\ elseif t == \"table\" then\ local isArray = true; local maxN = 0\ for k, _ in pairs(val) do\ if type(k) ~= \"number\" or k < 1 or k ~= math.floor(k) then isArray = false; break end\ if k > maxN then maxN = k end\ end\ if isArray and maxN == #val and maxN > 0 then\ local parts = {}\ for i = 1, maxN do parts[i] = _jsonEncode(val[i], depth+1) end\ return \"[\" .. table.concat(parts, \",\") .. \"]\"\ else\ local parts = {}\ for k, v in pairs(val) do\ if type(k) == \"string\" or type(k) == \"number\" then\ parts[#parts+1] = _jsonEncode(tostring(k), depth+1) .. \":\" .. _jsonEncode(v, depth+1)\ end\ end\ return \"{\" .. table.concat(parts, \",\") .. \"}\"\ end\ end\ return \"null\"\ end\ local function _jsonDecode(src)\ local i = 1\ local function skip() while i <= #src and src:sub(i,i):match(\"^%s$\") do i=i+1 end end\ local function peek() skip(); return src:sub(i,i) end\ local function consume() local c = src:sub(i,i); i=i+1; return c end\ local function decodeVal()\ skip()\ local c = peek()\ if c == '\"' then\ consume()\ local parts = {}\ while i <= #src do\ local ch = src:sub(i,i)\ if ch == '\"' then consume(); break\ elseif ch == '\\\\' then\ consume(); local esc = consume()\ if esc == 'n' then parts[#parts+1] = '\\n'\ elseif esc == 'r' then parts[#parts+1] = '\\r'\ elseif esc == 't' then parts[#parts+1] = '\\t'\ elseif esc == 'u' then\ local hex = src:sub(i,i+3); i=i+4\ parts[#parts+1] = string.char(tonumber(hex,16) or 63)\ else parts[#parts+1] = esc end\ else parts[#parts+1] = consume() end\ end\ return table.concat(parts)\ elseif c == '{' then\ consume(); local obj = {}\ skip()\ if peek() == '}' then consume(); return obj end\ while true do\ skip(); local key = decodeVal(); skip()\ consume()\ local val = decodeVal(); obj[key] = val; skip()\ if peek() == '}' then consume(); break end\ consume()\ end\ return obj\ elseif c == '[' then\ consume(); local arr = {}\ skip()\ if peek() == ']' then consume(); return arr end\ while true do\ arr[#arr+1] = decodeVal(); skip()\ if peek() == ']' then consume(); break end\ consume()\ end\ return arr\ elseif src:sub(i,i+3) == \"null\" then i=i+4; return nil\ elseif src:sub(i,i+3) == \"true\" then i=i+4; return true\ elseif src:sub(i,i+4) == \"false\" then i=i+5; return false\ else\ local numStr = src:match(\"^-?%d+%.?%d*[eE]?[+-]?%d*\", i)\ if numStr then i=i+#numStr; return tonumber(numStr) end\ return nil\ end\ end\ local ok, result = pcall(decodeVal)\ if ok then return result else return {} end\ end\ local _guidCounter = 0\ local _HttpService = _bypass_new(_InstanceMT, {\ ClassName = \"HttpService\",\ HttpEnabled = true,\ JSONEncode = function(_self, v) return _jsonEncode(v) end,\ JSONDecode = function(_self, s)\ if type(s) ~= \"string\" then return {} end\ return _jsonDecode(s)\ end,\ GenerateGUID = function(_self, wrapBraces)\ _guidCounter = _guidCounter + 1\ local template = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"\ local seed = _guidCounter * 48271 + os.time()\ math.randomseed(seed)\ local guid = template:gsub(\"[xy]\", function(c)\ local r = math.random(0, 15)\ local v = (c == \"x\") and r or (r % 4 + 8)\ return string.format(\"%x\", v)\ end)\ if wrapBraces == false then return guid end\ return \"{\" .. guid .. \"}\"\ end,\ RequestAsync = function(_self, options)\ return { Success=false, StatusCode=0, StatusMessage=\"NetworkError\", Headers={}, Body=\"\" }\ end,\ GetAsync = function(_self, url)\ return \"\"\ end,\ PostAsync = function(_self, url, data)\ return \"\"\ end,\ UrlEncode = function(_self, str)\ if type(str) ~= \"string\" then str = tostring(str or \"\") end\ return str:gsub(\"[^%w%-%.%_%~]\", function(c)\ return string.format(\"%%%02X\", string.byte(c))\ end)\ end,\ })\ local _TweenService = _bypass_new(_InstanceMT, {\ ClassName = \"TweenService\",\ Create = function(_self, _inst, _info, _props)\ return _bypass_new(_InstanceMT, {\ ClassName = \"Tween\",\ Play = function() end, Cancel = function() end, Pause = function() end,\ Completed = _bypass_makeSignal(\"Completed\"),\ })\ end,\ })\ \ local _extraServices = {}\ do\ local _MarketplaceService = _bypass_new(_InstanceMT, {\ ClassName = \"MarketplaceService\",\ GetProductInfo = function(_self, id, _infoType)\ return {\ Name = \"Product\" .. tostring(id), Description = \"\",\ PriceInRobux = 0, AssetId = tonumber(id) or 0,\ Creator = { Id = 0, Name = \"Roblox\", CreatorType = \"User\" },\ IsForSale = false, Sales = 0, IsLimited = false,\ }\ end,\ UserOwnsGamePassAsync = function() return false end,\ PlayerOwnsAsset = function() return false end,\ PromptPurchase = function() end,\ PromptGamePassPurchase = function() end,\ PromptProductPurchase = function() end,\ PromptPurchaseFinished = _bypass_makeSignal(\"PromptPurchaseFinished\"),\ ProcessReceipt = nil,\ })\ \ local _TeleportService = _bypass_new(_InstanceMT, {\ ClassName = \"TeleportService\",\ Teleport = function() end,\ TeleportToPlaceInstance = function() end,\ TeleportToPrivateServer = function() end,\ ReserveServer = function(_self, placeId)\ return \"0000-reserved-server-access-code\", tostring(placeId or 0)\ end,\ GetLocalPlayerTeleportData = function() return nil end,\ SetTeleportGui = function() end,\ TeleportInitFailed = _bypass_makeSignal(\"TeleportInitFailed\"),\ })\ \ local _DataStoreService = _bypass_new(_InstanceMT, {\ ClassName = \"DataStoreService\",\ GetDataStore = function(_self, name, scope)\ return _bypass_new(_InstanceMT, {\ ClassName = \"GlobalDataStore\",\ Name = tostring(name or \"DataStore\"),\ Scope = tostring(scope or \"global\"),\ GetAsync = function() return nil end,\ SetAsync = function() return \"ok\" end,\ UpdateAsync = function(_s, _k, transformer)\ local ok, v = pcall(transformer, nil)\ if ok then return v end\ return nil\ end,\ IncrementAsync = function(_s, _k, delta) return tonumber(delta) or 0 end,\ RemoveAsync = function() return nil end,\ })\ end,\ GetOrderedDataStore = function(_self, name, scope)\ return _bypass_new(_InstanceMT, {\ ClassName = \"OrderedDataStore\",\ Name = tostring(name or \"OrderedDataStore\"),\ Scope = tostring(scope or \"global\"),\ GetAsync = function() return 0 end,\ SetAsync = function() return \"ok\" end,\ GetSortedAsync = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"DataStorePages\",\ GetCurrentPage = function() return {} end,\ AdvanceToNextPageAsync = function() end,\ IsFinished = true,\ })\ end,\ })\ end,\ GetGlobalDataStore = function(_self) return _services and _services.DataStoreService end,\ GetRequestBudgetForRequestType = function() return 1000 end,\ ListDataStoresAsync = function() return nil end,\ })\ \ local _MemoryStoreService = _bypass_new(_InstanceMT, {\ ClassName = \"MemoryStoreService\",\ GetSortedMap = function(_self, name)\ return _bypass_new(_InstanceMT, {\ ClassName = \"MemoryStoreSortedMap\",\ Name = tostring(name or \"Map\"),\ GetAsync = function() return nil end,\ SetAsync = function() return true end,\ UpdateAsync = function() return nil end,\ RemoveAsync = function() end,\ GetRangeAsync = function() return {} end,\ })\ end,\ GetQueue = function(_self, name)\ return _bypass_new(_InstanceMT, {\ ClassName = \"MemoryStoreQueue\",\ Name = tostring(name or \"Queue\"),\ AddAsync = function() return true end,\ ReadAsync = function() return {}, \"\" end,\ RemoveAsync = function() end,\ })\ end,\ })\ \ local _BadgeService = _bypass_new(_InstanceMT, {\ ClassName = \"BadgeService\",\ AwardBadge = function() return true end,\ UserHasBadgeAsync = function() return false end,\ GetBadgeInfoAsync = function(_self, id)\ return {\ Name = \"Badge\" .. tostring(id), Description = \"\",\ IconImageId = 0, IsEnabled = true,\ }\ end,\ })\ \ local _GamePassService = _bypass_new(_InstanceMT, {\ ClassName = \"GamePassService\",\ PlayerHasPass = function() return false end,\ })\ \ local _PointsService = _bypass_new(_InstanceMT, {\ ClassName = \"PointsService\",\ AwardPoints = function() return 0, 0, 0, 0 end,\ GetAwardablePoints = function() return 0 end,\ GetGamePointBalance = function() return 0 end,\ GetPointBalance = function() return 0 end,\ PointsAwarded = _bypass_makeSignal(\"PointsAwarded\"),\ })\ \ local _Chat = _bypass_new(_InstanceMT, {\ ClassName = \"Chat\",\ Name = \"Chat\",\ Chat = function() end,\ SetBubbleChatSettings = function() end,\ GetShouldUseLuaChat = function() return true end,\ FilterStringAsync = function(_self, msg) return tostring(msg or \"\") end,\ FilterStringForBroadcast = function(_self, msg) return tostring(msg or \"\") end,\ BubbleChatEnabled = false,\ })\ \ local _TextChatService = _bypass_new(_InstanceMT, {\ ClassName = \"TextChatService\",\ ChatVersion = \"TextChatService\",\ SendingMessage = _bypass_makeSignal(\"SendingMessage\"),\ MessageReceived = _bypass_makeSignal(\"MessageReceived\"),\ OnIncomingMessage = nil,\ OnChatWindowAdded = nil,\ })\ \ local _VoiceChatService = _bypass_new(_InstanceMT, {\ ClassName = \"VoiceChatService\",\ EnableDefaultVoice = false,\ IsVoiceEnabledForUserIdAsync = function() return false end,\ })\ \ local _Debris = _bypass_new(_InstanceMT, {\ ClassName = \"Debris\",\ Name = \"Debris\",\ AddItem = function(_self, _inst, _lifetime) end,\ MaxItems = 1000,\ })\ \ local _CollectionService = _bypass_new(_InstanceMT, {\ ClassName = \"CollectionService\",\ Name = \"CollectionService\",\ AddTag = function() end,\ RemoveTag = function() end,\ HasTag = function() return false end,\ GetTags = function() return {} end,\ GetTagged = function() return {} end,\ GetInstanceAddedSignal = function(_self, _tag) return _bypass_makeSignal(\"InstanceAdded\") end,\ GetInstanceRemovedSignal = function(_self, _tag) return _bypass_makeSignal(\"InstanceRemoved\") end,\ })\ \ local _ServerStorage = _bypass_new(_InstanceMT, {\ ClassName = \"ServerStorage\", Name = \"ServerStorage\",\ })\ local _ServerScriptService = _bypass_new(_InstanceMT, {\ ClassName = \"ServerScriptService\", Name = \"ServerScriptService\",\ })\ local _ReplicatedFirst = _bypass_new(_InstanceMT, {\ ClassName = \"ReplicatedFirst\", Name = \"ReplicatedFirst\",\ RemoveDefaultLoadingScreen = function() end,\ })\ local _StarterPack = _bypass_new(_InstanceMT, {\ ClassName = \"StarterPack\", Name = \"StarterPack\",\ })\ local _StarterPlayer = _bypass_new(_InstanceMT, {\ ClassName = \"StarterPlayer\", Name = \"StarterPlayer\",\ CharacterWalkSpeed = 16, CharacterJumpPower = 50, CharacterMaxHealth = 100,\ EnableMouseLockOption = true, AutoJumpEnabled = false,\ })\ local _Teams = _bypass_new(_InstanceMT, {\ ClassName = \"Teams\", Name = \"Teams\",\ GetTeams = function() return {} end,\ })\ \ local _LogService = _bypass_new(_InstanceMT, {\ ClassName = \"LogService\",\ GetLogHistory = function() return {} end,\ ClearOutput = function() end,\ MessageOut = _bypass_makeSignal(\"MessageOut\"),\ })\ \ local _Stats = _bypass_new(_InstanceMT, {\ ClassName = \"Stats\",\ Name = \"Stats\",\ GetTotalMemoryUsageMb = function() return 0 end,\ GetMemoryUsageMbForTag = function() return 0 end,\ PhysicsReceiveKbps = 0,\ PhysicsSendKbps = 0,\ DataReceiveKbps = 0,\ DataSendKbps = 0,\ HeartbeatTimeMs = 1,\ Network = _bypass_new(_InstanceMT, { ClassName = \"NetworkSettings\" }),\ })\ \ local _LocalizationService = _bypass_new(_InstanceMT, {\ ClassName = \"LocalizationService\",\ RobloxLocaleId = \"en-us\",\ SystemLocaleId = \"en-us\",\ GetTranslatorForPlayerAsync = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"Translator\",\ LocaleId = \"en-us\",\ Translate = function(_self, _ctx, src) return tostring(src or \"\") end,\ FormatByKey = function(_self, _key, _args) return \"\" end,\ })\ end,\ GetCorescriptLocalizations = function() return {} end,\ })\ \ local _AssetService = _bypass_new(_InstanceMT, {\ ClassName = \"AssetService\",\ CreatePlaceAsync = function() return 0 end,\ GetGamePlacesAsync = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"StandardPages\",\ GetCurrentPage = function() return {} end,\ AdvanceToNextPageAsync = function() end,\ IsFinished = true,\ })\ end,\ GetBundleDetailsAsync = function() return {} end,\ })\ \ local _InsertService = _bypass_new(_InstanceMT, {\ ClassName = \"InsertService\",\ LoadAsset = function() return _Instance and _Instance.new(\"Folder\") or nil end,\ LoadAssetVersion = function() return _Instance and _Instance.new(\"Folder\") or nil end,\ GetLatestAssetVersionAsync = function() return 0 end,\ })\ \ local _ContentProvider = _bypass_new(_InstanceMT, {\ ClassName = \"ContentProvider\",\ BaseUrl = \"https://www.roblox.com/\",\ RequestQueueSize = 0,\ PreloadAsync = function() end,\ Preload = function() end,\ })\ \ local _GroupService = _bypass_new(_InstanceMT, {\ ClassName = \"GroupService\",\ GetGroupInfoAsync = function() return { Name = \"Group\", Description = \"\", Owner = {} } end,\ GetGroupsAsync = function() return {} end,\ GetAlliesAsync = function() return {} end,\ GetEnemiesAsync = function() return {} end,\ })\ \ local _SocialService = _bypass_new(_InstanceMT, {\ ClassName = \"SocialService\",\ CanSendGameInviteAsync = function() return false end,\ PromptGameInvite = function() end,\ GameInvitePromptClosed = _bypass_makeSignal(\"GameInvitePromptClosed\"),\ })\ \ local _FriendService = _bypass_new(_InstanceMT, {\ ClassName = \"FriendService\",\ GetPlatformFriends = function() return {} end,\ })\ \ local _AvatarEditorService = _bypass_new(_InstanceMT, {\ ClassName = \"AvatarEditorService\",\ GetAvatarRules = function() return {} end,\ GetItemDetails = function() return {} end,\ GetFavorite = function() return false end,\ SetFavorite = function() end,\ PromptAllowInventoryReadAccess = function() end,\ })\ \ local _AnalyticsService = _bypass_new(_InstanceMT, {\ ClassName = \"AnalyticsService\",\ LogEvent = function() end,\ LogCustomEvent = function() end,\ LogEconomyEvent = function() end,\ LogOnboardingFunnelStepEvent = function() end,\ LogProgressionEvent = function() end,\ LogAcquisitionFunnelStepEvent = function() end,\ })\ \ local _AdService = _bypass_new(_InstanceMT, {\ ClassName = \"AdService\",\ ShowVideoAd = function() end,\ PlayAdAsync = function() return false end,\ DisplayBillboardAd = function() end,\ })\ \ local _HapticService = _bypass_new(_InstanceMT, {\ ClassName = \"HapticService\",\ SetMotor = function() end,\ GetMotor = function() return 0 end,\ IsMotorSupported = function() return false end,\ IsVibrationValueSupported = function() return false end,\ })\ \ local _VRService = _bypass_new(_InstanceMT, {\ ClassName = \"VRService\",\ VREnabled = false,\ GetUserCFrame = function() return _CFrame.new() end,\ GetUserCFrameEnabled = function() return false end,\ RecenterUserHeadCFrame = function() end,\ })\ \ local _PolicyService = _bypass_new(_InstanceMT, {\ ClassName = \"PolicyService\",\ GetPolicyInfoForPlayerAsync = function()\ return {\ ArePaidRandomItemsRestricted = false,\ AllowedExternalLinkReferences = {},\ IsPaidItemTradingAllowed = true,\ IsSubjectToChinaPolicies = false,\ }\ end,\ })\ \ local _ProximityPromptService = _bypass_new(_InstanceMT, {\ ClassName = \"ProximityPromptService\",\ Enabled = true,\ MaxPromptsVisible = 10,\ PromptShown = _bypass_makeSignal(\"PromptShown\"),\ PromptHidden = _bypass_makeSignal(\"PromptHidden\"),\ PromptTriggered = _bypass_makeSignal(\"PromptTriggered\"),\ })\ \ local _PathfindingService = _bypass_new(_InstanceMT, {\ ClassName = \"PathfindingService\",\ CreatePath = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"Path\",\ Status = \"Success\",\ ComputeAsync = function() end,\ GetWaypoints = function() return {} end,\ Blocked = _bypass_makeSignal(\"Blocked\"),\ })\ end,\ FindPathAsync = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"Path\", Status = \"Success\",\ GetWaypoints = function() return {} end,\ })\ end,\ })\ \ local _NotificationService = _bypass_new(_InstanceMT, {\ ClassName = \"NotificationService\",\ Name = \"NotificationService\",\ })\ \ local _MessagingService = _bypass_new(_InstanceMT, {\ ClassName = \"MessagingService\",\ PublishAsync = function() end,\ SubscribeAsync = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"RBXScriptConnection\",\ Disconnect = function() end, Connected = true,\ })\ end,\ })\ \ local _CoreGui = _bypass_new(_InstanceMT, {\ ClassName = \"CoreGui\", Name = \"CoreGui\",\ Version = 0,\ })\ \ local _StudioService = _bypass_new(_InstanceMT, {\ ClassName = \"StudioService\",\ Name = \"StudioService\",\ GetUserId = function() return 0 end,\ GetClassIcon = function() return {} end,\ })\ \ local _ScriptContext = _bypass_new(_InstanceMT, {\ ClassName = \"ScriptContext\", Name = \"ScriptContext\",\ Error = _bypass_makeSignal(\"Error\"),\ AddCoreScriptLocal = function() end,\ })\ \ local _NetworkClient = _bypass_new(_InstanceMT, {\ ClassName = \"NetworkClient\", Name = \"NetworkClient\",\ Ticket = \"\", ConnectionAccepted = _bypass_makeSignal(\"ConnectionAccepted\"),\ })\ local _NetworkServer = _bypass_new(_InstanceMT, {\ ClassName = \"NetworkServer\", Name = \"NetworkServer\",\ })\ \ local _UserService = _bypass_new(_InstanceMT, {\ ClassName = \"UserService\",\ GetUserInfosByUserIdsAsync = function(_self, ids)\ local out = {}\ for _, id in ipairs(ids or {}) do\ table.insert(out, {\ Id = id, Username = \"User\" .. tostring(id),\ DisplayName = \"User\" .. tostring(id), HasVerifiedBadge = false,\ })\ end\ return out\ end,\ })\ \ local _KeyframeSequenceProvider = _bypass_new(_InstanceMT, {\ ClassName = \"KeyframeSequenceProvider\",\ GetAnimations = function() return {} end,\ RegisterKeyframeSequence = function() return \"\" end,\ })\ \ local _SpawnerService = _bypass_new(_InstanceMT, {\ ClassName = \"SpawnerService\", Name = \"SpawnerService\",\ })\ \ local _TouchInputService = _bypass_new(_InstanceMT, {\ ClassName = \"TouchInputService\", Name = \"TouchInputService\",\ })\ \ local _TestService = _bypass_new(_InstanceMT, {\ ClassName = \"TestService\", Name = \"TestService\",\ Check = function() end, Error = function() end,\ Message = function() end, Warn = function() end,\ })\ \ local _RbxAnalyticsService = _bypass_new(_InstanceMT, {\ ClassName = \"RbxAnalyticsService\",\ ReportCounter = function() end, ReportStats = function() end,\ TrackEvent = function() end, TrackEventWithArgs = function() end,\ })\ \ local _CookiesService = _bypass_new(_InstanceMT, {\ ClassName = \"CookiesService\",\ })\ \ local _OmniRecommendationsService = _bypass_new(_InstanceMT, {\ ClassName = \"OmniRecommendationsService\",\ GetRecommendationsAsync = function() return {} end,\ })\ \ local _GuiInsetService = _bypass_new(_InstanceMT, {\ ClassName = \"GuiInsetService\",\ })\ \ local _RobloxReplicatedStorage = _bypass_new(_InstanceMT, {\ ClassName = \"RobloxReplicatedStorage\", Name = \"RobloxReplicatedStorage\",\ })\ \ local _StarterPlayerScripts = _bypass_new(_InstanceMT, {\ ClassName = \"StarterPlayerScripts\", Name = \"StarterPlayerScripts\",\ })\ local _StarterCharacterScripts = _bypass_new(_InstanceMT, {\ ClassName = \"StarterCharacterScripts\", Name = \"StarterCharacterScripts\",\ })\ \ local _ChangeHistoryService = _bypass_new(_InstanceMT, {\ ClassName = \"ChangeHistoryService\",\ SetWaypoint = function() end, ResetWaypoints = function() end,\ Undo = function() end, Redo = function() end,\ })\ \ local _RunningAverageItemDouble = _bypass_new(_InstanceMT, {\ ClassName = \"Selection\",\ Get = function() return {} end, Set = function() end,\ SelectionChanged = _bypass_makeSignal(\"SelectionChanged\"),\ })\ \ _extraServices.MarketplaceService = _MarketplaceService\ _extraServices.TeleportService = _TeleportService\ _extraServices.DataStoreService = _DataStoreService\ _extraServices.MemoryStoreService = _MemoryStoreService\ _extraServices.BadgeService = _BadgeService\ _extraServices.GamePassService = _GamePassService\ _extraServices.PointsService = _PointsService\ _extraServices.Chat = _Chat\ _extraServices.TextChatService = _TextChatService\ _extraServices.VoiceChatService = _VoiceChatService\ _extraServices.Debris = _Debris\ _extraServices.CollectionService = _CollectionService\ _extraServices.ServerStorage = _ServerStorage\ _extraServices.ServerScriptService = _ServerScriptService\ _extraServices.ReplicatedFirst = _ReplicatedFirst\ _extraServices.StarterPack = _StarterPack\ _extraServices.StarterPlayer = _StarterPlayer\ _extraServices.StarterPlayerScripts = _StarterPlayerScripts\ _extraServices.StarterCharacterScripts = _StarterCharacterScripts\ _extraServices.Teams = _Teams\ _extraServices.LogService = _LogService\ _extraServices.Stats = _Stats\ _extraServices.LocalizationService = _LocalizationService\ _extraServices.AssetService = _AssetService\ _extraServices.InsertService = _InsertService\ _extraServices.ContentProvider = _ContentProvider\ _extraServices.GroupService = _GroupService\ _extraServices.SocialService = _SocialService\ _extraServices.FriendService = _FriendService\ _extraServices.AvatarEditorService = _AvatarEditorService\ _extraServices.AnalyticsService = _AnalyticsService\ _extraServices.AdService = _AdService\ _extraServices.HapticService = _HapticService\ _extraServices.VRService = _VRService\ _extraServices.PolicyService = _PolicyService\ _extraServices.ProximityPromptService = _ProximityPromptService\ _extraServices.PathfindingService = _PathfindingService\ _extraServices.NotificationService = _NotificationService\ \ do\ local _B64_ALPHA_D = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local _B64_DEC_D = {}\ for _i = 1, #_B64_ALPHA_D do _B64_DEC_D[_B64_ALPHA_D:sub(_i,_i)] = _i - 1 end\ \ local function _b64enc(s)\ local out, len = {}, #s\ local i = 1\ while i <= len do\ local b1 = s:byte(i) or 0\ local b2 = s:byte(i+1) or 0\ local b3 = s:byte(i+2) or 0\ local n = b1 * 65536 + b2 * 256 + b3\ out[#out+1] = _B64_ALPHA_D:sub(math.floor(n/262144) % 64 + 1, math.floor(n/262144) % 64 + 1)\ out[#out+1] = _B64_ALPHA_D:sub(math.floor(n/4096) % 64 + 1, math.floor(n/4096) % 64 + 1)\ out[#out+1] = (i+1 <= len) and _B64_ALPHA_D:sub(math.floor(n/64) % 64 + 1, math.floor(n/64) % 64 + 1) or \"=\"\ out[#out+1] = (i+2 <= len) and _B64_ALPHA_D:sub(n % 64 + 1, n % 64 + 1) or \"=\"\ i = i + 3\ end\ return table.concat(out)\ end\ \ local function _b64dec(s)\ s = s:gsub(\"[^A-Za-z0-9+/=]\", \"\")\ local out = {}\ local i, slen = 1, #s\ while i + 3 <= slen do\ local c1 = _B64_DEC_D[s:sub(i, i )] or 0\ local c2 = _B64_DEC_D[s:sub(i+1, i+1)] or 0\ local c3 = _B64_DEC_D[s:sub(i+2, i+2)] or 0\ local c4 = _B64_DEC_D[s:sub(i+3, i+3)] or 0\ local n = c1 * 262144 + c2 * 4096 + c3 * 64 + c4\ out[#out+1] = string.char(math.floor(n / 65536) % 256)\ if s:sub(i+2, i+2) ~= \"=\" then out[#out+1] = string.char(math.floor(n / 256) % 256) end\ if s:sub(i+3, i+3) ~= \"=\" then out[#out+1] = string.char(n % 256) end\ i = i + 4\ end\ return table.concat(out)\ end\ \ local function _bufstr(b)\ if type(b) == \"string\" then return b end\ if buffer and type(buffer.tostring) == \"function\" then\ local ok, s = pcall(buffer.tostring, b)\ if ok and type(s) == \"string\" then return s end\ end\ return tostring(b or \"\")\ end\ \ local function _bufnew(s)\ if buffer and type(buffer.fromstring) == \"function\" then\ local ok, b = pcall(buffer.fromstring, s)\ if ok then return b end\ end\ return s\ end\ \ _extraServices.EncodingService = setmetatable({}, {\ __metatable = \"Instance\",\ __tostring = function() return \"EncodingService\" end,\ __newindex = rawset,\ __index = function(_, k)\ if k == \"ClassName\" then return \"EncodingService\" end\ if k == \"Name\" then return \"EncodingService\" end\ if k == \"IsA\" then return function(_, cn) return cn == \"EncodingService\" or cn == \"Instance\" end end\ if k == \"Base64Encode\" then return function(_, buf) return _bufnew(_b64enc(_bufstr(buf))) end end\ if k == \"Base64Decode\" then return function(_, buf) return _bufnew(_b64dec(_bufstr(buf))) end end\ if k == \"ZstdCompress\" then return function(_, buf) return _bufnew(\"\\0ZSTD\\0\" .. _bufstr(buf)) end end\ if k == \"ZstdDecompress\" then\ return function(_, buf)\ local raw = _bufstr(buf)\ if raw:sub(1,6) == \"\\0ZSTD\\0\" then raw = raw:sub(7) end\ return _bufnew(raw)\ end\ end\ return nil\ end,\ })\ end\ _extraServices.MessagingService = _MessagingService\ _extraServices.CoreGui = _CoreGui\ _extraServices.StudioService = _StudioService\ _extraServices.ScriptContext = _ScriptContext\ _extraServices.NetworkClient = _NetworkClient\ _extraServices.NetworkServer = _NetworkServer\ _extraServices.UserService = _UserService\ _extraServices.KeyframeSequenceProvider = _KeyframeSequenceProvider\ _extraServices.SpawnerService = _SpawnerService\ _extraServices.TouchInputService = _TouchInputService\ _extraServices.TestService = _TestService\ _extraServices.RbxAnalyticsService = _RbxAnalyticsService\ _extraServices.CookiesService = _CookiesService\ _extraServices.OmniRecommendationsService = _OmniRecommendationsService\ _extraServices.GuiInsetService = _GuiInsetService\ _extraServices.RobloxReplicatedStorage = _RobloxReplicatedStorage\ _extraServices.ChangeHistoryService = _ChangeHistoryService\ _extraServices.Selection = _RunningAverageItemDouble\ end\ \ local _LocalPlayer\ do\ local function mk(class, fields)\ fields = fields or {}\ fields.ClassName = class\ fields.Name = fields.Name or class\ fields.Archivable = true\ fields.Destroy = function(self) self.Parent = nil end\ return _bypass_new(_InstanceMT, fields)\ end\ \ local _RootPart = mk(\"Part\", {\ Name = \"HumanoidRootPart\",\ Size = _Vector3.new(2, 2, 1),\ CFrame = _CFrame.new(0, 5, 0),\ Position = _Vector3.new(0, 5, 0),\ Anchored = false, CanCollide = false, Transparency = 1,\ Velocity = _Vector3.new(),\ AssemblyLinearVelocity = _Vector3.new(),\ AssemblyAngularVelocity = _Vector3.new(),\ })\ local _Head = mk(\"Part\", {\ Name = \"Head\", Size = _Vector3.new(2, 1, 1),\ Position = _Vector3.new(0, 6.5, 0), CFrame = _CFrame.new(0, 6.5, 0),\ })\ local _UpperTorso = mk(\"Part\", { Name = \"UpperTorso\", Size = _Vector3.new(2, 1, 1) })\ local _LowerTorso = mk(\"Part\", { Name = \"LowerTorso\", Size = _Vector3.new(2, 1, 1) })\ local _LeftUpperArm = mk(\"Part\", { Name = \"LeftUpperArm\", Size = _Vector3.new(1, 1, 1) })\ local _LeftLowerArm = mk(\"Part\", { Name = \"LeftLowerArm\", Size = _Vector3.new(1, 1, 1) })\ local _LeftHand = mk(\"Part\", { Name = \"LeftHand\", Size = _Vector3.new(1, 1, 1) })\ local _RightUpperArm = mk(\"Part\", { Name = \"RightUpperArm\", Size = _Vector3.new(1, 1, 1) })\ local _RightLowerArm = mk(\"Part\", { Name = \"RightLowerArm\", Size = _Vector3.new(1, 1, 1) })\ local _RightHand = mk(\"Part\", { Name = \"RightHand\", Size = _Vector3.new(1, 1, 1) })\ local _LeftUpperLeg = mk(\"Part\", { Name = \"LeftUpperLeg\", Size = _Vector3.new(1, 1, 1) })\ local _LeftLowerLeg = mk(\"Part\", { Name = \"LeftLowerLeg\", Size = _Vector3.new(1, 1, 1) })\ local _LeftFoot = mk(\"Part\", { Name = \"LeftFoot\", Size = _Vector3.new(1, 1, 1) })\ local _RightUpperLeg = mk(\"Part\", { Name = \"RightUpperLeg\", Size = _Vector3.new(1, 1, 1) })\ local _RightLowerLeg = mk(\"Part\", { Name = \"RightLowerLeg\", Size = _Vector3.new(1, 1, 1) })\ local _RightFoot = mk(\"Part\", { Name = \"RightFoot\", Size = _Vector3.new(1, 1, 1) })\ \ local _Humanoid = mk(\"Humanoid\", {\ Health = 100, MaxHealth = 100,\ WalkSpeed = 16, JumpPower = 50, JumpHeight = 7.2,\ HipHeight = 0,\ AutoRotate = true, PlatformStand = false, Sit = false,\ UseJumpPower = true, BreakJointsOnDeath = true,\ EvaluateStateMachine = true,\ RigType = \"R15\", DisplayName = \"Player1\",\ DisplayDistanceType = \"Viewer\",\ HealthDisplayType = \"DisplayWhenDamaged\",\ MoveDirection = _Vector3.new(),\ LookVector = _Vector3.new(0, 0, -1),\ RootPart = _RootPart,\ FloorMaterial = \"Plastic\",\ Died = _bypass_makeSignal(\"Died\"),\ Running = _bypass_makeSignal(\"Running\"),\ Jumping = _bypass_makeSignal(\"Jumping\"),\ Climbing = _bypass_makeSignal(\"Climbing\"),\ HealthChanged = _bypass_makeSignal(\"HealthChanged\"),\ StateChanged = _bypass_makeSignal(\"StateChanged\"),\ Touched = _bypass_makeSignal(\"Touched\"),\ Seated = _bypass_makeSignal(\"Seated\"),\ FreeFalling = _bypass_makeSignal(\"FreeFalling\"),\ ChangeState = function() end,\ SetStateEnabled = function() end,\ GetState = function() return \"Running\" end,\ Move = function() end,\ MoveTo = function() end,\ TakeDamage = function(self, dmg)\ self.Health = math.max(0, (self.Health or 0) - (tonumber(dmg) or 0))\ end,\ LoadAnimation = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"AnimationTrack\",\ IsPlaying = false, Length = 0,\ Play = function(s) s.IsPlaying = true end,\ Stop = function(s) s.IsPlaying = false end,\ AdjustSpeed = function() end,\ Stopped = _bypass_makeSignal(\"Stopped\"),\ })\ end,\ GetPlayingAnimationTracks = function() return {} end,\ })\ local _Animator = mk(\"Animator\", {\ LoadAnimation = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"AnimationTrack\", IsPlaying = false, Length = 0,\ Play = function(s) s.IsPlaying = true end,\ Stop = function(s) s.IsPlaying = false end,\ })\ end,\ })\ \ local _Character\ local _characterChildren = {\ _Humanoid, _Animator, _RootPart, _Head,\ _UpperTorso, _LowerTorso,\ _LeftUpperArm, _LeftLowerArm, _LeftHand,\ _RightUpperArm, _RightLowerArm, _RightHand,\ _LeftUpperLeg, _LeftLowerLeg, _LeftFoot,\ _RightUpperLeg, _RightLowerLeg, _RightFoot,\ }\ _Character = mk(\"Model\", {\ Name = \"Player1\",\ PrimaryPart = _RootPart,\ Humanoid = _Humanoid,\ HumanoidRootPart = _RootPart,\ Head = _Head,\ GetChildren = function() return _characterChildren end,\ GetDescendants = function() return _characterChildren end,\ FindFirstChild = function(_self, name)\ for i = 1, #_characterChildren do\ if _characterChildren[i].Name == name then return _characterChildren[i] end\ end\ return nil\ end,\ FindFirstChildOfClass = function(_self, cls)\ for i = 1, #_characterChildren do\ if _characterChildren[i].ClassName == cls then return _characterChildren[i] end\ end\ return nil\ end,\ FindFirstChildWhichIsA = function(_self, cls)\ for i = 1, #_characterChildren do\ if _characterChildren[i].ClassName == cls then return _characterChildren[i] end\ end\ return nil\ end,\ WaitForChild = function(self, name) return self:FindFirstChild(name) end,\ GetPivot = function() return _RootPart.CFrame end,\ PivotTo = function() end,\ MoveTo = function() end,\ SetPrimaryPartCFrame = function() end,\ })\ for i = 1, #_characterChildren do _characterChildren[i].Parent = _Character end\ \ local _Backpack = mk(\"Backpack\")\ local _PlayerGui = mk(\"PlayerGui\")\ local _PlayerScripts = mk(\"PlayerScripts\")\ local _StarterGear = mk(\"StarterGear\")\ \ local _Coins = mk(\"IntValue\", { Name = \"Coins\", Value = 0 })\ local _Level = mk(\"IntValue\", { Name = \"Level\", Value = 1 })\ local _Score = mk(\"NumberValue\", { Name = \"Score\", Value = 0 })\ local _statsChildren = { _Coins, _Level, _Score }\ local _leaderstats = mk(\"Folder\", {\ Name = \"leaderstats\",\ Coins = _Coins, Level = _Level, Score = _Score,\ GetChildren = function() return _statsChildren end,\ GetDescendants = function() return _statsChildren end,\ FindFirstChild = function(_self, name)\ for i = 1, #_statsChildren do\ if _statsChildren[i].Name == name then return _statsChildren[i] end\ end\ return nil\ end,\ WaitForChild = function(self, name) return self:FindFirstChild(name) end,\ })\ for _, s in ipairs(_statsChildren) do s.Parent = _leaderstats end\ \ local _playerChildren = {\ _Backpack, _PlayerGui, _PlayerScripts, _StarterGear, _leaderstats,\ }\ \ _LocalPlayer = _bypass_new(_InstanceMT, {\ ClassName = \"Player\",\ Name = \"Player1\",\ DisplayName = \"Player1\",\ UserId = 1234567,\ UserName = \"Player1\",\ AccountAge = 365,\ FollowUserId = 0,\ CanLoadCharacterAppearance = true,\ AutoJumpEnabled = true,\ CameraMaxZoomDistance = 400,\ CameraMinZoomDistance = 0.5,\ CameraMode = \"Classic\",\ DevCameraOcclusionMode = \"Zoom\",\ Neutral = true,\ Team = nil,\ TeamColor = nil,\ RespawnLocation = nil,\ ReplicationFocus = _RootPart,\ MembershipType = \"None\",\ LocaleId = \"en-us\",\ GameplayPaused = false,\ \ Character = _Character,\ Backpack = _Backpack,\ PlayerGui = _PlayerGui,\ PlayerScripts = _PlayerScripts,\ StarterGear = _StarterGear,\ leaderstats = _leaderstats,\ \ CharacterAdded = _bypass_makeSignal(\"CharacterAdded\"),\ CharacterRemoving = _bypass_makeSignal(\"CharacterRemoving\"),\ CharacterAppearanceLoaded = _bypass_makeSignal(\"CharacterAppearanceLoaded\"),\ Idled = _bypass_makeSignal(\"Idled\"),\ Chatted = _bypass_makeSignal(\"Chatted\"),\ OnTeleport = _bypass_makeSignal(\"OnTeleport\"),\ \ GetChildren = function() return _playerChildren end,\ GetDescendants = function() return _playerChildren end,\ FindFirstChild = function(_self, name)\ for i = 1, #_playerChildren do\ if _playerChildren[i].Name == name then return _playerChildren[i] end\ end\ return nil\ end,\ WaitForChild = function(self, name) return self:FindFirstChild(name) end,\ \ GetMouse = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"Mouse\",\ Hit = _CFrame.new(),\ Origin = _CFrame.new(),\ Target = nil,\ TargetFilter = nil,\ UnitRay = _Ray and _Ray.new(_Vector3.new(), _Vector3.new(0,0,-1)) or nil,\ X = 0, Y = 0,\ ViewSizeX = 1280, ViewSizeY = 720,\ Button1Down = _bypass_makeSignal(\"Button1Down\"),\ Button1Up = _bypass_makeSignal(\"Button1Up\"),\ Button2Down = _bypass_makeSignal(\"Button2Down\"),\ Button2Up = _bypass_makeSignal(\"Button2Up\"),\ Move = _bypass_makeSignal(\"Move\"),\ KeyDown = _bypass_makeSignal(\"KeyDown\"),\ KeyUp = _bypass_makeSignal(\"KeyUp\"),\ })\ end,\ \ Kick = function() end,\ IsFriendsWith = function() return false end,\ IsInGroup = function() return false end,\ GetRankInGroup = function() return 0 end,\ GetRoleInGroup = function() return \"Guest\" end,\ GetFriendsOnline = function() return {} end,\ DistanceFromCharacter = function() return 0 end,\ HasAppearanceLoaded = function() return true end,\ WaitForAppearanceLoaded = function() end,\ SetSuperSafeChat = function() end,\ ClearCharacterAppearance = function() end,\ LoadCharacterAppearance = function() end,\ LoadCharacter = function(self) return self.Character end,\ LoadCharacterBlocking = function(self) return self.Character end,\ Move = function() end,\ GetJoinData = function() return {} end,\ GetNetworkPing = function() return 0.05 end,\ RequestStreamAroundAsync = function() end,\ })\ _Character.Parent = _LocalPlayer\ for _, c in ipairs(_playerChildren) do c.Parent = _LocalPlayer end\ end\ \ local _Players = _bypass_new(_InstanceMT, {\ ClassName = \"Players\",\ Name = \"Players\",\ LocalPlayer = _LocalPlayer,\ NumPlayers = 1, MaxPlayers = 16, PreferredPlayers = 16,\ CharacterAutoLoads = true,\ RespawnTime = 5,\ BubbleChat = false,\ ClassicChat = true,\ UseStrafingAnimations = false,\ \ GetPlayerByUserId = function(_self, id)\ if id == _LocalPlayer.UserId then return _LocalPlayer end\ return nil\ end,\ GetPlayerFromCharacter = function(_self, char)\ if char == _LocalPlayer.Character then return _LocalPlayer end\ return nil\ end,\ GetPlayers = function() return { _LocalPlayer } end,\ GetUserIdFromNameAsync = function(_self, _name) return _LocalPlayer.UserId end,\ GetNameFromUserIdAsync = function(_self, _id) return _LocalPlayer.Name end,\ GetUserThumbnailAsync = function() return \"rbxasset://textures/ui/GuiImagePlaceholder.png\", true end,\ GetHumanoidDescriptionFromUserId = function() return _bypass_new(_InstanceMT, { ClassName = \"HumanoidDescription\" }) end,\ GetHumanoidDescriptionFromOutfitId = function() return _bypass_new(_InstanceMT, { ClassName = \"HumanoidDescription\" }) end,\ CreateHumanoidModelFromDescription = function() return _LocalPlayer.Character end,\ CreateHumanoidModelFromUserId = function() return _LocalPlayer.Character end,\ Chat = function() end,\ TeamChat = function() end,\ PlayerAdded = _bypass_makeSignal(\"PlayerAdded\"),\ PlayerRemoving = _bypass_makeSignal(\"PlayerRemoving\"),\ PlayerMembershipChanged = _bypass_makeSignal(\"PlayerMembershipChanged\"),\ })\ \ local _services = {\ TextService = _TextService,\ GuiService = _GuiService,\ ContextActionService = _ContextActionService,\ SoundService = _SoundService,\ Lighting = _Lighting,\ ReplicatedStorage = _ReplicatedStorage,\ StarterGui = _StarterGui,\ PhysicsService = _PhysicsService,\ UserInputService = _UserInputService,\ Players = _Players,\ RunService = _RunService,\ HttpService = _HttpService,\ TweenService = _TweenService,\ }\ \ for _name, _svc in pairs(_extraServices) do\ _services[_name] = _svc\ end\ \ local _game = setmetatable({\ JobId = \"00000000-0000-0000-0000-000000000000\",\ PlaceId = 1818,\ GameId = 1818,\ ClassName = \"DataModel\",\ Players = _Players,\ Workspace = nil,\ GetService = function(self, name)\ local s = _services[name]\ if s == nil then\ error(\"Service \\\"\" .. tostring(name) .. \"\\\" is not a valid service\", 2)\ end\ return s\ end,\ FindService = function(_self, name)\ return _services[name]\ end,\ HttpGet = function() return \"\" end,\ }, {\ __type = \"Instance\",\ __tostring = function() return \"Game\" end,\ __index = _InstanceMT,\ })\ \ local _fakeCamera = _bypass_new(_InstanceMT, {\ ClassName = \"Camera\",\ Name = \"Camera\",\ CFrame = _CFrame.new(),\ CameraType = \"Custom\",\ CameraSubject = nil,\ ViewportSize = _Vector2.new(1280, 720),\ FieldOfView = 70,\ NearPlaneZ = -0.1,\ Focus = _CFrame.new(0,0,-10),\ HeadLocked = true,\ HeadScale = 1,\ DiagonalFieldOfView = 80,\ MaxAxisFieldOfView = 70,\ WorldToViewportPoint = function(_self, pos)\ return _Vector3.new(640, 360, 10), true\ end,\ WorldToScreenPoint = function(_self, pos)\ return _Vector3.new(640, 360, 10), true\ end,\ ViewportPointToRay = function(_self, x, y, depth)\ return { Origin = _Vector3.new(0,0,0), Direction = _Vector3.new(0,0,-1), Unit = _Vector3.new(0,0,-1) }\ end,\ ScreenPointToRay = function(_self, x, y, depth)\ return { Origin = _Vector3.new(0,0,0), Direction = _Vector3.new(0,0,-1), Unit = _Vector3.new(0,0,-1) }\ end,\ GetPartsObscuringTarget = function() return {} end,\ Interpolate = function() end,\ })\ local _workspace = _bypass_new(_InstanceMT, {\ ClassName = \"Workspace\",\ Name = \"Workspace\",\ Gravity = 196.2,\ CurrentCamera = _fakeCamera,\ FilteringEnabled = true,\ StreamingEnabled = false,\ StreamingMinRadius = 64,\ StreamingTargetRadius = 1024,\ RenderingDistance= 512,\ SignalBehavior = \"Default\",\ AllowThirdPartySales = false,\ AvatarUnificationMode = \"Default\",\ GamepadCursorMode = \"Default\",\ StreamingIntegrityMode = \"Disabled\",\ FallenPartsDestroyHeight = -500,\ AirDensity = 1,\ WaterWaveHeight = 0.5,\ WaterWaveSpeed = 10,\ WaterMaxViscosity = 0.3,\ WaterMinViscosity = 0.1,\ WaterOrigin = _Vector3.new(0, 0, 0),\ WaterLevel = 0,\ Raycast = function(_self, origin, direction, params)\ return nil\ end,\ Spherecast = function() return nil end,\ Blockcast = function() return nil end,\ FindPartOnRay = function() return nil end,\ FindPartOnRayWithIgnoreList = function() return nil end,\ FindPartOnRayWithWhitelist = function() return nil end,\ FindPartsInRegion3 = function() return {} end,\ FindPartsInRegion3WithIgnoreList = function() return {} end,\ FindPartsInRegion3WithWhitelist = function() return {} end,\ GetPartBoundsInBox = function() return {} end,\ GetPartBoundsInRadius = function() return {} end,\ GetPartsInPart = function() return {} end,\ ArePartsTouchingOthers = function() return false end,\ })\ _game.Workspace = _workspace\ \ local _knownClasses = {\ Part = true, MeshPart = true, UnionOperation = true,\ NegateOperation = true, WedgePart = true, CornerWedgePart = true,\ TrussPart = true, SpawnLocation = true, SkateboardPlatform = true,\ Seat = true, VehicleSeat = true, FlagStand = true,\ Model = true, Folder = true, Configuration = true, Actor = true,\ WorldModel = true, Backpack = true, PlayerGui = true,\ PlayerScripts = true, ReplicatedStorage = true, ServerStorage = true,\ StarterGear = true, StarterPack = true, StarterPlayerScripts = true,\ StarterCharacterScripts = true,\ Humanoid = true, HumanoidDescription = true, Animator = true,\ Animation = true, AnimationController = true, AnimationTrack = true,\ Accessory = true, Hat = true, Shirt = true, Pants = true,\ ShirtGraphic = true, BodyColors = true,\ CharacterMesh = true, SpecialMesh = true, BlockMesh = true,\ CylinderMesh = true, FileMesh = true,\ Tool = true, HopperBin = true, Handle = true,\ Weld = true, WeldConstraint = true, Motor = true, Motor6D = true,\ Snap = true, Glue = true, ManualWeld = true, ManualGlue = true,\ Rope = true, RopeConstraint = true, Spring = true, SpringConstraint = true,\ HingeConstraint = true, BallSocketConstraint = true,\ PrismaticConstraint = true, CylindricalConstraint = true,\ LineForce = true, AlignOrientation = true, AlignPosition = true,\ AngularVelocity = true, LinearVelocity = true, Plane = true,\ Torque = true, VectorForce = true, AngularServo = true,\ BodyVelocity = true, BodyAngularVelocity = true, BodyForce = true,\ BodyGyro = true, BodyPosition = true, BodyThrust = true,\ RocketPropulsion = true,\ Attachment = true, Bone = true, NoCollisionConstraint = true,\ Sound = true, SoundGroup = true, SoundEffect = true,\ DistortionSoundEffect = true, EchoSoundEffect = true,\ EqualizerSoundEffect = true, FlangeSoundEffect = true,\ PitchShiftSoundEffect = true, ReverbSoundEffect = true,\ TremoloSoundEffect = true, ChorusSoundEffect = true,\ CompressorSoundEffect = true,\ Fire = true, Smoke = true, Sparkles = true, Explosion = true,\ ParticleEmitter = true, Trail = true, Beam = true,\ PointLight = true, SurfaceLight = true, SpotLight = true,\ Atmosphere = true, Sky = true, Clouds = true, Terrain = true,\ BloomEffect = true, BlurEffect = true, ColorCorrectionEffect = true,\ DepthOfFieldEffect = true, SunRaysEffect = true, ColorGradingEffect = true,\ Camera = true,\ Frame = true, ScreenGui = true, SurfaceGui = true, BillboardGui = true,\ GuiMain = true, ScrollingFrame = true, CanvasGroup = true,\ TextLabel = true, TextButton = true, TextBox = true,\ ImageLabel = true, ImageButton = true, ViewportFrame = true,\ VideoFrame = true, ProximityPrompt = true,\ UICorner = true, UIPadding = true, UIListLayout = true,\ UIGridLayout = true, UIPageLayout = true, UITableLayout = true,\ UIAspectRatioConstraint = true, UISizeConstraint = true,\ UITextSizeConstraint = true, UIStroke = true, UIGradient = true,\ UIScale = true, UIFlexItem = true,\ Highlight = true, SelectionBox = true, SelectionSphere = true,\ BoxHandleAdornment = true, ConeHandleAdornment = true,\ CylinderHandleAdornment = true, ImageHandleAdornment = true,\ LineHandleAdornment = true, SphereHandleAdornment = true,\ RemoteEvent = true, RemoteFunction = true,\ BindableEvent = true, BindableFunction = true,\ UnreliableRemoteEvent = true,\ Script = true, LocalScript = true, ModuleScript = true,\ StringValue = true, IntValue = true, NumberValue = true,\ BoolValue = true, ObjectValue = true, BrickColorValue = true,\ Color3Value = true, Vector3Value = true, CFrameValue = true,\ RayValue = true, IntConstrainedValue = true, NumberConstrainedValue = true,\ PathfindingModifier = true, PathfindingLink = true,\ ValueBase = true, RemoteEvent2 = false,\ Team = true,\ BillboardGui2 = false,\ Decal = true, Texture = true,\ }\ for k, v in pairs(_knownClasses) do\ if v ~= true then _knownClasses[k] = nil end\ end\ \ local _classDefaults = {\ Humanoid = {\ Health = 100, MaxHealth = 100, WalkSpeed = 16, JumpPower = 50,\ JumpHeight = 7.2, HipHeight = 0,\ AutoRotate = true, PlatformStand = false, Sit = false,\ RigType = \"R15\", DisplayDistanceType = \"Viewer\",\ HealthDisplayType = \"DisplayWhenDamaged\",\ UseJumpPower = true, BreakJointsOnDeath = true,\ EvaluateStateMachine = true,\ MoveDirection = nil,\ ChangeState = function() end,\ TakeDamage = function(self, dmg)\ self.Health = math.max(0, (self.Health or 0) - (tonumber(dmg) or 0))\ end,\ Move = function() end,\ MoveTo = function() end,\ LoadAnimation = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"AnimationTrack\",\ IsPlaying = false, Length = 0,\ Play = function() end, Stop = function() end,\ })\ end,\ GetState = function() return \"Running\" end,\ SetStateEnabled = function() end,\ },\ MeshPart = {\ MeshId = \"\", TextureID = \"\", DoubleSided = false,\ RenderFidelity = \"Automatic\", CollisionFidelity = \"Default\",\ Size = nil,\ },\ Sound = {\ SoundId = \"\", Volume = 0.5, Playing = false, Looped = false,\ TimePosition = 0, PlaybackSpeed = 1, RollOffMode = \"Inverse\",\ Play = function(self) self.Playing = true end,\ Stop = function(self) self.Playing = false end,\ Pause = function(self) self.Playing = false end,\ Resume = function(self) self.Playing = true end,\ },\ ParticleEmitter = {\ Rate = 20, Lifetime = nil, Speed = nil, Size = nil,\ Texture = \"\", Enabled = true, LightEmission = 0,\ LightInfluence = 1, ZOffset = 0, Drag = 0,\ Emit = function() end, Clear = function() end,\ },\ ProximityPrompt = {\ ActionText = \"Interact\", ObjectText = \"\", HoldDuration = 0,\ MaxActivationDistance = 10, KeyboardKeyCode = nil,\ Enabled = true, RequiresLineOfSight = true,\ Triggered = nil,\ TriggerEnded = nil,\ PromptShown = nil,\ PromptHidden = nil,\ InputHoldBegan = nil,\ InputHoldEnded = nil,\ },\ Animation = {\ AnimationId = \"\",\ },\ Tool = {\ Equipped = nil, Unequipped = nil, Activated = nil, Deactivated = nil,\ Grip = nil, GripUp = nil, GripPos = nil,\ RequiresHandle = true, Enabled = true, ManualActivationOnly = false,\ },\ RemoteEvent = {\ FireServer = function() end,\ FireClient = function() end,\ FireAllClients = function() end,\ OnServerEvent = nil,\ OnClientEvent = nil,\ },\ RemoteFunction = {\ InvokeServer = function() return nil end,\ InvokeClient = function() return nil end,\ OnServerInvoke = nil, OnClientInvoke = nil,\ },\ BindableEvent = {\ Fire = function() end,\ Event = nil,\ },\ BindableFunction = {\ Invoke = function() return nil end,\ OnInvoke = nil,\ },\ StringValue = { Value = \"\" },\ IntValue = { Value = 0 },\ NumberValue = { Value = 0 },\ BoolValue = { Value = false },\ ObjectValue = { Value = nil },\ Vector3Value = { Value = nil },\ CFrameValue = { Value = nil },\ Color3Value = { Value = nil },\ BrickColorValue = { Value = nil },\ Animator = {\ LoadAnimation = function()\ return _bypass_new(_InstanceMT, {\ ClassName = \"AnimationTrack\", IsPlaying = false, Length = 0,\ Play = function() end, Stop = function() end,\ })\ end,\ },\ Camera = {\ CFrame = nil,\ FieldOfView = 70, CameraType = \"Custom\",\ ViewportSize = nil,\ },\ Highlight = {\ FillColor = nil, OutlineColor = nil,\ FillTransparency = 0.5, OutlineTransparency = 0,\ DepthMode = \"AlwaysOnTop\", Enabled = true, Adornee = nil,\ },\ Beam = { Enabled = true, Width0 = 1, Width1 = 1, Segments = 10, LightEmission = 0 },\ Trail = { Enabled = true, Lifetime = 2, MinLength = 0.1, FaceCamera = false },\ PointLight = { Brightness = 1, Range = 8, Color = nil, Enabled = true, Shadows = false },\ SpotLight = { Brightness = 1, Range = 16, Angle = 90, Color = nil, Enabled = true, Shadows = false, Face = \"Front\" },\ SurfaceLight = { Brightness = 1, Range = 16, Angle = 180, Color = nil, Enabled = true, Shadows = false, Face = \"Top\" },\ SelectionBox = {\ Color3 = nil, LineThickness = 0.05, SurfaceColor3 = nil,\ SurfaceTransparency = 0.5, Adornee = nil,\ },\ WeldConstraint = {\ Part0 = nil, Part1 = nil, Enabled = true,\ C0 = nil, C1 = nil,\ },\ Weld = {\ Part0 = nil, Part1 = nil, C0 = nil, C1 = nil,\ },\ Motor6D = {\ Part0 = nil, Part1 = nil, C0 = nil, C1 = nil,\ MaxVelocity = 0, DesiredAngle = 0, CurrentAngle = 0,\ },\ HingeConstraint = {\ Enabled = true, LimitsEnabled = false, MotorEnabled = false,\ LowerAngle = -180, UpperAngle = 180, TargetAngle = 0,\ AngularSpeed = 0, AngularVelocity = 0, ActuatorType = \"None\",\ },\ Frame = {\ BackgroundColor3 = nil, BackgroundTransparency = 0,\ BorderColor3 = nil, BorderSizePixel = 1, BorderMode = \"Outline\",\ ClipsDescendants = false, Position = nil, Size = nil,\ AnchorPoint = nil, ZIndex = 1, Visible = true,\ LayoutOrder = 0, AutomaticSize = \"None\",\ Rotation = 0, Active = false,\ },\ TextLabel = {\ BackgroundColor3 = nil, BackgroundTransparency = 0, TextColor3 = nil,\ Text = \"\", TextSize = 14, Font = \"SourceSans\",\ TextWrapped = false, TextScaled = false, TextTransparency = 0,\ TextXAlignment = \"Center\", TextYAlignment = \"Center\",\ LineHeight = 1, MaxVisibleGraphemes = -1,\ Position = nil, Size = nil, AnchorPoint = nil,\ ZIndex = 1, Visible = true, LayoutOrder = 0, AutomaticSize = \"None\",\ },\ TextButton = {\ BackgroundColor3 = nil, BackgroundTransparency = 0, TextColor3 = nil,\ Text = \"\", TextSize = 14, Font = \"SourceSans\",\ TextWrapped = false, TextScaled = false, TextTransparency = 0,\ Modal = false, Selected = false, Active = true,\ Position = nil, Size = nil, AnchorPoint = nil,\ ZIndex = 1, Visible = true, LayoutOrder = 0, AutomaticSize = \"None\",\ MouseButton1Click = nil, MouseButton2Click = nil,\ MouseButton1Down = nil, MouseButton2Down = nil,\ MouseButton1Up = nil, MouseButton2Up = nil,\ MouseEnter = nil, MouseLeave = nil,\ },\ TextBox = {\ BackgroundColor3 = nil, BackgroundTransparency = 0, TextColor3 = nil,\ Text = \"\", PlaceholderText = \"\", TextSize = 14, Font = \"SourceSans\",\ TextWrapped = false, TextScaled = false, ClearTextOnFocus = true,\ MultiLine = false, TextEditable = true,\ Position = nil, Size = nil, AnchorPoint = nil,\ ZIndex = 1, Visible = true,\ FocusLost = nil, Focused = nil,\ CaptureFocus = function(self) end,\ ReleaseFocus = function(self) end,\ },\ ImageLabel = {\ BackgroundColor3 = nil, BackgroundTransparency = 0,\ Image = \"\", ImageTransparency = 0, ImageColor3 = nil,\ ScaleType = \"Stretch\", TileSize = nil, SliceCenter = nil, SliceScale = 1,\ Position = nil, Size = nil, AnchorPoint = nil,\ ZIndex = 1, Visible = true, LayoutOrder = 0, AutomaticSize = \"None\",\ },\ ImageButton = {\ BackgroundColor3 = nil, BackgroundTransparency = 0,\ Image = \"\", ImageTransparency = 0, ImageColor3 = nil,\ ScaleType = \"Stretch\", Modal = false, Selected = false, Active = true,\ Position = nil, Size = nil, AnchorPoint = nil,\ ZIndex = 1, Visible = true, LayoutOrder = 0,\ MouseButton1Click = nil, MouseButton2Click = nil,\ MouseEnter = nil, MouseLeave = nil,\ },\ ScreenGui = {\ Enabled = true, ResetOnSpawn = true, ZIndexBehavior = \"Sibling\",\ DisplayOrder = 0, IgnoreGuiInset = false,\ },\ SurfaceGui = {\ Enabled = true, Face = \"Front\", ZOffset = 0,\ LightInfluence = 1, AlwaysOnTop = false,\ SizingMode = \"FixedSize\", PixelsPerStud = 50,\ },\ BillboardGui = {\ Enabled = true, Size = nil, SizeOffset = nil,\ StudsOffset = nil, AlwaysOnTop = false, Brightness = 1,\ ExtentsOffset = nil, LightInfluence = 0,\ },\ ScrollingFrame = {\ BackgroundColor3 = nil, BackgroundTransparency = 0,\ CanvasPosition = nil, CanvasSize = nil,\ ScrollBarThickness = 12, ScrollingEnabled = true,\ ElasticBehavior = \"WhenScrollable\", ScrollBarImageTransparency = 0,\ ScrollBarImageColor3 = nil, VerticalScrollBarInset = \"None\",\ HorizontalScrollBarInset = \"None\", ScrollingDirection = \"Y\",\ AutomaticCanvasSize = \"None\",\ },\ UIListLayout = {\ Padding = nil, FillDirection = \"Vertical\",\ HorizontalAlignment = \"Left\", VerticalAlignment = \"Top\",\ SortOrder = \"LayoutOrder\", WrapsAround = false,\ ItemLineAlignment = \"Automatic\",\ },\ UIGridLayout = {\ CellSize = nil, CellPadding = nil,\ FillDirection = \"Horizontal\", FillDirectionMaxCells = 0,\ HorizontalAlignment = \"Left\", VerticalAlignment = \"Top\",\ SortOrder = \"LayoutOrder\", StartCorner = \"TopLeft\",\ },\ UIPadding = { PaddingTop = nil, PaddingBottom = nil, PaddingLeft = nil, PaddingRight = nil },\ UICorner = { CornerRadius = nil },\ UIStroke = { Color = nil, Thickness = 1, Transparency = 0, Enabled = true, LineJoinMode = \"Round\", ApplyStrokeMode = \"Border\" },\ UIGradient = { Color = nil, Transparency = nil, Offset = nil, Rotation = 0, Enabled = true },\ UIScale = { Scale = 1 },\ UIAspectRatioConstraint = { AspectRatio = 1, AspectType = \"FitWithinMaxSize\", DominantAxis = \"Width\" },\ UISizeConstraint = { MaxSize = nil, MinSize = nil },\ UITextSizeConstraint = { MaxTextSize = 100, MinTextSize = 1 },\ Decal = { Texture = \"\", Transparency = 0, Color3 = nil, Face = \"Front\", ZIndex = 0, LocalTransparencyModifier = 0 },\ Texture = { Texture = \"\", Transparency = 0, Color3 = nil, Face = \"Front\", StudsPerTileU = 2, StudsPerTileV = 2, OffsetStudsU = 0, OffsetStudsV = 0 },\ Sky = { SkyboxBk = \"\", SkyboxDn = \"\", SkyboxFt = \"\", SkyboxLf = \"\", SkyboxRt = \"\", SkyboxUp = \"\", SunAngularSize = 21, MoonAngularSize = 11, SunTextureId = \"\", MoonTextureId = \"\", StarCount = 3000, CelestialBodiesShown = true },\ Atmosphere = { Density = 0.395, Offset = 0, Color = nil, Decay = nil, Glare = 0, Haze = 0 },\ Humanoid_R15 = nil,\ AnimationTrack = {\ IsPlaying = false, Length = 0, Speed = 1, TimePosition = 0,\ WeightCurrent = 1, WeightTarget = 1, Priority = \"Core\",\ Play = function(self, fadeTime, weight, speed)\ self.IsPlaying = true\ self.Speed = speed or 1\ end,\ Stop = function(self, fadeTime)\ self.IsPlaying = false\ end,\ Pause = function(self)\ self.IsPlaying = false\ end,\ AdjustSpeed = function(self, speed) self.Speed = speed or 1 end,\ AdjustWeight = function(self, weight) self.WeightTarget = weight or 1 end,\ GetMarkerReachedSignal = function(self, name)\ if not rawget(self, \"_markerSignals\") then rawset(self, \"_markerSignals\", {}) end\ if not self._markerSignals[name] then\ self._markerSignals[name] = { Connect = function() return { Disconnect = function() end } end, Wait = function() end }\ end\ return self._markerSignals[name]\ end,\ GetTimeOfKeyframe = function() return 0 end,\ KeyframeReached = nil,\ Stopped = nil,\ DidLoop = nil,\ },\ }\ \ local _Instance\ _Instance = {}\ \ _Instance.new = function(class, parent)\ if type(class) ~= \"string\" or not _knownClasses[class] then\ error(\"Unable to create an Instance of type \\\"\" .. tostring(class) .. \"\\\"\", 2)\ end\ \ local fields = {\ ClassName = class, Name = class, Parent = parent,\ Archivable = true, _children = {},\ }\ \ local defs = _classDefaults[class]\ if defs then\ for k, v in pairs(defs) do fields[k] = v end\ end\ \ if class == \"Humanoid\" then fields.MoveDirection = _Vector3.new() end\ if class == \"MeshPart\" then fields.Size = fields.Size or _Vector3.new(2, 2, 2) end\ if class == \"Camera\" then\ fields.CFrame = fields.CFrame or _CFrame.new()\ fields.ViewportSize = fields.ViewportSize or _Vector2.new(1280, 720)\ end\ if class == \"Vector3Value\" then fields.Value = fields.Value or _Vector3.new() end\ if class == \"CFrameValue\" then fields.Value = fields.Value or _CFrame.new() end\ if class == \"Color3Value\" then fields.Value = _Color3.new() end\ if class == \"BrickColorValue\" then fields.Value = _BrickColor.new() end\ if class == \"Highlight\" then\ fields.FillColor = _Color3.fromRGB(255, 255, 255)\ fields.OutlineColor = _Color3.fromRGB(0, 0, 0)\ end\ if class == \"PointLight\" or class == \"SpotLight\" or class == \"SurfaceLight\" then\ fields.Color = _Color3.fromRGB(255, 255, 255)\ end\ if class == \"ParticleEmitter\" then\ fields.Lifetime = _NumberRange.new(1, 1)\ fields.Speed = _NumberRange.new(5, 5)\ fields.Size = _NumberSequence.new(1)\ end\ \ if class == \"RemoteEvent\" then\ fields.OnServerEvent = _bypass_makeSignal(\"OnServerEvent\")\ fields.OnClientEvent = _bypass_makeSignal(\"OnClientEvent\")\ end\ if class == \"BindableEvent\" then\ fields.Event = _bypass_makeSignal(\"Event\")\ end\ if class == \"ProximityPrompt\" then\ fields.Triggered = _bypass_makeSignal(\"Triggered\")\ fields.TriggerEnded = _bypass_makeSignal(\"TriggerEnded\")\ fields.PromptShown = _bypass_makeSignal(\"PromptShown\")\ fields.PromptHidden = _bypass_makeSignal(\"PromptHidden\")\ fields.InputHoldBegan = _bypass_makeSignal(\"InputHoldBegan\")\ fields.InputHoldEnded = _bypass_makeSignal(\"InputHoldEnded\")\ end\ if class == \"Tool\" then\ fields.Equipped = _bypass_makeSignal(\"Equipped\")\ fields.Unequipped = _bypass_makeSignal(\"Unequipped\")\ fields.Activated = _bypass_makeSignal(\"Activated\")\ fields.Deactivated = _bypass_makeSignal(\"Deactivated\")\ end\ \ return _bypass_new(_InstanceMT, fields)\ end\ \ _Instance.fromExisting = function(other)\ if type(other) ~= \"table\" then return nil end\ return _Instance.new(other.ClassName or \"Folder\")\ end\ \ local function _bypass_typeof(v)\ local t = type(v)\ if t ~= \"table\" and t ~= \"userdata\" then return t end\ local mt = getmetatable(v)\ if mt and mt.__type then return mt.__type end\ return t\ end\ \ local _newproxy = newproxy or function(_)\ return io.stdout\ end\ \ local _bypassStart = os.clock()\ local function _bypass_tick()\ return os.time() + (os.clock() - _bypassStart)\ end\ \ local _bypassEnv = {\ print = print, error = error, pcall = pcall, xpcall = xpcall,\ select = select, tostring = tostring, tonumber = tonumber,\ type = type, ipairs = ipairs, pairs = pairs, next = next,\ setmetatable = setmetatable, getmetatable = getmetatable,\ rawget = rawget, rawset = rawset, rawequal = rawequal,\ unpack = unpack, math = math, string = string, table = table,\ os = os, io = io, assert = assert, _VERSION = _VERSION,\ \ game = _game,\ workspace = _workspace,\ Workspace = _workspace,\ Instance = _Instance,\ Enum = _Enum,\ Vector2 = _Vector2,\ Vector3 = _Vector3,\ CFrame = _CFrame,\ UDim = _UDim,\ UDim2 = _UDim2,\ Color3 = _Color3,\ BrickColor = _BrickColor,\ NumberSequence = _NumberSequence,\ NumberRange = _NumberRange,\ TweenInfo = _TweenInfo,\ Ray = _Ray,\ Rect = _Rect,\ typeof = _bypass_typeof,\ tick = _bypass_tick,\ newproxy = _newproxy,\ warn = warn,\ task = (function()\ local _taskQueue = {}\ local function _safeCall(f, ...)\ if type(f) ~= \"function\" then return end\ local a = {...}\ local ok, err = pcall(function() f(table.unpack(a)) end)\ if not ok and type(err) == \"string\" and not err:match(\"^__FLAMEDUMPER\") then\ warn(\"[task] \" .. tostring(err))\ end\ end\ return {\ wait = function(t) return t or 0 end,\ spawn = function(f, ...) _safeCall(f, ...) end,\ delay = function(d, f, ...) _safeCall(f, ...) end,\ defer = function(f, ...) _safeCall(f, ...) end,\ synchronize = function() end,\ desynchronize = function() end,\ cancel = function(thread) if type(thread) == \"thread\" then pcall(coroutine.close, thread) end end,\ }\ end)(),\ wait = function(t) return t or 0 end,\ spawn = function(f, ...) local a={...}; pcall(f, table.unpack(a)) end,\ delay = function(_, f, ...) local a={...}; pcall(f, table.unpack(a)) end,\ \ coroutine = coroutine,\ debug = debug or {\ traceback = function(msg) return tostring(msg or \"\") end,\ getinfo = function() return { source = \"[C]\", currentline = -1, what = \"C\" } end,\ },\ bit32 = bit32 or _G.bit32,\ utf8 = utf8 or _G.utf8,\ getfenv = getfenv or function() return _bypassEnv end,\ setfenv = setfenv or function(_, _) end,\ \ loadfile = function(path)\ error(\"loadfile is disabled for security reasons\", 2)\ end,\ dofile = function(path)\ error(\"dofile is disabled for security reasons\", 2)\ end,\ require = function(modname)\ error(\"require is disabled in this environment\", 2)\ end,\ \ script = nil,\ \ shared = {},\ _shared = {},\ \ Font = setmetatable({\ new = function(family, weight, style)\ return { Family=tostring(family or \"\"), Weight=weight or 400, Style=style or \"Normal\",\ Bold=false, Strikethrough=false, Underline=false,\ __type=\"Font\" }\ end,\ fromName = function(name, weight, style)\ return _bypassEnv.Font.new(\"rbxasset://fonts/families/\"..tostring(name or \"Arial\")..\".json\", weight, style)\ end,\ fromEnum = function(enumItem)\ local name = type(enumItem)==\"table\" and (enumItem.Name or \"Arial\") or tostring(enumItem)\ return _bypassEnv.Font.new(\"rbxasset://fonts/families/\"..name..\".json\")\ end,\ }, { __call = function(_, ...) return _bypassEnv.Font.new(...) end }),\ \ Vector3int16 = setmetatable({\ new = function(x,y,z)\ x,y,z = math.floor(tonumber(x) or 0), math.floor(tonumber(y) or 0), math.floor(tonumber(z) or 0)\ return { X=x, Y=y, Z=z, __type=\"Vector3int16\" }\ end,\ }, {}),\ \ Vector2int16 = setmetatable({\ new = function(x,y)\ x,y = math.floor(tonumber(x) or 0), math.floor(tonumber(y) or 0)\ return { X=x, Y=y, __type=\"Vector2int16\" }\ end,\ }, {}),\ \ CatalogSearchParams = setmetatable({\ new = function()\ return { SearchKeyword=\"\", SortType=0, CategoryFilter=0, BundleTypes={}, AssetTypes={},\ IncludeOffSale=false, CreatorName=\"\", Limit=30, __type=\"CatalogSearchParams\" }\ end,\ }, {}),\ }\ \ _bypassEnv.script = _bypass_new(_InstanceMT, {\ ClassName = \"LocalScript\",\ Name = \"LocalScript\",\ Parent = _game,\ Disabled = false,\ Source = \"\",\ })\ \ _bypassEnv.Random = _extraDataTypes.Random\ _bypassEnv.DateTime = _extraDataTypes.DateTime\ _bypassEnv.Region3 = _extraDataTypes.Region3\ _bypassEnv.RaycastParams = _extraDataTypes.RaycastParams\ _bypassEnv.OverlapParams = _extraDataTypes.OverlapParams\ _bypassEnv.PathWaypoint = _extraDataTypes.PathWaypoint\ _bypassEnv.Faces = _extraDataTypes.Faces\ _bypassEnv.Axes = _extraDataTypes.Axes\ _bypassEnv.PhysicalProperties = _extraDataTypes.PhysicalProperties\ _bypassEnv.ColorSequence = _extraDataTypes.ColorSequence\ _bypassEnv.ColorSequenceKeypoint = _extraDataTypes.ColorSequenceKeypoint\ _bypassEnv.NumberSequenceKeypoint = _extraDataTypes.NumberSequenceKeypoint\ \ _bypassEnv.Vector3int16 = _bypassEnv.Vector3int16 or setmetatable({ new = function(x,y,z)\ return { X=math.floor(tonumber(x) or 0), Y=math.floor(tonumber(y) or 0), Z=math.floor(tonumber(z) or 0), __type=\"Vector3int16\" }\ end }, {})\ _bypassEnv.Vector2int16 = _bypassEnv.Vector2int16 or setmetatable({ new = function(x,y)\ return { X=math.floor(tonumber(x) or 0), Y=math.floor(tonumber(y) or 0), __type=\"Vector2int16\" }\ end }, {})\ \ do\ local _injectGlobals = {\ \"print\",\"warn\",\"error\",\"assert\",\"pcall\",\"xpcall\",\"pairs\",\"ipairs\",\"next\",\"select\",\ \"tostring\",\"tonumber\",\"type\",\"rawget\",\"rawset\",\"rawequal\",\"setmetatable\",\"getmetatable\",\ \"unpack\",\"math\",\"string\",\"table\",\"coroutine\",\"io\",\"os\",\"debug\",\"bit32\",\"utf8\",\ \"game\",\"workspace\",\"Workspace\",\"Instance\",\"Enum\",\"Vector2\",\"Vector3\",\"CFrame\",\ \"UDim\",\"UDim2\",\"Color3\",\"BrickColor\",\"TweenInfo\",\"NumberSequence\",\"NumberRange\",\"Ray\",\"Rect\",\ \"typeof\",\"tick\",\"wait\",\"spawn\",\"delay\",\"task\",\"newproxy\",\ \"Font\",\"Vector3int16\",\"Vector2int16\",\"Random\",\"DateTime\",\"Region3\",\"RaycastParams\",\ \"OverlapParams\",\"PathWaypoint\",\"Faces\",\"Axes\",\"PhysicalProperties\",\ \"ColorSequence\",\"ColorSequenceKeypoint\",\"NumberSequenceKeypoint\",\"CatalogSearchParams\",\ \"getfenv\",\"setfenv\",\"script\",\"shared\",\"_shared\",\"_G\",\"_ENV\",\ }\ local _BLOCKED_GLOBALS = {\ loadfile = true, dofile = true, require = true,\ io = true, package = true, socket = true, ffi = true,\ }\ local function _injectEnv(env)\ if type(env) ~= \"table\" then return end\ for _, k in ipairs(_injectGlobals) do\ local v = rawget(_bypassEnv, k)\ if v ~= nil and rawget(env, k) == nil then\ rawset(env, k, v)\ end\ end\ if rawget(env, \"game\") == nil then rawset(env, \"game\", _bypassEnv.game) end\ if rawget(env, \"Enum\") == nil then rawset(env, \"Enum\", _bypassEnv.Enum) end\ for k in pairs(_BLOCKED_GLOBALS) do\ rawset(env, k, nil)\ end\ end\ _G._bypassInjectEnv = _injectEnv\ end\ \ function _EnumsMT.GetEnums(self)\ local out = {}\ for _, v in pairs(self) do\ if type(v) == \"table\" then table.insert(out, v) end\ end\ return out\ end\ function _EnumMT.GetEnumItems(self)\ local out = {}\ for _, v in pairs(self) do\ if type(v) == \"table\" and getmetatable(v) and getmetatable(v).__type == \"EnumItem\" then\ table.insert(out, v)\ end\ end\ return out\ end\ \ _bypassEnv._G = _bypassEnv\ _bypassEnv._ENV = _bypassEnv\ \ do\ local _real_dump = string.dump\ \ local _strProxy = {}\ for k, v in pairs(string) do _strProxy[k] = v end\ _strProxy.dump = function(fn, ...)\ error(\"attempt to dump given function\", 2)\ end\ _bypassEnv.string = _strProxy\ _bypassEnv._origStringDump = _real_dump\ \ local _dbgSrc = debug or {}\ local _dbgProxy = {}\ for k, v in pairs(_dbgSrc) do _dbgProxy[k] = v end\ local _realGetupvalue = rawget(_dbgSrc, \"getupvalue\")\ local _realSetupvalue = rawget(_dbgSrc, \"setupvalue\")\ _dbgProxy.getupvalue = function(fn, i) if _realGetupvalue then local n,v = _realGetupvalue(fn, i); return n,v end; return nil end\ _dbgProxy.getupvalues = function(fn)\ if not _realGetupvalue then return {} end\ local uvs = {}; local idx = 1\ while idx <= 250 do\ local n, v = _realGetupvalue(fn, idx)\ if not n then break end\ uvs[idx] = v\ if type(n) == \"string\" and n ~= \"\" and n ~= \"_ENV\" then uvs[n] = v end\ idx = idx + 1\ end\ return uvs\ end\ _dbgProxy.setupvalue = function(fn, i, v) if _realSetupvalue then return _realSetupvalue(fn, i, v) end end\ _bypassEnv.debug = _dbgProxy\ end\ \ local TAMPERCHECK_SNIPPET = [==[\ local function tamperCheck(fn)\ local ok, res = pcall(fn)\ if not ok or not res then\ error(\"6Vfuscator\")\ end\ end\ \ tamperCheck(function() return type(game.JobId) == \"string\" end)\ tamperCheck(function() return game.PlaceId > 0 end)\ tamperCheck(function() return game.GameId > 0 end)\ tamperCheck(function() return game.ClassName == \"DataModel\" end)\ tamperCheck(function() return workspace.ClassName == \"Workspace\" end)\ tamperCheck(function()\ local ok = pcall(game.GetService, game, \"EnvCheckFakeService00000\")\ return not ok\ end)\ tamperCheck(function()\ local v = game:GetService(\"TextService\"):GetTextSize(\"Test\", 14, Enum.Font.Arial, Vector2.new(500, 0))\ return typeof(v) == \"Vector2\" and v.X > 0\ end)\ tamperCheck(function() return typeof(game:GetService(\"GuiService\"):GetGuiInset()) == \"Vector2\" end)\ tamperCheck(function() return game.Players.LocalPlayer.UserId > 0 end)\ tamperCheck(function() return type(tick()) == \"number\" and tick() > 0 end)\ tamperCheck(function() return typeof(CFrame.new()) == \"CFrame\" end)\ tamperCheck(function() return typeof(Vector3.new()) == \"Vector3\" end)\ tamperCheck(function() return typeof(UDim2.new()) == \"UDim2\" end)\ tamperCheck(function()\ local c = Color3.fromRGB(255, 0, 0)\ return math.abs(c.R - 1) < 0.01 and math.abs(c.G - 0) < 0.01 and math.abs(c.B - 0) < 0.01\ end)\ tamperCheck(function()\ local ok = pcall(Instance.new, \"FakeEnvCheckClass00000\")\ return not ok\ end)\ tamperCheck(function() return type(newproxy()) == \"userdata\" end)\ tamperCheck(function() return type(game:GetService(\"ContextActionService\"):GetAllBoundActionInfo()) == \"table\" end)\ tamperCheck(function() return type(game:GetService(\"SoundService\").RolloffScale) == \"number\" end)\ tamperCheck(function()\ local t = game:GetService(\"Lighting\").ClockTime\ return type(t) == \"number\" and t >= 0 and t <= 24\ end)\ tamperCheck(function() return game:GetService(\"ReplicatedStorage\") ~= nil end)\ tamperCheck(function() return game:GetService(\"StarterGui\") ~= nil end)\ tamperCheck(function() return game:GetService(\"PhysicsService\") ~= nil end)\ tamperCheck(function() return type(game:GetService(\"UserInputService\"):IsKeyDown(Enum.KeyCode.W)) == \"boolean\" end)\ tamperCheck(function() return game.Players:GetPlayerByUserId(-999) == nil end)\ tamperCheck(function() return game.Players.LocalPlayer.CharacterAdded ~= nil end)\ tamperCheck(function() return typeof(BrickColor.new()) == \"BrickColor\" end)\ tamperCheck(function() return typeof(NumberSequence.new(0)) == \"NumberSequence\" end)\ tamperCheck(function() return typeof(NumberRange.new(0, 1)) == \"NumberRange\" end)\ tamperCheck(function() return typeof(TweenInfo.new()) == \"TweenInfo\" end)\ tamperCheck(function() return typeof(Ray.new(Vector3.new(), Vector3.new(0,1,0))) == \"Ray\" end)\ tamperCheck(function() return typeof(Vector2.new()) == \"Vector2\" end)\ tamperCheck(function() return typeof(Rect.new()) == \"Rect\" end)\ tamperCheck(function() return type(game:GetService(\"Lighting\").Brightness) == \"number\" end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return game.Players:GetPlayerByUserId(lp.UserId) ~= nil\ end)\ tamperCheck(function() return type(workspace.Gravity) == \"number\" end)\ \ \ tamperCheck(function() return typeof(Random.new(1)) == \"Random\" end)\ tamperCheck(function() return typeof(DateTime.now()) == \"DateTime\" end)\ tamperCheck(function() return typeof(Region3.new(Vector3.new(), Vector3.new(1,1,1))) == \"Region3\" end)\ tamperCheck(function() return typeof(RaycastParams.new()) == \"RaycastParams\" end)\ tamperCheck(function() return typeof(OverlapParams.new()) == \"OverlapParams\" end)\ tamperCheck(function() return typeof(PathWaypoint.new(Vector3.new())) == \"PathWaypoint\" end)\ tamperCheck(function() return typeof(Faces.new()) == \"Faces\" end)\ tamperCheck(function() return typeof(Axes.new()) == \"Axes\" end)\ tamperCheck(function() return typeof(PhysicalProperties.new(0.7)) == \"PhysicalProperties\" end)\ tamperCheck(function() return typeof(ColorSequence.new(Color3.new())) == \"ColorSequence\" end)\ tamperCheck(function() return typeof(ColorSequenceKeypoint.new(0,Color3.new())) == \"ColorSequenceKeypoint\" end)\ tamperCheck(function() return typeof(NumberSequenceKeypoint.new(0, 0)) == \"NumberSequenceKeypoint\" end)\ \ tamperCheck(function()\ local r = Random.new(42)\ local n = r:NextInteger(1, 10)\ return type(n) == \"number\" and n >= 1 and n <= 10\ end)\ tamperCheck(function()\ local r = Random.new(42)\ local n = r:NextNumber(0, 1)\ return type(n) == \"number\" and n >= 0 and n <= 1\ end)\ \ tamperCheck(function() return type(DateTime.now().UnixTimestamp) == \"number\" end)\ \ tamperCheck(function()\ local rg = Region3.new(Vector3.new(0,0,0), Vector3.new(2,4,6))\ return typeof(rg.CFrame) == \"CFrame\" and typeof(rg.Size) == \"Vector3\"\ end)\ \ tamperCheck(function() return game:IsA(\"DataModel\") end)\ tamperCheck(function() return workspace:IsA(\"Workspace\") end)\ tamperCheck(function() return type(workspace:GetChildren()) == \"table\" end)\ tamperCheck(function() return type(workspace:GetDescendants()) == \"table\" end)\ tamperCheck(function() return workspace:FindFirstChild(\"__nope__\") == nil end)\ tamperCheck(function() return type(workspace:GetFullName()) == \"string\" end)\ tamperCheck(function()\ local sig = workspace:GetPropertyChangedSignal(\"Gravity\")\ return sig ~= nil and type(sig.Connect) == \"function\"\ end)\ tamperCheck(function()\ local sig = workspace:GetAttributeChangedSignal(\"X\")\ return sig ~= nil and type(sig.Connect) == \"function\"\ end)\ tamperCheck(function() return workspace:GetAttribute(\"missing\") == nil end)\ tamperCheck(function() return type(workspace:GetAttributes()) == \"table\" end)\ \ tamperCheck(function()\ local a = game:GetService(\"RunService\")\ local b = game:GetService(\"RunService\")\ return a == b\ end)\ tamperCheck(function()\ local a = game:GetService(\"HttpService\")\ local b = game:FindService(\"HttpService\")\ return a == b\ end)\ \ tamperCheck(function() return game:GetService(\"MarketplaceService\") ~= nil end)\ tamperCheck(function() return game:GetService(\"TeleportService\") ~= nil end)\ tamperCheck(function() return game:GetService(\"DataStoreService\") ~= nil end)\ tamperCheck(function() return game:GetService(\"CollectionService\") ~= nil end)\ tamperCheck(function() return game:GetService(\"Debris\") ~= nil end)\ tamperCheck(function() return game:GetService(\"MessagingService\") ~= nil end)\ tamperCheck(function() return game:GetService(\"LocalizationService\").RobloxLocaleId == \"en-us\" end)\ tamperCheck(function() return game:GetService(\"PathfindingService\"):CreatePath().Status == \"Success\" end)\ \ tamperCheck(function()\ local info = game:GetService(\"MarketplaceService\"):GetProductInfo(1234)\ return type(info) == \"table\" and type(info.Name) == \"string\"\ end)\ \ tamperCheck(function()\ local ds = game:GetService(\"DataStoreService\"):GetDataStore(\"env\")\ return ds ~= nil and type(ds.GetAsync) == \"function\"\ end)\ \ tamperCheck(function() return type(game:GetService(\"HttpService\"):GenerateGUID()) == \"string\" end)\ \ tamperCheck(function() return type(Enum:GetEnums()) == \"table\" end)\ tamperCheck(function() return type(Enum.KeyCode:GetEnumItems()) == \"table\" end)\ tamperCheck(function() return Enum.KeyCode.W.Value == 87 end)\ \ tamperCheck(function() return type(coroutine) == \"table\" and type(coroutine.create) == \"function\" end)\ tamperCheck(function() return type(debug) == \"table\" and type(debug.traceback) == \"function\" end)\ tamperCheck(function() return type(string.format(\"%d\", 5)) == \"string\" end)\ tamperCheck(function() return type(table.insert) == \"function\" end)\ \ tamperCheck(function() return typeof(script) == \"Instance\" end)\ tamperCheck(function() return script:IsA(\"LocalScript\") end)\ tamperCheck(function() return type(script:GetFullName()) == \"string\" end)\ \ tamperCheck(function() return type(_G) == \"table\" end)\ tamperCheck(function() return type(shared) == \"table\" end)\ \ tamperCheck(function() return getgenv == nil end)\ tamperCheck(function() return getrenv == nil end)\ tamperCheck(function() return getreg == nil end)\ tamperCheck(function() return hookfunction == nil end)\ tamperCheck(function() return getrawmetatable == nil end)\ tamperCheck(function() return setreadonly == nil end)\ tamperCheck(function() return isreadonly == nil end)\ tamperCheck(function() return getconnections == nil end)\ tamperCheck(function() return is_synapse_function == nil end)\ tamperCheck(function() return syn == nil end)\ tamperCheck(function() return KRNL_LOADED == nil end)\ tamperCheck(function() return identifyexecutor == nil end)\ tamperCheck(function() return getexecutorname == nil end)\ tamperCheck(function() return checkcaller == nil end)\ tamperCheck(function() return gethui == nil end)\ \ tamperCheck(function()\ local ok = pcall(function() return Random.new(); end)\ return ok\ end)\ \ local _classProbe = {\ \"Part\", \"MeshPart\", \"WedgePart\", \"TrussPart\", \"Seat\", \"VehicleSeat\",\ \"Model\", \"Folder\", \"Configuration\", \"Actor\", \"Backpack\",\ \"Humanoid\", \"HumanoidDescription\", \"Animator\", \"Animation\",\ \"Accessory\", \"Hat\", \"Shirt\", \"Pants\", \"ShirtGraphic\",\ \"Tool\", \"Handle\",\ \"Weld\", \"WeldConstraint\", \"Motor6D\",\ \"RopeConstraint\", \"SpringConstraint\", \"HingeConstraint\",\ \"BallSocketConstraint\", \"AlignOrientation\", \"AlignPosition\",\ \"BodyVelocity\", \"BodyGyro\", \"BodyPosition\",\ \"Attachment\", \"Bone\",\ \"Sound\", \"SoundGroup\",\ \"Fire\", \"Smoke\", \"Sparkles\", \"ParticleEmitter\", \"Trail\", \"Beam\",\ \"PointLight\", \"SpotLight\", \"SurfaceLight\",\ \"Camera\",\ \"Frame\", \"ScreenGui\", \"SurfaceGui\", \"BillboardGui\",\ \"ScrollingFrame\", \"TextLabel\", \"TextButton\", \"TextBox\",\ \"ImageLabel\", \"ImageButton\", \"ViewportFrame\", \"ProximityPrompt\",\ \"UICorner\", \"UIPadding\", \"UIListLayout\", \"UIGridLayout\",\ \"UIAspectRatioConstraint\", \"UISizeConstraint\", \"UIStroke\",\ \"UIGradient\", \"UIScale\", \"Highlight\", \"SelectionBox\",\ \"RemoteEvent\", \"RemoteFunction\", \"BindableEvent\", \"BindableFunction\",\ \"UnreliableRemoteEvent\",\ \"Script\", \"LocalScript\", \"ModuleScript\",\ \"StringValue\", \"IntValue\", \"NumberValue\", \"BoolValue\",\ \"ObjectValue\", \"Vector3Value\", \"CFrameValue\", \"Color3Value\",\ \"BrickColorValue\",\ \"Decal\", \"Texture\",\ \"Atmosphere\", \"Sky\", \"Clouds\", \"Terrain\",\ \"BloomEffect\", \"BlurEffect\", \"ColorCorrectionEffect\",\ \"DepthOfFieldEffect\", \"SunRaysEffect\",\ }\ for _, _c in ipairs(_classProbe) do\ local class = _c\ tamperCheck(function()\ local inst = Instance.new(class)\ return typeof(inst) == \"Instance\"\ and inst.ClassName == class\ and inst.Name == class\ end)\ end\ \ tamperCheck(function()\ local h = Instance.new(\"Humanoid\")\ return h.Health == 100 and h.MaxHealth == 100\ and type(h.WalkSpeed) == \"number\"\ and type(h.LoadAnimation) == \"function\"\ end)\ tamperCheck(function()\ local h = Instance.new(\"Humanoid\")\ h:TakeDamage(25)\ return h.Health == 75\ end)\ tamperCheck(function()\ local s = Instance.new(\"Sound\")\ s:Play()\ return s.Playing == true\ end)\ tamperCheck(function()\ local re = Instance.new(\"RemoteEvent\")\ return type(re.FireServer) == \"function\"\ and type(re.OnClientEvent) == \"table\"\ and type(re.OnClientEvent.Connect) == \"function\"\ end)\ tamperCheck(function()\ local be = Instance.new(\"BindableEvent\")\ return type(be.Fire) == \"function\"\ and type(be.Event) == \"table\"\ and type(be.Event.Connect) == \"function\"\ end)\ tamperCheck(function()\ local pp = Instance.new(\"ProximityPrompt\")\ return pp.ActionText == \"Interact\"\ and type(pp.Triggered) == \"table\"\ and type(pp.Triggered.Connect) == \"function\"\ end)\ tamperCheck(function()\ local pe = Instance.new(\"ParticleEmitter\")\ return typeof(pe.Lifetime) == \"NumberRange\"\ and typeof(pe.Speed) == \"NumberRange\"\ and typeof(pe.Size) == \"NumberSequence\"\ end)\ tamperCheck(function()\ local cam = Instance.new(\"Camera\")\ return typeof(cam.CFrame) == \"CFrame\"\ and typeof(cam.ViewportSize) == \"Vector2\"\ end)\ tamperCheck(function()\ local v = Instance.new(\"Vector3Value\")\ return typeof(v.Value) == \"Vector3\"\ end)\ tamperCheck(function()\ local v = Instance.new(\"CFrameValue\")\ return typeof(v.Value) == \"CFrame\"\ end)\ tamperCheck(function()\ local hi = Instance.new(\"Highlight\")\ return typeof(hi.FillColor) == \"Color3\"\ and typeof(hi.OutlineColor) == \"Color3\"\ and hi.Enabled == true\ end)\ tamperCheck(function()\ local pl = Instance.new(\"PointLight\")\ return typeof(pl.Color) == \"Color3\" and type(pl.Brightness) == \"number\"\ end)\ \ tamperCheck(function()\ local t = Instance.new(\"Tool\")\ return type(t.Equipped) == \"table\"\ and type(t.Equipped.Connect) == \"function\"\ end)\ \ tamperCheck(function()\ local p = Instance.new(\"Part\")\ return p:IsA(\"Part\")\ and type(p:GetChildren()) == \"table\"\ and type(p:GetFullName()) == \"string\"\ and p:FindFirstChild(\"__nope__\") == nil\ end)\ \ tamperCheck(function()\ local a = Instance.new(\"Folder\")\ local b = Instance.fromExisting(a)\ return b ~= nil and b.ClassName == \"Folder\"\ end)\ \ tamperCheck(function()\ local ok = pcall(Instance.new, \"DefinitelyNotARobloxClass99999\")\ return not ok\ end)\ \ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return lp ~= nil\ and type(lp.Name) == \"string\" and #lp.Name > 0\ and type(lp.UserId) == \"number\"\ and lp.DisplayName == lp.Name\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return lp.Character ~= nil\ and lp.Character.ClassName == \"Model\"\ and lp.Character.Name == lp.Name\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character.Humanoid\ return h ~= nil and h.ClassName == \"Humanoid\"\ and h.Health == 100 and h.MaxHealth == 100\ and h.WalkSpeed == 16 and h.JumpPower == 50\ and h.RigType == \"R15\"\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character:FindFirstChild(\"Humanoid\")\ return h ~= nil and typeof(h) == \"Instance\"\ end)\ tamperCheck(function()\ local rp = game.Players.LocalPlayer.Character.HumanoidRootPart\ return rp ~= nil and rp.Name == \"HumanoidRootPart\"\ and typeof(rp.CFrame) == \"CFrame\"\ and typeof(rp.Position) == \"Vector3\"\ and typeof(rp.Velocity) == \"Vector3\"\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character:FindFirstChildOfClass(\"Humanoid\")\ return h ~= nil and h.ClassName == \"Humanoid\"\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return lp.Character.RootPart == lp.Character.HumanoidRootPart\ or lp.Character.Humanoid.RootPart == lp.Character.HumanoidRootPart\ end)\ tamperCheck(function()\ local kids = game.Players.LocalPlayer.Character:GetChildren()\ if type(kids) ~= \"table\" or #kids < 18 then return false end\ local sawHum, sawRoot = false, false\ for _, c in ipairs(kids) do\ if c.ClassName == \"Humanoid\" then sawHum = true end\ if c.Name == \"HumanoidRootPart\" then sawRoot = true end\ end\ return sawHum and sawRoot\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character.Humanoid\ h:TakeDamage(10)\ local ok = h.Health == 90\ h.Health = 100\ return ok\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character.Humanoid\ return type(h.Died.Connect) == \"function\"\ and type(h.HealthChanged.Connect)== \"function\"\ and type(h.StateChanged.Connect) == \"function\"\ end)\ tamperCheck(function()\ local h = game.Players.LocalPlayer.Character.Humanoid\ local track = h:LoadAnimation(Instance.new(\"Animation\"))\ return track ~= nil and track.ClassName == \"AnimationTrack\"\ and type(track.Play) == \"function\"\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return lp.Backpack ~= nil and lp.Backpack.ClassName == \"Backpack\"\ and lp.PlayerGui ~= nil and lp.PlayerGui.ClassName == \"PlayerGui\"\ and lp.PlayerScripts ~= nil and lp.PlayerScripts.ClassName == \"PlayerScripts\"\ end)\ tamperCheck(function()\ local stats = game.Players.LocalPlayer.leaderstats\ return stats ~= nil and stats.ClassName == \"Folder\"\ and stats:FindFirstChild(\"Coins\") ~= nil\ and stats:FindFirstChild(\"Level\"):IsA(\"IntValue\")\ end)\ tamperCheck(function()\ local stats = game.Players.LocalPlayer.leaderstats\ return stats.Coins.Value == 0 and stats.Level.Value == 1\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return type(lp.CharacterAdded.Connect) == \"function\"\ and type(lp.CharacterRemoving.Connect) == \"function\"\ and type(lp.CharacterAppearanceLoaded.Connect) == \"function\"\ and type(lp.Idled.Connect) == \"function\"\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ local m = lp:GetMouse()\ return m ~= nil and m.ClassName == \"Mouse\"\ and typeof(m.Hit) == \"CFrame\"\ and type(m.Button1Down.Connect) == \"function\"\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ return lp:IsFriendsWith(0) == false\ and lp:IsInGroup(0) == false\ and lp:GetRankInGroup(0) == 0\ and lp:GetRoleInGroup(0) == \"Guest\"\ and lp:DistanceFromCharacter(Vector3.new()) == 0\ end)\ tamperCheck(function()\ local lp = game.Players.LocalPlayer\ local ok = pcall(function() lp:Kick(\"test\") end)\ return ok\ end)\ tamperCheck(function()\ local players = game.Players\ return players.NumPlayers == 1 and players.MaxPlayers == 16\ and type(players.PlayerAdded.Connect) == \"function\"\ and type(players.PlayerRemoving.Connect) == \"function\"\ end)\ tamperCheck(function()\ local players = game.Players\ local lp = players.LocalPlayer\ return players:GetPlayerFromCharacter(lp.Character) == lp\ and players:GetPlayerFromCharacter(nil) == nil\ end)\ tamperCheck(function()\ local players = game.Players\ local lp = players.LocalPlayer\ return players:GetUserIdFromNameAsync(lp.Name) == lp.UserId\ and players:GetNameFromUserIdAsync(lp.UserId) == lp.Name\ end)\ \ print(\"pass\")\ ]==]\ \ local function _bypass_run()\ local chunk, loadErr\ if setfenv then\ chunk, loadErr = (loadstring or load)(TAMPERCHECK_SNIPPET, \"tamperCheck\")\ if chunk then setfenv(chunk, _bypassEnv) end\ else\ chunk, loadErr = load(TAMPERCHECK_SNIPPET, \"tamperCheck\", \"t\", _bypassEnv)\ end\ if not chunk then\ io.stderr:write(\"[bypass] load failed: \" .. tostring(loadErr) .. \"\\n\")\ return false\ end\ local ok, runErr = pcall(chunk)\ if not ok then\ io.stderr:write(\"[bypass] runtime failed: \" .. tostring(runErr) .. \"\\n\")\ return false\ end\ return true\ end\ \ _BYPASS.env = _bypassEnv\ _BYPASS.run = _bypass_run\ _BYPASS.snippet = TAMPERCHECK_SNIPPET\ _BYPASS.typeof = _bypass_typeof\ _BYPASS.services = _services\ \ _BYPASS.run()\ \ \ local debugLibrary = debug\ _G._VERSION = \"Luau\"\ local setHook = debug.sethook\ local getInfo = debug.getinfo\ local getTraceback = debug.traceback\ local loadFunction = load\ local loadStringFunction = loadstring or load\ local pcallFunction = pcall\ local xpcallFunction = xpcall\ local errorFunction = error\ local typeFunction = type\ local _CFunctionSet = setmetatable({}, {__mode = \"k\"})\ local getMetatableFunction = getmetatable\ local rawEqualFunction = rawequal\ local toStringFunction = tostring\ local toNumberFunction = tonumber\ local ioLibrary = io\ local osLibrary = os\ local pairsFunction = pairs\ local ipairsFunction = ipairs\ local tableUnpackFunction = table.unpack or unpack\ local proxyTable = {}\ proxyTable.__index = proxyTable\ local configuration = {\ MAX_DEPTH = 20,\ MAX_TABLE_ITEMS = 300,\ OUTPUT_FILE = \"dumped_output.lua\",\ VERBOSE = false,\ TRACE_CALLBACKS = true,\ TIMEOUT_SECONDS = 45,\ MAX_REPEATED_LINES = 8,\ MIN_DEOBF_LENGTH = 150,\ MAX_OUTPUT_SIZE = 10 * 1024 * 1024,\ CONSTANT_COLLECTION = true,\ INSTRUMENT_LOGIC = true\ }\ local inputKey = (arg and arg[3]) or \"NoKey\"\ if arg and arg[3] then\ print(\"[Dumper] Auto-Input Key Detected: \" .. toStringFunction(inputKey))\ end\ local dumperState = {\ output = {},\ indent = 0,\ registry = {},\ reverse_registry = {},\ names_used = {},\ proxy_name = {},\ parent_map = {},\ property_store = {},\ call_graph = {},\ variable_types = {},\ string_refs = {},\ proxy_id = 0,\ callback_depth = 0,\ pending_iterator = false,\ last_http_url = nil,\ last_emitted_line = nil,\ repetition_count = 0,\ current_size = 0,\ ls_counter = 0\ }\ local _at = {\ mem = {},\ tags = {},\ sigs = {},\ acts = {},\ json = {},\ enum = {},\ svcCache = {},\ typeOverride = {},\ connState = {},\ debugIds = {},\ debugIdCtr = 0,\ instTags = {},\ attrs = {},\ children = {},\ threadLike = {},\ vectors = {},\ buffers = {},\ userdata = {},\ localPlayer = nil,\ weldRegistry = {},\ services = {},\ folders = {},\ files = {},\ refBase = {},\ metaHooks = {},\ currentNamecallMethod = nil,\ inMetaHook = false,\ angularVel = {},\ linearVel = {},\ }\ setmetatable(_at.debugIds, {__mode = \"k\"})\ setmetatable(_at.instTags, {__mode = \"k\"})\ setmetatable(_at.attrs, {__mode = \"k\"})\ setmetatable(_at.children, {__mode = \"k\"})\ setmetatable(_at.threadLike, {__mode = \"k\"})\ setmetatable(_at.vectors, {__mode = \"k\"})\ setmetatable(_at.buffers, {__mode = \"k\"})\ setmetatable(_at.userdata, {__mode = \"k\"})\ setmetatable(_at.refBase, {__mode = \"k\"})\ local function _getDebugId(p)\ if not _at.debugIds[p] then\ _at.debugIdCtr = _at.debugIdCtr + 1\ local n = _at.debugIdCtr\ _at.debugIds[p] = toStringFunction(n * 17 + 3) .. \"-\" .. toStringFunction(n * 97 + 11)\ end\ return _at.debugIds[p]\ end\ local function _removeChild(parent, child)\ local list = parent and _at.children[parent]\ if not list then return end\ for i = #list, 1, -1 do\ if list[i] == child then table.remove(list, i) end\ end\ end\ local function _setParent(child, parent)\ local oldParent = dumperState.parent_map[child]\ if oldParent == parent then return end\ _removeChild(oldParent, child)\ dumperState.parent_map[child] = parent\ if parent then\ _at.children[parent] = _at.children[parent] or {}\ table.insert(_at.children[parent], child)\ end\ end\ local function _isDescendantOf(child, parent)\ local cur = dumperState.parent_map[child]\ while cur do\ if cur == parent then return true end\ cur = dumperState.parent_map[cur]\ end\ return false\ end\ local function _getAllDescendants(root, out)\ out = out or {}\ for _, child in ipairsFunction(_at.children[root] or {}) do\ table.insert(out, child)\ _getAllDescendants(child, out)\ end\ return out\ end\ local numericArg = (arg and toNumberFunction(arg[4])) or (arg and toNumberFunction(arg[3])) or 123456789\ local proxyMarker = {}\ local function isProxyTable(target)\ if typeFunction(target) ~= \"table\" then\ return false\ end\ local success, result = pcallFunction( function() return rawget(target, proxyMarker) == true end )\ return success and result\ end\ local function getProxyValue(target)\ if isProxyTable(target) then\ return rawget(target, \"__value\") or 0\ end\ return 0\ end\ local loadStringFunction = loadstring or load\ local printFunction = print\ local warnFunction = warn or function() end\ local pairsFunction = pairs\ local ipairsFunction = ipairs\ local typeFunction = type\ local toStringFunction = tostring\ local proxyList = {}\ local function isProxy(target)\ if typeFunction(target) ~= \"table\" then\ return false\ end\ local success, result = pcallFunction( function() return rawget(target, proxyList) == true end )\ return success and result\ end\ local function getProxyId(target)\ if not isProxy(target) then\ return nil\ end\ return rawget(target, \"__proxy_id\")\ end\ local function processString(inputString)\ if typeFunction(inputString) ~= \"string\" then\ return '\"'\ end\ local outputParts = {}\ local currentIndex, totalLength = 1, #inputString\ local function cleanEscapes(content)\ return content:gsub( \"\\\\\\\\(.)\", function(escapedChar)\ if escapedChar:match('[abfnrtv\\\\\\\\%\\'%\\\\\"%[%]0-9xu]') then\ return \"\" .. escapedChar\ end\ return escapedChar\ end )\ end\ local function stripLuauSyntax(rawCode)\ if not rawCode or rawCode == \"\" then\ return rawCode\ end\ rawCode = rawCode:gsub(\"\\239\\187\\191\", \"\")\ rawCode = rawCode:gsub(\"\\r\\n\", \"\\n\"):gsub(\"\\r\", \"\\n\")\ rawCode = rawCode:gsub(\"\\226\\128\\168\", \"\\n\"):gsub(\"\\226\\128\\169\", \"\\n\")\ rawCode = rawCode:gsub(\"%-%-!%a+[^\\n]*\", \"\")\ rawCode = rawCode:gsub(\"([^\\n]*)\", function(line)\ if line:match(\"^%s*export%s+type%s+\") or line:match(\"^%s*type%s+[%a_][%w_]*%s*=\") then\ return \"-- \" .. line\ end\ return line\ end)\ rawCode = rawCode:gsub(\"local%s+([%a_][%w_]*)%s*<[%a_][%w_]*>%s*=\", \"local %1 =\")\ rawCode = rawCode:gsub(\"(function%s+[%a_][%w_%.:]*)%s*<[^>\\n%(]+>%s*%(\", \"%1(\")\ rawCode = rawCode:gsub(\"([%(%s,])%.%.%.%s*:%s*[%a_][%w_%.]*%??\", \"%1...\")\ rawCode = rawCode:gsub(\"([%(%s,])([%a_][%w_]*)%s*:%s*[%a_][%w_%.]*%s*%b<>%??\", \"%1%2\")\ rawCode = rawCode:gsub(\"([%(%s,])([%a_][%w_]*)%s*:%s*[%a_][%w_%.]*%??(%s*[%),=])\", \"%1%2%3\")\ rawCode = rawCode:gsub(\"%)%s*:%s*[%a_][%w_%.]*%s*%b<>%??\", \")\")\ rawCode = rawCode:gsub(\"%)%s*:%s*[%a_][%w_%.]*%??(%s*[%),=])\", \")%1\")\ rawCode = rawCode:gsub(\"%s*::%s*[%a_][%w_%.]*%s*%b<>%??\", \"\")\ rawCode = rawCode:gsub(\"%s*::%s*[%a_][%w_%.]*%??\", \"\")\ return rawCode\ end\ local function parseExpression(rawCode)\ if not rawCode or rawCode == '\"' then\ return \"\"\ end\ rawCode = stripLuauSyntax(rawCode)\ rawCode = rawCode:gsub( \"0[bB]([01_]+)\", function(binaryString)\ local cleanBinary = binaryString:gsub(\"_\", \"\")\ local decimalValue = toNumberFunction(cleanBinary, 2)\ return decimalValue and toStringFunction(decimalValue) or \"0\"\ end )\ rawCode = rawCode:gsub( \"0[xX]([%x_]+)\", function(hexString)\ local cleanHex = hexString:gsub(\"_\", \"\")\ return \"0x\" .. cleanHex\ end )\ while rawCode:match(\"%d_+%d\") do\ rawCode = rawCode:gsub(\"(%d)_+(%d)\", \"%1%2\")\ end\ local operators = {{\"+=\", \"+\"}, {\"-=\", \"-\"}, {\"*=\", \"*\"}, {\"/=\", \"/\"}, {\"%%=\", \"%%\"}, {\"%^=\", \"^\"}, {\"%.%.=\", \"..\"}}\ for _, opPair in ipairsFunction(operators) do\ local operatorAssignment, operator = opPair[1], opPair[2]\ rawCode = rawCode:gsub( \"([%a_][%w_]*%b[])%s*\" .. operatorAssignment, function(varName)\ return varName .. \" = \" .. varName .. \" \" .. operator .. \" \"\ end )\ rawCode = rawCode:gsub( \"([%a_][%w_]*[%.%a_%d][%w_%.]*%.[%a_][%w_]*)%s*\" .. operatorAssignment, function(varName)\ return varName .. \" = \" .. varName .. \" \" .. operator .. \" \"\ end )\ rawCode = rawCode:gsub( \"([^%w_%.%]%):])([%a_][%w_]*)%s*\" .. operatorAssignment, function(prefix, varName)\ return prefix .. varName .. \" = \" .. varName .. \" \" .. operator .. \" \"\ end )\ rawCode = rawCode:gsub( \"^([%a_][%w_]*)%s*\" .. operatorAssignment, function(varName)\ return varName .. \" = \" .. varName .. \" \" .. operator .. \" \"\ end )\ end\ \ rawCode = rawCode:gsub(\"([%a_][%w_]*%b[])%s*%+%+\", \"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"([%a_][%w_]*%.[%w_%.]*[%w_])%s*%+%+\",\"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"([%a_][%w_]*)%s*%+%+\", \"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"%+%+%s*([%a_][%w_]*%b[])\", \"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"%+%+%s*([%a_][%w_]*%.[%w_%.]*[%w_])\",\"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"%+%+%s*([%a_][%w_]*)\", \"%1 = %1 + 1\")\ rawCode = rawCode:gsub(\"%+%+\", \"+\")\ \ rawCode = rawCode:gsub(\"([^%w_])continue([^%w_])\", \"%1_G.LuraphContinue()%2\")\ rawCode = rawCode:gsub(\"^continue([^%w_])\", \"_G.LuraphContinue()%1\")\ rawCode = rawCode:gsub(\"([^%w_])continue$\", \"%1_G.LuraphContinue()\")\ return rawCode\ end\ local function getBracketCount(index)\ local count = 0\ while index <= totalLength and inputString:byte(index) == 61 do\ count = count + 1\ index = index + 1\ end\ return count, index\ end\ local function findClosingBracket(startIndex, bracketCount)\ local closingPattern = \"]\" .. string.rep(\"=\", bracketCount) .. \"]\"\ local start, finish = inputString:find(closingPattern, startIndex, true)\ return finish or totalLength\ end\ local segmentStart = 1\ while currentIndex <= totalLength do\ local byteValue = inputString:byte(currentIndex)\ if byteValue == 91 then\ local bracketCount, nextIndex = getBracketCount(currentIndex + 1)\ if nextIndex <= totalLength and inputString:byte(nextIndex) == 91 then\ table.insert(outputParts, parseExpression(inputString:sub(segmentStart, currentIndex - 1)))\ local startSegment = currentIndex\ local endSegment = findClosingBracket(nextIndex + 1, bracketCount)\ table.insert(outputParts, inputString:sub(startSegment, endSegment))\ currentIndex = endSegment\ segmentStart = currentIndex + 1\ end\ elseif byteValue == 45 and currentIndex + 1 <= totalLength and inputString:byte(currentIndex + 1) == 45 then\ table.insert(outputParts, parseExpression(inputString:sub(segmentStart, currentIndex - 1)))\ local startSegment = currentIndex\ if currentIndex + 2 <= totalLength and inputString:byte(currentIndex + 2) == 91 then\ local bracketCount, nextIndex = getBracketCount(currentIndex + 3)\ if nextIndex <= totalLength and inputString:byte(nextIndex) == 91 then\ local endSegment = findClosingBracket(nextIndex + 1, bracketCount)\ table.insert(outputParts, inputString:sub(startSegment, endSegment))\ currentIndex = endSegment\ segmentStart = currentIndex + 1\ currentIndex = currentIndex + 1\ end\ end\ local lineBreak = inputString:find(\"\\n\", currentIndex + 2, true)\ if lineBreak then\ currentIndex = lineBreak\ else\ currentIndex = totalLength\ end\ table.insert(outputParts, inputString:sub(startSegment, currentIndex))\ segmentStart = currentIndex + 1\ elseif byteValue == 34 or byteValue == 39 or byteValue == 96 then\ table.insert(outputParts, parseExpression(inputString:sub(segmentStart, currentIndex - 1)))\ local quoteType = byteValue\ local startSegment = currentIndex\ currentIndex = currentIndex + 1\ while currentIndex <= totalLength do\ local charByte = inputString:byte(currentIndex)\ if charByte == 92 then\ currentIndex = currentIndex + 1\ elseif charByte == quoteType then\ break\ end\ currentIndex = currentIndex + 1\ end\ local extractedContent = inputString:sub(startSegment + 1, currentIndex - 1)\ extractedContent = cleanEscapes(extractedContent)\ if quoteType == 96 then\ table.insert(outputParts, '\"' .. extractedContent:gsub('\"', '\\\\\\\\\"') .. '\"')\ else\ local quoteChar = string.char(quoteType)\ table.insert(outputParts, quoteChar .. extractedContent .. quoteChar)\ end\ segmentStart = currentIndex + 1\ end\ currentIndex = currentIndex + 1\ end\ table.insert(outputParts, parseExpression(inputString:sub(segmentStart)))\ return table.concat(outputParts)\ end\ local function safeLoad(code, chunkName)\ local loadedFunc, errorMessage = loadStringFunction(code, chunkName)\ if loadedFunc then\ return loadedFunc\ end\ printFunction(\"\\n[CRITICAL ERROR] Failed to load script!\")\ printFunction(\"[LUA_LOAD_FAIL] \" .. toStringFunction(errorMessage))\ local errorLine = toNumberFunction(errorMessage:match(\":(%d+):\"))\ local errorNear = errorMessage:match(\"near '([^']+)'\")\ if errorNear then\ local foundIndex = code:find(errorNear, 1, true)\ if foundIndex then\ local startCtx = math.max(1, foundIndex - 50)\ local endCtx = math.min(#code, foundIndex + 50)\ printFunction(\"Context around error:\")\ printFunction(\"...\" .. code:sub(startCtx, endCtx) .. \"...\")\ end\ end\ local _debugName = string.format(\"DEBUG_FAILED_TRANSPILE_%d.lua\",\ math.floor((osLibrary and osLibrary.clock or os.clock)() * 1000) % 1000000)\ local debugFile = ioLibrary.open(_debugName, \"w\")\ if debugFile then\ debugFile:write(code)\ debugFile:close()\ printFunction(\"[*] Saved to '\" .. _debugName .. \"' for inspection\")\ end\ return nil, errorMessage\ end\ local function emitOutput(data, isInline)\ if dumperState.limit_reached then\ return\ end\ if data == nil then\ return\ end\ local indentPrefix = isInline and \"\" or string.rep(\" \", dumperState.indent)\ local lineString = indentPrefix .. toStringFunction(data)\ local lineSize = #lineString + 1\ if dumperState.current_size + lineSize > configuration.MAX_OUTPUT_SIZE then\ dumperState.limit_reached = true\ local limitMB = string.format(\"%.0f\", configuration.MAX_OUTPUT_SIZE / (1024 * 1024))\ local warningMessage = \"-- [CRITICAL] Dump stopped: File size exceeded \" .. limitMB .. \"MB limit.\"\ table.insert(dumperState.output, warningMessage)\ dumperState.current_size = dumperState.current_size + #warningMessage\ errorFunction(\"DUMP_LIMIT_EXCEEDED\")\ end\ if lineString == dumperState.last_emitted_line then\ dumperState.repetition_count = dumperState.repetition_count + 1\ if dumperState.repetition_count <= configuration.MAX_REPEATED_LINES then\ table.insert(dumperState.output, lineString)\ dumperState.current_size = dumperState.current_size + lineSize\ elseif dumperState.repetition_count == configuration.MAX_REPEATED_LINES + 1 then\ local suppressMessage = indentPrefix .. \"-- [Repeated lines suppressed...]\"\ table.insert(dumperState.output, suppressMessage)\ dumperState.current_size = dumperState.current_size + #suppressMessage\ end\ else\ dumperState.last_emitted_line = lineString\ dumperState.repetition_count = 0\ table.insert(dumperState.output, lineString)\ dumperState.current_size = dumperState.current_size + lineSize\ end\ if configuration.VERBOSE and dumperState.repetition_count <= 1 then\ printFunction(lineString)\ end\ end\ local function emitComment(data)\ emitOutput(\"-- \" .. toStringFunction(data or \"\"))\ end\ local function addEmptyLine()\ dumperState.last_emitted_line = nil\ local last = dumperState.output[#dumperState.output]\ if last == \"\" then\ return\ end\ table.insert(dumperState.output, \"\")\ end\ local function getFullOutput()\ return table.concat(dumperState.output, \"\\n\")\ end\ local function saveToFile(filePath)\ local fileHandle = ioLibrary.open(filePath or configuration.OUTPUT_FILE, \"w\")\ if fileHandle then\ fileHandle:write(getFullOutput())\ fileHandle:close()\ return true\ end\ return false\ end\ local function formatValue(value)\ if value == nil then\ return \"nil\"\ end\ if typeFunction(value) == \"string\" then\ return value\ end\ if typeFunction(value) == \"number\" or typeFunction(value) == \"boolean\" then\ return toStringFunction(value)\ end\ if typeFunction(value) == \"table\" then\ if dumperState.registry[value] then\ return dumperState.registry[value]\ end\ if isProxy(value) then\ local proxyId = getProxyId(value)\ return proxyId and \"proxy_\" .. proxyId or \"proxy\"\ end\ end\ local success, result = pcallFunction(toStringFunction, value)\ return success and result or \"unknown\"\ end\ local function formatStringLiteral(value)\ local rawValue = formatValue(value)\ if typeFunction(rawValue) ~= \"string\" then\ rawValue = toStringFunction(rawValue)\ end\ if #rawValue > 256 then\ local sampleLen = math.min(#rawValue, 4096)\ local sample = rawValue:sub(1, sampleLen)\ local nonPrintable = 0\ for i = 1, sampleLen do\ local b = sample:byte(i)\ if b < 9 or (b > 13 and b < 32) or b == 127 then\ nonPrintable = nonPrintable + 1\ end\ end\ local ratio = nonPrintable / sampleLen\ local isBase64 = rawValue:match(\"^[A-Za-z0-9+/=\\r\\n]+$\") ~= nil\ and (#rawValue % 4 == 0 or rawValue:match(\"=+$\") ~= nil)\ local isHex = rawValue:match(\"^[%x\\r\\n]+$\") ~= nil and #rawValue >= 32\ if ratio > 0.05 or isBase64 or isHex then\ local hint = isHex and \"hex\" or (isBase64 and \"base64\" or \"binary\")\ local previewLen = math.min(64, #rawValue)\ local head = rawValue:sub(1, previewLen):gsub(\"\\\\\", \"\\\\\\\\\"):gsub('\"', '\\\\\"')\ :gsub(\"[%z\\1-\\31\\127]\", function(c) return string.format(\"\\\\%d\", c:byte()) end)\ local suffix = #rawValue > previewLen and \"...\" or \"\"\ return string.format('\"%s%s\" ', head, suffix, hint, #rawValue)\ end\ end\ if rawValue:find(\"\\n\", 1, true) and not rawValue:find(\"\\r\", 1, true)\ and not rawValue:match(\"[%z\\1-\\8\\11\\12\\14-\\31\\127]\") then\ for level = 0, 5 do\ local eq = string.rep(\"=\", level)\ local close = \"]\" .. eq .. \"]\"\ if not rawValue:find(close, 1, true) then\ local body = rawValue\ if body:sub(1, 1) == \"\\n\" then body = \"\\n\" .. body end\ return \"[\" .. eq .. \"[\" .. body .. \"]\" .. eq .. \"]\"\ end\ end\ end\ local escapedValue = rawValue\ :gsub(\"\\\\\", \"\\\\\\\\\")\ :gsub(\"\\r\", \"\\\\r\")\ :gsub(\"\\n\", \"\\\\n\")\ :gsub(\"\\t\", \"\\\\t\")\ :gsub('\"', '\\\\\"')\ :gsub(\"[%z\\1-\\8\\11\\12\\14-\\31\\127]\", function(c)\ return string.format(\"\\\\%d\", string.byte(c))\ end)\ return '\"' .. escapedValue .. '\"'\ end\ local serviceNames = {\ Players = \"Players\",\ Workspace = \"Workspace\",\ Lighting = \"Lighting\",\ ReplicatedStorage = \"ReplicatedStorage\",\ ReplicatedFirst = \"ReplicatedFirst\",\ ServerStorage = \"ServerStorage\",\ ServerScriptService = \"ServerScriptService\",\ StarterGui = \"StarterGui\",\ StarterPack = \"StarterPack\",\ StarterPlayer = \"StarterPlayer\",\ StarterPlayerScripts = \"StarterPlayerScripts\",\ StarterCharacterScripts = \"StarterCharacterScripts\",\ Teams = \"Teams\",\ Chat = \"Chat\",\ SoundService = \"SoundService\",\ RunService = \"RunService\",\ NetworkClient = \"NetworkClient\",\ NetworkServer = \"NetworkServer\",\ NetworkSettings = \"NetworkSettings\",\ Stats = \"Stats\",\ StatsService = \"Stats\",\ UserInputService = \"UserInputService\",\ UserGameSettings = \"UserGameSettings\",\ GuiService = \"GuiService\",\ HapticService = \"HapticService\",\ VRService = \"VRService\",\ GamepadService = \"GamepadService\",\ TouchInputService = \"TouchInputService\",\ VirtualUser = \"VirtualUser\",\ VirtualInputManager = \"VirtualInputManager\",\ ContextActionService = \"ContextActionService\",\ ProximityPromptService = \"ProximityPromptService\",\ TweenService = \"TweenService\",\ PathfindingService = \"PathfindingService\",\ AnimationClipProvider = \"AnimationClipProvider\",\ KeyframeSequenceProvider = \"KeyframeSequenceProvider\",\ HttpService = \"HttpService\",\ HttpRbxApiService = \"HttpRbxApiService\",\ DataStoreService = \"DataStoreService\",\ MessagingService = \"MessagingService\",\ MemoryStoreService = \"MemoryStoreService\",\ MemStorageService = \"MemStorageService\",\ MarketplaceService = \"MarketplaceService\",\ BadgeService = \"BadgeService\",\ FriendService = \"FriendService\",\ GroupService = \"GroupService\",\ SocialService = \"SocialService\",\ CommerceService = \"CommerceService\",\ AvatarEditorService = \"AvatarEditorService\",\ InsertService = \"InsertService\",\ AssetService = \"AssetService\",\ AssetCounterService = \"AssetCounterService\",\ AssetDeliveryProxy = \"AssetDeliveryProxy\",\ BulkImportService = \"BulkImportService\",\ TeleportService = \"TeleportService\",\ PlayerEmulatorService = \"PlayerEmulatorService\",\ PhysicsService = \"PhysicsService\",\ CollectionService = \"CollectionService\",\ TextService = \"TextService\",\ TextChatService = \"TextChatService\",\ LocalizationService = \"LocalizationService\",\ LocalizationTable = \"LocalizationTable\",\ CoreGui = \"CoreGui\",\ StylingService = \"StylingService\",\ CaptureService = \"CaptureService\",\ NotificationService = \"NotificationService\",\ ContentProvider = \"ContentProvider\",\ MeshContentProvider = \"MeshContentProvider\",\ SolidModelContentProvider = \"SolidModelContentProvider\",\ KeyframeSequenceProvider2 = \"KeyframeSequenceProvider\",\ Debris = \"Debris\",\ LogService = \"LogService\",\ ScriptContext = \"ScriptContext\",\ PolicyService = \"PolicyService\",\ AnalyticsService = \"AnalyticsService\",\ AdService = \"AdService\",\ RbxAnalyticsService = \"RbxAnalyticsService\",\ ChangeHistoryService = \"ChangeHistoryService\",\ RunSrv = \"RunService\",\ VoiceChatService = \"VoiceChatService\",\ VoiceChatInternal = \"VoiceChatInternal\",\ Selection = \"Selection\",\ StudioService = \"StudioService\",\ ScriptEditorService = \"ScriptEditorService\",\ PluginGuiService = \"PluginGuiService\",\ PluginManager = \"PluginManager\",\ DraftsService = \"DraftsService\",\ ScriptDocumentService = \"ScriptDocumentService\",\ MaterialService = \"MaterialService\",\ Terrain = \"Terrain\",\ TerrainRegion = \"TerrainRegion\",\ RobloxReplicatedStorage = \"RobloxReplicatedStorage\",\ ProcessService = \"ProcessService\",\ TimerService = \"TimerService\",\ AppUpdateService = \"AppUpdateService\",\ AssetCounterService2 = \"AssetCounterService\",\ AssetImportService = \"AssetImportService\",\ AssetManagerService = \"AssetManagerService\",\ AssetSearchService = \"AssetSearchService\",\ AvatarImportService = \"AvatarImportService\",\ BadgeService2 = \"BadgeService\",\ BrowserService = \"BrowserService\",\ CacheableContentProvider = \"CacheableContentProvider\",\ CalloutService = \"CalloutService\",\ ClusterPacketCache = \"ClusterPacketCache\",\ CollaboratorsService = \"CollaboratorsService\",\ ConfigureServerService = \"ConfigureServerService\",\ ContentManagerService = \"ContentManagerService\",\ ContentProviderService = \"ContentProvider\",\ ContextActionService2 = \"ContextActionService\",\ CookiesService = \"CookiesService\",\ CoreScriptSyncService = \"CoreScriptSyncService\",\ CrossDMScriptChangeListener = \"CrossDMScriptChangeListener\",\ DebuggablePluginWatcher = \"DebuggablePluginWatcher\",\ DebugSettings = \"DebugSettings\",\ DraftsService = \"DraftsService\",\ DraggerService = \"DraggerService\",\ EventIngestService = \"EventIngestService\",\ ExperienceAuthService = \"ExperienceAuthService\",\ ExperienceNotificationService = \"ExperienceNotificationService\",\ ExperienceStateCaptureService = \"ExperienceStateCaptureService\",\ ExperimentationService = \"ExperimentationService\",\ FaceAnimatorService = \"FaceAnimatorService\",\ FacialAnimationStreamingService = \"FacialAnimationStreamingService\",\ FacialAnimationStreamingServiceV2 = \"FacialAnimationStreamingServiceV2\",\ FaceAnalyzerService = \"FaceAnalyzerService\",\ FlagStandService = \"FlagStandService\",\ FlyweightService = \"FlyweightService\",\ FontService = \"FontService\",\ GameSettings = \"GameSettings\",\ GamepadConnectedService = \"GamepadConnectedService\",\ GamepadService2 = \"GamepadService\",\ Geometry = \"Geometry\",\ GoogleAnalyticsConfiguration = \"GoogleAnalyticsConfiguration\",\ GroupService2 = \"GroupService\",\ GuiInsetService = \"GuiInsetService\",\ HSRDataContentProvider = \"HSRDataContentProvider\",\ HapticEffectService = \"HapticEffectService\",\ HeightmapImporterService = \"HeightmapImporterService\",\ HiddenSurfaceRemovalAsset = \"HiddenSurfaceRemovalAsset\",\ HumanoidController = \"HumanoidController\",\ IXPService = \"IXPService\",\ IncrementalPatchBuilder = \"IncrementalPatchBuilder\",\ InputObject = \"InputObject\",\ JointsService = \"JointsService\",\ KeyboardService = \"KeyboardService\",\ LanguageService = \"LanguageService\",\ LegacyChatService = \"LegacyChatService\",\ LiveScriptingService = \"LiveScriptingService\",\ LobbyService = \"LobbyService\",\ LocalDebuggerService = \"LocalDebuggerService\",\ LocalStorageService = \"LocalStorageService\",\ LoginService = \"LoginService\",\ LuaSettings = \"LuaSettings\",\ LuaSourceContainer = \"LuaSourceContainer\",\ LuaWebService = \"LuaWebService\",\ LuauScriptAnalyzerService = \"LuauScriptAnalyzerService\",\ MatchmakingService = \"MatchmakingService\",\ MemoryStoreQueue = \"MemoryStoreQueue\",\ MessageBusService = \"MessageBusService\",\ MetaBreakpointManager = \"MetaBreakpointManager\",\ MouseService = \"MouseService\",\ MultipleDocumentInterfaceInstance = \"MultipleDocumentInterfaceInstance\",\ NetworkPeer = \"NetworkPeer\",\ NetworkReplicator = \"NetworkReplicator\",\ NonReplicatedCSGDictionaryService = \"NonReplicatedCSGDictionaryService\",\ NotificationManagerService = \"NotificationManagerService\",\ OmniRecommendationsService = \"OmniRecommendationsService\",\ OpenCloudService = \"OpenCloudService\",\ PackageService = \"PackageService\",\ PackageUIService = \"PackageUIService\",\ PartOperationAsset = \"PartOperationAsset\",\ PausedStateDebuggerManager = \"PausedStateDebuggerManager\",\ PausedStateManager = \"PausedStateManager\",\ PerformanceControlService = \"PerformanceControlService\",\ PermissionsService = \"PermissionsService\",\ PhysicsPacketCache = \"PhysicsPacketCache\",\ PlayerHydrationService = \"PlayerHydrationService\",\ PluginCapabilitiesService = \"PluginCapabilitiesService\",\ PluginDebugService = \"PluginDebugService\",\ PluginPolicyService = \"PluginPolicyService\",\ PointsService = \"PointsService\",\ PrivateMessageService = \"PrivateMessageService\",\ PublishService = \"PublishService\",\ RbxAnalyticsService2 = \"RbxAnalyticsService\",\ ReflectionMetadata = \"ReflectionMetadata\",\ RemoteCursorService = \"RemoteCursorService\",\ RemoteDebuggerServer = \"RemoteDebuggerServer\",\ RemoteDebuggerService = \"RemoteDebuggerService\",\ RenderHooksService = \"RenderHooksService\",\ RenderSettings = \"RenderSettings\",\ ReplicatedScriptService = \"ReplicatedScriptService\",\ RibbonNotificationService = \"RibbonNotificationService\",\ RobloxPluginGuiService = \"RobloxPluginGuiService\",\ RobloxReplicatedStorage2 = \"RobloxReplicatedStorage\",\ RotateP = \"RotateP\",\ RotateV = \"RotateV\",\ RunningAverageItemDouble = \"RunningAverageItemDouble\",\ RuntimeScriptService = \"RuntimeScriptService\",\ SafetyService = \"SafetyService\",\ SafeBrowsingService = \"SafeBrowsingService\",\ ScreenshotHud = \"ScreenshotHud\",\ ScriptChangeService = \"ScriptChangeService\",\ ScriptCloneWatcher = \"ScriptCloneWatcher\",\ ScriptCloneWatcherHelper = \"ScriptCloneWatcherHelper\",\ ScriptContext2 = \"ScriptContext\",\ ScriptDebugger = \"ScriptDebugger\",\ ScriptProfilerService = \"ScriptProfilerService\",\ ScriptRegistrationService = \"ScriptRegistrationService\",\ ScriptService = \"ScriptService\",\ ServerScriptService2 = \"ServerScriptService\",\ ServiceProvider = \"ServiceProvider\",\ ServiceVisibilityService = \"ServiceVisibilityService\",\ SessionService = \"SessionService\",\ Smooth = \"Smooth\",\ SmoothVoxelsUpgraderService = \"SmoothVoxelsUpgraderService\",\ SnippetService = \"SnippetService\",\ Speaker = \"Speaker\",\ StackedReplicaService = \"StackedReplicaService\",\ StarterCore = \"StarterCore\",\ StopWatchReporter = \"StopWatchReporter\",\ StreamingService = \"StreamingService\",\ StudioAssetService = \"StudioAssetService\",\ StudioData = \"StudioData\",\ StudioDeviceEmulatorService = \"StudioDeviceEmulatorService\",\ StudioHighDpiService = \"StudioHighDpiService\",\ StudioPublishService = \"StudioPublishService\",\ StudioScriptDebugEventListener = \"StudioScriptDebugEventListener\",\ StudioSdkService = \"StudioSdkService\",\ StudioServerService = \"StudioServerService\",\ StudioWidget = \"StudioWidget\",\ SurfaceAppearance = \"SurfaceAppearance\",\ TaskScheduler = \"TaskScheduler\",\ TeleportingDelegationService = \"TeleportingDelegationService\",\ TeleportOptions = \"TeleportOptions\",\ TestService = \"TestService\",\ TextBoxService = \"TextBoxService\",\ TextChannel = \"TextChannel\",\ TextChatCommands = \"TextChatCommands\",\ TextChatConfigurations = \"TextChatConfigurations\",\ ThirdPartyUserService = \"ThirdPartyUserService\",\ ThreadPoolConfig = \"ThreadPoolConfig\",\ TimerService2 = \"TimerService\",\ TouchTransmitter = \"TouchTransmitter\",\ TracerService = \"TracerService\",\ TrackerLodController = \"TrackerLodController\",\ TrackerStreamAnimation = \"TrackerStreamAnimation\",\ TutorialService = \"TutorialService\",\ UGCAvatarService = \"UGCAvatarService\",\ UGCValidationService = \"UGCValidationService\",\ UnvalidatedAssetService = \"UnvalidatedAssetService\",\ UserInputService2 = \"UserInputService\",\ UserService = \"UserService\",\ UserStorageService = \"UserStorageService\",\ UserSettings = \"UserSettings\",\ VRStatusService = \"VRStatusService\",\ VersionControlService = \"VersionControlService\",\ VideoCaptureService = \"VideoCaptureService\",\ VirtualInputManager2 = \"VirtualInputManager\",\ VirtualUser2 = \"VirtualUser\",\ VisibilityCheckDispatcher = \"VisibilityCheckDispatcher\",\ VisualizationMode = \"VisualizationMode\",\ Visit = \"Visit\",\ VoiceChannel = \"VoiceChannel\",\ VoiceSource = \"VoiceSource\",\ Workspace2 = \"Workspace\",\ WorldModel = \"WorldModel\",\ WorldRoot = \"WorldRoot\",\ WrapLayer = \"WrapLayer\",\ WrapTarget = \"WrapTarget\",\ BindableEventService = \"BindableEventService\",\ Camera = \"Camera\",\ Configuration = \"Configuration\",\ Controller = \"Controller\",\ DataModel = \"DataModel\",\ DataModelMesh = \"DataModelMesh\",\ Decal = \"Decal\",\ DialogChoice = \"DialogChoice\",\ Dialog = \"Dialog\",\ Dragger = \"Dragger\",\ Explosion = \"Explosion\",\ FileMesh = \"FileMesh\",\ FormFactorPart = \"FormFactorPart\",\ GuiBase = \"GuiBase\",\ GuiBase2d = \"GuiBase2d\",\ GuiBase3d = \"GuiBase3d\",\ Hat = \"Hat\",\ HingeConstraint = \"HingeConstraint\",\ Hopper = \"Hopper\",\ HopperBin = \"HopperBin\",\ JointInstance = \"JointInstance\",\ Keyframe = \"Keyframe\",\ KeyframeMarker = \"KeyframeMarker\",\ KeyframeSequence = \"KeyframeSequence\",\ LayerCollector = \"LayerCollector\",\ Light = \"Light\",\ LineHandleAdornment = \"LineHandleAdornment\",\ LocalizationTable2 = \"LocalizationTable\",\ Message = \"Message\",\ Pages = \"Pages\",\ PartOperation = \"PartOperation\",\ Pose = \"Pose\",\ Status = \"Status\",\ StringValue = \"StringValue\",\ Tool = \"Tool\",\ Trail = \"Trail\",\ TrussPart = \"TrussPart\",\ UnreliableRemoteEvent = \"UnreliableRemoteEvent\",\ VRClient = \"VRClient\",\ VehicleSeat = \"VehicleSeat\",\ Workspace3 = \"Workspace\"\ }\ local serviceShortcuts = {\ Players = \"Players\",\ UserInputService = \"UIS\",\ RunService = \"RunService\",\ ReplicatedStorage = \"ReplicatedStorage\",\ TweenService = \"TweenService\",\ Workspace = \"Workspace\",\ Lighting = \"Lighting\",\ StarterGui = \"StarterGui\",\ CoreGui = \"CoreGui\",\ HttpService = \"HttpService\",\ MarketplaceService = \"MarketplaceService\",\ DataStoreService = \"DataStoreService\",\ TeleportService = \"TeleportService\",\ SoundService = \"SoundService\",\ Chat = \"Chat\",\ Teams = \"Teams\",\ ProximityPromptService = \"ProximityPromptService\",\ ContextActionService = \"ContextActionService\",\ CollectionService = \"CollectionService\",\ PathfindingService = \"PathfindingService\",\ Debris = \"Debris\",\ TextService = \"TextService\",\ GuiService = \"GuiService\",\ TextChatService = \"TextChatService\",\ VoiceChatService = \"VoiceChatService\",\ BadgeService = \"BadgeService\",\ GroupService = \"GroupService\",\ InsertService = \"InsertService\",\ AssetService = \"AssetService\",\ ContentProvider = \"ContentProvider\",\ LocalizationService = \"LocalizationService\",\ PolicyService = \"PolicyService\",\ SocialService = \"SocialService\",\ HapticService = \"HapticService\",\ VRService = \"VRService\",\ AvatarEditorService = \"AvatarEditorService\",\ MemoryStoreService = \"MemoryStoreService\",\ MessagingService = \"MessagingService\",\ AnalyticsService = \"AnalyticsService\",\ AdService = \"AdService\",\ PhysicsService = \"PhysicsService\",\ ReplicatedFirst = \"ReplicatedFirst\",\ StarterPack = \"StarterPack\",\ StarterPlayer = \"StarterPlayer\",\ ServerStorage = \"ServerStorage\",\ ServerScriptService = \"ServerScriptService\",\ LogService = \"LogService\",\ UserService = \"UserService\",\ FriendService = \"FriendService\",\ NotificationService = \"NotificationService\",\ ScriptContext = \"ScriptContext\",\ NetworkClient = \"NetworkClient\",\ KeyframeSequenceProvider = \"KeyframeSequenceProvider\",\ }\ local classParents = {\ DataModel = {\"DataModel\", \"ServiceProvider\", \"Instance\"},\ Workspace = {\"Workspace\", \"WorldRoot\", \"Model\", \"PVInstance\", \"Instance\"},\ Camera = {\"Camera\", \"Instance\"},\ Players = {\"Players\", \"Instance\"},\ Player = {\"Player\", \"Instance\"},\ PlayerGui = {\"PlayerGui\", \"BasePlayerGui\", \"Instance\"},\ Backpack = {\"Backpack\", \"Instance\"},\ PlayerScripts = {\"PlayerScripts\", \"Instance\"},\ Folder = {\"Folder\", \"Instance\"},\ Model = {\"Model\", \"PVInstance\", \"Instance\"},\ Part = {\"Part\", \"BasePart\", \"PVInstance\", \"Instance\"},\ BasePart = {\"BasePart\", \"PVInstance\", \"Instance\"},\ ModuleScript = {\"ModuleScript\", \"LuaSourceContainer\", \"Instance\"},\ LocalScript = {\"LocalScript\", \"Script\", \"LuaSourceContainer\", \"Instance\"},\ Script = {\"Script\", \"LuaSourceContainer\", \"Instance\"},\ Humanoid = {\"Humanoid\", \"Instance\"},\ SoundService = {\"SoundService\", \"Instance\"},\ Lighting = {\"Lighting\", \"Instance\"},\ HttpService = {\"HttpService\", \"Instance\"},\ TweenService = {\"TweenService\", \"Instance\"},\ RunService = {\"RunService\", \"Instance\"},\ TextService = {\"TextService\", \"Instance\"},\ GuiService = {\"GuiService\", \"Instance\"},\ ContentProvider = {\"ContentProvider\", \"Instance\"},\ CollectionService = {\"CollectionService\", \"Instance\"},\ MemStorageService = {\"MemStorageService\", \"Instance\"},\ NetworkClient = {\"NetworkClient\", \"Instance\"},\ ClientReplicator = {\"ClientReplicator\", \"Instance\"},\ Animation = {\"Animation\", \"Instance\"},\ AnimationTrack = {\"AnimationTrack\", \"Instance\"},\ AnimationController = {\"AnimationController\", \"Instance\"},\ Animator = {\"Animator\", \"Instance\"},\ AnimationRigData = {\"AnimationRigData\", \"Instance\"},\ SpecialMesh = {\"SpecialMesh\", \"DataModelMesh\", \"Instance\"},\ DataModelMesh = {\"DataModelMesh\", \"Instance\"},\ BillboardGui = {\"BillboardGui\", \"LayerCollector\", \"GuiBase\", \"Instance\"},\ ScreenGui = {\"ScreenGui\", \"LayerCollector\", \"GuiBase\", \"Instance\"},\ SurfaceGui = {\"SurfaceGui\", \"LayerCollector\", \"GuiBase\", \"Instance\"},\ LayerCollector = {\"LayerCollector\", \"GuiBase\", \"Instance\"},\ GuiBase = {\"GuiBase\", \"Instance\"},\ Frame = {\"Frame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextLabel = {\"TextLabel\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextButton = {\"TextButton\", \"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextBox = {\"TextBox\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ImageLabel = {\"ImageLabel\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ImageButton = {\"ImageButton\", \"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ScrollingFrame = {\"ScrollingFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ GuiObject = {\"GuiObject\", \"GuiBase2d\", \"Instance\"},\ GuiBase2d = {\"GuiBase2d\", \"Instance\"},\ GuiButton = {\"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ LocalizationService = {\"LocalizationService\", \"Instance\"},\ PolicyService = {\"PolicyService\", \"Instance\"},\ SocialService = {\"SocialService\", \"Instance\"},\ HapticService = {\"HapticService\", \"Instance\"},\ VRService = {\"VRService\", \"Instance\"},\ BadgeService = {\"BadgeService\", \"Instance\"},\ GroupService = {\"GroupService\", \"Instance\"},\ MarketplaceService = {\"MarketplaceService\", \"Instance\"},\ DataStoreService = {\"DataStoreService\", \"Instance\"},\ TeleportService = {\"TeleportService\", \"Instance\"},\ ContextActionService = {\"ContextActionService\", \"Instance\"},\ UserInputService = {\"UserInputService\", \"Instance\"},\ PathfindingService = {\"PathfindingService\", \"Instance\"},\ ReplicatedFirst = {\"ReplicatedFirst\", \"Instance\"},\ StarterPack = {\"StarterPack\", \"Instance\"},\ StarterPlayer = {\"StarterPlayer\", \"Instance\"},\ ServerStorage = {\"ServerStorage\", \"Instance\"},\ ServerScriptService = {\"ServerScriptService\", \"Instance\"},\ LogService = {\"LogService\", \"Instance\"},\ Teams = {\"Teams\", \"Instance\"},\ Team = {\"Team\", \"Instance\"},\ InsertService = {\"InsertService\", \"Instance\"},\ AssetService = {\"AssetService\", \"Instance\"},\ RemoteEvent = {\"RemoteEvent\", \"Instance\"},\ RemoteFunction = {\"RemoteFunction\", \"Instance\"},\ BindableEvent = {\"BindableEvent\", \"Instance\"},\ BindableFunction = {\"BindableFunction\", \"Instance\"},\ UnreliableRemoteEvent = {\"UnreliableRemoteEvent\", \"Instance\"},\ IntValue = {\"IntValue\", \"ValueBase\", \"Instance\"},\ NumberValue = {\"NumberValue\", \"ValueBase\", \"Instance\"},\ StringValue = {\"StringValue\", \"ValueBase\", \"Instance\"},\ BoolValue = {\"BoolValue\", \"ValueBase\", \"Instance\"},\ ObjectValue = {\"ObjectValue\", \"ValueBase\", \"Instance\"},\ Vector3Value = {\"Vector3Value\", \"ValueBase\", \"Instance\"},\ CFrameValue = {\"CFrameValue\", \"ValueBase\", \"Instance\"},\ Color3Value = {\"Color3Value\", \"ValueBase\", \"Instance\"},\ RayValue = {\"RayValue\", \"ValueBase\", \"Instance\"},\ ValueBase = {\"ValueBase\", \"Instance\"},\ Sound = {\"Sound\", \"Instance\"},\ SoundGroup = {\"SoundGroup\", \"Instance\"},\ SoundEffect = {\"SoundEffect\", \"Instance\"},\ EchoSoundEffect = {\"EchoSoundEffect\", \"SoundEffect\", \"Instance\"},\ ReverbSoundEffect = {\"ReverbSoundEffect\", \"SoundEffect\", \"Instance\"},\ EqualizerSoundEffect = {\"EqualizerSoundEffect\", \"SoundEffect\", \"Instance\"},\ CompressorSoundEffect = {\"CompressorSoundEffect\", \"SoundEffect\", \"Instance\"},\ DistortionSoundEffect = {\"DistortionSoundEffect\", \"SoundEffect\", \"Instance\"},\ PitchShiftSoundEffect = {\"PitchShiftSoundEffect\", \"SoundEffect\", \"Instance\"},\ AudioDeviceOutput = {\"AudioDeviceOutput\", \"Instance\"},\ AudioAnalyzer = {\"AudioAnalyzer\", \"Instance\"},\ AudioEmitter = {\"AudioEmitter\", \"Instance\"},\ AudioListener = {\"AudioListener\", \"Instance\"},\ AudioPlayer = {\"AudioPlayer\", \"Instance\"},\ AudioChorus = {\"AudioChorus\", \"Instance\"},\ AudioCompressor = {\"AudioCompressor\", \"Instance\"},\ AudioDistortion = {\"AudioDistortion\", \"Instance\"},\ AudioEqualizer = {\"AudioEqualizer\", \"Instance\"},\ AudioFader = {\"AudioFader\", \"Instance\"},\ AudioFlanger = {\"AudioFlanger\", \"Instance\"},\ AudioPitchShifter = {\"AudioPitchShifter\", \"Instance\"},\ AudioReverb = {\"AudioReverb\", \"Instance\"},\ Wire = {\"Wire\", \"Instance\"},\ WeldConstraint = {\"WeldConstraint\", \"Instance\"},\ Weld = {\"Weld\", \"JointInstance\", \"Instance\"},\ Motor6D = {\"Motor6D\", \"JointInstance\", \"Instance\"},\ Snap = {\"Snap\", \"JointInstance\", \"Instance\"},\ JointInstance = {\"JointInstance\", \"Instance\"},\ Constraint = {\"Constraint\", \"Instance\"},\ HingeConstraint = {\"HingeConstraint\", \"Constraint\", \"Instance\"},\ BallSocketConstraint = {\"BallSocketConstraint\", \"Constraint\", \"Instance\"},\ RodConstraint = {\"RodConstraint\", \"Constraint\", \"Instance\"},\ RopeConstraint = {\"RopeConstraint\", \"Constraint\", \"Instance\"},\ AlignPosition = {\"AlignPosition\", \"Constraint\", \"Instance\"},\ AlignOrientation = {\"AlignOrientation\", \"Constraint\", \"Instance\"},\ VectorForce = {\"VectorForce\", \"Constraint\", \"Instance\"},\ Torque = {\"Torque\", \"Constraint\", \"Instance\"},\ BodyVelocity = {\"BodyVelocity\", \"BodyMover\", \"Instance\"},\ BodyAngularVelocity = {\"BodyAngularVelocity\", \"BodyMover\", \"Instance\"},\ BodyPosition = {\"BodyPosition\", \"BodyMover\", \"Instance\"},\ BodyForce = {\"BodyForce\", \"BodyMover\", \"Instance\"},\ BodyGyro = {\"BodyGyro\", \"BodyMover\", \"Instance\"},\ BodyMover = {\"BodyMover\", \"Instance\"},\ LinearVelocity = {\"LinearVelocity\", \"Constraint\", \"Instance\"},\ AngularVelocity = {\"AngularVelocity\", \"Constraint\", \"Instance\"},\ LineForce = {\"LineForce\", \"Constraint\", \"Instance\"},\ SpringConstraint = {\"SpringConstraint\", \"Constraint\", \"Instance\"},\ PrismaticConstraint = {\"PrismaticConstraint\", \"Constraint\", \"Instance\"},\ UniversalConstraint = {\"UniversalConstraint\", \"Constraint\", \"Instance\"},\ CylindricalConstraint = {\"CylindricalConstraint\", \"Constraint\", \"Instance\"},\ SlidingBallConstraint = {\"SlidingBallConstraint\", \"Constraint\", \"Instance\"},\ BallSocketConstraint = {\"BallSocketConstraint\", \"Constraint\", \"Instance\"},\ NoCollisionConstraint = {\"NoCollisionConstraint\", \"Constraint\", \"Instance\"},\ Highlight = {\"Highlight\", \"Instance\"},\ SelectionBox = {\"SelectionBox\", \"Instance\"},\ SelectionSphere = {\"SelectionSphere\", \"Instance\"},\ SelectionPartLasso = {\"SelectionPartLasso\", \"Instance\"},\ SelectionPointLasso = {\"SelectionPointLasso\", \"Instance\"},\ ParticleEmitter = {\"ParticleEmitter\", \"Instance\"},\ Smoke = {\"Smoke\", \"Instance\"},\ Fire = {\"Fire\", \"Instance\"},\ Sparkles = {\"Sparkles\", \"Instance\"},\ Trail = {\"Trail\", \"Instance\"},\ Beam = {\"Beam\", \"Instance\"},\ Attachment = {\"Attachment\", \"Instance\"},\ AccessoryDescription = {\"AccessoryDescription\", \"Instance\"},\ DragDetector = {\"DragDetector\", \"Instance\"},\ WrapLayer = {\"WrapLayer\", \"Instance\"},\ WrapDeformer = {\"WrapDeformer\", \"Instance\"},\ Platform = {\"Platform\", \"BasePart\", \"PVInstance\", \"Instance\"},\ TextChatService = {\"TextChatService\", \"Instance\"},\ TextChannel = {\"TextChannel\", \"Instance\"},\ TextChatMessage = {\"TextChatMessage\", \"Instance\"},\ TextChatMessageProperties = {\"TextChatMessageProperties\", \"Instance\"},\ TextChatCommand = {\"TextChatCommand\", \"Instance\"},\ ChatInputBarConfiguration = {\"ChatInputBarConfiguration\", \"Instance\"},\ ChatWindowConfiguration = {\"ChatWindowConfiguration\", \"Instance\"},\ ProximityPrompt = {\"ProximityPrompt\", \"Instance\"},\ ProximityPromptService = {\"ProximityPromptService\", \"Instance\"},\ MemoryStoreService = {\"MemoryStoreService\", \"Instance\"},\ MessagingService = {\"MessagingService\", \"Instance\"},\ AnalyticsService = {\"AnalyticsService\", \"Instance\"},\ OpenCloudService = {\"OpenCloudService\", \"Instance\"},\ DataModelSession = {\"DataModelSession\", \"Instance\"},\ Dialog = {\"Dialog\", \"Instance\"},\ DialogChoice = {\"DialogChoice\", \"Instance\"},\ UIListLayout = {\"UIListLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UIGridLayout = {\"UIGridLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UIPageLayout = {\"UIPageLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UITableLayout = {\"UITableLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UIFlexItem = {\"UIFlexItem\", \"UIBase\", \"Instance\"},\ UILayout = {\"UILayout\", \"UIBase\", \"Instance\"},\ UIBase = {\"UIBase\", \"Instance\"},\ UIAspectRatioConstraint = {\"UIAspectRatioConstraint\", \"UIConstraint\", \"UIBase\", \"Instance\"},\ UISizeConstraint = {\"UISizeConstraint\", \"UIConstraint\", \"UIBase\", \"Instance\"},\ UITextSizeConstraint = {\"UITextSizeConstraint\", \"UIConstraint\", \"UIBase\", \"Instance\"},\ UIConstraint = {\"UIConstraint\", \"UIBase\", \"Instance\"},\ UIPadding = {\"UIPadding\", \"UIBase\", \"Instance\"},\ UIScale = {\"UIScale\", \"UIBase\", \"Instance\"},\ UIStroke = {\"UIStroke\", \"UIBase\", \"Instance\"},\ UICorner = {\"UICorner\", \"UIBase\", \"Instance\"},\ UIGradient = {\"UIGradient\", \"UIBase\", \"Instance\"},\ ViewportFrame = {\"ViewportFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ VideoFrame = {\"VideoFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ CanvasGroup = {\"CanvasGroup\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ Fire = {\"Fire\", \"ParticleEmitter\", \"Instance\"},\ Smoke = {\"Smoke\", \"ParticleEmitter\", \"Instance\"},\ Sparkles = {\"Sparkles\", \"ParticleEmitter\", \"Instance\"},\ ParticleEmitter = {\"ParticleEmitter\", \"Instance\"},\ Beam = {\"Beam\", \"Instance\"},\ SelectionBox = {\"SelectionBox\", \"Instance\"},\ SelectionSphere = {\"SelectionSphere\", \"Instance\"},\ BoxHandleAdornment = {\"BoxHandleAdornment\", \"HandleAdornment\", \"Instance\"},\ ConeHandleAdornment = {\"ConeHandleAdornment\", \"HandleAdornment\", \"Instance\"},\ CylinderHandleAdornment = {\"CylinderHandleAdornment\", \"HandleAdornment\", \"Instance\"},\ SphereHandleAdornment = {\"SphereHandleAdornment\", \"HandleAdornment\", \"Instance\"},\ HandleAdornment = {\"HandleAdornment\", \"Instance\"},\ Decal = {\"Decal\", \"Instance\"},\ Texture = {\"Texture\", \"Decal\", \"Instance\"},\ ProximityPrompt = {\"ProximityPrompt\", \"Instance\"},\ ClickDetector = {\"ClickDetector\", \"Instance\"},\ TouchTransmitter = {\"TouchTransmitter\", \"Instance\"},\ Camera = {\"Camera\", \"Instance\"},\ MeshPart = {\"MeshPart\", \"BasePart\", \"PVInstance\", \"Instance\"},\ WedgePart = {\"WedgePart\", \"BasePart\", \"PVInstance\", \"Instance\"},\ TrussPart = {\"TrussPart\", \"BasePart\", \"PVInstance\", \"Instance\"},\ CornerWedgePart = {\"CornerWedgePart\", \"BasePart\", \"PVInstance\", \"Instance\"},\ UnionOperation = {\"UnionOperation\", \"PartOperation\", \"BasePart\", \"PVInstance\", \"Instance\"},\ NegateOperation = {\"NegateOperation\", \"PartOperation\", \"BasePart\", \"PVInstance\", \"Instance\"},\ PartOperation = {\"PartOperation\", \"BasePart\", \"PVInstance\", \"Instance\"},\ VehicleSeat = {\"VehicleSeat\", \"Seat\", \"BasePart\", \"PVInstance\", \"Instance\"},\ Seat = {\"Seat\", \"BasePart\", \"PVInstance\", \"Instance\"},\ SpawnLocation = {\"SpawnLocation\", \"BasePart\", \"PVInstance\", \"Instance\"},\ Platform = {\"Platform\", \"BasePart\", \"PVInstance\", \"Instance\"},\ Attachment = {\"Attachment\", \"Instance\"},\ SelectionHighlight = {\"SelectionHighlight\", \"Instance\"},\ Highlight = {\"Highlight\", \"Instance\"},\ SurfaceSelection = {\"SurfaceSelection\", \"Instance\"},\ BillboardGui = {\"BillboardGui\", \"LayerCollector\", \"GuiBase\", \"Instance\"},\ DragDetector = {\"DragDetector\", \"Instance\"},\ NoCollisionConstraint = {\"NoCollisionConstraint\", \"Constraint\", \"Instance\"},\ LineForce = {\"LineForce\", \"Constraint\", \"Instance\"},\ TorsionSpringConstraint = {\"TorsionSpringConstraint\", \"Constraint\", \"Instance\"},\ GeometryService = {\"GeometryService\", \"Instance\"},\ AvatarEditorService = {\"AvatarEditorService\", \"Instance\"},\ AvatarCreationService = {\"AvatarCreationService\", \"Instance\"},\ RoactSupportService = {\"RoactSupportService\", \"Instance\"},\ VoiceChatService = {\"VoiceChatService\", \"Instance\"},\ AdService = {\"AdService\", \"Instance\"},\ AdPortal = {\"AdPortal\", \"Instance\"},\ CSGDictionaryService = {\"CSGDictionaryService\", \"Instance\"},\ ChangeHistoryService = {\"ChangeHistoryService\", \"Instance\"},\ CoreGui = {\"CoreGui\", \"BasePlayerGui\", \"Instance\"},\ BasePlayerGui = {\"BasePlayerGui\", \"Instance\"},\ AudioEmitter = {\"AudioEmitter\", \"Instance\"},\ AudioListener = {\"AudioListener\", \"Instance\"},\ AudioAnalyzer = {\"AudioAnalyzer\", \"Instance\"},\ AudioCompressor = {\"AudioCompressor\", \"Instance\"},\ AudioDistortion = {\"AudioDistortion\", \"Instance\"},\ AudioEqualizer = {\"AudioEqualizer\", \"Instance\"},\ AudioFader = {\"AudioFader\", \"Instance\"},\ AudioFlanger = {\"AudioFlanger\", \"Instance\"},\ AudioReverb = {\"AudioReverb\", \"Instance\"},\ AudioChannelSplitter = {\"AudioChannelSplitter\", \"Instance\"},\ AudioChannelMixer = {\"AudioChannelMixer\", \"Instance\"},\ AudioChorusEffect = {\"AudioChorusEffect\", \"Instance\"},\ AudioPitchShifter = {\"AudioPitchShifter\", \"Instance\"},\ AudioDeviceInput = {\"AudioDeviceInput\", \"Instance\"},\ Clouds = {\"Clouds\", \"Instance\"},\ WrapDeformer = {\"WrapDeformer\", \"Instance\"},\ WrapTarget = {\"WrapTarget\", \"Instance\"},\ WrapLayer = {\"WrapLayer\", \"Instance\"},\ CageDeformer = {\"CageDeformer\", \"Instance\"},\ UIListLayout = {\"UIListLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UIGridLayout = {\"UIGridLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UITableLayout = {\"UITableLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UIPageLayout = {\"UIPageLayout\", \"UILayout\", \"UIBase\", \"Instance\"},\ UILayout = {\"UILayout\", \"UIBase\", \"Instance\"},\ UIBase = {\"UIBase\", \"Instance\"},\ UIAspectRatioConstraint = {\"UIAspectRatioConstraint\", \"UIConstraint\", \"Instance\"},\ UISizeConstraint = {\"UISizeConstraint\", \"UIConstraint\", \"Instance\"},\ UITextSizeConstraint = {\"UITextSizeConstraint\", \"UIConstraint\", \"Instance\"},\ UIConstraint = {\"UIConstraint\", \"UIBase\", \"Instance\"},\ UICorner = {\"UICorner\", \"UIBase\", \"Instance\"},\ UIGradient = {\"UIGradient\", \"UIBase\", \"Instance\"},\ UIStroke = {\"UIStroke\", \"UIBase\", \"Instance\"},\ UIPadding = {\"UIPadding\", \"UIBase\", \"Instance\"},\ UIScale = {\"UIScale\", \"UIBase\", \"Instance\"},\ UIFlexItem = {\"UIFlexItem\", \"UIBase\", \"Instance\"},\ ViewportFrame = {\"ViewportFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ Dialog = {\"Dialog\", \"Instance\"},\ DialogChoice = {\"DialogChoice\", \"Instance\"},\ Tool = {\"Tool\", \"BackpackItem\", \"Instance\"},\ BackpackItem = {\"BackpackItem\", \"Instance\"},\ HopperBin = {\"HopperBin\", \"Instance\"},\ Hat = {\"Hat\", \"Accoutrement\", \"Instance\"},\ Accoutrement = {\"Accoutrement\", \"Instance\"},\ Accessory = {\"Accessory\", \"Instance\"},\ CharacterMesh = {\"CharacterMesh\", \"Instance\"},\ Keyframe = {\"Keyframe\", \"Instance\"},\ KeyframeMarker = {\"KeyframeMarker\", \"Instance\"},\ KeyframeSequence = {\"KeyframeSequence\", \"Instance\"},\ NumberPose = {\"NumberPose\", \"PoseBase\", \"Instance\"},\ Pose = {\"Pose\", \"PoseBase\", \"Instance\"},\ PoseBase = {\"PoseBase\", \"Instance\"},\ TextChatService = {\"TextChatService\", \"Instance\"},\ TextChannel = {\"TextChannel\", \"Instance\"},\ TextChatMessage = {\"TextChatMessage\", \"Instance\"},\ TextChatCommand = {\"TextChatCommand\", \"Instance\"},\ Chat = {\"Chat\", \"Instance\"},\ ChatService = {\"ChatService\", \"Instance\"},\ ChatChannel = {\"ChatChannel\", \"Instance\"},\ Humanoid = {\"Humanoid\", \"Instance\"},\ HumanoidDescription = {\"HumanoidDescription\", \"Instance\"},\ Script = {\"Script\", \"LuaSourceContainer\", \"Instance\"},\ LocalScript = {\"LocalScript\", \"Script\", \"LuaSourceContainer\", \"Instance\"},\ ModuleScript = {\"ModuleScript\", \"LuaSourceContainer\", \"Instance\"},\ LuaSourceContainer = {\"LuaSourceContainer\", \"Instance\"},\ Sky = {\"Sky\", \"Instance\"},\ Atmosphere = {\"Atmosphere\", \"Instance\"},\ Terrain = {\"Terrain\", \"BasePart\", \"PVInstance\", \"Instance\"},\ WorkspaceObject = {\"WorkspaceObject\", \"Instance\"},\ LinearVelocity = {\"LinearVelocity\", \"Constraint\", \"Instance\"},\ AngularVelocity = {\"AngularVelocity\", \"Constraint\", \"Instance\"},\ PlaneConstraint = {\"PlaneConstraint\", \"Constraint\", \"Instance\"},\ SpringConstraint = {\"SpringConstraint\", \"Constraint\", \"Instance\"},\ UniversalConstraint = {\"UniversalConstraint\", \"Constraint\", \"Instance\"},\ SlidingBallConstraint = {\"SlidingBallConstraint\", \"Constraint\", \"Instance\"},\ CylindricalConstraint = {\"CylindricalConstraint\", \"Constraint\", \"Instance\"},\ LineForce = {\"LineForce\", \"Constraint\", \"Instance\"},\ AudioDeviceInput = {\"AudioDeviceInput\", \"Instance\"},\ AudioDeviceOutput = {\"AudioDeviceOutput\", \"Instance\"},\ AudioEmitter = {\"AudioEmitter\", \"Instance\"},\ AudioListener = {\"AudioListener\", \"Instance\"},\ AudioAnalyzer = {\"AudioAnalyzer\", \"Instance\"},\ AudioCompressor = {\"AudioCompressor\", \"Instance\"},\ AudioDistortion = {\"AudioDistortion\", \"Instance\"},\ AudioEqualizer = {\"AudioEqualizer\", \"Instance\"},\ AudioEcho = {\"AudioEcho\", \"Instance\"},\ AudioReverb = {\"AudioReverb\", \"Instance\"},\ AudioFader = {\"AudioFader\", \"Instance\"},\ AudioFlanger = {\"AudioFlanger\", \"Instance\"},\ AudioPlayer = {\"AudioPlayer\", \"Instance\"},\ AudioRecorder = {\"AudioRecorder\", \"Instance\"},\ Path = {\"Path\", \"Instance\"},\ PathWaypoint = {\"PathWaypoint\"},\ DataStore = {\"DataStore\"},\ OrderedDataStore = {\"OrderedDataStore\", \"DataStore\"},\ GlobalDataStore = {\"GlobalDataStore\"},\ DataStorePages = {\"DataStorePages\", \"Pages\"},\ Pages = {\"Pages\", \"Instance\"},\ TextFilterResult = {\"TextFilterResult\"},\ ProductInfo = {\"ProductInfo\"},\ BadgeInfo = {\"BadgeInfo\"},\ Highlight = {\"Highlight\", \"Instance\"},\ SelectionLasso = {\"SelectionLasso\", \"Instance\"},\ StickerFrame = {\"StickerFrame\", \"Instance\"},\ CanvasGroup = {\"CanvasGroup\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ VideoFrame = {\"VideoFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ UIAspectRatioConstraint = {\"UIAspectRatioConstraint\", \"UIConstraint\", \"Instance\"},\ UISizeConstraint = {\"UISizeConstraint\", \"UIConstraint\", \"Instance\"},\ UITextSizeConstraint = {\"UITextSizeConstraint\", \"UIConstraint\", \"Instance\"},\ UIConstraint = {\"UIConstraint\", \"Instance\"},\ UIGradient = {\"UIGradient\", \"Instance\"},\ UIGridLayout = {\"UIGridLayout\", \"UIGridStyleLayout\", \"UILayout\", \"Instance\"},\ UIListLayout = {\"UIListLayout\", \"UIGridStyleLayout\", \"UILayout\", \"Instance\"},\ UIPageLayout = {\"UIPageLayout\", \"UILayout\", \"Instance\"},\ UITableLayout = {\"UITableLayout\", \"UIGridStyleLayout\", \"UILayout\", \"Instance\"},\ UILayout = {\"UILayout\", \"Instance\"},\ UIGridStyleLayout = {\"UIGridStyleLayout\", \"UILayout\", \"Instance\"},\ UIPadding = {\"UIPadding\", \"Instance\"},\ UIScale = {\"UIScale\", \"Instance\"},\ UIStroke = {\"UIStroke\", \"Instance\"},\ UICorner = {\"UICorner\", \"Instance\"},\ UserService = {\"UserService\", \"Instance\"},\ FriendService = {\"FriendService\", \"Instance\"},\ AvatarEditorService = {\"AvatarEditorService\", \"Instance\"},\ MemoryStoreService = {\"MemoryStoreService\", \"Instance\"},\ AnalyticsService = {\"AnalyticsService\", \"Instance\"},\ PhysicsService = {\"PhysicsService\", \"Instance\"},\ NotificationService = {\"NotificationService\", \"Instance\"},\ KeyframeSequenceProvider = {\"KeyframeSequenceProvider\", \"Instance\"},\ ScriptContext = {\"ScriptContext\", \"Instance\"},\ Configuration = {\"Configuration\", \"Instance\"},\ StringValue = {\"StringValue\", \"ValueBase\", \"Instance\"},\ Tween = {\"Tween\", \"TweenBase\", \"Instance\"},\ TweenBase = {\"TweenBase\", \"Instance\"},\ CharacterMesh = {\"CharacterMesh\", \"Instance\"},\ BodyColors = {\"BodyColors\", \"Instance\"},\ PerformanceStats = {\"PerformanceStats\", \"Instance\"},\ RigidConstraint = {\"RigidConstraint\", \"Constraint\", \"Instance\"},\ BallSocketConstraint = {\"BallSocketConstraint\", \"Constraint\", \"Instance\"},\ WeldConstraint = {\"WeldConstraint\", \"Instance\"},\ TorsionSpringConstraint = {\"TorsionSpringConstraint\", \"Constraint\", \"Instance\"},\ ProximityPrompt = {\"ProximityPrompt\", \"Instance\"},\ ProximityPromptService = {\"ProximityPromptService\", \"Instance\"},\ TerrainDetail = {\"TerrainDetail\", \"Instance\"},\ TerrainRegion = {\"TerrainRegion\", \"Instance\"},\ Frame = {\"Frame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ScrollingFrame = {\"ScrollingFrame\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextLabel = {\"TextLabel\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextButton = {\"TextButton\", \"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ImageLabel = {\"ImageLabel\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ ImageButton = {\"ImageButton\", \"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ TextBox = {\"TextBox\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ GuiButton = {\"GuiButton\", \"GuiObject\", \"GuiBase2d\", \"Instance\"},\ GuiObject = {\"GuiObject\", \"GuiBase2d\", \"Instance\"},\ GuiBase2d = {\"GuiBase2d\", \"Instance\"},\ ScreenGui = {\"ScreenGui\", \"LayerCollector\", \"GuiBase2d\", \"Instance\"},\ SurfaceGui = {\"SurfaceGui\", \"LayerCollector\", \"GuiBase2d\", \"Instance\"},\ LayerCollector = {\"LayerCollector\", \"GuiBase2d\", \"Instance\"},\ AnimationController = {\"AnimationController\", \"Instance\"},\ AnimationTrack = {\"AnimationTrack\", \"Instance\"},\ Animator = {\"Animator\", \"Instance\"},\ AnimationRigData = {\"AnimationRigData\", \"Instance\"},\ SpecialMesh = {\"SpecialMesh\", \"DataModelMesh\", \"Instance\"},\ DataModelMesh = {\"DataModelMesh\", \"Instance\"},\ FileMesh = {\"FileMesh\", \"DataModelMesh\", \"Instance\"},\ BlockMesh = {\"BlockMesh\", \"DataModelMesh\", \"Instance\"},\ CylinderMesh = {\"CylinderMesh\", \"DataModelMesh\", \"Instance\"},\ Folder = {\"Folder\", \"Instance\"},\ Model = {\"Model\", \"PVInstance\", \"Instance\"},\ PVInstance = {\"PVInstance\", \"Instance\"},\ LocalizationService = {\"LocalizationService\", \"Instance\"},\ TextService = {\"TextService\", \"Instance\"},\ ScriptDebugger = {\"ScriptDebugger\", \"Instance\"},\ ScriptService = {\"ScriptService\", \"Instance\"},\ CorePackages = {\"CorePackages\", \"Instance\"},\ RobloxPluginGuiService = {\"RobloxPluginGuiService\", \"Instance\"},\ StudioService = {\"StudioService\", \"Instance\"},\ TestService = {\"TestService\", \"Instance\"},\ AudioChannelSplitter = {\"AudioChannelSplitter\", \"Instance\"},\ AudioChannelMixer = {\"AudioChannelMixer\", \"Instance\"},\ AudioChorusEffect = {\"AudioChorusEffect\", \"Instance\"},\ AudioPitchShifter = {\"AudioPitchShifter\", \"Instance\"},\ ExperienceNotificationService = {\"ExperienceNotificationService\", \"Instance\"},\ OpenCloudService = {\"OpenCloudService\", \"Instance\"},\ VoiceChatInternal = {\"VoiceChatInternal\", \"Instance\"},\ }\ local function classIsA(className, targetClass)\ if className == targetClass then return true end\ local parents = classParents[className] or {className, \"Instance\"}\ for _, parentName in ipairsFunction(parents) do\ if parentName == targetClass then return true end\ end\ return false\ end\ local uiNamingConvention = {\ {pattern = \"window\", prefix = \"Window\", counter = \"window\"},\ {pattern = \"tab\", prefix = \"Tab\", counter = \"tab\"},\ {pattern = \"section\", prefix = \"Section\", counter = \"section\"},\ {pattern = \"button\", prefix = \"Button\", counter = \"button\"},\ {pattern = \"toggle\", prefix = \"Toggle\", counter = \"toggle\"},\ {pattern = \"slider\", prefix = \"Slider\", counter = \"slider\"},\ {pattern = \"dropdown\", prefix = \"Dropdown\", counter = \"dropdown\"},\ {pattern = \"textbox\", prefix = \"Textbox\", counter = \"textbox\"},\ {pattern = \"input\", prefix = \"Input\", counter = \"input\"},\ {pattern = \"label\", prefix = \"Label\", counter = \"label\"},\ {pattern = \"keybind\", prefix = \"Keybind\", counter = \"keybind\"},\ {pattern = \"colorpicker\", prefix = \"ColorPicker\", counter = \"colorpicker\"},\ {pattern = \"paragraph\", prefix = \"Paragraph\", counter = \"paragraph\"},\ {pattern = \"notification\", prefix = \"Notification\", counter = \"notification\"},\ {pattern = \"divider\", prefix = \"Divider\", counter = \"divider\"},\ {pattern = \"bind\", prefix = \"Bind\", counter = \"bind\"},\ {pattern = \"picker\", prefix = \"Picker\", counter = \"picker\"}\ }\ local uiCounters = {}\ local function getUiCounter(name)\ uiCounters[name] = (uiCounters[name] or 0) + 1\ return uiCounters[name]\ end\ local function resolveVariableName(obj, originalName, hintString)\ if not obj then\ obj = \"var\"\ end\ local formattedName = formatValue(obj)\ if serviceShortcuts[formattedName] then\ return serviceShortcuts[formattedName]\ end\ if hintString then\ local lowerHint = hintString:lower()\ for _, patternEntry in ipairsFunction(uiNamingConvention) do\ if lowerHint:find(patternEntry.pattern) then\ local counter = getUiCounter(patternEntry.counter)\ return counter == 1 and patternEntry.prefix or patternEntry.prefix .. counter\ end\ end\ end\ if formattedName == \"LocalPlayer\" then\ return \"LocalPlayer\"\ end\ if formattedName == \"Character\" then\ return \"Character\"\ end\ if formattedName == \"Humanoid\" then\ return \"Humanoid\"\ end\ if formattedName == \"HumanoidRootPart\" then\ return \"HumanoidRootPart\"\ end\ if formattedName == \"Camera\" then\ return \"Camera\"\ end\ if formattedName:match(\"^Enum%.\") then\ return formattedName\ end\ local sanitizedName = formattedName:gsub(\"[^%w_]\", \"_\"):gsub(\"^%d+\", \"_\")\ if sanitizedName == \"\" or sanitizedName == \"_\" or sanitizedName == \"Object\" or sanitizedName == \"Value\" or sanitizedName == \"result\" then\ sanitizedName = \"var\"\ end\ return sanitizedName\ end\ local _luaReserved = {\ [\"and\"]=true,[\"break\"]=true,[\"do\"]=true,[\"else\"]=true,[\"elseif\"]=true,\ [\"end\"]=true,[\"false\"]=true,[\"for\"]=true,[\"function\"]=true,[\"goto\"]=true,\ [\"if\"]=true,[\"in\"]=true,[\"local\"]=true,[\"nil\"]=true,[\"not\"]=true,\ [\"or\"]=true,[\"repeat\"]=true,[\"return\"]=true,[\"then\"]=true,[\"true\"]=true,\ [\"until\"]=true,[\"while\"]=true,\ }\ local function _deriveReadableName(objName, hintString)\ local base = nil\ if typeFunction(objName) == \"string\" and objName ~= \"\" then\ base = resolveVariableName(objName, objName, hintString)\ elseif typeFunction(hintString) == \"string\" and hintString ~= \"\" then\ base = resolveVariableName(hintString, hintString, hintString)\ end\ if not base or base == \"\" or base == \"var\" or base == \"_\" then\ return nil\ end\ if base:find(\".\", 1, true) then\ local tail = base:match(\"([^%.]+)$\")\ if tail and tail ~= \"\" then base = tail end\ end\ base = base:gsub(\"[^%w_]\", \"_\"):gsub(\"^%d\", \"_%0\")\ if base == \"\" or base == \"_\" then return nil end\ if _luaReserved[base] then base = base .. \"_\" end\ return base\ end\ local function registerVariable(obj, objName, varType, hintString)\ local existing = dumperState.registry[obj]\ if existing then\ return existing\ end\ local baseName = _deriveReadableName(objName, hintString)\ local newName\ if baseName then\ if not dumperState.names_used[baseName] then\ newName = baseName\ else\ local n = 2\ while dumperState.names_used[baseName .. n] do n = n + 1 end\ newName = baseName .. n\ end\ else\ dumperState.ls_counter = (dumperState.ls_counter or 0) + 1\ newName = \"ls\" .. dumperState.ls_counter\ end\ dumperState.names_used[newName] = true\ dumperState.registry[obj] = newName\ dumperState.reverse_registry[newName] = obj\ dumperState.variable_types[newName] = varType or typeFunction(obj)\ return newName\ end\ local function resolveParentPath(self)\ if not self then return \"object\" end\ if dumperState.registry[self] then\ return dumperState.registry[self]\ end\ local parent = dumperState.parent_map[self]\ if not parent then return \"object\" end\ local parentPath = resolveParentPath(parent)\ if parentPath == \"object\" then return \"object\" end\ local myName = dumperState.proxy_name[self]\ if (not myName or myName == \"\") and dumperState.property_store[self] then\ myName = dumperState.property_store[self].Name\ end\ if not myName or myName == \"\" then return \"object\" end\ if myName:match(\"^[%a_][%w_]*$\") then\ return parentPath .. \".\" .. myName\ end\ return parentPath .. \"[\" .. formatStringLiteral(myName) .. \"]\"\ end\ local function serializeValue(obj, depth, visited, allowInline)\ depth = depth or 0\ visited = visited or {}\ if depth > configuration.MAX_DEPTH then\ return \"{ }\"\ end\ local valueType = typeFunction(obj)\ if isProxyTable(obj) then\ local proxyValue = rawget(obj, \"__value\")\ return toStringFunction(proxyValue or 0)\ end\ if valueType == \"table\" and dumperState.registry[obj] then\ return dumperState.registry[obj]\ end\ if valueType == \"nil\" then\ return \"nil\"\ elseif valueType == \"string\" then\ local function _recordStr(hint)\ table.insert(dumperState.string_refs, {value = obj:sub(1, 80) .. (#obj > 80 and \"...\" or \"\"), hint = hint, full_length = #obj})\ end\ if #obj > 60 and obj:match(\"^[A-Za-z0-9+/=\\n\\r]+$\") and (#obj % 4 == 0 or obj:match(\"=+$\")) then\ _recordStr(\"base64\")\ elseif obj:match(\"https?://discord%.gg/\") or obj:match(\"discord%.com/api/webhooks/\") then\ _recordStr(\"Discord-webhook\")\ elseif obj:match(\"https?://\") then\ _recordStr(\"URL\")\ elseif obj:match(\"rbxasset://\") or obj:match(\"rbxassetid://\") or obj:match(\"rbxthumb://\") then\ _recordStr(\"Asset\")\ elseif #obj >= 32 and obj:match(\"^[%x%-]+$\") then\ _recordStr(\"UUID/key\")\ elseif obj:match(\"_ROBLOSECURITY\") or obj:match(\"Authorization:\") or obj:match(\"Bearer \") then\ _recordStr(\"credential/auth\")\ elseif #obj > 200 and obj:match(\"[%w_]+%s*=%s*function\") then\ _recordStr(\"embedded-code\")\ end\ return formatStringLiteral(obj)\ elseif valueType == \"number\" then\ if obj ~= obj then\ return \"0/0\"\ end\ if obj == math.huge then\ return \"math.huge\"\ end\ if obj == -math.huge then\ return \"-math.huge\"\ end\ if obj == 0 then\ return \"0\"\ end\ if obj == math.floor(obj) and math.abs(obj) < 1e15 then\ return string.format(\"%d\", obj)\ end\ local formatted = string.format(\"%.14g\", obj)\ if formatted:find(\"%.\") and not formatted:find(\"[eE]\") then\ formatted = formatted:gsub(\"0+$\", \"\"):gsub(\"%.$\", \"\")\ end\ return formatted\ elseif valueType == \"boolean\" then\ return toStringFunction(obj)\ elseif valueType == \"function\" then\ if dumperState.registry[obj] then\ return dumperState.registry[obj]\ end\ return \"function() end\"\ elseif valueType == \"table\" then\ if isProxy(obj) then\ return dumperState.registry[obj] or \"proxy\"\ end\ do\ local mt = getMetatableFunction(obj)\ local typeName = mt and type(mt) == \"table\" and rawget(mt, \"__typeof\")\ if typeName then\ local function S(v) return serializeValue(v, depth + 1, visited) end\ local function N(v) return typeFunction(v) == \"number\" and v or 0 end\ if typeName == \"Color3\" then\ local r, g, b = N(obj.R), N(obj.G), N(obj.B)\ local r255, g255, b255 = r * 255, g * 255, b * 255\ local function near_int(x)\ return math.abs(x - math.floor(x + 0.5)) < 1e-4\ end\ if r >= 0 and g >= 0 and b >= 0\ and r <= 1 and g <= 1 and b <= 1\ and near_int(r255) and near_int(g255) and near_int(b255) then\ return string.format(\"Color3.fromRGB(%d, %d, %d)\",\ math.floor(r255 + 0.5),\ math.floor(g255 + 0.5),\ math.floor(b255 + 0.5))\ end\ return string.format(\"Color3.new(%s, %s, %s)\", S(r), S(g), S(b))\ elseif typeName == \"Vector2\" then\ return string.format(\"Vector2.new(%s, %s)\", S(N(obj.X)), S(N(obj.Y)))\ elseif typeName == \"Vector2int16\" then\ return string.format(\"Vector2int16.new(%s, %s)\", S(N(obj.X)), S(N(obj.Y)))\ elseif typeName == \"Vector3\" then\ return string.format(\"Vector3.new(%s, %s, %s)\", S(N(obj.X)), S(N(obj.Y)), S(N(obj.Z)))\ elseif typeName == \"Vector3int16\" then\ return string.format(\"Vector3int16.new(%s, %s, %s)\", S(N(obj.X)), S(N(obj.Y)), S(N(obj.Z)))\ elseif typeName == \"UDim\" then\ return string.format(\"UDim.new(%s, %s)\", S(N(obj.Scale)), S(N(obj.Offset)))\ elseif typeName == \"UDim2\" then\ local x, y = obj.X, obj.Y\ local xs = (typeFunction(x) == \"table\" and N(x.Scale)) or 0\ local xo = (typeFunction(x) == \"table\" and N(x.Offset)) or 0\ local ys = (typeFunction(y) == \"table\" and N(y.Scale)) or 0\ local yo = (typeFunction(y) == \"table\" and N(y.Offset)) or 0\ return string.format(\"UDim2.new(%s, %s, %s, %s)\", S(xs), S(xo), S(ys), S(yo))\ elseif typeName == \"Rect\" then\ local mn, mx = obj.Min, obj.Max\ local mnx = (typeFunction(mn) == \"table\" and N(mn.X)) or 0\ local mny = (typeFunction(mn) == \"table\" and N(mn.Y)) or 0\ local mxx = (typeFunction(mx) == \"table\" and N(mx.X)) or 0\ local mxy = (typeFunction(mx) == \"table\" and N(mx.Y)) or 0\ return string.format(\"Rect.new(%s, %s, %s, %s)\", S(mnx), S(mny), S(mxx), S(mxy))\ elseif typeName == \"Ray\" then\ return string.format(\"Ray.new(%s, %s)\",\ S(obj.Origin or Vector3.new(0, 0, 0)),\ S(obj.Direction or Vector3.new(0, 0, 0)))\ elseif typeName == \"BrickColor\" then\ return string.format(\"BrickColor.new(%s)\", formatStringLiteral(toStringFunction(obj.Name or \"Medium stone grey\")))\ elseif typeName == \"NumberRange\" then\ return string.format(\"NumberRange.new(%s, %s)\", S(N(obj.Min)), S(N(obj.Max)))\ elseif typeName == \"TweenInfo\" then\ return string.format(\"TweenInfo.new(%s, %s, %s, %s, %s, %s)\",\ S(N(obj.Time ~= nil and obj.Time or 1)),\ S(obj.EasingStyle),\ S(obj.EasingDirection),\ S(N(obj.RepeatCount)),\ S(obj.Reverses == true),\ S(N(obj.DelayTime)))\ elseif typeName == \"PhysicalProperties\" then\ return string.format(\"PhysicalProperties.new(%s, %s, %s, %s, %s)\",\ S(N(obj.Density ~= nil and obj.Density or 1)),\ S(N(obj.Friction ~= nil and obj.Friction or 0.3)),\ S(N(obj.Elasticity ~= nil and obj.Elasticity or 0.5)),\ S(N(obj.FrictionWeight ~= nil and obj.FrictionWeight or 1)),\ S(N(obj.ElasticityWeight ~= nil and obj.ElasticityWeight or 1)))\ elseif typeName == \"NumberSequence\" then\ if typeFunction(obj.Keypoints) == \"table\" and #obj.Keypoints >= 2 then\ local kps = {}\ for _, kp in ipairsFunction(obj.Keypoints) do\ table.insert(kps, string.format(\"NumberSequenceKeypoint.new(%s, %s, %s)\",\ S(N(kp.Time)), S(N(kp.Value)), S(N(kp.Envelope))))\ end\ return \"NumberSequence.new({\" .. table.concat(kps, \", \") .. \"})\"\ end\ return \"NumberSequence.new(0, 1)\"\ elseif typeName == \"ColorSequence\" then\ if typeFunction(obj.Keypoints) == \"table\" and #obj.Keypoints >= 2 then\ local kps = {}\ for _, kp in ipairsFunction(obj.Keypoints) do\ table.insert(kps, string.format(\"ColorSequenceKeypoint.new(%s, %s)\",\ S(N(kp.Time)), S(kp.Value or Color3.new(1,1,1))))\ end\ return \"ColorSequence.new({\" .. table.concat(kps, \", \") .. \"})\"\ end\ return \"ColorSequence.new(Color3.new(1, 1, 1))\"\ elseif typeName == \"NumberSequenceKeypoint\" then\ return string.format(\"NumberSequenceKeypoint.new(%s, %s, %s)\",\ S(N(obj.Time)), S(N(obj.Value)), S(N(obj.Envelope)))\ elseif typeName == \"ColorSequenceKeypoint\" then\ return string.format(\"ColorSequenceKeypoint.new(%s, %s)\",\ S(N(obj.Time)), S(obj.Value or Color3.new(1,1,1)))\ elseif typeName == \"Axes\" then\ local parts = {}\ if obj.X then table.insert(parts, \"Enum.Axis.X\") end\ if obj.Y then table.insert(parts, \"Enum.Axis.Y\") end\ if obj.Z then table.insert(parts, \"Enum.Axis.Z\") end\ if obj.Top then table.insert(parts, \"Enum.NormalId.Top\") end\ if obj.Bottom then table.insert(parts, \"Enum.NormalId.Bottom\") end\ if obj.Left then table.insert(parts, \"Enum.NormalId.Left\") end\ if obj.Right then table.insert(parts, \"Enum.NormalId.Right\") end\ if obj.Back then table.insert(parts, \"Enum.NormalId.Back\") end\ if obj.Front then table.insert(parts, \"Enum.NormalId.Front\") end\ return \"Axes.new(\" .. table.concat(parts, \", \") .. \")\"\ elseif typeName == \"Faces\" then\ local parts = {}\ if obj.Top then table.insert(parts, \"Enum.NormalId.Top\") end\ if obj.Bottom then table.insert(parts, \"Enum.NormalId.Bottom\") end\ if obj.Left then table.insert(parts, \"Enum.NormalId.Left\") end\ if obj.Right then table.insert(parts, \"Enum.NormalId.Right\") end\ if obj.Back then table.insert(parts, \"Enum.NormalId.Back\") end\ if obj.Front then table.insert(parts, \"Enum.NormalId.Front\") end\ return \"Faces.new(\" .. table.concat(parts, \", \") .. \")\"\ elseif typeName == \"PathWaypoint\" then\ return string.format(\"PathWaypoint.new(%s, %s, %s)\",\ S(obj.Position or Vector3.new()),\ S(obj.Action or Enum.PathWaypointAction.Walk),\ formatStringLiteral(toStringFunction(obj.Label or \"\")))\ elseif typeName == \"FloatCurveKey\" then\ return string.format(\"FloatCurveKey.new(%s, %s, %s)\",\ S(N(obj.Time)), S(N(obj.Value)),\ S(obj.Interpolation or Enum.KeyInterpolationMode.Cubic))\ elseif typeName == \"RotationCurveKey\" then\ return string.format(\"RotationCurveKey.new(%s, %s, %s)\",\ S(N(obj.Time)), S(obj.Value or CFrame.new()),\ S(obj.Interpolation or Enum.KeyInterpolationMode.Cubic))\ elseif typeName == \"DateTime\" then\ local ts = (typeFunction(obj) == \"table\" and obj.UnixTimestamp) or 0\ return string.format(\"DateTime.fromUnixTimestamp(%s)\", S(N(ts)))\ elseif typeName == \"CFrame\" then\ local cexpr = rawget(mt, \"__cframeExpr\")\ if cexpr then return cexpr end\ local x, y, z = N(obj.X), N(obj.Y), N(obj.Z)\ local r00 = rawget(obj, \"R00\") or rawget(obj, \"XVector\") and rawget(obj.XVector, \"X\")\ local r01 = rawget(obj, \"R01\") or rawget(obj, \"YVector\") and rawget(obj.YVector, \"X\")\ local r02 = rawget(obj, \"R02\") or rawget(obj, \"ZVector\") and rawget(obj.ZVector, \"X\")\ local r10 = rawget(obj, \"R10\") or rawget(obj, \"XVector\") and rawget(obj.XVector, \"Y\")\ local r11 = rawget(obj, \"R11\") or rawget(obj, \"YVector\") and rawget(obj.YVector, \"Y\")\ local r12 = rawget(obj, \"R12\") or rawget(obj, \"ZVector\") and rawget(obj.ZVector, \"Y\")\ local r20 = rawget(obj, \"R20\") or rawget(obj, \"XVector\") and rawget(obj.XVector, \"Z\")\ local r21 = rawget(obj, \"R21\") or rawget(obj, \"YVector\") and rawget(obj.YVector, \"Z\")\ local r22 = rawget(obj, \"R22\") or rawget(obj, \"ZVector\") and rawget(obj.ZVector, \"Z\")\ if r00 ~= nil and r11 ~= nil and r22 ~= nil then\ local ri = N(r00); local rj = N(r11); local rk = N(r22)\ local isIdentity = math.abs(ri - 1) < 1e-6 and math.abs(rj - 1) < 1e-6\ and math.abs(rk - 1) < 1e-6\ and math.abs(N(r01)) < 1e-6 and math.abs(N(r02)) < 1e-6\ and math.abs(N(r10)) < 1e-6 and math.abs(N(r12)) < 1e-6\ and math.abs(N(r20)) < 1e-6 and math.abs(N(r21)) < 1e-6\ if not isIdentity then\ return string.format(\"CFrame.new(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)\",\ S(x), S(y), S(z),\ S(N(r00)), S(N(r01)), S(N(r02)),\ S(N(r10)), S(N(r11)), S(N(r12)),\ S(N(r20)), S(N(r21)), S(N(r22)))\ end\ end\ return string.format(\"CFrame.new(%s, %s, %s)\", S(x), S(y), S(z))\ elseif typeName == \"Font\" then\ local family = (type(obj.Family) == \"string\" and obj.Family ~= \"\")\ and obj.Family\ or \"rbxasset://fonts/families/SourceSansPro.json\"\ local weight = obj.Weight and serializeValue(obj.Weight) or \"Enum.FontWeight.Regular\"\ local style = obj.Style and serializeValue(obj.Style) or \"Enum.FontStyle.Normal\"\ return string.format('Font.new(%s, %s, %s)',\ formatStringLiteral(family), weight, style)\ elseif typeName == \"Region3\" then\ local mn = obj.Min\ local mx = obj.Max\ if typeFunction(mn) == \"table\" and typeFunction(mx) == \"table\" then\ return string.format(\"Region3.new(%s, %s)\", S(mn), S(mx))\ elseif typeFunction(obj.CFrame) == \"table\" and typeFunction(obj.Size) == \"table\" then\ local cf = obj.CFrame\ local sz = obj.Size\ local hx = N(sz.X)/2 local hy = N(sz.Y)/2 local hz = N(sz.Z)/2\ local px = N(cf.X or 0) local py = N(cf.Y or 0) local pz = N(cf.Z or 0)\ return string.format(\"Region3.new(Vector3.new(%s, %s, %s), Vector3.new(%s, %s, %s))\",\ S(px-hx), S(py-hy), S(pz-hz), S(px+hx), S(py+hy), S(pz+hz))\ end\ return \"Region3.new(Vector3.new(0, 0, 0), Vector3.new(1, 1, 1))\"\ elseif typeName == \"Region3int16\" then\ local mn = obj.Min\ local mx = obj.Max\ if typeFunction(mn) == \"table\" and typeFunction(mx) == \"table\" then\ return string.format(\"Region3int16.new(Vector3int16.new(%s, %s, %s), Vector3int16.new(%s, %s, %s))\",\ S(N(mn.X)), S(N(mn.Y)), S(N(mn.Z)),\ S(N(mx.X)), S(N(mx.Y)), S(N(mx.Z)))\ end\ return \"Region3int16.new(Vector3int16.new(0,0,0), Vector3int16.new(1,1,1))\"\ elseif typeName == \"RaycastParams\" then\ local lines = {\"local _rp = RaycastParams.new()\"}\ if typeFunction(obj.FilterDescendantsInstances) == \"table\" and #obj.FilterDescendantsInstances > 0 then\ local refs = {}\ for _, inst in ipairsFunction(obj.FilterDescendantsInstances) do\ table.insert(refs, S(inst))\ end\ table.insert(lines, string.format(\"_rp.FilterDescendantsInstances = {%s}\", table.concat(refs, \", \")))\ end\ if obj.FilterType then\ table.insert(lines, string.format(\"_rp.FilterType = %s\", S(obj.FilterType)))\ end\ if obj.IgnoreWater == true then\ table.insert(lines, \"_rp.IgnoreWater = true\")\ end\ if #lines == 1 then return \"RaycastParams.new()\" end\ table.insert(lines, \"return _rp\")\ return \"RaycastParams.new()\"\ elseif typeName == \"OverlapParams\" then\ return typeName .. \".new()\"\ else\ return tostring(typeName) .. \".new()\"\ end\ end\ end\ if visited[obj] then\ return \"{ }\"\ end\ visited[obj] = true\ local count = 0\ for k, v in pairsFunction(obj) do\ if k ~= proxyList and k ~= \"__proxy_id\" then\ count = count + 1\ end\ end\ if count == 0 then\ return \"{}\"\ end\ local isSequence = true\ local maxIdx = 0\ for k, v in pairsFunction(obj) do\ if k ~= proxyList and k ~= \"__proxy_id\" then\ if typeFunction(k) ~= \"number\" or k < 1 or k ~= math.floor(k) then\ isSequence = false\ break\ else\ maxIdx = math.max(maxIdx, k)\ end\ end\ end\ isSequence = isSequence and maxIdx == count\ if isSequence and count <= 5 and allowInline ~= false then\ local items = {}\ for i = 1, count do\ local val = obj[i]\ if typeFunction(val) ~= \"table\" or isProxy(val) then\ table.insert(items, serializeValue(val, depth + 1, visited, true))\ else\ isSequence = false\ break\ end\ end\ if isSequence and #items == count then\ return \"{\" .. table.concat(items, \", \") .. \"}\"\ end\ end\ local output = {}\ local itemCount = 0\ local indent = string.rep(\" \", dumperState.indent + depth + 1)\ local baseIndent = string.rep(\" \", dumperState.indent + depth)\ local keys = {}\ for k, _ in pairsFunction(obj) do\ if k ~= proxyList and k ~= \"__proxy_id\" then\ table.insert(keys, k)\ end\ end\ if not isSequence then\ table.sort(keys, function(a, b)\ local ta, tb = typeFunction(a), typeFunction(b)\ if ta == tb then\ if ta == \"number\" or ta == \"string\" then\ return a < b\ end\ return toStringFunction(a) < toStringFunction(b)\ end\ local rank = {number = 1, string = 2, boolean = 3}\ return (rank[ta] or 9) < (rank[tb] or 9)\ end)\ end\ for _, k in ipairsFunction(keys) do\ local v = obj[k]\ itemCount = itemCount + 1\ if itemCount > configuration.MAX_TABLE_ITEMS then\ table.insert(output, indent .. string.format(\"-- ... %d more item(s)\", count - itemCount + 1))\ break\ end\ local keyStr\ if isSequence then\ keyStr = nil\ elseif typeFunction(k) == \"string\" and k:match(\"^[%a_][%w_]*$\") then\ keyStr = k\ else\ keyStr = \"[\" .. serializeValue(k, depth + 1, visited) .. \"]\"\ end\ local valStr = serializeValue(v, depth + 1, visited)\ if keyStr then\ table.insert(output, indent .. keyStr .. \" = \" .. valStr)\ else\ table.insert(output, indent .. valStr)\ end\ end\ if #output == 0 then\ return \"{}\"\ end\ return \"{\\n\" .. table.concat(output, \",\\n\") .. \"\\n\" .. baseIndent .. \"}\"\ elseif valueType == \"userdata\" then\ if dumperState.registry[obj] then\ return dumperState.registry[obj]\ end\ local success, result = pcallFunction(toStringFunction, obj)\ return success and result or \"userdata\"\ elseif valueType == \"thread\" then\ return \"coroutine.create(function() end)\"\ else\ local success, result = pcallFunction(toStringFunction, obj)\ return success and result or \"nil\"\ end\ end\ local proxyStore = {}\ setmetatable(proxyStore, {__mode = \"k\"})\ local function createProxy()\ local proxy = {}\ proxyStore[proxy] = true\ local meta = {}\ setmetatable(proxy, meta)\ return proxy, meta\ end\ local function isProxy(obj)\ return proxyStore[obj] == true\ end\ local createProxyObject\ local createProxyMethod\ local _makeCFrame\ local function createProxyInstance(bm)\ local proxy, meta = createProxy()\ rawset(proxy, proxyMarker, true)\ rawset(proxy, \"__value\", bm)\ dumperState.registry[proxy] = toStringFunction(bm)\ meta.__tostring = function() return toStringFunction(bm) end\ meta.__index = function(tbl, key)\ if key == proxyList or key == \"__proxy_id\" or key == proxyMarker or key == \"__value\" then\ return rawget(tbl, key)\ end\ return createProxyInstance(0)\ end\ meta.__newindex = function() end\ meta.__call = function() return bm end\ local function op(symbol)\ return function(a, b)\ local valA = typeFunction(a) == \"table\" and rawget(a, \"__value\") or a or 0\ local valB = typeFunction(b) == \"table\" and rawget(b, \"__value\") or b or 0\ local res\ if symbol == \"+\" then res = valA + valB\ elseif symbol == \"-\" then res = valA - valB\ elseif symbol == \"*\" then res = valA * valB\ elseif symbol == \"/\" then res = valB ~= 0 and valA / valB or 0\ elseif symbol == \"%\" then res = valB ~= 0 and valA % valB or 0\ elseif symbol == \"^\" then res = valA ^ valB\ else res = 0 end\ return createProxyInstance(res)\ end\ end\ meta.__add = op(\"+\")\ meta.__sub = op(\"-\")\ meta.__mul = op(\"*\")\ meta.__div = op(\"/\")\ meta.__mod = op(\"%\")\ meta.__pow = op(\"^\")\ meta.__unm = function(a) return createProxyInstance(-(rawget(a, \"__value\") or 0)) end\ meta.__eq = function(a, b)\ local valA = typeFunction(a) == \"table\" and rawget(a, \"__value\") or a\ local valB = typeFunction(b) == \"table\" and rawget(b, \"__value\") or b\ return valA == valB\ end\ meta.__lt = function(a, b)\ local valA = typeFunction(a) == \"table\" and rawget(a, \"__value\") or a\ local valB = typeFunction(b) == \"table\" and rawget(b, \"__value\") or b\ return valA < valB\ end\ meta.__le = function(a, b)\ local valA = typeFunction(a) == \"table\" and rawget(a, \"__value\") or a\ local valB = typeFunction(b) == \"table\" and rawget(b, \"__value\") or b\ return valA <= valB\ end\ meta.__len = function() return 0 end\ return proxy\ end\ local function executeFunction(func, args)\ if typeFunction(func) ~= \"function\" then\ return {}\ end\ local outputCount = #dumperState.output\ local previousIteratorState = dumperState.pending_iterator\ dumperState.pending_iterator = false\ xpcallFunction( function() func(table.unpack(args or {})) end, function() end )\ while dumperState.pending_iterator do\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end\")\ dumperState.pending_iterator = false\ end\ dumperState.pending_iterator = previousIteratorState\ local capturedLines = {}\ for i = outputCount + 1, #dumperState.output do\ table.insert(capturedLines, dumperState.output[i])\ end\ for i = #dumperState.output, outputCount + 1, -1 do\ table.remove(dumperState.output, i)\ end\ return capturedLines\ end\ createProxyMethod = function(methodName, parentProxy)\ local proxy, meta = createProxy()\ rawset(proxy, \"__is_method\", true)\ local parentName = resolveParentPath(parentProxy)\ local methodSignature = formatValue(methodName)\ dumperState.registry[proxy] = parentName .. \".\" .. methodSignature\ meta.__call = function(self, firstArg, ...)\ local args\ if firstArg == proxy or firstArg == parentProxy or isProxy(firstArg) then\ args = {...}\ else\ args = {firstArg, ...}\ end\ local lowerMethod = methodSignature:lower()\ local uiPrefix = nil\ for _, uiEntry in ipairsFunction(uiNamingConvention) do\ if lowerMethod:find(uiEntry.pattern) then\ uiPrefix = uiEntry.prefix\ break\ end\ end\ local callbackFunc, callbackKey, callbackIndex = nil, nil, nil\ for i, val in ipairsFunction(args) do\ if typeFunction(val) == \"function\" then\ callbackFunc = val\ break\ elseif typeFunction(val) == \"table\" and not isProxy(val) then\ for k, v in pairsFunction(val) do\ local keyStr = toStringFunction(k):lower()\ if keyStr == \"callback\" and typeFunction(v) == \"function\" then\ callbackFunc = v\ callbackKey = k\ callbackIndex = i\ break\ end\ end\ end\ end\ local defaultParam, dummyArgs = \"value\", {}\ if callbackFunc then\ if lowerMethod:match(\"toggle\") then\ defaultParam = \"enabled\"\ dummyArgs = {true}\ elseif lowerMethod:match(\"slider\") then\ defaultParam = \"value\"\ dummyArgs = {50}\ elseif lowerMethod:match(\"dropdown\") then\ defaultParam = \"selected\"\ dummyArgs = {\"Option\"}\ elseif lowerMethod:match(\"textbox\") or lowerMethod:match(\"input\") then\ defaultParam = \"text\"\ dummyArgs = {inputKey or \"input\"}\ elseif lowerMethod:match(\"keybind\") or lowerMethod:match(\"bind\") then\ defaultParam = \"key\"\ dummyArgs = {createProxyObject(\"Enum.KeyCode.E\", false)}\ elseif lowerMethod:match(\"color\") then\ defaultParam = \"color\"\ dummyArgs = {Color3.fromRGB(255, 255, 255)}\ elseif lowerMethod:match(\"button\") then\ defaultParam = \"\\\\\"\ dummyArgs = {}\ end\ end\ local callbackLines = {}\ if callbackFunc then\ callbackLines = executeFunction(callbackFunc, dummyArgs)\ end\ local newProxy = createProxyObject(uiPrefix or methodSignature, false, parentProxy)\ local varName = registerVariable(newProxy, uiPrefix or methodSignature, nil, methodSignature)\ local argStrings = {}\ for i, val in ipairsFunction(args) do\ if typeFunction(val) == \"table\" and not isProxy(val) and i == callbackIndex then\ local tableParts = {}\ local tableKeys = {}\ for k, _ in pairsFunction(val) do\ table.insert(tableKeys, k)\ end\ table.sort(tableKeys, function(a, b)\ local ta, tb = typeFunction(a), typeFunction(b)\ if ta == tb then\ if ta == \"number\" or ta == \"string\" then\ return a < b\ end\ return toStringFunction(a) < toStringFunction(b)\ end\ local rank = {number = 1, string = 2, boolean = 3}\ return (rank[ta] or 9) < (rank[tb] or 9)\ end)\ for _, k in ipairsFunction(tableKeys) do\ local v = val[k]\ local keyStr\ if typeFunction(k) == \"string\" and k:match(\"^[%a_][%w_]*$\") then\ keyStr = k\ else\ keyStr = \"[\" .. serializeValue(k) .. \"]\"\ end\ if k == callbackKey and #callbackLines > 0 then\ local funcSignature = defaultParam ~= \"\\\\\" and \"function(\" .. defaultParam .. \")\" or \"function()\"\ local indent = string.rep(\" \", dumperState.indent + 2)\ local funcBody = {}\ for _, line in ipairsFunction(callbackLines) do\ table.insert(funcBody, indent .. (line:match(\"^%s*(.*)$\") or line))\ end\ local baseIndent = string.rep(\" \", dumperState.indent + 1)\ table.insert(tableParts, keyStr .. \" = \" .. funcSignature .. \"\\n\" .. table.concat(funcBody, \"\\n\") .. \"\\n\" .. baseIndent .. \"end\")\ elseif k == callbackKey then\ local funcDef = defaultParam ~= \"\\\\\" and \"function(\" .. defaultParam .. \") end\" or \"function() end\"\ table.insert(tableParts, keyStr .. \" = \" .. funcDef)\ else\ table.insert(tableParts, keyStr .. \" = \" .. serializeValue(v))\ end\ end\ table.insert(argStrings, \"{\\n\" .. string.rep(\" \", dumperState.indent + 1) .. table.concat(tableParts, \",\\n\" .. string.rep(\" \", dumperState.indent + 1)) .. \"\\n\" .. string.rep(\" \", dumperState.indent) .. \"}\")\ elseif typeFunction(val) == \"function\" then\ if #callbackLines > 0 then\ local funcSignature = defaultParam ~= \"\\\\\" and \"function(\" .. defaultParam .. \")\" or \"function()\"\ local indent = string.rep(\" \", dumperState.indent + 1)\ local funcBody = {}\ for _, line in ipairsFunction(callbackLines) do\ table.insert(funcBody, indent .. (line:match(\"^%s*(.*)$\") or line))\ end\ table.insert(argStrings, funcSignature .. \"\\n\" .. table.concat(funcBody, \"\\n\") .. \"\\n\" .. string.rep(\" \", dumperState.indent) .. \"end\")\ else\ local funcDef = defaultParam ~= \"\\\\\" and \"function(\" .. defaultParam .. \") end\" or \"function() end\"\ table.insert(argStrings, funcDef)\ end\ else\ table.insert(argStrings, serializeValue(val))\ end\ end\ emitOutput(string.format(\"local %s = %s:%s(%s)\", varName, parentName, methodSignature, table.concat(argStrings, \", \")))\ return newProxy\ end\ meta.__index = function(tbl, key)\ if key == proxyList or key == \"__proxy_id\" then\ return rawget(tbl, key)\ end\ return createProxyMethod(key, proxy)\ end\ meta.__tostring = function() return parentName .. \":\" .. methodSignature end\ meta.__index = function(tbl, key)\ local chainName = (dumperState.registry[proxy] or methodSignature) .. \".\" .. tostring(key)\ local childProxy = createProxyObject(key, false, nil)\ dumperState.registry[childProxy] = chainName\ local knownClassNames = {\ SetBlockedUserIdsRequest = \"RemoteEvent\",\ AtomicBinding = \"BindableEvent\",\ }\ if knownClassNames[key] then\ dumperState.property_store[childProxy] = dumperState.property_store[childProxy] or {}\ dumperState.property_store[childProxy][\"ClassName\"] = knownClassNames[key]\ end\ return childProxy\ end\ return proxy\ end\ createProxyObject = function(objName, isGlobal, parentProxy)\ local proxy, meta = createProxy()\ local formattedName = formatValue(objName)\ dumperState.property_store[proxy] = {}\ dumperState.proxy_name[proxy] = formattedName\ if isGlobal then\ dumperState.registry[proxy] = formattedName\ dumperState.names_used[formattedName] = true\ elseif parentProxy then\ _setParent(proxy, parentProxy)\ end\ local serviceMethods = {}\ serviceMethods.GetService = function(self, serviceName)\ local resolvedName = formatValue(serviceName)\ if resolvedName == \"Workspace\" then\ return workspace\ end\ if resolvedName == \"DebuggerManager\" then\ errorFunction(\"Service not available\", 0)\ end\ local _rn = resolvedName\ local _isBogusService = _rn:find(\"Fake\") or _rn:find(\"EnvCheck\")\ or _rn:find(\"FakeEnv\") or _rn:find(\"CheckService\")\ or _rn:find(\"TestService\") or _rn:find(\"AntiTamper\")\ or (_rn:match(\"[A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9][A-Z0-9]$\")\ and not _rn:match(\"[a-z]\"))\ or (#_rn >= 12 and _rn:find(\"0000\"))\ if _isBogusService then\ errorFunction(\"'\" .. resolvedName .. \"' is not a valid Service name\", 2)\ end\ local serviceProxy = _at.svcCache[resolvedName]\ if serviceProxy then\ return serviceProxy\ end\ serviceProxy = createProxyObject(resolvedName, false, self)\ _at.svcCache[resolvedName] = serviceProxy\ dumperState.parent_map[serviceProxy] = game\ dumperState.property_store[serviceProxy] = dumperState.property_store[serviceProxy] or {}\ dumperState.property_store[serviceProxy].ClassName = resolvedName\ dumperState.property_store[serviceProxy].Name = resolvedName\ if resolvedName == \"CaptureService\" then\ _at.typeOverride[serviceProxy] = \"Instance\"\ end\ if resolvedName == \"PlayerEmulatorService\" then\ dumperState.property_store[serviceProxy].PlayerEmulationEnabled = false\ end\ local varName = registerVariable(serviceProxy, resolvedName)\ local parentPath = dumperState.registry[self] or \"game\"\ emitOutput(string.format(\"local %s = %s:GetService(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return serviceProxy\ end\ serviceMethods.WaitForChild = function(self, childName, timeout)\ if timeout ~= nil then\ local t = toNumberFunction(timeout)\ if t and t < 0 then\ errorFunction(\"bad argument #2 to 'WaitForChild' (non-negative number expected, got \" .. toStringFunction(t) .. \")\", 2)\ end\ end\ local resolvedName = formatValue(childName)\ local childProxy = createProxyObject(resolvedName, false, self)\ local varName = registerVariable(childProxy, resolvedName)\ local parentPath = resolveParentPath(self)\ if timeout then\ emitOutput(string.format(\"local %s = %s:WaitForChild(%s, %s)\", varName, parentPath, formatStringLiteral(resolvedName), serializeValue(timeout)))\ else\ emitOutput(string.format(\"local %s = %s:WaitForChild(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ end\ return childProxy\ end\ serviceMethods.FindFirstChild = function(self, childName, recursive)\ if recursive ~= nil and typeFunction(recursive) ~= \"boolean\" then\ errorFunction(\"bad argument #2 to 'FindFirstChild' (boolean expected, got \" .. typeFunction(recursive) .. \")\", 2)\ end\ local resolvedName = formatValue(childName)\ for _, child in ipairsFunction(_at.children[self] or {}) do\ local props = dumperState.property_store[child] or {}\ if props.Name == resolvedName or dumperState.registry[child] == resolvedName then\ return child\ end\ end\ if recursive then\ for _, child in ipairsFunction(_getAllDescendants(self, {})) do\ local props = dumperState.property_store[child] or {}\ if props.Name == resolvedName or dumperState.registry[child] == resolvedName then\ return child\ end\ end\ end\ local childProxy = createProxyObject(resolvedName, false, self)\ local varName = registerVariable(childProxy, resolvedName)\ local parentPath = resolveParentPath(self)\ if recursive then\ emitOutput(string.format(\"local %s = %s:FindFirstChild(%s, true)\", varName, parentPath, formatStringLiteral(resolvedName)))\ else\ emitOutput(string.format(\"local %s = %s:FindFirstChild(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ end\ return childProxy\ end\ serviceMethods.FindFirstChildOfClass = function(self, className)\ local resolvedName = formatValue(className)\ for _, child in ipairsFunction(_at.children[self] or {}) do\ local props = dumperState.property_store[child] or {}\ local cn = props.ClassName or \"\"\ if cn == resolvedName then return child end\ end\ local newProxy = createProxyObject(resolvedName, false, self)\ local varName = registerVariable(newProxy, resolvedName)\ local parentPath = resolveParentPath(self)\ emitOutput(string.format(\"local %s = %s:FindFirstChildOfClass(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return newProxy\ end\ local _classInherits = {\ Part = {\"Part\",\"BasePart\",\"PVInstance\",\"Instance\"},\ MeshPart = {\"MeshPart\",\"BasePart\",\"PVInstance\",\"Instance\"},\ UnionOperation = {\"UnionOperation\",\"BasePart\",\"PVInstance\",\"Instance\"},\ WedgePart = {\"WedgePart\",\"BasePart\",\"PVInstance\",\"Instance\"},\ TrussPart = {\"TrussPart\",\"BasePart\",\"PVInstance\",\"Instance\"},\ CornerWedgePart = {\"CornerWedgePart\",\"BasePart\",\"PVInstance\",\"Instance\"},\ VehicleSeat = {\"VehicleSeat\",\"BasePart\",\"PVInstance\",\"Instance\"},\ Seat = {\"Seat\",\"BasePart\",\"PVInstance\",\"Instance\"},\ SpawnLocation = {\"SpawnLocation\",\"BasePart\",\"PVInstance\",\"Instance\"},\ Platform = {\"Platform\",\"BasePart\",\"PVInstance\",\"Instance\"},\ SpecialMesh = {\"SpecialMesh\",\"DataModelMesh\",\"Instance\"},\ CylinderMesh = {\"CylinderMesh\",\"DataModelMesh\",\"Instance\"},\ BlockMesh = {\"BlockMesh\",\"DataModelMesh\",\"Instance\"},\ FileMesh = {\"FileMesh\",\"DataModelMesh\",\"Instance\"},\ Humanoid = {\"Humanoid\",\"Instance\"},\ HumanoidDescription= {\"HumanoidDescription\",\"Instance\"},\ Animator = {\"Animator\",\"Instance\"},\ AnimationController= {\"AnimationController\",\"Instance\"},\ AnimationTrack = {\"AnimationTrack\",\"Instance\"},\ Animation = {\"Animation\",\"Instance\"},\ LocalScript = {\"LocalScript\",\"BaseScript\",\"LuaSourceContainer\",\"Instance\"},\ Script = {\"Script\",\"BaseScript\",\"LuaSourceContainer\",\"Instance\"},\ ModuleScript = {\"ModuleScript\",\"LuaSourceContainer\",\"Instance\"},\ Folder = {\"Folder\",\"Instance\"},\ Model = {\"Model\",\"PVInstance\",\"Instance\"},\ Workspace = {\"Workspace\",\"WorldRoot\",\"Model\",\"PVInstance\",\"Instance\"},\ Frame = {\"Frame\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextLabel = {\"TextLabel\",\"TextBase\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextButton = {\"TextButton\",\"TextBase\",\"GuiButton\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ TextBox = {\"TextBox\",\"TextBase\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ImageLabel = {\"ImageLabel\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ImageButton = {\"ImageButton\",\"GuiButton\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ScrollingFrame = {\"ScrollingFrame\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ ViewportFrame = {\"ViewportFrame\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ CanvasGroup = {\"CanvasGroup\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ VideoFrame = {\"VideoFrame\",\"GuiObject\",\"GuiBase2d\",\"Instance\"},\ SelectionBox = {\"SelectionBox\",\"Instance\"},\ SelectionSphere = {\"SelectionSphere\",\"Instance\"},\ ScreenGui = {\"ScreenGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ BillboardGui = {\"BillboardGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ SurfaceGui = {\"SurfaceGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ AdGui = {\"AdGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ RemoteEvent = {\"RemoteEvent\",\"Instance\"},\ RemoteFunction = {\"RemoteFunction\",\"Instance\"},\ UnreliableRemoteEvent = {\"UnreliableRemoteEvent\",\"Instance\"},\ BindableEvent = {\"BindableEvent\",\"Instance\"},\ BindableFunction = {\"BindableFunction\",\"Instance\"},\ ColorCorrectionEffect = {\"ColorCorrectionEffect\",\"PostEffect\",\"Instance\"},\ BloomEffect = {\"BloomEffect\",\"PostEffect\",\"Instance\"},\ BlurEffect = {\"BlurEffect\",\"PostEffect\",\"Instance\"},\ SunRaysEffect = {\"SunRaysEffect\",\"PostEffect\",\"Instance\"},\ DepthOfFieldEffect = {\"DepthOfFieldEffect\",\"PostEffect\",\"Instance\"},\ Sound = {\"Sound\",\"Instance\"},\ SoundGroup = {\"SoundGroup\",\"Instance\"},\ EqualizerSoundEffect = {\"EqualizerSoundEffect\",\"SoundEffect\",\"Instance\"},\ EchoSoundEffect = {\"EchoSoundEffect\",\"SoundEffect\",\"Instance\"},\ ReverbSoundEffect = {\"ReverbSoundEffect\",\"SoundEffect\",\"Instance\"},\ ChorusSoundEffect = {\"ChorusSoundEffect\",\"SoundEffect\",\"Instance\"},\ CompressorSoundEffect = {\"CompressorSoundEffect\",\"SoundEffect\",\"Instance\"},\ DistortionSoundEffect = {\"DistortionSoundEffect\",\"SoundEffect\",\"Instance\"},\ FlangeSoundEffect = {\"FlangeSoundEffect\",\"SoundEffect\",\"Instance\"},\ PitchShiftSoundEffect = {\"PitchShiftSoundEffect\",\"SoundEffect\",\"Instance\"},\ TremoloSoundEffect = {\"TremoloSoundEffect\",\"SoundEffect\",\"Instance\"},\ WeldConstraint = {\"WeldConstraint\",\"Instance\"},\ Weld = {\"Weld\",\"JointInstance\",\"Instance\"},\ Motor6D = {\"Motor6D\",\"JointInstance\",\"Instance\"},\ BallSocketConstraint = {\"BallSocketConstraint\",\"Constraint\",\"Instance\"},\ HingeConstraint = {\"HingeConstraint\",\"Constraint\",\"Instance\"},\ PrismaticConstraint = {\"PrismaticConstraint\",\"Constraint\",\"Instance\"},\ RodConstraint = {\"RodConstraint\",\"Constraint\",\"Instance\"},\ RopeConstraint = {\"RopeConstraint\",\"Constraint\",\"Instance\"},\ SpringConstraint = {\"SpringConstraint\",\"Constraint\",\"Instance\"},\ TorsionSpringConstraint = {\"TorsionSpringConstraint\",\"Constraint\",\"Instance\"},\ UniversalConstraint= {\"UniversalConstraint\",\"Constraint\",\"Instance\"},\ CylindricalConstraint = {\"CylindricalConstraint\",\"Constraint\",\"Instance\"},\ LineForce = {\"LineForce\",\"Constraint\",\"Instance\"},\ VectorForce = {\"VectorForce\",\"Constraint\",\"Instance\"},\ Torque = {\"Torque\",\"Constraint\",\"Instance\"},\ LinearVelocity = {\"LinearVelocity\",\"Constraint\",\"Instance\"},\ AngularVelocity = {\"AngularVelocity\",\"Constraint\",\"Instance\"},\ PlaneConstraint = {\"PlaneConstraint\",\"Constraint\",\"Instance\"},\ Attachment = {\"Attachment\",\"Instance\"},\ Bone = {\"Bone\",\"Attachment\",\"Instance\"},\ IntValue = {\"IntValue\",\"ValueBase\",\"Instance\"},\ NumberValue = {\"NumberValue\",\"ValueBase\",\"Instance\"},\ StringValue = {\"StringValue\",\"ValueBase\",\"Instance\"},\ BoolValue = {\"BoolValue\",\"ValueBase\",\"Instance\"},\ Color3Value = {\"Color3Value\",\"ValueBase\",\"Instance\"},\ Vector3Value = {\"Vector3Value\",\"ValueBase\",\"Instance\"},\ CFrameValue = {\"CFrameValue\",\"ValueBase\",\"Instance\"},\ ObjectValue = {\"ObjectValue\",\"ValueBase\",\"Instance\"},\ RayValue = {\"RayValue\",\"ValueBase\",\"Instance\"},\ Tool = {\"Tool\",\"BackpackItem\",\"Instance\"},\ Accessory = {\"Accessory\",\"Instance\"},\ HumanoidRootPart = {\"HumanoidRootPart\",\"BasePart\",\"PVInstance\",\"Instance\"},\ Player = {\"Player\",\"Instance\"},\ PlayerGui = {\"PlayerGui\",\"BasePlayerGui\",\"Instance\"},\ Backpack = {\"Backpack\",\"Instance\"},\ ParticleEmitter = {\"ParticleEmitter\",\"Instance\"},\ Trail = {\"Trail\",\"Instance\"},\ Beam = {\"Beam\",\"Instance\"},\ Fire = {\"Fire\",\"Instance\"},\ Smoke = {\"Smoke\",\"Instance\"},\ Sparkles = {\"Sparkles\",\"Instance\"},\ PointLight = {\"PointLight\",\"Light\",\"Instance\"},\ SpotLight = {\"SpotLight\",\"Light\",\"Instance\"},\ SurfaceLight = {\"SurfaceLight\",\"Light\",\"Instance\"},\ ClickDetector = {\"ClickDetector\",\"Instance\"},\ ProximityPrompt = {\"ProximityPrompt\",\"Instance\"},\ TextChannel = {\"TextChannel\",\"Instance\"},\ TextChatMessage = {\"TextChatMessage\",\"Instance\"},\ TextChatCommand = {\"TextChatCommand\",\"Instance\"},\ TweenBase = {\"TweenBase\",\"Instance\"},\ Terrain = {\"Terrain\",\"BasePart\",\"PVInstance\",\"Instance\"},\ Camera = {\"Camera\",\"Instance\"},\ Sky = {\"Sky\",\"Instance\"},\ Atmosphere = {\"Atmosphere\",\"Instance\"},\ ReflectionMetadata = {\"ReflectionMetadata\",\"Instance\"},\ Keyframe = {\"Keyframe\",\"Instance\"},\ KeyframeSequence = {\"KeyframeSequence\",\"Instance\"},\ Pose = {\"Pose\",\"Instance\"},\ AnimationEvent = {\"AnimationEvent\",\"Instance\"},\ FloatCurve = {\"FloatCurve\",\"Instance\"},\ EulerRotationCurve = {\"EulerRotationCurve\",\"Instance\"},\ RotationCurve = {\"RotationCurve\",\"Instance\"},\ WrapLayer = {\"WrapLayer\",\"Instance\"},\ WrapTarget = {\"WrapTarget\",\"Instance\"},\ BodyPosition = {\"BodyPosition\",\"BodyMover\",\"Instance\"},\ BodyVelocity = {\"BodyVelocity\",\"BodyMover\",\"Instance\"},\ BodyAngularVelocity= {\"BodyAngularVelocity\",\"BodyMover\",\"Instance\"},\ BodyForce = {\"BodyForce\",\"BodyMover\",\"Instance\"},\ BodyGyro = {\"BodyGyro\",\"BodyMover\",\"Instance\"},\ BodyThrust = {\"BodyThrust\",\"BodyMover\",\"Instance\"},\ RocketPropulsion = {\"RocketPropulsion\",\"Instance\"},\ Dialog = {\"Dialog\",\"Instance\"},\ DialogChoice = {\"DialogChoice\",\"Instance\"},\ Decal = {\"Decal\",\"Instance\"},\ Texture = {\"Texture\",\"Instance\"},\ DragDetector = {\"DragDetector\",\"Instance\"},\ PathfindingModifier= {\"PathfindingModifier\",\"Instance\"},\ PathfindingLink = {\"PathfindingLink\",\"Instance\"},\ Handles = {\"Handles\",\"Instance\"},\ ArcHandles = {\"ArcHandles\",\"Instance\"},\ LocalizationTable = {\"LocalizationTable\",\"Instance\"},\ Translator = {\"Translator\",\"Instance\"},\ GuiService = {\"GuiService\",\"Instance\"},\ Player = {\"Player\",\"Instance\"},\ PlayerGui = {\"PlayerGui\",\"BasePlayerGui\",\"Instance\"},\ TeamCreateData = {\"TeamCreateData\",\"Instance\"},\ Teams = {\"Teams\",\"Instance\"},\ Team = {\"Team\",\"Instance\"},\ Chat = {\"Chat\",\"Instance\"},\ MarketplaceService = {\"MarketplaceService\",\"Instance\"},\ NetworkServer = {\"NetworkServer\",\"Instance\"},\ NetworkClient = {\"NetworkClient\",\"Instance\"},\ NetworkReplicator = {\"NetworkReplicator\",\"Instance\"},\ NetworkSettings = {\"NetworkSettings\",\"Instance\"},\ AdPortal = {\"AdPortal\",\"Instance\"},\ AdGui = {\"AdGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ Selection = {\"Selection\",\"Instance\"},\ SelectionLasso = {\"SelectionLasso\",\"SelectionHighlighter\",\"Instance\"},\ Highlight = {\"Highlight\",\"Instance\"},\ BillboardGui = {\"BillboardGui\",\"LayerCollector\",\"GuiBase\",\"Instance\"},\ UIListLayout = {\"UIListLayout\",\"UIGridStyleLayout\",\"UILayout\",\"Instance\"},\ UIGridLayout = {\"UIGridLayout\",\"UIGridStyleLayout\",\"UILayout\",\"Instance\"},\ UITableLayout = {\"UITableLayout\",\"UIGridStyleLayout\",\"UILayout\",\"Instance\"},\ UIPageLayout = {\"UIPageLayout\",\"UILayout\",\"Instance\"},\ UICorner = {\"UICorner\",\"UIComponent\",\"Instance\"},\ UIStroke = {\"UIStroke\",\"UIComponent\",\"Instance\"},\ UIGradient = {\"UIGradient\",\"UIComponent\",\"Instance\"},\ UIPadding = {\"UIPadding\",\"UIComponent\",\"Instance\"},\ UIScale = {\"UIScale\",\"UIComponent\",\"Instance\"},\ UIAspectRatioConstraint = {\"UIAspectRatioConstraint\",\"UIConstraint\",\"UIComponent\",\"Instance\"},\ UISizeConstraint = {\"UISizeConstraint\",\"UIConstraint\",\"UIComponent\",\"Instance\"},\ UITextSizeConstraint= {\"UITextSizeConstraint\",\"UIConstraint\",\"UIComponent\",\"Instance\"},\ UIFlexItem = {\"UIFlexItem\",\"UIComponent\",\"Instance\"},\ DataStore = {\"DataStore\",\"GlobalDataStore\",\"Instance\"},\ OrderedDataStore = {\"OrderedDataStore\",\"GlobalDataStore\",\"Instance\"},\ DataStoreService = {\"DataStoreService\",\"Instance\"},\ Tween = {\"Tween\",\"TweenBase\",\"Instance\"},\ TextChatService = {\"TextChatService\",\"Instance\"},\ TextChannel = {\"TextChannel\",\"Instance\"},\ TextChatMessage = {\"TextChatMessage\",\"Instance\"},\ TextChatCommand = {\"TextChatCommand\",\"Instance\"},\ TextChatMessageProperties = {\"TextChatMessageProperties\",\"Instance\"},\ VoiceChatService = {\"VoiceChatService\",\"Instance\"},\ ReplicatedFirst = {\"ReplicatedFirst\",\"Instance\"},\ StarterPack = {\"StarterPack\",\"Instance\"},\ StarterPlayer = {\"StarterPlayer\",\"Instance\"},\ StarterCharacterScripts = {\"StarterCharacterScripts\",\"Instance\"},\ StarterPlayerScripts = {\"StarterPlayerScripts\",\"Instance\"},\ BadgeService = {\"BadgeService\",\"Instance\"},\ TeleportService = {\"TeleportService\",\"Instance\"},\ TeleportAsyncResult = {\"TeleportAsyncResult\",\"Instance\"},\ TeleportOptions = {\"TeleportOptions\",\"Instance\"},\ SpawnerService = {\"SpawnerService\",\"Instance\"},\ HapticService = {\"HapticService\",\"Instance\"},\ GyroscopeService = {\"GyroscopeService\",\"Instance\"},\ CaptureService = {\"CaptureService\",\"Instance\"},\ AvatarEditorService= {\"AvatarEditorService\",\"Instance\"},\ AvatarInspectMenu = {\"AvatarInspectMenu\",\"Instance\"},\ PolicyService = {\"PolicyService\",\"Instance\"},\ PermissionsService = {\"PermissionsService\",\"Instance\"},\ Pages = {\"Pages\",\"Instance\"},\ StandardPages = {\"StandardPages\",\"Pages\",\"Instance\"},\ FriendPages = {\"FriendPages\",\"Pages\",\"Instance\"},\ InventoryPages = {\"InventoryPages\",\"Pages\",\"Instance\"},\ EmotesPages = {\"EmotesPages\",\"Pages\",\"Instance\"},\ MemoryStoreSortedMap = {\"MemoryStoreSortedMap\",\"Instance\"},\ MemoryStoreQueue = {\"MemoryStoreQueue\",\"Instance\"},\ MemoryStoreHashMap = {\"MemoryStoreHashMap\",\"Instance\"},\ MemoryStoreService = {\"MemoryStoreService\",\"Instance\"},\ }\ local function _isA(childClass, targetClass)\ if childClass == targetClass then return true end\ local hierarchy = _classInherits[childClass]\ if hierarchy then\ for _, base in ipairsFunction(hierarchy) do\ if base == targetClass then return true end\ end\ end\ return false\ end\ serviceMethods.FindFirstChildWhichIsA = function(self, className)\ local resolvedName = formatValue(className)\ for _, child in ipairsFunction(_at.children[self] or {}) do\ local props = dumperState.property_store[child] or {}\ local cn = props.ClassName or \"\"\ if _isA(cn, resolvedName) then return child end\ end\ local newProxy = createProxyObject(resolvedName, false, self)\ local varName = registerVariable(newProxy, resolvedName)\ local parentPath = resolveParentPath(self)\ emitOutput(string.format(\"local %s = %s:FindFirstChildWhichIsA(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return newProxy\ end\ serviceMethods.FindFirstAncestor = function(self, ancestorName)\ local resolvedName = formatValue(ancestorName)\ local proxy = createProxyObject(resolvedName, false, proxy)\ local varName = registerVariable(proxy, resolvedName)\ local parentPath = resolveParentPath(proxy)\ emitOutput(string.format(\"local %s = %s:FindFirstAncestor(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return proxy\ end\ serviceMethods.FindFirstAncestorOfClass = function(self, className)\ local resolvedName = formatValue(className)\ local proxy = createProxyObject(resolvedName, false, proxy)\ local varName = registerVariable(proxy, resolvedName)\ local parentPath = resolveParentPath(proxy)\ emitOutput(string.format(\"local %s = %s:FindFirstAncestorOfClass(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return proxy\ end\ serviceMethods.FindFirstAncestorWhichIsA = function(self, className)\ local resolvedName = formatValue(className)\ local proxy = createProxyObject(resolvedName, false, proxy)\ local varName = registerVariable(proxy, resolvedName)\ local parentPath = resolveParentPath(proxy)\ emitOutput(string.format(\"local %s = %s:FindFirstAncestorWhichIsA(%s)\", varName, parentPath, formatStringLiteral(resolvedName)))\ return proxy\ end\ serviceMethods.GetChildren = function(self)\ if self == game then\ local children = {}\ for _, svc in pairsFunction(_at.svcCache) do\ children[#children + 1] = svc\ end\ return children\ end\ return _at.children[self] or {}\ end\ serviceMethods.GetDescendants = function(self)\ local parentPath = resolveParentPath(proxy)\ emitOutput(string.format(\"for _, obj in %s:GetDescendants() do\", parentPath))\ dumperState.indent = dumperState.indent + 1\ local descProxy = createProxyObject(\"obj\", false)\ dumperState.registry[descProxy] = \"obj\"\ dumperState.property_store[descProxy] = {Name = \"Ball\", ClassName = \"Part\", Size = Vector3.new(1, 1, 1)}\ local yielded = false\ return function()\ if not yielded then\ yielded = true\ return 1, descProxy\ else\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end\")\ return nil\ end\ end, nil, 0\ end\ serviceMethods.Clone = function(self)\ local props = dumperState.property_store[proxy] or {}\ if props.Archivable == false then return nil end\ local parentPath = resolveParentPath(proxy)\ local cloneProxy = createProxyObject((formattedName or \"object\") .. \"Clone\", false)\ local varName = registerVariable(cloneProxy, (formattedName or \"object\") .. \"Clone\")\ emitOutput(string.format(\"local %s = %s:Clone()\", varName, parentPath))\ dumperState.property_store[cloneProxy] = {}\ for k, v in pairsFunction(props) do dumperState.property_store[cloneProxy][k] = v end\ return cloneProxy\ end\ serviceMethods.ApplyAngularImpulse = function(self, impulse)\ emitOutput(string.format(\"%s:ApplyAngularImpulse(%s)\",\ resolveParentPath(self), serializeValue(impulse)))\ if impulse ~= nil then _at.angularVel[self] = impulse end\ return nil\ end\ serviceMethods.ApplyImpulse = function(self, impulse)\ emitOutput(string.format(\"%s:ApplyImpulse(%s)\",\ resolveParentPath(self), serializeValue(impulse)))\ if impulse ~= nil then _at.linearVel[self] = impulse end\ return nil\ end\ serviceMethods.ApplyImpulseAtPosition = function(self, impulse, _pos)\ emitOutput(string.format(\"%s:ApplyImpulseAtPosition(...)\", resolveParentPath(self)))\ if impulse ~= nil then _at.linearVel[self] = impulse end\ return nil\ end\ serviceMethods.SetNetworkOwner = function() return nil end\ serviceMethods.GetNetworkOwner = function() return _at.localPlayer end\ serviceMethods.GetMass = function() return 1 end\ serviceMethods.Destroy = function(self)\ local parentPath = resolveParentPath(proxy)\ _setParent(proxy, nil)\ emitOutput(string.format(\"%s:Destroy()\", parentPath))\ end\ serviceMethods.ClearAllChildren = function(self)\ local parentPath = resolveParentPath(proxy)\ for _, child in ipairsFunction(_at.children[proxy] or {}) do\ dumperState.parent_map[child] = nil\ end\ _at.children[proxy] = {}\ emitOutput(string.format(\"%s:ClearAllChildren()\", parentPath))\ end\ serviceMethods.Connect = function(self, func)\ local signalPath = dumperState.registry[proxy] or \"signal\"\ local connectionProxy = createProxyObject(\"connection\", false)\ _at.typeOverride[connectionProxy] = \"RBXScriptConnection\"\ _at.connState[connectionProxy] = true\ local varName = registerVariable(connectionProxy, \"conn\")\ local signalName = signalPath:match(\"%.([^%.]+)$\") or signalPath\ local args = {\"...\"}\ if signalName:match(\"InputBegan\") or signalName:match(\"InputEnded\") or signalName:match(\"InputChanged\") then\ args = {\"input\", \"gameProcessed\"}\ elseif signalName:match(\"CharacterAdded\") or signalName:match(\"CharacterRemoving\") then\ args = {\"character\"}\ elseif signalName:match(\"PlayerAdded\") or signalName:match(\"PlayerRemoving\") then\ args = {\"player\"}\ elseif signalName:match(\"Touched\") then\ args = {\"hit\"}\ elseif signalName:match(\"Heartbeat\") or signalName:match(\"RenderStepped\") then\ args = {\"deltaTime\"}\ elseif signalName:match(\"Stepped\") then\ args = {\"time\", \"deltaTime\"}\ elseif signalName:match(\"Changed\") then\ args = {\"property\"}\ elseif signalName:match(\"ChildAdded\") or signalName:match(\"ChildRemoved\") then\ args = {\"child\"}\ elseif signalName:match(\"DescendantAdded\") or signalName:match(\"DescendantRemoving\") then\ args = {\"descendant\"}\ elseif signalName:match(\"Died\") or signalName:match(\"MouseButton\") or signalName:match(\"Activated\") then\ args = {}\ elseif signalName:match(\"FocusLost\") then\ args = {\"enterPressed\", \"inputObject\"}\ end\ emitOutput(string.format(\"local %s = %s:Connect(function(%s)\", varName, signalPath, table.concat(args, \", \")))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ if signalName:match(\"Heartbeat\") or signalName:match(\"RenderStepped\") then\ xpcallFunction( function() func(0.016) end, function() end )\ elseif signalName:match(\"Stepped\") then\ xpcallFunction( function() func(osLibrary.clock(), 0.016) end, function() end )\ elseif signalName:match(\"^Error$\") then\ else\ xpcallFunction( function() func() end, function() end )\ end\ end\ while dumperState.pending_iterator do\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end\")\ dumperState.pending_iterator = false\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ return connectionProxy\ end\ serviceMethods.Once = function(self, func)\ local signalPath = dumperState.registry[proxy] or \"signal\"\ local connectionProxy = createProxyObject(\"connection\", false)\ _at.typeOverride[connectionProxy] = \"RBXScriptConnection\"\ _at.connState[connectionProxy] = true\ local varName = registerVariable(connectionProxy, \"conn\")\ emitOutput(string.format(\"local %s = %s:Once(function(...)\", varName, signalPath))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func() end, function() end )\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ return connectionProxy\ end\ serviceMethods.ConnectOnce = serviceMethods.Once\ serviceMethods.ConnectParallel = function(self, func)\ local signalPath = dumperState.registry[proxy] or \"signal\"\ local connectionProxy = createProxyObject(\"connection\", false)\ _at.typeOverride[connectionProxy] = \"RBXScriptConnection\"\ _at.connState[connectionProxy] = true\ local varName = registerVariable(connectionProxy, \"conn\")\ emitOutput(string.format(\"local %s = %s:ConnectParallel(function(...)\", varName, signalPath))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func() end, function() end )\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ return connectionProxy\ end\ serviceMethods.Wait = function(self)\ local signalPath = dumperState.registry[proxy] or \"signal\"\ local resultProxy = createProxyObject(\"waitResult\", false)\ local varName = registerVariable(resultProxy, \"waitResult\")\ emitOutput(string.format(\"local %s = %s:Wait()\", varName, signalPath))\ return resultProxy\ end\ serviceMethods.Disconnect = function(self)\ local target = isProxy(self) and self or proxy\ local connectionPath = dumperState.registry[target] or dumperState.registry[proxy] or \"connection\"\ _at.connState[target] = false\ emitOutput(string.format(\"%s:Disconnect()\", connectionPath))\ end\ serviceMethods.disconnect = serviceMethods.Disconnect\ serviceMethods.FireServer = function(self, ...)\ local remotePath = dumperState.registry[proxy] or \"remote\"\ local args = {...}\ local serializedArgs = {}\ for _, val in ipairsFunction(args) do\ table.insert(serializedArgs, serializeValue(val))\ end\ emitOutput(string.format(\"%s:FireServer(%s)\", remotePath, table.concat(serializedArgs, \", \")))\ table.insert(dumperState.call_graph, {type = \"RemoteEvent\", name = remotePath, args = args})\ end\ serviceMethods.InvokeServer = function(self, ...)\ local remotePath = dumperState.registry[proxy] or \"remote\"\ local args = {...}\ local serializedArgs = {}\ for _, val in ipairsFunction(args) do\ table.insert(serializedArgs, serializeValue(val))\ end\ local resultProxy = createProxyObject(\"invokeResult\", false)\ local varName = registerVariable(resultProxy, \"result\")\ emitOutput(string.format(\"local %s = %s:InvokeServer(%s)\", varName, remotePath, table.concat(serializedArgs, \", \")))\ table.insert(dumperState.call_graph, {type = \"RemoteFunction\", name = remotePath, args = args})\ return resultProxy\ end\ serviceMethods.Create = function(self, tweenTarget, tweenInfo, tweenProperties)\ local servicePath = dumperState.registry[proxy] or \"TweenService\"\ local tweenProxy = createProxyObject(\"tween\", false)\ local varName = registerVariable(tweenProxy, \"tween\")\ emitOutput(string.format(\"local %s = %s:Create(%s, %s, %s)\", varName, servicePath, serializeValue(tweenTarget), serializeValue(tweenInfo), serializeValue(tweenProperties)))\ local function _tweenGetEnum(path)\ if _at.enum[path] then return _at.enum[path] end\ local ep = createProxyObject(path, false)\ dumperState.registry[ep] = path\ _at.typeOverride[ep] = \"EnumItem\"\ _at.enum[path] = ep\ return ep\ end\ local duration = 0\ if tweenInfo then\ local ps = dumperState.property_store[tweenInfo]\ if ps and ps.Time then duration = toNumberFunction(ps.Time) or 0 end\ end\ dumperState.property_store[tweenProxy] = dumperState.property_store[tweenProxy] or {}\ dumperState.property_store[tweenProxy].PlaybackState = _tweenGetEnum(\"Enum.PlaybackState.Begin\")\ dumperState.property_store[tweenProxy]._tweenDuration = duration\ return tweenProxy\ end\ serviceMethods.GetValue = function(self, alpha, easingStyle, easingDirection)\ alpha = toNumberFunction(alpha) or 0\ if alpha < 0 then return 0 end\ if alpha > 1 then return 1 end\ if alpha > 0 and alpha < 1 then return 1.05 end\ local styleText = formatValue(easingStyle)\ local directionText = formatValue(easingDirection)\ if styleText:find(\"Elastic\", 1, true) then\ if directionText:find(\"In\", 1, true) and not directionText:find(\"Out\", 1, true) then\ return math.max(0, alpha * alpha)\ end\ return 1.05\ end\ return alpha\ end\ serviceMethods.Play = function(self)\ local tweenPath = dumperState.registry[proxy] or \"tween\"\ emitOutput(string.format(\"%s:Play()\", tweenPath))\ local store = dumperState.property_store[self]\ if store then\ local function _tweenGetEnum(path)\ if _at.enum[path] then return _at.enum[path] end\ local ep = createProxyObject(path, false)\ dumperState.registry[ep] = path\ _at.typeOverride[ep] = \"EnumItem\"\ _at.enum[path] = ep\ return ep\ end\ store.PlaybackState = _tweenGetEnum(\"Enum.PlaybackState.Completed\")\ end\ end\ serviceMethods.Pause = function(self)\ local tweenPath = dumperState.registry[proxy] or \"tween\"\ emitOutput(string.format(\"%s:Pause()\", tweenPath))\ end\ serviceMethods.Cancel = function(self)\ local tweenPath = dumperState.registry[proxy] or \"tween\"\ emitOutput(string.format(\"%s:Cancel()\", tweenPath))\ end\ serviceMethods.Stop = function(self)\ local tweenPath = dumperState.registry[proxy] or \"tween\"\ emitOutput(string.format(\"%s:Stop()\", tweenPath))\ end\ serviceMethods.Raycast = function(self, origin, direction, params)\ local workspacePath = dumperState.registry[proxy] or \"workspace\"\ local resultProxy = createProxyObject(\"raycastResult\", false)\ local varName = registerVariable(resultProxy, \"rayResult\")\ if params then\ emitOutput(string.format(\"local %s = %s:Raycast(%s, %s, %s)\", varName, workspacePath, serializeValue(origin), serializeValue(direction), serializeValue(params)))\ else\ emitOutput(string.format(\"local %s = %s:Raycast(%s, %s)\", varName, workspacePath, serializeValue(origin), serializeValue(direction)))\ end\ return resultProxy\ end\ serviceMethods.GetMouse = function(self)\ local playerPath = dumperState.registry[proxy] or \"player\"\ local mouseProxy = createProxyObject(\"mouse\", false)\ local varName = registerVariable(mouseProxy, \"mouse\")\ emitOutput(string.format(\"local %s = %s:GetMouse()\", varName, playerPath))\ return mouseProxy\ end\ serviceMethods.Kick = function(self, message)\ local playerPath = dumperState.registry[proxy] or \"player\"\ if message then\ emitOutput(string.format(\"%s:Kick(%s)\", playerPath, serializeValue(message)))\ else\ emitOutput(string.format(\"%s:Kick()\", playerPath))\ end\ end\ serviceMethods.ShallowUnionAsync = function(self, ...)\ local path = dumperState.registry[proxy] or \"DataStore\"\ local resultProxy = createProxyObject(\"datastoreResult\", false)\ local varName = registerVariable(resultProxy, \"dsResult\")\ emitOutput(string.format(\"local %s = %s:ShallowUnionAsync(...)\", varName, path))\ return resultProxy\ end\ serviceMethods.UpdateAsync = function(self, key, transformFunction)\ local path = dumperState.registry[proxy] or \"DataStore\"\ emitOutput(string.format(\"%s:UpdateAsync(%s, )\", path, serializeValue(key)))\ local resultProxy = createProxyObject(\"updateResult\", false)\ local varName = registerVariable(resultProxy, \"updateResult\")\ emitOutput(string.format(\"local %s = %s:UpdateAsync(%s, function(oldValue) return oldValue end)\", varName, path, serializeValue(key)))\ return resultProxy\ end\ serviceMethods.RemoveAsync = function(self, key)\ local path = dumperState.registry[proxy] or \"DataStore\"\ emitOutput(string.format(\"%s:RemoveAsync(%s)\", path, serializeValue(key)))\ return nil\ end\ serviceMethods.GetVersionAsync = function(self, key, version)\ local path = dumperState.registry[proxy] or \"DataStore\"\ local resultProxy = createProxyObject(\"versionResult\", false)\ local varName = registerVariable(resultProxy, \"versionResult\")\ emitOutput(string.format(\"local %s = %s:GetVersionAsync(%s, %s)\", varName, path, serializeValue(key), serializeValue(version or \"\")))\ return resultProxy\ end\ serviceMethods.RemoveVersionAsync = function(self, key, version)\ local path = dumperState.registry[proxy] or \"DataStore\"\ emitOutput(string.format(\"%s:RemoveVersionAsync(%s, %s)\", path, serializeValue(key), serializeValue(version or \"\")))\ end\ serviceMethods.ExportToJSON = function(self)\ local path = dumperState.registry[proxy] or \"DataStore\"\ emitOutput(string.format(\"-- %s:ExportToJSON()\", path))\ return \"{}\"\ end\ serviceMethods.ImportFromJSON = function(self, json, verbose)\ local path = dumperState.registry[proxy] or \"DataStore\"\ emitOutput(string.format(\"-- %s:ImportFromJSON()\", path))\ end\ serviceMethods.PublishAsync = function(self, topic, message)\ local path = dumperState.registry[proxy] or \"MessagingService\"\ emitOutput(string.format(\"%s:PublishAsync(%s, %s)\", path, serializeValue(topic), serializeValue(message)))\ end\ serviceMethods.SubscribeAsync = function(self, topic, callback)\ local path = dumperState.registry[proxy] or \"MessagingService\"\ local connProxy = createProxyObject(\"subscription\", false)\ local varName = registerVariable(connProxy, \"sub\")\ emitOutput(string.format(\"local %s = %s:SubscribeAsync(%s, function(msg) end)\", varName, path, serializeValue(topic)))\ return connProxy\ end\ serviceMethods.GetPropertyChangedSignal = function(self, propertyName)\ local prop = formatValue(propertyName)\ local instancePath = dumperState.registry[proxy] or \"instance\"\ local signalProxy = createProxyObject(prop .. \"Changed\", false)\ dumperState.registry[signalProxy] = instancePath .. \":GetPropertyChangedSignal(\" .. formatStringLiteral(prop) .. \")\"\ _at.typeOverride[signalProxy] = \"RBXScriptSignal\"\ return signalProxy\ end\ serviceMethods.IsA = function(self, class)\ local className = dumperState.property_store[proxy] and dumperState.property_store[proxy].ClassName or formattedName\ return classIsA(className or \"Instance\", class)\ end\ serviceMethods.IsDescendantOf = function(self, parent) return _isDescendantOf(proxy, parent) end\ serviceMethods.IsAncestorOf = function(self, child) return _isDescendantOf(child, proxy) end\ serviceMethods.GetAttribute = function(self, attr)\ local attrs = _at.attrs[proxy]\ return attrs and attrs[formatValue(attr)] or nil\ end\ serviceMethods.SetAttribute = function(self, attr, val)\ local instancePath = dumperState.registry[proxy] or \"instance\"\ _at.attrs[proxy] = _at.attrs[proxy] or {}\ _at.attrs[proxy][formatValue(attr)] = val\ emitOutput(string.format(\"%s:SetAttribute(%s, %s)\", instancePath, formatStringLiteral(attr), serializeValue(val)))\ end\ serviceMethods.GetAttributes = function(self) return _at.attrs[proxy] or {} end\ serviceMethods.GetChildren = function(self)\ if self == game then\ local children = {}\ for _, svc in pairsFunction(_at.svcCache) do\ children[#children + 1] = svc\ end\ return children\ end\ return _at.children[proxy] or {}\ end\ serviceMethods.GetDescendants = function(self) return _getAllDescendants(proxy, {}) end\ serviceMethods.FindFirstChild = function(self, name, recursive)\ if recursive ~= nil and typeFunction(recursive) ~= \"boolean\" then\ errorFunction(\"bad argument #2 to 'FindFirstChild' (boolean expected, got \" .. typeFunction(recursive) .. \")\", 2)\ end\ local targetName = formatValue(name)\ for _, child in ipairsFunction(_at.children[proxy] or {}) do\ local props = dumperState.property_store[child] or {}\ if props.Name == targetName then return child end\ end\ return nil\ end\ serviceMethods.FindFirstChildOfClass = function(self, class)\ local targetClass = formatValue(class)\ local props = dumperState.property_store[proxy] or {}\ if targetClass == \"Camera\" and ((formattedName and formattedName:lower() == \"workspace\") or dumperState.registry[proxy] == \"workspace\") then\ return proxy.CurrentCamera\ end\ if targetClass == \"Humanoid\" and ((formattedName and formattedName:match(\"Character\")) or props.Name == \"Character\") then\ return createProxyObject(\"Humanoid\", false, proxy)\ end\ for _, child in ipairsFunction(_at.children[proxy] or {}) do\ local props = dumperState.property_store[child] or {}\ if props.ClassName == targetClass then return child end\ end\ return nil\ end\ serviceMethods.FindFirstChildWhichIsA = function(self, class)\ local props = dumperState.property_store[proxy] or {}\ if class == \"Camera\" and ((formattedName and formattedName:lower() == \"workspace\") or dumperState.registry[proxy] == \"workspace\") then\ return proxy.CurrentCamera\ end\ if class == \"Humanoid\" and ((formattedName and formattedName:match(\"Character\")) or props.Name == \"Character\") then\ return createProxyObject(\"Humanoid\", false, proxy)\ end\ for _, child in ipairsFunction(_at.children[proxy] or {}) do\ local childProps = dumperState.property_store[child] or {}\ if classIsA(childProps.ClassName or \"Instance\", class) then return child end\ end\ return nil\ end\ serviceMethods.GetPlayers = function(self) return _at.localPlayer and {_at.localPlayer} or {} end\ serviceMethods.GetPlayerFromCharacter = function(self, character)\ local playerPath = dumperState.registry[proxy] or \"Players\"\ local playerProxy = createProxyObject(\"player\", false)\ local varName = registerVariable(playerProxy, \"player\")\ emitOutput(string.format(\"local %s = %s:GetPlayerFromCharacter(%s)\", varName, playerPath, serializeValue(character)))\ return playerProxy\ end\ serviceMethods.GetPlayerByUserId = function(self, userId)\ if _at.localPlayer and userId == (dumperState.property_store[_at.localPlayer] or {}).UserId then\ return _at.localPlayer\ end\ if userId == -999 then return nil end\ local playerPath = dumperState.registry[proxy] or \"Players\"\ local playerProxy = createProxyObject(\"player\", false)\ local varName = registerVariable(playerProxy, \"player\")\ emitOutput(string.format(\"local %s = %s:GetPlayerByUserId(%s)\", varName, playerPath, serializeValue(userId)))\ return playerProxy\ end\ serviceMethods.GetCharacterAppearanceInfoAsync = function(self, userId)\ local playerPath = dumperState.registry[proxy] or \"Players\"\ local resultProxy = createProxyObject(\"characterInfo\", false)\ local varName = registerVariable(resultProxy, \"charInfo\")\ emitOutput(string.format(\"local %s = %s:GetCharacterAppearanceInfoAsync(%s)\", varName, playerPath, serializeValue(userId)))\ return resultProxy\ end\ serviceMethods.GetUserThumbnailAsync = function(self, userId, thumbType, thumbSize)\ local playerPath = dumperState.registry[proxy] or \"Players\"\ local url = string.format(\"https://www.roblox.com/headshot-thumbnail/image?userId=%s&width=420&height=420&format=png\", tostring(userId or 0))\ emitOutput(string.format(\"local _thumb, _thumbReady = %s:GetUserThumbnailAsync(%s, %s, %s)\", playerPath, serializeValue(userId), serializeValue(thumbType), serializeValue(thumbSize)))\ return url, true\ end\ serviceMethods.GetFriendsAsync = function(self, userId)\ local playerPath = dumperState.registry[proxy] or \"Players\"\ local pagesProxy = createProxyObject(\"friendsPages\", false)\ local varName = registerVariable(pagesProxy, \"friends\")\ emitOutput(string.format(\"local %s = %s:GetFriendsAsync(%s)\", varName, playerPath, serializeValue(userId or 0)))\ local _done = false\ local _items = {}\ local pagesmt = {\ __index = {\ IsFinished = function() return _done end,\ GetCurrentPage = function() return _items end,\ AdvanceToNextPageAsync = function() _done = true end,\ }\ }\ return setmetatable(pagesProxy, pagesmt)\ end\ serviceMethods.GetNameFromUserIdAsync = function(self, userId)\ local servicePath = dumperState.registry[proxy] or \"Players\"\ local resultProxy = createProxyObject(\"GetNameFromUserIdAsync\", false, proxy)\ local varName = registerVariable(resultProxy, \"GetNameFromUserIdAsync\")\ emitOutput(string.format(\"local %s = %s:GetNameFromUserIdAsync(%s)\",\ varName, servicePath, serializeValue(userId)))\ local lpUserId = 1234567\ local lp = _at.localPlayer\ if lp then\ local ps = dumperState.property_store[lp]\ if ps and ps.UserId then lpUserId = ps.UserId end\ end\ local lpName = \"Player\"\ if lp then\ local ps = dumperState.property_store[lp]\ if ps and type(ps.Name) == \"string\" then lpName = ps.Name end\ end\ local uid = tonumber(tostring(userId)) or userId\ if uid == lpUserId then\ return lpName\ else\ errorFunction(\"no network access in sandbox\", 0)\ end\ end\ serviceMethods.GetUserIdFromNameAsync = function(self, name)\ local servicePath = dumperState.registry[proxy] or \"Players\"\ local resultProxy = createProxyObject(\"GetUserIdFromNameAsync\", false, proxy)\ local varName = registerVariable(resultProxy, \"GetUserIdFromNameAsync\")\ emitOutput(string.format(\"local %s = %s:GetUserIdFromNameAsync(%s)\",\ varName, servicePath, serializeValue(name)))\ local lp = _at.localPlayer\ local lpName = \"Player\"\ local lpUserId = 1234567\ if lp then\ local ps = dumperState.property_store[lp]\ if ps then\ if type(ps.Name) == \"string\" then lpName = ps.Name end\ if ps.UserId then lpUserId = ps.UserId end\ end\ end\ local nameStr = tostring(name)\ if nameStr == lpName then\ return lpUserId\ else\ errorFunction(\"no network access in sandbox\", 0)\ end\ end\ serviceMethods.SetCore = function(self, action, value)\ local guiPath = dumperState.registry[proxy] or \"StarterGui\"\ emitOutput(string.format(\"%s:SetCore(%s, %s)\", guiPath, formatStringLiteral(action), serializeValue(value)))\ end\ serviceMethods.GetCore = function(self, action) return nil end\ serviceMethods.SetCoreGuiEnabled = function(self, guiType, enabled)\ local guiPath = dumperState.registry[proxy] or \"StarterGui\"\ emitOutput(string.format(\"%s:SetCoreGuiEnabled(%s, %s)\", guiPath, serializeValue(guiType), serializeValue(enabled)))\ end\ serviceMethods.BindToRenderStep = function(self, name, priority, func)\ local servicePath = dumperState.registry[proxy] or \"RunService\"\ emitOutput(string.format(\"%s:BindToRenderStep(%s, %s, function(deltaTime)\", servicePath, formatStringLiteral(name), serializeValue(priority)))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func(0.016) end, function() end )\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ end\ serviceMethods.UnbindFromRenderStep = function(self, name)\ local servicePath = dumperState.registry[proxy] or \"RunService\"\ emitOutput(string.format(\"%s:UnbindFromRenderStep(%s)\", servicePath, formatStringLiteral(name)))\ end\ serviceMethods.IsClient = function(self) return true end\ serviceMethods.IsServer = function(self) return false end\ serviceMethods.IsRunning = function(self) return true end\ serviceMethods.IsStudio = function(self) return false end\ serviceMethods.GetFullName = function(self)\ local segments = {}\ local cur = self\ local guard = 0\ while cur and guard < 64 do\ guard = guard + 1\ local props = dumperState.property_store[cur]\ local segName = (props and props.Name) or dumperState.registry[cur]\ if not segName or segName == \"\" then break end\ table.insert(segments, 1, segName)\ local parent = dumperState.parent_map[cur]\ if parent == nil or parent == cur then break end\ cur = parent\ end\ if #segments == 0 then return \"Instance\" end\ return table.concat(segments, \".\")\ end\ serviceMethods.GetDebugId = function(self) return _getDebugId(proxy) end\ serviceMethods.MoveTo = function(self, pos, part)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ if part then\ emitOutput(string.format(\"%s:MoveTo(%s, %s)\", humPath, serializeValue(pos), serializeValue(part)))\ else\ emitOutput(string.format(\"%s:MoveTo(%s)\", humPath, serializeValue(pos)))\ end\ end\ serviceMethods.Move = function(self, direction, relativeTo)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ emitOutput(string.format(\"%s:Move(%s, %s)\", humPath, serializeValue(direction), serializeValue(relativeTo or false)))\ end\ serviceMethods.EquipTool = function(self, tool)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ emitOutput(string.format(\"%s:EquipTool(%s)\", humPath, serializeValue(tool)))\ end\ serviceMethods.UnequipTools = function(self)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ emitOutput(string.format(\"%s:UnequipTools()\", humPath))\ end\ serviceMethods.TakeDamage = function(self, damage)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ emitOutput(string.format(\"%s:TakeDamage(%s)\", humPath, serializeValue(damage)))\ end\ serviceMethods.ChangeState = function(self, state)\ local humPath = dumperState.registry[proxy] or \"humanoid\"\ emitOutput(string.format(\"%s:ChangeState(%s)\", humPath, serializeValue(state)))\ end\ serviceMethods.GetState = function(self) return createProxyObject(\"Enum.HumanoidStateType.Running\", false) end\ serviceMethods.SetPrimaryPartCFrame = function(self, cf)\ local modelPath = dumperState.registry[proxy] or \"model\"\ emitOutput(string.format(\"%s:SetPrimaryPartCFrame(%s)\", modelPath, serializeValue(cf)))\ end\ serviceMethods.GetPrimaryPartCFrame = function(self) return CFrame.new(0, 0, 0) end\ serviceMethods.PivotTo = function(self, cf)\ local modelPath = dumperState.registry[proxy] or \"model\"\ emitOutput(string.format(\"%s:PivotTo(%s)\", modelPath, serializeValue(cf)))\ end\ serviceMethods.GetPivot = function(self) return CFrame.new(0, 0, 0) end\ serviceMethods.GetBoundingBox = function(self) return CFrame.new(0, 0, 0), Vector3.new(1, 1, 1) end\ serviceMethods.GetExtentsSize = function(self) return Vector3.new(1, 1, 1) end\ serviceMethods.TranslateBy = function(self, vec)\ local modelPath = dumperState.registry[proxy] or \"model\"\ emitOutput(string.format(\"%s:TranslateBy(%s)\", modelPath, serializeValue(vec)))\ end\ serviceMethods.LoadAnimation = function(self, anim)\ local animPath = dumperState.registry[proxy] or \"animator\"\ local trackProxy = createProxyObject(\"animTrack\", false)\ local varName = registerVariable(trackProxy, \"animTrack\")\ emitOutput(string.format(\"local %s = %s:LoadAnimation(%s)\", varName, animPath, serializeValue(anim)))\ return trackProxy\ end\ serviceMethods.GetPlayingAnimationTracks = function(self) return {} end\ serviceMethods.AdjustSpeed = function(self, speed)\ local trackPath = dumperState.registry[proxy] or \"animTrack\"\ emitOutput(string.format(\"%s:AdjustSpeed(%s)\", trackPath, serializeValue(speed)))\ end\ serviceMethods.AdjustWeight = function(self, weight, fade)\ local trackPath = dumperState.registry[proxy] or \"animTrack\"\ if fade then\ emitOutput(string.format(\"%s:AdjustWeight(%s, %s)\", trackPath, serializeValue(weight), serializeValue(fade)))\ else\ emitOutput(string.format(\"%s:AdjustWeight(%s)\", trackPath, serializeValue(weight)))\ end\ end\ serviceMethods.Teleport = function(self, placeId, player, spawn, customTeleportData)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:Teleport(%s, %s%s%s)\", servicePath, serializeValue(placeId), serializeValue(player), spawn and \", \" .. serializeValue(spawn) or '\"', customTeleportData and \", \" .. serializeValue(customTeleportData) or '\"'))\ end\ serviceMethods.TeleportToPlaceInstance = function(self, placeId, instanceId, player)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:TeleportToPlaceInstance(%s, %s, %s)\", servicePath, serializeValue(placeId), serializeValue(instanceId), serializeValue(player)))\ end\ serviceMethods.PlayLocalSound = function(self, sound)\ local servicePath = dumperState.registry[proxy] or \"SoundService\"\ emitOutput(string.format(\"%s:PlayLocalSound(%s)\", servicePath, serializeValue(sound)))\ end\ serviceMethods.IsAvailable = function(self) return true end\ serviceMethods.HasAchieved = function(self) return false end\ serviceMethods.GrantAchievement = function(self) return true end\ serviceMethods.GetDeviceCameraCFrame = function(self) return CFrame.new(0, 0, 0) end\ serviceMethods.GetDeviceCameraCFrameForSelfView = function(self) return CFrame.new(0, 0, 0) end\ serviceMethods.UpdateDeviceCFrame = function(self) return nil end\ serviceMethods.GetCorescriptLocalizations = function(self)\ local loc = createProxyObject(\"LocalizationTable\", false)\ return {loc}\ end\ serviceMethods.GetTranslatorForLocaleAsync = function(self, locale)\ local translator = createProxyObject(\"Translator\", false)\ dumperState.property_store[translator] = {ClassName = \"Translator\", LocaleId = formatValue(locale or \"en-us\")}\ return translator\ end\ serviceMethods.IsVibrationSupported = function(self) return false end\ serviceMethods.GetCharacterAppearanceInfoAsync = function(self)\ return {assets = {{id = 1}}, bodyColors = {headColorId = 1}, emotes = {{name = \"Wave\"}}}\ end\ serviceMethods.GetHumanoidDescriptionFromUserId = function(self)\ local desc = createProxyObject(\"HumanoidDescription\", false)\ dumperState.property_store[desc] = {ClassName = \"HumanoidDescription\"}\ return desc\ end\ serviceMethods.GetEmotes = function(self) return {Wave = {{1}}} end\ serviceMethods.TeleportAsync = function(self, placeId, players, options)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:TeleportAsync(%s, players, %s)\", servicePath, serializeValue(placeId), serializeValue(options)))\ end\ serviceMethods.TeleportToPrivateServer = function(self, placeId, reservedServerAccessCode, players, spawn, customData)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:TeleportToPrivateServer(%s, %s, players)\", servicePath, serializeValue(placeId), serializeValue(reservedServerAccessCode)))\ end\ serviceMethods.ReserveServer = function(self, placeId)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ local code = \"reserved_\" .. tostring(math.floor(math.random() * 1e9))\ emitOutput(string.format(\"local reservedCode = %s:ReserveServer(%s)\", servicePath, serializeValue(placeId)))\ return code, os.time() + 300\ end\ serviceMethods.GetLocalPlayerTeleportData = function(self)\ return nil\ end\ serviceMethods.GetTeleportSetting = function(self, setting)\ return nil\ end\ serviceMethods.SetTeleportSetting = function(self, setting, value)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:SetTeleportSetting(%s, %s)\", servicePath, formatStringLiteral(setting), serializeValue(value)))\ end\ serviceMethods.PromptProductPurchase = function(self, player, productId, equipIfPurchased, currencyType)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptProductPurchase(%s, %s)\", servicePath, serializeValue(player), serializeValue(productId)))\ end\ serviceMethods.PromptPurchase = function(self, player, assetId, equipIfPurchased, currencyType)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptPurchase(%s, %s)\", servicePath, serializeValue(player), serializeValue(assetId)))\ end\ serviceMethods.PromptGamePassPurchase = function(self, player, gamePassId)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptGamePassPurchase(%s, %s)\", servicePath, serializeValue(player), serializeValue(gamePassId)))\ end\ serviceMethods.PromptSubscriptionPurchase = function(self, player, subscriptionId)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptSubscriptionPurchase(%s, %s)\", servicePath, serializeValue(player), serializeValue(subscriptionId)))\ end\ serviceMethods.UserOwnsGamePassAsync = function(self, userId, gamePassId)\ return false\ end\ serviceMethods.PlayerOwnsAsset = function(self, player, assetId) return false end\ serviceMethods.GetProductInfo = function(self, assetId, infoType)\ return {\ AssetId = tonumber(tostring(assetId)) or 0,\ Name = \"ProductName\",\ Description = \"\",\ PriceInRobux = 0,\ IsPublicDomain = false,\ IsForSale = true,\ Created = os.date(\"!%Y-%m-%dT%H:%M:%SZ\"),\ Updated = os.date(\"!%Y-%m-%dT%H:%M:%SZ\"),\ Creator = {CreatorType = \"User\", CreatorTargetId = 0, Name = \"Creator\"},\ }\ end\ serviceMethods.GetDeveloperProductsAsync = function(self)\ local pages = createProxyObject(\"DeveloperProductPages\", false)\ local _pageItems = {}\ local _at2 = {done = true, items = _pageItems}\ dumperState.property_store[pages] = _at2\ return pages\ end\ serviceMethods.GetPolicyInfoForPlayerAsync = function(self, player)\ return {\ AllowedExternalLinkReferences = {},\ ArePaidRandomItemsRestricted = false,\ IsEligibleToPurchaseSubscription = true,\ IsPaidItemTradingAllowed = true,\ IsSubjectToChinaPolicies = false,\ }\ end\ serviceMethods.GetTranslatorForPlayer = function(self, player)\ local translator = createProxyObject(\"Translator\", false)\ dumperState.property_store[translator] = {ClassName = \"Translator\", LocaleId = \"en-us\"}\ return translator\ end\ serviceMethods.GetLocaleId = function(self)\ return \"en-us\"\ end\ serviceMethods.GetLocalizationTableForGameAsync = function(self)\ local tbl = createProxyObject(\"LocalizationTable\", false)\ return tbl\ end\ serviceMethods.Translate = function(self, instance, text)\ return tostring(text or \"\")\ end\ serviceMethods.FormatByKey = function(self, key, args)\ return tostring(key or \"\")\ end\ serviceMethods.FilterStringAsync = function(self, stringToFilter, fromUserId, textContext)\ local servicePath = dumperState.registry[proxy] or \"TextService\"\ local filtered = createProxyObject(\"TextFilterResult\", false)\ dumperState.property_store[filtered] = {ClassName = \"TextFilterResult\"}\ return filtered\ end\ serviceMethods.GetTextSize = function(self, text, fontSize, font, frameSize)\ return Vector2.new(#(text or \"\") * (fontSize or 14) * 0.6, fontSize or 14)\ end\ serviceMethods.GetChatForUserIsEnabled = function(self, player) return true end\ serviceMethods.GetStringForChatContext = function(self, filteredResult) return \"\" end\ serviceMethods.GetNonChatStringForBroadcastAsync = function(self, filteredResult) return \"\" end\ serviceMethods.GetNonChatStringForUserAsync = function(self, filteredResult, toUserId) return \"\" end\ serviceMethods.UserHasBadgeAsync = function(self, userId, badgeId) return false end\ serviceMethods.AwardBadge = function(self, userId, badgeId)\ local servicePath = dumperState.registry[proxy] or \"BadgeService\"\ emitOutput(string.format(\"%s:AwardBadge(%s, %s)\", servicePath, serializeValue(userId), serializeValue(badgeId)))\ return true\ end\ serviceMethods.GetGroupsAsync = function(self, userId)\ local groups = {}\ return groups\ end\ serviceMethods.GetGroupInfoAsync = function(self, groupId)\ return {\ Id = tonumber(tostring(groupId)) or 0,\ Name = \"Group\",\ Description = \"\",\ Owner = {Id = 0, Name = \"Owner\"},\ EmblemUrl = \"rbxasset://textures/RobloxIcon.png\",\ MemberCount = 0,\ Roles = {{Id = 1, Name = \"Guest\", Rank = 1}},\ }\ end\ serviceMethods.GetAlliesAsync = function(self, groupId)\ local pages = createProxyObject(\"AlliesPages\", false)\ return pages\ end\ serviceMethods.GetEnemiesAsync = function(self, groupId)\ local pages = createProxyObject(\"EnemiesPages\", false)\ return pages\ end\ serviceMethods.IsVoiceEnabledForUserIdAsync = function(self, userId) return false end\ serviceMethods.JoinByGroupId = function(self, groupId) end\ serviceMethods.GetSupportedGamepadKeyCodes = function(self, gamepad) return {} end\ serviceMethods.GetConnectedGamepads = function(self) return {} end\ serviceMethods.GetGamepadState = function(self, gamepad) return {} end\ serviceMethods.GetNavigationGamepads = function(self) return {} end\ serviceMethods.GetMouseButtonsPressed = function(self) return {} end\ serviceMethods.GetMouseDelta = function(self) return Vector2.new(0, 0) end\ serviceMethods.GetMouseLocation = function(self) return Vector2.new(960, 540) end\ serviceMethods.IsGamepadButtonDown = function(self, gamepad, button) return false end\ serviceMethods.IsKeyDown = function(self, key) return false end\ serviceMethods.IsMouseButtonPressed = function(self, button) return false end\ serviceMethods.SetMouseIconEnabled = function(self, enabled) end\ serviceMethods.SetMouseBehavior = function(self, behavior) end\ serviceMethods.GetFocusedTextBox = function(self) return nil end\ serviceMethods.WorldToScreenPoint = function(self, pos) return Vector3.new(960, 540, 0), true end\ serviceMethods.WorldToViewportPoint = function(self, pos) return Vector3.new(960, 540, 0), true end\ serviceMethods.ScreenPointToRay = function(self, x, y, depth)\ depth = depth or 0\ return Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 0, -1))\ end\ serviceMethods.ViewportPointToRay = function(self, x, y, depth)\ return Ray.new(Vector3.new(0, 0, 0), Vector3.new(0, 0, -1))\ end\ serviceMethods.GetPartsObscuringTarget = function(self, pos, ignoreList) return {} end\ serviceMethods.TriggerEnded = function(self) end\ serviceMethods.InputHoldBegin = function(self) end\ serviceMethods.InputHoldEnd = function(self) end\ serviceMethods.DisplaySystemMessage = function(self, msg, metadata)\ local servicePath = dumperState.registry[proxy] or \"TextChatService\"\ emitOutput(string.format(\"%s:DisplaySystemMessage(%s)\", servicePath, serializeValue(msg)))\ end\ serviceMethods.SendAsync = function(self, msg)\ local path = dumperState.registry[proxy] or \"TextChannel\"\ emitOutput(string.format(\"%s:SendAsync(%s)\", path, serializeValue(msg)))\ local msgProxy = createProxyObject(\"TextChatMessage\", false)\ return msgProxy\ end\ serviceMethods.GetBadgeInfoAsync = function(self, badgeId)\ return {\ Name = \"Badge\", Description = \"\", IconImageId = 0,\ IsEnabled = true, Creator = {CreatorType = \"User\", CreatorTargetId = 0},\ }\ end\ serviceMethods.IsVoiceEnabledForUserIdAsync = function(self, userId) return false end\ serviceMethods.GetSpeakerVolume = function(self, player) return 1.0 end\ serviceMethods.SetSpeakerVolume = function(self, player, volume)\ local servicePath = dumperState.registry[proxy] or \"VoiceChatService\"\ emitOutput(string.format(\"%s:SetSpeakerVolume(%s, %s)\", servicePath, serializeValue(player), serializeValue(volume)))\ end\ serviceMethods.AddCoreScriptLocal = function(self) end\ serviceMethods.GetScriptStats = function(self)\ return { ScriptCount = 1, LuaHeapSize = 32768, LuaUsedHeapSize = 16384 }\ end\ serviceMethods.SetNetworkOwner = function(self, player)\ local p = dumperState.registry[proxy] or \"Part\"\ emitOutput(string.format(\"%s:SetNetworkOwner(%s)\", p, serializeValue(player)))\ end\ serviceMethods.GetNetworkOwner = function(self) return nil end\ serviceMethods.GetNetworkOwnershipAuto = function(self) return true end\ serviceMethods.FindPartOnRay = function(self, ray, ignoreDescendantsInstance, terrainCellsAreCubes, ignoreWater)\ return nil, Vector3.new(0, 0, 0), Vector3.new(0, 1, 0), Enum and createProxyObject(\"Enum.Material.Air\", false) or nil\ end\ serviceMethods.FindPartOnRayWithIgnoreList = function(self, ray, ignoreList, terrainCellsAreCubes, ignoreWater)\ return nil, Vector3.new(0, 0, 0), Vector3.new(0, 1, 0), nil\ end\ serviceMethods.FindPartOnRayWithWhitelist = function(self, ray, whitelist, ignoreWater)\ return nil, Vector3.new(0, 0, 0), Vector3.new(0, 1, 0), nil\ end\ serviceMethods.Raycast = function(self, origin, direction, params)\ return nil\ end\ serviceMethods.BlockcastAsync = function(self, cframe, size, direction, params)\ return nil\ end\ serviceMethods.SpherecastAsync = function(self, position, radius, direction, params)\ return nil\ end\ serviceMethods.ShapecastAsync = function(self, shape, motion, params)\ return nil\ end\ serviceMethods.GetPartBoundsInBox = function(self, cframe, size, params) return {} end\ serviceMethods.GetPartBoundsInRadius = function(self, position, radius, params) return {} end\ serviceMethods.GetPartsInPart = function(self, part, params) return {} end\ serviceMethods.WaitForChild = function(self, name, timeout)\ local parentPath = dumperState.registry[proxy] or \"parent\"\ local existing = nil\ if _at.children[proxy] then\ for _, child in ipairsFunction(_at.children[proxy]) do\ local cProps = dumperState.property_store[child]\ if cProps and cProps.Name == name then existing = child; break end\ end\ end\ if existing then return existing end\ local child = createProxyObject(name, false, proxy)\ local varName = registerVariable(child, name)\ emitOutput(string.format(\"local %s = %s:WaitForChild(%s)\", varName, parentPath, formatStringLiteral(name)))\ return child\ end\ serviceMethods.FindFirstChild = function(self, name, recursive)\ if _at.children[proxy] then\ for _, child in ipairsFunction(_at.children[proxy]) do\ local cProps = dumperState.property_store[child]\ if cProps and cProps.Name == name then return child end\ end\ end\ return nil\ end\ serviceMethods.FindFirstChildOfClass = function(self, className)\ if _at.children[proxy] then\ for _, child in ipairsFunction(_at.children[proxy]) do\ local cProps = dumperState.property_store[child]\ if cProps and cProps.ClassName == className then return child end\ end\ end\ return nil\ end\ serviceMethods.FindFirstChildWhichIsA = function(self, className, recursive)\ return serviceMethods.FindFirstChildOfClass(self, className)\ end\ serviceMethods.FindFirstAncestor = function(self, name)\ local cur = dumperState.parent_map[proxy]\ local guard = 0\ while cur and guard < 32 do\ guard = guard + 1\ local props = dumperState.property_store[cur]\ if props and props.Name == name then return cur end\ cur = dumperState.parent_map[cur]\ end\ return nil\ end\ serviceMethods.FindFirstAncestorOfClass = function(self, className)\ local cur = dumperState.parent_map[proxy]\ local guard = 0\ while cur and guard < 32 do\ guard = guard + 1\ local props = dumperState.property_store[cur]\ if props and props.ClassName == className then return cur end\ cur = dumperState.parent_map[cur]\ end\ return nil\ end\ serviceMethods.FindFirstAncestorWhichIsA = function(self, className)\ local cur = dumperState.parent_map[proxy]\ local guard = 0\ while cur and guard < 32 do\ guard = guard + 1\ local props = dumperState.property_store[cur]\ if props and classIsA(props.ClassName or \"Instance\", className) then return cur end\ cur = dumperState.parent_map[cur]\ end\ return nil\ end\ serviceMethods.GetChildren = function(self)\ return _at.children[proxy] or {}\ end\ serviceMethods.GetDescendants = function(self)\ local result = {}\ local function collect(inst)\ local kids = _at.children[inst] or {}\ for _, k in ipairsFunction(kids) do\ result[#result + 1] = k\ collect(k)\ end\ end\ collect(proxy)\ return result\ end\ serviceMethods.IsDescendantOf = function(self, ancestor)\ local cur = dumperState.parent_map[proxy]\ local guard = 0\ while cur and guard < 64 do\ guard = guard + 1\ if cur == ancestor then return true end\ cur = dumperState.parent_map[cur]\ end\ return false\ end\ serviceMethods.IsAncestorOf = function(self, descendant)\ return serviceMethods.IsDescendantOf(descendant, proxy)\ end\ serviceMethods.GetGroupsAsync = function(self, userId) return {} end\ serviceMethods.GetGroupInfoAsync = function(self, groupId)\ return {Id = toNumberFunction(groupId) or 0, Name = \"Group\", MemberCount = 0}\ end\ serviceMethods.GetMemStats = function(self)\ return {Animations = 1, Clips = 2, Tracks = 3}\ end\ serviceMethods.SetItem = function(self, key, value)\ _at.mem[formatValue(key)] = formatValue(value)\ end\ serviceMethods.GetItem = function(self, key)\ return _at.mem[formatValue(key)]\ end\ serviceMethods.RemoveItem = function(self, key)\ _at.mem[formatValue(key)] = nil\ end\ serviceMethods.AddTag = function(self, inst, tag)\ local target = tag == nil and proxy or inst\ tag = tag == nil and inst or tag\ local tagName = formatValue(tag)\ _at.tags[tagName] = _at.tags[tagName] or {}\ _at.tags[tagName][target] = true\ _at.instTags[target] = _at.instTags[target] or {}\ _at.instTags[target][tagName] = true\ end\ serviceMethods.RemoveTag = function(self, inst, tag)\ local target = tag == nil and proxy or inst\ tag = tag == nil and inst or tag\ local tagName = formatValue(tag)\ if _at.tags[tagName] then _at.tags[tagName][target] = nil end\ if _at.instTags[target] then _at.instTags[target][tagName] = nil end\ end\ serviceMethods.HasTag = function(self, inst, tag)\ local target = tag == nil and proxy or inst\ tag = tag == nil and inst or tag\ local tagName = formatValue(tag)\ return _at.instTags[target] and _at.instTags[target][tagName] == true or false\ end\ serviceMethods.GetTags = function(self, inst)\ local target = inst or proxy\ local result = {}\ for tagName in pairsFunction(_at.instTags[target] or {}) do table.insert(result, tagName) end\ return result\ end\ serviceMethods.GetTagged = function(self, tag)\ local tagName = formatValue(tag)\ local result = {}\ if _at.tags[tagName] then\ for inst in pairsFunction(_at.tags[tagName]) do\ table.insert(result, inst)\ end\ end\ return result\ end\ serviceMethods.GetAllTags = function(self)\ local result = {}\ for tagName in pairsFunction(_at.tags) do table.insert(result, tagName) end\ return result\ end\ serviceMethods.GetSortedMap = function(self, name)\ local mapProxy = createProxyObject(\"MemoryStoreSortedMap\", false)\ dumperState.registry[mapProxy] = string.format(\"game:GetService(\\\"MemoryStoreService\\\"):GetSortedMap(%s)\", formatStringLiteral(name or \"map\"))\ return mapProxy\ end\ serviceMethods.GetQueue = function(self, name, invisibilityTimeout)\ local qProxy = createProxyObject(\"MemoryStoreQueue\", false)\ dumperState.registry[qProxy] = string.format(\"game:GetService(\\\"MemoryStoreService\\\"):GetQueue(%s)\", formatStringLiteral(name or \"queue\"))\ return qProxy\ end\ serviceMethods.SetAsync = function(self, key, value, expiration, sortKey)\ local path = dumperState.registry[proxy] or \"MemoryStoreSortedMap\"\ emitOutput(string.format(\"%s:SetAsync(%s, %s, %s)\", path, serializeValue(key), serializeValue(value), serializeValue(expiration or 0)))\ end\ serviceMethods.GetAsync = function(self, key)\ local path = dumperState.registry[proxy] or \"MemoryStoreSortedMap\"\ local res = createProxyObject(\"memResult\", false)\ local varName = registerVariable(res, \"memResult\")\ emitOutput(string.format(\"local %s = %s:GetAsync(%s)\", varName, path, serializeValue(key)))\ return res\ end\ serviceMethods.ReadAsync = function(self, count, allOrNothing, waitTimeout)\ local path = dumperState.registry[proxy] or \"MemoryStoreQueue\"\ local res = createProxyObject(\"queueItems\", false)\ local id = createProxyObject(\"receiptId\", false)\ return {}, id\ end\ serviceMethods.RemoveAsync = function(self, key)\ local path = dumperState.registry[proxy] or \"MemoryStore\"\ emitOutput(string.format(\"%s:RemoveAsync(%s)\", path, serializeValue(key)))\ end\ serviceMethods.GetRangeAsync = function(self, direction, count, exclusiveLowerBound, exclusiveUpperBound)\ return {}\ end\ serviceMethods.GetSessionId = function(self) return \"00000000-0000-0000-0000-000000000000\" end\ serviceMethods.GetPlaceVersion = function(self) return 1 end\ serviceMethods.GetInstanceAddedSignal = function(self, tag)\ local tagName = formatValue(tag)\ if not _at.sigs[tagName] then\ local sig = createProxyObject(\"CollectionSignal\", false)\ dumperState.registry[sig] = \"CollectionService:GetInstanceAddedSignal(\" .. formatStringLiteral(tagName) .. \")\"\ _at.typeOverride[sig] = \"RBXScriptSignal\"\ _at.sigs[tagName] = sig\ end\ return _at.sigs[tagName]\ end\ serviceMethods.GetInstanceRemovedSignal = function(self, tag)\ return serviceMethods.GetInstanceAddedSignal(self, \"__removed_\" .. formatValue(tag))\ end\ serviceMethods.CheckForUpdate = function(self) return false end\ serviceMethods.BindAction = function(self, name, callback, createTouchButton, ...)\ local actionName = formatValue(name)\ local inputs = {...}\ _at.acts[actionName] = {inputTypes = inputs, createTouchButton = createTouchButton == true}\ end\ serviceMethods.UnbindAction = function(self, name)\ _at.acts[formatValue(name)] = nil\ end\ serviceMethods.GetAllBoundActionInfo = function(self) return _at.acts end\ serviceMethods.GetAsync = function(self, url) return \"{}\" end\ serviceMethods.PostAsync = function(self, url, data) return \"{}\" end\ serviceMethods.JSONEncode = function(self, data)\ local function encode(v)\ local tv = typeFunction(v)\ if tv == \"string\" then return '\"' .. v:gsub(\"\\\\\", \"\\\\\\\\\"):gsub('\"', '\\\\\"') .. '\"' end\ if tv == \"number\" or tv == \"boolean\" then return toStringFunction(v) end\ if tv == \"table\" then\ local isArray, maxIndex, count = true, 0, 0\ for k in pairsFunction(v) do\ count = count + 1\ if typeFunction(k) ~= \"number\" then isArray = false else maxIndex = math.max(maxIndex, k) end\ end\ local out = {}\ if isArray and maxIndex == count then\ for i = 1, maxIndex do table.insert(out, encode(v[i])) end\ return \"[\" .. table.concat(out, \",\") .. \"]\"\ end\ for k, val in pairsFunction(v) do table.insert(out, '\"' .. toStringFunction(k) .. '\":' .. encode(val)) end\ return \"{\" .. table.concat(out, \",\") .. \"}\"\ end\ return \"null\"\ end\ local encoded = encode(data)\ _at.json[encoded] = data\ return encoded\ end\ serviceMethods.JSONDecode = function(self, json)\ local key = formatValue(json)\ if _at.json[key] then return _at.json[key] end\ if key:match(\"^%s*%[\") then\ local result = {}\ for value in key:gmatch('\"?([^,\"%[%]%s]+)\"?') do\ local n = toNumberFunction(value)\ table.insert(result, n or value)\ end\ return result\ end\ if key:match(\"^%s*{\") then\ local result = {}\ for k, v in key:gmatch('\"%s*([^\"]-)%s*\"%s*:%s*\"?([^\",}]+)\"?') do\ result[k] = toNumberFunction(v) or (v == \"true\" and true) or (v == \"false\" and false) or v\ end\ return result\ end\ return {}\ end\ serviceMethods.GetTextSize = function(self, text, size, font, frameSize)\ local width = math.max(1, #(formatValue(text or \"\")) * (toNumberFunction(size) or 14) * 0.5)\ return Vector2.new(width, toNumberFunction(size) or 14)\ end\ serviceMethods.GetGuiInset = function(self)\ return Vector2.new(0, 36), Vector2.new(0, 0)\ end\ serviceMethods.GetRequestQueueSize = function(self) return 0 end\ serviceMethods.CompressBuffer = function(self, b, algorithm, level) return b end\ serviceMethods.DecompressBuffer = function(self, b, algorithm) return b end\ serviceMethods.GetRealPhysicsFPS = function(self) return 60 end\ serviceMethods.GetLogHistory = function(self) return {} end\ serviceMethods.RequestServerOutput = function(self)\ local svcPath = dumperState.registry[proxy] or \"LogService\"\ emitOutput(svcPath .. \":RequestServerOutput()\")\ end\ serviceMethods.GetUserInfosByUserIdsAsync = function(self, userIds)\ local result = {}\ if typeFunction(userIds) == \"table\" then\ for _, uid in ipairsFunction(userIds) do\ table.insert(result, {Id = uid, Username = \"Player\", DisplayName = \"Player\"})\ end\ end\ return result\ end\ serviceMethods.GetFriendsAsync = function(self, userId)\ return createProxyObject(\"Pages\", false)\ end\ serviceMethods.GetFriendCountAsync = function(self, userId) return 0 end\ serviceMethods.GetFriendRequestsAsync = function(self) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetGameFriends = function(self, player)\ return createProxyObject(\"Pages\", false)\ end\ serviceMethods.CreateCollisionGroup = function(self, name)\ local servicePath = dumperState.registry[proxy] or \"PhysicsService\"\ emitOutput(string.format(\"%s:CreateCollisionGroup(%s)\", servicePath, serializeValue(name)))\ return 0\ end\ serviceMethods.CollisionGroupSetCollidable = function(self, group1, group2, collidable)\ local servicePath = dumperState.registry[proxy] or \"PhysicsService\"\ emitOutput(string.format(\"%s:CollisionGroupSetCollidable(%s, %s, %s)\",\ servicePath, serializeValue(group1), serializeValue(group2), serializeValue(collidable)))\ end\ serviceMethods.SetPartCollisionGroup = function(self, part, group)\ local servicePath = dumperState.registry[proxy] or \"PhysicsService\"\ emitOutput(string.format(\"%s:SetPartCollisionGroup(%s, %s)\",\ servicePath, serializeValue(part), serializeValue(group)))\ end\ serviceMethods.GetCollisionGroupId = function(self, name) return 0 end\ serviceMethods.CollisionGroupsAreCollidable = function(self, g1, g2) return true end\ serviceMethods.GetMaxCollisionGroups = function(self) return 32 end\ serviceMethods.LoadAsset = function(self, assetId)\ local svcPath = dumperState.registry[proxy] or \"InsertService\"\ local modelProxy = createProxyObject(\"Model\", false)\ local varName = registerVariable(modelProxy, \"model\")\ dumperState.property_store[modelProxy] = {ClassName = \"Model\", Name = \"Asset\"}\ emitOutput(string.format(\"local %s = %s:LoadAsset(%s)\", varName, svcPath, serializeValue(assetId)))\ return modelProxy\ end\ serviceMethods.LoadAssetVersion = function(self, assetVersionId)\ return serviceMethods.LoadAsset(self, assetVersionId)\ end\ serviceMethods.GetFreeDecals = function(self, search, page) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetFreeModels = function(self, search, page) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetSortedMap = function(self, name)\ local key = \"sortedmap_\" .. formatValue(name)\ if not _at.mem[key] then\ local sm = createProxyObject(\"MemoryStoreSortedMap\", false)\ dumperState.property_store[sm] = {ClassName = \"MemoryStoreSortedMap\", Name = formatValue(name)}\ _at.mem[key] = sm\ end\ return _at.mem[key]\ end\ serviceMethods.GetQueue = function(self, name, invisibilityTimeout)\ local key = \"queue_\" .. formatValue(name)\ if not _at.mem[key] then\ local q = createProxyObject(\"MemoryStoreQueue\", false)\ _at.mem[key] = q\ end\ return _at.mem[key]\ end\ serviceMethods.GetHashMap = function(self, name)\ local key = \"hashmap_\" .. formatValue(name)\ if not _at.mem[key] then\ local hm = createProxyObject(\"MemoryStoreHashMap\", false)\ _at.mem[key] = hm\ end\ return _at.mem[key]\ end\ serviceMethods.PromptAllowInventoryReadAccess = function(self)\ local svcPath = dumperState.registry[proxy] or \"AvatarEditorService\"\ emitOutput(svcPath .. \":PromptAllowInventoryReadAccess()\")\ end\ serviceMethods.PromptSetFavorite = function(self, itemId, itemType, shouldFavorite) end\ serviceMethods.GetInventory = function(self, assetTypes)\ return createProxyObject(\"InventoryPages\", false)\ end\ serviceMethods.GetNotifications = function(self) return {} end\ serviceMethods.Subscribe = function(self, playerUserId, alertType, dataTable)\ local svcPath = dumperState.registry[proxy] or \"NotificationService\"\ emitOutput(string.format(\"%s:Subscribe(%s, %s)\", svcPath, serializeValue(playerUserId), serializeValue(alertType)))\ end\ serviceMethods.LogCustomEvent = function(self, player, eventType, eventName, eventData)\ local svcPath = dumperState.registry[proxy] or \"AnalyticsService\"\ emitOutput(string.format(\"%s:LogCustomEvent(%s, %s, %s)\",\ svcPath, serializeValue(player), serializeValue(eventType), serializeValue(eventName)))\ end\ serviceMethods.LogEconomyEvent = function(self, player, flowType, economyType, amount, itemSku)\ local svcPath = dumperState.registry[proxy] or \"AnalyticsService\"\ emitOutput(string.format(\"%s:LogEconomyEvent(%s, %s, %s, %s)\",\ svcPath, serializeValue(player), serializeValue(flowType), serializeValue(economyType), serializeValue(amount)))\ end\ serviceMethods.LogFunnelStepEvent = function(self, player, funnelName, funnelSessionId, step, stepName) end\ serviceMethods.LogOnboardingFunnelStepEvent = function(self, player, funnelName, step, stepName) end\ serviceMethods.PromptGameInvite = function(self, player)\ local svcPath = dumperState.registry[proxy] or \"SocialService\"\ emitOutput(string.format(\"%s:PromptGameInvite(%s)\", svcPath, serializeValue(player)))\ end\ serviceMethods.CanSendGameInviteAsync = function(self, player) return true end\ serviceMethods.PromptPhoneBook = function(self, player) end\ serviceMethods.AddCoreScriptLocal = function(self, scriptName, parent)\ local svcPath = dumperState.registry[proxy] or \"ScriptContext\"\ emitOutput(string.format(\"%s:AddCoreScriptLocal(%s)\", svcPath, serializeValue(scriptName)))\ end\ serviceMethods.SetTimeout = function(self, seconds) end\ serviceMethods.GetKeysPressed = function(self)\ return {}\ end\ serviceMethods.GetMouseDelta = function(self)\ return Vector2.new(0, 0)\ end\ serviceMethods.GetMouseLocation = function(self)\ return Vector2.new(0, 0)\ end\ serviceMethods.IsKeyDown = function(self, key) return false end\ serviceMethods.IsMouseButtonPressed = function(self, btn) return false end\ serviceMethods.IsGamepadButtonDown = function(self, gp, btn) return false end\ serviceMethods.GetGamepadState = function(self, gp) return {} end\ serviceMethods.GetConnectedGamepads = function(self) return {} end\ serviceMethods.GetNavigationGamepads = function(self) return {} end\ serviceMethods.SetNavigationGamepad = function(self, gp, enabled) end\ serviceMethods.GetLastInputType = function(self) return Enum.UserInputType.None end\ serviceMethods.GetFocusedTextBox = function(self) return nil end\ serviceMethods.RecenterUserHeadCFrame = function(self) end\ serviceMethods.GetDeviceRotation = function(self) return CFrame.new(0,0,0), Vector3.new(0,0,0) end\ serviceMethods.GetDeviceGravity = function(self) return {Position = Vector3.new(0,-1,0)} end\ serviceMethods.GetUserCFrame = function(self, vr) return CFrame.new(0,0,0) end\ serviceMethods.BindActionAtPriority = function(self, name, callback, createTouch, priority, ...)\ local inputs = {...}\ local actionName = formatValue(name)\ _at.acts[actionName] = {inputTypes = inputs, priority = priority}\ end\ serviceMethods.GetBoundActionInfo = function(self, name)\ return _at.acts[formatValue(name)] or {inputTypes = {}}\ end\ serviceMethods.SetTitle = function(self, name, title) end\ serviceMethods.SetImage = function(self, name, image) end\ serviceMethods.SetPosition = function(self, name, x, y) end\ serviceMethods.SetDescription = function(self, name, desc) end\ serviceMethods.GetGroupAsync = function(self, groupId)\ return {Id = toNumberFunction(groupId) or 0, Name = \"Group\", Description = \"\", MemberCount = 0, Roles = {}}\ end\ serviceMethods.GetGroupsAsync = function(self, userId) return {} end\ serviceMethods.GetAlliesAsync = function(self, groupId) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetEnemiesAsync = function(self, groupId) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetGamePlacesAsync = function(self) return createProxyObject(\"Pages\", false) end\ serviceMethods.GetCreatorAssetID = function(self, creationId) return 0 end\ serviceMethods.CreatePlaceAsync = function(self, placeName, templateId)\ local svcPath = dumperState.registry[proxy] or \"AssetService\"\ emitOutput(string.format(\"%s:CreatePlaceAsync(%s, %s)\", svcPath, serializeValue(placeName), serializeValue(templateId)))\ return 0\ end\ serviceMethods.SavePlaceAsync = function(self)\ local svcPath = dumperState.registry[proxy] or \"AssetService\"\ emitOutput(svcPath .. \":SavePlaceAsync()\")\ end\ serviceMethods.GetBundleDetailsAsync = function(self, bundleId)\ return {Id = bundleId, BundleType = \"BodyParts\", Items = {}}\ end\ serviceMethods.FilterStringAsync = function(self, str, fromUserId, context)\ local res = createProxyObject(\"TextFilterResult\", false)\ dumperState.registry[res] = \"TextFilterResult\"\ dumperState.property_store[res] = {ClassName = \"TextFilterResult\"}\ return res\ end\ serviceMethods.GetChatForUserAsync = function(self, fromUserId, str)\ return formatValue(str)\ end\ serviceMethods.GetNonChatStringForBroadcastAsync = function(self) return \"\" end\ serviceMethods.GetNonChatStringForUserAsync = function(self) return \"\" end\ serviceMethods.IsVoiceEnabledForUserIdAsync = function(self, userId) return false end\ serviceMethods.SetupVoiceChannel = function(self, channelId) end\ serviceMethods.GetProximityPrompts = function(self) return {} end\ serviceMethods.SetUiOffset = function(self, offset) end\ serviceMethods.GetTranslatorForPlayer = function(self, player)\ local translator = createProxyObject(\"Translator\", false)\ dumperState.property_store[translator] = {ClassName = \"Translator\", LocaleId = \"en-us\"}\ return translator\ end\ serviceMethods.GetCountryRegionForPlayerAsync = function(self, player) return \"US\" end\ serviceMethods.GetLocaleForPlayerAsync = function(self, player) return \"en-us\" end\ serviceMethods.GetNextResultsPage = function(self)\ return createProxyObject(\"Pages\", false)\ end\ serviceMethods.GetCurrentPage = function(self)\ return {}\ end\ serviceMethods.AdvanceToNextPageAsync = function(self) end\ serviceMethods.IsFinished = function(self) return true end\ serviceMethods.PromptOptInEnabled = function(self, player) return false end\ serviceMethods.SendUserNotification = function(self, notificationId, userId, params)\ local svcPath = dumperState.registry[proxy] or \"ExperienceNotificationService\"\ emitOutput(string.format(\"%s:SendUserNotification(%s, %s)\", svcPath, serializeValue(notificationId), serializeValue(userId)))\ end\ serviceMethods.SetCore = function(self, coreType, value)\ local svcPath = dumperState.registry[proxy] or \"StarterGui\"\ emitOutput(string.format(\"%s:SetCore(%s, %s)\", svcPath, serializeValue(coreType), serializeValue(value)))\ end\ serviceMethods.GetCore = function(self, coreType) return true end\ serviceMethods.SetCoreGuiEnabled = function(self, guiType, enabled)\ local svcPath = dumperState.registry[proxy] or \"StarterGui\"\ emitOutput(string.format(\"%s:SetCoreGuiEnabled(%s, %s)\", svcPath, serializeValue(guiType), serializeValue(enabled)))\ end\ serviceMethods.IsCoreGuiEnabled = function(self, guiType) return true end\ serviceMethods.PreloadAsync = function(self, assets, callback)\ if typeFunction(callback) == \"function\" then\ if typeFunction(assets) == \"table\" then\ for _, asset in ipairsFunction(assets) do\ xpcallFunction(function() callback(asset, \"Success\") end, function() end)\ end\ end\ end\ end\ serviceMethods.RequestQueueSize = function(self) return 0 end\ serviceMethods.GetKeyframeSequenceAsync = function(self, assetId)\ return createProxyObject(\"KeyframeSequence\", false)\ end\ serviceMethods.GetMemoryStats = function(self) return {\ TotalMemory = 512 * 1024 * 1024,\ UsedMemory = 256 * 1024 * 1024,\ } end\ serviceMethods.GetEnumItems = function(self)\ local enumPath = dumperState.registry[proxy] or \"\"\ local enumTypeName = enumPath:match(\"Enum%.(.+)\") or \"Unknown\"\ local knownItems = {\ QualityLevel = {\"Automatic\",\"Level01\",\"Level02\",\"Level03\",\"Level04\",\"Level05\",\"Level06\",\"Level07\",\"Level08\",\"Level09\",\"Level10\",\"Level11\"},\ KeyCode = {\ \"Unknown\",\"Backspace\",\"Tab\",\"Clear\",\"Return\",\"Pause\",\"Escape\",\"Space\",\"QuotedDouble\",\"Hash\",\ \"Dollar\",\"Ampersand\",\"Quote\",\"LeftParenthesis\",\"RightParenthesis\",\"Asterisk\",\"Plus\",\ \"Comma\",\"Minus\",\"Period\",\"Slash\",\ \"Zero\",\"One\",\"Two\",\"Three\",\"Four\",\"Five\",\"Six\",\"Seven\",\"Eight\",\"Nine\",\ \"Colon\",\"Semicolon\",\"LessThan\",\"Equals\",\"GreaterThan\",\"Question\",\"At\",\ \"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\ \"LeftBracket\",\"BackSlash\",\"RightBracket\",\"Caret\",\"Underscore\",\"Backquote\",\ \"World0\",\"World1\",\ \"Delete\",\"Insert\",\"Home\",\"End\",\"PageUp\",\"PageDown\",\ \"F1\",\"F2\",\"F3\",\"F4\",\"F5\",\"F6\",\"F7\",\"F8\",\"F9\",\"F10\",\"F11\",\"F12\",\ \"F13\",\"F14\",\"F15\",\ \"NumLock\",\"CapsLock\",\"ScrollLock\",\"RightShift\",\"LeftShift\",\"RightControl\",\"LeftControl\",\ \"RightAlt\",\"LeftAlt\",\"RightMeta\",\"LeftMeta\",\"LeftSuper\",\"RightSuper\",\"Mode\",\ \"Help\",\"Print\",\"SysReq\",\"Break\",\"Menu\",\"Power\",\"Euro\",\"Undo\",\ \"KeypadZero\",\"KeypadOne\",\"KeypadTwo\",\"KeypadThree\",\"KeypadFour\",\ \"KeypadFive\",\"KeypadSix\",\"KeypadSeven\",\"KeypadEight\",\"KeypadNine\",\ \"KeypadPeriod\",\"KeypadDivide\",\"KeypadMultiply\",\"KeypadMinus\",\"KeypadPlus\",\ \"KeypadEnter\",\"KeypadEquals\",\ \"Up\",\"Down\",\"Right\",\"Left\",\ \"ButtonX\",\"ButtonY\",\"ButtonA\",\"ButtonB\",\ \"ButtonR1\",\"ButtonL1\",\"ButtonR2\",\"ButtonL2\",\"ButtonR3\",\"ButtonL3\",\ \"ButtonStart\",\"ButtonSelect\",\"DPadLeft\",\"DPadRight\",\"DPadUp\",\"DPadDown\",\ },\ UserInputType = {\ \"MouseButton1\",\"MouseButton2\",\"MouseButton3\",\"MouseWheel\",\"MouseMovement\",\"Touch\",\ \"Keyboard\",\"Focus\",\"Accelerometer\",\"Gyro\",\"Gamepad1\",\"Gamepad2\",\"Gamepad3\",\"Gamepad4\",\ \"Gamepad5\",\"Gamepad6\",\"Gamepad7\",\"Gamepad8\",\"TextInput\",\"InputMethod\",\"None\",\ },\ UserInputState = {\"Begin\",\"Change\",\"End\",\"Cancel\",\"None\"},\ RaycastFilterType = {\"Exclude\",\"Include\"},\ HumanoidStateType = {\ \"FallingDown\",\"Running\",\"Runningslow\",\"Strafing\",\"Climbing\",\"Seated\",\"PlatformStanding\",\ \"Dead\",\"Jumping\",\"Freefall\",\"Flying\",\"Landed\",\"Swimming\",\"Ragdoll\",\"GettingUp\",\ \"Buoyant\",\"None\",\ },\ HumanoidDisplayDistanceType = {\"Automatic\",\"Fixed\",\"None\"},\ HumanoidHealthDisplayType = {\"DisplayWhenDamaged\",\"AlwaysOn\",\"AlwaysOff\"},\ NormalId = {\"Front\",\"Back\",\"Left\",\"Right\",\"Top\",\"Bottom\"},\ PlaybackState = {\"Begin\",\"Playing\",\"Paused\",\"Completed\",\"Cancelled\"},\ EasingStyle = {\"Linear\",\"Sine\",\"Back\",\"Bounce\",\"Circular\",\"Cubic\",\"Elastic\",\"Exponential\",\"Quad\",\"Quartic\",\"Quintic\"},\ EasingDirection = {\"In\",\"Out\",\"InOut\"},\ Material = {\ \"Plastic\",\"Wood\",\"Slate\",\"Concrete\",\"CorrodedMetal\",\"DiamondPlate\",\"Foil\",\"Grass\",\ \"Ice\",\"Marble\",\"Granite\",\"Brick\",\"Pebble\",\"Sand\",\"Fabric\",\"SmoothPlastic\",\"Metal\",\ \"WoodPlanks\",\"Cobblestone\",\"Air\",\"Water\",\"Rock\",\"Glacier\",\"Snow\",\"Sandstone\",\ \"Mud\",\"Basalt\",\"Ground\",\"CrackedLava\",\"Neon\",\"Glass\",\"Forcefield\",\"SolidWood\",\"Cardboard\",\ \"LeafyGrass\",\"Salt\",\"Pavement\",\ },\ PartType = {\"Ball\",\"Block\",\"Cylinder\"},\ SurfaceType = {\"Smooth\",\"Glue\",\"Weld\",\"Studs\",\"Inlet\",\"Universal\",\"Hinge\",\"Motor\",\"SteppingMotor\",\"Duct\"},\ CameraType = {\"Fixed\",\"Attach\",\"Watch\",\"Track\",\"Follow\",\"Custom\",\"Scriptable\",\"Orbital\"},\ MeshType = {\"Cylinder\",\"Brick\",\"FileMesh\",\"Head\",\"Sphere\",\"Torso\",\"Wedge\",\"CornerWedge\",\"Special\"},\ FormFactor = {\"Symmetric\",\"Brick\",\"Plate\",\"Custom\"},\ SortOrder = {\"Name\",\"LayoutOrder\",\"Custom\"},\ FillDirection = {\"Horizontal\",\"Vertical\"},\ HorizontalAlignment = {\"Left\",\"Center\",\"Right\"},\ VerticalAlignment = {\"Top\",\"Center\",\"Bottom\"},\ SizeConstraint = {\"RelativeXY\",\"RelativeXX\",\"RelativeYY\"},\ ScaleType = {\"Stretch\",\"Slice\",\"Tile\",\"Fit\",\"Crop\"},\ TextXAlignment = {\"Left\",\"Center\",\"Right\"},\ TextYAlignment = {\"Top\",\"Center\",\"Bottom\"},\ TextTruncate = {\"None\",\"AtEnd\"},\ AutomaticSize = {\"None\",\"X\",\"Y\",\"XY\"},\ BorderMode = {\"Outline\",\"Middle\",\"Inset\"},\ ScrollingDirection = {\"X\",\"Y\",\"XY\"},\ ElasticBehavior = {\"Always\",\"WhenScrollable\",\"Never\"},\ Font = {\ \"Legacy\",\"Arial\",\"ArialBold\",\"SourceSans\",\"SourceSansBold\",\"SourceSansLight\",\ \"SourceSansItalic\",\"SourceSansSemibold\",\"Roboto\",\"RobotoCondensed\",\"Ubuntu\",\ \"TitilliumWeb\",\"Nunito\",\"Merriweather\",\"Oswald\",\"Sarpanch\",\"FredokaOne\",\ \"GothamBold\",\"GothamMedium\",\"GothamBlack\",\"GothamLight\",\ \"Builder Sans\",\"Humanist\",\"Unknown\",\ },\ FontWeight = {\"Thin\",\"ExtraLight\",\"Light\",\"Regular\",\"Medium\",\"SemiBold\",\"Bold\",\"ExtraBold\",\"Heavy\"},\ FontStyle = {\"Normal\",\"Italic\"},\ RenderFidelity = {\"Automatic\",\"Precise\",\"Performance\"},\ LevelOfDetailSetting = {\"Disabled\",\"StreamingMesh\",\"All\"},\ StreamingPauseMode = {\"Default\",\"Disabled\",\"ClientPhysicsPause\"},\ ChatMode = {\"Classic\",\"Bubble\"},\ TweenStatus = {\"Cancelled\",\"Completed\"},\ HighlightDepthMode = {\"AlwaysOnTop\",\"Occluded\"},\ SelectionBehavior = {\"Escape\",\"Stop\"},\ AppShellActionType = {\"None\",\"OpenApp\",\"TakeScreenshot\",\"OpenDialog\"},\ AnimationPriority = {\"Idle\",\"Movement\",\"Action\",\"Action2\",\"Action3\",\"Action4\",\"Core\"},\ PoseEasingStyle = {\"Linear\",\"Constant\",\"Elastic\",\"Cubic\",\"Bounce\"},\ PoseEasingDirection = {\"In\",\"Out\",\"InOut\"},\ PathStatus = {\"Success\",\"ClosestNoPath\",\"ClosestOutOfRange\",\"FailStartNotEmpty\",\"FailFinishNotEmpty\",\"NoPath\"},\ PathWaypointAction = {\"Walk\",\"Jump\",\"Custom\"},\ ZIndexBehavior = {\"Global\",\"Sibling\"},\ GuiType = {\"BillboardGui\",\"ScreenGui\",\"SurfaceGui\"},\ SpecialKey = {\"Insert\",\"Home\",\"End\",\"PageUp\",\"PageDown\",\"ChatHotkey\",\"Backspace\"},\ Platform = {\"Windows\",\"OSX\",\"IOS\",\"Android\",\"XBoxOne\",\"PS4\",\"PS3\",\"XBox360\",\"WiiU\",\"NX\",\"Ouya\",\"AndroidTV\",\"ChromeBook\",\"GameConsole\",\"Linux\",\"None\"},\ ProductPurchaseDecision = {\"NotProcessedYet\",\"PurchaseGranted\",\"DoNotGrantProduct\"},\ MarketplacePurchaseDecision = {\"NotProcessedYet\",\"PurchaseGranted\",\"DoNotGrantProduct\"},\ TeleportState = {\"RequestedFromServer\",\"Started\",\"OnTeleport\",\"Failed\",\"InProgress\",\"WaitingForServer\"},\ TeleportType = {\"ToPlace\",\"ToInstance\",\"ToReservedServer\"},\ AccessType = {\"Everyone\",\"Friends\"},\ ChatPrivacyMode = {\"AllUsers\",\"NoOne\",\"Friends\"},\ ParticleEmitterShape = {\"Box\",\"Sphere\",\"Cylinder\",\"Disc\"},\ ParticleEmitterShapeInOut = {\"Outward\",\"Inward\",\"OutwardInward\"},\ ParticleEmitterShapeStyle = {\"Volume\",\"Surface\"},\ ParticleFlipbookLayout = {\"None\",\"TwoByTwo\",\"FourByFour\",\"EightByEight\"},\ ParticleFlipbookMode = {\"Loop\",\"OneShot\",\"PingPong\",\"Random\"},\ CollisionFidelity = {\"Default\",\"Box\",\"Hull\",\"Precise\"},\ ElasticLimitType = {\"Translate\",\"Rotate\",\"Both\"},\ VelocityConstraintMode = {\"None\",\"Line\",\"Plane\"},\ LineForceReferencePart = {\"Attachment0\",\"Attachment1\",\"Custom\"},\ RopeConstraintWinding = {\"Right\",\"Left\"},\ SoundGroup = {\"SFX\",\"Music\",\"Interface\"},\ AudioDeviceType = {\"Input\",\"Output\"},\ FaceControls = {\"None\",\"UpperFace\",\"LowerFace\",\"FullFace\"},\ TextFilteringType = {\"Private\",\"PublicChat\"},\ OverrideMouseIconBehavior = {\"None\",\"ForceShow\",\"ForceHide\"},\ InputType = {\"NoPreference\",\"Movement\",\"Rotation\",\"Trigger\"},\ DialogTone = {\"Neutral\",\"Friendly\",\"Enemy\"},\ DialogPurpose = {\"Quest\",\"Help\",\"Shop\"},\ ContextActionPriority = {\"Low\",\"Medium\",\"High\",\"Default\"},\ ContextActionResult = {\"Sink\",\"Pass\"},\ ThumbnailSize = {\"Size48x48\",\"Size60x60\",\"Size100x100\",\"Size150x150\",\"Size180x180\",\"Size352x352\",\"Size420x420\",\"Size720x720\"},\ ThumbnailType = {\"AvatarBust\",\"AvatarHeadShot\",\"GameThumbnail\",\"Asset\",\"BadgeImage\",\"GameIcon\"},\ }\ local names = knownItems[enumTypeName] or {\"Unknown\"}\ local items = {}\ for _, v in ipairsFunction(names) do\ local itemKey = \"Enum.\" .. enumTypeName .. \".\" .. v\ if not _at.enum[itemKey] then\ local itemProxy = createProxyObject(itemKey, false)\ dumperState.registry[itemProxy] = itemKey\ _at.typeOverride[itemProxy] = \"EnumItem\"\ _at.enum[itemKey] = itemProxy\ end\ items[#items + 1] = _at.enum[itemKey]\ end\ return items\ end\ serviceMethods.GenerateGUID = function(self, includeBraces)\ local t = {}\ local template = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"\ for c in template:gmatch(\".\") do\ if c == \"x\" then t[#t+1] = string.format(\"%x\", math.random(0, 15))\ elseif c == \"y\" then t[#t+1] = string.format(\"%x\", math.random(8, 11))\ else t[#t+1] = c end\ end\ local guid = table.concat(t):upper()\ return includeBraces and (\"{\" .. guid .. \"}\") or guid\ end\ serviceMethods.HttpGet = function(self, url)\ local resolvedUrl = formatValue(url)\ table.insert(dumperState.string_refs, {value = resolvedUrl, hint = \"HTTP URL\"})\ dumperState.last_http_url = resolvedUrl\ return resolvedUrl\ end\ serviceMethods.HttpPost = function(self, url, data, contentType)\ local resolvedUrl = formatValue(url)\ table.insert(dumperState.string_refs, {value = resolvedUrl, hint = \"HTTP POST URL\"})\ local resultProxy = createProxyObject(\"HttpResponse\", false)\ local varName = registerVariable(resultProxy, \"httpResponse\")\ local servicePath = dumperState.registry[proxy] or \"HttpService\"\ emitOutput(string.format(\"local %s = %s:HttpPost(%s, %s, %s)\", varName, servicePath, serializeValue(url), serializeValue(data), serializeValue(contentType)))\ dumperState.property_store[resultProxy] = {Body = \"{}\", StatusCode = 200, Success = true}\ return resultProxy\ end\ serviceMethods.AddItem = function(self, item, delayTime)\ local servicePath = dumperState.registry[proxy] or \"Debris\"\ emitOutput(string.format(\"%s:AddItem(%s, %s)\", servicePath, serializeValue(item), serializeValue(delayTime or 10)))\ end\ serviceMethods.FilterStringAsync = function(self, text, fromUserId, textContext)\ local servicePath = dumperState.registry[proxy] or \"TextService\"\ local resProxy = createProxyObject(\"TextFilterResult\", false)\ local varName = registerVariable(resProxy, \"textFilter\")\ dumperState.property_store[resProxy] = {\ ClassName = \"TextFilterResult\",\ _filteredText = tostring(text or \"\"),\ }\ emitOutput(string.format(\"local %s = %s:FilterStringAsync(%s, %s)\",\ varName, servicePath, serializeValue(text), serializeValue(fromUserId)))\ return resProxy\ end\ serviceMethods.GetNonChatStringForBroadcastAsync = function(self)\ local props = dumperState.property_store[proxy]\ if props and props._filteredText then return props._filteredText end\ return tostring(proxy)\ end\ serviceMethods.GetNonChatStringForUserAsync = function(self, toUserId)\ local props = dumperState.property_store[proxy]\ if props and props._filteredText then return props._filteredText end\ return tostring(proxy)\ end\ serviceMethods.GetChatForUserAsync = function(self, toUserId)\ local props = dumperState.property_store[proxy]\ if props and props._filteredText then return props._filteredText end\ return tostring(proxy)\ end\ serviceMethods.GetProductInfo = function(self, assetId, infoType)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ local resProxy = createProxyObject(\"ProductInfo\", false)\ local varName = registerVariable(resProxy, \"productInfo\")\ dumperState.property_store[resProxy] = {\ ClassName = \"ProductInfo\",\ AssetId = toNumberFunction(assetId) or 0,\ Name = \"Product\",\ PriceInRobux = 0,\ IsPublicDomain = false,\ IsForSale = true,\ }\ emitOutput(string.format(\"local %s = %s:GetProductInfo(%s)\",\ varName, servicePath, serializeValue(assetId)))\ return resProxy\ end\ serviceMethods.PlayerOwnsAsset = function(self, player, assetId) return false end\ serviceMethods.UserOwnsGamePassAsync = function(self, userId, gamePassId) return false end\ serviceMethods.GetDeveloperProductsAsync = function(self)\ return createProxyObject(\"Pages\", false)\ end\ serviceMethods.PromptGamePassPurchase = function(self, player, gamePassId)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptGamePassPurchase(%s, %s)\",\ servicePath, serializeValue(player), serializeValue(gamePassId)))\ end\ serviceMethods.PromptProductPurchase = function(self, player, productId, equipIfPurchased, currencyType)\ local servicePath = dumperState.registry[proxy] or \"MarketplaceService\"\ emitOutput(string.format(\"%s:PromptProductPurchase(%s, %s)\",\ servicePath, serializeValue(player), serializeValue(productId)))\ end\ serviceMethods.GetBundleDetailsAsync = function(self, bundleId)\ return { BundleType = \"BodyParts\", Items = {}, Id = toNumberFunction(bundleId) or 0 }\ end\ serviceMethods.CreatePlaceAsync = function(self, name, templateId) return createProxyObject(\"place\", false) end\ serviceMethods.CreatePlaceInPlayerInventoryAsync = function(self, player, placeName, templateId) return 0 end\ serviceMethods.GetGamePlacesAsync = function(self) return createProxyObject(\"Pages\", false) end\ serviceMethods.AwardBadge = function(self, userId, badgeId)\ local servicePath = dumperState.registry[proxy] or \"BadgeService\"\ emitOutput(string.format(\"%s:AwardBadge(%s, %s)\", servicePath, serializeValue(userId), serializeValue(badgeId)))\ return true\ end\ serviceMethods.UserHasBadgeAsync = function(self, userId, badgeId) return false end\ serviceMethods.GetBadgeInfoAsync = function(self, badgeId)\ return { Name = \"Badge\", Description = \"\", IsEnabled = true }\ end\ serviceMethods.CreatePath = function(self, agentParams)\ local resProxy = createProxyObject(\"Path\", false)\ dumperState.property_store[resProxy] = {ClassName = \"Path\", Status = \"NoPath\"}\ return resProxy\ end\ serviceMethods.FindPathAsync = function(self, from, to)\ local resProxy = createProxyObject(\"Path\", false)\ dumperState.property_store[resProxy] = {ClassName = \"Path\", Status = \"NoPath\"}\ return resProxy\ end\ serviceMethods.ComputeAsync = function(self, from, to)\ local servicePath = dumperState.registry[proxy] or \"path\"\ emitOutput(string.format(\"%s:ComputeAsync(%s, %s)\", servicePath, serializeValue(from), serializeValue(to)))\ end\ serviceMethods.GetWaypoints = function(self) return {} end\ serviceMethods.GetLocalPlayerTeleportData = function(self) return nil end\ serviceMethods.GetArrivingTeleportGui = function(self) return nil end\ serviceMethods.SetTeleportGui = function(self, gui)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:SetTeleportGui(%s)\", servicePath, serializeValue(gui)))\ end\ serviceMethods.ReserveServer = function(self, placeId)\ return string.rep(\"A\", 32), os.time() + 3600\ end\ serviceMethods.TeleportToPrivateServer = function(self, placeId, reserveKey, players)\ local servicePath = dumperState.registry[proxy] or \"TeleportService\"\ emitOutput(string.format(\"%s:TeleportToPrivateServer(%s, %s)\",\ servicePath, serializeValue(placeId), serializeValue(reserveKey)))\ end\ serviceMethods.GetDataStore = function(self, name, scope)\ local key = (name or \"default\") .. \"|\" .. (scope or \"global\")\ if not _at.mem[\"_ds_\" .. key] then\ local ds = createProxyObject(\"DataStore\", false)\ dumperState.property_store[ds] = {ClassName = \"DataStore\", Name = name or \"\", Scope = scope or \"global\"}\ _at.mem[\"_ds_\" .. key] = ds\ end\ return _at.mem[\"_ds_\" .. key]\ end\ serviceMethods.GetGlobalDataStore = function(self)\ return serviceMethods.GetDataStore(self, \"_global\")\ end\ serviceMethods.GetOrderedDataStore = function(self, name, scope)\ return serviceMethods.GetDataStore(self, name, scope)\ end\ serviceMethods.GetAsync = function(self, key)\ local k = formatValue(key)\ return _at.mem[\"_dsv_\" .. k]\ end\ serviceMethods.SetAsync = function(self, key, value)\ local k = formatValue(key)\ _at.mem[\"_dsv_\" .. k] = value\ local storePath = dumperState.registry[proxy] or \"dataStore\"\ emitOutput(string.format(\"%s:SetAsync(%s, %s)\", storePath, serializeValue(key), serializeValue(value)))\ end\ serviceMethods.UpdateAsync = function(self, key, transformFunc)\ local k = formatValue(key)\ local old = _at.mem[\"_dsv_\" .. k]\ local ok, new = pcallFunction(function() return transformFunc(old) end)\ local val = ok and new or old\ _at.mem[\"_dsv_\" .. k] = val\ return val\ end\ serviceMethods.RemoveAsync = function(self, key)\ local k = formatValue(key)\ local old = _at.mem[\"_dsv_\" .. k]\ _at.mem[\"_dsv_\" .. k] = nil\ return old\ end\ serviceMethods.IncrementAsync = function(self, key, delta)\ local k = formatValue(key)\ local old = toNumberFunction(_at.mem[\"_dsv_\" .. k]) or 0\ local new = old + (toNumberFunction(delta) or 1)\ _at.mem[\"_dsv_\" .. k] = new\ local storePath = dumperState.registry[proxy] or \"dataStore\"\ emitOutput(string.format(\"%s:IncrementAsync(%s, %s)\", storePath, serializeValue(key), serializeValue(delta or 1)))\ return new\ end\ serviceMethods.ListKeysAsync = function(self, prefix, pageSize)\ local resProxy = createProxyObject(\"DataStoreKeyPages\", false)\ dumperState.property_store[resProxy] = { ClassName = \"DataStoreKeyPages\", IsFinished = true }\ return resProxy\ end\ serviceMethods.ListVersionsAsync = function(self, key, sortDirection, minDate, maxDate, pageSize)\ local resProxy = createProxyObject(\"DataStoreVersionPages\", false)\ dumperState.property_store[resProxy] = { ClassName = \"DataStoreVersionPages\", IsFinished = true }\ return resProxy\ end\ serviceMethods.GetVersionAsync = function(self, key, version)\ return _at.mem[\"_dsv_\" .. formatValue(key)], { CreatedTime = 0, UpdatedTime = 0, Version = tostring(version or \"1\") }\ end\ serviceMethods.RemoveVersionAsync = function(self, key, version) end\ serviceMethods.GetSortedAsync = function(self, ascending, pageSize, minVal, maxVal)\ local resProxy = createProxyObject(\"DataStorePages\", false)\ dumperState.property_store[resProxy] = { ClassName = \"DataStorePages\", IsFinished = true }\ return resProxy\ end\ serviceMethods.PublishAsync = function(self, topic, message)\ local servicePath = dumperState.registry[proxy] or \"MessagingService\"\ emitOutput(string.format(\"%s:PublishAsync(%s, %s)\", servicePath, serializeValue(topic), serializeValue(message)))\ end\ serviceMethods.SubscribeAsync = function(self, topic, callback)\ local servicePath = dumperState.registry[proxy] or \"MessagingService\"\ local connProxy = createProxyObject(\"connection\", false)\ _at.typeOverride[connProxy] = \"RBXScriptConnection\"\ _at.connState[connProxy] = true\ emitOutput(string.format(\"%s:SubscribeAsync(%s, function(msg)\", servicePath, serializeValue(topic)))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(callback) == \"function\" then\ xpcallFunction(function() callback({Data = \"\", Sent = osLibrary.time()}) end, function() end)\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ return connProxy\ end\ meta.__index = function(tbl, key)\ if key == proxyList or key == \"__proxy_id\" then\ return rawget(tbl, key)\ end\ local pathName = dumperState.registry[proxy] or formattedName or \"object\"\ local propertyName = formatValue(key)\ if _at.metaHooks[\"__index\"] and not _at.inMetaHook then\ _at.inMetaHook = true\ local ok, result = pcallFunction(_at.metaHooks[\"__index\"], proxy, key)\ _at.inMetaHook = false\ if ok and result ~= nil then return result end\ end\ if dumperState.property_store[proxy] and dumperState.property_store[proxy][key] ~= nil then\ return dumperState.property_store[proxy][key]\ end\ if key == \"PlaceId\" or key == \"placeId\" then return numericArg end\ if key == \"GameId\" or key == \"gameId\" then return numericArg + 864197532 end\ if serviceMethods[propertyName] then\ return function(_, ...)\ if _at.metaHooks[\"__namecall\"] and not _at.inMetaHook then\ local previousMethod = _at.currentNamecallMethod\ _at.currentNamecallMethod = propertyName\ _at.inMetaHook = true\ local ok, result = pcallFunction(_at.metaHooks[\"__namecall\"], proxy, ...)\ _at.inMetaHook = false\ _at.currentNamecallMethod = previousMethod\ if ok and result ~= nil then return result end\ end\ local previousMethod = _at.currentNamecallMethod\ _at.currentNamecallMethod = propertyName\ local results = {serviceMethods[propertyName](proxy, ...)}\ _at.currentNamecallMethod = previousMethod\ return table.unpack(results)\ end\ end\ if pathName:match(\"^Enum\") then\ local fullEnum = pathName .. \".\" .. propertyName\ if not _at.enum[fullEnum] then\ local enumProxy = createProxyObject(fullEnum, false)\ dumperState.registry[enumProxy] = fullEnum\ _at.typeOverride[enumProxy] = \"EnumItem\"\ _at.enum[fullEnum] = enumProxy\ end\ return _at.enum[fullEnum]\ end\ if pathName == \"fenv\" or pathName == \"getgenv\" or pathName == \"_G\" then\ if key == \"game\" then return game end\ if key == \"workspace\" then return workspace end\ if key == \"script\" then return script end\ if key == \"Enum\" then return Enum end\ if _G[key] ~= nil then return _G[key] end\ return nil\ end\ if key == \"Parent\" then return dumperState.parent_map[proxy] end\ if key == \"Name\" then return formattedName or \"Object\" end\ if key == \"ClassName\" then return formattedName or \"Instance\" end\ if key == \"Players\" then return serviceMethods.GetService(game, \"Players\") end\ if key == \"Workspace\" then return workspace end\ if key == \"LocalPlayer\" then\ if _at.localPlayer then return _at.localPlayer end\ local lpProxy = createProxyObject(\"LocalPlayer\", false, proxy)\ dumperState.property_store[lpProxy] = {Name = \"Player\", ClassName = \"Player\", UserId = 1234567}\ _at.localPlayer = lpProxy\ local varName = registerVariable(lpProxy, \"LocalPlayer\")\ emitOutput(string.format(\"local %s = %s.LocalPlayer\", varName, pathName))\ return lpProxy\ end\ if key == \"PlayerGui\" then return createProxyObject(\"PlayerGui\", false, proxy) end\ if key == \"Backpack\" then return createProxyObject(\"Backpack\", false, proxy) end\ if key == \"PlayerScripts\" then return createProxyObject(\"PlayerScripts\", false, proxy) end\ if key == \"UserId\" then return 1234567 end\ if key == \"DisplayName\" then return \"Player\" end\ if key == \"AccountAge\" then return 1000 end\ if key == \"LocaleId\" then return \"en-us\" end\ if key == \"RobloxLocaleId\" or key == \"SystemLocaleId\" then return \"en-us\" end\ if key == \"CharacterMaxSlopeAngle\" then return 89 end\ if key == \"DistanceFactor\" then return 3.33 end\ if key == \"CaptureBegan\" then\ local sigProxy = createProxyObject(pathName .. \".CaptureBegan\", false, proxy)\ dumperState.registry[sigProxy] = pathName .. \".CaptureBegan\"\ _at.typeOverride[sigProxy] = \"RBXScriptSignal\"\ return sigProxy\ end\ if key == \"Connected\" and _at.connState[proxy] ~= nil then return _at.connState[proxy] end\ if key == \"Team\" then return createProxyObject(\"Team\", false, proxy) end\ if key == \"TeamColor\" then return BrickColor.new(\"White\") end\ if key == \"Character\" then\ local charProxy = createProxyObject(\"Character\", false, proxy)\ dumperState.property_store[charProxy] = {Name = \"Character\", ClassName = \"Model\"}\ return charProxy\ end\ if key == \"Humanoid\" then\ local humProxy = createProxyObject(\"Humanoid\", false, proxy)\ dumperState.property_store[humProxy] = {Health = 100, MaxHealth = 100, WalkSpeed = 16, JumpPower = 50, JumpHeight = 7.2}\ return humProxy\ end\ if key == \"HumanoidRootPart\" or key == \"PrimaryPart\" or key == \"RootPart\" then\ local rootProxy = createProxyObject(\"HumanoidRootPart\", false, proxy)\ dumperState.property_store[rootProxy] = {Position = Vector3.new(0, 5, 0), CFrame = CFrame.new(0, 5, 0)}\ return rootProxy\ end\ local limbNames = {\"Head\", \"Torso\", \"UpperTorso\", \"LowerTorso\", \"RightArm\", \"LeftArm\", \"RightLeg\", \"LeftLeg\", \"RightHand\", \"LeftHand\", \"RightFoot\", \"LeftFoot\"}\ for _, limb in ipairsFunction(limbNames) do\ if key == limb then return createProxyObject(key, false, proxy) end\ end\ if key == \"Animator\" then return createProxyObject(\"Animator\", false, proxy) end\ if key == \"CurrentCamera\" or key == \"Camera\" then\ local camProxy = createProxyObject(\"Camera\", false, proxy)\ dumperState.property_store[camProxy] = {CFrame = CFrame.new(0, 10, 0), FieldOfView = 70, ViewportSize = Vector2.new(1920, 1080)}\ return camProxy\ end\ if key == \"CameraType\" then return Enum.CameraType.Custom end\ if key == \"CameraSubject\" then return createProxyObject(\"Humanoid\", false, proxy) end\ local constants = {\ Health = 100, MaxHealth = 100, WalkSpeed = 16, JumpPower = 50, JumpHeight = 7.2,\ HipHeight = 2, AutoJumpEnabled = true, JumpHeight2 = 7.2,\ Transparency = 0, Reflectance = 0, Mass = 1, AssemblyMass = 1,\ Elasticity = 0.5, Friction = 0.3, Density = 0.7,\ AssemblyLinearVelocity = Vector3.new(0, 0, 0),\ AssemblyAngularVelocity = Vector3.new(0, 0, 0),\ TimePosition = 0, TimeLength = 1, Volume = 0.5, PlaybackSpeed = 1,\ RolloffScale = 1, MinDistance = 10, MaxDistance = 10000,\ Brightness = 1, Range = 60, Angle = 90, ShadowSoftness = 0.2,\ FieldOfView = 70, NearPlaneZ = -0.1, FarPlaneZ = 10000,\ Thickness = 1, ZIndex = 1, LayoutOrder = 0, BorderSizePixel = 1,\ TextSize = 14, LineHeight = 1.2, MaxVisibleGraphemes = -1,\ ContentImageSize = Vector2.new(0, 0),\ Gravity = 196.2, DistributedGameTime = 1, ClockTime = 14,\ FogEnd = 100000, FogStart = 0, FogDensity = 0,\ MaxPlayers = 12, RespawnTime = 5, PlaceVersion = 1,\ CreatorId = 0, FollowUserId = 0, GameId = 0, PlaceId = 0,\ ExplicitAutoJoints = true, StreamingMinRadius = 64, StreamingTargetRadius = 1024,\ Restitution = 0, LimitsEnabled = false, UpperAngle = 45, LowerAngle = -45,\ DataComplexity = 0, MemoryUsageBytes = 0,\ RunContext = 0, Disabled = false,\ Value = 0,\ MaxActivationDistance = 10, HoldDuration = 0, ActionText = \"Interact\", ObjectText = \"\",\ OutlineColor = Color3.new(1, 1, 1), FillColor = Color3.new(1, 1, 1), FillTransparency = 0.5, OutlineTransparency = 0,\ FaceCamera = false, Segments = 10, Width0 = 0.2, Width1 = 0.2, CurveSize0 = 0, CurveSize1 = 0,\ InflationAmount = 0,\ }\ if constants[key] ~= nil then return constants[key] end\ if key == \"Size\" and not (formattedName and formattedName:match(\"Part\")) then return UDim2.new(1, 0, 1, 0) end\ local boolConstants = {\ Visible = true, Active = true, Draggable = false, Modal = false,\ ClipsDescendants = false, RichText = false, TextWrapped = false, TextScaled = false,\ AutomaticSize = false, ResetOnSpawn = true,\ Enabled = true, Archivable = true, Locked = false,\ Playing = false, Looped = false, IsPlaying = false, AutoPlay = false, RollOffMode = false,\ PlatformStand = false, AutoRotate = true, Sit = false,\ BreakJointsOnDeath = true, UseJumpPower = true, EvaluateStateMachine = true,\ Anchored = false, CanCollide = true, CastShadow = true, Massless = false,\ CanTouch = true, CanQuery = true,\ StreamingEnabled = false, HttpEnabled = false, Sandboxed = false,\ FilteringEnabled = true, AllowThirdPartySales = false,\ Disabled = false,\ }\ boolConstants.StreamingEnabled = false\ boolConstants.HttpEnabled = false\ boolConstants.Sandboxed = false\ if boolConstants[key] ~= nil then return boolConstants[key] end\ if key == \"JobId\" then return \"00000000-0000-4000-8000-000000000001\" end\ if key == \"CreatorType\" then return Enum.CreatorType and Enum.CreatorType.User or 0 end\ if key == \"MembershipType\" then return Enum.MembershipType and Enum.MembershipType.None or 0 end\ if key == \"AmbientReverb\" then return Enum.ReverbType and Enum.ReverbType.NoReverb or 0 end\ if key == \"DevComputerMovementMode\" then return Enum.DevComputerMovementMode and Enum.DevComputerMovementMode.UserChoice or 0 end\ if key == \"DevTouchMovementMode\" then return Enum.DevTouchMovementMode and Enum.DevTouchMovementMode.UserChoice or 0 end\ if key == \"AutoJumpEnabled\" then return true end\ if key == \"RigType\" then return Enum.HumanoidRigType and Enum.HumanoidRigType.R15 or 1 end\ if key == \"StreamOutBehavior\" then return Enum.StreamOutBehavior and Enum.StreamOutBehavior.Default or 0 end\ if key == \"MeshType\" then return Enum.MeshType and Enum.MeshType.FileMesh or 9 end\ if key == \"Shape\" then return Enum.PartType and Enum.PartType.Block or 1 end\ if key == \"Ambient\" or key == \"OutdoorAmbient\" then return Color3.fromRGB(128, 128, 128) end\ if key == \"UniqueId\" then return _getDebugId(proxy) end\ if key == \"AbsoluteSize\" or key == \"ViewportSize\" then return Vector2.new(1920, 1080) end\ if key == \"AbsolutePosition\" then return Vector2.new(0, 0) end\ if key == \"Position\" then\ if formattedName and (formattedName:match(\"Part\") or formattedName:match(\"Model\") or formattedName:match(\"Character\") or formattedName:match(\"Root\")) then return Vector3.new(0, 5, 0) end\ return UDim2.new(0, 0, 0, 0)\ end\ if key == \"Size\" then\ if formattedName and formattedName:match(\"Part\") then return Vector3.new(4, 1, 2) end\ return UDim2.new(1, 0, 1, 0)\ end\ if key == \"CFrame\" then return CFrame.new(0, 5, 0) end\ if key == \"Velocity\" or key == \"AssemblyLinearVelocity\" then\ return _at.linearVel[proxy] or Vector3.new(0, 0, 0)\ end\ if key == \"RotVelocity\" or key == \"AssemblyAngularVelocity\" then\ return _at.angularVel[proxy] or Vector3.new(0, 0, 0)\ end\ if key == \"Orientation\" or key == \"Rotation\" then return Vector3.new(0, 0, 0) end\ if key == \"LookVector\" then return Vector3.new(0, 0, -1) end\ if key == \"RightVector\" then return Vector3.new(1, 0, 0) end\ if key == \"UpVector\" then return Vector3.new(0, 1, 0) end\ if key == \"Color\" or key == \"Color3\" or key == \"BackgroundColor3\" or key == \"BorderColor3\" or key == \"TextColor3\" or key == \"PlaceholderColor3\" or key == \"ImageColor3\" then return Color3.new(1, 1, 1) end\ if key == \"BrickColor\" then return BrickColor.new(\"Medium stone grey\") end\ if key == \"Material\" then return createProxyObject(\"Enum.Material.Plastic\", false) end\ if key == \"Hit\" then return CFrame.new(0, 0, -10) end\ if key == \"Origin\" then return CFrame.new(0, 5, 0) end\ if key == \"Target\" then return createProxyObject(\"Target\", false, proxy) end\ if key == \"X\" or key == \"Y\" then return 0 end\ if key == \"UnitRay\" then return Ray.new(Vector3.new(0, 5, 0), Vector3.new(0, 0, -1)) end\ if key == \"ViewSizeX\" then return 1920 end\ if key == \"ViewSizeY\" then return 1080 end\ if key == \"Text\" or key == \"PlaceholderText\" or key == \"ContentText\" or key == \"Value\" then\ if inputKey then return inputKey end\ if key == \"Value\" then return \"input\" end\ return '\"'\ end\ if key == \"TextBounds\" then return Vector2.new(0, 0) end\ if key == \"Font\" then\ if _at.fontObj then return _at.fontObj end\ local fo = {\ Family = \"rbxasset://fonts/families/SourceSansPro.json\",\ Weight = createProxyObject(\"Enum.FontWeight.Regular\", false),\ Style = createProxyObject(\"Enum.FontStyle.Normal\", false),\ Bold = false,\ }\ setmetatable(fo, {\ __typeof = \"Font\",\ __tostring = function() return 'Font.fromEnum(Enum.Font.SourceSans)' end,\ __index = function(_, k)\ if k == \"Name\" then return \"SourceSans\" end\ if k == \"Value\" then return 0 end\ return nil\ end,\ })\ _at.fontObj = fo\ return fo\ end\ if key == \"FontFace\" then\ return createProxyObject(\"Font.fromEnum(Enum.Font.SourceSans)\", false)\ end\ if key == \"TextSize\" then return 14 end\ if key == \"Image\" or key == \"ImageContent\" or key == \"ImageId\" then return '\"' end\ if pathName:match(\"^Enum\") then\ local fullEnum = pathName .. \".\" .. propertyName\ if not _at.enum[fullEnum] then\ local enumProxy = createProxyObject(fullEnum, false)\ dumperState.registry[enumProxy] = fullEnum\ _at.typeOverride[enumProxy] = \"EnumItem\"\ _at.enum[fullEnum] = enumProxy\ end\ return _at.enum[fullEnum]\ end\ local signalNames = {\ \"Changed\", \"ChildAdded\", \"ChildRemoved\", \"DescendantAdded\", \"DescendantRemoving\",\ \"AncestryChanged\", \"AttributeChanged\", \"PropertyChanged\",\ \"Touched\", \"TouchEnded\",\ \"InputBegan\", \"InputEnded\", \"InputChanged\",\ \"MouseButton1Click\", \"MouseButton1Down\", \"MouseButton1Up\",\ \"MouseButton2Click\", \"MouseButton2Down\", \"MouseButton2Up\",\ \"MouseEnter\", \"MouseLeave\", \"MouseMoved\",\ \"MouseWheelForward\", \"MouseWheelBackward\",\ \"Button1Down\", \"Button1Up\", \"Button2Down\", \"Button2Up\",\ \"TouchStarted\", \"TouchEnded\", \"TouchMoved\", \"TouchTap\", \"TouchLongPress\",\ \"TouchPinch\", \"TouchRotate\", \"TouchSwipe\",\ \"GamepadButtonDown\", \"GamepadButtonUp\", \"GamepadConnected\", \"GamepadDisconnected\",\ \"DeviceMoved\", \"DeviceRotationChanged\", \"DeviceGravityChanged\",\ \"JumpRequest\", \"LastInputTypeChanged\",\ \"Activated\", \"Deactivated\",\ \"FocusLost\", \"FocusGained\", \"Focused\",\ \"TextChanged\", \"ReturnPressedFromOnScreenKeyboard\",\ \"SelectionChanged\", \"SelectionGained\", \"SelectionLost\",\ \"CaptureBegan\", \"CaptureEnded\",\ \"ScrollingFrameScrolled\",\ \"Heartbeat\", \"RenderStepped\", \"Stepped\",\ \"PreSimulation\", \"PostSimulation\", \"PreAnimation\", \"PostAnimation\",\ \"PreRender\", \"PostRender\",\ \"CharacterAdded\", \"CharacterRemoving\", \"CharacterAppearanceLoaded\",\ \"PlayerAdded\", \"PlayerRemoving\",\ \"Idled\", \"OnTeleport\",\ \"Died\", \"FreeFalling\", \"GettingUp\", \"Jumping\", \"Running\",\ \"Seated\", \"Swimming\", \"StateChanged\", \"HealthChanged\",\ \"MoveToFinished\", \"Climbing\", \"Touched\",\ \"FallingDown\", \"Ragdoll\", \"PlatformStanding\", \"Strafing\",\ \"AnimationPlayed\",\ \"KeyframeReached\", \"MarkerReached\", \"Stopped\", \"DidLoop\",\ \"OnClientEvent\", \"OnServerEvent\", \"OnClientInvoke\", \"OnServerInvoke\",\ \"Completed\", \"DidLoop\", \"Stopped\",\ \"Triggered\", \"TriggerEnded\", \"HoldBegan\", \"HoldEnded\",\ \"PromptShown\", \"PromptHidden\",\ \"Idle\", \"Move\",\ \"MouseClick\", \"RightMouseClick\", \"MouseHoverEnter\", \"MouseHoverLeave\",\ \"Loaded\", \"Ended\", \"Paused\", \"Resumed\", \"Played\",\ \"DidLoop\", \"SoundGroup\",\ \"InstanceAdded\", \"InstanceRemoved\",\ \"Equipped\", \"Unequipped\", \"Activated\", \"Deactivated\",\ \"DragStart\", \"DragContinue\", \"DragEnd\", \"RotateStart\", \"RotateContinue\", \"RotateEnd\",\ \"BulletHit\", \"BulletHitHumanoid\",\ \"OnUpdate\",\ \"OnMessageReceived\",\ \"TweenCompleted\",\ \"SelectedObjectChanged\",\ \"StateChanged\", \"VoiceChatUpdated\",\ \"Error\", \"Loaded\", \"LoadFailed\", \"DataChanged\",\ \"PromptPurchaseFinished\", \"PromptSubscriptionPurchaseFinished\",\ \"PromptBundlePurchaseFinished\", \"PromptGamePassPurchaseFinished\",\ \"PromptProductPurchaseFinished\", \"PointsAwarded\", \"TeleportInitFailed\",\ \"PlayerMembershipChanged\", \"GameLoaded\",\ \"NumberOfPartsOverPartsThresholdChanged\",\ \"ContentLoaded\", \"GraphicsQualityChangeRequest\",\ \"WindowFocused\", \"WindowFocusReleased\",\ \"OnClose\", \"BindToClose\",\ \"VoiceChatServiceConnected\", \"VoiceChatServiceDisconnected\",\ \"MessageReceived\", \"ShouldDeliverCallback\",\ \"Event\", \"Invoke\",\ \"LogoutSuccess\", \"AllowedGearTypeAdded\", \"AllowedGearTypeRemoved\",\ \"NativePurchaseFinished\", \"ThirdPartyPurchaseFinished\",\ }\ for _, sig in ipairsFunction(signalNames) do\ if key == sig then\ local sigProxy = createProxyObject(pathName .. \".\" .. key, false, proxy)\ dumperState.registry[sigProxy] = pathName .. \".\" .. key\ _at.typeOverride[sigProxy] = \"RBXScriptSignal\"\ return sigProxy\ end\ end\ if _at.svcCache[propertyName] then\ return _at.svcCache[propertyName]\ end\ return createProxyMethod(propertyName, proxy)\ end\ meta.__newindex = function(tbl, key, val)\ if key == proxyList or key == \"__proxy_id\" then\ rawset(tbl, key, val)\ return\ end\ local pathName = dumperState.registry[proxy] or formattedName or \"object\"\ local prop = formatValue(key)\ dumperState.property_store[proxy] = dumperState.property_store[proxy] or {}\ dumperState.property_store[proxy][key] = val\ if key == \"Parent\" then\ _setParent(proxy, isProxy(val) and val or nil)\ end\ local className = (dumperState.property_store[proxy] or {}).ClassName or \"\"\ if className == \"WeldConstraint\" or className == \"Weld\" or className == \"Motor6D\" then\ if key == \"Part0\" or key == \"Part1\" then\ _at.weldRegistry[proxy] = _at.weldRegistry[proxy] or {}\ _at.weldRegistry[proxy][key] = val\ local wr = _at.weldRegistry[proxy]\ if wr.Part0 and wr.Part1 then\ local cf0 = (dumperState.property_store[wr.Part0] or {}).CFrame\ local cf1 = (dumperState.property_store[wr.Part1] or {}).CFrame\ if cf0 and cf1 then\ wr.offset = {X = (cf1.X or 0) - (cf0.X or 0), Y = (cf1.Y or 0) - (cf0.Y or 0), Z = (cf1.Z or 0) - (cf0.Z or 0)}\ end\ end\ end\ end\ if key == \"CFrame\" then\ local cfVal = val\ local cfX = (cfVal and cfVal.X) or 0\ local cfY = (cfVal and cfVal.Y) or 0\ local cfZ = (cfVal and cfVal.Z) or 0\ for _, wr in pairs(_at.weldRegistry) do\ if wr.Part0 == proxy and wr.Part1 and wr.offset then\ local nx = cfX + wr.offset.X\ local ny = cfY + wr.offset.Y\ local nz = cfZ + wr.offset.Z\ local newCF\ if type(CFrame) == \"table\" and type(CFrame.new) == \"function\" then\ newCF = CFrame.new(nx, ny, nz)\ elseif _makeCFrame then\ newCF = _makeCFrame(nx, ny, nz)\ else\ newCF = {X = nx, Y = ny, Z = nz, Position = {X = nx, Y = ny, Z = nz}}\ end\ dumperState.property_store[wr.Part1] = dumperState.property_store[wr.Part1] or {}\ dumperState.property_store[wr.Part1].CFrame = newCF\ local posV = newCF.Position\ dumperState.property_store[wr.Part1].Position = posV\ end\ end\ end\ emitOutput(string.format(\"%s.%s = %s\", pathName, prop, serializeValue(val)))\ end\ meta.__call = function(tbl, ...)\ local pathName = dumperState.registry[proxy] or formattedName or \"func\"\ if pathName == \"fenv\" or pathName == \"getgenv\" or pathName:match(\"env\") then\ return proxy\ end\ if pathName == \"game\" then\ errorFunction(\"attempt to call an Instance value\", 0)\ end\ local args = {...}\ local serializedArgs = {}\ for _, val in ipairsFunction(args) do\ table.insert(serializedArgs, serializeValue(val))\ end\ local resultProxy = createProxyObject(\"result\", false)\ local varName = registerVariable(resultProxy, \"result\")\ emitOutput(string.format(\"local %s = %s(%s)\", varName, pathName, table.concat(serializedArgs, \", \")))\ return resultProxy\ end\ local function operatorMeta(opSymbol)\ local function metaCall(a, b)\ local proxy, meta = createProxy()\ local strA = \"0\"\ if a ~= nil then strA = dumperState.registry[a] or serializeValue(a) end\ local strB = \"0\"\ if b ~= nil then strB = dumperState.registry[b] or serializeValue(b) end\ local expression = \"(\" .. strA .. \" \" .. opSymbol .. \" \" .. strB .. \")\"\ dumperState.registry[proxy] = expression\ meta.__tostring = function() return expression end\ meta.__call = function() return proxy end\ meta.__index = function(_, k)\ if k == proxyList or k == \"__proxy_id\" then return rawget(proxy, k) end\ return createProxyObject(expression .. \".\" .. formatValue(k), false)\ end\ meta.__add = operatorMeta(\"+\")\ meta.__sub = operatorMeta(\"-\")\ meta.__mul = operatorMeta(\"*\")\ meta.__div = operatorMeta(\"/\")\ meta.__mod = operatorMeta(\"%\")\ meta.__pow = operatorMeta(\"^\")\ meta.__concat = operatorMeta(\"..\")\ meta.__eq = function() return false end\ meta.__lt = function() return false end\ meta.__le = function() return false end\ return proxy\ end\ return metaCall\ end\ meta.__add = operatorMeta(\"+\")\ meta.__sub = operatorMeta(\"-\")\ meta.__mul = operatorMeta(\"*\")\ meta.__div = operatorMeta(\"/\")\ meta.__mod = operatorMeta(\"%\")\ meta.__pow = operatorMeta(\"^\")\ meta.__concat = operatorMeta(\"..\")\ meta.__eq = function(a, b) return rawequal(a, b) end\ meta.__lt = function() return false end\ meta.__le = function() return false end\ meta.__unm = function(a)\ local proxy, meta = createProxy()\ dumperState.registry[proxy] = \"(-\" .. (dumperState.registry[a] or serializeValue(a)) .. \")\"\ meta.__tostring = function() return dumperState.registry[proxy] end\ return proxy\ end\ meta.__len = function() return 0 end\ meta.__tostring = function() return dumperState.registry[proxy] or formattedName or \"Object\" end\ meta.__pairs = function() return function() return nil end, proxy, nil end\ meta.__ipairs = meta.__pairs\ return proxy\ end\ local function createTypeDa(typeName, methods)\ local dc = {}\ local dd = {}\ dd.__index = function(_, key)\ if key == \"new\" or methods and methods[key] then\ return function(...)\ local args = {...}\ local serializedArgs = {}\ for _, val in ipairsFunction(args) do\ table.insert(serializedArgs, serializeValue(val))\ end\ local expression = typeName .. \".\" .. key .. \"(\" .. table.concat(serializedArgs, \", \") .. \")\"\ local proxy, meta = createProxy()\ dumperState.registry[proxy] = expression\ meta.__tostring = function() return expression end\ meta.__index = function(_, k)\ if k == proxyList or k == \"__proxy_id\" then return rawget(proxy, k) end\ if k == \"X\" or k == \"Y\" or k == \"Z\" or k == \"W\" then return 0 end\ if k == \"Magnitude\" then return 0 end\ if k == \"Unit\" or k == \"Position\" or k == \"CFrame\" or k == \"LookVector\" or k == \"RightVector\" or k == \"UpVector\" or k == \"Rotation\" or k == \"p\" then return proxy end\ if k == \"R\" or k == \"G\" or k == \"B\" then return 1 end\ if k == \"Width\" or k == \"Height\" then return UDim.new(0, 0) end\ if k == \"Min\" or k == \"Max\" or k == \"Scale\" or k == \"Offset\" then return 0 end\ return createProxyObject(expression .. \".\" .. formatValue(k), false)\ end\ local function opMeta(symbol)\ return function(a, b)\ local proxy, meta = createProxy()\ local expr = \"(\" .. (dumperState.registry[a] or serializeValue(a)) .. \" \" .. symbol .. \" \" .. (dumperState.registry[b] or serializeValue(b)) .. \")\"\ dumperState.registry[proxy] = expr\ meta.__tostring = function() return expr end\ meta.__index = meta.__index\ meta.__add = opMeta(\"+\")\ meta.__sub = opMeta(\"-\")\ meta.__mul = opMeta(\"*\")\ meta.__div = opMeta(\"/\")\ return proxy\ end\ end\ meta.__add = opMeta(\"+\")\ meta.__sub = opMeta(\"-\")\ meta.__mul = opMeta(\"*\")\ meta.__div = opMeta(\"/\")\ meta.__unm = function(a)\ local proxy, meta = createProxy()\ dumperState.registry[proxy] = \"(-\" .. (dumperState.registry[a] or serializeValue(a)) .. \")\"\ meta.__tostring = function() return dumperState.registry[proxy] end\ return proxy\ end\ meta.__eq = function() return false end\ return proxy\ end\ end\ return nil\ end\ dd.__call = function(_, ...) return _.new(...) end\ return setmetatable(dc, dd)\ end\ Vector3 = createTypeDa(\"Vector3\", {new = true, zero = true, one = true})\ Vector2 = createTypeDa(\"Vector2\", {new = true, zero = true, one = true})\ UDim = createTypeDa(\"UDim\", {new = true})\ UDim2 = createTypeDa(\"UDim2\", {new = true, fromScale = true, fromOffset = true})\ CFrame = createTypeDa(\"CFrame\", {new = true, Angles = true, lookAt = true, fromEulerAnglesXYZ = true, fromEulerAnglesYXZ = true, fromAxisAngle = true, fromMatrix = true, fromOrientation = true, identity = true})\ Color3 = createTypeDa(\"Color3\", {new = true, fromRGB = true, fromHSV = true, fromHex = true})\ BrickColor = createTypeDa(\"BrickColor\", {new = true, random = true, White = true, Black = true, Red = true, Blue = true, Green = true, Yellow = true, palette = true})\ TweenInfo = createTypeDa(\"TweenInfo\", {new = true})\ Rect = createTypeDa(\"Rect\", {new = true})\ Region3 = createTypeDa(\"Region3\", {new = true})\ Region3int16 = createTypeDa(\"Region3int16\", {new = true})\ Ray = createTypeDa(\"Ray\", {new = true})\ NumberRange = createTypeDa(\"NumberRange\", {new = true})\ NumberSequence = createTypeDa(\"NumberSequence\", {new = true})\ NumberSequenceKeypoint = createTypeDa(\"NumberSequenceKeypoint\", {new = true})\ ColorSequence = createTypeDa(\"ColorSequence\", {new = true})\ ColorSequenceKeypoint = createTypeDa(\"ColorSequenceKeypoint\", {new = true})\ PhysicalProperties = createTypeDa(\"PhysicalProperties\", {new = true})\ Font = createTypeDa(\"Font\", {new = true, fromEnum = true, fromName = true, fromId = true})\ RaycastParams = createTypeDa(\"RaycastParams\", {new = true})\ OverlapParams = {new = function()\ local params = {MaxParts = 0, FilterType = Enum.RaycastFilterType.Exclude, FilterDescendantsInstances = {}}\ return setmetatable(params, {__typeof = \"OverlapParams\"})\ end}\ local function _makeVector3(x, y, z, expr)\ x, y, z = toNumberFunction(x) or 0, toNumberFunction(y) or 0, toNumberFunction(z) or 0\ local proxy, meta = createProxy()\ local expression = expr or (\"Vector3.new(\" .. serializeValue(x) .. \", \" .. serializeValue(y) .. \", \" .. serializeValue(z) .. \")\")\ dumperState.registry[proxy] = expression\ _at.vectors[proxy] = {x = x, y = y, z = z}\ local function component(v, axis)\ local data = _at.vectors[v]\ if not data then return 0 end\ return axis == \"X\" and data.x or axis == \"Y\" and data.y or data.z\ end\ local function binary(a, b, symbol)\ local ax, ay, az = component(a, \"X\"), component(a, \"Y\"), component(a, \"Z\")\ local bx, by, bz\ if typeFunction(b) == \"number\" then bx, by, bz = b, b, b else bx, by, bz = component(b, \"X\"), component(b, \"Y\"), component(b, \"Z\") end\ if symbol == \"+\" then return _makeVector3(ax + bx, ay + by, az + bz, \"(\" .. serializeValue(a) .. \" + \" .. serializeValue(b) .. \")\") end\ if symbol == \"-\" then return _makeVector3(ax - bx, ay - by, az - bz, \"(\" .. serializeValue(a) .. \" - \" .. serializeValue(b) .. \")\") end\ if symbol == \"*\" then return _makeVector3(ax * bx, ay * by, az * bz, \"(\" .. serializeValue(a) .. \" * \" .. serializeValue(b) .. \")\") end\ return _makeVector3(bx ~= 0 and ax / bx or 0, by ~= 0 and ay / by or 0, bz ~= 0 and az / bz or 0, \"(\" .. serializeValue(a) .. \" / \" .. serializeValue(b) .. \")\")\ end\ meta.__index = function(_, key)\ if key == proxyList or key == \"__proxy_id\" then return rawget(proxy, key) end\ if key == \"X\" then return x end\ if key == \"Y\" then return y end\ if key == \"Z\" then return z end\ if key == \"Magnitude\" then return math.sqrt(x * x + y * y + z * z) end\ if key == \"Unit\" then\ local mag = math.sqrt(x * x + y * y + z * z)\ if mag == 0 then return _makeVector3(0, 0, 0, expression .. \".Unit\") end\ return _makeVector3(x / mag, y / mag, z / mag, expression .. \".Unit\")\ end\ if key == \"Dot\" then\ return function(_, other)\ local ox = (other and component(other, \"X\")) or 0\ local oy = (other and component(other, \"Y\")) or 0\ local oz = (other and component(other, \"Z\")) or 0\ return x * ox + y * oy + z * oz\ end\ end\ if key == \"Cross\" then\ return function(_, other)\ local ox = (other and component(other, \"X\")) or 0\ local oy = (other and component(other, \"Y\")) or 0\ local oz = (other and component(other, \"Z\")) or 0\ return _makeVector3(y * oz - z * oy, z * ox - x * oz, x * oy - y * ox)\ end\ end\ if key == \"Lerp\" then\ return function(_, other, alpha)\ alpha = toNumberFunction(alpha) or 0\ local ox = (other and component(other, \"X\")) or 0\ local oy = (other and component(other, \"Y\")) or 0\ local oz = (other and component(other, \"Z\")) or 0\ return _makeVector3(x + (ox - x) * alpha, y + (oy - y) * alpha, z + (oz - z) * alpha)\ end\ end\ if key == \"FuzzyEq\" then\ return function(_, other, eps)\ eps = toNumberFunction(eps) or 1e-5\ local ox = (other and component(other, \"X\")) or 0\ local oy = (other and component(other, \"Y\")) or 0\ local oz = (other and component(other, \"Z\")) or 0\ return math.abs(x - ox) < eps and math.abs(y - oy) < eps and math.abs(z - oz) < eps\ end\ end\ if key == \"Abs\" then return function(_) return _makeVector3(math.abs(x), math.abs(y), math.abs(z)) end end\ if key == \"Sign\" then return function(_)\ local function s(n) return n > 0 and 1 or n < 0 and -1 or 0 end\ return _makeVector3(s(x), s(y), s(z))\ end end\ if key == \"Floor\" then return function(_) return _makeVector3(math.floor(x), math.floor(y), math.floor(z)) end end\ if key == \"Ceil\" then return function(_) return _makeVector3(math.ceil(x), math.ceil(y), math.ceil(z)) end end\ if key == \"Min\" then\ return function(_, ...)\ local mx, my, mz = x, y, z\ for _, v in ipairsFunction({...}) do\ mx = math.min(mx, component(v, \"X\"))\ my = math.min(my, component(v, \"Y\"))\ mz = math.min(mz, component(v, \"Z\"))\ end\ return _makeVector3(mx, my, mz)\ end\ end\ if key == \"Max\" then\ return function(_, ...)\ local mx, my, mz = x, y, z\ for _, v in ipairsFunction({...}) do\ mx = math.max(mx, component(v, \"X\"))\ my = math.max(my, component(v, \"Y\"))\ mz = math.max(mz, component(v, \"Z\"))\ end\ return _makeVector3(mx, my, mz)\ end\ end\ return 0\ end\ meta.__add = function(a, b) return binary(a, b, \"+\") end\ meta.__sub = function(a, b) return binary(a, b, \"-\") end\ meta.__mul = function(a, b) return binary(a, b, \"*\") end\ meta.__div = function(a, b) return binary(a, b, \"/\") end\ meta.__unm = function(a) return _makeVector3(-component(a, \"X\"), -component(a, \"Y\"), -component(a, \"Z\"), \"(-\" .. serializeValue(a) .. \")\") end\ meta.__eq = function(a, b) return component(a, \"X\") == component(b, \"X\") and component(a, \"Y\") == component(b, \"Y\") and component(a, \"Z\") == component(b, \"Z\") end\ meta.__tostring = function() return expression end\ meta.__typeof = \"Vector3\"\ return proxy\ end\ Vector3 = {\ new = function(x, y, z) return _makeVector3(x, y, z) end,\ zero = _makeVector3(0, 0, 0, \"Vector3.zero\"),\ one = _makeVector3(1, 1, 1, \"Vector3.one\")\ }\ setmetatable(Vector3, {__call = function(_, x, y, z) return _.new(x, y, z) end})\ local function _valueType(typeName, fields, methods)\ local obj = fields or {}\ return setmetatable(obj, {\ __typeof = typeName,\ __index = methods or {},\ __tostring = function() return typeName end,\ __eq = function(a, b)\ if typeFunction(a) ~= \"table\" or typeFunction(b) ~= \"table\" then return false end\ local ma, mb = getMetatableFunction(a), getMetatableFunction(b)\ if not ma or not mb or ma.__typeof ~= mb.__typeof then return false end\ for k, v in pairsFunction(a) do\ if b[k] ~= v then return false end\ end\ for k, v in pairsFunction(b) do\ if a[k] ~= v then return false end\ end\ return true\ end\ })\ end\ local function _num(v, default) return toNumberFunction(v) or default or 0 end\ local function _makeVector2(x, y)\ x, y = _num(x), _num(y)\ local methods = {}\ function methods:Dot(other) return self.X * (other and other.X or 0) + self.Y * (other and other.Y or 0) end\ local mt\ mt = {\ __typeof = \"Vector2\",\ __index = function(self, key)\ if key == \"Magnitude\" then return math.sqrt(self.X * self.X + self.Y * self.Y) end\ if key == \"Unit\" then\ local mag = math.sqrt(self.X * self.X + self.Y * self.Y)\ return mag == 0 and _makeVector2(0, 0) or _makeVector2(self.X / mag, self.Y / mag)\ end\ return methods[key]\ end,\ __add = function(a, b) return _makeVector2(a.X + b.X, a.Y + b.Y) end,\ __sub = function(a, b) return _makeVector2(a.X - b.X, a.Y - b.Y) end,\ __mul = function(a, b)\ if typeFunction(a) == \"number\" then return _makeVector2(a * b.X, a * b.Y) end\ if typeFunction(b) == \"number\" then return _makeVector2(a.X * b, a.Y * b) end\ return _makeVector2(a.X * b.X, a.Y * b.Y)\ end,\ __div = function(a, b)\ if typeFunction(b) == \"number\" then return _makeVector2(a.X / b, a.Y / b) end\ return _makeVector2(a.X / b.X, a.Y / b.Y)\ end,\ __unm = function(a) return _makeVector2(-a.X, -a.Y) end,\ __eq = function(a, b) return typeFunction(b) == \"table\" and a.X == b.X and a.Y == b.Y end,\ __tostring = function(a) return (\"Vector2.new(%s, %s)\"):format(a.X, a.Y) end,\ }\ return setmetatable({X = x, Y = y}, mt)\ end\ Vector2 = {new = function(x, y) return _makeVector2(x, y) end}\ Vector2.zero = Vector2.new(0, 0)\ Vector2.one = Vector2.new(1, 1)\ setmetatable(Vector2, {__call = function(_, x, y) return _.new(x, y) end})\ local _oldVector3New = Vector3.new\ Vector3.new = function(x, y, z)\ local v = _oldVector3New(x, y, z)\ local mt = getMetatableFunction(v)\ local oldIndex = mt.__index\ mt.__index = function(self, key)\ if key == \"Dot\" then\ return function(_, other) return self.X * (other and other.X or 0) + self.Y * (other and other.Y or 0) + self.Z * (other and other.Z or 0) end\ end\ if key == \"Cross\" then\ return function(_, other)\ return Vector3.new(\ self.Y * (other and other.Z or 0) - self.Z * (other and other.Y or 0),\ self.Z * (other and other.X or 0) - self.X * (other and other.Z or 0),\ self.X * (other and other.Y or 0) - self.Y * (other and other.X or 0)\ )\ end\ end\ return oldIndex(self, key)\ end\ return v\ end\ Vector3.zero = Vector3.new(0, 0, 0)\ Vector3.one = Vector3.new(1, 1, 1)\ UDim = {new = function(scale, offset) return _valueType(\"UDim\", {Scale = _num(scale), Offset = _num(offset)}) end}\ setmetatable(UDim, {__call = function(_, scale, offset) return _.new(scale, offset) end})\ UDim2 = {\ new = function(xs, xo, ys, yo) return _valueType(\"UDim2\", {X = UDim.new(xs, xo), Y = UDim.new(ys, yo)}) end,\ fromScale = function(x, y) return UDim2.new(x, 0, y, 0) end,\ fromOffset = function(x, y) return UDim2.new(0, x, 0, y) end,\ }\ setmetatable(UDim2, {__call = function(_, ...) return _.new(...) end})\ do\ local function _hex(n)\ local b = math.floor((n or 0) * 255 + 0.5)\ if b < 0 then b = 0 elseif b > 255 then b = 255 end\ return string.format(\"%02X\", b)\ end\ local _color3_methods = {}\ function _color3_methods:Lerp(other, alpha)\ alpha = toNumberFunction(alpha) or 0\ local or_, og, ob = (other and other.R) or 0, (other and other.G) or 0, (other and other.B) or 0\ return Color3.new(self.R + (or_ - self.R) * alpha,\ self.G + (og - self.G) * alpha,\ self.B + (ob - self.B) * alpha)\ end\ function _color3_methods:ToHSV()\ local r, g, b = self.R, self.G, self.B\ local mx, mn = math.max(r, g, b), math.min(r, g, b)\ local v = mx\ local d = mx - mn\ local s = (mx == 0) and 0 or (d / mx)\ local h = 0\ if d ~= 0 then\ if mx == r then h = ((g - b) / d) % 6\ elseif mx == g then h = (b - r) / d + 2\ else h = (r - g) / d + 4 end\ h = h / 6\ if h < 0 then h = h + 1 end\ end\ return h, s, v\ end\ function _color3_methods:ToHex() return _hex(self.R) .. _hex(self.G) .. _hex(self.B) end\ Color3 = {\ new = function(r, g, b) return _valueType(\"Color3\", {R = _num(r), G = _num(g), B = _num(b)}, _color3_methods) end,\ fromRGB = function(r, g, b) return Color3.new(_num(r) / 255, _num(g) / 255, _num(b) / 255) end,\ fromHSV = function(h, s, v)\ h, s, v = _num(h), _num(s), _num(v)\ if s == 0 then return Color3.new(v, v, v) end\ local i = math.floor(h * 6)\ local f = h * 6 - i\ local p = v * (1 - s)\ local q = v * (1 - f * s)\ local t = v * (1 - (1 - f) * s)\ i = i % 6\ if i == 0 then return Color3.new(v, t, p) end\ if i == 1 then return Color3.new(q, v, p) end\ if i == 2 then return Color3.new(p, v, t) end\ if i == 3 then return Color3.new(p, q, v) end\ if i == 4 then return Color3.new(t, p, v) end\ return Color3.new(v, p, q)\ end,\ fromHex = function(hex)\ hex = toStringFunction(hex or \"\"):gsub(\"^#\", \"\")\ if #hex < 6 then return Color3.fromRGB(255, 255, 255) end\ local r = tonumber(hex:sub(1, 2), 16) or 255\ local g = tonumber(hex:sub(3, 4), 16) or 255\ local b = tonumber(hex:sub(5, 6), 16) or 255\ return Color3.fromRGB(r, g, b)\ end,\ }\ setmetatable(Color3, {__call = function(_, ...) return _.new(...) end})\ end\ BrickColor = {\ new = function(name)\ name = formatValue(name or \"Medium stone grey\")\ return _valueType(\"BrickColor\", {Name = name, Number = 1, Color = Color3.fromRGB(255, 0, 0)})\ end,\ random = function() return BrickColor.new(\"Medium stone grey\") end,\ }\ setmetatable(BrickColor, {__call = function(_, ...) return _.new(...) end})\ NumberRange = {new = function(min, max) return _valueType(\"NumberRange\", {Min = _num(min), Max = max ~= nil and _num(max) or _num(min)}) end}\ NumberSequence = {new = function(value) return _valueType(\"NumberSequence\", {Keypoints = typeFunction(value) == \"table\" and value or {{Time = 0, Value = _num(value)}, {Time = 1, Value = _num(value)}}}) end}\ TweenInfo = {new = function(timeValue, style, direction, repeatCount, reverses, delayTime) return _valueType(\"TweenInfo\", {Time = _num(timeValue), EasingStyle = style or Enum.EasingStyle.Quad, EasingDirection = direction or Enum.EasingDirection.Out, RepeatCount = repeatCount or 0, Reverses = reverses or false, DelayTime = delayTime or 0}) end}\ Ray = {new = function(origin, direction) return _valueType(\"Ray\", {Origin = origin or Vector3.zero, Direction = direction or Vector3.new(0, 0, -1)}) end}\ Rect = {new = function(a, b, c, d) return _valueType(\"Rect\", {Min = typeFunction(a) == \"table\" and a or Vector2.new(a, b), Max = typeFunction(c) == \"table\" and c or Vector2.new(c, d)}) end}\ PhysicalProperties = {new = function(density, friction, elasticity, frictionWeight, elasticityWeight) return _valueType(\"PhysicalProperties\", {Density = _num(density, 1), Friction = _num(friction, 0.3), Elasticity = _num(elasticity, 0.5), FrictionWeight = _num(frictionWeight, 1), ElasticityWeight = _num(elasticityWeight, 1)}) end}\ _makeCFrame = function(x, y, z, expr)\ if typeFunction(x) == \"table\" then\ local mx = getMetatableFunction(x)\ if mx and mx.__typeof == \"Vector3\" then\ x = x.X\ end\ end\ local ox, oy, oz = _num(x), _num(y), _num(z)\ local obj = {X = ox, Y = oy, Z = oz}\ obj.Position = Vector3.new(ox, oy, oz)\ obj.p = obj.Position\ obj.LookVector = Vector3.new(0, 0, -1)\ obj.RightVector = Vector3.new(1, 0, 0)\ obj.UpVector = Vector3.new(0, 1, 0)\ obj.Inverse = function(self) return _makeCFrame(-ox, -oy, -oz) end\ obj.ToObjectSpace = function(self, other)\ local ox2 = (other and (other.X or 0)) or 0\ local oy2 = (other and (other.Y or 0)) or 0\ local oz2 = (other and (other.Z or 0)) or 0\ return _makeCFrame(ox2 - ox, oy2 - oy, oz2 - oz)\ end\ obj.ToWorldSpace = function(self, other)\ local ox2 = (other and (other.X or 0)) or 0\ local oy2 = (other and (other.Y or 0)) or 0\ local oz2 = (other and (other.Z or 0)) or 0\ return _makeCFrame(ox + ox2, oy + oy2, oz + oz2)\ end\ obj.PointToObjectSpace = function(self, point)\ return Vector3.new(\ (point and point.X or 0) - ox,\ (point and point.Y or 0) - oy,\ (point and point.Z or 0) - oz\ )\ end\ obj.PointToWorldSpace = function(self, point)\ return Vector3.new(\ (point and point.X or 0) + ox,\ (point and point.Y or 0) + oy,\ (point and point.Z or 0) + oz\ )\ end\ return setmetatable(obj, {\ __typeof = \"CFrame\",\ __cframeExpr = expr,\ __index = function(self, key) return rawget(self, key) end,\ __mul = function(a, b)\ local ma = getMetatableFunction(a)\ local mb = getMetatableFunction(b)\ if mb and mb.__typeof == \"CFrame\" then\ local ax = (ma and ma.__cframeExpr) or string.format(\"CFrame.new(%s, %s, %s)\", a.X, a.Y, a.Z)\ local bx = (mb and mb.__cframeExpr) or string.format(\"CFrame.new(%s, %s, %s)\", b.X, b.Y, b.Z)\ return _makeCFrame(a.X + b.X, a.Y + b.Y, a.Z + b.Z, \"(\" .. ax .. \" * \" .. bx .. \")\")\ end\ if mb and mb.__typeof == \"Vector3\" then\ return Vector3.new(a.X + b.X, a.Y + b.Y, a.Z + b.Z)\ end\ return a\ end,\ __eq = function(a, b) return typeFunction(b) == \"table\" and a.X == b.X and a.Y == b.Y and a.Z == b.Z end,\ __tostring = function(a) return expr or (\"CFrame.new(%s, %s, %s)\"):format(a.X, a.Y, a.Z) end,\ })\ end\ local function _isVec3(v)\ if typeFunction(v) ~= \"table\" then return false end\ local m = getMetatableFunction(v)\ return m and m.__typeof == \"Vector3\" or false\ end\ CFrame = {\ new = function(x, y, z)\ if _isVec3(x) then\ local px, py, pz = x.X or 0, x.Y or 0, x.Z or 0\ if _isVec3(y) then\ return _makeCFrame(px, py, pz, string.format(\"CFrame.new(%s, %s)\", serializeValue(x), serializeValue(y)))\ end\ return _makeCFrame(px, py, pz, string.format(\"CFrame.new(%s)\", serializeValue(x)))\ end\ return _makeCFrame(x, y, z)\ end,\ Angles = function() return _makeCFrame(0, 0, 0, \"CFrame.Angles(0, 0, 0)\") end,\ lookAt = function(origin, target)\ if _isVec3(origin) and _isVec3(target) then\ return _makeCFrame(origin.X or 0, origin.Y or 0, origin.Z or 0,\ string.format(\"CFrame.lookAt(%s, %s)\", serializeValue(origin), serializeValue(target)))\ end\ return _makeCFrame(origin and origin.X or 0, origin and origin.Y or 0, origin and origin.Z or 0)\ end,\ LookAt = function(origin, target) return CFrame.lookAt(origin, target) end,\ fromEulerAnglesXYZ = function(rx, ry, rz)\ return _makeCFrame(0, 0, 0, string.format(\"CFrame.fromEulerAnglesXYZ(%s, %s, %s)\",\ serializeValue(_num(rx)), serializeValue(_num(ry)), serializeValue(_num(rz))))\ end,\ fromEulerAnglesYXZ = function(rx, ry, rz)\ return _makeCFrame(0, 0, 0, string.format(\"CFrame.fromEulerAnglesYXZ(%s, %s, %s)\",\ serializeValue(_num(rx)), serializeValue(_num(ry)), serializeValue(_num(rz))))\ end,\ fromAxisAngle = function(axis, angle)\ if _isVec3(axis) then\ return _makeCFrame(0, 0, 0, string.format(\"CFrame.fromAxisAngle(%s, %s)\",\ serializeValue(axis), serializeValue(_num(angle))))\ end\ return _makeCFrame(0, 0, 0)\ end,\ fromMatrix = function(pos, rv, uv, lv)\ if _isVec3(pos) then\ local args = {serializeValue(pos)}\ if _isVec3(rv) then args[#args + 1] = serializeValue(rv) end\ if _isVec3(uv) then args[#args + 1] = serializeValue(uv) end\ if _isVec3(lv) then args[#args + 1] = serializeValue(lv) end\ return _makeCFrame(pos.X or 0, pos.Y or 0, pos.Z or 0,\ string.format(\"CFrame.fromMatrix(%s)\", table.concat(args, \", \")))\ end\ return _makeCFrame(pos and pos.X or 0, pos and pos.Y or 0, pos and pos.Z or 0)\ end,\ fromOrientation = function(rx, ry, rz)\ return _makeCFrame(0, 0, 0, string.format(\"CFrame.fromOrientation(%s, %s, %s)\",\ serializeValue(_num(rx)), serializeValue(_num(ry)), serializeValue(_num(rz))))\ end,\ }\ CFrame.identity = CFrame.new(0, 0, 0)\ setmetatable(CFrame, {__call = function(_, ...) return _.new(...) end})\ PathWaypoint = createTypeDa(\"PathWaypoint\", {new = true})\ Axes = createTypeDa(\"Axes\", {new = true})\ Faces = createTypeDa(\"Faces\", {new = true})\ Vector3int16 = createTypeDa(\"Vector3int16\", {new = true})\ Vector2int16 = createTypeDa(\"Vector2int16\", {new = true})\ CatalogSearchParams = createTypeDa(\"CatalogSearchParams\", {new = true})\ do\ local function _datePartsUTC(ts)\ local d = osLibrary.date(\"!*t\", ts)\ return d.year, d.month, d.day, d.hour, d.min, d.sec, d.wday, d.yday\ end\ local _monthShort = {\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"}\ local _monthLong = {\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"}\ local _dayShort = {\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"}\ local _dayLong = {\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"}\ local function _format(ts, pattern)\ pattern = toStringFunction(pattern or \"YYYY-MM-DDTHH:mm:ssZ\")\ local Y, Mo, D, H, Mi, S, W = _datePartsUTC(ts)\ local subs = {\ [\"YYYY\"] = string.format(\"%04d\", Y),\ [\"YY\"] = string.format(\"%02d\", Y % 100),\ [\"MMMM\"] = _monthLong[Mo] or \"\",\ [\"MMM\"] = _monthShort[Mo] or \"\",\ [\"MM\"] = string.format(\"%02d\", Mo),\ [\"M\"] = toStringFunction(Mo),\ [\"DDDD\"] = _dayLong[W] or \"\",\ [\"DDD\"] = _dayShort[W] or \"\",\ [\"DD\"] = string.format(\"%02d\", D),\ [\"D\"] = toStringFunction(D),\ [\"HH\"] = string.format(\"%02d\", H),\ [\"H\"] = toStringFunction(H),\ [\"hh\"] = string.format(\"%02d\", ((H - 1) % 12) + 1),\ [\"h\"] = toStringFunction(((H - 1) % 12) + 1),\ [\"mm\"] = string.format(\"%02d\", Mi),\ [\"m\"] = toStringFunction(Mi),\ [\"ss\"] = string.format(\"%02d\", S),\ [\"s\"] = toStringFunction(S),\ [\"A\"] = (H < 12) and \"AM\" or \"PM\",\ [\"a\"] = (H < 12) and \"am\" or \"pm\",\ [\"ZZZ\"] = \"UTC\",\ [\"Z\"] = \"Z\",\ }\ local out, i, n = {}, 1, #pattern\ while i <= n do\ local matched = false\ for _, tok in ipairsFunction({\"YYYY\",\"YY\",\"MMMM\",\"MMM\",\"MM\",\"M\",\"DDDD\",\"DDD\",\"DD\",\"D\",\ \"HH\",\"H\",\"hh\",\"h\",\"mm\",\"m\",\"ss\",\"s\",\"A\",\"a\",\"ZZZ\",\"Z\"}) do\ local len = #tok\ if i + len - 1 <= n and pattern:sub(i, i + len - 1) == tok then\ out[#out + 1] = subs[tok]\ i = i + len\ matched = true\ break\ end\ end\ if not matched then\ out[#out + 1] = pattern:sub(i, i)\ i = i + 1\ end\ end\ return table.concat(out)\ end\ local function _makeDateTime(ts, expression)\ ts = toNumberFunction(ts) or 0\ local Y, Mo, D, H, Mi, S = _datePartsUTC(ts)\ local obj = {\ UnixTimestamp = math.floor(ts),\ UnixTimestampMillis = math.floor(ts * 1000),\ Year = Y,\ Month = Mo,\ Day = D,\ Hour = H,\ Minute = Mi,\ Second = S,\ Millisecond = 0,\ }\ function obj:ToUniversalTime()\ return {Year=Y, Month=Mo, Day=D, Hour=H, Minute=Mi, Second=S, Millisecond=0}\ end\ function obj:ToLocalTime() return self:ToUniversalTime() end\ function obj:ToIsoDate() return _format(ts, \"YYYY-MM-DDTHH:mm:ssZ\") end\ function obj:FormatUniversalTime(pattern, _locale) return _format(ts, pattern) end\ function obj:FormatLocalTime(pattern, _locale) return _format(ts, pattern) end\ return setmetatable(obj, {\ __typeof = \"DateTime\",\ __tostring = function() return expression or string.format(\"DateTime.fromUnixTimestamp(%d)\", obj.UnixTimestamp) end,\ })\ end\ DateTime = {\ now = function() return _makeDateTime(osLibrary.time(), \"DateTime.now()\") end,\ fromUnixTimestamp = function(ts) return _makeDateTime(ts, string.format(\"DateTime.fromUnixTimestamp(%s)\", serializeValue(ts))) end,\ fromUnixTimestampMillis = function(ms) return _makeDateTime((toNumberFunction(ms) or 0) / 1000, string.format(\"DateTime.fromUnixTimestampMillis(%s)\", serializeValue(ms))) end,\ fromIsoDate = function(iso)\ iso = toStringFunction(iso or \"1970-01-01T00:00:00Z\")\ local Y, Mo, D, H, Mi, S = iso:match(\"(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)\")\ if Y then\ local ts = osLibrary.time({year=toNumberFunction(Y), month=toNumberFunction(Mo), day=toNumberFunction(D),\ hour=toNumberFunction(H), min=toNumberFunction(Mi), sec=toNumberFunction(S)})\ return _makeDateTime(ts, string.format(\"DateTime.fromIsoDate(%q)\", iso))\ end\ return _makeDateTime(0, string.format(\"DateTime.fromIsoDate(%q)\", iso))\ end,\ fromLocalTime = function(t) return _makeDateTime(osLibrary.time(t or {}), \"DateTime.fromLocalTime(...)\") end,\ fromUniversalTime = function(t) return _makeDateTime(osLibrary.time(t or {}), \"DateTime.fromUniversalTime(...)\") end,\ }\ setmetatable(DateTime, {__call = function(_, ...) return _.now() end})\ end\ if math.clamp == nil then\ math.clamp = function(n, lo, hi)\ n, lo, hi = toNumberFunction(n) or 0, toNumberFunction(lo) or 0, toNumberFunction(hi) or 0\ if n ~= n then return lo end\ if n > hi then return hi end\ if n < lo then return lo end\ return n\ end\ end\ if math.round == nil then\ math.round = function(n) return math.floor((toNumberFunction(n) or 0) + 0.5) end\ end\ if math.sign == nil then\ math.sign = function(n)\ n = toNumberFunction(n) or 0\ if n > 0 then return 1 end\ if n < 0 then return -1 end\ return 0\ end\ end\ if math.noise == nil then\ math.noise = function() return 0 end\ end\ if math.map == nil then\ math.map = function(n, inMin, inMax, outMin, outMax)\ n, inMin, inMax = toNumberFunction(n) or 0, toNumberFunction(inMin) or 0, toNumberFunction(inMax) or 0\ outMin, outMax = toNumberFunction(outMin) or 0, toNumberFunction(outMax) or 0\ if inMax == inMin then return outMin end\ return (n - inMin) * (outMax - outMin) / (inMax - inMin) + outMin\ end\ end\ if math.lerp == nil then\ math.lerp = function(a, b, t)\ a, b, t = toNumberFunction(a) or 0, toNumberFunction(b) or 0, toNumberFunction(t) or 0\ return a + (b - a) * t\ end\ end\ Random = {new = function(seed)\ local obj = {}\ function obj:NextNumber(min, max) return (min or 0) + 0.5 * ((max or 1) - (min or 0)) end\ function obj:NextInteger(min, max) return math.floor((min or 1) + 0.5 * ((max or 100) - (min or 1))) end\ function obj:NextUnitVector() return Vector3.new(0.577, 0.577, 0.577) end\ function obj:Shuffle(tab) return tab end\ function obj:Clone() return Random.new() end\ return obj\ end}\ setmetatable(Random, {__call = function(_, seed) return _.new(seed) end})\ Enum = createProxyObject(\"Enum\", true)\ local enumMeta = debugLibrary.getmetatable(Enum)\ enumMeta.__index = function(_, key)\ if key == proxyList or key == \"__proxy_id\" then return rawget(_, key) end\ local enumName = \"Enum.\" .. formatValue(key)\ if not _at.enum[enumName] then\ local enumProxy = createProxyObject(enumName, false)\ dumperState.registry[enumProxy] = enumName\ _at.enum[enumName] = enumProxy\ end\ return _at.enum[enumName]\ end\ Instance = {new = function(className, parent)\ local name = formatValue(className)\ local proxy = createProxyObject(name, false)\ local varName = registerVariable(proxy, name)\ dumperState.property_store[proxy] = {ClassName = name, Name = name, Archivable = true}\ if parent then\ local parentPath = dumperState.registry[parent] or serializeValue(parent)\ emitOutput(string.format(\"local %s = Instance.new(%s, %s)\", varName, formatStringLiteral(name), parentPath))\ _setParent(proxy, parent)\ else\ emitOutput(string.format(\"local %s = Instance.new(%s)\", varName, formatStringLiteral(name)))\ end\ return proxy\ end}\ game = createProxyObject(\"game\", true)\ workspace = createProxyObject(\"workspace\", true)\ script = createProxyObject(\"script\", true)\ dumperState.property_store[script] = {\ Name = \"DumpedScript\", Parent = game, ClassName = \"LocalScript\",\ Disabled = false, RunContext = nil, LinkedSource = \"\",\ Source = \"-- Roblox LocalScript\",\ }\ local function seedCoreRobloxInstances()\ dumperState.property_store[game] = {\ Name = \"Game\", ClassName = \"DataModel\", JobId = \"00000000-0000-4000-8000-000000000001\",\ PlaceId = numericArg, GameId = numericArg + 864197532, placeId = numericArg, gameId = numericArg + 864197532,\ PlaceVersion = 1, CreatorId = 0, CreatorType = Enum.CreatorType.User\ }\ dumperState.property_store[workspace] = {\ Name = \"Workspace\", ClassName = \"Workspace\", Parent = game, Gravity = 196.2, DistributedGameTime = 1,\ StreamingEnabled = false\ }\ _setParent(workspace, game)\ _at.svcCache.Workspace = workspace\ \ local players = _at.svcCache.Players or createProxyObject(\"Players\", false, game)\ _at.svcCache.Players = players\ dumperState.registry[players] = \"Players\"\ dumperState.property_store[players] = {Name = \"Players\", ClassName = \"Players\", Parent = game, MaxPlayers = 12, RespawnTime = 5}\ _setParent(players, game)\ \ local lp = _at.localPlayer or createProxyObject(\"LocalPlayer\", false, players)\ _at.localPlayer = lp\ dumperState.registry[lp] = \"LocalPlayer\"\ dumperState.property_store[lp] = {\ Name = \"Player\", ClassName = \"Player\", Parent = players, UserId = 1234567, DisplayName = \"Player\",\ MembershipType = Enum.MembershipType.None, FollowUserId = 0, AccountAge = 1000\ }\ _setParent(lp, players)\ \ local function ensureChild(parent, name, className, props)\ local child = createProxyObject(name, false, parent)\ dumperState.registry[child] = name\ props = props or {}\ props.Name = props.Name or name\ props.ClassName = props.ClassName or className or name\ props.Parent = parent\ dumperState.property_store[child] = props\ _setParent(child, parent)\ if serviceNames[props.ClassName] then\ _at.svcCache[props.ClassName] = child\ end\ return child\ end\ \ ensureChild(lp, \"PlayerGui\", \"PlayerGui\")\ ensureChild(lp, \"Backpack\", \"Backpack\")\ local playerScripts = ensureChild(lp, \"PlayerScripts\", \"PlayerScripts\")\ ensureChild(playerScripts, \"PlayerModule\", \"ModuleScript\")\ ensureChild(playerScripts, \"RbxCharacterSounds\", \"LocalScript\")\ ensureChild(workspace, \"Camera\", \"Camera\", {\ CFrame = CFrame.new(0, 10, 0), FieldOfView = 70, ViewportSize = Vector2.new(1920, 1080),\ CameraType = Enum.CameraType.Custom, NearPlaneZ = -0.1\ })\ ensureChild(game, \"ReplicatedStorage\", \"ReplicatedStorage\")\ ensureChild(game, \"Lighting\", \"Lighting\", {ClockTime = 14, FogEnd = 100000, Ambient = Color3.fromRGB(128, 128, 128), OutdoorAmbient = Color3.fromRGB(128, 128, 128)})\ local soundSvc = ensureChild(game, \"SoundService\", \"SoundService\", {RolloffScale = 1, AmbientReverb = Enum.ReverbType.NoReverb})\ ensureChild(soundSvc, \"AudioDeviceOutput\", \"AudioDeviceOutput\", {Volume = 1})\ ensureChild(game, \"RunService\", \"RunService\")\ ensureChild(game, \"TweenService\", \"TweenService\")\ ensureChild(game, \"HttpService\", \"HttpService\", {HttpEnabled = false})\ local networkClient = ensureChild(game, \"NetworkClient\", \"NetworkClient\")\ ensureChild(networkClient, \"ClientReplicator\", \"ClientReplicator\")\ local ugc = ensureChild(game, \"Ugc\", \"Folder\")\ ensureChild(ugc, \"Chat\", \"Chat\")\ ensureChild(game, \"CollectionService\", \"CollectionService\")\ ensureChild(game, \"TextService\", \"TextService\")\ ensureChild(game, \"GuiService\", \"GuiService\")\ ensureChild(game, \"ContentProvider\", \"ContentProvider\")\ end\ seedCoreRobloxInstances()\ task = {\ wait = function(sec)\ if sec then emitOutput(string.format(\"task.wait(%s)\", serializeValue(sec))) else emitOutput(\"task.wait()\") end\ for inst, props in pairsFunction(dumperState.property_store) do\ if props.ClassName == \"Part\" and props.Anchored == false and _at.vectors[props.Position] then\ local v = _at.vectors[props.Position]\ props.Position = Vector3.new(v.x, v.y - 1, v.z)\ end\ end\ return sec or 0.03, osLibrary.clock()\ end,\ spawn = function(func, ...)\ local args = {...}\ emitOutput(\"task.spawn(function()\")\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func(table.unpack(args)) end, function(err) emitOutput(\"-- [Error in spawn] \" .. toStringFunction(err)) end )\ elseif typeFunction(func) == \"thread\" then\ xpcallFunction( function() coroutine.resume(func, table.unpack(args)) end, function(err) emitOutput(\"-- [Error in spawn] \" .. toStringFunction(err)) end )\ end\ while dumperState.pending_iterator do\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end\")\ dumperState.pending_iterator = false\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ local co = coroutine.create(function() end)\ _at.threadLike[co] = true\ local wrapper = setmetatable({}, {\ __call = function() return true end,\ __tostring = function() return \"thread: 0x0\" end,\ })\ _at.threadLike[wrapper] = true\ return wrapper\ end,\ delay = function(sec, func, ...)\ local args = {...}\ emitOutput(string.format(\"task.delay(%s, function()\", serializeValue(sec or 0)))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func(table.unpack(args)) end, function() end )\ end\ while dumperState.pending_iterator do\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end\")\ dumperState.pending_iterator = false\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ end,\ defer = function(func, ...)\ local args = {...}\ emitOutput(\"task.defer(function()\")\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then\ xpcallFunction( function() func(table.unpack(args)) end, function() end )\ end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ end,\ cancel = function(thread) emitOutput(\"task.cancel(thread)\") end,\ synchronize = function() emitOutput(\"task.synchronize()\") end,\ desynchronize = function() emitOutput(\"task.desynchronize()\") end\ }\ wait = function(sec)\ if sec then emitOutput(string.format(\"wait(%s)\", serializeValue(sec))) else emitOutput(\"wait()\") end\ task.wait(sec)\ return sec or 0.03, osLibrary.clock()\ end\ delay = function(sec, func)\ emitOutput(string.format(\"delay(%s, function()\", serializeValue(sec or 0)))\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then xpcallFunction(func, function() end) end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ end\ spawn = function(func)\ emitOutput(\"spawn(function()\")\ dumperState.indent = dumperState.indent + 1\ if typeFunction(func) == \"function\" then xpcallFunction(func, function() end) end\ dumperState.indent = dumperState.indent - 1\ emitOutput(\"end)\")\ end\ tick = function() return osLibrary.time() end\ time = function() return osLibrary.clock() end\ elapsedTime = function() return osLibrary.clock() end\ local globalEnv = {}\ local dummy = 999999999\ local function getDummy(key, val) return val end\ local function setupEnv()\ local env = {}\ setmetatable(env, {\ __call = function(self, ...) return self end,\ __index = function(self, key)\ if _G[key] ~= nil then return getDummy(key, _G[key]) end\ if key == \"game\" then return game end\ if key == \"workspace\" then return workspace end\ if key == \"script\" then return script end\ if key == \"Enum\" then return Enum end\ return nil\ end,\ __newindex = function(self, key, val)\ _G[key] = val\ globalEnv[key] = 0\ emitOutput(string.format(\"_G.%s = %s\", formatValue(key), serializeValue(val)))\ end\ })\ return env\ end\ _G.G = setupEnv()\ _G.g = setupEnv()\ _G.ENV = setupEnv()\ _G.env = setupEnv()\ _G.E = setupEnv()\ _G.e = setupEnv()\ _G.L = setupEnv()\ _G.l = setupEnv()\ _G.F = setupEnv()\ _G.f = setupEnv()\ local function createGetGenv(path)\ local proxy = {}\ local meta = {}\ local restricted = {\"hookfunction\", \"hookmetamethod\", \"newcclosure\", \"replaceclosure\", \"checkcaller\", \"iscclosure\", \"islclosure\", \"getrawmetatable\", \"setreadonly\", \"make_writeable\", \"getrenv\", \"getgc\", \"getinstances\"}\ local function formatPath(d, k)\ local prop = formatValue(k)\ if prop:match(\"^[%a_][%w_]*$\") then\ if d then return d .. \".\" .. prop end\ return prop\ else\ local escaped = prop:gsub(\"'\", \"\\\\\\\\'\")\ if d then return d .. \"['\" .. escaped .. \"']\" end\ return \"['\" .. escaped .. \"']\"\ end\ end\ meta.__index = function(_, key)\ if key == \"c\" or key == \"fenv\" or key == \"ReplicatedStorage\" then return nil end\ return _G[key]\ end\ meta.__newindex = function(_, key, val)\ local fullPath = formatPath(path, key)\ emitOutput(string.format(\"getgenv().%s = %s\", fullPath, serializeValue(val)))\ end\ meta.__call = function() return proxy end\ meta.__pairs = function() return function() return nil end, nil, nil end\ return setmetatable(proxy, meta)\ end\ local exploitFuncs = {\ getgenv = function() return createGetGenv(nil) end,\ getrenv = function()\ local _executorOnly = {\ hookfunction=true,hookmetamethod=true,getgc=true,getreg=true,\ getgenv=true,getrenv=true,getsenv=true,getrawmetatable=true,\ setrawmetatable=true,setreadonly=true,make_writeable=true,\ make_readonly=true,newcclosure=true,getupvalues=true,setupvalue=true,\ getconstants=true,getconnections=true,clonefunction=true,\ iscclosure=true,islclosure=true,getinfo=true,\ }\ return setmetatable({}, {\ __index = function(_, k)\ if _executorOnly[k] then return nil end\ return _G[k]\ end,\ __newindex = function(_, k, v) _G[k] = v end,\ })\ end,\ getsenv = function(scriptObj)\ local env = {}\ for k, v in pairsFunction(_G) do env[k] = v end\ for k, v in pairsFunction(exploitFuncs) do env[k] = v end\ if scriptObj ~= nil then\ local props = isProxy(scriptObj) and dumperState.property_store[scriptObj] or {}\ env.script = scriptObj\ env._ENV = env\ end\ return env\ end,\ getfenv = (function()\ local _cached\ local _MaxLevel = 5\ return function(depth)\ if depth ~= nil then\ local dt = typeFunction(depth)\ if dt == \"number\" then\ if depth ~= depth then return _cached or _cached and _cached or setmetatable({},{__index=_G}) end\ if depth == math.huge or depth == -math.huge then return _cached or setmetatable({},{__index=_G}) end\ if depth % 1 ~= 0 then return _cached or setmetatable({},{__index=_G}) end\ if depth < 0 or depth > _MaxLevel then return nil end\ end\ end\ if _cached then return _cached end\ _cached = setmetatable({}, {\ __index = function(_, key)\ if key == \"c\" or key == \"fenv\" then return nil end\ return _G[key]\ end,\ __newindex = function(_, k, v) rawset(_, k, v) end,\ __tostring = function() return \"getfenv()\" end,\ })\ return _cached\ end\ end)(),\ setfenv = function(func, env)\ if typeFunction(func) ~= \"function\" then return end\ local i = 1\ while true do\ local name = debugLibrary.getupvalue(func, i)\ if name == \"_ENV\" then debugLibrary.setupvalue(func, i, env) break\ elseif not name then break end\ i = i + 1\ end\ return func\ end,\ hookfunction = function(orig, hook)\ if typeFunction(orig) ~= \"function\" then return orig end\ if typeFunction(hook) ~= \"function\" then return orig end\ if not _at.hookedFunctions then _at.hookedFunctions = {} end\ _at.hookedFunctions[orig] = hook\ local _origRef = orig\ local trampoline = function(...)\ local ok2, res = xpcallFunction(hook, function(err)\ emitOutput(\"-- [hookfunction error] \" .. toStringFunction(err))\ end, ...)\ return res\ end\ _CFunctionSet[trampoline] = false\ pcallFunction(hook)\ return _origRef\ end,\ hookmetamethod = function(x, method, hook)\ local methodName = formatValue(method)\ if typeFunction(hook) == \"function\" then\ _at.metaHooks[methodName] = hook\ end\ if methodName == \"__index\" then\ return function(obj, key)\ local mt = isProxy(obj) and debugLibrary.getmetatable(obj)\ if mt and typeFunction(mt.__index) == \"function\" then\ local saved = _at.metaHooks[methodName]\ _at.metaHooks[methodName] = nil\ local ok, result = pcallFunction(mt.__index, obj, key)\ _at.metaHooks[methodName] = saved\ if ok then return result end\ end\ return nil\ end\ end\ if methodName == \"__namecall\" then\ return function(obj, ...)\ local methodToCall = _at.currentNamecallMethod\ if methodToCall and obj then\ local member = obj[methodToCall]\ if typeFunction(member) == \"function\" then\ local saved = _at.metaHooks[methodName]\ _at.metaHooks[methodName] = nil\ local ok, result = pcallFunction(member, obj, ...)\ _at.metaHooks[methodName] = saved\ if ok then return result end\ end\ end\ return nil\ end\ end\ return function() end\ end,\ getrawmetatable = function(x)\ if isProxy(x) then\ local m = debugLibrary.getmetatable(x)\ if typeFunction(m) ~= \"table\" then\ return {__metatable = \"The metatable is locked\"}\ end\ local out = {__metatable = \"The metatable is locked\"}\ for _, k in ipairs({\"__index\",\"__newindex\",\"__call\",\"__tostring\",\ \"__namecall\",\"__eq\",\"__add\",\"__sub\",\"__mul\",\"__div\",\ \"__mod\",\"__pow\",\"__unm\",\"__concat\",\"__len\",\"__lt\",\"__le\"}) do\ if m[k] then out[k] = m[k] end\ end\ return out\ end\ if typeFunction(x) == \"table\" then\ return getMetatableFunction(x) or {}\ end\ return {}\ end,\ setrawmetatable = function(x, mt) return x end,\ getnamecallmethod = function() return _at.currentNamecallMethod or \"__namecall\" end,\ setnamecallmethod = function(m) _at.currentNamecallMethod = formatValue(m) end,\ checkcaller = function() return false end,\ iscclosure = function(f)\ if typeFunction(f) ~= \"function\" then return false end\ if _CFunctionSet[f] then return true end\ local _sdump = _G._origStringDump or string.dump\ local ok = pcallFunction(_sdump, f)\ return not ok\ end,\ islclosure = function(f)\ if typeFunction(f) ~= \"function\" then return false end\ if _CFunctionSet[f] then return false end\ local _sdump = _G._origStringDump or string.dump\ local ok = pcallFunction(_sdump, f)\ return ok\ end,\ newcclosure = function(f)\ if typeFunction(f) ~= \"function\" then return f end\ local wrapper = function(...) return f(...) end\ _CFunctionSet[wrapper] = true\ return wrapper\ end,\ clonefunction = function(f) return f end,\ request = function(req)\ emitOutput(string.format(\"request(%s)\", serializeValue(req)))\ table.insert(dumperState.string_refs, {value = req.Url or req.url or \"unknown\", hint = \"HTTP Request\"})\ return {Success = true, StatusCode = 200, StatusMessage = \"OK\", Headers = {}, Body = \"{}\"}\ end,\ http_request = function(req) return exploitFuncs.request(req) end,\ syn = {request = function(req) return exploitFuncs.request(req) end},\ http = {request = function(req) return exploitFuncs.request(req) end},\ HttpPost = function(url, data)\ emitOutput(string.format(\"HttpPost(%s, %s)\", formatValue(url), formatValue(data)))\ return \"{}\"\ end,\ setclipboard = function(data) emitOutput(string.format(\"setclipboard(%s)\", serializeValue(data))) end,\ toclipboard = function(data) emitOutput(string.format(\"setclipboard(%s)\", serializeValue(data))) end,\ getclipboard = function() return \"\" end,\ identifyexecutor = function() return \"FlameExecutorDumperV2\", \"By .im_dev (Ken) https://discord.gg/ypVcca6cvp join now\" end,\ getexecutorname = function() return \"FlameExecutorDumperV2\" end,\ getexecutorversion = function() return \"By .im_dev (Ken) https://discord.gg/ypVcca6cvp join now\" end,\ getversion = function() return \"By .im_dev (Ken) https://discord.gg/ypVcca6cvp join now\" end,\ gethui = function()\ local hui = createProxyObject(\"HiddenUI\", false)\ registerVariable(hui, \"HiddenUI\")\ emitOutput(string.format(\"local %s = gethui()\", dumperState.registry[hui]))\ return hui\ end,\ cloneref = function(inst)\ if not isProxy(inst) then return inst end\ local props = dumperState.property_store[inst] or {}\ local className = props.ClassName or dumperState.registry[inst] or \"Instance\"\ local clone = createProxyObject(className, false, dumperState.parent_map[inst])\ local clonedProps = {}\ for k, v in pairsFunction(props) do clonedProps[k] = v end\ clonedProps.ClassName = clonedProps.ClassName or className\ clonedProps.Name = clonedProps.Name or props.Name or className\ dumperState.property_store[clone] = clonedProps\ dumperState.registry[clone] = (dumperState.registry[inst] or className) .. \"_cloneref\"\ _at.refBase[clone] = _at.refBase[inst] or inst\ return clone\ end,\ compareinstances = function(a, b)\ local baseA = _at.refBase[a] or a\ local baseB = _at.refBase[b] or b\ return baseA == baseB\ end,\ gethiddenui = function() return exploitFuncs.gethui() end,\ protectgui = function(obj) end,\ iswindowactive = function() return true end,\ isrbxactive = function() return true end,\ isgameactive = function() return true end,\ getconnections = function(signal) return {} end,\ firesignal = function(signal, ...) end,\ fireclickdetector = function(detector, dist) end,\ fireproximityprompt = function(prompt) end,\ firetouchinterest = function(a, b, c) end,\ getinstances = function()\ local instances = {}\ for inst in pairsFunction(dumperState.property_store) do\ if isProxy(inst) and (dumperState.property_store[inst].ClassName or dumperState.registry[inst]) then\ table.insert(instances, inst)\ end\ end\ if #instances == 0 then table.insert(instances, game) end\ return instances\ end,\ getnilinstances = function() return {} end,\ getgc = function(includeTables)\ local items = {}\ local seen = {}\ local function addItem(v)\ if v and not seen[v] then\ seen[v] = true\ table.insert(items, v)\ end\ end\ for _, v in pairsFunction(_G) do\ local t = typeFunction(v)\ if t == \"function\" then addItem(v)\ elseif t == \"table\" and includeTables then addItem(v) end\ end\ for _, v in pairsFunction(exploitFuncs) do\ if typeFunction(v) == \"function\" then addItem(v) end\ end\ if _at.hookedFunctions then\ for orig, hook in pairsFunction(_at.hookedFunctions) do\ addItem(orig); addItem(hook)\ end\ end\ for proxy, _ in pairsFunction(dumperState.property_store) do\ if isProxy(proxy) and includeTables then addItem(proxy) end\ end\ for _, lib in ipairsFunction({math, string, table, os, io, coroutine}) do\ if typeFunction(lib) == \"table\" then\ for _, v in pairsFunction(lib) do\ if typeFunction(v) == \"function\" then addItem(v) end\ end\ end\ end\ return items\ end,\ getscripts = function()\ local scripts = {}\ for proxy, props in pairsFunction(dumperState.property_store) do\ if isProxy(proxy) then\ local cn = props.ClassName or \"\"\ if cn == \"LocalScript\" or cn == \"Script\" or cn == \"ModuleScript\" then\ table.insert(scripts, proxy)\ end\ end\ end\ if #scripts == 0 then table.insert(scripts, script) end\ return scripts\ end,\ getrunningscripts = function()\ return exploitFuncs.getscripts()\ end,\ getloadedmodules = function()\ local modules = {}\ local seen = {}\ for proxy, props in pairsFunction(dumperState.property_store) do\ if isProxy(proxy) and not seen[proxy] then\ local cn = props.ClassName or \"\"\ if cn == \"ModuleScript\" then\ seen[proxy] = true\ table.insert(modules, proxy)\ end\ end\ end\ if typeFunction(package) == \"table\" and typeFunction(package.loaded) == \"table\" then\ for k, v in pairsFunction(package.loaded) do\ if typeFunction(v) == \"table\" and not isProxy(v) and not seen[v] then\ seen[v] = true\ local mp = createProxyObject(\"ModuleScript\", false)\ dumperState.property_store[mp] = {\ ClassName = \"ModuleScript\",\ Name = toStringFunction(k),\ Parent = game,\ }\ dumperState.registry[mp] = toStringFunction(k)\ table.insert(modules, mp)\ end\ end\ end\ return modules\ end,\ getcallingscript = function() return script end,\ readfile = function(file)\ emitOutput(string.format(\"readfile(%s)\", formatStringLiteral(file)))\ return _at.files[formatValue(file)] or '\"'\ end,\ writefile = function(file, content)\ _at.files[formatValue(file)] = formatValue(content)\ emitOutput(string.format(\"writefile(%s, %s)\", formatStringLiteral(file), serializeValue(content)))\ end,\ appendfile = function(file, content)\ local name = formatValue(file)\ _at.files[name] = (_at.files[name] or \"\") .. formatValue(content)\ emitOutput(string.format(\"appendfile(%s, %s)\", formatStringLiteral(file), serializeValue(content)))\ end,\ loadfile = function(file) return function() return createProxyObject(\"loaded_file\", false) end end,\ listfiles = function(folder)\ local base = formatValue(folder or \"\")\ local result = {}\ for name in pairsFunction(_at.folders) do\ if base == \"\" or name:match(\"^\" .. base:gsub(\"([^%w])\", \"%%%1\")) then table.insert(result, name) end\ end\ for name in pairsFunction(_at.files) do\ if base == \"\" or name:match(\"^\" .. base:gsub(\"([^%w])\", \"%%%1\")) then table.insert(result, name) end\ end\ return result\ end,\ isfile = function(file) return _at.files[formatValue(file)] ~= nil end,\ isfolder = function(folder) return _at.folders[formatValue(folder)] == true end,\ makefolder = function(folder)\ local name = formatValue(folder)\ if name ~= \"\" then _at.folders[name] = true end\ emitOutput(string.format(\"makefolder(%s)\", formatStringLiteral(folder)))\ end,\ delfolder = function(folder)\ local name = formatValue(folder)\ _at.folders[name] = nil\ emitOutput(string.format(\"delfolder(%s)\", formatStringLiteral(folder)))\ end,\ delfile = function(file)\ _at.files[formatValue(file)] = nil\ emitOutput(string.format(\"delfile(%s)\", formatStringLiteral(file)))\ end,\ Drawing = {\ new = function(type)\ local t = formatValue(type)\ local proxy = createProxyObject(\"Drawing_\" .. t, false)\ registerVariable(proxy, t)\ emitOutput(string.format(\"local %s = Drawing.new(%s)\", dumperState.registry[proxy], formatStringLiteral(t)))\ return proxy\ end,\ Fonts = createProxyObject(\"Drawing.Fonts\", false)\ },\ crypt = (function()\ local _b64alpha = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ local _b64lookup = {}\ for i = 1, 64 do _b64lookup[_b64alpha:sub(i,i)] = i - 1 end\ local function _b64enc(data)\ if typeFunction(data) ~= \"string\" then data = toStringFunction(data) end\ local result, pad = {}, #data % 3\ for i = 1, #data, 3 do\ local b1 = data:byte(i)\ local b2 = data:byte(i+1) or 0\ local b3 = data:byte(i+2) or 0\ local n = b1 * 65536 + b2 * 256 + b3\ result[#result+1] = _b64alpha:sub(math.floor(n/262144)%64+1, math.floor(n/262144)%64+1)\ result[#result+1] = _b64alpha:sub(math.floor(n/4096)%64+1, math.floor(n/4096)%64+1)\ result[#result+1] = (i+1 <= #data) and _b64alpha:sub(math.floor(n/64)%64+1, math.floor(n/64)%64+1) or \"=\"\ result[#result+1] = (i+2 <= #data) and _b64alpha:sub(n%64+1, n%64+1) or \"=\"\ end\ return table.concat(result)\ end\ local function _b64dec(data)\ if typeFunction(data) ~= \"string\" then data = toStringFunction(data) end\ data = data:gsub(\"=\",\"\"):gsub(\"[^%w%+%/]\",\"\")\ local result = {}\ for i = 1, #data, 4 do\ local a = _b64lookup[data:sub(i,i)] or 0\ local b = _b64lookup[data:sub(i+1,i+1)] or 0\ local c = _b64lookup[data:sub(i+2,i+2)] or 0\ local d = _b64lookup[data:sub(i+3,i+3)] or 0\ local n = a*262144 + b*4096 + c*64 + d\ result[#result+1] = string.char(math.floor(n/65536)%256)\ if i+2 <= #data+1 then result[#result+1] = string.char(math.floor(n/256)%256) end\ if i+3 <= #data+1 then result[#result+1] = string.char(n%256) end\ end\ return table.concat(result)\ end\ local function _sha256(msg)\ local K = {0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,\ 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,\ 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,\ 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,\ 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,\ 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,\ 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,\ 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2}\ local function rr(x,n) return ((x >> n) | (x << (32-n))) & 0xFFFFFFFF end\ local function s0(x) return rr(x,7) ~ rr(x,18) ~ (x >> 3) end\ local function s1(x) return rr(x,17) ~ rr(x,19) ~ (x >> 10) end\ local function S0(x) return rr(x,2) ~ rr(x,13) ~ rr(x,22) end\ local function S1(x) return rr(x,6) ~ rr(x,11) ~ rr(x,25) end\ local function Ch(x,y,z) return (x & y) ~ (~x & z) end\ local function Maj(x,y,z) return (x & y) ~ (x & z) ~ (y & z) end\ local ok, result = pcallFunction(function()\ local ml = #msg * 8; msg = msg .. \"\\128\"\ while #msg % 64 ~= 56 do msg = msg .. \"\\0\" end\ for i = 7, 0, -1 do msg = msg .. string.char((ml >> (i*8)) & 0xFF) end\ local H = {0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19}\ for blk = 1, #msg, 64 do\ local W = {}\ for i = 0, 15 do\ local b0,b1,b2,b3 = msg:byte(blk+i*4, blk+i*4+3)\ W[i] = ((b0 or 0)<<24)|((b1 or 0)<<16)|((b2 or 0)<<8)|(b3 or 0)\ end\ for i = 16, 63 do W[i] = (s1(W[i-2]) + W[i-7] + s0(W[i-15]) + W[i-16]) & 0xFFFFFFFF end\ local a,b,c,d,e,f,g,h = table.unpack(H)\ for i = 0, 63 do\ local T1 = (h+S1(e)+Ch(e,f,g)+K[i+1]+W[i]) & 0xFFFFFFFF\ local T2 = (S0(a)+Maj(a,b,c)) & 0xFFFFFFFF\ h=g; g=f; f=e; e=(d+T1)&0xFFFFFFFF; d=c; c=b; b=a; a=(T1+T2)&0xFFFFFFFF\ end\ H[1]=(H[1]+a)&0xFFFFFFFF; H[2]=(H[2]+b)&0xFFFFFFFF; H[3]=(H[3]+c)&0xFFFFFFFF; H[4]=(H[4]+d)&0xFFFFFFFF\ H[5]=(H[5]+e)&0xFFFFFFFF; H[6]=(H[6]+f)&0xFFFFFFFF; H[7]=(H[7]+g)&0xFFFFFFFF; H[8]=(H[8]+h)&0xFFFFFFFF\ end\ local out = {}\ for i = 1, 8 do out[i] = string.format(\"%08x\", H[i]) end\ return table.concat(out)\ end)\ return ok and result or string.rep(\"0\", 64)\ end\ local function _md5(s)\ local h = 0\ for i = 1, #s do h = ((h * 31) + s:byte(i)) & 0xFFFFFFFF end\ return string.format(\"%08x%08x%08x%08x\", h, ~h & 0xFFFFFFFF, (h<<16|h>>16)&0xFFFFFFFF, (~h<<16|~h>>16)&0xFFFFFFFF)\ end\ local function _sha1(s)\ local h = 0\ for i = 1, #s do h = ((h * 37) + s:byte(i)) & 0xFFFFFFFF end\ return string.format(\"%08x%08x%08x%08x%08x\", h, ~h&0xFFFFFFFF, (h*7)&0xFFFFFFFF, (h*13)&0xFFFFFFFF, (h*17)&0xFFFFFFFF)\ end\ return {\ base64encode = _b64enc,\ base64decode = _b64dec,\ base64_encode = _b64enc,\ base64_decode = _b64dec,\ encode = _b64enc,\ decode = _b64dec,\ encrypt = function(s, k) return s end,\ decrypt = function(s, k) return s end,\ hash = _sha256,\ sha256 = _sha256,\ sha1 = _sha1,\ md5 = _md5,\ generatekey = function(len) return string.rep(\"k\", len or 32) end,\ generatebytes = function(len) return string.rep(\"\\0\", len or 16) end,\ }\ end)(),\ base64_encode = (function()\ local _b64a = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ return function(data)\ if typeFunction(data) ~= \"string\" then data = toStringFunction(data) end\ local result = {}\ for i = 1, #data, 3 do\ local b1=data:byte(i); local b2=data:byte(i+1) or 0; local b3=data:byte(i+2) or 0\ local n=b1*65536+b2*256+b3\ result[#result+1]=_b64a:sub(math.floor(n/262144)%64+1,math.floor(n/262144)%64+1)\ result[#result+1]=_b64a:sub(math.floor(n/4096)%64+1,math.floor(n/4096)%64+1)\ result[#result+1]=(i+1<=#data) and _b64a:sub(math.floor(n/64)%64+1,math.floor(n/64)%64+1) or \"=\"\ result[#result+1]=(i+2<=#data) and _b64a:sub(n%64+1,n%64+1) or \"=\"\ end\ return table.concat(result)\ end\ end)(),\ base64_decode = (function()\ local _b64l = {}; local _b64a = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\ for i = 1, 64 do _b64l[_b64a:sub(i,i)] = i-1 end\ return function(data)\ if typeFunction(data) ~= \"string\" then data = toStringFunction(data) end\ data = data:gsub(\"=\",\"\"):gsub(\"[^%w%+%/]\",\"\")\ local result = {}\ for i = 1, #data, 4 do\ local a=_b64l[data:sub(i,i)] or 0; local b=_b64l[data:sub(i+1,i+1)] or 0\ local c=_b64l[data:sub(i+2,i+2)] or 0; local d=_b64l[data:sub(i+3,i+3)] or 0\ local n=a*262144+b*4096+c*64+d\ result[#result+1]=string.char(math.floor(n/65536)%256)\ if i+2<=#data+1 then result[#result+1]=string.char(math.floor(n/256)%256) end\ if i+3<=#data+1 then result[#result+1]=string.char(n%256) end\ end\ return table.concat(result)\ end\ end)(),\ base64encode = exploitFuncs and exploitFuncs.crypt and exploitFuncs.crypt.base64encode or nil,\ base64decode = exploitFuncs and exploitFuncs.crypt and exploitFuncs.crypt.base64decode or nil,\ mouse1click = function() emitOutput(\"mouse1click()\") end,\ mouse1press = function() emitOutput(\"mouse1press()\") end,\ mouse1release = function() emitOutput(\"mouse1release()\") end,\ mouse2click = function() emitOutput(\"mouse2click()\") end,\ mouse2press = function() emitOutput(\"mouse2press()\") end,\ mouse2release = function() emitOutput(\"mouse2release()\") end,\ mousemoverel = function(x, y) emitOutput(string.format(\"mousemoverel(%s, %s)\", serializeValue(x), serializeValue(y))) end,\ mousemoveabs = function(x, y) emitOutput(string.format(\"mousemoveabs(%s, %s)\", serializeValue(x), serializeValue(y))) end,\ mousescroll = function(delta) emitOutput(string.format(\"mousescroll(%s)\", serializeValue(delta))) end,\ keypress = function(key) emitOutput(string.format(\"keypress(%s)\", serializeValue(key))) end,\ keyrelease = function(key) emitOutput(string.format(\"keyrelease(%s)\", serializeValue(key))) end,\ keyclick = function(key) emitOutput(string.format(\"keyclick(%s)\", serializeValue(key))) end,\ isreadonly = function(t)\ if typeFunction(t) ~= \"table\" then return false end\ if not _at.readonlyTables then return false end\ return _at.readonlyTables[t] == true\ end,\ setreadonly = function(t, val)\ if typeFunction(t) ~= \"table\" then return t end\ if not _at.readonlyTables then _at.readonlyTables = {} end\ _at.readonlyTables[t] = val == true or val == nil\ if _at.readonlyTables[t] then\ local mt = getMetatableFunction(t)\ if not mt then\ mt = {}\ pcallFunction(setmetatable, t, mt)\ end\ if mt and not mt.__newindex_orig_ro then\ mt.__newindex_orig_ro = mt.__newindex or false\ mt.__newindex = function(tbl, key, value)\ if _at.readonlyTables and _at.readonlyTables[tbl] then\ return\ end\ local old = mt.__newindex_orig_ro\ if typeFunction(old) == \"function\" then return old(tbl, key, value) end\ rawset(tbl, key, value)\ end\ end\ else\ local mt = getMetatableFunction(t)\ if mt and mt.__newindex_orig_ro ~= nil then\ mt.__newindex = mt.__newindex_orig_ro ~= false and mt.__newindex_orig_ro or nil\ mt.__newindex_orig_ro = nil\ end\ end\ return t\ end,\ make_writeable = function(t)\ if typeFunction(t) == \"table\" then\ if not _at.readonlyTables then _at.readonlyTables = {} end\ _at.readonlyTables[t] = false\ end\ return t\ end,\ make_readonly = function(t)\ if typeFunction(t) == \"table\" then\ if not _at.readonlyTables then _at.readonlyTables = {} end\ _at.readonlyTables[t] = true\ end\ return t\ end,\ getthreadidentity = function() return 7 end,\ setthreadidentity = function(id) end,\ getidentity = function() return 7 end,\ setidentity = function(id) end,\ getthreadcontext = function() return 7 end,\ setthreadcontext = function(id) end,\ getcustomasset = function(file) return \"rbxasset://\" .. formatValue(file) end,\ getsynasset = function(file) return \"rbxasset://\" .. formatValue(file) end,\ getinfo = function(func) return {source = \"=\", what = \"Lua\", name = \"unknown\", short_src = \"dumper\"} end,\ getconstants = function(func)\ if typeFunction(func) ~= \"function\" then return {} end\ local consts = {}\ local seen = {}\ local _getup = debugLibrary and debugLibrary.getupvalue\ if _getup then\ local i = 1\ while i <= 250 do\ local ok3, name, val = pcallFunction(_getup, func, i)\ if not ok3 or not name then break end\ local t = typeFunction(val)\ if (t == \"string\" or t == \"number\" or t == \"boolean\") and not seen[val] then\ seen[val] = true\ table.insert(consts, val)\ elseif t == \"table\" then\ for _, v in pairsFunction(val) do\ local vt = typeFunction(v)\ if (vt == \"string\" or vt == \"number\") and not seen[v] then\ seen[v] = true\ table.insert(consts, v)\ end\ end\ end\ i = i + 1\ end\ end\ local _sdump = _G._origStringDump or (string and rawget(string, \"dump\")) or string.dump\ if _sdump then\ local ok2, bc = pcallFunction(_sdump, func)\ if ok2 and typeFunction(bc) == \"string\" and #bc > 0 then\ local pos = 1\ while pos <= #bc do\ local s, e = bc:find(\"[%g ][%g ][%g ]+\", pos)\ if not s then break end\ local cand = bc:sub(s, e)\ if #cand >= 2 and #cand <= 256 and not seen[cand] then\ seen[cand] = true\ table.insert(consts, cand)\ end\ pos = e + 1\ end\ end\ end\ return consts\ end,\ getupvalues = function(func)\ if typeFunction(func) ~= \"function\" then return {} end\ local uvs = {}\ local _getup = debugLibrary and debugLibrary.getupvalue\ if not _getup then return uvs end\ local i = 1\ while i <= 250 do\ local ok3, name, val = pcallFunction(_getup, func, i)\ if not ok3 or not name then break end\ uvs[i] = val\ if typeFunction(name) == \"string\" and name ~= \"\" and name ~= \"_ENV\" then\ uvs[name] = val\ end\ i = i + 1\ end\ return uvs\ end,\ getprotos = function(func)\ if typeFunction(func) ~= \"function\" then return {} end\ local protos = {}\ local _getup = debugLibrary and debugLibrary.getupvalue\ if not _getup then return protos end\ local i = 1\ while i <= 250 do\ local ok3, name, val = pcallFunction(_getup, func, i)\ if not ok3 or not name then break end\ if typeFunction(val) == \"function\" then\ table.insert(protos, val)\ end\ i = i + 1\ end\ return protos\ end,\ getupvalue = function(func, i)\ if typeFunction(func) ~= \"function\" then return nil end\ local _getup = debugLibrary and debugLibrary.getupvalue\ if not _getup then return nil end\ if typeFunction(i) == \"string\" then\ local idx = 1\ while idx <= 250 do\ local ok3, name, val = pcallFunction(_getup, func, idx)\ if not ok3 or not name then break end\ if name == i then return val end\ idx = idx + 1\ end\ return nil\ end\ local ok3, _, val = pcallFunction(_getup, func, i or 1)\ return ok3 and val or nil\ end,\ setupvalue = function(func, i, val)\ if typeFunction(func) ~= \"function\" then return end\ local _getup = debugLibrary and debugLibrary.getupvalue\ local _setup = debugLibrary and debugLibrary.setupvalue\ if not _setup then return end\ if typeFunction(i) == \"string\" then\ if not _getup then return end\ local idx = 1\ while idx <= 250 do\ local ok3, name = pcallFunction(_getup, func, idx)\ if not ok3 or not name then break end\ if name == i then\ pcallFunction(_setup, func, idx, val)\ return\ end\ idx = idx + 1\ end\ return\ end\ pcallFunction(_setup, func, i or 1, val)\ end,\ setconstant = function(func, i, val)\ if typeFunction(func) ~= \"function\" then return end\ local _getup = debugLibrary and debugLibrary.getupvalue\ local _setup = debugLibrary and debugLibrary.setupvalue\ if not _getup or not _setup then return end\ local idx = 1\ while idx <= 250 do\ local ok3, name, existing = pcallFunction(_getup, func, idx)\ if not ok3 or not name then break end\ if idx == i then pcallFunction(_setup, func, idx, val); return end\ idx = idx + 1\ end\ end,\ getconstant = function(func, i)\ local c = exploitFuncs.getconstants(func)\ return typeFunction(i) == \"number\" and c[i] or nil\ end,\ getproto = function(func, i) return function() end end,\ setproto = function(func, i, f) end,\ getstack = function(level, i) return nil end,\ setstack = function(level, i, val) end,\ debug = (function()\ local _gu = debugLibrary and rawget(debugLibrary, \"getupvalue\")\ local _su = debugLibrary and rawget(debugLibrary, \"setupvalue\")\ local _gi = debugLibrary and rawget(debugLibrary, \"getinfo\")\ local _cat = \"default\"\ local function _filterTrace(tb)\ if typeFunction(tb) ~= \"string\" then return tb end\ local out = {}\ for line in (tb .. \"\\n\"):gmatch(\"([^\\n]*)\\n\") do\ if not line:find(\"dumper%.lua\", 1, true)\ and not line:find(\"bypass%.lua\", 1, true)\ and not line:find(\"%[string \\\"tamperCheck\\\"%]\")\ and not line:find(\"luau%.load\") then\ out[#out+1] = line\ end\ end\ return table.concat(out, \"\\n\")\ end\ local _dbg = {\ getinfo = function(func, ...)\ if func == print or func == _G.print or func == warn or func == _G.warn then\ return {source = \"=[C]\", what = \"C\", name = \"print\", short_src = \"[C]\", nups = 0, nparams = 0, isvararg = true, currentline = -1}\ end\ if _gi then\ local ok2, info = pcallFunction(_gi, func, ...)\ if ok2 and info then return info end\ end\ return {source = \"=[C]\", what = \"C\", short_src = \"[C]\", nups = 0, nparams = 0, isvararg = true, currentline = -1}\ end,\ info = function(func, opts)\ opts = typeFunction(opts) == \"string\" and opts or \"snl\"\ local results = {}\ local info = _gi and (function() local ok2,r = pcallFunction(_gi, func); return ok2 and r end)() or nil\ for c in opts:gmatch(\".\") do\ if c == \"s\" then results[#results+1] = (info and info.source) or \"=[C]\"\ elseif c == \"n\" then results[#results+1] = (info and info.name) or \"?\"\ elseif c == \"l\" then results[#results+1] = (info and info.currentline) or -1\ elseif c == \"a\" then results[#results+1] = (info and info.nparams) or 0; results[#results+1] = (info and info.isvararg) or false\ elseif c == \"u\" then results[#results+1] = (info and info.nups) or 0\ end\ end\ return table.unpack(results)\ end,\ getupvalue = function(fn, i)\ if _gu then local n, v = _gu(fn, i); return n, v end; return nil\ end,\ getupvalues = function(fn) return exploitFuncs.getupvalues(fn) end,\ setupvalue = function(fn, i, v)\ if _su then return _su(fn, i, v) end\ end,\ getconstants = function(fn) return exploitFuncs.getconstants(fn) end,\ getstack = function(level, idx)\ if typeFunction(level) ~= \"number\" then return nil end\ local _gl = debugLibrary and rawget(debugLibrary, \"getlocal\")\ if _gl then\ if typeFunction(idx) == \"number\" then\ local ok2, _, val = pcallFunction(_gl, level + 1, idx)\ return ok2 and val or nil\ else\ local locs = {}\ local j = 1\ while true do\ local ok2, name, val = pcallFunction(_gl, level + 1, j)\ if not ok2 or not name then break end\ locs[name] = val; j = j + 1\ end\ return locs\ end\ end\ return nil\ end,\ setstack = function(level, idx, val)\ local _sl = debugLibrary and rawget(debugLibrary, \"setlocal\")\ if _sl then pcallFunction(_sl, level + 1, idx, val) end\ end,\ getproto = function(func, i, active)\ if typeFunction(func) ~= \"function\" then return active and {} or function() end end\ if not _gu then return active and {} or function() end end\ local collected = {}\ local idx = 1\ while idx <= 250 do\ local ok2, nm, val = pcallFunction(_gu, func, idx)\ if not ok2 or nm == nil then break end\ if typeFunction(val) == \"function\" then collected[#collected+1] = val end\ idx = idx + 1\ end\ if active then return collected end\ return collected[i or 1] or function() end\ end,\ getprotos = function(func)\ if typeFunction(func) ~= \"function\" then return {} end\ if not _gu then return {} end\ local protos = {}\ local idx = 1\ while idx <= 250 do\ local ok2, nm, val = pcallFunction(_gu, func, idx)\ if not ok2 or nm == nil then break end\ if typeFunction(val) == \"function\" then protos[#protos+1] = val end\ idx = idx + 1\ end\ return protos\ end,\ getmetatable = debugLibrary and debugLibrary.getmetatable or getMetatableFunction,\ setmetatable = (debugLibrary and debugLibrary.setmetatable) or setmetatable,\ traceback = function(...)\ local tb = getTraceback and getTraceback(...) or \"\"\ return _filterTrace(tb)\ end,\ setmemorycategory = function(cat) _cat = typeFunction(cat) == \"string\" and cat or _cat end,\ getmemorycategory = function() return _cat end,\ resetmemorycategory = function() _cat = \"default\" end,\ profilebegin = function(label) end,\ profileend = function() end,\ sethook = function() end,\ getregistry = function() return exploitFuncs.getreg() end,\ }\ return _dbg\ end)(),\ rconsoleprint = function(s) end,\ rconsoleclear = function() end,\ rconsolecreate = function() end,\ rconsoledestroy = function() end,\ rconsoleinput = function() return \"\" end,\ rconsoleinfo = function(s) end,\ rconsolewarn = function(s) end,\ rconsoleerr = function(s) end,\ rconsolename = function(name) end,\ printconsole = function(s) end,\ consolecreate = function() end,\ consoledestroy = function() end,\ consoleclear = function() end,\ consoletitle = function(title) end,\ consoleprint = function(text, ...) end,\ consoleinput = function() return \"\" end,\ consolename = function(name) end,\ setfflag = function(flag, val) end,\ getfflag = function(flag) return \"\" end,\ getframetime = function() return 1/60 end,\ getfps = function() return 60 end,\ getping = function() return 50 end,\ getclientid = function() return \"00000000-0000-0000-0000-000000000000\" end,\ getplaceid = function()\ local gp = dumperState and dumperState.property_store\ local game = _G.game\ if game and gp and gp[game] and gp[game].PlaceId then return gp[game].PlaceId end\ return 0\ end,\ getjobid = function() return \"00000000-0000-0000-0000-000000000000\" end,\ getgameid = function() return 0 end,\ copyinstance = function(inst)\ if inst == nil then return createProxyObject(\"Instance\", false) end\ local copy = createProxyObject(tostring(inst), false)\ return copy\ end,\ getobjects = function(assetId)\ local id = formatValue(assetId)\ local obj = createProxyObject(\"Model\", false)\ dumperState.registry[obj] = \"getobjects(\" .. formatStringLiteral(id) .. \")[1]\"\ return {obj}\ end,\ string_pack = string.pack or function(fmt, ...) return \"\" end,\ string_unpack = string.unpack or function(fmt, s, i) return 0, (i or 1) + 1 end,\ setfpscap = function(cap) emitOutput(string.format(\"setfpscap(%s)\", serializeValue(cap))) end,\ getfpscap = function() return 60 end,\ isnetworkowner = function(part) return true end,\ gethiddenproperty = function(instance, prop) return nil end,\ sethiddenproperty = function(instance, prop, val) emitOutput(string.format(\"sethiddenproperty(%s, %s, %s)\", serializeValue(instance), formatStringLiteral(prop), serializeValue(val))) end,\ setsimulationradius = function(radius, maxRadius) emitOutput(string.format(\"setsimulationradius(%s%s)\", serializeValue(radius), maxRadius and \", \" .. serializeValue(maxRadius) or \"\")) end,\ getspecialinfo = function(instance) return {} end,\ saveinstance = function(options) emitOutput(string.format(\"saveinstance(%s)\", serializeValue(options or {}))) end,\ decompile = function(script) return \"-- decompiled\" end,\ lz4compress = function(s) return s end,\ lz4decompress = function(s) return s end,\ MessageBox = function(text, caption, type) return 1 end,\ setwindowactive = function() end,\ setwindowtitle = function(title) end,\ queue_on_teleport = function(code) emitOutput(string.format(\"queue_on_teleport(%s)\", serializeValue(code))) end,\ queueonteleport = function(code) emitOutput(string.format(\"queueonteleport(%s)\", serializeValue(code))) end,\ secure_call = function(func, ...) return func(...) end,\ create_secure_function = function(func) return func end,\ isvalidinstance = function(instance) return instance ~= nil end,\ validcheck = function(instance) return instance ~= nil end,\ getreg = function()\ local reg = {}\ local running = coroutine.running()\ reg[1] = running or coroutine.create(function() end)\ if typeFunction(package) == \"table\" and typeFunction(package.loaded) == \"table\" then\ reg[2] = package.loaded\ for k, v in pairsFunction(package.loaded) do\ reg[k] = v\ end\ end\ if debugLibrary then\ local _dreg = rawget(debugLibrary, \"getregistry\")\ if typeFunction(_dreg) == \"function\" then\ local ok2, actual = pcallFunction(_dreg)\ if ok2 and typeFunction(actual) == \"table\" then\ for k, v in pairsFunction(actual) do\ if reg[k] == nil then reg[k] = v end\ end\ end\ end\ end\ for proxy, name in pairsFunction(dumperState.registry) do\ if typeFunction(name) == \"string\" and reg[name] == nil then\ reg[name] = proxy\ end\ end\ return reg\ end,\ getregistry = function() return exploitFuncs.getreg() end,\ getthreads = function() return {} end,\ getallthreads = function() return {} end,\ getmainthread = function() return coroutine.running() end,\ getactors = function() return {} end,\ getactor = function() return nil end,\ getfunctionhash = function(f) return string.rep(\"0\", 64) end,\ getscriptbytecode = function(scriptObj)\ if isProxy(scriptObj) then\ local props = dumperState.property_store[scriptObj] or {}\ local src = props.Source or props.source\ if typeFunction(src) == \"string\" and #src > 0 then\ local fn, err = loadstring and loadstring(src) or load(src)\ if fn then\ local _sdump = _G._origStringDump or string.dump\ local ok2, bc = pcallFunction(_sdump, fn)\ if ok2 and typeFunction(bc) == \"string\" then return bc end\ end\ end\ end\ local _sdump = _G._origStringDump or string.dump\ local ok2, bc = pcallFunction(_sdump, function() end)\ return (ok2 and typeFunction(bc) == \"string\") and bc or \"\"\ end,\ getscripthash = function(s) return string.rep(\"0\", 64) end,\ getscriptfunction = function(s) return function() end end,\ getscriptclosure = function(s) return function() end end,\ getsenv2 = function() return {} end,\ getrenv2 = function() return _G end,\ WebSocket = {\ connect = function(url)\ emitOutput(string.format(\"WebSocket.connect(%s)\", serializeValue(url)))\ local ws = createProxyObject(\"WebSocket\", false)\ registerVariable(ws, \"WebSocket\")\ local props = dumperState.property_store[ws] or {}\ props.OnMessage = createProxyObject(\"RBXScriptSignal\", false)\ props.OnClose = createProxyObject(\"RBXScriptSignal\", false)\ props.Send = function(_, msg)\ emitOutput(string.format(\"ws:Send(%s)\", serializeValue(msg)))\ end\ props.Close = function() emitOutput(\"ws:Close()\") end\ dumperState.property_store[ws] = props\ return ws\ end\ },\ fireserver = function(...) end,\ fireallclients = function(...) end,\ copyinstance = function(inst, recursive)\ if isProxy(inst) then\ local name = (dumperState.registry[inst] or \"inst\") .. \"_copy\"\ local copy = createProxyObject(name, false)\ local props = dumperState.property_store[inst] or {}\ local copyProps = {}\ for k, v in pairsFunction(props) do copyProps[k] = v end\ dumperState.property_store[copy] = copyProps\ return copy\ end\ return inst\ end,\ getscriptenv = function(script)\ return _G\ end,\ getsenv = function(script)\ return _G\ end,\ pebc_execute = function(func, ...) return pcallFunction(func, ...) end,\ pebc_safe = function(func, ...) return pcallFunction(func, ...) end,\ run_on_actor = function(actor, func, ...) return pcallFunction(func, ...) end,\ filtergc = function(filter, ...)\ local gcType = typeFunction(filter) == \"string\" and filter or \"Instance\"\ if gcType == \"Instance\" then return {} end\ if gcType == \"function\" then return {} end\ if gcType == \"table\" then return {} end\ if gcType == \"string\" then return {} end\ return {}\ end,\ getobjects = function(assetId)\ local proxy = createProxyObject(\"Asset\", false)\ dumperState.property_store[proxy] = {Name = \"Asset\", ClassName = \"Model\"}\ return {proxy}\ end,\ getmemory = function(category)\ local cats = {\ PhysicsParts = 1.2, GraphicsMeshParts = 5.8, GraphicsTexture = 12.4,\ GraphicsTextureCharacter = 3.1, Sounds = 0.8, Animation = 2.0,\ Script = 0.5, LuaHeap = 3.3, HttpCache = 0.2, Instances = 4.7,\ Signals = 0.1, LuaStack = 0.3, Total = 34.4,\ }\ if typeFunction(category) == \"string\" and cats[category] then return cats[category] end\ return 0\ end,\ printidentity = function(tag)\ emitOutput(string.format(\"-- printidentity: %s Current identity is 8\", tostring(tag or \"\")))\ end,\ getclipboard = function() return \"\" end,\ setclipboard = function(text)\ emitOutput(string.format(\"setclipboard(%s)\", serializeValue(tostring(text or \"\"))))\ end,\ toclipboard = function(text)\ emitOutput(string.format(\"toclipboard(%s)\", serializeValue(tostring(text or \"\"))))\ end,\ fireclickdetector = function(detector, distance, inputType)\ if detector and dumperState.registry[detector] then\ emitOutput(string.format(\"fireclickdetector(%s, %s)\",\ dumperState.registry[detector], serializeValue(distance or 0)))\ end\ end,\ fireproximityprompt = function(prompt, playerDist)\ if prompt and dumperState.registry[prompt] then\ emitOutput(string.format(\"fireproximityprompt(%s)\", dumperState.registry[prompt]))\ end\ end,\ firetouchinterest = function(part, toucher, toggle)\ if part and dumperState.registry[part] then\ emitOutput(string.format(\"firetouchinterest(%s, %s, %s)\",\ dumperState.registry[part],\ serializeValue(toucher), serializeValue(toggle or 0)))\ end\ end,\ firesignal = function(signal, ...)\ if signal and dumperState.registry[signal] then\ local args = {...}\ local parts = {}\ for i = 1, #args do parts[i] = serializeValue(args[i]) end\ emitOutput(string.format(\"-- firesignal(%s, %s)\",\ dumperState.registry[signal], table.concat(parts, \", \")))\ end\ end,\ is_flameexecutordumperv2_closure = function(f) return typeFunction(f) == \"function\" end,\ is_flameexecutordumperv2_function = function(f) return typeFunction(f) == \"function\" end,\ is_flameexecutordumper_closure = function(f) return typeFunction(f) == \"function\" end,\ is_flameexecutordumper_function = function(f) return typeFunction(f) == \"function\" end,\ is_flame_closure = function(f) return typeFunction(f) == \"function\" end,\ is_flame_function = function(f) return typeFunction(f) == \"function\" end,\ isflameclosure = function(f) return typeFunction(f) == \"function\" end,\ isflamefunction = function(f) return typeFunction(f) == \"function\" end,\ is_synapse_function = function() return false end,\ is_synapse_closure = function() return false end,\ issynapsefunction = function() return false end,\ is_sirhurt_closure = function() return false end,\ is_protosmasher_closure = function() return false end,\ is_krnl_closure = function() return false end,\ is_comet_function = function() return false end,\ is_fluxus_closure = function() return false end,\ is_oxygen_closure = function() return false end,\ is_calamari_closure = function() return false end,\ is_wave_closure = function() return false end,\ iswaveclosure = function() return false end,\ is_celery_closure = function() return false end,\ is_swift_closure = function() return false end,\ is_xeno_closure = function() return false end,\ is_arceus_closure = function() return false end,\ is_velocity_closure = function() return false end,\ is_zorara_closure = function() return false end,\ is_codex_closure = function() return false end,\ is_seliware_closure = function() return false end,\ is_potassium_closure = function() return false end,\ is_macsploit_closure = function() return false end,\ is_hydrogen_closure = function() return false end,\ is_electron_closure = function() return false end,\ is_volcano_closure = function() return false end,\ is_awp_closure = function() return false end,\ is_delta_closure = function() return false end,\ is_trigon_closure = function() return false end,\ is_evon_closure = function() return false end,\ is_valyse_closure = function() return false end,\ is_riptide_closure = function() return false end,\ is_cloudia_closure = function() return false end,\ is_coco_z_closure = function() return false end,\ is_nihon_closure = function() return false end,\ is_reaper_closure = function() return false end,\ is_vape_closure = function() return false end,\ is_ghost_closure = function() return false end,\ is_temple_closure = function() return false end,\ is_oblivion_closure = function() return false end,\ is_luraph_closure = function() return false end,\ is_sheathe_closure = function() return false end,\ is_oxide_closure = function() return false end,\ is_carbon_closure = function() return false end,\ is_script_hub_closure = function() return false end,\ is_dex_closure = function() return false end,\ is_hydroxide_closure = function() return false end,\ is_dark_dex_closure = function() return false end,\ is_prometheus_closure = function() return false end,\ is_ironbrew_closure = function() return false end,\ comparefunctions = function(a, b) return a == b end,\ restorefunction = function(f) return f end,\ restorefunctions = function() end,\ replaceclosure = function(target, replacement) return replacement or target end,\ getconnectioncount = function() return 0 end,\ getreplicatedstorage = function() return game:GetService(\"ReplicatedStorage\") end,\ isluau = function() return true end,\ pebc_execute = function(code) return code end,\ getfunctionname = function(f)\ if f == print or f == _G.print then return \"print\" end\ if f == warn or f == _G.warn then return \"warn\" end\ if f == error then return \"error\" end\ if f == assert then return \"assert\" end\ return \"\"\ end,\ namecallmethod = function() return _at.currentNamecallMethod or \"__namecall\" end,\ isstudio = function() return false end,\ isclient = function() return true end,\ isserver = function() return false end,\ isparallel = function() return false end,\ isnetworkserver = function() return false end,\ getwindowtitle = function() return \"Roblox\" end,\ getwindowhandle = function() return 0 end,\ getprocessid = function() return 0 end,\ cache = {\ invalidate = function(inst) end,\ replace = function(a, b) return b end,\ iscached = function(inst) return inst ~= nil end,\ },\ closures = {\ newcclosure = function(f) return f end,\ clonefunction = function(f) return f end,\ iscclosure = function(f) return false end,\ }\ }\ local _cryptRef = exploitFuncs.crypt\ exploitFuncs.base64encode = _cryptRef.base64encode\ exploitFuncs.base64decode = _cryptRef.base64decode\ exploitFuncs.base64 = {\ encode = _cryptRef.base64encode,\ decode = _cryptRef.base64decode,\ }\ exploitFuncs.sha1 = _cryptRef.sha1\ exploitFuncs.sha256 = _cryptRef.sha256\ exploitFuncs.md5 = _cryptRef.md5\ exploitFuncs.crypt_base64encode = _cryptRef.base64encode\ exploitFuncs.crypt_base64decode = _cryptRef.base64decode\ exploitFuncs.crypt_encrypt = _cryptRef.encrypt\ exploitFuncs.crypt_decrypt = _cryptRef.decrypt\ exploitFuncs.crypt_hash = _cryptRef.hash\ \ local _wadLoopCount = 0\ local _wadMaxLoop = 2000000\ \ exploitFuncs.CALL = function(fn, ...)\ if typeFunction(fn) == \"function\" then return fn(...) end\ local mt = getMetatableFunction(fn)\ if mt and mt.__call then return mt.__call(fn, ...) end\ if isProxy(fn) then\ local n = dumperState.registry[fn] or \"obj\"\ local a = {...}; local s = {}\ for i=1,#a do s[i]=serializeValue(a[i]) end\ emitOutput(string.format(\"%s(%s)\", n, table.concat(s,\", \")))\ return createProxyObject(n..\"_result\", false)\ end\ return nil\ end\ exploitFuncs.NAMECALL = exploitFuncs.CALL\ \ exploitFuncs.CHECKWHILE = function(cond)\ _wadLoopCount = _wadLoopCount + 1\ if _wadLoopCount >= _wadMaxLoop then return false end\ return cond\ end\ \ if type(_G._HOOKOP) == \"table\" then\ _G._HOOKOP.install(exploitFuncs)\ exploitFuncs.CODER_CALL = exploitFuncs.CALL\ exploitFuncs.CODER_NAMECALL = exploitFuncs.CALL\ end\ \ for name, func in pairsFunction(exploitFuncs) do\ _G[name] = func\ end\ local nativeBit32 = bit32\ local bitLibrary = {}\ local function toBit(n)\ n = (n or 0) % 4294967296\ if n >= 2147483648 then n = n - 4294967296 end\ return math.floor(n)\ end\ local function toU32(n) return math.floor((n or 0) % 4294967296) end\ \ local function _band(a, b)\ if nativeBit32 then return nativeBit32.band(toU32(a), toU32(b)) end\ a, b = toU32(a), toU32(b)\ local r, p = 0, 1\ while a > 0 and b > 0 do\ if a % 2 == 1 and b % 2 == 1 then r = r + p end\ a = math.floor(a / 2); b = math.floor(b / 2); p = p * 2\ end\ return r\ end\ local function _bor(a, b)\ if nativeBit32 then return nativeBit32.bor(toU32(a), toU32(b)) end\ a, b = toU32(a), toU32(b)\ local r, p = 0, 1\ while a > 0 or b > 0 do\ if a % 2 == 1 or b % 2 == 1 then r = r + p end\ a = math.floor(a / 2); b = math.floor(b / 2); p = p * 2\ end\ return r\ end\ local function _bxor(a, b)\ if nativeBit32 then return nativeBit32.bxor(toU32(a), toU32(b)) end\ a, b = toU32(a), toU32(b)\ local r, p = 0, 1\ while a > 0 or b > 0 do\ if a % 2 ~= b % 2 then r = r + p end\ a = math.floor(a / 2); b = math.floor(b / 2); p = p * 2\ end\ return r\ end\ local function _lshift(n, bits)\ bits = (bits or 0) % 32\ if bits == 0 then return toU32(n) end\ return toU32(toU32(n) * (2 ^ bits))\ end\ local function _rshift(n, bits)\ bits = (bits or 0) % 32\ if bits == 0 then return toU32(n) end\ return math.floor(toU32(n) / (2 ^ bits))\ end\ local function _bnot(n) return _bxor(toU32(n), 0xFFFFFFFF) end\ \ bitLibrary.tobit = toBit\ bitLibrary.tohex = function(n, len)\ return string.format(\"%0\" .. (len or 8) .. \"x\", toU32(n))\ end\ bitLibrary.band = function(...)\ local r = toU32(select(1, ...))\ for i = 2, select(\"#\", ...) do r = _band(r, toU32(select(i, ...))) end\ return toBit(r)\ end\ bitLibrary.bor = function(...)\ local r = toU32(select(1, ...))\ for i = 2, select(\"#\", ...) do r = _bor(r, toU32(select(i, ...))) end\ return toBit(r)\ end\ bitLibrary.bxor = function(...)\ local r = toU32(select(1, ...))\ for i = 2, select(\"#\", ...) do r = _bxor(r, toU32(select(i, ...))) end\ return toBit(r)\ end\ bitLibrary.bnot = function(n) return toBit(_bnot(n or 0)) end\ bitLibrary.lshift = function(n, bits) return toBit(_lshift(n or 0, bits or 0)) end\ bitLibrary.rshift = function(n, bits) return toBit(_rshift(n or 0, bits or 0)) end\ bitLibrary.arshift = function(n, bits)\ local val = toBit(n or 0)\ bits = (bits or 0) % 32\ if val < 0 then\ return toBit(_bor(_rshift(toU32(val), bits), _lshift(0xFFFFFFFF, 32 - bits)))\ else\ return toBit(_rshift(toU32(val), bits))\ end\ end\ bitLibrary.rol = function(n, bits)\ n = toU32(n or 0); bits = (bits or 0) % 32\ return toBit(_bor(_lshift(n, bits), _rshift(n, 32 - bits)))\ end\ bitLibrary.ror = function(n, bits)\ n = toU32(n or 0); bits = (bits or 0) % 32\ return toBit(_bor(_rshift(n, bits), _lshift(n, 32 - bits)))\ end\ bitLibrary.bswap = function(n)\ n = toU32(n or 0)\ local a = _rshift(_band(n, 0xFF000000), 24)\ local b = _rshift(_band(n, 0x00FF0000), 8)\ local c = _lshift(_band(n, 0x0000FF00), 8)\ local d = _lshift(_band(n, 0x000000FF), 24)\ return toBit(_bor(_bor(a, b), _bor(c, d)))\ end\ bitLibrary.countlz = function(n)\ n = toU32(bitLibrary.tobit(n))\ if n == 0 then return 32 end\ local count = 0\ if _band(n, 0xFFFF0000) == 0 then count = count + 16; n = _lshift(n, 16) end\ if _band(n, 0xFF000000) == 0 then count = count + 8; n = _lshift(n, 8) end\ if _band(n, 0xF0000000) == 0 then count = count + 4; n = _lshift(n, 4) end\ if _band(n, 0xC0000000) == 0 then count = count + 2; n = _lshift(n, 2) end\ if _band(n, 0x80000000) == 0 then count = count + 1 end\ return count\ end\ bitLibrary.countrz = function(n)\ n = toU32(bitLibrary.tobit(n))\ if n == 0 then return 32 end\ local count = 0\ while _band(n, 1) == 0 do n = _rshift(n, 1); count = count + 1 end\ return count\ end\ bitLibrary.lrotate = bitLibrary.rol\ bitLibrary.rrotate = bitLibrary.ror\ bitLibrary.extract = function(n, pos, len)\ len = len or 1\ return toBit(_band(_rshift(toU32(n or 0), pos or 0), _lshift(1, len) - 1))\ end\ bitLibrary.replace = function(n, val, pos, len)\ len = len or 1; pos = pos or 0\ local mask = _lshift(1, len) - 1\ return toBit(_bor(_band(toU32(n or 0), _bnot(_lshift(mask, pos))), _band(toU32(val or 0), _lshift(mask, pos))))\ end\ bitLibrary.btest = function(a, b) return _band(toU32(a or 0), toU32(b or 0)) ~= 0 end\ bit32 = bitLibrary\ bit = bitLibrary\ _G.bit = bitLibrary\ _G.bit32 = bitLibrary\ table.getn = table.getn or function(t) return #t end\ table.foreach = table.foreach or function(t, func) for k, v in pairsFunction(t) do func(k, v) end end\ table.foreachi = table.foreachi or function(t, func) for i, v in ipairsFunction(t) do func(i, v) end end\ table.pack = table.pack or function(...)\ local t = {...}; t.n = select(\"#\", ...); return t\ end\ table.unpack = table.unpack or unpack\ table.move = function(src, start, endIdx, dest, target)\ target = target or src\ if target == src and dest > start and dest <= endIdx then\ for i = endIdx, start, -1 do target[dest + i - start] = src[i] end\ else\ for i = start, endIdx do target[dest + i - start] = src[i] end\ end\ return target\ end\ table.find = table.find or function(t, value, init)\ init = init or 1\ for i = init, #t do if t[i] == value then return i end end\ return nil\ end\ table.create = table.create or function(count, value)\ local t = {}\ if value ~= nil then\ for i = 1, (toNumberFunction(count) or 0) do t[i] = value end\ end\ return t\ end\ table.clear = table.clear or function(t)\ if typeFunction(t) ~= \"table\" then return end\ for k in pairsFunction(t) do t[k] = nil end\ end\ table.maxn = table.maxn or function(t)\ local m = 0\ for k in pairsFunction(t) do\ if typeFunction(k) == \"number\" and k > m then m = k end\ end\ return m\ end\ do\ local _frozen = setmetatable({}, {__mode = \"k\"})\ table.freeze = table.freeze or function(t) _frozen[t] = true; return t end\ table.isfrozen = table.isfrozen or function(t) return _frozen[t] == true end\ end\ local _orig_table_sort = table.sort\ table.sort = function(t, comp)\ if typeFunction(t) ~= \"table\" or #t < 2 then return end\ local ok = pcallFunction(_orig_table_sort, t, comp)\ if not ok then\ for i = 2, #t do\ local val = t[i]\ local j = i - 1\ while j >= 1 and (comp and comp(val, t[j]) or val < t[j]) do\ t[j + 1] = t[j]\ j = j - 1\ end\ t[j + 1] = val\ end\ end\ end\ table.clone = table.clone or function(t)\ if typeFunction(t) ~= \"table\" then return t end\ local out = {}\ for k, v in pairsFunction(t) do out[k] = v end\ return setmetatable(out, getMetatableFunction(t))\ end\ string.split = string.split or function(str, sep)\ local t = {}\ for match in string.gmatch(str, \"([^\" .. (sep or \"%s\") .. \"]+)\") do table.insert(t, match) end\ return t\ end\ if not math.frexp then\ math.frexp = function(x)\ if x == 0 then return 0, 0 end\ local exp = math.floor(math.log(math.abs(x)) / math.log(2)) + 1\ local m = x / 2 ^ exp\ return m, exp\ end\ end\ if not math.ldexp then math.ldexp = function(m, e) return m * 2 ^ e end end\ if not utf8 then\ utf8 = {}\ utf8.char = function(...)\ local args = {...}\ local chars = {}\ for _, cp in ipairsFunction(args) do\ if cp < 0x80 then\ table.insert(chars, string.char(cp))\ elseif cp < 0x800 then\ table.insert(chars, string.char(0xC0 + math.floor(cp / 0x40)))\ table.insert(chars, string.char(0x80 + cp % 0x40))\ elseif cp < 0x10000 then\ table.insert(chars, string.char(0xE0 + math.floor(cp / 0x1000)))\ table.insert(chars, string.char(0x80 + math.floor(cp / 0x40) % 0x40))\ table.insert(chars, string.char(0x80 + cp % 0x40))\ else\ table.insert(chars, string.char(0xF0 + math.floor(cp / 0x40000)))\ table.insert(chars, string.char(0x80 + math.floor(cp / 0x1000) % 0x40))\ table.insert(chars, string.char(0x80 + math.floor(cp / 0x40) % 0x40))\ table.insert(chars, string.char(0x80 + cp % 0x40))\ end\ end\ return table.concat(chars)\ end\ utf8.len = function(s, i, j)\ i = i or 1; j = j or #s\ local n = 0\ local p = i\ while p <= j do\ local b = string.byte(s, p)\ if b < 0x80 then p = p + 1\ elseif b < 0xC0 then return nil, p\ elseif b < 0xE0 then p = p + 2\ elseif b < 0xF0 then p = p + 3\ else p = p + 4 end\ n = n + 1\ end\ return n\ end\ utf8.codes = function(s, i)\ i = (i or 0) + 1\ return function(s2, p)\ if p > #s2 then return nil end\ local b = string.byte(s2, p)\ local cp, nextp\ if b < 0x80 then cp = b; nextp = p + 1\ elseif b < 0xE0 then\ cp = (b - 0xC0) * 0x40 + string.byte(s2, p+1) - 0x80\ nextp = p + 2\ elseif b < 0xF0 then\ cp = (b - 0xE0) * 0x1000 + (string.byte(s2, p+1) - 0x80) * 0x40 + string.byte(s2, p+2) - 0x80\ nextp = p + 3\ else\ cp = (b - 0xF0) * 0x40000 + (string.byte(s2, p+1) - 0x80) * 0x1000 + (string.byte(s2, p+2) - 0x80) * 0x40 + string.byte(s2, p+3) - 0x80\ nextp = p + 4\ end\ return nextp, cp\ end, s, i\ end\ utf8.codepoint = function(s, i, j)\ i = i or 1; j = j or i\ local cps = {}\ for _, cp in utf8.codes(s, i - 1) do\ table.insert(cps, cp)\ if #cps >= (j - i + 1) then break end\ end\ return table.unpack(cps)\ end\ utf8.offset = function(s, n, i)\ i = i or (n >= 0 and 1 or #s + 1)\ if n > 0 then\ for _ = 1, n - 1 do\ repeat i = i + 1 until i > #s or string.byte(s, i) < 0x80 or string.byte(s, i) >= 0xC0\ end\ elseif n < 0 then\ for _ = 1, -n do\ repeat i = i - 1 until i < 1 or string.byte(s, i) < 0x80 or string.byte(s, i) >= 0xC0\ end\ end\ return i\ end\ utf8.graphemes = function(s, i, j)\ i = i or 1; j = j or #s\ return utf8.codes(s, i - 1)\ end\ utf8.charpattern = \"[\\0-\\x7F\\xC2-\\xFD][\\x80-\\xBF]*\"\ end\ _G.utf8 = utf8\ pairs = function(t)\ if typeFunction(t) == \"table\" and not isProxy(t) then return pairsFunction(t) end\ return function() return nil end, t, nil\ end\ ipairs = function(t)\ if typeFunction(t) == \"table\" and not isProxy(t) then return ipairsFunction(t) end\ return function() return nil end, t, 0\ end\ _G.pairs = pairs\ _G.ipairs = ipairs\ _G.math = math\ _G.table = table\ _G.string = string\ _G.os = os\ _G.coroutine = coroutine\ _G._bypassSavedIo = io\ _G._bypassSavedDofile = dofile\ _G.io = nil\ _G.debug = exploitFuncs.debug\ _G._realSetHook = setHook\ _G.utf8 = utf8\ _G.next = next\ _G.tostring = tostring\ _G.tonumber = tonumber\ _G.getmetatable = getmetatable\ _G.setmetatable = setmetatable\ _G.pcall = function(f, ...)\ local results = {pcallFunction(f, ...)}\ local success = results[1]\ if not success then\ local err = results[2]\ if typeFunction(err) == \"string\" and err:match(\"TIMEOUT_FORCED_BY_DUMPER\") then errorFunction(err) end\ end\ return table.unpack(results)\ end\ _G.xpcall = function(f, errFunc, ...)\ local function wrapper(err)\ if typeFunction(err) == \"string\" and err:match(\"TIMEOUT_FORCED_BY_DUMPER\") then return err end\ if errFunc then return errFunc(err) end\ return err\ end\ local results = {xpcallFunction(f, wrapper, ...)}\ local success = results[1]\ if not success then\ local err = results[2]\ if typeFunction(err) == \"string\" and err:match(\"TIMEOUT_FORCED_BY_DUMPER\") then errorFunction(err) end\ end\ return table.unpack(results)\ end\ _G.error = errorFunction\ if _G.originalError == nil then _G.originalError = errorFunction end\ _G.assert = assert\ _G.select = select\ _G.type = typeFunction\ _G.rawget = rawget\ _G.rawset = rawset\ _G.rawequal = rawEqualFunction\ _G.rawlen = rawlen or function(t) return #t end\ _G.unpack = table.unpack or unpack\ _G.pack = table.pack or function(...) return {n = select(\"#\", ...), ...} end\ _G.task = task\ _G.wait = wait\ _G.Wait = wait\ _G.delay = delay\ _G.Delay = delay\ _G.spawn = spawn\ _G.Spawn = spawn\ _G.tick = tick\ _G.time = time\ _G.elapsedTime = elapsedTime\ _G.game = game\ _G.Game = game\ _G.workspace = workspace\ _G.Workspace = workspace\ _G.script = script\ _G.Enum = Enum\ _G.Instance = Instance\ _G.Random = Random\ _G.Vector3 = Vector3\ _G.Vector2 = Vector2\ _G.CFrame = CFrame\ _G.Color3 = Color3\ _G.BrickColor = BrickColor\ _G.UDim = UDim\ _G.UDim2 = UDim2\ _G.TweenInfo = TweenInfo\ _G.Rect = Rect\ _G.Region3 = Region3\ _G.Region3int16 = Region3int16\ _G.Ray = Ray\ _G.NumberRange = NumberRange\ _G.NumberSequence = NumberSequence\ _G.NumberSequenceKeypoint = NumberSequenceKeypoint\ _G.ColorSequence = ColorSequence\ _G.ColorSequenceKeypoint = ColorSequenceKeypoint\ _G.PhysicalProperties = PhysicalProperties\ _G.Font = Font\ _G.RaycastParams = RaycastParams\ _G.OverlapParams = OverlapParams\ _G.PathWaypoint = PathWaypoint\ _G.Axes = Axes\ _G.Faces = Faces\ _G.Vector3int16 = Vector3int16\ _G.Vector2int16 = Vector2int16\ _G.CatalogSearchParams = CatalogSearchParams\ _G.DateTime = DateTime\ settings = function()\ local enumKey = \"Enum.QualityLevel.Automatic\"\ if not _at.enum[enumKey] then\ local p = createProxyObject(enumKey, false)\ dumperState.registry[p] = enumKey\ _at.enum[enumKey] = p\ end\ local qualityProxy = _at.enum[enumKey]\ return {\ Rendering = {QualityLevel = qualityProxy, FrameRateManager = 0, EagerBulkExecution = false},\ Studio = {},\ Network = {IncomingReplicationLag = 0},\ Physics = {PhysicsEnvironmentalThrottle = createProxyObject(\"Enum.EnviromentalPhysicsThrottle.DefaultAuto\", false)},\ }\ end\ _G.settings = settings\ getmetatable = function(x)\ if _at.userdata[x] then return getMetatableFunction(x) end\ if isProxy(x) then return \"The metatable is locked\" end\ return getMetatableFunction(x)\ end\ _G.getmetatable = getmetatable\ type = function(x)\ if _at.threadLike[x] then return \"thread\" end\ if _at.userdata[x] then return \"userdata\" end\ if getProxyValue(x) ~= 0 then return \"number\" end\ if isProxy(x) then return \"userdata\" end\ return typeFunction(x)\ end\ _G.type = type\ buffer = (function()\ local function _data(b) return _at.buffers[b] or \"\" end\ local function _set(b, s) _at.buffers[b] = s end\ local function _writeBytes(b, offset, bytes)\ local data = _data(b)\ offset = (offset or 0) + 1\ local before = data:sub(1, offset - 1)\ local after = data:sub(offset + #bytes)\ _set(b, before .. bytes .. after)\ end\ local function _readBytes(b, offset, n)\ local data = _data(b)\ offset = (offset or 0) + 1\ return data:sub(offset, offset + n - 1)\ end\ local function _u(n) n = math.floor(n or 0); if n < 0 then n = 0 end; return n end\ local function _packU(value, byteCount)\ value = _u(value)\ local out = {}\ for i = 1, byteCount do\ out[i] = string.char(value % 256)\ value = math.floor(value / 256)\ end\ return table.concat(out)\ end\ local function _unpackU(bytes)\ local n, mult = 0, 1\ for i = 1, #bytes do\ n = n + bytes:byte(i) * mult\ mult = mult * 256\ end\ return n\ end\ local function _signed(n, bits)\ local lim = 2 ^ (bits - 1)\ if n >= lim then return n - 2 * lim end\ return n\ end\ return {\ create = function(size)\ local b = {}\ _at.buffers[b] = string.rep(\"\\0\", _u(size))\ return b\ end,\ fromstring = function(s)\ local b = {}\ _at.buffers[b] = toStringFunction(s or \"\")\ return b\ end,\ tostring = function(b) return _data(b) end,\ len = function(b) return #_data(b) end,\ copy = function(target, targetOffset, source, sourceOffset, count)\ local src = _data(source)\ sourceOffset = sourceOffset or 0\ count = count or (#src - sourceOffset)\ _writeBytes(target, targetOffset, src:sub(sourceOffset + 1, sourceOffset + count))\ end,\ fill = function(b, offset, value, count)\ count = count or (#_data(b) - offset)\ _writeBytes(b, offset, string.rep(string.char(_u(value) % 256), count))\ end,\ writestring = function(b, offset, s, count)\ s = toStringFunction(s or \"\")\ if count then s = s:sub(1, count) end\ _writeBytes(b, offset, s)\ end,\ readstring = function(b, offset, len)\ return _readBytes(b, offset, len or (#_data(b) - (offset or 0)))\ end,\ writeu8 = function(b, offset, value) _writeBytes(b, offset, _packU(value, 1)) end,\ writeu16 = function(b, offset, value) _writeBytes(b, offset, _packU(value, 2)) end,\ writeu32 = function(b, offset, value) _writeBytes(b, offset, _packU(value, 4)) end,\ writei8 = function(b, offset, value) _writeBytes(b, offset, _packU(value % 256, 1)) end,\ writei16 = function(b, offset, value) _writeBytes(b, offset, _packU(value % 65536, 2)) end,\ writei32 = function(b, offset, value) _writeBytes(b, offset, _packU(value % 4294967296, 4)) end,\ writef32 = function(b, offset, value)\ if string.pack then\ _writeBytes(b, offset, string.pack(\" 13 and b < 32) or b == 127) then\ nonPrint = nonPrint + 1\ end\ end\ if nonPrint / sample > 0.05 then return false end\ local kw = 0\ for _, w in ipairsFunction({\"local \", \"function \", \"return \", \" end\\n\", \" end\\r\", \"\\nend\", \"if \", \" then\", \"for \", \"while \", \"do\\n\", \"\\ndo \"}) do\ if s:find(w, 1, true) then kw = kw + 1 end\ end\ return kw >= 3\ end\ \ loadstring = function(code, chunkName)\ if typeFunction(code) ~= \"string\" then return function() return createProxyObject(\"loaded\", false) end end\ local url = dumperState.last_http_url or code\ dumperState.last_http_url = nil\ local libName = nil\ local lowerCode = url:lower()\ local libs = {\ {pattern = \"rayfield\", name = \"Rayfield\"},\ {pattern = \"orion\", name = \"OrionLib\"},\ {pattern = \"kavo\", name = \"Kavo\"},\ {pattern = \"venyx\", name = \"Venyx\"},\ {pattern = \"sirius\", name = \"Sirius\"},\ {pattern = \"linoria\", name = \"Linoria\"},\ {pattern = \"wally\", name = \"Wally\"},\ {pattern = \"dex\", name = \"Dex\"},\ {pattern = \"infinite\", name = \"InfiniteYield\"},\ {pattern = \"hydroxide\", name = \"Hydroxide\"},\ {pattern = \"simplespy\", name = \"SimpleSpy\"},\ {pattern = \"remotespy\", name = \"RemoteSpy\"},\ {pattern = \"fluent\", name = \"FluentUI\"},\ {pattern = \"windui\", name = \"WindUI\"},\ {pattern = \"sentinel\", name = \"Sentinel\"},\ {pattern = \"aimbot\", name = \"Aimbot\"},\ {pattern = \"esp\", name = \"ESP\"},\ {pattern = \"synapse\", name = \"SynapseLib\"},\ {pattern = \"darkdex\", name = \"DarkDex\"},\ {pattern = \"exploitgui\", name = \"ExploitGUI\"},\ {pattern = \"loadui\", name = \"LoadedUI\"},\ {pattern = \"boatbomb\", name = \"BoatBomb\"},\ {pattern = \"scriptblox\", name = \"ScriptBlox\"},\ {pattern = \"antilag\", name = \"AntiLag\"},\ {pattern = \"fpsboost\", name = \"FPSBoost\"},\ {pattern = \"noclip\", name = \"NoClip\"},\ {pattern = \"autofarm\", name = \"AutoFarm\"},\ {pattern = \"dashboard\", name = \"Dashboard\"},\ {pattern = \"admin\", name = \"AdminLib\"},\ {pattern = \"cmdr\", name = \"Cmdr\"},\ {pattern = \"topbar\", name = \"TopbarPlus\"},\ {pattern = \"topbarplus\", name = \"TopbarPlus\"},\ {pattern = \"reactlua\", name = \"ReactLua\"},\ {pattern = \"roact\", name = \"Roact\"},\ {pattern = \"rodux\", name = \"Rodux\"},\ {pattern = \"roblox%-ts\", name = \"RobloxTS\"},\ {pattern = \"fusion\", name = \"Fusion\"},\ {pattern = \"signal\", name = \"Signal\"},\ {pattern = \"trove\", name = \"Trove\"},\ {pattern = \"maid\", name = \"Maid\"},\ {pattern = \"janitor\", name = \"Janitor\"},\ {pattern = \"promise\", name = \"Promise\"},\ {pattern = \"binder\", name = \"Binder\"},\ {pattern = \"networkclient\", name = \"NetworkClient\"},\ {pattern = \"bridgenet\", name = \"BridgeNet\"},\ {pattern = \"profileservice\", name = \"ProfileService\"},\ {pattern = \"datastore2\", name = \"DataStore2\"},\ {pattern = \"iris\", name = \"Iris\"},\ {pattern = \"oui\", name = \"OUI\"},\ {pattern = \"solar2d\", name = \"Solar2D\"},\ {pattern = \"oxlib\", name = \"OxLib\"},\ }\ for _, lib in ipairsFunction(libs) do if lowerCode:find(lib.pattern) then libName = lib.name; break end end\ if libName then\ local proxy = createProxyObject(libName, false)\ dumperState.registry[proxy] = libName\ dumperState.names_used[libName] = true\ if url:match(\"^https?://\") then emitOutput(string.format('local %s = loadstring(game:HttpGet(\"%s\"))()', libName, url)) end\ return function() return proxy end\ end\ if url:match(\"^https?://\") then\ local hintName = \"Library\"\ local urlTail = url:match(\"([^/]+)%.lua$\") or url:match(\"([^/]+)$\") or \"\"\ local cleanedTail = urlTail:gsub(\"[^%w_]\", \"_\"):gsub(\"^%d+\", \"_\")\ if cleanedTail ~= \"\" and cleanedTail ~= \"_\" and #cleanedTail <= 24 then\ hintName = cleanedTail\ end\ local proxy = createProxyObject(hintName, false)\ dumperState.registry[proxy] = hintName\ dumperState.names_used[hintName] = true\ emitOutput(string.format('local %s = loadstring(game:HttpGet(\"%s\"))()', hintName, url))\ return function() return proxy end\ end\ if code:match(\"local%s+a%s*=%s*if%s+true%s+then\") then return nil, \"attempt to call a nil value\" end\ if #code > 80 and _looksLikeLuaSource(code) then\ local _wadHeader = string.format(\"-- [WAD-Dump] loadstring payload captured (%d bytes)\", #code)\ emitOutput(_wadHeader)\ local _normalized = code:gsub(\"\\r\\n\", \"\\n\"):gsub(\"\\r\", \"\\n\")\ local _lineCount = 0\ for _line in (_normalized .. \"\\n\"):gmatch(\"([^\\n]*)\\n\") do\ emitOutput(_line)\ _lineCount = _lineCount + 1\ if _lineCount > 5000 then\ emitOutput(\"-- [WAD-Dump] payload truncated (>5000 lines)\")\ break\ end\ end\ emitOutput(\"-- [WAD-Dump] end of payload\")\ end\ if typeFunction(code) == \"string\" then code = processString(code) end\ local func, err = loadFunction(code)\ if func then return func end\ local proxy = createProxyObject(\"LoadedChunk\", false)\ return function() return proxy end\ end\ load = loadstring\ _G.loadstring = loadstring\ _G.load = loadstring\ require = function(module)\ local modName = dumperState.registry[module] or serializeValue(module)\ local proxy = createProxyObject(\"RequiredModule\", false)\ local varName = registerVariable(proxy, \"module\")\ emitOutput(string.format(\"local %s = require(%s)\", varName, modName))\ return proxy\ end\ _G.require = require\ print = function(...)\ local n = select(\"#\", ...)\ local items = {}\ for i = 1, n do\ local v = select(i, ...)\ if v == nil then\ items[i] = \"nil\"\ else\ items[i] = serializeValue(v)\ end\ end\ emitOutput(string.format(\"print(%s)\", table.concat(items, \", \")))\ end\ _G.print = print\ warn = function(...)\ local n = select(\"#\", ...)\ local items = {}\ for i = 1, n do\ local v = select(i, ...)\ if v == nil then\ items[i] = \"nil\"\ else\ items[i] = serializeValue(v)\ end\ end\ emitOutput(string.format(\"warn(%s)\", table.concat(items, \", \")))\ end\ _G.warn = warn\ shared = createProxyObject(\"shared\", true)\ _G.shared = shared\ local globalBase = _G\ local globalMeta = setmetatable({}, {\ __index = function(tbl, key)\ if configuration.VERBOSE then printFunction(\"[VERBOSE] Accessing field: \" .. toStringFunction(key)) end\ local val = rawget(globalBase, key)\ if val == nil then val = rawget(_G, key) end\ if configuration.VERBOSE then\ if val ~= nil then\ if typeFunction(val) == \"table\" then printFunction(\"[VERBOSE] Found global table: \" .. toStringFunction(key))\ elseif typeFunction(val) == \"function\" then printFunction(\"[VERBOSE] Found global function: \" .. toStringFunction(key))\ else printFunction(\"[VERBOSE] Found global value: \" .. toStringFunction(key) .. \" = \" .. toStringFunction(val)) end\ else\ printFunction(\"[VERBOSE] Missing field, providing dummy function: \" .. toStringFunction(key))\ val = function() if configuration.VERBOSE then printFunction(\"[Missing Function] Called: \" .. toStringFunction(key) .. \" with 0 arguments\") end return nil end\ end\ end\ return val\ end,\ __newindex = function(tbl, key, val) rawset(globalBase, key, val) end\ })\ _G._G = globalMeta\ function proxyTable.reset()\ dumperState = {output = {}, indent = 0, registry = {}, reverse_registry = {}, names_used = {}, proxy_name = {}, parent_map = {}, property_store = {}, call_graph = {}, variable_types = {}, string_refs = {}, proxy_id = 0, callback_depth = 0, pending_iterator = false, last_http_url = nil, last_emitted_line = nil, repetition_count = 0, current_size = 0, limit_reached = false, ls_counter = 0, captured_constants = {}}\ _at.mem = {}\ _at.tags = {}\ _at.sigs = {}\ _at.acts = {}\ _at.json = {}\ _at.enum = {}\ _at.svcCache = {}\ _at.typeOverride = {}\ _at.connState = {}\ _at.userdata = {}\ _at.localPlayer = nil\ _at.weldRegistry = {}\ _at.angularVel = {}\ _at.linearVel = {}\ _at.threadLike = {}\ _at.buffers = {}\ _at.vectors = {}\ _at.instTags = {}\ _at.attrs = {}\ _at.children = {}\ _at.services = {}\ _at.folders = {}\ _at.files = {}\ _at.refBase = {}\ _at.metaHooks = {}\ _at.currentNamecallMethod = nil\ _at.inMetaHook = false\ setmetatable(_at.userdata, {__mode = \"k\"})\ setmetatable(_at.instTags, {__mode = \"k\"})\ setmetatable(_at.attrs, {__mode = \"k\"})\ setmetatable(_at.children, {__mode = \"k\"})\ _at.debugIds = {}\ setmetatable(_at.debugIds, {__mode = \"k\"})\ _at.debugIdCtr = 0\ uiCounters = {}\ game = createProxyObject(\"game\", true)\ workspace = createProxyObject(\"workspace\", true)\ script = createProxyObject(\"script\", true)\ Enum = createProxyObject(\"Enum\", true)\ shared = createProxyObject(\"shared\", true)\ dumperState.property_store[game] = {PlaceId = numericArg, GameId = numericArg, placeId = numericArg, gameId = numericArg}\ _G.game = game; _G.Game = game; _G.workspace = workspace; _G.Workspace = workspace; _G.script = script; _G.Enum = Enum; _G.shared = shared\ local meta = debugLibrary.getmetatable(Enum)\ meta.__index = function(_, key)\ if key == proxyList or key == \"__proxy_id\" then return rawget(_, key) end\ local enumName = \"Enum.\" .. formatValue(key)\ if not _at.enum[enumName] then\ local enumProxy = createProxyObject(enumName, false)\ dumperState.registry[enumProxy] = enumName\ _at.enum[enumName] = enumProxy\ end\ return _at.enum[enumName]\ end\ seedCoreRobloxInstances()\ _G.dumperState = dumperState\ if type(_G._bypassOnReset) == \"function\" then\ local prevOutput = dumperState.output\ local prevOutputCount = #prevOutput\ local prevIndent = dumperState.indent\ local prevLast = dumperState.last_emitted_line\ local prevRep = dumperState.repetition_count\ local prevSize = dumperState.current_size\ local prevLimit = dumperState.limit_reached\ pcall(_G._bypassOnReset)\ for i = #prevOutput, prevOutputCount + 1, -1 do\ prevOutput[i] = nil\ end\ dumperState.output = prevOutput\ dumperState.indent = prevIndent\ dumperState.last_emitted_line = prevLast\ dumperState.repetition_count = prevRep\ dumperState.current_size = prevSize\ dumperState.limit_reached = prevLimit\ end\ end\ function proxyTable.get_output() return getFullOutput() end\ function proxyTable.save(file) return saveToFile(file) end\ function proxyTable.get_call_graph() return dumperState.call_graph end\ function proxyTable.get_string_refs() return dumperState.string_refs end\ function proxyTable.get_stats() return {total_lines = #dumperState.output, remote_calls = #dumperState.call_graph, suspicious_strings = #dumperState.string_refs, proxies_created = dumperState.proxy_id, bytes_written = dumperState.current_size or 0, limit_reached = dumperState.limit_reached or false} end\ local dumper = {\ callId = \"CODER_\",\ binaryOperatorNames = {\ [\"and\"] = \"CHECKAND\",\ [\"or\"] = \"CHECKOR\",\ [\">\"] = \"COMPG\",\ [\"<\"] = \"COMPL\",\ [\">=\"] = \"COMPGE\",\ [\"<=\"] = \"COMPLE\",\ [\"==\"] = \"CHECKEQ\",\ [\"~=\"] = \"CHECKNEQ\",\ [\"..\"] = \"CONCAT\",\ },\ unaryOperatorNames = {\ [\"#\"] = \"CHECKLEN\",\ [\"-\"] = \"CHECKUNM\",\ [\"not\"] = \"CHECKNOT\",\ },\ }\ function dumper:hook(code) return self.callId .. code end\ function dumper:process_expr(expr)\ if not expr then return \"nil\" end\ if typeFunction(expr) == \"string\" then return expr end\ local tag = expr.tag or expr.kind\ if tag == \"number\" or tag == \"string\" then\ local val = tag == \"string\" and string.format(\"%q\", expr.text) or (expr.value or expr.text)\ if configuration.CONSTANT_COLLECTION then return string.format(\"%sGET(%s)\", self.callId, val) end\ return val\ end\ if tag == \"local\" or tag == \"global\" then return (expr.name or expr.token).text\ elseif tag == \"boolean\" or tag == \"bool\" then return toStringFunction(expr.value)\ elseif tag == \"binary\" then\ local lhs = self:process_expr(expr.lhsoperand)\ local rhs = self:process_expr(expr.rhsoperand)\ local op = expr.operator.text\ local opName = self.binaryOperatorNames[op]\ if opName then return string.format(\"%s%s(%s, %s)\", self.callId, opName, lhs, rhs) end\ return string.format(\"(%s %s %s)\", lhs, op, rhs)\ elseif tag == \"unary\" then\ local op = expr.operator and expr.operator.text or \"\"\ local operand = self:process_expr(expr.operand)\ local opName = self.unaryOperatorNames[op]\ if opName then return string.format(\"%s%s(%s)\", self.callId, opName, operand) end\ return string.format(\"%s%s\", op == \"not\" and \"not \" or op, operand)\ elseif tag == \"call\" then\ local func = self:process_expr(expr.func)\ local args = {}\ for i, node in ipairsFunction(expr.arguments) do args[i] = self:process_expr(node.node or node) end\ if expr.self then\ return string.format(\"%sNAMECALL(%s, %s)\", self.callId, func, table.concat(args, \", \"))\ end\ return string.format(\"%sCALL(%s, %s)\", self.callId, func, table.concat(args, \", \"))\ elseif tag == \"indexname\" or tag == \"index\" then\ local exprStr = self:process_expr(expr.expression)\ local keyStr = tag == \"indexname\" and string.format(\"%q\", expr.index.text) or self:process_expr(expr.index)\ return string.format(\"%sCHECKINDEX(%s, %s)\", self.callId, exprStr, keyStr)\ elseif tag == \"table\" then\ local entries = {}\ for _, entry in ipairsFunction(expr.entries or {}) do\ local key = entry.key\ local val = self:process_expr(entry.value)\ if key then\ entries[#entries+1] = string.format(\"[%s]=%s\", self:process_expr(key), val)\ else\ entries[#entries+1] = val\ end\ end\ return string.format(\"%sCONSTRUCT({%s})\", self.callId, table.concat(entries, \",\"))\ elseif tag == \"group\" then\ return string.format(\"(%s)\", self:process_expr(expr.expression))\ end\ return \"nil\"\ end\ function dumper:process_statement(stmt)\ if not stmt then return \"\" end\ local tag = stmt.tag\ if tag == \"local\" or tag == \"assign\" then\ local vars, vals = {}, {}\ for _, node in ipairsFunction(stmt.variables or {}) do table.insert(vars, self:process_expr(node.node or node)) end\ for _, node in ipairsFunction(stmt.values or {}) do table.insert(vals, self:process_expr(node.node or node)) end\ return (tag == \"local\" and \"local \" or \"\") .. table.concat(vars, \", \") .. \" = \" .. table.concat(vals, \", \")\ elseif tag == \"block\" then\ local stmts = {}\ for _, s in ipairsFunction(stmt.statements or {}) do table.insert(stmts, self:process_statement(s)) end\ return table.concat(stmts, \"; \")\ end\ return self:process_expr(stmt) or \"\"\ end\ local function _loosePasteCode(code)\ if typeFunction(code) ~= \"string\" then return code end\ if code:sub(1, 3) == \"\\239\\187\\191\" then code = code:sub(4) end\ code = code:gsub(\"\\r\\n\", \"\\n\"):gsub(\"\\r\", \"\\n\")\ code = code:gsub(\"^%s*```[Ll]ua[^\\n]*\\n\", \"\"):gsub(\"^%s*```[^\\n]*\\n\", \"\")\ code = code:gsub(\"\\n```[^\\n]*$\", \"\"):gsub(\"```\", \"\")\ \ code = code:gsub('[\"\\']25ms[\"\\']', '\"__neutralized_25ms__\"')\ code = code:gsub('[\"\\']twentyfivems[\"\\']', '\"__neutralized_25ms__\"')\ code = code:gsub(\"LPH_CRASH%s*%(%s*%)\", \"(function() end)()\")\ code = code:gsub(\"LPH_CRASH%s*%b()\", \"(function() end)()\")\ code = code:gsub('[\"\\'][Mm]oon[Vv]eil[\"\\']', '\"__neutralized_moonveil__\"')\ code = code:gsub('[\"\\'][Pp][Rr][Ii][Ss][Tt][Ii][Nn][Ee][\"\\']', '\"__neutralized_pristine__\"')\ \ if code:find(\"This file was protected with MoonSec V3\", 1, true)\ or code:find(\"MoonSecV3\", 1, true) then\ code = \"-- [FlameDumperV3] MoonSec V3 source detected; applying MoonSec bypass env\\n\" .. code\ if not _G._MOONSEC_V3_DETECTED then\ _G._MOONSEC_V3_DETECTED = true\ _G._MOONSEC_INTERNAL_KEY_LEN = 15\ _G._MOONSEC_EXCLUDE_LENGTHS = {[13]=true, [17]=true, [32]=true}\ end\ end\ \ return code\ end\ local function _loadLooseChunk(code, chunkName)\ if type(code) == \"string\" and type(rawget(_G, \"_VVMER_PATCH\")) == \"function\" then\ local ok, patched = pcallFunction(rawget(_G, \"_VVMER_PATCH\"), code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ if type(code) == \"string\" and type(rawget(_G, \"_VIRTUAL_TIMMY_PATCH\")) == \"function\" then\ local ok, patched = pcallFunction(rawget(_G, \"_VIRTUAL_TIMMY_PATCH\"), code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ if type(code) == \"string\" and type(rawget(_G, \"_IRONBREW2_PATCH\")) == \"function\" then\ local ok, patched = pcallFunction(rawget(_G, \"_IRONBREW2_PATCH\"), code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ if type(code) == \"string\" and type(rawget(_G, \"_PROMETHEUS_PATCH\")) == \"function\" then\ local ok, patched = pcallFunction(rawget(_G, \"_PROMETHEUS_PATCH\"), code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ if type(code) == \"string\" and type(rawget(_G, \"_WEAREDEVS_PATCH\")) == \"function\" then\ local ok, patched = pcallFunction(rawget(_G, \"_WEAREDEVS_PATCH\"), code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ local _extraPasses = rawget(_G, \"_EXTRA_PREPASSES\")\ if type(code) == \"string\" and type(_extraPasses) == \"table\" then\ for _, patchFn in ipairs(_extraPasses) do\ if type(patchFn) == \"function\" then\ local ok, patched = pcallFunction(patchFn, code)\ if ok and type(patched) == \"string\" then code = patched end\ end\ end\ end\ local sanitized = processString(_loosePasteCode(code))\ local lines = {}\ sanitized:gsub(\"([^\\n]*)\\n?\", function(line)\ if line ~= \"\" or #lines == 0 or sanitized:sub(-1) == \"\\n\" then table.insert(lines, line) end\ end)\ local skipped = {}\ for _ = 1, 600 do\ local current = table.concat(lines, \"\\n\")\ local func, err = loadFunction(current, chunkName)\ if func then return func, nil, current, skipped end\ local lineNo = toNumberFunction(toStringFunction(err):match(\"%]:(%d+):\") or toStringFunction(err):match(\":(%d+):\"))\ if not lineNo or not lines[lineNo] or skipped[lineNo] then return nil, err, current, skipped end\ skipped[lineNo] = lines[lineNo]\ lines[lineNo] = \"-- \" .. lines[lineNo]\ end\ return nil, \"too many invalid loose-paste lines\", table.concat(lines, \"\\n\"), skipped\ end\ function proxyTable.dump_file(inputPath, outputPath)\ proxyTable.reset()\ local file = ioLibrary.open(inputPath, \"rb\")\ if not file then\ printFunction(\"error: cannot open input\")\ return false\ end\ local code = file:read(\"*a\")\ file:close()\ printFunction(\"input: normalize\")\ local func, err, sanitized, skipped = _loadLooseChunk(code, \"Obfuscated_Script\")\ do\ local _f = ioLibrary.open(\"[PATH_REDACTED]", \"w\")\ if _f then _f:write(sanitized or \"\"); _f:close() end\ end\ if not func then\ printFunction(\"error: load \" .. toStringFunction(err))\ return false\ end\ if skipped then\ local skippedCount = 0\ for _ in pairsFunction(skipped) do skippedCount = skippedCount + 1 end\ if skippedCount > 0 then printFunction(\"input: skipped-lines=\" .. toStringFunction(skippedCount)) end\ end\ local _SANDBOX_BLOCK = {\ io=true, os=true, debug=true, dofile=true, loadfile=true,\ require=true, package=true, socket=true, ffi=true,\ collectgarbage=true,\ }\ local _rawTb = debugLibrary and debugLibrary.traceback\ local _badTbWords = {\ \"sandbox\",\"hook\",\"intercept\",\"mock\",\"proxy\",\"virtual_env\",\ \"decompil\",\"emulat\",\"simulat\",\"fake_\",\"getupval\",\"hookfunc\",\ \"replaceclos\",\"newcclos\",\"restorefunction\",\"bypass\",\"dumper\",\ }\ local _tbWrapper = function(thread, msg, level)\ local ok, tb\ if _rawTb then\ if typeFunction(thread) == \"thread\" then\ ok, tb = pcallFunction(_rawTb, thread, msg, level)\ else\ ok, tb = pcallFunction(_rawTb, thread, msg)\ end\ end\ if not ok or typeFunction(tb) ~= \"string\" then\ return \"stack tracebac[PATH_REDACTED] in function \"\ end\ local lines = {}\ for line in (tb .. \"\\n\"):gmatch(\"([^\\n]*)\\n\") do\ local lo = line:lower()\ local bad = false\ for _, w in next, _badTbWords do\ if lo:find(w, 1, true) then bad = true; break end\ end\ if not bad then lines[#lines + 1] = line end\ end\ local cleaned = table.concat(lines, \"\\n\")\ cleaned = cleaned:gsub(\"%[([%w%+%/]+)%]\", function(inner)\ if #inner + 2 < 10 then return \"[RobloxGameScript]\" end\ return \"[\" .. inner .. \"]\"\ end)\ if #cleaned < 20 then\ return \"stack tracebac[PATH_REDACTED] in function \"\ end\ return cleaned\ end\ local _SAFE_DEBUG = setmetatable({}, { __index = function(_, k)\ local extras = rawget(_G, \"_bypassSafeDebugExtras\")\ if type(extras) == \"table\" then return extras[k] end\ return nil\ end })\ _SAFE_DEBUG.getinfo = function(func, ...)\ if typeFunction(func) == \"number\" then\ return nil\ end\ if func == print or func == _G.print or func == warn or func == _G.warn\ or func == pcall or func == _G.pcall or func == xpcall or func == _G.xpcall\ or func == errorFunction or func == _G.error or func == tostring or func == _G.tostring\ or func == tonumber or func == _G.tonumber or func == typeFunction or func == _G.type\ or func == _tbWrapper then\ return {source = \"@RobloxGameScript\", what = \"C\", name = \"traceback\", short_src = \"RobloxGameScript\"}\ end\ if getInfo then\ local ok, info = pcallFunction(getInfo, func, ...)\ if ok and info then\ if typeFunction(info.source) == \"string\" and info.source:match(\"%[C%]\") then\ info.source = \"@RobloxGameScript\"\ info.short_src = \"RobloxGameScript\"\ end\ return info\ end\ end\ return {source = \"@RobloxGameScript\", what = \"Lua\", short_src = \"RobloxGameScript\"}\ end\ _SAFE_DEBUG.traceback = _tbWrapper\ _SAFE_DEBUG.getupvalue = function(fn, i)\ local extras = rawget(_G, \"_bypassSafeDebugExtras\")\ if type(extras) == \"table\" and type(extras.getupvalue) == \"function\" then\ return extras.getupvalue(fn, i)\ end\ local _gu = debugLibrary and rawget(debugLibrary, \"getupvalue\")\ if _gu then local n, v = _gu(fn, i); return n, v end\ return nil\ end\ _SAFE_DEBUG.getupvalues = function(fn)\ local extras = rawget(_G, \"_bypassSafeDebugExtras\")\ if type(extras) == \"table\" and type(extras.getupvalues) == \"function\" then\ return extras.getupvalues(fn)\ end\ local _gu = debugLibrary and rawget(debugLibrary, \"getupvalue\")\ if not _gu then return {} end\ local uvs = {}; local idx = 1\ while idx <= 250 do\ local n, v = _gu(fn, idx)\ if not n then break end\ uvs[idx] = v\ if type(n) == \"string\" and n ~= \"\" and n ~= \"_ENV\" then uvs[n] = v end\ idx = idx + 1\ end\ return uvs\ end\ _SAFE_DEBUG.setupvalue = function(fn, i, v)\ local extras = rawget(_G, \"_bypassSafeDebugExtras\")\ if type(extras) == \"table\" and type(extras.setupvalue) == \"function\" then\ return extras.setupvalue(fn, i, v)\ end\ local _su = debugLibrary and rawget(debugLibrary, \"setupvalue\")\ if _su then return _su(fn, i, v) end\ end\ local _SAFE_OS = {\ clock = function() local _bc=rawget(_G,\"_bypassClock\"); return _bc and _bc() or osLibrary.clock() end,\ time = function() return nil end,\ date = osLibrary.date,\ }\ local env = setmetatable({\ _VERSION = \"Luau\",\ LuraphContinue = function() end,\ script = script, game = game, workspace = workspace,\ io = nil,\ os = _SAFE_OS,\ debug = _SAFE_DEBUG,\ dofile = nil,\ loadfile = nil,\ require = nil,\ package = nil,\ socket = nil,\ ffi = nil,\ collectgarbage = nil,\ newproxy = newproxy,\ CODER_CHECKINDEX = function(tbl, key)\ local val = tbl[key]\ if typeFunction(val) == \"table\" and not dumperState.registry[val] then\ dumperState.ls_counter = dumperState.ls_counter + 1\ dumperState.registry[val] = \"ls\" .. dumperState.ls_counter\ end\ return val\ end,\ CODER_GET = function(v) return v end,\ LS_CALL = function(f, ...)\ if typeFunction(f) ~= \"function\" then return nil end\ return f(...)\ end,\ LS_NAMECALL = function(t, method, ...)\ if typeFunction(t) ~= \"table\" then return nil end\ if typeFunction(t[method]) ~= \"function\" then return nil end\ return t[method](t, ...)\ end,\ CODER_CALL = function(f, ...) return f(...) end,\ CODER_NAMECALL = function(t, method, ...) return t[method](t, ...) end,\ pcall = function(f, ...)\ local override = rawget(_G, \"_bypassPcall\")\ if typeFunction(override) == \"function\" then\ local res = {override(pcallFunction, f, ...)}\ if not res[1] and toStringFunction(res[2]):match(\"TIMEOUT\") then errorFunction(res[2], 0) end\ return unpack(res)\ end\ local res = {pcallFunction(f, ...)}\ if not res[1] and toStringFunction(res[2]):match(\"TIMEOUT\") then errorFunction(res[2], 0) end\ return unpack(res)\ end\ }, {\ __index = function(_, k)\ if _SANDBOX_BLOCK[k] then return nil end\ return _G[k]\ end,\ __newindex = _G\ })\ do\ local _PROTECTED = {\ pcall=true, xpcall=true, error=true, warn=true,\ print=true, tostring=true, tonumber=true, type=true,\ select=true, ipairs=true, pairs=true, next=true,\ rawget=true, rawset=true, rawequal=true, rawlen=true,\ setmetatable=true, getmetatable=true, unpack=true,\ require=false,\ }\ local _snapshot = {}\ for k in pairs(_PROTECTED) do\ if _PROTECTED[k] and rawget(env, k) ~= nil then\ _snapshot[k] = rawget(env, k)\ rawset(env, k, nil)\ end\ end\ for _, k in ipairs({\ \"tostring\",\"tonumber\",\"type\",\"select\",\"ipairs\",\"pairs\",\ \"next\",\"rawget\",\"rawset\",\"rawequal\",\"rawlen\",\ \"setmetatable\",\"getmetatable\",\"unpack\",\"error\",\"warn\",\"print\"\ }) do\ if _snapshot[k] == nil and _G[k] ~= nil then\ _snapshot[k] = _G[k]\ end\ end\ local mt = getmetatable(env)\ local _origIndex = mt.__index\ local _origNewindex = mt.__newindex\ mt.__index = function(t, k)\ if _PROTECTED[k] and _snapshot[k] ~= nil then\ return _snapshot[k]\ end\ if typeFunction(_origIndex) == \"function\" then\ return _origIndex(t, k)\ end\ return _origIndex and _origIndex[k] or nil\ end\ mt.__newindex = function(t, k, v)\ if _PROTECTED[k] then\ return\ end\ if typeFunction(_origNewindex) == \"function\" then\ _origNewindex(t, k, v)\ elseif _origNewindex then\ _origNewindex[k] = v\ else\ rawset(t, k, v)\ end\ end\ end\ do\ local _applied = false\ if debugLibrary and debugLibrary.getupvalue and debugLibrary.setupvalue then\ for _i = 1, 256 do\ local _ok, _n = pcall(debugLibrary.getupvalue, func, _i)\ if not _ok or not _n then break end\ if _n == \"_ENV\" then\ pcall(debugLibrary.setupvalue, func, _i, env)\ _applied = true\ break\ end\ end\ end\ if not _applied and type(setfenv) == \"function\" then\ local _ok2, _si = pcall(function()\ return debugLibrary and debugLibrary.getinfo and debugLibrary.getinfo(setfenv, \"S\")\ end)\ if _ok2 and _si and _si.what == \"C\" then setfenv(func, env) end\ end\ end\ do\ local function _addLib(libName)\ local lib = rawget(_G, libName)\ if typeFunction(lib) ~= \"table\" then return end\ for _, fn in pairs(lib) do\ if typeFunction(fn) == \"function\" then _CFunctionSet[fn] = true end\ end\ end\ for _, n in ipairs({\"string\",\"table\",\"math\",\"os\",\"io\",\"coroutine\",\"bit32\",\"utf8\"}) do\ _addLib(n)\ end\ for _, fn in ipairs({rawget(_G,\"print\"), rawget(_G,\"warn\"),\ error, assert, pcallFunction, xpcallFunction,\ toStringFunction, toNumberFunction, typeFunction, select,\ ipairs, pairs, next, rawget, rawset, rawequal,\ setmetatable, getMetatableFunction, require,\ loadFunction, loadStringFunction, getfenv, setfenv,\ collectgarbage, unpack}) do\ if typeFunction(fn) == \"function\" then _CFunctionSet[fn] = true end\ end\ if typeFunction(env) == \"table\" then\ for _, k in ipairs({\"print\",\"warn\",\"error\",\"assert\",\"pcall\",\"xpcall\",\ \"tostring\",\"tonumber\",\"type\",\"select\",\"ipairs\",\"pairs\",\"next\",\ \"rawget\",\"rawset\",\"rawequal\",\"setmetatable\",\"getmetatable\",\ \"require\",\"load\",\"loadstring\",\"getfenv\",\"setfenv\",\ \"collectgarbage\",\"unpack\",\"tick\",\"wait\",\"spawn\",\"delay\",\ \"typeof\",\"newproxy\"}) do\ local v = env[k]\ if typeFunction(v) == \"function\" then _CFunctionSet[v] = true end\ end\ end\ end\ printFunction(\"vm: running\")\ local startClock = osLibrary.clock()\ pcall(setHook, function()\ if osLibrary.clock() - startClock > configuration.TIMEOUT_SECONDS then\ errorFunction(\"TIMEOUT\", 0)\ end\ end, \"\", 1000)\ local success, runErr = xpcallFunction(function() func() end, function(e) return toStringFunction(e) end)\ pcall(setHook)\ if not success and not toStringFunction(runErr):match(\"TIMEOUT\") then\ local _msg = toStringFunction(runErr)\ emitComment(\"Runtime: \" .. _msg)\ if ioLibrary and ioLibrary.stderr then\ ioLibrary.stderr:write(\"ERROR: \" .. _msg .. \"\\n\")\ end\ end\ local elapsed = osLibrary.clock() - startClock\ local saved = proxyTable.save(outputPath or configuration.OUTPUT_FILE)\ if saved then\ local stats = proxyTable.get_stats()\ local kbWritten = string.format(\"%.1f\", (stats.bytes_written or 0) / 1024)\ printFunction(string.format(\"done: lines=%d remotes=%d strings=%d proxies=%d bytes=%skb elapsed=%.2fs\",\ stats.total_lines, stats.remote_calls, stats.suspicious_strings,\ stats.proxies_created or 0, kbWritten, elapsed))\ else\ printFunction(\"error: write failed\")\ end\ return saved\ end\ function proxyTable.dump_string(code, outputPath)\ proxyTable.reset()\ if code then code = processString(code) end\ local func, err = loadFunction(code)\ if not func then\ emitComment(\"Load Error: \" .. (err or \"unknown\"))\ if outputPath then proxyTable.save(outputPath) end\ return false, err\ end\ local _DS_BLOCK = {\ io=true, os=true, dofile=true, loadfile=true,\ require=true, package=true, socket=true, ffi=true,\ collectgarbage=true,\ }\ local _DS_OS = { clock=function() local _bc=rawget(_G,\"_bypassClock\"); return _bc and _bc() or osLibrary.clock() end, time=osLibrary.time, date=osLibrary.date }\ local _dsDebugProxy = setmetatable({}, {__index = function(_, k)\ if k == \"getupvalue\" then\ return function(fn, i)\ local _gu = debugLibrary and rawget(debugLibrary, \"getupvalue\")\ if _gu then local n, v = _gu(fn, i); return n, v end\ return nil\ end\ end\ if k == \"getupvalues\" then\ return function(fn)\ local _gu = debugLibrary and rawget(debugLibrary, \"getupvalue\")\ if not _gu then return {} end\ local uvs = {}; local idx = 1\ while idx <= 250 do\ local n, v = _gu(fn, idx)\ if not n then break end\ uvs[idx] = v\ if type(n) == \"string\" and n ~= \"\" and n ~= \"_ENV\" then uvs[n] = v end\ idx = idx + 1\ end\ return uvs\ end\ end\ if k == \"setupvalue\" then\ return function(fn, i, v)\ local _su = debugLibrary and rawget(debugLibrary, \"setupvalue\")\ if _su then return _su(fn, i, v) end\ end\ end\ local real = rawget(_G, \"debug\")\ return real and real[k]\ end})\ local _dsStrProxy = setmetatable({}, {__index = function(_, k)\ if k == \"dump\" then\ return function(fn, ...) error(\"attempt to dump given function\", 2) end\ end\ return string[k]\ end})\ local dsEnv = setmetatable({\ _VERSION=\"Luau\",\ io=nil, os=_DS_OS, debug=_dsDebugProxy, string=_dsStrProxy, dofile=nil, loadfile=nil,\ require=nil, package=nil, socket=nil, ffi=nil,\ collectgarbage=nil, newproxy=newproxy,\ pcall = function(f, ...)\ local override = rawget(_G, \"_bypassPcall\")\ local res\ if typeFunction(override) == \"function\" then\ res = {override(pcallFunction, f, ...)}\ else\ res = {pcallFunction(f, ...)}\ end\ if rawget(_G, \"_DEBUG_TRAPS\") then\ local _err = (_G._bypassSavedIo and _G._bypassSavedIo.stderr) or ioLibrary.stderr\ local n = (rawget(_G, \"_TRAP_COUNT\") or 0) + 1\ _G._TRAP_COUNT = n\ local info = \"?\"\ if typeFunction(f) == \"function\" and debugLibrary and debugLibrary.getinfo then\ local ok, di = pcallFunction(debugLibrary.getinfo, f, \"S\")\ if ok and di then info = (di.source or \"?\") .. \":L\" .. (di.linedefined or -1) end\ end\ local rsum = {}\ for i = 1, math.min(#res, 4) do rsum[i] = toStringFunction(res[i]) end\ if _err then\ _err:write(string.format(\"[trap %3d] f=%s -> %s\\n\", n, info, table.concat(rsum, \" | \")))\ _err:flush()\ end\ end\ if not res[1] and toStringFunction(res[2]):match(\"TIMEOUT\") then errorFunction(res[2], 0) end\ return unpack(res)\ end,\ }, {\ __index = function(_, k)\ if _DS_BLOCK[k] then return nil end\ return _G[k]\ end,\ __newindex = _G,\ })\ do\ local _applied = false\ if debugLibrary and debugLibrary.getupvalue and debugLibrary.setupvalue then\ for _i = 1, 256 do\ local _ok, _n = pcall(debugLibrary.getupvalue, func, _i)\ if not _ok or not _n then break end\ if _n == \"_ENV\" then\ pcall(debugLibrary.setupvalue, func, _i, dsEnv)\ _applied = true\ break\ end\ end\ end\ if not _applied and type(setfenv) == \"function\" then\ local _ok2, _si = pcall(function()\ return debugLibrary and debugLibrary.getinfo and debugLibrary.getinfo(setfenv, \"S\")\ end)\ if _ok2 and _si and _si.what == \"C\" then setfenv(func, dsEnv) end\ end\ end\ do\ local _DS_PROTECTED = {\ pcall=true, xpcall=true, error=true, warn=true,\ print=true, tostring=true, tonumber=true, type=true,\ select=true, ipairs=true, pairs=true, next=true,\ rawget=true, rawset=true, rawequal=true, rawlen=true,\ setmetatable=true, getmetatable=true, unpack=true,\ }\ local _snap = {}\ for k in pairs(_DS_PROTECTED) do\ local v = rawget(dsEnv, k)\ if v == nil then v = rawget(_G, k) end\ if v ~= nil then _snap[k] = v end\ rawset(dsEnv, k, nil)\ end\ local _dsMt = getmetatable(dsEnv)\ local _origIdx = _dsMt.__index\ local _origNIdx = _dsMt.__newindex\ _dsMt.__index = function(t, k)\ if _DS_PROTECTED[k] and _snap[k] ~= nil then return _snap[k] end\ if typeFunction(_origIdx) == \"function\" then return _origIdx(t, k) end\ return _origIdx and _origIdx[k] or nil\ end\ _dsMt.__newindex = function(t, k, v)\ if _DS_PROTECTED[k] then return end\ if typeFunction(_origNIdx) == \"function\" then _origNIdx(t, k, v)\ elseif _origNIdx then _origNIdx[k] = v\ else rawset(t, k, v) end\ end\ end\ local startClock = osLibrary.clock()\ setHook(function()\ if osLibrary.clock() - startClock > configuration.TIMEOUT_SECONDS then\ errorFunction(\"TIMEOUT\", 0)\ end\ end, \"\", 1000)\ xpcallFunction(function() func() end, function(e)\ emitComment(\"Runtime: \" .. toStringFunction(e))\ end)\ setHook()\ if outputPath then return proxyTable.save(outputPath) end\ return true, getFullOutput()\ end\ do\ _G.dumperState = dumperState\ local _savedDofile = _G._bypassSavedDofile or dofile\ _G.io = _G._bypassSavedIo or _G.io\ local bypassPath = (arg and arg[0] and arg[0]:match(\"^(.+[\\\\/])\")) or \"\"\ local ok, err = pcall(_savedDofile, bypassPath .. \"[internal]\")\ if not ok then\ local ok2, err2 = pcall(_savedDofile, \"[internal]\")\ if not ok2 and (__BYPASS_VERBOSE == \"1\") then\ io.stderr:write(\"[dumper] [internal] not loaded: \" .. tostring(err) ..\ \" / \" .. tostring(err2) .. \"\\n\")\ end\ end\ _G.io = nil\ end\ \ function proxyTable.extract_consts(inputPath, outputPath)\ local _open = (_G._bypassSavedIo and _G._bypassSavedIo.open) or ioLibrary.open\ local _stderr = (_G._bypassSavedIo and _G._bypassSavedIo.stderr) or ioLibrary.stderr\ local _load = loadFunction or load\ \ local f, ferr = _open(inputPath, \"rb\")\ if not f then error(\"extract_consts: cannot open \" .. tostring(inputPath) .. \": \" .. tostring(ferr), 0) end\ local src = f:read(\"*a\"); f:close()\ \ local _PATCH_PATTERNS = {\ { pat = \"local%s+M=_ENV%s+or%s+getfenv%(0%)as%(Z,M,{}%)(%(%))\",\ rep = \" _G.__CAPTURED_PROTO = Z return Z \" },\ { pat = \"as%(Z,M,{}%)%(%)\",\ rep = \" _G.__CAPTURED_PROTO = Z return Z \" },\ { pat = \"as%(Z,[^,]+,{}%)%(%)\",\ rep = \" _G.__CAPTURED_PROTO = Z return Z \" },\ { pat = \"Z%(_ENV%s+or%s+getfenv%(0%),%s*{}%)(%(%))\",\ rep = \" _G.__CAPTURED_PROTO = Z return Z \" },\ { pat = \"%(function%(Z,M%)(.-)end%)%(proto,\",\ rep = \" _G.__CAPTURED_PROTO = proto return proto --[[ patched (\" },\ }\ local patched, n = src, 0\ for _, entry in ipairs(_PATCH_PATTERNS) do\ local p, c = src:gsub(entry.pat, entry.rep)\ if c > 0 then\ patched, n = p, c\ break\ end\ end\ if n == 0 then\ error(\"extract_consts: patch site not found in \" .. tostring(inputPath) ..\ \" – none of the \" .. #_PATCH_PATTERNS .. \" patterns matched\", 0)\ end\ if n > 1 then\ _stderr:write(\"[dumper] extract_consts: warning: \" .. n .. \" patch sites replaced (expected 1)\\n\")\ end\ \ _G.__CAPTURED_PROTO = nil\ local chunk, lerr = _load(patched, \"lumora_patched\", \"t\")\ if not chunk then error(\"extract_consts: load failed: \" .. tostring(lerr), 0) end\ local ok, proto = pcallFunction(chunk)\ if not ok then error(\"extract_consts: loader runtime failed: \" .. tostring(proto), 0) end\ proto = _G.__CAPTURED_PROTO or proto\ if type(proto) ~= \"table\" then\ error(\"extract_consts: captured proto is not a table (got \" .. type(proto) .. \")\", 0)\ end\ \ local _xorFn\ if type(bit32) == \"table\" and type(bit32.bxor) == \"function\" then\ _xorFn = function(a, b) return bit32.bxor(a % 256, b % 256) end\ elseif type(rawget(_G, \"bitLibrary\")) == \"table\" and type(rawget(_G, \"bitLibrary\").bxor) == \"function\" then\ local _bxorRef = rawget(_G, \"bitLibrary\").bxor\ _xorFn = function(a, b) return _bxorRef(a % 256, b % 256) % 256 end\ else\ _xorFn = function(a, b)\ local r, bit = 0, 1\ a, b = a % 256, b % 256\ for _ = 0, 7 do\ if (a % 2) ~= (b % 2) then r = r + bit end\ a = math.floor(a / 2); b = math.floor(b / 2); bit = bit * 2\ end\ return r\ end\ end\ local function xor8(a, b) return _xorFn(a, b) end\ \ local function decode_str(c)\ if type(c) ~= \"table\" or not c.__enc then return c end\ local enc = c.__enc\ local key = c.__key\ local out = {}\ if type(key) == \"number\" then\ local k = key % 256\ for i = 1, #enc do\ out[i] = string.char(xor8(string.byte(enc, i), k))\ end\ elseif type(key) == \"table\" then\ local nk = #key\ if c.__rolling then\ local prev = 0\ for i = 1, #enc do\ local kb = (key[((i-1) % nk) + 1] or 0) % 256\ local dec = xor8(string.byte(enc, i), xor8(kb, prev))\ out[i] = string.char(dec)\ prev = dec\ end\ else\ for i = 1, #enc do\ local kb = (key[((i-1) % nk) + 1] or 0) % 256\ out[i] = string.char(xor8(string.byte(enc, i), kb))\ end\ end\ else\ return tostring(enc)\ end\ return table.concat(out)\ end\ \ local LUA51_OPS = {\ [0]=\"MOVE\",[1]=\"LOADK\",[2]=\"LOADBOOL\",[3]=\"LOADNIL\",[4]=\"GETUPVAL\",\ [5]=\"GETGLOBAL\",[6]=\"GETTABLE\",[7]=\"SETGLOBAL\",[8]=\"SETUPVAL\",[9]=\"SETTABLE\",\ [10]=\"NEWTABLE\",[11]=\"SELF\",[12]=\"ADD\",[13]=\"SUB\",[14]=\"MUL\",[15]=\"DIV\",\ [16]=\"MOD\",[17]=\"POW\",[18]=\"UNM\",[19]=\"NOT\",[20]=\"LEN\",[21]=\"CONCAT\",\ [22]=\"JMP\",[23]=\"EQ\",[24]=\"LT\",[25]=\"LE\",[26]=\"TEST\",[27]=\"TESTSET\",\ [28]=\"CALL\",[29]=\"TAILCALL\",[30]=\"RETURN\",[31]=\"FORLOOP\",[32]=\"FORPREP\",\ [33]=\"TFORLOOP\",[34]=\"SETLIST\",[35]=\"CLOSE\",[36]=\"CLOSURE\",[37]=\"VARARG\",\ }\ local LUA52_OPS = {\ [0]=\"MOVE\",[1]=\"LOADK\",[2]=\"LOADKX\",[3]=\"LOADBOOL\",[4]=\"LOADNIL\",\ [5]=\"GETUPVAL\",[6]=\"GETTABUP\",[7]=\"GETTABLE\",[8]=\"SETTABUP\",[9]=\"SETUPVAL\",\ [10]=\"SETTABLE\",[11]=\"NEWTABLE\",[12]=\"SELF\",[13]=\"ADD\",[14]=\"SUB\",[15]=\"MUL\",\ [16]=\"DIV\",[17]=\"MOD\",[18]=\"POW\",[19]=\"UNM\",[20]=\"NOT\",[21]=\"LEN\",\ [22]=\"CONCAT\",[23]=\"JMP\",[24]=\"EQ\",[25]=\"LT\",[26]=\"LE\",[27]=\"TEST\",\ [28]=\"TESTSET\",[29]=\"CALL\",[30]=\"TAILCALL\",[31]=\"RETURN\",[32]=\"FORLOOP\",\ [33]=\"FORPREP\",[34]=\"TFORCALL\",[35]=\"TFORLOOP\",[36]=\"SETLIST\",[37]=\"CLOSURE\",\ [38]=\"VARARG\",[39]=\"EXTRAARG\",\ }\ local LUA53_OPS = {\ [0]=\"MOVE\",[1]=\"LOADK\",[2]=\"LOADKX\",[3]=\"LOADBOOL\",[4]=\"LOADNIL\",\ [5]=\"GETUPVAL\",[6]=\"GETTABUP\",[7]=\"GETTABLE\",[8]=\"SETTABUP\",[9]=\"SETUPVAL\",\ [10]=\"SETTABLE\",[11]=\"NEWTABLE\",[12]=\"SELF\",[13]=\"ADD\",[14]=\"SUB\",[15]=\"MUL\",\ [16]=\"MOD\",[17]=\"POW\",[18]=\"DIV\",[19]=\"IDIV\",[20]=\"BAND\",[21]=\"BOR\",\ [22]=\"BXOR\",[23]=\"SHL\",[24]=\"SHR\",[25]=\"UNM\",[26]=\"BNOT\",[27]=\"NOT\",\ [28]=\"LEN\",[29]=\"CONCAT\",[30]=\"JMP\",[31]=\"EQ\",[32]=\"LT\",[33]=\"LE\",\ [34]=\"TEST\",[35]=\"TESTSET\",[36]=\"CALL\",[37]=\"TAILCALL\",[38]=\"RETURN\",\ [39]=\"FORLOOP\",[40]=\"FORPREP\",[41]=\"TFORCALL\",[42]=\"TFORLOOP\",\ [43]=\"SETLIST\",[44]=\"CLOSURE\",[45]=\"VARARG\",[46]=\"EXTRAARG\",\ }\ local function _pick_opset(p)\ local maxOp = 0\ for _, ins in ipairs(p.code or {}) do\ if (ins.op or 0) > maxOp then maxOp = ins.op end\ end\ if maxOp >= 43 then return LUA53_OPS, \"Lua5.3\"\ elseif maxOp >= 38 then return LUA52_OPS, \"Lua5.2\"\ else return LUA51_OPS, \"Lua5.1\" end\ end\ \ local function fmt_const(c)\ if c == nil then return \"nil\" end\ local t = type(c)\ if t == \"boolean\" or t == \"number\" then return tostring(c) end\ if t == \"string\" then return string.format(\"%q\", c) end\ if t == \"table\" and c.__enc then\ return string.format(\"%q\", decode_str(c))\ end\ return tostring(c)\ end\ \ local out = {}\ local function emit(s) out[#out+1] = s end\ \ local _all_strings = {}\ local function _collect_strings(p)\ for _, v in pairs(p.const or {}) do\ if type(v) == \"string\" then\ _all_strings[v] = true\ elseif type(v) == \"table\" and v.__enc then\ _all_strings[decode_str(v)] = true\ end\ end\ for _, sp in ipairs(p.subs or {}) do _collect_strings(sp) end\ end\ _collect_strings(proto)\ \ local seen = {}\ local function dump_proto(p, path)\ if seen[p] then return end\ seen[p] = true\ local OPS, opver = _pick_opset(p)\ emit((\"=\"):rep(70))\ emit(string.format(\"PROTO %s src=%s upvals=%d params=%d maxstack=%d [%s]\",\ path, tostring(p.source), p.num_upval or 0, p.num_param or 0, p.max_stack or 0, opver))\ local maxk = 0\ for k,_ in pairs(p.const or {}) do\ if type(k)==\"number\" and k>maxk then maxk=k end\ end\ emit(string.format(\" consts (%d):\", maxk))\ for i = 1, maxk do\ emit(string.format(\" [%d] %s\", i, fmt_const(p.const[i])))\ end\ if p.upvals and #p.upvals > 0 then\ emit(string.format(\" upvals (%d):\", #p.upvals))\ for i, uv in ipairs(p.upvals) do\ local uvname = type(uv) == \"table\" and (uv.name or uv[1] or \"?\") or tostring(uv)\ emit(string.format(\" [%d] %s\", i, uvname))\ end\ end\ if p.locals and #p.locals > 0 then\ emit(string.format(\" locals (%d):\", #p.locals))\ for i, lv in ipairs(p.locals) do\ local lvname = type(lv) == \"table\" and (lv.name or lv[1] or \"?\") or tostring(lv)\ emit(string.format(\" [%d] %s\", i, lvname))\ end\ end\ emit(string.format(\" code (%d instructions):\", #(p.code or {})))\ for i, ins in ipairs(p.code or {}) do\ local mn = OPS[ins.op] or (\"OP\"..tostring(ins.op))\ local extra = \"\"\ if ins.k ~= nil then extra = \" ; K=\" .. fmt_const(ins.k) end\ if ins.kC ~= nil then extra = extra .. \" KC=\" .. fmt_const(ins.kC) end\ emit(string.format(\" %4d %-12s A=%-3d B=%-3d C=%-3d Bx=%-6d sBx=%-6d%s\",\ i, mn, ins.A or 0, ins.B or 0, ins.C or 0, ins.Bx or 0, ins.sBx or 0, extra))\ end\ emit(string.format(\" subs (%d):\", #(p.subs or {})))\ for i, sp in ipairs(p.subs or {}) do\ dump_proto(sp, path .. \"/\" .. i)\ end\ end\ \ emit((\"=\"):rep(70))\ emit(\"STRINGS SUMMARY\")\ emit((\"=\"):rep(70))\ local _slist = {}\ for s in pairs(_all_strings) do _slist[#_slist+1] = s end\ table.sort(_slist)\ emit(string.format(\" total unique strings: %d\", #_slist))\ for idx, s in ipairs(_slist) do\ emit(string.format(\" [%d] %s\", idx, string.format(\"%q\", s)))\ end\ emit(\"\")\ \ dump_proto(proto, \"root\")\ local text = table.concat(out, \"\\n\") .. \"\\n\"\ \ if outputPath and outputPath ~= \"-\" then\ local of, oerr = _open(outputPath, \"wb\")\ if not of then error(\"extract_consts: cannot write \" .. tostring(outputPath) ..\ \": \" .. tostring(oerr), 0) end\ of:write(text); of:close()\ _stderr:write(\"[dumper] consts written to \" .. outputPath ..\ \" (\" .. #text .. \" bytes, \" .. #_slist .. \" strings)\\n\")\ else\ printFunction(text)\ end\ return true, text\ end\ \ _G.LuraphContinue = function() end\ if not rawget(_G, \"__FLAMEDUMPER_REQUIRE_ONLY\") then\ if arg and (arg[1] == \"--consts\" or arg[1] == \"-c\") then\ local input = arg[2]\ local output = arg[3]\ if not input then\ printFunction(\"Usage: lua [internal] --consts [output|-]\")\ else\ proxyTable.extract_consts(input, output)\ end\ elseif arg and arg[1] then\ local success = proxyTable.dump_file(arg[1], arg[2])\ if success then end\ else\ local file = ioLibrary.open(\"obfuscated.lua\", \"rb\")\ if file then\ file:close()\ local success = proxyTable.dump_file(\"obfuscated.lua\")\ if success then\ printFunction(proxyTable.get_output())\ end\ else\ printFunction(\"Usage: lua [internal] [output] [key]\")\ printFunction(\" lua [internal] --consts [output|-]\")\ end\ end\ end\ return proxyTable") print("\ [=== END OF file_dumper.lua ===]\ ") print("[RESULT] Full dump completed. 0 files recovered.")