return function(V,K,s,P,g)do end local o=P.Settings local p=o.Stiffness local I=o.Elasticity local y=P.Bones[V.ParentIndex]if y then local P=V.FreeLength if p>0 or I>0 then local o=CFrame.new(y.Position)*y.TransformOffset.Rotation s=s or(o*CFrame.new(V.LocalTransformOffset.Position)).Position local e=s-K K+=e*(I*g)if p>0 then local V=s-K local g=V.Magnitude local o=(P*(1-p))*2 if g>o then K+=V*((g-o)/g)end end end local o=y.Position-K local e=o.Magnitude if e>0 then K+=o*((e-P)/e)end end do end return K end
--!native
return function(self, Position, RestPosition, BoneTree, Delta)
do end
	
local Settings = BoneTree.Settings
	local Stiffness = Settings.Stiffness
	local Elasticity = Settings.Elasticity

	local ParentBone = BoneTree.Bones[self.ParentIndex]

	if ParentBone then
		local RestLength = self.FreeLength

		if Stiffness > 0 or Elasticity > 0 then
			local ParentBoneCFrame = CFrame.new(ParentBone.Position) * ParentBone.TransformOffset.Rotation
			RestPosition = RestPosition or (ParentBoneCFrame * CFrame.new(self.LocalTransformOffset.Position)).Position

			local ElasticDifference = RestPosition - Position
			Position += ElasticDifference * (Elasticity * Delta)

			if Stiffness > 0 then
				local StiffDifference = RestPosition - Position
				local Length = StiffDifference.Magnitude
				local MaxLength = RestLength * (1 - Stiffness) * 2
				if Length > MaxLength then
					Position += StiffDifference * ((Length - MaxLength) / Length)
				end
			end
		end

		local Difference = ParentBone.Position - Position
		local Length = Difference.Magnitude
		if Length > 0 then
			Position += Difference * ((Length - RestLength) / Length)
		end
	end
do end
	
return Position
end
