diff --git a/BuildParams b/BuildParams
index db16541aad0aba8d0c950f2ed39bf8bd6aee066d..9433e335fe118da0949c9d47aa5e9e8ae54caa90 100644
--- a/BuildParams
+++ b/BuildParams
@@ -159,4 +159,10 @@ viewer-asset-delivery-metrics.email = monty@lindenlab.com
 viewer-asset-delivery-metrics.build_server = false
 viewer-asset-delivery-metrics.build_server_tests = false
 
+# ========================================
+# Simon says
+# ========================================
+simon_viewer-dev-private.public_build = false
+
+
 # eof
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index e8cd871157bfed75cc51a11b2f5f1ebd39a68d01..c95f9223018effdbd72082dc7d876f0de915e6ef 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -226,6 +226,11 @@ void LLParcel::init(const LLUUID &owner_id,
 
 	setPreviousOwnerID(LLUUID::null);
 	setPreviouslyGroupOwned(FALSE);
+
+	setSeeAVs(TRUE);
+	setAllowGroupAVSounds(TRUE);
+	setAllowAnyAVSounds(TRUE);
+	setHaveNewParcelLimitData(FALSE);
 }
 
 void LLParcel::overrideOwner(const LLUUID& owner_id, BOOL is_group_owned)
@@ -702,7 +707,9 @@ void LLParcel::packMessage(LLSD& msg)
 	msg["user_location"] = ll_sd_from_vector3(mUserLocation);
 	msg["user_look_at"] = ll_sd_from_vector3(mUserLookAt);
 	msg["landing_type"] = (U8)mLandingType;
-
+	msg["see_avs"] = (LLSD::Boolean) getSeeAVs();
+	msg["group_av_sounds"] = (LLSD::Boolean) getAllowGroupAVSounds();
+	msg["any_av_sounds"] = (LLSD::Boolean) getAllowAnyAVSounds();
 }
 
 
@@ -721,6 +728,24 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
     msg->getStringFast( _PREHASH_ParcelData,_PREHASH_MediaURL, buffer );
     setMediaURL(buffer);
     
+	BOOL see_avs = TRUE;			// All default to true for legacy server behavior
+	BOOL any_av_sounds = TRUE;
+	BOOL group_av_sounds = TRUE;
+	bool have_new_parcel_limit_data = (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_SeeAVs) > 0);		// New version of server should send all 3 of these values
+	have_new_parcel_limit_data &= (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_AnyAVSounds) > 0);
+	have_new_parcel_limit_data &= (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_GroupAVSounds) > 0);
+	if (have_new_parcel_limit_data)
+	{
+		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_SeeAVs, see_avs);
+		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_AnyAVSounds, any_av_sounds);
+		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_GroupAVSounds, group_av_sounds);
+	}
+	setSeeAVs((bool) see_avs);
+	setAllowAnyAVSounds((bool) any_av_sounds);
+	setAllowGroupAVSounds((bool) group_av_sounds);
+
+	setHaveNewParcelLimitData(have_new_parcel_limit_data);
+
     // non-optimized version
     msg->getU8 ( "ParcelData", "MediaAutoScale", mMediaAutoScale );
     
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 48933379677ba94c429eb46fb611cd3ffab6655d..ff35caab4ca0787a6a419064894a14b3342c4c3e 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -75,7 +75,7 @@ const U8 PARCEL_AUCTION		= 0x05;
 // unused 0x06
 // unused 0x07
 // flag, unused 0x08
-// flag, unused 0x10
+const U8 PARCEL_HIDDENAVS   = 0x10;	// avatars not visible outside of parcel.  Used for 'see avs' feature, but must be off for compatibility
 const U8 PARCEL_SOUND_LOCAL = 0x20;
 const U8 PARCEL_WEST_LINE	= 0x40;	// flag, property line on west edge
 const U8 PARCEL_SOUTH_LINE	= 0x80;	// flag, property line on south edge
@@ -130,6 +130,12 @@ class LLSD;
 class LLAccessEntry
 {
 public:
+	LLAccessEntry()
+	:	mID(),
+		mTime(0),
+		mFlags(0)
+	{}
+
 	LLUUID		mID;		// Agent ID
 	S32			mTime;		// Time (unix seconds) when entry expires
 	U32			mFlags;		// Not used - currently should always be zero
@@ -265,6 +271,8 @@ class LLParcel
 	void setUserLocation(const LLVector3& pos)	{ mUserLocation = pos; }
 	void setUserLookAt(const LLVector3& rot)	{ mUserLookAt = rot; }
 	void setLandingType(const ELandingType type) { mLandingType = type; }
+	void setSeeAVs(BOOL see_avs)	{ mSeeAVs = see_avs;	}
+	void setHaveNewParcelLimitData(bool have_new_parcel_data)		{ mHaveNewParcelLimitData = have_new_parcel_data;		}		// Remove this once hidden AV feature is fully available grid-wide
 
 	void setAuctionID(U32 auction_id) { mAuctionID = auction_id;}
 
@@ -291,6 +299,8 @@ class LLParcel
 	void	setDenyAnonymous(BOOL b) { setParcelFlag(PF_DENY_ANONYMOUS, b); }
 	void	setDenyAgeUnverified(BOOL b) { setParcelFlag(PF_DENY_AGEUNVERIFIED, b); }
 	void	setRestrictPushObject(BOOL b) { setParcelFlag(PF_RESTRICT_PUSHOBJECT, b); }
+	void	setAllowGroupAVSounds(BOOL b)	{ mAllowGroupAVSounds = b;		}
+	void	setAllowAnyAVSounds(BOOL b)		{ mAllowAnyAVSounds = b;		}
 
 	void	setDrawDistance(F32 dist)	{ mDrawDistance = dist; }
 	void	setSalePrice(S32 price)		{ mSalePrice = price; }
@@ -367,6 +377,8 @@ class LLParcel
 	const LLVector3& getUserLocation() const	{ return mUserLocation; }
 	const LLVector3& getUserLookAt() const	{ return mUserLookAt; }
 	ELandingType getLandingType() const	{ return mLandingType; }
+	BOOL getSeeAVs() const			{ return mSeeAVs;		}
+	BOOL getHaveNewParcelLimitData() const		{ return mHaveNewParcelLimitData;	}
 
 	// User-specified snapshot
 	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; }
@@ -496,6 +508,9 @@ class LLParcel
 	BOOL	getRegionDenyAgeUnverifiedOverride() const
 					{ return mRegionDenyAgeUnverifiedOverride; }
 
+	BOOL	getAllowGroupAVSounds()	const	{ return mAllowGroupAVSounds;	} 
+	BOOL	getAllowAnyAVSounds()	const	{ return mAllowAnyAVSounds;		}
+
 	F32		getDrawDistance() const			{ return mDrawDistance; }
 	S32		getSalePrice() const			{ return mSalePrice; }
 	time_t	getClaimDate() const			{ return mClaimDate; }
@@ -606,6 +621,8 @@ class LLParcel
 	LLVector3 mUserLocation;
 	LLVector3 mUserLookAt;
 	ELandingType mLandingType;
+	BOOL mSeeAVs;							// Avatars on this parcel are visible from outside it
+	BOOL mHaveNewParcelLimitData;			// Remove once hidden AV feature is grid-wide
 	LLTimer mSaleTimerExpires;
 	LLTimer mMediaResetTimer;
 
@@ -661,6 +678,8 @@ class LLParcel
 	BOOL				mRegionPushOverride;
 	BOOL				mRegionDenyAnonymousOverride;
 	BOOL				mRegionDenyAgeUnverifiedOverride;
+	BOOL				mAllowGroupAVSounds;
+	BOOL				mAllowAnyAVSounds;
 	
 	ParcelQuota			mQuota;
 	
diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h
index a61130132a39c9f93371d7af6b149717c92ef06b..b1a917df73cc6118140d0f3295d7b2f57ac2cdf0 100644
--- a/indra/llinventory/llparcelflags.h
+++ b/indra/llinventory/llparcelflags.h
@@ -126,5 +126,7 @@ const S32 PARCEL_DETAILS_DESC = 1;
 const S32 PARCEL_DETAILS_OWNER = 2;
 const S32 PARCEL_DETAILS_GROUP = 3;
 const S32 PARCEL_DETAILS_AREA = 4;
+const S32 PARCEL_DETAILS_ID = 5;
+const S32 PARCEL_DETAILS_SEE_AVATARS = 6;
 
 #endif
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 6133f506376224648965b7e404139a74195aa118..e71fb96540724c096f066aa8560f9a97bbec5b39 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1376,3 +1376,6 @@ char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getStri
 char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");
 char const* const _PREHASH_StatusData = LLMessageStringTable::getInstance()->getString("StatusData");
 char const* const _PREHASH_ProductSKU = LLMessageStringTable::getInstance()->getString("ProductSKU");
+char const* const _PREHASH_SeeAVs = LLMessageStringTable::getInstance()->getString("SeeAVs");
+char const* const _PREHASH_AnyAVSounds = LLMessageStringTable::getInstance()->getString("AnyAVSounds");
+char const* const _PREHASH_GroupAVSounds = LLMessageStringTable::getInstance()->getString("GroupAVSounds");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index f94ee1ed22bc7dadb42dc537ed63d2a4fb28950c..dd2c2dbd64a6f7247a193577618d345b111c28af 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1376,4 +1376,7 @@ extern char const* const _PREHASH_VCoord;
 extern char const* const _PREHASH_FaceIndex;
 extern char const* const _PREHASH_StatusData;
 extern char const* const _PREHASH_ProductSKU;
+extern char const* const _PREHASH_SeeAVs;
+extern char const* const _PREHASH_AnyAVSounds;
+extern char const* const _PREHASH_GroupAVSounds;
 #endif
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
index 188c9e1950a0bbfffd2c3d2792875a376045150f..4e103ae2ba4f4d164846a085eabd1b48b1b8f332 100644
--- a/indra/lscript/lscript_compile/indra.l
+++ b/indra/lscript/lscript_compile/indra.l
@@ -603,6 +603,8 @@ extern "C" { int yyerror(const char *fmt, ...); }
 "PARCEL_DETAILS_OWNER"	{ count(); yylval.ival = PARCEL_DETAILS_OWNER; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_GROUP"	{ count(); yylval.ival = PARCEL_DETAILS_GROUP; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_AREA"	{ count(); yylval.ival = PARCEL_DETAILS_AREA; return(INTEGER_CONSTANT); }
+"PARCEL_DETAILS_ID"		{ count(); yylval.ival = PARCEL_DETAILS_ID; return(INTEGER_CONSTANT); }
+"PARCEL_DETAILS_SEE_AVATARS"	{ count(); yylval.ival = PARCEL_DETAILS_SEE_AVATARS; return(INTEGER_CONSTANT); }
 
 "STRING_TRIM_HEAD"	{ count(); yylval.ival = STRING_TRIM_HEAD; return(INTEGER_CONSTANT); }
 "STRING_TRIM_TAIL"	{ count(); yylval.ival = STRING_TRIM_TAIL; return(INTEGER_CONSTANT); }
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 263b73ba23f47000e791769cc1b69515c3872160..9fa4046fdf1e55fcd1d38724408bf913fd62a062 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -498,6 +498,7 @@ PARCEL_DETAILS_OWNER	Used with llGetParcelDetails to get the parcel owner id.
 PARCEL_DETAILS_GROUP	Used with llGetParcelDetails to get the parcel group id.
 PARCEL_DETAILS_AREA		Used with llGetParcelDetails to get the parcel area in square meters.
 PARCEL_DETAILS_ID		Used with llGetParcelDetails to get the parcel id.
+PARCEL_DETAILS_SEE_AVATARS	Used with llGetParcelDetails to get the avatars visibility setting.
 
 STRING_TRIM_HEAD		Used with llStringTrim to trim leading spaces from a string.
 STRING_TRIM_TAIL		Used with llStringTrim to trim trailing spaces from a string.
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 0d0c1f594dca2c7f1fbf450f5bf8186245ce3e10..9b7593ce615bba15ada99a43c20efc5bcd78a9c0 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1818,6 +1818,7 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
 	mClearBtn(NULL),
 	mMatureCtrl(NULL),
 	mPushRestrictionCtrl(NULL),
+	mSeeAvatarsCtrl(NULL),
 	mParcel(parcel)
 {
 }
@@ -1860,6 +1861,9 @@ BOOL LLPanelLandOptions::postBuild()
 	mPushRestrictionCtrl = getChild<LLCheckBoxCtrl>( "PushRestrictCheck");
 	childSetCommitCallback("PushRestrictCheck", onCommitAny, this);
 
+	mSeeAvatarsCtrl = getChild<LLCheckBoxCtrl>( "SeeAvatarsCheck");
+	childSetCommitCallback("SeeAvatarsCheck", onCommitAny, this);
+
 	mCheckShowDirectory = getChild<LLCheckBoxCtrl>( "ShowDirectoryCheck");
 	childSetCommitCallback("ShowDirectoryCheck", onCommitAny, this);
 
@@ -1952,7 +1956,7 @@ void LLPanelLandOptions::refresh()
 
 		mCheckEditLand		->set(FALSE);
 		mCheckEditLand		->setEnabled(FALSE);
-
+		
 		mCheckSafe			->set(FALSE);
 		mCheckSafe			->setEnabled(FALSE);
 
@@ -1968,6 +1972,9 @@ void LLPanelLandOptions::refresh()
 		mPushRestrictionCtrl->set(FALSE);
 		mPushRestrictionCtrl->setEnabled(FALSE);
 
+		mSeeAvatarsCtrl->set(TRUE);
+		mSeeAvatarsCtrl->setEnabled(FALSE);
+
 		mLandingTypeCombo->setCurrentByIndex(0);
 		mLandingTypeCombo->setEnabled(FALSE);
 
@@ -2001,7 +2008,7 @@ void LLPanelLandOptions::refresh()
 		BOOL can_change_terraform = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_EDIT);
 		mCheckEditLand		->set( parcel->getAllowTerraform() );
 		mCheckEditLand		->setEnabled( can_change_terraform );
-
+		
 		mCheckSafe			->set( !parcel->getAllowDamage() );
 		mCheckSafe			->setEnabled( can_change_options );
 
@@ -2027,6 +2034,10 @@ void LLPanelLandOptions::refresh()
 			mPushRestrictionCtrl->setEnabled(can_change_options);
 		}
 
+		mSeeAvatarsCtrl->set(parcel->getSeeAVs());
+		mSeeAvatarsCtrl->setLabel(getString("see_avs_text"));
+		mSeeAvatarsCtrl->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
+
 		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, 
 														GP_LAND_SET_LANDING_POINT);
 		mLandingTypeCombo->setCurrentByIndex((S32)parcel->getLandingType());
@@ -2231,6 +2242,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	BOOL allow_publish		= FALSE;
 	BOOL mature_publish		= self->mMatureCtrl->get();
 	BOOL push_restriction	= self->mPushRestrictionCtrl->get();
+	BOOL see_avs			= self->mSeeAvatarsCtrl->get();
 	BOOL show_directory		= self->mCheckShowDirectory->get();
 	// we have to get the index from a lookup, not from the position in the dropdown!
 	S32  category_index		= LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue());
@@ -2264,6 +2276,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	parcel->setCategory((LLParcel::ECategory)category_index);
 	parcel->setLandingType((LLParcel::ELandingType)landing_type_index);
 	parcel->setSnapshotID(snapshot_id);
+	parcel->setSeeAVs(see_avs);
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 8a70fa24d87d2c319e07c7751478749642f8729b..6fceca1acddb5d7d6d1347f46e50dc03701d13f1 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -348,6 +348,7 @@ class LLPanelLandOptions
 
 	LLCheckBoxCtrl		*mMatureCtrl;
 	LLCheckBoxCtrl		*mPushRestrictionCtrl;
+	LLCheckBoxCtrl		*mSeeAvatarsCtrl;
 
 	LLSafeHandle<LLParcelSelection>&	mParcel;
 };
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 5c65dcec34b2076fdb5e2879db143f21ef871d63..1c8f6b6c9860469e1d12bc5235f909770ff1cf36 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -190,6 +190,7 @@ LLLocationInputCtrl::Params::Params()
 	scripts_icon("scripts_icon"),
 	damage_icon("damage_icon"),
 	damage_text("damage_text"),
+	see_avatars_icon("see_avatars_icon"),
 	maturity_help_topic("maturity_help_topic")
 {
 }
@@ -342,6 +343,13 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mDamageText = LLUICtrlFactory::create<LLTextBox>(damage_text);
 	addChild(mDamageText);
 	
+	LLIconCtrl::Params see_avatars_icon = p.see_avatars_icon;
+	see_avatars_icon.tool_tip = LLTrans::getString("LocationCtrlSeeAVsTooltip");
+	see_avatars_icon.mouse_opaque = true;
+	mParcelIcon[SEE_AVATARS_ICON] = LLUICtrlFactory::create<LLIconCtrl>(see_avatars_icon);
+	mParcelIcon[SEE_AVATARS_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, SEE_AVATARS_ICON));
+	addChild(mParcelIcon[SEE_AVATARS_ICON]);
+	
 	// Register callbacks and load the location field context menu (NB: the order matters).
 	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
 	LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Navbar.EnableMenuItem", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemEnabled, this, _2));
@@ -810,6 +818,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
+		bool see_avs        = current_parcel->getSeeAVs();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -819,6 +828,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
+		mParcelIcon[SEE_AVATARS_ICON]->setVisible( !see_avs );
 
 		// Padding goes to left of both landmark star and for sale btn
 		x -= mAddLandmarkHPad;
@@ -1175,6 +1185,9 @@ void LLLocationInputCtrl::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
+	case SEE_AVATARS_ICON:
+		LLNotificationsUtil::add("SeeAvatars");
+		break;
 	case ICON_COUNT:
 		break;
 	// no default to get compiler warning when a new icon gets added
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index 6368bf5cf2aeaf476f4ecfa68aa650bb6ebc72e6..ed47ba73e3f8f90172e9b679dd2745423138ad15 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -77,7 +77,8 @@ class LLLocationInputCtrl
 											push_icon,
 											build_icon,
 											scripts_icon,
-											damage_icon;
+											damage_icon,
+											see_avatars_icon;
 		Optional<LLTextBox::Params>			damage_text;
 		Params();
 	};
@@ -109,12 +110,13 @@ class LLLocationInputCtrl
 	enum EParcelIcon
 	{
 		VOICE_ICON = 0,
-		FLY_ICON,
-		PUSH_ICON,
-		BUILD_ICON,
-		SCRIPTS_ICON,
-		DAMAGE_ICON,
-		ICON_COUNT
+		FLY_ICON,			// 1
+		PUSH_ICON,			// 2
+		BUILD_ICON,			// 3
+		SCRIPTS_ICON,		// 4
+		DAMAGE_ICON,		// 5
+		SEE_AVATARS_ICON,   // 6
+		ICON_COUNT			// 7 total
 	};
 
 	friend class LLUICtrlFactory;
diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp
index f9730d9b71b03730dba6469b1bd7330f2a49332b..e7bdc51b4a56597068511cd89d1b66c4b93ed4a0 100644
--- a/indra/newview/llpanellandaudio.cpp
+++ b/indra/newview/llpanellandaudio.cpp
@@ -91,6 +91,12 @@ BOOL LLPanelLandAudio::postBuild()
 	mMusicURLEdit = getChild<LLLineEditor>("music_url");
 	childSetCommitCallback("music_url", onCommitAny, this);
 
+	mCheckAVSoundAny = getChild<LLCheckBoxCtrl>("all av sound check");
+	childSetCommitCallback("all av sound check", onCommitAny, this);
+
+	mCheckAVSoundGroup = getChild<LLCheckBoxCtrl>("group av sound check");
+	childSetCommitCallback("group av sound check", onCommitAny, this);
+
 	return TRUE;
 }
 
@@ -144,6 +150,13 @@ void LLPanelLandAudio::refresh()
 
 		mMusicURLEdit->setText(parcel->getMusicURL());
 		mMusicURLEdit->setEnabled( can_change_media );
+
+		BOOL can_change_av_sounds = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_OPTIONS) && parcel->getHaveNewParcelLimitData();
+		mCheckAVSoundAny->set(parcel->getAllowAnyAVSounds());
+		mCheckAVSoundAny->setEnabled(can_change_av_sounds);
+
+		mCheckAVSoundGroup->set(parcel->getAllowGroupAVSounds() || parcel->getAllowAnyAVSounds());	// On if "Everyone" is on
+		mCheckAVSoundGroup->setEnabled(can_change_av_sounds && !parcel->getAllowAnyAVSounds());		// Enabled if "Everyone" is off
 	}
 }
 // static
@@ -164,6 +177,13 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
 	BOOL voice_enabled = self->mCheckParcelEnableVoice->get();
 	BOOL voice_estate_chan = !self->mCheckParcelVoiceLocal->get();
 
+	BOOL any_av_sound		= self->mCheckAVSoundAny->get();
+	BOOL group_av_sound		= TRUE;		// If set to "Everyone" then group is checked as well
+	if (!any_av_sound)
+	{	// If "Everyone" is off, use the value from the checkbox
+		group_av_sound = self->mCheckAVSoundGroup->get();
+	}
+
 	// Remove leading/trailing whitespace (common when copying/pasting)
 	LLStringUtil::trim(music_url);
 
@@ -172,6 +192,8 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata)
 	parcel->setParcelFlag(PF_USE_ESTATE_VOICE_CHAN, voice_estate_chan);
 	parcel->setParcelFlag(PF_SOUND_LOCAL, sound_local);
 	parcel->setMusicURL(music_url);
+	parcel->setAllowAnyAVSounds(any_av_sound);
+	parcel->setAllowGroupAVSounds(group_av_sound);
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/llpanellandaudio.h b/indra/newview/llpanellandaudio.h
index 4b0953bdc1dd60a20f9b6054929f22d5e33e1f7f..32a45100f4c41e79a03b19cdbc0fe93491ccb9a2 100644
--- a/indra/newview/llpanellandaudio.h
+++ b/indra/newview/llpanellandaudio.h
@@ -52,6 +52,8 @@ class LLPanelLandAudio
 	LLCheckBoxCtrl* mCheckParcelVoiceLocal;	
 	LLLineEditor*	mMusicURLEdit;
 	LLCheckBoxCtrl* mMusicUrlCheck;
+	LLCheckBoxCtrl* mCheckAVSoundAny;
+	LLCheckBoxCtrl* mCheckAVSoundGroup;
 
 	LLSafeHandle<LLParcelSelection>&	mParcel;
 };
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 68ecb0165cf945aa62c49d4cfed5610d90bf9147..1e9ce582373d692c5f5dbe986b327c9a6f7ff611 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -70,6 +70,8 @@ static std::string icon_scripts;
 static std::string icon_scripts_no;
 static std::string icon_damage;
 static std::string icon_damage_no;
+static std::string icon_see_avs_on;
+static std::string icon_see_avs_off;
 
 LLPanelPlaceProfile::LLPanelPlaceProfile()
 :	LLPanelPlaceInfo(),
@@ -114,6 +116,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	mScriptsText = getChild<LLTextBox>("scripts_value");
 	mDamageIcon = getChild<LLIconCtrl>("damage_icon");
 	mDamageText = getChild<LLTextBox>("damage_value");
+	mSeeAVsIcon = getChild<LLIconCtrl>("see_avatars_icon");
+	mSeeAVsText = getChild<LLTextBox>("see_avatars_value");
 
 	mRegionNameText = getChild<LLTextBox>("region_name");
 	mRegionTypeText = getChild<LLTextBox>("region_type");
@@ -153,6 +157,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	icon_scripts_no = getString("icon_ScriptsNo");
 	icon_damage = getString("icon_Damage");
 	icon_damage_no = getString("icon_DamageNo");
+	icon_see_avs_on = getString("icon_SeeAVs_On");
+	icon_see_avs_off = getString("icon_SeeAVs_Off");
 
 	return TRUE;
 }
@@ -182,6 +188,8 @@ void LLPanelPlaceProfile::resetLocation()
 	mScriptsText->setText(loading);
 	mDamageIcon->setValue(loading);
 	mDamageText->setText(loading);
+	mSeeAVsIcon->setValue(loading);
+	mSeeAVsText->setText(loading);
 
 	mRegionNameText->setValue(loading);
 	mRegionTypeText->setValue(loading);
@@ -414,6 +422,17 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mDamageText->setText(off);
 	}
 
+	if (parcel->getSeeAVs())
+	{
+		mSeeAVsIcon->setValue(icon_see_avs_on);
+		mSeeAVsText->setText(on);
+	}
+	else
+	{
+		mSeeAVsIcon->setValue(icon_see_avs_off);
+		mSeeAVsText->setText(off);
+	}
+
 	mRegionNameText->setText(region->getName());
 	mRegionTypeText->setText(region->getSimProductName());
 
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index f28b3b383242647a64413f3374da4d083cdc3410..a33fc12ce429296e32197de96f1d2b2bbeca90a5 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -91,6 +91,8 @@ class LLPanelPlaceProfile : public LLPanelPlaceInfo
 	LLTextBox*			mScriptsText;
 	LLIconCtrl*			mDamageIcon;
 	LLTextBox*			mDamageText;
+	LLIconCtrl*			mSeeAVsIcon;
+	LLTextBox*			mSeeAVsText;
 
 	LLTextBox*			mRegionNameText;
 	LLTextBox*			mRegionTypeText;
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 30949f8f02e15d10e45ca07de268db9b3f657808..7087541fc8078bf7abb23593ddf74981f4fe21a1 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -102,6 +102,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON] = getChild<LLIconCtrl>("build_icon");
 	mParcelIcon[SCRIPTS_ICON] = getChild<LLIconCtrl>("scripts_icon");
 	mParcelIcon[DAMAGE_ICON] = getChild<LLIconCtrl>("damage_icon");
+	mParcelIcon[SEE_AVATARS_ICON] = getChild<LLIconCtrl>("see_avatars_icon");
 
 	mParcelIcon[VOICE_ICON]->setToolTip(LLTrans::getString("LocationCtrlVoiceTooltip"));
 	mParcelIcon[FLY_ICON]->setToolTip(LLTrans::getString("LocationCtrlFlyTooltip"));
@@ -109,6 +110,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setToolTip(LLTrans::getString("LocationCtrlBuildTooltip"));
 	mParcelIcon[SCRIPTS_ICON]->setToolTip(LLTrans::getString("LocationCtrlScriptsTooltip"));
 	mParcelIcon[DAMAGE_ICON]->setToolTip(LLTrans::getString("LocationCtrlDamageTooltip"));
+	mParcelIcon[SEE_AVATARS_ICON]->setToolTip(LLTrans::getString("LocationCtrlSeeAVsTooltip"));
 
 	mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, VOICE_ICON));
 	mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, FLY_ICON));
@@ -116,6 +118,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, BUILD_ICON));
 	mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SCRIPTS_ICON));
 	mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, DAMAGE_ICON));
+	mParcelIcon[SEE_AVATARS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SEE_AVATARS_ICON));
 
 	mDamageText->setText(LLStringExplicit("100%"));
 }
@@ -295,6 +298,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
+		bool see_avs        = current_parcel->getSeeAVs();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -304,6 +308,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
+		mParcelIcon[SEE_AVATARS_ICON]->setVisible( !see_avs );
 
 		layoutParcelIcons();
 	}
@@ -409,6 +414,9 @@ void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
+	case SEE_AVATARS_ICON:
+		LLNotificationsUtil::add("SeeAvatars");
+		break;
 	case ICON_COUNT:
 		break;
 	// no default to get compiler warning when a new icon gets added
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index db922ef424af332b1e85d999a2d752fb8e62f973..583e91d15e09bddab3942836ea578444692c15d9 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -65,12 +65,13 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	enum EParcelIcon
 	{
 		VOICE_ICON = 0,
-		FLY_ICON,
-		PUSH_ICON,
-		BUILD_ICON,
-		SCRIPTS_ICON,
-		DAMAGE_ICON,
-		ICON_COUNT
+		FLY_ICON,			// 1
+		PUSH_ICON,			// 2
+		BUILD_ICON,			// 3
+		SCRIPTS_ICON,		// 4
+		DAMAGE_ICON,		// 5
+		SEE_AVATARS_ICON,	// 6
+		ICON_COUNT			// 7 total
 	};
 
 	/**
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 8eda6346b0335bccc7426fb581142f135dcfaf47..3f98df9eb9f40c28b3d07b7096d47bbe2dd5ecd3 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -7270,9 +7270,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			llinfos << "Re-requesting AvatarAppearance for object: "  << getID() << llendl;
 			LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
 			mRuthTimer.reset();
-	}
-	else
-	{
+		}
+		else
+		{
 			llinfos << "That's okay, we already have a non-default shape for object: "  << getID() << llendl;
 			// we don't really care.
 		}
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..956e02b14dd546a696e3257621176ca8b32e5be5
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png
new file mode 100644
index 0000000000000000000000000000000000000000..434caeda8b629bb840ebb0758a482ba8dcbb196b
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOff_Light.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..064687ed0f650d44a4e06df5400cd5e51f77f501
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png
new file mode 100644
index 0000000000000000000000000000000000000000..5465650d0c0a48e122cb2eca63ff1b47e1bad75e
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_SeeAVsOn_Light.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index c2757f2c94cb88b9554e8458dbc1b50c155895f5..799cd907dcfad95a2d9f6e6740a9b14d2aa2c96f 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -1,4 +1,4 @@
-<!--
+<!--
 This file contains metadata about how to load, display, and scale textures for rendering in the UI.
 Images do *NOT* have to appear in this file in order to use them as textures in the UI...simply refer
 to them by filename (relative to textures directory).
@@ -390,6 +390,10 @@ with the same filename but different name
  <texture name="Parcel_ScriptsNo_Dark" file_name="icons/Parcel_ScriptsNo_Dark.png" preload="false" />
  <texture name="Parcel_Voice_Dark" file_name="icons/Parcel_Voice_Dark.png" preload="false" />
  <texture name="Parcel_VoiceNo_Dark" file_name="icons/Parcel_VoiceNo_Dark.png" preload="false" />
+ <texture name="Parcel_SeeAVsOff_Dark" file_name="icons/Parcel_SeeAVsOff_Dark.png" preload="false" />
+ <texture name="Parcel_SeeAVsOn_Dark" file_name="icons/Parcel_SeeAVsOn_Dark.png" preload="false" />
+ <texture name="Parcel_SeeAVsOff_Light" file_name="icons/Parcel_SeeAVsOff_Light.png" preload="false" />
+ <texture name="Parcel_SeeAVsOn_Light" file_name="icons/Parcel_SeeAVsOn_Light.png" preload="false" />
 
  <texture name="Parcel_BuildNo_Light" file_name="icons/Parcel_BuildNo_Light.png" preload="false" />
  <texture name="Parcel_FlyNo_Light" file_name="icons/Parcel_FlyNo_Light.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index ecd2b119c9a93dd4a9455d3662b8ce1395ac50ff..07cb4c12f5e4e1c0d066c2ed085744e81aebe03e 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1205,6 +1205,10 @@ Only large parcels can be listed in search.
              name="push_restrict_region_text">
                 No Pushing (Region Override)
             </panel.string>
+            <panel.string
+             name="see_avs_text">
+                 See and chat with residents on this parcel
+            </panel.string>
             <text
              type="string"
              length="1"
@@ -1314,7 +1318,7 @@ Only large parcels can be listed in search.
              name="check group scripts"
              top_delta="0"
              width="70" />
-            <text
+           <text
              type="string"
              text_color="white"
              length="1"
@@ -1515,10 +1519,32 @@ Only large parcels can be listed in search.
              type="string"
              length="1"
              follows="left|top"
+             text_color="white"
+             height="16"
+             layout="topleft"
+             left="230"
+             top="174"
+             name="allow_label5"
+             width="278">
+              Allow Residents on other parcels to:
+            </text>
+            <check_box
              height="16"
+             label="See Avatars"
+             follows="top"
              layout="topleft"
-             left="220"
-             top="180"
+             left="230"
+             name="SeeAvatarsCheck"
+             tool_tip="Allows residents on other parcels to see and chat with residents on this parcel, and you to see and chat with them."
+             width="120" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="230"
+             top="230"
              text_color="white"
              name="landing_point"
              word_wrap="true"
@@ -1532,7 +1558,7 @@ Only large parcels can be listed in search.
              label_selected="Set"
              layout="topleft"
              name="Set"
-             right="-68"
+             left="230"
              tool_tip="Sets the landing point where visitors arrive. Sets to your avatar&apos;s location inside this parcel."
              width="50" />
             <button
@@ -1544,7 +1570,6 @@ Only large parcels can be listed in search.
              left_pad="5"
              name="Clear"
              tool_tip="Clear the landing point"
-             right="-10"
              width="55" />
             <text
              type="string"
@@ -1553,7 +1578,7 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="220"
+             left="230"
              top_pad="10"
              name="Teleport Routing: "
              width="200">
@@ -1846,6 +1871,34 @@ Only large parcels can be listed in search.
              name="check sound local"
              left_pad="0"
              width="292" />
+          <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="10"
+             name="Avatar Sounds:"
+             top_pad="10"
+             width="100">
+               Avatar Sounds:
+          </text>
+          <check_box
+             height="16"
+             label="Everyone"
+             layout="topleft"
+             left_pad="0"
+             name="all av sound check"
+             top_delta="0"
+             width="130" />
+          <check_box
+             height="16"
+             label="Group"
+             layout="topleft"
+             left_pad="0"
+             name="group av sound check"
+             top_delta="0"
+             width="70" />
             <text
              type="string"
              length="1"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 317c6fe9accced2cb8a847f1428ae8aa35a5f40a..e00586811b3d8188098324b342a92a2d7912f3b6 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2931,6 +2931,18 @@
                  function="Floater.Toggle"
                  parameter="region_debug_console" />
             </menu_item_check>
+            <menu_item_check
+             label="Region Debug Console"
+             name="Region Debug Console"
+             shortcut="control|shift|`"
+             use_mac_ctrl="true">
+                <menu_item_check.on_check
+                 function="Floater.Visible"
+                 parameter="region_debug_console" />
+                <menu_item_check.on_click
+                 function="Floater.Toggle"
+                 parameter="region_debug_console" />
+            </menu_item_check>
             <menu_item_separator />
 
             <menu_item_check
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 4ef64269e80e018bd9a7d3ee3caf2188555ec43c..661165069eb89f07385aa02ef93e73fdb6a80e9d 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5626,6 +5626,15 @@ This area has voice chat disabled. You won&apos;t be able to hear anyone talking
 This area has building disabled. You can&apos;t build or rez objects here.
   </notification>
 
+  <notification
+   icon="notify.tga"
+   name="SeeAvatars"
+   persist="true"
+   type="notify"
+   unique="true">
+This parcel hides avatars and text chat from another parcel.   You can&apos;t see other residents outside the parcel, and those outside are not able to see you.  Regular text chat on channel 0 is also blocked.
+  </notification>
+
   <notification
    icon="notify.tga"
    name="ScriptsStopped"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 774a9e8bbf9a14abe466cc5cb3ee230d9e82b9fc..e280115bda016a304d09837921a316740f459b6a 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -153,6 +153,14 @@
      name="icon_DamageNo"
      translate="false"
      value="Parcel_DamageNo_Dark" />
+    <string
+     name="icon_SeeAVs_Off"
+     translate="false"
+     value="Parcel_SeeAVsOff_Dark" />
+    <string
+     name="icon_SeeAVs_On"
+     translate="false"
+     value="Parcel_SeeAVsOn_Dark" />
     <button
      follows="top|left"
      height="24"
@@ -354,7 +362,7 @@
                  title="Parcel">
                     <panel
                      follows="all"
-                     height="175"
+                     height="200"
                      layout="topleft"
                      left="0"
                      name="parcel_characteristics_panel"
@@ -543,6 +551,31 @@
                          top_delta="0"
                          value="Off"
                          width="60" />
+                        <icon
+                         follows="top|left"
+                         height="18"
+                         image_name="Parcel_SeeAVsOff_Dark"
+                         layout="topleft"
+                         left="10"
+                         name="see_avatars_icon"
+                         top_pad="7"
+                         width="22" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="8"
+                         name="see_avatars_label"
+                         value="See Avatars:"
+                         width="90" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="0"
+                         name="see_avatars_value"
+                         value="Off"
+                         width="60" />
                         <button
                          follows="bottom|right"
                          height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 30d3064e143db7a716577268daa3da1193dbdb2e..79f29777ce62d9e737d614c394cebcc4fb422401 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -88,6 +88,16 @@
     visible="false"
     width="14"
     />
+  <icon
+    follows="right|top"
+    height="13"
+    image_name="Parcel_SeeAVsOff_Light"
+    left="2"
+    name="see_avatars_icon"
+    top="3"
+    visible="false"
+    width="14"
+    />
   <text
     follows="right|top"
     font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index def4079ba966b0e7c98007024f6f1070f08f59e3..2e2ef6ee193b79359f34c0ea164fc6f42d95e278 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1759,10 +1759,10 @@ integer llGetParcelMaxPrims(vector pos, integer sim_wide)
 Returns the maximum number of prims allowed on the parcel at pos
 	</string>
 	<string name="LSLTipText_llGetParcelDetails" translate="false">
-list llGetParcelDetails(vector pos, list params)
-Returns the parcel details specified in params for the parcel at pos.
-Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA
-	</string>
+    list llGetParcelDetails(vector pos, list params)
+    Returns the parcel details specified in params for the parcel at pos.
+    Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, _SEE_AVATARS
+  </string>
 	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
 llSetLinkPrimitiveParams(integer linknumber, list rules)
 Sets primitive parameters for linknumber based on rules
@@ -3142,6 +3142,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
+  <string name="LocationCtrlSeeAVsTooltip">Avatars visible and chat allowed outside of this parcel</string>
 
   <!-- Strings used by the (currently Linux) auto-updater app -->
 	<string name="UpdaterWindowTitle">
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 37d60f1671e6f276a5d0d206dc8f7b03aae7e880..44436fb6f276657cc8e160825d2129ec96654d30 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -123,6 +123,14 @@
 	font="SansSerifSmall"
 	text_color="TextFgColor"
 	/>
+  <see_avatars_icon
+    name="see_avatars_icon"
+    width="22"
+    height="18"
+    top="21"
+    follows="right|top"
+    image_name="Parcel_SeeAVsOff_Light"
+    />
   <combo_button
 		name="Location History"
                 label=""
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
index fe06a2d81621541dbd53e546b7fb6f8a6a2853e3..ba148cf4211785b30767c621e1842209c79a156f 100644
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
@@ -113,6 +113,14 @@
 	  font="SansSerifSmall"
 	  text_color="TextFgColor"
 	/>
+  <see_avatars_icon
+    name="see_avatars_icon"
+    width="0"
+    height="0"
+    visible="false" 
+    top="21"
+    follows="right|top"
+    />
   <combo_button
 		name="Location History"
                 label=""
diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester
old mode 100644
new mode 100755