-- Decompiled with the Synapse X Luau decompiler.


client = nil;
service = nil;
cPcall = nil;
Pcall = nil;
Routine = nil;
GetEnv = nil;
origEnv = nil;
logError = nil;
return function()
	local u1 = nil;
	local l__client__2 = client;
	local u3 = nil;
	local u4 = nil;
	local u5 = nil;
	local u6 = nil;
	local u7 = nil;
	local u8 = nil;
	getfenv().client = nil;
	getfenv().service = nil;
	getfenv().script = nil;
	local v1 = {
		Init = function()
			u1 = l__client__2.UI;
			u3 = l__client__2.Anti;
			u4 = l__client__2.Core;
			u5 = l__client__2.Variables;
			u6 = l__client__2.Functions;
			u7 = l__client__2.Process;
			u8 = l__client__2.Remote;
		end, 
		Returns = {}, 
		PendingReturns = {}, 
		EncodeCache = {}, 
		DecodeCache = {}, 
		Received = 0, 
		Sent = 0
	};
	local v2 = {};
	local l__unpack__9 = unpack;
	function v2.Test(p1)
		return "HELLO FROM THE CLIENT SIDE :)! ", l__unpack__9(p1);
	end;
	function v2.Ping(p2)
		return u8.Ping();
	end;
	function v2.ClientHooked(p3)
		return u4.Special;
	end;
	local l__next__10 = next;
	local l__service__11 = service;
	local l__os__12 = os;
	local l__tostring__13 = tostring;
	local l__table__14 = table;
	function v2.TaskManager(p4)
		if p4[1] ~= "GetTasks" then
			return;
		end;
		local v3 = {};
		local v4, v5 = l__service__11.GetTasks();
		while true do
			local v6, v7 = l__next__10(v4, v5);
			if not v6 then
				break;
			end;
			v5 = v6;
			l__table__14.insert(v3, {
				Status = v7.Status, 
				Name = v7.Name, 
				Index = v7.Index, 
				Created = v7.Created, 
				CurrentTime = l__os__12.time(), 
				Function = l__tostring__13(v7.Function)
			});		
		end;
		return v3;
	end;
	function v2.LoadCode(p5)
		local v8 = u4.LoadCode(p5[1], GetEnv());
		if not v8 then
			return;
		end;
		return v8();
	end;
	local l__type__15 = type;
	function v2.Function(p6)
		local v9 = l__client__2.Functions[p6[1]];
		if not v9 or l__type__15(v9) ~= "function" then
			return;
		end;
		return v9(l__unpack__9(p6, 2));
	end;
	function v2.Handler(p7)
		local v10 = l__client__2.Handlers[p7[1]];
		if not v10 or l__type__15(v10) ~= "function" then
			return;
		end;
		return v10(l__unpack__9(p7, 2));
	end;
	function v2.UIKeepAlive(p8)
		if u5.UIKeepAlive then
			for v11, v12 in l__next__10, l__client__2.GUIs do
				if v12.KeepAlive then
					if v12.Class == "ScreenGui" or v12.Class == "GuiMain" then
						v12.Object.Parent = l__service__11.Player.PlayerGui;
					elseif v12.Class == "TextLabel" then
						v12.Object.Parent = u1.GetHolder();
					end;
					v12.KeepAlive = false;
				end;
			end;
		end;
		return true;
	end;
	function v2.UI(p9)
		return u1.Make(p9[1], p9[3], p9[2]);
	end;
	function v2.InstanceList(p10)
		local v13 = {};
		for v14, v15 in l__next__10, l__service__11.GetAdonisObjects() do
			l__table__14.insert(v13, {
				Text = v15:GetFullName(), 
				Desc = v15.ClassName
			});
		end;
		return v13;
	end;
	local l__Enum__16 = Enum;
	local l__Color3__17 = Color3;
	function v2.ClientLog(p11)
		local u18 = {};
		local function v16(p12, p13, p14)
			local v17, v18 = l__service__11.ExtractLines(p12);
			while true do
				local v19, v20 = l__next__10(v17, v18);
				if not v19 then
					break;
				end;
				v18 = v19;
				l__table__14.insert(u18, {
					Text = v20, 
					Desc = p13 .. v20, 
					Color = p14
				});			
			end;
		end;
		local v21, v22 = l__service__11.LogService:GetLogHistory();
		while true do
			local v23, v24 = l__next__10(v21, v22);
			if not v23 then
				break;
			end;
			v22 = v23;
			if v24.messageType == l__Enum__16.MessageType.MessageOutput then
				v16(v24.message, "Output: ");
			elseif v24.messageType == l__Enum__16.MessageType.MessageWarning then
				v16(v24.message, "Warning: ", l__Color3__17.new(1, 1, 0));
			elseif v24.messageType == l__Enum__16.MessageType.MessageInfo then
				v16(v24.message, "Info: ", l__Color3__17.new(0, 0, 1));
			elseif v24.messageType == l__Enum__16.MessageType.MessageError then
				v16(v24.message, "Error: ", l__Color3__17.new(1, 0, 0));
			end;		
		end;
		return u18;
	end;
	v1.Returnables = v2;
	local v25 = {};
	local l__print__19 = print;
	local l__wait__20 = wait;
	function v25.LightingChange(p15, p16)
		l__print__19(p15, "TICKLE ME!?");
		u5.LightingChanged = true;
		l__service__11.Lighting[p15] = p16;
		u3.LastChanges.Lighting = p15;
		l__wait__20(0.1);
		u5.LightingChanged = false;
		l__print__19("TICKLED :)", u5.LightingChanged);
		if u3.LastChanges.Lighting == p15 then
			u3.LastChanges.Lighting = nil;
		end;
	end;
	v1.UnEncrypted = v25;
	local v26 = {};
	local l__pcall__21 = pcall;
	function v26.GetReturn(p17)
		l__print__19("THE SERVER IS ASKING US FOR A RETURN");
		local v27 = p17[2];
		local v28 = { l__unpack__9(p17, 3) };
		local v29 = u8.Returnables[p17[1]];
		if v29 then
			local v30 = { l__pcall__21(v29, v28) } or {};
		else
			v30 = {};
		end;
		if v30[1] == true then
			l__print__19("SENT RETURN");
			u8.Send("GiveReturn", v27, l__unpack__9(v30, 2));
			return;
		end;
		logError(v30[2]);
		u8.Send("GiveReturn", v27, "__ADONIS_RETURN_ERROR", v30[2]);
	end;
	function v26.GiveReturn(p18)
		l__print__19("SERVER GAVE US A RETURN");
		if u8.PendingReturns[p18[1]] then
			l__print__19("VALID PENDING RETURN");
			u8.PendingReturns[p18[1]] = nil;
			l__service__11.Events[p18[1]]:fire(l__unpack__9(p18, 2));
		end;
	end;
	function v26.SetVariables(p19)
		for v31, v32 in l__next__10, p19[1] do
			u5[v31] = v32;
		end;
	end;
	function v26.Print(p20)
		l__print__19(l__unpack__9(p20));
	end;
	function v26.FireEvent(p21)
		l__service__11.FireEvent(l__unpack__9(p21));
	end;
	function v26.Test(p22)
		l__print__19("OK WE GOT COMMUNICATION!  ORGL: " .. l__tostring__13(p22[1]));
	end;
	local l__error__22 = error;
	function v26.TestError(p23)
		l__error__22("THIS IS A TEST ERROR");
	end;
	function v26.TestEvent(p24)
		u8.PlayerEvent(p24[1], l__unpack__9(p24, 2));
	end;
	function v26.LoadCode(p25)
		local v33 = u4.LoadCode(p25[1], GetEnv());
		if not v33 then
			return;
		end;
		return v33();
	end;
	function v26.LaunchAnti(p26)
		u3.Launch(p26[1], p26[2]);
	end;
	function v26.UI(p27)
		u1.Make(p27[1], p27[3], p27[2]);
	end;
	function v26.RemoveUI(p28)
		u1.Remove(p28[1], p28[2]);
	end;
	function v26.StartLoop(p29)
		local v34 = p29[1];
		local v35 = p29[2];
		local v36 = p29[3];
		local v37 = u4.LoadCode(v36, GetEnv());
		if v34 and v35 and v36 and v37 then
			l__service__11.StartLoop(v34, v35, v37);
		end;
	end;
	function v26.StopLoop(p30)
		l__service__11.StopLoop(p30[1]);
	end;
	function v26.Function(p31)
		local v38 = l__client__2.Functions[p31[1]];
		if v38 and l__type__15(v38) == "function" then
			Pcall(v38, l__unpack__9(p31, 2));
		end;
	end;
	function v26.Handler(p32)
		local v39 = l__client__2.Handlers[p32[1]];
		if v39 and l__type__15(v39) == "function" then
			Pcall(v39, l__unpack__9(p32, 2));
		end;
	end;
	v1.Commands = v26;
	function v1.Fire(...)
		local l__RateLimits__40 = u7.RateLimits;
		local l__RemoteEvent__41 = u4.RemoteEvent;
		if l__RemoteEvent__41 and l__RemoteEvent__41.Object then
			local u23 = { ... };
			local u24 = l__RateLimits__40 and l__RateLimits__40.Remote or 0.01;
			l__service__11.Queue("REMOTE_SEND", function()
				u8.Sent = u8.Sent + 1;
				l__RemoteEvent__41.Object:FireServer({
					Mode = "Fire", 
					Module = l__client__2.Module, 
					Loader = l__client__2.Loader, 
					Sent = u8.Sent, 
					Received = u8.Received
				}, l__unpack__9(u23));
				l__wait__20(u24);
			end);
		end;
	end;
	local l__tick__25 = tick;
	function v1.Send(p33, ...)
		u4.LastUpdate = l__tick__25();
		u8.Fire(u8.Encrypt(p33, u4.Key), ...);
	end;
	function v1.GetFire(...)
		local l__RemoteEvent__42 = u4.RemoteEvent;
		local l__RateLimits__43 = u7.RateLimits;
		if l__RemoteEvent__42 and l__RemoteEvent__42.Function then
			local u26 = nil;
			local u27 = { ... };
			local u28 = l__service__11.New("BindableEvent");
			local u29 = l__RateLimits__43 and l__RateLimits__43.Remote or 0.02;
			l__service__11.Queue("REMOTE_SEND", function()
				u8.Sent = u8.Sent + 1;
				spawn(function()
					u26 = { l__RemoteEvent__42.Function:InvokeServer({
							Mode = "Get", 
							Module = l__client__2.Module, 
							Loader = l__client__2.Loader, 
							Sent = u8.Sent, 
							Received = u8.Received
						}, l__unpack__9(u27)) };
					u28:Fire();
				end);
				l__wait__20(u29);
			end);
			if not u26 then
				u28.Event:Wait();
				u28:Destroy();
			end;
			if u26 then
				return l__unpack__9(u26);
			end;
		end;
	end;
	function v1.Get(p34, ...)
		u4.LastUpdate = l__tick__25();
		local v44 = u8.GetFire(u8.Encrypt(p34, u4.Key), ...);
		if l__type__15(v44) ~= "table" then
			return v44;
		end;
		return l__unpack__9(v44);
	end;
	local l__string__30 = string;
	function v1.OldGet(p35, ...)
		local v45 = u6:GetRandom();
		local u31 = nil;
		local u32 = l__service__11.New("BindableEvent");
		local v46 = l__service__11.Events[v45]:Connect(function(...)
			l__print__19("WE ARE GETTING A RETURN!");
			u31 = { ... };
			u32:Fire();
			l__wait__20();
			u32:Fire();
			u32:Destroy();
		end);
		u8.PendingReturns[v45] = true;
		u8.Send("GetReturn", p35, v45, ...);
		l__print__19(l__string__30.format("GETTING RETURNS? %s", l__tostring__13(u31)));
		u32.Event:Wait();
		l__print__19(l__string__30.format("WE GOT IT! %s", l__tostring__13(u31)));
		v46:Disconnect();
		if not u31 then
			return nil;
		end;
		if u31[1] ~= "__ADONIS_RETURN_ERROR" then
			return l__unpack__9(u31);
		end;
		l__error__22(u31[2]);
	end;
	local l__math__33 = math;
	function v1.Ping()
		if not u8.Get("Ping") then
			return false;
		end;
		return l__math__33.floor((l__tick__25() - l__tick__25()) * 1000 + 0.5) / 1000 * 100;
	end;
	function v1.PlayerEvent(p36, ...)
		u8.Send("PlayerEvent", p36, ...);
	end;
	function v1.Encrypt(p37, p38, p39)
		local v47 = p39 or (u8.EncodeCache or {});
		if not p38 or not p37 then
			return p37;
		end;
		if v47[p38] and v47[p38][p37] then
			return v47[p38][p37];
		end;
		local v48 = v47[p38] or {};
		local l__byte__49 = l__string__30.byte;
		local l__abs__50 = l__math__33.abs;
		local l__sub__51 = l__string__30.sub;
		local l__len__52 = l__string__30.len;
		local l__char__53 = l__string__30.char;
		local v54 = {};
		for v55 = 1, l__len__52(p37) do
			local v56 = v55 % l__len__52(p38) + 1;
			v54[v55] = l__string__30.char((l__byte__49(l__sub__51(p37, v55, v55)) + l__byte__49(l__sub__51(p38, v56, v56))) % 126 + 1);
		end;
		local v57 = l__table__14.concat(v54);
		v47[p38] = v48;
		v48[p37] = v57;
		return v57;
	end;
	function v1.Decrypt(p40, p41, p42)
		local v58 = p42 or (u8.DecodeCache or {});
		if not p41 or not p40 then
			return p40;
		end;
		if v58[p41] and v58[p41][p40] then
			return v58[p41][p40];
		end;
		local v59 = v58[p41] or {};
		local l__byte__60 = l__string__30.byte;
		local l__abs__61 = l__math__33.abs;
		local l__sub__62 = l__string__30.sub;
		local l__len__63 = l__string__30.len;
		local l__char__64 = l__string__30.char;
		local v65 = {};
		for v66 = 1, l__len__63(p40) do
			local v67 = v66 % l__len__63(p41) + 1;
			v65[v66] = l__string__30.char((l__byte__60(l__sub__62(p40, v66, v66)) - l__byte__60(l__sub__62(p41, v67, v67))) % 126 - 1);
		end;
		local v68 = l__table__14.concat(v65);
		v58[p41] = v59;
		v59[p40] = v68;
		return v68;
	end;
	l__client__2.Remote = v1;
end;
