return function(Y,s)local G=s(nil,{script=script})setfenv(1,G)local U,n,X,k,K,W,h,P,O,j,v,g,z,R,o,e,m,q,H,u,f,J,L,V,E,B,w,c,T,r,I,p,t,i,d,y,D,N,l,a,x,Q,Z,S,F,b,A,M,C,YJ,sJ,GJ,UJ,nJ,XJ,kJ,KJ,WJ,hJ=_G,game,script,getfenv,setfenv,workspace,getmetatable,setmetatable,loadstring,coroutine,rawequal,typeof,print,math,warn,error,pcall,xpcall,select,rawset,rawget,ipairs,pairs,next,Rect,Axes,os,time,Faces,unpack,string,Color3,newproxy,tostring,tonumber,Instance,TweenInfo,BrickColor,NumberRange,ColorSequence,NumberSequence,ColorSequenceKeypoint,NumberSequenceKeypoint,PhysicalProperties,Region3int16,Vector3int16,require,table,type,wait,Enum,UDim,UDim2,Vector2,Vector3,Region3,CFrame,Ray,delay local PJ=X local OJ=Y.Service local jJ=Y.Client local vJ,gJ,zJ,RJ,oJ,eJ,mJ local function qJ()eJ=jJ.UI vJ=jJ.Anti gJ=jJ.Core mJ=jJ.Variables zJ=jJ.Functions RJ=jJ.Process oJ=jJ.Remote zJ.Init=nil end local function HJ()zJ.RunLast=nil end;(k()).client=nil;(k()).service=nil;(k()).script=nil jJ.Functions={Init=qJ;RunLast=HJ,Kill=jJ.Kill,ESPFaces={"\070\114\111\110\116","\066\097\099\107";"\084\111\112","\066\111\116\116\111\109","\076\101\102\116";"\082\105\103\104\116"},ESPify=function(Y,s)local G=OJ.Debris local U=OJ.New local n=OJ.UnWrap(OJ.Player)for Y,X in J(Y:GetChildren())do if X:IsA("\066\097\115\101\080\097\114\116")then if X.Name=="\072\101\097\100"and not X:FindFirstChild("\095\095\065\068\079\078\073\083\095\078\065\077\069\084\065\071")then local Y=OJ.Players:GetPlayerFromCharacter(X.Parent)if Y then local s=U("\066\105\108\108\098\111\097\114\100\071\117\105",{Name="\095\095\065\068\079\078\073\083\095\078\065\077\069\084\065\071";AlwaysOnTop=true;StudsOffset=XJ.new(0,2,0),Size=UJ.new(0,100,0,40),Adornee=X},true)local G=U("\084\101\120\116\076\097\098\101\108",{BackgroundTransparency=1,TextColor3=p.new(1,1,1);TextStrokeTransparency=0;Text=I.format("\037\115 \040\064\037\115\041\n\062 \037\115 \060",Y.DisplayName,Y.Name,"\048");Size=UJ.new(1,0,1,0),TextScaled=true;TextWrapped=true,Parent=s},true)s.Parent=X if Y~=n then spawn(function()repeat if not X then break end local U=n:DistanceFromCharacter(X.CFrame.Position)G.Text=I.format("\037\115 \040\064\037\115\041\n\062 \037\115 \060",Y.DisplayName,Y.Name,U and R.floor(U)or"\078\047\065")YJ()until not X or not s or not G end)end end end for Y,n in J(zJ.ESPFaces)do local k=U("\083\117\114\102\097\099\101\071\117\105",{AlwaysOnTop=true,ResetOnSpawn=false;Face=n,Adornee=X},true)U("\070\114\097\109\101",{Size=UJ.new(1,0,1,0),BackgroundColor3=s;Parent=k},true)k.Parent=X local K K=k.AncestryChanged:Connect(function(Y,s)if Y==k and s==nil then K:Disconnect()G:AddItem(k,0)for Y,s in J(mJ.ESPObjects)do if s==k then M.remove(mJ.ESPObjects,Y)break end end end end)mJ.ESPObjects[k]=X end end end end,CharacterESP=function(Y,s,G)G=G or p.new(1,0,.917647)local U=OJ.Debris local n=OJ.UnWrap if mJ.ESPEvent then mJ.ESPEvent:Disconnect()mJ.ESPEvent=nil end for G in L(mJ.ESPObjects)do if not Y or not s or s and G:IsDescendantOf(s)then local Y=G.Parent and G.Parent:FindFirstChild("\095\095\065\068\079\078\073\083\095\078\065\077\069\084\065\071")if Y then Y:Destroy()end U:AddItem(G,0)mJ.ESPObjects[G]=nil end end if Y==true then if not s then mJ.ESPEvent=W.ChildAdded:Connect(function(Y)YJ()local s=Y.ClassName=="\077\111\100\101\108"and OJ.Players:GetPlayerFromCharacter(Y)if s then task.spawn(zJ.ESPify,n(Y),G)end end)for Y,s in J(OJ.Players:GetPlayers())do if s.Character then task.spawn(zJ.ESPify,n(s.Character),G)end end else zJ.ESPify(n(s),G)end end end;GetRandom=function(Y)local s=R.random local G=I.format local U=C(Y)=="\110\117\109\098\101\114"and Y or s(5,10)local n={}for Y=1,U,1 do n[Y]=G("\037\048\050\120",s(255))end return M.concat(n)end;Round=function(Y)return R.floor(Y+.5)end,SetView=function(Y)local s=W.CurrentCamera if Y=="\114\101\115\101\116"then s.CameraType="\067\117\115\116\111\109"s.CameraSubject=OJ.Player.Character.Humanoid s.FieldOfView=70 else s.CameraSubject=Y end end,AddAlias=function(Y,s)mJ.Aliases[I.lower(Y)]=s oJ.Get("\085\112\100\097\116\101\065\108\105\097\115\101\115",mJ.Aliases)task.defer(eJ.MakeGui,"\078\111\116\105\102\105\099\097\116\105\111\110",{Time=4,Icon=jJ.MatIcons["\065\100\100 \099\105\114\099\108\101"],Title="\078\111\116\105\102\105\099\097\116\105\111\110",Message=I.format("\065\108\105\097\115 \"\037\115\" \097\100\100\101\100",I.lower(Y))})end;RemoveAlias=function(Y)if mJ.Aliases[I.lower(Y)]then mJ.Aliases[I.lower(Y)]=nil oJ.Get("\085\112\100\097\116\101\065\108\105\097\115\101\115",mJ.Aliases)task.defer(eJ.MakeGui,"\078\111\116\105\102\105\099\097\116\105\111\110",{Time=4;Icon=jJ.MatIcons.Delete,Title="\078\111\116\105\102\105\099\097\116\105\111\110",Message=I.format("\065\108\105\097\115 \"\037\115\" \114\101\109\111\118\101\100",I.lower(Y))})else task.defer(eJ.MakeGui,"\078\111\116\105\102\105\099\097\116\105\111\110",{Time=3,Icon=jJ.MatIcons.Help;Title="\069\114\114\111\114",Message=I.format("\065\108\105\097\115 \"\037\115\" \110\111\116 \102\111\117\110\100",I.lower(Y))})end end,Playlist=function()return oJ.Get("\080\108\097\121\108\105\115\116")end;UpdatePlaylist=function(Y)oJ.Get("\085\112\100\097\116\101\080\108\097\121\108\105\115\116",Y)end,Dizzy=function(Y)OJ.StopLoop("\068\105\122\122\121\076\111\111\112")if Y then local s=W.CurrentCamera local G=c()local U=0 local n=false OJ.StartLoop("\068\105\122\122\121\076\111\111\112","\082\101\110\100\101\114\083\116\101\112\112\101\100",function()local X=c()-G if n then U=U+R.rad(Y*X)else U=U-R.rad(Y*X)end s.CoordinateFrame*=KJ.Angles(0,.0,U)G=c()end)end end;Base64Encode=function(Y)local s=I.sub local G=I.byte local U=I.gsub return U(U(Y,"\046",function(Y)local s,U="",G(Y)for Y=8,1,-1 do s=s..(U%2^Y-U%2^(Y-1)>0 and"\049"or"\048")end return s end).."\048\048\048\048","\037\100\037\100\037\100\063\037\100\063\037\100\063\037\100\063",function(Y)if#Y<6 then return""end local G=0 for U=1,6,1 do G=G+(s(Y,U,U)=="\049"and 2^(6-U)or 0)end return s("\065\066\067\068\069\070\071\072\073\074\075\076\077\078\079\080\081\082\083\084\085\086\087\088\089\090\097\098\099\100\101\102\103\104\105\106\107\108\109\110\111\112\113\114\115\116\117\118\119\120\121\122\048\049\050\051\052\053\054\055\056\057\043\047",G+1,G+1)end)..({"","\061\061";"\061"})[#Y%3+1]end;Base64Decode=function(Y)local s=I.sub local G=I.gsub local U=I.find local n=I.char local X="\065\066\067\068\069\070\071\072\073\074\075\076\077\078\079\080\081\082\083\084\085\086\087\088\089\090\097\098\099\100\101\102\103\104\105\106\107\108\109\110\111\112\113\114\115\116\117\118\119\120\121\122\048\049\050\051\052\053\054\055\056\057\043\047"Y=G(Y,"\091\094"..(X.."\061\093"),"")return G(G(Y,"\046",function(Y)if Y=="\061"then return""end local s,G="",U(X,Y)-1 for Y=6,1,-1 do s=s..(G%2^Y-G%2^(Y-1)>0 and"\049"or"\048")end return s end),"\037\100\037\100\037\100\063\037\100\063\037\100\063\037\100\063\037\100\063\037\100\063",function(Y)if#Y~=8 then return""end local G=0 for U=1,8,1 do G=G+(s(Y,U,U)=="\049"and 2^(8-U)or 0)end return n(G)end)end,GetGuiData=function(Y)local s={"\065\098\115\111\108\117\116\101\080\111\115\105\116\105\111\110","\065\098\115\111\108\117\116\101\083\105\122\101","\067\108\097\115\115\078\097\109\101";"\078\097\109\101","\080\097\114\101\110\116","\065\114\099\104\105\118\097\098\108\101";"\083\101\108\101\099\116\105\111\110\073\109\097\103\101\079\098\106\101\099\116";"\065\099\116\105\118\101","\066\097\099\107\103\114\111\117\110\100\067\111\108\111\114\051";"\066\097\099\107\103\114\111\117\110\100\084\114\097\110\115\112\097\114\101\110\099\121";"\066\111\114\100\101\114\067\111\108\111\114\051","\066\111\114\100\101\114\083\105\122\101\080\105\120\101\108";"\080\111\115\105\116\105\111\110","\082\111\116\097\116\105\111\110";"\083\101\108\101\099\116\097\098\108\101";"\083\105\122\101";"\083\105\122\101\067\111\110\115\116\114\097\105\110\116","\083\116\121\108\101";"\086\105\115\105\098\108\101","\090\073\110\100\101\120","\067\108\105\112\115\068\101\115\099\101\110\100\097\110\116\115";"\068\114\097\103\103\097\098\108\101";"\078\101\120\116\083\101\108\101\099\116\105\111\110\068\111\119\110";"\078\101\120\116\083\101\108\101\099\116\105\111\110\076\101\102\116","\078\101\120\116\083\101\108\101\099\116\105\111\110\082\105\103\104\116","\078\101\120\116\083\101\108\101\099\116\105\111\110\085\112","\065\117\116\111\066\117\116\116\111\110\067\111\108\111\114","\077\111\100\097\108","\073\109\097\103\101","\073\109\097\103\101\067\111\108\111\114\051","\073\109\097\103\101\082\101\099\116\079\102\102\115\101\116","\073\109\097\103\101\082\101\099\116\083\105\122\101","\073\109\097\103\101\084\114\097\110\115\112\097\114\101\110\099\121","\083\099\097\108\101\084\121\112\101","\083\108\105\099\101\067\101\110\116\101\114";"\084\101\120\116","\084\101\120\116\067\111\108\111\114\051","\070\111\110\116";"\084\101\120\116\083\099\097\108\101\100","\084\101\120\116\083\116\114\111\107\101\067\111\108\111\114\051";"\084\101\120\116\083\116\114\111\107\101\084\114\097\110\115\112\097\114\101\110\099\121","\084\101\120\116\084\114\097\110\115\112\097\114\101\110\099\121";"\084\101\120\116\087\114\097\112\112\101\100","\084\101\120\116\088\065\108\105\103\110\109\101\110\116";"\084\101\120\116\089\065\108\105\103\110\109\101\110\116"}local G={"\083\099\114\101\101\110\071\117\105";"\071\117\105\077\097\105\110";"\070\114\097\109\101","\084\101\120\116\066\117\116\116\111\110","\084\101\120\116\076\097\098\101\108","\073\109\097\103\101\066\117\116\116\111\110","\073\109\097\103\101\076\097\098\101\108","\083\099\114\111\108\108\105\110\103\070\114\097\109\101";"\084\101\120\116\066\111\120";"\066\105\108\108\098\111\097\114\100\071\117\105","\083\117\114\102\097\099\101\071\117\105"}local U={Properties={Name="\086\105\101\119\071\117\105\115";ClassName="\070\111\108\100\101\114"},Children={}}local n n=function(Y,U)local X=false for Y,s in L(G)do if U:IsA(s)then X=true end end if X then local G={Properties={};Children={}}for Y,s in L(s)do m(function()G.Properties[s]=U[s]end)end for Y,s in J(U:GetChildren())do n(G,s)end M.insert(Y.Children,G)end end for Y,s in J(OJ.PlayerGui:GetChildren())do m(n,U,s)end return U end;LoadGuiData=function(Y)local s s=function(Y)local G=Y.Properties local U=Y.Children local n=OJ.New(G.ClassName)for Y,s in V,G do m(function()n[Y]=s end)end for Y,G in V,U do m(function()local Y=s(G)if Y then Y.Parent=n end end)end return n end local G=y.new("\070\111\108\100\101\114")for Y,s in V,OJ.PlayerGui:GetChildren()do if not eJ.Get(s)then s.Parent=G end end mJ.GuiViewFolder=G local U=OJ.New("\070\111\108\100\101\114",{Parent=OJ.PlayerGui,Name="\076\111\097\100\101\100\071\117\105\115"})for Y,G in V,Y.Children do m(function()local Y=s(G)if Y then Y.Parent=U end end)end end,UnLoadGuiData=function()for Y,s in J(OJ.PlayerGui:GetChildren())do if s.Name=="\076\111\097\100\101\100\071\117\105\115"then s:Destroy()end end if mJ.GuiViewFolder then for Y,s in J(mJ.GuiViewFolder:GetChildren())do s.Parent=OJ.PlayerGui end mJ.GuiViewFolder:Destroy()mJ.GuiViewFolder=nil end end,GetParticleContainer=function(Y)if Y then for s,G in J((OJ.LocalContainer()):GetChildren())do if G.Name==Y:GetFullName().."\080\065\082\084\073\067\076\069\083"then local s=G:FindFirstChild("\095\079\066\074\069\067\084")if s.Value==Y then return G end end end end end,NewParticle=function(Y,s,G)local U,n G.Parent=Y G.Enabled=mJ.ParticlesEnabled U=OJ.New(s,G)n=zJ.GetRandom()mJ.Particles[n]=U M.insert(mJ.Particles,U)U.Changed:Connect(function()if not U or not U.Parent or U.Parent~=Y then m(function()U:Destroy()end)mJ.Particles[n]=nil end end)end,RemoveParticle=function(Y,s)for G,U in L(mJ.Particles)do if U.Parent==Y and U.Name==s then U:Destroy()mJ.Particles[G]=nil end end end,EnableParticles=function(Y)for s,G in L(mJ.Particles)do if Y then G.Enabled=true else G.Enabled=false end end end;NewLocal=function(Y,s,G)local U=OJ.New(Y)for Y,s in V,s do U[Y]=s end if not G or G=="\076\111\099\097\108\067\111\110\116\097\105\110\101\114"then U.Parent=OJ.LocalContainer()elseif G=="\067\097\109\101\114\097"then U.Parent=W.CurrentCamera elseif G=="\080\108\097\121\101\114\071\117\105"then U.Parent=OJ.PlayerGui end end;MakeLocal=function(Y,s,G)if Y then local U=Y if G then U=U:Clone()end if not s or s=="\076\111\099\097\108\067\111\110\116\097\105\110\101\114"then U.Parent=OJ.LocalContainer()elseif s=="\067\097\109\101\114\097"then U.Parent=W.CurrentCamera elseif s=="\080\108\097\121\101\114\071\117\105"then U.Parent=OJ.PlayerGui end end end,MoveLocal=function(Y,s,G)local U if not s or s=="\076\111\099\097\108\067\111\110\116\097\105\110\101\114"then U=OJ.LocalContainer()elseif s=="\067\097\109\101\114\097"then U=W.CurrentCamera elseif s=="\080\108\097\121\101\114\071\117\105"then U=OJ.PlayerGui end for s,U in J(U:GetChildren())do if U.Name==Y or U==U then U.Parent=G end end end;RemoveLocal=function(Y,s,G)local U if not s or s=="\076\111\099\097\108\067\111\110\116\097\105\110\101\114"then U=OJ.LocalContainer()elseif s=="\067\097\109\101\114\097"then U=W.CurrentCamera elseif s=="\080\108\097\121\101\114\071\117\105"then U=OJ.PlayerGui end for s,U in J(U:GetChildren())do if G and I.match(U.Name,Y)or U.Name==Y or Y==U then U:Destroy()end end end,NewCape=function(Y)local s=Y.Parent local G=Y.Material or"\078\101\111\110"local U=Y.Color or"\087\104\105\116\101"local n=Y.Reflectance or 0 local X=d(Y.Decal or"")if s then zJ.RemoveCape(s)local k=s:FindFirstChild("\084\111\114\115\111")or s:FindFirstChild("\085\112\112\101\114\084\111\114\115\111")or s:FindFirstChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")local K=k.Name=="\085\112\112\101\114\084\111\114\115\111"if k then local s=OJ.New("\080\097\114\116")s.Name="\065\068\079\078\073\083\095\067\065\080\069"s.Anchored=false s.Position=k.Position s.Transparency=0 s.Material=G s.CanCollide=false s.TopSurface=0 s.BottomSurface=0 s.Size=XJ.new(2,4,.1)s.BrickColor=N.new(U)or N.new("\087\104\105\116\101")s.Parent=OJ.LocalContainer()if n then s.Reflectance=n end local W=OJ.New("\077\111\116\111\114",s)W.Part0=s W.Part1=k W.MaxVelocity=.01 W.C0=KJ.new(0,1.75,0)*KJ.Angles(0,R.rad(90),0)W.C1=KJ.new(0,1-(K and.2 or 0),k.Size.Z/2)*KJ.Angles(0,R.rad(90),0)local h=OJ.New("\066\108\111\099\107\077\101\115\104",s)h.Scale=XJ.new(.9,.87,.1)local P if X and X~=0 then P=OJ.New("\068\101\099\097\108",{Name="\068\101\099\097\108";Face=2;Texture="\114\098\120\097\115\115\101\116\105\100\058\047\047"..X,Transparency=0;Parent=s})end local O=zJ.GetRandom()mJ.Capes[O]={Part=s,Motor=W;Enabled=true,Parent=Y.Parent,Torso=k;Decal=P;Data=Y;Wave=true;isR15=K}local j=OJ.Players:GetPlayerFromCharacter(Y.Parent)if j and j==OJ.Player then mJ.Capes[O].isPlayer=true end if not mJ.CapesEnabled then j.Transparency=1 if P then P.Transparency=1 end mJ.Capes[O].Enabled=false end zJ.MoveCapes()end end end,RemoveCape=function(Y)for s,G in L(mJ.Capes)do if G.Parent==Y or not G.Parent or not G.Parent.Parent then m(G.Part.Destroy,G.Part)mJ.Capes[s]=nil end end end;HideCapes=function(Y)for s,G in L(mJ.Capes)do local U=G.Torso local n=G.Parent local X=G.Part local k=G.Motor local K=G.Wave local W=G.Decal if n and(n.Parent and(U and(U.Parent and(X and X.Parent))))then if not Y then X.Transparency=0 if W then W.Transparency=0 end G.Enabled=true else X.Transparency=1 if W then W.Transparency=1 end G.Enabled=false end else m(X.Destroy,X)mJ.Capes[s]=nil end end end,MoveCapes=function()OJ.StopLoop("\067\097\112\101\077\111\118\101\114")OJ.StartLoop("\067\097\112\101\077\111\118\101\114",.1,function()if zJ.CountTable(mJ.Capes)==0 or not mJ.CapesEnabled then OJ.StopLoop("\067\097\112\101\077\111\118\101\114")else for Y,s in L(mJ.Capes)do local G=s.Torso local U=s.Parent local n=s.isPlayer local X=s.isR15 local k=s.Part local K=s.Motor local W=s.Wave local h=s.Decal if U and(U.Parent and(G and(G.Parent and(k and k.Parent))))then if s.Enabled and mJ.CapesEnabled then k.Transparency=0 if h then h.Transparency=0 end local Y=.1 if W then if G.Velocity.Magnitude>1 then Y=(Y+(G.Velocity.Magnitude/10)*.05)+.05 end s.Wave=false else s.Wave=true end Y=Y+R.min(G.Velocity.Magnitude/11,.8)K.MaxVelocity=R.min(G.Velocity.Magnitude/111,.04)+.002 if n then K.DesiredAngle=-Y else K.CurrentAngle=-Y end if K.CurrentAngle<-0.2 and K.DesiredAngle>-0.2 then K.MaxVelocity=.04 end else k.Transparency=1 if h then h.Transparency=1 end end else m(k.Destroy,k)mJ.Capes[Y]=nil end end end end,true)end,CountTable=function(Y)local s=0 for Y in L(Y)do s+=1 end return s end;ClearAllInstances=function()local Y=OJ.GetAdonisObjects()for Y in L(Y)do Y:Destroy()end M.clear(Y)end;PlayAnimation=function(Y)if Y==0 then return end local s=OJ.Player.Character local G=s and s:FindFirstChildOfClass("\072\117\109\097\110\111\105\100")local U=G and G:FindFirstChildOfClass("\065\110\105\109\097\116\111\114")or G and G:WaitForChild("\065\110\105\109\097\116\111\114",9000000000.0)if not U then return end for Y,s in J(U:GetPlayingAnimationTracks())do s:Stop()end local n=OJ.New("\065\110\105\109\097\116\105\111\110",{AnimationId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..Y;Name="\065\068\079\078\073\083\095\065\110\105\109\097\116\105\111\110"})local X=U:LoadAnimation(n)X:Play()end,SetLighting=function(Y,s)if OJ.Lighting[Y]~=nil then OJ.Lighting[Y]=s mJ.LightingSettings[Y]=s end end;ChatMessage=function(Y,s,G,U)local n={}n.Text=Y if s then n.Color=s end if G then n.Font=G end if U then n.Size=U end OJ.StarterGui:SetCore("\067\104\097\116\077\097\107\101\083\121\115\116\101\109\077\101\115\115\097\103\101",n)if zJ.SendToChat then zJ.SendToChat({Name="\058\058\065\100\111\110\105\115\058\058"},Y,"\080\114\105\118\097\116\101")end end,SetCamProperty=function(Y,s)local G=W.CurrentCamera if G[Y]then G[Y]=s end end;SetFPS=function(Y)OJ.StopLoop("\083\101\116\070\080\083")local s=d(Y)if s then OJ.StartLoop("\083\101\116\070\080\083",.1,function()local Y=c()+1/s repeat until c()>=Y end)end end,RestoreFPS=function()OJ.StopLoop("\083\101\116\070\080\083")end;Crash=function()local Y=OJ.RunService local s=0 local G function G()Y:BindToRenderStep(i(s),100,function()z("\083\116\111\112\112\105\110\103")G()end)s=s+1 end G()end,HardCrash=function()local Y local s local G=OJ.New("\083\099\114\101\101\110\071\117\105",OJ.PlayerGui)local U=OJ.New("\082\101\109\111\116\101\069\118\101\110\116",W.CurrentCamera)Y=function()for n=1,50,1 do OJ.Debris:AddItem(OJ.New("\080\097\114\116",W.CurrentCamera),2e1024)z("\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041\040\040\040\040\042\042\038\038\035\064\035\036\036\036\036\036\037\037\037\037\058\041")local X=OJ.New("\070\114\097\109\101",G)X.Size=UJ.new(1,0,1,0)spawn(function()M.insert(s,I.rep(i(R.random()),100))end)U:FireServer("\072\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105\105")spawn(function()spawn(function()spawn(function()spawn(function()spawn(function()z("\104\105")spawn(Y)end)end)end)end)end)end s={}end while YJ(.01)do for s=1,50000000,1 do cPcall(function()jJ.GPUCrash()end)cPcall(function()Y()end)z(1)end end end,GPUCrash=function()local Y=OJ.New local s=Y("\083\099\114\101\101\110\071\117\105",OJ.PlayerGui)local G=UJ.new(1,0,1,0)local U U=function()while YJ(.01)do for U=1,500000,1 do Y("\070\114\097\109\101",{Size=G;Parent=s})end end end U()end,RAMCrash=function()local Y=OJ.Debris local s=OJ.New while YJ(.1)do for G=1,10000,1 do Y:AddItem(s("\080\097\114\116",W.CurrentCamera),2e1024)end end end,KillClient=function()jJ.Kill("\075\105\108\108\067\108\105\101\110\116 \099\097\108\108\101\100")end;KeyCodeToName=function(Y)local s=d(Y)if s then for Y,G in J(sJ.KeyCode:GetEnumItems())do if G.Value==s then return G.Name end end end return"\085\078\075\078\079\087\078"end,KeyBindListener=function(Y)if not mJ then YJ()end local s=0 local G=not Y and oJ.Get("\080\108\097\121\101\114\068\097\116\097")mJ.KeyBinds=Y or G and G.Keybinds or{}OJ.UserInputService.InputBegan:Connect(function(Y)local G=i(Y.KeyCode.Value)local U=OJ.UserInputService:GetFocusedTextBox()if mJ.KeybindsEnabled and(not U and(G and(mJ.KeyBinds[G]and not mJ.WaitingForBind)))then local Y=oJ.Get("\067\104\101\099\107\065\100\109\105\110")if c()-s>5 or Y then oJ.Send("\080\114\111\099\101\115\115\067\111\109\109\097\110\100",mJ.KeyBinds[G],false,true)eJ.Make("\072\105\110\116",{Message="\091\082\097\110\093 \075\101\121\058 "..(zJ.KeyCodeToName(G)..(" \124 \067\111\109\109\097\110\100\058 "..i(mJ.KeyBinds[G])))})end s=c()end end)end,AddKeyBind=function(Y,s)local G=i(Y)mJ.KeyBinds[i(G)]=s oJ.Get("\085\112\100\097\116\101\075\101\121\098\105\110\100\115",mJ.KeyBinds)eJ.Make("\072\105\110\116",{Message="\066\111\117\110\100 \107\101\121 \""..(zJ.KeyCodeToName(G)..("\" \116\111 \099\111\109\109\097\110\100\058 "..s))})end;RemoveKeyBind=function(Y)local s=i(Y)if mJ.KeyBinds[i(s)]~=nil then mJ.KeyBinds[i(s)]=nil oJ.Get("\085\112\100\097\116\101\075\101\121\098\105\110\100\115",mJ.KeyBinds)Routine(function()eJ.Make("\072\105\110\116",{Message="\082\101\109\111\118\101\100 \107\101\121 \""..(zJ.KeyCodeToName(s).."\" \102\114\111\109 \107\101\121\098\105\110\100\115")})end)end end;BrickBlur=function(Y,s,G)local U=(OJ.LocalContainer()):FindFirstChild("\065\068\079\078\073\083\095\087\073\078\068\079\087\095\070\085\078\067\095\066\076\085\082")if U then U:Destroy()end if Y then local Y=y.new("\080\097\114\116",W.CurrentCamera)Y.Name="\065\068\079\078\073\083\095\087\073\078\068\079\087\095\070\085\078\067\095\066\076\085\082"Y.Material="\078\101\111\110"Y.BrickColor=G or N.Black()Y.Transparency=s or.5 Y.CanCollide=false Y.Anchored=true Y.FormFactor="\067\117\115\116\111\109"Y.Size=XJ.new(100,100,0)while Y and(Y.Parent and YJ(.025))do Y.CFrame=(W.CurrentCamera.CoordinateFrame*KJ.new(0,0,-2.5))*KJ.Angles(12.6,0,0)end else for Y,s in J(W.CurrentCamera:GetChildren())do if s.Name=="\065\068\079\078\073\083\095\087\073\078\068\079\087\095\070\085\078\067\095\066\076\085\082"then s:Destroy()end end end end;PlayAudio=function(Y,s,G,U)if mJ.localSounds[i(Y)]then mJ.localSounds[i(Y)]:Stop()mJ.localSounds[i(Y)]:Destroy()mJ.localSounds[i(Y)]=nil end local n=OJ.New("\083\111\117\110\100")n.SoundId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..Y if U then n.Looped=true end if s then n.Volume=s end if G then n.Pitch=G end n.Name="\065\068\079\078\073\095\076\079\067\065\076\095\083\079\085\078\068 "..Y n.Parent=OJ.LocalContainer()mJ.localSounds[i(Y)]=n n:Play()YJ(1)repeat YJ(.1)until not n.IsPlaying n:Destroy()mJ.localSounds[i(Y)]=nil end;StopAudio=function(Y)if mJ.localSounds[i(Y)]then mJ.localSounds[i(Y)]:Stop()mJ.localSounds[i(Y)]:Destroy()mJ.localSounds[i(Y)]=nil elseif Y=="\097\108\108"then for Y,s in L(mJ.localSounds)do mJ.localSounds[Y]:Stop()mJ.localSounds[Y]:Destroy()mJ.localSounds[Y]=nil end end end;FadeAudio=function(Y,s,G,U,n)if not s then local s=mJ.localSounds[i(Y)]if s then for Y=s.Volume,0,-0.01 do s.Volume=Y YJ(n or.1)end zJ.StopAudio(Y)end else zJ.StopAudio(Y)zJ.PlayAudio(Y,0,G,U)local X=mJ.localSounds[i(Y)]if X then for Y=0,s,.01 do X.Volume=Y YJ(n or.1)end end end end,KillAllLocalAudio=function()for Y,s in L(mJ.localSounds)do s:Stop()s:Destroy()M.remove(mJ.localSounds,Y)end end,RemoveGuis=function()for Y,s in J(OJ.PlayerGui:GetChildren())do if not eJ.Get(s)then s:Destroy()end end end;SetCoreGuiEnabled=function(Y,s)OJ.StarterGui:SetCoreGuiEnabled(Y,s)end,SetCore=function(...)OJ.StarterGui:SetCore(...)end;UnCape=function()local Y=(OJ.LocalContainer()):FindFirstChild("\058\058\065\100\111\110\105\115\058\058\067\097\112\101")if Y then Y:Destroy()end end,Cape=function(Y,s,G,U)local n=OJ.Player.Character:FindFirstChild("\072\117\109\097\110\111\105\100\082\111\111\116\080\097\114\116")if n then local X=OJ.New("\080\097\114\116",OJ.LocalContainer())X.Name="\058\058\065\100\111\110\105\115\058\058\067\097\112\101"X.Anchored=true X.Transparency=.1 X.Material=Y X.CanCollide=false X.TopSurface=0 X.BottomSurface=0 if C(s)=="\116\097\098\108\101"then s=p.new(s[1],s[2],s[3])end X.BrickColor=N.new(s)or N.new("\087\104\105\116\101")if U then X.Reflectance=U end if G and G~=0 then local Y=OJ.New("\068\101\099\097\108",X)Y.Face=2 Y.Texture="\104\116\116\112\058\047\047\119\119\119\046\114\111\098\108\111\120\046\099\111\109\047\097\115\115\101\116\047\063\105\100\061"..G Y.Transparency=0 end X.formFactor="\067\117\115\116\111\109"X.Size=XJ.new(.2,.2,.2)local k=OJ.New("\066\108\111\099\107\077\101\115\104",X)k.Scale=XJ.new(9,17.5,.5)YJ(.1)X.Anchored=false local K=OJ.New("\077\111\116\111\114",X)K.Part0=X K.Part1=n K.MaxVelocity=.01 K.C0=KJ.new(0,1.75,0)*KJ.Angles(0,R.rad(90),0)K.C1=KJ.new(0,1,n.Size.Z/2)*KJ.Angles(0,R.rad(90),0)local W=false repeat YJ(.022727272727273)local Y=.1 local s=n.Velocity.Magnitude local G=.002 if W then Y=(Y+(n.Velocity.Magnitude/10)*.05)+.05 W=false else W=true end Y=Y+R.min(n.Velocity.Magnitude/11,.5)K.MaxVelocity=R.min(n.Velocity.Magnitude/111,.04)+G K.DesiredAngle=-Y if K.CurrentAngle<-0.2 and K.DesiredAngle>-0.2 then K.MaxVelocity=.04 end repeat YJ()until K.CurrentAngle==K.DesiredAngle or R.abs(n.Velocity.Magnitude-s)>=n.Velocity.Magnitude/10+1 if n.Velocity.Magnitude<.1 then YJ(.1)end until not X or not X.Parent or X.Parent~=OJ.LocalContainer()end end,TextToSpeech=function(Y)local s=296333956 local G=y.new("\083\111\117\110\100",OJ.LocalContainer())G.SoundId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..s G.Volume=1 local U=y.new("\083\111\117\110\100",OJ.LocalContainer())U.SoundId="\114\098\120\097\115\115\101\116\105\100\058\047\047"..s U.Volume=1 local X={{str="\037\115\111",func={17}},{str="\105\110\103",func={41}};{str="\111\111\116";func={4,26}},{str="\111\114",func={10}},{str="\111\111";func={3}},{str="\104\105";func={44;19}},{str="\105\101";func={1}},{str="\101\121\101",func={19}},{str="\036\083\117\121\037\115",real="\117\121";func={19}},{str="\037\083\101\121\037\115",func={1}},{str="\037\115\121\101",func={19}};{str="\116\104\101",func={25,15}};{str="\116\104",func={32;.2395}},{str="\111\119",func={20}};{str="\113\117",func={21;38}};{str="\101\101",func={1}},{str="\105\037\115";delay=.5,func={19}};{str="\101\097",func={1}},{str="\117\040\046\042\041\101",real="\117";capture=true,func={9}};{str="\099\104";func={24}},{str="\101\114\101",func={5}};{str="\097\105";func={6}};{str="\108\097",func={39,6}},{str="\111\121",func={8}},{str="\103\104";func={44}};{str="\115\104",func={22}};{str="\097\105\114";func={18}},{str="\097\114";func={16}},{str="\105\114",func={11}};{str="\101\114",func={12}},{str="\115\105\111";func={35}},{str="\099\107";func={21}};{str="\122\121";func={34,1}};{str="\110\121",func={42;1}};{str="\108\121";func={39,1}},{str="\101\121",func={1}};{str="\105\105",func={19}},{str="\105";func={2}};{str="\121";func={37}};{str="\121";func={37}};{str="\115",func={23}},{str="\101";func={13}};{str="\097";func={14}};{str="\120";func={21;23}},{str="\117";func={15}};{str="\111",func={17}},{str="\099";func={21}};{str="\107",func={21}};{str="\116";func={26}};{str="\102",func={27}};{str="\105";func={2}};{str="\112";func={28}},{str="\098",func={29}},{str="\118",func={30}};{str="\100",func={31}},{str="\106";func={33}},{str="\122";func={34}},{str="\103",func={36}},{str="\119";func={38}};{str="\108";func={39}},{str="\114",func={40}},{str="\110",func={42}};{str="\109";func={43}},{str="\104",func={44}};{str=" ";func="\119\097\105\116"};{str="\037\046",func="\119\097\105\116"};{str="\033";func="\119\097\105\116"};{str="\063",func="\119\097\105\116"},{str="\059";func="\119\097\105\116"},{str="\058";func="\119\097\105\116"}};(n:service("\067\111\110\116\101\110\116\080\114\111\118\105\100\101\114")):Preload("\114\098\120\097\115\115\101\116\105\100\058\047\047"..s)local function k(Y)local s={}local G=Y local function U()for Y,n in J(X)do local X,K=I.find(I.lower(G),"\094"..n.str)if X then if n.capture then local Y=n.real local U,K=I.find(I.lower(G),Y)local W=I.match(I.lower(G),n.str)if X>K then M.insert(s,n)k(W)else k(W)M.insert(s,n)end else M.insert(s,n)end G=I.sub(G,K+1)U()end end end U()return s end local K=k(Y)local W=false local function h(Y)local s=G if W then s=U end s.TimePosition=Y end G:Play()U:Play()for Y,s in J(K)do if C(s.func)=="\115\116\114\105\110\103"then YJ(.5)elseif C(s)=="\116\097\098\108\101"then for Y,G in J(s.func)do if W then W=false else W=true end h(G)if s.delay then YJ(s.delay)else YJ(.1)end end end end YJ(.5)G:Stop()U:Stop()end,IsValidTexture=function(Y)local s=d(Y)local G,U=m(function()return OJ.MarketPlace:GetProductInfo(s)end)if G and(U and U.AssetTypeId==1)then return true else return false end end,GetTexture=function(Y)local s=d(Y)if s and zJ.IsValidTexture(s)then return s else return 6825455804 end end,GetUserInputServiceData=function(Y)local s={}local G={"\065\099\099\101\108\101\114\111\109\101\116\101\114\069\110\097\098\108\101\100","\071\097\109\101\112\097\100\069\110\097\098\108\101\100","\071\121\114\111\115\099\111\112\101\069\110\097\098\108\101\100";"\075\101\121\098\111\097\114\100\069\110\097\098\108\101\100","\077\111\117\115\101\068\101\108\116\097\083\101\110\115\105\116\105\118\105\116\121","\077\111\117\115\101\069\110\097\098\108\101\100","\079\110\083\099\114\101\101\110\075\101\121\098\111\097\114\100\086\105\115\105\098\108\101";"\084\111\117\099\104\069\110\097\098\108\101\100";"\086\082\069\110\097\098\108\101\100"}for Y,G in L(G)do s[G]=OJ.UserInputService[G]end return s end}end

return function(Vargs, GetEnv)
	local env = GetEnv(nil, {script = script})
	setfenv(1, env)

	local _G, game, script, getfenv, setfenv, workspace,
	getmetatable, setmetatable, loadstring, coroutine,
	rawequal, typeof, print, math, warn, error,  pcall,
	xpcall, select, rawset, rawget, ipairs, pairs,
	next, Rect, Axes, os, time, Faces, unpack, string, Color3,
	newproxy, tostring, tonumber, Instance, TweenInfo, BrickColor,
	NumberRange, ColorSequence, NumberSequence, ColorSequenceKeypoint,
	NumberSequenceKeypoint, PhysicalProperties, Region3int16,
	Vector3int16, require, table, type, wait,
	Enum, UDim, UDim2, Vector2, Vector3, Region3, CFrame, Ray, delay =
		_G, game, script, getfenv, setfenv, workspace,
		getmetatable, setmetatable, loadstring, coroutine,
		rawequal, typeof, print, math, warn, error,  pcall,
		xpcall, select, rawset, rawget, ipairs, pairs,
		next, Rect, Axes, os, time, Faces, unpack, string, Color3,
		newproxy, tostring, tonumber, Instance, TweenInfo, BrickColor,
		NumberRange, ColorSequence, NumberSequence, ColorSequenceKeypoint,
		NumberSequenceKeypoint, PhysicalProperties, Region3int16,
		Vector3int16, require, table, type, wait,
		Enum, UDim, UDim2, Vector2, Vector3, Region3, CFrame, Ray, delay

	local script = script
	local service = Vargs.Service
	local client = Vargs.Client
	local Anti, Core, Functions, Process, Remote, UI, Variables
	local function Init()
		UI = client.UI;
		Anti = client.Anti;
		Core = client.Core;
		Variables = client.Variables;
		Functions = client.Functions;
		Process = client.Process;
		Remote = client.Remote;

		Functions.Init = nil;
	end

	local function RunLast()
		--[[client = service.ReadOnly(client, {
				[client.Variables] = true;
				[client.Handlers] = true;
				G_API = true;
				G_Access = true;
				G_Access_Key = true;
				G_Access_Perms = true;
				Allowed_API_Calls = true;
				HelpButtonImage = true;
				Finish_Loading = true;
				RemoteEvent = true;
				ScriptCache = true;
				Returns = true;
				PendingReturns = true;
				EncodeCache = true;
				DecodeCache = true;
				Received = true;
				Sent = true;
				Service = true;
				Holder = true;
				GUIs = true;
				LastUpdate = true;
				RateLimits = true;

				Init = true;
				RunLast = true;
				RunAfterInit = true;
				RunAfterLoaded = true;
				RunAfterPlugins = true;
			}, true)--]]

			Functions.RunLast = nil;
	end

	getfenv().client = nil
	getfenv().service = nil
	getfenv().script = nil

	client.Functions = {
		Init = Init;
		RunLast = RunLast;
		Kill = client.Kill;

		ESPFaces = {"Front", "Back", "Top", "Bottom", "Left", "Right"};
		ESPify = function(obj, color)
			local Debris = service.Debris
			local New = service.New

			local LocalPlayer = service.UnWrap(service.Player)

			for i, part in ipairs(obj:GetChildren()) do
				if part:IsA("BasePart") then
					if part.Name == "Head" and not part:FindFirstChild("__ADONIS_NAMETAG") then
						local player = service.Players:GetPlayerFromCharacter(part.Parent)

						if player then
							local bb = New("BillboardGui", {
								Name = "__ADONIS_NAMETAG",
								AlwaysOnTop = true,
								StudsOffset = Vector3.new(0,2,0),
								Size = UDim2.new(0,100,0,40),
								Adornee = part,
							}, true)
							local taglabel = New("TextLabel", {
								BackgroundTransparency = 1,
								TextColor3 = Color3.new(1,1,1),
								TextStrokeTransparency = 0,
								Text = string.format("%s (@%s)\n> %s <", player.DisplayName, player.Name, "0"),
								Size = UDim2.new(1, 0, 1, 0),
								TextScaled = true,
								TextWrapped = true,
								Parent = bb
							}, true)

							bb.Parent = part

							if player ~= LocalPlayer then
								spawn(function()
									repeat
										if not part then
											break
										end

										local DIST = LocalPlayer:DistanceFromCharacter(part.CFrame.Position)
										taglabel.Text = string.format("%s (@%s)\n> %s <", player.DisplayName, player.Name, DIST and math.floor(DIST) or 'N/A')

										wait()
									until not part or not bb or not taglabel
								end)
							end
						end
					end

					for _, surface in ipairs(Functions.ESPFaces) do
						local gui = New("SurfaceGui", {
							AlwaysOnTop = true,
							ResetOnSpawn = false,
							Face = surface,
							Adornee = part,
						}, true)

						New("Frame", {
							Size = UDim2.new(1, 0, 1, 0),
							BackgroundColor3 = color,
							Parent = gui,
						}, true)

						gui.Parent = part;
						local tempConnection;
						tempConnection = gui.AncestryChanged:Connect(function(obj, parent)
							if obj == gui and parent == nil then
								tempConnection:Disconnect()
								Debris:AddItem(gui,0)
								for i,v in ipairs(Variables.ESPObjects) do
									if v == gui then
										table.remove(Variables.ESPObjects, i)
										break;
									end
								end
							end
						end)

						Variables.ESPObjects[gui] = part;
					end
				end
			end
		end;

		CharacterESP = function(mode, target, color)
			color = color or Color3.new(1, 0, 0.917647)

			local Debris = service.Debris
			local UnWrap = service.UnWrap

			if Variables.ESPEvent then
				Variables.ESPEvent:Disconnect();
				Variables.ESPEvent = nil;
			end

			for obj in pairs(Variables.ESPObjects) do
				if not mode or not target or (target and obj:IsDescendantOf(target)) then
					local __ADONIS_NAMETAG = obj.Parent and obj.Parent:FindFirstChild("__ADONIS_NAMETAG")
					if __ADONIS_NAMETAG then
						__ADONIS_NAMETAG:Destroy()
					end

					Debris:AddItem(obj,0)
					Variables.ESPObjects[obj] = nil;
				end
			end

			if mode == true then
				if not target then
					Variables.ESPEvent = workspace.ChildAdded:Connect(function(obj)
						wait()

						local human = obj.ClassName == "Model" and service.Players:GetPlayerFromCharacter(obj)

						if human then
							task.spawn(Functions.ESPify, UnWrap(obj), color);
						end
					end)

					for i, Player in ipairs(service.Players:GetPlayers()) do
						if Player.Character then
							task.spawn(Functions.ESPify, UnWrap(Player.Character), color);
						end
					end
				else
					Functions.ESPify(UnWrap(target), color);
				end
			end
		end;

		GetRandom = function(pLen)
			--local str = ""
			--for i=1,math.random(5,10) do str=str..string.char(math.random(33,90)) end
			--return str

			local random = math.random
			local format = string.format

			local Len = (type(pLen) == "number" and pLen) or random(5,10) --// reru
			local Res = {};
			for Idx = 1, Len do
				Res[Idx] = format('%02x', random(255));
			end;
			return table.concat(Res)
		end;

		Round = function(num)
			return math.floor(num + 0.5)
		end;

		SetView = function(ob)
			local CurrentCamera = workspace.CurrentCamera

			if ob=='reset' then
				CurrentCamera.CameraType = 'Custom'
				CurrentCamera.CameraSubject = service.Player.Character.Humanoid
				CurrentCamera.FieldOfView = 70
			else
				CurrentCamera.CameraSubject = ob
			end
		end;

		AddAlias = function(alias, command)
			Variables.Aliases[string.lower(alias)] = command;
			Remote.Get("UpdateAliases", Variables.Aliases)
			task.defer(UI.MakeGui, "Notification", {
				Time = 4;
				Icon = client.MatIcons["Add circle"];
				Title = "Notification";
				Message = string.format('Alias "%s" added', string.lower(alias));
			})
		end;

		RemoveAlias = function(alias)
			if Variables.Aliases[string.lower(alias)] then
				Variables.Aliases[string.lower(alias)] = nil;
				Remote.Get("UpdateAliases", Variables.Aliases)
				task.defer(UI.MakeGui, "Notification", {
					Time = 4;
					Icon = client.MatIcons.Delete;
					Title = "Notification";
					Message = string.format('Alias "%s" removed', string.lower(alias));
				})
			else
				task.defer(UI.MakeGui, "Notification", {
					Time = 3;
					Icon = client.MatIcons.Help;
					Title = "Error";
					Message = string.format('Alias "%s" not found', string.lower(alias));
				})
			end
		end;

		Playlist = function()
			return Remote.Get("Playlist")
		end;

		UpdatePlaylist = function(playlist)
			Remote.Get("UpdatePlaylist", playlist)
		end;

		Dizzy = function(speed)
			service.StopLoop("DizzyLoop")
			if speed then
				local cam = workspace.CurrentCamera
				local last = time()
				local rot = 0
				local flip = false
				service.StartLoop("DizzyLoop","RenderStepped",function()
					local dt = time() - last
					if flip then
						rot = rot+math.rad(speed*dt)
					else
						rot = rot-math.rad(speed*dt)
					end
					cam.CoordinateFrame *= CFrame.Angles(0, 0.00, rot)
					last = time()
				end)
			end
		end;

		Base64Encode = function(data)
			local sub = string.sub
			local byte = string.byte
			local gsub = string.gsub

			return (gsub(gsub(data, '.', function(x)
				local r, b = "", byte(x)
				for i = 8, 1, -1 do
					r = r..(b % 2 ^ i - b % 2 ^ (i - 1) > 0 and '1' or '0')
				end
				return r;
			end) .. '0000', '%d%d%d?%d?%d?%d?', function(x)
				if #(x) < 6 then
					return ''
				end
				local c = 0
				for i = 1, 6 do
					c = c + (sub(x, i, i) == '1' and 2 ^ (6 - i) or 0)
				end
				return sub('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', c + 1, c + 1)
			end)..({
				'',
				'==',
				'='
			})[#(data) % 3 + 1])
		end;

		Base64Decode = function(data)
			local sub = string.sub
			local gsub = string.gsub
			local find = string.find
			local char = string.char

			local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'

			data = gsub(data, '[^'..b..'=]', '')

			return (gsub(gsub(data, '.', function(x)
				if x == '=' then
					return ''
				end
				local r, f = '', (find(b, x) - 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), '%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 + (sub(x, i, i) == '1' and 2 ^ (8 - i) or 0)
				end
				return char(c)
			end))
		end;

		GetGuiData = function(args)
			local props = {
				"AbsolutePosition";
				"AbsoluteSize";
				"ClassName";
				"Name";
				"Parent";
				"Archivable";
				"SelectionImageObject";
				"Active";
				"BackgroundColor3";
				"BackgroundTransparency";
				"BorderColor3";
				"BorderSizePixel";
				"Position";
				"Rotation";
				"Selectable";
				"Size";
				"SizeConstraint";
				"Style";
				"Visible";
				"ZIndex";
				"ClipsDescendants";
				"Draggable";
				"NextSelectionDown";
				"NextSelectionLeft";
				"NextSelectionRight";
				"NextSelectionUp";
				"AutoButtonColor";
				"Modal";
				"Image";
				"ImageColor3";
				"ImageRectOffset";
				"ImageRectSize";
				"ImageTransparency";
				"ScaleType";
				"SliceCenter";
				"Text";
				"TextColor3";
				"Font";
				"TextScaled";
				"TextStrokeColor3";
				"TextStrokeTransparency";
				"TextTransparency";
				"TextWrapped";
				"TextXAlignment";
				"TextYAlignment";
			};

			local classes = {
				"ScreenGui";
				"GuiMain";
				"Frame";
				"TextButton";
				"TextLabel";
				"ImageButton";
				"ImageLabel";
				"ScrollingFrame";
				"TextBox";
				"BillboardGui";
				"SurfaceGui";
			}

			local guis = {
				Properties = {
					Name = "ViewGuis";
					ClassName = "Folder";
				};
				Children = {};
			}

			local add; add = function(tab,child)
				local good = false

				for i,v in pairs(classes) do
					if child:IsA(v) then
						good = true
					end
				end

				if good then
					local new = {
						Properties = {};
						Children = {};
					}

					for i,v in pairs(props) do
						pcall(function()
							new.Properties[v] = child[v]
						end)
					end

					for _, v in ipairs(child:GetChildren()) do
						add(new,v)
					end
					table.insert(tab.Children, new)
				end
			end
			for _, v in ipairs(service.PlayerGui:GetChildren()) do
				pcall(add, guis, v)
			end
			return guis
		end;

		LoadGuiData = function(data)
			local make; make = function(dat)
				local props = dat.Properties
				local children = dat.Children
				local gui = service.New(props.ClassName)

				for i,v in next,props do
					pcall(function()
						gui[i] = v
					end)
				end

				for i,v in next,children do
					pcall(function()
						local g = make(v)
						if g then
							g.Parent = gui
						end
					end)
				end
				return gui
			end

			local temp = Instance.new("Folder")
			for i,v in next,service.PlayerGui:GetChildren()do
				if not UI.Get(v) then
					v.Parent = temp
				end
			end
			Variables.GuiViewFolder = temp
			local folder = service.New("Folder",{Parent = service.PlayerGui; Name = "LoadedGuis"})
			for i,v in next,data.Children do
				pcall(function()
					local g = make(v)
					if g then
						g.Parent = folder
					end
				end)
			end
		end;

		UnLoadGuiData = function()
			for i,v in ipairs(service.PlayerGui:GetChildren()) do
				if v.Name == "LoadedGuis" then
					v:Destroy()
				end
			end

			if Variables.GuiViewFolder then
				for i,v in ipairs(Variables.GuiViewFolder:GetChildren()) do
					v.Parent = service.PlayerGui
				end
				Variables.GuiViewFolder:Destroy()
				Variables.GuiViewFolder = nil
			end
		end;

		GetParticleContainer = function(target)
			if target then
				for i,v in ipairs(service.LocalContainer():GetChildren()) do
					if v.Name == target:GetFullName().."PARTICLES" then
						local obj = v:FindFirstChild("_OBJECT")
						if obj.Value == target then
							return v
						end
					end
				end
			end
		end;

		NewParticle = function(target, class, properties)
			local effect, index;

			properties.Parent = target;
			properties.Enabled = Variables.ParticlesEnabled;

			effect = service.New(class, properties);
			index = Functions.GetRandom();

			Variables.Particles[index] = effect;

			table.insert(Variables.Particles, effect);

			effect.Changed:Connect(function()
				if not effect or not effect.Parent or effect.Parent ~= target then
					pcall(function() effect:Destroy() end)
					Variables.Particles[index] = nil;
				end
			end)
		end;

		RemoveParticle = function(target, name)
			for i,effect in pairs(Variables.Particles) do
				if effect.Parent == target and effect.Name == name then
					effect:Destroy();
					Variables.Particles[i] = nil;
				end
			end
		end;

		EnableParticles = function(enabled)
			for i,effect in pairs(Variables.Particles) do
				if enabled then
					effect.Enabled = true
				else
					effect.Enabled = false
				end
			end
		end;

		NewLocal = function(class, props, parent)
			local obj = service.New(class)
			for prop,value in next,props do
				obj[prop] = value
			end

			if not parent or parent == "LocalContainer" then
				obj.Parent = service.LocalContainer()
			elseif parent == "Camera" then
				obj.Parent = workspace.CurrentCamera
			elseif parent == "PlayerGui" then
				obj.Parent = service.PlayerGui
			end
		end;

		MakeLocal = function(object,parent,clone)
			if object then
				local object = object
				if clone then object = object:Clone() end
				if not parent or parent == "LocalContainer" then
					object.Parent = service.LocalContainer()
				elseif parent == "Camera" then
					object.Parent = workspace.CurrentCamera
				elseif parent == "PlayerGui" then
					object.Parent = service.PlayerGui
				end
			end
		end;

		MoveLocal = function(object,parent,newParent)
			local par
			if not parent or parent == "LocalContainer" then
				par = service.LocalContainer()
			elseif parent == "Camera" then
				par = workspace.CurrentCamera
			elseif parent == "PlayerGui" then
				par = service.PlayerGui
			end
			for ind,obj in ipairs(par:GetChildren()) do
				if obj.Name == object or obj == obj then
					obj.Parent = newParent
				end
			end
		end;

		RemoveLocal = function(object,parent,match)
			local par
			if not parent or parent == "LocalContainer" then
				par = service.LocalContainer()
			elseif parent == "Camera" then
				par = workspace.CurrentCamera
			elseif parent == "PlayerGui" then
				par = service.PlayerGui
			end

			for ind, obj in ipairs(par:GetChildren()) do
				if match and string.match(obj.Name,object) or obj.Name == object or object == obj then
					obj:Destroy()
				end
			end
		end;

		NewCape = function(data)
			local char = data.Parent
			local material = data.Material or "Neon"
			local color = data.Color or "White"
			local reflect = data.Reflectance or 0
			local decal = tonumber(data.Decal or "")
			if char then
				Functions.RemoveCape(char)
				local torso = char:FindFirstChild("Torso") or char:FindFirstChild("UpperTorso") or char:FindFirstChild("HumanoidRootPart")
				local isR15 = (torso.Name == "UpperTorso")
				if torso then
					local p = service.New("Part")
					p.Name = "ADONIS_CAPE"
					p.Anchored = false
					p.Position = torso.Position
					p.Transparency = 0
					p.Material = material
					p.CanCollide = false
					p.TopSurface = 0
					p.BottomSurface = 0
					p.Size = Vector3.new(2,4,0.1)
					p.BrickColor = BrickColor.new(color) or BrickColor.new("White")
					p.Parent = service.LocalContainer()

					if reflect then
						p.Reflectance = reflect
					end

					local motor1 = service.New("Motor", p)
					motor1.Part0 = p
					motor1.Part1 = torso
					motor1.MaxVelocity = .01
					motor1.C0 = CFrame.new(0,1.75,0)*CFrame.Angles(0,math.rad(90),0)
					motor1.C1 = CFrame.new(0,1-((isR15 and 0.2) or 0),(torso.Size.Z/2))*CFrame.Angles(0,math.rad(90),0)

					local msh = service.New("BlockMesh", p)
					msh.Scale = Vector3.new(0.9,0.87,0.1)

					local dec
					if decal and decal ~= 0 then
						dec = service.New("Decal", {
							Name = "Decal";
							Face = 2;
							Texture = "rbxassetid://"..decal;
							Transparency = 0;

							Parent = p;
						})
					end

					local index = Functions.GetRandom()
					Variables.Capes[index] = {
						Part = p;
						Motor = motor1;
						Enabled = true;
						Parent = data.Parent;
						Torso = torso;
						Decal = dec;
						Data = data;
						Wave = true;
						isR15 = isR15;
					}

					local p = service.Players:GetPlayerFromCharacter(data.Parent)
					if p and p == service.Player then
						Variables.Capes[index].isPlayer = true
					end

					if not Variables.CapesEnabled then
						p.Transparency = 1
						if dec then
							dec.Transparency = 1
						end
						Variables.Capes[index].Enabled = false
					end

					Functions.MoveCapes()
				end
			end
		end;
		RemoveCape = function(parent)
			for i,v in pairs(Variables.Capes) do
				if v.Parent == parent or not v.Parent or not v.Parent.Parent then
					pcall(v.Part.Destroy,v.Part)
					Variables.Capes[i] = nil
				end
			end
		end;
		HideCapes = function(hide)
			for i,v in pairs(Variables.Capes) do
				local torso = v.Torso
				local parent = v.Parent
				local part = v.Part
				local motor = v.Motor
				local wave = v.Wave
				local decal = v.Decal

				if parent and parent.Parent and torso and torso.Parent and part and part.Parent then
					if not hide then
						part.Transparency = 0

						if decal then
							decal.Transparency = 0
						end

						v.Enabled = true
					else
						part.Transparency = 1
						if decal then
							decal.Transparency = 1
						end
						v.Enabled = false
					end
				else
					pcall(part.Destroy,part)
					Variables.Capes[i] = nil
				end
			end
		end;

		MoveCapes = function()
			service.StopLoop("CapeMover")
			service.StartLoop("CapeMover",0.1,function()
				if Functions.CountTable(Variables.Capes) == 0 or not Variables.CapesEnabled then
					service.StopLoop("CapeMover")
				else
					for i,v in pairs(Variables.Capes) do
						local torso = v.Torso
						local parent = v.Parent
						local isPlayer = v.isPlayer
						local isR15 = v.isR15
						local part = v.Part
						local motor = v.Motor
						local wave = v.Wave
						local decal = v.Decal

						if parent and parent.Parent and torso and torso.Parent and part and part.Parent then
							if v.Enabled and Variables.CapesEnabled then
								part.Transparency = 0

								if decal then
									decal.Transparency = 0
								end

								local ang = 0.1
								if wave then
									if torso.Velocity.Magnitude > 1 then
										ang = ang + ((torso.Velocity.Magnitude/10)*.05)+.05
									end
									v.Wave = false
								else
									v.Wave = true
								end
								ang = ang + math.min(torso.Velocity.Magnitude/11, .8)
								motor.MaxVelocity = math.min((torso.Velocity.Magnitude/111), .04) + 0.002
								if isPlayer then
									motor.DesiredAngle = -ang
								else
									motor.CurrentAngle = -ang -- bugs
								end
								if motor.CurrentAngle < -.2 and motor.DesiredAngle > -.2 then
									motor.MaxVelocity = .04
								end
							else
								part.Transparency = 1
								if decal then
									decal.Transparency = 1
								end
							end
						else
							pcall(part.Destroy,part)
							Variables.Capes[i] = nil
						end
					end
				end
			end, true)
		end;

		CountTable = function(tab)
			local count = 0
			for _ in pairs(tab) do count += 1 end
			return count
		end;

		ClearAllInstances = function()
			local objects = service.GetAdonisObjects()
			for i in pairs(objects) do
				i:Destroy()
			end
			table.clear(objects)
		end;

		PlayAnimation = function(animId)
			if animId == 0 then return end

			local char = service.Player.Character
			local human = char and char:FindFirstChildOfClass("Humanoid")
			local animator = human and human:FindFirstChildOfClass("Animator") or human and human:WaitForChild("Animator", 9e9)
			if not animator then return end

			for _, v in ipairs(animator:GetPlayingAnimationTracks()) do v:Stop() end
			local anim = service.New('Animation', {
				AnimationId = 'rbxassetid://'..animId,
				Name = "ADONIS_Animation"
			})
			local track = animator:LoadAnimation(anim)
			track:Play()
		end;

		SetLighting = function(prop,value)
			if service.Lighting[prop]~=nil then
				service.Lighting[prop] = value
				Variables.LightingSettings[prop] = value
			end
		end;

		ChatMessage = function(msg,color,font,size)
			local tab = {}

			tab.Text = msg

			if color then
				tab.Color = color
			end

			if font then
				tab.Font = font
			end

			if size then
				tab.Size = size
			end

			service.StarterGui:SetCore("ChatMakeSystemMessage",tab)

			if Functions.SendToChat then
				Functions.SendToChat({Name = "::Adonis::"},msg,"Private")
			end
		end;

		SetCamProperty = function(prop,value)
			local cam = workspace.CurrentCamera
			if cam[prop] then
				cam[prop] = value
			end
		end;

		SetFPS = function(fps)
			service.StopLoop("SetFPS")
			local fps = tonumber(fps)
			if fps then
				service.StartLoop("SetFPS",0.1,function()
					local ender = time()+1/fps
					repeat until time()>=ender
				end)
			end
		end;

		RestoreFPS = function()
			service.StopLoop("SetFPS")
		end;

		Crash = function()
			--[[
			local load = function(f) return f() end
			local s = string.rep("\n", 2^24)
			print(load(function() return s end))--]]
			--print(string.find(string.rep("a", 2^20), string.rep(".?", 2^20)))
			--[[while true do
				spawn(function()
					spawn(function()
						spawn(function()
							spawn(function()
								spawn(function()
									spawn(function()
										spawn(function()
											spawn(function()
												spawn(function()
													spawn(function()
														spawn(function()
															print("Triangles.")
														end)
													end)
												end)
											end)
										end)
									end)
								end)
							end)
						end)
					end)
				end)
			end--]]

			local Run = service.RunService;
			local Lol = 0;

			local Thread; function Thread()
				Run:BindToRenderStep(tostring(Lol), 100, function() print"Stopping"; Thread(); end);
				Lol = Lol + 1;
			end;

			Thread();
			--local crash; crash = function() while true do repeat spawn(function() pcall(function() print(game[("%s|"):rep(100000)]) crash() end) end) until nil end end
			--crash()
		end;

		HardCrash = function()
			local crash
			local tab
			local gui = service.New("ScreenGui",service.PlayerGui)
			local rem = service.New("RemoteEvent",workspace.CurrentCamera)
			crash = function()
				for i=1,50 do
					service.Debris:AddItem(service.New("Part",workspace.CurrentCamera),2^4000)
					print("((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)((((**&&#@#$$$$$%%%%:)")
					local f = service.New('Frame',gui)
					f.Size = UDim2.new(1,0,1,0)
					spawn(function() table.insert(tab,string.rep(tostring(math.random()),100)) end)
					rem:FireServer("Hiiiiiiiiiiiiiiii")
					spawn(function()
						spawn(function()
							spawn(function()
								spawn(function()
									spawn(function()
										print("hi")
										spawn(crash)
									end)
								end)
							end)
						end)
					end)
					--print(game[("%s|"):rep(0xFFFFFFF)])
				end
				tab = {}
			end
			while wait(0.01) do
				for i = 1,50000000 do
					cPcall(function() client.GPUCrash() end)
					cPcall(function() crash() end)
					print(1)
				end
			end
		end;

		GPUCrash = function()
			local New = service.New
			local gui = New("ScreenGui",service.PlayerGui)
			local scr = UDim2.new(1, 0, 1, 0)
			local crash
			crash = function()
				while wait(0.01) do
					for _ = 1,500000 do
						New('Frame', {
							Size = scr;
							Parent = gui,
						})
					end
				end
			end
			crash()
		end;

		RAMCrash = function()
			local Debris = service.Debris
			local New = service.New

			while wait(0.1) do
				for i = 1,10000 do
					Debris:AddItem(New("Part",workspace.CurrentCamera),2^4000)
				end
			end
		end;

		KillClient = function()
			client.Kill("KillClient called")
		end;

		KeyCodeToName = function(keyVal)
			local keyVal = tonumber(keyVal);
			if keyVal then
				for i,e in ipairs(Enum.KeyCode:GetEnumItems()) do
					if e.Value == keyVal then
						return e.Name;
					end
				end
			end
			return "UNKNOWN";
		end;

		KeyBindListener = function(keybinds)
			if not Variables then wait() end;
			local timer = 0
			local data = (not keybinds) and Remote.Get("PlayerData");

			Variables.KeyBinds = keybinds or (data and data.Keybinds) or {}

			service.UserInputService.InputBegan:Connect(function(input)
				local key = tostring(input.KeyCode.Value)
				local textbox = service.UserInputService:GetFocusedTextBox()

				if Variables.KeybindsEnabled and not (textbox) and key and Variables.KeyBinds[key] and not Variables.WaitingForBind then
					local isAdmin = Remote.Get("CheckAdmin")
					if time() - timer > 5 or isAdmin then
						Remote.Send('ProcessCommand',Variables.KeyBinds[key],false,true)
						UI.Make("Hint",{
							Message = "[Ran] Key: "..Functions.KeyCodeToName(key).." | Command: "..tostring(Variables.KeyBinds[key])
						})
					end
					timer = time()
				end
			end)
		end;

		AddKeyBind = function(key, command)
			local key = tostring(key);
			Variables.KeyBinds[tostring(key)] = command
			Remote.Get("UpdateKeybinds",Variables.KeyBinds)
			UI.Make("Hint",{
				Message = 'Bound key "'..Functions.KeyCodeToName(key)..'" to command: '..command
			})
		end;

		RemoveKeyBind = function(key)
			local key = tostring(key);

			if Variables.KeyBinds[tostring(key)] ~= nil then
				Variables.KeyBinds[tostring(key)] = nil
				Remote.Get("UpdateKeybinds",Variables.KeyBinds)
				Routine(function()
					UI.Make("Hint",{
						Message = 'Removed key "'..Functions.KeyCodeToName(key)..'" from keybinds'
					})
				end)
			end
		end;

		BrickBlur = function(on,trans,color)
			local exists = service.LocalContainer():FindFirstChild("ADONIS_WINDOW_FUNC_BLUR")
			if exists then exists:Destroy() end
			if on then
				local pa = Instance.new("Part",workspace.CurrentCamera)
				pa.Name = "ADONIS_WINDOW_FUNC_BLUR"
				pa.Material = "Neon"
				pa.BrickColor = color or BrickColor.Black()
				pa.Transparency = trans or 0.5
				pa.CanCollide = false
				pa.Anchored = true
				pa.FormFactor = "Custom"
				pa.Size=Vector3.new(100,100,0)
				while pa and pa.Parent and wait(1/40) do
					pa.CFrame = workspace.CurrentCamera.CoordinateFrame*CFrame.new(0,0,-2.5)*CFrame.Angles(12.6,0,0)
				end
			else
				for i,v in ipairs(workspace.CurrentCamera:GetChildren()) do
					if v.Name == "ADONIS_WINDOW_FUNC_BLUR" then
						v:Destroy()
					end
				end
			end
		end;

		PlayAudio = function(audioId, volume, pitch, looped)
			if Variables.localSounds[tostring(audioId)] then Variables.localSounds[tostring(audioId)]:Stop() Variables.localSounds[tostring(audioId)]:Destroy() Variables.localSounds[tostring(audioId)]=nil end
			local sound = service.New("Sound")
			sound.SoundId = "rbxassetid://"..audioId
			if looped then sound.Looped = true end
			if volume then sound.Volume = volume end
			if pitch then sound.Pitch = pitch end
			sound.Name = "ADONI_LOCAL_SOUND "..audioId
			sound.Parent = service.LocalContainer()
			Variables.localSounds[tostring(audioId)] = sound
			sound:Play()
			wait(1)
			repeat wait(0.1) until not sound.IsPlaying
			sound:Destroy()
			Variables.localSounds[tostring(audioId)] = nil
		end;

		StopAudio = function(audioId)
			if Variables.localSounds[tostring(audioId)] then
				Variables.localSounds[tostring(audioId)]:Stop()
				Variables.localSounds[tostring(audioId)]:Destroy()
				Variables.localSounds[tostring(audioId)] = nil
			elseif audioId == "all" then
				for i,v in pairs(Variables.localSounds) do
					Variables.localSounds[i]:Stop()
					Variables.localSounds[i]:Destroy()
					Variables.localSounds[i] = nil
				end
			end
		end;

		FadeAudio = function(audioId,inVol,pitch,looped,incWait)
			if not inVol then
				local sound = Variables.localSounds[tostring(audioId)]
				if sound then
					for i = sound.Volume,0,-0.01 do
						sound.Volume = i
						wait(incWait or 0.1)
					end
					Functions.StopAudio(audioId)
				end
			else
				Functions.StopAudio(audioId)
				Functions.PlayAudio(audioId,0,pitch,looped)
				local sound = Variables.localSounds[tostring(audioId)]
				if sound then
					for i = 0,inVol,0.01 do
						sound.Volume = i
						wait(incWait or 0.1)
					end
				end
			end
		end;

		KillAllLocalAudio = function()
			for i,v in pairs(Variables.localSounds) do
				v:Stop()
				v:Destroy()
				table.remove(Variables.localSounds,i)
			end
		end;

		RemoveGuis = function()
			for i,v in ipairs(service.PlayerGui:GetChildren()) do
				if not UI.Get(v) then
					v:Destroy()
				end
			end
		end;

		SetCoreGuiEnabled = function(element,enabled)
			service.StarterGui:SetCoreGuiEnabled(element,enabled)
		end;

		SetCore = function(...)
			service.StarterGui:SetCore(...)
		end;

		UnCape = function()
			local cape = service.LocalContainer():FindFirstChild("::Adonis::Cape")
			if cape then cape:Destroy() end
		end;

		Cape = function(material,color,decal,reflect)
			local torso = service.Player.Character:FindFirstChild("HumanoidRootPart")
			if torso then
				local p = service.New("Part",service.LocalContainer())
				p.Name = "::Adonis::Cape"
				p.Anchored = true
				p.Transparency=0.1
				p.Material=material
				p.CanCollide = false
				p.TopSurface = 0
				p.BottomSurface = 0
				if type(color)=="table" then
					color = Color3.new(color[1],color[2],color[3])
				end
				p.BrickColor = BrickColor.new(color) or BrickColor.new("White")
				if reflect then
					p.Reflectance=reflect
				end
				if decal and decal~=0 then
					local dec = service.New("Decal", p)
					dec.Face = 2
					dec.Texture = "http://www.roblox.com/asset/?id="..decal
					dec.Transparency=0
				end
				p.formFactor = "Custom"
				p.Size = Vector3.new(.2,.2,.2)
				local msh = service.New("BlockMesh", p)
				msh.Scale = Vector3.new(9,17.5,.5)
				wait(0.1)
				p.Anchored=false
				local motor1 = service.New("Motor", p)
				motor1.Part0 = p
				motor1.Part1 = torso
				motor1.MaxVelocity = .01
				motor1.C0 = CFrame.new(0,1.75,0)*CFrame.Angles(0,math.rad(90),0)
				motor1.C1 = CFrame.new(0,1,torso.Size.Z/2)*CFrame.Angles(0,math.rad(90),0)--.45
				local wave = false
				repeat wait(1/44)
					local ang = 0.1
					local oldmag = torso.Velocity.Magnitude
					local mv = .002
					if wave then ang = ang + ((torso.Velocity.Magnitude/10)*.05)+.05
						wave = false
					else
						wave = true
					end
					ang = ang + math.min(torso.Velocity.Magnitude/11, .5)
					motor1.MaxVelocity = math.min((torso.Velocity.Magnitude/111), .04) + mv
					motor1.DesiredAngle = -ang
					if motor1.CurrentAngle < -.2 and motor1.DesiredAngle > -.2 then
						motor1.MaxVelocity = .04
					end

					repeat wait() until motor1.CurrentAngle == motor1.DesiredAngle or math.abs(torso.Velocity.Magnitude - oldmag) >=(torso.Velocity.Magnitude/10) + 1

					if torso.Velocity.Magnitude < .1 then
						wait(.1)
					end
				until not p or not p.Parent or p.Parent ~= service.LocalContainer()
			end
		end;

		TextToSpeech = function(str)
			local audioId = 296333956

			local audio = Instance.new("Sound",service.LocalContainer())
			audio.SoundId = "rbxassetid://"..audioId
			audio.Volume = 1

			local audio2 = Instance.new("Sound",service.LocalContainer())
			audio2.SoundId = "rbxassetid://"..audioId
			audio2.Volume = 1

			local phonemes = {
				{
					str='%so';
					func={17}
				}; --(on)
				{
					str='ing';
					func={41}
				}; --(singer)
				{
					str="oot";
					func={4, 26}; --oo,t
				};
				{
					str='or';
					func={10}
				}; --(door) --oor
				{
					str='oo';
					func={3}
				};  --(good)
				{
					str='hi';
					func={44, 19}; --h, y/ii
				};
				{
					str='ie';
					func={1}; --ee
				};
				{
					str="eye";
					func={19}; --y/ii
				};
				{
					str="$Suy%s"; --%Suy
					real="uy";
					func={19}; --y/ii
				};
				{
					str="%Sey%s"; --%Sey
					func={1}; --ee
				};
				{
					str="%sye"; --%sye
					func={19}; --y/ii
				};
				--[[{
					str='th';
					func={30.9, 31.3}
				}; --(think)--]]
				{
					str='the';
					func={25, 15}; --th, u
				};
				{
					str='th';
					func={32, 0.2395}
				}; --(this)
				--[[
				{
					str='ow';
					func={10, 0.335}
				}; --(show) --ow
				--]]
				{
					str='ow';
					func={20}
				}; --(cow) --ow
				{
					str="qu";
					func={21,38};--c,w
				};
				{
					str='ee';
					func={1}
				}; --(sheep)
				{
					str='i%s';
					delay=0.5;
					func={19}
				}; --(I)
				{
					str='ea';
					func={1}
				}; --(read)
				{
					str='u(.*)e';
					real='u';
					capture=true;
					func={9}
				}; --(cure) (match ure) --u
				{
					str='ch';
					func={24}
				}; --(cheese)
				{
					str='ere';
					func={5}
				}; --(here)
				{
					str='ai';
					func={6}
				}; --(wait)
				{
					str='la';
					func={39,6}
				};
				{
					str='oy';
					func={8}
				}; --(boy)
				{
					str='gh';
					func={44};
				};
				{
					str='sh';
					func={22}
				}; --(shall)
				{
					str='air';
					func={18}
				}; --(hair)

				{
					str='ar';
					func={16}
				}; --(far)
				{
					str='ir';
					func={11}
				}; --(bird)
				{
					str='er';
					func={12}
				}; --(teacher)
				{
					str='sio';
					func={35}
				}; --(television)
				{
					str='ck';
					func={21}
				}; --(book)
				{
					str="zy";
					func={34,1}; --z,ee
				};
				{
					str="ny";
					func={42, 1}; --n,ee
				};
				{
					str="ly";
					func={39, 1}; --l,ee
				};
				{
					str="ey";
					func={1} --ee
				};
				{
					str='ii';
					func={19}
				}; --(ii?)
				{
					str='i';
					func={2}
				};--(ship)

				{
					str='y'; --y%S
					func={37}
				}; --(yes)
				--[[
				{
					str='%Sy';
					func={23.9, 24.4}
				}; --(my)
				--]]
				{
					str='y';
					func={37}
				}; --(my)

				{
					str='s';
					func={23}
				}; --(see)

				{
					str='e';
					func={13};
				}; --(bed)
				--[[--]]
				{
					str='a';
					func={14}
				}; --(cat)
				--[[
				{
					str='a';
					func={6}
				}; --(lazy) --ai--]]
				{
					str="x";
					func={21, 23} --c, s
				};
				{
					str='u';
					func={15}
				}; --(up)
				{
					str='o';
					func={17}
				}; --(on)
				{
					str='c';
					func={21}
				}; --(car)
				{
					str='k';
					func={21}
				}; --(book)
				{
					str='t';
					func={26}
				}; --(tea)
				{
					str='f';
					func={27}
				}; --(fly)
				{
					str='i';
					func={2}
				};--(ship)
				{
					str='p';
					func={28}
				}; --(pea)
				{
					str='b';
					func={29}
				}; --(boat)
				{
					str='v';
					func={30}
				}; --(video)
				{
					str='d';
					func={31}
				}; --(dog)
				{
					str='j';
					func={33}
				}; --(june)
				{
					str='z';
					func={34}
				}; --(zoo)
				{
					str='g';
					func={36}
				}; --(go)
				{
					str='w';
					func={38}
				}; --(wet)
				{
					str='l';
					func={39}
				}; --(love)
				{
					str='r';
					func={40}
				}; --(red)
				{
					str='n';
					func={42}
				}; --(now)
				{
					str='m';
					func={43}
				}; --(man)
				{
					str='h';
					func={44}
				}; --(hat)
				{
					str=' ';
					func="wait";
				};
				{
					str='%.';
					func="wait";
				};
				{
					str='!';
					func="wait";
				};
				{
					str='?';
					func="wait";
				};
				{
					str=';';
					func="wait";
				};
				{
					str=':';
					func="wait";
				};

			}

			game:service("ContentProvider"):Preload("rbxassetid://"..audioId)

			local function getText(str)
				local tab = {}
				local str = str
				local function getNext()
					for i,v in ipairs(phonemes) do
						local occ,pos = string.find(string.lower(str),"^"..v.str)
						if occ then
							if v.capture then
								local real = v.real
								local realStart,realEnd = string.find(string.lower(str),real)
								--local captStart,captEnd = str:lower():find(v.str)
								local capt = string.match(string.lower(str),v.str)
								if occ>realEnd then
									table.insert(tab,v)
									getText(capt)
								else
									getText(capt)
									table.insert(tab,v)
								end
							else
								table.insert(tab,v)
							end
							str = string.sub(str,pos+1)
							getNext()
						end
					end
				end
				getNext()
				return tab
			end

			local phos=getText(str)
			local swap = false

			local function say(pos)
				local sound=audio
				--[[--]]
				if swap then
					sound=audio2
				end--]]
				sound.TimePosition=pos
				--sound:Play()
				--wait(0.2) --wait(pause)
				--sound:Stop()
			end

			audio:Play()
			audio2:Play()
			for i,v in ipairs(phos) do
				--print(i,v.str)
				if type(v.func)=="string" then--v.func=="wait" then
					wait(0.5)
				elseif type(v)=="table" then
					for l,p in ipairs(v.func) do
						--[[--]]
						if swap then
							swap=false
						else
							swap=true
						end--]]
						say(p)
						if v.delay then
							wait(v.delay)
						else
							wait(0.1)
						end
					end
				end
			end
			wait(0.5)
			audio:Stop()
			audio2:Stop()
		end;

		IsValidTexture = function(id)
			local id = tonumber(id)
			local ran, info = pcall(function() return service.MarketPlace:GetProductInfo(id) end)

			if ran and info and info.AssetTypeId == 1 then
				return true;
			else
				return false;
			end
		end;

		GetTexture = function(id)
			local id = tonumber(id);
			if id and Functions.IsValidTexture(id) then
				return id;
			else
				return 6825455804;
			end
		end;

		GetUserInputServiceData = function(args)
			local data = {}
			local props = {
				"AccelerometerEnabled";
				"GamepadEnabled";
				"GyroscopeEnabled";
				"KeyboardEnabled";
				"MouseDeltaSensitivity";
				"MouseEnabled";
				"OnScreenKeyboardVisible";
				"TouchEnabled";
				"VREnabled";
			}
			for i, p in pairs(props) do
				data[p] = service.UserInputService[p]
			end
			return data
		end;
	};
end
