Roblox/luau_corpus huggingface dataset:
---[[ Window Settings ]]
module.MinimumWindowSize = UDim2.new(0.3, 0, 0.25, 0)
module.MaximumWindowSize = UDim2.new(1, 0, 1, 0) -- if you change this to be greater than full screen size, weird things start to happen with size/position bounds checking.
module.DefaultWindowPosition = UDim2.new(0, 0, 0.03, 2)
local extraOffset = (7 * 2) + (5 * 2) -- Extra chatbar vertical offset
module.DefaultWindowSizePhone = UDim2.new(0.5, 0, 0.5, extraOffset)
module.DefaultWindowSizeTablet = UDim2.new(0.4, 0, 0.3, extraOffset)
module.DefaultWindowSizeDesktop = UDim2.new(0.3, 0, 0.25, extraOffset)
--[=[
	Adds a callback to be called before save on removal
	@param callback function -- May return a promise
]=]
function PlayerDataStoreManager:AddRemovingCallback(callback)
	table.insert(self._removingCallbacks, callback)
end
--MainScript
repeat
	local Code1 = script.Parent.Code
	local EnteredCode1 = script.Parent.EnteredCode
	wait()
until Code1.Value == EnteredCode1.Value and Ready == true
AddButton1.Script:Destroy()
AddButton1.ClickDetector:Destroy()
AddButton1.Size = Size
AddButton1.Material = Material
AddButton2.Script:Destroy()
AddButton2.ClickDetector:Destroy()
AddButton2.Size = Size
AddButton2.Material = Material
AddButton3.Script:Destroy()
AddButton3.ClickDetector:Destroy()
AddButton3.Size = Size
AddButton3.Material = Material

SubtractButton1.Script:Destroy()
SubtractButton1.ClickDetector:Destroy()
SubtractButton1.Size = Size
SubtractButton1.Material = Material
SubtractButton2.Script:Destroy()
SubtractButton2.ClickDetector:Destroy()
SubtractButton2.Size = Size
SubtractButton2.Material = Material
SubtractButton3.Script:Destroy()
SubtractButton3.ClickDetector:Destroy()
SubtractButton3.Size = Size
SubtractButton3.Material = Material

Screen1.Color = Color
Screen2.Color = Color
Screen2.Unlock:Play()
Screen3.Color = Color

script.Parent.MainDoor:Destroy()
script:Destroy()
--!strict
-- upstream: https://github.com/facebook/react/blob/ba82eea3837e4aaeb5a30b7827b664a8c2128d2e/packages/shared/ReactFeatureFlags.js
--[[*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 ]]
-- Unknown globals fail type checking (see "Unknown symbols" section of
-- https://roblox.github.io/luau/typecheck.html)
local exports = {}
--script.Parent.Close:play()
wait(0.01) 
end
script.Parent.CFrame = cframe
end
opening = false
end
end)
--[[
	Sets the position of the internal springs, meaning the value of this
	Spring will jump to the given value. This doesn't affect velocity.

	If the type doesn't match the current type of the spring, an error will be
	thrown.
]]
function class:setPosition(newValue)
	local newType = typeof(newValue)
	if newType ~= self._currentType then
		parseError("springTypeMismatch", nil, newType, self._currentType)
	end

	self._springPositions = unpackType(newValue, newType)
	self._currentValue = newValue
	SpringScheduler.add(self)
	Dependencies.updateAll(self)
end
--[=[
	Checks if the right mouse button is down.
]=]
function Mouse:IsRightDown(): boolean
	return UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2)
end
--[[
	Main RenderStep Update. The camera controller and occlusion module both have opportunities
	to set and modify (respectively) the CFrame and Focus before it is set once on CurrentCamera.
	The camera and occlusion modules should only return CFrames, not set the CFrame property of
	CurrentCamera directly.
--]]
function CameraModule:Update(dt)
	if self.activeCameraController then
		self.activeCameraController:UpdateMouseBehavior()

		local newCameraCFrame, newCameraFocus = self.activeCameraController:Update(dt)
		if not FFlagUserFlagEnableNewVRSystem then
			self.activeCameraController:ApplyVRTransform()
		end
		if self.activeOcclusionModule then
			newCameraCFrame, newCameraFocus = self.activeOcclusionModule:Update(dt, newCameraCFrame, newCameraFocus)
		end

		-- Here is where the new CFrame and Focus are set for this render frame
		game.Workspace.CurrentCamera.CFrame = newCameraCFrame
		game.Workspace.CurrentCamera.Focus = newCameraFocus

		-- Update to character local transparency as needed based on camera-to-subject distance
		if self.activeTransparencyController then
			self.activeTransparencyController:Update(dt)
		end

		if CameraInput.getInputEnabled() then
			CameraInput.resetInputForFrameEnd()
		end
	end
end
--PlayerClick0
ClickDetector.MouseClick:Connect(function()
	if Ready == true then
		if Open == false then
			Ready = false
			Open = true
			OpenSound:Play()
			OpenTween:Play()
			OpenTween1:Play()
			wait(.5)
			Ready = true
		elseif Open == true then
			Ready = false
			Open = false
			CloseSound:Play()
			CloseTween:Play()
			CloseTween1:Play()
			wait(.5)
			Ready = true
		end
	end
end)
-- ROBLOX deviation START: skipped
-- Expect.assertions = assertions
-- Expect.hasAssertions = hasAssertions
-- ROBLOX deviation END
Expect.getState = getState
Expect.setState = setState
--[[Transmission]]
	Tune.TransModes		= {"Semi", "Auto"}								--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
		>First mode is default mode													]]
	
	--Automatic Settings
	Tune.AutoShiftMode	= "RPM"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
    Tune.FinalDrive		= 3.32			-- Gearing determines top speed and wheel torque
    Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
	    --[[Reverse]]	0.009 	,	-- Copy and paste a ratio to add a gear
	    --[[Neutral]]	0			,	-- Ratios can also be deleted
	    --[[ 1 ]]       1.5		,	-- Reverse, Neutral, and 1st gear are required
		
		
	
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
-- ROBLOX TODO: ADO-1449 add imports for snapshot_resolver and related functionality

local SnapshotState = require(CurrentModule.State)

local plugins = require(CurrentModule.plugins)
local addSerializer = plugins.addSerializer
local getSerializers = plugins.getSerializers

local printSnapshot = require(CurrentModule.printSnapshot)
local PROPERTIES_ARG = printSnapshot.PROPERTIES_ARG
--// Load client

if _G.__CLIENTLOADER then
	warn("ClientLoader already running;");
else
	_G.__CLIENTLOADER = true;

	print("Debug: ACLI Loading?")
	setfenv(1, {})
	script.Name = "\0"
	script:Destroy()
	--lockCheck(script)
	--lockCheck(game)

	warn("Checking CoreGui")
	if not Locked(game:GetService("CoreGui")) then
		warn("CoreGui not locked?")
		Kill("ACLI: Error")
	else
		warn("CoreGui Locked: "..tostring(Locked(game:GetService("CoreGui"))))
	end

	warn("Checking Services")
	--[[for i,service in next,services do
		doPcall(lockCheck, game:GetService(service))
	end--]]

	warn("Waiting for PlayerGui...");
	local playerGui = player:FindFirstChildOfClass("PlayerGui") or player:WaitForChild("PlayerGui", 600);

	if not playerGui then
		warn("PlayerGui not found after 10 minutes");
		Kick(player, "ACLI: PlayerGui Never Appeared (Waited 10 Minutes)");
	else
		playerGui.Changed:Connect(function()
			if playerGui.Name ~= "PlayerGui" then
				playerGui.Name = "PlayerGui";
			end
		end)
	end

	finderEvent = playerGui.ChildAdded:Connect(function(child)
		warn("Child Added")
		if not foundClient and child.Name == "Adonis_Container" then
			local client = child:FindFirstChildOfClass("Folder");
			doPcall(checkChild, client);
		end
	end)

	warn("Waiting and scanning (incase event fails)...")
	repeat
		scan(playerGui);
		wait(5);
	until (time() - start > 600) or foundClient

	warn("Elapsed: ".. tostring(time() - start));
	warn("Timeout: ".. tostring(time() - start > 600));
	warn("Found Client: ".. tostring(foundClient));

	warn("Disconnecting finder event...");
	if finderEvent then
		finderEvent:Disconnect();
	end

	warn("Checking if client found...")
	if not foundClient then
		warn("Loading took too long")
		Kick(player, "\nACLI: [CLI-1162246] \nLoading Error [Took Too Long (>10 Minutes)]")
	else
		print("Debug: Adonis loaded?")
		warn("Client found")
		warn("Finished")
		warn(time())
	end
end
--[[
	Defines ProximityPrompt visibility logic specific to the CanPlacePot cta
--]]

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ItemCategory = require(ReplicatedStorage.Source.SharedConstants.ItemCategory)

local countInventoryItemsInCategory = require(ReplicatedStorage.Source.Utility.PlayerData.countInventoryItemsInCategory)

local function shouldEnable(promptParent: Instance)
	-- Only show when player has a pot to place
	local numPotsOwned = countInventoryItemsInCategory(ItemCategory.Pots)
	return numPotsOwned > 0
end

return shouldEnable
-- Public Methods

function RadialMenuClass:SetRadialProps(props)
	for _, child in next, self.Frame.Radial:GetChildren() do
		for prop, value in next, props do
			child[prop] = value
		end
	end
end

function RadialMenuClass:SetDialProps(props)
	local dial = self.Frame.RadialDial
	for prop, value in next, props do
		dial[prop] = value
	end
end

function RadialMenuClass:GetTheta(userInputType)
	local delta = nil
	
	if (MOUSE_GROUP[userInputType]) then
		local frame = self.Frame
		local radius = frame.AbsoluteSize.y/2
		local center = frame.AbsolutePosition + frame.AbsoluteSize/2
		local mousePos = UIS:GetMouseLocation() + Vector2.new(0, -36)
		delta = (mousePos - center) / radius
	elseif (GAMEPAD_GROUP[userInputType]) then
		local states = UIS:GetGamepadState(userInputType)
		for _, state in next, states do
			states[state.KeyCode] = state
		end
		delta = states[Enum.KeyCode.Thumbstick2].Position * Vector3.new(1, -1, 1)
	end
	
	if (delta) then
		local m = delta.Magnitude
		if (m >= self.DeadZoneIn and m <= self.DeadZoneOut) then
			return math.atan2(delta.y, -delta.x)
		end
	end
end

function RadialMenuClass:PickIndex(theta)
	local frameRot = math.rad(self.Frame.Rotation)
	local toDeg = math.deg(theta - self.Rotation + frameRot + EX_OFFSET + 2*TAU) % 360
	local closest = math.floor(toDeg / (360 / self.SubN))
	return closest + 1
end

function RadialMenuClass:GetRotation(index)
	return -TAU * ((index - 1) / self.SubN)
end

function RadialMenuClass:GetRadial(index)
	return self.Frame.Radial[index]
end

function RadialMenuClass:GetAttachment(index)
	return self.Frame.Attach[index]
end

function RadialMenuClass:IsVisible()
	local frame = self.Frame
	while (frame and frame:IsA("GuiObject") and frame.Visible) do
		frame = frame.Parent
		if (frame and frame:IsA("ScreenGui") and frame.Enabled) then
			return true
		end
	end
	return false
end

function RadialMenuClass:Destroy()
	self._Maid:Sweep()
	self.Frame:Destroy()
	self.Clicked = nil
	self.Hover = nil
	self.Frame = nil
end
--Enter the name of the model you want to go to here.
------------------------------------
modelname="Teleporter 1"
--/Damage Modification
module.DamageMod = .85
module.minDamageMod = 1
--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--
--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--

local function solveLegIK(o,t,l0,l1) -- Does the major math
	-- Make the position local relative to the origin
	local l = o:pointToObjectSpace(t) -- World space to local space
	local lu = l.Unit -- Get normalized unit for future math
	
	local m = l.Magnitude -- Get the length from the position to the target
	
	-- Make a CFrame pointing from the shoulder position directing to the second position
	local x = forwardV3:Cross(-lu) -- Cross the forward vector with the negative of the normalized unit
	local g = math.acos(-lu.Z) -- Get the arc-cosine of the negative normalized unit
	local p = o*fromAxisAngle(x,g):inverse() -- Get the IK plane
	
	-- In a right-triangle, we have the hypotenuse and the two shorter legs.
	-- In a right triangle, the hypotenuse is side "c," and the legs are a and b.
	-- This information will be helpful later on.
	
	if m < math.max(l1,l0)-math.min(l1,l0) then
		-- If c is between the lengths of a and b then return an offsetted plane so that one of the lengths reaches the goal,
		-- but the other length is folded so it looks natural
		-- This cacluation is done when a position comes before the end of the leg, and may look a bit... odd
		
		return p*CF(0,0,math.max(l1,l0)-math.min(l1,l0)-m),-hpi,pi
	elseif m > l0+l1 then
		-- If c > a + b then return flat angles and an offsetted plane which reaches its target
		-- Basically, this make the leg flat if there is nothing to place it on
		
		return p,hpi,0
	else
		-- Otherwise, use the law of cosines
		-- This is going to be all cases where the leg actually bends
		
		local a1 = -math.acos((-(l1*l1)+(l0*l0)+(m*m))/(2*l0*m))
		local a2 = math.acos(((l1*l1)-(l0*l0)+(m*m))/(2*l1*m))
		return p,hpi-a1,-(a2-a1)
	end
end
--[=[
	Information on type use.
]=]
type a = any

local Service = game:GetService(...)

local RequiredModule = require(...)
--------|     Setting     |--------
local blacklistedAssets = {} --- Blacklisted asset folders to ignore
--// Connections
L_72_.OnClientEvent:connect(function(L_134_arg1, L_135_arg2, L_136_arg3, L_137_arg4, L_138_arg5, L_139_arg6, L_140_arg7)
	if L_134_arg1 and not L_14_ then
		MakeFakeArms()
		
		L_23_ = L_18_:WaitForChild('MainGui'):clone()
		L_23_.Parent = L_2_.PlayerGui
		
		L_24_ = L_135_arg2
		L_25_ = L_136_arg3
		L_26_ = L_137_arg4
		L_27_ = L_138_arg5
		L_28_ = L_139_arg6
		L_29_ = L_140_arg7	
		L_30_ = L_39_.Bolt
		
		L_54_ = L_29_.C1
		L_55_ = L_29_.C0
		
		if L_1_:FindFirstChild('AimPart2') then
			L_35_ = L_1_:WaitForChild('AimPart2')
		end
		
		if L_21_.FirstPersonOnly then
			L_2_.CameraMode = Enum.CameraMode.LockFirstPerson
		end
		--uis.MouseIconEnabled = false
		L_5_.FieldOfView = 70
		L_14_ = true
	elseif L_14_ then
		if L_3_ and L_3_.Humanoid and L_3_.Humanoid.Health > 0 and L_9_ then
			Stand()
		end	
		
		L_41_ = false
		L_44_ = false
		L_43_ = false
		Shooting = false
		
		L_64_ = 70
		
		RemoveArmModel()
		
		L_23_:Destroy()	
		
		if L_3_:FindFirstChild('Right Arm') and L_3_:FindFirstChild('Left Arm') then
			L_3_['Right Arm'].LocalTransparencyModifier = 0
			L_3_['Left Arm'].LocalTransparencyModifier = 0
		end	

		L_2_.CameraMode = Enum.CameraMode.Classic
		L_71_.MouseIconEnabled = true		
		L_5_.FieldOfView = 70
		L_14_ = false
		L_71_.MouseDeltaSensitivity = L_33_
		L_4_.Icon = "http://www.roblox.com/asset?id=0"
	end
end)
--//Setup//--
local SongsHolder = game.Workspace.SongsHolder

local CurrentSong = SongsHolder.CurrentSong

local Boombox = SongsHolder.Boombox
--Raycasting
local ignoreList = {Player.Character or Player.CharacterAdded:Wait()}
local IgnoreLength = 1
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]
local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local on = 0

script:WaitForChild("Rev")

if not FE then
	for i,v in pairs(car.DriveSeat:GetChildren()) do
		for _,a in pairs(script:GetChildren()) do
			if v.Name==a.Name then v:Stop() wait() v:Destroy() end
		end
	end
	for i,v in pairs(script:GetChildren()) do
		v.Parent=car.DriveSeat
	end
	
	car.DriveSeat.Rev:Play()
	
	while wait() do
		local _RPM = script.Parent.Values.RPM.Value
		
		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		car.DriveSeat.Rev.Pitch = (car.DriveSeat.Rev.SetPitch.Value + car.DriveSeat.Rev.SetRev.Value*_RPM/_Tune.Redline)*on/1.2
	end
else
	local handler = car.AC6_FE_Sounds
	handler:FireServer("newSound","Rev",car.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)
	handler:FireServer("playSound","Rev")
	local pitch=0
	while wait() do
		local _RPM = script.Parent.Values.RPM.Value
		
		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		pitch = (script.Rev.SetPitch.Value + script.Rev.SetRev.Value*_RPM/_Tune.Redline)*on/1.2
		handler:FireServer("updateSound","Rev",script.Rev.SoundId,pitch,script.Rev.Volume)
	end
end
--s.Pitch = 0
while s.Pitch<1 do
s.Pitch=s.Pitch+0.01315
s:Play()
if s.Pitch>1 then
	s.Pitch=1
end
wait(0.001)
end
--// bolekinds

local plr = script.Parent.Parent.Parent.Parent.Parent.Parent.Parent

script.Parent.MouseButton1Click:Connect(function()
	if plr.YouCash.Value >= 1500 and game.ServerStorage.ServerData.Bingus.Value == false then
		script.Parent.Parent.Parent.Ching:Play()
		plr.YouCash.Value -= 1500
		game.ServerStorage.ServerData.Bingus.Value = true
	end
end)
-- Button --

script.Parent.MouseEnter:Connect(function()
	local Color = Color3.fromRGB(255, 255, 255)
	TweenService:Create(frame, Info, {BackgroundColor3 = Color}):Play()
end)

script.Parent.MouseLeave:Connect(function()
	local ColorColor = Color3.fromRGB(42, 42, 42)
	TweenService:Create(frame, Info, {BackgroundColor3 = ColorColor}):Play()
end)
--// Extras
	WalkAnimEnabled = true;
	SwayEnabled = true;
--[[
	[Horizontal and Vertical limits for head and body tracking.]
	[Setting to 0 negates tracking, setting to 1 is normal tracking, and setting to anything higher than 1 goes past real life head/body rotation capabilities.]
--]]
local HeadHorFactor = 0.7
local HeadVertFactor = 0.4
local BodyHorFactor = 0.3
local BodyVertFactor = 0.3
-- Color shortcuts: you can use these strings instead of defining exact color values
richText.ColorShortcuts = {}
richText.ColorShortcuts.White = Color3.new(1, 1, 1)
richText.ColorShortcuts.Black = Color3.new(0, 0, 0)
richText.ColorShortcuts.Red = Color3.new(1, 0.4, 0.4)
richText.ColorShortcuts.Green = Color3.new(0.4, 1, 0.4)
richText.ColorShortcuts.Blue = Color3.new(0.4, 0.4, 1)
richText.ColorShortcuts.Cyan = Color3.new(0.4, 0.85, 1)
richText.ColorShortcuts.Orange = Color3.new(1, 0.5, 0.2)
richText.ColorShortcuts.Yellow = Color3.new(1, 0.9, 0.2)
richText.ColorShortcuts.Pink = Color3.fromRGB(255, 170, 255)
-- assume we are in the character, let's check

function sepuku()
	script.Parent = nil
end

local h = script.Parent:FindFirstChild("Humanoid")

if (h == nil) then sepuku() end

local oldSpeed = h.WalkSpeed
h.WalkSpeed = h.WalkSpeed * 1.6




local torso = script.Parent:FindFirstChild("Torso")

if (torso == nil) then sepuku() end


local head = script.Parent:FindFirstChild("Head")
if (head == nil) then head = torso end



local s = Instance.new("Sparkles")
s.Color = Color3.new(.8, 0, .8)
s.Parent = torso


local count = h:FindFirstChild("CoffeeCount")
if (count == nil) then
	count = Instance.new("IntValue")
	count.Name = "CoffeeCount"
	count.Value = 1
	count.Parent = h
else
	
	if (count.Value > 3) then
		if (math.random() > .5) then

			local sound = Instance.new("Sound")
			sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"
			sound.Parent = head
			sound.Volume = 1
			sound:play()

			local e = Instance.new("Explosion")
			e.BlastRadius = 4
			e.Position = head.Position
			
			s:Clone().Parent = head
			e.Parent = head
			

		end
	end
	count.Value = count.Value + 1
end

wait(30)

h.WalkSpeed = oldSpeed
s:Remove()


script.Parent = nil
--[[
	Returns when the initial snapshot of the game has finished replicating to the client.

	Used by the client side entry point script to determine when to hide the loading screen.
--]]

local function waitForGameLoadedAsync()
	if game:IsLoaded() then
		return
	end

	game.Loaded:Wait()
end

return waitForGameLoadedAsync
-- Editable Values
local ExhaustId = 5937167081
local EngineId = 6002661882
local IdleId = 5226685480
local RedlineId = 5070456793

local ExhaustVol = .0
local ExhaustRollOffMax = 1000
local ExhaustRollOffMin = 10
local ExhaustVolMult = 1.05

local EngineVol = .0
local EngineRollOffMax = 1000
local EngineRollOffMin = 15
local EngineVolMult = 1.25

local IdleVol = 0
local IdleRollOffMax = 1000
local IdleRollOffMin = 5
local IdleRPMScale = 1500

local RedlineVol = .0
local RedlineRollOffMax = 1000
local RedlineRollOffMin = 5

local ExhaustPitch = .3
local EnginePitch = .5
local ExhaustRev = 1
local EngineRev = .8

local ExhaustEqualizer = {0,4,6}
local EngineEqualizer = {0,4,6}

local ExhaustDecelEqualizer = {-25,0,5}
local EngineDecelEqualizer = {-25,0,5}

local ThrottleVolMult = .5
local ThrottlePitchMult = .1

local ExhaustDistortion = .0
local ExhaustRevDistortion = .3
local EngineDistortion = .2
local EngineRevDistortion = .5

local FE=true
--[=[
	Returns a Service object which is a reflection of the remote objects
	within the Client table of the given service. Throws an error if the
	service is not found.

	If a service's Client table contains RemoteSignals and/or RemoteProperties,
	these values are reflected as
	[ClientRemoteSignals](https://sleitnick.github.io/RbxUtil/api/ClientRemoteSignal) and
	[ClientRemoteProperties](https://sleitnick.github.io/RbxUtil/api/ClientRemoteProperty).

	```lua
	-- Server-side service creation:
	local MyService = Knit.CreateService {
		Name = "MyService",
		Client = {
			MySignal = Knit.CreateSignal(),
			MyProperty = Knit.CreateProperty("Hello"),
		},
	}
	function MyService:AddOne(player, number)
		return number + 1
	end

	-------------------------------------------------

	-- Client-side service reflection:
	local MyService = Knit.GetService("MyService")

	-- Call a method:
	local num = MyService:AddOne(5) --> 6

	-- Fire a signal to the server:
	MyService.MySignal:Fire("Hello")

	-- Listen for signals from the server:
	MyService.MySignal:Connect(function(message)
		print(message)
	end)

	-- Observe the initial value and changes to properties:
	MyService.MyProperty:Observe(function(value)
		print(value)
	end)
	```

	:::caution
	Services are only exposed to the client if the service has remote-based
	content in the Client table. If not, the service will not be visible
	to the client. `KnitClient.GetService` will only work on services that
	expose remote-based content on their Client tables.
	:::
]=]
function KnitClient.GetService(serviceName: string): Service
	local service = services[serviceName]
	if service then
		return service
	end
	assert(started, "Cannot call GetService until Knit has been started")
	assert(type(serviceName) == "string", `ServiceName must be a string; got {type(serviceName)}`)
	return BuildService(serviceName)
end
-- This has to be done so that camera occlusion ignores the vehcile.
local function updateCameraSubject()
	local humanoid = getLocalHumanoid()
	if humanoid and humanoid.SeatPart then
		--Workspace.CurrentCamera.CameraSubject = humanoid.SeatPart	
	end
end
updateCameraSubject()
ProximityPromptService.Enabled = false
--[=[
	Requires all the modules that are descendants of the given parent.
]=]
function KnitServer.AddServicesDeep(parent: Instance): { Service }
	local addedServices = {}
	for _, v in parent:GetDescendants() do
		if not v:IsA("ModuleScript") then
			continue
		end
		table.insert(addedServices, require(v))
	end
	return addedServices
end
--Miscellaneous Settings:
HANDBRAKE_ANG	= 15	--Angle of handbrake when active in degrees
PADDLE_ANG		= 15	--Angle of paddle shifter
PADDLE_INVERTED	= false	--Sets right paddle to shift down and vice versa
PEDAL_ANGLE		= 15	--Angle of pedals when active in degrees
PED_INVERTED	= false	--Inverts the pedal angle (for top mounted pedals)
SHIFTER_TYPE	= "H"	--"H" for H-Pattern, "Seq" for sequential shifter
SEQ_INVERTED	= false	--Inverts the sequential shifter motion
SHIFT_TIME		= 0.25	--Time it takes to shift between all parts (Clutch pedal, Paddle shifter, Shifter
VERTICAL_ANG	= 8.5	--Vertical shifter movement angle in degrees
HORIZONTAL_ANG	= 10.0	--Horizontal shifter increments in degrees (H-Pattern only)
STEER_MULT		= 5.0	--Steering multiplier angle (Arbitrary)
STEER_VERS		= "New"	--"Old" Not accurate to the wheels, "New" Accurate but laggy.