--CFrame.new ( number x, number y, number z, number R00, number R01, number R02, number R10, number R11, number R12, number R20, number R21, number R22 )
--CFrame:GetComponents ( )	x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22,


local comps = {}

local cf = CFrame.new

local CFrameEasing = {}

local easing = require(script.Easing)

for key, val in pairs(easing) do
	CFrameEasing[key] = function(b, g, t, d, ...)	
		local bX, bY, bZ, bR00, bR01, bR02, bR10, bR11, bR12, bR20, bR21, bR22 = b:GetComponents()
		local gX, gY, gZ, gR00, gR01, gR02, gR10, gR11, gR12, gR20, gR21, gR22 = g:GetComponents()
		return cf(
			easing[key](t, bX, gX - bX, d, ...), easing[key](t, bY, gY - bY, d, ...), easing[key](t, bZ, gZ - bZ, d, ...),		--X, Y, Z
			easing[key](t, bR00, gR00 - bR00, d, ...), easing[key](t, bR01, gR01 - bR01, d, ...), easing[key](t, bR02, gR02 - bR02, d, ...),		--number R00, number R01, number R02
			easing[key](t, bR10, gR10 - bR10, d, ...), easing[key](t, bR11, gR11 - bR11, d, ...), easing[key](t, bR12, gR12 - bR12, d, ...),		--number R10, number R11, number R12
			easing[key](t, bR20, gR20 - bR20, d, ...), easing[key](t, bR21, gR21 - bR21, d, ...), easing[key](t, bR22, gR22 - bR22, d, ...)		--number R20, number R21, number R22
		)
	end	
end

return CFrameEasing
