function Dispatcher.Evaluate(Z,f,C,c,O)if RunService:IsClient()==true and C~=Players.LocalPlayer then error("\067\097\110\'\116 \101\118\097\108\117\097\116\101 \097 \099\111\109\109\097\110\100 \116\104\097\116 \105\115\110\'\116 \115\101\110\116 \098\121 \116\104\101 \108\111\099\097\108 \112\108\097\121\101\114\046")end local T=Util.SplitString(f)local X=table.remove(T,1)local D=Z.Registry:GetCommand(X)if D then T=Util.MashExcessArguments(T,#D.Args)local V=Command.new({Dispatcher=Z,Text=f;CommandObject=D;Alias=X,Executor=C;Arguments=T,Data=O})local Y,W=V:Parse(c)if Y then return V else return false,W end else return false,("\037\113 \105\115 \110\111\116 \097 \118\097\108\105\100 \099\111\109\109\097\110\100 \110\097\109\101\046 \085\115\101 \116\104\101 \104\101\108\112 \099\111\109\109\097\110\100 \116\111 \115\101\101 \097\108\108 \097\118\097\105\108\097\098\108\101 \099\111\109\109\097\110\100\115\046"):format(tostring(X))end end

function Dispatcher:Evaluate (text, executor, allowIncompleteArguments, data)
	if RunService:IsClient() == true and executor ~= Players.LocalPlayer then
		error("Can't evaluate a command that isn't sent by the local player.")
	end

	local arguments = Util.SplitString(text)
	local commandName = table.remove(arguments, 1)
	local commandObject = self.Registry:GetCommand(commandName)

	if commandObject then
		-- No need to continue splitting when there are no more arguments. We'll just mash any additional arguments into the last one.
		arguments = Util.MashExcessArguments(arguments, #commandObject.Args)

		-- Create the CommandContext and parse it.
		local command = Command.new({
			Dispatcher = self,
			Text = text,
			CommandObject = commandObject,
			Alias = commandName,
			Executor = executor,
			Arguments = arguments,
			Data = data
		})
		local success, errorText = command:Parse(allowIncompleteArguments)

		if success then
			return command
		else
			return false, errorText
		end
	else
		return false, ("%q is not a valid command name. Use the help command to see all available commands."):format(tostring(commandName))
	end
end
