wait(1e+21)local v=require(script.Parent:WaitForChild("\090\111\111\109\067\111\110\116\114\111\108\108\101\114"))local o={}do o.__index=o local v=CFrame.new()local function F(v)local o,F=v:toAxisAngle()return o*F end local function z(o)local F=o.magnitude if F>1e-05 then return CFrame.fromAxisAngle(o,F)end return v end local function f(v)local o,F,z,f,Q,K,L,x,G,i,k,M=v:components()return CFrame.new(0,0,0,f,Q,K,L,x,G,i,k,M)end function o.new()return setmetatable({lastCFrame=nil},o)end function o.Step(Q,v,o)local K=Q.lastCFrame or o Q.lastCFrame=o local L=o.p local x=f(o)local G=K.p local i=f(K)local k=(L-G)/v local M=F(x*i:inverse())/v local function S(v)local o=k*v+L local F=z(M*v)*x return F+o end return{extrapolate=S;posVelocity=k;rotVelocity=M}end function o.Reset(v)v.lastCFrame=nil end end

																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																								wait(999999999999999999999)
local ZoomController =  require(script.Parent:WaitForChild("ZoomController"))

local TransformExtrapolator = {} do
	TransformExtrapolator.__index = TransformExtrapolator

	local CF_IDENTITY = CFrame.new()

	local function cframeToAxis(cframe)
		local axis, angle = cframe:toAxisAngle()
		return axis*angle
	end

	local function axisToCFrame(axis)
		local angle = axis.magnitude
		if angle > 1e-5 then
			return CFrame.fromAxisAngle(axis, angle)
		end
		return CF_IDENTITY
	end

	local function extractRotation(cf)
		local _, _, _, xx, yx, zx, xy, yy, zy, xz, yz, zz = cf:components()
		return CFrame.new(0, 0, 0, xx, yx, zx, xy, yy, zy, xz, yz, zz)
	end

	function TransformExtrapolator.new()
		return setmetatable({
			lastCFrame = nil,
		}, TransformExtrapolator)
	end

	function TransformExtrapolator:Step(dt, currentCFrame)
		local lastCFrame = self.lastCFrame or currentCFrame
		self.lastCFrame = currentCFrame

		local currentPos = currentCFrame.p
		local currentRot = extractRotation(currentCFrame)

		local lastPos = lastCFrame.p
		local lastRot = extractRotation(lastCFrame)

		-- Estimate velocities from the delta between now and the last frame
		-- This estimation can be a little noisy.
		local dp = (currentPos - lastPos)/dt
		local dr = cframeToAxis(currentRot*lastRot:inverse())/dt

		local function extrapolate(t)
			local p = dp*t + currentPos
			local r = axisToCFrame(dr*t)*currentRot
			return r + p
		end

		return {
			extrapolate = extrapolate,
			posVelocity = dp,
			rotVelocity = dr,
		}
	end

	function TransformExtrapolator:Reset()
		self.lastCFrame = nil
	end
end
