diff --git a/.hgtags b/.hgtags
index a832521ac3898eb30ffcda90e907b053d083cc91..3f2adaf5dde08ee35f60aa9be0f5079230a1ab4a 100755
--- a/.hgtags
+++ b/.hgtags
@@ -526,3 +526,4 @@ c9ce2295012995e3cf5c57bcffcb4870b94c649f 5.0.1-release
 cea1632c002c065985ebea15eeeb4aac90f50545 5.0.2-release
 02c24e9f4f7d8aa0de75f27817dda098582f4936 5.0.3-release
 022709ef76a331cac1ba6ef1a6da8a5e9ef63f5a 5.0.4-release
+b4d76b5590fdf8bab72c64442353753a527cbc44 5.0.5-release
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 0fb6110adb5c2b1e32063ccdec40b86a70dd37be..eb012ee31846d3af4edb2ce49f55e2a49483b9c5 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -214,6 +214,7 @@ Ansariel Hiller
 	MAINT-6953
 	MAINT-7028
 	MAINT-7059
+	MAINT-6519
 Aralara Rajal
 Arare Chantilly
 	CHUIBUG-191
@@ -770,6 +771,8 @@ Kadah Coba
 	STORM-1060
     STORM-1843
 Jondan Lundquist
+Joosten Briebers
+    MAINT-7074
 Josef Munster
 Josette Windlow
 Juilan Tripsa
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 3493f80556fb7a19af757c79ff5f3cba7f987126..aa76a57f1d34c34eccab6d6544aff5d5f9d3b74b 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -324,26 +324,27 @@ if (LL_TESTS)
   LL_ADD_INTEGRATION_TEST(lldeadmantimer "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lldependencies "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llerror "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(lleventfilter "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llframetimer "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llheteromap "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llinstancetracker "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llprocinfo "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llsingleton "" "${test_libs}")
+  LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lltrace "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(llunits "" "${test_libs}")
   LL_ADD_INTEGRATION_TEST(stringize "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(lleventdispatcher "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(lleventcoro "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llstreamqueue "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}")
-  LL_ADD_INTEGRATION_TEST(llheteromap "" "${test_libs}")
 
 ## llexception_test.cpp isn't a regression test, and doesn't need to be run
 ## every build. It's to help a developer make implementation choices about
diff --git a/indra/llcommon/lleventfilter.cpp b/indra/llcommon/lleventfilter.cpp
index 64ab58adcda7bb3c86704d8610bbc9ca6d549059..9fb18dc67dd3fa9067a1b427cf08bf3ec8d1cc97 100644
--- a/indra/llcommon/lleventfilter.cpp
+++ b/indra/llcommon/lleventfilter.cpp
@@ -38,12 +38,18 @@
 #include "llerror.h"                // LL_ERRS
 #include "llsdutil.h"               // llsd_matches()
 
+/*****************************************************************************
+*   LLEventFilter
+*****************************************************************************/
 LLEventFilter::LLEventFilter(LLEventPump& source, const std::string& name, bool tweak):
     LLEventStream(name, tweak),
     mSource(source.listen(getName(), boost::bind(&LLEventFilter::post, this, _1)))
 {
 }
 
+/*****************************************************************************
+*   LLEventMatching
+*****************************************************************************/
 LLEventMatching::LLEventMatching(const LLSD& pattern):
     LLEventFilter("matching"),
     mPattern(pattern)
@@ -64,6 +70,9 @@ bool LLEventMatching::post(const LLSD& event)
     return LLEventStream::post(event);
 }
 
+/*****************************************************************************
+*   LLEventTimeoutBase
+*****************************************************************************/
 LLEventTimeoutBase::LLEventTimeoutBase():
     LLEventFilter("timeout")
 {
@@ -148,6 +157,14 @@ bool LLEventTimeoutBase::tick(const LLSD&)
     return false;                   // show event to other listeners
 }
 
+bool LLEventTimeoutBase::running() const
+{
+    return mMainloop.connected();
+}
+
+/*****************************************************************************
+*   LLEventTimeout
+*****************************************************************************/
 LLEventTimeout::LLEventTimeout() {}
 
 LLEventTimeout::LLEventTimeout(LLEventPump& source):
@@ -164,3 +181,231 @@ bool LLEventTimeout::countdownElapsed() const
 {
     return mTimer.hasExpired();
 }
+
+/*****************************************************************************
+*   LLEventBatch
+*****************************************************************************/
+LLEventBatch::LLEventBatch(std::size_t size):
+    LLEventFilter("batch"),
+    mBatchSize(size)
+{}
+
+LLEventBatch::LLEventBatch(LLEventPump& source, std::size_t size):
+    LLEventFilter(source, "batch"),
+    mBatchSize(size)
+{}
+
+void LLEventBatch::flush()
+{
+    // copy and clear mBatch BEFORE posting to avoid weird circularity effects
+    LLSD batch(mBatch);
+    mBatch.clear();
+    LLEventStream::post(batch);
+}
+
+bool LLEventBatch::post(const LLSD& event)
+{
+    mBatch.append(event);
+    // calling setSize(same) performs the very check we want
+    setSize(mBatchSize);
+    return false;
+}
+
+void LLEventBatch::setSize(std::size_t size)
+{
+    mBatchSize = size;
+    // changing the size might mean that we have to flush NOW
+    if (mBatch.size() >= mBatchSize)
+    {
+        flush();
+    }
+}
+
+/*****************************************************************************
+*   LLEventThrottleBase
+*****************************************************************************/
+LLEventThrottleBase::LLEventThrottleBase(F32 interval):
+    LLEventFilter("throttle"),
+    mInterval(interval),
+    mPosts(0)
+{}
+
+LLEventThrottleBase::LLEventThrottleBase(LLEventPump& source, F32 interval):
+    LLEventFilter(source, "throttle"),
+    mInterval(interval),
+    mPosts(0)
+{}
+
+void LLEventThrottleBase::flush()
+{
+    // flush() is a no-op unless there's something pending.
+    // Don't test mPending because there's no requirement that the consumer
+    // post() anything but an isUndefined(). This is what mPosts is for.
+    if (mPosts)
+    {
+        mPosts = 0;
+        alarmCancel();
+        // This is not to set our alarm; we are not yet requesting
+        // any notification. This is just to track whether subsequent post()
+        // calls fall within this mInterval or not.
+        timerSet(mInterval);
+        // copy and clear mPending BEFORE posting to avoid weird circularity
+        // effects
+        LLSD pending = mPending;
+        mPending.clear();
+        LLEventStream::post(pending);
+    }
+}
+
+LLSD LLEventThrottleBase::pending() const
+{
+    return mPending;
+}
+
+bool LLEventThrottleBase::post(const LLSD& event)
+{
+    // Always capture most recent post() event data. If caller wants to
+    // aggregate multiple events, let them retrieve pending() and modify
+    // before calling post().
+    mPending = event;
+    // Always increment mPosts. Unless we count this call, flush() does
+    // nothing.
+    ++mPosts;
+    // We reset mTimer on every flush() call to let us know if we're still
+    // within the same mInterval. So -- are we?
+    F32 timeRemaining = timerGetRemaining();
+    if (! timeRemaining)
+    {
+        // more than enough time has elapsed, immediately flush()
+        flush();
+    }
+    else
+    {
+        // still within mInterval of the last flush() call: have to defer
+        if (! alarmRunning())
+        {
+            // timeRemaining tells us how much longer it will be until
+            // mInterval seconds since the last flush() call. At that time,
+            // flush() deferred events.
+            alarmActionAfter(timeRemaining, boost::bind(&LLEventThrottleBase::flush, this));
+        }
+    }
+    return false;
+}
+
+void LLEventThrottleBase::setInterval(F32 interval)
+{
+    F32 oldInterval = mInterval;
+    mInterval = interval;
+    // If we are not now within oldInterval of the last flush(), we're done:
+    // this will only affect behavior starting with the next flush().
+    F32 timeRemaining = timerGetRemaining();
+    if (timeRemaining)
+    {
+        // We are currently within oldInterval of the last flush(). Figure out
+        // how much time remains until (the new) mInterval of the last
+        // flush(). Bt we don't actually store a timestamp for the last
+        // flush(); it's implicit. There are timeRemaining seconds until what
+        // used to be the end of the interval. Move that endpoint by the
+        // difference between the new interval and the old.
+        timeRemaining += (mInterval - oldInterval);
+        // If we're called with a larger interval, the difference is positive
+        // and timeRemaining increases.
+        // If we're called with a smaller interval, the difference is negative
+        // and timeRemaining decreases. The interesting case is when it goes
+        // nonpositive: when the new interval means we can flush immediately.
+        if (timeRemaining <= 0.0f)
+        {
+            flush();
+        }
+        else
+        {
+            // immediately reset mTimer
+            timerSet(timeRemaining);
+            // and if mAlarm is running, reset that too
+            if (alarmRunning())
+            {
+                alarmActionAfter(timeRemaining, boost::bind(&LLEventThrottleBase::flush, this));
+            }
+        }
+    }
+}
+
+F32 LLEventThrottleBase::getDelay() const
+{
+    return timerGetRemaining();
+}
+
+/*****************************************************************************
+*   LLEventThrottle implementation
+*****************************************************************************/
+LLEventThrottle::LLEventThrottle(F32 interval):
+    LLEventThrottleBase(interval)
+{}
+
+LLEventThrottle::LLEventThrottle(LLEventPump& source, F32 interval):
+    LLEventThrottleBase(source, interval)
+{}
+
+void LLEventThrottle::alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action)
+{
+    mAlarm.actionAfter(interval, action);
+}
+
+bool LLEventThrottle::alarmRunning() const
+{
+    return mAlarm.running();
+}
+
+void LLEventThrottle::alarmCancel()
+{
+    return mAlarm.cancel();
+}
+
+void LLEventThrottle::timerSet(F32 interval)
+{
+    mTimer.setTimerExpirySec(interval);
+}
+
+F32  LLEventThrottle::timerGetRemaining() const
+{
+    return mTimer.getRemainingTimeF32();
+}
+
+/*****************************************************************************
+*   LLEventBatchThrottle
+*****************************************************************************/
+LLEventBatchThrottle::LLEventBatchThrottle(F32 interval, std::size_t size):
+    LLEventThrottle(interval),
+    mBatchSize(size)
+{}
+
+LLEventBatchThrottle::LLEventBatchThrottle(LLEventPump& source, F32 interval, std::size_t size):
+    LLEventThrottle(source, interval),
+    mBatchSize(size)
+{}
+
+bool LLEventBatchThrottle::post(const LLSD& event)
+{
+    // simply retrieve pending value and append the new event to it
+    LLSD partial = pending();
+    partial.append(event);
+    bool ret = LLEventThrottle::post(partial);
+    // The post() call above MIGHT have called flush() already. If it did,
+    // then pending() was reset to empty. If it did not, though, but the batch
+    // size has grown to the limit, flush() anyway. If there's a limit at all,
+    // of course. Calling setSize(same) performs the very check we want.
+    setSize(mBatchSize);
+    return ret;
+}
+
+void LLEventBatchThrottle::setSize(std::size_t size)
+{
+    mBatchSize = size;
+    // Changing the size might mean that we have to flush NOW. Don't forget
+    // that 0 means unlimited.
+    if (mBatchSize && pending().size() >= mBatchSize)
+    {
+        flush();
+    }
+}
diff --git a/indra/llcommon/lleventfilter.h b/indra/llcommon/lleventfilter.h
index 66f3c1486950e60bb7c387446f1a3b6aac271421..ff8fc9bc7fc2330dd11f849e0eca0213743bcafd 100644
--- a/indra/llcommon/lleventfilter.h
+++ b/indra/llcommon/lleventfilter.h
@@ -177,6 +177,9 @@ class LL_COMMON_API LLEventTimeoutBase: public LLEventFilter
     /// Cancel timer without event
     void cancel();
 
+    /// Is this timer currently running?
+    bool running() const;
+
 protected:
     virtual void setCountdown(F32 seconds) = 0;
     virtual bool countdownElapsed() const = 0;
@@ -215,4 +218,162 @@ class LL_COMMON_API LLEventTimeout: public LLEventTimeoutBase
     LLTimer mTimer;
 };
 
+/**
+ * LLEventBatch: accumulate post() events (LLSD blobs) into an LLSD Array
+ * until the array reaches a certain size, then call listeners with the Array
+ * and clear it back to empty.
+ */
+class LL_COMMON_API LLEventBatch: public LLEventFilter
+{
+public:
+    // pass batch size
+    LLEventBatch(std::size_t size);
+    // construct and connect
+    LLEventBatch(LLEventPump& source, std::size_t size);
+
+    // force out the pending batch
+    void flush();
+
+    // accumulate an event and flush() when big enough
+    virtual bool post(const LLSD& event);
+
+    // query or reset batch size
+    std::size_t getSize() const { return mBatchSize; }
+    void setSize(std::size_t size);
+
+private:
+    LLSD mBatch;
+    std::size_t mBatchSize;
+};
+
+/**
+ * LLEventThrottleBase: construct with a time interval. Regardless of how
+ * frequently you call post(), LLEventThrottle will pass on an event to
+ * its listeners no more often than once per specified interval.
+ *
+ * A new event after more than the specified interval will immediately be
+ * passed along to listeners. But subsequent events will be delayed until at
+ * least one time interval since listeners were last called. Consider the
+ * sequence below. Suppose we have an LLEventThrottle constructed with an
+ * interval of 3 seconds. The numbers on the left are timestamps in seconds
+ * relative to an arbitrary reference point.
+ *
+ *  1: post(): event immediately passed to listeners, next no sooner than 4
+ *  2: post(): deferred: waiting for 3 seconds to elapse
+ *  3: post(): deferred
+ *  4: no post() call, but event delivered to listeners; next no sooner than 7
+ *  6: post(): deferred
+ *  7: no post() call, but event delivered; next no sooner than 10
+ * 12: post(): immediately passed to listeners, next no sooner than 15
+ * 17: post(): immediately passed to listeners, next no sooner than 20
+ *
+ * For a deferred event, the LLSD blob delivered to listeners is from the most
+ * recent deferred post() call. However, a sender may obtain the previous
+ * event blob by calling pending(), modifying it as desired and post()ing the
+ * new value. (See LLEventBatchThrottle.) Each time an event is delivered to
+ * listeners, the pending() value is reset to isUndefined().
+ *
+ * You may also call flush() to immediately pass along any deferred events to
+ * all listeners.
+ *
+ * @NOTE This is an abstract base class so that, for testing, we can use an
+ * alternate "timer" that doesn't actually consume real time. See
+ * LLEventThrottle.
+ */
+class LL_COMMON_API LLEventThrottleBase: public LLEventFilter
+{
+public:
+    // pass time interval
+    LLEventThrottleBase(F32 interval);
+    // construct and connect
+    LLEventThrottleBase(LLEventPump& source, F32 interval);
+
+    // force out any deferred events
+    void flush();
+
+    // retrieve (aggregate) deferred event since last event sent to listeners
+    LLSD pending() const;
+
+    // register an event, may be either passed through or deferred
+    virtual bool post(const LLSD& event);
+
+    // query or reset interval
+    F32 getInterval() const { return mInterval; }
+    void setInterval(F32 interval);
+
+    // deferred posts
+    std::size_t getPostCount() const { return mPosts; }
+
+    // time until next event would be passed through, 0.0 if now
+    F32 getDelay() const;
+
+protected:
+    // Implement these time-related methods for a valid LLEventThrottleBase
+    // subclass (see LLEventThrottle). For testing, we use a subclass that
+    // doesn't involve actual elapsed time.
+    virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) = 0;
+    virtual bool alarmRunning() const = 0;
+    virtual void alarmCancel() = 0;
+    virtual void timerSet(F32 interval) = 0;
+    virtual F32  timerGetRemaining() const = 0;
+
+private:
+    // remember throttle interval
+    F32 mInterval;
+    // count post() calls since last flush()
+    std::size_t mPosts;
+    // pending event data from most recent deferred event
+    LLSD mPending;
+};
+
+/**
+ * Production implementation of LLEventThrottle.
+ */
+class LLEventThrottle: public LLEventThrottleBase
+{
+public:
+    LLEventThrottle(F32 interval);
+    LLEventThrottle(LLEventPump& source, F32 interval);
+
+private:
+    virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) /*override*/;
+    virtual bool alarmRunning() const /*override*/;
+    virtual void alarmCancel() /*override*/;
+    virtual void timerSet(F32 interval) /*override*/;
+    virtual F32  timerGetRemaining() const /*override*/;
+
+    // use this to arrange a deferred flush() call
+    LLEventTimeout mAlarm;
+    // use this to track whether we're within mInterval of last flush()
+    LLTimer mTimer;
+};
+
+/**
+ * LLEventBatchThrottle: like LLEventThrottle, it's reluctant to pass events
+ * to listeners more often than once per specified time interval -- but only
+ * reluctant, since exceeding the specified batch size limit can cause it to
+ * deliver accumulated events sooner. Like LLEventBatch, it accumulates
+ * pending events into an LLSD Array, optionally flushing when the batch grows
+ * to a certain size.
+ */
+class LLEventBatchThrottle: public LLEventThrottle
+{
+public:
+    // pass time interval and (optionally) max batch size; 0 means batch can
+    // grow arbitrarily large
+    LLEventBatchThrottle(F32 interval, std::size_t size = 0);
+    // construct and connect
+    LLEventBatchThrottle(LLEventPump& source, F32 interval, std::size_t size = 0);
+
+    // append a new event to current batch
+    virtual bool post(const LLSD& event);
+
+    // query or reset batch size
+    std::size_t getSize() const { return mBatchSize; }
+    void setSize(std::size_t size);
+
+private:
+    std::size_t mBatchSize;
+};
+
 #endif /* ! defined(LL_LLEVENTFILTER_H) */
diff --git a/indra/llcommon/llsingleton.cpp b/indra/llcommon/llsingleton.cpp
index 9025e53bb27a2d42d908f957a82242039e1cd170..a3a87edd88b5893201f83894da6f080962a2ad0a 100644
--- a/indra/llcommon/llsingleton.cpp
+++ b/indra/llcommon/llsingleton.cpp
@@ -220,6 +220,9 @@ void LLSingletonBase::capture_dependency(list_t& initializing, EInitState initSt
             std::find(initializing.begin(), initializing.end(), this);
         if (found != initializing.end())
         {
+            list_t::const_iterator it_next = found;
+            it_next++;
+
             // Report the circularity. Requiring the coder to dig through the
             // logic to diagnose exactly how we got here is less than helpful.
             std::ostringstream out;
@@ -238,11 +241,30 @@ void LLSingletonBase::capture_dependency(list_t& initializing, EInitState initSt
             // otherwise we'd be returning a pointer to a partially-
             // constructed object! But from initSingleton() is okay: that
             // method exists specifically to support circularity.
-            // Decide which log helper to call based on initState. They have
-            // identical signatures.
-            ((initState == CONSTRUCTING)? logerrs : logwarns)
-                ("LLSingleton circularity: ", out.str().c_str(),
-                 demangle(typeid(*this).name()).c_str(), "");
+            // Decide which log helper to call.
+            if (initState == CONSTRUCTING)
+            {
+                logerrs("LLSingleton circularity in Constructor: ", out.str().c_str(),
+                    demangle(typeid(*this).name()).c_str(), "");
+            }
+            else if (it_next == initializing.end())
+            {
+                // Points to self after construction, but during initialization.
+                // Singletons can initialize other classes that depend onto them,
+                // so this is expected.
+                //
+                // Example: LLNotifications singleton initializes default channels.
+                // Channels register themselves with singleton once done.
+                logdebugs("LLSingleton circularity: ", out.str().c_str(),
+                    demangle(typeid(*this).name()).c_str(), "");
+            }
+            else
+            {
+                // Actual circularity with other singleton (or single singleton is used extensively).
+                // Dependency can be unclear.
+                logwarns("LLSingleton circularity: ", out.str().c_str(),
+                    demangle(typeid(*this).name()).c_str(), "");
+            }
         }
         else
         {
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index a40db0f8cc786473daff03886aa1a19a78f8be27..2255e638c29a79baa61008299f0b3234745001c9 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -336,6 +336,7 @@ class LLStringUtilBase
 
 	static void	addCRLF(string_type& string);
 	static void	removeCRLF(string_type& string);
+	static void removeWindowsCR(string_type& string);
 
 	static void	replaceTabsWithSpaces( string_type& string, size_type spaces_per_tab );
 	static void	replaceNonstandardASCII( string_type& string, T replacement );
@@ -1322,6 +1323,28 @@ void LLStringUtilBase<T>::removeCRLF(string_type& string)
 
 //static
 template<class T> 
+void LLStringUtilBase<T>::removeWindowsCR(string_type& string)
+{
+    const T LF = 10;
+    const T CR = 13;
+
+    size_type cr_count = 0;
+    size_type len = string.size();
+    size_type i;
+    for( i = 0; i < len - cr_count - 1; i++ )
+    {
+        if( string[i+cr_count] == CR && string[i+cr_count+1] == LF)
+        {
+            cr_count++;
+        }
+
+        string[i] = string[i+cr_count];
+    }
+    string.erase(i, cr_count);
+}
+
+//static
+template<class T>
 void LLStringUtilBase<T>::replaceChar( string_type& string, T target, T replacement )
 {
 	size_type found_pos = 0;
diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp
index 9f12d49244d328d111426970a40d685f90d2b97b..758b98e14390c7df48ba3e624940f71586d789f6 100644
--- a/indra/llcommon/lluri.cpp
+++ b/indra/llcommon/lluri.cpp
@@ -40,7 +40,8 @@
 #include <boost/algorithm/string/find_iterator.hpp>
 #include <boost/algorithm/string/finder.hpp>
 
-void encode_character(std::ostream& ostr, std::string::value_type val)
+// static
+void LLURI::encodeCharacter(std::ostream& ostr, std::string::value_type val)
 {
 	ostr << "%"
 
@@ -95,7 +96,7 @@ std::string LLURI::escape(
 			}
 			else
 			{
-				encode_character(ostr, c);
+				encodeCharacter(ostr, c);
 			}
 		}
 	}
@@ -106,7 +107,7 @@ std::string LLURI::escape(
 			c = *it;
 			if(allowed.find(c) == std::string::npos)
 			{
-				encode_character(ostr, c);
+				encodeCharacter(ostr, c);
 			}
 			else
 			{
diff --git a/indra/llcommon/lluri.h b/indra/llcommon/lluri.h
index c82a666e48c3abe09008b69d8b14ebd26dc46e4e..9e44cc7da2ac10fa7b2d1d21c47f0881988bfef2 100644
--- a/indra/llcommon/lluri.h
+++ b/indra/llcommon/lluri.h
@@ -120,6 +120,14 @@ class LL_COMMON_API LLURI
 
 	/** @name Escaping Utilities */
 	//@{
+	/**
+	 * @brief 'Escape' symbol into stream
+	 *
+	 * @param ostr Output stream.
+	 * @param val Symbol to encode.
+	 */
+	static void encodeCharacter(std::ostream& ostr, std::string::value_type val);
+
 	/**
 	 * @brief Escape the string passed except for unreserved
 	 *
diff --git a/indra/llcommon/tests/listener.h b/indra/llcommon/tests/listener.h
index 9c5c18a1501af150f99523a4eed40e7e7f6a7f03..6072060bb656422f432c7e53c6f388d8bf867999 100644
--- a/indra/llcommon/tests/listener.h
+++ b/indra/llcommon/tests/listener.h
@@ -138,4 +138,15 @@ struct Collect
     StringVec result;
 };
 
+struct Concat
+{
+    bool operator()(const LLSD& event)
+    {
+        result += event.asString();
+        return false;
+    }
+    void clear() { result.clear(); }
+    std::string result;
+};
+
 #endif /* ! defined(LL_LISTENER_H) */
diff --git a/indra/llcommon/tests/lleventfilter_test.cpp b/indra/llcommon/tests/lleventfilter_test.cpp
index 2cdfb52f2fe50ef667befce7e566284dbb35ed9c..eb98b12ef5260395b35e1c4fc429ce00cea847ec 100644
--- a/indra/llcommon/tests/lleventfilter_test.cpp
+++ b/indra/llcommon/tests/lleventfilter_test.cpp
@@ -70,6 +70,85 @@ class TestEventTimeout: public LLEventTimeoutBase
     bool mElapsed;
 };
 
+// Similar remarks about LLEventThrottle: we're actually testing the logic in
+// LLEventThrottleBase, dummying out the LLTimer and LLEventTimeout used by
+// the production LLEventThrottle class.
+class TestEventThrottle: public LLEventThrottleBase
+{
+public:
+    TestEventThrottle(F32 interval):
+        LLEventThrottleBase(interval),
+        mAlarmRemaining(-1),
+        mTimerRemaining(-1)
+    {}
+    TestEventThrottle(LLEventPump& source, F32 interval):
+        LLEventThrottleBase(source, interval),
+        mAlarmRemaining(-1),
+        mTimerRemaining(-1)
+    {}
+
+    /*----- implementation of LLEventThrottleBase timing functionality -----*/
+    virtual void alarmActionAfter(F32 interval, const LLEventTimeoutBase::Action& action) /*override*/
+    {
+        mAlarmRemaining = interval;
+        mAlarmAction = action;
+    }
+
+    virtual bool alarmRunning() const /*override*/
+    {
+        // decrementing to exactly 0 should mean the alarm fires
+        return mAlarmRemaining > 0;
+    }
+
+    virtual void alarmCancel() /*override*/
+    {
+        mAlarmRemaining = -1;
+    }
+
+    virtual void timerSet(F32 interval) /*override*/
+    {
+        mTimerRemaining = interval;
+    }
+
+    virtual F32  timerGetRemaining() const /*override*/
+    {
+        // LLTimer.getRemainingTimeF32() never returns negative; 0.0 means expired
+        return (mTimerRemaining > 0.0)? mTimerRemaining : 0.0;
+    }
+
+    /*------------------- methods for manipulating time --------------------*/
+    void alarmAdvance(F32 delta)
+    {
+        bool wasRunning = alarmRunning();
+        mAlarmRemaining -= delta;
+        if (wasRunning && ! alarmRunning())
+        {
+            mAlarmAction();
+        }
+    }
+
+    void timerAdvance(F32 delta)
+    {
+        // This simple implementation, like alarmAdvance(), completely ignores
+        // HOW negative mTimerRemaining might go. All that matters is whether
+        // it's negative. We trust that no test method in this source will
+        // drive it beyond the capacity of an F32. Seems like a safe assumption.
+        mTimerRemaining -= delta;
+    }
+
+    void advance(F32 delta)
+    {
+        // Advance the timer first because it has no side effects.
+        // alarmAdvance() might call flush(), which will need to see the
+        // change in the timer.
+        timerAdvance(delta);
+        alarmAdvance(delta);
+    }
+
+    F32 mAlarmRemaining, mTimerRemaining;
+    LLEventTimeoutBase::Action mAlarmAction;
+};
+
 /*****************************************************************************
 *   TUT
 *****************************************************************************/
@@ -116,7 +195,9 @@ namespace tut
             listener0.listenTo(driver));
         // Construct a pattern LLSD: desired Event must have a key "foo"
         // containing string "bar"
-        LLEventMatching filter(driver, LLSD().insert("foo", "bar"));
+        LLSD pattern;
+        pattern.insert("foo", "bar");
+        LLEventMatching filter(driver, pattern);
         listener1.reset(0);
         LLTempBoundListener temp2(
             listener1.listenTo(filter));
@@ -285,6 +366,47 @@ namespace tut
         mainloop.post(17);
         check_listener("no timeout 3", listener0, LLSD(0));
     }
+
+    template<> template<>
+    void filter_object::test<5>()
+    {
+        set_test_name("LLEventThrottle");
+        TestEventThrottle throttle(3);
+        Concat cat;
+        throttle.listen("concat", boost::ref(cat));
+
+        // (sequence taken from LLEventThrottleBase Doxygen comments)
+        //  1: post(): event immediately passed to listeners, next no sooner than 4
+        throttle.advance(1);
+        throttle.post("1");
+        ensure_equals("1", cat.result, "1"); // delivered immediately
+        //  2: post(): deferred: waiting for 3 seconds to elapse
+        throttle.advance(1);
+        throttle.post("2");
+        ensure_equals("2", cat.result, "1"); // "2" not yet delivered
+        //  3: post(): deferred
+        throttle.advance(1);
+        throttle.post("3");
+        ensure_equals("3", cat.result, "1"); // "3" not yet delivered
+        //  4: no post() call, but event delivered to listeners; next no sooner than 7
+        throttle.advance(1);
+        ensure_equals("4", cat.result, "13"); // "3" delivered
+        //  6: post(): deferred
+        throttle.advance(2);
+        throttle.post("6");
+        ensure_equals("6", cat.result, "13"); // "6" not yet delivered
+        //  7: no post() call, but event delivered; next no sooner than 10
+        throttle.advance(1);
+        ensure_equals("7", cat.result, "136"); // "6" delivered
+        // 12: post(): immediately passed to listeners, next no sooner than 15
+        throttle.advance(5);
+        throttle.post(";12");
+        ensure_equals("12", cat.result, "136;12"); // "12" delivered
+        // 17: post(): immediately passed to listeners, next no sooner than 20
+        throttle.advance(5);
+        throttle.post(";17");
+        ensure_equals("17", cat.result, "136;12;17"); // "17" delivered
+    }
 } // namespace tut
 
 /*****************************************************************************
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index e68331b99a7dca04fc3dcd5dec8d7fa572659fa0..135d0ca7b937bd7a17f62537dc39fb02528797f3 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -508,6 +508,9 @@ class LLParcel
 					{ return mRegionDenyAnonymousOverride; }
 	BOOL	getRegionDenyAgeUnverifiedOverride() const
 					{ return mRegionDenyAgeUnverifiedOverride; }
+    BOOL    getRegionAllowAccessOverride() const
+                    { return mRegionAllowAccessoverride; }
+
 
 	BOOL	getAllowGroupAVSounds()	const	{ return mAllowGroupAVSounds;	} 
 	BOOL	getAllowAnyAVSounds()	const	{ return mAllowAnyAVSounds;		}
@@ -576,6 +579,7 @@ class LLParcel
 	void	setRegionPushOverride(BOOL override) {mRegionPushOverride = override; }
 	void	setRegionDenyAnonymousOverride(BOOL override)	{ mRegionDenyAnonymousOverride = override; }
 	void	setRegionDenyAgeUnverifiedOverride(BOOL override)	{ mRegionDenyAgeUnverifiedOverride = override; }
+    void    setRegionAllowAccessOverride(BOOL override) { mRegionAllowAccessoverride = override; }
 
 	// Accessors for parcel sellWithObjects
 	void	setPreviousOwnerID(LLUUID prev_owner)	{ mPreviousOwnerID = prev_owner; }
@@ -657,6 +661,7 @@ class LLParcel
 	BOOL				mRegionPushOverride;
 	BOOL				mRegionDenyAnonymousOverride;
 	BOOL				mRegionDenyAgeUnverifiedOverride;
+    BOOL                mRegionAllowAccessoverride;
 	BOOL				mAllowGroupAVSounds;
 	BOOL				mAllowAnyAVSounds;
 	
diff --git a/indra/llmessage/llregionflags.h b/indra/llmessage/llregionflags.h
index eb0c4e6d1e0f522ce90803eeac38fabacb9a8a55..d3791ef4d1ff6b47e64ee926b0c7322b9bf480e7 100644
--- a/indra/llmessage/llregionflags.h
+++ b/indra/llmessage/llregionflags.h
@@ -42,6 +42,9 @@ const U64 REGION_FLAGS_RESET_HOME_ON_TELEPORT	= (1 << 3);
 // Does the sun move?
 const U64 REGION_FLAGS_SUN_FIXED				= (1 << 4);
 
+// Does the estate owner allow private parcels?
+const U64 REGION_FLAGS_ALLOW_ACCESS_OVERRIDE    = (1 << 5);
+
 // Can't change the terrain heightfield, even on owned parcels,
 // but can plant trees and grass.
 const U64 REGION_FLAGS_BLOCK_TERRAFORM			= (1 << 6);
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 6675e12649bf3a66246f4391ae4548ec9b7e7dfd..1ae8a6ac1541c98f558fb8157e161a36ccb8160a 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1373,6 +1373,9 @@ char const* const _PREHASH_OwnerMask = LLMessageStringTable::getInstance()->getS
 char const* const _PREHASH_TransferInventoryAck = LLMessageStringTable::getInstance()->getString("TransferInventoryAck");
 char const* const _PREHASH_RegionDenyAgeUnverified = LLMessageStringTable::getInstance()->getString("RegionDenyAgeUnverified");
 char const* const _PREHASH_AgeVerificationBlock = LLMessageStringTable::getInstance()->getString("AgeVerificationBlock");
+char const* const _PREHASH_RegionAllowAccessBlock = LLMessageStringTable::getInstance()->getString("RegionAllowAccessBlock");
+char const* const _PREHASH_RegionAllowAccessOverride = LLMessageStringTable::getInstance()->getString("RegionAllowAccessOverride");
+
 char const* const _PREHASH_UCoord = LLMessageStringTable::getInstance()->getString("UCoord");
 char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getString("VCoord");
 char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index a510b4498f5482621a22330cde43d2bb8e76a1f3..7910fde305d8c29364a53ec9f6048228c58944a4 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1373,6 +1373,8 @@ extern char const* const _PREHASH_OwnerMask;
 extern char const* const _PREHASH_TransferInventoryAck;
 extern char const* const _PREHASH_RegionDenyAgeUnverified;
 extern char const* const _PREHASH_AgeVerificationBlock;
+extern char const* const _PREHASH_RegionAllowAccessBlock;
+extern char const* const _PREHASH_RegionAllowAccessOverride;
 extern char const* const _PREHASH_UCoord;
 extern char const* const _PREHASH_VCoord;
 extern char const* const _PREHASH_FaceIndex;
diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp
index 76d3a405d849a0446a760ed7c547ce0f3ec28bb5..768dc8284b57d7645f6b60410bcaee9efdcc5c7d 100644
--- a/indra/llprimitive/lldaeloader.cpp
+++ b/indra/llprimitive/lldaeloader.cpp
@@ -305,6 +305,8 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa
 			}
 
 			face = LLVolumeFace();
+			face.mExtents[0].set(v[0], v[1], v[2]);
+			face.mExtents[1].set(v[0], v[1], v[2]);
 			point_map.clear();
 		}
 	}
@@ -549,6 +551,8 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& fac
 				}
 
 				face = LLVolumeFace();
+				face.mExtents[0].set(v[0], v[1], v[2]);
+				face.mExtents[1].set(v[0], v[1], v[2]);
 				verts.clear();
 				indices.clear();
 				point_map.clear();
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index 0cb959a3155a4ba230f7b3b635a3da6f6c95ed77..604092d5368b771f92c5b4a9929a07fe6c6b9a5c 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1405,20 +1405,14 @@ void LLNotifications::createDefaultChannels()
 	mDefaultChannels.push_back(new LLPersistentNotificationChannel());
 
 	// connect action methods to these channels
-	LLNotifications::instance().getChannel("Enabled")->
-		connectFailedFilter(&defaultResponse);
-	LLNotifications::instance().getChannel("Expiration")->
-        connectChanged(boost::bind(&LLNotifications::expirationHandler, this, _1));
+	getChannel("Enabled")->connectFailedFilter(&defaultResponse);
+	getChannel("Expiration")->connectChanged(boost::bind(&LLNotifications::expirationHandler, this, _1));
 	// uniqueHandler slot should be added as first slot of the signal due to
 	// usage LLStopWhenHandled combiner in LLStandardSignal
-	LLNotifications::instance().getChannel("Unique")->
-        connectAtFrontChanged(boost::bind(&LLNotifications::uniqueHandler, this, _1));
-	LLNotifications::instance().getChannel("Unique")->
-        connectFailedFilter(boost::bind(&LLNotifications::failedUniquenessTest, this, _1));
-	LLNotifications::instance().getChannel("Ignore")->
-		connectFailedFilter(&handleIgnoredNotification);
-	LLNotifications::instance().getChannel("VisibilityRules")->
-		connectFailedFilter(&visibilityRuleMached);
+	getChannel("Unique")->connectAtFrontChanged(boost::bind(&LLNotifications::uniqueHandler, this, _1));
+	getChannel("Unique")->connectFailedFilter(boost::bind(&LLNotifications::failedUniquenessTest, this, _1));
+	getChannel("Ignore")->connectFailedFilter(&handleIgnoredNotification);
+	getChannel("VisibilityRules")->connectFailedFilter(&visibilityRuleMached);
 }
 
 
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index f3a99dcef2656d7b1f2e054e3556056d168d0923..c570285856d62511ed58cb02e4a6377f644e60fa 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1505,8 +1505,8 @@ void LLTextBase::reflow()
 		segment_set_t::iterator seg_iter = mSegments.begin();
 		S32 seg_offset = 0;
 		S32 line_start_index = 0;
-		const S32 text_available_width = mVisibleTextRect.getWidth() - mHPad;  // reserve room for margin
-		S32 remaining_pixels = text_available_width;
+		const F32 text_available_width = mVisibleTextRect.getWidth() - mHPad;  // reserve room for margin
+		F32 remaining_pixels = text_available_width;
 		S32 line_count = 0;
 
 		// find and erase line info structs starting at start_index and going to end of document
@@ -1532,14 +1532,15 @@ void LLTextBase::reflow()
 			S32 cur_index = segment->getStart() + seg_offset;
 
 			// ask segment how many character fit in remaining space
-			S32 character_count = segment->getNumChars(getWordWrap() ? llmax(0, remaining_pixels) : S32_MAX,
+			S32 character_count = segment->getNumChars(getWordWrap() ? llmax(0, ll_round(remaining_pixels)) : S32_MAX,
 														seg_offset, 
 														cur_index - line_start_index, 
 														S32_MAX,
 														line_count - seg_line_offset);
 
-			S32 segment_width, segment_height;
-			bool force_newline = segment->getDimensions(seg_offset, character_count, segment_width, segment_height);
+			F32 segment_width;
+			S32 segment_height;
+			bool force_newline = segment->getDimensionsF32(seg_offset, character_count, segment_width, segment_height);
 			// grow line height as necessary based on reported height of this segment
 			line_height = llmax(line_height, segment_height);
 			remaining_pixels -= segment_width;
@@ -1548,11 +1549,13 @@ void LLTextBase::reflow()
 
 			S32 last_segment_char_on_line = segment->getStart() + seg_offset;
 
-			S32 text_actual_width = text_available_width - remaining_pixels;
+			// Note: make sure text will fit in width - use ceil, but also make sure
+			// ceil is used only once per line
+			S32 text_actual_width = llceil(text_available_width - remaining_pixels);
 			S32 text_left = getLeftOffset(text_actual_width);
 			LLRect line_rect(text_left, 
 							cur_top, 
-							text_left + text_actual_width, 
+							text_left + text_actual_width,
 							cur_top - line_height);
 
 			// if we didn't finish the current segment...
@@ -3066,7 +3069,15 @@ boost::signals2::connection LLTextBase::setIsObjectBlockedCallback(const is_bloc
 LLTextSegment::~LLTextSegment()
 {}
 
-bool LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const { width = 0; height = 0; return false;}
+bool LLTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const { width = 0; height = 0; return false; }
+bool LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+{
+	F32 fwidth = 0;
+	bool result = getDimensionsF32(first_char, num_chars, fwidth, height);
+	width = ll_round(fwidth);
+	return result;
+}
+
 S32	LLTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const { return 0; }
 S32	LLTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const { return 0; }
 void LLTextSegment::updateLayout(const LLTextBase& editor) {}
@@ -3314,7 +3325,7 @@ void LLNormalTextSegment::setToolTip(const std::string& tooltip)
 	mTooltip = tooltip;
 }
 
-bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLNormalTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
 {
 	height = 0;
 	width = 0;
@@ -3323,7 +3334,7 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt
 		height = mFontHeight;
 		const LLWString &text = getWText();
 		// if last character is a newline, then return true, forcing line break
-		width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars);
+		width = mStyle->getFont()->getWidthF32(text.c_str(), mStart + first_char, num_chars);
 	}
 	return false;
 }
@@ -3491,7 +3502,7 @@ LLInlineViewSegment::~LLInlineViewSegment()
 	mView->die();
 }
 
-bool LLInlineViewSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLInlineViewSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
 {
 	if (first_char == 0 && num_chars == 0)
 	{
@@ -3578,7 +3589,7 @@ LLLineBreakTextSegment::LLLineBreakTextSegment(LLStyleConstSP style,S32 pos):LLT
 LLLineBreakTextSegment::~LLLineBreakTextSegment()
 {
 }
-bool LLLineBreakTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLLineBreakTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
 {
 	width = 0;
 	height = mFontHeight;
@@ -3607,7 +3618,7 @@ LLImageTextSegment::~LLImageTextSegment()
 
 static const S32 IMAGE_HPAD = 3;
 
-bool LLImageTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+bool LLImageTextSegment::getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
 {
 	width = 0;
 	height = mStyle->getFont()->getLineHeight();
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index c7b620344519c39d19380bd75e570b4e16443527..5fdde445ef55a50f755e1aa1a03e61e893b40a1a 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -61,8 +61,9 @@ class LLTextSegment
 		mEnd(end)
 	{}
 	virtual ~LLTextSegment();
+	bool						getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
 
-	virtual bool				getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+	virtual bool				getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
 	virtual S32					getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
 
 	/**
@@ -126,7 +127,7 @@ class LLNormalTextSegment : public LLTextSegment
 	LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE);
 	virtual ~LLNormalTextSegment();
 
-	/*virtual*/ bool				getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+	/*virtual*/ bool				getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
 	/*virtual*/ S32					getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;
 	/*virtual*/ S32					getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
 	/*virtual*/ F32					draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
@@ -212,7 +213,7 @@ class LLInlineViewSegment : public LLTextSegment
 
 	LLInlineViewSegment(const Params& p, S32 start, S32 end);
 	~LLInlineViewSegment();
-	/*virtual*/ bool		getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+	/*virtual*/ bool		getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
 	/*virtual*/ S32			getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
 	/*virtual*/ void		updateLayout(const class LLTextBase& editor);
 	/*virtual*/ F32			draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
@@ -236,7 +237,7 @@ class LLLineBreakTextSegment : public LLTextSegment
 	LLLineBreakTextSegment(LLStyleConstSP style,S32 pos);
 	LLLineBreakTextSegment(S32 pos);
 	~LLLineBreakTextSegment();
-	bool		getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+	/*virtual*/ bool		getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
 	S32			getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars, S32 line_ind) const;
 	F32			draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
 
@@ -249,7 +250,7 @@ class LLImageTextSegment : public LLTextSegment
 public:
 	LLImageTextSegment(LLStyleConstSP style,S32 pos,class LLTextBase& editor);
 	~LLImageTextSegment();
-	bool		getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;
+	/*virtual*/ bool		getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const;
 	S32			getNumChars(S32 num_pixels, S32 segment_offset, S32 char_offset, S32 max_chars, S32 line_ind) const;
 	F32			draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRectf& draw_rect);
 
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index b2118294965cd8fc0fad2da0a054eed8a23e8bab..a4243ebfa18fc456a9a8ebcd9adf196182e028e8 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -917,7 +917,7 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab
 //
 LLUrlEntryObjectIM::LLUrlEntryObjectIM()
 {
-	mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?.*",
+	mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?\\S*\\w",
 							boost::regex::perl|boost::regex::icase);
 	mMenuName = "menu_url_objectim.xml";
 }
diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp
index 86a15f2ef2c4e1a9a6764fb4a2e55d3b4fdddf1c..924e1166ee44608706b760d68070a53604587b14 100644
--- a/indra/llvfs/lldir.cpp
+++ b/indra/llvfs/lldir.cpp
@@ -720,6 +720,15 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
 					   << ((constraint == CURRENT_SKIN)? "CURRENT_SKIN" : "ALL_SKINS")
 					   << LL_ENDL;
 
+	// Build results vector.
+	std::vector<std::string> results;
+	// Disallow filenames that may escape subdir
+	if (filename.find("..") != std::string::npos)
+	{
+		LL_WARNS("LLDir") << "Ignoring potentially relative filename '" << filename << "'" << LL_ENDL;
+		return results;
+	}
+
 	// Cache the default language directory for each subdir we've encountered.
 	// A cache entry whose value is the empty string means "not localized,
 	// don't bother checking again."
@@ -784,8 +793,6 @@ std::vector<std::string> LLDir::findSkinnedFilenames(const std::string& subdir,
 		}
 	}
 
-	// Build results vector.
-	std::vector<std::string> results;
 	// The process we use depends on 'constraint'.
 	if (constraint != CURRENT_SKIN) // meaning ALL_SKINS
 	{
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 321792eb141fae38dee0774c92a0431826501145..b5ed53fd4fcc218831b51531e250b5c359d50c7b 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2801,7 +2801,7 @@ BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst)
 				if (utf16str)
 				{
 					dst = utf16str_to_wstring(utf16str);
-					LLWStringUtil::removeCRLF(dst);
+					LLWStringUtil::removeWindowsCR(dst);
 					GlobalUnlock(h_data);
 					success = TRUE;
 				}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index bb161d6321fe7b80f8ec7bb9117f2337b3c239d7..6132787205c9168ec0ed3ac15910b2ba0f1d7f4a 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -255,6 +255,7 @@ set(viewer_SOURCE_FILES
     llfloaterlagmeter.cpp
     llfloaterland.cpp
     llfloaterlandholdings.cpp
+    llfloaterlinkreplace.cpp
     llfloaterloadprefpreset.cpp
     llfloatermarketplacelistings.cpp
     llfloatermap.cpp
@@ -277,6 +278,7 @@ set(viewer_SOURCE_FILES
     llfloaterperms.cpp
     llfloaterpostprocess.cpp
     llfloaterpreference.cpp
+    llfloaterpreviewtrash.cpp
     llfloaterproperties.cpp
     llfloaterregiondebugconsole.cpp
     llfloaterregioninfo.cpp
@@ -876,6 +878,7 @@ set(viewer_HEADER_FILES
     llfloaterlagmeter.h
     llfloaterland.h
     llfloaterlandholdings.h
+    llfloaterlinkreplace.h
     llfloaterloadprefpreset.h
     llfloatermap.h
     llfloatermarketplacelistings.h
@@ -898,6 +901,7 @@ set(viewer_HEADER_FILES
     llfloaterperms.h
     llfloaterpostprocess.h
     llfloaterpreference.h
+    llfloaterpreviewtrash.h
     llfloaterproperties.h
     llfloaterregiondebugconsole.h
     llfloaterregioninfo.h
diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt
index ab0fa336dd0af145c203ff7deb76a68f5b21ee90..c20c645d7e49c40c6c3dc9bb4d3ae80b2cc37935 100644
--- a/indra/newview/VIEWER_VERSION.txt
+++ b/indra/newview/VIEWER_VERSION.txt
@@ -1 +1 @@
-5.0.5
+5.0.6
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9279a9f8e177aa5a61dd6b5a44981f532e72db7a..4b03dc0701ea682bed2d9e5b43ac483f82ad29e7 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -333,7 +333,7 @@
       <key>Type</key>
       <string>F32</string>
       <key>Value</key>
-      <real>0.5</real>
+      <real>0.3</real>
     </map>
     <key>AudioLevelMic</key>
     <map>
@@ -355,7 +355,7 @@
       <key>Type</key>
       <string>F32</string>
       <key>Value</key>
-      <real>0.5</real>
+      <real>0.3</real>
     </map>
     <key>AudioLevelRolloff</key>
     <map>
@@ -1619,6 +1619,17 @@
       <key>Value</key>
       <string>default</string>
     </map>
+    <key>ChatAutocompleteGestures</key>
+    <map>
+      <key>Comment</key>
+      <string>Auto-complete gestures in nearby chat</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>ChatBarStealsFocus</key>
     <map>
       <key>Comment</key>
@@ -5439,6 +5450,28 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>LinkReplaceBatchSize</key>
+    <map>
+      <key>Comment</key>
+      <string>The maximum size of a batch in a link replace operation</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>25</integer>
+    </map>
+    <key>LinkReplaceBatchPauseTime</key>
+    <map>
+      <key>Comment</key>
+      <string>The time in seconds between two batches in a link replace operation</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>F32</string>
+      <key>Value</key>
+      <real>1.0</real>
+    </map>
     <key>LipSyncAah</key>
     <map>
       <key>Comment</key>
@@ -10168,6 +10201,17 @@
     <key>Value</key>
     <integer>10</integer>
   </map>
+  <key>MaxAttachmentComplexity</key>
+  <map>
+    <key>Comment</key>
+    <string>Attachment's render weight limit</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>F32</string>
+    <key>Value</key>
+    <real>1.0E6</real>
+  </map>
   <key>ComplexityChangesPopUpDelay</key>
   <map>
     <key>Comment</key>
@@ -10734,6 +10778,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>ScriptDialogLimitations</key>
+    <map>
+      <key>Comment</key>
+      <string>Limits amount of dialogs per script (0 - per object, 1 - per channel, 2 - per channel for attachments, 3 - per channel for HUDs, 4 -unconstrained for HUDs)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>SecondLifeEnterprise</key>
     <map>
       <key>Comment</key>
@@ -11845,6 +11900,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>SyncMaterialSettings</key>
+    <map>
+      <key>Comment</key>
+      <string>SyncMaterialSettings</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>SnapshotQuality</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7d0d39e22a7dbb68032eca10296fde1de23a4097..8dd0b06ed29385e7244034d9769a0b16e1a77cb3 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -1644,7 +1644,7 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
 		if (user_cancel && !mAutoPilotBehaviorName.empty())
 		{
 			if (mAutoPilotBehaviorName == "Sit")
-				LLNotificationsUtil::add("CancelledSit");
+				LL_INFOS("Agent") << "Autopilot-Sit was canceled by user action" << LL_ENDL;
 			else if (mAutoPilotBehaviorName == "Attach")
 				LLNotificationsUtil::add("CancelledAttach");
 			else
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index feb981217d723f584b1decd556c3aa339e7009fb..c928cf0601bfa60e82285bfb9766269878ffe2bf 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2917,11 +2917,32 @@ void LLAppearanceMgr::removeAllAttachmentsFromAvatar()
 	removeItemsFromAvatar(ids_to_remove);
 }
 
-void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInventoryCallback> cb)
+class LLUpdateOnCOFLinkRemove : public LLInventoryCallback
 {
-	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+public:
+	LLUpdateOnCOFLinkRemove(const LLUUID& remove_item_id, LLPointer<LLInventoryCallback> cb = NULL):
+		mItemID(remove_item_id),
+		mCB(cb)
+	{
+	}
 
-	LLInventoryModel::cat_array_t cat_array;
+	/* virtual */ void fire(const LLUUID& item_id)
+	{
+		// just removed cof link, "(wear)" suffix depends on presence of link, so update label
+		gInventory.addChangedMask(LLInventoryObserver::LABEL, mItemID);
+		if (mCB.notNull())
+		{
+			mCB->fire(item_id);
+		}
+	}
+
+private:
+	LLUUID mItemID;
+	LLPointer<LLInventoryCallback> mCB;
+};
+
+void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInventoryCallback> cb)
+{	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
 	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),
 								  cat_array,
@@ -2932,12 +2953,20 @@ void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, LLPointer<LLInve
 		const LLInventoryItem* item = item_array.at(i).get();
 		if (item->getIsLinkType() && item->getLinkedUUID() == item_id)
 		{
-			bool immediate_delete = false;
 			if (item->getType() == LLAssetType::AT_OBJECT)
 			{
-				immediate_delete = true;
+				// Immediate delete
+				remove_inventory_item(item->getUUID(), cb, true);
+				gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+			}
+			else
+			{
+				// Delayed delete
+				// Pointless to update item_id label here since link still exists and first notifyObservers
+				// call will restore (wear) suffix, mark for update after deletion
+				LLPointer<LLUpdateOnCOFLinkRemove> cb_label = new LLUpdateOnCOFLinkRemove(item_id, cb);
+				remove_inventory_item(item->getUUID(), cb_label, false);
 			}
-			remove_inventory_item(item->getUUID(), cb, immediate_delete);
 		}
 	}
 }
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 2045c3e29714b9a61063a8d3c5e364a3297319b4..219d9da01f3b74d5e5f507140e9d3eb910c5340e 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -929,7 +929,6 @@ void LLAvatarActions::shareWithAvatars(LLView * panel)
 	LLNotificationsUtil::add("ShareNotification");
 }
 
-
 // static
 bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NULL*/)
 {
diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp
index b97e483fd9a763cbd287ff42bb7399b3c3c8a118..12c307047473bdd7c1fdfa47beba2bf59c34c11c 100644
--- a/indra/newview/llenvmanager.cpp
+++ b/indra/newview/llenvmanager.cpp
@@ -476,7 +476,7 @@ void LLEnvManagerNew::onRegionSettingsResponse(const LLSD& content)
 	mCachedRegionPrefs = new_settings;
 
 	// Load region sky presets.
-	LLWLParamManager::instance().refreshRegionPresets();
+	LLWLParamManager::instance().refreshRegionPresets(getRegionSettings().getSkyMap());
 
 	// If using server settings, update managers.
 	if (getUseRegionSettings())
@@ -509,6 +509,25 @@ void LLEnvManagerNew::initSingleton()
 	LL_DEBUGS("Windlight") << "Initializing LLEnvManagerNew" << LL_ENDL;
 
 	loadUserPrefs();
+
+	// preferences loaded, can set params
+	std::string preferred_day = getDayCycleName();
+	if (!useDayCycle(preferred_day, LLEnvKey::SCOPE_LOCAL))
+	{
+		LL_WARNS() << "No day cycle named " << preferred_day << ", reverting LLWLParamManager to defaults" << LL_ENDL;
+		LLWLParamManager::instance().setDefaultDay();
+	}
+
+	std::string sky = getSkyPresetName();
+	if (!useSkyPreset(sky))
+	{
+		LL_WARNS() << "No sky preset named " << sky << ", falling back to defaults" << LL_ENDL;
+		LLWLParamManager::instance().setDefaultSky();
+
+		// *TODO: Fix user preferences accordingly.
+	}
+
+	LLWLParamManager::instance().resetAnimator(0.5 /*noon*/, getUseDayCycle());
 }
 
 void LLEnvManagerNew::updateSkyFromPrefs()
diff --git a/indra/newview/llestateinfomodel.cpp b/indra/newview/llestateinfomodel.cpp
index 8f2eb4130739680e1bfb75f015e6916427bca79b..e422581129b6de84a5ef308000623bac1093e424 100644
--- a/indra/newview/llestateinfomodel.cpp
+++ b/indra/newview/llestateinfomodel.cpp
@@ -71,14 +71,16 @@ bool LLEstateInfoModel::getIsExternallyVisible()	const {	return getFlag(REGION_F
 bool LLEstateInfoModel::getAllowDirectTeleport()	const {	return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT);	}
 bool LLEstateInfoModel::getDenyAnonymous()			const {	return getFlag(REGION_FLAGS_DENY_ANONYMOUS); 		}
 bool LLEstateInfoModel::getDenyAgeUnverified()		const {	return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED);	}
-bool LLEstateInfoModel::getAllowVoiceChat()			const {	return getFlag(REGION_FLAGS_ALLOW_VOICE);			}
+bool LLEstateInfoModel::getAllowVoiceChat()			const { return getFlag(REGION_FLAGS_ALLOW_VOICE); }
+bool LLEstateInfoModel::getAllowAccessOverride()	const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); }
 
 void LLEstateInfoModel::setUseFixedSun(bool val)			{ setFlag(REGION_FLAGS_SUN_FIXED, 				val);	}
 void LLEstateInfoModel::setIsExternallyVisible(bool val)	{ setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE,		val);	}
 void LLEstateInfoModel::setAllowDirectTeleport(bool val)	{ setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT,	val);	}
 void LLEstateInfoModel::setDenyAnonymous(bool val)			{ setFlag(REGION_FLAGS_DENY_ANONYMOUS,			val);	}
 void LLEstateInfoModel::setDenyAgeUnverified(bool val)		{ setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED,		val);	}
-void LLEstateInfoModel::setAllowVoiceChat(bool val)			{ setFlag(REGION_FLAGS_ALLOW_VOICE,				val);	}
+void LLEstateInfoModel::setAllowVoiceChat(bool val)		    { setFlag(REGION_FLAGS_ALLOW_VOICE,				val);	}
+void LLEstateInfoModel::setAllowAccessOverride(bool val)    { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE,   val);   }
 
 void LLEstateInfoModel::update(const strings_t& strings)
 {
@@ -145,6 +147,7 @@ void LLEstateInfoModel::commitEstateInfoCapsCoro(std::string url)
     body["deny_anonymous"] = getDenyAnonymous();
     body["deny_age_unverified"] = getDenyAgeUnverified();
     body["allow_voice_chat"] = getAllowVoiceChat();
+    body["override_public_access"] = getAllowAccessOverride();
 
     body["invoice"] = LLFloaterRegionInfo::getLastInvoice();
 
@@ -218,6 +221,7 @@ std::string LLEstateInfoModel::getInfoDump()
 	dump["deny_anonymous"       ] = getDenyAnonymous();
 	dump["deny_age_unverified"  ] = getDenyAgeUnverified();
 	dump["allow_voice_chat"     ] = getAllowVoiceChat();
+    dump["override_public_access"] = getAllowAccessOverride();
 
 	std::stringstream dump_str;
 	dump_str << dump;
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h
index e7a6a2a725c9f1d04407e4aaf52a3ef914132d30..0082b5b1f4682c83401c7857f7c7def8b92e532f 100644
--- a/indra/newview/llestateinfomodel.h
+++ b/indra/newview/llestateinfomodel.h
@@ -55,6 +55,7 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
 	bool				getDenyAnonymous()			const;
 	bool				getDenyAgeUnverified()		const;
 	bool				getAllowVoiceChat()			const;
+    bool                getAllowAccessOverride()    const;
 
 	const std::string&	getName()					const { return mName; }
 	const LLUUID&		getOwnerID()				const { return mOwnerID; }
@@ -68,6 +69,7 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel>
 	void setDenyAnonymous(bool val);
 	void setDenyAgeUnverified(bool val);
 	void setAllowVoiceChat(bool val);
+    void setAllowAccessOverride(bool val);
 
 	void setSunHour(F32 sun_hour) { mSunHour = sun_hour; }
 
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 314b859cea2e3eef926a96d9d0f890be7e952e1f..711a87dc99d7fe59d28a46718463f1f1dea91bfa 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -44,7 +44,7 @@ class LLExpanderSegment : public LLTextSegment
 		mExpanderLabel(more_text)
 	{}
 
-	/*virtual*/ bool	getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const 
+	/*virtual*/ bool	getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const 
 	{
 		// more label always spans width of text box
 		if (num_chars == 0)
diff --git a/indra/newview/llfloateravatarrendersettings.cpp b/indra/newview/llfloateravatarrendersettings.cpp
index e7ac3f273760048c300ccf723c9fcde8a1d44887..2bae7d63aaac2d894ef51e444794da344311f1af 100644
--- a/indra/newview/llfloateravatarrendersettings.cpp
+++ b/indra/newview/llfloateravatarrendersettings.cpp
@@ -33,6 +33,7 @@
 #include "llfloaterreg.h"
 #include "llnamelistctrl.h"
 #include "llmenugl.h"
+#include "lltrans.h"
 #include "llviewerobjectlist.h"
 #include "llvoavatar.h"
 
@@ -144,6 +145,8 @@ void LLFloaterAvatarRenderSettings::updateList()
             item_params.columns.add().value(av_name.getCompleteName()).column("name");
             std::string setting = getString(iter->second == 1 ? "av_never_render" : "av_always_render");
             item_params.columns.add().value(setting).column("setting");
+            std::string timestamp = createTimestamp(LLRenderMuteList::getInstance()->getVisualMuteDate(iter->first));
+            item_params.columns.add().value(timestamp).column("timestamp");
             mAvatarSettingsList->addNameItemRow(item_params);
         }
     }
@@ -205,15 +208,7 @@ void LLFloaterAvatarRenderSettings::onCustomAction (const LLSD& userdata, const
         new_setting = S32(LLVOAvatar::AV_ALWAYS_RENDER);
     }
 
-    LLVOAvatar *avatarp = find_avatar(av_id);
-    if (avatarp)
-    {
-        avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(new_setting));
-    }
-    else
-    {
-        LLRenderMuteList::getInstance()->saveVisualMuteSetting(av_id, new_setting);
-    }
+    setAvatarRenderSetting(av_id, new_setting);
 }
 
 
@@ -273,14 +268,44 @@ void LLFloaterAvatarRenderSettings::onClickAdd(const LLSD& userdata)
 void LLFloaterAvatarRenderSettings::callbackAvatarPicked(const uuid_vec_t& ids, S32 visual_setting)
 {
     if (ids.empty()) return;
+    setAvatarRenderSetting(ids[0], visual_setting);
+}
 
-    LLVOAvatar *avatarp = find_avatar(ids[0]);
+void LLFloaterAvatarRenderSettings::setAvatarRenderSetting(const LLUUID& av_id, S32 new_setting)
+{
+    LLVOAvatar *avatarp = find_avatar(av_id);
     if (avatarp)
     {
-        avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(visual_setting));
+        avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(new_setting));
     }
     else
     {
-        LLRenderMuteList::getInstance()->saveVisualMuteSetting(ids[0], visual_setting);
+        LLRenderMuteList::getInstance()->saveVisualMuteSetting(av_id, new_setting);
+    }
+}
+
+BOOL LLFloaterAvatarRenderSettings::handleKeyHere(KEY key, MASK mask )
+{
+    BOOL handled = FALSE;
+
+    if (KEY_DELETE == key)
+    {
+        setAvatarRenderSetting(mAvatarSettingsList->getCurrentID(), (S32)LLVOAvatar::AV_RENDER_NORMALLY);
+        handled = TRUE;
     }
+    return handled;
+}
+
+std::string LLFloaterAvatarRenderSettings::createTimestamp(S32 datetime)
+{
+    std::string timeStr;
+    LLSD substitution;
+    substitution["datetime"] = datetime;
+
+    timeStr = "["+LLTrans::getString ("TimeMonth")+"]/["
+                 +LLTrans::getString ("TimeDay")+"]/["
+                 +LLTrans::getString ("TimeYear")+"]";
+
+    LLStringUtil::format (timeStr, substitution);
+    return timeStr;
 }
diff --git a/indra/newview/llfloateravatarrendersettings.h b/indra/newview/llfloateravatarrendersettings.h
index fe727bcf3279b0bbbcf8b8768a0578b03f0efa60..6790b24b90bc30c4409125c29a8eaa73c9da323c 100644
--- a/indra/newview/llfloateravatarrendersettings.h
+++ b/indra/newview/llfloateravatarrendersettings.h
@@ -43,6 +43,7 @@ class LLFloaterAvatarRenderSettings : public LLFloater
     /*virtual*/ BOOL postBuild();
     /*virtual*/ void onOpen(const LLSD& key);
     /*virtual*/ void draw();
+    /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );
 
     void onAvatarListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
 
@@ -51,6 +52,9 @@ class LLFloaterAvatarRenderSettings : public LLFloater
     void onCustomAction (const LLSD& userdata, const LLUUID& av_id);
     bool isActionChecked(const LLSD& userdata, const LLUUID& av_id);
     void onClickAdd(const LLSD& userdata);
+    void setAvatarRenderSetting(const LLUUID& av_id, S32 new_setting);
+
+    std::string createTimestamp(S32 datetime);
 
     static void setNeedsUpdate();
 
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 40ae22bb4ea045613dc6bba4e653cf847884de27..7895a5ff4827a1b7e55956501e7f3c5b879d9e5d 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -485,7 +485,8 @@ void LLFloaterIMNearbyChat::onChatBoxKeystroke()
 	KEY key = gKeyboard->currentKey();
 
 	// Ignore "special" keys, like backspace, arrows, etc.
-	if (length > 1 
+	if (gSavedSettings.getBOOL("ChatAutocompleteGestures")
+		&& length > 1
 		&& raw_text[0] == '/'
 		&& key < KEY_SPECIAL)
 	{
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index a340cd1143ebf129ebf77bd282f345e109084d06..43529097064f83d054096a95b5a4ce8d98d7a9a6 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2432,9 +2432,16 @@ void LLPanelLandAccess::refresh()
 		BOOL use_group = parcel->getParcelFlag(PF_USE_ACCESS_GROUP);
 		BOOL public_access = !use_access_list;
 		
-		getChild<LLUICtrl>("public_access")->setValue(public_access );
-		getChild<LLUICtrl>("GroupCheck")->setValue(use_group );
-
+        if (parcel->getRegionAllowAccessOverride())
+        {
+            getChild<LLUICtrl>("public_access")->setValue(public_access);
+            getChild<LLUICtrl>("GroupCheck")->setValue(use_group);
+        }
+        else
+        {
+            getChild<LLUICtrl>("public_access")->setValue(TRUE);
+            getChild<LLUICtrl>("GroupCheck")->setValue(FALSE);
+        }
 		std::string group_name;
 		gCacheName->getGroupName(parcel->getGroupID(), group_name);
 		getChild<LLUICtrl>("GroupCheck")->setLabelArg("[GROUP]", group_name );
@@ -2610,9 +2617,14 @@ void LLPanelLandAccess::refresh_ui()
 	LLParcel *parcel = mParcel->getParcel();
 	if (parcel && !gDisconnected)
 	{
-		BOOL can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
+        BOOL can_manage_allowed = false;
 		BOOL can_manage_banned = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_BANNED);
 	
+        if (parcel->getRegionAllowAccessOverride())
+        {   // Estate owner may have disabled allowing the parcel owner from managing access.
+            can_manage_allowed = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_MANAGE_ALLOWED);
+        }
+
 		getChildView("public_access")->setEnabled(can_manage_allowed);
 		BOOL public_access = getChild<LLUICtrl>("public_access")->getValue().asBoolean();
 		if (public_access)
@@ -2666,7 +2678,8 @@ void LLPanelLandAccess::refresh_ui()
 		std::string group_name;
 		if (gCacheName->getGroupName(parcel->getGroupID(), group_name))
 		{
-			getChildView("GroupCheck")->setEnabled(can_manage_allowed);
+			bool can_allow_groups = !public_access || (public_access && (getChild<LLUICtrl>("limit_payment")->getValue().asBoolean() ^ getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean()));
+			getChildView("GroupCheck")->setEnabled(can_manage_allowed && can_allow_groups);
 		}
 		getChildView("AccessList")->setEnabled(can_manage_allowed);
 		S32 allowed_list_count = parcel->mAccessList.size();
diff --git a/indra/newview/llfloaterlinkreplace.cpp b/indra/newview/llfloaterlinkreplace.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3f80d6f1a4fbefdf7799353da7eb9b74ce55927f
--- /dev/null
+++ b/indra/newview/llfloaterlinkreplace.cpp
@@ -0,0 +1,396 @@
+/**
+ * @file llfloaterlinkreplace.cpp
+ * @brief Allows replacing link targets in inventory links
+ * @author Ansariel Hiller
+ *
+ * $LicenseInfo:firstyear=2017&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2017, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterlinkreplace.h"
+
+#include "llagent.h"
+#include "llappearancemgr.h"
+#include "lllineeditor.h"
+#include "lltextbox.h"
+#include "llviewercontrol.h"
+
+LLFloaterLinkReplace::LLFloaterLinkReplace(const LLSD& key)
+	: LLFloater(key),
+	LLEventTimer(gSavedSettings.getF32("LinkReplaceBatchPauseTime")),
+	mRemainingItems(0),
+	mSourceUUID(LLUUID::null),
+	mTargetUUID(LLUUID::null),
+	mInstance(NULL),
+	mBatchSize(gSavedSettings.getU32("LinkReplaceBatchSize"))
+{
+	mEventTimer.stop();
+	mInstance = this;
+}
+
+LLFloaterLinkReplace::~LLFloaterLinkReplace()
+{
+	mInstance = NULL;
+}
+
+BOOL LLFloaterLinkReplace::postBuild()
+{
+	mStartBtn = getChild<LLButton>("btn_start");
+	mStartBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::onStartClicked, this));
+
+	mRefreshBtn = getChild<LLButton>("btn_refresh");
+	mRefreshBtn->setCommitCallback(boost::bind(&LLFloaterLinkReplace::checkEnableStart, this));
+
+	mSourceEditor = getChild<LLInventoryLinkReplaceDropTarget>("source_uuid_editor");
+	mTargetEditor = getChild<LLInventoryLinkReplaceDropTarget>("target_uuid_editor");
+
+	mSourceEditor->setDADCallback(boost::bind(&LLFloaterLinkReplace::onSourceItemDrop, this, _1));
+	mTargetEditor->setDADCallback(boost::bind(&LLFloaterLinkReplace::onTargetItemDrop, this, _1));
+
+	mStatusText = getChild<LLTextBox>("status_text");
+
+	return TRUE;
+}
+
+void LLFloaterLinkReplace::onOpen(const LLSD& key)
+{
+	if (key.asUUID().notNull())
+	{
+		LLUUID item_id = key.asUUID();
+		LLViewerInventoryItem* item = gInventory.getItem(item_id);
+		mSourceEditor->setItem(item);
+		onSourceItemDrop(item->getLinkedUUID());
+	}
+	else
+	{
+		checkEnableStart();
+	}
+}
+
+void LLFloaterLinkReplace::onSourceItemDrop(const LLUUID& source_item_id)
+{
+	mSourceUUID = source_item_id;
+	checkEnableStart();
+}
+
+void LLFloaterLinkReplace::onTargetItemDrop(const LLUUID& target_item_id)
+{
+	mTargetUUID = target_item_id;
+	checkEnableStart();
+}
+
+void LLFloaterLinkReplace::updateFoundLinks()
+{
+	LLInventoryModel::item_array_t items;
+	LLInventoryModel::cat_array_t cat_array;
+	LLLinkedItemIDMatches is_linked_item_match(mSourceUUID);
+	gInventory.collectDescendentsIf(gInventory.getRootFolderID(),
+									cat_array,
+									items,
+									LLInventoryModel::INCLUDE_TRASH,
+									is_linked_item_match);
+	mRemainingItems = (U32)items.size();
+
+	LLStringUtil::format_map_t args;
+	args["NUM"] = llformat("%d", mRemainingItems);
+	mStatusText->setText(getString("ItemsFound", args));
+}
+
+void LLFloaterLinkReplace::checkEnableStart()
+{
+	if (mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID == mTargetUUID)
+	{
+		mStatusText->setText(getString("ItemsIdentical"));
+	}
+	else if (mSourceUUID.notNull())
+	{
+		updateFoundLinks();
+	}
+
+	mStartBtn->setEnabled(mRemainingItems > 0 && mSourceUUID.notNull() && mTargetUUID.notNull() && mSourceUUID != mTargetUUID);
+}
+
+void LLFloaterLinkReplace::onStartClicked()
+{
+	LL_INFOS() << "Starting inventory link replace" << LL_ENDL;
+
+	if (mSourceUUID.isNull() || mTargetUUID.isNull())
+	{
+		LL_WARNS() << "Cannot replace. Either source or target UUID is null." << LL_ENDL;
+		return;
+	}
+
+	if (mSourceUUID == mTargetUUID)
+	{
+		LL_WARNS() << "Cannot replace. Source and target are identical." << LL_ENDL;
+		return;
+	}
+
+	LLInventoryModel::cat_array_t cat_array;
+	LLLinkedItemIDMatches is_linked_item_match(mSourceUUID);
+	gInventory.collectDescendentsIf(gInventory.getRootFolderID(),
+									cat_array,
+									mRemainingInventoryItems,
+									LLInventoryModel::INCLUDE_TRASH,
+									is_linked_item_match);
+	LL_INFOS() << "Found " << mRemainingInventoryItems.size() << " inventory links that need to be replaced." << LL_ENDL;
+
+	if (mRemainingInventoryItems.size() > 0)
+	{
+		LLViewerInventoryItem* target_item = gInventory.getItem(mTargetUUID);
+		if (target_item)
+		{
+			mRemainingItems = (U32)mRemainingInventoryItems.size();
+
+			LLStringUtil::format_map_t args;
+			args["NUM"] = llformat("%d", mRemainingItems);
+			mStatusText->setText(getString("ItemsRemaining", args));
+
+			mStartBtn->setEnabled(FALSE);
+			mRefreshBtn->setEnabled(FALSE);
+
+			mEventTimer.start();
+			tick();
+		}
+		else
+		{
+			mStatusText->setText(getString("TargetNotFound"));
+			LL_WARNS() << "Link replace target not found." << LL_ENDL;
+		}
+	}
+}
+
+void LLFloaterLinkReplace::linkCreatedCallback(const LLUUID& old_item_id,
+												const LLUUID& target_item_id,
+												bool needs_wearable_ordering_update,
+												bool needs_description_update,
+												const LLUUID& outfit_folder_id)
+{
+	LL_DEBUGS() << "Inventory link replace:" << LL_NEWLINE
+		<< " - old_item_id = " << old_item_id.asString() << LL_NEWLINE
+		<< " - target_item_id = " << target_item_id.asString() << LL_NEWLINE
+		<< " - order update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
+		<< " - description update = " << (needs_description_update ? "true" : "false") << LL_NEWLINE
+		<< " - outfit_folder_id = " << outfit_folder_id.asString() << LL_ENDL;
+
+	// If we are replacing an object, bodypart or gesture link within an outfit folder,
+	// we need to change the actual description of the link itself. LLAppearanceMgr *should*
+	// have created COF links that will be used to save the outfit with an empty description.
+	// Since link_inventory_array() will set the description of the linked item for the link
+	// itself, this will lead to a dirty outfit state when the outfit with the replaced
+	// link is worn. So we have to correct this.
+	if (needs_description_update && outfit_folder_id.notNull())
+	{
+		LLInventoryModel::item_array_t items;
+		LLInventoryModel::cat_array_t cats;
+		LLLinkedItemIDMatches is_target_link(target_item_id);
+		gInventory.collectDescendentsIf(outfit_folder_id,
+										cats,
+										items,
+										LLInventoryModel::EXCLUDE_TRASH,
+										is_target_link);
+
+		for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); ++it)
+		{
+			LLPointer<LLViewerInventoryItem> item = *it;
+
+			if ((item->getType() == LLAssetType::AT_BODYPART ||
+				item->getType() == LLAssetType::AT_OBJECT ||
+				item->getType() == LLAssetType::AT_GESTURE)
+				&& !item->getActualDescription().empty())
+			{
+				LL_DEBUGS() << "Updating description for " << item->getName() << LL_ENDL;
+
+				LLSD updates;
+				updates["desc"] = "";
+				update_inventory_item(item->getUUID(), updates, LLPointer<LLInventoryCallback>(NULL));
+			}
+		}
+	}
+
+	LLUUID outfit_update_folder = LLUUID::null;
+	if (needs_wearable_ordering_update && outfit_folder_id.notNull())
+	{
+		// If a wearable item was involved in the link replace operation and replaced
+		// a link in an outfit folder, we need to update the clothing ordering information
+		// *after* the original link has been removed. LLAppearanceMgr abuses the actual link
+		// description to store the clothing ordering information it. We will have to update
+		// the clothing ordering information or the outfit will be in dirty state when worn.
+		outfit_update_folder = outfit_folder_id;
+	}
+
+	LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::itemRemovedCallback, this, outfit_update_folder));
+	remove_inventory_object(old_item_id, cb);
+}
+
+void LLFloaterLinkReplace::itemRemovedCallback(const LLUUID& outfit_folder_id)
+{
+	if (outfit_folder_id.notNull())
+	{
+		LLAppearanceMgr::getInstance()->updateClothingOrderingInfo(outfit_folder_id);
+	}
+
+	if (mInstance)
+	{
+		decreaseOpenItemCount();
+	}
+}
+
+void LLFloaterLinkReplace::decreaseOpenItemCount()
+{
+	mRemainingItems--;
+
+	if (mRemainingItems == 0)
+	{
+		mStatusText->setText(getString("ReplaceFinished"));
+		mStartBtn->setEnabled(TRUE);
+		mRefreshBtn->setEnabled(TRUE);
+		mEventTimer.stop();
+		LL_INFOS() << "Inventory link replace finished." << LL_ENDL;
+	}
+	else
+	{
+		LLStringUtil::format_map_t args;
+		args["NUM"] = llformat("%d", mRemainingItems);
+		mStatusText->setText(getString("ItemsRemaining", args));
+		LL_DEBUGS() << "Inventory link replace: " << mRemainingItems << " links remaining..." << LL_ENDL;
+	}
+}
+
+BOOL LLFloaterLinkReplace::tick()
+{
+	LL_DEBUGS() << "Calling tick - remaining items = " << mRemainingInventoryItems.size() << LL_ENDL;
+
+	LLInventoryModel::item_array_t current_batch;
+
+	for (U32 i = 0; i < mBatchSize; ++i)
+	{
+		if (!mRemainingInventoryItems.size())
+		{
+			mEventTimer.stop();
+			break;
+		}
+
+		current_batch.push_back(mRemainingInventoryItems.back());
+		mRemainingInventoryItems.pop_back();
+	}
+	processBatch(current_batch);
+
+	return FALSE;
+}
+
+void LLFloaterLinkReplace::processBatch(LLInventoryModel::item_array_t items)
+{
+	const LLViewerInventoryItem* target_item = gInventory.getItem(mTargetUUID);
+	const LLUUID cof_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
+	const LLUUID outfit_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS, false);
+
+	for (LLInventoryModel::item_array_t::iterator it = items.begin(); it != items.end(); ++it)
+	{
+		LLPointer<LLInventoryItem> source_item = *it;
+
+		if (source_item->getParentUUID() != cof_folder_id)
+		{
+			bool is_outfit_folder = gInventory.isObjectDescendentOf(source_item->getParentUUID(), outfit_folder_id);
+			// If either the new or old item in the COF is a wearable, we need to update wearable ordering after the link has been replaced
+			bool needs_wearable_ordering_update = (is_outfit_folder && source_item->getType() == LLAssetType::AT_CLOTHING) || target_item->getType() == LLAssetType::AT_CLOTHING;
+			// Other items in the COF need a description update (description of the actual link item must be empty)
+			bool needs_description_update = is_outfit_folder && target_item->getType() != LLAssetType::AT_CLOTHING;
+
+			LL_DEBUGS() << "is_outfit_folder = " << (is_outfit_folder ? "true" : "false") << LL_NEWLINE
+				<< "needs_wearable_ordering_update = " << (needs_wearable_ordering_update ? "true" : "false") << LL_NEWLINE
+				<< "needs_description_update = " << (needs_description_update ? "true" : "false") << LL_ENDL;
+
+			LLInventoryObject::const_object_list_t obj_array;
+			obj_array.push_back(LLConstPointer<LLInventoryObject>(target_item));
+			LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(boost::bind(&LLFloaterLinkReplace::linkCreatedCallback,
+																											this,
+																											source_item->getUUID(),
+																											target_item->getUUID(),
+																											needs_wearable_ordering_update,
+																											needs_description_update,
+																											(is_outfit_folder ? source_item->getParentUUID() : LLUUID::null) ));
+			link_inventory_array(source_item->getParentUUID(), obj_array, cb);
+		}
+		else
+		{
+			decreaseOpenItemCount();
+		}
+	}
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// LLInventoryLinkReplaceDropTarget
+
+static LLDefaultChildRegistry::Register<LLInventoryLinkReplaceDropTarget> r("inventory_link_replace_drop_target");
+
+BOOL LLInventoryLinkReplaceDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+														   EDragAndDropType cargo_type,
+														   void* cargo_data,
+														   EAcceptance* accept,
+														   std::string& tooltip_msg)
+{
+	LLInventoryItem* item = (LLInventoryItem*)cargo_data;
+
+	if (cargo_type >= DAD_TEXTURE && cargo_type <= DAD_LINK &&
+		item && item->getActualType() != LLAssetType::AT_LINK_FOLDER && item->getType() != LLAssetType::AT_CATEGORY &&
+		(
+			LLAssetType::lookupCanLink(item->getType()) ||
+			(item->getType() == LLAssetType::AT_LINK && !gInventory.getObject(item->getLinkedUUID())) // Broken Link!
+		))
+	{
+		if (drop)
+		{
+			setItem(item);
+			if (!mDADSignal.empty())
+			{
+				mDADSignal(mItemID);
+			}
+		}
+		else
+		{
+			*accept = ACCEPT_YES_SINGLE;
+		}
+	}
+	else
+	{
+		*accept = ACCEPT_NO;
+	}
+
+	return TRUE;
+}
+
+void LLInventoryLinkReplaceDropTarget::setItem(LLInventoryItem* item)
+{
+	if (item)
+	{
+		mItemID = item->getLinkedUUID();
+		setText(item->getName());
+	}
+	else
+	{
+		mItemID.setNull();
+		setText(LLStringExplicit(""));
+	}
+}
diff --git a/indra/newview/llfloaterlinkreplace.h b/indra/newview/llfloaterlinkreplace.h
new file mode 100644
index 0000000000000000000000000000000000000000..377dd1d4505ffc73571aa0e1af04d0bd807f85ac
--- /dev/null
+++ b/indra/newview/llfloaterlinkreplace.h
@@ -0,0 +1,127 @@
+/**
+ * @file llfloaterlinkreplace.h
+ * @brief Allows replacing link targets in inventory links
+ * @author Ansariel Hiller
+ *
+ * $LicenseInfo:firstyear=2017&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2017, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATERLINKREPLACE_H
+#define LL_FLOATERLINKREPLACE_H
+
+#include "llfloater.h"
+#include "lleventtimer.h"
+#include "lllineeditor.h"
+#include "llinventoryfunctions.h"
+#include "llviewerinventory.h"
+
+class LLButton;
+class LLTextBox;
+
+class LLInventoryLinkReplaceDropTarget : public LLLineEditor
+{
+public:
+	struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>
+	{
+		Params()
+		{}
+	};
+
+	LLInventoryLinkReplaceDropTarget(const Params& p)
+		: LLLineEditor(p) {}
+	~LLInventoryLinkReplaceDropTarget() {}
+
+	typedef boost::signals2::signal<void(const LLUUID& id)> item_dad_callback_t;
+	boost::signals2::connection setDADCallback(const item_dad_callback_t::slot_type& cb)
+	{
+		return mDADSignal.connect(cb);
+	}
+
+	virtual BOOL postBuild()
+	{
+		setEnabled(FALSE);
+		return LLLineEditor::postBuild();
+	}
+
+	virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+								   EDragAndDropType cargo_type,
+								   void* cargo_data,
+								   EAcceptance* accept,
+								   std::string& tooltip_msg);
+
+	LLUUID getItemID() const { return mItemID; }
+	void setItem(LLInventoryItem* item);
+
+private:
+	LLUUID mItemID;
+
+	item_dad_callback_t mDADSignal;
+};
+
+
+class LLFloaterLinkReplace : public LLFloater, LLEventTimer
+{
+	LOG_CLASS(LLFloaterLinkReplace);
+
+public:
+	LLFloaterLinkReplace(const LLSD& key);
+	virtual ~LLFloaterLinkReplace();
+
+	BOOL postBuild();
+	virtual void onOpen(const LLSD& key);
+
+	virtual BOOL tick();
+
+private:
+	void checkEnableStart();
+	void onStartClicked();
+	void decreaseOpenItemCount();
+	void updateFoundLinks();
+	void processBatch(LLInventoryModel::item_array_t items);
+
+	void linkCreatedCallback(const LLUUID& old_item_id,
+								const LLUUID& target_item_id,
+								bool needs_wearable_ordering_update,
+								bool needs_description_update,
+								const LLUUID& outfit_folder_id);
+	void itemRemovedCallback(const LLUUID& outfit_folder_id);
+
+	void onSourceItemDrop(const LLUUID& source_item_id);
+	void onTargetItemDrop(const LLUUID& target_item_id);
+
+	LLInventoryLinkReplaceDropTarget*	mSourceEditor;
+	LLInventoryLinkReplaceDropTarget*	mTargetEditor;
+	LLButton*							mStartBtn;
+	LLButton*							mRefreshBtn;
+	LLTextBox*							mStatusText;
+
+	LLUUID	mSourceUUID;
+	LLUUID	mTargetUUID;
+	U32		mRemainingItems;
+	U32		mBatchSize;
+
+	LLInventoryModel::item_array_t	mRemainingInventoryItems;
+
+	LLFloaterLinkReplace* mInstance;
+};
+
+#endif // LL_FLOATERLINKREPLACE_H
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index c654817849078b9f2edb93c6e60fa687a20b8efb..b3885bf36c9e4a6bf321cd151315cb672d18cf1a 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -1262,6 +1262,10 @@ LLModelPreview::~LLModelPreview()
 	// glod.dll!glodShutdown()  + 0x77 bytes	
 	//
 	//glodShutdown();
+	if(mModelLoader)
+	{
+		mModelLoader->shutdown();
+	}
 }
 
 U32 LLModelPreview::calcResourceCost()
diff --git a/indra/newview/llfloaterpreviewtrash.cpp b/indra/newview/llfloaterpreviewtrash.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cf4e3f04e6544441f223c088898d53b0a05f2d51
--- /dev/null
+++ b/indra/newview/llfloaterpreviewtrash.cpp
@@ -0,0 +1,82 @@
+/** 
+ * @file llfloaterpreviewtrash.cpp
+ * @author AndreyK Productengine
+ * @brief LLFloaterPreviewTrash class implementation
+ *
+ * $LicenseInfo:firstyear=2004&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterpreviewtrash.h"
+
+#include "llinventoryfunctions.h"
+#include "llfloaterreg.h"
+
+LLFloaterPreviewTrash::LLFloaterPreviewTrash(const LLSD& key)
+:	LLFloater(key)
+{
+}
+
+BOOL LLFloaterPreviewTrash::postBuild()
+{
+    getChild<LLUICtrl>("empty_btn")->setCommitCallback(
+        boost::bind(&LLFloaterPreviewTrash::onClickEmpty, this));
+    getChild<LLUICtrl>("cancel_btn")->setCommitCallback(
+        boost::bind(&LLFloaterPreviewTrash::onClickCancel, this));
+	// Always center the dialog.  User can change the size,
+	// but purchases are important and should be center screen.
+	// This also avoids problems where the user resizes the application window
+	// mid-session and the saved rect is off-center.
+	center();
+	
+	return TRUE;
+}
+
+LLFloaterPreviewTrash::~LLFloaterPreviewTrash()
+{
+}
+
+
+// static
+void LLFloaterPreviewTrash::show()
+{
+	LLFloaterReg::showTypedInstance<LLFloaterPreviewTrash>("preview_trash", LLSD(), TRUE);
+}
+
+// static
+bool LLFloaterPreviewTrash::isVisible()
+{
+	return LLFloaterReg::instanceVisible("preview_trash");
+}
+
+
+void LLFloaterPreviewTrash::onClickEmpty()
+{
+	gInventory.emptyFolderType("PurgeSelectedItems", LLFolderType::FT_TRASH);
+	closeFloater();
+}
+
+void LLFloaterPreviewTrash::onClickCancel()
+{
+	closeFloater();
+}
diff --git a/indra/newview/llfloaterpreviewtrash.h b/indra/newview/llfloaterpreviewtrash.h
new file mode 100644
index 0000000000000000000000000000000000000000..465c0c677fc6db4089171e2ea55110265c295052
--- /dev/null
+++ b/indra/newview/llfloaterpreviewtrash.h
@@ -0,0 +1,49 @@
+/** 
+ * @file llfloaterpreviewtrash.h
+ * @author AndreyK Productengine
+ * @brief LLFloaterPreviewTrash class header file
+ *
+ * $LicenseInfo:firstyear=2004&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERPREVIEWTRASH_H
+#define LL_LLFLOATERPREVIEWTRASH_H
+
+#include "llfloater.h"
+
+class LLFloaterPreviewTrash
+: public LLFloater
+{
+public:
+	static void show();
+	static bool isVisible();
+
+	LLFloaterPreviewTrash(const LLSD& key);
+	~LLFloaterPreviewTrash();
+	/*virtual*/	BOOL	postBuild();
+	
+protected:
+	void onClickEmpty();
+	void onClickCancel();
+};
+
+#endif
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 75d7d787b1f28d8a1bfa86b5a90fe0c82547dea0..c33dee5fb4cf84e1427c159c5bf538cf15fd0946 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2235,11 +2235,12 @@ bool LLPanelEstateInfo::estateUpdate(LLMessageSystem* msg)
 BOOL LLPanelEstateInfo::postBuild()
 {
 	// set up the callbacks for the generic controls
-	initCtrl("externally_visible_check");
+	initCtrl("externally_visible_radio");
 	initCtrl("allow_direct_teleport");
 	initCtrl("limit_payment");
 	initCtrl("limit_age_verified");
 	initCtrl("voice_chat_check");
+    initCtrl("parcel_access_override");
 
 	getChild<LLUICtrl>("allowed_avatar_name_list")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeChildCtrl, this, _1));	
 	LLNameListCtrl *avatar_name_list = getChild<LLNameListCtrl>("allowed_avatar_name_list");
@@ -2287,13 +2288,15 @@ BOOL LLPanelEstateInfo::postBuild()
 	childSetAction("message_estate_btn", boost::bind(&LLPanelEstateInfo::onClickMessageEstate, this));
 	childSetAction("kick_user_from_estate_btn", boost::bind(&LLPanelEstateInfo::onClickKickUser, this));
 
+	getChild<LLUICtrl>("parcel_access_override")->setCommitCallback(boost::bind(&LLPanelEstateInfo::onChangeAccessOverride, this));
+
 	return LLPanelRegionInfo::postBuild();
 }
 
 void LLPanelEstateInfo::refresh()
 {
 	// Disable access restriction controls if they make no sense.
-	bool public_access = getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean();
+	bool public_access = getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex();
 
 	getChildView("Only Allow")->setEnabled(public_access);
 	getChildView("limit_payment")->setEnabled(public_access);
@@ -2314,11 +2317,12 @@ void LLPanelEstateInfo::refreshFromEstate()
 	getChild<LLUICtrl>("estate_name")->setValue(estate_info.getName());
 	setOwnerName(LLSLURL("agent", estate_info.getOwnerID(), "inspect").getSLURLString());
 
-	getChild<LLUICtrl>("externally_visible_check")->setValue(estate_info.getIsExternallyVisible());
+	getChild<LLRadioGroup>("externally_visible_radio")->setSelectedIndex(estate_info.getIsExternallyVisible() ? 1 : 0);
 	getChild<LLUICtrl>("voice_chat_check")->setValue(estate_info.getAllowVoiceChat());
 	getChild<LLUICtrl>("allow_direct_teleport")->setValue(estate_info.getAllowDirectTeleport());
 	getChild<LLUICtrl>("limit_payment")->setValue(estate_info.getDenyAnonymous());
 	getChild<LLUICtrl>("limit_age_verified")->setValue(estate_info.getDenyAgeUnverified());
+    getChild<LLUICtrl>("parcel_access_override")->setValue(estate_info.getAllowAccessOverride());
 
 	// Ensure appriopriate state of the management UI
 	updateControls(gAgent.getRegion());
@@ -2356,12 +2360,14 @@ bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, con
 
 			// update model
 			estate_info.setUseFixedSun(false); // we don't support fixed sun estates anymore
-			estate_info.setIsExternallyVisible(getChild<LLUICtrl>("externally_visible_check")->getValue().asBoolean());
+			estate_info.setIsExternallyVisible(getChild<LLRadioGroup>("externally_visible_radio")->getSelectedIndex());
 			estate_info.setAllowDirectTeleport(getChild<LLUICtrl>("allow_direct_teleport")->getValue().asBoolean());
 			estate_info.setDenyAnonymous(getChild<LLUICtrl>("limit_payment")->getValue().asBoolean());
 			estate_info.setDenyAgeUnverified(getChild<LLUICtrl>("limit_age_verified")->getValue().asBoolean());
 			estate_info.setAllowVoiceChat(getChild<LLUICtrl>("voice_chat_check")->getValue().asBoolean());
-
+            estate_info.setAllowAccessOverride(getChild<LLUICtrl>("parcel_access_override")->getValue().asBoolean());
+            // JIGGLYPUFF
+            //estate_info.setAllowAccessOverride(getChild<LLUICtrl>("")->getValue().asBoolean());
 			// send the update to sim
 			estate_info.sendEstateInfo();
 		}
@@ -2462,6 +2468,14 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re
 	return false;
 }
 
+void LLPanelEstateInfo::onChangeAccessOverride()
+{
+	if (!getChild<LLUICtrl>("parcel_access_override")->getValue().asBoolean())
+	{
+		LLNotificationsUtil::add("EstateParcelAccessOverride");
+	}
+}
+
 LLPanelEstateCovenant::LLPanelEstateCovenant()
 	:
 	mCovenantID(LLUUID::null),
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index dbb0ad05e92323d2809bfffa9eb0c51036c99638..c9d0e516409c517d47fb901feb2289ff1d549cac 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -274,6 +274,7 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	
 	void onChangeFixedSun();
 	void onChangeUseGlobalTime();
+	void onChangeAccessOverride();
 	
 	void onClickEditSky();
 	void onClickEditSkyHelp();	
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index ff8b8b0403b09a05b3366db4e23953158706c484..feef726630ecd09949e4782e235dc9588d246be8 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -269,8 +269,11 @@ void notify_of_message(const LLSD& msg, bool is_dnd_msg)
     {
     	if(!gAgent.isDoNotDisturb())
         {
-			// Open conversations floater
-			LLFloaterReg::showInstance("im_container");
+			if(!LLAppViewer::instance()->quitRequested() && !LLFloater::isVisible(im_box))
+			{
+				// Open conversations floater
+				LLFloaterReg::showInstance("im_container");
+			}
 			im_box->collapseMessagesPane(false);
 			if (session_floater)
 			{
@@ -2677,49 +2680,57 @@ void LLIMMgr::addMessage(
 		LLIMModel::getInstance()->newSession(new_session_id, fixed_session_name, dialog, other_participant_id, false, is_offline_msg);
 
 		LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(new_session_id);
-		skip_message &= !session->isGroupSessionType();			// Do not skip group chats...
-		if(skip_message)
-		{
-			gIMMgr->leaveSession(new_session_id);
-		}
-		// When we get a new IM, and if you are a god, display a bit
-		// of information about the source. This is to help liaisons
-		// when answering questions.
-		if(gAgent.isGodlike())
+		if (session)
 		{
-			// *TODO:translate (low priority, god ability)
-			std::ostringstream bonus_info;
-			bonus_info << LLTrans::getString("***")+ " "+ LLTrans::getString("IMParentEstate") + ":" + " "
-				<< parent_estate_id
-				<< ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
-				<< ((parent_estate_id == 5) ? "," + LLTrans::getString ("IMTeen") : "");
-
-			// once we have web-services (or something) which returns
-			// information about a region id, we can print this out
-			// and even have it link to map-teleport or something.
-			//<< "*** region_id: " << region_id << std::endl
-			//<< "*** position: " << position << std::endl;
+			skip_message &= !session->isGroupSessionType();			// Do not skip group chats...
+			if (skip_message)
+			{
+				gIMMgr->leaveSession(new_session_id);
+			}
+			// When we get a new IM, and if you are a god, display a bit
+			// of information about the source. This is to help liaisons
+			// when answering questions.
+			if (gAgent.isGodlike())
+			{
+				// *TODO:translate (low priority, god ability)
+				std::ostringstream bonus_info;
+				bonus_info << LLTrans::getString("***") + " " + LLTrans::getString("IMParentEstate") + ":" + " "
+					<< parent_estate_id
+					<< ((parent_estate_id == 1) ? "," + LLTrans::getString("IMMainland") : "")
+					<< ((parent_estate_id == 5) ? "," + LLTrans::getString("IMTeen") : "");
+
+				// once we have web-services (or something) which returns
+				// information about a region id, we can print this out
+				// and even have it link to map-teleport or something.
+				//<< "*** region_id: " << region_id << std::endl
+				//<< "*** position: " << position << std::endl;
+
+				LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
+			}
 
-			LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
-		}
+			// Logically it would make more sense to reject the session sooner, in another area of the
+			// code, but the session has to be established inside the server before it can be left.
+			if (LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !from_linden)
+			{
+				LL_WARNS() << "Leaving IM session from initiating muted resident " << from << LL_ENDL;
+				if (!gIMMgr->leaveSession(new_session_id))
+				{
+					LL_INFOS() << "Session " << new_session_id << " does not exist." << LL_ENDL;
+				}
+				return;
+			}
 
-		// Logically it would make more sense to reject the session sooner, in another area of the
-		// code, but the session has to be established inside the server before it can be left.
-		if (LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !from_linden)
-		{
-			LL_WARNS() << "Leaving IM session from initiating muted resident " << from << LL_ENDL;
-			if(!gIMMgr->leaveSession(new_session_id))
+			//Play sound for new conversations
+			if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation") == TRUE))
 			{
-				LL_INFOS() << "Session " << new_session_id << " does not exist." << LL_ENDL;
+				make_ui_sound("UISndNewIncomingIMSession");
 			}
-			return;
 		}
-
-        //Play sound for new conversations
-		if (!gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation") == TRUE))
-        {
-            make_ui_sound("UISndNewIncomingIMSession");
-        }
+		else
+		{
+			// Failed to create a session, most likely due to empty name (name cache failed?)
+			LL_WARNS() << "Failed to create IM session " << fixed_session_name << LL_ENDL;
+		}
 	}
 
 	if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message)
@@ -3022,7 +3033,7 @@ void LLIMMgr::inviteToSession(
 			LLIncomingCallDialog::processCallResponse(1, payload);
 			return;
 		}
-		else if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagAll & ~LLMute::flagVoiceChat))
+		else if (LLMuteList::getInstance()->isMuted(caller_id, LLMute::flagAll & ~LLMute::flagVoiceChat) && !voice_invite)
 		{
 			LL_INFOS() << "Rejecting session invite from initiating muted resident " << caller_name << LL_ENDL;
 			return;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 555c19baac4fcd146cd7f46dd3b6e56b619c4841..1b32fc9dfe133bd083e2ddadb1d1c46403451973 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -391,6 +391,7 @@ void LLInvFVBridge::removeBatch(std::vector<LLFolderViewModelItem*>& batch)
 		}
 	}
 	removeBatchNoCheck(batch);
+	model->checkTrashOverflow();
 }
 
 void  LLInvFVBridge::removeBatchNoCheck(std::vector<LLFolderViewModelItem*>&  batch)
@@ -851,6 +852,7 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 		getClipboardEntries(true, items, disabled_items, flags);
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -1051,6 +1053,20 @@ void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags,
     items.push_back(std::string("Marketplace Listings Separator"));
 }
 
+void LLInvFVBridge::addLinkReplaceMenuOption(menuentry_vec_t& items, menuentry_vec_t& disabled_items)
+{
+	const LLInventoryObject* obj = getInventoryObject();
+
+	if (isAgentInventory() && obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getType() != LLAssetType::AT_LINK_FOLDER)
+	{
+		items.push_back(std::string("Replace Links"));
+
+		if (mRoot->getSelectedCount() != 1)
+		{
+			disabled_items.push_back(std::string("Replace Links"));
+		}
+	}
+}
 
 // *TODO: remove this
 BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
@@ -3855,6 +3871,13 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
     }
 	if(trash_id == mUUID)
 	{
+		bool is_recent_panel = false;
+		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE);
+		if (active_panel && (active_panel->getName() == "Recent Items"))
+		{
+			is_recent_panel = true;
+		}
+
 		// This is the trash.
 		items.push_back(std::string("Empty Trash"));
 
@@ -3862,7 +3885,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 		LLInventoryModel::item_array_t* item_array;
 		gInventory.getDirectDescendentsOf(mUUID, cat_array, item_array);
 		// Enable Empty menu item only when there is something to act upon.
-		if (0 == cat_array->size() && 0 == item_array->size())
+		if ((0 == cat_array->size() && 0 == item_array->size()) || is_recent_panel)
 		{
 			disabled_items.push_back(std::string("Empty Trash"));
 		}
@@ -5179,6 +5202,7 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			disabled_items.push_back(std::string("Save As"));
 		}
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);	
 }
 
@@ -5251,6 +5275,7 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		items.push_back(std::string("Sound Play"));
 	}
 
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -5339,6 +5364,7 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		disabled_items.push_back(std::string("About Landmark"));
 	}
 
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -5641,6 +5667,7 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			disabled_items.push_back(std::string("Conference Chat"));
 		}
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -5910,6 +5937,7 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			items.push_back(std::string("Activate"));
 		}
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -5967,6 +5995,7 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		items.push_back(std::string("Animation Audition"));
 	}
 
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -6283,6 +6312,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			}
 		}
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -6511,6 +6541,7 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			}
 		}
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -6682,6 +6713,7 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		items.push_back(std::string("Properties"));
 		addDeleteContextMenuOptions(items, disabled_items);
 	}
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
@@ -6733,6 +6765,7 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		getClipboardEntries(true, items, disabled_items, flags);
 	}
 
+	addLinkReplaceMenuOption(items, disabled_items);
 	hide_context_entries(menu, items, disabled_items);
 }
 
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index b7d8c9d034a8f6918496c56f525d26ee78532832..e6fcb6be96871a13d1ea377be71def0fe1760700 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -148,6 +148,9 @@ class LLInvFVBridge : public LLFolderViewModelItemInventory
 	virtual void addMarketplaceContextMenuOptions(U32 flags,
 											 menuentry_vec_t &items,
 											 menuentry_vec_t &disabled_items);
+	virtual void addLinkReplaceMenuOption(menuentry_vec_t& items,
+										  menuentry_vec_t& disabled_items);
+
 protected:
 	LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
 
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index f04d6cc753cf526a6f7f1bb475933085a9e3becb..bccc654fbf2e2310f3ddc96ff0248ed041956952 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2306,6 +2306,26 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
 		// Clear the clipboard before we start adding things on it
 		LLClipboard::instance().reset();
 	}
+	if ("replace_links" == action)
+	{
+		LLSD params;
+		if (root->getSelectedCount() == 1)
+		{
+			LLFolderViewItem* folder_item = root->getSelectedItems().front();
+			LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
+
+			if (bridge)
+			{
+				LLInventoryObject* obj = bridge->getInventoryObject();
+				if (obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getActualType() != LLAssetType::AT_LINK_FOLDER)
+				{
+					params = LLSD(obj->getUUID());
+				}
+			}
+		}
+		LLFloaterReg::showInstance("linkreplace", params);
+		return;
+	}
 
 	static const std::string change_folder_string = "change_folder_type_";
 	if (action.length() > change_folder_string.length() && 
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 855f7c750e6ebc5f061236062351e50489151eaf..e5fd126d53c0a2a98e93222b57b37170c64e5125 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -41,6 +41,7 @@
 #include "llinventoryfunctions.h"
 #include "llinventoryobserver.h"
 #include "llinventorypanel.h"
+#include "llfloaterpreviewtrash.h"
 #include "llnotificationsutil.h"
 #include "llmarketplacefunctions.h"
 #include "llwindow.h"
@@ -3299,9 +3300,7 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**)
 }
 
 //----------------------------------------------------------------------------
-
 // Trash: LLFolderType::FT_TRASH, "ConfirmEmptyTrash"
-// Trash: LLFolderType::FT_TRASH, "TrashIsFull" when trash exceeds maximum capacity
 // Lost&Found: LLFolderType::FT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound"
 
 bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type)
@@ -3319,7 +3318,14 @@ void LLInventoryModel::emptyFolderType(const std::string notification, LLFolderT
 {
 	if (!notification.empty())
 	{
-		LLNotificationsUtil::add(notification, LLSD(), LLSD(),
+		LLSD args;
+		if(LLFolderType::FT_TRASH == preferred_type)
+		{
+			static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity");
+			const LLUUID trash_id = findCategoryUUIDForType(preferred_type);
+			args["COUNT"] = (S32)getDescendentsCountRecursive(trash_id, trash_max_capacity);
+		}
+		LLNotificationsUtil::add(notification, args, LLSD(),
 										boost::bind(&LLInventoryModel::callbackEmptyFolderType, this, _1, _2, preferred_type));
 	}
 	else
@@ -3415,13 +3421,32 @@ void LLInventoryModel::removeObject(const LLUUID& object_id)
 	}
 }
 
+bool callback_preview_trash_folder(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if (option == 0) // YES
+	{
+		LLFloaterPreviewTrash::show();
+	}
+	return false;
+}
+
 void  LLInventoryModel::checkTrashOverflow()
 {
 	static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity");
 	const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
 	if (getDescendentsCountRecursive(trash_id, trash_max_capacity) >= trash_max_capacity)
 	{
-		gInventory.emptyFolderType("TrashIsFull", LLFolderType::FT_TRASH);
+		if (LLFloaterPreviewTrash::isVisible())
+		{
+			// bring to front
+			LLFloaterPreviewTrash::show();
+		}
+		else
+		{
+			LLNotificationsUtil::add("TrashIsFull", LLSD(), LLSD(),
+				boost::bind(callback_preview_trash_folder, _1, _2));
+		}
 	}
 }
 
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index dee176917247751d64d4cb7af48082a3a5b8cf16..c558c0803b50fba1504bb3f8e7de276cd27bd4a5 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -411,6 +411,7 @@ class LLInventoryModel
 	/// removeItem() or removeCategory(), whichever is appropriate
 	void removeObject(const LLUUID& object_id);
 
+	// "TrashIsFull" when trash exceeds maximum capacity
 	void checkTrashOverflow();
 
 protected:
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index a8919db828f09d7bd2de86a1291b155242b40236..406c8b89d0b48d0667d1167d4a19339282eb630a 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -76,13 +76,6 @@
 // * Review the download rate throttling.  Slow then fast?
 //   Detect bandwidth usage and speed up when it drops?
 //
-// * A lot of calls to notifyObservers().  It looks like
-//   these could be collapsed by maintaining a 'dirty'
-//   bit and there appears to be an attempt to do this.
-//   But it isn't used or is used in a limited fashion.
-//   Are there semanic issues requiring a call after certain
-//   updateItem() calls?
-//
 // * An error on a fetch could be due to one item in the batch.
 //   If the batch were broken up, perhaps more of the inventory
 //   would download.  (Handwave here, not certain this is an
@@ -393,6 +386,12 @@ void LLInventoryModelBackgroundFetch::bulkFetch()
 	{
 		// Process completed background HTTP requests
 		gInventory.handleResponses(false);
+		// Just processed a bunch of items.
+		// Note: do we really need notifyObservers() here?
+		// OnIdle it will be called anyway due to Add flag for processed item.
+		// It seems like in some cases we are updaiting on fail (no flag),
+		// but is there anything to update?
+		gInventory.notifyObservers();
 	}
 	
 	if ((mFetchCount > max_concurrent_fetches) ||
@@ -711,7 +710,6 @@ void BGFolderHttpHandler::processData(LLSD & content, LLCore::HttpResponse * res
                         titem->setParent(lost_uuid);
                         titem->updateParentOnServer(FALSE);
                         gInventory.updateItem(titem);
-                        gInventory.notifyObservers();
                     }
                 }
             }
@@ -784,8 +782,6 @@ void BGFolderHttpHandler::processData(LLSD & content, LLCore::HttpResponse * res
 	{
 		fetcher->setAllFoldersFetched();
 	}
-	
-	gInventory.notifyObservers();
 }
 
 
@@ -828,7 +824,6 @@ void BGFolderHttpHandler::processFailure(LLCore::HttpStatus status, LLCore::Http
 			fetcher->setAllFoldersFetched();
 		}
 	}
-	gInventory.notifyObservers();
 }
 
 
@@ -866,7 +861,6 @@ void BGFolderHttpHandler::processFailure(const char * const reason, LLCore::Http
 			fetcher->setAllFoldersFetched();
 		}
 	}
-	gInventory.notifyObservers();
 }
 
 
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index bd15ba4975099219695b607060da72a048309eec..4b117941a0002df84cc440e25a8ffd44c2912504 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,6 +43,7 @@
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodelbackgroundfetch.h"
+#include "llnotificationsutil.h"
 #include "llpreview.h"
 #include "llsidepanelinventory.h"
 #include "lltrans.h"
@@ -1211,6 +1212,33 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
     }
 }
 
+void LLInventoryPanel::purgeSelectedItems()
+{
+    const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+    if (inventory_selected.empty()) return;
+    LLSD args;
+    args["COUNT"] = (S32)inventory_selected.size();
+    LLNotificationsUtil::add("PurgeSelectedItems", args, LLSD(), boost::bind(&LLInventoryPanel::callbackPurgeSelectedItems, this, _1, _2));
+}
+
+void LLInventoryPanel::callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response)
+{
+    S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+    if (option == 0)
+    {
+        const std::set<LLFolderViewItem*> inventory_selected = mFolderRoot.get()->getSelectionList();
+        if (inventory_selected.empty()) return;
+
+        std::set<LLFolderViewItem*>::const_iterator it = inventory_selected.begin();
+        const std::set<LLFolderViewItem*>::const_iterator it_end = inventory_selected.end();
+        for (; it != it_end; ++it)
+        {
+            LLUUID item_id = static_cast<LLFolderViewModelItemInventory*>((*it)->getViewModelItem())->getUUID();
+            remove_inventory_object(item_id, NULL);
+        }
+    }
+}
+
 bool LLInventoryPanel::attachObject(const LLSD& userdata)
 {
 	// Copy selected item UUIDs to a vector.
@@ -1448,6 +1476,11 @@ void LLInventoryPanel::updateSelection()
 
 void LLInventoryPanel::doToSelected(const LLSD& userdata)
 {
+	if (("purge" == userdata.asString()))
+	{
+		purgeSelectedItems();
+		return;
+	}
 	LLInventoryAction::doToSelected(mInventory, mFolderRoot.get(), userdata.asString());
 
 	return;
@@ -1482,7 +1515,9 @@ BOOL LLInventoryPanel::handleKeyHere( KEY key, MASK mask )
 		}
 		break;
 	case KEY_DELETE:
+#if LL_DARWIN
 	case KEY_BACKSPACE:
+#endif
 		// Delete selected items if delete or backspace key hit on the inventory panel
 		// Note: on Mac laptop keyboards, backspace and delete are one and the same
 		if (isSelectionRemovable() && (mask == MASK_NONE))
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 5cb9dde47a8adcab857c592f0eea5bc2cf57d780..5ee58707b05213a15da44338ecfebc1fd89a6008 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -202,6 +202,7 @@ class LLInventoryPanel : public LLPanel
 	void doCreate(const LLSD& userdata);
 	bool beginIMSession();
 	void fileUploadLocation(const LLSD& userdata);
+	void purgeSelectedItems();
 	bool attachObject(const LLSD& userdata);
 	static void idle(void* user_data);
 
@@ -232,6 +233,8 @@ class LLInventoryPanel : public LLPanel
     // Clean up stuff when the folder root gets deleted
     void clearFolderRoot();
 
+    void callbackPurgeSelectedItems(const LLSD& notification, const LLSD& response);
+
 protected:
 	void openStartFolderOrMyInventory(); // open the first level of inventory
 	void onItemsCompletion();			// called when selected items are complete
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index b9194c6c67b6f9404f7f808b7372cf5edd301138..5abd99d36f93d23c4e84c9f22f9ee18b34049b29 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -67,7 +67,8 @@ const std::string LL_IM_FROM("from");
 const std::string LL_IM_FROM_ID("from_id");
 const std::string LL_TRANSCRIPT_FILE_EXTENSION("txt");
 
-const static std::string IM_SEPARATOR(": ");
+const static char IM_SYMBOL_SEPARATOR(':');
+const static std::string IM_SEPARATOR(std::string() + IM_SYMBOL_SEPARATOR + " ");
 const static std::string NEW_LINE("\n");
 const static std::string NEW_LINE_SPACE_PREFIX("\n ");
 const static std::string TWO_SPACES("  ");
@@ -838,7 +839,7 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
 	}
 
 	if (im[LL_IM_TIME].isDefined())
-{
+	{
 		std::string timestamp = im[LL_IM_TIME].asString();
 		boost::trim(timestamp);
 		ostr << '[' << timestamp << ']' << TWO_SPACES;
@@ -851,9 +852,29 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
 	{
 		std::string from = im[LL_IM_FROM].asString();
 		boost::trim(from);
-		if (from.size())
+
+		std::size_t found = from.find(IM_SYMBOL_SEPARATOR);
+		std::size_t len = from.size();
+		std::size_t start = 0;
+		while (found != std::string::npos)
 		{
-			ostr << from << IM_SEPARATOR;
+			std::size_t sub_len = found - start;
+			if (sub_len > 0)
+			{
+				ostr << from.substr(start, sub_len);
+			}
+			LLURI::encodeCharacter(ostr, IM_SYMBOL_SEPARATOR);
+			start = found + 1;
+			found = from.find(IM_SYMBOL_SEPARATOR, start);
+		}
+		if (start < len)
+		{
+			std::string str_end = from.substr(start, len - start);
+			ostr << str_end;
+		}
+		if (len > 0)
+		{
+			ostr << IM_SEPARATOR;
 		}
 	}
 
@@ -865,7 +886,7 @@ void LLChatLogFormatter::format(const LLSD& im, std::ostream& ostr) const
 		boost::replace_all(im_text, NEW_LINE, NEW_LINE_SPACE_PREFIX);
 		ostr << im_text;
 	}
-	}
+}
 
 bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params)
 {
@@ -912,7 +933,7 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params
 	if (!boost::regex_match(stuff, name_and_text, NAME_AND_TEXT)) return false;
 
 	bool has_name = name_and_text[IDX_NAME].matched;
-	std::string name = name_and_text[IDX_NAME];
+	std::string name = LLURI::unescape(name_and_text[IDX_NAME]);
 
 	//we don't need a name/text separator
 	if (has_name && name.length() && name[name.length()-1] == ':')
@@ -933,7 +954,7 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im, const LLSD& parse_params
 		U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER);
 		if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length()))
 		{
-			im[LL_IM_FROM] = stuff.substr(0, divider_pos);
+			im[LL_IM_FROM] = LLURI::unescape(stuff.substr(0, divider_pos));
 			im[LL_IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length());
 			return true;
 		}
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 1a533dace7113070a157b0ef28c195cd44556582..f7e0e32256d6dea67c4785d73ac30cc96d0dedef 100644
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -3626,7 +3626,15 @@ void LLMeshRepository::notifyLoadedMeshes()
 		//popup queued error messages from background threads
 		while (!mUploadErrorQ.empty())
 		{
-			LLNotificationsUtil::add("MeshUploadError", mUploadErrorQ.front());
+			LLSD substitutions(mUploadErrorQ.front());
+			if (substitutions.has("DETAILS"))
+			{
+				LLNotificationsUtil::add("MeshUploadErrorDetails", substitutions);
+			}
+			else
+			{
+				LLNotificationsUtil::add("MeshUploadError", substitutions);
+			}
 			mUploadErrorQ.pop();
 		}
 
diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp
index 02b28a2bf8e6486cc7a9f9e0b93966ba93279390..5b53a05274233475c0e91e23b58bfbe35153da65 100644
--- a/indra/newview/llmutelist.cpp
+++ b/indra/newview/llmutelist.cpp
@@ -825,13 +825,14 @@ bool LLRenderMuteList::saveToFile()
         LL_WARNS() << "Couldn't open render mute list file: " << filename << LL_ENDL;
         return false;
     }
+
     for (std::map<LLUUID, S32>::iterator it = sVisuallyMuteSettingsMap.begin(); it != sVisuallyMuteSettingsMap.end(); ++it)
     {
         if (it->second != 0)
         {
             std::string id_string;
             it->first.toString(id_string);
-            fprintf(fp, "%d %s\n", (S32)it->second, id_string.c_str());
+            fprintf(fp, "%d %s [%d]\n", (S32)it->second, id_string.c_str(), (S32)sVisuallyMuteDateMap[it->first]);
         }
     }
     fclose(fp);
@@ -854,8 +855,10 @@ bool LLRenderMuteList::loadFromFile()
 	{
 		id_buffer[0] = '\0';
 		S32 setting = 0;
-		sscanf(buffer, " %d %254s\n", &setting, id_buffer);
+		S32 time = 0;
+		sscanf(buffer, " %d %254s [%d]\n", &setting, id_buffer, &time);
 		sVisuallyMuteSettingsMap[LLUUID(id_buffer)] = setting;
+		sVisuallyMuteDateMap[LLUUID(id_buffer)] = (time == 0) ? (S32)time_corrected() : time;
 	}
 	fclose(fp);
     return true;
@@ -866,10 +869,15 @@ void LLRenderMuteList::saveVisualMuteSetting(const LLUUID& agent_id, S32 setting
     if(setting == 0)
     {
         sVisuallyMuteSettingsMap.erase(agent_id);
+        sVisuallyMuteDateMap.erase(agent_id);
     }
     else
     {
         sVisuallyMuteSettingsMap[agent_id] = setting;
+        if (sVisuallyMuteDateMap.find(agent_id) == sVisuallyMuteDateMap.end())
+        {
+            sVisuallyMuteDateMap[agent_id] =  (S32)time_corrected();
+        }
     }
     saveToFile();
     notifyObservers();
@@ -886,6 +894,17 @@ S32 LLRenderMuteList::getSavedVisualMuteSetting(const LLUUID& agent_id)
     return 0;
 }
 
+S32 LLRenderMuteList::getVisualMuteDate(const LLUUID& agent_id)
+{
+    std::map<LLUUID, S32>::iterator iter = sVisuallyMuteDateMap.find(agent_id);
+    if (iter != sVisuallyMuteDateMap.end())
+    {
+        return iter->second;
+    }
+
+    return 0;
+}
+
 void LLRenderMuteList::addObserver(LLMuteListObserver* observer)
 {
     mObservers.insert(observer);
diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h
index 9ab978353bb45fe51817a7d8558ac1143f6cce39..f2fcf3dbb33a7cedecc1f604b4f9d846e3786f60 100644
--- a/indra/newview/llmutelist.h
+++ b/indra/newview/llmutelist.h
@@ -184,10 +184,13 @@ class LLRenderMuteList : public LLSingleton<LLRenderMuteList>
 	S32 getSavedVisualMuteSetting(const LLUUID& agent_id);
 	void saveVisualMuteSetting(const LLUUID& agent_id, S32 setting);
 
+	S32 getVisualMuteDate(const LLUUID& agent_id);
+
 	void addObserver(LLMuteListObserver* observer);
 	void removeObserver(LLMuteListObserver* observer);
 
 	std::map<LLUUID, S32> sVisuallyMuteSettingsMap;
+	std::map<LLUUID, S32> sVisuallyMuteDateMap;
 
 private:
 	void notifyObservers();
diff --git a/indra/newview/lloutfitgallery.cpp b/indra/newview/lloutfitgallery.cpp
index eeeb7e5c25652eff83bb836380c69ed803dc7dae..31e89c0ed020c223b11e31d9c46472d39daee3a2 100644
--- a/indra/newview/lloutfitgallery.cpp
+++ b/indra/newview/lloutfitgallery.cpp
@@ -34,6 +34,7 @@
 #include "llcommonutils.h"
 #include "llvfile.h"
 
+#include "llaccordionctrltab.h"
 #include "llappearancemgr.h"
 #include "lleconomy.h"
 #include "llerror.h"
@@ -46,6 +47,8 @@
 #include "llinventorymodel.h"
 #include "lllocalbitmaps.h"
 #include "llnotificationsutil.h"
+#include "llpaneloutfitsinventory.h"
+#include "lltabcontainer.h"
 #include "lltexturectrl.h"
 #include "lltrans.h"
 #include "llviewercontrol.h"
@@ -742,6 +745,33 @@ BOOL LLOutfitGalleryItem::handleRightMouseDown(S32 x, S32 y, MASK mask)
     return LLUICtrl::handleRightMouseDown(x, y, mask);
 }
 
+BOOL LLOutfitGallery::handleDoubleClick(S32 x, S32 y, MASK mask)
+{
+    LLTabContainer* appearence_tabs = LLPanelOutfitsInventory::findInstance()->getChild<LLTabContainer>("appearance_tabs");
+    LLPanel* panel = NULL;
+    LLAccordionCtrl* accordion = NULL;
+    if (appearence_tabs != NULL)
+    {
+        appearence_tabs->selectTabByName("outfitslist_tab");
+        panel = appearence_tabs->getCurrentPanel();
+        if (panel != NULL)
+        {
+            accordion = panel->getChild<LLAccordionCtrl>("outfits_accordion");
+            LLOutfitsList* outfit_list = dynamic_cast<LLOutfitsList*>(panel);
+            if (accordion != NULL && outfit_list != NULL)
+            {
+                LLUUID item_id = getSelectedOutfitUUID();
+                outfit_list->setSelectedOutfitByUUID(item_id);
+                LLAccordionCtrlTab* tab = accordion->getSelectedTab();
+                tab->showAndFocusHeader();
+                return TRUE;
+            }
+        }
+    }
+
+	return LLUICtrl::handleDoubleClick(x, y, mask);
+}
+
 void LLOutfitGalleryItem::setImageAssetId(LLUUID image_asset_id)
 {
     mImageAssetId = image_asset_id;
diff --git a/indra/newview/lloutfitgallery.h b/indra/newview/lloutfitgallery.h
index b9fc10f015a6a20f27dde27c5623f97bcda1a971..37e75f110950bb3250d1688f40f298bff48942db 100644
--- a/indra/newview/lloutfitgallery.h
+++ b/indra/newview/lloutfitgallery.h
@@ -114,6 +114,9 @@ class LLOutfitGallery : public LLOutfitListBase
     void onTexturePickerUpdateImageStats(LLPointer<LLViewerTexture> texture);
     void onBeforeOutfitSnapshotSave();
     void onAfterOutfitSnapshotSave();
+
+    /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+
 protected:
     /*virtual*/ void onHighlightBaseOutfit(LLUUID base_id, LLUUID prev_id);
     /*virtual*/ void onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid);
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index e1f51e62e3b77671d04414104707d7dc1850d2f1..f87ce8aa52e3dcf458c8e6d876cb1e880a7eeab0 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -311,7 +311,7 @@ void LLOutfitsList::onSetSelectedOutfitByUUID(const LLUUID& outfit_uuid)
 			tab->setFocus(TRUE);
 			ChangeOutfitSelection(list, outfit_uuid);
 
-			tab->setDisplayChildren(true);
+			tab->changeOpenClose(false);
 		}
 	}
 }
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 25ae4774fce8a07e3f22e5a4701e9e5498640f0e..3322e8a3df435c58e87c5e076aa9cf06643a7e05 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -123,6 +123,7 @@ void LLPanelBlockedList::onOpen(const LLSD& key)
 
 void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
 {
+	mBlockedList->resetSelection();
 	mBlockedList->selectItemByUUID(mute_id);
 }
 
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index ad600358dd53038839f0b18d6bad1714ff299571..a16259886de026739f1b8009b791a6ccc77e9a9f 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -131,13 +131,13 @@ BOOL	LLPanelFace::postBuild()
 	childSetCommitCallback("combobox shininess",&LLPanelFace::onCommitShiny,this);
 	childSetCommitCallback("combobox bumpiness",&LLPanelFace::onCommitBump,this);
 	childSetCommitCallback("combobox alphamode",&LLPanelFace::onCommitAlphaMode,this);
-	childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureInfo, this);
-	childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureInfo, this);
-	childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureInfo, this);
+	childSetCommitCallback("TexScaleU",&LLPanelFace::onCommitTextureScaleX, this);
+	childSetCommitCallback("TexScaleV",&LLPanelFace::onCommitTextureScaleY, this);
+	childSetCommitCallback("TexRot",&LLPanelFace::onCommitTextureRot, this);
 	childSetCommitCallback("rptctrl",&LLPanelFace::onCommitRepeatsPerMeter, this);
 	childSetCommitCallback("checkbox planar align",&LLPanelFace::onCommitPlanarAlign, this);
-	childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureInfo, this);
-	childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureInfo, this);
+	childSetCommitCallback("TexOffsetU",LLPanelFace::onCommitTextureOffsetX, this);
+	childSetCommitCallback("TexOffsetV",LLPanelFace::onCommitTextureOffsetY, this);
 
 	childSetCommitCallback("bumpyScaleU",&LLPanelFace::onCommitMaterialBumpyScaleX, this);
 	childSetCommitCallback("bumpyScaleV",&LLPanelFace::onCommitMaterialBumpyScaleY, this);
@@ -691,6 +691,8 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
 		}
 
 		getChildView("radio_material_type")->setEnabled(editable);
+		getChildView("checkbox_sync_settings")->setEnabled(editable);
+		childSetValue("checkbox_sync_settings", gSavedSettings.getBOOL("SyncMaterialSettings"));
 		updateVisibility();
 
 		bool identical				= true;	// true because it is anded below
@@ -1862,12 +1864,39 @@ void LLPanelFace::onSelectNormalTexture(const LLSD& data)
 	sendBump(nmap_id.isNull() ? 0 : BUMPY_TEXTURE);
 }
 
+//static
+void LLPanelFace::syncOffsetX(LLPanelFace* self, F32 offsetU)
+{
+	LLSelectedTEMaterial::setNormalOffsetX(self,offsetU);
+	LLSelectedTEMaterial::setSpecularOffsetX(self,offsetU);
+	self->getChild<LLSpinCtrl>("TexOffsetU")->forceSetValue(offsetU);
+	self->sendTextureInfo();
+}
+
+//static
+void LLPanelFace::syncOffsetY(LLPanelFace* self, F32 offsetV)
+{
+	LLSelectedTEMaterial::setNormalOffsetY(self,offsetV);
+	LLSelectedTEMaterial::setSpecularOffsetY(self,offsetV);
+	self->getChild<LLSpinCtrl>("TexOffsetV")->forceSetValue(offsetV);
+	self->sendTextureInfo();
+}
+
 //static
 void LLPanelFace::onCommitMaterialBumpyOffsetX(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setNormalOffsetX(self,self->getCurrentBumpyOffsetU());
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetX(self,self->getCurrentBumpyOffsetU());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setNormalOffsetX(self,self->getCurrentBumpyOffsetU());
+	}
+
 }
 
 //static
@@ -1875,7 +1904,15 @@ void LLPanelFace::onCommitMaterialBumpyOffsetY(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setNormalOffsetY(self,self->getCurrentBumpyOffsetV());
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetY(self,self->getCurrentBumpyOffsetV());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setNormalOffsetY(self,self->getCurrentBumpyOffsetV());
+	}
 }
 
 //static
@@ -1883,7 +1920,15 @@ void LLPanelFace::onCommitMaterialShinyOffsetX(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setSpecularOffsetX(self,self->getCurrentShinyOffsetU());
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetX(self, self->getCurrentShinyOffsetU());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setSpecularOffsetX(self,self->getCurrentShinyOffsetU());
+	}
 }
 
 //static
@@ -1891,7 +1936,31 @@ void LLPanelFace::onCommitMaterialShinyOffsetY(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setSpecularOffsetY(self,self->getCurrentShinyOffsetV());
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetY(self,self->getCurrentShinyOffsetV());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setSpecularOffsetY(self,self->getCurrentShinyOffsetV());
+	}
+}
+
+//static
+void LLPanelFace::syncRepeatX(LLPanelFace* self, F32 scaleU)
+{
+	LLSelectedTEMaterial::setNormalRepeatX(self,scaleU);
+	LLSelectedTEMaterial::setSpecularRepeatX(self,scaleU);
+	self->sendTextureInfo();
+}
+
+//static
+void LLPanelFace::syncRepeatY(LLPanelFace* self, F32 scaleV)
+{
+	LLSelectedTEMaterial::setNormalRepeatY(self,scaleV);
+	LLSelectedTEMaterial::setSpecularRepeatY(self,scaleV);
+	self->sendTextureInfo();
 }
 
 //static
@@ -1904,7 +1973,16 @@ void LLPanelFace::onCommitMaterialBumpyScaleX(LLUICtrl* ctrl, void* userdata)
 	{
 		bumpy_scale_u *= 0.5f;
 	}
-	LLSelectedTEMaterial::setNormalRepeatX(self,bumpy_scale_u);
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexScaleU")->forceSetValue(self->getCurrentBumpyScaleU());
+		syncRepeatX(self, bumpy_scale_u);
+	}
+	else
+	{
+		LLSelectedTEMaterial::setNormalRepeatX(self,bumpy_scale_u);
+	}
 }
 
 //static
@@ -1917,7 +1995,17 @@ void LLPanelFace::onCommitMaterialBumpyScaleY(LLUICtrl* ctrl, void* userdata)
 	{
 		bumpy_scale_v *= 0.5f;
 	}
-	LLSelectedTEMaterial::setNormalRepeatY(self,bumpy_scale_v);
+
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexScaleV")->forceSetValue(self->getCurrentBumpyScaleV());
+		syncRepeatY(self, bumpy_scale_v);
+	}
+	else
+	{
+		LLSelectedTEMaterial::setNormalRepeatY(self,bumpy_scale_v);
+	}
 }
 
 //static
@@ -1930,7 +2018,16 @@ void LLPanelFace::onCommitMaterialShinyScaleX(LLUICtrl* ctrl, void* userdata)
 	{
 		shiny_scale_u *= 0.5f;
 	}
-	LLSelectedTEMaterial::setSpecularRepeatX(self,shiny_scale_u);
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexScaleU")->forceSetValue(self->getCurrentShinyScaleU());
+		syncRepeatX(self, shiny_scale_u);
+	}
+	else
+	{
+		LLSelectedTEMaterial::setSpecularRepeatX(self,shiny_scale_u);
+	}
 }
 
 //static
@@ -1943,7 +2040,24 @@ void LLPanelFace::onCommitMaterialShinyScaleY(LLUICtrl* ctrl, void* userdata)
 	{
 		shiny_scale_v *= 0.5f;
 	}
-	LLSelectedTEMaterial::setSpecularRepeatY(self,shiny_scale_v);
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexScaleV")->forceSetValue(self->getCurrentShinyScaleV());
+		syncRepeatY(self, shiny_scale_v);
+	}
+	else
+	{
+		LLSelectedTEMaterial::setSpecularRepeatY(self,shiny_scale_v);
+	}
+}
+
+//static
+void LLPanelFace::syncMaterialRot(LLPanelFace* self, F32 rot)
+{
+	LLSelectedTEMaterial::setNormalRotation(self,rot * DEG_TO_RAD);
+	LLSelectedTEMaterial::setSpecularRotation(self,rot * DEG_TO_RAD);
+	self->sendTextureInfo();
 }
 
 //static
@@ -1951,7 +2065,16 @@ void LLPanelFace::onCommitMaterialBumpyRot(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setNormalRotation(self,self->getCurrentBumpyRot() * DEG_TO_RAD);
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexRot")->forceSetValue(self->getCurrentBumpyRot());
+		syncMaterialRot(self, self->getCurrentBumpyRot());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setNormalRotation(self,self->getCurrentBumpyRot() * DEG_TO_RAD);
+	}
 }
 
 //static
@@ -1959,7 +2082,16 @@ void LLPanelFace::onCommitMaterialShinyRot(LLUICtrl* ctrl, void* userdata)
 {
 	LLPanelFace* self = (LLPanelFace*) userdata;
 	llassert_always(self);
-	LLSelectedTEMaterial::setSpecularRotation(self,self->getCurrentShinyRot() * DEG_TO_RAD);
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		self->getChild<LLSpinCtrl>("TexRot")->forceSetValue(self->getCurrentShinyRot());
+		syncMaterialRot(self, self->getCurrentShinyRot());
+	}
+	else
+	{
+		LLSelectedTEMaterial::setSpecularRotation(self,self->getCurrentShinyRot() * DEG_TO_RAD);
+	}
 }
 
 //static
@@ -1994,6 +2126,92 @@ void LLPanelFace::onCommitTextureInfo( LLUICtrl* ctrl, void* userdata )
 	self->updateUI(true);
 }
 
+// static
+void LLPanelFace::onCommitTextureScaleX( LLUICtrl* ctrl, void* userdata )
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		F32 bumpy_scale_u = self->getChild<LLUICtrl>("TexScaleU")->getValue().asReal();
+		if (self->isIdenticalPlanarTexgen())
+		{
+			bumpy_scale_u *= 0.5f;
+		}
+		syncRepeatX(self, bumpy_scale_u);
+	}
+	else
+	{
+		self->sendTextureInfo();
+	}
+	self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureScaleY( LLUICtrl* ctrl, void* userdata )
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		F32 bumpy_scale_v = self->getChild<LLUICtrl>("TexScaleV")->getValue().asReal();
+		if (self->isIdenticalPlanarTexgen())
+		{
+			bumpy_scale_v *= 0.5f;
+		}
+		syncRepeatY(self, bumpy_scale_v);
+	}
+	else
+	{
+		self->sendTextureInfo();
+	}
+	self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureRot( LLUICtrl* ctrl, void* userdata )
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncMaterialRot(self, self->getChild<LLUICtrl>("TexRot")->getValue().asReal());
+	}
+	else
+	{
+		self->sendTextureInfo();
+	}
+	self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureOffsetX( LLUICtrl* ctrl, void* userdata )
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetX(self, self->getChild<LLUICtrl>("TexOffsetU")->getValue().asReal());
+	}
+	else
+	{
+		self->sendTextureInfo();
+	}
+	self->updateUI(true);
+}
+
+// static
+void LLPanelFace::onCommitTextureOffsetY( LLUICtrl* ctrl, void* userdata )
+{
+	LLPanelFace* self = (LLPanelFace*) userdata;
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
+	{
+		syncOffsetY(self, self->getChild<LLUICtrl>("TexOffsetV")->getValue().asReal());
+	}
+	else
+	{
+		self->sendTextureInfo();
+	}
+	self->updateUI(true);
+}
+
 // Commit the number of repeats per meter
 // static
 void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
@@ -2017,44 +2235,62 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)
 
 	LLSelectedTE::getObjectScaleS(obj_scale_s, identical_scale_s);
 	LLSelectedTE::getObjectScaleS(obj_scale_t, identical_scale_t);
+
+	LLUICtrl* bumpy_scale_u = self->getChild<LLUICtrl>("bumpyScaleU");
+	LLUICtrl* bumpy_scale_v = self->getChild<LLUICtrl>("bumpyScaleV");
+	LLUICtrl* shiny_scale_u = self->getChild<LLUICtrl>("shinyScaleU");
+	LLUICtrl* shiny_scale_v = self->getChild<LLUICtrl>("shinyScaleV");
  
-	switch (material_type)
+	if (gSavedSettings.getBOOL("SyncMaterialSettings"))
 	{
-		case MATTYPE_DIFFUSE:
-		{
-	LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
-}
-		break;
+		LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
 
-		case MATTYPE_NORMAL:
-		{
-			LLUICtrl* bumpy_scale_u = self->getChild<LLUICtrl>("bumpyScaleU");
-			LLUICtrl* bumpy_scale_v = self->getChild<LLUICtrl>("bumpyScaleV");
-			
-			bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
-			bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
+		bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
+		bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
 
-			LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
-			LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
-		}
-		break;
+		LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
+		LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
 
-		case MATTYPE_SPECULAR:
+		shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
+		shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+
+		LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
+		LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
+	}
+	else
+	{
+		switch (material_type)
 		{
-			LLUICtrl* shiny_scale_u = self->getChild<LLUICtrl>("shinyScaleU");
-			LLUICtrl* shiny_scale_v = self->getChild<LLUICtrl>("shinyScaleV");
-			
-			shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
-			shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+			case MATTYPE_DIFFUSE:
+			{
+				LLSelectMgr::getInstance()->selectionTexScaleAutofit( repeats_per_meter );
+			}
+			break;
 
-			LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
-			LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
-		}
-		break;
+			case MATTYPE_NORMAL:
+			{
+				bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter);
+				bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);
 
-		default:
-			llassert(false);
-		break;
+				LLSelectedTEMaterial::setNormalRepeatX(self,obj_scale_s * repeats_per_meter);
+				LLSelectedTEMaterial::setNormalRepeatY(self,obj_scale_t * repeats_per_meter);
+			}
+			break;
+
+			case MATTYPE_SPECULAR:
+			{
+				shiny_scale_u->setValue(obj_scale_s * repeats_per_meter);
+				shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);
+
+				LLSelectedTEMaterial::setSpecularRepeatX(self,obj_scale_s * repeats_per_meter);
+				LLSelectedTEMaterial::setSpecularRepeatY(self,obj_scale_t * repeats_per_meter);
+			}
+			break;
+
+			default:
+				llassert(false);
+				break;
+		}
 	}
 	// vertical scale and repeats per meter depends on each other, so force set on changes
 	self->updateUI(true);
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 078995e78770d7929406b8199eb6bf113b1b391e..7c084cb0abea07d1632c583a70bb4bb5298d981e 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -162,7 +162,12 @@ class LLPanelFace : public LLPanel
 
 	// Callback funcs for individual controls
 	//
-	static void		onCommitTextureInfo( 	LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureInfo(LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureScaleX(LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureScaleY(LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureRot(LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureOffsetX(LLUICtrl* ctrl, void* userdata);
+	static void		onCommitTextureOffsetY(LLUICtrl* ctrl, void* userdata);
 
 	static void		onCommitMaterialBumpyScaleX(	LLUICtrl* ctrl, void* userdata);
 	static void		onCommitMaterialBumpyScaleY(	LLUICtrl* ctrl, void* userdata);
@@ -170,6 +175,12 @@ class LLPanelFace : public LLPanel
 	static void		onCommitMaterialBumpyOffsetX(	LLUICtrl* ctrl, void* userdata);
 	static void		onCommitMaterialBumpyOffsetY(	LLUICtrl* ctrl, void* userdata);
 
+	static void		syncRepeatX(LLPanelFace* self, F32 scaleU);
+	static void		syncRepeatY(LLPanelFace* self, F32 scaleV);
+	static void		syncOffsetX(LLPanelFace* self, F32 offsetU);
+	static void		syncOffsetY(LLPanelFace* self, F32 offsetV);
+	static void 	syncMaterialRot(LLPanelFace* self, F32 rot);
+
 	static void		onCommitMaterialShinyScaleX(	LLUICtrl* ctrl, void* userdata);
 	static void		onCommitMaterialShinyScaleY(	LLUICtrl* ctrl, void* userdata);
 	static void		onCommitMaterialShinyRot(		LLUICtrl* ctrl, void* userdata);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index fa946ee5c7ac6c5da50a89fc6cbb93662e7e06d6..3db9500de0a6bd265e63c0e95a1277b85885f79c 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1158,6 +1158,26 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
 		mFilterEditor->setText(item_name);
 		mFilterEditor->setFocus(TRUE);
 	}
+
+	if (command_name == "replace_links")
+	{
+		LLSD params;
+		LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
+		if (current_item)
+		{
+			LLInvFVBridge* bridge = (LLInvFVBridge*)current_item->getViewModelItem();
+
+			if (bridge)
+			{
+				LLInventoryObject* obj = bridge->getInventoryObject();
+				if (obj && obj->getType() != LLAssetType::AT_CATEGORY && obj->getActualType() != LLAssetType::AT_LINK_FOLDER)
+				{
+					params = LLSD(obj->getUUID());
+				}
+			}
+		}
+		LLFloaterReg::showInstance("linkreplace", params);
+	}
 }
 
 void LLPanelMainInventory::onVisibilityChange( BOOL new_visibility )
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 640962033696e90b9b2f29e7b298b21726d85e7b..dbfebf901a09abc8663b48cf2b752f758da36e78 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -2052,7 +2052,9 @@ BOOL LLPanelObjectInventory::handleKeyHere( KEY key, MASK mask )
 	switch (key)
 	{
 	case KEY_DELETE:
+#if LL_DARWIN
 	case KEY_BACKSPACE:
+#endif
 		// Delete selected items if delete or backspace key hit on the inventory panel
 		// Note: on Mac laptop keyboards, backspace and delete are one and the same
 		if (isSelectionRemovable() && mask == MASK_NONE)
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index bc177abc57f2f377dfcab06a4195cc56fe2ac347..eb2a297a35ac07d3d2e448511a5e891d7131ff08 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -1465,7 +1465,17 @@ void	LLPanelPeople::onOpen(const LLSD& key)
 {
 	std::string tab_name = key["people_panel_tab_name"];
 	if (!tab_name.empty())
+	{
 		mTabContainer->selectTabByName(tab_name);
+		if(tab_name == BLOCKED_TAB_NAME)
+		{
+			LLPanel* blocked_tab = mTabContainer->getCurrentPanel()->findChild<LLPanel>("panel_block_list_sidetray");
+			if(blocked_tab)
+			{
+				blocked_tab->onOpen(key);
+			}
+		}
+	}
 }
 
 bool LLPanelPeople::notifyChildren(const LLSD& info)
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 203c57b732257c704ad302506a9ab2ebe64da6db..29ca172f609f5c72322a5bae96246333b81dba61 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -56,15 +56,20 @@
 #include "llfloatergroups.h"
 #include "llfloaterreg.h"
 #include "llavataractions.h"
+#include "llavatariconctrl.h"
 #include "llnamebox.h"
 #include "llviewercontrol.h"
 #include "lluictrlfactory.h"
 #include "llspinctrl.h"
 #include "roles_constants.h"
 #include "llgroupactions.h"
+#include "llgroupiconctrl.h"
 #include "lltrans.h"
 #include "llinventorymodel.h"
 
+#include "llavatarnamecache.h"
+#include "llcachename.h"
+
 
 U8 string_value_to_click_action(std::string p_value);
 std::string click_action_to_string_value( U8 action);
@@ -186,10 +191,13 @@ void LLPanelPermissions::disableAll()
 	getChild<LLUICtrl>("pathfinding_attributes_value")->setValue(LLStringUtil::null);
 
 	getChildView("Creator:")->setEnabled(FALSE);
+	getChild<LLUICtrl>("Creator Icon")->setVisible(FALSE);
 	getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
 	getChildView("Creator Name")->setEnabled(FALSE);
 
 	getChildView("Owner:")->setEnabled(FALSE);
+	getChild<LLUICtrl>("Owner Icon")->setVisible(FALSE);
+	getChild<LLUICtrl>("Owner Group Icon")->setVisible(FALSE);
 	getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
 	getChildView("Owner Name")->setEnabled(FALSE);
 
@@ -366,39 +374,87 @@ void LLPanelPermissions::refresh()
 	
 	// Update creator text field
 	getChildView("Creator:")->setEnabled(TRUE);
-	std::string creator_name;
-	LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_name);
-
-	getChild<LLUICtrl>("Creator Name")->setValue(creator_name);
+	std::string creator_app_link;
+	LLSelectMgr::getInstance()->selectGetCreator(mCreatorID, creator_app_link);
+
+	// Style for creator and owner links (both group and agent)
+	LLStyle::Params style_params;
+	LLColor4 link_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
+	style_params.color = link_color;
+	style_params.readonly_color = link_color;
+	style_params.is_link = true; // link will be added later
+	const LLFontGL* fontp = getChild<LLTextBox>("Creator Name")->getFont();
+	style_params.font.name = LLFontGL::nameFromFont(fontp);
+	style_params.font.size = LLFontGL::sizeFromFont(fontp);
+	style_params.font.style = "UNDERLINE";
+
+	LLAvatarName av_name;
+	if (LLAvatarNameCache::get(mCreatorID, &av_name))
+	{
+		// If name isn't present, this will 'request' it and trigger refresh() again
+		LLTextBox* text_box = getChild<LLTextBox>("Creator Name");
+		style_params.link_href = creator_app_link;
+		text_box->setText(av_name.getCompleteName(), style_params);
+	}
+	getChild<LLAvatarIconCtrl>("Creator Icon")->setValue(mCreatorID);
+	getChild<LLAvatarIconCtrl>("Creator Icon")->setVisible(TRUE);
 	getChildView("Creator Name")->setEnabled(TRUE);
 
 	// Update owner text field
 	getChildView("Owner:")->setEnabled(TRUE);
 
-	std::string owner_name;
-	const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_name);
-	if (mOwnerID.isNull())
+	std::string owner_app_link;
+	const BOOL owners_identical = LLSelectMgr::getInstance()->selectGetOwner(mOwnerID, owner_app_link);
+
+
+	if (LLSelectMgr::getInstance()->selectIsGroupOwned())
 	{
-		if (LLSelectMgr::getInstance()->selectIsGroupOwned())
+		// Group owned already displayed by selectGetOwner
+		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(mOwnerID);
+		if (group_data && group_data->isGroupPropertiesDataComplete())
 		{
-			// Group owned already displayed by selectGetOwner
+			LLTextBox* text_box = getChild<LLTextBox>("Owner Name");
+			style_params.link_href = owner_app_link;
+			text_box->setText(group_data->mName, style_params);
+			getChild<LLGroupIconCtrl>("Owner Group Icon")->setIconId(group_data->mInsigniaID);
+			getChild<LLGroupIconCtrl>("Owner Group Icon")->setVisible(TRUE);
+			getChild<LLUICtrl>("Owner Icon")->setVisible(FALSE);
 		}
 		else
+		{
+			// Triggers refresh
+			LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mOwnerID);
+		}
+	}
+	else
+	{
+		LLUUID owner_id = mOwnerID;
+		if (owner_id.isNull())
 		{
 			// Display last owner if public
-			std::string last_owner_name;
-			LLSelectMgr::getInstance()->selectGetLastOwner(mLastOwnerID, last_owner_name);
+			std::string last_owner_app_link;
+			LLSelectMgr::getInstance()->selectGetLastOwner(mLastOwnerID, last_owner_app_link);
 
 			// It should never happen that the last owner is null and the owner
 			// is null, but it seems to be a bug in the simulator right now. JC
-			if (!mLastOwnerID.isNull() && !last_owner_name.empty())
+			if (!mLastOwnerID.isNull() && !last_owner_app_link.empty())
 			{
-				owner_name.append(", last ");
-				owner_name.append(last_owner_name);
+				owner_app_link.append(", last ");
+				owner_app_link.append(last_owner_app_link);
 			}
+			owner_id = mLastOwnerID;
+		}
+		if (LLAvatarNameCache::get(owner_id, &av_name))
+		{
+			// If name isn't present, this will 'request' it and trigger refresh() again
+			LLTextBox* text_box = getChild<LLTextBox>("Owner Name");
+			style_params.link_href = owner_app_link;
+			text_box->setText(av_name.getCompleteName(), style_params);
 		}
+		getChild<LLAvatarIconCtrl>("Owner Icon")->setValue(owner_id);
+		getChild<LLAvatarIconCtrl>("Owner Icon")->setVisible(TRUE);
+		getChild<LLUICtrl>("Owner Group Icon")->setVisible(FALSE);
 	}
-	getChild<LLUICtrl>("Owner Name")->setValue(owner_name);
 	getChildView("Owner Name")->setEnabled(TRUE);
 
 	// update group text field
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 1d021ec28fa4ea400983197376c851794886cb4e..b2c450aa0c7e3b914cc1114eb0f3d6912c11b5be 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -40,6 +40,7 @@
 #include "lltoastnotifypanel.h"
 #include "lltoastscripttextbox.h"
 #include "lltrans.h"
+#include "llviewerobjectlist.h"
 #include "llviewerwindow.h"
 #include "llfloaterimsession.h"
 
@@ -61,6 +62,7 @@ LLUUID notification_id_to_object_id(const LLUUID& notification_id)
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
+
 LLScriptFloater::LLScriptFloater(const LLSD& key)
 : LLDockableFloater(NULL, true, key)
 , mScriptForm(NULL)
@@ -346,6 +348,11 @@ void LLScriptFloater::hideToastsIfNeeded()
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
+LLScriptFloaterManager::LLScriptFloaterManager()
+{
+	gSavedSettings.getControl("ScriptDialogLimitations")->getCommitSignal()->connect(boost::bind(&clearScriptNotifications));
+}
+
 void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 {
 	if(notification_id.isNull())
@@ -365,16 +372,86 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 	// LLDialog can spawn only one instance, LLLoadURL and LLGiveInventory can spawn unlimited number of instances
 	if(OBJ_SCRIPT == obj_type)
 	{
-		// If an Object spawns more-than-one floater, only the newest one is shown. 
-		// The previous is automatically closed.
-		script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+		static LLCachedControl<U32> script_dialog_limitations(gSavedSettings, "ScriptDialogLimitations", 0);
+		script_notification_map_t::const_iterator it = mNotifications.end();
+		switch (script_dialog_limitations)
+		{
+			case SCRIPT_PER_CHANNEL:
+			{
+				// If an Object spawns more-than-one floater per channel, only the newest one is shown.
+				// The previous is automatically closed.
+				LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+				if (notification)
+				{
+					it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+				}
+				break;
+			}
+			case SCRIPT_ATTACHMENT_PER_CHANNEL:
+			{
+				LLViewerObject* objectp = gObjectList.findObject(object_id);
+				if (objectp && objectp->getAttachmentItemID().notNull()) //in user inventory
+				{
+					LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+					if (notification)
+					{
+						it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+					}
+				}
+				else
+				{
+					it = findUsingObjectId(object_id);
+				}
+				break;
+			}
+			case SCRIPT_HUD_PER_CHANNEL:
+			{
+				LLViewerObject* objectp = gObjectList.findObject(object_id);
+				if (objectp && objectp->isHUDAttachment())
+				{
+					LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+					if (notification)
+					{
+						it = findUsingObjectIdAndChannel(object_id, notification->getPayload()["chat_channel"].asInteger());
+					}
+				}
+				else
+				{
+					it = findUsingObjectId(object_id);
+				}
+				break;
+			}
+			case SCRIPT_HUD_UNCONSTRAINED:
+			{
+				LLViewerObject* objectp = gObjectList.findObject(object_id);
+				if (objectp && objectp->isHUDAttachment())
+				{
+					// don't remove existing floaters
+					break;
+				}
+				else
+				{
+					it = findUsingObjectId(object_id);
+				}
+				break;
+			}
+			case SCRIPT_PER_OBJECT:
+			default:
+			{
+				// If an Object spawns more-than-one floater, only the newest one is shown.
+				// The previous is automatically closed.
+				it = findUsingObjectId(object_id);
+				break;
+			}
+		}
+
 		if(it != mNotifications.end())
 		{
 			LLChicletPanel * chiclet_panelp = LLChicletBar::getInstance()->getChicletPanel();
 			if (NULL != chiclet_panelp)
 			{
 				LLIMChiclet * chicletp = chiclet_panelp->findChiclet<LLIMChiclet>(it->first);
-				if(NULL != chicletp)
+				if (NULL != chicletp)
 				{
 					// Pass the new_message icon state further.
 					set_new_message = chicletp->getShowNewMessagesIcon();
@@ -383,7 +460,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 			}
 
 			LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->first);
-			if(floater)
+			if (floater)
 			{
 				// Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
 				set_new_message |= !floater->hasFocus();
@@ -579,6 +656,23 @@ LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloate
 	return mNotifications.end();
 }
 
+LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloaterManager::findUsingObjectIdAndChannel(const LLUUID& object_id, S32 im_channel)
+{
+	script_notification_map_t::const_iterator it = mNotifications.begin();
+	for (; mNotifications.end() != it; ++it)
+	{
+		if (object_id == it->second)
+		{
+			LLNotificationPtr notification = LLNotifications::instance().find(it->first);
+			if (notification && (im_channel == notification->getPayload()["chat_channel"].asInteger()))
+			{
+				return it;
+			}
+		}
+	}
+	return mNotifications.end();
+}
+
 void LLScriptFloaterManager::saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi)
 {
 	if(object_id.notNull())
@@ -612,6 +706,33 @@ void LLScriptFloaterManager::setFloaterVisible(const LLUUID& notification_id, bo
 	}
 }
 
+//static
+void LLScriptFloaterManager::clearScriptNotifications()
+{
+	LLScriptFloaterManager* inst = LLScriptFloaterManager::getInstance();
+	static const object_type_map TYPE_MAP = initObjectTypeMap();
+
+	script_notification_map_t::const_iterator ntf_it = inst->mNotifications.begin();
+	while (inst->mNotifications.end() != ntf_it)
+	{
+		LLUUID notification_id = ntf_it->first;
+		ntf_it++; // onRemoveNotification() erases notification
+		LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
+		if (notification)
+		{
+			object_type_map::const_iterator map_it = TYPE_MAP.find(notification->getName());
+			if (map_it != TYPE_MAP.end() && map_it->second == OBJ_SCRIPT)
+			{
+				if (notification != NULL && !notification->isCancelled())
+				{
+					LLNotificationsUtil::cancel(notification);
+				}
+				inst->onRemoveNotification(notification_id);
+			}
+		}
+	}
+}
+
 //////////////////////////////////////////////////////////////////
 
 bool LLScriptFloater::isScriptTextbox(LLNotificationPtr notification)
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index c0b84abdcb1f9eb6123a6b2524828f92914dddd7..0192a8893e11ac5b80135a4da42e550ae4e0c396 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -41,7 +41,7 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	// *TODO
 	// LLScriptFloaterManager and LLScriptFloater will need some refactoring after we 
 	// know how script notifications should look like.
-	LLSINGLETON_EMPTY_CTOR(LLScriptFloaterManager);
+	LLSINGLETON(LLScriptFloaterManager);
 public:
 
 	typedef enum e_object_type
@@ -53,6 +53,15 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 		OBJ_UNKNOWN
 	}EObjectType;
 
+	typedef enum e_limitation_type
+	{
+		SCRIPT_PER_OBJECT = 0,
+		SCRIPT_PER_CHANNEL = 1,
+		SCRIPT_ATTACHMENT_PER_CHANNEL,
+		SCRIPT_HUD_PER_CHANNEL,
+		SCRIPT_HUD_UNCONSTRAINED
+	}ELimitationType;
+
 	/**
 	 * Handles new notifications.
 	 * Saves notification and object ids, removes old notification if needed, creates script chiclet
@@ -104,6 +113,11 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 
 protected:
 
+	/**
+	 * Removes all script-dialog notifications
+	 */
+	static void clearScriptNotifications();
+
 	typedef std::map<std::string, EObjectType> object_type_map;
 
 	static object_type_map initObjectTypeMap();
@@ -112,6 +126,7 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	typedef std::map<LLUUID, LLUUID> script_notification_map_t;
 
 	script_notification_map_t::const_iterator findUsingObjectId(const LLUUID& object_id);
+	script_notification_map_t::const_iterator findUsingObjectIdAndChannel(const LLUUID& object_id, S32 im_channel);
 
 private:
 
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 3c58dd71946c225cd7bea922b63ca1c4df386fb8..43e7e5781448f29eca2afc151687163784c7a095 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -815,40 +815,49 @@ void LLSidepanelItemInfo::onCommitPermissions()
 	//LL_INFOS() << "LLSidepanelItemInfo::onCommitPermissions()" << LL_ENDL;
 	LLViewerInventoryItem* item = findItem();
 	if(!item) return;
+
+	BOOL is_group_owned;
+	LLUUID owner_id;
+	LLUUID group_id;
 	LLPermissions perm(item->getPermissions());
+	perm.getOwnership(owner_id, is_group_owned);
 
+	if (is_group_owned && gAgent.hasPowerInGroup(owner_id, GP_OBJECT_MANIPULATE))
+	{
+		group_id = owner_id;
+	}
 
 	LLCheckBoxCtrl* CheckShareWithGroup = getChild<LLCheckBoxCtrl>("CheckShareWithGroup");
 
 	if(CheckShareWithGroup)
 	{
-		perm.setGroupBits(gAgent.getID(), gAgent.getGroupID(),
+		perm.setGroupBits(gAgent.getID(), group_id,
 						CheckShareWithGroup->get(),
 						PERM_MODIFY | PERM_MOVE | PERM_COPY);
 	}
 	LLCheckBoxCtrl* CheckEveryoneCopy = getChild<LLCheckBoxCtrl>("CheckEveryoneCopy");
 	if(CheckEveryoneCopy)
 	{
-		perm.setEveryoneBits(gAgent.getID(), gAgent.getGroupID(),
+		perm.setEveryoneBits(gAgent.getID(), group_id,
 						 CheckEveryoneCopy->get(), PERM_COPY);
 	}
 
 	LLCheckBoxCtrl* CheckNextOwnerModify = getChild<LLCheckBoxCtrl>("CheckNextOwnerModify");
 	if(CheckNextOwnerModify)
 	{
-		perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+		perm.setNextOwnerBits(gAgent.getID(), group_id,
 							CheckNextOwnerModify->get(), PERM_MODIFY);
 	}
 	LLCheckBoxCtrl* CheckNextOwnerCopy = getChild<LLCheckBoxCtrl>("CheckNextOwnerCopy");
 	if(CheckNextOwnerCopy)
 	{
-		perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+		perm.setNextOwnerBits(gAgent.getID(), group_id,
 							CheckNextOwnerCopy->get(), PERM_COPY);
 	}
 	LLCheckBoxCtrl* CheckNextOwnerTransfer = getChild<LLCheckBoxCtrl>("CheckNextOwnerTransfer");
 	if(CheckNextOwnerTransfer)
 	{
-		perm.setNextOwnerBits(gAgent.getID(), gAgent.getGroupID(),
+		perm.setNextOwnerBits(gAgent.getID(), group_id,
 							CheckNextOwnerTransfer->get(), PERM_TRANSFER);
 	}
 	if(perm != item->getPermissions()
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
index a961f0e3b4cbc3e4f5ba6a699002bca644d06ddc..3ef89ba9201ce43f790995915dc0fb19ea838b98 100644
--- a/indra/newview/llsky.cpp
+++ b/indra/newview/llsky.cpp
@@ -51,6 +51,7 @@
 #include "llvosky.h"
 #include "llcubemap.h"
 #include "llviewercontrol.h"
+#include "llenvmanager.h"
 
 #include "llvowlsky.h"
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 0a85344025be77ef164ec8f110ec7715ba64caef..33b6352bf509dbbc8c2f0239462dc80d3f873aed 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1462,6 +1462,7 @@ bool idle_startup()
 		LLGLState::checkStates();
 		LLGLState::checkTextureChannels();
 
+		LLEnvManagerNew::getInstance()->usePrefs(); // Load all presets and settings
 		gSky.init(initial_sun_direction);
 
 		LLGLState::checkStates();
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 49d29c0e4e766c85d935c25bb23ed6a131732225..01b4fcfbe170c5cf64892bdc16fc84cde5b8cfde 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -53,6 +53,8 @@
 
 void dialog_refresh_all();
 
+static const U32 LL_ASSET_UPLOAD_TIMEOUT_SEC = 60;
+
 LLResourceUploadInfo::LLResourceUploadInfo(LLTransactionID transactId,
         LLAssetType::EType assetType, std::string name, std::string description,
         S32 compressionInfo, LLFolderType::EType destinationType,
@@ -678,6 +680,8 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
     const LLUUID &id, std::string url, LLResourceUploadInfo::ptr_t uploadInfo)
 {
     LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
+    LLCore::HttpOptions::ptr_t httpOptions(new LLCore::HttpOptions);
+    httpOptions->setTimeout(LL_ASSET_UPLOAD_TIMEOUT_SEC);
 
     LLSD result = uploadInfo->prepareUpload();
     uploadInfo->logPreparedUpload();
@@ -699,7 +703,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
 
     LLSD body = uploadInfo->generatePostBody();
 
-    result = httpAdapter->postAndSuspend(httpRequest, url, body);
+    result = httpAdapter->postAndSuspend(httpRequest, url, body, httpOptions);
 
     LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
     LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
@@ -717,7 +721,7 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
     bool success = false;
     if (!uploader.empty() && uploadInfo->getAssetId().notNull())
     {
-        result = httpAdapter->postFileAndSuspend(httpRequest, uploader, uploadInfo->getAssetId(), uploadInfo->getAssetType());
+        result = httpAdapter->postFileAndSuspend(httpRequest, uploader, uploadInfo->getAssetId(), uploadInfo->getAssetType(), httpOptions);
         httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
         status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
 
@@ -811,14 +815,19 @@ void LLViewerAssetUpload::HandleUploadError(LLCore::HttpStatus status, LLSD &res
     }
     else
     {
-        if (status.getType() == 499)
-        {
-            reason = "The server is experiencing unexpected difficulties.";
-        }
-        else
+        switch (status.getType())
         {
-            reason = "Error in upload request.  Please visit "
-                "http://secondlife.com/support for help fixing this problem.";
+        case 404:
+            reason = LLTrans::getString("AssetUploadServerUnreacheble");
+            break;
+        case 499:
+            reason = LLTrans::getString("AssetUploadServerDifficulties");
+            break;
+        case 503:
+            reason = LLTrans::getString("AssetUploadServerUnavaliable");
+            break;
+        default:
+            reason = LLTrans::getString("AssetUploadRequestInvalid");
         }
     }
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index cf18299b0b54b931a1797d7937811c097dbca8f3..0ebacddd9b175f98017d7bc58cc51b158e41f21c 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -83,6 +83,7 @@
 #include "llfloaterlagmeter.h"
 #include "llfloaterland.h"
 #include "llfloaterlandholdings.h"
+#include "llfloaterlinkreplace.h"
 #include "llfloaterloadprefpreset.h"
 #include "llfloatermap.h"
 #include "llfloatermarketplacelistings.h"
@@ -103,6 +104,7 @@
 #include "llfloaterperms.h"
 #include "llfloaterpostprocess.h"
 #include "llfloaterpreference.h"
+#include "llfloaterpreviewtrash.h"
 #include "llfloaterproperties.h"
 #include "llfloaterregiondebugconsole.h"
 #include "llfloaterregioninfo.h"
@@ -257,6 +259,7 @@ void LLViewerFloaterReg::registerFloaters()
 	
 	LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>);
 	LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
+	LLFloaterReg::add("linkreplace", "floater_linkreplace.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLinkReplace>);
 	LLFloaterReg::add("load_pref_preset", "floater_load_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLoadPrefPreset>);
 	
 	LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>);
@@ -307,6 +310,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("preview_scriptedit", "floater_live_lsleditor.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLLiveLSLEditor>, "preview");
 	LLFloaterReg::add("preview_sound", "floater_preview_sound.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewSound>, "preview");
 	LLFloaterReg::add("preview_texture", "floater_preview_texture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewTexture>, "preview");
+	LLFloaterReg::add("preview_trash", "floater_preview_trash.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreviewTrash>);
 	LLFloaterReg::add("properties", "floater_inventory_item_properties.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterProperties>);
 	LLFloaterReg::add("publish_classified", "floater_publish_classified.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPublishClassifiedFloater>);
 	LLFloaterReg::add("save_pref_preset", "floater_save_pref_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSavePrefPreset>);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ab76653ba65e664853b9dd58250e6eceb9ae63f0..507087d1ae9237624a3c08e51c7eb71a4fa7630f 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -6042,7 +6042,14 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
                 return LLMarketplaceData::instance().getListing(llsdBlock["listing_id"].asInteger());
             }
         }
-        
+
+		// Error Notification can come with and without reason
+		if (notificationID == "JoinGroupError" && llsdBlock.has("reason"))
+		{
+			LLNotificationsUtil::add("JoinGroupErrorReason", llsdBlock);
+			return true;
+		}
+
 		LLNotificationsUtil::add(notificationID, llsdBlock);
 		return true;
 	}	
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 45dbd95bea8205f1adc6d96ffdd2a76f90a7e9b2..1d6daed9cc0b832f02a6b4d6ef990a13dc8c512a 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -6274,6 +6274,24 @@ BOOL	LLViewerObject::isTempAttachment() const
 	return (mID.notNull() && (mID == mAttachmentItemID));
 }
 
+BOOL LLViewerObject::isHiglightedOrBeacon() const
+{
+	if (LLFloaterReg::instanceVisible("beacons") && (gPipeline.getRenderBeacons(NULL) || gPipeline.getRenderHighlights(NULL)))
+	{
+		BOOL has_media = (getMediaType() == LLViewerObject::MEDIA_SET);
+		BOOL is_scripted = !isAvatar() && !getParent() && flagScripted();
+		BOOL is_physical = !isAvatar() && flagUsePhysics();
+
+		return (isParticleSource() && gPipeline.getRenderParticleBeacons(NULL))
+				|| (isAudioSource() && gPipeline.getRenderSoundBeacons(NULL))
+				|| (has_media && gPipeline.getRenderMOAPBeacons(NULL))
+				|| (is_scripted && gPipeline.getRenderScriptedBeacons(NULL))
+				|| (is_scripted && flagHandleTouch() && gPipeline.getRenderScriptedTouchBeacons(NULL))
+				|| (is_physical && gPipeline.getRenderPhysicalBeacons(NULL));
+	}
+	return FALSE;
+}
+
 
 const LLUUID &LLViewerObject::getAttachmentItemID() const
 {
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 1e8f3f4ec2d5755e15153caa3d185c3867a97ac0..24fcf0517ec8f0975f8819ca6d044f88c0979e8c 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -178,6 +178,8 @@ class LLViewerObject
 	virtual BOOL	isHUDAttachment() const { return FALSE; }
 	virtual BOOL	isTempAttachment() const;
 
+	virtual BOOL isHiglightedOrBeacon() const;
+
 	virtual void 	updateRadius() {};
 	virtual F32 	getVObjRadius() const; // default implemenation is mDrawable->getRadius()
 	
@@ -388,7 +390,7 @@ class LLViewerObject
 
 	 // Create if necessary
 	LLAudioSource *getAudioSource(const LLUUID& owner_id);
-	bool isAudioSource() {return mAudioSourcep != NULL;}
+	BOOL isAudioSource() const {return mAudioSourcep != NULL;}
 
 	U8 getMediaType() const;
 	void setMediaType(U8 media_type);
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 2a126c9f01adfc50f83d122d430961214bb5e04f..a61181badacf39613fa81fe765b3d496ef461d84 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1427,122 +1427,128 @@ void LLViewerParcelMgr::processParcelOverlay(LLMessageSystem *msg, void **user)
 // static
 void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **user)
 {
-	S32		request_result;
-	S32		sequence_id;
-	BOOL	snap_selection = FALSE;
-	S32		self_count = 0;
-	S32		other_count = 0;
-	S32		public_count = 0;
-	S32		local_id;
-	LLUUID	owner_id;
-	BOOL	is_group_owned;
-	U32 auction_id = 0;
-	S32		claim_price_per_meter = 0;
-	S32		rent_price_per_meter = 0;
-	S32		claim_date = 0;
-	LLVector3	aabb_min;
-	LLVector3	aabb_max;
-	S32		area = 0;
-	S32		sw_max_prims = 0;
-	S32		sw_total_prims = 0;
-	//LLUUID	buyer_id;
-	U8 status = 0;
-	S32		max_prims = 0;
-	S32		total_prims = 0;
-	S32		owner_prims = 0;
-	S32		group_prims = 0;
-	S32		other_prims = 0;
-	S32		selected_prims = 0;
-	F32		parcel_prim_bonus = 1.f;
-	BOOL	region_push_override = false;
-	BOOL	region_deny_anonymous_override = false;
-	BOOL	region_deny_identified_override = false; // Deprecated
-	BOOL	region_deny_transacted_override = false; // Deprecated
-	BOOL	region_deny_age_unverified_override = false;
+    S32		request_result;
+    S32		sequence_id;
+    BOOL	snap_selection = FALSE;
+    S32		self_count = 0;
+    S32		other_count = 0;
+    S32		public_count = 0;
+    S32		local_id;
+    LLUUID	owner_id;
+    BOOL	is_group_owned;
+    U32 auction_id = 0;
+    S32		claim_price_per_meter = 0;
+    S32		rent_price_per_meter = 0;
+    S32		claim_date = 0;
+    LLVector3	aabb_min;
+    LLVector3	aabb_max;
+    S32		area = 0;
+    S32		sw_max_prims = 0;
+    S32		sw_total_prims = 0;
+    //LLUUID	buyer_id;
+    U8 status = 0;
+    S32		max_prims = 0;
+    S32		total_prims = 0;
+    S32		owner_prims = 0;
+    S32		group_prims = 0;
+    S32		other_prims = 0;
+    S32		selected_prims = 0;
+    F32		parcel_prim_bonus = 1.f;
+    BOOL	region_push_override = false;
+    BOOL	region_deny_anonymous_override = false;
+    BOOL	region_deny_identified_override = false; // Deprecated
+    BOOL	region_deny_transacted_override = false; // Deprecated
+    BOOL	region_deny_age_unverified_override = false;
+    BOOL    region_allow_access_override = true;
     BOOL	agent_parcel_update = false; // updating previous(existing) agent parcel
 
-	S32		other_clean_time = 0;
+    S32		other_clean_time = 0;
 
-	LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
+    LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
 
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id );
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id);
 
-	if (request_result == PARCEL_RESULT_NO_DATA)
-	{
-		// no valid parcel data
-		LL_INFOS() << "no valid parcel data" << LL_ENDL;
-		return;
-	}
-
-	// Decide where the data will go.
-	LLParcel* parcel = NULL;
-	if (sequence_id == SELECTED_PARCEL_SEQ_ID)
-	{
-		// ...selected parcels report this sequence id
-		parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = parcel_mgr.mCurrentParcel;
-	}
-	else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
-	{
-		parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = parcel_mgr.mHoverParcel;
-	}
-	else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
-			 sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
-			 sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
-	{
-		parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = parcel_mgr.mCollisionParcel;
-	}
-	else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
-	{
-		// new agent parcel
-		parcel_mgr.mAgentParcelSequenceID = sequence_id;
-		parcel = parcel_mgr.mAgentParcel;
-	}
-	else
-	{
-		LL_INFOS() << "out of order agent parcel sequence id " << sequence_id
-			<< " last good " << parcel_mgr.mAgentParcelSequenceID
-			<< LL_ENDL;
-		return;
-	}
-
-	msg->getBOOL("ParcelData", "SnapSelection", snap_selection);
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelfCount, self_count);
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherCount, other_count);
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_PublicCount, public_count);
-	msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_LocalID,		local_id );
-	msg->getUUIDFast(_PREHASH_ParcelData, _PREHASH_OwnerID,		owner_id);
-	msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_IsGroupOwned, is_group_owned);
-	msg->getU32Fast(_PREHASH_ParcelData, _PREHASH_AuctionID, auction_id);
-	msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_ClaimDate,	claim_date);
-	msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_ClaimPrice,	claim_price_per_meter);
-	msg->getS32Fast( _PREHASH_ParcelData, _PREHASH_RentPrice,	rent_price_per_meter);
-	msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMin, aabb_min);
-	msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMax, aabb_max);
-	msg->getS32Fast(	_PREHASH_ParcelData, _PREHASH_Area, area );
-	//msg->getUUIDFast(	_PREHASH_ParcelData, _PREHASH_BuyerID, buyer_id);
-	msg->getU8("ParcelData", "Status", status);
-	msg->getS32("ParcelData", "SimWideMaxPrims", sw_max_prims );
-	msg->getS32("ParcelData", "SimWideTotalPrims", sw_total_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_MaxPrims, max_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_TotalPrims, total_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OwnerPrims, owner_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_GroupPrims, group_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherPrims, other_prims );
-	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelectedPrims, selected_prims );
-	msg->getF32Fast(_PREHASH_ParcelData, _PREHASH_ParcelPrimBonus, parcel_prim_bonus );
-	msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionPushOverride, region_push_override );
-	msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyAnonymous, region_deny_anonymous_override );
-	msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override ); // Deprecated
-	msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override ); // Deprecated
-	if (msg->getNumberOfBlocksFast(_PREHASH_AgeVerificationBlock))
-	{
-		// this block was added later and may not be on older sims, so we have to test its existence first
-		msg->getBOOLFast(_PREHASH_AgeVerificationBlock, _PREHASH_RegionDenyAgeUnverified, region_deny_age_unverified_override );
-	}
+    if (request_result == PARCEL_RESULT_NO_DATA)
+    {
+        // no valid parcel data
+        LL_INFOS() << "no valid parcel data" << LL_ENDL;
+        return;
+    }
+
+    // Decide where the data will go.
+    LLParcel* parcel = NULL;
+    if (sequence_id == SELECTED_PARCEL_SEQ_ID)
+    {
+        // ...selected parcels report this sequence id
+        parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
+        parcel = parcel_mgr.mCurrentParcel;
+    }
+    else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
+    {
+        parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+        parcel = parcel_mgr.mHoverParcel;
+    }
+    else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
+        sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
+        sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
+    {
+        parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+        parcel = parcel_mgr.mCollisionParcel;
+    }
+    else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
+    {
+        // new agent parcel
+        parcel_mgr.mAgentParcelSequenceID = sequence_id;
+        parcel = parcel_mgr.mAgentParcel;
+    }
+    else
+    {
+        LL_INFOS() << "out of order agent parcel sequence id " << sequence_id
+            << " last good " << parcel_mgr.mAgentParcelSequenceID
+            << LL_ENDL;
+        return;
+    }
+
+    msg->getBOOL("ParcelData", "SnapSelection", snap_selection);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelfCount, self_count);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherCount, other_count);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_PublicCount, public_count);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_LocalID, local_id);
+    msg->getUUIDFast(_PREHASH_ParcelData, _PREHASH_OwnerID, owner_id);
+    msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_IsGroupOwned, is_group_owned);
+    msg->getU32Fast(_PREHASH_ParcelData, _PREHASH_AuctionID, auction_id);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_ClaimDate, claim_date);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_ClaimPrice, claim_price_per_meter);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RentPrice, rent_price_per_meter);
+    msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMin, aabb_min);
+    msg->getVector3Fast(_PREHASH_ParcelData, _PREHASH_AABBMax, aabb_max);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_Area, area);
+    //msg->getUUIDFast(	_PREHASH_ParcelData, _PREHASH_BuyerID, buyer_id);
+    msg->getU8("ParcelData", "Status", status);
+    msg->getS32("ParcelData", "SimWideMaxPrims", sw_max_prims);
+    msg->getS32("ParcelData", "SimWideTotalPrims", sw_total_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_MaxPrims, max_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_TotalPrims, total_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OwnerPrims, owner_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_GroupPrims, group_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_OtherPrims, other_prims);
+    msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SelectedPrims, selected_prims);
+    msg->getF32Fast(_PREHASH_ParcelData, _PREHASH_ParcelPrimBonus, parcel_prim_bonus);
+    msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionPushOverride, region_push_override);
+    msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyAnonymous, region_deny_anonymous_override);
+    msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyIdentified, region_deny_identified_override); // Deprecated
+    msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_RegionDenyTransacted, region_deny_transacted_override); // Deprecated
+    if (msg->getNumberOfBlocksFast(_PREHASH_AgeVerificationBlock))
+    {
+        // this block was added later and may not be on older sims, so we have to test its existence first
+        msg->getBOOLFast(_PREHASH_AgeVerificationBlock, _PREHASH_RegionDenyAgeUnverified, region_deny_age_unverified_override);
+    }
+
+    if (msg->getNumberOfBlocks(_PREHASH_RegionAllowAccessBlock))
+    {
+        msg->getBOOLFast(_PREHASH_RegionAllowAccessBlock, _PREHASH_RegionAllowAccessOverride, region_allow_access_override);
+    }
 
 	msg->getS32("ParcelData", "OtherCleanTime", other_clean_time );
 
@@ -1585,6 +1591,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 		parcel->setRegionPushOverride(region_push_override);
 		parcel->setRegionDenyAnonymousOverride(region_deny_anonymous_override);
 		parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override);
+        parcel->setRegionAllowAccessOverride(region_allow_access_override);
 		parcel->unpackMessage(msg);
 
 		if (parcel == parcel_mgr.mAgentParcel)
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 9e09971ced3cb2ebe7eece7b605f38434817d85a..7d2d6e25c79ed08d8314408e49bfb49bae9c76a1 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -176,7 +176,7 @@ class LLEmbeddedItemSegment : public LLTextSegment
 		mToolTip = inv_item->getName() + '\n' + inv_item->getDescription();
 	}
 
-	/*virtual*/ bool getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const
+	/*virtual*/ bool getDimensionsF32(S32 first_char, S32 num_chars, F32& width, S32& height) const
 	{
 		if (num_chars == 0)
 		{
@@ -185,7 +185,7 @@ class LLEmbeddedItemSegment : public LLTextSegment
 		}
 		else
 		{
-			width = EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidth(mLabel.c_str());
+			width = EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidthF32(mLabel.c_str());
 			height = llmax(mImage->getHeight(), mStyle->getFont()->getLineHeight());
 		}
 		return false;
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f6a16f7da1af3d400fd6ec8828ab0d54c5b70149..3968266c277bf9abd4f9d8e45126dab2a41ea6a1 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -119,7 +119,7 @@ const F32 MAX_HOVER_Z = 2.0;
 const F32 MIN_HOVER_Z = -2.0;
 
 const F32 MIN_ATTACHMENT_COMPLEXITY = 0.f;
-const F32 MAX_ATTACHMENT_COMPLEXITY = 1.0e6f;
+const F32 DEFAULT_MAX_ATTACHMENT_COMPLEXITY = 1.0e6f;
 
 using namespace LLAvatarAppearanceDefines;
 
@@ -9018,6 +9018,9 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
      * the official viewer for consideration.
      *****************************************************************/
 	static const U32 COMPLEXITY_BODY_PART_COST = 200;
+	static LLCachedControl<F32> max_complexity_setting(gSavedSettings,"MaxAttachmentComplexity");
+	F32 max_attachment_complexity = max_complexity_setting;
+	max_attachment_complexity = llmax(max_attachment_complexity, DEFAULT_MAX_ATTACHMENT_COMPLEXITY);
 
 	// Diagnostic list of all textures on our avatar
 	static std::set<LLUUID> all_textures;
@@ -9099,7 +9102,7 @@ void LLVOAvatar::calculateUpdateRenderComplexity()
                                                    << " children: " << attachment_children_cost
                                                    << LL_ENDL;
                             // Limit attachment complexity to avoid signed integer flipping of the wearer's ACI
-                            cost += (U32)llclamp(attachment_total_cost, MIN_ATTACHMENT_COMPLEXITY, MAX_ATTACHMENT_COMPLEXITY);
+                            cost += (U32)llclamp(attachment_total_cost, MIN_ATTACHMENT_COMPLEXITY, max_attachment_complexity);
 						}
 					}
 				}
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 657babd92cc8bfc89a7bc5401f3a792506f7a3ac..90ba814a157f10475855da6f66cabb2b79de6210 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3977,7 +3977,7 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a&
 			start_face = face;
 			end_face = face+1;
 		}
-
+		pick_transparent |= isHiglightedOrBeacon();
 		bool special_cursor = specialHoverCursor();
 		for (S32 i = start_face; i < end_face; ++i)
 		{
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
index 28ae569ba2ac46714449159cdd5a2cb2a74fafaa..b484b6d70962dec919ef253a8a6c350c62d5c5b2 100644
--- a/indra/newview/llwaterparammanager.cpp
+++ b/indra/newview/llwaterparammanager.cpp
@@ -427,7 +427,6 @@ void LLWaterParamManager::initSingleton()
 {
 	LL_DEBUGS("Windlight") << "Initializing water" << LL_ENDL;
 	loadAllPresets();
-	LLEnvManagerNew::instance().usePrefs();
 }
 
 // static
diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp
index 2b6d88efef7ecc2b5e98fd9cd3e2eea3b0c32e09..4b4393b07b9996341347af02dde54f58cc2b73f5 100644
--- a/indra/newview/llwlparammanager.cpp
+++ b/indra/newview/llwlparammanager.cpp
@@ -50,8 +50,6 @@
 #include "llagent.h"
 #include "llviewerregion.h"
 
-#include "lldaycyclemanager.h"
-#include "llenvmanager.h"
 #include "llwlparamset.h"
 #include "llpostprocess.h"
 
@@ -252,13 +250,13 @@ void LLWLParamManager::addAllSkies(const LLWLParamKey::EScope scope, const LLSD&
 	}
 }
 
-void LLWLParamManager::refreshRegionPresets()
+void LLWLParamManager::refreshRegionPresets(const LLSD& region_sky_presets)
 {
 	// Remove all region sky presets because they may belong to a previously visited region.
 	clearParamSetsOfScope(LLEnvKey::SCOPE_REGION);
 
 	// Add all sky presets belonging to the current region.
-	addAllSkies(LLEnvKey::SCOPE_REGION, LLEnvManagerNew::instance().getRegionSettings().getSkyMap());
+	addAllSkies(LLEnvKey::SCOPE_REGION, region_sky_presets);
 }
 
 void LLWLParamManager::loadAllPresets()
@@ -487,6 +485,11 @@ bool LLWLParamManager::applyDayCycleParams(const LLSD& params, LLEnvKey::EScope
 	return true;
 }
 
+void LLWLParamManager::setDefaultDay()
+{
+	mDay.loadDayCycleFromFile("Default.xml");
+}
+
 bool LLWLParamManager::applySkyParams(const LLSD& params)
 {
 	mAnimator.deactivate();
@@ -494,6 +497,12 @@ bool LLWLParamManager::applySkyParams(const LLSD& params)
 	return true;
 }
 
+void LLWLParamManager::setDefaultSky()
+{
+	getParamSet(LLWLParamKey("Default", LLWLParamKey::SCOPE_LOCAL), mCurParams);
+}
+
+
 void LLWLParamManager::resetAnimator(F32 curTime, bool run)
 {
 	mAnimator.setTrack(mDay.mTimeMap, mDay.mDayRate, 
@@ -672,34 +681,8 @@ void LLWLParamManager::initSingleton()
 
 	loadAllPresets();
 
-	// load the day
-	std::string preferred_day = LLEnvManagerNew::instance().getDayCycleName();
-	if (!LLDayCycleManager::instance().getPreset(preferred_day, mDay))
-	{
-		// Fall back to default.
-		LL_WARNS() << "No day cycle named " << preferred_day << ", falling back to defaults" << LL_ENDL;
-		mDay.loadDayCycleFromFile("Default.xml");
-
-		// *TODO: Fix user preferences accordingly.
-	}
-
-	// *HACK - sets cloud scrolling to what we want... fix this better in the future
-	std::string sky = LLEnvManagerNew::instance().getSkyPresetName();
-	if (!getParamSet(LLWLParamKey(sky, LLWLParamKey::SCOPE_LOCAL), mCurParams))
-	{
-		LL_WARNS() << "No sky preset named " << sky << ", falling back to defaults" << LL_ENDL;
-		getParamSet(LLWLParamKey("Default", LLWLParamKey::SCOPE_LOCAL), mCurParams);
-
-		// *TODO: Fix user preferences accordingly.
-	}
-
-	// set it to noon
-	resetAnimator(0.5, LLEnvManagerNew::instance().getUseDayCycle());
-
 	// but use linden time sets it to what the estate is
 	mAnimator.setTimeType(LLWLAnimator::TIME_LINDEN);
-
-	LLEnvManagerNew::instance().usePrefs();
 }
 
 // static
diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h
index a10102edf786fdb9102acecfb8efedb51b90ec50..a8029839a7688794f137e9bf84b5633098b1456b 100644
--- a/indra/newview/llwlparammanager.h
+++ b/indra/newview/llwlparammanager.h
@@ -29,7 +29,6 @@
 
 #include <list>
 #include <map>
-#include "llenvmanager.h"
 #include "llwlparamset.h"
 #include "llwlanimator.h"
 #include "llwldaycycle.h"
@@ -240,9 +239,14 @@ class LLWLParamManager : public LLSingleton<LLWLParamManager>
 	/// apply specified day cycle, setting time to noon by default
 	bool applyDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time = 0.5);
 
+	/// Apply Default.xml map
+	void setDefaultDay();
+
 	/// apply specified fixed sky params
 	bool applySkyParams(const LLSD& params);
 
+	void setDefaultSky();
+
 	// get where the light is pointing
 	inline LLVector4 getLightDir(void) const;
 
@@ -302,7 +306,7 @@ class LLWLParamManager : public LLSingleton<LLWLParamManager>
 	void addAllSkies(LLEnvKey::EScope scope, const LLSD& preset_map);
 
 	/// refresh region-scope presets
-	void refreshRegionPresets();
+	void refreshRegionPresets(const LLSD& region_sky_presets);
 
 	// returns all skies referenced by the current day cycle (in mDay), with their final names
 	// side effect: applies changes to all internal structures!  (trashes all unreferenced skies in scope, keys in day cycle rescoped to scope, etc.)
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index 07f297cf0ad4f90e8ca21fd78014c5bec3e87fcc..fbd75618ca93e56ae452deafdc0ff4bdcad8c33b 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -449,7 +449,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			<spinner label="Online-Zeit:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Immer erlauben" name="AllowedText">
-					Zulässige Einwohner ([COUNT])
+					Zulässige Einwohner ([COUNT], max. [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/>
 				<button label="Hinzufügen" name="add_allowed"/>
@@ -457,7 +457,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Verbannen" name="BanCheck">
-					Verbannte Einwohner ([COUNT])
+					Verbannte Einwohner ([COUNT], max. [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] aufgeführt, [MAX] max)"/>
 				<button label="Hinzufügen" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e73ace4296bdd475b0be5c826e357b29f7d18b67
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="EINSTELLUNGEN ZUR DARSTELLUNG VON AVATAREN">
+	<string name="av_never_render" value="Nie"/>
+	<string name="av_always_render" value="Immer"/>
+	<filter_editor label="Nach Personen filtern" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Aktionen für ausgewählte Person"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Name" name="name"/>
+		<name_list.columns label="Darstellungseinstellung" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_flickr.xml b/indra/newview/skins/default/xui/de/floater_flickr.xml
index b50fa19ec8e3da8a96bceaf9fd10782cab399da3..525d015c2ba4b031d1d0f4c355710ca0b579b318 100644
--- a/indra/newview/skins/default/xui/de/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/de/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="AUF FLICKR HOCHLADEN">
+<floater name="floater_flickr" title="AUF FLICKR TEILEN">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml
index 3624c4c9689f8a0709e5ca23870c9f3ccfa2c871..a4f6df515d8b77c9ea6180551870a5b0ec6bd3e4 100644
--- a/indra/newview/skins/default/xui/de/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/de/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Privatsphäre" name="im"/>
 		<panel label="Konfiguration" name="input"/>
 		<panel label="Erweitert" name="advanced1"/>
+		<panel label="Uploads" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml
index 0193cf619d3dc2ec3410ef6199020931e413c6f5..6fee9b5204056cd693b6c9f12446486e46eb0225 100644
--- a/indra/newview/skins/default/xui/de/floater_tos.xml
+++ b/indra/newview/skins/default/xui/de/floater_tos.xml
@@ -13,6 +13,6 @@
 		Lesen Sie die folgenden Servicebedingungen und Datenbestimmungen sorgfältig durch. Sie müssen den Servicebedingungen zustimmen, um sich bei [SECOND_LIFE] anmelden zu können.
 	</text>
 	<text name="external_tos_required">
-		Sie müssen sich auf my.secondlife.com anmelden und die Servicebedingungen akzeptieren, bevor Sie fortfahren können. Vielen Dank!
+		Sie müssen sich unter https://my.secondlife.com anmelden und die Servicebedingungen akzeptieren, bevor Sie fortfahren können. Vielen Dank!
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_other.xml b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
index e0f0ea72ed0391885d25218e8615d3d244e463c4..7d8fc9a1f603feafa58557ece9dcd12071a73013 100644
--- a/indra/newview/skins/default/xui/de/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
 	<menu_item_call label="Bezahlen" name="Pay..."/>
 	<menu_item_call label="Objektprofil" name="Object Inspect"/>
-	<menu_item_check label="Normal darstellen" name="RenderNormally"/>
-	<menu_item_check label="Nicht darstellen" name="DoNotRender"/>
-	<menu_item_check label="Komplett darstellen" name="AlwaysRenderFully"/>
+	<context_menu label="Avatar darstellen" name="Render Avatar">
+		<menu_item_check label="Standard" name="RenderNormally"/>
+		<menu_item_check label="Immer" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nie" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_other.xml b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
index 9c24dc21991d168ae61ad128f14c15125d7822a8..9bfab36f763e53f2a80a6127eb7d115809626bde 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="XML ausgeben" name="Dump XML"/>
 	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
 	<menu_item_call label="Bezahlen" name="Pay..."/>
-	<menu_item_check label="Normal darstellen" name="RenderNormally"/>
-	<menu_item_check label="Nicht darstellen" name="DoNotRender"/>
-	<menu_item_check label="Komplett darstellen" name="AlwaysRenderFully"/>
+	<context_menu label="Avatar darstellen" name="Render Avatar">
+		<menu_item_check label="Standard" name="RenderNormally"/>
+		<menu_item_check label="Immer" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nie" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Partikeleigentümer blockieren" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d8498e77cf85ae42ca3e29f7db4f6d26cc7b377
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Standard" name="default"/>
+	<menu_item_check label="Immer darstellen" name="always_render"/>
+	<menu_item_check label="Nie darstellen" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..01125c0799a158fc0284002ea709cc24ab80b4f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Einwohner immer darstellen..." name="add_avatar_always_render"/>
+	<menu_item_call label="Einwohner nie darstellen..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
index 953c0eeed579161f40c165931fcb8f762bd50218..c3e6e94e51a05dc8243f85c3d5d027856c3175af 100644
--- a/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Zu Favoriten hinzufügen/daraus entfernen" name="activate"/>
+	<menu_item_call label="Ausgewählte Geste aktivieren/deaktivieren" name="activate"/>
 	<menu_item_call label="Kopieren" name="copy_gesture"/>
 	<menu_item_call label="Einfügen" name="paste"/>
 	<menu_item_call label="UUID kopieren" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml
index e1f545adfc22b8884dfd3b7bffcbe463c4153a03..178f8f65893fbc3a95488842b3f078abbc011824 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Neues Haar" name="New Hair"/>
 		<menu_item_call label="Neue Augen" name="New Eyes"/>
 	</menu>
+	<menu label="Als Standard verwenden für" name="upload_def">
+		<menu_item_call label="Hochgeladene Bilder" name="Image uploads"/>
+		<menu_item_call label="Hochgeladene Sounds" name="Sound uploads"/>
+		<menu_item_call label="Hochgeladene Animationen" name="Animation uploads"/>
+		<menu_item_call label="Hochgeladene Modelle" name="Model uploads"/>
+	</menu>
 	<menu label="Typ ändern" name="Change Type">
 		<menu_item_call label="Standard" name="Default"/>
 		<menu_item_call label="Handschuhe" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/>
 	<menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/>
 	<menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/>
+	<menu_item_call label="Outfitliste in Zwischenablage kopieren" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Original suchen" name="Find Original"/>
 	<menu_item_call label="Objekt löschen" name="Purge Item"/>
 	<menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Kopieren" name="Copy"/>
 	<menu_item_call label="Einfügen" name="Paste"/>
 	<menu_item_call label="Als Link einfügen" name="Paste As Link"/>
-	<menu_item_call label="Löschen" name="Remove Link"/>
 	<menu_item_call label="Löschen" name="Delete"/>
 	<menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
 	<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Bearbeiten" name="Wearable Edit"/>
 	<menu_item_call label="Hinzufügen" name="Wearable Add"/>
 	<menu_item_call label="Ausziehen" name="Take Off"/>
-	<menu_item_call label="In Händler-Outbox kopieren" name="Merchant Copy"/>
 	<menu_item_call label="In Marktplatz-Auflistungen kopieren" name="Marketplace Copy"/>
 	<menu_item_call label="In Marktplatz-Auflistungen verschieben" name="Marketplace Move"/>
 	<menu_item_call label="--keine Optionen--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index ff21f079432de5e530e3c666b1d9bd562270d90f..69856c0852bcacda47ae5da62d663c59f6cfaa61 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Ich" name="File">
 		<menu_item_call label="Einstellungen..." name="Preferences..."/>
+		<menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Hilfe" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="Fehler" name="Error"/>
 			<menu_item_check label="Keine" name="None"/>
 		</menu>
-		<menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
 		<menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
index f69a453e58c89ba29d02a02ef62a831764615c11..4508465d25e3199d3444468fd36f92b78a172c04 100644
--- a/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Nicht mehr ignorieren" name="unblock"/>
+	<menu_item_check label="Voice ignorieren" name="BlockVoice"/>
+	<menu_item_check label="Text ignorieren" name="MuteText"/>
+	<menu_item_check label="Objektsounds ignorieren" name="BlockObjectSounds"/>
 	<menu_item_call label="Profil..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index db57e416611b2b2a3db18111c10693358b93fd38..2a8eaf26ec4be48ef6665ef4d9f8c4ef04ab9dd2 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="Kein Voice-Morphing" name="NoVoiceMorphing"/>
 			<menu_item_check label="Vorschau..." name="Preview"/>
 			<menu_item_call label="Abonnieren..." name="Subscribe"/>
+			<menu_item_call label="Premium-Vorteil..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Gesten..." name="Gestures"/>
 		<menu_item_check label="Freunde" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="Ziele..." name="Destinations"/>
 		<menu_item_check label="Karte" name="World Map"/>
 		<menu_item_check label="Minikarte" name="Mini-Map"/>
-		<menu_item_check label="Suchen" name="Search"/>
+		<menu_item_call label="Events" name="Events"/>
+		<menu_item_check label="Suchen..." name="Search"/>
 		<menu_item_call label="Nach Hause teleportieren" name="Teleport Home"/>
 		<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="Kopie nehmen" name="Take Copy"/>
 			<menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Objekt zurückgeben" name="Return Object back to Owner"/>
+			<menu_item_call label="Duplizieren" name="DuplicateObject"/>
 		</menu>
 		<menu label="Skripts" name="Scripts">
+			<menu_item_check label="Skriptwarnungen/Fehler..." name="Script debug"/>
 			<menu_item_call label="Skripts rekompilieren (Mono)" name="Mono"/>
 			<menu_item_call label="Skripts rekompilieren (LSL)" name="LSL"/>
 			<menu_item_call label="Skripts zurücksetzen" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index c7ba67ccd5e93672118bcd66f6e74c4001530189..93f05e38ed3ab8ba38537f86d441edff7becaa7c 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -144,8 +144,7 @@ Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschl
 	<notification name="MerchantTransactionFailed">
 		Marktplatztransaktion fehlgeschlagen mit Fehler:
         
-        Grund: „[ERROR_REASON]“
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -769,6 +768,9 @@ Stellen Sie sicher, dass kein Objekt gesperrt ist und alle Objekte Ihnen gehöre
 	<notification name="CannotLinkPermanent">
 		Objekte können nicht über Regionsgrenzen hinweg verknüpft werden.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Objekte können nicht über Regionsgrenzen hinweg verknüpft werden.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Verknüpfung nicht möglich, da nicht alle Objekte denselben Eigentümer haben.
 
@@ -1798,7 +1800,6 @@ Diese Gruppe verlassen?
 		Nicht-stören-Modus ist aktiviert:  Sie erhalten keine Benachrichtigung über eingehende Kommunikation.
 
 - Andere Einwohner erhalten Ihre Nicht-stören-Antwort (festgelegt in Einstellungen &gt; Allgemein).
-- Teleport-Angebote werden abgelehnt.
 - Voice-Anrufe werden abgelehnt.
 		<usetemplate ignoretext="Ich ändere meinen Status zu „Nicht stören“" name="okignore" yestext="OK"/>
 	</notification>
@@ -2568,9 +2569,6 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies
 	<notification name="Cancelled">
 		Abgebrochen
 	</notification>
-	<notification name="CancelledSit">
-		Sitzen beendet
-	</notification>
 	<notification name="CancelledAttach">
 		Anhängen abgebrochen
 	</notification>
@@ -3894,32 +3892,32 @@ Warten Sie kurz und versuchen Sie es noch einmal.
 	<notification name="AvatarEjectFailed">
 		Hinauswerfen fehlgeschlagen, da Sie keine Admin-Berechtigung für diese Parzelle haben.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die Parzelle voll ist.
+	<notification name="CMOParcelFull">
+		Objekt „[O]“ kann nicht nach
+[P] in Region [R] verschoben werden, da die Parzelle voll ist.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
+	<notification name="CMOParcelPerms">
+		Objekt „[O]“ kann nicht nach
+[P] in Region [R] verschoben werden, da Ihre Objekte auf dieser Parzelle nicht gestattet sind.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind.
+	<notification name="CMOParcelResources">
+		Objekt „[O]“ kann nicht nach
+[P] in Region [R] verschoben werden, da nicht genügend Ressourcen für dieses Objekt auf dieser Parzelle vorhanden sind.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		Kopiervorgang fehlgeschlagen, da Sie keinen Zugriff auf diese Parzelle haben.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt.
+	<notification name="CMORegionVersion">
+		Objekt „[O]“ kann nicht nach
+    [P] in Region [R] verschoben werden, da die andere Region eine ältere Version verwendet, die das Empfangen dieses Objekts per Regionswechsel nicht unterstützt.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da Sie das Navmesh nicht regionsübergreifend modifizieren können.
+	<notification name="CMONavMesh">
+		Objekt „[O]“ kann nicht nach
+[P] in Region [R] verschoben werden, da Sie das Navmesh nicht regionsübergreifend modifizieren können.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Objekt „[OBJECT_NAME]“ kann nicht nach
-[OBJ_POSITION] in Region [REGION_NAME] verschoben werden, da ein unbekannter Fehler vorliegt. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Objekt „[O]“ kann nicht nach
+[P] in Region [R] verschoben werden, da ein unbekannter Fehler vorliegt. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		Ihnen fehlt die Berechtigung zum Modifizieren dieses Objekts.
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index c105a5b8a35710943305c92ca744d1b838e0d623..5c399280df79652d77f0a2ba1e5a5cae96c71c4c 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Einwohner oder Objekt zum ignorieren auswählen"/>
 		<button name="unblock_btn" tool_tip="Einwohner oder Objekt aus der Liste der ignorierten Einwohner oder Objekte entfernen"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] Einträge in Ihrer Liste der ignorierten Einwohner. Höchstwert: [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_flickr_photo.xml b/indra/newview/skins/default/xui/de/panel_flickr_photo.xml
index 38b5302fefbc47a56b303817c6cf4c76c83483d3..d8bc1f310d5c228626c97a301a90a8e054c7bb6e 100644
--- a/indra/newview/skins/default/xui/de/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/de/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Für Markierungen, die aus mehreren Wörtern bestehen, &quot;&quot; verwenden.
 		<combo_box.item label="Moderate Flickr-Einstufung" name="ModerateRating"/>
 		<combo_box.item label="Beschränkte Flickr-Einstufung" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Hochladen" name="post_photo_btn"/>
+	<button label="Teilen" name="post_photo_btn"/>
 	<button label="Abbrechen" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
index da672a03092b2d18b230336253b5967ae08cb47a..40d323a2b012e7b9aee1eb321747582c8847f17b 100644
--- a/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/de/panel_notify_textbox.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
-		<text_editor name="message" value="message"/>
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
+		<text_editor name="message" value="Nachricht"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
 		<button label="Senden" name="btn_submit"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
index 74fb4d0f858739bab3b6e0032bdea4cf61ad80e3..ff0a6614bd9bd5f2cc5bc838c468f08e608c9c61 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Besser
 	</text>
+	<check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Erweitertes Beleuchtungsmodell" name="UseLightShaders"/>
 	<slider label="Maximale Avatarkomplexität:" name="IndirectMaxComplexity" tool_tip="Bestimmt, an welchem Punkt ein visuell komplexer Avatar als JellyDoll dargestellt wird"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Erweitertes Beleuchtungsmodell" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Freunde immer darstellen" name="AlwaysRenderFriends"/>
+	<button label="Ausnahmen..." name="RenderExceptionsButton"/>
 	<button label="Einstellungen als Voreinstellung speichern..." name="PrefSaveButton"/>
 	<button label="Voreinstellung laden..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2759715d10f0c8f60a6c5d6c5dd6a833fb8852f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_preferences_uploads.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Uploads" name="uploads">
+	<text name="title">
+		Aktuelle Zielorder für Uploads
+	</text>
+	<text name="title_models">
+		Bilder
+	</text>
+	<text name="title_sounds">
+		Sounds
+	</text>
+	<text name="title_animation">
+		Animationen
+	</text>
+	<text name="upload_help">
+		Um einen Zielordner zu ändern, klicken Sie im Inventar mit der rechten Maustaste auf den Ordner und wählen Sie „Als Standard verwenden für“.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
index 82e2b56f3f781d64748762df862cf654785e4b9d..dab20d63eb2662847e17dadbafcd3c745d1c1b8f 100644
--- a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Auf Datenträger speichern" name="save_to_computer_btn"/>
 	<button label="In Inventar speichern ([AMOUNT] L$)" name="save_to_inventory_btn"/>
-	<button label="In Profil hochladen" name="save_to_profile_btn"/>
-	<button label="Auf Facebook hochladen" name="send_to_facebook_btn"/>
-	<button label="Auf Twitter hochladen" name="send_to_twitter_btn"/>
-	<button label="Auf Flickr hochladen" name="send_to_flickr_btn"/>
+	<button label="Im Profil-Feed teilen" name="save_to_profile_btn"/>
+	<button label="Auf Facebook teilen" name="send_to_facebook_btn"/>
+	<button label="Auf Twitter teilen" name="send_to_twitter_btn"/>
+	<button label="Auf Flickr teilen" name="send_to_flickr_btn"/>
 	<button label="Per E-Mail senden" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 4a2cbcc81f84ca512c44334a71b02bbd18e01ab0..ec3e68ce336847e3a80329b755f065d1c1cd7f6a 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1491,7 +1491,8 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 		Der [[MARKETPLACE_CREATE_STORE_URL] Marktplatz-Laden] gibt Fehler zurück.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Diese Funktion befindet sich in der Betaphase. Wenn Sie teilnehmen möchten, tragen Sie sich in dieses [http://goo.gl/forms/FCQ7UXkakz Google-Formular] ein.
+		Beim Öffnen der Marktplatz-Auflistungen ist ein Fehler aufgetreten.
+Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich unter http://support.secondlife.com an den Support von Second Life.
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Ihr Ordner mit Marktplatz-Auflistungen ist leer.
@@ -4444,7 +4445,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Konferenz mit [AGENT_NAME]
 	</string>
 	<string name="inventory_item_offered-im">
-		Inventarobjekt angeboten
+		Inventarobjekt „[ITEM_NAME]“ angeboten
+	</string>
+	<string name="inventory_folder_offered-im">
+		Inventarordner „[ITEM_NAME]“ angeboten
 	</string>
 	<string name="share_alert">
 		Objekte aus dem Inventar hier her ziehen
@@ -4531,7 +4535,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 		Position für Zuhause festgelegt.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] hat Ihnen [REASON] [AMOUNT] L$ bezahlt.
@@ -4902,8 +4909,8 @@ Missbrauchsbericht
 	<string name="server_is_down">
 		Trotz all unserer Bemühungen ist ein unerwarteter Fehler aufgetreten.
 
-	Bitte überprüfen Sie status.secondlifegrid.net, um herauszufinden, ob ein Problem besteht.
- Falls Sie weiterhin Problem haben, überprüfen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.
+Bitte überprüfen Sie http://status.secondlifegrid.net, um herauszufinden, ob ein Problem mit dem Service vorliegt.
+        Falls Sie weiterhin Problem haben, überprüfen Sie bitte Ihre Netzwerk- und Firewalleinstellungen.
 	</string>
 	<string name="dateTimeWeekdaysNames">
 		Sonntag:Montag:Dienstag:Mittwoch:Donnerstag:Freitag:Samstag
@@ -5363,6 +5370,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Gestures_Label">
 		Gesten
 	</string>
+	<string name="Command_Grid_Status_Label">
+		Grid-Status
+	</string>
 	<string name="Command_HowTo_Label">
 		Infos
 	</string>
@@ -5456,6 +5466,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="Command_Gestures_Tooltip">
 		Gesten für Ihren Avatar
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Aktuellen Grid-Status anzeigen
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Wie führe ich gängige Aufgaben aus?
 	</string>
@@ -5678,6 +5691,9 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="loading_chat_logs">
 		Laden...
 	</string>
+	<string name="na">
+		Nicht zutreffend
+	</string>
 	<string name="preset_combo_label">
 		-Leere Liste-
 	</string>
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 a137770e2668a03c2ed8481ed7521605add094ce..535af317d991f072f4f72567655aa0fa09c2fd54 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1896,49 +1896,37 @@ Only large parcels can be listed in search.
              layout="topleft"
              left="8"
              name="public_access"
-             label="Allow Public Access (Unchecking this will create ban lines)"
+             label="Anyone can visit (Unchecking this will create ban lines)"
              top_pad="10" 
              width="278" />
-            <text
-             type="string"
-             length="1"
-             follows="top|left"
-             height="16"
-             layout="topleft"
-             left_delta="20"
-             name="Only Allow"
-             top="30"
-             width="325">
-                Allow access only to Residents who:
-            </text>
             <check_box
              follows="top|left"
              height="16"
-             label="Have payment Information on File [ESTATE_PAYMENT_LIMIT]"
+             label="Must be 18+ [ESTATE_AGE_LIMIT]"
              layout="topleft"
-             left_delta="0"
-             name="limit_payment"
-             tool_tip="Residents must have payment information on file to access this parcel.  See the [SUPPORT_SITE] for more information."
+             left_delta="20"
+             name="limit_age_verified"
+             tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
              follows="top|left"
              height="16"
-             label="Are age 18 or older [ESTATE_AGE_LIMIT]"
+             label="Must have payment info on file [ESTATE_PAYMENT_LIMIT]"
              layout="topleft"
              left_delta="0"
-             name="limit_age_verified"
-             tool_tip="Residents must be age 18 or older to access this parcel. See the [SUPPORT_SITE] for more information."
+             name="limit_payment"
+             tool_tip="Residents must have payment information on file to access this parcel.  See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
              height="16"
-             label="Allow Group Access: [GROUP]"
+             label="Allow group [GROUP] with no restrictions"
              layout="topleft"
              left="8"
              name="GroupCheck"
              tool_tip="Set group in the General tab."
-             top="89"
+             top="73"
              width="278" />
             <check_box
              enabled="false"
@@ -1996,6 +1984,18 @@ Only large parcels can be listed in search.
              name="HoursSpin"
              top_pad="5"
              width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="top|left"
+             height="16"
+             layout="topleft"
+             left="8"
+             name="OwnerLimited"
+             top_pad="5"
+             width="400">
+                (The estate owner may have limited these choices)
+            </text>            
             <panel
             name="Allowed_layout_panel"
             follows="top|left"
@@ -2014,7 +2014,7 @@ Only large parcels can be listed in search.
              name="AllowedText"
              top="0"
              width="230">
-                Allowed Residents ([COUNT], max [MAX])
+                Always allowed ([COUNT], max [MAX])
             </text>
             <name_list
              column_padding="0"
@@ -2063,7 +2063,7 @@ Only large parcels can be listed in search.
              name="BanCheck"
              top="0"
              width="200">
-                Banned Residents ([COUNT], max [MAX])
+                Always banned ([COUNT], max [MAX])
             </text>
             <name_list
              column_padding="0"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
index 03e812d36d04612b89056f3d49dc6aa1f3863ae7..e088d4d2a16348091ff7a4a37f5ae44d16086147 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_render_settings.xml
@@ -57,10 +57,14 @@
         <name_list.columns
          label="Name"
          name="name"
-         relative_width="0.65" />
+         relative_width="0.5" />
         <name_list.columns
          label="Render setting"
          name="setting"
-         relative_width="0.35" />
+         relative_width="0.25" />
+        <name_list.columns
+         label="Date added"
+         name="timestamp"
+         relative_width="0.25" />
      </name_list>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_linkreplace.xml b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ece75e2576457c7dd7018660f27fb3f53c4b0cf0
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_linkreplace.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ name="linkreplace"
+ help_topic="linkreplace"
+ positioning="centered"
+ title="REPLACE INVENTORY LINKS"
+ width="333"
+ height="130"
+ save_rect="true"
+ can_minimize="true"
+ can_close="true">
+	<string name="Ready">
+		Ready...
+	</string>
+	<string name="TargetNotFound">
+		Target item not found.
+	</string>
+	<string name="ItemsIdentical">
+		Source and target are identical.
+	</string>
+	<string name="ItemsFound">
+		Found [NUM] inventory links.
+	</string>
+	<string name="ItemsRemaining">
+		Links remaining: [NUM]
+	</string>
+	<string name="ReplaceFinished">
+		Finished replacing inventory links.
+	</string>
+	<text
+	 type="string"
+	 follows="left|top"
+	 font="SansSerif"
+	 height="23"
+	 layout="topleft"
+	 left="10"
+	 width="35"
+	 name="source_label"
+	 top="10">
+		Old:
+	</text>
+	<inventory_link_replace_drop_target
+	 name="source_uuid_editor"
+	 follows="left|top|right"
+	 height="23"
+	 layout="topleft"
+	 left_pad="10"
+	 max_length_bytes="255"
+	 top_delta="-3"
+	 right="-10"
+	 tool_tip="Drag and drop the current inventory item here that should be replaced."/>
+	<text
+	 type="string"
+	 follows="left|top"
+	 font="SansSerif"
+	 height="23"
+	 layout="topleft"
+	 left="10"
+	 width="35"
+	 name="target_label"
+	 top_pad="10">
+		New:
+	</text>
+	<inventory_link_replace_drop_target
+	 name="target_uuid_editor"
+	 follows="left|top|right"
+	 height="23"
+	 layout="topleft"
+	 left_pad="10"
+	 max_length_bytes="255"
+	 top_delta="-3"
+	 right="-10"
+	 tool_tip="Drag and drop new inventory item here."/>
+	<text
+	 type="string"
+	 follows="left|top|right"
+	 font="SansSerif"
+	 height="20"
+	 layout="topleft"
+	 left="10"
+	 right="-10"
+	 name="status_text"
+	 top_pad="10">
+		Ready...
+	</text>
+	<button
+	 top_pad="5"
+	 left="10"
+	 height="22"
+	 width="90"
+	 follows="left|top"
+	 mouse_opaque="true"
+	 halign="center"
+	 name="btn_refresh"
+	 label="Refresh"/>
+	<button
+	 top_delta="0"
+	 right="-10"
+	 height="22"
+	 width="90"
+	 follows="right|top"
+	 mouse_opaque="true"
+	 halign="center"
+	 name="btn_start"
+	 label="Start"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
index 00d70556b414ead87ead8f9d652d1b2193d4e198..41384a77b835b259cf37ebac3e9f0be55ca954d8 100644
--- a/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
+++ b/indra/newview/skins/default/xui/en/floater_pathfinding_linksets.xml
@@ -13,14 +13,14 @@
     reuse_instance="true"
     save_rect="false"
     single_instance="true"
-    title="Pathfinding linksets">
+    title="REGION OBJECTS">
   <floater.string name="messaging_initial"></floater.string>
   <floater.string name="messaging_get_inprogress">Querying for pathfinding linksets ...</floater.string>
   <floater.string name="messaging_get_error">Error detected while querying for pathfinding linksets.</floater.string>
   <floater.string name="messaging_set_inprogress">Modifying selected pathfinding linksets ...</floater.string>
   <floater.string name="messaging_set_error">Error detected while modifying selected pathfinding linksets.</floater.string>
   <floater.string name="messaging_complete_none_found">No pathfinding linksets.</floater.string>
-  <floater.string name="messaging_complete_available">[NUM_SELECTED] linksets selected out of [NUM_TOTAL].</floater.string>
+  <floater.string name="messaging_complete_available">[NUM_SELECTED] selected out of [NUM_TOTAL].</floater.string>
   <floater.string name="messaging_not_enabled">This region is not enabled for pathfinding.</floater.string>
   <floater.string name="linkset_terrain_name">[Terrain]</floater.string>
   <floater.string name="linkset_terrain_description">--</floater.string>
@@ -211,7 +211,7 @@
           name="dist_from_you"
           width="65" />
       <scroll_list.columns
-          label="Linkset use"
+          label="Pathfinding use"
           name="linkset_use"
           width="236" />
       <scroll_list.columns
@@ -305,7 +305,7 @@
         layout="topleft"
         top_pad="8"
         width="580">
-      Actions on selected linksets (If a linkset is removed from the world, its attributes may be lost):
+      Actions on selected
     </text>
     <check_box
         height="19"
@@ -393,7 +393,7 @@
         left="18"
         top_pad="8"
         width="972">
-      Edit attributes of selected linksets and press the button to apply changes
+      Edit pathfinding attributes
     </text>
     <combo_box
         height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_trash.xml b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e50e89ac953b556d4c18aaca44e52247be10dea
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_preview_trash.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="330"
+ width="310"
+ layout="topleft"
+ min_height="200"
+ min_width="310"
+ name="floater_preview_trash"
+ save_rect="true"
+ title="TRASH"
+ single_instance="true"
+ reuse_instance="true"
+ can_minimize="false">
+  <inventory_panel
+      name="inventory_outbox"
+      start_folder.name="Trash"
+      show_empty_message="false"
+      start_folder.type="trash"
+      follows="all"
+      layout="topleft"
+      top="18" left="7" height="280" width="296"
+      top_pad="0"
+      bg_opaque_color="DkGray2"
+      bg_alpha_color="DkGray2"
+      background_visible="true"
+      border="false"
+      bevel_style="none"
+      scroll.reserve_scroll_corner="false">
+    <folder folder_arrow_image="Folder_Arrow"
+            folder_indentation="8"
+            item_height="20"
+            item_top_pad="4"
+            selection_image="Rounded_Square"
+            left_pad="5"
+            icon_pad="2"
+            icon_width="16"
+            text_pad="1"
+            text_pad_right="4"
+            arrow_size="12"
+            max_folder_item_overlap="2"/>
+    <item allow_wear="false"/>
+  </inventory_panel>
+
+  <layout_stack follows="bottom|left|right"
+                height="23"
+                layout="topleft"
+                mouse_opaque="false"
+                name="button_panel_ls"
+                left="0"
+                orientation="horizontal"
+                top_pad="5"
+                width="310">
+    <layout_panel follows="bottom|left|right"
+                  height="23"
+                  layout="bottomleft"
+                  left="0"
+                  mouse_opaque="false"
+                  name="empty_btn_lp"
+                  auto_resize="true"
+                  width="155">
+      <button enabled="true"
+              follows="bottom|left|right"
+              height="23"
+              label="Empty Trash"
+              layout="topleft"
+              left="30"
+              name="empty_btn"
+              top="0"
+              width="120" />
+    </layout_panel>
+    <layout_panel
+               follows="bottom|left|right"
+               height="23"
+               layout="bottomleft"
+               left_pad="0"
+               mouse_opaque="false"
+               name="share_btn_lp"
+               auto_resize="true"
+               width="155">
+      <button
+           enabled="true"
+           follows="bottom|left|right"
+           height="23"
+           label="Cancel"
+           layout="topleft"
+           left="5"
+           name="cancel_btn"
+           top="0"
+           width="120" />
+    </layout_panel>
+  </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 91e4c1b60384631b5b9f65387bdb20130b021206..ed3cc268516747b450d385cab0a7405b6115a682 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -946,18 +946,29 @@
              width="90">
                 Creator:
             </text>
+            <avatar_icon
+             default_icon_name="Generic_Person"
+             height="18"
+             follows="left|top"
+             layout="topleft"
+             left_pad="1"
+             name="Creator Icon"
+             visible="false"
+             top_delta="0"
+             width="18" />
             <!-- *NOTE: Intentionally wide for long names -->
             <text
              type="string"
              length="1"
              follows="left|top"
-             left_pad="0"
+             left_pad="1"
              height="29"
              layout="topleft"
              name="Creator Name"
-             top_delta="0"
+             font="SansSerifSmall"
+             top_delta="-1"
              translate="false"
-             width="190"
+             width="170"
              word_wrap="true"
              use_ellipses="true">
                 TestString PleaseIgnore (please.ignore)
@@ -974,6 +985,26 @@
              width="90">
                 Owner:
             </text>
+            <avatar_icon
+             default_icon_name="Generic_Person"
+             height="18"
+             follows="left|top"
+             layout="topleft"
+             left_pad="1"
+             name="Owner Icon"
+             visible="false"
+             top_delta="0"
+             width="18" />
+            <group_icon
+             default_icon_name="Generic_Group"
+             height="18"
+             follows="left|top"
+             layout="topleft"
+             left_pad="-18"
+             name="Owner Group Icon"
+             visible="false"
+             top_delta="0"
+             width="18" />
             <!-- *NOTE: Intentionally wide for long names -->
             <text
              type="string"
@@ -982,10 +1013,11 @@
              height="29"
              layout="topleft"
              name="Owner Name"
-             left_pad="0"
-             top_delta="0"
+             font="SansSerifSmall"
+             left_pad="1"
+             top_delta="-1"
              translate="false"
-             width="190"
+             width="170"
              word_wrap="true"
              use_ellipses="true">
                 TestString PleaseIgnore (please.ignore)
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
index 49b9ac273d9fa7415dcc8b28aff154f50af7c601..38f4b7715f6b7a3257efd65afc2e8944323308c8 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml
@@ -164,6 +164,14 @@
 	      function="Avatar.SetImpostorMode"
 	      parameter="1" />
       </menu_item_check>
+      <menu_item_separator />
+      <menu_item_call
+        label="Exceptions..."
+        name="RenderExceptions">
+        <menu_item_call.on_click
+          function="Floater.ToggleOrBringToFront"
+          parameter="avatar_render_settings" />
+      </menu_item_call>
       </context_menu>
   <menu_item_separator
        layout="topleft" name="Impostor seperator"/>
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
index c5426cb232da89b557ad14a1c517444f9c2df8b4..f9fb8479107228845208d6da6cdbbce61b165bd0 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml
@@ -155,6 +155,14 @@
 	      function="Avatar.SetImpostorMode"
 	      parameter="1" />
       </menu_item_check>
+      <menu_item_separator />
+      <menu_item_call
+        label="Exceptions..."
+        name="RenderExceptions">
+        <menu_item_call.on_click
+          function="Floater.ToggleOrBringToFront"
+          parameter="avatar_render_settings" />
+      </menu_item_call>
       </context_menu>
 
   <menu_item_separator 
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index e1f9269c70b70ad567af95e1cf256e88d845540b..ec9f94733892ea0ec67f63fdcfa32ac9fb8b7e9c 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -519,7 +519,7 @@
      name="Purge Item">
         <menu_item_call.on_click
          function="Inventory.DoToSelected"
-         parameter="purge" />
+         parameter="purge"/>
     </menu_item_call>
     <menu_item_call
      label="Restore Item"
@@ -604,6 +604,14 @@
          function="Inventory.DoToSelected"
          parameter="paste_link" />
     </menu_item_call>
+    <menu_item_call
+     label="Replace Links"
+     layout="topleft"
+     name="Replace Links">
+        <menu_item_call.on_click
+         function="Inventory.DoToSelected"
+         parameter="replace_links" />
+    </menu_item_call>
     <menu_item_separator
      layout="topleft" 
      name="Paste Separator" />
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
index d95541df805ad1562efce96461dd4b2ed4928120..3eacdbc781f361ed657befc2a385299495129674 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
@@ -146,6 +146,14 @@
 			 function="Inventory.GearDefault.Enable"
 			 parameter="find_links" />
         </menu_item_call>
+    <menu_item_call 
+         label="Replace Links"
+         layout="topleft"
+         name="Replace Links">
+            <on_click
+             function="Inventory.GearDefault.Custom.Action"
+             parameter="replace_links" />
+        </menu_item_call>
     <menu_item_separator
      layout="topleft" />
 
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 8cd0c415f43626216938b41a76c82074655811e5..7a73fd6d7c48b2fad77411281725613540a9a7f2 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -20,6 +20,16 @@
              function="Floater.Toggle"
              parameter="preferences" />
         </menu_item_call>
+        <menu_item_call
+         label="Close Window"
+         name="Close Window"
+         visible="false" 
+         shortcut="control|W">
+            <menu_item_call.on_click
+             function="File.CloseWindow" />
+            <menu_item_call.on_enable
+             function="File.EnableCloseWindow" />
+        </menu_item_call>
         <menu_item_check
          label="Show Grid Picker"
          name="Show Grid Picker"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 12df3749f6a03c94135692f3cfbdc7c2516174bb..697d27907da6a8e03e020876bed8b4954a8b02ef 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -943,7 +943,7 @@
             </menu_item_call>
         </menu>
         <menu_item_call
-            label="Linksets..."
+            label="Region Objects"
             name="pathfinding_linkset_menu_item">
           <menu_item_call.on_click
               function="Floater.ToggleOrBringToFront"
@@ -1103,7 +1103,7 @@
          name="Pathfinding"
          tear_off="true">
         <menu_item_call
-            label="Linksets..."
+            label="Region Objects"
             name="pathfinding_linksets_menu_item">
           <menu_item_call.on_click
               function="Floater.ToggleOrBringToFront"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 60cbcb67298f8281f099fea9f2898c0eaccf8108..14481bd38625c7ff06714c5c04b6aa9e63bf1485 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -907,6 +907,108 @@ Please invite members within 48 hours.
      yestext="Create group for L$100"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupInaccessible"
+   type="alertmodal">
+This group is not accessible to you.
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupError"
+   type="alertmodal">
+Error processing your group membership request.
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupErrorReason"
+   type="alertmodal">
+Unable to join group: [reason]
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <tag>reason</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupTrialUser"
+   type="alertmodal">
+Sorry, trial users can't join groups.
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupMaxGroups"
+   type="alertmodal">
+You cannot join '[group_name]':
+You are already a member of [group_count] groups, the maximum number allowed is [max_groups]
+    <tag>success</tag>
+    <tag>group_id</tag>
+    <tag>group_name</tag>
+    <tag>group_count</tag>
+    <tag>max_groups</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupClosedEnrollment"
+   type="alertmodal">
+You cannot join '[group_name]':
+The group no longer has open enrollment.
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupSuccess"
+   type="alertmodal">
+You have been added to the group
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+  
+  <notification
+   icon="alertmodal.tga"
+   name="JoinGroupInsufficientFunds"
+   type="alertmodal">
+Unable to transfer the required L$ [membership_fee] membership fee.
+    <tag>group_id</tag>
+    <tag>success</tag>
+    <usetemplate
+       name="okbutton"
+       yestext="OK"/>
+  </notification>
+  
   <notification
    icon="alertmodal.tga"
    name="LandBuyPass"
@@ -4983,6 +5085,17 @@ Are you sure you want to change the Estate Covenant?
      yestext="OK"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="EstateParcelAccessOverride"
+   type="alertmodal">
+Unchecking this option may remove restrictions that parcel owners have added to prevent griefing, maintain privacy, or protect underage residents from adult material. Please discuss with your parcel owners as needed.
+    <tag>confirm</tag>
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="RegionEntryAccessBlocked"
@@ -6073,15 +6186,26 @@ The folder &apos;[FOLDERNAME]&apos; is a system folder. Deleting system folders
      yestext="OK"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="PurgeSelectedItems"
+   type="alertmodal">
+[COUNT] item(s) will be permanently deleted. Are you sure you want to permanently delete selected item(s) from your Trash?
+    <tag>confirm</tag>
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="ConfirmEmptyTrash"
    type="alertmodal">
-Are you sure you want to permanently delete the contents of your Trash?
+[COUNT] items will be permanently deleted. Are you sure you want to permanently delete the contents of your Trash?
     <tag>confirm</tag>
     <usetemplate
-     ignoretext="Confirm before I empty the inventory Trash folder"
-     name="okcancelignore"
+     name="okcancelbuttons"
      notext="Cancel"
      yestext="OK"/>
   </notification>
@@ -6095,7 +6219,7 @@ Your trash is overflowing. This may cause problems logging in.
         <usetemplate
          name="okcancelbuttons"
          notext="I will empty trash later"
-         yestext="Empty trash now"/>
+         yestext="Check trash folder"/>
   </notification>
 
   <notification
@@ -6390,13 +6514,6 @@ The string [STRING_NAME] is missing from strings.xml
 Cancelled
   </notification>
 
-  <notification
-   icon="notifytip.tga"
-   name="CancelledSit"
-   type="notifytip">
-Cancelled Sit
-  </notification>
-
   <notification
    icon="notifytip.tga"
    name="CancelledAttach"
@@ -8497,12 +8614,21 @@ Select residents to share with.
   </notification>
 
   <notification
-    name="MeshUploadError"
+    name="MeshUploadErrorDetails"
     icon="alert.tga"
     type="alert">
-      [LABEL] failed to upload: [MESSAGE] [IDENTIFIER]
+      [LABEL] failed to upload: [MESSAGE]
 [DETAILS]See SecondLife.log for details
   </notification>
+
+  <notification
+    name="MeshUploadError"
+    icon="alert.tga"
+    type="alert">
+      [LABEL] failed to upload: [MESSAGE]
+
+See SecondLife.log for details
+  </notification>
    
   <notification
     name="MeshUploadPermError"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 440c6613d56ecdf329051b3d3ee75f368994aed8..78f771cd516c57ee6134bede4be5f6fbb568c9ae 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -9,6 +9,18 @@
     name="chat"
     top="1"
     width="517">
+    
+  <check_box
+      control_name="ChatAutocompleteGestures"
+      height="16"
+      initial_value="true"
+      label="Auto-complete gestures in nearby chat"
+      layout="topleft"
+      top="17"
+      left="13"
+      name="auto_complete_gestures"
+      width="330">
+  </check_box>
 
   <panel
       border="false"
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 76a82212ae95e1c5fd131a1ba5979f93f4aa1ec0..a0c1dd0be6872f1d82c41ef68324727e08500cad 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -82,36 +82,72 @@
     <view_border
      bevel_style="none"
      follows="top|left"
-     height="95"
+     height="105"
      layout="topleft"
      left="10"
      top_pad="5"
-     width="470" />
-
+     width="505" />
+    <radio_group
+     height="32"
+     layout="topleft"
+     name="externally_visible_radio"
+     top_delta="5"
+     left="20"
+     width="200">
+        <radio_item
+         height="16"
+         label="Allow only residents and groups listed below"
+         layout="topleft"
+         name="estate_restricted_access" />
+        <radio_item
+         height="16"
+         label="Anyone can visit"
+         layout="topleft"
+         name="estate_public_access" />
+    </radio_group>
     <check_box
-     height="20"
-     label="Allow Public Access"
+     follows="top|left"
+     height="18"
+     label="Must be 18+"
+     layout="topleft"
+     left_delta="20"
+     name="limit_age_verified"
+     tool_tip="Residents must be age 18 or older to access this estate. See the [SUPPORT_SITE] for more information."
+     top_delta="40"
+     width="278" />
+    <check_box
+     follows="top|left"
+     height="18"
+     label="Must have payment info on file"
+     layout="topleft"
+     left_delta="0"
+     name="limit_payment"
+     tool_tip="Residents must have payment information on file to access this estate.  See the [SUPPORT_SITE] for more information."
+     top_pad="2"
+     width="278" />
+    <check_box
+     height="18"
+     label="Parcel owners can be more restrictive"
      layout="topleft"
      left="20"
-     name="externally_visible_check"
-     top_delta="5"
-     width="200" />
-
+     name="parcel_access_override"
+     top_pad="2"
+     width="240" />
     <check_box
-     height="20"
+     height="18"
      label="Allow Voice Chat"
      layout="topleft"
-     left="280"
+     left="290"
      name="voice_chat_check"
-     top_delta="0"
+     top_delta="-78"
      width="200" />
     <check_box
-     height="20"
+     height="18"
      label="Allow Direct Teleport"
      layout="topleft"
      left_delta="0"
      name="allow_direct_teleport"
-     top_pad="4"
+     top_pad="2"
      width="80" />
     <button
      enabled="false"
@@ -120,43 +156,10 @@
      label="Apply"
      layout="topleft"
      name="apply_btn"
-     top_pad="15"
+     top_pad="30"
      left_delta="0"
      width="97" />
-
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     height="16"
-     layout="topleft"
-     left="20"
-     name="Only Allow"
-     top_delta="-30"
-     width="278">
-        Allow access only to Residents who:
-    </text>
-    <check_box
-     follows="top|left"
-     height="16"
-     label="Have payment information on file"
-     layout="topleft"
-     left_delta="0"
-     name="limit_payment"
-     tool_tip="Residents must have payment information on file to access this estate.  See the [SUPPORT_SITE] for more information."
-     top_pad="2"
-     width="278" />
-    <check_box
-     follows="top|left"
-     height="16"
-     label="Are age 18 or older"
-     layout="topleft"
-     left_delta="0"
-     name="limit_age_verified"
-     tool_tip="Residents must be age 18 or older to access this estate. See the [SUPPORT_SITE] for more information."
-     top_pad="2"
-     width="278" />
-
+    
     <text
      type="string"
      length="1"
@@ -165,7 +168,7 @@
      height="20"
      layout="topleft"
      name="estate_manager_label"
-     top_pad="30"
+     top_pad="25"
      left="10"
      width="200">
         Estate Managers:
@@ -180,7 +183,7 @@
      name="allow_resident_label"
      top_delta="0"
      width="200">
-        Allowed Residents:
+        Always allowed:
     </text>
 
     <!-- Estate Managers box -->
@@ -191,7 +194,7 @@
      layout="topleft"
      left="10"
      top_pad="-5"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -200,9 +203,9 @@
      multi_select="true"
      name="estate_manager_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Allowed Residents box -->
+    <!-- Always allowed box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -210,7 +213,7 @@
      layout="topleft"
      left="280"
      top_delta="0"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -219,7 +222,7 @@
      multi_select="true"
      name="allowed_avatar_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
     <!-- Estate Managers buttons -->
     <button
@@ -230,7 +233,7 @@
      left="10"
      name="add_estate_manager_btn"
      top_pad="6"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -238,9 +241,9 @@
      layout="topleft"
      name="remove_estate_manager_btn"
      left_pad="6"
-     width="97" />
+     width="114" />
 
-    <!-- Allowed Residents buttons -->
+    <!-- Always allowed buttons -->
     <button
      follows="left|top"
      height="23"
@@ -249,7 +252,7 @@
      layout="topleft"
      name="add_allowed_avatar_btn"
      top_delta="0"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -258,7 +261,7 @@
      name="remove_allowed_avatar_btn"
      left_pad="6"
      top_delta="0"
-     width="97" />
+     width="114" />
 
     <text
      type="string"
@@ -270,7 +273,7 @@
      name="allow_group_label"
      top_pad="10"
      width="200">
-        Allowed Groups:
+        Groups always allowed:
     </text>
     <text
      type="string"
@@ -282,10 +285,10 @@
      name="ban_resident_label"
      top_delta="0"
      width="200">
-        Banned Residents:
+        Always banned:
     </text>
 
-    <!-- Allowed Groups box -->
+    <!-- Groups always allowed box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -293,7 +296,7 @@
      layout="topleft"
      left="10"
      top_pad="-5"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -302,9 +305,9 @@
      multi_select="true"
      name="allowed_group_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Banned Residents box -->
+    <!-- Always banned box -->
     <view_border
      bevel_style="none"
      follows="top|left"
@@ -312,7 +315,7 @@
      layout="topleft"
      left="280"
      top_delta="0"
-     width="200" />
+     width="235" />
     <name_list
      follows="left|top"
      height="71"
@@ -321,9 +324,9 @@
      multi_select="true"
      name="banned_avatar_name_list"
      top_delta="0"
-     width="200" />
+     width="235" />
 
-    <!-- Allowed Groups buttons -->
+    <!-- Groups always allowed buttons -->
     <button
      follows="left|top"
      height="23"
@@ -332,7 +335,7 @@
      left="10"
      name="add_allowed_group_btn"
      top_pad="6"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -341,9 +344,9 @@
      name="remove_allowed_group_btn"
      left_pad="6"
      top_delta="0"
-     width="97" />
+     width="114" />
 
-    <!-- Banned Residents buttons -->
+    <!-- Always banned buttons -->
     <button
      follows="left|top"
      height="23"
@@ -352,7 +355,7 @@
      left="280"
      name="add_banned_avatar_btn"
      top_delta="0"
-     width="97" />
+     width="114" />
     <button
      follows="left|top"
      height="23"
@@ -361,7 +364,7 @@
      name="remove_banned_avatar_btn"
      top_delta="0"
      left_pad="6"
-     width="97" />
+     width="114" />
 
     <button
      follows="left|top"
@@ -371,7 +374,7 @@
      left="10"
      name="message_estate_btn"
      top_pad="20"
-     width="220" />
+     width="235" />
     <button
      follows="left|top"
      height="23"
@@ -380,6 +383,6 @@
      left="280"
      name="kick_user_from_estate_btn"
      top_delta="0"
-     width="220" />
+     width="235" />
 
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index 2dae1025eccff1057ef551182ee228f8b6333797..ffdbc5d22777bee724dd18062252c89d44522a46 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -148,6 +148,18 @@
                 top_pad="1"
                 value="2"/>
             </radio_group> 
+            <check_box
+             control_name="SyncMaterialSettings"
+             follows="top|left"
+             height="20"
+             initial_value="false"
+             label="Lock repeat"
+             layout="topleft"
+             left="8"
+             name="checkbox_sync_settings"
+             tool_tip="Adjust all maps repeats simultaneously"
+             top_pad="-16"
+             width="160" />
             <texture_picker
              can_apply_immediately="true"
              default_image_name="Default"
@@ -159,7 +171,7 @@
              left="10"
              name="texture control"
              tool_tip="Click to choose a picture"
-             top_pad="7"
+             top_pad="5"
              width="64" />
             <text
              type="string"
@@ -586,7 +598,7 @@
 			 label_width="205"
              left="10"
              max_val="100"
-             min_val="0.1"
+             min_val="-100"
              name="rptctrl"
              width="265" />
            <spinner
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index d6c06b0ecc3b9bd40b936d8b21fe428861f52fae..c9be141427990d67aa5625174fb614511193dac6 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -360,6 +360,15 @@ Please try logging in again in a minute.</string>
 	<string name="AssetErrorPriceMismatch">Viewer and server do not agree on price</string>
 	<string name="AssetErrorUnknownStatus">Unknown status</string>
 
+	<!-- Asset upload errors. -->
+	<string name="AssetUploadServerUnreacheble">Service unreachable.</string>
+	<string name="AssetUploadServerDifficulties">The server is experiencing unexpected difficulties.</string>
+	<string name="AssetUploadServerUnavaliable">Service not available or upload timeout was reached.</string>
+	<string name="AssetUploadRequestInvalid">
+Error in upload request.  Please visit 
+http://secondlife.com/support for help fixing this problem.
+</string>
+
 	<!-- Asset Type human readable names:  these will replace variable [TYPE] in notification FailedToFindWearable* -->
 	<!-- Will also replace [OBJECTTYPE] in notifications: UserGiveItem, ObjectGiveItem -->
 	<string name="texture">texture</string>
@@ -2644,12 +2653,12 @@ If you continue to receive this message, please contact Second Life support for
 	<string name="RegionInfoAllEstatesYouManage">
 		all estates that you manage for [OWNER]
 	</string>
-	<string name="RegionInfoAllowedResidents">Allowed Residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
-	<string name="RegionInfoAllowedGroups">Allowed Groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
+	<string name="RegionInfoAllowedResidents">Always allowed: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
+	<string name="RegionInfoAllowedGroups">Groups always allowed: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
 	<string name="RegionInfoEstateManagers">Estate Managers: ([ESTATEMANAGERS], max [MAXMANAGERS])</string>
-	<string name="RegionInfoBannedResidents">Banned Residents: ([BANNEDAGENTS], max [MAXBANNED])</string>
-	<string name="RegionInfoListTypeAllowedAgents">Allowed Residents</string>
-	<string name="RegionInfoListTypeBannedAgents">Banned Residents</string>
+	<string name="RegionInfoBannedResidents">Always banned: ([BANNEDAGENTS], max [MAXBANNED])</string>
+	<string name="RegionInfoListTypeAllowedAgents">Always allowed</string>
+	<string name="RegionInfoListTypeBannedAgents">Always banned</string>
 
 	<!-- script limits floater -->
 	<string name="ScriptLimitsParcelScriptMemory">Parcel Script Memory</string>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 39426b2aaf83431e9f11ccc732ccca2ec9723245..a2728351540b9536eb524fd00447f2851a10abf4 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -451,7 +451,7 @@ los media:
 			<spinner label="Horas de acceso:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Always Allow" name="AllowedText">
-					Residentes permitidos ([COUNT])
+					Residentes admitidos ([COUNT], máx. [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] listados de un máx. de [MAX])"/>
 				<button label="Añadir" name="add_allowed"/>
@@ -459,7 +459,7 @@ los media:
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Ban" name="BanCheck">
-					Residentes no admitidos ([COUNT])
+					Residentes no admitidos ([COUNT], máx. [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] listados de un máx. de [MAX])"/>
 				<button label="Añadir" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..727b1118c3e9ff8fd2addf9658df8fdcd6687114
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="CONFIGURACIÓN DE RENDERIZADO DE AVATAR">
+	<string name="av_never_render" value="Nunca"/>
+	<string name="av_always_render" value="Siempre"/>
+	<filter_editor label="Filtrar la gente" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Acciones en la persona seleccionada"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Nombre" name="name"/>
+		<name_list.columns label="Configuración de renderizado" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_flickr.xml b/indra/newview/skins/default/xui/es/floater_flickr.xml
index 7f95d948fe10293c8e6e3da51e63b4dcf38b15f9..e254d8ba77dfd67990a9ba1528c4ce2f130be6bd 100644
--- a/indra/newview/skins/default/xui/es/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/es/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="SUBIR A FLICKR">
+<floater name="floater_flickr" title="COMPARTIR EN FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
index 372680f55df90f15040c35d104274524a573caed..cb2a1dde146d80b8bf391d2353fda3ce6a183bc3 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Privacidad" name="im"/>
 		<panel label="Configurar" name="input"/>
 		<panel label="Avanzado" name="advanced1"/>
+		<panel label="Subidas" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml
index d1cd912f87ac3523242753526b28f1409cee1bf9..25048c9dd6c94a8dabd0bb894e078c91048e04a2 100644
--- a/indra/newview/skins/default/xui/es/floater_tos.xml
+++ b/indra/newview/skins/default/xui/es/floater_tos.xml
@@ -13,6 +13,6 @@
 		Por favor, lee detenidamente las siguientes Condiciones del servicio y Política de privacidad. Debes aceptar el acuerdo para poder iniciar sesión en [SECOND_LIFE].
 	</text>
 	<text name="external_tos_required">
-		Para poder proseguir, debes iniciar sesión en my.secondlife.com y aceptar las Condiciones del servicio. Gracias.
+		Para poder proseguir, debes iniciar sesión en https://my.secondlife.com y aceptar las Condiciones del servicio. Gracias.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
index f1394dad0580def4e4bf85ad64583a45623e9c0f..66db2f4969665fe07eb73a6c14e5944e5ca4c909 100644
--- a/indra/newview/skins/default/xui/es/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/es/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Acercar el zoom" name="Zoom In"/>
 	<menu_item_call label="Pagar" name="Pay..."/>
 	<menu_item_call label="Perfil del objeto" name="Object Inspect"/>
-	<menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
-	<menu_item_check label="No renderizar" name="DoNotRender"/>
-	<menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Renderizar avatar" name="Render Avatar">
+		<menu_item_check label="Predeterminado" name="RenderNormally"/>
+		<menu_item_check label="Siempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nunca" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
index 80f16d3e829d60bc0d45a62745f6af5594c8d23f..d3e87d7bfb493e5e93f2f2096df501dc84d92f4d 100644
--- a/indra/newview/skins/default/xui/es/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/es/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="Volcar XML" name="Dump XML"/>
 	<menu_item_call label="Acercar el zoom" name="Zoom In"/>
 	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
-	<menu_item_check label="No renderizar" name="DoNotRender"/>
-	<menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Renderizar avatar" name="Render Avatar">
+		<menu_item_check label="Predeterminado" name="RenderNormally"/>
+		<menu_item_check label="Siempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nunca" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Ignorar al propietario de la partícula" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..11f68e77923c893e14c0553ffdf49fd7c128847b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Predeterminado" name="default"/>
+	<menu_item_check label="Renderizar siempre" name="always_render"/>
+	<menu_item_check label="No renderizar nunca" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a7c673cf2c8b9d5f8d46f1b1b0b2232feadf6eeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Renderizar siempre un Residente..." name="add_avatar_always_render"/>
+	<menu_item_call label="No renderizar nunca un Residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
index 24706eb2c8c1831e79007104d211250955f928b9..01a98359e35342df6e489243c6701199cb235d17 100644
--- a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Añadir a / Quitar de los favoritos" name="activate"/>
+	<menu_item_call label="Activar/Desactivar el gesto elegido" name="activate"/>
 	<menu_item_call label="Copiar" name="copy_gesture"/>
 	<menu_item_call label="Pegar" name="paste"/>
 	<menu_item_call label="Copiar la UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml
index 5d108abf67a95e915196c9065abfeae77e02be86..074defb006e667ab3cb47b8de3dd4638687d59bb 100644
--- a/indra/newview/skins/default/xui/es/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/es/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Pelo nuevo" name="New Hair"/>
 		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
 	</menu>
+	<menu label="Usar como valor predeterminado para" name="upload_def">
+		<menu_item_call label="Imágenes subidas" name="Image uploads"/>
+		<menu_item_call label="Sonidos subidos" name="Sound uploads"/>
+		<menu_item_call label="Animaciones subidas" name="Animation uploads"/>
+		<menu_item_call label="Modelos subidos" name="Model uploads"/>
+	</menu>
 	<menu label="Change Type" name="Change Type">
 		<menu_item_call label="Por defecto" name="Default"/>
 		<menu_item_call label="Guantes" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/>
 	<menu_item_call label="Añadir al vestuario" name="Add To Outfit"/>
 	<menu_item_call label="Quitar del vestuario actual" name="Remove From Outfit"/>
+	<menu_item_call label="Copiar la lista del vestuario al portapapeles" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Encontrar el original" name="Find Original"/>
 	<menu_item_call label="Eliminar el ítem" name="Purge Item"/>
 	<menu_item_call label="Restaurar el ítem" name="Restore Item"/>
@@ -71,7 +78,6 @@
 	<menu_item_call label="Copiar" name="Copy"/>
 	<menu_item_call label="Pegar" name="Paste"/>
 	<menu_item_call label="Pegar como enlace" name="Paste As Link"/>
-	<menu_item_call label="Borrar" name="Remove Link"/>
 	<menu_item_call label="Borrar" name="Delete"/>
 	<menu_item_call label="Borrar carpeta del sistema" name="Delete System Folder"/>
 	<menu_item_call label="Empezar multiconferencia" name="Conference Chat Folder"/>
@@ -94,7 +100,6 @@
 	<menu_item_call label="Editar" name="Wearable Edit"/>
 	<menu_item_call label="Añadir" name="Wearable Add"/>
 	<menu_item_call label="Quitarse" name="Take Off"/>
-	<menu_item_call label="Copiar al Buzón de salida de comerciante" name="Merchant Copy"/>
 	<menu_item_call label="Copiar en artículos del Mercado" name="Marketplace Copy"/>
 	<menu_item_call label="Mover a artículos del Mercado" name="Marketplace Move"/>
 	<menu_item_call label="--sin opciones--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index d9f8f23576bb9a5dafad0d2d0de118d3fe97d748..4ab6bc84a34a836640dc470b1814b77bbe23fa3f 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Yo" name="File">
 		<menu_item_call label="Preferencias..." name="Preferences..."/>
+		<menu_item_check label="Mostrar selector del Grid" name="Show Grid Picker"/>
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Ayuda" name="Help">
@@ -32,7 +33,6 @@
 			<menu_item_check label="Error" name="Error"/>
 			<menu_item_check label="Ninguno" name="None"/>
 		</menu>
-		<menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/>
 		<menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
index 986389a4fe76bfc29be96b2725602ef8dd12e7fa..98b07980119d30a3ebfa5a12bba85588c9e4abc8 100644
--- a/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="No ignorar" name="unblock"/>
+	<menu_item_check label="Bloquear la voz" name="BlockVoice"/>
+	<menu_item_check label="Bloquear el texto" name="MuteText"/>
+	<menu_item_check label="Bloquear los sonidos de objeto" name="BlockObjectSounds"/>
 	<menu_item_call label="Perfil..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index c4986821f178387cb66d4356c67772e2da0785a9..99aab42db8f79e5ec7515d137992e5626044dd48 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="Sin transformación de voz" name="NoVoiceMorphing"/>
 			<menu_item_check label="Probar..." name="Preview"/>
 			<menu_item_call label="Suscribir..." name="Subscribe"/>
+			<menu_item_call label="Ventaja Premium..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
 		<menu_item_check label="Amigos" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="Destinos..." name="Destinations"/>
 		<menu_item_check label="Mapa del mundo" name="World Map"/>
 		<menu_item_check label="Minimapa" name="Mini-Map"/>
-		<menu_item_check label="Buscar" name="Search"/>
+		<menu_item_call label="Eventos" name="Events"/>
+		<menu_item_check label="Buscar..." name="Search"/>
 		<menu_item_call label="Teleportar a la Base" name="Teleport Home"/>
 		<menu_item_call label="Fijar mi Base aquí" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="Coger una copia" name="Take Copy"/>
 			<menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
+			<menu_item_call label="Duplicar" name="DuplicateObject"/>
 		</menu>
 		<menu label="Scripts" name="Scripts">
+			<menu_item_check label="Advertencias/errores de script..." name="Script debug"/>
 			<menu_item_call label="Recompilar los scripts (Mono)" name="Mono"/>
 			<menu_item_call label="Recompilar los scripts (LSL)" name="LSL"/>
 			<menu_item_call label="Reiniciar los scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 2eddedf6872c73fbec7504259b35f2ea2300bd4c..ee381ace7d77358597cadf331d6c6411ef736346 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -144,8 +144,7 @@ La inicialización del mercado ha fallado por un error del sistema o de la red.
 	<notification name="MerchantTransactionFailed">
 		La transacción con el Mercado ha fallado por el siguiente error:
         
-        Motivo: &apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -761,6 +760,9 @@ Por favor, asegúrate de que no hay ninguno bloqueado, y de que eres el propieta
 	<notification name="CannotLinkPermanent">
 		No se pueden vincular objetos a través de límites de región.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		No se pueden vincular objetos a través de límites de región.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Imposible enlazarlos, porque hay objetos de distintos propietarios.
 
@@ -1689,7 +1691,7 @@ Se está descargando en segundo plano y, en cuanto esté lista, te pediremos que
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="UpdateCheckError">
-		Ha ocurrido un error al comprobar si hay actualizaciones.
+		Ha ocurrido un error al buscar actualizaciones.
 Repite la operación más adelante.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
@@ -1790,10 +1792,9 @@ Si estás impaciente por probar las nuevas funciones y correcciones, lee la pág
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="DoNotDisturbModeSet">
-		Está activado No molestar. No obtendrás un aviso cuando recibas comunicaciones.
+		Está activado No molestar.  No obtendrás un aviso cuando recibas comunicaciones.
 
 - Los otros residentes recibirán tu respuesta de No molestar (se configura en Preferencias &gt; General).
-- Se rehusarán los ofrecimientos de teleporte.
 - Se rechazarán las llamadas de voz.
 		<usetemplate ignoretext="Cambio mi estado al modo No molestar" name="okignore" yestext="OK"/>
 	</notification>
@@ -2563,9 +2564,6 @@ Publícala en una página web para que otros puedan acceder fácilmente a esta p
 	<notification name="Cancelled">
 		Cancelado
 	</notification>
-	<notification name="CancelledSit">
-		Cancelado el sentarte
-	</notification>
 	<notification name="CancelledAttach">
 		Cancelado el anexar
 	</notification>
@@ -3880,32 +3878,32 @@ Prueba otra vez dentro de un minuto.
 	<notification name="AvatarEjectFailed">
 		Error al expulsar: no tienes permiso de administrador en esa parcela.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] porque la parcela está llena.
+	<notification name="CMOParcelFull">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] porque la parcela está llena.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque tus objetos no están permitidos en esta parcela.
+	<notification name="CMOParcelPerms">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] porque tus objetos no están permitidos en esta parcela.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque no hay suficientes recursos para este objeto en esta parcela.
+	<notification name="CMOParcelResources">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] porque no hay suficientes recursos para este objeto en esta parcela.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		Error al copiar: no tienes acceso a esa parcela.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] de la región [REGION_NAME] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones.
+	<notification name="CMORegionVersion">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] porque la otra región ejecuta una versión más antigua que no admite la recepción de este objeto atravesando regiones.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] porque no puedes modificar el navmesh a través de límites de región.
+	<notification name="CMONavMesh">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] porque no puedes modificar el navmesh a través de límites de región.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		No se puede mover el objeto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] en la región [REGION_NAME] por un motivo desconocido. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		No se puede mover el objeto &apos;[O]&apos; a
+[P] de la región [R] por un motivo desconocido. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		No tienes permiso para modificar ese objeto
diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
index a3de14ae6709c714d2758203c125393a6e08a22c..73f80bfa90fa44258035ad72070be178c0713a92 100644
--- a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Elige un residente o un objeto para ignorarlo"/>
 		<button name="unblock_btn" tool_tip="Quita al Residente o al objeto de la lista de ignorados"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] entradas en tu lista de bloqueados, y el límite es [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_flickr_photo.xml b/indra/newview/skins/default/xui/es/panel_flickr_photo.xml
index fe80199355b63b853a783f2fd449e2933cdd5222..f8cc8c1de7e63bb0ec3a31fbf3dae25a6a08c554 100644
--- a/indra/newview/skins/default/xui/es/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/es/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Usa &quot;&quot; para las etiquetas con varias palabras
 		<combo_box.item label="Calificación moderada de Flickr" name="ModerateRating"/>
 		<combo_box.item label="Calificación restringida de Flickr" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Subir" name="post_photo_btn"/>
+	<button label="Compartir" name="post_photo_btn"/>
 	<button label="Cancelar" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
index dc7c873303c5a9db7e71c395f755a5999720448b..bc8586f53e6b36277a503e28692f2b7e0f99015a 100644
--- a/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/es/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="message"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
index 2db4274e44d66de49772ab481556d4271a4c67d4..816c6985480a3221563cebe2098d0ada670fafa7 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Más calidad
 	</text>
+	<check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Modelo de iluminación avanzado" name="UseLightShaders"/>
 	<slider label="Complejidad máxima de avatar:" name="IndirectMaxComplexity" tool_tip="Controla en qué momento un avatar visualmente complejo se dibuja como un &quot;JellyDoll&quot;"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Modelo de iluminación avanzado" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Renderizar siempre los amigos" name="AlwaysRenderFriends"/>
+	<button label="Excepciones..." name="RenderExceptionsButton"/>
 	<button label="Guardar configuración como valor predefinido..." name="PrefSaveButton"/>
 	<button label="Cargar predefinido..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b095ed6c6783ecc4ade89d8cb22a6c02401699eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Subidas" name="uploads">
+	<text name="title">
+		Carpetas de destino actuales para las subidas
+	</text>
+	<text name="title_models">
+		Imágenes
+	</text>
+	<text name="title_sounds">
+		Sonidos
+	</text>
+	<text name="title_animation">
+		Animaciones
+	</text>
+	<text name="upload_help">
+		Para cambiar una carpeta de destino, pulsa con el botón derecho en ella en el inventario y elige
+&quot;Usar como valor predeterminado para&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
index c1955f1fde9918e6aac9de51112a82d408f46f00..4eb9ecf28f21c951dee5d5540149ad4ada36db57 100644
--- a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Guardar en disco" name="save_to_computer_btn"/>
 	<button label="Guardar en inventario (L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="Subir al perfil" name="save_to_profile_btn"/>
-	<button label="Subir a Facebook" name="send_to_facebook_btn"/>
-	<button label="Subir a Twitter" name="send_to_twitter_btn"/>
-	<button label="Subir a Flickr" name="send_to_flickr_btn"/>
+	<button label="Compartir en los comentarios de Mi perfil" name="save_to_profile_btn"/>
+	<button label="Compartir en Facebook" name="send_to_facebook_btn"/>
+	<button label="Compartir en Twitter" name="send_to_twitter_btn"/>
+	<button label="Compartir en Flickr" name="send_to_flickr_btn"/>
 	<button label="Enviar por correo electrónico" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 192d32c267496bba7e30d4820c2557001a59016c..7cbd969ca04f30cffda434004ec96a8dcc9a0f56 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1473,7 +1473,8 @@ Intenta iniciar sesión de nuevo en unos instantes.
 		La [[MARKETPLACE_CREATE_STORE_URL] tienda del Mercado] devuelve errores.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Esta función está actualmente en versión beta. Si quieres participar, añade tu nombre a este [http://goo.gl/forms/FCQ7UXkakz Formulario de Google].
+		Se ha producido un error al abrir Artículos del Mercado.
+Si sigues recibiendo el mismo mensaje, solicita ayuda al personal de asistencia de Second Life en http://support.secondlife.com
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Tu carpeta Artículos del mercado está vacía.
@@ -4354,7 +4355,10 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 		Conferencia con [AGENT_NAME]
 	</string>
 	<string name="inventory_item_offered-im">
-		Ofrecido el item del inventario
+		Ítem del inventario &apos;[ITEM_NAME]&apos; ofrecido
+	</string>
+	<string name="inventory_folder_offered-im">
+		Carpeta del inventario &apos;[ITEM_NAME]&apos; ofrecida
 	</string>
 	<string name="share_alert">
 		Arrastra los ítems desde el invenbtario hasta aquí
@@ -4441,7 +4445,10 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 		Posición inicial establecida.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] te ha pagado [AMOUNT] L$ [REASON].
@@ -4650,7 +4657,7 @@ Denuncia de infracción
 		Varón - Encogimiento de hombros
 	</string>
 	<string name="Male - Stick tougue out">
-		Varón - Sacando la lengua
+		Hombre - Sacando la lengua
 	</string>
 	<string name="Male - Wow">
 		Varón - Admiración
@@ -4812,7 +4819,7 @@ Denuncia de infracción
 	<string name="server_is_down">
 		Parece que hay algún problema que ha escapado a nuestros controles.
 
-	Visita status.secondlifegrid.net para ver si hay alguna incidencia conocida que esté afectando al servicio.
+Visita http://status.secondlifegrid.net para ver si hay alguna incidencia conocida que esté afectando al servicio.
         Si sigues teniendo problemas, comprueba la configuración de la red y del servidor de seguridad.
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5273,6 +5280,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Gestures_Label">
 		Gestos
 	</string>
+	<string name="Command_Grid_Status_Label">
+		Estado del Grid
+	</string>
 	<string name="Command_HowTo_Label">
 		Cómo
 	</string>
@@ -5366,6 +5376,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="Command_Gestures_Tooltip">
 		Gestos para tu avatar
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Mostrar el estado actual del Grid
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Cómo hacer las tareas habituales
 	</string>
@@ -5588,6 +5601,9 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="loading_chat_logs">
 		Cargando...
 	</string>
+	<string name="na">
+		n/c
+	</string>
 	<string name="preset_combo_label">
 		-Lista vacía-
 	</string>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 6aea44e650730fc49d22b9988970cb876ad0a64b..2e57cd16129f9b0721160b72dc18e1ed1d6642dc 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -456,7 +456,7 @@ musique :
 			<spinner label="Durée en heures :" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Toujours autoriser" name="AllowedText">
-					Résidents autorisés ([COUNT])
+					Résidents autorisés ([COUNT], max. [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
 				<button label="Ajouter" name="add_allowed"/>
@@ -464,7 +464,7 @@ musique :
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Bannir" name="BanCheck">
-					Résidents bannis ([COUNT])
+					Résidents bannis ([COUNT], max. [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] dans la liste, [MAX] max.)"/>
 				<button label="Ajouter" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d178bf2dc78b8ae3f5aae8a143b8a84252e7959
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="PARAMÈTRES DE RENDU DE L’AVATAR">
+	<string name="av_never_render" value="Jamais"/>
+	<string name="av_always_render" value="Toujours"/>
+	<filter_editor label="Filtrer les personnes" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Actions sur la personne sélectionnée"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Nom" name="name"/>
+		<name_list.columns label="Paramètre de rendu" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_flickr.xml b/indra/newview/skins/default/xui/fr/floater_flickr.xml
index 0432ae9459249035e70ffa46b4826575573a192c..721d6aa6bfa1439d3e2634548067f13fbff89701 100644
--- a/indra/newview/skins/default/xui/fr/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/fr/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CHARGER DANS FLICKR">
+<floater name="floater_flickr" title="PARTAGER SUR FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="PHOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 0f9fb1334b58879ffbfbb95572b71cf3d0d033e7..25887bb5f74b22e35ce060e8eab911e450308c7b 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Confidentialité" name="im"/>
 		<panel label="Configuration" name="input"/>
 		<panel label="Avancées" name="advanced1"/>
+		<panel label="Chargements" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml
index c43139ce0f3bc6166ecbbfd0774c103ffb3eefdf..9d2f034399045ba4158ec356f80e5f86ec0e4623 100644
--- a/indra/newview/skins/default/xui/fr/floater_tos.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tos.xml
@@ -13,6 +13,6 @@
 		Veuillez lire attentivement les Conditions d&apos;utilisation et le Règlement sur le respect de la vie privée suivants. Vous devez les accepter pour pouvoir vous connecter à [SECOND_LIFE].
 	</text>
 	<text name="external_tos_required">
-		Vous devez vous rendre sur my.secondlife.com et vous connecter pour accepter les Conditions d’utilisation avant de pouvoir continuer. Merci !
+		Vous devez vous rendre sur https://my.secondlife.com et vous connecter pour accepter les Conditions d’utilisation avant de pouvoir continuer. Merci !
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
index ae19e78d54af6836ee7053cb96204bb9b27a0981..23416421bcdfcc8500b8a2e8880a80926b9a9b74 100644
--- a/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
 	<menu_item_call label="Payer" name="Pay..."/>
 	<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
-	<menu_item_check label="Effectuer le rendu normalement" name="RenderNormally"/>
-	<menu_item_check label="Ne pas effectuer le rendu" name="DoNotRender"/>
-	<menu_item_check label="Effectuer le rendu total" name="AlwaysRenderFully"/>
+	<context_menu label="Effectuer le rendu de l’avatar" name="Render Avatar">
+		<menu_item_check label="Valeur par défaut" name="RenderNormally"/>
+		<menu_item_check label="Toujours" name="AlwaysRenderFully"/>
+		<menu_item_check label="Jamais" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
index 2a0ae386058062ad5e863cb05f9f52c4c713efea..fb675b38777b0c4df1ceee073e6aa393e60b99e9 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="Dump XML" name="Dump XML"/>
 	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
 	<menu_item_call label="Payer" name="Pay..."/>
-	<menu_item_check label="Effectuer le rendu normalement" name="RenderNormally"/>
-	<menu_item_check label="Ne pas effectuer le rendu" name="DoNotRender"/>
-	<menu_item_check label="Effectuer le rendu total" name="AlwaysRenderFully"/>
+	<context_menu label="Effectuer le rendu de l’avatar" name="Render Avatar">
+		<menu_item_check label="Valeur par défaut" name="RenderNormally"/>
+		<menu_item_check label="Toujours" name="AlwaysRenderFully"/>
+		<menu_item_check label="Jamais" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Ignorer le propriétaire des particules" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59dad01a116694bf800dbb19c169b683fdbe227b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Valeur par défaut" name="default"/>
+	<menu_item_check label="Toujours effectuer le rendu" name="always_render"/>
+	<menu_item_check label="Ne jamais effectuer le rendu" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44f3961f1a9fcda6365bd8f987f7a790b84232d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Toujours effectuer le rendu d’un résident" name="add_avatar_always_render"/>
+	<menu_item_call label="Ne jamais effectuer le rendu d’un résident" name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
index 062dd0f00536dd5717ac5b506ad87c999f07af42..d48b273ee6f21999b937364bc7167e84064ec997 100644
--- a/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Ajouter/Supprimer des favoris" name="activate"/>
+	<menu_item_call label="Activer/désactiver le geste sélectionné" name="activate"/>
 	<menu_item_call label="Copier" name="copy_gesture"/>
 	<menu_item_call label="Coller" name="paste"/>
 	<menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index c0808f11391792913462acbec1a59d7d92df17aa..ba4e8db61a704ee5b8b9a0309300ca84d76802ed 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
 		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
 	</menu>
+	<menu label="Utiliser comme défaut pour" name="upload_def">
+		<menu_item_call label="Chargements d’images" name="Image uploads"/>
+		<menu_item_call label="Chargements de sons" name="Sound uploads"/>
+		<menu_item_call label="Chargements d’animations" name="Animation uploads"/>
+		<menu_item_call label="Chargements de modèles" name="Model uploads"/>
+	</menu>
 	<menu label="Changer de type" name="Change Type">
 		<menu_item_call label="Défaut" name="Default"/>
 		<menu_item_call label="Gants" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/>
 	<menu_item_call label="Ajouter à la tenue actuelle" name="Add To Outfit"/>
 	<menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/>
+	<menu_item_call label="Copier la liste de la tenue dans le presse-papiers" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
 	<menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
 	<menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Copier" name="Copy"/>
 	<menu_item_call label="Coller" name="Paste"/>
 	<menu_item_call label="Coller comme lien" name="Paste As Link"/>
-	<menu_item_call label="Supprimer" name="Remove Link"/>
 	<menu_item_call label="Supprimer" name="Delete"/>
 	<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
 	<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Modifier" name="Wearable Edit"/>
 	<menu_item_call label="Ajouter" name="Wearable Add"/>
 	<menu_item_call label="Enlever" name="Take Off"/>
-	<menu_item_call label="Copier vers la boîte d&apos;envoi vendeur" name="Merchant Copy"/>
 	<menu_item_call label="Copier dans les annonces Place du marché" name="Marketplace Copy"/>
 	<menu_item_call label="Déplacer dans les annonces Place du marché" name="Marketplace Move"/>
 	<menu_item_call label="--aucune option--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 7fd68baf6784415a611f400865c069ee2ee614bd..cbfdcdaf2253e115d422aab67f963a7d172e915d 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Moi" name="File">
 		<menu_item_call label="Préférences..." name="Preferences..."/>
+		<menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/>
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Aide" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="Erreur" name="Error"/>
 			<menu_item_check label="Aucun" name="None"/>
 		</menu>
-		<menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/>
 		<menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
index 47589572c25229b9dc0693a92075c0b500edfc54..adce6f56821913a13362f99e888ef22703fa90f7 100644
--- a/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Ne plus ignorer" name="unblock"/>
+	<menu_item_check label="Bloquer le chat vocal" name="BlockVoice"/>
+	<menu_item_check label="Ignorer le texte" name="MuteText"/>
+	<menu_item_check label="Bloquer les sons des objets" name="BlockObjectSounds"/>
 	<menu_item_call label="Profil..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index d40e979d08e4de4ffde64977caf0b60a387d5f14..98a69aa043352447faf6c8b80e9ab22fba09b45d 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="Aucun effet de voix" name="NoVoiceMorphing"/>
 			<menu_item_check label="Aperçu..." name="Preview"/>
 			<menu_item_call label="S&apos;abonner..." name="Subscribe"/>
+			<menu_item_call label="Avantage Premium..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Gestes..." name="Gestures"/>
 		<menu_item_check label="Amis" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="Destinations..." name="Destinations"/>
 		<menu_item_check label="Carte du monde" name="World Map"/>
 		<menu_item_check label="Mini-carte" name="Mini-Map"/>
-		<menu_item_check label="Rechercher" name="Search"/>
+		<menu_item_call label="Événements" name="Events"/>
+		<menu_item_check label="Recherche..." name="Search"/>
 		<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
 		<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
 		<menu_item_call label="Photo" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="Prendre une copie" name="Take Copy"/>
 			<menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Renvoi de l&apos;objet" name="Return Object back to Owner"/>
+			<menu_item_call label="Dupliquer" name="DuplicateObject"/>
 		</menu>
 		<menu label="Scripts" name="Scripts">
+			<menu_item_check label="Avertissements/Erreurs de scripts..." name="Script debug"/>
 			<menu_item_call label="Recompiler les scripts (Mono)" name="Mono"/>
 			<menu_item_call label="Recompiler les scripts (LSL)" name="LSL"/>
 			<menu_item_call label="Réinitialiser les scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 21826a9603e7ac58c65ee5993e573639a7ab956f..197f187b795949258d550ecbf5b21327b341b85f 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -142,10 +142,9 @@ L&apos;initialisation de la Place du marché a échoué en raison d&apos;une err
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantTransactionFailed">
-		La transaction avec la Place du marché a échoué en raison de l&apos;erreur suivante :
+		La transaction avec la Place du marché a échoué en renvoyant l’erreur suivante :
         
-        Motif : &apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -761,6 +760,9 @@ Assurez-vous que vous êtes le propriétaire de tous les objets et qu&apos;aucun
 	<notification name="CannotLinkPermanent">
 		Impossible de lier des objets d&apos;une région à une autre.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Impossible de lier des objets d’une région à une autre.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Impossible de lier car les objets n&apos;ont pas tous le même propriétaire.
 
@@ -1783,7 +1785,6 @@ Quitter le groupe ?
 		Ne pas déranger est activé.  Vous ne recevrez pas les notifications de communications entrantes.
 
 - Les autres résidents recevront votre réponse Ne pas déranger (définie dans Préférences &gt; Général).
-- Toutes les offres de téléportation seront refusées.
 - Les appels vocaux seront refusés.
 		<usetemplate ignoretext="J&apos;ai changé mon statut et suis désormais en mode Ne pas déranger." name="okignore" yestext="OK"/>
 	</notification>
@@ -2554,9 +2555,6 @@ Liez-la à partir d&apos;une page web pour permettre aux autres résidents d&apo
 	<notification name="Cancelled">
 		Annulé
 	</notification>
-	<notification name="CancelledSit">
-		Action annulée
-	</notification>
 	<notification name="CancelledAttach">
 		Attachement annulé
 	</notification>
@@ -3881,32 +3879,32 @@ Veuillez réessayer dans une minute.
 	<notification name="AvatarEjectFailed">
 		Vous n&apos;avez pas pu réaliser l&apos;exclusion car vous ne disposez pas des droits d&apos;admin pour cette parcelle.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car la parcelle est pleine.
+	<notification name="CMOParcelFull">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] car la parcelle est pleine.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car vos objets ne sont pas autorisés sur cette parcelle.
+	<notification name="CMOParcelPerms">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] car vos objets ne sont pas autorisés sur cette parcelle.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car il n&apos;y a pas suffisamment de ressources pour cet objet sur cette parcelle.
+	<notification name="CMOParcelResources">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] car il n’y a pas suffisamment de ressources pour cet objet sur cette parcelle.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		La copie a échoué car vous n’avez pas accès à cette parcelle.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car l&apos;autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région.
+	<notification name="CMORegionVersion">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] car l’autre région exécute une version plus ancienne qui ne prend pas en charge la réception de cet objet via le passage à une autre région.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] car vous ne pouvez pas modifier le maillage de navigation d&apos;une région à une autre.
+	<notification name="CMONavMesh">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] car vous ne pouvez pas modifier le maillage de navigtion d’une région à une autre.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Impossible de déplacer [OBJECT_NAME] jusqu&apos;à
-[OBJ_POSITION] dans la région [REGION_NAME] pour une raison inconnue. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Impossible de déplacer l’objet [O] jusqu’à
+[P] dans la région [R] pour une raison inconnue. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		Vous n&apos;êtes pas autorisé à modifier cet objet.
diff --git a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
index 0e2b5a9c93a098a48651d5fbbca15282db27a5db..e2970d1485db0cb8d64bccdc5b2d0e0326a61e21 100644
--- a/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Choisir un résident ou un objet à ignorer"/>
 		<button name="unblock_btn" tool_tip="Enlever le résident ou l’objet de la liste des ignorés"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] entrées dans votre liste des ignorés, la limite est de [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml b/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml
index 7b3a1767039362b7c0efe4c4a9d3433a8746c4be..9dac26b165a42a842c385ff5eb64200464422424 100644
--- a/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/fr/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Utiliser &quot;&quot; pour les balises contenant plusieurs mots
 		<combo_box.item label="Catégorie de contenu Flickr modéré" name="ModerateRating"/>
 		<combo_box.item label="Catégorie de contenu Flickr réservé aux adultes" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Charger" name="post_photo_btn"/>
+	<button label="Partager" name="post_photo_btn"/>
 	<button label="Annuler" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
index 6ce09cde4b18334c4146494585e6e15b33ec0b7f..fc4c005a254693fa1b0d3132066e015737cd08f1 100644
--- a/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/fr/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="message"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 60cdd5df413ef8417d4f0e26a3d5bce2582f22d9..7117ace7e1b54dda6381ef9d0425c588e361a50a 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Meilleure
 	</text>
+	<check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Modèle d’éclairage avancé" name="UseLightShaders"/>
 	<slider label="Complexité max. de l&apos;avatar :" name="IndirectMaxComplexity" tool_tip="Contrôle à quel moment un avatar complexe est représenté comme un « JellyDoll »"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Modèle d’éclairage avancé" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Toujours effectuer le rendu des amis" name="AlwaysRenderFriends"/>
+	<button label="Exceptions..." name="RenderExceptionsButton"/>
 	<button label="Enregistrer les paramètres comme préréglage..." name="PrefSaveButton"/>
 	<button label="Charger un préréglage..." name="PrefLoadButton"/>
 	min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1d9d15a93ffab6bd70f6a9fec773298d01ded93
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Chargements" name="uploads">
+	<text name="title">
+		Dossiers de destination actuels pour les chargements
+	</text>
+	<text name="title_models">
+		Images
+	</text>
+	<text name="title_sounds">
+		Sons
+	</text>
+	<text name="title_animation">
+		Animations
+	</text>
+	<text name="upload_help">
+		Pour modifier un dossier de destination, cliquez-droit sur ce dossier dans l’inventaire et faites votre choix
+ &quot;Utiliser comme défaut pour&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
index eb724f4bd1db78cbeaa11821db1947db6c5c7747..bdedb9162f8290c608bb9bec6c1ff4ea87614d2c 100644
--- a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Enreg. sur le disque" name="save_to_computer_btn"/>
 	<button label="Enreg. dans l&apos;inventaire ([AMOUNT] L$)" name="save_to_inventory_btn"/>
-	<button label="Charger dans le profil" name="save_to_profile_btn"/>
-	<button label="Charger sur Facebook" name="send_to_facebook_btn"/>
-	<button label="Charger sur Twitter" name="send_to_twitter_btn"/>
-	<button label="Charger sur Flickr" name="send_to_flickr_btn"/>
+	<button label="Partager sur le flux de profil" name="save_to_profile_btn"/>
+	<button label="Partager sur Facebook" name="send_to_facebook_btn"/>
+	<button label="Partager sur Twitter" name="send_to_twitter_btn"/>
+	<button label="Partager sur Flickr" name="send_to_flickr_btn"/>
 	<button label="Envoyer par e-mail" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 40a41b93abb4844b71ef92a7f2a05d3f2df2b6e3..6f95039aea37fd7ea1196286b7a571c9bf33b824 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1491,7 +1491,8 @@ Veuillez réessayer de vous connecter dans une minute.
 		La [[MARKETPLACE_CREATE_STORE_URL] boutique de la Place du marché] renvoie des erreurs.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Cette fonctionnalité est en version bêta. Veuillez ajouter votre nom à ce [http://goo.gl/forms/FCQ7UXkakz formulaire Google] si vous souhaitez participer.
+		Une erreur est survenue lors de l’ouverture des annonces de la Place du marché.
+Si vous continuez de recevoir ce message, contactez l’assistance Second Life à http://support.secondlife.com pour obtenir de l’aide.
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Votre dossier Annonces de la Place du marché est vide.
@@ -4444,7 +4445,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Conférence avec [AGENT_NAME]
 	</string>
 	<string name="inventory_item_offered-im">
-		Objet de l&apos;inventaire offert
+		Objet de l’inventaire [ITEM_NAME] offert
+	</string>
+	<string name="inventory_folder_offered-im">
+		Dossier de l’inventaire [ITEM_NAME] offert
 	</string>
 	<string name="share_alert">
 		Faire glisser les objets de l&apos;inventaire ici
@@ -4531,7 +4535,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Emplacement du domicile défini.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] vous a payé [AMOUNT] L$ [REASON].
@@ -4900,9 +4907,9 @@ du rapport d&apos;infraction
 	</string>
 	<string name="words_separator" value=","/>
 	<string name="server_is_down">
-		Malgré nos efforts, une erreur inattendue s&apos;est produite.
+		Malgré nos efforts, une erreur inattendue s’est produite.
 
-	Veuillez vous reporter à status.secondlifegrid.net afin de déterminer si un problème connu existe avec ce service.
+Veuillez vous reporter à http://status.secondlifegrid.net afin de déterminer si un problème connu existe avec ce service.
         Si le problème persiste, vérifiez la configuration de votre réseau et de votre pare-feu.
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5363,6 +5370,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Gestures_Label">
 		Gestes
 	</string>
+	<string name="Command_Grid_Status_Label">
+		État de la grille
+	</string>
 	<string name="Command_HowTo_Label">
 		Aide rapide
 	</string>
@@ -5456,6 +5466,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="Command_Gestures_Tooltip">
 		Gestes de votre avatar
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Afficher l’état actuel de la grille
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Comment effectuer les opérations courantes
 	</string>
@@ -5678,6 +5691,9 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="loading_chat_logs">
 		Chargement...
 	</string>
+	<string name="na">
+		s.o.
+	</string>
 	<string name="preset_combo_label">
 		-Liste vide-
 	</string>
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index 62960d8755901cda32f3c1999cce81f18c8e2f6d..8311321a9652cba372c4db357a4c7ca4f4e1c7f1 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -456,7 +456,7 @@ Media:
 			<spinner label="Ore di accesso:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Consenti sempre" name="AllowedText">
-					Residenti consentiti ([COUNT])
+					Residenti consentiti ([COUNT], max [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] in lista, [MAX] max)"/>
 				<button label="Aggiungi" name="add_allowed"/>
@@ -464,7 +464,7 @@ Media:
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Espelli" name="BanCheck">
-					Residenti espulsi ([COUNT])
+					Residenti espulsi ([COUNT], max [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] in lista, [MAX] max)"/>
 				<button label="Aggiungi" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c992dceb44dd2b2a4b3239414654379f2e8905e
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="IMPOSTAZIONI DI RENDERING AVATAR">
+	<string name="av_never_render" value="Mai"/>
+	<string name="av_always_render" value="Sempre"/>
+	<filter_editor label="Filtro persone" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Azioni per la persona selezionata"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Nome" name="name"/>
+		<name_list.columns label="Impostazione di rendering" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_flickr.xml b/indra/newview/skins/default/xui/it/floater_flickr.xml
index c19eb337af8c57cf85f72631aeaf0641f4ead38b..85482a44a46eb9802e008693fda100a7f5e080c4 100644
--- a/indra/newview/skins/default/xui/it/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/it/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CARICA SU FLICKR">
+<floater name="floater_flickr" title="CONDIVIDI SU FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
index 7a1d2966ed975221d30dbc846e87dc819908a9b7..189ba195c556e462e69e4b2e55e4138d8ecb9f72 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Riservatezza" name="im"/>
 		<panel label="Impostazione" name="input"/>
 		<panel label="Avanzate" name="advanced1"/>
+		<panel label="Caricamenti" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_tos.xml b/indra/newview/skins/default/xui/it/floater_tos.xml
index 0dd116d6135c971ff4575271c738494ed93b1239..038231246222598ffcf665e8843f2c6c09e42265 100644
--- a/indra/newview/skins/default/xui/it/floater_tos.xml
+++ b/indra/newview/skins/default/xui/it/floater_tos.xml
@@ -13,6 +13,6 @@
 		Sei pregato di leggere attentamente i Termini del servizio e le Regole sulla privacy di seguito. Per continuare l&apos;accesso a [SECOND_LIFE], devi accettare le condizioni.
 	</text>
 	<text name="external_tos_required">
-		Per continuare, visita my.secondlife.com e accedi per accettare i Termini del servizio. Grazie.
+		Per continuare, visita https://my.secondlife.com e accedi per accettare i Termini del servizio. Grazie.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/menu_attachment_other.xml b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
index 183240029876645edc74cb44160dfc57e8c937df..b7faee0e8591f53b9570a6b682191e587ffd7957 100644
--- a/indra/newview/skins/default/xui/it/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/it/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Zoom avanti" name="Zoom In"/>
 	<menu_item_call label="Paga" name="Pay..."/>
 	<menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
-	<menu_item_check label="Esegui il rendering normalmente" name="RenderNormally"/>
-	<menu_item_check label="Non eseguire il rendering" name="DoNotRender"/>
-	<menu_item_check label="Esegui il rendering completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Rendering avatar" name="Render Avatar">
+		<menu_item_check label="Impostazione predefinita" name="RenderNormally"/>
+		<menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Mai" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Blocca proprietario particella" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_other.xml b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
index f3b4075a29e477f9257c0fe569f95371405004ed..5e8002f24757ff5d2754d923732762ab4728b438 100644
--- a/indra/newview/skins/default/xui/it/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/it/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="Dump XML" name="Dump XML"/>
 	<menu_item_call label="Zoom avanti" name="Zoom In"/>
 	<menu_item_call label="Paga" name="Pay..."/>
-	<menu_item_check label="Esegui il rendering normalmente" name="RenderNormally"/>
-	<menu_item_check label="Non eseguire il rendering" name="DoNotRender"/>
-	<menu_item_check label="Esegui il rendering completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Rendering avatar" name="Render Avatar">
+		<menu_item_check label="Impostazione predefinita" name="RenderNormally"/>
+		<menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Mai" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Blocca proprietario particella" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f29b3166fe307ec2a311eb6d3d2c04cda41f6834
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Impostazione predefinita" name="default"/>
+	<menu_item_check label="Esegui sempre il rendering" name="always_render"/>
+	<menu_item_check label="Non eseguire mai il rendering" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d8918d07d0160cdc976ccb52406b784b3170c2f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Esegui sempre il rendering di un residente..." name="add_avatar_always_render"/>
+	<menu_item_call label="Non eseguire mai il rendering di un residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
index 7cfcc6287e0b10237f764177e663aab338d6b39e..b54dec75ee369a66dd9e94a1680b23a8da27d567 100644
--- a/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Aggiungi/Rimuovi dai preferiti" name="activate"/>
+	<menu_item_call label="Attiva/disattiva gesture selezionata" name="activate"/>
 	<menu_item_call label="Copia" name="copy_gesture"/>
 	<menu_item_call label="Incolla" name="paste"/>
 	<menu_item_call label="Copia UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/it/menu_inventory.xml b/indra/newview/skins/default/xui/it/menu_inventory.xml
index 2cd0d2c078eccd7935b30b2c933228e398eefdd4..a6dbc722b8806989fed462dd350dd2ef5be0191c 100644
--- a/indra/newview/skins/default/xui/it/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/it/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Nuovi capelli" name="New Hair"/>
 		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
 	</menu>
+	<menu label="Usa come impostazione predefinita per" name="upload_def">
+		<menu_item_call label="Caricamenti immagini" name="Image uploads"/>
+		<menu_item_call label="Caricamenti suoni" name="Sound uploads"/>
+		<menu_item_call label="Caricamenti animazioni" name="Animation uploads"/>
+		<menu_item_call label="Caricamenti modelli" name="Model uploads"/>
+	</menu>
 	<menu label="Cambia tipo" name="Change Type">
 		<menu_item_call label="Predefinito" name="Default"/>
 		<menu_item_call label="Guanti" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Sostituisci vestiti" name="Replace Outfit"/>
 	<menu_item_call label="Aggiungi al vestiario" name="Add To Outfit"/>
 	<menu_item_call label="Rimuovi dal vestiario attuale" name="Remove From Outfit"/>
+	<menu_item_call label="Copia gruppo vestiti negli Appunti" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Trova originale" name="Find Original"/>
 	<menu_item_call label="Elimina oggetto" name="Purge Item"/>
 	<menu_item_call label="Ripristina oggetto" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Copia" name="Copy"/>
 	<menu_item_call label="Incolla" name="Paste"/>
 	<menu_item_call label="Incolla come link" name="Paste As Link"/>
-	<menu_item_call label="Elimina" name="Remove Link"/>
 	<menu_item_call label="Cancella" name="Delete"/>
 	<menu_item_call label="Elimina la cartella di sistema" name="Delete System Folder"/>
 	<menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Modifica" name="Wearable Edit"/>
 	<menu_item_call label="Aggiungi" name="Wearable Add"/>
 	<menu_item_call label="Togli" name="Take Off"/>
-	<menu_item_call label="Copia nella casella venditore in uscita" name="Merchant Copy"/>
 	<menu_item_call label="Copia negli annunci Marketplace" name="Marketplace Copy"/>
 	<menu_item_call label="Sposta negli annunci Marketplace" name="Marketplace Move"/>
 	<menu_item_call label="--nessuna opzione--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index 3d2a556fe2ec7dc139802e7e2e7c50826e3df778..6dafc68f7cbc03c91f5ee3e93d8ca5cac1eeb1b2 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Io" name="File">
 		<menu_item_call label="Preferenze..." name="Preferences..."/>
+		<menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Aiuto" name="Help">
@@ -32,7 +33,6 @@
 			<menu_item_check label="Errore" name="Error"/>
 			<menu_item_check label="Nessuno" name="None"/>
 		</menu>
-		<menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
 		<menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
index e9955923b258c1a2de4e5bf9ca5070768a1888a8..172d712a1e0908a3aa05a2998b33c4142b3276e8 100644
--- a/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Sblocca" name="unblock"/>
+	<menu_item_check label="Blocca voce" name="BlockVoice"/>
+	<menu_item_check label="Blocca testo" name="MuteText"/>
+	<menu_item_check label="Blocca suoni oggetto" name="BlockObjectSounds"/>
 	<menu_item_call label="Profilo..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 96f06d5f98aac9598c3d227bb3293e5703d6b07d..216af0e45861f6fca75869325050a5e6d994fff3 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="Nessuna manipolazione voce" name="NoVoiceMorphing"/>
 			<menu_item_check label="Anteprima..." name="Preview"/>
 			<menu_item_call label="Abbonati..." name="Subscribe"/>
+			<menu_item_call label="Vantaggio Premium..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Gesture..." name="Gestures"/>
 		<menu_item_check label="Amici" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="Destinazioni..." name="Destinations"/>
 		<menu_item_check label="Mappamondo" name="World Map"/>
 		<menu_item_check label="Mini mappa" name="Mini-Map"/>
-		<menu_item_check label="Cerca" name="Search"/>
+		<menu_item_call label="Eventi" name="Events"/>
+		<menu_item_check label="Cerca..." name="Search"/>
 		<menu_item_call label="Teleport a Casa" name="Teleport Home"/>
 		<menu_item_call label="Imposta come Casa mia" name="Set Home to Here"/>
 		<menu_item_call label="Istantanea" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="Prendi copia" name="Take Copy"/>
 			<menu_item_call label="Salva nei contenuti oggetto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Restituisci oggetto" name="Return Object back to Owner"/>
+			<menu_item_call label="Duplica" name="DuplicateObject"/>
 		</menu>
 		<menu label="Script" name="Scripts">
+			<menu_item_check label="Avvertenze/errori dello script..." name="Script debug"/>
 			<menu_item_call label="Ricompila script (Mono)" name="Mono"/>
 			<menu_item_call label="Ricompila gli script (LSL)" name="LSL"/>
 			<menu_item_call label="Reimposta script" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 76579ccc130d0cd495912c4cf92310b47c0d32c7..a7c7b9d66f6bb81ceb803c29e4fcea36b73a7fa9 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -144,8 +144,7 @@ L&apos;inizializzazione con il Marketplace non ha avuto successo a causa di un e
 	<notification name="MerchantTransactionFailed">
 		La transazione in Marketplace non è riuscita a causa dell&apos;errore seguente:
         
-        Motivo: &apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -760,6 +759,9 @@ Accertati che nessuno sia bloccato e che li possiedi tutti.
 	<notification name="CannotLinkPermanent">
 		Gli oggetti non possono essere collegati attraverso i confini.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Gli oggetti non possono essere collegati attraverso i confini.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
 
@@ -1785,11 +1787,10 @@ Vuoi cancellare quell&apos;elemento?
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="DoNotDisturbModeSet">
-		Non disturbare è attivo.  Non riceverai la notifica delle comunicazioni in arrivo.
+		La funzione Non disturbare è attiva. Non riceverai nessuna comunicazione.
 
-- Gli altri residenti riceveranno la tua risposta Non disturbare (impostata in Preferenze &gt; Generali).
-- Le offerte di teleport verranno rifiutate.
-- Le chiamate voce verranno rifiutate.
+- Gli altri residenti riceveranno la risposta che hai impostato per la funzione &quot;Non disturbare&quot; in Preferenze &gt; Generali.
+- Le chiamate vocali verranno rifiutate.
 		<usetemplate ignoretext="Io cambio il mio stato alla modalità Non disturbare." name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
@@ -2559,9 +2560,6 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 	<notification name="Cancelled">
 		Annullato
 	</notification>
-	<notification name="CancelledSit">
-		Seduta annullata
-	</notification>
 	<notification name="CancelledAttach">
 		Attaccamento annullato
 	</notification>
@@ -3886,32 +3884,27 @@ Riprova tra un minuto.
 	<notification name="AvatarEjectFailed">
 		L&apos;espulsione non ha avuto successo perché non hai l&apos;autorizzazione dell&apos;amministratore del lotto.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché il lotto è pieno.
+	<notification name="CMOParcelFull">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perché il lotto è pieno.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché i tuoi oggetti non sono ammessi su questo lotto.
+	<notification name="CMOParcelPerms">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perché i tuoi oggetti non sono permessi in questo lotto.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché non ci sono risorse sufficienti per l&apos;oggetto su questo lotto.
+	<notification name="CMOParcelResources">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perché non esistono risorse sufficienti per questo oggetto nel lotto.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		Copia non riuscita perché non hai accesso a quel lotto.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché nell&apos;altra regione è in esecuzione una versione precedente che non consente la ricezione di questo oggetto attraverso i confini tra regioni.
+	<notification name="CMORegionVersion">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perché l&apos;altra regione esegue una versione più vecchia, che non supporta il ricevimento di questo oggetto mediante attraversamento di regioni.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] perché non puoi modificare il navmesh attraverso il confine tra regioni.
+	<notification name="CMONavMesh">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] perché non puoi modificare il navmesh attraverso i confini delle regioni.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Impossibile muovere l&apos;oggetto &apos;[OBJECT_NAME]&apos; a
-[OBJ_POSITION] nella regione [REGION_NAME] per un motivo sconosciuto. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Impossibile spostare l&apos;oggetto &quot;[O]&quot; su [P] nella regione [R] a causa di un motivo sconosciuto.
+ ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		Non hai l&apos;autorizzazione necessaria per modificare questa immagine
diff --git a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
index 7ca2d3b57b1692bd20eb13694e665f3fa296e724..af6ae5bd4568d01fecaefa9bedd7dd15274cef8e 100644
--- a/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/it/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Seleziona un residente o un oggetto da bloccare"/>
 		<button name="unblock_btn" tool_tip="Rimuovi un residente o un oggetto dalla lista bloccati"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] voci nella lista dei bloccati, ma il limite è [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Lista degli attuali residenti bloccati"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_flickr_photo.xml b/indra/newview/skins/default/xui/it/panel_flickr_photo.xml
index e989fb20814ccb96aceaf2c132a15f8acd630089..f6700b6150a5f1775c11258c84f600f1bc03fce2 100644
--- a/indra/newview/skins/default/xui/it/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/it/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Usa &quot;&quot; per tag con più di una parola
 		<combo_box.item label="Categoria Flickr Moderato" name="ModerateRating"/>
 		<combo_box.item label="Categoria Flickr Censurato" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Carica" name="post_photo_btn"/>
+	<button label="Condividi" name="post_photo_btn"/>
 	<button label="Annulla" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
index ef272620108733c74faea6bc69625b73f7d91e71..de3deaafa247546205b6e5702592ced172ae233a 100644
--- a/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/it/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="messaggio"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index 4fa1835b0eb322cecd52471a32ce441d2be39fac..f3ca9fafb3b6d50c1404c749f751dcdf3aaa9a4f 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Migliore
 	</text>
+	<check_box initial_value="true" label="Shader atmosfera..." name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Modello illuminazione avanzato" name="UseLightShaders"/>
 	<slider label="Massima conplessità dell&apos;avatar:" name="IndirectMaxComplexity" tool_tip="Definisce il punto in cui un avatar dall&apos;aspetto complesso viene visualizzato come JellyDoll"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Shader atmosfera..." name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Modello illuminazione avanzato" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Esegui sempre il rendering degli amici" name="AlwaysRenderFriends"/>
+	<button label="Eccezioni..." name="RenderExceptionsButton"/>
 	<button label="Salva impostazioni come valori predefiniti..." name="PrefSaveButton"/>
 	<button label="Carica valore predefinito..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5083ceb55204dff374a8ff42d298ca22c6add561
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Caricamenti" name="uploads">
+	<text name="title">
+		Cartelle correnti di destinazione dei caricamenti
+	</text>
+	<text name="title_models">
+		Immagini
+	</text>
+	<text name="title_sounds">
+		Suoni
+	</text>
+	<text name="title_animation">
+		Animazioni
+	</text>
+	<text name="upload_help">
+		Per cambiare una cartella di destinazione, fai clic col pulsante destro del mouse sulla cartella desiderata nell&apos;inventario e sceglila
+ &quot;Usa come impostazione predefinita per&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
index ba564999873aa2fbb3c38b110d73a832ea6f68d9..50fb3d39fa4099f5d63cab3914fe7f93e8e9829b 100644
--- a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Salva sul disco" name="save_to_computer_btn"/>
 	<button label="Salva nell&apos;inventario (L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="Carica sul profilo" name="save_to_profile_btn"/>
-	<button label="Carica su Facebook" name="send_to_facebook_btn"/>
-	<button label="Carica su Twitter" name="send_to_twitter_btn"/>
-	<button label="Carica su Flickr" name="send_to_flickr_btn"/>
+	<button label="Condividi sul feed del profilo" name="save_to_profile_btn"/>
+	<button label="Condividi su Facebook" name="send_to_facebook_btn"/>
+	<button label="Condividi su Twitter" name="send_to_twitter_btn"/>
+	<button label="Condividi su Flickr" name="send_to_flickr_btn"/>
 	<button label="Invia tramite e-mail" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 8246f91d17eac6b6277799498e737fc51bcd784f..e7dbc7d81744a32b7b8379fc81e2a6d7c042fd03 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1482,7 +1482,8 @@ Prova ad accedere nuovamente tra un minuto.
 		Il [[MARKETPLACE_CREATE_STORE_URL] negozio nel Marketplace] ha riportato errori.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Questa funzione è al momento in versione beta. Per partecipare, aggiungi il tuo nome a questo [http://goo.gl/forms/FCQ7UXkakz modulo Google].
+		Errore nell&apos;apertura degli annunci di Marketplace.
+Se continui a ricevere questo messaggio, contatta l&apos;assistenza Second Life su http://support.secondlife.com.
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		La cartella degli annunci di Marketplace è vuota.
@@ -4362,6 +4363,12 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="conference-title-incoming">
 		Chiamata in conferenza con [AGENT_NAME]
 	</string>
+	<string name="inventory_item_offered-im">
+		Offerto oggetto di inventario &quot;[ITEM_NAME]&quot;
+	</string>
+	<string name="inventory_folder_offered-im">
+		Offerta cartella di inventario &quot;[ITEM_NAME]&quot;
+	</string>
 	<string name="flickr_post_success">
 		Hai pubblicato su Flickr.
 	</string>
@@ -4444,7 +4451,10 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 		Posizione di base impostata.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] ti ha inviato un pagamento di L$[AMOUNT] [REASON].
@@ -4815,8 +4825,8 @@ Segnala abuso
 	<string name="server_is_down">
 		Nonostante i nostri tentativi, si è verificato un errore imprevisto.
 
-	Consulta la pagina status.secondlifegrid.net per determinare se si sia verificato un problema noto con il servizio.
-        Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e della firewall.
+Consulta la pagina http://status.secondlifegrid.net per determinare se il problema del servizio è già stato riscontrato.
+        Se il problema continua, ti consigliamo di controllare le tue impostazioni di rete e del firewall.
 	</string>
 	<string name="dateTimeWeekdaysNames">
 		lunedì:martedì:mercoledì:giovedì:venerdì:sabato:domenica
@@ -5276,6 +5286,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Gestures_Label">
 		Gesture
 	</string>
+	<string name="Command_Grid_Status_Label">
+		Stato della griglia
+	</string>
 	<string name="Command_HowTo_Label">
 		Istruzioni
 	</string>
@@ -5369,6 +5382,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="Command_Gestures_Tooltip">
 		Gesti per il tuo avatar
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Mostra stato griglia corrente
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Come eseguire le attività più comuni
 	</string>
@@ -5591,6 +5607,9 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="loading_chat_logs">
 		Caricamento in corso...
 	</string>
+	<string name="na">
+		n/d
+	</string>
 	<string name="preset_combo_label">
 		-Lista vuota-
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 8614335690c4f7c5e35bc477560b7364e7b74802..3fbad3e7a7390bc1173bf9631b9afbce45e992f7 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -450,7 +450,7 @@
 			<spinner label="アクセス時間:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="常に許可" name="AllowedText">
-					立入を許可された住人 ([COUNT])
+					許可された住人 ([COUNT]、最大 [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="(合計[LISTED] 人、最大 [MAX] 人)"/>
 				<button label="追加" name="add_allowed"/>
@@ -458,7 +458,7 @@
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="禁止" name="BanCheck">
-					立入を禁止された住人 ([COUNT])
+					立入禁止された住人 ([COUNT]、最大 [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="(合計 [LISTED] 人、最大 [MAX] 人)"/>
 				<button label="追加" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c0a644e3ae847663a1cff3b3c38c1f834b0b1584
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="アバターの描画設定">
+	<string name="av_never_render" value="使用しない"/>
+	<string name="av_always_render" value="常に使用する"/>
+	<filter_editor label="人をフィルター" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="選択した人に対するアクション:"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="名前" name="name"/>
+		<name_list.columns label="描画設定" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_flickr.xml b/indra/newview/skins/default/xui/ja/floater_flickr.xml
index e406d17d37f8f8457e98450455eb5cf148b85d6e..77df22c9a07b8b4e820ca72d0e254dc503394431 100644
--- a/indra/newview/skins/default/xui/ja/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/ja/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="FLICKR にアップロード">
+<floater name="floater_flickr" title="FLICKR で共有する">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="写真" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
index d48a8241ecb899158df395ea0294205d1b3e2076..fa337defe75bb26f2aee1e6493ae47ba4c2ab253 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="プライバシー" name="im"/>
 		<panel label="セットアップ" name="input"/>
 		<panel label="詳細" name="advanced1"/>
+		<panel label="アップロード" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml
index dc7165b1ed0e7e9435e41dbec8814ed665c8abfb..5e9a0a5ddd14c9b45c4b10c34ea14634adfe0b99 100644
--- a/indra/newview/skins/default/xui/ja/floater_tos.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tos.xml
@@ -13,6 +13,6 @@
 		次の利用規約とプライバシーポリシーをよくお読みください。 [SECOND_LIFE] へのログインを続けるには、規約に同意する必要があります。
 	</text>
 	<text name="external_tos_required">
-		操作を続けるには、my.secondlife.com に移動して、ログインし、利用規約を承諾する必要があります。ありがとうございました。
+		操作を続けるに、https://my.secondlife.com に移動し、利用規約に同意する必要があります。
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
index 23357ebbc2b2b60972f5e078e4758bcfbac0d196..24cb642323653a91d941a204a0f44ec8354ab7f5 100644
--- a/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/ja/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="ズームイン" name="Zoom In"/>
 	<menu_item_call label="支払う" name="Pay..."/>
 	<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
-	<menu_item_check label="通常表示" name="RenderNormally"/>
-	<menu_item_check label="表示しない" name="DoNotRender"/>
-	<menu_item_check label="完全表示" name="AlwaysRenderFully"/>
+	<context_menu label="アバターを描画" name="Render Avatar">
+		<menu_item_check label="デフォルト" name="RenderNormally"/>
+		<menu_item_check label="常に使用する" name="AlwaysRenderFully"/>
+		<menu_item_check label="使用しない" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
index 1902c9b359f7dd2b78cb2c39ab2734ef557ce0dc..44a71f1f375f450e631e4692ab1c9eab4ef9c6e8 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="ダンプ XML" name="Dump XML"/>
 	<menu_item_call label="ズームイン" name="Zoom In"/>
 	<menu_item_call label="支払う" name="Pay..."/>
-	<menu_item_check label="通常表示" name="RenderNormally"/>
-	<menu_item_check label="表示しない" name="DoNotRender"/>
-	<menu_item_check label="完全表示" name="AlwaysRenderFully"/>
+	<context_menu label="アバターを描画" name="Render Avatar">
+		<menu_item_check label="デフォルト" name="RenderNormally"/>
+		<menu_item_check label="常に使用する" name="AlwaysRenderFully"/>
+		<menu_item_check label="使用しない" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="パーティクル所有者をブロック" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59c80bdb0e1e9c4646569c341d32206cd0174551
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="デフォルト" name="default"/>
+	<menu_item_check label="常に描画" name="always_render"/>
+	<menu_item_check label="描画しない" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4f78cad3148bf32239c2c69a2af68c858a55704
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="常に住人を描画する..." name="add_avatar_always_render"/>
+	<menu_item_call label="住人を描画しない..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
index abf490a2479b21bbf8a60f6048b955008f620da0..3eacfb3507815a1f343f0de9ef02be5a0e8b483e 100644
--- a/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="お気に入りからの追加・削除" name="activate"/>
+	<menu_item_call label="選択したジェスチャーのアクティベートの有無" name="activate"/>
 	<menu_item_call label="コピー" name="copy_gesture"/>
 	<menu_item_call label="貼り付け" name="paste"/>
 	<menu_item_call label="UUID をコピー" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index 9a68ed8a6b2a0d464f34ec1b9f693ed6f97b3ab9..d53f9657b0a281dbd1b3a924a3ac1020d948cd3a 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="新しい髪" name="New Hair"/>
 		<menu_item_call label="新しい眼" name="New Eyes"/>
 	</menu>
+	<menu label="次のデフォルトとして使用" name="upload_def">
+		<menu_item_call label="画像のアップロード" name="Image uploads"/>
+		<menu_item_call label="サウンドのアップロード" name="Sound uploads"/>
+		<menu_item_call label="アニメーションのアップロード" name="Animation uploads"/>
+		<menu_item_call label="モデルのアップロード" name="Model uploads"/>
+	</menu>
 	<menu label="種類を変更" name="Change Type">
 		<menu_item_call label="デフォルト" name="Default"/>
 		<menu_item_call label="手袋" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="着用中のアウトフィットを入れ替える" name="Replace Outfit"/>
 	<menu_item_call label="着用中のアウトフィットに追加する" name="Add To Outfit"/>
 	<menu_item_call label="着用中のアウトフィットから取り除く" name="Remove From Outfit"/>
+	<menu_item_call label="アウトフィットのリストをクリップボードにコピー" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="オリジナルを探す" name="Find Original"/>
 	<menu_item_call label="アイテムを除外する" name="Purge Item"/>
 	<menu_item_call label="アイテムを復元する" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="コピー" name="Copy"/>
 	<menu_item_call label="貼り付け" name="Paste"/>
 	<menu_item_call label="リンクを貼り付ける" name="Paste As Link"/>
-	<menu_item_call label="削除" name="Remove Link"/>
 	<menu_item_call label="削除" name="Delete"/>
 	<menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/>
 	<menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="編集" name="Wearable Edit"/>
 	<menu_item_call label="追加" name="Wearable Add"/>
 	<menu_item_call label="取り外す" name="Take Off"/>
-	<menu_item_call label="マーチャントのアウトボックスにコピー" name="Merchant Copy"/>
 	<menu_item_call label="マーケットプレイスのリストにコピー" name="Marketplace Copy"/>
 	<menu_item_call label="マーケットプレイスのリストに移動" name="Marketplace Move"/>
 	<menu_item_call label="--オプションなし--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 71f36b17be547a2afeb95e4a1d98526b4cd45f0c..1f31971078c67a37be673f0ea1294a2df05fddb2 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="ミー" name="File">
 		<menu_item_call label="環境設定..." name="Preferences..."/>
+		<menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="ヘルプ" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="エラー" name="Error"/>
 			<menu_item_check label="なし" name="None"/>
 		</menu>
-		<menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
 		<menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
index b5c9d11e0214f130c6eecdfdaf9fe190c75569b9..fcc67f8d89b596c563737fe4d1d4eb557fe9ad0d 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="ブロック解除" name="unblock"/>
+	<menu_item_check label="ボイスをブロック" name="BlockVoice"/>
+	<menu_item_check label="文字をブロック" name="MuteText"/>
+	<menu_item_check label="オブジェクトのサウンドをブロック" name="BlockObjectSounds"/>
 	<menu_item_call label="プロフィール..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index e0834eb12d8a0ce514961278618f45b6315b9fce..a8be8e7616391fb0c6a05f5de36a32d281148df2 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="ボイスモーフィングなし" name="NoVoiceMorphing"/>
 			<menu_item_check label="プレビュー..." name="Preview"/>
 			<menu_item_call label="申し込む..." name="Subscribe"/>
+			<menu_item_call label="プレミアム会員特典..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="ジェスチャー..." name="Gestures"/>
 		<menu_item_check label="フレンド" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="行き先..." name="Destinations"/>
 		<menu_item_check label="世界地図" name="World Map"/>
 		<menu_item_check label="ミニマップ" name="Mini-Map"/>
-		<menu_item_check label="検索" name="Search"/>
+		<menu_item_call label="イベント" name="Events"/>
+		<menu_item_check label="検索..." name="Search"/>
 		<menu_item_call label="ホームにテレポート" name="Teleport Home"/>
 		<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
 		<menu_item_call label="スナップショット" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="コピーを取る" name="Take Copy"/>
 			<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="オブジェクトを返却する" name="Return Object back to Owner"/>
+			<menu_item_call label="複製" name="DuplicateObject"/>
 		</menu>
 		<menu label="スクリプト" name="Scripts">
+			<menu_item_check label="スクリプトの警告/エラー..." name="Script debug"/>
 			<menu_item_call label="スクリプトのリコンパイル(Mono)" name="Mono"/>
 			<menu_item_call label="スクリプトのリコンパイル(LSL)" name="LSL"/>
 			<menu_item_call label="スクリプトのリセット" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index 51ffd5fda0ca0b5b244f1cdc14004378e7752c6b..a5eed34d3007cb1b80d3735db4ddd76762889d98 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -143,8 +143,7 @@
 	<notification name="MerchantTransactionFailed">
 		マーケットプレイスによる取引が次のエラーにより失敗しました:
         
-理由:&apos;[ERROR_REASON]&apos;
-[ERROR_DESCRIPTION]
+[ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -781,6 +780,9 @@ L$ が不足しているのでこのグループに参加することができ
 	<notification name="CannotLinkPermanent">
 		地域(リージョン)の境界を越えてオブジェクトをリンクできません。
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		地域(リージョン)の境界を越えてオブジェクトをリンクできません。
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		所有者が異なるため、オブジェクトをリンクできません。
 
@@ -1815,11 +1817,10 @@ http://secondlife.com/download から最新バージョンをダウンロード
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="DoNotDisturbModeSet">
-		「通知を受けない」がオンになります。着信通信はあなたには通知されません。
+		着信拒否がオンになっています。着信する通信が通知されません。
 
-- 他の住民は「通知を受けない」の応答(「設定」&gt;「一般」で設定)を受け取ることになります。
-- テレポートのオファーはすべて受け取り拒否となります。
-- ボイスコールは拒否されます。
+- 他の住人は「着信拒否」応答を受け取ります (「環境設定」 &gt; 「一般」で設定)。
+- 音声通話は拒否されます。
 		<usetemplate ignoretext="マイ ログイン状態を「通知を受けない」モードに変更しました。" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
@@ -2597,9 +2598,6 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="Cancelled">
 		取り消されました。
 	</notification>
-	<notification name="CancelledSit">
-		座るのをやめました。
-	</notification>
 	<notification name="CancelledAttach">
 		添付が取り消されました。
 	</notification>
@@ -3922,27 +3920,26 @@ M キーを押して変更します。
 	<notification name="AvatarEjectFailed">
 		その区画の管理権限がないため、追放できませんでした。
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		区画が埋まっているため、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	<notification name="CMOParcelFull">
+		区画がいっぱいなので、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		オブジェクト &apos;[OBJECT_NAME]&apos; は、この区画で許可されていないため、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	<notification name="CMOParcelPerms">
+		ご使用のオブジェクトはこの区画で使用が許可されていないため、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		この区画でこのオブジェクトのリソースが不足しているため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	<notification name="CMOParcelResources">
+		この区画にこのオブジェクトのリソースが不足しているため、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		その区画へのアクセス権がないため、コピーが失敗しました。
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動することはできません。他のリージョンでは、リージョンの境界をまたいだこのオブジェクトを受信することができない古いバージョンを実行しているためです。
+	<notification name="CMORegionVersion">
+		他の地域(リージョン)でこのオブジェクトの地域(リージョン)をまたがる受け取りに対応していない旧バージョンを実行しているため、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		リージョン境界をまたぐナビメッシュを変更できないため、オブジェクト &apos;[OBJECT_NAME]&apos; をリージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
+	<notification name="CMONavMesh">
+		リージョンの境界にわたってナビメッシュを変更できないため、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		不明な理由により、オブジェクト &apos;[OBJECT_NAME]&apos; を、リージョン [REGION_NAME] 内の [OBJ_POSITION] に移動できません。
-([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		不明な理由により、オブジェクト &apos;[O]&apos; を地域(リージョン) [R] の [P] に移動できません。 ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		そのオブジェクトを変更する権限がありません
diff --git a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
index 9263e5f3476299177c65fc1a7c8d4bbd1ef3574e..2fb3206c7d98cd72f6a25c79a999f3dc44158bd0 100644
--- a/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="ブロックする住人・オブジェクトを選択"/>
 		<button name="unblock_btn" tool_tip="ブロックリストから住人・オブジェクトを削除"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] 件のエントリーがブロック リストにあり、制限は [LIMIT] です。
+	</text>
 	<block_list name="blocked" tool_tip="現在ブロックされている住人一覧"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml b/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml
index 16d873a8b1bc08753b27fd7fb6a263dfb35d77c9..6a484b8e59dd1d8aa3e520b0810857313293728d 100644
--- a/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/ja/panel_flickr_photo.xml
@@ -30,6 +30,6 @@
 		<combo_box.item label="Flickr レーティング区分「Moderate」" name="ModerateRating"/>
 		<combo_box.item label="Flickr レーティング区分「Restricted」" name="RestrictedRating"/>
 	</combo_box>
-	<button label="アップロード" name="post_photo_btn"/>
+	<button label="共有" name="post_photo_btn"/>
 	<button label="取り消し" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
index 8e0cf4bc9dd8a1a7cf9654950ecd16c083c5e302..5a8ff858df33fae5e02292b8eecd1e2443c419f3 100644
--- a/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/ja/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="メッセージ"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 61d914135db7efe41dab20388b35ff9013963191..fc966dc08ad49eb82d6a51d45612fe1f53f1c46e 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		遅い
 	</text>
+	<check_box initial_value="true" label="周囲 (大気) シェーダー" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="高度なライティングモデル" name="UseLightShaders"/>
 	<slider label="アバターの最大複雑度:" name="IndirectMaxComplexity" tool_tip="どの点で視覚的に複雑なアバターを JellyDoll として描くかを制御します"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="周囲 (大気) シェーダー" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="高度なライティングモデル" name="UseLightShaders"/>
+	<check_box initial_value="true" label="常に友人を描画" name="AlwaysRenderFriends"/>
+	<button label="例外..." name="RenderExceptionsButton"/>
 	<button label="設定をプリセットとして保存..." name="PrefSaveButton"/>
 	<button label="プリセットをロード..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b8524aa60fc8416f39a2e55085a195b85f160aa3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_uploads.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="アップロード" name="uploads">
+	<text name="title">
+		アップロード用の最新の宛先フォルダ
+	</text>
+	<text name="title_models">
+		画像
+	</text>
+	<text name="title_sounds">
+		サウンド
+	</text>
+	<text name="title_animation">
+		アニメーション
+	</text>
+	<text name="upload_help">
+		宛先フォルダを変更するには、持ち物でそのフォルダを右クリックして、&quot;デフォルトとして使用&quot; を選択します
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
index 492115bec0a8279c313ed3ed18b9a9970f837eab..ebaab7c1220ce5973ee9857f1bbf42df653f949d 100644
--- a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="ディスクに保存" name="save_to_computer_btn"/>
 	<button label="持ち物に保存(L$[Amount])" name="save_to_inventory_btn"/>
-	<button label="プロフィールにアップロード" name="save_to_profile_btn"/>
-	<button label="Facebook にアップロード" name="send_to_facebook_btn"/>
-	<button label="Twitter にアップロード" name="send_to_twitter_btn"/>
-	<button label="Flickr にアップロード" name="send_to_flickr_btn"/>
+	<button label="プロフィールフィードで共有する" name="save_to_profile_btn"/>
+	<button label="Facebook で共有する" name="send_to_facebook_btn"/>
+	<button label="Twitter で共有する" name="send_to_twitter_btn"/>
+	<button label="Flickr で共有する" name="send_to_flickr_btn"/>
 	<button label="メールにより送信" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 586b8ab2d357d9c6fdb3c4870dc6adea3a787e61..f3b3823e28dfdc3c4ff2bdea6f4a68a798495f94 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1491,7 +1491,7 @@ support@secondlife.com にお問い合わせください。
 		[[MARKETPLACE_CREATE_STORE_URL] マーケットプレイス ストア] がエラーを返しています。
 	</string>
 	<string name="InventoryMarketplaceError">
-		この機能は、現在、ベータ版の機能です。参加するには、この [http://goo.gl/forms/FCQ7UXkakz Google form] に名前を追加してください。
+		マーケットプレイスのリストを開くときにエラーが発生しました。引き続きこのメッセージを受信するには、Second Life のサポート (http://support.secondlife.com) にお問い合わせください
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		マーケットプレイスのリストフォルダが空です。
@@ -4444,7 +4444,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		[AGENT_NAME] とコンファレンスする
 	</string>
 	<string name="inventory_item_offered-im">
-		インベントリアイテムを送りました
+		持ち物アイテム &apos;[ITEM_NAME]&apos; が送られてきました
+	</string>
+	<string name="inventory_folder_offered-im">
+		持ち物フォルダ &apos;[ITEM_NAME]&apos; が送られてきました
 	</string>
 	<string name="share_alert">
 		インベントリからここにアイテムをドラッグします
@@ -4531,7 +4534,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		家の配置の設定。
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] は [REASON] のために L$[AMOUNT] を支払いました。
@@ -4902,7 +4908,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="server_is_down">
 		大変申し訳ございませんが、予期しない問題が発生しました。
 
-	サービスに関する既知の問題については、status.secondlifegrid.net をご覧ください。
+サービスに関する既知の問題については、http://status.secondlifegrid.net をご覧ください。
 問題が引き続き発生する場合は、お使いのネットワークやファイアウォールの設定を調べてください。
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5363,6 +5369,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Gestures_Label">
 		ジェスチャー
 	</string>
+	<string name="Command_Grid_Status_Label">
+		グリッドステータス
+	</string>
 	<string name="Command_HowTo_Label">
 		ハウツー
 	</string>
@@ -5456,6 +5465,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Command_Gestures_Tooltip">
 		アバターのジェスチャー
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		現在のグリッドステータスを表示
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		一般的タスクの実行方法
 	</string>
@@ -5678,6 +5690,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="loading_chat_logs">
 		ロード中...
 	</string>
+	<string name="na">
+		該当なし
+	</string>
 	<string name="preset_combo_label">
 		-空リスト-
 	</string>
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index ca8cf83e6289eb6b1ca64d9a06280ba3bb65a401..861523523e18fb61b7f05835d95cfccf0efe1c0d 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -451,7 +451,7 @@ Mídia:
 			<spinner label="Horas de acesso:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Always Allow" name="AllowedText">
-					Residentes permitidos ([COUNT])
+					Residentes permitidos ([COUNT], máx: [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="(Total [LISTED], máx de [MAX])"/>
 				<button label="Adicionar" name="add_allowed"/>
@@ -459,7 +459,7 @@ Mídia:
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Ban" name="BanCheck">
-					Residentes banidos ([COUNT])
+					Residentes banidos ([COUNT], máx: [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="(Total [LISTED], máx de [MAX])"/>
 				<button label="Adicionar" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b512126f98936d194a8071e28934698a3a2ac736
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="CONFIGURAÇÕES DE RENDERIZAÇÃO DO AVATAR">
+	<string name="av_never_render" value="Nunca"/>
+	<string name="av_always_render" value="Sempre"/>
+	<filter_editor label="Filtrar pessoas" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Ações nas pessoas selecionadas"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Nome" name="name"/>
+		<name_list.columns label="Configuração de renderização" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_flickr.xml b/indra/newview/skins/default/xui/pt/floater_flickr.xml
index 67d2295e41141a23b27c2b3fb36c2b18c2f753a9..d048dbb6582e780702065e80f79a50029a25742c 100644
--- a/indra/newview/skins/default/xui/pt/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/pt/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="CARREGAR NO FLICKR">
+<floater name="floater_flickr" title="COMPARTILHAR NO FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="FOTO" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
index c89a61d9b1592666cce2fb3f0f4f53439dc672af..b3cd20b0e9adcca87eb518f9f7a0133b5754e9dd 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Privacidade" name="im"/>
 		<panel label="Configurações" name="input"/>
 		<panel label="Avançado" name="advanced1"/>
+		<panel label="Envios" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml
index a86e12fd592658484c46468e93b21861fd07b248..6666f0f9ca10cde2a9d2cfe976485d0c018c9d45 100644
--- a/indra/newview/skins/default/xui/pt/floater_tos.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tos.xml
@@ -13,6 +13,6 @@
 		Leia com atenção os Termos do Serviço e a Política de Privacidade. Para continuar a entrar no [SECOND_LIFE], é preciso aceitar esses termos.
 	</text>
 	<text name="external_tos_required">
-		Antes de continuar, você precisará visitar my.secondlife.com e fazer login para aceitar os Termos de Serviço. Obrigado!
+		Antes de continuar, você precisará visitar https://my.secondlife.com e fazer login para aceitar os Termos de Serviço. Obrigado!
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
index d991c89f61df7be22481e0886dc0c5374cc4420f..f15bb0444ef02b6a4a43c49e1c8fff71c738b8e5 100644
--- a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Mais zoom" name="Zoom In"/>
 	<menu_item_call label="Pagar" name="Pay..."/>
 	<menu_item_call label="Perfil do objeto" name="Object Inspect"/>
-	<menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
-	<menu_item_check label="Não renderizar" name="DoNotRender"/>
-	<menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Renderizar avatar" name="Render Avatar">
+		<menu_item_check label="Padrão" name="RenderNormally"/>
+		<menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nunca" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
index cba849cd05a5aca080c7644ceec5eb57f7d83b29..d6021c09c998f5e0fb2bb1da37252e2c69f92bc3 100644
--- a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="Descartar XML" name="Dump XML"/>
 	<menu_item_call label="Mais zoom" name="Zoom In"/>
 	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_check label="Renderizar normalmente" name="RenderNormally"/>
-	<menu_item_check label="Não renderizar" name="DoNotRender"/>
-	<menu_item_check label="Renderizar completamente" name="AlwaysRenderFully"/>
+	<context_menu label="Renderizar avatar" name="Render Avatar">
+		<menu_item_check label="Padrão" name="RenderNormally"/>
+		<menu_item_check label="Sempre" name="AlwaysRenderFully"/>
+		<menu_item_check label="Nunca" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Bloquear proprietário da partícula" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e38bfe5802bcb994c338aea39a3e2fda946d2506
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Padrão" name="default"/>
+	<menu_item_check label="Sempre renderizar" name="always_render"/>
+	<menu_item_check label="Nunca renderizar" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6b405645d46acfbdf7dd6e2cd31e4b8e0b727c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Sempre renderizar um residente..." name="add_avatar_always_render"/>
+	<menu_item_call label="Nunca renderizar um residente..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
index 70d8ae7a8e6b0ddfd530ce5c34b59bc5f61f9369..85334d0475363648bf12ee2ab9eb1e09a9fd0715 100644
--- a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gesture_gear">
-	<menu_item_call label="Adicionar/remover de favoritos" name="activate"/>
+	<menu_item_call label="Ativar/desativar gesto selecionado" name="activate"/>
 	<menu_item_call label="Copiar" name="copy_gesture"/>
 	<menu_item_call label="Colar" name="paste"/>
 	<menu_item_call label="Copiar UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
index 79261ceb1fef396d03c7cda7ffad0736cb7ed66f..af8cfde6af41f276d6f97ec4018624c06771c16f 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Novo cabelo" name="New Hair"/>
 		<menu_item_call label="Novos olhos" name="New Eyes"/>
 	</menu>
+	<menu label="Usar como padrão para" name="upload_def">
+		<menu_item_call label="Envios de imagem" name="Image uploads"/>
+		<menu_item_call label="Envios de som" name="Sound uploads"/>
+		<menu_item_call label="Envios de animação" name="Animation uploads"/>
+		<menu_item_call label="Envios de modelos" name="Model uploads"/>
+	</menu>
 	<menu label="Alterar fonte" name="Change Type">
 		<menu_item_call label="Padrão" name="Default"/>
 		<menu_item_call label="Luvas" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Substituir look" name="Replace Outfit"/>
 	<menu_item_call label="Adicionar a look" name="Add To Outfit"/>
 	<menu_item_call label="Tirar do look atual" name="Remove From Outfit"/>
+	<menu_item_call label="Copiar lista de looks para a área de transferência" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Encontrar original" name="Find Original"/>
 	<menu_item_call label="Remover item" name="Purge Item"/>
 	<menu_item_call label="Restaurar item" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Copiar" name="Copy"/>
 	<menu_item_call label="Colar" name="Paste"/>
 	<menu_item_call label="Colar como link" name="Paste As Link"/>
-	<menu_item_call label="Excluir" name="Remove Link"/>
 	<menu_item_call label="Apagar" name="Delete"/>
 	<menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
 	<menu_item_call label="Pasta conversa em conferência" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Editar" name="Wearable Edit"/>
 	<menu_item_call label="Adicionar" name="Wearable Add"/>
 	<menu_item_call label="Tirar" name="Take Off"/>
-	<menu_item_call label="Copiar para Caixa de saída do lojista" name="Merchant Copy"/>
 	<menu_item_call label="Copiar para Listagens do Marketplace" name="Marketplace Copy"/>
 	<menu_item_call label="Mover para Listagens do Marketplace" name="Marketplace Move"/>
 	<menu_item_call label="--Sem opções--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 44cfae236b1717a58e0b314a1193d95b8c06bfe8..7b45eb1ad34b436bfd39cad830e2af207ae1caaf 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Eu" name="File">
 		<menu_item_call label="Preferências..." name="Preferences..."/>
+		<menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Ajuda" name="Help">
@@ -32,7 +33,6 @@
 			<menu_item_check label="Erro" name="Error"/>
 			<menu_item_check label="Nenhum" name="None"/>
 		</menu>
-		<menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
 		<menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
index 8bbde9b38c93c4c05a7685aa6a5c35e3873367bf..da824589c85e11d2e760a5edbd523dc0efd22088 100644
--- a/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Desbloquear" name="unblock"/>
+	<menu_item_check label="Bloquear voz" name="BlockVoice"/>
+	<menu_item_check label="Bloquear texto" name="MuteText"/>
+	<menu_item_check label="Bloquear sons de objeto" name="BlockObjectSounds"/>
 	<menu_item_call label="Perfil..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 6964941f0ae4a7f9b48d21981a21c4687e176196..542734eb22391092d603635bce6340dabee3b014 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -44,6 +44,7 @@
 			<menu_item_check label="Não distorcer voz" name="NoVoiceMorphing"/>
 			<menu_item_check label="Visualizar..." name="Preview"/>
 			<menu_item_call label="Assinar..." name="Subscribe"/>
+			<menu_item_call label="Benefício Premium..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Gestos..." name="Gestures"/>
 		<menu_item_check label="Amigos" name="My Friends"/>
@@ -57,7 +58,8 @@
 		<menu_item_call label="Destinos..." name="Destinations"/>
 		<menu_item_check label="Mapa-múndi" name="World Map"/>
 		<menu_item_check label="Mini Mapa" name="Mini-Map"/>
-		<menu_item_check label="Busca" name="Search"/>
+		<menu_item_call label="Eventos" name="Events"/>
+		<menu_item_check label="Buscar..." name="Search"/>
 		<menu_item_call label="Teletransportar para início" name="Teleport Home"/>
 		<menu_item_call label="Definir como casa" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
@@ -128,8 +130,10 @@
 			<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
 			<menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
+			<menu_item_call label="Duplicar" name="DuplicateObject"/>
 		</menu>
 		<menu label="Scripts" name="Scripts">
+			<menu_item_check label="Avisos/erros de script..." name="Script debug"/>
 			<menu_item_call label="Recompilar scripts (Mono)" name="Mono"/>
 			<menu_item_call label="Recompilar scripts (LSL)" name="LSL"/>
 			<menu_item_call label="Resetar scripts" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 0eacff11a76c90eff9254f5e5281c52a05618792..c731f09cba4efc79d16a33b3fae208a811896255 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -141,10 +141,9 @@ Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantTransactionFailed">
-		Ocorreu uma falha na transação com o Marketplace com o seguinte erro:
+		Falha na transação com o Marketplace com o seguinte erro:
         
-        Motivo: &apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -756,6 +755,9 @@ Por favor, certifique-se de que nenhum deles está travado e que você é dono d
 	<notification name="CannotLinkPermanent">
 		Os objetos não podem ser vinculados através de demarcações de região.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Os objetos não podem ser vinculados através de demarcações de região.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Impossibilitado de unir porque nem todos os objetos são do mesmo dono.
 
@@ -1774,10 +1776,9 @@ Se você estiver muito ansioso para experimentar os novos recursos e correções
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="DoNotDisturbModeSet">
-		Não perturbe está ativado.  Você não será notificado de comunicações recebidas.
+		“Não perturbe” está ativado.  Você não será notificado de comunicações recebidas.
 
 - Outros residentes receberão a sua resposta de Não perturbe (definida em Preferências &gt; Geral).
-- As ofertas de teletransporte serão recusadas.
 - Chamadas de voz serão recusadas.
 		<usetemplate ignoretext="Altero meu status para o modo Não perturbe" name="okignore" yestext="OK"/>
 	</notification>
@@ -2547,9 +2548,6 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de
 	<notification name="Cancelled">
 		Cancelado
 	</notification>
-	<notification name="CancelledSit">
-		Cancelada a ação de sentar
-	</notification>
 	<notification name="CancelledAttach">
 		Cancelado Anexar
 	</notification>
@@ -3869,32 +3867,32 @@ Tente novamente em instantes.
 	<notification name="AvatarEjectFailed">
 		A expulsão falhou porque você não tem permissão de administrador para esse lote.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque o lote está cheio.
+	<notification name="CMOParcelFull">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] porque o lote está cheio.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque seus objetos não são permitidos neste lote.
+	<notification name="CMOParcelPerms">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] porque seus objetos não são permitidos neste lote.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque não há recursos suficientes para este objeto neste lote.
+	<notification name="CMOParcelResources">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] porque não há recursos suficientes para este objeto neste lote.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		A cópia falhou porque você não tem acesso a esse lote.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque outra região está executando uma versão mais antiga, que não dá suporte o recebimento deste objeto por meio de passagem de regiões.
+	<notification name="CMORegionVersion">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] porque outra região está executando uma versão mais antiga, que não dá suporte ao recebimento deste objeto por meio de passagem de regiões.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] porque você não está autorizado a modificar o navmesh além dos limites da região.
+	<notification name="CMONavMesh">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] porque você não pode modificar o navmesh pelas demarcações da região.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Não é possível mover &apos;[OBJECT_NAME]&apos; para
-[OBJ_POSITION] na região [REGION_NAME] por uma razão desconhecida. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Não foi possível mover o objeto &apos;[O]&apos; para
+[P] na região [R] por motivos desconhecido. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		Você não está autorizado a modificar este objeto
diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
index 2fcf6b9932f42222791ca1e693808b649fc54bd0..3404f032ce40f8bc060feaba58e65a908fd44385 100644
--- a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Escolher um residente ou um objeto a ser bloqueado"/>
 		<button name="unblock_btn" tool_tip="Remover residente ou objeto da lista dos bloqueados"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] registros na sua lista de bloqueados. O limite é [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml b/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml
index cbb3e362fe43d4d95bfd15fc162d94571e22689b..66a4f3ee3eb9bf409df1058436376ce9753d8615 100644
--- a/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/pt/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Use &quot;&quot; para tags com várias palavras
 		<combo_box.item label="Classificação moderada do Flickr" name="ModerateRating"/>
 		<combo_box.item label="Classificação restrita do Flickr" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Enviar" name="post_photo_btn"/>
+	<button label="Compartilhar" name="post_photo_btn"/>
 	<button label="Cancelar" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
index dcd9ba18154a4f03bb410d35bba64d139fee45cd..a111188b9ec34e21e4b0ac9b20dc99bc2440aff3 100644
--- a/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/pt/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="mensagem"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
index fa17a4ff110e9907183060dfbb890bfd2cbf2474..a0f4ea4ed5d9d4023ccf55e48a8e89bfdb89fb81 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
@@ -25,12 +25,14 @@ rápido
 	<text name="BetterText">
 		Melhor
 	</text>
+	<check_box initial_value="true" label="Tonalidades atmosféricas" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Modelo avançado de luzes" name="UseLightShaders"/>
 	<slider label="Complexidade máxima do avatar:" name="IndirectMaxComplexity" tool_tip="Controla o ponto no qual um avatar visualmente complexo é desenhado como uma JellyDoll"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Tonalidades atmosféricas" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Modelo avançado de luzes" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Sempre renderizar amigos" name="AlwaysRenderFriends"/>
+	<button label="Exceções..." name="RenderExceptionsButton"/>
 	<button label="Salvar configurações como predefinição..." name="PrefSaveButton"/>
 	<button label="Carregar predefinição..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8050b56f0a46acb6363c7bacd5952956df6f658d
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Envios" name="uploads">
+	<text name="title">
+		Pastas de destino atuais para envios
+	</text>
+	<text name="title_models">
+		Imagens
+	</text>
+	<text name="title_sounds">
+		Sons
+	</text>
+	<text name="title_animation">
+		Animações
+	</text>
+	<text name="upload_help">
+		Para alterar a pasta de destino, clique com o botão direito nela no inventário e selecione
+&quot;Usar como padrão para&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
index d588e59f6d9bb5a4f8a832394e6bcff48225948c..067e5dbd761a676d24b2c424c62989156f33a45b 100644
--- a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Salvar no disco" name="save_to_computer_btn"/>
 	<button label="Salvar em inventário (L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="Carregar no perfil" name="save_to_profile_btn"/>
-	<button label="Carregar no Facebook" name="send_to_facebook_btn"/>
-	<button label="Carregar no Twitter" name="send_to_twitter_btn"/>
-	<button label="Carregar no Flickr" name="send_to_flickr_btn"/>
+	<button label="Compartilhar no feed do perfil" name="save_to_profile_btn"/>
+	<button label="Compartilhar no Facebook" name="send_to_facebook_btn"/>
+	<button label="Compartilhar no Twitter" name="send_to_twitter_btn"/>
+	<button label="Compartilhar no Flickr" name="send_to_flickr_btn"/>
 	<button label="Enviar por email" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 207b4e709707464024c9d4699ee45aa3461c5e37..0d50722cc52bd971f374f8e0ab0b2df60b45627d 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1437,7 +1437,8 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para
 		A loja [[MARKETPLACE_CREATE_STORE_URL] no Marketplace] está retornando erros.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Esse recurso está em beta. Inscreva-se neste [http://goo.gl/forms/FCQ7UXkakz formulário do Google] se você deseja participar.
+		Erro ao abrir as listagens do Marketplace.
+Se você continuar a receber essa mensagem, entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Sua pasta Listagens do Marketplace está vazia.
@@ -4317,7 +4318,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Conversa com [AGENT_NAME]
 	</string>
 	<string name="inventory_item_offered-im">
-		Oferta de item de inventário
+		Item do inventário &apos;[ITEM_NAME]&apos; oferecido
+	</string>
+	<string name="inventory_folder_offered-im">
+		Pasta do inventário &apos;[ITEM_NAME]&apos; oferecida
 	</string>
 	<string name="flickr_post_success">
 		Você publicou no Flickr.
@@ -4401,7 +4405,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Posição inicial definida.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] lhe pagou L$ [AMOUNT] [REASON].
@@ -4772,7 +4779,7 @@ Denunciar abuso
 	<string name="server_is_down">
 		Aconteceu algo inesperado, apesar de termos tentado impedir isso.
 
-	Cheque secondlifegrid.net para saber se foi detectado um problema com o serviço.
+Visite http://status.secondlifegrid.net para saber se foi detectado um problema com o serviço.
         Se o problema persistir, cheque a configuração da sua rede e firewall.
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5233,6 +5240,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Gestures_Label">
 		Gestos
 	</string>
+	<string name="Command_Grid_Status_Label">
+		Status da grade
+	</string>
 	<string name="Command_HowTo_Label">
 		Como
 	</string>
@@ -5326,6 +5336,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="Command_Gestures_Tooltip">
 		Gestos para seu avatar
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Mostrar status da grade atual
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Como executar tarefas comuns
 	</string>
@@ -5548,6 +5561,9 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="loading_chat_logs">
 		Carregando...
 	</string>
+	<string name="na">
+		n/d
+	</string>
 	<string name="preset_combo_label">
 		-Lista vazia-
 	</string>
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
index 28d5ff6ab96e9b2d47c0068ba84193310516f2a1..7c8faa8edecbfd38a67b9d0018c3410921c5c2af 100644
--- a/indra/newview/skins/default/xui/ru/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -446,7 +446,7 @@
 			<spinner label="Часы доступа:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Всегда разрешено" name="AllowedText">
-					Допущенные жители ([COUNT])
+					Допущенные жители ([COUNT], макс. [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
 				<button label="Добавить" name="add_allowed"/>
@@ -454,7 +454,7 @@
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Бан" name="BanCheck">
-					Забаненные жители ([COUNT])
+					Забаненные жители ([COUNT], макс. [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
 				<button label="Добавить" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c0c3196aa84dbd689f8b8cf0c819d15c91fbc67
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="НАСТРОЙКИ ОТРИСОВКИ АВАТАРА">
+	<string name="av_never_render" value="Никогда"/>
+	<string name="av_always_render" value="Всегда"/>
+	<filter_editor label="Фильтр для людей" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Действия с выбранным жителем"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Имя" name="name"/>
+		<name_list.columns label="Настройка отрисовки" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_flickr.xml b/indra/newview/skins/default/xui/ru/floater_flickr.xml
index 4f020399fb403cde894f33703c29166cd3bb7150..67a3bedc6bb7d6350837695025228728fee3a929 100644
--- a/indra/newview/skins/default/xui/ru/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/ru/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="ЗАГРУЗИТЬ НА FLICKR">
+<floater name="floater_flickr" title="ПОДЕЛИТЬСЯ В FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="ФОТО" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml
index fc244b9d8b483c00c316f9f1093c257f3b96fc9e..fa78eedd3adf8d676d02e7763df4c20db8dbc815 100644
--- a/indra/newview/skins/default/xui/ru/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Приватность" name="im"/>
 		<panel label="Конфигурация" name="input"/>
 		<panel label="Дополнительно" name="advanced1"/>
+		<panel label="Переданное" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml
index adadcc88f31ffa822ab054c8f93fb221d698676e..690affb491b72fd9c7176ce738815066e159afea 100644
--- a/indra/newview/skins/default/xui/ru/floater_tos.xml
+++ b/indra/newview/skins/default/xui/ru/floater_tos.xml
@@ -13,6 +13,6 @@
 		Внимательно прочитайте Пользовательское соглашение и Политику конфиденциальности. Для входа в [SECOND_LIFE] вы должны согласиться с условиями соглашения.
 	</text>
 	<text name="external_tos_required">
-		Для продолжения перейдите на сайт my.secondlife.com, войдите и примите Условия обслуживания. Спасибо!
+		Для продолжения перейдите на сайт https://my.secondlife.com, войдите и примите Условия обслуживания. Спасибо!
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
index 63b0698c6b6497237c168c5f6fc7d296718aed3f..2d62e38da28f60f1639f9a566514442b8920802e 100644
--- a/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Приблизить" name="Zoom In"/>
 	<menu_item_call label="Заплатить" name="Pay..."/>
 	<menu_item_call label="Профиль объекта" name="Object Inspect"/>
-	<menu_item_check label="Обычная прорисовка" name="RenderNormally"/>
-	<menu_item_check label="Не рисовать" name="DoNotRender"/>
-	<menu_item_check label="Полная прорисовка" name="AlwaysRenderFully"/>
+	<context_menu label="Рисовать аватар" name="Render Avatar">
+		<menu_item_check label="По умолчанию" name="RenderNormally"/>
+		<menu_item_check label="Всегда" name="AlwaysRenderFully"/>
+		<menu_item_check label="Никогда" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Блокировать владельца участка" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
index de35264055ff277f761d5f5bc03952012cd97f2f..af59b2742cef32deb88afb5c8babae1e3b58f3b4 100644
--- a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="Вывод XML" name="Dump XML"/>
 	<menu_item_call label="Приблизить" name="Zoom In"/>
 	<menu_item_call label="Заплатить" name="Pay..."/>
-	<menu_item_check label="Обычная прорисовка" name="RenderNormally"/>
-	<menu_item_check label="Не рисовать" name="DoNotRender"/>
-	<menu_item_check label="Полная прорисовка" name="AlwaysRenderFully"/>
+	<context_menu label="Прорисовать аватар" name="Render Avatar">
+		<menu_item_check label="По умолчанию" name="RenderNormally"/>
+		<menu_item_check label="Всегда" name="AlwaysRenderFully"/>
+		<menu_item_check label="Никогда" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Блокировать владельца участка" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1ec8d67b14d6a699eb405a622a51acba09740a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="По умолчанию" name="default"/>
+	<menu_item_check label="Всегда рисовать" name="always_render"/>
+	<menu_item_check label="Никогда не рисовать" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3807458cd3edf309c28f4df230c86560791e608d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Всегда рисовать жителя..." name="add_avatar_always_render"/>
+	<menu_item_call label="Никогда не рисовать жителя..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
index d0b68cefbd38252e03c747964e643bb7eaf240e1..74ec79a9dc6331c1f9449b7e33e477d225a7ffea 100644
--- a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_gesture_gear">
-	<menu_item_call label="Добавить в избранное/удалить" name="activate"/>
+	<menu_item_call label="Активировать/деактивировать выбранный жест" name="activate"/>
 	<menu_item_call label="Копировать" name="copy_gesture"/>
 	<menu_item_call label="Вставить" name="paste"/>
 	<menu_item_call label="Копировать UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
index b8cbef8246bbcd77116f6bb53e0704639365ca6e..0097d7e3018316e4555365df29401b69a4969a44 100644
--- a/indra/newview/skins/default/xui/ru/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Новые волосы" name="New Hair"/>
 		<menu_item_call label="Новые глаза" name="New Eyes"/>
 	</menu>
+	<menu label="Использовать по умолчанию для" name="upload_def">
+		<menu_item_call label="Переданные изображения" name="Image uploads"/>
+		<menu_item_call label="Переданные звуки" name="Sound uploads"/>
+		<menu_item_call label="Переданные анимации" name="Animation uploads"/>
+		<menu_item_call label="Переданные модели" name="Model uploads"/>
+	</menu>
 	<menu label="Сменить тип" name="Change Type">
 		<menu_item_call label="По умолчанию" name="Default"/>
 		<menu_item_call label="Перчатки" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Сменить текущий костюм" name="Replace Outfit"/>
 	<menu_item_call label="Добавить к текущему костюму" name="Add To Outfit"/>
 	<menu_item_call label="Убрать из текущего костюма" name="Remove From Outfit"/>
+	<menu_item_call label="Копировать список костюмов в буфер обмена" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Найти оригинал" name="Find Original"/>
 	<menu_item_call label="Удалить навсегда" name="Purge Item"/>
 	<menu_item_call label="Восстановить вещь" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Копировать" name="Copy"/>
 	<menu_item_call label="Вставить" name="Paste"/>
 	<menu_item_call label="Вставить как ссылку" name="Paste As Link"/>
-	<menu_item_call label="Удалить" name="Remove Link"/>
 	<menu_item_call label="Удалить" name="Delete"/>
 	<menu_item_call label="Удалить системную папку" name="Delete System Folder"/>
 	<menu_item_call label="Начать конференцию" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Изменить" name="Wearable Edit"/>
 	<menu_item_call label="Добавить" name="Wearable Add"/>
 	<menu_item_call label="Снять" name="Take Off"/>
-	<menu_item_call label="Копировать в «Торговые исходящие»" name="Merchant Copy"/>
 	<menu_item_call label="Копировать в списки товаров торгового центра" name="Marketplace Copy"/>
 	<menu_item_call label="Переместить в списки товаров торгового центра" name="Marketplace Move"/>
 	<menu_item_call label="- нет действий -" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
index 2d1fe282421b5d0bfb2a08720ad3dc6d29050c49..754803904a076e55f584ee5dbe2a05b436537ec4 100644
--- a/indra/newview/skins/default/xui/ru/menu_login.xml
+++ b/indra/newview/skins/default/xui/ru/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Я" name="File">
 		<menu_item_call label="Настройки..." name="Preferences..."/>
+		<menu_item_check label="Выбор сетки" name="Show Grid Picker"/>
 		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Справка" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="Ошибка" name="Error"/>
 			<menu_item_check label="Нет" name="None"/>
 		</menu>
-		<menu_item_check label="Выбор сетки" name="Show Grid Picker"/>
 		<menu_item_call label="Консоль уведомлений" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
index 157f2ad5e237868910bb170d441af8e2e6b91eba..c06776d5f903b4add4220cb85b6d6a5eb8dc74d6 100644
--- a/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Разблокировать" name="unblock"/>
+	<menu_item_check label="Блокировать голос" name="BlockVoice"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+	<menu_item_check label="Блокировать звуки объекта" name="BlockObjectSounds"/>
 	<menu_item_call label="Профиль…" name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
index e5e484173d151f9e36539319f76d177a7a3c63c3..e0d88612258eb48efe663943530a068270961953 100644
--- a/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -42,6 +42,7 @@
 			<menu_item_check label="Без изменения голоса" name="NoVoiceMorphing"/>
 			<menu_item_check label="Просмотр..." name="Preview"/>
 			<menu_item_call label="Подписаться..." name="Subscribe"/>
+			<menu_item_call label="Премиум-бонус..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Жесты..." name="Gestures"/>
 		<menu_item_check label="Друзья" name="My Friends"/>
@@ -55,7 +56,8 @@
 		<menu_item_call label="Пункты..." name="Destinations"/>
 		<menu_item_check label="Карта мира" name="World Map"/>
 		<menu_item_check label="Миникарта" name="Mini-Map"/>
-		<menu_item_check label="Поиск" name="Search"/>
+		<menu_item_call label="События" name="Events"/>
+		<menu_item_check label="Поиск..." name="Search"/>
 		<menu_item_call label="Телепортация домой" name="Teleport Home"/>
 		<menu_item_call label="Установить дом здесь" name="Set Home to Here"/>
 		<menu_item_call label="Снимок" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
 			<menu_item_call label="Взять копию" name="Take Copy"/>
 			<menu_item_call label="Сохранить в контенте объектов" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Вернуть объект" name="Return Object back to Owner"/>
+			<menu_item_call label="Дублировать" name="DuplicateObject"/>
 		</menu>
 		<menu label="Скрипты" name="Scripts">
+			<menu_item_check label="Предупреждения/ошибки скриптов..." name="Script debug"/>
 			<menu_item_call label="Перекомпилировать скрипты (Mono)" name="Mono"/>
 			<menu_item_call label="Перекомпилировать скрипты (LSL)" name="LSL"/>
 			<menu_item_call label="Сброс скриптов" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
index 5f3a8571e854147d737e10b25cf959a57dafb4e8..6e649bca6f57c65aa95a5e58def2d9c208b5b911 100644
--- a/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -144,8 +144,7 @@
 	<notification name="MerchantTransactionFailed">
 		Не удалось выполнить транзакцию с торговым центром, ошибка:
         
-        Причина: &apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@
 	<notification name="CannotLinkPermanent">
 		Объекты нельзя связывать через границу региона.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Объекты нельзя связывать через границу региона.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Невозможно объединить объекты: не у всех объектов один владелец.
 
@@ -1786,7 +1788,6 @@ http://secondlife.com/download.
 		Режим «Не беспокоить» включен.  Вы не будете получать уведомлений о входящих вызовах.
 
 - Другие жители будут получать ваш ответ, установленный для режима «Не беспокоить» (Настройки &gt; Общие).
-- Предложения телепортации будут отклоняться.
 - Голосовые вызовы будут отклоняться.
 		<usetemplate ignoretext="Смена моего статуса на режим «Не беспокоить»" name="okignore" yestext="OK"/>
 	</notification>
@@ -2554,9 +2555,6 @@ http://secondlife.com/download.
 	<notification name="Cancelled">
 		Отменено
 	</notification>
-	<notification name="CancelledSit">
-		Отмененная посадка
-	</notification>
 	<notification name="CancelledAttach">
 		Отмененное присоединение
 	</notification>
@@ -3882,31 +3880,32 @@ http://secondlife.com/download.
 	<notification name="AvatarEjectFailed">
 		Не удалось выбросить: у вас нет прав администратора на этом участке.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию «[OBJ_POSITION]» региона [REGION_NAME]: участок уже заполнен.
+	<notification name="CMOParcelFull">
+		Нельзя переместить объект «[O]» в позицию
+«[P]» региона [R]: участок уже заполнен.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: вашим объектам не разрешено присутствовать на этом участке.
+	<notification name="CMOParcelPerms">
+		Нельзя переместить объект «[O]» в позицию
+«[P]» региона [R]: вашим объектам не разрешено присутствовать на этом участке.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: на этом участке недостаточно ресурсов для данного объекта.
+	<notification name="CMOParcelResources">
+		Нельзя переместить объект «[O]» в позицию
+«[P]» региона [R]: на этом участке недостаточно ресурсов для данного объекта.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		Не удалось скопировать: у вас нет доступа к этому участку.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-[OBJ_POSITION] региона [REGION_NAME]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов.
+	<notification name="CMORegionVersion">
+		Нельзя переместить объект «[O]» в позицию
+    [P] региона [R]: в другом регионе работает старая версия симулятора, которая не поддерживает прием этого объекта через границу регионов.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-«[OBJ_POSITION]» региона [REGION_NAME]: вам не разрешено изменять навигационную сетку за пределами региона.
+	<notification name="CMONavMesh">
+		Нельзя переместить объект «[O]» в позицию
+«[P]» региона [R]: вам не разрешено изменять навигационную сетку за пределами региона.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Нельзя переместить объект «[OBJECT_NAME]» в позицию
-[OBJ_POSITION] региона [REGION_NAME] по неизвестной причине. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Нельзя переместить объект «[O]» в позицию
+[P] региона [R] по неизвестной причине. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		У вас нет прав на изменение этого объекта
diff --git a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
index 70a1b259969d4a9ae09fb1c20b654a55151b86e0..13a02fac2f6c2a0918f60aaa0e4d2fcb4dc9af93 100644
--- a/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Выберите жителя или объект для блокировки"/>
 		<button name="unblock_btn" tool_tip="Удалить объект или жителя из списка заблокированных"/>
 	</panel>
+	<text name="block_limit">
+		[COUNT] пунктов в вашем черном списке, разрешено не больше [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Список заблокированных жителей"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml b/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml
index 9dd68699ca1ed02ffca4a59676ec3601ddd79181..f4cff55db2da64a2377f824a5fe5ccd27b3aeff2 100644
--- a/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/ru/panel_flickr_photo.xml
@@ -29,6 +29,6 @@
 		<combo_box.item label="Умеренный рейтинг Flickr" name="ModerateRating"/>
 		<combo_box.item label="Ограниченный рейтинг Flickr" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Передать" name="post_photo_btn"/>
+	<button label="Поделиться" name="post_photo_btn"/>
 	<button label="Отмена" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
index 1ac88a01b31fc32414ec992d01c4dd8fb9a1b135..eb8296904dab08e47ea62f486ef512fa977ce6a5 100644
--- a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="сообщение"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
index 200241bd4dcbc53ee6da7c81d3dcc3745874cbc0..4524fb4d434060cf9b3274d2e2dd7dc2f431c6f0 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Качественней
 	</text>
+	<check_box initial_value="true" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Расширенная модель освещения" name="UseLightShaders"/>
 	<slider label="Максимальная сложность аватара:" name="IndirectMaxComplexity" tool_tip="Указывает расстояние, начиная с которого визуально сложный аватар рисуется как мармеладный мишка"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Расширенная модель освещения" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Всегда рисовать друзей" name="AlwaysRenderFriends"/>
+	<button label="Исключения..." name="RenderExceptionsButton"/>
 	<button label="Сохранить настройки как пресет..." name="PrefSaveButton"/>
 	<button label="Загрузить пресет..." name="PrefLoadButton"/>
 	min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..487c92bd2a0719ca8bd0f2ab348142e27cfd3282
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Загрузки" name="uploads">
+	<text name="title">
+		Текущие папки назначения для передачи
+	</text>
+	<text name="title_models">
+		Изображения
+	</text>
+	<text name="title_sounds">
+		Звуки
+	</text>
+	<text name="title_animation">
+		Анимация
+	</text>
+	<text name="upload_help">
+		Чтобы сменить папку назначения, щелкните ее в инвентаре правой кнопкой мыши и выберите
+ &quot;Использовать по умолчанию для&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
index 9a5bbf3bacbd3133495a696c44597cb23e65f7ee..7ba03ee0c9b86ae197a7207626cf7f90b9d0feae 100644
--- a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Сохранить на диске" name="save_to_computer_btn"/>
 	<button label="Сохранить в инвентаре (L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="Загрузить в профиль" name="save_to_profile_btn"/>
-	<button label="Загрузить в Facebook" name="send_to_facebook_btn"/>
-	<button label="Загрузить в Twitter" name="send_to_twitter_btn"/>
-	<button label="Загрузить на Flickr" name="send_to_flickr_btn"/>
+	<button label="Поделиться в профиле" name="save_to_profile_btn"/>
+	<button label="Поделиться в Facebook" name="send_to_facebook_btn"/>
+	<button label="Поделиться в Twitter" name="send_to_twitter_btn"/>
+	<button label="Поделиться в Flickr" name="send_to_flickr_btn"/>
 	<button label="Отправить по почте" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index e44d63b3b97d421c28a14353e0cb1e3a23311b76..86ef6298acf6fbfb119496b1aed45d6d639aa40a 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -1488,7 +1488,8 @@ support@secondlife.com.
 		[[MARKETPLACE_CREATE_STORE_URL] Магазин] возвращает ошибки.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Это бета-версия функции. Если вы хотите участвовать в ее тестировании, заполните эту [http://goo.gl/forms/FCQ7UXkakz форму Google].
+		Ошибка при открытии списков товаров торгового центра.
+Если данное сообщение повторится, обратитесь за помощью в службу поддержки Second Life на странице http://support.secondlife.com
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Папка списков товаров торгового центра пуста.
@@ -4438,7 +4439,10 @@ support@secondlife.com.
 		Конференция с жителем [AGENT_NAME]
 	</string>
 	<string name="inventory_item_offered-im">
-		Предложено пополнить инвентарь
+		Предложен предмет инвентаря «[ITEM_NAME]»
+	</string>
+	<string name="inventory_folder_offered-im">
+		Предложена папка инвентаря «[ITEM_NAME]»
 	</string>
 	<string name="share_alert">
 		Перетаскивайте вещи из инвентаря сюда
@@ -4525,7 +4529,10 @@ support@secondlife.com.
 		Задано положение дома.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		Житель [NAME] заплатил вам L$[AMOUNT] за [REASON].
@@ -4896,7 +4903,7 @@ support@secondlife.com.
 	<string name="server_is_down">
 		Несмотря на наши усилия, что-то неожиданно пошло не так.
 
-	Ознакомьтесь с описанием известных проблем в работе этой службы на сайте status.secondlifegrid.net.
+Ознакомьтесь с описанием известных проблем в работе этой службы на сайте http://status.secondlifegrid.net.
         Если проблемы продолжаются, то проверьте подключение к сети и настройки брандмауэра.
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5369,6 +5376,9 @@ support@secondlife.com.
 	<string name="Command_Gestures_Label">
 		Жесты
 	</string>
+	<string name="Command_Grid_Status_Label">
+		Состояние сетки
+	</string>
 	<string name="Command_HowTo_Label">
 		Инструкции
 	</string>
@@ -5462,6 +5472,9 @@ support@secondlife.com.
 	<string name="Command_Gestures_Tooltip">
 		Жесты для аватара
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Показать текущее состояние сетки
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Выполнение типичных задач
 	</string>
@@ -5684,6 +5697,9 @@ support@secondlife.com.
 	<string name="loading_chat_logs">
 		Загрузка...
 	</string>
+	<string name="na">
+		н/д
+	</string>
 	<string name="preset_combo_label">
 		-Пустой список-
 	</string>
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
index e4d38361ca0762049de0e0d6e24093f16ad9f173..842fc3a6d8f63accfe5cbf29fdda2f7d3e8eee3a 100644
--- a/indra/newview/skins/default/xui/tr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -446,7 +446,7 @@ Sadece büyük parseller aramada görünür.
 			<spinner label="EriÅŸim saatleri:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="Her Zaman Ä°zin Ver" name="AllowedText">
-					Ä°zin Verilen Sakinler ([COUNT])
+					Ä°zin Verilen Sakinler ([COUNT], maks. [MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
 				<button label="Ekle" name="add_allowed"/>
@@ -454,7 +454,7 @@ Sadece büyük parseller aramada görünür.
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="Yasakla" name="BanCheck">
-					Yasaklı Sakinler ([COUNT])
+					EngellenmiÅŸ Sakinler ([COUNT], maks. [MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
 				<button label="Ekle" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3f16d73c23df6e2bfed30f64873aeff34089e2a6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="AVATAR Ä°ÅžLEME AYARLARI">
+	<string name="av_never_render" value="Asla"/>
+	<string name="av_always_render" value="Her Zaman"/>
+	<filter_editor label="KiÅŸileri Filtrele" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="Seçilen kişi üzerinde eylemler"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="Ad" name="name"/>
+		<name_list.columns label="İşleme ayarı" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_flickr.xml b/indra/newview/skins/default/xui/tr/floater_flickr.xml
index 4fa677067331d9d78b58c60c578b320700c243e6..f559808f44ce474d076cf66300bdbd05e08adf76 100644
--- a/indra/newview/skins/default/xui/tr/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/tr/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="FLICKR&apos;A YÃœKLE">
+<floater name="floater_flickr" title="FLICKR&apos;DA PAYLAÅž">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="FOTOÄžRAF" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml
index edb3c19b81f04f5d6be58e5fbce45b6624519890..679b0182471346c92818bda885eed7eb70a48770 100644
--- a/indra/newview/skins/default/xui/tr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/tr/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="Gizlilik" name="im"/>
 		<panel label="Ayarlar" name="input"/>
 		<panel label="GeliÅŸmiÅŸ" name="advanced1"/>
+		<panel label="Karşıya Yüklemeler" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml
index 87beb5476f714d438d2dc2ce7f32532ec8c0a816..04096ba35f2dbcc057e659588b2f5b79fc285052 100644
--- a/indra/newview/skins/default/xui/tr/floater_tos.xml
+++ b/indra/newview/skins/default/xui/tr/floater_tos.xml
@@ -13,6 +13,6 @@
 		Aşağıdaki Hizmet Koşullarını ve Gizlilik Politikasını dikkatle okuyun. [SECOND_LIFE]&apos;ta oturum açmaya devam etmek için anlaşmayı kabul etmelisiniz.
 	</text>
 	<text name="external_tos_required">
-		Devam etmeden önce my.secondlife.com adresine gitmeniz ve oturum açarak Hizmet Şartlarını kabul etmeniz gerekiyor. Teşekkürler!
+		Devam edebilmeniz için https://my.secondlife.com adresine gidip oturum açarak Hizmet Sözleşmesi&apos;ni kabul etmeniz gerekir. Teşekkürler!
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
index cef661dbf42672d1f929c3b6ee0cee73b29062e2..a68abf53c80a901c486d9cd542d692f2448a7cf9 100644
--- a/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="Yakınlaştır" name="Zoom In"/>
 	<menu_item_call label="Öde" name="Pay..."/>
 	<menu_item_call label="Nesne Profili" name="Object Inspect"/>
-	<menu_item_check label="Normal Olarak Ä°ÅŸle" name="RenderNormally"/>
-	<menu_item_check label="Ä°ÅŸleme" name="DoNotRender"/>
-	<menu_item_check label="Tam Olarak Ä°ÅŸle" name="AlwaysRenderFully"/>
+	<context_menu label="Avatarı İşle" name="Render Avatar">
+		<menu_item_check label="Varsayılan" name="RenderNormally"/>
+		<menu_item_check label="Her Zaman" name="AlwaysRenderFully"/>
+		<menu_item_check label="Asla" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
index 87b0d3b7eb3561d7b420d21b235e49bc80e8897f..a616dc1dea8c41966d8b46163b91fa8897282414 100644
--- a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="XML Dökümünü Al" name="Dump XML"/>
 	<menu_item_call label="Yakınlaştır" name="Zoom In"/>
 	<menu_item_call label="Öde" name="Pay..."/>
-	<menu_item_check label="Normal Olarak Ä°ÅŸle" name="RenderNormally"/>
-	<menu_item_check label="Ä°ÅŸleme" name="DoNotRender"/>
-	<menu_item_check label="Tam Olarak Ä°ÅŸle" name="AlwaysRenderFully"/>
+	<context_menu label="Avatarı İşle" name="Render Avatar">
+		<menu_item_check label="Varsayılan" name="RenderNormally"/>
+		<menu_item_check label="Her Zaman" name="AlwaysRenderFully"/>
+		<menu_item_check label="Asla" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="Parçacık Sahibini Engelle" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a27fec53ad604c837a04a45e5bf4169031d8133
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="Varsayılan" name="default"/>
+	<menu_item_check label="Her zaman iÅŸle" name="always_render"/>
+	<menu_item_check label="Asla iÅŸleme" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8379f22a686dd38f3bfedcc4ca69adda50ce4cc7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="Her Zaman Bir Sakin Olarak Ä°ÅŸle..." name="add_avatar_always_render"/>
+	<menu_item_call label="Asla Bir Sakin Olarak Ä°ÅŸleme..." name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
index cb9b678fddce6128a069b15fd46c1ba064c7af89..a0eab25829a0e843d4381a5f11b99d28cee7b9f3 100644
--- a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_gesture_gear">
-	<menu_item_call label="Favorilere Ekle/Çıkar" name="activate"/>
+	<menu_item_call label="Seçilen jesti etkinleştir/devre dışı bırak" name="activate"/>
 	<menu_item_call label="Kopyala" name="copy_gesture"/>
 	<menu_item_call label="Yapıştır" name="paste"/>
 	<menu_item_call label="UUID&apos;yi Kopyala" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml
index 784e4d18a48097acd7957f918c77d68975d83110..96dd4e1d1f1836deacfb8d0610bf9c9960d44000 100644
--- a/indra/newview/skins/default/xui/tr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="Yeni Saç" name="New Hair"/>
 		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
 	</menu>
+	<menu label="Şunun için varsayılan olarak kullan" name="upload_def">
+		<menu_item_call label="Karşıya yüklenen görüntüler" name="Image uploads"/>
+		<menu_item_call label="Karşıya yüklenen sesler" name="Sound uploads"/>
+		<menu_item_call label="Karşıya yüklenen animasyonlar" name="Animation uploads"/>
+		<menu_item_call label="Karşıya yüklenen modeller" name="Model uploads"/>
+	</menu>
 	<menu label="Türü Değiştir" name="Change Type">
 		<menu_item_call label="Varsayılan" name="Default"/>
 		<menu_item_call label="Eldivenler" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="Mevcut Dış Görünümü Değiştir" name="Replace Outfit"/>
 	<menu_item_call label="Mevcut Dış Görünüme Ekle" name="Add To Outfit"/>
 	<menu_item_call label="Mevcut Dış Görünümden Kaldır" name="Remove From Outfit"/>
+	<menu_item_call label="Dış görünüm listesini panoya kopyala" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="Orijinali Bul" name="Find Original"/>
 	<menu_item_call label="Öğeyi Temizle" name="Purge Item"/>
 	<menu_item_call label="Öğeyi Geri Yükle" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="Kopyala" name="Copy"/>
 	<menu_item_call label="Yapıştır" name="Paste"/>
 	<menu_item_call label="Bağlantı Olarak Yapıştır" name="Paste As Link"/>
-	<menu_item_call label="Sil" name="Remove Link"/>
 	<menu_item_call label="Sil" name="Delete"/>
 	<menu_item_call label="Sistem Klasörünü Sil" name="Delete System Folder"/>
 	<menu_item_call label="Konferans Sohbeti BaÅŸlat" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="Düzenle" name="Wearable Edit"/>
 	<menu_item_call label="Ekle" name="Wearable Add"/>
 	<menu_item_call label="Çıkar" name="Take Off"/>
-	<menu_item_call label="Satıcı Giden Kutusuna Kopyala" name="Merchant Copy"/>
 	<menu_item_call label="Pazaryeri İlanlarına Kopyala" name="Marketplace Copy"/>
 	<menu_item_call label="Pazaryeri İlanlarına Taşı" name="Marketplace Move"/>
 	<menu_item_call label="--seçenek yok--" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
index 60f81c323784a707738b416d3b265153628c0422..145fc74508abb5e71dd9b2a6396dbfb6119530a4 100644
--- a/indra/newview/skins/default/xui/tr/menu_login.xml
+++ b/indra/newview/skins/default/xui/tr/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Ben" name="File">
 		<menu_item_call label="Tercihler..." name="Preferences..."/>
+		<menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/>
 		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
 	</menu>
 	<menu label="Yardım" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="Hata" name="Error"/>
 			<menu_item_check label="Hiçbiri" name="None"/>
 		</menu>
-		<menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/>
 		<menu_item_call label="Bildirimler Konsolunu Göster" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
index 2bf1101b48101d11500d604fe1eb7b03d570cb55..e9770a72b8a6b1aa38269367ee6e2a20e3400df0 100644
--- a/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+	<menu_item_check label="Sesi Engelle" name="BlockVoice"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+	<menu_item_check label="Nesne Seslerini Engelle" name="BlockObjectSounds"/>
 	<menu_item_call label="Profil..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
index f55bb3fbad4ccd715ce5240a2f7ca284f46f5632..ef001a86875c3f6e5dd2db76d62f08e59945b51b 100644
--- a/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -42,6 +42,7 @@
 			<menu_item_check label="Ses ÅŸekillendirme yok" name="NoVoiceMorphing"/>
 			<menu_item_check label="Önizleme..." name="Preview"/>
 			<menu_item_call label="Abone ol..." name="Subscribe"/>
+			<menu_item_call label="Özel üye avantajı..." name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="Mimikler..." name="Gestures"/>
 		<menu_item_check label="ArkadaÅŸlar" name="My Friends"/>
@@ -55,7 +56,8 @@
 		<menu_item_call label="Hedef Konumlar..." name="Destinations"/>
 		<menu_item_check label="Dünya haritası" name="World Map"/>
 		<menu_item_check label="Mini-harita" name="Mini-Map"/>
-		<menu_item_check label="Ara" name="Search"/>
+		<menu_item_call label="Etkinlikler" name="Events"/>
+		<menu_item_check label="Ara..." name="Search"/>
 		<menu_item_call label="Ana konuma ışınlan" name="Teleport Home"/>
 		<menu_item_call label="Ana konumu burası olarak seç" name="Set Home to Here"/>
 		<menu_item_call label="Anlık Görüntü" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
 			<menu_item_call label="Kopya Al" name="Take Copy"/>
 			<menu_item_call label="Nesne İçeriklerine Geri Kaydet" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="Nesneyi Ä°ade Et" name="Return Object back to Owner"/>
+			<menu_item_call label="Çoğalt" name="DuplicateObject"/>
 		</menu>
 		<menu label="Komut Dosyaları" name="Scripts">
+			<menu_item_check label="Komut dosyası uyarıları/hataları..." name="Script debug"/>
 			<menu_item_call label="Komut Dosyalarını Tekrar Derle (Mono)" name="Mono"/>
 			<menu_item_call label="Komut Dosyalarını Tekrar Derle (LSL)" name="LSL"/>
 			<menu_item_call label="Komut Dosyalarını Sıfırla" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
index 7996a189e3114596235003911f9bec8f02fd4cd5..43991db40cadb07bc280476b5661c6fd59f1d940 100644
--- a/indra/newview/skins/default/xui/tr/notifications.xml
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -144,8 +144,7 @@ Bir sistem veya ağ hatası nedeniyle Pazaryeri başlatılamadı.  Daha sonra te
 	<notification name="MerchantTransactionFailed">
 		Pazaryerinde yapılan işlem başarısız oldu. Hata kodu:
         
-        Neden: &quot;[ERROR_REASON]&quot;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="Tamam"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@ Lütfen hiçbirinin kilitli olmadığından ve hepsine sahip olduğunuzdan emin
 	<notification name="CannotLinkPermanent">
 		Nesneler bölge sınırları üzerinden bağlantılandırılamaz.
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		Nesneler bölge sınırları üzerinden bağlantılandırılamaz.
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		Nesnelerin hepsinin sahibi aynı olmadığı için nesneler birbirine bağlanamıyor.
 
@@ -1783,11 +1785,10 @@ Gruptan ayrılmak istiyor musunuz?
 		<usetemplate name="okbutton" yestext="Tamam"/>
 	</notification>
 	<notification name="DoNotDisturbModeSet">
-		Rahatsız Etme açık.  Gelen iletişimlerle ilgili size bilgi verilmeyecek.
+		Rahatsız Etme işlevi etkin.  Gelen mesajlar için bildirim almazsınız.
 
-- Diğer sakinlere sizin Rahatsız Etmeyin yanıtı iletilecektir (Tercihler &gt; Genel içerisinde ayarlanır).
-- Işınlanma teklifleri reddedilecektir.
-- Sesli aramalar reddedilecektir.
+- Diğer sakinler sizin Rahatsız Etme yanıtınızı alır (Tercihler &gt; Genel altında ayarlanır).
+- Sesli aramalar reddedilir.
 		<usetemplate ignoretext="Durumumu Rahatsız Etme moduna değiştiriyorum" name="okignore" yestext="Tamam"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
@@ -2553,9 +2554,6 @@ Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir we
 	<notification name="Cancelled">
 		Ä°ptal Edildi
 	</notification>
-	<notification name="CancelledSit">
-		Oturma Ä°ptal Edildi
-	</notification>
 	<notification name="CancelledAttach">
 		Takma Ä°ptal Edildi
 	</notification>
@@ -3880,26 +3878,26 @@ Lütfen bir dakika sonra tekrar deneyin.
 	<notification name="AvatarEjectFailed">
 		Çıkarma başarılamadı çünkü bu parsel için yönetici iznine sahip değilsiniz.
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü parsel dolu.
+	<notification name="CMOParcelFull">
+		&quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor çünkü parsel dolu.
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bu parselde nesnelerinize izin verilmiyor.
+	<notification name="CMOParcelPerms">
+		&quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor çünkü bu parselde nesnelerinize izin verilmiyor.
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor, çünkü bu parselde bu nesne için yeterli kaynak yok.
+	<notification name="CMOParcelResources">
+		&quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor çünkü parselde bu nesne için yeterli kaynak yok.
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		Bu parsele erişiminiz olmadığı için kopyalama işlemi yapılamadı.
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü bölgede çalıştırılan eski versiyon, bölge değiştirme üzerinden bu nesnenin alınmasını desteklemiyor.
+	<notification name="CMORegionVersion">
+		&quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor çünkü diğer bölge, bu nesnenin bölgeler arası geçişle alınmasını desteklemeyen daha eski bir sürüm çalıştırıyor.
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		[REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor çünkü navmesh&apos;i bölge sınırları ötesinde değiştiremezsiniz.
+	<notification name="CMONavMesh">
+		&quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor çünkü bölge sınırları ötesindeki navigasyon örgüsünde değişiklik yapamazsınız.
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		Bilinmeyen bir nedenden ötürü [REGION_NAME] bölgesinde &apos;[OBJECT_NAME]&apos; nesnesi [OBJ_POSITION] konumuna hareket ettirilemiyor. ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		Bilinmeyen bir nedenle, &quot;[O]&quot; nesnesi [R] bölgesindeki [P] parseline taşınamıyor. ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		Bu nesneyi deÄŸiÅŸtirme izniniz yok
diff --git a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
index 87b67e249ed78d421db38424b0e296be52244777..0e98ae03d5a1d9b62b25fe7248353f83c727bfe0 100644
--- a/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="Engellenecek bir Sakin veya nesne seç"/>
 		<button name="unblock_btn" tool_tip="Engelleme listesinden Sakini veya nesneyi kaldır"/>
 	</panel>
+	<text name="block_limit">
+		Engelleme listenizde [COUNT] giriÅŸ var ve limit [LIMIT].
+	</text>
 	<block_list name="blocked" tool_tip="Åžu anda engellenmiÅŸ olan Sakinler listesi"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml b/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml
index cab1b24621c02f712c4981e74d8db1def106d08d..c34f608e3c10b540a0e9194a2da282c61585f726 100644
--- a/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/tr/panel_flickr_photo.xml
@@ -30,6 +30,6 @@ Birden çok kelime içeren etiketler için &quot;&quot; kullan
 		<combo_box.item label="Orta Flickr seviyesi" name="ModerateRating"/>
 		<combo_box.item label="Kısıtlı Flickr seviyesi" name="RestrictedRating"/>
 	</combo_box>
-	<button label="Karşıya Yükle" name="post_photo_btn"/>
+	<button label="PaylaÅŸ" name="post_photo_btn"/>
 	<button label="Ä°ptal" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
index b893da2a71cbd652568a261260ac8217316427c4..d499300de2211638f809d9c3bb7aa14e41d1bdda 100644
--- a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="instant_message" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="ileti"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
index 235a90a2450eb4e17a9a6b1876c1878314a6a5c3..a5046a7699b11513446b3bda0d9726fc1ab17f2a 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		Daha iyi
 	</text>
+	<check_box initial_value="true" label="Atmosferik gölgeleyiciler" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="Gelişmiş Aydınlatma Modeli" name="UseLightShaders"/>
 	<slider label="Avatarın Maksimum Karmaşıklığı:" name="IndirectMaxComplexity" tool_tip="Görsel olarak karmaşık bir avatarın ne zaman JellyDoll olarak çizileceğini belirler"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="Atmosferik gölgeleyiciler" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="Gelişmiş Aydınlatma Modeli" name="UseLightShaders"/>
+	<check_box initial_value="true" label="Arkadaşları Her Zaman İşle" name="AlwaysRenderFriends"/>
+	<button label="Ä°stisnalar..." name="RenderExceptionsButton"/>
 	<button label="Ayarları ön ayar olarak kaydet..." name="PrefSaveButton"/>
 	<button label="Ön ayarı yükle..." name="PrefLoadButton"/>
 	min_val=&quot;0,125&quot;
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d60a11159dba652c072689684bdf01931ddd2cf3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Karşıya Yüklemeler" name="uploads">
+	<text name="title">
+		Karşıya yüklemeler için mevcut hedef klasörler
+	</text>
+	<text name="title_models">
+		Görüntüler
+	</text>
+	<text name="title_sounds">
+		Sesler
+	</text>
+	<text name="title_animation">
+		Animasyonlar
+	</text>
+	<text name="upload_help">
+		Bir hedef klasörü değiştirmek için, envanterde o klasöre sağ tıklayın ve şu öğeyi seçin:
+&quot;Şunun için varsayılan olarak kullan:&quot;
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
index db29e6908c7c6e8be7e9d05b10544a780060fbd8..1b48bbeec2c9f60f24f89346e38e944b50f8d6d2 100644
--- a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="Diske Kaydet" name="save_to_computer_btn"/>
 	<button label="Envantere Kaydet (L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="Profile Yükle" name="save_to_profile_btn"/>
-	<button label="Facebook&apos;a Yükle" name="send_to_facebook_btn"/>
-	<button label="Twitter&apos;a Yükle" name="send_to_twitter_btn"/>
-	<button label="Flickr&apos;a Yükle" name="send_to_flickr_btn"/>
+	<button label="Profil Akışında Paylaş" name="save_to_profile_btn"/>
+	<button label="Facebook&apos;ta PaylaÅŸ" name="send_to_facebook_btn"/>
+	<button label="Twitter&apos;da PaylaÅŸ" name="send_to_twitter_btn"/>
+	<button label="Flickr&apos;da PaylaÅŸ" name="send_to_flickr_btn"/>
 	<button label="E-postayla Gönder" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 7b4bf1fca6344bd7163f5fbccb5da036f322611d..1b9ce239000619abcaac28fb773aa6e5e1c56ff8 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -1488,7 +1488,8 @@ Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
 		[[MARKETPLACE_CREATE_STORE_URL] Mağazası] hata döndürüyor.
 	</string>
 	<string name="InventoryMarketplaceError">
-		Bu özellik şu anda Beta aşamasında. Katılmak istiyorsanız lütfen adınızı bu [http://goo.gl/forms/FCQ7UXkakz Google formuna] ekleyin.
+		Pazaryeri İlanları açılırken bir hata meydana geldi.
+Bu mesaj size gelmeye devam ederse lütfen http://support.secondlife.com adresinden Second Life destek ekibine başvurun.
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		Pazaryeri İlanları klasörünüz boş.
@@ -4441,7 +4442,10 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		[AGENT_NAME] ile konferans
 	</string>
 	<string name="inventory_item_offered-im">
-		Teklif edilen envanter öğesi:
+		&quot;[ITEM_NAME]&quot; envanter öğesi sunuldu
+	</string>
+	<string name="inventory_folder_offered-im">
+		&quot;[ITEM_NAME]&quot; envanter klasörü sunuldu
 	</string>
 	<string name="share_alert">
 		Envanterinizden buraya öğeler sürükleyin
@@ -4528,7 +4532,10 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 		Ana konum ayarlandı.
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] size [REASON] L$[AMOUNT] ödedi.
@@ -4897,7 +4904,7 @@ Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
 	<string name="server_is_down">
 		Tüm çabalarımıza rağmen beklenmeyen bir hata meydana geldi.
 
-	Hizmetle ilişkili bilinen bir sorun olup olmadığını görmek için lütfen status.secondlifegrid.net adresine bakın.
+Hizmetle ilişkili bilinen bir sorun olup olmadığını görmek için lütfen http://status.secondlifegrid.net adresine bakın.
         Sorun yaşamaya devam ederseniz lütfen ağınızın ve güvenlik duvarınızın ayarlarına bakın.
 	</string>
 	<string name="dateTimeWeekdaysNames">
@@ -5370,6 +5377,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Gestures_Label">
 		Mimikler
 	</string>
+	<string name="Command_Grid_Status_Label">
+		AÄŸ durumu
+	</string>
 	<string name="Command_HowTo_Label">
 		Nasıl yapılır
 	</string>
@@ -5463,6 +5473,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="Command_Gestures_Tooltip">
 		Avatarınız için mimikler
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		Ağın mevcut durumunu göster
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		Genel görevleri nasıl yapacağınız
 	</string>
@@ -5685,6 +5698,9 @@ Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
 	<string name="loading_chat_logs">
 		Yükleniyor...
 	</string>
+	<string name="na">
+		yok
+	</string>
 	<string name="preset_combo_label">
 		-BoÅŸ liste-
 	</string>
diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml
index 489ea61c72faac79b1217387886f52b9b802bb9e..6c03f5304f3ea246a0d4d79cb26326f11d4ea934 100644
--- a/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -446,7 +446,7 @@
 			<spinner label="出入時間:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<text label="永遠允許" name="AllowedText">
-					允許的居民 ([COUNT])
+					允許的居民([COUNT],最多[MAX])
 				</text>
 				<name_list name="AccessList" tool_tip="(已列入 [LISTED],最多可列 [MAX])"/>
 				<button label="添加" name="add_allowed"/>
@@ -454,7 +454,7 @@
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="禁止" name="BanCheck">
-					被封鎖的居民 ([COUNT])
+					封鎖的居民([COUNT],最多[MAX])
 				</text>
 				<name_list name="BannedList" tool_tip="(已列入 [LISTED],最多可列 [MAX])"/>
 				<button label="添加" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml b/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2de8c5bc8947d7a9d9cc1406302b83233746baa6
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_avatar_render_settings" title="化身呈像設定">
+	<string name="av_never_render" value="絕不"/>
+	<string name="av_always_render" value="永遠"/>
+	<filter_editor label="過濾人員" name="people_filter_input"/>
+	<menu_button name="plus_btn" tool_tip="對選取的人採取的動作"/>
+	<name_list name="render_settings_list">
+		<name_list.columns label="名稱" name="name"/>
+		<name_list.columns label="呈像設定" name="setting"/>
+	</name_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_flickr.xml b/indra/newview/skins/default/xui/zh/floater_flickr.xml
index b02d02c7bbfd3835d208c09b041384a1d019895d..c4576baea51d10e784f97f7c12ac600a49835780 100644
--- a/indra/newview/skins/default/xui/zh/floater_flickr.xml
+++ b/indra/newview/skins/default/xui/zh/floater_flickr.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_flickr" title="上傳到 FLICKR">
+<floater name="floater_flickr" title="分享到FLICKR">
 	<panel name="background">
 		<tab_container name="tabs">
 			<panel label="相片" name="panel_flickr_photo"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_preferences.xml b/indra/newview/skins/default/xui/zh/floater_preferences.xml
index b0a27e8c1f67b23d8287b54f87774a51da4661c1..c5b078f3c74c813ed20665f94eca19bfd910df3c 100644
--- a/indra/newview/skins/default/xui/zh/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preferences.xml
@@ -13,5 +13,6 @@
 		<panel label="隱私" name="im"/>
 		<panel label="設定" name="input"/>
 		<panel label="進階" name="advanced1"/>
+		<panel label="上傳內容" name="uploads"/>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_tos.xml b/indra/newview/skins/default/xui/zh/floater_tos.xml
index c86cc3057d0e3dc18516cca9049dc48226b57387..92e48e72b89d953a3967a96b140d67984e47cb82 100644
--- a/indra/newview/skins/default/xui/zh/floater_tos.xml
+++ b/indra/newview/skins/default/xui/zh/floater_tos.xml
@@ -13,6 +13,6 @@
 		請仔細閱讀以下服務條款及隱私政策。 繼續登入 [SECOND_LIFE] 前,你必須同意條款。
 	</text>
 	<text name="external_tos_required">
-		你需先登入 my.secondlife.com 同意服務條款,才可繼續。 謝謝你!
+		你需先登入 https://my.secondlife.com 同意服務條款,才可繼續。 謝謝你!
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
index f104caeeafd8824a1c863b29ad06cc2f4e5df9b9..02bf12f37d7d543ce0adb052bdd4e83149ca9bf7 100644
--- a/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
+++ b/indra/newview/skins/default/xui/zh/menu_attachment_other.xml
@@ -17,8 +17,10 @@
 	<menu_item_call label="放大" name="Zoom In"/>
 	<menu_item_call label="支付" name="Pay..."/>
 	<menu_item_call label="物件檔案" name="Object Inspect"/>
-	<menu_item_check label="正常呈像" name="RenderNormally"/>
-	<menu_item_check label="不要呈像" name="DoNotRender"/>
-	<menu_item_check label="完全呈像" name="AlwaysRenderFully"/>
+	<context_menu label="呈現化身" name="Render Avatar">
+		<menu_item_check label="預設" name="RenderNormally"/>
+		<menu_item_check label="永遠" name="AlwaysRenderFully"/>
+		<menu_item_check label="絕不" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="封鎖粒子所有人" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
index 2e9ef8bcf1a78e5a4677ee2db8d713d7a8498532..bc2a8c311b6aea66760f862b571c574e9c69821b 100644
--- a/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_other.xml
@@ -16,8 +16,10 @@
 	<menu_item_call label="傾印 XML" name="Dump XML"/>
 	<menu_item_call label="放大" name="Zoom In"/>
 	<menu_item_call label="支付" name="Pay..."/>
-	<menu_item_check label="正常呈像" name="RenderNormally"/>
-	<menu_item_check label="不要呈像" name="DoNotRender"/>
-	<menu_item_check label="完全呈像" name="AlwaysRenderFully"/>
+	<context_menu label="呈現化身" name="Render Avatar">
+		<menu_item_check label="預設" name="RenderNormally"/>
+		<menu_item_check label="永遠" name="AlwaysRenderFully"/>
+		<menu_item_check label="絕不" name="DoNotRender"/>
+	</context_menu>
 	<menu_item_call label="封鎖粒子所有人" name="Mute Particle"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..18c33e1c39d7b9c5ac0b737dbf34eb58e875e0bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Settings">
+	<menu_item_check label="預設" name="default"/>
+	<menu_item_check label="總是呈現" name="always_render"/>
+	<menu_item_check label="絕不呈現" name="never_render"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98c3f27abbff7d0441c512c3c0a27d6ff52571ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/menu_avatar_rendering_settings_add.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_settings_add.xml">
+	<menu_item_call label="永遠呈現居民…" name="add_avatar_always_render"/>
+	<menu_item_call label="永不呈現居民…" name="add_avatar_never_render"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
index 5a38197e4c747a65b06401a0f50eeb545349b980..21263842b8090c1d35e7818447aac51b243e3f04 100644
--- a/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_gesture_gear.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_gesture_gear">
-	<menu_item_call label="由我的最愛中 添加/移除" name="activate"/>
+	<menu_item_call label="啟動/停止所選姿勢" name="activate"/>
 	<menu_item_call label="恚庨" name="copy_gesture"/>
 	<menu_item_call label="貼上" name="paste"/>
 	<menu_item_call label="覆製 UUID" name="copy_uuid"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml
index b346e82b77dd8c7679610a7ecc803219fe8f84eb..f17761fdfc4983b94bb9cc81eb0c6fb54c839d74 100644
--- a/indra/newview/skins/default/xui/zh/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml
@@ -42,6 +42,12 @@
 		<menu_item_call label="æ–°é ­é«®" name="New Hair"/>
 		<menu_item_call label="新眼睛" name="New Eyes"/>
 	</menu>
+	<menu label="作這一用途的預設值:" name="upload_def">
+		<menu_item_call label="圖像上傳" name="Image uploads"/>
+		<menu_item_call label="聲音上傳" name="Sound uploads"/>
+		<menu_item_call label="動作上傳" name="Animation uploads"/>
+		<menu_item_call label="模型上傳" name="Model uploads"/>
+	</menu>
 	<menu label="變更類型" name="Change Type">
 		<menu_item_call label="預設" name="Default"/>
 		<menu_item_call label="手套" name="Gloves"/>
@@ -60,6 +66,7 @@
 	<menu_item_call label="取代目前的裝扮" name="Replace Outfit"/>
 	<menu_item_call label="添加到目前裝扮" name="Add To Outfit"/>
 	<menu_item_call label="由目前的裝扮移除" name="Remove From Outfit"/>
+	<menu_item_call label="複製裝扮清單到剪貼簿" name="Copy outfit list to clipboard"/>
 	<menu_item_call label="尋找原件" name="Find Original"/>
 	<menu_item_call label="清空物品" name="Purge Item"/>
 	<menu_item_call label="還原物品" name="Restore Item"/>
@@ -72,7 +79,6 @@
 	<menu_item_call label="恚庨" name="Copy"/>
 	<menu_item_call label="貼上" name="Paste"/>
 	<menu_item_call label="以連結格式貼上" name="Paste As Link"/>
-	<menu_item_call label="刪除" name="Remove Link"/>
 	<menu_item_call label="刪除" name="Delete"/>
 	<menu_item_call label="刪除系統資料夾" name="Delete System Folder"/>
 	<menu_item_call label="發起多方通話" name="Conference Chat Folder"/>
@@ -95,7 +101,6 @@
 	<menu_item_call label="編輯" name="Wearable Edit"/>
 	<menu_item_call label="添加" name="Wearable Add"/>
 	<menu_item_call label="脫下" name="Take Off"/>
-	<menu_item_call label="複製到商家發件匣" name="Merchant Copy"/>
 	<menu_item_call label="複製到 Marketplace 刊登" name="Marketplace Copy"/>
 	<menu_item_call label="移到 Marketplace 刊登" name="Marketplace Move"/>
 	<menu_item_call label="-- 無選項 --" name="--no options--"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_login.xml b/indra/newview/skins/default/xui/zh/menu_login.xml
index 8dd89db7bace26c94717bdf0d2df5f909a7e79b8..e3f6ca2690bb6ad89349a7c8a0d740d8d58d12a6 100644
--- a/indra/newview/skins/default/xui/zh/menu_login.xml
+++ b/indra/newview/skins/default/xui/zh/menu_login.xml
@@ -2,6 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="我自己" name="File">
 		<menu_item_call label="偏好設定…" name="Preferences..."/>
+		<menu_item_check label="顯示格線挑選器" name="Show Grid Picker"/>
 		<menu_item_call label="退出 [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="幫助" name="Help">
@@ -33,7 +34,6 @@
 			<menu_item_check label="錯誤" name="Error"/>
 			<menu_item_check label="ç„¡" name="None"/>
 		</menu>
-		<menu_item_check label="顯示網格挑選器" name="Show Grid Picker"/>
 		<menu_item_call label="顯示通知控制台" name="Show Notifications Console"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
index 9a2a3c403d5a9ebb79e3dd16d1d66d475eafa121..8af35457afa0cec818ae99170a673d2dc0026599 100644
--- a/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_people_blocked_gear.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="menu_blocked_gear">
 	<menu_item_call label="解除封鎖" name="unblock"/>
+	<menu_item_check label="禁止語音" name="BlockVoice"/>
+	<menu_item_check label="禁止文字" name="MuteText"/>
+	<menu_item_check label="禁止物件聲音" name="BlockObjectSounds"/>
 	<menu_item_call label="檔案..." name="profile"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index 38686460503a2e2576ac34a0dc2c085beeb68f51..a58e1bb0fa865ddf70c3ee562aec890bcca5faa9 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -42,6 +42,7 @@
 			<menu_item_check label="沒有變聲效果" name="NoVoiceMorphing"/>
 			<menu_item_check label="預覽……" name="Preview"/>
 			<menu_item_call label="訂閱……" name="Subscribe"/>
+			<menu_item_call label="付費會員獨享…" name="PremiumPerk"/>
 		</menu>
 		<menu_item_check label="姿勢…" name="Gestures"/>
 		<menu_item_check label="朋友" name="My Friends"/>
@@ -55,7 +56,8 @@
 		<menu_item_call label="目的地…" name="Destinations"/>
 		<menu_item_check label="世界地圖" name="World Map"/>
 		<menu_item_check label="迷你地圖" name="Mini-Map"/>
-		<menu_item_check label="搜尋" name="Search"/>
+		<menu_item_call label="活動" name="Events"/>
+		<menu_item_check label="搜尋…" name="Search"/>
 		<menu_item_call label="瞬間傳送回家" name="Teleport Home"/>
 		<menu_item_call label="把這裡設為我的家" name="Set Home to Here"/>
 		<menu_item_call label="å¿«ç…§" name="Take Snapshot"/>
@@ -126,8 +128,10 @@
 			<menu_item_call label="取得副本" name="Take Copy"/>
 			<menu_item_call label="回存到物件內容" name="Save Object Back to Object Contents"/>
 			<menu_item_call label="退回物件" name="Return Object back to Owner"/>
+			<menu_item_call label="複製" name="DuplicateObject"/>
 		</menu>
 		<menu label="腳本" name="Scripts">
+			<menu_item_check label="腳本警告/錯誤…" name="Script debug"/>
 			<menu_item_call label="重新編譯腳本(Mono)" name="Mono"/>
 			<menu_item_call label="重新編譯腳本(LSL)" name="LSL"/>
 			<menu_item_call label="重設腳本" name="Reset Scripts"/>
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 61cf4e9492b827756ddf2aef9ddc9cc9e2c2d925..dfd4931ef83c958da7d23a73a59efb3c306a8e25 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -142,10 +142,9 @@
 		<usetemplate name="okbutton" yestext="確定"/>
 	</notification>
 	<notification name="MerchantTransactionFailed">
-		和 Marketplace 進行的交易發生如下錯誤:
+		和Marketplace進行交易發生如下錯誤:
         
-        原因:&apos;[ERROR_REASON]&apos;
-        [ERROR_DESCRIPTION]
+        [ERROR_REASON][ERROR_DESCRIPTION]
 		<usetemplate name="okbutton" yestext="確定"/>
 	</notification>
 	<notification name="MerchantUnprocessableEntity">
@@ -762,6 +761,9 @@
 	<notification name="CannotLinkPermanent">
 		物件無法跨越地區界限進行聯結。
 	</notification>
+	<notification name="CannotLinkAcrossRegions">
+		物件無法跨越地區界限進行聯結。
+	</notification>
 	<notification name="CannotLinkDifferentOwners">
 		無法聯結;有些物件的所有人不同。
 
@@ -1776,7 +1778,6 @@ SHA1 指紋:[MD5_DIGEST]
 		「請勿打擾」模式目前是開啟狀態。  你將不會收到任何發給你的訊息通知。
 
 - 其他居民將收到你的「請勿打擾」回應(回應內容設於「偏好設定 &gt; 一般設定」)。
-- 所有瞬間傳送的邀請都將被婉拒。
 - 所有語音來電都將拒絕接聽。
 		<usetemplate ignoretext="我變更我的狀態為「請勿打擾」模式" name="okignore" yestext="確定"/>
 	</notification>
@@ -2544,9 +2545,6 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="Cancelled">
 		已取消
 	</notification>
-	<notification name="CancelledSit">
-		取消坐下
-	</notification>
 	<notification name="CancelledAttach">
 		取消貼上
 	</notification>
@@ -3871,32 +3869,26 @@ SHA1 指紋:[MD5_DIGEST]
 	<notification name="AvatarEjectFailed">
 		踢出失敗,因為你在該地段沒有管理員權限。
 	</notification>
-	<notification name="CantMoveObjectParcelFull">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為該目標地段已滿載。
+	<notification name="CMOParcelFull">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],因為此地段容量已滿。
 	</notification>
-	<notification name="CantMoveObjectParcelPerms">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為此地段不允許你的物件。
+	<notification name="CMOParcelPerms">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],因為此地段裡不允許有你的物件。
 	</notification>
-	<notification name="CantMoveObjectParcelResources">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
- [REGION_NAME] 地區的 [OBJ_POSITION],因為此地段資源不足容納此物件。
+	<notification name="CMOParcelResources">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],因為此地段裡這一物件的資源不足。
 	</notification>
 	<notification name="NoParcelPermsNoObject">
 		複製失敗,因爲你無權出入該地段。
 	</notification>
-	<notification name="CantMoveObjectRegionVersion">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
- [REGION_NAME] 地區的 [OBJ_POSITION],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。
+	<notification name="CMORegionVersion">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],因為該地區所執行的軟體版本過舊,不支援跨地區接受這個物件。
 	</notification>
-	<notification name="CantMoveObjectNavMesh">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],因為你不得修改跨越地區界限的導航網面。
+	<notification name="CMONavMesh">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],因為你不得修改位在不同區域範圍的導航網面。
 	</notification>
-	<notification name="CantMoveObjectWTF">
-		無法移動 &apos;[OBJECT_NAME]&apos; 物件到
-地區 [REGION_NAME] 的 [OBJ_POSITION],原因不明。 ([FAILURE_TYPE])
+	<notification name="CMOWTF">
+		無法在[R]區域將&apos;[O]&apos;物件移到[P],問題原因不明。 ([F])
 	</notification>
 	<notification name="NoPermModifyObject">
 		你無權變更該物件
diff --git a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
index 9f59bb32f81ea7562225d992dccb691fb10068f5..ed475a91f4ede3b88e1d02c35bf0120aa578f5d5 100644
--- a/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_block_list_sidetray.xml
@@ -7,5 +7,8 @@
 		<menu_button name="plus_btn" tool_tip="挑選一位居民或物件,加以封鎖"/>
 		<button name="unblock_btn" tool_tip="將居民或物件由封鎖清單中移除"/>
 	</panel>
+	<text name="block_limit">
+		封鎖名單目前有[COUNT]名,上限為[LIMIT]。
+	</text>
 	<block_list name="blocked" tool_tip="目前封鎖的居民清單"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml b/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml
index ece239a29fc009f4485da4b95440ba1ab3316a36..928fd4c6408d1d9f63230cb3bdb3911498f3f149 100644
--- a/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml
+++ b/indra/newview/skins/default/xui/zh/panel_flickr_photo.xml
@@ -30,6 +30,6 @@
 		<combo_box.item label="適中級 Flickr 內容" name="ModerateRating"/>
 		<combo_box.item label="限制級 Flickr 內容" name="RestrictedRating"/>
 	</combo_box>
-	<button label="上傳" name="post_photo_btn"/>
+	<button label="分享" name="post_photo_btn"/>
 	<button label="取消" name="cancel_photo_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
index 01a82103381581ee2e065eb8c98ef93adbbc2620..2ec2a05c8c665336d7384a84b201f1488c9f6dc0 100644
--- a/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/zh/panel_notify_textbox.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="即時訊息" name="panel_notify_textbox">
-	<string name="message_max_lines_count" value="7"/>
-	<panel label="info_panel" name="info_panel">
+	<string name="message_max_lines_count" value="14"/>
+	<panel label="info_panel" name="info_panel"/>
+	<panel label="info_panel" name="textbox_panel">
 		<text_editor name="message" value="訊息"/>
 	</panel>
 	<panel label="control_panel" name="control_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
index 4eef62491079ed2553e52016b3a566b4251118ac..21e958b13ac323c2a05b3bc91e733437c4b8f8c0 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
@@ -24,12 +24,14 @@
 	<text name="BetterText">
 		最佳
 	</text>
+	<check_box initial_value="true" label="大氣著色" name="WindLightUseAtmosShaders"/>
+	<check_box initial_value="true" label="進階照明模型" name="UseLightShaders"/>
 	<slider label="化身最大複雜度:" name="IndirectMaxComplexity" tool_tip="控制在何時機下讓複雜化身呈像為「JellyDoll」"/>
 	<text name="IndirectMaxComplexityText">
 		0
 	</text>
-	<check_box initial_value="true" label="大氣著色" name="WindLightUseAtmosShaders"/>
-	<check_box initial_value="true" label="進階照明模型" name="UseLightShaders"/>
+	<check_box initial_value="true" label="永遠呈現朋友" name="AlwaysRenderFriends"/>
+	<button label="例外…" name="RenderExceptionsButton"/>
 	<button label="將設定存為預設值 …" name="PrefSaveButton"/>
 	<button label="載入預設..." name="PrefLoadButton"/>
 	min_val=&quot;0.125&quot;
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml b/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b34b4109d8be2c33a4f285bae57cb10739658f18
--- /dev/null
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_uploads.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="上傳內容" name="uploads">
+	<text name="title">
+		目前的上傳目的資料夾
+	</text>
+	<text name="title_models">
+		圖像
+	</text>
+	<text name="title_sounds">
+		聲音
+	</text>
+	<text name="title_animation">
+		動作
+	</text>
+	<text name="upload_help">
+		要變更目的資料夾,請在收納區用滑鼠右鍵按一下新的資料夾並選擇
+ 「用作預設值」
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
index a5a1cbfb51ff12527ce1b4d636c279b4edde1bd5..d7c65bb25ece91b9b0c4809fb1263fc94b0d76ba 100644
--- a/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
+++ b/indra/newview/skins/default/xui/zh/panel_snapshot_options.xml
@@ -2,9 +2,9 @@
 <panel name="panel_snapshot_options">
 	<button label="儲存到硬碟" name="save_to_computer_btn"/>
 	<button label="儲存到收納區(L$[AMOUNT])" name="save_to_inventory_btn"/>
-	<button label="上傳到簡覽" name="save_to_profile_btn"/>
-	<button label="上傳到臉書" name="send_to_facebook_btn"/>
-	<button label="上傳到推特" name="send_to_twitter_btn"/>
-	<button label="上傳到 Flickr" name="send_to_flickr_btn"/>
+	<button label="分享至檔案訊息發佈" name="save_to_profile_btn"/>
+	<button label="分享到臉書" name="send_to_facebook_btn"/>
+	<button label="分享到推特" name="send_to_twitter_btn"/>
+	<button label="分享到Flickr" name="send_to_flickr_btn"/>
 	<button label="用電郵傳送" name="save_to_email_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index ec08c9f91e31d0f378cc8fbf7e73abf5e9aac942..c640c12143edb4bccd460f48aef611d1f15c6d5b 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1483,7 +1483,8 @@ http://secondlife.com/viewer-access-faq
 		[[MARKETPLACE_CREATE_STORE_URL] 購物市集商店]正傳回錯誤。
 	</string>
 	<string name="InventoryMarketplaceError">
-		這功能尚在 Beta 測試階段。 如你想參與,請到這個[http://goo.gl/forms/FCQ7UXkakz Google 表單]填寫姓名。
+		開啟Marketplace刊登內容時發生錯誤。
+如果你繼續收到這個訊息,請到 http://support.secondlife.com 聯絡 Second Life 支援人員。
 	</string>
 	<string name="InventoryMarketplaceListingsNoItemsTitle">
 		你的 Marketplace 刊登資料夾是空的。
@@ -4436,7 +4437,10 @@ http://secondlife.com/viewer-access-faq
 		和 [AGENT_NAME] 多方通話
 	</string>
 	<string name="inventory_item_offered-im">
-		收納區物品已發送
+		收納區物品&apos;[ITEM_NAME]&apos;已向人提供
+	</string>
+	<string name="inventory_folder_offered-im">
+		收納區資料夾&apos;[ITEM_NAME]&apos;已向人提供
 	</string>
 	<string name="share_alert">
 		將收納區物品拖曳到這裡
@@ -4523,7 +4527,10 @@ http://secondlife.com/viewer-access-faq
 		我的家位置已定。
 	</string>
 	<string name="voice_morphing_url">
-		http://secondlife.com/landing/voicemorphing
+		https://secondlife.com/destination/voice-island
+	</string>
+	<string name="premium_voice_morphing_url">
+		https://secondlife.com/destination/voice-morphing-premium
 	</string>
 	<string name="paid_you_ldollars">
 		[NAME] 支付你 L$[AMOUNT]([REASON])。
@@ -4894,8 +4901,8 @@ http://secondlife.com/viewer-access-faq
 	<string name="server_is_down">
 		儘管我們努力避免,還是發生意料外的錯誤。
 
-	請察訪 status.secondlifegrid.net 看是否發生了已知狀況。
-        如果文體繼續發生,請檢查你的網路和防火牆設定。
+請察訪 http://status.secondlifegrid.net 看是否發生了已知狀況。
+        如果問題繼續發生,請檢查你的網路和防火牆設定。
 	</string>
 	<string name="dateTimeWeekdaysNames">
 		星期日:星期一:星期二:星期三:星期四:星期五:星期六
@@ -5367,6 +5374,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Gestures_Label">
 		姿勢
 	</string>
+	<string name="Command_Grid_Status_Label">
+		網格狀態
+	</string>
 	<string name="Command_HowTo_Label">
 		簡易教學
 	</string>
@@ -5460,6 +5470,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="Command_Gestures_Tooltip">
 		你化身可用的姿勢
 	</string>
+	<string name="Command_Grid_Status_Tooltip">
+		顯示當前網格狀態
+	</string>
 	<string name="Command_HowTo_Tooltip">
 		如何完成常用的動作
 	</string>
@@ -5682,6 +5695,9 @@ http://secondlife.com/viewer-access-faq
 	<string name="loading_chat_logs">
 		載入中…
 	</string>
+	<string name="na">
+		不適用
+	</string>
 	<string name="preset_combo_label">
 		-空白清單-
 	</string>
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index fbbc385e5baf99f3769466e3d3b225866d46b990..c56eaae6fe97cfdf2a949ed7e188f375b4b38224 100755
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -4499,6 +4499,10 @@ version 2.0
 		AgeVerificationBlock Single
 		{   RegionDenyAgeUnverified BOOL    }
 	}
+    {
+        RegionAllowAccessBlock Single
+        {   RegionAllowAccessOverride BOOL  }  
+    }
 }
 
 // ParcelPropertiesUpdate
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
index 2c6489906c6db692017be9c5aa9bcde99ad9770c..5bc06ec0427d7d60a485189f8404a7d154fb0bae 100755
--- a/scripts/messages/message_template.msg.sha1
+++ b/scripts/messages/message_template.msg.sha1
@@ -1 +1 @@
-845459c1bb7fe8174fb493528fe2a214015f996d
\ No newline at end of file
+337f351910b0c8821cb3d447bc6578516a043c80
\ No newline at end of file