function Rx.skip(m)assert(type(m)=="\110\117\109\098\101\114","\066\097\100 \116\111\083\107\105\112")assert(m>0,"\066\097\100 \116\111\083\107\105\112")return function(M)assert(Observable.isObservable(M),"\066\097\100 \111\098\115\101\114\118\097\098\108\101")return Observable.new(function(d)local X=0 local V=Maid.new()V:GiveTask(M:Subscribe(function(...)if X<=m then X=X+1 return end d:Fire(...)end,d:GetFailComplete()))return V end)end end

function Rx.skip(toSkip)
	assert(type(toSkip) == "number", "Bad toSkip")
	assert(toSkip > 0, "Bad toSkip")

	return function(source)
		assert(Observable.isObservable(source), "Bad observable")

		return Observable.new(function(sub)
			local skipped = 0
			local maid = Maid.new()

			maid:GiveTask(source:Subscribe(function(...)
				if skipped <= toSkip then
					skipped = skipped + 1
					return
				end

				sub:Fire(...)
			end, sub:GetFailComplete()))

			return maid
		end)
	end
end
