local N,T do local g={Passes={};Products={}}for N,T in pairs(script.Passes:GetChildren())do g.Passes[T.Name]=require(T)end for N,T in pairs(script.Products:GetChildren())do g.Products[T.Name]=require(T)end function N(N)for T,g in pairs(g)do for g,r in pairs(g)do if N==g or N==r.Id then return r,T end end end end function T(N)for T,g in pairs(g)do for T,g in pairs(g)do if N==g.Id then return T end end end end end

local getAsset, getNameFromID do
	local cache = {
		Passes = {},
		Products = {}
	}

	for i, pass in pairs(script.Passes:GetChildren()) do
		cache.Passes[pass.Name] = require(pass)
	end

	for i, product in pairs(script.Products:GetChildren()) do
		cache.Products[product.Name] = require(product)
	end

	function getAsset(identity)
		for class, content in pairs(cache) do
			for name, module in pairs(content) do
				if (identity == name or identity == module.Id) then
					return module, class
				end
			end
		end
	end

	function getNameFromID(id)
		for class, content in pairs(cache) do
			for name, module in pairs(content) do
				if id == module.Id then
					return name
				end
			end
		end
	end
end
