function RxLinkUtils.observeValidityBrio(K,L)assert(typeof(L)=="\073\110\115\116\097\110\099\101"and L:IsA("\079\098\106\101\099\116\086\097\108\117\101"),"\066\097\100 \108\105\110\107")assert(type(K)=="\115\116\114\105\110\103","\066\097\100 \108\105\110\107\078\097\109\101")return Observable.new(function(M)local J=Maid.new()local function V()if not(L.Name==K and L.Value)then J._lastValid=nil return end local V=Brio.new(L,L.Value)J._lastValid=V M:Fire(V)end J:GiveTask((L:GetPropertyChangedSignal("\086\097\108\117\101")):Connect(V))J:GiveTask((L:GetPropertyChangedSignal("\078\097\109\101")):Connect(V))V()return J end)end return RxLinkUtils
-- Fires off everytime the link is reconfigured into a valid link
-- Fires with link, linkValue
function RxLinkUtils.observeValidityBrio(linkName, link)
	assert(typeof(link) == "Instance" and link:IsA("ObjectValue"), "Bad link")
	assert(type(linkName) == "string", "Bad linkName")

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

		local function updateValidity()
			if not ((link.Name == linkName) and link.Value) then
				maid._lastValid = nil
				return
			end

			local newValid = Brio.new(link, link.Value)
			maid._lastValid = newValid
			sub:Fire(newValid)
		end

		maid:GiveTask(link:GetPropertyChangedSignal("Value"):Connect(updateValidity))
		maid:GiveTask(link:GetPropertyChangedSignal("Name"):Connect(updateValidity))
		updateValidity()

		return maid
	end)
end

return RxLinkUtils
