diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 326f1cec2982ca504f2207e6ed41bbe29fc67092..d04cb8c7ff22d78e2ade1f44dc6980ff37ca4129 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -297,119 +297,7 @@ std::string LLUrlEntrySLURL::getLocation(const std::string &url) const
 	return url.substr(pos, url.size() - pos);
 }
 
-//
-// LLUrlEntryAgent Describes a Second Life agent Url, e.g.,
-// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-//
-LLUrlEntryAgent::LLUrlEntryAgent()
-{
-	mPattern = boost::regex("secondlife:///app/agent/[\\da-f-]+/\\w+",
-							boost::regex::perl|boost::regex::icase);
-	mMenuName = "menu_url_agent.xml";
-	mIcon = "Generic_Person";
-	mColor = LLUIColorTable::instance().getColor("AgentLinkColor");
-}
-
-// IDEVO demo code
-static std::string clean_name(const std::string& first, const std::string& last)
-{
-	std::string displayname;
-	if (first == "miyazaki23") // IDEVO demo code
-	{
-		// miyazaki
-		displayname += (char)(0xE5);
-		displayname += (char)(0xAE);
-		displayname += (char)(0xAE);
-		displayname += (char)(0xE5);
-		displayname += (char)(0xB4);
-		displayname += (char)(0x8E);
-		// hayao
-		displayname += (char)(0xE9);
-		displayname += (char)(0xA7);
-		displayname += (char)(0xBF);
-		// san
-		displayname += (char)(0xE3);
-		displayname += (char)(0x81);
-		displayname += (char)(0x95);
-		displayname += (char)(0xE3);
-		displayname += (char)(0x82);
-		displayname += (char)(0x93);
-	}
-	else if (first == "Jim")
-	{
-		displayname = "Jos";
-		displayname += (char)(0xC3);
-		displayname += (char)(0xA9);
-		displayname += " Sanchez";
-	}
-	else if (first == "James")
-	{
-		displayname = "James Cook";
-	}
-
-	std::string fullname = first;
-	if (!last.empty())
-	{
-		fullname += ' ';
-		fullname += last;
-	}
-
-	std::string final;
-	if (!displayname.empty())
-	{
-		final = displayname + " (" + fullname + ")";
-	}
-	else
-	{
-		final = fullname;
-	}
-	return final;
-}
-
-void LLUrlEntryAgent::onAgentNameReceived(const LLUUID& id,
-										  const std::string& first,
-										  const std::string& last,
-										  BOOL is_group)
-{
-	std::string final = clean_name(first, last);
-	// received the agent name from the server - tell our observers
-	callObservers(id.asString(), final);
-}
-
-std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
-{
-	if (!gCacheName)
-	{
-		// probably at the login screen, use short string for layout
-		return LLTrans::getString("LoadingData");
-	}
-
-	std::string agent_id_string = getIDStringFromUrl(url);
-	if (agent_id_string.empty())
-	{
-		// something went wrong, just give raw url
-		return unescapeUrl(url);
-	}
-
-	LLUUID agent_id(agent_id_string);
-	std::string first, last;
-	if (agent_id.isNull())
-	{
-		return LLTrans::getString("AvatarNameNobody");
-	}
-	else if (gCacheName->getName(agent_id, first, last))
-	{
-		return clean_name(first, last);
-	}
-	else
-	{
-		gCacheName->get(agent_id, FALSE,
-			boost::bind(&LLUrlEntryAgent::onAgentNameReceived,
-				this, _1, _2, _3, _4));
-		addObserver(agent_id_string, url, cb);
-		return LLTrans::getString("LoadingData");
-	}
-}
+// LLUrlEntryAgent temporarily moved to newview IDEVO
 
 //
 // LLUrlEntryGroup Describes a Second Life group Url, e.g.,
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 4adffde99c35a9c47ab71166ddcbe603e18b6f9e..33ec9d82a9c72a023d874fdd01316131701f64c3 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -156,19 +156,7 @@ public:
 	/*virtual*/ std::string getLocation(const std::string &url) const;
 };
 
-///
-/// LLUrlEntryAgent Describes a Second Life agent Url, e.g.,
-/// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-///
-class LLUrlEntryAgent : public LLUrlEntryBase
-{
-public:
-	LLUrlEntryAgent();
-	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
-private:
-	void onAgentNameReceived(const LLUUID& id, const std::string& first,
-							 const std::string& last, BOOL is_group);
-};
+/// IDEVO LLUrlEntryAgent temporarily moved to newview
 
 ///
 /// LLUrlEntryGroup Describes a Second Life group Url, e.g.,
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index ad5c0911f8cb2fcdd5256bbab45b1fdb620e5b74..4fbdae9d383717fc7b92b54d7e6fcfce3bb84aab 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -43,11 +43,13 @@ void LLUrlRegistryNullCallback(const std::string &url, const std::string &label)
 
 LLUrlRegistry::LLUrlRegistry()
 {
+	mUrlEntry.reserve(16);
+
 	// Urls are matched in the order that they were registered
 	registerUrl(new LLUrlEntrySLURL());
 	registerUrl(new LLUrlEntryHTTP());
 	registerUrl(new LLUrlEntryHTTPLabel());
-	registerUrl(new LLUrlEntryAgent());
+	// IDEVO registerUrl(new LLUrlEntryAgent());
 	registerUrl(new LLUrlEntryGroup());
 	registerUrl(new LLUrlEntryParcel());
 	registerUrl(new LLUrlEntryTeleport());
@@ -73,11 +75,14 @@ LLUrlRegistry::~LLUrlRegistry()
 	}
 }
 
-void LLUrlRegistry::registerUrl(LLUrlEntryBase *url)
+void LLUrlRegistry::registerUrl(LLUrlEntryBase *url, bool force_front)
 {
 	if (url)
 	{
-		mUrlEntry.push_back(url);
+		if (force_front)  // IDEVO
+			mUrlEntry.insert(mUrlEntry.begin(), url);
+		else
+			mUrlEntry.push_back(url);
 	}
 }
 
diff --git a/indra/llui/llurlregistry.h b/indra/llui/llurlregistry.h
index 399ee0a9887d28e9b09510d49918a1c63242d1d3..6d47c2c2a2db61011c3056f9b9e3efcb1f759e06 100644
--- a/indra/llui/llurlregistry.h
+++ b/indra/llui/llurlregistry.h
@@ -70,7 +70,9 @@ public:
 	~LLUrlRegistry();
 
 	/// add a new Url handler to the registry (will be freed on destruction)
-	void registerUrl(LLUrlEntryBase *url);
+	/// optionally force it to the front of the list, making it take
+	/// priority over other regular expression matches for URLs
+	void registerUrl(LLUrlEntryBase *url, bool force_front = false);
 
 	/// get the next Url in an input string, starting at a given character offset
 	/// your callback is invoked if the matched Url's label changes in the future
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 80be8fcbf72634d907357ad4048c1b48df42b600..9200708784f9235e7da4d82938d5c8a84ae19ab6 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -266,28 +266,29 @@ namespace tut
 		//
 		// test LLUrlEntryAgent - secondlife://app/agent Urls
 		//
-		LLUrlEntryAgent url;
-		boost::regex r = url.getPattern();
+		// IDEVO - moved temporarily into newview, not available for test
+		//LLUrlEntryAgent url;
+		//boost::regex r = url.getPattern();
 
-		testRegex("Invalid Agent Url", r,
-				  "secondlife:///app/agent/0e346d8b-4433-4d66-XXXX-fd37083abc4c/about",
-				  "");
+		//testRegex("Invalid Agent Url", r,
+		//		  "secondlife:///app/agent/0e346d8b-4433-4d66-XXXX-fd37083abc4c/about",
+		//		  "");
 
-		testRegex("Agent Url ", r,
-				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about",
-				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
+		//testRegex("Agent Url ", r,
+		//		  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about",
+		//		  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("Agent Url in text", r,
-				  "XXX secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about XXX",
-				  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
+		//testRegex("Agent Url in text", r,
+		//		  "XXX secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about XXX",
+		//		  "secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about");
 
-		testRegex("Agent Url multicase", r,
-				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About XXX",
-				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About");
+		//testRegex("Agent Url multicase", r,
+		//		  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About XXX",
+		//		  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/About");
 
-		testRegex("Agent Url alternate command", r,
-				  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",
-				  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar");
+		//testRegex("Agent Url alternate command", r,
+		//		  "XXX secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar",
+		//		  "secondlife:///App/AGENT/0E346D8B-4433-4d66-a6b0-fd37083abc4c/foobar");
 
 	}
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 5373556c20f035e8491f970a4bf026ba133090d4..f4bbe7133f3c7d78adc5441afc815a1c594fdcc8 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -445,6 +445,7 @@ set(viewer_SOURCE_FILES
     llurl.cpp
     llurldispatcher.cpp
     llurldispatcherlistener.cpp
+    llurlentryagent.cpp
     llurlhistory.cpp
     llurllineeditorctrl.cpp
     llurlsimstring.cpp
@@ -952,6 +953,7 @@ set(viewer_HEADER_FILES
     llurl.h
     llurldispatcher.h
     llurldispatcherlistener.h
+    llurlentryagent.h
     llurlhistory.h
     llurllineeditorctrl.h
     llurlsimstring.h
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 6b816f8786381869dc1f5120bac09d4a16456138..a372ab44f249a9a79e80bda4ccb23bd8aa328f11 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -144,7 +144,9 @@
 #include "llui.h"
 #include "llurldispatcher.h"
 #include "llurlsimstring.h"
+#include "llurlentryagent.h"	// IDEVO
 #include "llurlhistory.h"
+#include "llurlregistry.h"		// IDEVO
 #include "llurlwhitelist.h"
 #include "llvieweraudio.h"
 #include "llviewerassetstorage.h"
@@ -1282,6 +1284,9 @@ bool idle_startup()
 			gCacheName->LocalizeCacheName("none", LLTrans::getString("GroupNameNone"));
 			// Load stored cache if possible
             LLAppViewer::instance()->loadNameCache();
+
+			// Handle secondlife:///app/agent name lookups IDEVO
+			LLUrlRegistry::getInstance()->registerUrl(new LLUrlEntryAgent(), true);
 		}
 
 		// *Note: this is where gWorldMap used to be initialized.
diff --git a/indra/newview/llurlentryagent.cpp b/indra/newview/llurlentryagent.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d104fdf20df7c4977ae8862d9926ec7e8feb933f
--- /dev/null
+++ b/indra/newview/llurlentryagent.cpp
@@ -0,0 +1,154 @@
+/** 
+ * @file llurlentry.cpp
+ * @author Martin Reddy
+ * @brief Describes the Url types that can be registered in LLUrlRegistry
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llurlentryagent.h"
+
+#include "llcachename.h"
+#include "lltrans.h"
+#include "lluicolortable.h"
+
+//
+// LLUrlEntryAgent Describes a Second Life agent Url, e.g.,
+// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+//
+LLUrlEntryAgent::LLUrlEntryAgent()
+{
+	mPattern = boost::regex("secondlife:///app/agent/[\\da-f-]+/\\w+",
+							boost::regex::perl|boost::regex::icase);
+	mMenuName = "menu_url_agent.xml";
+	mIcon = "Generic_Person";
+	mColor = LLUIColorTable::instance().getColor("AgentLinkColor");
+}
+
+// IDEVO demo code
+static std::string clean_name(const std::string& first, const std::string& last)
+{
+	std::string displayname;
+	if (first == "miyazaki23") // IDEVO demo code
+	{
+		// miyazaki
+		displayname += (char)(0xE5);
+		displayname += (char)(0xAE);
+		displayname += (char)(0xAE);
+		displayname += (char)(0xE5);
+		displayname += (char)(0xB4);
+		displayname += (char)(0x8E);
+		// hayao
+		displayname += (char)(0xE9);
+		displayname += (char)(0xA7);
+		displayname += (char)(0xBF);
+		// san
+		displayname += (char)(0xE3);
+		displayname += (char)(0x81);
+		displayname += (char)(0x95);
+		displayname += (char)(0xE3);
+		displayname += (char)(0x82);
+		displayname += (char)(0x93);
+	}
+	else if (first == "Jim")
+	{
+		displayname = "Jos";
+		displayname += (char)(0xC3);
+		displayname += (char)(0xA9);
+		displayname += " Sanchez";
+	}
+	else if (first == "James")
+	{
+		displayname = "James Cook";
+	}
+
+	std::string fullname = first;
+	if (!last.empty())
+	{
+		fullname += ' ';
+		fullname += last;
+	}
+
+	std::string final;
+	if (!displayname.empty())
+	{
+		final = displayname + " (" + fullname + ")";
+	}
+	else
+	{
+		final = fullname;
+	}
+	return final;
+}
+
+void LLUrlEntryAgent::onAgentNameReceived(const LLUUID& id,
+										  const std::string& first,
+										  const std::string& last,
+										  BOOL is_group)
+{
+	std::string final = clean_name(first, last);
+	// received the agent name from the server - tell our observers
+	callObservers(id.asString(), final);
+}
+
+std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+	if (!gCacheName)
+	{
+		// probably at the login screen, use short string for layout
+		return LLTrans::getString("LoadingData");
+	}
+
+	std::string agent_id_string = getIDStringFromUrl(url);
+	if (agent_id_string.empty())
+	{
+		// something went wrong, just give raw url
+		return unescapeUrl(url);
+	}
+
+	LLUUID agent_id(agent_id_string);
+	std::string first, last;
+	if (agent_id.isNull())
+	{
+		return LLTrans::getString("AvatarNameNobody");
+	}
+	else if (gCacheName->getName(agent_id, first, last))
+	{
+		return clean_name(first, last);
+	}
+	else
+	{
+		gCacheName->get(agent_id, FALSE,
+			boost::bind(&LLUrlEntryAgent::onAgentNameReceived,
+				this, _1, _2, _3, _4));
+		addObserver(agent_id_string, url, cb);
+		return LLTrans::getString("LoadingData");
+	}
+}
diff --git a/indra/newview/llurlentryagent.h b/indra/newview/llurlentryagent.h
new file mode 100644
index 0000000000000000000000000000000000000000..8e5e321a312c058407838af3d7ad02e1b57a6537
--- /dev/null
+++ b/indra/newview/llurlentryagent.h
@@ -0,0 +1,53 @@
+/** 
+ * @file llurlentryagent.h
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLURLENTRYAGENT_H
+#define LL_LLURLENTRYAGENT_H
+
+#include "llurlentry.h"
+
+///
+/// LLUrlEntryAgent Describes a Second Life agent Url, e.g.,
+/// secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+///
+/// IDEVO Pulled this temporarily into newview for faster compile/link
+/// times while iterating on UI.
+class LLUrlEntryAgent : public LLUrlEntryBase
+{
+public:
+	LLUrlEntryAgent();
+	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+private:
+	void onAgentNameReceived(const LLUUID& id, const std::string& first,
+							 const std::string& last, BOOL is_group);
+};
+
+#endif