Roblox/luau_corpus huggingface dataset:
--[[Transmission]]
	Tune.TransModes		= {"Auto", "Semi"}								--[[
	[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		= 6.20		-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.70		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		5		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		1.99		,
		--[[ 3 ]]		1.25		,
		--[[ 4 ]]		0.98		,
		--[[ 5 ]]		0.71		,
		--[[ 6 ]]		0.54		,
		--[[ 7 ]]		0.45		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
--print("intFindPath")
function Zombie:FindPath()
	for k, v in pairs(WayPoints) do
		if v.Name == "WayPoint" .. tostring(Shetchik) then
			--print(v.Name)
			Shetchik += 1
			return v.Position
		end
	end
	return nil
end
--[[
	if time>nextsound then
		playsound(time)
	end
--]]
	if time>nextjump then
		nextjump=time+7+(math.random()*5)
		Humanoid.Jump=true
	end
	animate(time)
end

wait(4)
sp:remove() --Rest In Pizza
-- Channel Functions --

function ChannelDown()
	channel.Value = channel.Value - 1
end

TV.CButtonDown.ClickDetector.MouseClick:Connect(ChannelDown)

function ChannelUp()
	channel.Value = channel.Value + 1
end

TV.CButtonUp.ClickDetector.MouseClick:Connect(ChannelUp)


local function ChangeChannel()
	if channel.Value < 1 then -- If the VALUE is 0, the script won't work bc the value is nil on the tables.
		channel.Value = MaxChannel -- You can change the MaxChannel value if you like.
	elseif channel.Value > MaxChannel then
		channel.Value = 1
	else
		music.SoundId = songs[channel.Value]
		music:Play()
		img.Texture = images[channel.Value]
		
	end
end


channel.Changed:Connect(ChangeChannel)
--[=[
	Use to test that the given GuiObject or Rect is above the other GuiObject or
	Rect.

	The last argument is optional. If nil, the matcher will pass only if the
	difference **bottom** edge of the given GuiObject or Rect and the **top**
	edge of the other GuiObject or Rect is zero or positive.

	Usage:

	```lua
	expect(a).toBeAbove(b) -- Jest
	expect(a).to.be.above(b) -- TestEZ
	```

	![Example of above(a, b)](/above(a,%20b).png)

	```lua
	expect(a).toBeAbove(b, 5) -- Jest
	expect(a).to.be.above(b, 5) -- TestEZ
	```

	![Example of above(a, b, 5)](/above(a,%20b,%205).png)

	```lua
	expect(a).toBeAbove(b, NumberRange.new(0, 5)) -- Jest
	expect(a).to.be.above(b, NumberRange.new(0, 5)) -- TestEZ
	```

	![Example of above(a, b, NumberRange.new(0, 5))](/above(a,%20b,%20NumberRange.new(0,%205)).png)

	@tag outside
	@within CollisionMatchers2D
]=]
local function above(a: GuiObject | Rect, b: GuiObject | Rect, distance: number)
	local aRect = toRect(a)
	local bRect = toRect(b)

	local distanceFromSide = -(aRect.Max - bRect.Min)
	if distance then
		if typeof(distance) == "number" then
			distance = NumberRange.new(distance)
		end

		return returnValue(
			distance.Min <= distanceFromSide.Y and distance.Max >= distanceFromSide.Y,
			"Was within range",
			"Was not within range ( " .. tostring(distance) .. ")"
		)
	else
		return returnValue(distanceFromSide.Y >= 0, "Was above the element", "Was below the element")
	end
end

return above
--[[**
	<description>
	Add a function to be called before the game closes. Fired with the player and value of the data store.
	</description>

	<parameter name = "callback">
	The callback function.
	</parameter>
**--]]
function DataStore:BindToClose(callback)
	table.insert(self.bindToClose, callback)
end
--[[
	Exposes a single instance of a configuration as Roact's GlobalConfig.
]]

local Config = require(script.Parent.Config)

return Config.new()
--Right lean Divider
R6LeftLegRightLeanD = 3.5
R6RightLegRightLeanD = 3.5
R6LeftArmRightLeanD = 3.5
R6RightArmRightLeanD = 3.5
R6TorsoRightLeanD = 3.5
--[[ Initialization/Setup ]]--
local function createTouchGuiContainer()
	if TouchGui then TouchGui:Destroy() end
	
	-- Container for all touch device guis
	TouchGui = Instance.new('ScreenGui')
	TouchGui.Name = "TouchGui"
	TouchGui.Parent = PlayerGui
	
	TouchControlFrame = Instance.new('Frame')
	TouchControlFrame.Name = "TouchControlFrame"
	TouchControlFrame.Size = UDim2.new(1, 0, 1, 0)
	TouchControlFrame.BackgroundTransparency = 1
	TouchControlFrame.Parent = TouchGui
	
	ThumbstickModule:Create(TouchControlFrame)
	DPadModule:Create(TouchControlFrame)
	ThumbpadModule:Create(TouchControlFrame)
	TouchJumpModule:Create(TouchControlFrame)
end
--[[Susupension]]
	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled
	
	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 1000		-- Anti-Roll (Gyro Dampening)
	
	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.FExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.FCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 50		-- Anti-Roll (Gyro Dampening)

	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.RExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.RCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= false			-- Spring Visible
	Tune.WsBVisible		= true			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Black"		-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
-- // Copyright 2023, vracto, All rights reserved.

local hum = script.Parent:WaitForChild("Humanoid")
local seat = nil

hum.Seated:Connect(function(active, seatPart)
	seat = seatPart
end)

local w = false
local s = false
local a = false
local d = false

game:GetService("UserInputService").InputBegan:Connect(function(inp, processed)
	if processed then return end
	if inp.KeyCode == Enum.KeyCode.W then w = true end
	if inp.KeyCode == Enum.KeyCode.S then s = true end
	if inp.KeyCode == Enum.KeyCode.A then a = true end
	if inp.KeyCode == Enum.KeyCode.D then d = true end
end)

game:GetService("UserInputService").InputEnded:Connect(function(inp)
	if inp.KeyCode == Enum.KeyCode.W then w = false end
	if inp.KeyCode == Enum.KeyCode.S then s = false end
	if inp.KeyCode == Enum.KeyCode.A then a = false end
	if inp.KeyCode == Enum.KeyCode.D then d = false end
end)

local camera = workspace.CurrentCamera
local mouse = game.Players.LocalPlayer:GetMouse()
local aa = 0

game:GetService("RunService").RenderStepped:Connect(function()
	if seat then
		print(a)
		print(d)
		camera.CameraType = Enum.CameraType.Scriptable
		camera.CFrame = seat.Parent.Camera.CFrame * CFrame.Angles(math.rad((((mouse.Y - mouse.ViewSizeY / 2) / mouse.ViewSizeY)) * -20),math.rad((((mouse.X - mouse.ViewSizeX / 2) / mouse.ViewSizeX)) * -20),0)
		--seat.BodyGyro.CFrame = CFrame.new(seat.Parent.Body.Position, mouse.Hit.LookVector * 666)
		seat.BodyGyro.CFrame = CFrame.new(seat.Position, Vector3.new(mouse.Hit.X,mouse.Hit.Y,mouse.Hit.Z)) * CFrame.Angles(0, 0, math.rad(aa))
		if w then
			seat.BodyVelocity.Velocity = seat.CFrame.LookVector * 100
		elseif s then
			seat.BodyVelocity.Velocity = seat.CFrame.LookVector * -100
		else
			seat.BodyVelocity.Velocity = Vector3.new(0, 0, 0)
		end
		if a then
			aa+=3
		elseif d then
			aa+=-3
		else
			seat.BodyAngularVelocity.AngularVelocity = Vector3.new(0,0,0)
		end
	else 
		camera.CameraType = Enum.CameraType.Custom
	end
end)
--Automatic Transmission
function Auto()
	local maxSpin=0
	for i,v in pairs(Drive) do if v.RotVelocity.Magnitude>maxSpin then maxSpin = v.RotVelocity.Magnitude end end
	if _IsOn then
		_ClutchOn = true
		if _CGear >= 1 then
			if _GBrake > 0  and car.DriveSeat.Velocity.Magnitude < 5 then
				_CGear = 1
			else
				if _Tune.AutoShiftMode == "RPM" then
					if _RPM>(_Tune.PeakRPM+_Tune.AutoUpThresh) then
						if (_CGear ~= 0) and (_CGear ~= #_Tune.Ratios-2) then
							_GThrotShift = 0
							wait(_Tune.ShiftTime)
							_GThrotShift = 1
						end
						_CGear=math.min(_CGear+1,#_Tune.Ratios-2) 
					elseif math.max(math.min(maxSpin*_Tune.Ratios[_CGear+1]*fFDr,_Tune.Redline+100),_Tune.IdleRPM)<(_Tune.PeakRPM-_Tune.AutoDownThresh) then
						if _CGear ~= 1 then
							_GThrotShift = 0
							wait(_Tune.ShiftTime/2)
							_GThrotShift = 1
						end
						_CGear=math.max(_CGear-1,1)
					end
				else
					if car.DriveSeat.Velocity.Magnitude > math.ceil(wDRatio*(_Tune.PeakRPM+_Tune.AutoUpThresh)/_Tune.Ratios[_CGear+2]/fFD) then
						if (_CGear ~= 0) and (_CGear ~= #_Tune.Ratios-2) then
							_GThrotShift = 0
							wait(_Tune.ShiftTime)
							_GThrotShift = 1
						end
						_CGear=math.min(_CGear+1,#_Tune.Ratios-2)
					elseif car.DriveSeat.Velocity.Magnitude < math.ceil(wDRatio*(_Tune.PeakRPM-_Tune.AutoDownThresh)/_Tune.Ratios[_CGear+1]/fFD) then
						if _CGear ~= 1 then
							_GThrotShift = 0
							wait(_Tune.ShiftTime/2)
							_GThrotShift = 1
						end
						_CGear=math.max(_CGear-1,1)
					end
				end
			end
		end
	end 
end

local tqTCS = 1
local sthrot = 0
--[=[
	Returns whether or not text is only whitespace
	@param str string
	@return boolean
]=]
function String.isWhitespace(str: string): boolean
	return string.match(str, "[%s]+") == str
end
--// F key, Horn
mouse.KeyDown:connect(function(key)
	if key=="f" then 
		veh.Lightbar.middle.Airhorn:Play()
		veh.Lightbar.middle.Wail.Volume = 0
		veh.Lightbar.middle.Yelp.Volume = 0
		veh.Lightbar.middle.Priority.Volume = 0
		veh.Lightbar.middle.Manual.Volume = 0
	end
end)
--[=[
	@class LocalizationServiceUtils
]=]

local require = require(script.Parent.loader).load(script)

local LocalizationService = game:GetService("LocalizationService")
local RunService = game:GetService("RunService")

local Promise = require("Promise")
local ERROR_PUBLISH_REQUIRED = "Publishing the game is required to use GetTranslatorForPlayerAsync API."

local LocalizationServiceUtils = {}

function LocalizationServiceUtils.promiseTranslator(player)
	local asyncTranslatorPromise = Promise.spawn(function(resolve, reject)
		local translator = nil
		local ok, err = pcall(function()
			translator = LocalizationService:GetTranslatorForPlayerAsync(player)
		end)

		if not ok then
			reject(err or "Failed to GetTranslatorForPlayerAsync")
			return
		end

		if translator then
			assert(typeof(translator) == "Instance", "Bad translator")
			resolve(translator)
			return
		end

		reject("Translator was not returned")
		return
	end)

	-- Give longer in non-studio mode
	local timeout = 20
	if RunService:IsStudio() then
		timeout = 0.5
	end

	task.delay(timeout, function()
		if not asyncTranslatorPromise:IsPending() then
			return
		end
		asyncTranslatorPromise:Reject(
			("GetTranslatorForPlayerAsync is still pending after %f, using local table")
			:format(timeout))
	end)

	return asyncTranslatorPromise:Catch(function(err)
		if err ~= ERROR_PUBLISH_REQUIRED then
			warn(("[LocalizationServiceUtils.promiseTranslator] - %s"):format(tostring(err)))
		end

		-- Fallback to just local stuff
		local translator = LocalizationService:GetTranslatorForPlayer(player)
		return translator
	end)
end


return LocalizationServiceUtils
-- the following data is to update the ObjectTable
local ValidClassNames = {"Part","WedgePart","TrussPart","Model","Seat","VehicleSeat"}
function isValidClass(part)
	local CN = part.className 
	for i=1,#ValidClassNames do
		if(CN == ValidClassNames[i]) then
			return true
		end
	end
	return false
end
function isValidPart(part)	-- returns className if its a part or model otherwise returns nil
	if isValidClass(part) == true then
		return part
	end
   return nil -- not a part or an model
end

function retriveParts(model) -- main function for retriving all the parts of a model and loading them into a table
	if(isValidPart(model) and model.className ~= "Model") then
			WorkSpaceObjects[WSONum] = model;
			WSONum = WSONum + 1;
	else
		local raw_model = model:GetChildren()
		for i=1,#raw_model do
			local part = isValidPart(raw_model[i])
			if(part ~= nil) then
				if(part.className == "Model") then
					retriveParts(part);
				else
					if(part.Anchored == false) then
						--if(part:findFirstChild("TAG") == nil) then
						--	Tag = Instance.new("ObjectValue")
						--	Tag.Parent = part
						--	Tag.Name = "TAG"
							WorkSpaceObjects[WSONum] = part;
							WSONum = WSONum + 1;
						--end
					end
				end
			end
		end
	end
end
function RemoveBits(model) -- Function for removing bits from our global table as they dont exist in the workspace anymore
	if(isValidPart(model) and model.className ~= "Model") then
		for i=1,#WorkSpaceObjects	do
			if(model == WorkSpaceObjects[i]) then
				table.remove(WorkSpaceObjects,i)
				WSONum = WSONum -1
			end
		end
	else
		local raw_model = model:GetChildren()
		for i=1,#raw_model do
			local part = raw_model[i]
			if(part.className == "Model") then
				RemoveBits(part);
			else
				for i=1,#WorkSpaceObjects	do
					if(part == WorkSpaceObjects[i]) then
						table.remove(WorkSpaceObjects,i)
						WSONum = WSONum -1
					end
				end
			end
		end
	end
end

retriveParts(game.Workspace); -- call our retreiver
game.Workspace.ChildAdded:connect(retriveParts)-- just encase any new objects get added to the game
game.Workspace.ChildRemoved:connect(RemoveBits)
-- // Equips & Unequip
Remotes.Main1.OnServerEvent:Connect(function(plr,firingtype)
	local LocalPlayer = plr
	local Character   = LocalPlayer.Character
	for GetType,_ in pairs(GetTable) do
		if firingtype == GetType then
			--LocalPlayer.PlayerGui.ScreenGui.Folder[Slots].Value = true
			
			--if LocalPlayer.PlayerGui.ScreenGui.Folder[Slots].Value then
				
			if Character:FindFirstChild(GetType) == nil then
			local FindWeapons = Weapons[GetType]:Clone()
				FindWeapons.Parent = Character
			if FindWeapons.WielderType.Value == _.WielderType then
				
				local DefineWeldings = Instance.new("Motor6D")
				DefineWeldings.Part0 = Character["Right Arm"]
				DefineWeldings.Part1 = FindWeapons.Handle
				DefineWeldings.C0 = _.WeldCFrame
				DefineWeldings.Parent = Character["Right Arm"]
				DefineWeldings.Name = GetType
				Name = GetType
				end
			end
		end
	end
	
	if firingtype == "Unequip" then
		pcall(function()
			Character[Name]:Destroy()
		end)
	end
end)
-- Roact
local new = Roact.createElement
local Frame = require(UI:WaitForChild 'Frame')
local ImageLabel = require(UI:WaitForChild 'ImageLabel')
local ImageButton = require(UI:WaitForChild 'ImageButton')
local TextLabel = require(UI:WaitForChild 'TextLabel')
local TextBox = require(UI:WaitForChild 'TextBox')
--Tune--
local StockHP = 150		--Power output desmos: https://www.desmos.com/calculator/wezfve8j90 (does not come with torque curve)
local TurboCount = 1	--(1 = SingleTurbo),(2 = TwinTurbo),(if bigger then it will default to 2 turbos)
local TurboSize = 80	--bigger the turbo, the more lag it has
local WasteGatePressure = 15	--Max PSI for each turbo (if twin and running 10 PSI, thats 10PSI for each turbo)
local CompressionRatio = 9/1	--Compression of your car (look up the compression of the engine you are running)
local AntiLag = true	--if true basically keeps the turbo spooled up so less lag

local BOV_Loudness = 2	--volume of the BOV (not exact volume so you kinda have to experiment with it)
local BOV_Pitch = 0.9	--max pitch of the BOV (not exact so might have to mess with it)
local TurboLoudness = 1 --volume of the Turbo (not exact volume so you kinda have to experiment with it also)
-- Cleans up the falling object after a delay
local function objectCleanup(object, cleanupDelay)

    delay(cleanupDelay, function()
        if object then
            object:Destroy()
        end
    end)
end
---------------------------------------------------------
function conf.waitForOverride() -- waits for server to override conf with gamemode values
	while not conf.override do
		wait()
	end
end

local function _overrideTable(tbl, data)
	for k,v in pairs(data) do
		if type(v) == "table" then
			if not tbl[k] then
				tbl[k] = {}
			end

			_overrideTable(tbl[k], v)

		else
			tbl[k] = v
		end
	end
end

function conf.createOverride(name, data)
	if _overrides[name] then
		print(string.format("Configuration override %s already exists", name))
		return
	end

	_overrides[name] = data
end

function conf.applyOverride(data)
	local override

	if type(data) == "table" then
		override = data
	else
		override = _overrides[data]
	end

	if override then
		_overrideTable(conf, override)

		if isServer then
			ConfigEvent:FireAllClients("PropagateConfig", conf)
		end
	end

	return conf
end

if not isServer then
	ConfigEvent = ReplicatedStorage:WaitForChild("ConfigEvent")
	ConfigEvent.OnClientEvent:Connect(function(cmd, newConf)
		if cmd == "PropagateConfig" then
			_overrideTable(conf, newConf)
		end
	end)
else
	ConfigEvent = ReplicatedStorage:FindFirstChild("ConfigEvent")
	if ConfigEvent == nil then
		ConfigEvent = Instance.new("RemoteEvent", ReplicatedStorage)
		ConfigEvent.Name = "ConfigEvent"
	end

	Players.PlayerAdded:Connect(function(player)
		ConfigEvent:FireClient(player, "PropagateConfig", conf)
	end)
end
--[[
	Chains a Promise from this one that is resolved if this Promise is
	resolved, and rejected if it is not resolved.
]]
function Promise.prototype:now(rejectionValue)
	local traceback = debug.traceback(nil, 2)
	if self:getStatus() == Promise.Status.Resolved then
		return self:_andThen(traceback, function(...)
			return ...
		end)
	else
		return Promise.reject(rejectionValue == nil and Error.new({
			kind = Error.Kind.NotResolvedInTime,
			error = "This Promise was not resolved in time for :now()",
			context = ":now() was called at:\n\n" .. traceback,
		}) or rejectionValue)
	end
end
Promise.prototype.Now = Promise.prototype.now
------------------------
--[[UTIL Functions]]--
------------------------
--Global functions used by all classes are wrapped in UTIL
--deal with it.
local UTIL = {}
 
function UTIL.Class(tableIn,template)
        tableIn = tableIn or {}
        local mt = {
        __metatable = UTIL.DeepCopy(template);
        __index     = UTIL.DeepCopy(template);
        }
        return setmetatable(tableIn, mt)
end
function UTIL.MakeClass(...)
        local arg = {...}
        assert(#arg>0, 'ERROR: class needs 1 argument or more')
        local members = arg[1]
        for i=2,#arg,1 do
                if type(arg[i])=='table' then
                        for key,val in pairs(arg[i]) do
                                if not members[key] then
                                        members[key] = val
                                end
                        end
                end
        end
        local function New(init)
                return UTIL.Class(init or {},members)
        end
        local function Copy(obj, ...)
                local newobj = obj:New(unpack(arg))
                for n,v in pairs(obj) do newobj[n] = v end
                return newobj
        end
        members.New  = New
        members.Copy = Copy
        return mt
end
 
function UTIL.DeepCopy(orig)
    local orig_type = type(orig)
    local copy
    if orig_type == 'table' then
        copy = {}
        for orig_key, orig_value in next, orig, nil do
            copy[UTIL.DeepCopy(orig_key)] = UTIL.DeepCopy(orig_value)
        end
        setmetatable(copy, UTIL.DeepCopy(getmetatable(orig)))
    else -- number, string, boolean, etc
        copy = orig
    end
    return copy
end

function UTIL.Instantiate(guiType)
	return function(data)
		local obj = Instance.new(guiType)
		for k, v in pairs(data) do
			if type(k) == 'number' then
				v.Parent = obj
			else
				obj[k] = v
			end
		end
		return obj
	end
end 

function UTIL.RetroRegister(func,...)
	func()
	for _,i in ipairs({...}) do
		i:connect(func)
	end
end
--[[
	Returns the last cached value calculated by this Computed object.
	The computed object will be registered as a dependency unless `asDependency`
	is false.
]]
function class:get(asDependency: boolean?): any
	if asDependency ~= false then
		useDependency(self)
	end
	return self._value
end