local G={}G.ClassName="\076\111\097\100\101\114"G.__index=G function G.new(l)return setmetatable({_script=l},G)end local function l(G)local l=G.Value if l then return l end return G.Changed:Wait()end function G.__call(E,G)if type(G)=="\115\116\114\105\110\103"then local Y=E._script.Parent[G]if Y:IsA("\079\098\106\101\099\116\086\097\108\117\101")then return require(l(Y))else return require(Y)end else return require(G)end end function G.__index(E,G)if type(G)=="\115\116\114\105\110\103"then local Y=E._script.Parent[G]if Y:IsA("\079\098\106\101\099\116\086\097\108\117\101")then return require(l(Y))else return require(Y)end else return require(G)end end return G
--[=[
	Loading logic for Nevermore

	@private
	@class LoaderClass
]=]

local Loader = {}
Loader.ClassName = "Loader"
Loader.__index = Loader

function Loader.new(script)
	return setmetatable({
		_script = script,
	}, Loader)
end

local function waitForValue(objectValue)
	local value = objectValue.Value
	if value then
		return value
	end

	return objectValue.Changed:Wait()
end

function Loader:__call(value)
	if type(value) == "string" then
		local object = self._script.Parent[value]
		if object:IsA("ObjectValue") then
			return require(waitForValue(object))
		else
			return require(object)
		end
	else
		return require(value)
	end
end

function Loader:__index(value)
	if type(value) == "string" then
		local object = self._script.Parent[value]
		if object:IsA("ObjectValue") then
			return require(waitForValue(object))
		else
			return require(object)
		end
	else
		return require(value)
	end
end

return Loader
