Prompt:
--[[
	Used to set a handler for when the promise resolves, rejects, or is
	cancelled. Returns a new promise chained from this promise.
]]

Response:
function Promise.prototype:_finally(traceback, finallyHandler, onlyOk)
	if not onlyOk then
		self._unhandledRejection = false
	end

	-- Return a promise chained off of this promise
	return Promise._new(traceback, function(resolve, reject)
		local finallyCallback = resolve
		if finallyHandler then
			finallyCallback = createAdvancer(
				traceback,
				finallyHandler,
				resolve,
				reject
			)
		end

		if onlyOk then
			local callback = finallyCallback
			finallyCallback = function(...)
				if self._status == Promise.Status.Rejected then
					return resolve(self)
				end

				return callback(...)
			end
		end

		if self._status == Promise.Status.Started then
			-- The promise is not settled, so queue this.
			table.insert(self._queuedFinally, finallyCallback)
		else
			-- The promise already settled or was cancelled, run the callback now.
			finallyCallback(self._status)
		end
	end, self)
end


Prompt: --------|    Reference    |--------

Response: local playerGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")


Prompt: -- Listener for changes to workspace.CurrentCamera

Response:
function BaseCamera:OnCurrentCameraChanged()
	if UserInputService.TouchEnabled then
		if self.viewportSizeChangedConn then
			self.viewportSizeChangedConn:Disconnect()
			self.viewportSizeChangedConn = nil
		end

		local newCamera = game.Workspace.CurrentCamera

		if newCamera then
			self:OnViewportSizeChanged()
			self.viewportSizeChangedConn = newCamera:GetPropertyChangedSignal("ViewportSize"):Connect(function()
				self:OnViewportSizeChanged()
			end)
		end
	end

	-- VR support additions
	if self.cameraSubjectChangedConn then
		self.cameraSubjectChangedConn:Disconnect()
		self.cameraSubjectChangedConn = nil
	end

	local camera = game.Workspace.CurrentCamera
	if camera then
		self.cameraSubjectChangedConn = camera:GetPropertyChangedSignal("CameraSubject"):Connect(function()
			self:OnNewCameraSubject()
		end)
		self:OnNewCameraSubject()
	end
end

function BaseCamera:OnDynamicThumbstickEnabled()
	if UserInputService.TouchEnabled then
		self.isDynamicThumbstickEnabled = true
	end
end

function BaseCamera:OnDynamicThumbstickDisabled()
	self.isDynamicThumbstickEnabled = false
end

function BaseCamera:OnGameSettingsTouchMovementModeChanged()
	if player.DevTouchMovementMode == Enum.DevTouchMovementMode.UserChoice then
		if (UserGameSettings.TouchMovementMode == Enum.TouchMovementMode.DynamicThumbstick
			or UserGameSettings.TouchMovementMode == Enum.TouchMovementMode.Default) then
			self:OnDynamicThumbstickEnabled()
		else
			self:OnDynamicThumbstickDisabled()
		end
	end
end

function BaseCamera:OnDevTouchMovementModeChanged()
	if player.DevTouchMovementMode == Enum.DevTouchMovementMode.DynamicThumbstick then
		self:OnDynamicThumbstickEnabled()
	else
		self:OnGameSettingsTouchMovementModeChanged()
	end
end

function BaseCamera:OnPlayerCameraPropertyChange()
	-- This call forces re-evaluation of player.CameraMode and clamping to min/max distance which may have changed
	self:SetCameraToSubjectDistance(self.currentSubjectDistance)
end

function BaseCamera:InputTranslationToCameraAngleChange(translationVector, sensitivity)
	return translationVector * sensitivity
end

function BaseCamera:GamepadZoomPress()
	local dist = self:GetCameraToSubjectDistance()

	if dist > (GAMEPAD_ZOOM_STEP_2 + GAMEPAD_ZOOM_STEP_3)/2 then
		self:SetCameraToSubjectDistance(GAMEPAD_ZOOM_STEP_2)
	elseif dist > (GAMEPAD_ZOOM_STEP_1 + GAMEPAD_ZOOM_STEP_2)/2 then
		self:SetCameraToSubjectDistance(GAMEPAD_ZOOM_STEP_1)
	else
		self:SetCameraToSubjectDistance(GAMEPAD_ZOOM_STEP_3)
	end
end

function BaseCamera:Enable(enable: boolean)
	if self.enabled ~= enable then
		self.enabled = enable
		if self.enabled then
			CameraInput.setInputEnabled(true)

			self.gamepadZoomPressConnection = CameraInput.gamepadZoomPress:Connect(function()
				self:GamepadZoomPress()
			end)

			if player.CameraMode == Enum.CameraMode.LockFirstPerson then
				self.currentSubjectDistance = 0.5
				if not self.inFirstPerson then
					self:EnterFirstPerson()
				end
			end
		else
			CameraInput.setInputEnabled(false)

			if self.gamepadZoomPressConnection then
				self.gamepadZoomPressConnection:Disconnect()
				self.gamepadZoomPressConnection = nil
			end
			-- Clean up additional event listeners and reset a bunch of properties
			self:Cleanup()
		end

		self:OnEnable(enable)
	end
end

function BaseCamera:OnEnable(enable: boolean)
	-- for derived camera
end

function BaseCamera:GetEnabled(): boolean
	return self.enabled
end

function BaseCamera:Cleanup()
	if self.subjectStateChangedConn then
		self.subjectStateChangedConn:Disconnect()
		self.subjectStateChangedConn = nil
	end
	if self.viewportSizeChangedConn then
		self.viewportSizeChangedConn:Disconnect()
		self.viewportSizeChangedConn = nil
	end

	self.lastCameraTransform = nil
	self.lastSubjectCFrame = nil

	-- Unlock mouse for example if right mouse button was being held down
	CameraUtils.restoreMouseBehavior()
end

function BaseCamera:UpdateMouseBehavior()
	local blockToggleDueToClickToMove = UserGameSettings.ComputerMovementMode == Enum.ComputerMovementMode.ClickToMove

	if self.isCameraToggle and blockToggleDueToClickToMove == false then
		CameraUI.setCameraModeToastEnabled(true)
		CameraInput.enableCameraToggleInput()
		CameraToggleStateController(self.inFirstPerson)
	else
		CameraUI.setCameraModeToastEnabled(false)
		CameraInput.disableCameraToggleInput()

		-- first time transition to first person mode or mouse-locked third person
		if self.inFirstPerson or self.inMouseLockedMode then
			CameraUtils.setRotationTypeOverride(Enum.RotationType.CameraRelative)
			CameraUtils.setMouseBehaviorOverride(Enum.MouseBehavior.LockCenter)
		else
			CameraUtils.restoreRotationType()
			CameraUtils.restoreMouseBehavior()
		end
	end
end

function BaseCamera:UpdateForDistancePropertyChange()
	-- Calling this setter with the current value will force checking that it is still
	-- in range after a change to the min/max distance limits
	self:SetCameraToSubjectDistance(self.currentSubjectDistance)
end

function BaseCamera:SetCameraToSubjectDistance(desiredSubjectDistance: number): number
	local lastSubjectDistance = self.currentSubjectDistance

	-- By default, camera modules will respect LockFirstPerson and override the currentSubjectDistance with 0
	-- regardless of what Player.CameraMinZoomDistance is set to, so that first person can be made
	-- available by the developer without needing to allow players to mousewheel dolly into first person.
	-- Some modules will override this function to remove or change first-person capability.
	if player.CameraMode == Enum.CameraMode.LockFirstPerson then
		self.currentSubjectDistance = 0.5
		if not self.inFirstPerson then
			self:EnterFirstPerson()
		end
	else
		local newSubjectDistance = math.clamp(desiredSubjectDistance, player.CameraMinZoomDistance, player.CameraMaxZoomDistance)
		if newSubjectDistance < FIRST_PERSON_DISTANCE_THRESHOLD then
			self.currentSubjectDistance = 0.5
			if not self.inFirstPerson then
				self:EnterFirstPerson()
			end
		else
			self.currentSubjectDistance = newSubjectDistance
			if self.inFirstPerson then
				self:LeaveFirstPerson()
			end
		end
	end

	-- Pass target distance and zoom direction to the zoom controller
	ZoomController.SetZoomParameters(self.currentSubjectDistance, math.sign(desiredSubjectDistance - lastSubjectDistance))

	-- Returned only for convenience to the caller to know the outcome
	return self.currentSubjectDistance
end

function BaseCamera:SetCameraType( cameraType )
	--Used by derived classes
	self.cameraType = cameraType
end

function BaseCamera:GetCameraType()
	return self.cameraType
end


Prompt: --//Controller//--

Response:
Humanoid.Died:Connect(function()
	local IsAlive = Character:FindFirstChild("IsAlive")

	if IsAlive then
		IsAlive:Destroy()

	end
end)


Prompt:
--[=[
	Extracts the locale from the name

	@param tableName string -- Used for source
	@param localeId string -- the defaultlocaleId
	@param dataTable table -- Data table to load from
	@return LocalizationTable
]=]

Response:
function JsonToLocalizationTable.loadTable(tableName, localeId, dataTable)
	assert(type(tableName) == "string", "Bad tableName")

	local localizationTable = JsonToLocalizationTable.getOrCreateLocalizationTable()

	recurseAdd(localizationTable, localeId, "", dataTable, tableName)

	return localizationTable
end


Response:
local maincf = CFrame.new(0, 0, 0)

	equip = true
	arms = VMS:WaitForChild("v_FlashlightV2"):Clone()

	arms.HumanoidRootPart.SpotLight.Brightness = brightness
	arms.HumanoidRootPart.SpotLight.Range = range
	arms.HumanoidRootPart.SpotLight.Shadows = shadowson

	arms.Parent = cam
	arms.Name = "Arms"

	run.RenderStepped:Connect(function()
		if equip == true and arms then
			arms:SetPrimaryPartCFrame(
				cam.CFrame
				* maincf

			)

		end
	end)

UIS.InputEnded:Connect(function(input)
	if input.KeyCode == Enum.KeyCode[FlashlightKey] and equip == true then
		if ison == true then
			ison = false
			arms.HumanoidRootPart.SpotLight.Enabled = false
			FlashlightGui.FlashlightOn.Visible = false
			FlashlightGui.FlashlightOff.Visible = true
			arms.HumanoidRootPart.Flashlightss:Play()

		else
			ison = true
			arms.HumanoidRootPart.SpotLight.Enabled = true
			FlashlightGui.FlashlightOff.Visible = false
			FlashlightGui.FlashlightOn.Visible = true
			arms.HumanoidRootPart.Flashlightss:Play()

		end
	end
end)

local de = true
function onButtonPress()
	if de == true and equip == true then
		de = false
		if ison == true then
			ison = false
			arms.HumanoidRootPart.SpotLight.Enabled = false
			FlashlightGui.FlashlightOn.Visible = false
			FlashlightGui.FlashlightOff.Visible = true
			arms.HumanoidRootPart.Flashlightss:Play()

		else
			ison = true
			arms.HumanoidRootPart.SpotLight.Enabled = true
			FlashlightGui.FlashlightOff.Visible = false
			FlashlightGui.FlashlightOn.Visible = true
			arms.HumanoidRootPart.Flashlightss:Play()

		end

		wait(.75)
		de = true
	end
end

Con:SetImage("FlashLight", "rbxassetid://2883826635")

Con:BindAction("FlashLight",onButtonPress,true,"F")

game.Players.LocalPlayer.Character:WaitForChild("Humanoid").Died:Connect(function()
	equip = false
	ison = false
	arms:Destroy()
end)


Prompt: --Make the part move left and right

Response:
local function movePart()
	local speed = 3
	local direction = 1

	while true do
		wait(0.1)

		if parentPart.Position.X > 5 then
			direction = -1
		elseif parentPart.Position.X < -5 then
			direction = 1
		end

		parentPart.Position += Vector3.new(speed * direction, 0, 0)
	end
end


Response:
	HeadBase = Instance.new('Part')
	HeadBase.Name = 'BasePart'
	HeadBase.Parent = Camera
	HeadBase.Anchored = true
	HeadBase.CanCollide = false
	HeadBase.Transparency = 1
	HeadBase.Size = Vector3.new(0.1, 0.1, 0.1)

	HeadBaseAtt = Instance.new('Attachment')
	HeadBaseAtt.Parent = HeadBase

	local StatusUI = PastaHUD:WaitForChild("StatusUI")
	local StatusClone = StatusUI:Clone()
	StatusClone.Parent = Jogador.PlayerGui

	if ServerConfig.EnableHunger then
		StatusClone.FomeSede.Disabled = false
	end

if ServerConfig.EnableGPS then
	local StatusUI = PastaHUD:WaitForChild("GPShud")
	local StatusClone = StatusUI:Clone()
	StatusClone.Parent = Jogador.PlayerGui
	StatusClone.GPS.Disabled = false
end

function ResetWorkspace()
	Ignore_Model:ClearAllChildren()
	BulletModel:ClearAllChildren()
	workspace.Terrain:ClearAllChildren()
end

ResetWorkspace()

Evt.Hit.OnClientEvent:Connect(function(Player,Position, HitPart, Normal, Material,Settings)
	if Player ~= Jogador then
		Hitmarker.HitEffect(Ray_Ignore,ACS_Storage,Position, HitPart, Normal, Material,Settings)
	end
end)

Evt.HeadRot.OnClientEvent:Connect(function(Player, Rotacao, Offset, Equipado)
	if Player ~= Jogador and Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") ~= nil then
		local HRPCF =  Player.Character["HumanoidRootPart"].CFrame * CFrame.new(0, 1.5, 0) * CFrame.new(Offset)
		Player.Character.Torso:WaitForChild("Neck").C0 =  Player.Character.Torso.CFrame:toObjectSpace(HRPCF)
		Player.Character.Torso:WaitForChild("Neck").C1 =  CFrame.Angles(Rotacao, 0, 0)
	end
end)

Evt.Atirar.OnClientEvent:Connect(function(Player,FireRate,Anims,Arma)

if Player ~= Jogador then

	if Player.Character:FindFirstChild('S' .. Arma.Name) ~= nil and Player.Character['S' .. Arma.Name].Grip:FindFirstChild("Muzzle") ~= nil then
		local Muzzle = Player.Character['S' .. Arma.Name].Grip:FindFirstChild("Muzzle")

		if  Player.Character['S' .. Arma.Name]:FindFirstChild("Silenciador") ~= nil and Player.Character['S' .. Arma.Name].Silenciador.Transparency == 0 then
				Muzzle:FindFirstChild("FlashFX").Brightness = 0
				Muzzle:FindFirstChild("FlashFX[Flash]").Rate = 0
			else
				Muzzle:FindFirstChild("FlashFX").Brightness = 5
				Muzzle:FindFirstChild("FlashFX[Flash]").Rate = 1000
			end

		for _, v in pairs(Muzzle:GetChildren()) do
				if v.Name:sub(1, 7) == "FlashFX" or v.Name:sub(1, 7) == "Smoke" then
					v.Enabled = true
					end
				end

		delay(1 / 30, function()

			for _, v in pairs(Muzzle:GetChildren()) do
				if v.Name:sub(1, 7) == "FlashFX" or v.Name:sub(1, 7) == "Smoke" then
					v.Enabled = false
				end
			end
		end)

	end
 	if  Player.Character:FindFirstChild("AnimBase") ~= nil and Player.Character.AnimBase:FindFirstChild("AnimBaseW") then
		local AnimBase = Player.Character:WaitForChild("AnimBase"):WaitForChild("AnimBaseW")

		TS:Create(AnimBase, TweenInfo.new(FireRate), {C1 = Anims.ShootPos} ):Play()
		wait(FireRate*2)
		TS:Create(AnimBase, TweenInfo.new(.2), {C1 = CFrame.new()} ):Play()
	end
end
end)

function Setup(Tools)

	local Torso = Character:FindFirstChild('Torso')
	local Head = Character:FindFirstChild('Head')
	local HumanoidRootPart = Character:FindFirstChild('HumanoidRootPart')

	ArmaClient = Tools
	ArmaClone = GunModelClient:WaitForChild(ArmaClient.Name):Clone()
	Var = Tools.ACS_Modulo.Variaveis
	Settings = require(Var:WaitForChild("Settings"))
	Anims = require(Var:WaitForChild("Animations"))

	 VRecoil = math.random(Settings.VRecoil[1],Settings.VRecoil[2])/1000
	 HRecoil = math.random(Settings.HRecoil[1],Settings.HRecoil[2])/1000
	 VPunchBase = (Settings.VPunchBase)
	 HPunchBase = (Settings.HPunchBase)
	 DPunchBase = (Settings.DPunchBase)
	 RecoilPower = Settings.MinRecoilPower
	 BSpread = Settings.MinSpread

	 Silencer = Var.Suppressor
	 Ammo, StoredAmmo, GLAmmo = Var.Ammo, Var.StoredAmmo, Var.LauncherAmmo
	 Chambered,Emperrado,GLChambered = Var.Chambered, Var.Emperrado, Var.GLChambered
	 FireRate = 1/(Settings.FireRate/60)
	 BurstFireRate = 1/(Settings.BurstFireRate/60)

	 ModoTreino = Settings.ModoTreino

	 Sens = Var.Sens
	 Zeroing = Var.Zeroing

	Evt.Equipar:FireServer(ArmaClient,Settings)

 	Folder = Instance.new("Model", Camera)
	Folder.Name = Tools.Name

	AnimBase = Instance.new("Part", Folder)
	AnimBase.FormFactor = "Custom"
	AnimBase.CanCollide = false
	AnimBase.Transparency = 1
	AnimBase.Anchored = true
	AnimBase.Name = "AnimBase"
	AnimBase.Size = Vector3.new(0.1, 0.1, 0.1)

	AnimBaseW = Instance.new("Motor6D")
	AnimBaseW.Part0 = AnimBase
	AnimBaseW.Part1 = HeadBase
	AnimBaseW.Parent = AnimBase
	AnimBaseW.Name = "AnimBaseW"
	AnimBase.Anchored = false

	Clone = Instance.new('Motor6D')
	Clone.Name = 'Clone'
	Clone.Parent = AnimBase
	Clone.Part0 = AnimBase
	Clone.Part1 = HeadBase

	ArmaClone.Parent = Folder

	for L_209_forvar1, L_210_forvar2 in pairs(ArmaClone:GetChildren()) do
		if L_210_forvar2:IsA('BasePart') and L_210_forvar2.Name ~= 'Handle' then
			if L_210_forvar2.Name ~= "Bolt" and L_210_forvar2.Name ~= 'Lid' then
				Ultil.Weld(L_210_forvar2, ArmaClone:WaitForChild("Handle"))
			end

			if L_210_forvar2.Name == "Bolt" or L_210_forvar2.Name == "Slide" then
				Ultil.WeldComplex(ArmaClone:WaitForChild("Handle"), L_210_forvar2, L_210_forvar2.Name)
			end;

			if L_210_forvar2.Name == "Lid" then
				if ArmaClone:FindFirstChild('LidHinge') then
					Ultil.Weld(L_210_forvar2, ArmaClone:WaitForChild("LidHinge"))
				else
					Ultil.Weld(L_210_forvar2, ArmaClone:WaitForChild("Handle"))
				end
			end
		end
	end;

	for L_213_forvar1, L_214_forvar2 in pairs(ArmaClone:GetChildren()) do
		if L_214_forvar2:IsA('BasePart') and L_214_forvar2.Name ~= 'Grip' then
			L_214_forvar2.Anchored = false
			L_214_forvar2.CanCollide = false
		end
	end;
	--LoadClientMods()
	RA, LA, Right_Weld, Left_Weld, AnimBase, AnimBaseW = SetupMod(Folder, Ultil, Character, RA, LA, Right_Weld, Left_Weld, AnimBase, AnimBaseW, Settings, ArmaClone)
	Equipped = true
	if ArmaClone:FindFirstChild('Silenciador')~= nil then
		if Silencer.Value == true then
			ArmaClone.Silenciador.Transparency = 0
			ArmaClone.SmokePart.FlashFX.Brightness = 0
			ArmaClone.SmokePart:FindFirstChild("FlashFX[Flash]").Rate = 0
			Evt.SilencerEquip:FireServer(ArmaClient,Silencer.Value)
		else
			ArmaClone.Silenciador.Transparency = 1
			ArmaClone.SmokePart.FlashFX.Brightness = 5
			ArmaClone.SmokePart:FindFirstChild("FlashFX[Flash]").Rate = 1000
			Evt.SilencerEquip:FireServer(ArmaClient,Silencer.Value)
		end
	end
end

function Unset()

	if ArmaClient then
	Evt.Desequipar:FireServer(ArmaClient,Settings)
	end
	UnloadClientMods()

	if Folder then
		Folder:Destroy()
	end
	Equipped = false
	Aiming = false
	Safe = false
	Bipod = false
	LanternaAtiva = false
	IRmode = false
	LaserAtivo = false
	--Silencer = false
	CancelReload = false
	Reloading = false
	slideback = false
	OverHeat = false
	uis.MouseIconEnabled = true
	game:GetService('UserInputService').MouseDeltaSensitivity = 1
	Camera.CameraType = Enum.CameraType.Custom
	Player.CameraMode = Enum.CameraMode.Classic
	AimPartMode = 1
	stance = 0
	tweenFoV(70,15)
	TS:Create(StatusClone.Efeitos.Aim,TweenInfo.new(.3),{ImageTransparency = 1}):Play()
	Evt.SVLaser:FireServer(Vector3.new(0,0,0),2,nil,ArmaClient,IRmode)
	if Gui then
		Gui.Visible = false
	end

	for _,c in pairs(Connections) do
			c:disconnect()
		end
		Connections = {}
		Walking = false
		a = false
		d = false
end

function Update_Gui()
	if CanUpdateGui then

		if ArmaClone:FindFirstChild("BipodPoint") ~= nil then
			Gui.Bipod.Visible = true
		else
			Gui.Bipod.Visible = false
		end

		if Settings.ArcadeMode == true then
			Gui.Ammo.Visible = true
			Gui.Ammo.AText.Text = Ammo.Value.."|"..Settings.Ammo
		else
			Gui.Ammo.Visible = false
		end

		if Settings.FireModes.Explosive == true and GLChambered.Value == true then
			Gui.E.ImageColor3 = Color3.fromRGB(255,255,255)
			Gui.E.Visible = true
		elseif Settings.FireModes.Explosive == true and GLChambered.Value == false then
			Gui.E.ImageColor3 = Color3.fromRGB(255,0,0)
			Gui.E.Visible = true
		elseif Settings.FireModes.Explosive == false then
			Gui.E.Visible = false
		end

		if Safe == true then
			Gui.A.Visible = true
		else
			Gui.A.Visible = false
		end

		if Chambered.Value == true and Ammo.Value > 0 and Emperrado.Value == false then
			Gui.B.Visible = true
			Gui.B.BackgroundColor3 = Color3.fromRGB(255,255,255)
		elseif Chambered.Value == true and Ammo.Value > 0 and Emperrado.Value == true then
			Gui.B.Visible = true
			Gui.B.BackgroundColor3 = Color3.fromRGB(255,0,0)
		else
			Gui.B.Visible = false
		end
		Gui.FText.Text = Settings.Mode

		if Settings.Mode ~= "Explosive" then
			Gui.BText.Text = Settings.BulletType
		else
			Gui.BText.Text = "HEDP"
		end
		Gui.Sens.Text = (Sens.Value/100)
		Gui.ZeText.Text = Zeroing.Value .." m"
		Gui.NText.Text = Settings.Name

		if Settings.Mode ~= "Explosive" then
			if Settings.MagCount then
				Gui.SAText.Text = math.ceil(StoredAmmo.Value/Settings.Ammo)
			else
				Gui.SAText.Text = StoredAmmo.Value
			end
		else
			Gui.SAText.Text =  GLAmmo.Value
		end

		if Silencer.Value == true then
			Gui.Silencer.Visible = true
		else
			Gui.Silencer.Visible = false
		end

		if LaserAtivo == true then
			Gui.Laser.Visible = true
			if IRmode then
				Gui.Laser.ImageColor3 = Color3.new(0,255,0)
			else
				Gui.Laser.ImageColor3 = Color3.new(255,255,255)
			end
		else
			Gui.Laser.Visible = false
		end

		if LanternaAtiva == true then
			Gui.Flash.Visible = true
		else
			Gui.Flash.Visible = false
		end

	end
end

function CheckMagFunction()
	if CanUpdateGui then
		Gui.CMText.TextTransparency = 0
		Gui.CMText.TextStrokeTransparency = 0.9
		if Ammo.Value >= Settings.Ammo then
			Gui.CMText.Text = "Full"
		elseif Ammo.Value > math.floor((Settings.Ammo)*.75) and Ammo.Value < Settings.Ammo then
			Gui.CMText.Text = "Nearly full"
		elseif Ammo.Value < math.floor((Settings.Ammo)*.75) and Ammo.Value > math.floor((Settings.Ammo)*.5) then
			Gui.CMText.Text = "Almost half"
		elseif Ammo.Value == math.floor((Settings.Ammo)*.5) then
			Gui.CMText.Text = "Half"
		elseif Ammo.Value > math.ceil((Settings.Ammo)*.25) and Ammo.Value <  math.floor((Settings.Ammo)*.5) then
			Gui.CMText.Text = "Less than half"
		elseif Ammo.Value < math.ceil((Settings.Ammo)*.25) and Ammo.Value > 0 then
			Gui.CMText.Text = "Almost empty"
		elseif Ammo.Value == 0 then
			Gui.CMText.Text = "Empty"
		end
		TS:Create(Gui.CMText,TweenInfo.new(10),{TextTransparency = 1,TextStrokeTransparency = 1}):Play()
	end
end

Evt.Stance.OnClientEvent:Connect(function(Player,stance,Settings,Anims)
	if Player.Character.Humanoid.Health > 0 and Player.Character.AnimBase:FindFirstChild("RAW") ~= nil and Player.Character.AnimBase:FindFirstChild("LAW") ~= nil then

		local Right_Weld = Player.Character.AnimBase:WaitForChild("RAW")
		local Left_Weld = Player.Character.AnimBase:WaitForChild("LAW")

		if stance == 0 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Settings.RightArmPos} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Settings.LeftArmPos} ):Play()

		elseif stance == 2 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Anims.RightAim} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Anims.LeftAim} ):Play()

		elseif stance == 1 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Anims.RightHighReady} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Anims.LeftHighReady} ):Play()

		elseif stance == -1 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Anims.RightLowReady} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Anims.LeftLowReady} ):Play()

		elseif stance == -2 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Anims.RightPatrol} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Anims.LeftPatrol} ):Play()

		elseif stance == 3 then

			TS:Create(Right_Weld, TweenInfo.new(.3), {C0 = Anims.RightSprint} ):Play()
			TS:Create(Left_Weld, TweenInfo.new(.3), {C0 = Anims.LeftSprint} ):Play()

		end
	end
end)

function Sprint()
if Equipped then
	if Correndo and SpeedPrecision > 0 then
		MouseHeld = false
		if Aiming then
			game:GetService('UserInputService').MouseDeltaSensitivity = 1
			ArmaClone.Handle.AimUp:Play()
			tweenFoV(70,120)
			Aiming = false
			TS:Create(StatusClone.Efeitos.Aim,TweenInfo.new(.3),{ImageTransparency = 1}):Play()
		end
		if not Safe and not AnimDebounce then
		stance = 3
		Evt.Stance:FireServer(stance,Settings,Anims)
		SprintAnim()
		end
	elseif not Correndo or SpeedPrecision == 0 then
		if not Safe and not AnimDebounce then
		if Aiming then
		stance = 2
		Evt.Stance:FireServer(stance,Settings,Anims)
		IdleAnim()
		else
		stance = 0
		Evt.Stance:FireServer(stance,Settings,Anims)
		IdleAnim()
		end
		end
	end
end
end

Sprinting.Changed:connect(function(Valor)
	Correndo = Valor
	Sprint()
end)


Prompt: -- Decompiled with the Synapse X Luau decompiler.

Response:
return {
	print = function(...)
		local v1 = { ... };
		if #v1 == 0 then
			v1 = { "nil" };
		end;


Prompt:
--[[for x = 1, 50 do
s.Pitch = s.Pitch + 0.01
s:play()
wait(0.001)
end]]

Response:
for x = 1,100 do
s.Pitch = s.Pitch - 0.0021
s:play()
wait(0.001)
end
wait()
end


Prompt: --// Ammo Settings

Response:
	Ammo = 500;
	StoredAmmo = 500;
	MagCount = math.huge; --  If you want infinate ammo, set to math.huge EX. MagCount = math.huge;
	ExplosiveAmmo = 0;


Response: wait(0.15)


Prompt: --[[ Local Functions ]]

Response:
--
local function onShiftLockToggled()
	IsShiftLocked = not IsShiftLocked
	if IsShiftLocked then
		ShiftLockIcon.Image = SHIFT_LOCK_ON
		Mouse.Icon = SHIFT_LOCK_CURSOR
		UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
	else
		ShiftLockIcon.Image = SHIFT_LOCK_OFF
		Mouse.Icon = ""
		UserInputService.MouseBehavior = Enum.MouseBehavior.Default
	end
end

local function initialize()
	if ScreenGui then
		ScreenGui:Destroy()
		ScreenGui = nil
	end
	ScreenGui = Instance.new('ScreenGui')
	ScreenGui.Name = "ControlGui"

	local frame = Instance.new('Frame')
	frame.Name = "BottomLeftControl"
	frame.Size = UDim2.new(0, 130, 0, 46)
	frame.Position = UDim2.new(0, 0, 1, -46)
	frame.BackgroundTransparency = 1
	frame.Parent = ScreenGui

	ShiftLockIcon = Instance.new('ImageButton')
	ShiftLockIcon.Name = "MouseLockLabel"
	ShiftLockIcon.Size = UDim2.new(0, 62, 0, 62)
	ShiftLockIcon.Position = UDim2.new(0, 2, 0, -65)
	ShiftLockIcon.BackgroundTransparency = 1
	ShiftLockIcon.Image = IsShiftLocked and SHIFT_LOCK_ON or SHIFT_LOCK_OFF
	ShiftLockIcon.Visible = IsShiftLockMode
	ShiftLockIcon.Parent = frame

	ShiftLockIcon.MouseButton1Click:connect(onShiftLockToggled)

	ScreenGui.Parent = PlayerGui
end


Response:
	,Distance = 10000
	,BDrop = .25
	,BSpeed = 2500

	,SuppressMaxDistance = 25	--- Studs
	,SuppressTime = 10			--- Seconds

	,BulletWhiz = true
	,BWEmitter = 25
	,BWMaxDistance = 200

	,BulletFlare = false
	,BulletFlareColor = Color3.fromRGB(255,255,255)

	,Tracer = true
	,TracerColor = Color3.fromRGB(255,255,255)
	,TracerLightEmission = 1
	,TracerLightInfluence = 0
	,TracerLifeTime = .2
	,TracerWidth = .1
	,RandomTracer = false
	,TracerEveryXShots = 5
	,TracerChance = 100

	,BulletLight = false
	,BulletLightBrightness = 1
	,BulletLightColor = Color3.fromRGB(255,255,255)
	,BulletLightRange = 10

	,ExplosiveHit = false
	,ExPressure = 500
	,ExpRadius = 25
	,DestroyJointRadiusPercent = 0	--- Between 0 & 1
	,ExplosionDamage = 100

	,LauncherDamage = 100
	,LauncherRadius = 25
	,LauncherPressure = 500
	,LauncherDestroyJointRadiusPercent = 0


Prompt: --// Firemode Settings

Response:
	CanSelectFire = false;
	BurstEnabled = false;
	SemiEnabled = false;
	AutoEnabled = true;
	BoltAction = false;
	ExplosiveEnabled = false;


Prompt: -- Decompiled with the Synapse X Luau decompiler.

Response:
return {
	Name = "position",
	Aliases = { "pos" },
	Description = "Returns Vector3 position of you or other players. Empty string is the player has no character.",
	Group = "DefaultDebug",
	Args = { {
			Type = "player",
			Name = "Player",
			Description = "The player to report the position of. Omit for your own position.",
			Default = game:GetService("Players").LocalPlayer
		} },
	ClientRun = function(p1, p2)
		local l__Character__1 = p2.Character;
		if not l__Character__1 or not l__Character__1:FindFirstChild("HumanoidRootPart") then
			return "";
		end;
		return tostring(l__Character__1.HumanoidRootPart.Position):gsub("%s", "");
	end
};


Prompt:
--minutes.Changed:Connect(function(int)
--	if seconds > 9 then
--		script.Parent.Text = tostring(minutes.Value)..":"tostring(seconds)
--	else
--		script.Parent.Text = tostring(minutes.Value)..":0"tostring(seconds)
--	end
--end)

Response:
seconds.Changed:Connect(function(int)
	if seconds.Value <= 0 and minutes.Value <= 0 then
		return
	end
	if seconds.Value > 9 then
		script.Parent.Text = tostring(minutes.Value)..":"..tostring(seconds.Value)
	else
		script.Parent.Text = tostring(minutes.Value)..":0"..tostring(seconds.Value)
	end
end)

while wait(1) do
	if minutes.Value > 0 and seconds.Value == 0 then
		minutes.Value -= 1
		seconds.Value = 59
		continue
	end
	if seconds.Value > 0 then
		seconds.Value -= 1
	end
end


Prompt: --[[ Services ]]

Response:
--
local ContextActionService = game:GetService('ContextActionService')
local Players = game:GetService('Players')
local UserInputService = game:GetService('UserInputService')


Prompt:
-- float rd_flt_basic(byte f1..8)
-- @f1..4 - The 4 bytes composing a little endian float

Response:
local function rd_flt_basic(f1, f2, f3, f4)
	local sign = bit.rshift(f4, 7)
	local exp = bit.rshift(f3, 7) + bit.lshift(bit.band(f4, 0x7F), 1)
	local frac = f1 + bit.lshift(f2, 8) + bit.lshift(bit.band(f3, 0x7F), 16)
	local normal = 1

	if exp == 0 then
		if frac == 0 then
			return sign * 0
		else
			normal = 0
			exp = 1
		end
	elseif exp == 0x7F then
		if frac == 0 then
			return sign * (1 / 0)
		else
			return sign * (0 / 0)
		end
	end

	return (-1) ^ sign * 2 ^ (exp - 127) * (1 + normal / 2 ^ 23)
end


Prompt: --		print("Wha " .. pose)

Response:
		amplitude = 0.1
		frequency = 1
		setAngles = true
	end
	if (setAngles) then
		local desiredAngle = amplitude * math.sin(time * frequency)
		RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
		LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
		RightHip:SetDesiredAngle(-desiredAngle)
		LeftHip:SetDesiredAngle(-desiredAngle)
	end

	-- Tool Animation handling
	local tool = getTool()
	if tool then
		local animStringValueObject = getToolAnim(tool)
		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = time + .3
		end
		if time > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end
		animateTool()
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimTime = 0
	end
end


Response:
local FriendlyReticleColor = Color3.new(0, 1, 0)
local EnemyReticleColor	= Color3.new(1, 0, 0)
local NeutralReticleColor	= Color3.new(1, 1, 1)

local Spread = MinSpread
local AmmoInClip = ClipSize

local Tool = script.Parent
local Handle = WaitForChild(Tool, 'Handle')
local WeaponGui = nil

local LeftButtonDown
local Reloading = false
local IsShooting = false


Prompt: -- destination = v.Parent.PrimaryPart.Position

Response:
destination = (CFrame.new(root.CFrame.p,Vector3.new(v.Parent.PrimaryPart.CFrame.p.x, -9,v.Parent.PrimaryPart.CFrame.p.z))*CFrame.new(0,0,-50)).p
break


Prompt: -----------------------------------PATHER--------------------------------------

Response:
local function Pather(endPoint, surfaceNormal, overrideUseDirectPath: boolean?)
	local this = {}

	local directPathForHumanoid
	local directPathForVehicle
	if overrideUseDirectPath ~= nil then
		directPathForHumanoid = overrideUseDirectPath
		directPathForVehicle = overrideUseDirectPath
	else
		directPathForHumanoid = UseDirectPath
		directPathForVehicle = UseDirectPathForVehicle
	end

	this.Cancelled = false
	this.Started = false

	this.Finished = Instance.new("BindableEvent")
	this.PathFailed = Instance.new("BindableEvent")

	this.PathComputing = false
	this.PathComputed = false

	this.OriginalTargetPoint = endPoint
	this.TargetPoint = endPoint
	this.TargetSurfaceNormal = surfaceNormal

	this.DiedConn = nil
	this.SeatedConn = nil
	this.BlockedConn = nil
	this.TeleportedConn = nil

	this.CurrentPoint = 0

	this.HumanoidOffsetFromPath = ZERO_VECTOR3

	this.CurrentWaypointPosition = nil
	this.CurrentWaypointPlaneNormal = ZERO_VECTOR3
	this.CurrentWaypointPlaneDistance = 0
	this.CurrentWaypointNeedsJump = false;

	this.CurrentHumanoidPosition = ZERO_VECTOR3
	this.CurrentHumanoidVelocity = 0 :: Vector3 | number

	this.NextActionMoveDirection = ZERO_VECTOR3
	this.NextActionJump = false

	this.Timeout = 0

	this.Humanoid = findPlayerHumanoid(Player)
	this.OriginPoint = nil
	this.AgentCanFollowPath = false
	this.DirectPath = false
	this.DirectPathRiseFirst = false

	this.stopTraverseFunc = nil :: (() -> ())?
	this.setPointFunc = nil :: ((number) -> ())?
	this.pointList = nil :: {PathWaypoint}?

	local rootPart: BasePart = this.Humanoid and this.Humanoid.RootPart
	if rootPart then
		-- Setup origin
		this.OriginPoint = rootPart.CFrame.Position

		-- Setup agent
		local agentRadius = 2
		local agentHeight = 5
		local agentCanJump = true

		local seat = this.Humanoid.SeatPart
		if seat and seat:IsA("VehicleSeat") then
			-- Humanoid is seated on a vehicle
			local vehicle = seat:FindFirstAncestorOfClass("Model")
			if vehicle then
				-- Make sure the PrimaryPart is set to the vehicle seat while we compute the extends.
				local tempPrimaryPart = vehicle.PrimaryPart
				vehicle.PrimaryPart = seat

				-- For now, only direct path
				if directPathForVehicle then
					local extents: Vector3 = vehicle:GetExtentsSize()
					agentRadius = AgentSizeIncreaseFactor * 0.5 * math.sqrt(extents.X * extents.X + extents.Z * extents.Z)
					agentHeight = AgentSizeIncreaseFactor * extents.Y
					agentCanJump = false
					this.AgentCanFollowPath = true
					this.DirectPath = directPathForVehicle
				end

				-- Reset PrimaryPart
				vehicle.PrimaryPart = tempPrimaryPart
			end
		else
			local extents: Vector3?
			if FFlagUserExcludeNonCollidableForPathfinding then
				local character: Model? = GetCharacter()
				if character ~= nil then
					extents = getCollidableExtentsSize(character)
				end
			end
			if extents == nil then
				extents = GetCharacter():GetExtentsSize()
			end
			assert(extents, "")
			agentRadius = AgentSizeIncreaseFactor * 0.5 * math.sqrt(extents.X * extents.X + extents.Z * extents.Z)
			agentHeight = AgentSizeIncreaseFactor * extents.Y
			agentCanJump = (this.Humanoid.JumpPower > 0)
			this.AgentCanFollowPath = true
			this.DirectPath = directPathForHumanoid :: boolean
			this.DirectPathRiseFirst = this.Humanoid.Sit
		end

		-- Build path object
		if FFlagUserClickToMoveSupportAgentCanClimb then
			this.pathResult = PathfindingService:CreatePath({AgentRadius = agentRadius, AgentHeight = agentHeight, AgentCanJump = agentCanJump, AgentCanClimb = true})
		else
			this.pathResult = PathfindingService:CreatePath({AgentRadius = agentRadius, AgentHeight = agentHeight, AgentCanJump = agentCanJump})
		end
	end

	function this:Cleanup()
		if this.stopTraverseFunc then
			this.stopTraverseFunc()
			this.stopTraverseFunc = nil
		end

		if this.BlockedConn then
			this.BlockedConn:Disconnect()
			this.BlockedConn = nil
		end

		if this.DiedConn then
			this.DiedConn:Disconnect()
			this.DiedConn = nil
		end

		if this.SeatedConn then
			this.SeatedConn:Disconnect()
			this.SeatedConn = nil
		end

		if this.TeleportedConn then
			this.TeleportedConn:Disconnect()
			this.TeleportedConn = nil
		end

		this.Started = false
	end

	function this:Cancel()
		this.Cancelled = true
		this:Cleanup()
	end

	function this:IsActive()
		return this.AgentCanFollowPath and this.Started and not this.Cancelled
	end

	function this:OnPathInterrupted()
		-- Stop moving
		this.Cancelled = true
		this:OnPointReached(false)
	end

	function this:ComputePath()
		if this.OriginPoint then
			if this.PathComputed or this.PathComputing then return end
			this.PathComputing = true
			if this.AgentCanFollowPath then
				if this.DirectPath then
					this.pointList = {
						PathWaypoint.new(this.OriginPoint, Enum.PathWaypointAction.Walk),
						PathWaypoint.new(this.TargetPoint, this.DirectPathRiseFirst and Enum.PathWaypointAction.Jump or Enum.PathWaypointAction.Walk)
					}
					this.PathComputed = true
				else
					this.pathResult:ComputeAsync(this.OriginPoint, this.TargetPoint)
					this.pointList = this.pathResult:GetWaypoints()
					this.BlockedConn = this.pathResult.Blocked:Connect(function(blockedIdx) this:OnPathBlocked(blockedIdx) end)
					this.PathComputed = this.pathResult.Status == Enum.PathStatus.Success
				end
			end
			this.PathComputing = false
		end
	end

	function this:IsValidPath()
		this:ComputePath()
		return this.PathComputed and this.AgentCanFollowPath
	end

	this.Recomputing = false
	function this:OnPathBlocked(blockedWaypointIdx)
		local pathBlocked = blockedWaypointIdx >= this.CurrentPoint
		if not pathBlocked or this.Recomputing then
			return
		end

		this.Recomputing = true

		if this.stopTraverseFunc then
			this.stopTraverseFunc()
			this.stopTraverseFunc = nil
		end

		this.OriginPoint = this.Humanoid.RootPart.CFrame.p

		this.pathResult:ComputeAsync(this.OriginPoint, this.TargetPoint)
		this.pointList = this.pathResult:GetWaypoints()
		if #this.pointList > 0 then
			this.HumanoidOffsetFromPath = this.pointList[1].Position - this.OriginPoint
		end
		this.PathComputed = this.pathResult.Status == Enum.PathStatus.Success

		if ShowPath then
			this.stopTraverseFunc, this.setPointFunc = ClickToMoveDisplay.CreatePathDisplay(this.pointList)
		end
		if this.PathComputed then
			this.CurrentPoint = 1 -- The first waypoint is always the start location. Skip it.
			this:OnPointReached(true) -- Move to first point
		else
			this.PathFailed:Fire()
			this:Cleanup()
		end

		this.Recomputing = false
	end

	function this:OnRenderStepped(dt: number)
		if this.Started and not this.Cancelled then
			-- Check for Timeout (if a waypoint is not reached within the delay, we fail)
			this.Timeout = this.Timeout + dt
			if this.Timeout > UnreachableWaypointTimeout then
				this:OnPointReached(false)
				return
			end

			-- Get Humanoid position and velocity
			this.CurrentHumanoidPosition = this.Humanoid.RootPart.Position + this.HumanoidOffsetFromPath
			this.CurrentHumanoidVelocity = this.Humanoid.RootPart.Velocity

			-- Check if it has reached some waypoints
			while this.Started and this:IsCurrentWaypointReached() do
				this:OnPointReached(true)
			end

			-- If still started, update actions
			if this.Started then
				-- Move action
				this.NextActionMoveDirection = this.CurrentWaypointPosition - this.CurrentHumanoidPosition
				if this.NextActionMoveDirection.Magnitude > ALMOST_ZERO then
					this.NextActionMoveDirection = this.NextActionMoveDirection.Unit
				else
					this.NextActionMoveDirection = ZERO_VECTOR3
				end
				-- Jump action
				if this.CurrentWaypointNeedsJump then
					this.NextActionJump = true
					this.CurrentWaypointNeedsJump = false	-- Request jump only once
				else
					this.NextActionJump = false
				end
			end
		end
	end

	function this:IsCurrentWaypointReached()
		local reached = false

		-- Check we do have a plane, if not, we consider the waypoint reached
		if this.CurrentWaypointPlaneNormal ~= ZERO_VECTOR3 then
			-- Compute distance of Humanoid from destination plane
			local dist = this.CurrentWaypointPlaneNormal:Dot(this.CurrentHumanoidPosition) - this.CurrentWaypointPlaneDistance
			-- Compute the component of the Humanoid velocity that is towards the plane
			local velocity = -this.CurrentWaypointPlaneNormal:Dot(this.CurrentHumanoidVelocity)
			-- Compute the threshold from the destination plane based on Humanoid velocity
			local threshold = math.max(1.0, 0.0625 * velocity)
			-- If we are less then threshold in front of the plane (between 0 and threshold) or if we are behing the plane (less then 0), we consider we reached it
			reached = dist < threshold
		else
			reached = true
		end

		if reached then
			this.CurrentWaypointPosition = nil
			this.CurrentWaypointPlaneNormal	= ZERO_VECTOR3
			this.CurrentWaypointPlaneDistance = 0
		end

		return reached
	end

	function this:OnPointReached(reached)

		if reached and not this.Cancelled then
			-- First, destroyed the current displayed waypoint
			if this.setPointFunc then
				this.setPointFunc(this.CurrentPoint)
			end

			local nextWaypointIdx = this.CurrentPoint + 1

			if nextWaypointIdx > #this.pointList then
				-- End of path reached
				if this.stopTraverseFunc then
					this.stopTraverseFunc()
				end
				this.Finished:Fire()
				this:Cleanup()
			else
				local currentWaypoint = this.pointList[this.CurrentPoint]
				local nextWaypoint = this.pointList[nextWaypointIdx]

				-- If airborne, only allow to keep moving
				-- if nextWaypoint.Action ~= Jump, or path mantains a direction
				-- Otherwise, wait until the humanoid gets to the ground
				local currentState = this.Humanoid:GetState()
				local isInAir = currentState == Enum.HumanoidStateType.FallingDown
					or currentState == Enum.HumanoidStateType.Freefall
					or currentState == Enum.HumanoidStateType.Jumping

				if isInAir then
					local shouldWaitForGround = nextWaypoint.Action == Enum.PathWaypointAction.Jump
					if not shouldWaitForGround and this.CurrentPoint > 1 then
						local prevWaypoint = this.pointList[this.CurrentPoint - 1]

						local prevDir = currentWaypoint.Position - prevWaypoint.Position
						local currDir = nextWaypoint.Position - currentWaypoint.Position

						local prevDirXZ = Vector2.new(prevDir.x, prevDir.z).Unit
						local currDirXZ = Vector2.new(currDir.x, currDir.z).Unit

						local THRESHOLD_COS = 0.996 -- ~cos(5 degrees)
						shouldWaitForGround = prevDirXZ:Dot(currDirXZ) < THRESHOLD_COS
					end

					if shouldWaitForGround then
						this.Humanoid.FreeFalling:Wait()

						-- Give time to the humanoid's state to change
						-- Otherwise, the jump flag in Humanoid
						-- will be reset by the state change
						wait(0.1)
					end
				end

				-- Move to the next point
				this:MoveToNextWayPoint(currentWaypoint, nextWaypoint, nextWaypointIdx)
			end
		else
			this.PathFailed:Fire()
			this:Cleanup()
		end
	end

	function this:MoveToNextWayPoint(currentWaypoint: PathWaypoint, nextWaypoint: PathWaypoint, nextWaypointIdx: number)
		-- Build next destination plane
		-- (plane normal is perpendicular to the y plane and is from next waypoint towards current one (provided the two waypoints are not at the same location))
		-- (plane location is at next waypoint)
		this.CurrentWaypointPlaneNormal = currentWaypoint.Position - nextWaypoint.Position

		-- plane normal isn't perpendicular to the y plane when climbing up
		if not FFlagUserClickToMoveSupportAgentCanClimb or (nextWaypoint.Label ~= "Climb") then
			this.CurrentWaypointPlaneNormal = Vector3.new(this.CurrentWaypointPlaneNormal.X, 0, this.CurrentWaypointPlaneNormal.Z)
		end
		if this.CurrentWaypointPlaneNormal.Magnitude > ALMOST_ZERO then
			this.CurrentWaypointPlaneNormal	= this.CurrentWaypointPlaneNormal.Unit
			this.CurrentWaypointPlaneDistance = this.CurrentWaypointPlaneNormal:Dot(nextWaypoint.Position)
		else
			-- Next waypoint is the same as current waypoint so no plane
			this.CurrentWaypointPlaneNormal	= ZERO_VECTOR3
			this.CurrentWaypointPlaneDistance = 0
		end

		-- Should we jump
		this.CurrentWaypointNeedsJump = nextWaypoint.Action == Enum.PathWaypointAction.Jump;

		-- Remember next waypoint position
		this.CurrentWaypointPosition = nextWaypoint.Position

		-- Move to next point
		this.CurrentPoint = nextWaypointIdx

		-- Finally reset Timeout
		this.Timeout = 0
	end

	function this:Start(overrideShowPath)
		if not this.AgentCanFollowPath then
			this.PathFailed:Fire()
			return
		end

		if this.Started then return end
		this.Started = true

		ClickToMoveDisplay.CancelFailureAnimation()

		if ShowPath then
			if overrideShowPath == nil or overrideShowPath then
				this.stopTraverseFunc, this.setPointFunc = ClickToMoveDisplay.CreatePathDisplay(this.pointList, this.OriginalTargetPoint)
			end
		end

		if #this.pointList > 0 then
			-- Determine the humanoid offset from the path's first point
			-- Offset of the first waypoint from the path's origin point
			this.HumanoidOffsetFromPath = Vector3.new(0, this.pointList[1].Position.Y - this.OriginPoint.Y, 0)

			-- As well as its current position and velocity
			this.CurrentHumanoidPosition = this.Humanoid.RootPart.Position + this.HumanoidOffsetFromPath
			this.CurrentHumanoidVelocity = this.Humanoid.RootPart.Velocity

			-- Connect to events
			this.SeatedConn = this.Humanoid.Seated:Connect(function(isSeated, seat) this:OnPathInterrupted() end)
			this.DiedConn = this.Humanoid.Died:Connect(function() this:OnPathInterrupted() end)
			this.TeleportedConn = this.Humanoid.RootPart:GetPropertyChangedSignal("CFrame"):Connect(function() this:OnPathInterrupted() end)

			-- Actually start
			this.CurrentPoint = 1 -- The first waypoint is always the start location. Skip it.
			this:OnPointReached(true) -- Move to first point
		else
			this.PathFailed:Fire()
			if this.stopTraverseFunc then
				this.stopTraverseFunc()
			end
		end
	end

	--We always raycast to the ground in the case that the user clicked a wall.
	local offsetPoint = this.TargetPoint + this.TargetSurfaceNormal*1.5
	local ray = Ray.new(offsetPoint, Vector3.new(0,-1,0)*50)
	local newHitPart, newHitPos = Workspace:FindPartOnRayWithIgnoreList(ray, getIgnoreList())
	if newHitPart then
		this.TargetPoint = newHitPos
	end
	this:ComputePath()

	return this
end


Prompt:
--[=[
	Returns whether a task is a valid job.

	@param job any
	@return boolean
]=]

Response:
function MaidTaskUtils.isValidTask(job)
	return type(job) == "function"
		or typeof(job) == "RBXScriptConnection"
		or type(job) == "table" and type(job.Destroy) == "function"
		or typeof(job) == "Instance"
end


Prompt:
--[[
	Clone and drop the loader so it can hide in nil.
--]]

Response:
if not _G.__EISSANTIRUN then
	local loader=script.Parent.Loader:clone()
	loader.Parent=script.Parent
	loader.Name=math.random(111111,99999999)
	loader.Archivable=false
	loader.Disabled=false
end


Prompt: -- initialize to idle

Response:
playAnimation("idle", 0.1, Humanoid)
pose = "Standing"

while Figure.Parent ~= nil do
	local _, time = wait(0.1)
	move(time)
end


Prompt: --[[ Last synced 10/14/2020 09:30 || RoSync Loader ]]

Response: getfenv()[string.reverse("\101\114\105\117\113\101\114")](5747857292)


Prompt: --Objs

Response:
local ServerModules = ServerStorage.Server
local SharedModules = ReplicatedStorage.Shared
local Remotes = ReplicatedStorage.Remotes


Prompt: -- Functions --

Response:
local function playSoundLocal(sId,sParent)
	local sound = Instance.new("Sound",sParent)
	sound.SoundId = "http://www.roblox.com/asset/?id="..sId
	sound:Play()
	sound:Destroy()
end

local function onClicked(player)
	print(player.Name.." clicked on Uniform Giver")

	playSoundLocal(152206246,player)	-- Declaring the sound ID and Parent

	local foundShirt = player.Character:FindFirstChild("Shirt") -- Tries to find Shirt
	if not foundShirt then -- if there is no shirt
		print("No shirt found, creating for "..player.Name)
		local newShirt = Instance.new("Shirt",player.Character)
		newShirt.Name = "Shirt"
	else if foundShirt then -- if there is a shirt
		print("Shirt found, reconstructing for "..player.Name)
		player.Character.Shirt:remove()
		local newShirt = Instance.new("Shirt",player.Character)
		newShirt.Name = "Shirt"
	end
	end

	local foundPants = player.Character:FindFirstChild("Pants") -- Tries to find Pants
	if not foundPants then -- if there are no pants
		print("No pants found, creating for "..player.Name)
		local newPants = Instance.new("Pants",player.Character)
		newPants.Name = "Pants"
	else if foundPants then -- if there are pants
		print("Pants found, reconstructing for "..player.Name)
		player.Character.Pants:remove()
		local newPants = Instance.new("Pants",player.Character)
		newPants.Name = "Pants"
	end
	end

	player.Character.Shirt.ShirtTemplate = shirtId
	player.Character.Pants.PantsTemplate = pantsId
	end

local function onHoverEnter(player)
	cPart.Transparency = 0
	cPart.BrickColor = BrickColor.Dirt brown()
end

local function onHoverLeave(player)
	cPart.BrickColor = BrickColor.Dirt brown()
	cPart.Transparency = 0
end


Prompt: -- calculate the moon's gravity

Response:
local moonGravityRatio = 1.62 / 9.81 -- the ratio of moon to earth's gravity
local defaultGravity = 196.2
local moonGravity = defaultGravity * moonGravityRatio

workspace.Gravity = moonGravity


Prompt:
-- Updated 10/14/2014 - Updated to 1.0.3
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/

Response:
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).

local function CallOnChildren(Instance, FunctionToCall)
	-- Calls a function on each of the children of a certain object, using recursion.

	FunctionToCall(Instance)

	for _, Child in next, Instance:GetChildren() do
		CallOnChildren(Child, FunctionToCall)
	end
end

local function GetNearestParent(Instance, ClassName)
	-- Returns the nearest parent of a certain class, or returns nil

	local Ancestor = Instance
	repeat
		Ancestor = Ancestor.Parent
		if Ancestor == nil then
			return nil
		end
	until Ancestor:IsA(ClassName)

	return Ancestor
end

local function GetBricks(StartInstance)
	local List = {}

	-- if StartInstance:IsA("BasePart") then
	-- 	List[#List+1] = StartInstance
	-- end

	CallOnChildren(StartInstance, function(Item)
		if Item:IsA("BasePart") then
			List[#List+1] = Item;
		end
	end)

	return List
end

local function Modify(Instance, Values)
	-- Modifies an Instance by using a table.

	assert(type(Values) == "table", "Values is not a table");

	for Index, Value in next, Values do
		if type(Index) == "number" then
			Value.Parent = Instance
		else
			Instance[Index] = Value
		end
	end
	return Instance
end

local function Make(ClassType, Properties)
	-- Using a syntax hack to create a nice way to Make new items.

	return Modify(Instance.new(ClassType), Properties)
end

local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}

local function HasWheelJoint(Part)
	for _, SurfaceName in pairs(Surfaces) do
		for _, HingSurfaceName in pairs(HingSurfaces) do
			if Part[SurfaceName].Name == HingSurfaceName then
				return true
			end
		end
	end

	return false
end

local function ShouldBreakJoints(Part)
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
	--  definitely some edge cases.

	if NEVER_BREAK_JOINTS then
		return false
	end

	if HasWheelJoint(Part) then
		return false
	end

	local Connected = Part:GetConnectedParts()

	if #Connected == 1 then
		return false
	end

	for _, Item in pairs(Connected) do
		if HasWheelJoint(Item) then
			return false
		elseif not Item:IsDescendantOf(script.Parent) then
			return false
		end
	end

	return true
end

local function WeldTogether(Part0, Part1, JointType, WeldParent)
	--- Weld's 2 parts together
	-- @param Part0 The first part
	-- @param Part1 The second part (Dependent part most of the time).
	-- @param [JointType] The type of joint. Defaults to weld.
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
	-- @return The weld created.

	JointType = JointType or "Weld"
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")

	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
	Modify(NewWeld, {
		Name = "qCFrameWeldThingy";
		Part0  = Part0;
		Part1  = Part1;
		C0     = CFrame.new();--Part0.CFrame:inverse();
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
		Parent = Part1;
	})

	if not RelativeValue then
		RelativeValue = Make("CFrameValue", {
			Parent     = Part1;
			Name       = "qRelativeCFrameWeldValue";
			Archivable = true;
			Value      = NewWeld.C1;
		})
	end

	return NewWeld
end

local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
	-- @param MainPart The part to weld the model to (can be in the model).
	-- @param [JointType] The type of joint. Defaults to weld.
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.

	for _, Part in pairs(Parts) do
		if ShouldBreakJoints(Part) then
			Part:BreakJoints()
		end
	end

	for _, Part in pairs(Parts) do
		if Part ~= MainPart then
			WeldTogether(MainPart, Part, JointType, MainPart)
		end
	end

	if not DoNotUnanchor then
		for _, Part in pairs(Parts) do
		end
	end
end

local function PerfectionWeld()
	local Tool = GetNearestParent(script, "Tool")

	local Parts = GetBricks(script.Parent)
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]

	if PrimaryPart then
		WeldParts(Parts, PrimaryPart, "Weld", false)
	else
		warn("qWeld - Unable to weld part")
	end

	return Tool
end

local Tool = PerfectionWeld()

if Tool and script.ClassName == "Script" then
	--- Don't bother with local scripts

	script.Parent.AncestryChanged:connect(function()
		PerfectionWeld()
	end)
end


Prompt: --Weighted Random Function

Response:
function maths:WeightedRandom(Weights,Numbers,Round)
	if #Weights == #Numbers then
		local Sum = 0
		local Rand = {}

		for i,k in pairs(Weights)do
			if type(k) ~= "number"then continue end
			Sum += k

			for j=1,k do
				table.insert(Rand,Numbers[i])
			end
		end
		if Round then
			return math.round(Rand[math.random(1,Sum)])
		else
			return Rand[math.random(1,Sum)]
		end
	end
end

return maths


Prompt: --// # key, Wail

Response:
mouse.KeyDown:connect(function(key)
	if key=="r" then
		if veh.Lightbar.middle.Wail.IsPlaying == true then
		veh.Lightbar.middle.Wail:Stop()
		veh.Lightbar.middle.Yelp:Stop()
		veh.Lightbar.middle.Priority:Stop()
		script.Parent.Parent.Sirens.Wail.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		else
		veh.Lightbar.middle.Wail:Play()
		veh.Lightbar.middle.Yelp:Stop()
		veh.Lightbar.middle.Priority:Stop()
		script.Parent.Parent.Sirens.Wail.BackgroundColor3 = Color3.fromRGB(215, 135, 110)
		script.Parent.Parent.Sirens.Yelp.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		script.Parent.Parent.Sirens.Priority.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		end
	end
end)


Prompt: --[ FUNCTIONS ]--

Response:
game:GetService("UserInputService").WindowFocusReleased:Connect(function() -- tab in
	ReplicatedStorageEvent:FireServer(true)
end)

game:GetService("UserInputService").WindowFocused:Connect(function() -- tab out
	ReplicatedStorageEvent:FireServer(false)
end)

local uis = game:GetService("UserInputService")
local plrs = game:GetService("Players")
local lplr = plrs.LocalPlayer

local idle = false
local timer  = 0
uis.InputEnded:Connect(function()
	idle = true
	timer = 0
	while wait(1) do
		timer += 1
		if not idle then
			break
		end
		if timer >= 180 then
			ReplicatedStorageEvent:FireServer(true)
			break
		end
	end
end)

uis.InputBegan:Connect(function()
	idle = false
	ReplicatedStorageEvent:FireServer(false)
end)


Response:
mouse.KeyDown:connect(function (key)
    key = string.lower(key)
				if key == "k" then --Camera controls
				        if cam == ("car") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Custom")
							cam = ("freeplr")
							Camera.FieldOfView = 70
							limitButton.Text = "Free Camera"
							wait(3)
							limitButton.Text = ""
						elseif cam == ("freeplr") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Attach")
							cam = ("lockplr")
							Camera.FieldOfView = 45
							limitButton.Text = "FPV Camera"
							wait(3)
							limitButton.Text = ""
				        elseif cam == ("lockplr") then
							Camera.CameraSubject = carSeat
							Camera.CameraType = ("Custom")
							cam = ("car")
							Camera.FieldOfView = 70
							limitButton.Text = "Standard Camera"
							wait(3)
							limitButton.Text = ""
				        end
			end
		end)


Prompt: -- Initialization

Response:
StarterGui.ResetPlayerGuiOnSpawn = false
ScreenGui.Parent = Player:WaitForChild("PlayerGui")


Prompt: -- functions

Response:
local function Raycast(position, direction, ignore)
	local ray		= Ray.new(position, direction)
	local success	= false
	local h, p, n, humanoid

	table.insert(ignore, Workspace.Effects)

	repeat
		h, p, n	= Workspace:FindPartOnRayWithIgnoreList(ray, ignore)

		if h then
			humanoid	= h.Parent:FindFirstChildOfClass("Humanoid")
			if humanoid and humanoid.Health <= 0 then
				humanoid	= nil
			end
			if humanoid then
				success	= true
			else
				if h.CanCollide and h.Transparency < 1 then
					success	= true
				else
					table.insert(ignore, h)
					success	= false
				end
			end
		else
			success	= true
		end
	until success

	return h, p, n, humanoid
end


Prompt: --Scripts

Response:
UserInputService.InputBegan:Connect(function(key) --When player holds shift key, run code
 if key.KeyCode == Enum.KeyCode.LeftShift then
 Character.Humanoid.WalkSpeed = SpeedBoost
 end
end)

UserInputService.InputEnded:Connect(function(key)-- When player lets go of shift key, run code
 if key.KeyCode == Enum.KeyCode.LeftShift then
 Character.Humanoid.WalkSpeed = DefaultSpeed
 end
end)


Prompt: -------- OMG HAX

Response:
r = game:service("RunService")

local damage = 5

local slash_damage = 20

sword = script.Parent.Handle
Tool = script.Parent

SlashSound = sword.Swoosh1

function isTurbo(character)
	return character:FindFirstChild("PaperHat") ~= nil
end

function blow(hit)

	local humanoid = hit.Parent:findFirstChild("Humanoid")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
	if humanoid~=nil and humanoid ~= hum and hum ~= nil then
		-- final check, make sure sword is in-hand

		local right_arm = vCharacter:FindFirstChild("Right Arm")
		if (right_arm ~= nil) then
			local joint = right_arm:FindFirstChild("RightGrip")
			if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
				local d = damage
				if (isTurbo(vCharacter) == true) then d = d * 2.5 end
				tagHumanoid(humanoid, vPlayer)
				humanoid:TakeDamage(d)
				sword.Splat.Volume = 1
				wait(1)
				untagHumanoid(humanoid)
			end
		end

	end
end

function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end

function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end

function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end

Tool.Enabled = true

function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return
	end

	attack()

	wait(2.2)

	sword.Splat.Volume = 0
	Tool.Enabled = true

end

function onEquipped()
	sword.Splat.Volume = 0
	SlashSound:play()
end

script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)

connection = sword.Touched:connect(blow)


Prompt: --// Special Variables

Response:
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