diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index 0745696ef3e70d801725e7609dfe86e701e2c1c7..0da83720bd57d8f3bd15c75a066aab291a70e223 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -62,6 +62,7 @@ enum LAND_STAT_FLAGS
 	STAT_FILTER_BY_PARCEL	= 0x00000001,
 	STAT_FILTER_BY_OWNER	= 0x00000002,
 	STAT_FILTER_BY_OBJECT	= 0x00000004,
+	STAT_FILTER_BY_PARCEL_NAME	= 0x00000008,
 	STAT_REQUEST_LAST_ENTRY	= 0x80000000,
 };
 
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index b3e1b63db58a4d788001458509c34c8aacc87b2e..82a914a30abb7cd2df608b4d8580c76ba63f41e7 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -2704,6 +2704,11 @@ BOOL LLScrollListCtrl::hasSortOrder() const
 	return !mSortColumns.empty();
 }
 
+void LLScrollListCtrl::clearSortOrder()
+{
+	mSortColumns.clear();
+}
+
 void LLScrollListCtrl::clearColumns()
 {
 	column_map_t::iterator itor;
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index ae8aea92457bb98fb8c531b3bf911f9937a2bab5..6660c07b8edd5e83f918e18a6b1bf9dbd91033d5 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -373,6 +373,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	std::string     getSortColumnName();
 	BOOL			getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }
 	BOOL			hasSortOrder() const;
+	void			clearSortOrder();
 
 	S32		selectMultiple( uuid_vec_t ids );
 	// conceptually const, but mutates mItemList
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index cc7c9a5bdabc931e5166035b4dbeedbdfb9e8fb4..6d8494421a1fece5b513cff2caa1013c2352cea7 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2377,12 +2377,6 @@ LLPanelLandAccess::~LLPanelLandAccess()
 void LLPanelLandAccess::refresh()
 {
 	LLFloater* parent_floater = gFloaterView->getParentFloater(this);
-	
-	if (mListAccess)
-		mListAccess->deleteAllItems();
-	if (mListBanned)
-		mListBanned->deleteAllItems();
-	
 	LLParcel *parcel = mParcel->getParcel();
 		
 	// Display options
@@ -2400,7 +2394,11 @@ void LLPanelLandAccess::refresh()
 		getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
 		
 		// Allow list
+		if (mListAccess)
 		{
+			// Clear the sort order so we don't re-sort on every add.
+			mListAccess->clearSortOrder();
+			mListAccess->deleteAllItems();
 			S32 count = parcel->mAccessList.size();
 			getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
 			getChild<LLUICtrl>("AccessList")->setToolTipArg(LLStringExplicit("[MAX]"), llformat("%d",PARCEL_MAX_ACCESS_LIST));
@@ -2435,13 +2433,17 @@ void LLPanelLandAccess::refresh()
 					}
 					suffix.append(" " + parent_floater->getString("Remaining") + ")");
 				}
-				if (mListAccess)
-					mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);
+				mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);
 			}
+			mListAccess->sortByName(TRUE);
 		}
 		
 		// Ban List
+		if(mListBanned)
 		{
+			// Clear the sort order so we don't re-sort on every add.
+			mListBanned->clearSortOrder();
+			mListBanned->deleteAllItems();
 			S32 count = parcel->mBanList.size();
 
 			getChild<LLUICtrl>("BannedList")->setToolTipArg(LLStringExplicit("[LISTED]"), llformat("%d",count));
@@ -2479,6 +2481,7 @@ void LLPanelLandAccess::refresh()
 				}
 				mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);
 			}
+			mListBanned->sortByName(TRUE);
 		}
 
 		if(parcel->getRegionDenyAnonymousOverride())
@@ -2614,13 +2617,13 @@ void LLPanelLandAccess::refresh_ui()
 		getChildView("AccessList")->setEnabled(can_manage_allowed);
 		S32 allowed_list_count = parcel->mAccessList.size();
 		getChildView("add_allowed")->setEnabled(can_manage_allowed && allowed_list_count < PARCEL_MAX_ACCESS_LIST);
-		BOOL has_selected = mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0;
+		BOOL has_selected = (mListAccess && mListAccess->getSelectionInterface()->getFirstSelectedIndex() >= 0);
 		getChildView("remove_allowed")->setEnabled(can_manage_allowed && has_selected);
 		
 		getChildView("BannedList")->setEnabled(can_manage_banned);
 		S32 banned_list_count = parcel->mBanList.size();
 		getChildView("add_banned")->setEnabled(can_manage_banned && banned_list_count < PARCEL_MAX_ACCESS_LIST);
-		has_selected = mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0;
+		has_selected = (mListBanned && mListBanned->getSelectionInterface()->getFirstSelectedIndex() >= 0);
 		getChildView("remove_banned")->setEnabled(can_manage_banned && has_selected);
 	}
 }
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 17850ff35d382fc8550fc6dc67792bf1a87c58ee..fe29bb38c73b67061731273bf1fa08f84cf77f96 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -287,8 +287,7 @@ void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)
 	//dispatch the message
 	dispatch.dispatch(request, invoice, strings);
 
-	LLViewerRegion* region = gAgent.getRegion();
-	panel->updateControls(region);
+	panel->updateControls(gAgent.getRegion());
 }
 
 
@@ -1924,10 +1923,18 @@ void LLPanelEstateInfo::updateControls(LLViewerRegion* region)
 	BOOL manager = (region && region->isEstateManager());
 	setCtrlsEnabled(god || owner || manager);
 	
+	BOOL has_allowed_avatar = getChild<LLNameListCtrl>("allowed_avatar_name_list")->getFirstSelected() ?  TRUE : FALSE;
+	BOOL has_allowed_group = getChild<LLNameListCtrl>("allowed_group_name_list")->getFirstSelected() ?  TRUE : FALSE;
+	BOOL has_banned_agent = getChild<LLNameListCtrl>("banned_avatar_name_list")->getFirstSelected() ?  TRUE : FALSE;
+	BOOL has_estate_manager = getChild<LLNameListCtrl>("estate_manager_name_list")->getFirstSelected() ?  TRUE : FALSE;
+
 	getChildView("add_allowed_avatar_btn")->setEnabled(god || owner || manager);
-	getChildView("remove_allowed_avatar_btn")->setEnabled(god || owner || manager);
+	getChildView("remove_allowed_avatar_btn")->setEnabled(has_allowed_avatar && (god || owner || manager));
+	getChildView("allowed_avatar_name_list")->setEnabled(god || owner || manager);
+	
 	getChildView("add_allowed_group_btn")->setEnabled(god || owner || manager);
-	getChildView("remove_allowed_group_btn")->setEnabled(god || owner || manager);
+	getChildView("remove_allowed_group_btn")->setEnabled(has_allowed_group && (god || owner || manager) );
+	getChildView("allowed_group_name_list")->setEnabled(god || owner || manager);
 
 	// Can't ban people from mainland, orientation islands, etc. because this
 	// creates much network traffic and server load.
@@ -1935,14 +1942,15 @@ void LLPanelEstateInfo::updateControls(LLViewerRegion* region)
 	bool linden_estate = isLindenEstate();
 	bool enable_ban = (god || owner || manager) && !linden_estate;
 	getChildView("add_banned_avatar_btn")->setEnabled(enable_ban);
-	getChildView("remove_banned_avatar_btn")->setEnabled(enable_ban);
+	getChildView("remove_banned_avatar_btn")->setEnabled(has_banned_agent && enable_ban);
+	getChildView("banned_avatar_name_list")->setEnabled(god || owner || manager);
 
 	getChildView("message_estate_btn")->setEnabled(god || owner || manager);
 	getChildView("kick_user_from_estate_btn")->setEnabled(god || owner || manager);
 
 	// estate managers can't add estate managers
 	getChildView("add_estate_manager_btn")->setEnabled(god || owner);
-	getChildView("remove_estate_manager_btn")->setEnabled(god || owner);
+	getChildView("remove_estate_manager_btn")->setEnabled(has_estate_manager && (god || owner));
 	getChildView("estate_manager_name_list")->setEnabled(god || owner);
 
 	refresh();
@@ -1979,10 +1987,8 @@ bool LLPanelEstateInfo::refreshFromRegion(LLViewerRegion* region)
 
 void LLPanelEstateInfo::updateChild(LLUICtrl* child_ctrl)
 {
-	if (checkRemovalButton(child_ctrl->getName()))
-	{
-		// do nothing
-	}
+	// Ensure appropriate state of the management ui.
+	updateControls(gAgent.getRegion());
 }
 
 bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg)
@@ -2080,23 +2086,8 @@ void LLPanelEstateInfo::refreshFromEstate()
 	getChild<LLUICtrl>("limit_payment")->setValue(estate_info.getDenyAnonymous());
 	getChild<LLUICtrl>("limit_age_verified")->setValue(estate_info.getDenyAgeUnverified());
 
-	// If visible from mainland, disable the access allowed
-	// UI, as anyone can teleport there.
-	// However, gods need to be able to edit the access list for
-	// linden estates, regardless of visibility, to allow object
-	// and L$ transfers.
-	{
-		bool visible_from_mainland = estate_info.getIsExternallyVisible();
-		bool god = gAgent.isGodlike();
-		bool linden_estate = isLindenEstate();
-
-		bool enable_agent = (!visible_from_mainland || (god && linden_estate));
-		bool enable_group = enable_agent;
-		bool enable_ban = !linden_estate;
-
-		setAccessAllowedEnabled(enable_agent, enable_group, enable_ban);
-	}
-
+	// Ensure appriopriate state of the management UI
+	updateControls(gAgent.getRegion());
 	refresh();
 }
 
@@ -2225,47 +2216,6 @@ void LLPanelEstateInfo::setOwnerName(const std::string& name)
 	getChild<LLUICtrl>("estate_owner")->setValue(LLSD(name));
 }
 
-void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent,
-												bool enable_group,
-												bool enable_ban)
-{
-	getChildView("allow_resident_label")->setEnabled(enable_agent);
-	getChildView("allowed_avatar_name_list")->setEnabled(enable_agent);
-	getChildView("allowed_avatar_name_list")->setVisible( enable_agent);
-	getChildView("add_allowed_avatar_btn")->setEnabled(enable_agent);
-	getChildView("remove_allowed_avatar_btn")->setEnabled(enable_agent);
-
-	// Groups
-	getChildView("allow_group_label")->setEnabled(enable_group);
-	getChildView("allowed_group_name_list")->setEnabled(enable_group);
-	getChildView("allowed_group_name_list")->setVisible( enable_group);
-	getChildView("add_allowed_group_btn")->setEnabled(enable_group);
-	getChildView("remove_allowed_group_btn")->setEnabled(enable_group);
-
-	// Ban
-	getChildView("ban_resident_label")->setEnabled(enable_ban);
-	getChildView("banned_avatar_name_list")->setEnabled(enable_ban);
-	getChildView("banned_avatar_name_list")->setVisible( enable_ban);
-	getChildView("add_banned_avatar_btn")->setEnabled(enable_ban);
-	getChildView("remove_banned_avatar_btn")->setEnabled(enable_ban);
-
-	// Update removal buttons if needed
-	if (enable_agent)
-	{
-		checkRemovalButton("allowed_avatar_name_list");
-	}
-
-	if (enable_group)
-	{
-		checkRemovalButton("allowed_group_name_list");
-	}
-
-	if (enable_ban)
-	{
-		checkRemovalButton("banned_avatar_name_list");
-	}
-}
-
 void LLPanelEstateInfo::clearAccessLists() 
 {
 	LLNameListCtrl* name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list");
@@ -2279,39 +2229,7 @@ void LLPanelEstateInfo::clearAccessLists()
 	{
 		name_list->deleteAllItems();
 	}
-}
-
-// enables/disables the "remove" button for the various allow/ban lists
-BOOL LLPanelEstateInfo::checkRemovalButton(std::string name)
-{
-	std::string btn_name = "";
-	if (name == "allowed_avatar_name_list")
-	{
-		btn_name = "remove_allowed_avatar_btn";
-	}
-	else if (name == "allowed_group_name_list")
-	{
-		btn_name = "remove_allowed_group_btn";
-	}
-	else if (name == "banned_avatar_name_list")
-	{
-		btn_name = "remove_banned_avatar_btn";
-	}
-	else if (name == "estate_manager_name_list")
-	{
-		//ONLY OWNER CAN ADD /DELET ESTATE MANAGER
-		LLViewerRegion* region = gAgent.getRegion();
-		if (region && (region->getOwner() == gAgent.getID()))
-		{
-			btn_name = "remove_estate_manager_btn";
-		}
-	}
-
-	// enable the remove button if something is selected
-	LLNameListCtrl* name_list = getChild<LLNameListCtrl>(name);
-	getChildView(btn_name)->setEnabled(name_list && name_list->getFirstSelected() ? TRUE : FALSE);
-
-	return (btn_name != "");
+	updateControls(gAgent.getRegion());
 }
 
 // static
@@ -2792,15 +2710,15 @@ bool LLDispatchSetEstateAccess::operator()(
 
 		if (allowed_agent_name_list)
 		{
-			//allowed_agent_name_list->deleteAllItems();
+			// Don't sort these as we add them, sort them when we are done.
+			allowed_agent_name_list->clearSortOrder();
 			for (S32 i = 0; i < num_allowed_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
 			{
 				LLUUID id;
 				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */
 				allowed_agent_name_list->addNameItem(id);
 			}
-			panel->getChildView("remove_allowed_avatar_btn")->setEnabled(allowed_agent_name_list->getFirstSelected() ? TRUE : FALSE);
-			allowed_agent_name_list->sortByColumnIndex(0, TRUE);
+			allowed_agent_name_list->sortByName(TRUE);
 		}
 	}
 
@@ -2817,6 +2735,8 @@ bool LLDispatchSetEstateAccess::operator()(
 
 		if (allowed_group_name_list)
 		{
+			// Don't sort these as we add them, sort them when we are done.
+			allowed_group_name_list->clearSortOrder();
 			allowed_group_name_list->deleteAllItems();
 			for (S32 i = 0; i < num_allowed_groups && i < ESTATE_MAX_GROUP_IDS; i++)
 			{
@@ -2824,8 +2744,7 @@ bool LLDispatchSetEstateAccess::operator()(
 				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */
 				allowed_group_name_list->addGroupNameItem(id);
 			}
-			panel->getChildView("remove_allowed_group_btn")->setEnabled(allowed_group_name_list->getFirstSelected() ? TRUE : FALSE);
-			allowed_group_name_list->sortByColumnIndex(0, TRUE);
+			allowed_group_name_list->sortByName(TRUE);
 		}
 	}
 
@@ -2849,15 +2768,16 @@ bool LLDispatchSetEstateAccess::operator()(
 
 		if (banned_agent_name_list)
 		{
-			//banned_agent_name_list->deleteAllItems();
+			// Don't sort these as we add them, sort them when we are done.
+			banned_agent_name_list->clearSortOrder();
+
 			for (S32 i = 0; i < num_banned_agents && i < ESTATE_MAX_ACCESS_IDS; i++)
 			{
 				LLUUID id;
 				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */
 				banned_agent_name_list->addNameItem(id);
 			}
-			panel->getChildView("remove_banned_avatar_btn")->setEnabled(banned_agent_name_list->getFirstSelected() ? TRUE : FALSE);
-			banned_agent_name_list->sortByColumnIndex(0, TRUE);
+			banned_agent_name_list->sortByName(TRUE);
 		}
 	}
 
@@ -2872,6 +2792,9 @@ bool LLDispatchSetEstateAccess::operator()(
 			panel->getChild<LLNameListCtrl>("estate_manager_name_list");
 		if (estate_manager_name_list)
 		{	
+			// Don't sort these as we add them, sort them when we are done.
+			estate_manager_name_list->clearSortOrder();
+
 			estate_manager_name_list->deleteAllItems();		// Clear existing entries
 
 			// There should be only ESTATE_MAX_MANAGERS people in the list, but if the database gets more (SL-46107) don't 
@@ -2883,11 +2806,13 @@ bool LLDispatchSetEstateAccess::operator()(
 				memcpy(id.mData, strings[index++].data(), UUID_BYTES);		/* Flawfinder: ignore */
 				estate_manager_name_list->addNameItem(id);
 			}
-			panel->getChildView("remove_estate_manager_btn")->setEnabled(estate_manager_name_list->getFirstSelected() ? TRUE : FALSE);
-			estate_manager_name_list->sortByColumnIndex(0, TRUE);
+			estate_manager_name_list->sortByName(TRUE);
 		}
 	}
 
+	// Update the buttons which may change based on the list contents but also needs to account for general access features.
+	panel->updateControls(gAgent.getRegion());
+
 	return true;
 }
 
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index e36ef4604b23d950e8b1b303eef68d586a647e5d..f0499f19030a0a9b8b2f2eded1c9b550a77182e4 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -312,9 +312,6 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	const std::string getOwnerName() const;
 	void setOwnerName(const std::string& name);
 
-	// If visible from mainland, allowed agent and allowed groups
-	// are ignored, so must disable UI.
-	void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban);
 protected:
 	virtual BOOL sendUpdate();
 	// confirmation dialog callback
@@ -324,7 +321,6 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	void commitEstateManagers();
 	
 	void clearAccessLists();
-	BOOL checkRemovalButton(std::string name);
 	BOOL checkSunHourSlider(LLUICtrl* child_ctrl);
 
 	U32 mEstateID;
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index 87d048c15b4dbedd7665584cfc8ea4e34a92439e..2d91a61b545f828cef24151d07d38bc683646c0f 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -82,6 +82,7 @@ LLFloaterTopObjects::LLFloaterTopObjects(const LLSD& key)
 	mCommitCallbackRegistrar.add("TopObjects.Refresh",			boost::bind(&LLFloaterTopObjects::onRefresh, this));
 	mCommitCallbackRegistrar.add("TopObjects.GetByObjectName",	boost::bind(&LLFloaterTopObjects::onGetByObjectName, this));
 	mCommitCallbackRegistrar.add("TopObjects.GetByOwnerName",	boost::bind(&LLFloaterTopObjects::onGetByOwnerName, this));
+	mCommitCallbackRegistrar.add("TopObjects.GetByParcelName",	boost::bind(&LLFloaterTopObjects::onGetByParcelName, this));
 	mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));
 }
 
@@ -99,21 +100,6 @@ BOOL LLFloaterTopObjects::postBuild()
 
 	setDefaultBtn("show_beacon_btn");
 
-	/*
-	LLLineEditor* line_editor = getChild<LLLineEditor>("owner_name_editor");
-	if (line_editor)
-	{
-		line_editor->setCommitOnFocusLost(FALSE);
-		line_editor->setCommitCallback(onGetByOwnerName, this);
-	}
-
-	line_editor = getChild<LLLineEditor>("object_name_editor");
-	if (line_editor)
-	{
-		line_editor->setCommitOnFocusLost(FALSE);
-		line_editor->setCommitCallback(onGetByObjectName, this);
-	}*/
-
 	mCurrentMode = STAT_REPORT_TOP_SCRIPTS;
 	mFlags = 0;
 	mFilter.clear();
@@ -168,9 +154,11 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 		F32 score;
 		std::string name_buf;
 		std::string owner_buf;
+		std::string parcel_buf("unknown");
 		F32 mono_score = 0.f;
 		bool have_extended_data = false;
 		S32 public_urls = 0;
+		F32 script_memory = 0.f;
 
 		msg->getU32Fast(_PREHASH_ReportData, _PREHASH_TaskLocalID, task_local_id, block);
 		msg->getUUIDFast(_PREHASH_ReportData, _PREHASH_TaskID, task_id, block);
@@ -180,12 +168,18 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 		msg->getF32Fast(_PREHASH_ReportData, _PREHASH_Score, score, block);
 		msg->getStringFast(_PREHASH_ReportData, _PREHASH_TaskName, name_buf, block);
 		msg->getStringFast(_PREHASH_ReportData, _PREHASH_OwnerName, owner_buf, block);
+
 		if(msg->has("DataExtended"))
 		{
 			have_extended_data = true;
 			msg->getU32("DataExtended", "TimeStamp", time_stamp, block);
 			msg->getF32("DataExtended", "MonoScore", mono_score, block);
 			msg->getS32("DataExtended", "PublicURLs", public_urls, block);
+			if (msg->getSize("DataExtended", "ParcelName") > 0)
+			{
+				msg->getString("DataExtended", "ParcelName", parcel_buf, block);
+				msg->getF32("DataExtended", "Size", script_memory, block);
+			}
 		}
 
 		LLSD element;
@@ -193,13 +187,14 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 		element["id"] = task_id;
 
 		LLSD columns;
-		columns[0]["column"] = "score";
-		columns[0]["value"] = llformat("%0.3f", score);
-		columns[0]["font"] = "SANSSERIF";
+		S32 column_num = 0;
+		columns[column_num]["column"] = "score";
+		columns[column_num]["value"] = llformat("%0.3f", score);
+		columns[column_num++]["font"] = "SANSSERIF";
 		
-		columns[1]["column"] = "name";
-		columns[1]["value"] = name_buf;
-		columns[1]["font"] = "SANSSERIF";
+		columns[column_num]["column"] = "name";
+		columns[column_num]["value"] = name_buf;
+		columns[column_num++]["font"] = "SANSSERIF";
 		
 		// Owner names can have trailing spaces sent from server
 		LLStringUtil::trim(owner_buf);
@@ -215,28 +210,33 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 			// ...just strip out legacy "Resident" name
 			owner_buf = LLCacheName::cleanFullName(owner_buf);
 		}
-		columns[2]["column"] = "owner";
-		columns[2]["value"] = owner_buf;
-		columns[2]["font"] = "SANSSERIF";
-
-		columns[3]["column"] = "location";
-		columns[3]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z);
-		columns[3]["font"] = "SANSSERIF";
-		columns[4]["column"] = "time";
-		columns[4]["type"] = "date";
-		columns[4]["value"] = LLDate((time_t)time_stamp);
-		columns[4]["font"] = "SANSSERIF";
+		columns[column_num]["column"] = "owner";
+		columns[column_num]["value"] = owner_buf;
+		columns[column_num++]["font"] = "SANSSERIF";
+
+		columns[column_num]["column"] = "location";
+		columns[column_num]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z);
+		columns[column_num++]["font"] = "SANSSERIF";
+
+		columns[column_num]["column"] = "parcel";
+		columns[column_num]["value"] = parcel_buf;
+		columns[column_num++]["font"] = "SANSSERIF";
+
+		columns[column_num]["column"] = "time";
+		columns[column_num]["type"] = "date";
+		columns[column_num]["value"] = LLDate((time_t)time_stamp);
+		columns[column_num++]["font"] = "SANSSERIF";
 
 		if (mCurrentMode == STAT_REPORT_TOP_SCRIPTS
 			&& have_extended_data)
 		{
-			columns[5]["column"] = "mono_time";
-			columns[5]["value"] = llformat("%0.3f", mono_score);
-			columns[5]["font"] = "SANSSERIF";
+			columns[column_num]["column"] = "memory";
+			columns[column_num]["value"] = llformat("%0.0f", (script_memory / 1000.f));
+			columns[column_num++]["font"] = "SANSSERIF";
 
-			columns[6]["column"] = "URLs";
-			columns[6]["value"] = llformat("%d", public_urls);
-			columns[6]["font"] = "SANSSERIF";
+			columns[column_num]["column"] = "URLs";
+			columns[column_num]["value"] = llformat("%d", public_urls);
+			columns[column_num++]["font"] = "SANSSERIF";
 		}
 		element["columns"] = columns;
 		list->addElement(element);
@@ -260,18 +260,18 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 	{
 		setTitle(getString("top_scripts_title"));
 		list->setColumnLabel("score", getString("scripts_score_label"));
-		list->setColumnLabel("mono_time", getString("scripts_mono_time_label"));
 		
 		LLUIString format = getString("top_scripts_text");
 		format.setArg("[COUNT]", llformat("%d", total_count));
-		format.setArg("[TIME]", llformat("%0.1f", mtotalScore));
+		format.setArg("[TIME]", llformat("%0.3f", mtotalScore));
 		getChild<LLUICtrl>("title_text")->setValue(LLSD(format));
 	}
 	else
 	{
 		setTitle(getString("top_colliders_title"));
 		list->setColumnLabel("score", getString("colliders_score_label"));
-		list->setColumnLabel("mono_time", "");
+		list->setColumnLabel("URLs", "");
+		list->setColumnLabel("memory", "");
 		LLUIString format = getString("top_colliders_text");
 		format.setArg("[COUNT]", llformat("%d", total_count));
 		getChild<LLUICtrl>("title_text")->setValue(LLSD(format));
@@ -301,6 +301,7 @@ void LLFloaterTopObjects::updateSelectionInfo()
 	{
 		getChild<LLUICtrl>("object_name_editor")->setValue(sli->getColumn(1)->getValue().asString());
 		getChild<LLUICtrl>("owner_name_editor")->setValue(sli->getColumn(2)->getValue().asString());
+		getChild<LLUICtrl>("parcel_name_editor")->setValue(sli->getColumn(4)->getValue().asString());
 	}
 }
 
@@ -480,6 +481,15 @@ void LLFloaterTopObjects::onGetByOwnerName()
 	onRefresh();
 }
 
+
+void LLFloaterTopObjects::onGetByParcelName()
+{
+	mFlags  = STAT_FILTER_BY_PARCEL_NAME;
+	mFilter = getChild<LLUICtrl>("parcel_name_editor")->getValue().asString();
+	onRefresh();
+}
+
+
 void LLFloaterTopObjects::showBeacon()
 {
 	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h
index a608ca20f16a93754e3b70fc6bc504c24054b3a4..6edc46cf7990887381d8006e4dc238eabba591d6 100644
--- a/indra/newview/llfloatertopobjects.h
+++ b/indra/newview/llfloatertopobjects.h
@@ -73,9 +73,7 @@ class LLFloaterTopObjects : public LLFloater
 
 	void onGetByOwnerName();
 	void onGetByObjectName();
-
-//	static void onGetByOwnerNameClicked(void* data)  { onGetByOwnerName(NULL, data); };
-//	static void onGetByObjectNameClicked(void* data) { onGetByObjectName(NULL, data); };
+	void onGetByParcelName();
 
 	void showBeacon();
 
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index efffd0f98ea209b812adac7d7e55960b1a8e0983..aceb7f06146ed7fb1ee64992de30404f33ce99d9 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -63,7 +63,7 @@
 #pragma warning(pop)   // Restore all warnings to the previous state
 #endif
 
-const U32 MAX_CACHED_GROUPS = 10;
+const U32 MAX_CACHED_GROUPS = 20;
 
 //
 // LLRoleActionSet
@@ -234,10 +234,16 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) :
 	mRoleDataComplete(FALSE),
 	mRoleMemberDataComplete(FALSE),
 	mGroupPropertiesDataComplete(FALSE),
-	mPendingRoleMemberRequest(FALSE)
+	mPendingRoleMemberRequest(FALSE),
+	mAccessTime(0.0f)
 {
 }
 
+void LLGroupMgrGroupData::setAccessed()
+{
+	mAccessTime = (F32)LLFrameTimer::getTotalSeconds();
+}
+
 BOOL LLGroupMgrGroupData::getRoleData(const LLUUID& role_id, LLRoleData& role_data)
 {
 	role_data_map_t::const_iterator it;
@@ -1360,7 +1366,7 @@ void LLGroupMgr::processCreateGroupReply(LLMessageSystem* msg, void ** data)
 
 LLGroupMgrGroupData* LLGroupMgr::createGroupData(const LLUUID& id)
 {
-	LLGroupMgrGroupData* group_datap;
+	LLGroupMgrGroupData* group_datap = NULL;
 
 	group_map_t::iterator existing_group = LLGroupMgr::getInstance()->mGroups.find(id);
 	if (existing_group == LLGroupMgr::getInstance()->mGroups.end())
@@ -1373,6 +1379,11 @@ LLGroupMgrGroupData* LLGroupMgr::createGroupData(const LLUUID& id)
 		group_datap = existing_group->second;
 	}
 
+	if (group_datap)
+	{
+		group_datap->setAccessed();
+	}
+
 	return group_datap;
 }
 
@@ -1413,25 +1424,41 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
 
 void LLGroupMgr::addGroup(LLGroupMgrGroupData* group_datap)
 {
-	if (mGroups.size() > MAX_CACHED_GROUPS)
+	while (mGroups.size() >= MAX_CACHED_GROUPS)
 	{
-		// get rid of groups that aren't observed
-		for (group_map_t::iterator gi = mGroups.begin(); gi != mGroups.end() && mGroups.size() > MAX_CACHED_GROUPS / 2; )
+		// LRU: Remove the oldest un-observed group from cache until group size is small enough
+
+		F32 oldest_access = LLFrameTimer::getTotalSeconds();
+		group_map_t::iterator oldest_gi = mGroups.end();
+
+		for (group_map_t::iterator gi = mGroups.begin(); gi != mGroups.end(); ++gi )
 		{
 			observer_multimap_t::iterator oi = mObservers.find(gi->first);
 			if (oi == mObservers.end())
 			{
-				// not observed
-				LLGroupMgrGroupData* unobserved_groupp = gi->second;
-				delete unobserved_groupp;
-				mGroups.erase(gi++);
-			}
-			else
-			{
-				++gi;
+				if (gi->second 
+						&& (gi->second->getAccessTime() < oldest_access))
+				{
+					oldest_access = gi->second->getAccessTime();
+					oldest_gi = gi;
+				}
 			}
 		}
+		
+		if (oldest_gi != mGroups.end())
+		{
+			delete oldest_gi->second;
+			mGroups.erase(oldest_gi);
+		}
+		else
+		{
+			// All groups must be currently open, none to remove.
+			// Just add the new group anyway, but get out of this loop as it 
+			// will never drop below max_cached_groups.
+			break;
+		}
 	}
+
 	mGroups[group_datap->getID()] = group_datap;
 }
 
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index faf0531c10df669e073783068612db6892426bcc..df3cd17e03e71288776babc08843191e18bdc0e8 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -86,7 +86,7 @@ friend class LLGroupMgrGroupData;
 
 	BOOL isInRole(const LLUUID& role_id) { return (mRolesList.find(role_id) != mRolesList.end()); }
 
-protected:
+private:
 	LLUUID	mID;
 	S32		mContribution;
 	U64		mAgentPowers;
@@ -233,6 +233,9 @@ friend class LLGroupMgr;
 	BOOL isRoleMemberDataComplete() { return mRoleMemberDataComplete; }
 	BOOL isGroupPropertiesDataComplete() { return mGroupPropertiesDataComplete; }
 
+	F32 getAccessTime() const { return mAccessTime; }
+	void setAccessed();
+
 public:
 	typedef	std::map<LLUUID,LLGroupMemberData*> member_list_t;
 	typedef	std::map<LLUUID,LLGroupRoleData*> role_list_t;
@@ -280,6 +283,7 @@ friend class LLGroupMgr;
 	BOOL				mGroupPropertiesDataComplete;
 
 	BOOL				mPendingRoleMemberRequest;
+	F32					mAccessTime;
 };
 
 struct LLRoleAction
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index ab5b08291568165e81d6cb38c35349c9d6f25630..e98d3f88a6aeacc37c50c9516dcbe99f9a27ed7d 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -440,7 +440,7 @@ void show_item_original(const LLUUID& item_uuid)
 	//sidetray inventory panel
 	LLSidepanelInventory *sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
 
-	bool reset_inventory_filter = !floater_inventory->isInVisibleChain();
+	bool do_reset_inventory_filter = !floater_inventory->isInVisibleChain();
 
 	LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
 	if (!active_panel) 
@@ -460,37 +460,49 @@ void show_item_original(const LLUUID& item_uuid)
 	}
 	active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO);
 	
-	if(reset_inventory_filter)
+	if(do_reset_inventory_filter)
 	{
-		//inventory floater
-		bool floater_inventory_visible = false;
+		reset_inventory_filter();
+	}
+}
+
 
-		LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
-		for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
+void reset_inventory_filter()
+{
+	//inventory floater
+	bool floater_inventory_visible = false;
+
+	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
+	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
+	{
+		LLFloaterInventory* floater_inventory = dynamic_cast<LLFloaterInventory*>(*iter);
+		if (floater_inventory)
 		{
-			LLFloaterInventory* floater_inventory = dynamic_cast<LLFloaterInventory*>(*iter);
-			if (floater_inventory)
-			{
-				LLPanelMainInventory* main_inventory = floater_inventory->getMainInventoryPanel();
+			LLPanelMainInventory* main_inventory = floater_inventory->getMainInventoryPanel();
 
-				main_inventory->onFilterEdit("");
+			main_inventory->onFilterEdit("");
 
-				if(floater_inventory->getVisible())
-				{
-					floater_inventory_visible = true;
-				}
+			if(floater_inventory->getVisible())
+			{
+				floater_inventory_visible = true;
 			}
 		}
-		if(sidepanel_inventory && !floater_inventory_visible)
+	}
+
+	if(!floater_inventory_visible)
+	{
+		LLSidepanelInventory *sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+		if (sidepanel_inventory)
 		{
 			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
-
-			main_inventory->onFilterEdit("");
+			if (main_inventory)
+			{
+				main_inventory->onFilterEdit("");
+			}
 		}
 	}
 }
 
-
 void open_outbox()
 {
 	LLFloaterReg::showInstance("outbox");
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 5cf9c528b01057ad0095a48f032ee286a7beb0bf..909f7fd10beecf7bcb9be19caf59a4c145ccaac7 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -56,6 +56,7 @@ void show_item_profile(const LLUUID& item_uuid);
 void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id);
 
 void show_item_original(const LLUUID& item_uuid);
+void reset_inventory_filter();
 
 void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name);
 
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 71dd963f28c0dcc8ebd3a2a537cb7cb865293083..05c81957c6265308f72d4cca752a720586f32322 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -966,6 +966,7 @@ void LLInventoryPanel::doToSelected(const LLSD& userdata)
 
 void LLInventoryPanel::doCreate(const LLSD& userdata)
 {
+	reset_inventory_filter();
 	menu_create_inventory_item(mFolderRoot, LLFolderBridge::sSelf.get(), userdata);
 }
 
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
index 93dd82957f5316b7eb0a915d76b5a1ab65cc03fb..51df868faa65852656edafb10c7dce9b7a4e7709 100644
--- a/indra/newview/llmarketplacefunctions.cpp
+++ b/indra/newview/llmarketplacefunctions.cpp
@@ -336,13 +336,19 @@ namespace LLMarketplaceImport
 // Interface class
 //
 
+static const F32 MARKET_IMPORTER_UPDATE_FREQUENCY = 1.0f;
 
 //static
 void LLMarketplaceInventoryImporter::update()
 {
 	if (instanceExists())
 	{
-		LLMarketplaceInventoryImporter::instance().updateImport();
+		static LLTimer update_timer;
+		if (update_timer.hasExpired())
+		{
+			LLMarketplaceInventoryImporter::instance().updateImport();
+			update_timer.setTimerExpirySec(MARKET_IMPORTER_UPDATE_FREQUENCY);
+		}
 	}
 }
 
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 4e28d1f526266e49d2fdbb0a6194c421b8d051f2..11b057eb0d055149f4068e06027951bd2861cc5d 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -401,7 +401,7 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,
 		name = av_name.getCompleteName();
 
 	item_list::iterator iter;
-	for (iter = getItemList().begin(); iter != getItemList().end(); iter++)
+	for (iter = getItemList().begin(); iter != getItemList().end(); ++iter)
 	{
 		LLScrollListItem* item = *iter;
 		if (item->getUUID() == agent_id)
@@ -410,6 +410,7 @@ void LLNameListCtrl::onAvatarNameCache(const LLUUID& agent_id,
 			if (cell)
 			{
 				cell->setValue(name);
+				setNeedsSort();
 			}
 		}
 	}
@@ -431,3 +432,8 @@ void LLNameListCtrl::updateColumns()
 		}
 	}
 }
+
+void LLNameListCtrl::sortByName(BOOL ascending)
+{
+	sortByColumnIndex(mNameColumnIndex,ascending);
+}
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index ca9956dc5386332c586bd283888564bb58f1d42a..77c21f92e267a5da07cc7cea63cc706dc9c0c69f 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -110,6 +110,8 @@ class LLNameListCtrl
 
 	void setAllowCallingCardDrop(BOOL b) { mAllowCallingCardDrop = b; }
 
+	void sortByName(BOOL ascending);
+
 	/*virtual*/ void updateColumns();
 
 	/*virtual*/ void	mouseOverHighlightNthItem( S32 index );
diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp
index 7a15d931811371ac3dc5bd7fcf22e69c1270416f..00dd2065713e0f2cf0e35280afaf129c389af3f0 100644
--- a/indra/newview/llpanelgroupinvite.cpp
+++ b/indra/newview/llpanelgroupinvite.cpp
@@ -83,6 +83,7 @@ class LLPanelGroupInvite::impl
 	LLTextBox		*mGroupName;
 	std::string		mOwnerWarning;
 	std::string		mAlreadyInGroup;
+	std::string		mTooManySelected;
 	bool		mConfirmedOwnerInvite;
 
 	void (*mCloseCallback)(void* data);
@@ -185,6 +186,17 @@ void LLPanelGroupInvite::impl::submitInvitations()
 		role_member_pairs[item->getUUID()] = role_id;
 	}
 	
+	const S32 MAX_GROUP_INVITES = 100; // Max invites per request. 100 to match server cap.
+	if (role_member_pairs.size() > MAX_GROUP_INVITES)
+	{
+		// Fail!
+		LLSD msg;
+		msg["MESSAGE"] = mTooManySelected;
+		LLNotificationsUtil::add("GenericAlert", msg);
+		(*mCloseCallback)(mCloseCallbackUserData);
+		return;
+	}
+
 	LLGroupMgr::getInstance()->sendGroupMemberInvites(mGroupID, role_member_pairs);
 	
 	if(already_in_group)
@@ -621,6 +633,7 @@ BOOL LLPanelGroupInvite::postBuild()
 
 	mImplementation->mOwnerWarning = getString("confirm_invite_owner_str");
 	mImplementation->mAlreadyInGroup = getString("already_in_group");
+	mImplementation->mTooManySelected = getString("invite_selection_too_large");
 
 	update();
 	
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index c11597f532366fd793cafca0d26a6910cfcf5336..9f3273da2d9e22739fd58e1155abae657ba6726e 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -306,6 +306,7 @@ void LLPanelMainInventory::newWindow()
 
 void LLPanelMainInventory::doCreate(const LLSD& userdata)
 {
+	reset_inventory_filter();
 	menu_create_inventory_item(getPanel()->getRootFolder(), NULL, userdata);
 }
 
diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml
index 4dfdcd15c7950962552947b3c8e918317cd26e3f..0b71177345375f2dab46f175ba78cd86597e7f59 100644
--- a/indra/newview/skins/default/xui/en/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- height="350"
+ height="372"
  layout="topleft"
  min_height="300"
  min_width="450"
@@ -22,10 +22,6 @@
      name="scripts_score_label">
         Time
     </floater.string>
-    <floater.string
-     name="scripts_mono_time_label">
-        Mono Time
-    </floater.string>
     <floater.string
      name="top_colliders_title">
         Top Colliders
@@ -68,31 +64,35 @@
         <scroll_list.columns
          label="Score"
          name="score"
-         width="55" />
+         width="45" />
         <scroll_list.columns
          label="Name"
          name="name"
-         width="140" />
+         width="130" />
         <scroll_list.columns
          label="Owner"
          name="owner"
-         width="105" />
+         width="100" />
         <scroll_list.columns
          label="Location"
          name="location"
-         width="130" />
+         width="120" />
+        <scroll_list.columns
+         label="Parcel"
+         name="parcel"
+         width="120" />
         <scroll_list.columns
          label="Time"
          name="time"
-         width="150" />
-        <scroll_list.columns
-         label="Mono Time"
-         name="mono_time"
-         width="100" />
+         width="130" />
           <scroll_list.columns
           	label="URLs"
           	name="URLs"
-          	width="100" />
+         width="40" />
+        <scroll_list.columns
+         label="Memory (KB)"
+         name="memory"
+         width="40" />
 		<scroll_list.commit_callback
           function="TopObjects.CommitObjectsList" />
     </scroll_list>
@@ -193,6 +193,38 @@
       <button.commit_callback
           function="TopObjects.GetByOwnerName" />
     </button>
+    <text
+     type="string"
+     length="1"
+     follows="left|bottom"
+     height="20"
+     layout="topleft"
+     left="10"
+     top_pad="5"
+     name="parcel_name_text"
+     width="107">
+        Parcel:
+    </text>
+    <line_editor
+     follows="left|bottom|right"
+     height="20"
+     layout="topleft"
+     left_pad="3"
+     name="parcel_name_editor"
+     top_delta="-3"
+     width="568" />
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Filter"
+     layout="topleft"
+     left_pad="5"
+     name="filter_parcel_btn"
+     top_delta="0"
+     width="100">
+      <button.commit_callback
+          function="TopObjects.GetByParcelName" />
+    </button>
     <button
      follows="bottom|right"
      height="22"
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
index cd834b61ce61230dd06315d08cc65502696aaac7..124c0596c3d4857827b4ac3e55bbf776bfaa9598 100644
--- a/indra/newview/skins/default/xui/en/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml
@@ -19,6 +19,10 @@
      name="already_in_group">
         Some Residents you chose are already in the group, and so were not sent an invitation.
     </panel.string>
+	<panel.string
+     name="invite_selection_too_large">
+		Group Invitations not sent: too many Residents selected. Group Invitations are limited to 100 per request.
+	</panel.string>
     <text
      type="string"
      length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
index 455060313497be93cafe3d651a9300c9040b238d..a4883c21e25e99d71913f9bc42da4682b66da834 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -194,7 +194,7 @@
     <button
      follows="left|top"
      height="20"
-     label="Delay Restart"
+     label="Cancel Restart"
      layout="topleft"
      left_pad="155"
      name="cancel_restart_btn"