Merge

Thu, 30 Nov 2017 17:07:57 +0000

author
Beq <beqjanus@gmail.com>
date
Thu, 30 Nov 2017 17:07:57 +0000
changeset 53514
ef13080e6d8f
parent 53513
f7d79a4ad52e
parent 53511
dab15a0c45f0
child 53515
fd36b01d8aef

Merge

indra/newview/llviewerwindow.cpp file | annotate | diff | revisions
     1.1 --- a/.hgtags	Thu Nov 30 17:05:57 2017 +0000
     1.2 +++ b/.hgtags	Thu Nov 30 17:07:57 2017 +0000
     1.3 @@ -567,3 +567,4 @@
     1.4  3e5035dfd8af49bd4c0009f0a76ef46a15991a45 5.0.6-release
     1.5  abcab37e1b29414ab8c03af9ca2ab489d809788a 5.0.7-release
     1.6  505a492f30bd925bb48e2e093ae77c3c2b4c740f 5.0.8-release
     1.7 +40ca7118765be85a043b31b011e4ee6bd9e33c95 5.0.9-release
     2.1 --- a/autobuild.xml	Thu Nov 30 17:05:57 2017 +0000
     2.2 +++ b/autobuild.xml	Thu Nov 30 17:07:57 2017 +0000
     2.3 @@ -1805,11 +1805,11 @@
     2.4              <key>archive</key>
     2.5              <map>
     2.6                <key>hash</key>
     2.7 -              <string>a0cea95fe336f624c712d1f5065ee1eb</string>
     2.8 +              <string>850bbb1e21572b101db1f07ec026b012</string>
     2.9                <key>hash_algorithm</key>
    2.10                <string>md5</string>
    2.11                <key>url</key>
    2.12 -              <string>file:///opt/firestorm/llphysicsextensions_tpv-1.0.507006-darwin64-507006.tar.bz2</string>
    2.13 +              <string>file:///opt/firestorm/llphysicsextensions_tpv-1.0.511060-darwin64-511060.tar.bz2</string>
    2.14              </map>
    2.15              <key>name</key>
    2.16              <string>darwin</string>
    2.17 @@ -1831,9 +1831,9 @@
    2.18              <key>archive</key>
    2.19              <map>
    2.20                <key>hash</key>
    2.21 -              <string>79f8d9dae7dcc4eb4a45435b9216780f</string>
    2.22 +              <string>27c1cd158e323af96026d85d2334caf5</string>
    2.23                <key>url</key>
    2.24 -              <string>file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.300918-windows-300918.tar.bz2</string>
    2.25 +              <string>file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.511060-windows-511060.tar.bz2</string>
    2.26              </map>
    2.27              <key>name</key>
    2.28              <string>windows</string>
     3.1 --- a/doc/contributions.txt	Thu Nov 30 17:05:57 2017 +0000
     3.2 +++ b/doc/contributions.txt	Thu Nov 30 17:07:57 2017 +0000
     3.3 @@ -218,6 +218,7 @@
     3.4  	MAINT-7028
     3.5  	MAINT-7059
     3.6  	MAINT-6519
     3.7 +	MAINT-7899
     3.8  Aralara Rajal
     3.9  Arare Chantilly
    3.10  	CHUIBUG-191
    3.11 @@ -831,6 +832,7 @@
    3.12  	MAINT-6568
    3.13  	STORM-2149
    3.14  	MAINT-7581
    3.15 +	MAINT-7081
    3.16  Kolor Fall
    3.17  Komiko Okamoto
    3.18  Korvel Noh
     4.1 --- a/indra/cmake/JsonCpp.cmake	Thu Nov 30 17:05:57 2017 +0000
     4.2 +++ b/indra/cmake/JsonCpp.cmake	Thu Nov 30 17:07:57 2017 +0000
     4.3 @@ -2,7 +2,7 @@
     4.4  
     4.5  include(Prebuilt)
     4.6  
     4.7 -set(JSONCPP_FIND_QUIETLY OFF)
     4.8 +set(JSONCPP_FIND_QUIETLY ON)
     4.9  set(JSONCPP_FIND_REQUIRED ON)
    4.10  
    4.11  if (USESYSTEMLIBS)
     5.1 --- a/indra/llcommon/llcoros.cpp	Thu Nov 30 17:05:57 2017 +0000
     5.2 +++ b/indra/llcommon/llcoros.cpp	Thu Nov 30 17:07:57 2017 +0000
     5.3 @@ -40,6 +40,10 @@
     5.4  #include "stringize.h"
     5.5  #include "llexception.h"
     5.6  
     5.7 +#if LL_WINDOWS
     5.8 +#include <excpt.h>
     5.9 +#endif
    5.10 +
    5.11  namespace {
    5.12  void no_op() {}
    5.13  } // anonymous namespace
    5.14 @@ -272,6 +276,43 @@
    5.15      mStackSize = stacksize;
    5.16  }
    5.17  
    5.18 +#if LL_WINDOWS
    5.19 +
    5.20 +static const U32 STATUS_MSC_EXCEPTION = 0xE06D7363; // compiler specific
    5.21 +
    5.22 +U32 exception_filter(U32 code, struct _EXCEPTION_POINTERS *exception_infop)
    5.23 +{
    5.24 +    if (code == STATUS_MSC_EXCEPTION)
    5.25 +    {
    5.26 +        // C++ exception, go on
    5.27 +        return EXCEPTION_CONTINUE_SEARCH;
    5.28 +    }
    5.29 +    else
    5.30 +    {
    5.31 +        // handle it
    5.32 +        return EXCEPTION_EXECUTE_HANDLER;
    5.33 +    }
    5.34 +}
    5.35 +
    5.36 +void LLCoros::winlevel(const callable_t& callable)
    5.37 +{
    5.38 +    __try
    5.39 +    {
    5.40 +        callable();
    5.41 +    }
    5.42 +    __except (exception_filter(GetExceptionCode(), GetExceptionInformation()))
    5.43 +    {
    5.44 +        // convert to C++ styled exception
    5.45 +        // Note: it might be better to use _se_set_translator
    5.46 +        // if you want exception to inherit full callstack
    5.47 +        char integer_string[32];
    5.48 +        sprintf(integer_string, "SEH, code: %lu\n", GetExceptionCode());
    5.49 +        throw std::exception(integer_string);
    5.50 +    }
    5.51 +}
    5.52 +
    5.53 +#endif
    5.54 +
    5.55  // Top-level wrapper around caller's coroutine callable. This function accepts
    5.56  // the coroutine library's implicit coro::self& parameter and saves it, but
    5.57  // does not pass it down to the caller's callable.
    5.58 @@ -282,7 +323,11 @@
    5.59      // run the code the caller actually wants in the coroutine
    5.60      try
    5.61      {
    5.62 +#if LL_WINDOWS
    5.63 +        winlevel(callable);
    5.64 +#else
    5.65          callable();
    5.66 +#endif
    5.67      }
    5.68      catch (const LLContinueError&)
    5.69      {
     6.1 --- a/indra/llcommon/llcoros.h	Thu Nov 30 17:05:57 2017 +0000
     6.2 +++ b/indra/llcommon/llcoros.h	Thu Nov 30 17:07:57 2017 +0000
     6.3 @@ -182,6 +182,9 @@
     6.4      bool cleanup(const LLSD&);
     6.5      struct CoroData;
     6.6      static void no_cleanup(CoroData*);
     6.7 +#if LL_WINDOWS
     6.8 +    static void winlevel(const callable_t& callable);
     6.9 +#endif
    6.10      static void toplevel(coro::self& self, CoroData* data, const callable_t& callable);
    6.11      static CoroData& get_CoroData(const std::string& caller);
    6.12  
     7.1 --- a/indra/llcorehttp/_httpoprequest.cpp	Thu Nov 30 17:05:57 2017 +0000
     7.2 +++ b/indra/llcorehttp/_httpoprequest.cpp	Thu Nov 30 17:07:57 2017 +0000
     7.3 @@ -539,6 +539,7 @@
     7.4  	long sslHostV(0L);
     7.5      long dnsCacheTimeout(-1L);
     7.6      long nobody(0L);
     7.7 +	long last_modified(0L); // <FS:Ansariel> GetIfModified request
     7.8  
     7.9  	if (mReqOptions)
    7.10  	{
    7.11 @@ -547,6 +548,7 @@
    7.12  		sslHostV = mReqOptions->getSSLVerifyHost() ? 2L : 0L;
    7.13  		dnsCacheTimeout = mReqOptions->getDNSCacheTimeout();
    7.14          nobody = mReqOptions->getHeadersOnly() ? 1L : 0L;
    7.15 +		last_modified = mReqOptions->getLastModified(); // <FS:Ansariel> GetIfModified request
    7.16  	}
    7.17  	code = curl_easy_setopt(mCurlHandle, CURLOPT_FOLLOWLOCATION, follow_redirect);
    7.18  	check_curl_easy_code(code, CURLOPT_FOLLOWLOCATION);
    7.19 @@ -559,6 +561,16 @@
    7.20      code = curl_easy_setopt(mCurlHandle, CURLOPT_NOBODY, nobody);
    7.21      check_curl_easy_code(code, CURLOPT_NOBODY);
    7.22  
    7.23 +	// <FS:Ansariel> GetIfModified request
    7.24 +	if (last_modified > 0)
    7.25 +	{
    7.26 +		code = curl_easy_setopt(mCurlHandle, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
    7.27 +		check_curl_easy_code(code, CURLOPT_TIMECONDITION);
    7.28 +		code = curl_easy_setopt(mCurlHandle, CURLOPT_TIMEVALUE, last_modified);
    7.29 +		check_curl_easy_code(code, CURLOPT_TIMEVALUE);
    7.30 +	}
    7.31 +	// </FS:Ansariel>
    7.32 +
    7.33  	// The Linksys WRT54G V5 router has an issue with frequent
    7.34  	// DNS lookups from LAN machines.  If they happen too often,
    7.35  	// like for every HTTP request, the router gets annoyed after
     8.1 --- a/indra/llcorehttp/httpoptions.cpp	Thu Nov 30 17:05:57 2017 +0000
     8.2 +++ b/indra/llcorehttp/httpoptions.cpp	Thu Nov 30 17:07:57 2017 +0000
     8.3 @@ -46,7 +46,8 @@
     8.4      mVerifyPeer(false),
     8.5      mVerifyHost(false),
     8.6      mDNSCacheTimeout(-1L),
     8.7 -    mNoBody(false)
     8.8 +    mNoBody(false),
     8.9 +	mLastModified(0) // <FS:Ansariel> GetIfModified request
    8.10  {}
    8.11  
    8.12  
    8.13 @@ -125,4 +126,11 @@
    8.14          setWantHeaders(true);
    8.15  }
    8.16  
    8.17 +// <FS:Ansariel> GetIfModified request
    8.18 +void HttpOptions::setLastModified(long last_modified)
    8.19 +{
    8.20 +	mLastModified = last_modified;
    8.21 +}
    8.22 +// </FS:Ansariel>
    8.23 +
    8.24  }   // end namespace LLCore
     9.1 --- a/indra/llcorehttp/httpoptions.h	Thu Nov 30 17:05:57 2017 +0000
     9.2 +++ b/indra/llcorehttp/httpoptions.h	Thu Nov 30 17:07:57 2017 +0000
     9.3 @@ -177,6 +177,14 @@
     9.4      {
     9.5          return mNoBody;
     9.6      }
     9.7 +
     9.8 +	// <FS:Ansariel> GetIfModified request
     9.9 +	void                setLastModified(long last_modified);
    9.10 +	long                getLastModified() const
    9.11 +	{
    9.12 +		return mLastModified;
    9.13 +	}
    9.14 +	// </FS:Ansariel>
    9.15  	
    9.16  protected:
    9.17  	bool				mWantHeaders;
    9.18 @@ -192,6 +200,7 @@
    9.19  	bool        		mVerifyHost;
    9.20  	int					mDNSCacheTimeout;
    9.21      bool                mNoBody;
    9.22 +	long				mLastModified; // <FS:Ansariel> GetIfModified request
    9.23  }; // end class HttpOptions
    9.24  
    9.25  
    10.1 --- a/indra/llmath/llvolume.cpp	Thu Nov 30 17:05:57 2017 +0000
    10.2 +++ b/indra/llmath/llvolume.cpp	Thu Nov 30 17:07:57 2017 +0000
    10.3 @@ -52,8 +52,6 @@
    10.4  #include "llmatrix4a.h"
    10.5  #include "lltimer.h"
    10.6  
    10.7 -#include "nd/ndintrin.h" // For FAA/FAD
    10.8 -
    10.9  #define DEBUG_SILHOUETTE_BINORMALS 0
   10.10  #define DEBUG_SILHOUETTE_NORMALS 0 // TomY: Use this to display normals using the silhouette
   10.11  #define DEBUG_SILHOUETTE_EDGE_MAP 0 // DaveP: Use this to display edge map using the silhouette
   10.12 @@ -2055,20 +2053,8 @@
   10.13  	setSkew(params.getSkew());
   10.14  }
   10.15  
   10.16 -// <FS:ND> Switch the logic around. Different threads can race for profile_delete_lock. To make this work, each once increments
   10.17 -// profile_delete_lock to signal a LLProfile can be deleted. Once 0 it is illegal again to call the dtor
   10.18 -// S32 profile_delete_lock = 1 ; 
   10.19 -volatile U32 profile_delete_lock = 0 ; 
   10.20 -// </FS:ND>
   10.21  LLProfile::~LLProfile()
   10.22  {
   10.23 -	// <FS:ND> See above. IF all threads reset profile_delete_lock to 0 deletion is illegal.
   10.24 -	// if(profile_delete_lock)
   10.25 -	if(!profile_delete_lock)
   10.26 -	// </FS:ND>
   10.27 -	{
   10.28 -		LL_ERRS() << "LLProfile should not be deleted here!" << LL_ENDL ;
   10.29 -	}
   10.30  }
   10.31  
   10.32  
   10.33 @@ -2134,17 +2120,7 @@
   10.34  	sNumMeshPoints -= mMesh.size();
   10.35  	delete mPathp;
   10.36  
   10.37 -	// <FS:ND> We might arrive here from multiple threads. To properly guard profile_delete_lock it's now valid to delete a LLProfile when profile_delete_lock is > 0
   10.38 -
   10.39 -	// profile_delete_lock = 0 ;
   10.40 -	// delete mProfilep;
   10.41 -	// profile_delete_lock = 1 ;
   10.42 -
   10.43 -	nd::intrin::FAA( &profile_delete_lock );
   10.44  	delete mProfilep;
   10.45 -	nd::intrin::FAD( &profile_delete_lock );
   10.46 -
   10.47 -	// </FS:ND>
   10.48  
   10.49  	mPathp = NULL;
   10.50  	mProfilep = NULL;
    11.1 --- a/indra/llmath/llvolume.h	Thu Nov 30 17:05:57 2017 +0000
    11.2 +++ b/indra/llmath/llvolume.h	Thu Nov 30 17:07:57 2017 +0000
    11.3 @@ -682,6 +682,8 @@
    11.4  
    11.5  class LLProfile
    11.6  {
    11.7 +	friend class LLVolume;
    11.8 +
    11.9  public:
   11.10  	LLProfile()
   11.11  		: mOpen(FALSE),
   11.12 @@ -692,8 +694,6 @@
   11.13  	{
   11.14  	}
   11.15  
   11.16 -	~LLProfile();
   11.17 -
   11.18  	S32	 getTotal() const								{ return mTotal; }
   11.19  	S32	 getTotalOut() const							{ return mTotalOut; }	// Total number of outside points
   11.20  	BOOL isFlat(S32 face) const							{ return (mFaces[face].mCount == 2); }
   11.21 @@ -726,6 +726,8 @@
   11.22  	friend std::ostream& operator<<(std::ostream &s, const LLProfile &profile);
   11.23  
   11.24  protected:
   11.25 +	~LLProfile();
   11.26 +
   11.27  	static S32 getNumNGonPoints(const LLProfileParams& params, S32 sides, F32 offset=0.0f, F32 bevel = 0.0f, F32 ang_scale = 1.f, S32 split = 0);
   11.28  	void genNGon(const LLProfileParams& params, S32 sides, F32 offset=0.0f, F32 bevel = 0.0f, F32 ang_scale = 1.f, S32 split = 0);
   11.29  
    12.1 --- a/indra/llmath/v4color.cpp	Thu Nov 30 17:05:57 2017 +0000
    12.2 +++ b/indra/llmath/v4color.cpp	Thu Nov 30 17:07:57 2017 +0000
    12.3 @@ -122,11 +122,7 @@
    12.4  //////////////////////////////////////////////////////////////////////////////
    12.5  
    12.6  // conversion
    12.7 -#if defined(LL_WINDOWS) && !defined(ND_BUILD64BIT_ARCH)
    12.8 -LLColor4::operator const LLColor4U() const
    12.9 -#else
   12.10  LLColor4::operator LLColor4U() const
   12.11 -#endif
   12.12  {
   12.13  	return LLColor4U(
   12.14  		(U8)llclampb(ll_round(mV[VRED]*255.f)),
    13.1 --- a/indra/llmath/v4color.h	Thu Nov 30 17:05:57 2017 +0000
    13.2 +++ b/indra/llmath/v4color.h	Thu Nov 30 17:07:57 2017 +0000
    13.3 @@ -131,11 +131,7 @@
    13.4  		friend const LLColor4& operator*=(LLColor4 &a, const LLColor4 &b); // Doesn't multiply alpha! (for lighting)
    13.5  
    13.6  		// conversion
    13.7 -#if defined(LL_WINDOWS) && !defined(ND_BUILD64BIT_ARCH)
    13.8 -		operator const LLColor4U() const;
    13.9 -#else
   13.10  		operator LLColor4U() const;
   13.11 -#endif
   13.12  
   13.13  		// Basic color values.
   13.14  		static LLColor4 red;
    14.1 --- a/indra/llmath/v4coloru.h	Thu Nov 30 17:05:57 2017 +0000
    14.2 +++ b/indra/llmath/v4coloru.h	Thu Nov 30 17:07:57 2017 +0000
    14.3 @@ -120,11 +120,7 @@
    14.4  	static BOOL parseColor4U(const std::string& buf, LLColor4U* value);
    14.5  
    14.6  	// conversion
    14.7 -#if defined(LL_WINDOWS) && !defined(ND_BUILD64BIT_ARCH)
    14.8 -	operator const LLColor4() const
    14.9 -#else
   14.10  	operator LLColor4() const
   14.11 -#endif
   14.12  	{
   14.13  		return LLColor4(*this);
   14.14  	}
    15.1 --- a/indra/llmessage/fscorehttputil.cpp	Thu Nov 30 17:05:57 2017 +0000
    15.2 +++ b/indra/llmessage/fscorehttputil.cpp	Thu Nov 30 17:07:57 2017 +0000
    15.3 @@ -116,13 +116,38 @@
    15.4  								   boost::bind(trivialGetCoroRaw, url, LLCore::HttpRequest::DEFAULT_POLICY_ID, aHeader, options, success, failure));
    15.5  	}
    15.6  
    15.7 -	LLCore::HttpHeaders::ptr_t createModifiedSinceHeader( time_t aTime )
    15.8 +	void trivialGetCoro(std::string url, time_t last_modified, completionCallback_t success, completionCallback_t failure)
    15.9  	{
   15.10 -		std::string strDate = LLDate::toHTTPDateString( gmtime( &aTime ), "%A, %d %b %Y %H:%M:%S GMT" );
   15.11 +		LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("trivialGetCoro", LLCore::HttpRequest::DEFAULT_POLICY_ID));
   15.12 +		LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
   15.13 +		LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
   15.14  
   15.15 -		LLCore::HttpHeaders::ptr_t pHeader( new LLCore::HttpHeaders() );
   15.16 -		pHeader->append( "If-Modified-Since", strDate );
   15.17 -	
   15.18 -		return pHeader;
   15.19 +		httpOpts->setWantHeaders(true);
   15.20 +		httpOpts->setLastModified((long)last_modified);
   15.21 +
   15.22 +		LLSD result = httpAdapter->getAndSuspend(httpRequest, url, httpOpts);
   15.23 +
   15.24 +		LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
   15.25 +		LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
   15.26 +
   15.27 +		if (!status)
   15.28 +		{
   15.29 +			if (failure)
   15.30 +			{
   15.31 +				failure(httpResults);
   15.32 +			}
   15.33 +		}
   15.34 +		else
   15.35 +		{
   15.36 +			if (success)
   15.37 +			{
   15.38 +				success(result);
   15.39 +			}
   15.40 +		}
   15.41 +	}
   15.42 +
   15.43 +	void callbackHttpGet(const std::string &url, const time_t& last_modified, completionCallback_t success, completionCallback_t failure)
   15.44 +	{
   15.45 +		LLCoros::instance().launch("HttpCoroutineAdapter::genericGetCoro", boost::bind(&trivialGetCoro, url, last_modified, success, failure));
   15.46  	}
   15.47  }
    16.1 --- a/indra/llmessage/fscorehttputil.h	Thu Nov 30 17:05:57 2017 +0000
    16.2 +++ b/indra/llmessage/fscorehttputil.h	Thu Nov 30 17:07:57 2017 +0000
    16.3 @@ -38,10 +38,12 @@
    16.4  							 LLCore::HttpHeaders::ptr_t aHeader = LLCore::HttpHeaders::ptr_t(), LLCore::HttpOptions::ptr_t options = LLCore::HttpOptions::ptr_t());
    16.5  	void callbackHttpGetRaw(const std::string &url, completionCallback_t success = NULL, completionCallback_t failure = NULL,
    16.6  							LLCore::HttpHeaders::ptr_t aHeader = LLCore::HttpHeaders::ptr_t(), LLCore::HttpOptions::ptr_t options = LLCore::HttpOptions::ptr_t());
    16.7 +	void callbackHttpGet(const std::string &url, const time_t& last_modified, completionCallback_t success, completionCallback_t failure);
    16.8  
    16.9  	void trivialGetCoroRaw(std::string url, LLCore::HttpRequest::policy_t policyId, LLCore::HttpHeaders::ptr_t aHeader, LLCore::HttpOptions::ptr_t options, completionCallback_t success, completionCallback_t failure);
   16.10  	void trivialPostCoroRaw(std::string url, LLCore::HttpRequest::policy_t policyId, LLCore::BufferArray::ptr_t postData, LLCore::HttpHeaders::ptr_t aHeader, LLCore::HttpOptions::ptr_t options,
   16.11  							completionCallback_t success, completionCallback_t failure);
   16.12 +	void trivialGetCoro(std::string url, time_t last_modified, completionCallback_t success, completionCallback_t failure);
   16.13  }
   16.14  
   16.15  #endif // FS_COREHTTPUTIL_H
    17.1 --- a/indra/llprimitive/lldaeloader.cpp	Thu Nov 30 17:05:57 2017 +0000
    17.2 +++ b/indra/llprimitive/lldaeloader.cpp	Thu Nov 30 17:07:57 2017 +0000
    17.3 @@ -896,29 +896,29 @@
    17.4  	// <FS:ND> Set up colladadom error handler
    17.5  	FSDaeSetErrorHandler oErrorHandlerSerror;
    17.6  
    17.7 -	// <FS:Ansariel> Bug fixes in mesh importer by Drake Arconis
    17.8 -	//replace illegal # in path as collada's escapser is broke
    17.9 -	std::string tmp_file = filename;
   17.10 -	boost::replace_all(tmp_file, "#", "%23");
   17.11 -	// </FS:Ansariel>
   17.12 -
   17.13  	setLoadState( READING_FILE );
   17.14  
   17.15  	//no suitable slm exists, load from the .dae file
   17.16 +
   17.17 +	// Collada expects file and folder names to be escaped
   17.18 +	// Note: cdom::nativePathToUri()
   17.19 +	const char* allowed =
   17.20 +		"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   17.21 +		"abcdefghijklmnopqrstuvwxyz"
   17.22 +		"0123456789"
   17.23 +		"%-._~:\"|\\/";
   17.24 +	std::string uri_filename = LLURI::escape(filename, allowed);
   17.25 +
   17.26  	DAE dae;
   17.27  	domCOLLADA* dom;
   17.28  	if (mPreprocessDAE)
   17.29  	{
   17.30 -		// <FS:Ansariel> Bug fixes in mesh importer by Drake Arconis
   17.31 -		//dom = dae.openFromMemory(filename, preprocessDAE(filename).c_str());
   17.32 -		dom = dae.openFromMemory(tmp_file, preprocessDAE(filename).c_str());
   17.33 +		dom = dae.openFromMemory(uri_filename, preprocessDAE(filename).c_str());
   17.34  	}
   17.35  	else
   17.36  	{
   17.37  		LL_INFOS() << "Skipping dae preprocessing" << LL_ENDL;
   17.38 -		// <FS:Ansariel> Bug fixes in mesh importer by Drake Arconis
   17.39 -		//dom = dae.open(filename);
   17.40 -		dom = dae.open(tmp_file);
   17.41 +		dom = dae.open(uri_filename);
   17.42  	}
   17.43  	
   17.44  	if (!dom)
   17.45 @@ -947,9 +947,7 @@
   17.46  	
   17.47  	daeInt count = db->getElementCount(NULL, COLLADA_TYPE_MESH);
   17.48  	
   17.49 -	// <FS:Ansariel> Bug fixes in mesh importer by Drake Arconis
   17.50 -	//daeDocument* doc = dae.getDoc(filename);
   17.51 -	daeDocument* doc = dae.getDoc(tmp_file);
   17.52 +	daeDocument* doc = dae.getDoc(uri_filename);
   17.53  	if (!doc)
   17.54  	{
   17.55  		LL_WARNS() << "can't find internal doc" << LL_ENDL;
    18.1 --- a/indra/llrender/llrender.cpp	Thu Nov 30 17:05:57 2017 +0000
    18.2 +++ b/indra/llrender/llrender.cpp	Thu Nov 30 17:07:57 2017 +0000
    18.3 @@ -1127,7 +1127,11 @@
    18.4  void LLRender::initVB()
    18.5  {
    18.6  	mBuffer = new LLVertexBuffer(immediate_mask, 0);
    18.7 -	mBuffer->allocateBuffer(4096, 0, TRUE);
    18.8 +	if (!mBuffer->allocateBuffer(4096, 0, true))
    18.9 +	{
   18.10 +		// If this doesn't work, we're knee-deep in trouble!
   18.11 +		LL_WARNS() << "Failed to allocate Vertex Buffer for common rendering" << LL_ENDL;
   18.12 +	}
   18.13  	mBuffer->getVertexStrider(mVerticesp);
   18.14  	mBuffer->getTexCoord0Strider(mTexcoordsp);
   18.15  	mBuffer->getColorStrider(mColorsp);
    19.1 --- a/indra/llrender/llvertexbuffer.cpp	Thu Nov 30 17:05:57 2017 +0000
    19.2 +++ b/indra/llrender/llvertexbuffer.cpp	Thu Nov 30 17:07:57 2017 +0000
    19.3 @@ -611,30 +611,64 @@
    19.4  	//LLGLSLShader::startProfile();
    19.5  	//glDrawArrays(sGLMode[mode], 0, count);
    19.6  	//LLGLSLShader::stopProfile(count, mode);
    19.7 +	bool has_buffer = true;
    19.8  	if (!sUtilityBuffer)
    19.9  	{
   19.10  		sUtilityBuffer = new LLVertexBuffer(MAP_VERTEX | MAP_NORMAL | MAP_TEXCOORD0, GL_STREAM_DRAW);
   19.11 -		sUtilityBuffer->allocateBuffer(count, count, true);
   19.12 +		has_buffer = sUtilityBuffer->allocateBuffer(count, count, true);
   19.13  	}
   19.14  	if (sUtilityBuffer->getNumVerts() < (S32) count)
   19.15  	{
   19.16 -		sUtilityBuffer->resizeBuffer(count, count);
   19.17 +		has_buffer = sUtilityBuffer->resizeBuffer(count, count);
   19.18  	}
   19.19  
   19.20 -	LLStrider<LLVector3> vertex_strider;
   19.21 -	LLStrider<LLVector3> normal_strider;
   19.22 -	sUtilityBuffer->getVertexStrider(vertex_strider);
   19.23 -	sUtilityBuffer->getNormalStrider(normal_strider);
   19.24 -	for (U32 i = 0; i < count; ++i)
   19.25 +	if (has_buffer)
   19.26  	{
   19.27 -		*(vertex_strider++) = pos[i];
   19.28 -		*(normal_strider++) = norm[i];
   19.29 +		LLStrider<LLVector3> vertex_strider;
   19.30 +		LLStrider<LLVector3> normal_strider;
   19.31 +		sUtilityBuffer->getVertexStrider(vertex_strider);
   19.32 +		sUtilityBuffer->getNormalStrider(normal_strider);
   19.33 +		for (U32 i = 0; i < count; ++i)
   19.34 +		{
   19.35 +			*(vertex_strider++) = pos[i];
   19.36 +			*(normal_strider++) = norm[i];
   19.37 +		}
   19.38 +
   19.39 +		sUtilityBuffer->setBuffer(MAP_VERTEX | MAP_NORMAL);
   19.40 +		LLGLSLShader::startProfile();
   19.41 +		sUtilityBuffer->drawArrays(mode, 0, pos.size());
   19.42 +		LLGLSLShader::stopProfile(count, mode);
   19.43  	}
   19.44 +	else
   19.45 +	{
   19.46 +		unbind();
   19.47 +		
   19.48 +		setupClientArrays(MAP_VERTEX | MAP_NORMAL);
   19.49  
   19.50 -	sUtilityBuffer->setBuffer(MAP_VERTEX | MAP_NORMAL);
   19.51 -	LLGLSLShader::startProfile();
   19.52 -	sUtilityBuffer->drawArrays(mode, 0, pos.size());
   19.53 -	LLGLSLShader::stopProfile(count, mode);
   19.54 +		LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
   19.55 +
   19.56 +		if (shader)
   19.57 +		{
   19.58 +			S32 loc = LLVertexBuffer::TYPE_VERTEX;
   19.59 +			if (loc > -1)
   19.60 +			{
   19.61 +				glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, pos[0].mV);
   19.62 +			}
   19.63 +			loc = LLVertexBuffer::TYPE_NORMAL;
   19.64 +			if (loc > -1)
   19.65 +			{
   19.66 +				glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, norm[0].mV);
   19.67 +			}
   19.68 +		}
   19.69 +		else
   19.70 +		{
   19.71 +			glVertexPointer(3, GL_FLOAT, 0, pos[0].mV);
   19.72 +			glNormalPointer(GL_FLOAT, 0, norm[0].mV);
   19.73 +		}
   19.74 +		LLGLSLShader::startProfile();
   19.75 +		glDrawArrays(sGLMode[mode], 0, count);
   19.76 +		LLGLSLShader::stopProfile(count, mode);
   19.77 +	}
   19.78  	// </FS:Ansariel>
   19.79  }
   19.80  
   19.81 @@ -663,36 +697,43 @@
   19.82  	gGL.syncMatrices();
   19.83  
   19.84  	// <FS:Ansariel> Use a vbo for the static LLVertexBuffer::drawArray/Element functions; by Drake Arconis/Shyotl Kuhr
   19.85 +	bool has_buffer = true;
   19.86  	if (!sUtilityBuffer)
   19.87  	{
   19.88  		sUtilityBuffer = new LLVertexBuffer(MAP_VERTEX | MAP_NORMAL | MAP_TEXCOORD0, GL_STREAM_DRAW);
   19.89 -		sUtilityBuffer->allocateBuffer(num_vertices, num_indices, true);
   19.90 +		has_buffer = sUtilityBuffer->allocateBuffer(num_vertices, num_indices, true);
   19.91  	}
   19.92  	if (sUtilityBuffer->getNumVerts() < num_vertices || sUtilityBuffer->getNumIndices() < num_indices)
   19.93  	{
   19.94 -		sUtilityBuffer->resizeBuffer(llmax(sUtilityBuffer->getNumVerts(), num_vertices), llmax(sUtilityBuffer->getNumIndices(), num_indices));
   19.95 +		has_buffer = sUtilityBuffer->resizeBuffer(llmax(sUtilityBuffer->getNumVerts(), num_vertices), llmax(sUtilityBuffer->getNumIndices(), num_indices));
   19.96  	}
   19.97  	// </FS:Ansariel>
   19.98  
   19.99  	U32 mask = LLVertexBuffer::MAP_VERTEX;
  19.100  	// <FS:Ansariel> Use a vbo for the static LLVertexBuffer::drawArray/Element functions; by Drake Arconis/Shyotl Kuhr
  19.101 -	LLStrider<U16> index_strider;
  19.102 -	LLStrider<LLVector3> vertex_strider;
  19.103 -	sUtilityBuffer->getIndexStrider(index_strider);
  19.104 -	sUtilityBuffer->getVertexStrider(vertex_strider);
  19.105 -	const S32 index_size = ((num_indices * sizeof(U16)) + 0xF) & ~0xF;
  19.106 -	const S32 vertex_size = ((num_vertices * 4 * sizeof(F32)) + 0xF) & ~0xF;
  19.107 -	LLVector4a::memcpyNonAliased16((F32*)index_strider.get(), (F32*)indicesp, index_size);
  19.108 -	LLVector4a::memcpyNonAliased16((F32*)vertex_strider.get(), (F32*)pos, vertex_size);
  19.109 +	if (has_buffer)
  19.110 +	{
  19.111 +		LLStrider<U16> index_strider;
  19.112 +		LLStrider<LLVector3> vertex_strider;
  19.113 +		sUtilityBuffer->getIndexStrider(index_strider);
  19.114 +		sUtilityBuffer->getVertexStrider(vertex_strider);
  19.115 +		const S32 index_size = ((num_indices * sizeof(U16)) + 0xF) & ~0xF;
  19.116 +		const S32 vertex_size = ((num_vertices * 4 * sizeof(F32)) + 0xF) & ~0xF;
  19.117 +		LLVector4a::memcpyNonAliased16((F32*)index_strider.get(), (F32*)indicesp, index_size);
  19.118 +		LLVector4a::memcpyNonAliased16((F32*)vertex_strider.get(), (F32*)pos, vertex_size);
  19.119 +	}
  19.120  	// </FS:Ansariel>
  19.121  	if (tc)
  19.122  	{
  19.123  		mask = mask | LLVertexBuffer::MAP_TEXCOORD0;
  19.124  		// <FS:Ansariel> Use a vbo for the static LLVertexBuffer::drawArray/Element functions; by Drake Arconis/Shyotl Kuhr
  19.125 -		LLStrider<LLVector2> tc_strider;
  19.126 -		sUtilityBuffer->getTexCoord0Strider(tc_strider);
  19.127 -		const S32 tc_size = ((num_vertices * 2 * sizeof(F32)) + 0xF) & ~0xF;
  19.128 -		LLVector4a::memcpyNonAliased16((F32*)tc_strider.get(), (F32*)tc, tc_size);
  19.129 +		if (has_buffer)
  19.130 +		{
  19.131 +			LLStrider<LLVector2> tc_strider;
  19.132 +			sUtilityBuffer->getTexCoord0Strider(tc_strider);
  19.133 +			const S32 tc_size = ((num_vertices * 2 * sizeof(F32)) + 0xF) & ~0xF;
  19.134 +			LLVector4a::memcpyNonAliased16((F32*)tc_strider.get(), (F32*)tc, tc_size);
  19.135 +		}
  19.136  		// </FS:Ansariel>
  19.137  	}
  19.138  
  19.139 @@ -721,10 +762,40 @@
  19.140  	//LLGLSLShader::startProfile();
  19.141  	//glDrawElements(sGLMode[mode], num_indices, GL_UNSIGNED_SHORT, indicesp);
  19.142  	//LLGLSLShader::stopProfile(num_indices, mode);
  19.143 -	sUtilityBuffer->setBuffer(mask);
  19.144 -	LLGLSLShader::startProfile();
  19.145 -	sUtilityBuffer->draw(mode, num_indices, 0);
  19.146 -	LLGLSLShader::stopProfile(num_indices, mode);
  19.147 +	if (has_buffer)
  19.148 +	{
  19.149 +		sUtilityBuffer->setBuffer(mask);
  19.150 +		LLGLSLShader::startProfile();
  19.151 +		sUtilityBuffer->draw(mode, num_indices, 0);
  19.152 +		LLGLSLShader::stopProfile(num_indices, mode);
  19.153 +	}
  19.154 +	else
  19.155 +	{
  19.156 +		unbind();
  19.157 +		
  19.158 +		setupClientArrays(mask);
  19.159 +
  19.160 +		if (LLGLSLShader::sNoFixedFunction)
  19.161 +		{
  19.162 +			S32 loc = LLVertexBuffer::TYPE_VERTEX;
  19.163 +			glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 16, pos);
  19.164 +
  19.165 +			if (tc)
  19.166 +			{
  19.167 +				loc = LLVertexBuffer::TYPE_TEXCOORD0;
  19.168 +				glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, 0, tc);
  19.169 +			}
  19.170 +		}
  19.171 +		else
  19.172 +		{
  19.173 +			glTexCoordPointer(2, GL_FLOAT, 0, tc);
  19.174 +			glVertexPointer(3, GL_FLOAT, 16, pos);
  19.175 +		}
  19.176 +
  19.177 +		LLGLSLShader::startProfile();
  19.178 +		glDrawElements(sGLMode[mode], num_indices, GL_UNSIGNED_SHORT, indicesp);
  19.179 +		LLGLSLShader::stopProfile(num_indices, mode);
  19.180 +	}
  19.181  	// </FS:Ansariel>
  19.182  }
  19.183  
  19.184 @@ -1150,7 +1221,14 @@
  19.185  	sVertexCount -= mNumVerts;
  19.186  	sIndexCount -= mNumIndices;
  19.187  
  19.188 -	llassert_always(!mMappedData && !mMappedIndexData);
  19.189 +	if (mMappedData)
  19.190 +	{
  19.191 +		LL_ERRS() << "Failed to clear vertex buffer's vertices" << LL_ENDL;
  19.192 +	}
  19.193 +	if (mMappedIndexData)
  19.194 +	{
  19.195 +		LL_ERRS() << "Failed to clear vertex buffer's indices" << LL_ENDL;
  19.196 +	}
  19.197  };
  19.198  
  19.199  void LLVertexBuffer::placeFence() const
  19.200 @@ -1252,7 +1330,7 @@
  19.201  	sGLCount--;
  19.202  }
  19.203  
  19.204 -void LLVertexBuffer::createGLBuffer(U32 size)
  19.205 +bool LLVertexBuffer::createGLBuffer(U32 size)
  19.206  {
  19.207  	if (mGLBuffer)
  19.208  	{
  19.209 @@ -1261,9 +1339,11 @@
  19.210  
  19.211  	if (size == 0)
  19.212  	{
  19.213 -		return;
  19.214 +		return true;
  19.215  	}
  19.216  
  19.217 +	bool sucsess = true;
  19.218 +
  19.219  	mEmpty = true;
  19.220  
  19.221  	mMappedDataUsingVBOs = useVBOs();
  19.222 @@ -1281,9 +1361,15 @@
  19.223  		mSize = size;
  19.224  		claimMem(mSize);
  19.225  	}
  19.226 +
  19.227 +	if (!mMappedData)
  19.228 +	{
  19.229 +		sucsess = false;
  19.230 +	}
  19.231 +	return sucsess;
  19.232  }
  19.233  
  19.234 -void LLVertexBuffer::createGLIndices(U32 size)
  19.235 +bool LLVertexBuffer::createGLIndices(U32 size)
  19.236  {
  19.237  	if (mGLIndices)
  19.238  	{
  19.239 @@ -1292,9 +1378,11 @@
  19.240  	
  19.241  	if (size == 0)
  19.242  	{
  19.243 -		return;
  19.244 +		return true;
  19.245  	}
  19.246  
  19.247 +	bool sucsess = true;
  19.248 +
  19.249  	mEmpty = true;
  19.250  
  19.251  	//pad by 16 bytes for aligned copies
  19.252 @@ -1315,6 +1403,12 @@
  19.253  		mGLIndices = ++gl_buffer_idx;
  19.254  		mIndicesSize = size;
  19.255  	}
  19.256 +
  19.257 +	if (!mMappedIndexData)
  19.258 +	{
  19.259 +		sucsess = false;
  19.260 +	}
  19.261 +	return sucsess;
  19.262  }
  19.263  
  19.264  void LLVertexBuffer::destroyGLBuffer()
  19.265 @@ -1357,10 +1451,12 @@
  19.266  	//unbind();
  19.267  }
  19.268  
  19.269 -void LLVertexBuffer::updateNumVerts(S32 nverts)
  19.270 +bool LLVertexBuffer::updateNumVerts(S32 nverts)
  19.271  {
  19.272  	llassert(nverts >= 0);
  19.273  
  19.274 +	bool sucsess = true;
  19.275 +
  19.276  	if (nverts > 65536)
  19.277  	{
  19.278  		LL_WARNS() << "Vertex buffer overflow!" << LL_ENDL;
  19.279 @@ -1371,31 +1467,37 @@
  19.280  
  19.281  	if (needed_size > mSize || needed_size <= mSize/2)
  19.282  	{
  19.283 -		createGLBuffer(needed_size);
  19.284 +		sucsess &= createGLBuffer(needed_size);
  19.285  	}
  19.286  
  19.287  	sVertexCount -= mNumVerts;
  19.288  	mNumVerts = nverts;
  19.289  	sVertexCount += mNumVerts;
  19.290 +
  19.291 +	return sucsess;
  19.292  }
  19.293  
  19.294 -void LLVertexBuffer::updateNumIndices(S32 nindices)
  19.295 +bool LLVertexBuffer::updateNumIndices(S32 nindices)
  19.296  {
  19.297  	llassert(nindices >= 0);
  19.298  
  19.299 +	bool sucsess = true;
  19.300 +
  19.301  	U32 needed_size = sizeof(U16) * nindices;
  19.302  
  19.303  	if (needed_size > mIndicesSize || needed_size <= mIndicesSize/2)
  19.304  	{
  19.305 -		createGLIndices(needed_size);
  19.306 +		sucsess &= createGLIndices(needed_size);
  19.307  	}
  19.308  
  19.309  	sIndexCount -= mNumIndices;
  19.310  	mNumIndices = nindices;
  19.311  	sIndexCount += mNumIndices;
  19.312 +
  19.313 +	return sucsess;
  19.314  }
  19.315  
  19.316 -void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
  19.317 +bool LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
  19.318  {
  19.319  	stop_glerror();
  19.320  
  19.321 @@ -1405,13 +1507,15 @@
  19.322  		LL_ERRS() << "Bad vertex buffer allocation: " << nverts << " : " << nindices << LL_ENDL;
  19.323  	}
  19.324  
  19.325 -	updateNumVerts(nverts);
  19.326 -	updateNumIndices(nindices);
  19.327 +	bool sucsess = true;
  19.328 +
  19.329 +	sucsess &= updateNumVerts(nverts);
  19.330 +	sucsess &= updateNumIndices(nindices);
  19.331  	
  19.332  	if (create && (nverts || nindices))
  19.333  	{
  19.334  		//actually allocate space for the vertex buffer if using VBO mapping
  19.335 -		flush();
  19.336 +		flush(); //unmap
  19.337  
  19.338  		if (gGLManager.mHasVertexArrayObject && useVBOs() && sUseVAO)
  19.339  		{
  19.340 @@ -1421,6 +1525,8 @@
  19.341  			setupVertexArray();
  19.342  		}
  19.343  	}
  19.344 +
  19.345 +	return sucsess;
  19.346  }
  19.347  
  19.348  static LLTrace::BlockTimerStatHandle FTM_SETUP_VERTEX_ARRAY("Setup VAO");
  19.349 @@ -1543,23 +1649,27 @@
  19.350  	unbind();
  19.351  }
  19.352  
  19.353 -void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
  19.354 +bool LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
  19.355  {
  19.356  	llassert(newnverts >= 0);
  19.357  	llassert(newnindices >= 0);
  19.358  
  19.359 -	updateNumVerts(newnverts);		
  19.360 -	updateNumIndices(newnindices);
  19.361 +	bool sucsess = true;
  19.362 +
  19.363 +	sucsess &= updateNumVerts(newnverts);		
  19.364 +	sucsess &= updateNumIndices(newnindices);
  19.365  	
  19.366  	if (useVBOs())
  19.367  	{
  19.368 -		flush();
  19.369 +		flush(); //unmap
  19.370  
  19.371  		if (mGLArray)
  19.372  		{ //if size changed, offsets changed
  19.373  			setupVertexArray();
  19.374  		}
  19.375  	}
  19.376 +
  19.377 +	return sucsess;
  19.378  }
  19.379  
  19.380  bool LLVertexBuffer::useVBOs() const
    20.1 --- a/indra/llrender/llvertexbuffer.h	Thu Nov 30 17:05:57 2017 +0000
    20.2 +++ b/indra/llrender/llvertexbuffer.h	Thu Nov 30 17:07:57 2017 +0000
    20.3 @@ -216,12 +216,12 @@
    20.4  	bool	bindGLArray();
    20.5  	void	releaseBuffer();
    20.6  	void	releaseIndices();
    20.7 -	void	createGLBuffer(U32 size);
    20.8 -	void	createGLIndices(U32 size);
    20.9 +	bool	createGLBuffer(U32 size);
   20.10 +	bool	createGLIndices(U32 size);
   20.11  	void 	destroyGLBuffer();
   20.12  	void 	destroyGLIndices();
   20.13 -	void	updateNumVerts(S32 nverts);
   20.14 -	void	updateNumIndices(S32 nindices); 
   20.15 +	bool	updateNumVerts(S32 nverts);
   20.16 +	bool	updateNumIndices(S32 nindices); 
   20.17  	void	unmapBuffer();
   20.18  		
   20.19  public:
   20.20 @@ -237,8 +237,8 @@
   20.21  	virtual void	setBuffer(U32 data_mask); 	// calls  setupVertexBuffer() if data_mask is not 0
   20.22  	void flush(); //flush pending data to GL memory
   20.23  	// allocate buffer
   20.24 -	void	allocateBuffer(S32 nverts, S32 nindices, bool create);
   20.25 -	virtual void resizeBuffer(S32 newnverts, S32 newnindices);
   20.26 +	bool	allocateBuffer(S32 nverts, S32 nindices, bool create);
   20.27 +	virtual bool resizeBuffer(S32 newnverts, S32 newnindices);
   20.28  			
   20.29  	// Only call each getVertexPointer, etc, once before calling unmapBuffer()
   20.30  	// call unmapBuffer() after calls to getXXXStrider() before any cals to setBuffer()
    21.1 --- a/indra/llui/llbutton.cpp	Thu Nov 30 17:05:57 2017 +0000
    21.2 +++ b/indra/llui/llbutton.cpp	Thu Nov 30 17:07:57 2017 +0000
    21.3 @@ -851,11 +851,12 @@
    21.4  		}
    21.5  		else
    21.6  		{
    21.7 -			imagep->draw(0, 0, (enabled ? mImageColor.get() : disabled_color) % alpha );
    21.8 +			S32 y = getLocalRect().getHeight() - imagep->getHeight();
    21.9 +			imagep->draw(0, y, (enabled ? mImageColor.get() : disabled_color) % alpha);
   21.10  			if (mCurGlowStrength > 0.01f)
   21.11  			{
   21.12  				gGL.setSceneBlendType(glow_type);
   21.13 -				imagep->drawSolid(0, 0, glow_color % (mCurGlowStrength * alpha));
   21.14 +				imagep->drawSolid(0, y, glow_color % (mCurGlowStrength * alpha));
   21.15  				gGL.setSceneBlendType(LLRender::BT_ALPHA);
   21.16  			}
   21.17  		}
   21.18 @@ -1006,7 +1007,8 @@
   21.19  	}
   21.20  	else
   21.21  	{
   21.22 -		imagep->drawBorder(0, 0, color, size);
   21.23 +		S32 y = getLocalRect().getHeight() - imagep->getHeight();
   21.24 +		imagep->drawBorder(0, y, color, size);
   21.25  	}
   21.26  }
   21.27  
    22.1 --- a/indra/llui/llscrolllistctrl.cpp	Thu Nov 30 17:05:57 2017 +0000
    22.2 +++ b/indra/llui/llscrolllistctrl.cpp	Thu Nov 30 17:07:57 2017 +0000
    22.3 @@ -3413,6 +3413,18 @@
    22.4  	std::transform(mFilterString.begin(), mFilterString.end(), mFilterString.begin(), ::tolower);
    22.5  	mIsFiltered = (mFilterColumn > -1 && !mFilterString.empty());
    22.6  	updateLayout();
    22.7 +
    22.8 +	if (mIsFiltered && getNumSelected() > 0 && isFiltered(getFirstSelected()))
    22.9 +	{
   22.10 +		for (item_list::iterator iter = mItemList.begin(); iter != mItemList.end(); iter++)
   22.11 +		{
   22.12 +			if (!isFiltered(*iter))
   22.13 +			{
   22.14 +				selectItem(*iter);
   22.15 +				break;
   22.16 +			}
   22.17 +		}
   22.18 +	}
   22.19  }
   22.20  
   22.21  bool LLScrollListCtrl::isFiltered(const LLScrollListItem* item) const
    23.1 --- a/indra/newview/VIEWER_VERSION.txt	Thu Nov 30 17:05:57 2017 +0000
    23.2 +++ b/indra/newview/VIEWER_VERSION.txt	Thu Nov 30 17:07:57 2017 +0000
    23.3 @@ -1,1 +1,1 @@
    23.4 -5.0.9
    23.5 +5.0.10
    24.1 --- a/indra/newview/exopostprocess.cpp	Thu Nov 30 17:05:57 2017 +0000
    24.2 +++ b/indra/newview/exopostprocess.cpp	Thu Nov 30 17:07:57 2017 +0000
    24.3 @@ -31,33 +31,20 @@
    24.4  
    24.5  exoPostProcess::exoPostProcess()
    24.6  {
    24.7 -	mExoPostBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1, 0);
    24.8 -	mExoPostBuffer->allocateBuffer(8, 0, true);
    24.9 -
   24.10 -	LLStrider<LLVector3> vert; 
   24.11 -	mExoPostBuffer->getVertexStrider(vert);
   24.12 -	LLStrider<LLVector2> tc0;
   24.13 -	LLStrider<LLVector2> tc1;
   24.14 -	mExoPostBuffer->getTexCoord0Strider(tc0);
   24.15 -	mExoPostBuffer->getTexCoord1Strider(tc1);
   24.16 -
   24.17 -	vert[0].set(-1.f, 1.f, 0.f);
   24.18 -	vert[1].set(-1.f, -3.f, 0.f);
   24.19 -	vert[2].set(3.f,1.f, 0.f);
   24.20 -	
   24.21 +	initVB();
   24.22  	sExodusRenderVignette = LLVector3(0.f, 0.f, 0.f);
   24.23  }
   24.24  
   24.25  exoPostProcess::~exoPostProcess()
   24.26  {
   24.27 -	mExoPostBuffer = NULL;
   24.28 +	destroyVB();
   24.29  }
   24.30  
   24.31  void exoPostProcess::ExodusRenderPostStack(LLRenderTarget *src, LLRenderTarget *dst)
   24.32  {
   24.33  	if (mVertexShaderLevel > 0)
   24.34  	{
   24.35 -		if (sExodusRenderVignette.mV[0] > 0 && LLPipeline::sRenderDeferred)
   24.36 +		if (sExodusRenderVignette.mV[0] > 0.f && LLPipeline::sRenderDeferred)
   24.37  			ExodusRenderVignette(src, dst); // Don't render vignette here in non-deferred. Do it in the glow combine shader.
   24.38  	}
   24.39  }
   24.40 @@ -76,51 +63,61 @@
   24.41  
   24.42  void exoPostProcess::initVB()
   24.43  {
   24.44 +	destroyVB();
   24.45 +	mExoPostBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1, 0);
   24.46 +
   24.47  	if (!gPipeline.sRenderDeferred)
   24.48  	{
   24.49 -		// Destroy our old buffer, and create a new vertex buffer for the screen (shamelessly ganked from pipeline.cpp).
   24.50 -		destroyVB();
   24.51 -		mExoPostBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1, 0);
   24.52 -		mExoPostBuffer->allocateBuffer(3,0,TRUE);
   24.53 +		if (mExoPostBuffer->allocateBuffer(3, 0, true))
   24.54 +		{
   24.55 +			LLStrider<LLVector3> v;
   24.56 +			LLStrider<LLVector2> uv1;
   24.57 +			LLStrider<LLVector2> uv2;
   24.58  
   24.59 -		LLStrider<LLVector3> v;
   24.60 -		LLStrider<LLVector2> uv1;
   24.61 -		LLStrider<LLVector2> uv2;
   24.62 +			mExoPostBuffer->getVertexStrider(v);
   24.63 +			mExoPostBuffer->getTexCoord0Strider(uv1);
   24.64 +			mExoPostBuffer->getTexCoord1Strider(uv2);
   24.65 +		
   24.66 +			uv1[0] = LLVector2(0.f, 0.f);
   24.67 +			uv1[1] = LLVector2(0.f, 2.f);
   24.68 +			uv1[2] = LLVector2(2.f, 0.f);
   24.69 +		
   24.70 +			uv2[0] = LLVector2(0.f, 0.f);
   24.71 +			uv2[1] = LLVector2(0.f, etc2.mV[1] * 2.f);
   24.72 +			uv2[2] = LLVector2(etc2.mV[0] * 2.f, 0.f);
   24.73 +		
   24.74 +			v[0] = LLVector3(-1.f, -1.f, 0.f);
   24.75 +			v[1] = LLVector3(-1.f, 3.f, 0.f);
   24.76 +			v[2] = LLVector3(3.f, -1.f, 0.f);
   24.77  
   24.78 -		mExoPostBuffer->getVertexStrider(v);
   24.79 -		mExoPostBuffer->getTexCoord0Strider(uv1);
   24.80 -		mExoPostBuffer->getTexCoord1Strider(uv2);
   24.81 -		
   24.82 -		uv1[0] = LLVector2(0.f, 0.f);
   24.83 -		uv1[1] = LLVector2(0.f, 2.f);
   24.84 -		uv1[2] = LLVector2(2.f, 0.f);
   24.85 -		
   24.86 -		uv2[0] = LLVector2(0.f, 0.f);
   24.87 -		uv2[1] = LLVector2(0.f, etc2.mV[1] * 2.f);
   24.88 -		uv2[2] = LLVector2(etc2.mV[0] * 2.f, 0.f);
   24.89 -		
   24.90 -		v[0] = LLVector3(-1.f, -1.f, 0.f);
   24.91 -		v[1] = LLVector3(-1.f, 3.f, 0.f);
   24.92 -		v[2] = LLVector3(3.f, -1.f, 0.f);
   24.93 -
   24.94 -		mExoPostBuffer->flush();
   24.95 +			mExoPostBuffer->flush();
   24.96 +		}
   24.97 +		else
   24.98 +		{
   24.99 +			LL_WARNS() << "Failed to allocate Vertex Buffer for exoPostProcessing" << LL_ENDL;
  24.100 +			destroyVB();
  24.101 +		}
  24.102  	}
  24.103  	else
  24.104  	{
  24.105 -		destroyVB();
  24.106 -		mExoPostBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1, 0);
  24.107 -		mExoPostBuffer->allocateBuffer(8, 0, true);
  24.108 +		if (mExoPostBuffer->allocateBuffer(8, 0, true))
  24.109 +		{
  24.110 +			LLStrider<LLVector3> vert;
  24.111 +			mExoPostBuffer->getVertexStrider(vert);
  24.112 +			LLStrider<LLVector2> tc0;
  24.113 +			LLStrider<LLVector2> tc1;
  24.114 +			mExoPostBuffer->getTexCoord0Strider(tc0);
  24.115 +			mExoPostBuffer->getTexCoord1Strider(tc1);
  24.116  
  24.117 -		LLStrider<LLVector3> vert; 
  24.118 -		mExoPostBuffer->getVertexStrider(vert);
  24.119 -		LLStrider<LLVector2> tc0;
  24.120 -		LLStrider<LLVector2> tc1;
  24.121 -		mExoPostBuffer->getTexCoord0Strider(tc0);
  24.122 -		mExoPostBuffer->getTexCoord1Strider(tc1);
  24.123 -
  24.124 -		vert[0].set(-1.f, 1.f, 0.f);
  24.125 -		vert[1].set(-1.f, -3.f, 0.f);
  24.126 -		vert[2].set(3.f, 1.f, 0.f);
  24.127 +			vert[0].set(-1.f, 1.f, 0.f);
  24.128 +			vert[1].set(-1.f, -3.f, 0.f);
  24.129 +			vert[2].set(3.f, 1.f, 0.f);
  24.130 +		}
  24.131 +		else
  24.132 +		{
  24.133 +			LL_WARNS() << "Failed to allocate Vertex Buffer for exoPostProcessing" << LL_ENDL;
  24.134 +			destroyVB();
  24.135 +		}
  24.136  	}
  24.137  }
  24.138  
  24.139 @@ -139,20 +136,23 @@
  24.140  
  24.141  void exoPostProcess::ExodusRenderVignette(LLRenderTarget* src, LLRenderTarget* dst)
  24.142  {
  24.143 -	dst->bindTarget();
  24.144 -	LLGLSLShader *shader = &gPostVignetteProgram;
  24.145 -	shader->bind();
  24.146 +	if (mExoPostBuffer)
  24.147 +	{
  24.148 +		dst->bindTarget();
  24.149 +		LLGLSLShader *shader = &gPostVignetteProgram;
  24.150 +		shader->bind();
  24.151  
  24.152 -	mExoPostBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX);
  24.153 +		mExoPostBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX);
  24.154  
  24.155 -	exoShader::BindRenderTarget(dst, shader, LLShaderMgr::EXO_RENDER_SCREEN);
  24.156 +		exoShader::BindRenderTarget(dst, shader, LLShaderMgr::EXO_RENDER_SCREEN);
  24.157  
  24.158 -	shader->uniform3fv(LLShaderMgr::EXO_RENDER_VIGNETTE, 1, sExodusRenderVignette.mV);
  24.159 -	mExoPostBuffer->drawArrays(LLRender::TRIANGLES, 0, 3);
  24.160 -	stop_glerror();
  24.161 +		shader->uniform3fv(LLShaderMgr::EXO_RENDER_VIGNETTE, 1, sExodusRenderVignette.mV);
  24.162 +		mExoPostBuffer->drawArrays(LLRender::TRIANGLES, 0, 3);
  24.163 +		stop_glerror();
  24.164  
  24.165 -	shader->unbind();
  24.166 -	dst->flush();
  24.167 +		shader->unbind();
  24.168 +		dst->flush();
  24.169 +	}
  24.170  }
  24.171  
  24.172  void exoShader::BindTex2D(LLTexture *tex2D, LLGLSLShader *shader, S32 uniform, S32 unit, LLTexUnit::eTextureType mode, LLTexUnit::eTextureAddressMode addressMode, LLTexUnit::eTextureFilterOptions filterMode)
    25.1 --- a/indra/newview/fsdata.cpp	Thu Nov 30 17:05:57 2017 +0000
    25.2 +++ b/indra/newview/fsdata.cpp	Thu Nov 30 17:07:57 2017 +0000
    25.3 @@ -118,7 +118,7 @@
    25.4  		else
    25.5  		{
    25.6  			processData(content);
    25.7 -			saveLLSD(content , mFSdataFilename, last_modified);
    25.8 +			saveLLSD(content, mFSdataFilename, last_modified);
    25.9  		}
   25.10  		mFSDataDone = true;
   25.11  	}
   25.12 @@ -140,7 +140,7 @@
   25.13  		else
   25.14  		{
   25.15  			processAssets(content);
   25.16 -			saveLLSD(content , mAssestsFilename, last_modified);
   25.17 +			saveLLSD(content, mAssestsFilename, last_modified);
   25.18  		}
   25.19  	}
   25.20  	else if (url == mAgentsURL)
   25.21 @@ -161,7 +161,7 @@
   25.22  		else
   25.23  		{
   25.24  			processAgents(content);
   25.25 -			saveLLSD(content , mAgentsFilename, last_modified);
   25.26 +			saveLLSD(content, mAgentsFilename, last_modified);
   25.27  		}
   25.28  		mAgentsDone = true;
   25.29  		addAgents();
   25.30 @@ -175,7 +175,7 @@
   25.31  		else
   25.32  		{
   25.33  			processClientTags(content);
   25.34 -			saveLLSD(content , mClientTagsFilename, last_modified);
   25.35 +			saveLLSD(content, mClientTagsFilename, last_modified);
   25.36  		}
   25.37  	}
   25.38  	else if (url == mFSdataDefaultsUrl)
   25.39 @@ -186,7 +186,7 @@
   25.40  		}
   25.41  		else
   25.42  		{
   25.43 -			saveLLSD(content , mFSdataDefaultsFilename, last_modified);
   25.44 +			saveLLSD(content, mFSdataDefaultsFilename, last_modified);
   25.45  		}
   25.46  	}
   25.47  }
   25.48 @@ -215,38 +215,38 @@
   25.49  	}
   25.50  }
   25.51  
   25.52 -void downloadComplete( LLSD const &aData, std::string const &aURL )
   25.53 +void downloadComplete(LLSD const &aData, std::string const &aURL, bool success)
   25.54  {
   25.55 -	LL_DEBUGS() << aData << LL_ENDL;
   25.56 +	LL_DEBUGS("fsdata") << aData << LL_ENDL;
   25.57  	
   25.58 -	LLSD header = aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ][ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
   25.59 +	LLSD header = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS][LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
   25.60  
   25.61  	LLDate lastModified;
   25.62  	if (header.has("last-modified"))
   25.63  	{
   25.64 -		lastModified.secondsSinceEpoch( FSCommon::secondsSinceEpochFromString( "%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString() ) );
   25.65 +		lastModified.secondsSinceEpoch(FSCommon::secondsSinceEpochFromString("%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString()));
   25.66  	}
   25.67  
   25.68  	LLSD data = aData;
   25.69 -	data.erase( LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS );
   25.70 +	data.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
   25.71  	
   25.72 -	FSData::getInstance()->processResponder( data, aURL, true, lastModified);
   25.73 +	FSData::getInstance()->processResponder(data, aURL, success, lastModified);
   25.74  }
   25.75  
   25.76 -void downloadCompleteScript( LLSD const &aData, std::string const &aURL, std::string const &aFilename  )
   25.77 +void downloadCompleteScript(LLSD const &aData, std::string const &aURL, std::string const &aFilename)
   25.78  {
   25.79 -	LL_DEBUGS() << aData << LL_ENDL;
   25.80 -	LLSD header = aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ][ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
   25.81 -    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD( aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ] );
   25.82 +	LL_DEBUGS("fsdata") << aData << LL_ENDL;
   25.83 +	LLSD header = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS][LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
   25.84 +	LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]);
   25.85  
   25.86  	LLDate lastModified;
   25.87  	if (header.has("last-modified"))
   25.88  	{
   25.89 -		lastModified.secondsSinceEpoch( FSCommon::secondsSinceEpochFromString( "%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString() ) );
   25.90 +		lastModified.secondsSinceEpoch(FSCommon::secondsSinceEpochFromString("%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString()));
   25.91  	}
   25.92 -    const LLSD::Binary &rawData = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary();
   25.93 +	const LLSD::Binary &rawData = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary();
   25.94  
   25.95 -	if ( status.getType() == HTTP_NOT_MODIFIED )
   25.96 +	if (status.getType() == HTTP_NOT_MODIFIED)
   25.97  	{
   25.98  		LL_INFOS("fsdata") << "Got [304] not modified for " << aURL << LL_ENDL;
   25.99  		return;
  25.100 @@ -282,10 +282,9 @@
  25.101  	}
  25.102  }
  25.103  
  25.104 -void downloadError( LLSD const &aData, std::string const &aURL )
  25.105 +void downloadError(LLSD const &aData, std::string const &aURL)
  25.106  {
  25.107 -	LL_WARNS() << "Failed to download " << aURL << ": " << aData << LL_ENDL;
  25.108 -	// FSData::getInstance()->processResponder(getContent(), mURL, false, mLastModified);
  25.109 +	LL_WARNS("fsdata") << "Failed to download " << aURL << ": " << aData << LL_ENDL;
  25.110  }
  25.111  
  25.112  // call this just before the login screen and after the LLProxy has been setup.
  25.113 @@ -303,11 +302,8 @@
  25.114  		last_modified = stat_data.st_mtime;
  25.115  	}
  25.116  	LL_INFOS("fsdata") << "Downloading data.xml from " << mFSDataURL << " with last modifed of " << last_modified << LL_ENDL;
  25.117 +	FSCoreHttpUtil::callbackHttpGet(mFSDataURL, last_modified, boost::bind(downloadComplete, _1, mFSDataURL, true), boost::bind(downloadComplete, _1, mFSDataURL, false));
  25.118  
  25.119 -	LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( mFSDataURL, boost::bind( downloadComplete, _1, mFSDataURL ), boost::bind( downloadError, _1, mFSDataURL ) );
  25.120 -
  25.121 -	//LLHTTPClient::getIfModified(mFSDataURL, new FSDownloader(mFSDataURL), last_modified, mHeaders, HTTP_TIMEOUT);
  25.122 -	
  25.123  	last_modified = 0;
  25.124  	if(!LLFile::stat(mFSdataDefaultsFilename, &stat_data))
  25.125  	{
  25.126 @@ -316,7 +312,7 @@
  25.127  	std::string filename = llformat("defaults.%s.xml", LLVersionInfo::getShortVersion().c_str());
  25.128  	mFSdataDefaultsUrl = mBaseURL + "/" + filename;
  25.129  	LL_INFOS("fsdata") << "Downloading defaults.xml from " << mFSdataDefaultsUrl << " with last modifed of " << last_modified << LL_ENDL;
  25.130 -	LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( mFSdataDefaultsUrl, boost::bind( downloadComplete, _1, mFSdataDefaultsUrl ), boost::bind( downloadError, _1, mFSdataDefaultsUrl ) );
  25.131 +	FSCoreHttpUtil::callbackHttpGet(mFSdataDefaultsUrl, last_modified, boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, true), boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, false));
  25.132  
  25.133  #if OPENSIM
  25.134  	std::string filenames[] = {"scriptlibrary_ossl.xml", "scriptlibrary_aa.xml"};
  25.135 @@ -330,7 +326,10 @@
  25.136  		}
  25.137  		std::string url = mBaseURL + "/" + script_name;
  25.138  		LL_INFOS("fsdata") << "Downloading " << script_name << " from " << url << " with last modifed of " << last_modified << LL_ENDL;
  25.139 -		FSCoreHttpUtil::callbackHttpGetRaw( url, boost::bind( downloadCompleteScript, _1, url, filename ), boost::bind( downloadError, _1, url ) );
  25.140 +		LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
  25.141 +		httpOpts->setWantHeaders(true);
  25.142 +		httpOpts->setLastModified((long)last_modified);
  25.143 +		FSCoreHttpUtil::callbackHttpGetRaw( url, boost::bind( downloadCompleteScript, _1, url, filename ), boost::bind( downloadError, _1, url ), LLCore::HttpHeaders::ptr_t(), httpOpts);
  25.144  	}
  25.145  #endif
  25.146  }
  25.147 @@ -361,35 +360,31 @@
  25.148  		mAssetsURL = mBaseURL + "/" + "assets.xml";
  25.149  	}
  25.150  	
  25.151 -	if (mAgentsURL.empty())
  25.152 +	if (!mAgentsURL.empty())
  25.153  	{
  25.154 -		// we can saftly presume if agents.xml URL is not present, assets.xml is not going to be present also
  25.155 -		return;
  25.156 +		mAgentsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_agents.xml");
  25.157 +		time_t last_modified = 0;
  25.158 +		llstat stat_data;
  25.159 +		if(!LLFile::stat(mAgentsFilename, &stat_data))
  25.160 +		{
  25.161 +			last_modified = stat_data.st_mtime;
  25.162 +		}
  25.163 +		LL_INFOS("fsdata") << "Downloading agents.xml from " << mAgentsURL << " with last modifed of " << last_modified << LL_ENDL;
  25.164 +		FSCoreHttpUtil::callbackHttpGet(mAgentsURL, last_modified, boost::bind(downloadComplete, _1, mAgentsURL, true), boost::bind(downloadComplete, _1, mAgentsURL, false));
  25.165  	}
  25.166 -	
  25.167 -	mAgentsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_agents.xml");
  25.168 -	time_t last_modified = 0;
  25.169 -	llstat stat_data;
  25.170 -	if(!LLFile::stat(mAgentsFilename, &stat_data))
  25.171 +
  25.172 +	if (!mAssetsURL.empty())
  25.173  	{
  25.174 -		last_modified = stat_data.st_mtime;
  25.175 +		mAssestsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_assets.xml");
  25.176 +		time_t last_modified = 0;
  25.177 +		llstat stat_data;
  25.178 +		if(!LLFile::stat(mAssestsFilename, &stat_data))
  25.179 +		{
  25.180 +			last_modified = stat_data.st_mtime;
  25.181 +		}
  25.182 +		LL_INFOS("fsdata") << "Downloading assets.xml from " << mAssetsURL << " with last modifed of " << last_modified << LL_ENDL;
  25.183 +		FSCoreHttpUtil::callbackHttpGet(mAssetsURL, last_modified, boost::bind(downloadComplete, _1, mAssetsURL, true), boost::bind(downloadComplete, _1, mAssetsURL, false));
  25.184  	}
  25.185 -	LL_INFOS("fsdata") << "Downloading agents.xml from " << mAgentsURL << " with last modifed of " << last_modified << LL_ENDL;
  25.186 -	LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( mAgentsURL, boost::bind( downloadComplete, _1, mAgentsURL ), boost::bind( downloadError, _1, mAgentsURL ) );
  25.187 -	
  25.188 -	if (mAssetsURL.empty())
  25.189 -	{
  25.190 -		return;
  25.191 -	}
  25.192 -	
  25.193 -	mAssestsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_assets.xml");
  25.194 -	last_modified = 0;
  25.195 -	if(!LLFile::stat(mAssestsFilename, &stat_data))
  25.196 -	{
  25.197 -		last_modified = stat_data.st_mtime;
  25.198 -	}
  25.199 -	LL_INFOS("fsdata") << "Downloading assets.xml from " << mAssetsURL << " with last modifed of " << last_modified << LL_ENDL;
  25.200 -	LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( mAssetsURL, boost::bind( downloadComplete, _1, mAssetsURL ), boost::bind( downloadError, _1, mAssetsURL ) );
  25.201  }
  25.202  
  25.203  void FSData::processData(const LLSD& fs_data)
  25.204 @@ -455,7 +450,7 @@
  25.205  			last_modified = stat_data.st_mtime;
  25.206  		}
  25.207  		LL_INFOS("fsdata") << "Downloading client_list_v2.xml from " << LEGACY_CLIENT_LIST_URL << " with last modifed of " << last_modified << LL_ENDL;
  25.208 -		LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( LEGACY_CLIENT_LIST_URL, boost::bind( downloadComplete, _1, LEGACY_CLIENT_LIST_URL ), boost::bind( downloadError, _1, LEGACY_CLIENT_LIST_URL ) );
  25.209 +		FSCoreHttpUtil::callbackHttpGet(LEGACY_CLIENT_LIST_URL, last_modified, boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, true), boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, false));
  25.210  	}
  25.211  	else if(use_legacy_tags)
  25.212  	{
    26.1 --- a/indra/newview/fsdata.h	Thu Nov 30 17:05:57 2017 +0000
    26.2 +++ b/indra/newview/fsdata.h	Thu Nov 30 17:07:57 2017 +0000
    26.3 @@ -79,9 +79,8 @@
    26.4  	std::string getOpenSimMOTD() { return mOpensimMOTD; }
    26.5  	bool getFSDataDone() { return mFSDataDone; }
    26.6  	bool getAgentsDone() { return mAgentsDone; }
    26.7 -	
    26.8 +
    26.9  	bool isAgentFlag(const LLUUID& agent_id, FSData::flags_t flag);
   26.10 -	
   26.11  
   26.12  private:
   26.13  	static void sendInfo(const LLUUID& destination, const LLUUID& sessionid, const std::string& my_name, EInstantMessage dialog);
    27.1 --- a/indra/newview/llappviewer.cpp	Thu Nov 30 17:05:57 2017 +0000
    27.2 +++ b/indra/newview/llappviewer.cpp	Thu Nov 30 17:07:57 2017 +0000
    27.3 @@ -769,8 +769,6 @@
    27.4  	mSavePerAccountSettings(false),		// don't save settings on logout unless login succeeded.
    27.5  	mQuitRequested(false),
    27.6  	mLogoutRequestSent(false),
    27.7 -	// <FS:Ansariel> MaxFPS Viewer-Chui merge error
    27.8 -	//mYieldTime(-1),
    27.9  	mLastAgentControlFlags(0),
   27.10  	mLastAgentForceUpdate(0),
   27.11  	mMainloopTimeout(NULL),
   27.12 @@ -935,7 +933,7 @@
   27.13  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml"));
   27.14  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "colors.xml"));
   27.15  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "ignorable_dialogs.xml"));
   27.16 -		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids.xml"));
   27.17 +		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids.remote.xml"));
   27.18  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grids.user.xml"));
   27.19  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "password.dat"));
   27.20  		LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "quick_preferences.xml"));
   27.21 @@ -1717,20 +1715,12 @@
   27.22  			LL_RECORD_BLOCK_TIME(FTM_SLEEP);
   27.23  			
   27.24  			// yield some time to the os based on command line option
   27.25 -			// <FS:Ansariel> MaxFPS Viewer-Chui merge error
   27.26 -			//if(mYieldTime >= 0)
   27.27 -			//{
   27.28 -			//	LLFastTimer t(FTM_YIELD);
   27.29 -			//	ms_sleep(mYieldTime);
   27.30 -			//}
   27.31 -			//S32 yield_time = gSavedSettings.getS32("YieldTime");
   27.32 -			static LLCachedControl<S32> yield_time(gSavedSettings, "YieldTime");
   27.33 +			static LLCachedControl<S32> yield_time(gSavedSettings, "YieldTime", -1);
   27.34  			if(yield_time >= 0)
   27.35  			{
   27.36  				LL_RECORD_BLOCK_TIME(FTM_YIELD);
   27.37  				ms_sleep(yield_time);
   27.38  			}
   27.39 -			// </FS:Ansariel> MaxFPS Viewer-Chui merge error
   27.40  
   27.41  			// yield cooperatively when not running as foreground window
   27.42  			if (   (gViewerWindow && !gViewerWindow->getWindow()->getVisible())
   27.43 @@ -3251,8 +3241,6 @@
   27.44  		}
   27.45  	}
   27.46  
   27.47 -	// <FS:Ansariel> MaxFPS Viewer-Chui merge error
   27.48 -    //mYieldTime = gSavedSettings.getS32("YieldTime");
   27.49  
   27.50  	// Display splash screen.  Must be after above check for previous
   27.51  	// crash as this dialog is always frontmost.
    28.1 --- a/indra/newview/llappviewer.h	Thu Nov 30 17:05:57 2017 +0000
    28.2 +++ b/indra/newview/llappviewer.h	Thu Nov 30 17:07:57 2017 +0000
    28.3 @@ -310,8 +310,6 @@
    28.4  
    28.5      bool mQuitRequested;				// User wants to quit, may have modified documents open.
    28.6      bool mLogoutRequestSent;			// Disconnect message sent to simulator, no longer safe to send messages to the sim.
    28.7 -	// <FS:Ansariel> MaxFPS Viewer-Chui merge error
    28.8 -    //S32 mYieldTime;
    28.9  	U32 mLastAgentControlFlags;
   28.10  	F32 mLastAgentForceUpdate;
   28.11  	struct SettingsFiles* mSettingsLocationList;
    29.1 --- a/indra/newview/llcommandhandler.cpp	Thu Nov 30 17:05:57 2017 +0000
    29.2 +++ b/indra/newview/llcommandhandler.cpp	Thu Nov 30 17:07:57 2017 +0000
    29.3 @@ -134,7 +134,11 @@
    29.4  			{
    29.5  				break;
    29.6  			}
    29.7 -
    29.8 +			//skip initial request from external browser before STATE_BROWSER_INIT
    29.9 +			if (LLStartUp::getStartupState() == STATE_FIRST)
   29.10 +			{
   29.11 +				return true;
   29.12 +			}
   29.13  			cur_time = LLTimer::getElapsedSeconds();
   29.14  			if (cur_time < last_throttle_time + THROTTLE_PERIOD)
   29.15  			{
    30.1 --- a/indra/newview/lldrawpoolavatar.cpp	Thu Nov 30 17:05:57 2017 +0000
    30.2 +++ b/indra/newview/lldrawpoolavatar.cpp	Thu Nov 30 17:07:57 2017 +0000
    30.3 @@ -1633,15 +1633,34 @@
    30.4  		{
    30.5  			buffer = new LLVertexBuffer(data_mask, GL_STREAM_DRAW_ARB);
    30.6  		}
    30.7 -		buffer->allocateBuffer(vol_face.mNumVertices, vol_face.mNumIndices, true);
    30.8 +
    30.9 +		if (!buffer->allocateBuffer(vol_face.mNumVertices, vol_face.mNumIndices, true))
   30.10 +		{
   30.11 +			LL_WARNS("LLDrawPoolAvatar") << "Failed to allocate Vertex Buffer to "
   30.12 +				<< vol_face.mNumVertices << " vertices and "
   30.13 +				<< vol_face.mNumIndices << " indices" << LL_ENDL;
   30.14 +			// allocate dummy triangle
   30.15 +			buffer->allocateBuffer(1, 3, true);
   30.16 +			memset((U8*)buffer->getMappedData(), 0, buffer->getSize());
   30.17 +			memset((U8*)buffer->getMappedIndices(), 0, buffer->getIndicesSize());
   30.18 +		}
   30.19  	}
   30.20  	else
   30.21  	{
   30.22          //resize existing buffer
   30.23 -		buffer->resizeBuffer(vol_face.mNumVertices, vol_face.mNumIndices);
   30.24 +		if(!buffer->resizeBuffer(vol_face.mNumVertices, vol_face.mNumIndices))
   30.25 +		{
   30.26 +			LL_WARNS("LLDrawPoolAvatar") << "Failed to resize Vertex Buffer to "
   30.27 +				<< vol_face.mNumVertices << " vertices and "
   30.28 +				<< vol_face.mNumIndices << " indices" << LL_ENDL;
   30.29 +			// allocate dummy triangle
   30.30 +			buffer->resizeBuffer(1, 3);
   30.31 +			memset((U8*)buffer->getMappedData(), 0, buffer->getSize());
   30.32 +			memset((U8*)buffer->getMappedIndices(), 0, buffer->getIndicesSize());
   30.33 +		}
   30.34  	}
   30.35  
   30.36 -	face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
   30.37 +	face->setSize(buffer->getNumVerts(), buffer->getNumIndices());
   30.38  	face->setVertexBuffer(buffer);
   30.39  
   30.40  	U16 offset = 0;
   30.41 @@ -1753,6 +1772,14 @@
   30.42  		}
   30.43  	}
   30.44  
   30.45 +	if (buffer.isNull() ||
   30.46 +		buffer->getNumVerts() != vol_face.mNumVertices ||
   30.47 +		buffer->getNumIndices() != vol_face.mNumIndices)
   30.48 +	{
   30.49 +		// Allocation failed
   30.50 +		return;
   30.51 +	}
   30.52 +
   30.53  	if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime())
   30.54  	{
   30.55  		//perform software vertex skinning for this face
    31.1 --- a/indra/newview/llfeaturemanager.cpp	Thu Nov 30 17:05:57 2017 +0000
    31.2 +++ b/indra/newview/llfeaturemanager.cpp	Thu Nov 30 17:07:57 2017 +0000
    31.3 @@ -498,22 +498,24 @@
    31.4  
    31.5      const std::string base = gSavedSettings.getString("FeatureManagerHTTPTable");
    31.6  
    31.7 -
    31.8 -#if LL_WINDOWS
    31.9 -    std::string os_string = LLOSInfo::instance().getOSStringSimple();
   31.10 -    std::string filename;
   31.11 -
   31.12 -    if (os_string.find("Microsoft Windows XP") == 0)
   31.13 -    {
   31.14 -        filename = llformat(tableName.c_str(), "_xp", LLVersionInfo::getVersion().c_str());
   31.15 -    }
   31.16 -    else
   31.17 -    {
   31.18 -        filename = llformat(tableName.c_str(), "", LLVersionInfo::getVersion().c_str());
   31.19 -    }
   31.20 -#else
   31.21 -    const std::string filename   = llformat(tableName.c_str(), LLVersionInfo::getVersion().c_str());
   31.22 -#endif
   31.23 +    // <FS:Ansariel> Re-enable feature table download
   31.24 +//#if LL_WINDOWS
   31.25 +//    std::string os_string = LLOSInfo::instance().getOSStringSimple();
   31.26 +//    std::string filename;
   31.27 +//
   31.28 +//    if (os_string.find("Microsoft Windows XP") == 0)
   31.29 +//    {
   31.30 +//        filename = llformat(tableName.c_str(), "_xp", LLVersionInfo::getVersion().c_str());
   31.31 +//    }
   31.32 +//    else
   31.33 +//    {
   31.34 +//        filename = llformat(tableName.c_str(), "", LLVersionInfo::getVersion().c_str());
   31.35 +//    }
   31.36 +//#else
   31.37 +//    const std::string filename   = llformat(tableName.c_str(), LLVersionInfo::getVersion().c_str());
   31.38 +//#endif
   31.39 +    const std::string filename   = llformat(tableName.c_str(), LLVersionInfo::getShortVersion().c_str());
   31.40 +    // </FS:Ansariel>
   31.41  
   31.42      std::string url        = base + "/" + filename;
   31.43      // testing url below
   31.44 @@ -521,14 +523,30 @@
   31.45      const std::string path       = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename);
   31.46  
   31.47  
   31.48 -    LL_INFOS() << "LLFeatureManager fetching " << url << " into " << path << LL_ENDL;
   31.49 +    // <FS:Ansariel> Re-enable feature table download
   31.50 +    //LL_INFOS() << "LLFeatureManager fetching " << url << " into " << path << LL_ENDL;
   31.51  
   31.52 -    LLSD result = httpAdapter->getRawAndSuspend(httpRequest, url);
   31.53 +    //LLSD result = httpAdapter->getRawAndSuspend(httpRequest, url);
   31.54 +    time_t last_modified = 0;
   31.55 +    llstat stat_data;
   31.56 +    if(!LLFile::stat(path, &stat_data))
   31.57 +    {
   31.58 +        last_modified = stat_data.st_mtime;
   31.59 +    }
   31.60 +    LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
   31.61 +    httpOpts->setWantHeaders(true);
   31.62 +    httpOpts->setLastModified((long)last_modified);
   31.63 +    LL_INFOS() << "LLFeatureManager fetching " << url << " with last modifed of " << last_modified << " into " << path << LL_ENDL;
   31.64 +    LLSD result = httpAdapter->getRawAndSuspend(httpRequest, url, httpOpts);
   31.65 +    // </FS:Ansariel>
   31.66  
   31.67      LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS];
   31.68      LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults);
   31.69  
   31.70 -    if (status)
   31.71 +    // <FS:Ansariel> Re-enable feature table download
   31.72 +    //if (status)
   31.73 +    if (status == LLCore::HttpStatus(HTTP_OK))
   31.74 +    // </FS:Ansariel>
   31.75      {   // There was a newer feature table on the server. We've grabbed it and now should write it.
   31.76          // write to file
   31.77          const LLSD::Binary &raw = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary();
    32.1 --- a/indra/newview/llfloaterimagepreview.cpp	Thu Nov 30 17:05:57 2017 +0000
    32.2 +++ b/indra/newview/llfloaterimagepreview.cpp	Thu Nov 30 17:07:57 2017 +0000
    32.3 @@ -853,7 +853,13 @@
    32.4  	U32 num_vertices = vf.mNumVertices;
    32.5  
    32.6  	mVertexBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0, 0);
    32.7 -	mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE);
    32.8 +	if (!mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE))
    32.9 +	{
   32.10 +		LL_WARNS() << "Failed to allocate Vertex Buffer for image preview to"
   32.11 +			<< num_vertices << " vertices and "
   32.12 +			<< num_indices << " indices" << LL_ENDL;
   32.13 +		// We are likely to crash on getTexCoord0Strider()
   32.14 +	}
   32.15  
   32.16  	LLStrider<LLVector3> vertex_strider;
   32.17  	LLStrider<LLVector3> normal_strider;
    33.1 --- a/indra/newview/llfloatermodelpreview.cpp	Thu Nov 30 17:05:57 2017 +0000
    33.2 +++ b/indra/newview/llfloatermodelpreview.cpp	Thu Nov 30 17:07:57 2017 +0000
    33.3 @@ -1018,11 +1018,7 @@
    33.4  	}
    33.5  
    33.6  	S32 file_mode = iface->getItemCount() - 1;
    33.7 -	//<FS:Beq> Add box physics support
    33.8 -	// Ugh, the code assumes the last entry is "load from file", we are going to have to be the next to last.
    33.9 -	S32 box_mode = file_mode - 1;
   33.10 -//	if (which_mode < file_mode)
   33.11 -	if (which_mode < box_mode)
   33.12 +	if (which_mode < file_mode)
   33.13  	{
   33.14  		S32 which_lod = num_lods - which_mode;
   33.15  		sInstance->mModelPreview->setPhysicsFromLOD(which_lod);
   33.16 @@ -2695,7 +2691,13 @@
   33.17  
   33.18  				if (sizes[i*2+1] > 0 && sizes[i*2] > 0)
   33.19  				{
   33.20 -					buff->allocateBuffer(sizes[i*2+1], sizes[i*2], true);
   33.21 +					if (!buff->allocateBuffer(sizes[i * 2 + 1], sizes[i * 2], true))
   33.22 +					{
   33.23 +						// Todo: find a way to stop preview in this case instead of crashing
   33.24 +						LL_ERRS() << "Failed buffer allocation during preview LOD generation."
   33.25 +							<< " Vertices: " << sizes[i * 2 + 1]
   33.26 +							<< " Indices: " << sizes[i * 2] << LL_ENDL;
   33.27 +					}
   33.28  					buff->setBuffer(type_mask);
   33.29  
   33.30  					// <FS:ND> Fix glod so it works when just using the opengl core profile
   33.31 @@ -2739,7 +2741,9 @@
   33.32  					stop_gloderror();
   33.33  				}
   33.34  				else
   33.35 -				{ //this face was eliminated, create a dummy triangle (one vertex, 3 indices, all 0)
   33.36 +				{
   33.37 +					// This face was eliminated or we failed to allocate buffer,
   33.38 +					// attempt to create a dummy triangle (one vertex, 3 indices, all 0)
   33.39  					buff->allocateBuffer(1, 3, true);
   33.40  					memset((U8*) buff->getMappedData(), 0, buff->getSize());
   33.41  
   33.42 @@ -3495,7 +3499,13 @@
   33.43  
   33.44  			vb = new LLVertexBuffer(mask, 0);
   33.45  			
   33.46 -			vb->allocateBuffer(num_vertices, num_indices, TRUE);
   33.47 +			if (!vb->allocateBuffer(num_vertices, num_indices, TRUE))
   33.48 +			{
   33.49 +				// We are likely to crash due this failure, if this happens, find a way to gracefully stop preview
   33.50 +				LL_WARNS() << "Failed to allocate Vertex Buffer for model preview "
   33.51 +					<< num_vertices << " vertices and "
   33.52 +					<< num_indices << " indices" << LL_ENDL;
   33.53 +			}
   33.54  
   33.55  			LLStrider<LLVector3> vertex_strider;
   33.56  			LLStrider<LLVector3> normal_strider;
    34.1 --- a/indra/newview/llfloatertos.cpp	Thu Nov 30 17:05:57 2017 +0000
    34.2 +++ b/indra/newview/llfloatertos.cpp	Thu Nov 30 17:07:57 2017 +0000
    34.3 @@ -76,7 +76,9 @@
    34.4  
    34.5  	// disable Agree to TOS radio button until the page has fully loaded
    34.6  	LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
    34.7 -	tos_agreement->setEnabled( false );
    34.8 +	tos_agreement->setEnabled(false);
    34.9 +	LLTextBox* tos_list = getChild<LLTextBox>("agree_list");
   34.10 +	tos_list->setEnabled(false);
   34.11  
   34.12  	// hide the SL text widget if we're displaying TOS with using a browser widget.
   34.13  	LLUICtrl *editor = getChild<LLUICtrl>("tos_text");
   34.14 @@ -209,6 +211,8 @@
   34.15  			// but if the page is unavailable, we need to do this now
   34.16  			LLCheckBoxCtrl* tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
   34.17  			tos_agreement->setEnabled( true );
   34.18 +			LLTextBox* tos_list = getChild<LLTextBox>("agree_list");
   34.19 +			tos_list->setEnabled(true);
   34.20  		}
   34.21  	}
   34.22  #endif
   34.23 @@ -290,6 +294,8 @@
   34.24  			// enable Agree to TOS radio button now that page has loaded
   34.25  			LLCheckBoxCtrl * tos_agreement = getChild<LLCheckBoxCtrl>("agree_chk");
   34.26  			tos_agreement->setEnabled( true );
   34.27 +			LLTextBox* tos_list = getChild<LLTextBox>("agree_list");
   34.28 +			tos_list->setEnabled(true);
   34.29  		}
   34.30  	}
   34.31  }
    35.1 --- a/indra/newview/llfolderviewmodelinventory.cpp	Thu Nov 30 17:05:57 2017 +0000
    35.2 +++ b/indra/newview/llfolderviewmodelinventory.cpp	Thu Nov 30 17:07:57 2017 +0000
    35.3 @@ -232,8 +232,9 @@
    35.4  		return true;
    35.5  	}
    35.6       */
    35.7 -    
    35.8 -	const bool passed_filter_folder = (getInventoryType() == LLInventoryType::IT_CATEGORY) ? filter.checkFolder(this) : true;
    35.9 +
   35.10 +	bool is_folder = (getInventoryType() == LLInventoryType::IT_CATEGORY);
   35.11 +	const bool passed_filter_folder = is_folder ? filter.checkFolder(this) : true;
   35.12  	setPassedFolderFilter(passed_filter_folder, filter_generation);
   35.13  
   35.14  	bool continue_filtering = true;
   35.15 @@ -258,10 +259,7 @@
   35.16  	{
   35.17          // This is where filter check on the item done (CHUI-849)
   35.18  		const bool passed_filter = filter.check(this);
   35.19 -		// <FS:Ansariel> FIRE-21632: Only do this for folders or it will break correct filtering of the "Worn" inventory tab
   35.20 -		//if (passed_filter && mChildren.empty()) // Update the latest filter generation for empty folders
   35.21 -		if (passed_filter && mChildren.empty() && getInventoryType() == LLInventoryType::IT_CATEGORY) // Update the latest filter generation for empty folders
   35.22 -		// </FS:Ansariel>
   35.23 +		if (passed_filter && mChildren.empty() && is_folder) // Update the latest filter generation for empty folders
   35.24  		{
   35.25  			LLFolderViewModelItemInventory* view_model = this;
   35.26  			while (view_model && view_model->mMostFilteredDescendantGeneration < filter_generation)
    36.1 --- a/indra/newview/llinventorybridge.cpp	Thu Nov 30 17:05:57 2017 +0000
    36.2 +++ b/indra/newview/llinventorybridge.cpp	Thu Nov 30 17:07:57 2017 +0000
    36.3 @@ -2071,21 +2071,11 @@
    36.4  	{
    36.5  		mDisplayName.assign(LLStringUtil::null);
    36.6  	}
    36.7 -	// <FS:Ansariel> FIRE-21739: Inventory restarts filter when detaching attachments
    36.8 -	//S32 old_length = mSearchableName.length();
    36.9 -	//S32 new_length = mDisplayName.length() + getLabelSuffix().length();
   36.10 -	// </FS:Ansariel>
   36.11  
   36.12  	mSearchableName.assign(mDisplayName);
   36.13  	mSearchableName.append(getLabelSuffix());
   36.14  	LLStringUtil::toUpper(mSearchableName);
   36.15  	
   36.16 -	// <FS:Ansariel> FIRE-21739: Inventory restarts filter when detaching attachments
   36.17 -	//if ((old_length > new_length) && getInventoryFilter())
   36.18 -	//{
   36.19 -	//	getInventoryFilter()->setModified(LLFolderViewFilter::FILTER_MORE_RESTRICTIVE);
   36.20 -	//}
   36.21 -	// </FS:Ansariel>
   36.22  	//Name set, so trigger a sort
   36.23  	if(mParent)
   36.24  	{
    37.1 --- a/indra/newview/llinventoryfunctions.cpp	Thu Nov 30 17:05:57 2017 +0000
    37.2 +++ b/indra/newview/llinventoryfunctions.cpp	Thu Nov 30 17:07:57 2017 +0000
    37.3 @@ -272,7 +272,9 @@
    37.4      // is limited to 4.
    37.5      // We also take care of degenerated cases so we don't update all folders in the inventory by mistake.
    37.6  
    37.7 -    if (cur_uuid.isNull())
    37.8 +    if (cur_uuid.isNull()
    37.9 +        || gInventory.getCategory(cur_uuid) == NULL
   37.10 +        || gInventory.getCategory(cur_uuid)->getVersion() == LLViewerInventoryCategory::VERSION_UNKNOWN)
   37.11      {
   37.12          return;
   37.13      }
   37.14 @@ -283,9 +285,13 @@
   37.15      {
   37.16          // Retrieve the listing uuid this object is in
   37.17          LLUUID listing_uuid = nested_parent_id(cur_uuid, depth);
   37.18 +        LLViewerInventoryCategory* listing_cat = gInventory.getCategory(listing_uuid);
   37.19 +        bool listing_cat_loaded = listing_cat != NULL && listing_cat->getVersion() != LLViewerInventoryCategory::VERSION_UNKNOWN;
   37.20      
   37.21          // Verify marketplace data consistency for this listing
   37.22 -        if (perform_consistency_enforcement && LLMarketplaceData::instance().isListed(listing_uuid))
   37.23 +        if (perform_consistency_enforcement
   37.24 +            && listing_cat_loaded
   37.25 +            && LLMarketplaceData::instance().isListed(listing_uuid))
   37.26          {
   37.27              LLUUID version_folder_uuid = LLMarketplaceData::instance().getVersionFolder(listing_uuid);
   37.28              S32 version_depth = depth_nesting_in_marketplace(version_folder_uuid);
   37.29 @@ -307,7 +313,9 @@
   37.30          }
   37.31      
   37.32          // Check if the count on hand needs to be updated on SLM
   37.33 -        if (perform_consistency_enforcement && (compute_stock_count(listing_uuid) != LLMarketplaceData::instance().getCountOnHand(listing_uuid)))
   37.34 +        if (perform_consistency_enforcement
   37.35 +            && listing_cat_loaded
   37.36 +            && (compute_stock_count(listing_uuid) != LLMarketplaceData::instance().getCountOnHand(listing_uuid)))
   37.37          {
   37.38              LLMarketplaceData::instance().updateCountOnHand(listing_uuid,1);
   37.39          }
    38.1 --- a/indra/newview/llinventorymodel.cpp	Thu Nov 30 17:05:57 2017 +0000
    38.2 +++ b/indra/newview/llinventorymodel.cpp	Thu Nov 30 17:07:57 2017 +0000
    38.3 @@ -2205,11 +2205,6 @@
    38.4  					// correct contents the next time the viewer opens the folder.
    38.5  					tcat->setVersion(NO_VERSION);
    38.6  				}
    38.7 -                else if (tcat->getPreferredType() == LLFolderType::FT_MARKETPLACE_STOCK)
    38.8 -                {
    38.9 -                    // Do not trust stock folders being updated
   38.10 -                    tcat->setVersion(NO_VERSION);
   38.11 -                }
   38.12  				else
   38.13  				{
   38.14  					cached_ids.insert(tcat->getUUID());
    39.1 --- a/indra/newview/llinventorypanel.cpp	Thu Nov 30 17:05:57 2017 +0000
    39.2 +++ b/indra/newview/llinventorypanel.cpp	Thu Nov 30 17:07:57 2017 +0000
    39.3 @@ -540,13 +540,11 @@
    39.4  
    39.5  					view_item->refresh();
    39.6  				}
    39.7 -				// <FS:Ansariel> FIRE-11103: Fix empty folders being shown in worn inventory panel
    39.8  				LLFolderViewFolder* parent = view_item->getParentFolder();
    39.9  				if(parent)
   39.10  				{
   39.11  					parent->getViewModelItem()->dirtyDescendantsFilter();
   39.12  				}
   39.13 -				// </FS:Ansariel>
   39.14  			}
   39.15  		}
   39.16  
    40.1 --- a/indra/newview/llmediactrl.cpp	Thu Nov 30 17:05:57 2017 +0000
    40.2 +++ b/indra/newview/llmediactrl.cpp	Thu Nov 30 17:07:57 2017 +0000
    40.3 @@ -824,44 +824,8 @@
    40.4  			F32 max_u = ( F32 )media_plugin->getWidth() / ( F32 )media_plugin->getTextureWidth();
    40.5  			F32 max_v = ( F32 )media_plugin->getHeight() / ( F32 )media_plugin->getTextureHeight();
    40.6  
    40.7 -			LLRect r = getRect();
    40.8 -			S32 width, height;
    40.9 -			S32 x_offset = 0;
   40.10 -			S32 y_offset = 0;
   40.11 -			
   40.12 -			if(mStretchToFill)
   40.13 -			{
   40.14 -				if(mMaintainAspectRatio)
   40.15 -				{
   40.16 -					F32 media_aspect = (F32)(media_plugin->getWidth()) / (F32)(media_plugin->getHeight());
   40.17 -					F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight());
   40.18 -					if(media_aspect > view_aspect)
   40.19 -					{
   40.20 -						// max width, adjusted height
   40.21 -						width = r.getWidth();
   40.22 -						height = llmin(llmax(ll_round(width / media_aspect), 0), r.getHeight());
   40.23 -					}
   40.24 -					else
   40.25 -					{
   40.26 -						// max height, adjusted width
   40.27 -						height = r.getHeight();
   40.28 -						width = llmin(llmax(ll_round(height * media_aspect), 0), r.getWidth());
   40.29 -					}
   40.30 -				}
   40.31 -				else
   40.32 -				{
   40.33 -					width = r.getWidth();
   40.34 -					height = r.getHeight();
   40.35 -				}
   40.36 -			}
   40.37 -			else
   40.38 -			{
   40.39 -				width = llmin(media_plugin->getWidth(), r.getWidth());
   40.40 -				height = llmin(media_plugin->getHeight(), r.getHeight());
   40.41 -			}
   40.42 -			
   40.43 -			x_offset = (r.getWidth() - width) / 2;
   40.44 -			y_offset = (r.getHeight() - height) / 2;		
   40.45 +			S32 x_offset, y_offset, width, height;
   40.46 +			calcOffsetsAndSize(&x_offset, &y_offset, &width, &height);
   40.47  
   40.48  #if 0
   40.49  			// <FS:ND> Flip Y-Axis of media texture
   40.50 @@ -961,8 +925,56 @@
   40.51  
   40.52  ////////////////////////////////////////////////////////////////////////////////
   40.53  //
   40.54 +void LLMediaCtrl::calcOffsetsAndSize(S32 *x_offset, S32 *y_offset, S32 *width, S32 *height)
   40.55 +{
   40.56 +	const LLRect &r = getRect();
   40.57 +	*x_offset = *y_offset = 0;
   40.58 +
   40.59 +	if (mStretchToFill)
   40.60 +	{
   40.61 +		if (mMaintainAspectRatio && mMediaSource && mMediaSource->getMediaPlugin())
   40.62 +		{
   40.63 +			F32 media_aspect = (F32)(mMediaSource->getMediaPlugin()->getWidth()) / (F32)(mMediaSource->getMediaPlugin()->getHeight());
   40.64 +			F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight());
   40.65 +			if (media_aspect > view_aspect)
   40.66 +			{
   40.67 +				// max width, adjusted height
   40.68 +				*width = r.getWidth();
   40.69 +				*height = llmin(llmax(ll_round(*width / media_aspect), 0), r.getHeight());
   40.70 +			}
   40.71 +			else
   40.72 +			{
   40.73 +				// max height, adjusted width
   40.74 +				*height = r.getHeight();
   40.75 +				*width = llmin(llmax(ll_round(*height * media_aspect), 0), r.getWidth());
   40.76 +			}
   40.77 +		}
   40.78 +		else
   40.79 +		{
   40.80 +			*width = r.getWidth();
   40.81 +			*height = r.getHeight();
   40.82 +		}
   40.83 +	}
   40.84 +	else
   40.85 +	{
   40.86 +		*width = llmin(mMediaSource->getMediaPlugin()->getWidth(), r.getWidth());
   40.87 +		*height = llmin(mMediaSource->getMediaPlugin()->getHeight(), r.getHeight());
   40.88 +	}
   40.89 +
   40.90 +	*x_offset = (r.getWidth() - *width) / 2;
   40.91 +	*y_offset = (r.getHeight() - *height) / 2;
   40.92 +}
   40.93 +
   40.94 +////////////////////////////////////////////////////////////////////////////////
   40.95 +//
   40.96  void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
   40.97  {
   40.98 +	S32 x_offset, y_offset, width, height;
   40.99 +	calcOffsetsAndSize(&x_offset, &y_offset, &width, &height);
  40.100 +
  40.101 +	x -= x_offset;
  40.102 +	y -= y_offset;
  40.103 +
  40.104  	bool coords_opengl = false;
  40.105  	
  40.106  	if(mMediaSource && mMediaSource->hasMedia())
    41.1 --- a/indra/newview/llmediactrl.h	Thu Nov 30 17:05:57 2017 +0000
    41.2 +++ b/indra/newview/llmediactrl.h	Thu Nov 30 17:07:57 2017 +0000
    41.3 @@ -182,6 +182,9 @@
    41.4  	protected:
    41.5  		void convertInputCoords(S32& x, S32& y);
    41.6  
    41.7 +    private:
    41.8 +		void calcOffsetsAndSize(S32 *x_offset, S32 *y_offset, S32 *width, S32 *height);
    41.9 +
   41.10  	private:
   41.11  		void onVisibilityChanged ( const LLSD& new_visibility );
   41.12  		void onPopup(const LLSD& notification, const LLSD& response);
    42.1 --- a/indra/newview/lloutfitgallery.cpp	Thu Nov 30 17:05:57 2017 +0000
    42.2 +++ b/indra/newview/lloutfitgallery.cpp	Thu Nov 30 17:07:57 2017 +0000
    42.3 @@ -72,6 +72,7 @@
    42.4        mItemsAddedCount(0),
    42.5        mOutfitLinkPending(NULL),
    42.6        mOutfitRenamePending(NULL),
    42.7 +      mSnapshotFolderID(NULL),
    42.8        mRowPanelHeight(p.row_panel_height),
    42.9        mVerticalGap(p.vertical_gap),
   42.10        mHorizontalGap(p.horizontal_gap),
   42.11 @@ -1023,8 +1024,8 @@
   42.12  void LLOutfitGallery::loadPhotos()
   42.13  {
   42.14      //Iterate over inventory
   42.15 -    LLUUID textures = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE);
   42.16 -    LLViewerInventoryCategory* textures_category = gInventory.getCategory(textures);
   42.17 +    mSnapshotFolderID = gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_TEXTURE);
   42.18 +    LLViewerInventoryCategory* textures_category = gInventory.getCategory(mSnapshotFolderID);
   42.19      if (!textures_category)
   42.20          return;
   42.21      if (mTexturesObserver == NULL)
   42.22 @@ -1034,12 +1035,26 @@
   42.23      }
   42.24  
   42.25      // Start observing changes in "Textures" category.
   42.26 -    mTexturesObserver->addCategory(textures,
   42.27 -        boost::bind(&LLOutfitGallery::refreshTextures, this, textures));
   42.28 -    
   42.29 +    mTexturesObserver->addCategory(mSnapshotFolderID,
   42.30 +        boost::bind(&LLOutfitGallery::refreshTextures, this, mSnapshotFolderID));
   42.31 +
   42.32      textures_category->fetch();
   42.33  }
   42.34  
   42.35 +void LLOutfitGallery::updateSnapshotFolderObserver()
   42.36 +{
   42.37 +    if(mSnapshotFolderID != gInventory.findUserDefinedCategoryUUIDForType(LLFolderType::FT_TEXTURE))
   42.38 +    {
   42.39 +        if (gInventory.containsObserver(mTexturesObserver))
   42.40 +        {
   42.41 +            gInventory.removeObserver(mTexturesObserver);
   42.42 +        }
   42.43 +        delete mTexturesObserver;
   42.44 +        mTexturesObserver = NULL;
   42.45 +        loadPhotos();
   42.46 +    }
   42.47 +}
   42.48 +
   42.49  void LLOutfitGallery::refreshOutfit(const LLUUID& category_id)
   42.50  {
   42.51      LLViewerInventoryCategory* category = gInventory.getCategory(category_id);
   42.52 @@ -1212,7 +1227,7 @@
   42.53  
   42.54              LLViewerInventoryCategory *outfit_cat = gInventory.getCategory(outfit_id);
   42.55              if (!outfit_cat) return;
   42.56 -
   42.57 +            updateSnapshotFolderObserver();
   42.58              checkRemovePhoto(outfit_id);
   42.59              std::string upload_pending_name = outfit_id.asString();
   42.60              std::string upload_pending_desc = "";
   42.61 @@ -1384,6 +1399,7 @@
   42.62      if (!selected_outfit_id.isNull())
   42.63      {
   42.64          checkRemovePhoto(selected_outfit_id);
   42.65 +        updateSnapshotFolderObserver();
   42.66      }
   42.67  }
   42.68  
    43.1 --- a/indra/newview/lloutfitgallery.h	Thu Nov 30 17:05:57 2017 +0000
    43.2 +++ b/indra/newview/lloutfitgallery.h	Thu Nov 30 17:07:57 2017 +0000
    43.3 @@ -130,6 +130,7 @@
    43.4  private:
    43.5      void loadPhotos();
    43.6      void uploadPhoto(LLUUID outfit_id);
    43.7 +    void updateSnapshotFolderObserver();
    43.8      LLUUID getPhotoAssetId(const LLUUID& outfit_id);
    43.9      LLUUID getDefaultPhoto();
   43.10      void linkPhotoToOutfit(LLUUID outfit_id, LLUUID photo_id);
   43.11 @@ -168,6 +169,7 @@
   43.12      LLPanel* mLastRowPanel;
   43.13      LLUUID mOutfitLinkPending;
   43.14      LLUUID mOutfitRenamePending;
   43.15 +    LLUUID mSnapshotFolderID;
   43.16      LLTextBox* mMessageTextBox;
   43.17      bool mGalleryCreated;
   43.18      int mRowCount;
    44.1 --- a/indra/newview/llpanelface.cpp	Thu Nov 30 17:05:57 2017 +0000
    44.2 +++ b/indra/newview/llpanelface.cpp	Thu Nov 30 17:07:57 2017 +0000
    44.3 @@ -1760,6 +1760,15 @@
    44.4  			}
    44.5  		}
    44.6  	}
    44.7 +	else
    44.8 +	{
    44.9 +		if (shiny_texture_ID.isNull() && comboShiny && comboShiny->itemExists(USE_TEXTURE))
   44.10 +		{
   44.11 +			comboShiny->remove(SHINY_TEXTURE);
   44.12 +			comboShiny->selectFirstItem();
   44.13 +		}
   44.14 +	}
   44.15 +
   44.16  
   44.17  	LLComboBox* combo_matmedia = getChild<LLComboBox>("combobox matmedia");
   44.18  	LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
   44.19 @@ -2505,8 +2514,8 @@
   44.20  void LLPanelFace::onTextureSelectionChanged(LLInventoryItem* itemp)
   44.21  {
   44.22  	LL_DEBUGS("Materials") << "item asset " << itemp->getAssetUUID() << LL_ENDL;
   44.23 -	//LLRadioGroup* radio_mat_type = getChild<LLRadioGroup>("radio_material_type");
   44.24 -	//if(radio_mat_type)
   44.25 +	//LLRadioGroup* radio_mat_type = findChild<LLRadioGroup>("radio_material_type");
   44.26 +	//if(!radio_mat_type)
   44.27  	if (!mRadioMatType)
   44.28  	{
   44.29  	    return;
    45.1 --- a/indra/newview/llpanellogin.cpp	Thu Nov 30 17:05:57 2017 +0000
    45.2 +++ b/indra/newview/llpanellogin.cpp	Thu Nov 30 17:07:57 2017 +0000
    45.3 @@ -77,6 +77,7 @@
    45.4  
    45.5  LLPanelLogin *LLPanelLogin::sInstance = NULL;
    45.6  BOOL LLPanelLogin::sCapslockDidNotification = FALSE;
    45.7 +BOOL LLPanelLogin::sCredentialSet = FALSE;
    45.8  
    45.9  class LLLoginLocationAutoHandler : public LLCommandHandler
   45.10  {
   45.11 @@ -178,6 +179,7 @@
   45.12  	setBackgroundOpaque(TRUE);
   45.13  
   45.14  	mPasswordModified = FALSE;
   45.15 +
   45.16  	LLPanelLogin::sInstance = this;
   45.17  
   45.18  	LLView* login_holder = gViewerWindow->getLoginPanelHolder();
   45.19 @@ -460,6 +462,7 @@
   45.20  		LL_WARNS() << "Attempted fillFields with no login view shown" << LL_ENDL;
   45.21  		return;
   45.22  	}
   45.23 +	sCredentialSet = TRUE;
   45.24  	LL_INFOS("Credentials") << "Setting login fields to " << *credential << LL_ENDL;
   45.25  
   45.26  	LLSD identifier = credential->getIdentifier();
   45.27 @@ -682,10 +685,8 @@
   45.28  			}
   45.29  			if ( new_start_slurl.getLocationString().length() )
   45.30  			{
   45.31 -				if (location_combo->getCurrentIndex() == -1)
   45.32 -				{
   45.33 -					location_combo->setLabel(new_start_slurl.getLocationString());
   45.34 -				}
   45.35 +					
   45.36 +				location_combo->setLabel(new_start_slurl.getLocationString());
   45.37  				sInstance->mLocationLength = new_start_slurl.getLocationString().length();
   45.38  				sInstance->updateLoginButtons();
   45.39  			}
   45.40 @@ -864,6 +865,7 @@
   45.41  		}
   45.42  		else
   45.43  		{
   45.44 +			sCredentialSet = FALSE;
   45.45  			LLPointer<LLCredential> cred;
   45.46  			BOOL remember;
   45.47  			getFields(cred, remember);
    46.1 --- a/indra/newview/llpanellogin.h	Thu Nov 30 17:05:57 2017 +0000
    46.2 +++ b/indra/newview/llpanellogin.h	Thu Nov 30 17:07:57 2017 +0000
    46.3 @@ -58,8 +58,10 @@
    46.4  		void* callback_data);
    46.5  
    46.6  	static void setFields(LLPointer<LLCredential> credential, BOOL remember);
    46.7 +  
    46.8 +	static void getFields(LLPointer<LLCredential>& credential, BOOL& remember);
    46.9  
   46.10 -	static void getFields(LLPointer<LLCredential>& credential, BOOL& remember);
   46.11 +	static BOOL isCredentialSet() { return sCredentialSet; }
   46.12  
   46.13  	static BOOL areCredentialFieldsDirty();
   46.14  	static void setLocation(const LLSLURL& slurl);
   46.15 @@ -117,6 +119,8 @@
   46.16  	static LLPanelLogin* sInstance;
   46.17  	static BOOL		sCapslockDidNotification;
   46.18  	bool			mFirstLoginThisInstall;
   46.19 +    
   46.20 +    static BOOL sCredentialSet;
   46.21  
   46.22  	unsigned int mUsernameLength;
   46.23  	unsigned int mPasswordLength;
    47.1 --- a/indra/newview/llpanelmaininventory.cpp	Thu Nov 30 17:05:57 2017 +0000
    47.2 +++ b/indra/newview/llpanelmaininventory.cpp	Thu Nov 30 17:07:57 2017 +0000
    47.3 @@ -230,6 +230,7 @@
    47.4  		recent_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
    47.5  		LLInventoryFilter& recent_filter = recent_items_panel->getFilter();
    47.6  		recent_filter.setFilterObjectTypes(recent_filter.getFilterObjectTypes() & ~(0x1 << LLInventoryType::IT_CATEGORY));
    47.7 +		recent_filter.setEmptyLookupMessage("InventoryNoMatchingRecentItems");
    47.8  		recent_filter.markDefault();
    47.9  		recent_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, recent_items_panel, _1, _2));
   47.10  	}
    48.1 --- a/indra/newview/llpanelmaininventory.h	Thu Nov 30 17:05:57 2017 +0000
    48.2 +++ b/indra/newview/llpanelmaininventory.h	Thu Nov 30 17:07:57 2017 +0000
    48.3 @@ -99,6 +99,8 @@
    48.4  
    48.5  	static void newWindow();
    48.6  
    48.7 +	void toggleFindOptions();
    48.8 +
    48.9  	// <FS:Zi> Filter dropdown
   48.10  	void onFilterTypeSelected(const std::string& filter_type_name);
   48.11  	void updateFilterDropdown(const LLInventoryFilter* filter);
   48.12 @@ -116,7 +118,6 @@
   48.13  	void setFilterTextFromFilter();
   48.14  	void startSearch();
   48.15  	
   48.16 -	void toggleFindOptions();
   48.17  	void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action);
   48.18  
   48.19  	static BOOL filtersVisible(void* user_data);
   48.20 @@ -129,7 +130,7 @@
   48.21  
   48.22  	const std::string getFilterSubString();
   48.23  	void setFilterSubString(const std::string& string);
   48.24 -	
   48.25 +
   48.26  	// menu callbacks
   48.27  	void doToSelected(const LLSD& userdata);
   48.28  	void closeAllFolders();
   48.29 @@ -177,6 +178,7 @@
   48.30  	U64							mFilterMask;		// contains the cumulated bit filter for all dropdown filter types
   48.31  	// </FS:Zi> Filter dropdown
   48.32  
   48.33 +
   48.34  	//////////////////////////////////////////////////////////////////////////////////
   48.35  	// List Commands                                                                //
   48.36  protected:
    49.1 --- a/indra/newview/llpanelvolume.cpp	Thu Nov 30 17:05:57 2017 +0000
    49.2 +++ b/indra/newview/llpanelvolume.cpp	Thu Nov 30 17:07:57 2017 +0000
    49.3 @@ -719,22 +719,20 @@
    49.4  void LLPanelVolume::onLightCancelTexture(const LLSD& data)
    49.5  {
    49.6  	LLTextureCtrl* LightTextureCtrl = getChild<LLTextureCtrl>("light texture control");
    49.7 +	LLVOVolume *volobjp = (LLVOVolume *) mObject.get();
    49.8  
    49.9 -	if (LightTextureCtrl)
   49.10 -	{
   49.11 -        LightTextureCtrl->setImageAssetID(mLightSavedTexture);
   49.12 -	}
   49.13 -
   49.14 -	LLVOVolume *volobjp = (LLVOVolume *) mObject.get();
   49.15 -	if(volobjp)
   49.16 +	if (volobjp && LightTextureCtrl)
   49.17  	{
   49.18  		// Cancel the light texture as requested
   49.19  		// NORSPEC-292
   49.20 -		//
   49.21 +        //
   49.22 +        // Texture picker triggers cancel both in case of actual cancel and in case of
   49.23 +        // selection of "None" texture.
   49.24 +        LLUUID tex_id = LightTextureCtrl->getImageAssetID();
   49.25          bool is_spotlight = volobjp->isLightSpotlight();
   49.26 -        volobjp->setLightTextureID(mLightSavedTexture); //updates spotlight
   49.27 +        volobjp->setLightTextureID(tex_id); //updates spotlight
   49.28  
   49.29 -        if (!is_spotlight && mLightSavedTexture.notNull())
   49.30 +        if (!is_spotlight && tex_id.notNull())
   49.31          {
   49.32              LLVector3 spot_params = volobjp->getSpotLightParams();
   49.33              getChild<LLUICtrl>("Light FOV")->setValue(spot_params.mV[0]);
   49.34 @@ -778,7 +776,6 @@
   49.35  	{
   49.36  		LLUUID id = LightTextureCtrl->getImageAssetID();
   49.37  		volobjp->setLightTextureID(id);
   49.38 -		mLightSavedTexture = id;
   49.39  	}
   49.40  }
   49.41  
    50.1 --- a/indra/newview/llpanelvolume.h	Thu Nov 30 17:05:57 2017 +0000
    50.2 +++ b/indra/newview/llpanelvolume.h	Thu Nov 30 17:07:57 2017 +0000
    50.3 @@ -111,7 +111,6 @@
    50.4  	
    50.5  
    50.6  	LLColor4		mLightSavedColor;
    50.7 -	LLUUID			mLightSavedTexture;
    50.8  	LLPointer<LLViewerObject> mObject;
    50.9  	LLPointer<LLViewerObject> mRootObject;
   50.10  
    51.1 --- a/indra/newview/llpreviewnotecard.cpp	Thu Nov 30 17:05:57 2017 +0000
    51.2 +++ b/indra/newview/llpreviewnotecard.cpp	Thu Nov 30 17:07:57 2017 +0000
    51.3 @@ -185,6 +185,16 @@
    51.4  	}
    51.5  }
    51.6  
    51.7 +/* virtual */
    51.8 +void LLPreviewNotecard::setObjectID(const LLUUID& object_id)
    51.9 +{
   51.10 +	LLPreview::setObjectID(object_id);
   51.11 +
   51.12 +	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
   51.13 +	editor->setNotecardObjectID(mObjectUUID);
   51.14 +	editor->makePristine();
   51.15 +}
   51.16 +
   51.17  const LLInventoryItem* LLPreviewNotecard::getDragItem()
   51.18  {
   51.19  	LLViewerTextEditor* editor = getChild<LLViewerTextEditor>("Notecard Editor");
    52.1 --- a/indra/newview/llpreviewnotecard.h	Thu Nov 30 17:05:57 2017 +0000
    52.2 +++ b/indra/newview/llpreviewnotecard.h	Thu Nov 30 17:07:57 2017 +0000
    52.3 @@ -50,6 +50,7 @@
    52.4  	virtual ~LLPreviewNotecard();
    52.5  	
    52.6  	bool saveItem();
    52.7 +	void setObjectID(const LLUUID& object_id);
    52.8  
    52.9  	// llview
   52.10  	virtual void draw();
    53.1 --- a/indra/newview/llscriptfloater.cpp	Thu Nov 30 17:05:57 2017 +0000
    53.2 +++ b/indra/newview/llscriptfloater.cpp	Thu Nov 30 17:07:57 2017 +0000
    53.3 @@ -428,12 +428,12 @@
    53.4  //////////////////////////////////////////////////////////////////////////
    53.5  
    53.6  LLScriptFloaterManager::LLScriptFloaterManager()
    53.7 +		: mDialogLimitationsSlot()
    53.8  // <FS:Zi> script dialogs position
    53.9 -:	mNavigationPanelPad(-1),	// The height of the favorite and navigation panels might not be known yet
   53.10 +,	mNavigationPanelPad(-1),	// The height of the favorite and navigation panels might not be known yet
   53.11  	mFavoritesPanelPad(-1)		// so don't fill the values in here yet, but remember to do it at first use
   53.12  // </FS:Zi>
   53.13  {
   53.14 -	gSavedSettings.getControl("ScriptDialogLimitations")->getCommitSignal()->connect(boost::bind(&clearScriptNotifications));
   53.15  }
   53.16  
   53.17  void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
   53.18 @@ -444,6 +444,19 @@
   53.19  		return;
   53.20  	}
   53.21  
   53.22 +	if (!mDialogLimitationsSlot.connected())
   53.23 +	{
   53.24 +		LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl("ScriptDialogLimitations");
   53.25 +		if (cntrl_ptr.notNull())
   53.26 +		{
   53.27 +			mDialogLimitationsSlot = cntrl_ptr->getCommitSignal()->connect(boost::bind(&clearScriptNotifications));
   53.28 +		}
   53.29 +		else
   53.30 +		{
   53.31 +			LL_WARNS() << "Unable to set signal on setting 'ScriptDialogLimitations'" << LL_ENDL;
   53.32 +		}
   53.33 +	}
   53.34 +
   53.35  	// get scripted Object's ID
   53.36  	LLUUID object_id = notification_id_to_object_id(notification_id);
   53.37  	
    54.1 --- a/indra/newview/llscriptfloater.h	Thu Nov 30 17:05:57 2017 +0000
    54.2 +++ b/indra/newview/llscriptfloater.h	Thu Nov 30 17:07:57 2017 +0000
    54.3 @@ -140,6 +140,7 @@
    54.4  	typedef std::map<LLUUID, FloaterPositionInfo> floater_position_map_t;
    54.5  
    54.6  	floater_position_map_t mFloaterPositions;
    54.7 +	boost::signals2::connection mDialogLimitationsSlot;
    54.8  
    54.9  // <FS:Zi> script dialogs position
   54.10  public:
    55.1 --- a/indra/newview/llspatialpartition.cpp	Thu Nov 30 17:05:57 2017 +0000
    55.2 +++ b/indra/newview/llspatialpartition.cpp	Thu Nov 30 17:07:57 2017 +0000
    55.3 @@ -453,16 +453,32 @@
    55.4  				(group->mBufferUsage != group->mVertexBuffer->getUsage() && LLVertexBuffer::sEnableVBOs))
    55.5  			{
    55.6  				group->mVertexBuffer = createVertexBuffer(mVertexDataMask, group->mBufferUsage);
    55.7 -				group->mVertexBuffer->allocateBuffer(vertex_count, index_count, true);
    55.8 +				if (!group->mVertexBuffer->allocateBuffer(vertex_count, index_count, true))
    55.9 +				{
   55.10 +					LL_WARNS() << "Failed to allocate Vertex Buffer on rebuild to "
   55.11 +						<< vertex_count << " vertices and "
   55.12 +						<< index_count << " indices" << LL_ENDL;
   55.13 +					group->mVertexBuffer = NULL;
   55.14 +					group->mBufferMap.clear();
   55.15 +				}
   55.16  				stop_glerror();
   55.17  			}
   55.18  			else
   55.19  			{
   55.20 -				group->mVertexBuffer->resizeBuffer(vertex_count, index_count);
   55.21 +				if (!group->mVertexBuffer->resizeBuffer(vertex_count, index_count))
   55.22 +				{
   55.23 +					// Is likely to cause a crash. If this gets triggered find a way to avoid it (don't forget to reset face)
   55.24 +					LL_WARNS() << "Failed to resize Vertex Buffer on rebuild to "
   55.25 +						<< vertex_count << " vertices and "
   55.26 +						<< index_count << " indices" << LL_ENDL;
   55.27 +					group->mVertexBuffer = NULL;
   55.28 +					group->mBufferMap.clear();
   55.29 +				}
   55.30  				stop_glerror();
   55.31  			}
   55.32  		}
   55.33  
   55.34 +		if (group->mVertexBuffer)
   55.35  		{
   55.36  			LL_RECORD_BLOCK_TIME(FTM_GET_GEOMETRY);
   55.37  			getGeometry(group);
    56.1 --- a/indra/newview/llstartup.cpp	Thu Nov 30 17:05:57 2017 +0000
    56.2 +++ b/indra/newview/llstartup.cpp	Thu Nov 30 17:07:57 2017 +0000
    56.3 @@ -375,6 +375,7 @@
    56.4  void downloadGridlistError( LLSD const &aData, std::string const &aURL )
    56.5  {
    56.6  	LL_WARNS() << "Failed to download grid list from " << aURL << LL_ENDL;
    56.7 +	sGridListRequestReady = true;
    56.8  }
    56.9  
   56.10   void downloadGridstatusComplete( LLSD const &aData )
   56.11 @@ -670,6 +671,8 @@
   56.12  		gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion());
   56.13  		gSavedSettings.setString("LastGPUString", thisGPU);
   56.14  
   56.15 +		// <FS:Ansariel> Re-enable feature table download
   56.16 +		LLFeatureManager::getInstance()->fetchHTTPTables();
   56.17  
   56.18  		std::string xml_file = LLUI::locateSkin("xui_version.xml");
   56.19  		LLXMLNodePtr root;
   56.20 @@ -884,7 +887,7 @@
   56.21  			}
   56.22  
   56.23  			std::string url = gSavedSettings.getString("GridListDownloadURL");
   56.24 -			LLCoreHttpUtil::HttpCoroutineAdapter::callbackHttpGet( url, boost::bind( downloadGridlistComplete, _1 ), boost::bind( downloadGridlistError, _1, url ) );
   56.25 +			FSCoreHttpUtil::callbackHttpGet(url, last_modified, boost::bind(downloadGridlistComplete, _1), boost::bind(downloadGridlistError, _1, url));
   56.26  		}
   56.27  #ifdef OPENSIM // <FS:AW optional opensim support>
   56.28  		// Fetch grid infos as needed
   56.29 @@ -3619,6 +3622,7 @@
   56.30  	stateInfo["str"] = getStartupStateString();
   56.31  	stateInfo["enum"] = gStartupState;
   56.32  	sStateWatcher->post(stateInfo);
   56.33 +	gDebugInfo["StartupState"] = getStartupStateString();
   56.34  }
   56.35  
   56.36  
    57.1 --- a/indra/newview/lltexturecache.cpp	Thu Nov 30 17:05:57 2017 +0000
    57.2 +++ b/indra/newview/lltexturecache.cpp	Thu Nov 30 17:07:57 2017 +0000
    57.3 @@ -387,22 +387,35 @@
    57.4  		}
    57.5  		// Allocate read buffer
    57.6  		mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
    57.7 -		S32 bytes_read = LLAPRFile::readEx(local_filename, 
    57.8 -											 mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
    57.9 -		if (bytes_read != mDataSize)
   57.10 +
   57.11 +		if (mReadData)
   57.12  		{
   57.13 - 			LL_WARNS() << "Error reading file from local cache: " << local_filename
   57.14 - 					<< " Bytes: " << mDataSize << " Offset: " << mOffset
   57.15 +			S32 bytes_read = LLAPRFile::readEx( local_filename,
   57.16 +												mReadData,
   57.17 +												mOffset,
   57.18 +												mDataSize,
   57.19 +												mCache->getLocalAPRFilePool());
   57.20 +
   57.21 +			if (bytes_read != mDataSize)
   57.22 +			{
   57.23 + 				LL_WARNS() << "Error reading file from local cache: " << local_filename
   57.24 + 						<< " Bytes: " << mDataSize << " Offset: " << mOffset
   57.25   					<< " / " << mDataSize << LL_ENDL;
   57.26 -			mDataSize = 0;
   57.27 -			FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
   57.28 -			mReadData = NULL;
   57.29 +				mDataSize = 0;
   57.30 +				FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
   57.31 +				mReadData = NULL;
   57.32 +			}
   57.33 +			else
   57.34 +			{
   57.35 +				mImageSize = local_size;
   57.36 +				mImageLocal = TRUE;
   57.37 +			}
   57.38  		}
   57.39  		else
   57.40  		{
   57.41 -			//LL_INFOS() << "texture " << mID.asString() << " found in local_assets" << LL_ENDL;
   57.42 -			mImageSize = local_size;
   57.43 -			mImageLocal = TRUE;
   57.44 + 			LL_WARNS() << "Error allocating memory for cache: " << local_filename
   57.45 + 					<< " of size: " << mDataSize << LL_ENDL;
   57.46 +			mDataSize = 0;
   57.47  		}
   57.48  		// We're done...
   57.49  		done = true;
   57.50 @@ -477,44 +490,55 @@
   57.51  			
   57.52  			// Reserve the whole data buffer first
   57.53  			U8* data = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
   57.54 +			if (data)
   57.55 +			{
   57.56 +				// Set the data file pointers taking the read offset into account. 2 cases:
   57.57 +				if (mOffset < TEXTURE_CACHE_ENTRY_SIZE)
   57.58 +				{
   57.59 +					// Offset within the header record. That means we read something from the header cache.
   57.60 +					// Note: most common case is (mOffset = 0), so this is the "normal" code path.
   57.61 +					data_offset = TEXTURE_CACHE_ENTRY_SIZE - mOffset;	// i.e. TEXTURE_CACHE_ENTRY_SIZE if mOffset nul (common case)
   57.62 +					file_offset = 0;
   57.63 +					file_size = mDataSize - data_offset;
   57.64 +					// Copy the raw data we've been holding from the header cache into the new sized buffer
   57.65 +					llassert_always(mReadData);
   57.66 +					memcpy(data, mReadData, data_offset);
   57.67 +					FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
   57.68 +					mReadData = NULL;
   57.69 +				}
   57.70 +				else
   57.71 +				{
   57.72 +					// Offset bigger than the header record. That means we haven't read anything yet.
   57.73 +					data_offset = 0;
   57.74 +					file_offset = mOffset - TEXTURE_CACHE_ENTRY_SIZE;
   57.75 +					file_size = mDataSize;
   57.76 +					// No data from header cache to copy in that case, we skipped it all
   57.77 +				}
   57.78  
   57.79 -			// Set the data file pointers taking the read offset into account. 2 cases:
   57.80 -			if (mOffset < TEXTURE_CACHE_ENTRY_SIZE)
   57.81 -			{
   57.82 -				// Offset within the header record. That means we read something from the header cache.
   57.83 -				// Note: most common case is (mOffset = 0), so this is the "normal" code path.
   57.84 -				data_offset = TEXTURE_CACHE_ENTRY_SIZE - mOffset;	// i.e. TEXTURE_CACHE_ENTRY_SIZE if mOffset nul (common case)
   57.85 -				file_offset = 0;
   57.86 -				file_size = mDataSize - data_offset;
   57.87 -				// Copy the raw data we've been holding from the header cache into the new sized buffer
   57.88 -				llassert_always(mReadData);
   57.89 -				memcpy(data, mReadData, data_offset);
   57.90 -				FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
   57.91 -				mReadData = NULL;
   57.92 +				// Now use that buffer as the object read buffer
   57.93 +				llassert_always(mReadData == NULL);
   57.94 +				mReadData = data;
   57.95 +
   57.96 +				// Read the data at last
   57.97 +				S32 bytes_read = LLAPRFile::readEx(filename, 
   57.98 +												 mReadData + data_offset,
   57.99 +												 file_offset, file_size,
  57.100 +												 mCache->getLocalAPRFilePool());
  57.101 +				if (bytes_read != file_size)
  57.102 +				{
  57.103 +					LL_WARNS() << "LLTextureCacheWorker: "  << mID
  57.104 +							<< " incorrect number of bytes read from body: " << bytes_read
  57.105 +							<< " / " << file_size << LL_ENDL;
  57.106 +					FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
  57.107 +					mReadData = NULL;
  57.108 +					mDataSize = -1; // failed
  57.109 +					done = true;
  57.110 +				}
  57.111  			}
  57.112  			else
  57.113  			{
  57.114 -				// Offset bigger than the header record. That means we haven't read anything yet.
  57.115 -				data_offset = 0;
  57.116 -				file_offset = mOffset - TEXTURE_CACHE_ENTRY_SIZE;
  57.117 -				file_size = mDataSize;
  57.118 -				// No data from header cache to copy in that case, we skipped it all
  57.119 -			}
  57.120 -
  57.121 -			// Now use that buffer as the object read buffer
  57.122 -			llassert_always(mReadData == NULL);
  57.123 -			mReadData = data;
  57.124 -
  57.125 -			// Read the data at last
  57.126 -			S32 bytes_read = LLAPRFile::readEx(filename, 
  57.127 -											 mReadData + data_offset,
  57.128 -											 file_offset, file_size,
  57.129 -											 mCache->getLocalAPRFilePool());
  57.130 -			if (bytes_read != file_size)
  57.131 -			{
  57.132  				LL_WARNS() << "LLTextureCacheWorker: "  << mID
  57.133 -						<< " incorrect number of bytes read from body: " << bytes_read
  57.134 -						<< " / " << file_size << LL_ENDL;
  57.135 +					<< " failed to allocate memory for reading: " << mDataSize << LL_ENDL;
  57.136  				FREE_MEM(LLImageBase::getPrivatePool(), mReadData);
  57.137  				mReadData = NULL;
  57.138  				mDataSize = -1; // failed
  57.139 @@ -550,9 +574,11 @@
  57.140  	{
  57.141  		if ((mOffset != 0) // We currently do not support write offsets
  57.142  			|| (mDataSize <= 0) // Things will go badly wrong if mDataSize is nul or negative...
  57.143 -			|| (mImageSize < mDataSize))
  57.144 +			|| (mImageSize < mDataSize)
  57.145 +			|| (mRawDiscardLevel < 0)
  57.146 +			|| (mRawImage->isBufferInvalid())) // decode failed or malfunctioned, don't write
  57.147  		{
  57.148 -			LL_WARNS() << "INIT state check failed" << LL_ENDL;
  57.149 +			LL_WARNS() << "INIT state check failed for image: " << mID << " Size: " << mImageSize << " DataSize: " << mDataSize << " Discard:" << mRawDiscardLevel << LL_ENDL;
  57.150  			mDataSize = -1; // failed
  57.151  			done = true;
  57.152  		}
  57.153 @@ -577,15 +603,12 @@
  57.154  			idx = mCache->setHeaderCacheEntry(mID, entry, mImageSize, mDataSize); // create the new entry.
  57.155  			if(idx >= 0)
  57.156  			{
  57.157 -				// (almost always) write to the fast cache.
  57.158 -				if (mRawImage->getDataSize())
  57.159 +				// write to the fast cache.
  57.160 +				if(!mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel))
  57.161  				{
  57.162 -					if(!mCache->writeToFastCache(idx, mRawImage, mRawDiscardLevel))
  57.163 -					{
  57.164 -						LL_WARNS() << "writeToFastCache failed" << LL_ENDL;
  57.165 -						mDataSize = -1; // failed
  57.166 -						done = true;
  57.167 -					}
  57.168 +					LL_WARNS() << "writeToFastCache failed" << LL_ENDL;
  57.169 +					mDataSize = -1; // failed
  57.170 +					done = true;
  57.171  				}
  57.172  			}
  57.173  		}
  57.174 @@ -936,7 +959,7 @@
  57.175  //////////////////////////////////////////////////////////////////////////////
  57.176  
  57.177  //static
  57.178 -F32 LLTextureCache::sHeaderCacheVersion = 1.7f;
  57.179 +F32 LLTextureCache::sHeaderCacheVersion = 1.71f;
  57.180  U32 LLTextureCache::sCacheMaxEntries = 1024 * 1024; //~1 million textures.
  57.181  S64 LLTextureCache::sCacheMaxTexturesSize = 0; // no limit
  57.182  std::string LLTextureCache::sHeaderCacheEncoderVersion = LLImageJ2C::getEngineInfo();
  57.183 @@ -1825,24 +1848,30 @@
  57.184  S32 LLTextureCache::setHeaderCacheEntry(const LLUUID& id, Entry& entry, S32 imagesize, S32 datasize)
  57.185  {
  57.186  	mHeaderMutex.lock();
  57.187 -	S32 idx = openAndReadEntry(id, entry, true);
  57.188 +	S32 idx = openAndReadEntry(id, entry, true); // read or create
  57.189  	mHeaderMutex.unlock();
  57.190  
  57.191 +	if(idx < 0) // retry once
  57.192 +	{
  57.193 +		readHeaderCache(); // We couldn't write an entry, so refresh the LRU
  57.194 +
  57.195 +		mHeaderMutex.lock();
  57.196 +		idx = openAndReadEntry(id, entry, true);
  57.197 +		mHeaderMutex.unlock();
  57.198 +	}
  57.199 +
  57.200  	if (idx >= 0)
  57.201  	{
  57.202  		updateEntry(idx, entry, imagesize, datasize);				
  57.203  	}
  57.204 +	else
  57.205 +	{
  57.206 +		LL_WARNS() << "Failed to set cache entry for image: " << id << LL_ENDL;
  57.207 +		// We couldn't write to file, switch to read only mode and clear data
  57.208 +		setReadOnly(true);
  57.209 +		clearCorruptedCache(); // won't remove files due to "read only"
  57.210 +	}
  57.211  
  57.212 -	if(idx < 0) // retry
  57.213 -	{
  57.214 -		readHeaderCache(); // We couldn't write an entry, so refresh the LRU
  57.215 -	
  57.216 -		mHeaderMutex.lock();
  57.217 -		llassert_always(!mLRU.empty() || mHeaderEntriesInfo.mEntries < sCacheMaxEntries);
  57.218 -		mHeaderMutex.unlock();
  57.219 -
  57.220 -		idx = setHeaderCacheEntry(id, entry, imagesize, datasize); // assert above ensures no inf. recursion
  57.221 -	}
  57.222  	return idx;
  57.223  }
  57.224  
  57.225 @@ -2004,7 +2033,7 @@
  57.226  bool LLTextureCache::writeToFastCache(S32 id, LLPointer<LLImageRaw> raw, S32 discardlevel)
  57.227  {
  57.228  	//rescale image if needed
  57.229 -	if (raw.isNull() || !raw->getData())
  57.230 +	if (raw.isNull() || raw->isBufferInvalid() || !raw->getData())
  57.231  	{
  57.232  		LL_ERRS() << "Attempted to write NULL raw image to fastcache" << LL_ENDL;
  57.233  		return false;
    58.1 --- a/indra/newview/lltexturefetch.cpp	Thu Nov 30 17:05:57 2017 +0000
    58.2 +++ b/indra/newview/lltexturefetch.cpp	Thu Nov 30 17:07:57 2017 +0000
    58.3 @@ -1911,11 +1911,10 @@
    58.4  
    58.5  			if (mDecodedDiscard < 0)
    58.6  			{
    58.7 -				LL_DEBUGS(LOG_TXT) << mID << ": Failed to Decode." << LL_ENDL;
    58.8  				if (mCachedSize > 0 && !mInLocalCache && mRetryAttempt == 0)
    58.9  				{
   58.10  					// Cache file should be deleted, try again
   58.11 - 					LL_WARNS(LOG_TXT) << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL;
   58.12 + 					LL_DEBUGS(LOG_TXT) << mID << ": Decode of cached file failed (removed), retrying" << LL_ENDL;
   58.13  					llassert_always(mDecodeHandle == 0);
   58.14  					mFormattedImage = NULL;
   58.15  					++mRetryAttempt;
   58.16 @@ -1925,7 +1924,7 @@
   58.17  				}
   58.18  				else
   58.19  				{
   58.20 -// 					LL_WARNS(LOG_TXT) << "UNABLE TO LOAD TEXTURE: " << mID << " RETRIES: " << mRetryAttempt << LL_ENDL;
   58.21 +					LL_DEBUGS(LOG_TXT) << "Failed to Decode image " << mID << " after " << mRetryAttempt << " retries" << LL_ENDL;
   58.22  					setState(DONE); // failed
   58.23  				}
   58.24  			}
    59.1 --- a/indra/newview/lltoolmorph.cpp	Thu Nov 30 17:05:57 2017 +0000
    59.2 +++ b/indra/newview/lltoolmorph.cpp	Thu Nov 30 17:07:57 2017 +0000
    59.3 @@ -166,8 +166,16 @@
    59.4  	// Calling LLCharacter version, as we don't want position/height changes to cause the avatar to jump
    59.5  	// up and down when we're doing preview renders. -Nyx
    59.6  	gAgentAvatarp->LLCharacter::updateVisualParams();
    59.7 -	gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);
    59.8 -	gAgentAvatarp->updateLOD();
    59.9 +
   59.10 +	if (gAgentAvatarp->mDrawable.notNull())
   59.11 +	{
   59.12 +		gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);
   59.13 +		gAgentAvatarp->updateLOD();
   59.14 +	}
   59.15 +	else
   59.16 +	{
   59.17 +		LL_WARNS() << "Attempting to update avatar's geometry, but drawable doesn't exist yet" << LL_ENDL;
   59.18 +	}
   59.19  
   59.20  	LLViewerDynamicTexture::preRender(clear_depth);
   59.21  }
    60.1 --- a/indra/newview/llviewerdisplay.cpp	Thu Nov 30 17:05:57 2017 +0000
    60.2 +++ b/indra/newview/llviewerdisplay.cpp	Thu Nov 30 17:07:57 2017 +0000
    60.3 @@ -501,6 +501,7 @@
    60.4  			gAgent.setTeleportMessage(
    60.5  				LLAgent::sTeleportProgressMessages["requesting"]);
    60.6  			gViewerWindow->setProgressString(LLAgent::sTeleportProgressMessages["requesting"]);
    60.7 +			gViewerWindow->setProgressMessage(gAgent.mMOTD);
    60.8  			break;
    60.9  
   60.10  		case LLAgent::TELEPORT_REQUESTED:
   60.11 @@ -582,6 +583,7 @@
   60.12  		}
   60.13  		
   60.14  		gViewerWindow->setProgressPercent( percent_done );
   60.15 +		gViewerWindow->setProgressMessage(std::string());
   60.16  	}
   60.17  	else
   60.18  	if (gRestoreGL)
   60.19 @@ -603,6 +605,7 @@
   60.20  			
   60.21  			gViewerWindow->setProgressPercent( percent_done );
   60.22  		}
   60.23 +		gViewerWindow->setProgressMessage(std::string());
   60.24  	}
   60.25  
   60.26  	// <FS::Ansariel> Draw Distance stepping; originally based on SpeedRez by Henri Beauchamp, licensed under LGPL
    61.1 --- a/indra/newview/llviewerinventory.cpp	Thu Nov 30 17:05:57 2017 +0000
    61.2 +++ b/indra/newview/llviewerinventory.cpp	Thu Nov 30 17:07:57 2017 +0000
    61.3 @@ -60,7 +60,9 @@
    61.4  #include "llappearancemgr.h"
    61.5  #include "llcommandhandler.h"
    61.6  #include "llviewermessage.h"
    61.7 +#include "llpanelmaininventory.h"
    61.8  #include "llsidepanelappearance.h"
    61.9 +#include "llsidepanelinventory.h"
   61.10  #include "llavatarnamecache.h"
   61.11  #include "llavataractions.h"
   61.12  #include "lllogininstance.h"
   61.13 @@ -251,6 +253,20 @@
   61.14  			return true;
   61.15  		}
   61.16  
   61.17 +		if (params[0].asString() == "filters")
   61.18 +		{
   61.19 +			LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
   61.20 +			if (sidepanel_inventory)
   61.21 +			{
   61.22 +				LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
   61.23 +				if (main_inventory)
   61.24 +				{
   61.25 +					main_inventory->toggleFindOptions();
   61.26 +				}
   61.27 +			}
   61.28 +			return true;
   61.29 +		}
   61.30 +
   61.31  		// otherwise, we need a UUID and a verb...
   61.32  		if (params.size() < 2) 
   61.33  		{
    62.1 --- a/indra/newview/llviewerstats.cpp	Thu Nov 30 17:05:57 2017 +0000
    62.2 +++ b/indra/newview/llviewerstats.cpp	Thu Nov 30 17:07:57 2017 +0000
    62.3 @@ -455,8 +455,6 @@
    62.4  	
    62.5  	LLViewerStats::instance().getRecording().pause();
    62.6  
    62.7 -	body["session_id"] = gAgentSessionID;
    62.8 -	
    62.9  	LLSD &agent = body["agent"];
   62.10  	
   62.11  	time_t ltime;
   62.12 @@ -609,9 +607,13 @@
   62.13  	
   62.14  	body["MinimalSkin"] = false;
   62.15  
   62.16 +	LL_INFOS("LogViewerStatsPacket") << "Sending viewer statistics: " << body << LL_ENDL;
   62.17 +
   62.18 +	// The session ID token must never appear in logs
   62.19 +	body["session_id"] = gAgentSessionID;
   62.20 +
   62.21  	LLViewerStats::getInstance()->addToMessage(body);
   62.22  
   62.23 -	LL_INFOS("LogViewerStatsPacket") << "Sending viewer statistics: " << body << LL_ENDL;
   62.24      LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(url, body,
   62.25          "Statistics posted to sim", "Failed to post statistics to sim");
   62.26  	LLViewerStats::instance().getRecording().resume();
    63.1 --- a/indra/newview/llviewertexteditor.h	Thu Nov 30 17:05:57 2017 +0000
    63.2 +++ b/indra/newview/llviewertexteditor.h	Thu Nov 30 17:07:57 2017 +0000
    63.3 @@ -71,7 +71,8 @@
    63.4  		mObjectID = object_id;
    63.5  		mPreviewID = preview_id;
    63.6  	}
    63.7 -	
    63.8 +	void setNotecardObjectID(const LLUUID& object_id){ mObjectID = object_id;}
    63.9 +
   63.10  	void setASCIIEmbeddedText(const std::string& instr);
   63.11  	void setEmbeddedText(const std::string& instr);
   63.12  	std::string getEmbeddedText();
    64.1 --- a/indra/newview/llviewerwindow.cpp	Thu Nov 30 17:05:57 2017 +0000
    64.2 +++ b/indra/newview/llviewerwindow.cpp	Thu Nov 30 17:07:57 2017 +0000
    64.3 @@ -5644,6 +5644,8 @@
    64.4  		pick_type = LLFilePicker::FFSAVE_ALL; // ???
    64.5  	
    64.6  	// <FS:Ansariel> Threaded filepickers
    64.7 +	//BOOL is_snapshot_name_loc_set = isSnapshotLocSet();
    64.8 +
    64.9  	//// Get a base file location if needed.
   64.10  	//if (force_picker || !isSnapshotLocSet())
   64.11  	//{
   64.12 @@ -5692,7 +5694,12 @@
   64.13  	//	filepath = sSnapshotDir;
   64.14  	//	filepath += gDirUtilp->getDirDelimiter();
   64.15  	//	filepath += sSnapshotBaseName;
   64.16 -	//	filepath += llformat("_%.3d",i);
   64.17 +
   64.18 +	//	if (is_snapshot_name_loc_set)
   64.19 +	//	{
   64.20 +	//		filepath += llformat("_%.3d",i);
   64.21 +	//	}		
   64.22 +
   64.23  	//	filepath += extension;
   64.24  
   64.25  	//	llstat stat_info;
    65.1 --- a/indra/newview/llvoavatar.cpp	Thu Nov 30 17:05:57 2017 +0000
    65.2 +++ b/indra/newview/llvoavatar.cpp	Thu Nov 30 17:07:57 2017 +0000
    65.3 @@ -2182,7 +2182,17 @@
    65.4  			if(!facep->getVertexBuffer())
    65.5  			{
    65.6  				buff = new LLVertexBufferAvatar();
    65.7 -				buff->allocateBuffer(num_vertices, num_indices, TRUE);
    65.8 +				if (!buff->allocateBuffer(num_vertices, num_indices, TRUE))
    65.9 +				{
   65.10 +					LL_WARNS() << "Failed to allocate Vertex Buffer for Mesh to "
   65.11 +						<< num_vertices << " vertices and "
   65.12 +						<< num_indices << " indices" << LL_ENDL;
   65.13 +					// Attempt to create a dummy triangle (one vertex, 3 indices, all 0)
   65.14 +					facep->setSize(1, 3);
   65.15 +					buff->allocateBuffer(1, 3, true);
   65.16 +					memset((U8*) buff->getMappedData(), 0, buff->getSize());
   65.17 +					memset((U8*) buff->getMappedIndices(), 0, buff->getIndicesSize());
   65.18 +				}
   65.19  				facep->setVertexBuffer(buff);
   65.20  			}
   65.21  			else
   65.22 @@ -2194,7 +2204,15 @@
   65.23  				}
   65.24  				else
   65.25  				{
   65.26 -					buff->resizeBuffer(num_vertices, num_indices);
   65.27 +					if (!buff->resizeBuffer(num_vertices, num_indices))
   65.28 +					{
   65.29 +						LL_WARNS() << "Failed to allocate vertex buffer for Mesh, Substituting" << LL_ENDL;
   65.30 +						// Attempt to create a dummy triangle (one vertex, 3 indices, all 0)
   65.31 +						facep->setSize(1, 3);
   65.32 +						buff->resizeBuffer(1, 3);
   65.33 +						memset((U8*) buff->getMappedData(), 0, buff->getSize());
   65.34 +						memset((U8*) buff->getMappedIndices(), 0, buff->getIndicesSize());
   65.35 +					}
   65.36  				}
   65.37  			}
   65.38  			
   65.39 @@ -2206,20 +2224,24 @@
   65.40  				LL_ERRS() << "non-zero geom index: " << facep->getGeomIndex() << " in LLVOAvatar::restoreMeshData" << LL_ENDL;
   65.41  			}
   65.42  
   65.43 -			for(S32 k = j ; k < part_index ; k++)
   65.44 -			{
   65.45 -				bool rigid = false;
   65.46 -				if (k == MESH_ID_EYEBALL_LEFT ||
   65.47 -					k == MESH_ID_EYEBALL_RIGHT)
   65.48 -				{ //eyeballs can't have terse updates since they're never rendered with
   65.49 -					//the hardware skinning shader
   65.50 -					rigid = true;
   65.51 -				}
   65.52 +			if (num_vertices == buff->getNumVerts() && num_indices == buff->getNumIndices())
   65.53 +			{
   65.54 +				for(S32 k = j ; k < part_index ; k++)
   65.55 +				{
   65.56 +					bool rigid = false;
   65.57 +					if (k == MESH_ID_EYEBALL_LEFT ||
   65.58 +						k == MESH_ID_EYEBALL_RIGHT)
   65.59 +					{
   65.60 +						//eyeballs can't have terse updates since they're never rendered with
   65.61 +						//the hardware skinning shader
   65.62 +						rigid = true;
   65.63 +					}
   65.64  				
   65.65 -				LLViewerJoint* mesh = getViewerJoint(k);
   65.66 -				if (mesh)
   65.67 -				{
   65.68 -					mesh->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
   65.69 +					LLViewerJoint* mesh = getViewerJoint(k);
   65.70 +					if (mesh)
   65.71 +					{
   65.72 +						mesh->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
   65.73 +					}
   65.74  				}
   65.75  			}
   65.76  
   65.77 @@ -7819,7 +7841,7 @@
   65.78  	record["elapsed"] = elapsed;
   65.79  	record["completed"] = completed;
   65.80  	U32 grid_x(0), grid_y(0);
   65.81 -	if (getRegion())
   65.82 +	if (getRegion() && LLWorld::instance().isRegionListed(getRegion()))
   65.83  	{
   65.84  		record["central_bake_version"] = LLSD::Integer(getRegion()->getCentralBakeVersion());
   65.85  		grid_from_region_handle(getRegion()->getHandle(), &grid_x, &grid_y);
    66.1 --- a/indra/newview/llvoground.cpp	Thu Nov 30 17:05:57 2017 +0000
    66.2 +++ b/indra/newview/llvoground.cpp	Thu Nov 30 17:07:57 2017 +0000
    66.3 @@ -94,7 +94,12 @@
    66.4  	{
    66.5  		face->setSize(5, 12);
    66.6  		LLVertexBuffer* buff = new LLVertexBuffer(LLDrawPoolGround::VERTEX_DATA_MASK, GL_STREAM_DRAW_ARB);
    66.7 -		buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE);
    66.8 +		if (!buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE))
    66.9 +		{
   66.10 +			LL_WARNS() << "Failed to allocate Vertex Buffer for VOGround to "
   66.11 +				<< face->getGeomCount() << " vertices and "
   66.12 +				<< face->getIndicesCount() << " indices" << LL_ENDL;
   66.13 +		}
   66.14  		face->setGeomIndex(0);
   66.15  		face->setIndicesIndex(0);
   66.16  		face->setVertexBuffer(buff);
    67.1 --- a/indra/newview/llvopartgroup.cpp	Thu Nov 30 17:05:57 2017 +0000
    67.2 +++ b/indra/newview/llvopartgroup.cpp	Thu Nov 30 17:07:57 2017 +0000
    67.3 @@ -72,7 +72,15 @@
    67.4  	//TODO: optimize out binormal mask here.  Specular and normal coords as well.
    67.5  	sVB = new LLVertexBuffer(VERTEX_DATA_MASK | LLVertexBuffer::MAP_TANGENT | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_TEXCOORD2, GL_STREAM_DRAW_ARB);
    67.6  	U32 count = LL_MAX_PARTICLE_COUNT;
    67.7 -	sVB->allocateBuffer(count*4, count*6, true);
    67.8 +	if (!sVB->allocateBuffer(count*4, count*6, true))
    67.9 +	{
   67.10 +		LL_WARNS() << "Failed to allocate Vertex Buffer to "
   67.11 +			<< count*4 << " vertices and "
   67.12 +			<< count * 6 << " indices" << LL_ENDL;
   67.13 +		// we are likelly to crash at following getTexCoord0Strider(), so unref and return
   67.14 +		sVB = NULL;
   67.15 +		return;
   67.16 +	}
   67.17  
   67.18  	//indices and texcoords are always the same, set once
   67.19  	LLStrider<U16> indicesp;
   67.20 @@ -809,7 +817,7 @@
   67.21  	addGeometryCount(group, vertex_count, index_count);
   67.22  	
   67.23  
   67.24 -	if (vertex_count > 0 && index_count > 0)
   67.25 +	if (vertex_count > 0 && index_count > 0 && LLVOPartGroup::sVB)
   67.26  	{ 
   67.27  		group->mBuilt = 1.f;
   67.28  		//use one vertex buffer for all groups
    68.1 --- a/indra/newview/llvosky.cpp	Thu Nov 30 17:05:57 2017 +0000
    68.2 +++ b/indra/newview/llvosky.cpp	Thu Nov 30 17:07:57 2017 +0000
    68.3 @@ -1466,7 +1466,12 @@
    68.4  	{
    68.5  		facep->setSize(4, 6);	
    68.6  		LLVertexBuffer* buff = new LLVertexBuffer(LLDrawPoolSky::VERTEX_DATA_MASK, GL_STREAM_DRAW_ARB);
    68.7 -		buff->allocateBuffer(facep->getGeomCount(), facep->getIndicesCount(), TRUE);
    68.8 +		if (!buff->allocateBuffer(facep->getGeomCount(), facep->getIndicesCount(), TRUE))
    68.9 +		{
   68.10 +			LL_WARNS() << "Failed to allocate Vertex Buffer for vosky to "
   68.11 +				<< facep->getGeomCount() << " vertices and "
   68.12 +				<< facep->getIndicesCount() << " indices" << LL_ENDL;
   68.13 +		}
   68.14  		facep->setGeomIndex(0);
   68.15  		facep->setIndicesIndex(0);
   68.16  		facep->setVertexBuffer(buff);
   68.17 @@ -1873,7 +1878,12 @@
   68.18  	{
   68.19  		face->setSize(quads * 4, quads * 6);
   68.20  		LLVertexBuffer* buff = new LLVertexBuffer(LLDrawPoolWater::VERTEX_DATA_MASK, GL_STREAM_DRAW_ARB);
   68.21 -		buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE);
   68.22 +		if (!buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE))
   68.23 +		{
   68.24 +			LL_WARNS() << "Failed to allocate Vertex Buffer for vosky to "
   68.25 +				<< face->getGeomCount() << " vertices and "
   68.26 +				<< face->getIndicesCount() << " indices" << LL_ENDL;
   68.27 +		}
   68.28  		face->setIndicesIndex(0);
   68.29  		face->setGeomIndex(0);
   68.30  		face->setVertexBuffer(buff);
    69.1 --- a/indra/newview/llvotree.cpp	Thu Nov 30 17:05:57 2017 +0000
    69.2 +++ b/indra/newview/llvotree.cpp	Thu Nov 30 17:07:57 2017 +0000
    69.3 @@ -536,7 +536,14 @@
    69.4  		}
    69.5  
    69.6  		mReferenceBuffer = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, 0);
    69.7 -		mReferenceBuffer->allocateBuffer(max_vertices, max_indices, TRUE);
    69.8 +		if (!mReferenceBuffer->allocateBuffer(max_vertices, max_indices, TRUE))
    69.9 +		{
   69.10 +			LL_WARNS() << "Failed to allocate Vertex Buffer on update to "
   69.11 +				<< max_vertices << " vertices and "
   69.12 +				<< max_indices << " indices" << LL_ENDL;
   69.13 +			mReferenceBuffer = NULL; //unref
   69.14 +			return TRUE;
   69.15 +		}
   69.16  
   69.17  		LLStrider<LLVector3> vertices;
   69.18  		LLStrider<LLVector3> normals;
   69.19 @@ -894,7 +901,21 @@
   69.20  	LLFace* facep = mDrawable->getFace(0);
   69.21  	if (!facep) return;
   69.22  	LLVertexBuffer* buff = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
   69.23 -	buff->allocateBuffer(vert_count, index_count, TRUE);
   69.24 +	if (!buff->allocateBuffer(vert_count, index_count, TRUE))
   69.25 +	{
   69.26 +		LL_WARNS() << "Failed to allocate Vertex Buffer on mesh update to "
   69.27 +			<< vert_count << " vertices and "
   69.28 +			<< index_count << " indices" << LL_ENDL;
   69.29 +		buff->allocateBuffer(1, 3, true);
   69.30 +		memset((U8*)buff->getMappedData(), 0, buff->getSize());
   69.31 +		memset((U8*)buff->getMappedIndices(), 0, buff->getIndicesSize());
   69.32 +		facep->setSize(1, 3);
   69.33 +		facep->setVertexBuffer(buff);
   69.34 +		mReferenceBuffer->flush();
   69.35 +		buff->flush();
   69.36 +		return;
   69.37 +	}
   69.38 +
   69.39  	facep->setVertexBuffer(buff);
   69.40  	
   69.41  	LLStrider<LLVector3> vertices;
    70.1 --- a/indra/newview/llvovolume.cpp	Thu Nov 30 17:05:57 2017 +0000
    70.2 +++ b/indra/newview/llvovolume.cpp	Thu Nov 30 17:07:57 2017 +0000
    70.3 @@ -5970,18 +5970,25 @@
    70.4  		}
    70.5  
    70.6  		//create vertex buffer
    70.7 -		LLVertexBuffer* buffer = NULL;
    70.8 +		LLPointer<LLVertexBuffer> buffer;
    70.9  
   70.10  		{
   70.11  			LL_RECORD_BLOCK_TIME(FTM_GEN_DRAW_INFO_ALLOCATE);
   70.12  			buffer = createVertexBuffer(mask, buffer_usage);
   70.13 -			buffer->allocateBuffer(geom_count, index_count, TRUE);
   70.14 -		}
   70.15 -
   70.16 -		group->mGeometryBytes += buffer->getSize() + buffer->getIndicesSize();
   70.17 -
   70.18 -
   70.19 -		buffer_map[mask][*face_iter].push_back(buffer);
   70.20 +			if(!buffer->allocateBuffer(geom_count, index_count, TRUE))
   70.21 +			{
   70.22 +				LL_WARNS() << "Failed to allocate group Vertex Buffer to "
   70.23 +					<< geom_count << " vertices and "
   70.24 +					<< index_count << " indices" << LL_ENDL;
   70.25 +				buffer = NULL;
   70.26 +			}
   70.27 +		}
   70.28 +
   70.29 +		if (buffer)
   70.30 +		{
   70.31 +			group->mGeometryBytes += buffer->getSize() + buffer->getIndicesSize();
   70.32 +			buffer_map[mask][*face_iter].push_back(buffer);
   70.33 +		}
   70.34  
   70.35  		//add face geometry
   70.36  
   70.37 @@ -5989,8 +5996,17 @@
   70.38  		U16 index_offset = 0;
   70.39  
   70.40  		while (face_iter < i)
   70.41 -		{ //update face indices for new buffer
   70.42 +		{
   70.43 +			//update face indices for new buffer
   70.44  			facep = *face_iter;
   70.45 +			if (buffer.isNull())
   70.46 +			{
   70.47 +				// Bulk allocation failed
   70.48 +				facep->setVertexBuffer(buffer);
   70.49 +				facep->setSize(0, 0); // mark as no geometry
   70.50 +				++face_iter;
   70.51 +				continue;
   70.52 +			}
   70.53  			facep->setIndicesIndex(indices_index);
   70.54  			facep->setGeomIndex(index_offset);
   70.55  			facep->setVertexBuffer(buffer);	
   70.56 @@ -6315,7 +6331,10 @@
   70.57  			++face_iter;
   70.58  		}
   70.59  
   70.60 -		buffer->flush();
   70.61 +		if (buffer)
   70.62 +		{
   70.63 +			buffer->flush();
   70.64 +		}
   70.65  	}
   70.66  
   70.67  	group->mBufferMap[mask].clear();
    71.1 --- a/indra/newview/llvowater.cpp	Thu Nov 30 17:05:57 2017 +0000
    71.2 +++ b/indra/newview/llvowater.cpp	Thu Nov 30 17:07:57 2017 +0000
    71.3 @@ -158,14 +158,22 @@
    71.4  	if (!buff || !buff->isWriteable())
    71.5  	{
    71.6  		buff = new LLVertexBuffer(LLDrawPoolWater::VERTEX_DATA_MASK, GL_DYNAMIC_DRAW_ARB);
    71.7 -		buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE);
    71.8 +		if (!buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE))
    71.9 +		{
   71.10 +			LL_WARNS() << "Failed to allocate Vertex Buffer on water update to "
   71.11 +				<< face->getGeomCount() << " vertices and "
   71.12 +				<< face->getIndicesCount() << " indices" << LL_ENDL;
   71.13 +		}
   71.14  		face->setIndicesIndex(0);
   71.15  		face->setGeomIndex(0);
   71.16  		face->setVertexBuffer(buff);
   71.17  	}
   71.18  	else
   71.19  	{
   71.20 -		buff->resizeBuffer(face->getGeomCount(), face->getIndicesCount());
   71.21 +		if (!buff->resizeBuffer(face->getGeomCount(), face->getIndicesCount()))
   71.22 +		{
   71.23 +			LL_WARNS() << "Failed to resize Vertex Buffer" << LL_ENDL;
   71.24 +		}
   71.25  	}
   71.26  		
   71.27  	index_offset = face->getGeometry(verticesp,normalsp,texCoordsp, indicesp);
    72.1 --- a/indra/newview/llvowlsky.cpp	Thu Nov 30 17:05:57 2017 +0000
    72.2 +++ b/indra/newview/llvowlsky.cpp	Thu Nov 30 17:07:57 2017 +0000
    72.3 @@ -313,7 +313,12 @@
    72.4  #if DOME_SLICES
    72.5  	{
    72.6  		mFanVerts = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
    72.7 -		mFanVerts->allocateBuffer(getFanNumVerts(), getFanNumIndices(), TRUE);
    72.8 +		if (!mFanVerts->allocateBuffer(getFanNumVerts(), getFanNumIndices(), TRUE))
    72.9 +		{
   72.10 +			LL_WARNS() << "Failed to allocate Vertex Buffer on sky update to "
   72.11 +				<< getFanNumVerts() << " vertices and "
   72.12 +				<< getFanNumIndices() << " indices" << LL_ENDL;
   72.13 +		}
   72.14  
   72.15  		BOOL success = mFanVerts->getVertexStrider(vertices)
   72.16  			&& mFanVerts->getTexCoord0Strider(texCoords)
   72.17 @@ -382,7 +387,12 @@
   72.18  			const U32 num_indices_this_seg = 1+num_stacks_this_seg*(2+2*verts_per_stack);
   72.19  			llassert(num_indices_this_seg * sizeof(U16) <= max_buffer_bytes);
   72.20  
   72.21 -			segment->allocateBuffer(num_verts_this_seg, num_indices_this_seg, TRUE);
   72.22 +			if (!segment->allocateBuffer(num_verts_this_seg, num_indices_this_seg, TRUE))
   72.23 +			{
   72.24 +				LL_WARNS() << "Failed to allocate Vertex Buffer on update to "
   72.25 +					<< num_verts_this_seg << " vertices and "
   72.26 +					<< num_indices_this_seg << " indices" << LL_ENDL;
   72.27 +			}
   72.28  
   72.29  			// lock the buffer
   72.30  			BOOL success = segment->getVertexStrider(vertices)
   72.31 @@ -784,7 +794,10 @@
   72.32  	if (mStarsVerts.isNull() || !mStarsVerts->isWriteable())
   72.33  	{
   72.34  		mStarsVerts = new LLVertexBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK, GL_DYNAMIC_DRAW);
   72.35 -		mStarsVerts->allocateBuffer(getStarsNumVerts()*6, 0, TRUE);
   72.36 +		if (!mStarsVerts->allocateBuffer(getStarsNumVerts()*6, 0, TRUE))
   72.37 +		{
   72.38 +			LL_WARNS() << "Failed to allocate Vertex Buffer for Sky to " << getStarsNumVerts() * 6 << " vertices" << LL_ENDL;
   72.39 +		}
   72.40  	}
   72.41   
   72.42  	BOOL success = mStarsVerts->getVertexStrider(verticesp)
    73.1 --- a/indra/newview/pipeline.cpp	Thu Nov 30 17:05:57 2017 +0000
    73.2 +++ b/indra/newview/pipeline.cpp	Thu Nov 30 17:07:57 2017 +0000
    73.3 @@ -4019,7 +4019,14 @@
    73.4  	}
    73.5  	
    73.6  	//flush particle VB
    73.7 -	LLVOPartGroup::sVB->flush();
    73.8 +	if (LLVOPartGroup::sVB)
    73.9 +	{
   73.10 +		LLVOPartGroup::sVB->flush();
   73.11 +	}
   73.12 +	else
   73.13 +	{
   73.14 +		LL_WARNS_ONCE() << "Missing particle buffer" << LL_ENDL;
   73.15 +	}
   73.16  
   73.17  	/*bool use_transform_feedback = gTransformPositionProgram.mProgramObject && !mMeshDirtyGroup.empty();
   73.18  
   73.19 @@ -12154,7 +12161,11 @@
   73.20  void LLPipeline::initDeferredVB()
   73.21  {
   73.22  	mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
   73.23 -	mDeferredVB->allocateBuffer(8, 0, true);
   73.24 +	if (!mDeferredVB->allocateBuffer(8, 0, true))
   73.25 +	{
   73.26 +		// Most likely going to crash...
   73.27 +		LL_WARNS() << "Failed to allocate Vertex Buffer for deferred rendering" << LL_ENDL;
   73.28 +	}
   73.29  }
   73.30  // </FS:Ansariel>
   73.31  
   73.32 @@ -12162,7 +12173,12 @@
   73.33  void LLPipeline::initAuxiliaryVB()
   73.34  {
   73.35  	mAuxiliaryVB = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR, 0);
   73.36 -	mAuxiliaryVB->allocateBuffer(3, 0, true);
   73.37 +	if (!mAuxiliaryVB->allocateBuffer(3, 0, true))
   73.38 +	{
   73.39 +		LL_WARNS() << "Failed to allocate auxiliary Vertex Buffer" << LL_ENDL;
   73.40 +		mAuxiliaryVB = NULL;
   73.41 +		return;
   73.42 +	}
   73.43  
   73.44  	LLStrider<LLVector3> verts;
   73.45  	mAuxiliaryVB->getVertexStrider(verts);
   73.46 @@ -12173,12 +12189,20 @@
   73.47  
   73.48  void LLPipeline::drawAuxiliaryVB(U32 mask /*= 0*/)
   73.49  {
   73.50 +	if (!mAuxiliaryVB)
   73.51 +	{
   73.52 +		return;
   73.53 +	}
   73.54  	mAuxiliaryVB->setBuffer(LLVertexBuffer::MAP_VERTEX | mask);
   73.55  	mAuxiliaryVB->drawArrays(LLRender::TRIANGLES, 0, 3);
   73.56  }
   73.57  
   73.58  void LLPipeline::drawAuxiliaryVB(const LLVector2& tc1, const LLVector2& tc2, U32 mask /*= 0*/)
   73.59  {
   73.60 +	if (!mAuxiliaryVB)
   73.61 +	{
   73.62 +		return;
   73.63 +	}
   73.64  	LLStrider<LLVector2> tc;
   73.65  	mAuxiliaryVB->getTexCoord0Strider(tc);
   73.66  	tc[0].set(tc1.mV[0], tc1.mV[1]);
   73.67 @@ -12190,6 +12214,10 @@
   73.68  
   73.69  void LLPipeline::drawAuxiliaryVB(const LLVector2& tc1, const LLVector2& tc2, const LLColor4& color)
   73.70  {
   73.71 +	if (!mAuxiliaryVB)
   73.72 +	{
   73.73 +		return;
   73.74 +	}
   73.75  	LLStrider<LLColor4U> col;
   73.76  	mAuxiliaryVB->getColorStrider(col);
   73.77  	col[0].set(color);
    74.1 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
    74.2 +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
    74.3 @@ -4,7 +4,7 @@
    74.4  		„[TEXT]“ nicht gefunden
    74.5  	</floater.string>
    74.6  	<floater.string name="not_found_text">
    74.7 -		Einwohner nicht gefunden
    74.8 +		Einwohner nicht gefunden.
    74.9  	</floater.string>
   74.10  	<floater.string name="no_one_near">
   74.11  		Keiner in der Nähe
    75.1 --- a/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
    75.2 +++ b/indra/newview/skins/default/xui/de/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
    75.3 @@ -7,5 +7,6 @@
    75.4  	<name_list name="render_settings_list">
    75.5  		<name_list.columns label="Name" name="name"/>
    75.6  		<name_list.columns label="Darstellungseinstellung" name="setting"/>
    75.7 +		<name_list.columns label="Hinzugefügt am" name="timestamp"/>
    75.8  	</name_list>
    75.9  </floater>
    76.1 --- a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
    76.2 +++ b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
    76.3 @@ -16,8 +16,8 @@
    76.4  	<button label="Keine" label_selected="Keine" name="None"/>
    76.5  	<check_box label="Nur Transferierbar" name="check_transferable"/>
    76.6  	<check_box label="Ordner immer anz." name="check_show_empty"/>
    76.7 -	<check_box label="Erstellt von mir" name="check_created_by_me"/>
    76.8 -	<check_box label="Erstellt von anderen" name="check_created_by_others"/>
    76.9 +	<check_box label="Von mir erstellt" name="check_created_by_me"/>
   76.10 +	<check_box label="Von anderen erstellt" name="check_created_by_others"/>
   76.11  	<check_box label="Seit Abmeldung" name="check_since_logoff"/>
   76.12  	<text name="- OR -">
   76.13  		- ODER -
    77.1 --- a/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
    77.2 +++ b/indra/newview/skins/default/xui/de/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
    77.3 @@ -118,7 +118,7 @@
    77.4  			<scroll_list.columns label="Geskriptet" name="scripted"/>
    77.5  			<scroll_list.columns label="Belastung" name="land_impact"/>
    77.6  			<scroll_list.columns label="Abstand" name="dist_from_you"/>
    77.7 -			<scroll_list.columns label="Pathfinding-Nutzung" name="linkset_use"/>
    77.8 +			<scroll_list.columns label="Pathfinding verwenden" name="linkset_use"/>
    77.9  			<scroll_list.columns label="A %" name="a_percent"/>
   77.10  			<scroll_list.columns label="B %" name="b_percent"/>
   77.11  			<scroll_list.columns label="C %" name="c_percent"/>
   77.12 @@ -133,7 +133,7 @@
   77.13  	</panel>
   77.14  	<panel name="pathfinding_linksets_actions">
   77.15  		<text name="linksets_actions_label">
   77.16 -			Aktionen für ausgewählte Objekte:
   77.17 +			Aktionen für Auswahl
   77.18  		</text>
   77.19  		<check_box label="Beacon anzeigen" name="show_beacon"/>
   77.20  		<button label="Nehmen" name="take_objects"/>
    78.1 --- a/indra/newview/skins/default/xui/de/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
    78.2 +++ b/indra/newview/skins/default/xui/de/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
    78.3 @@ -2,6 +2,7 @@
    78.4  <menu_bar name="Login Menu">
    78.5  	<menu label="Viewer" name="File">
    78.6  		<menu_item_call label="Einstellungen..." name="Preferences..."/>
    78.7 +		<menu_item_call label="Fenster schließen" name="Close Window"/>
    78.8  		<menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
    78.9  		<menu_item_call label="[APP_NAME] beenden" name="Quit"/>
   78.10  	</menu>
    79.1 --- a/indra/newview/skins/default/xui/de/notifications.xml	Thu Nov 30 17:05:57 2017 +0000
    79.2 +++ b/indra/newview/skins/default/xui/de/notifications.xml	Thu Nov 30 17:07:57 2017 +0000
    79.3 @@ -4,8 +4,8 @@
    79.4  		Nicht mehr anzeigen
    79.5  	</global>
    79.6  	<global name="skipnexttimesessiononly">
    79.7 -		Nicht mehr anzeigen
    79.8 -(für aktuelle Sitzung)
    79.9 +		Nicht mehr anzeigen 
   79.10 +(während der aktuellen Sitzung)
   79.11  	</global>
   79.12  	<global name="alwayschoose">
   79.13  		Diese Option immer auswählen
   79.14 @@ -368,37 +368,33 @@
   79.15  		<usetemplate canceltext="Abbrechen" name="okcancelbuttons" notext="Abbrechen" yestext="Gruppe für [COST] L$ erstellen"/>
   79.16  	</notification>
   79.17  	<notification name="JoinGroupInaccessible">
   79.18 -		Sie haben keine Zugriff auf diese Gruppe.
   79.19 +		Diese Gruppe ist für Sie nicht verfügbar.
   79.20  		<usetemplate name="okbutton" yestext="OK"/>
   79.21  	</notification>
   79.22  	<notification name="JoinGroupError">
   79.23 -		Fehler bei der Verarbeitung Ihrer Gruppenmitglied-Anfrage.
   79.24 +		Fehler bei der Verarbeitung Ihrer Anfrage zur Gruppenmitgliedschaft.
   79.25  		<usetemplate name="okbutton" yestext="OK"/>
   79.26  	</notification>
   79.27  	<notification name="JoinGroupErrorReason">
   79.28 -		Gruppe kann nicht beigetreten werden: [reason]
   79.29 +		Beitritt zur Gruppe nicht möglich: [reason]
   79.30  		<usetemplate name="okbutton" yestext="OK"/>
   79.31  	</notification>
   79.32  	<notification name="JoinGroupTrialUser">
   79.33 -		Entschuldigung, Benutzer auf Probe können keiner Gruppe beitreten.
   79.34 +		Leider können Testbenutzer keinen Gruppen beitreten.
   79.35  		<usetemplate name="okbutton" yestext="OK"/>
   79.36  	</notification>
   79.37  	<notification name="JoinGroupMaxGroups">
   79.38 -		Sie können der Gruppe &lt;nolink&gt;[group_name]&lt;/nolink&gt; nicht beitreten:
   79.39 -Sie sind bereits Mitglied in [group_count] Gruppen, das erlaubte Limit sind [max_groups].
   79.40 +		Sie können „&lt;nolink&gt;[group_name]&lt;/nolink&gt;“ nicht beitreten: 
   79.41 +Sie sind bereits Mitglied in [group_count] Gruppen, die maximale zulässige Anzahl beträgt [max_groups]
   79.42  		<usetemplate name="okbutton" yestext="OK"/>
   79.43  	</notification>
   79.44  	<notification name="JoinGroupClosedEnrollment">
   79.45 -		Sie können der Gruppe &lt;nolink&gt;[group_name]&lt;/nolink&gt; nicht beitreten:
   79.46 -Die Gruppe besitzt keine öffentliche Anmeldung mehr.
   79.47 +		Sie können „&lt;nolink&gt;[group_name]&lt;/nolink&gt;“ nicht beitreten: 
   79.48 +Die Gruppe steht für freie Registrierungen nicht mehr zur Verfügung.
   79.49  		<usetemplate name="okbutton" yestext="OK"/>
   79.50  	</notification>
   79.51 -	<notification name="JoinGroupSuccess">
   79.52 -		Sie sind der Gruppe beigetreten.
   79.53 -		<usetemplate name="okbutton" yestext="OK"/>
   79.54 -	</notification>
   79.55  	<notification name="JoinGroupInsufficientFunds">
   79.56 -		Die benötigte Gebühr L$ [membership_fee] für die Mitgliedschaft konnte nicht übertragen werden.
   79.57 +		Die erforderliche L$ [membership_fee] Mitgliedschaftsgebühr kann nicht übertragen werden.
   79.58  		<usetemplate name="okbutton" yestext="OK"/>
   79.59  	</notification>
   79.60  	<notification name="LandBuyPass">
   79.61 @@ -423,9 +419,9 @@
   79.62  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
   79.63  	</notification>
   79.64  	<notification name="ReturnObjectsDeededToGroup">
   79.65 -		Möchten Sie alle Ihre Objekte auf dieser Parzelle, die der Gruppe „&lt;nolink&gt;[NAME]&lt;/nolink&gt;“ gehören, zurück in das jeweilige Inventar ihrer vorherigen Eigentümer transferieren?
   79.66 -
   79.67 -*WARNUNG* Alle nicht transferierbaren Objekte, die der Gruppe übertragen wurden, werden dabei gelöscht!
   79.68 +		Möchten Sie alle Ihre Objekte auf dieser Parzelle, die gemeinsam mit der Gruppe „&lt;nolink&gt;[NAME]&lt;/nolink&gt;“ verwendet werden, zurück in das Inventar ihrer vorherigen Eigentümer transferieren? 
   79.69 +
   79.70 +*WARNUNG* Hierdurch werden alle nicht transferierbaren Objekte gelöscht, die der Gruppe übertragen wurden. 
   79.71  
   79.72  Objekte: [N]
   79.73  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
   79.74 @@ -469,7 +465,7 @@
   79.75  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
   79.76  	</notification>
   79.77  	<notification name="ReturnObjectsNotOwnedByGroup">
   79.78 -		Objekte auf dieser Parzelle, die von der Gruppe &lt;nolink&gt;[NAME]&lt;/nolink&gt; nicht gemeinsam genutzt werden, an ihre Eigentümer zurückgeben?
   79.79 +		Möchten Sie die Objekte auf dieser Parzelle, die NICHT gemeinsam mit der Gruppe „&lt;nolink&gt;[NAME]&lt;/nolink&gt;“ verwendet werden, an ihre Eigentümer zurückgeben? 
   79.80  
   79.81  Objekte: [N]
   79.82  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
   79.83 @@ -517,7 +513,7 @@
   79.84  		Ein Report-Screenshot konnte aus folgendem Grund nicht hochgeladen werden: [REASON]
   79.85  	</notification>
   79.86  	<notification name="MustAgreeToLogIn">
   79.87 -		Bevor Sie sich in [CURRENT_GRID] anmelden können, müssen Sie den Geschäftsbedingungen, Datenschutzbestimmungen und Servicebedingungen zustimmen.
   79.88 +		Bevor Sie sich in [CURRENT_GRID] anmelden können, müssen Sie den Allgemeinen Geschäftsbedingungen, Datenschutzbestimmungen und Servicebedingungen zustimmen.
   79.89  	</notification>
   79.90  	<notification name="CouldNotPutOnOutfit">
   79.91  		Outfit konnte nicht angezogen werden.
   79.92 @@ -778,7 +774,7 @@
   79.93  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/>
   79.94  	</notification>
   79.95  	<notification name="EjectAvatarFromGroup">
   79.96 -		Sie haben [AVATAR_NAME] aus der Gruppe &lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt; geworfen.
   79.97 +		Sie haben [AVATAR_NAME] aus der Gruppe „&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;“ entfernt.
   79.98  	</notification>
   79.99  	<notification name="AcquireErrorTooManyObjects">
  79.100  		FEHLER: Zu viele Objekte ausgewählt.
  79.101 @@ -1387,19 +1383,18 @@
  79.102  Wählen Sie ein kleineres Gebiet und versuchen Sie es erneut.
  79.103  	</notification>
  79.104  	<notification name="DeedLandToGroup">
  79.105 -		Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
  79.106 -Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
  79.107 -
  79.108 -Der Gruppe „&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;“
  79.109 - [AREA] m² Land schenken?
  79.110 +		Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. 
  79.111 +Dem Eigentümer wird der Kaufpreis für das Land nicht zurückerstattet. Bei einem Verkauf der übertragenen Parzelle wird der Erlös zu gleichen Teilen unter den Gruppenmitgliedern aufgeteilt. 
  79.112 +
  79.113 +Der Gruppe „&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;“ diese [AREA] m² Land schenken?
  79.114  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.115  	</notification>
  79.116  	<notification name="DeedLandToGroupWithContribution">
  79.117 -		Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt.
  79.118 -Die Schenkung beinhaltet eine Landübertragung an die Gruppe von „[NAME]“.
  79.119 -Dem Eigentümer wird der Kaufpreis für das Land nicht rückerstattet. Bei Verkauf der übertragenen Parzelle wird der Erlös zwischen den Gruppenmitgliedern aufgeteilt.
  79.120 -
  79.121 -Der Gruppe „&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;“ [AREA] m² an Land schenken?
  79.122 +		Die Schenkung dieser Parzelle setzt voraus, dass die Gruppe über ausreichende Landnutzungsrechte verfügt. 
  79.123 +Die Schenkung beinhaltet eine Landübertragung an die Gruppe von &quot;[NAME]&quot;. 
  79.124 +Dem Eigentümer wird der Kaufpreis für das Land nicht zurückerstattet. Bei einem Verkauf der übertragenen Parzelle wird der Erlös zu gleichen Teilen unter den Gruppenmitgliedern aufgeteilt. 
  79.125 +
  79.126 +Der Gruppe „&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;“ diese [AREA] m² Land schenken?
  79.127  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.128  	</notification>
  79.129  	<notification name="DisplaySetToSafe">
  79.130 @@ -1814,7 +1809,7 @@
  79.131  		<usetemplate name="okbutton" yestext="OK"/>
  79.132  	</notification>
  79.133  	<notification name="GroupLeaveConfirmMemberWithFee">
  79.134 -		Sie sind gegenwärtig Mitglied der Gruppe &lt;nolink&gt;[GROUP]&lt;/nolink&gt;. Erneutes Beitreten kostet [AMOUNT] L$.
  79.135 +		Sie sind gegenwärtig Mitglied der Gruppe „&lt;nolink&gt;[GROUP]&lt;/nolink&gt;“. Erneutes Beitreten kostet [AMOUNT] L$.
  79.136  Diese Gruppe verlassen?
  79.137  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.138  	</notification>
  79.139 @@ -2162,9 +2157,8 @@
  79.140  		Möchten Sie den Grundbesitzvertrag wirklich ändern?
  79.141  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.142  	</notification>
  79.143 -
  79.144  	<notification name="EstateParcelAccessOverride">
  79.145 -		Deaktivieren dieser Einstellung kann Einschränkungen von Parzellen-Eigentümer aufheben, um Griefing zu verhindern, die Privatsphäre sicherzustellen oder minderjährige Einwohner vor Über-18-Material zu schützen. Bitte besprechen Sie dieses Vorgehen mit den Parzellen-Eigentümern, falls notwendig.
  79.146 +		Durch Deaktivieren dieser Option können Einstellungen der Parzellenbesitzer zum Schutz vor Belästigungen, zur Aufrechterhaltung der Privatsphäre oder zum Schutz von Minderjährigen vor nicht altersgemäßen Inhalten aufgehoben werden. Bitte sprechen Sie mit den Parzellenbesitzern, falls erforderlich.
  79.147  		<usetemplate name="okbutton" yestext="OK"/>
  79.148  	</notification>
  79.149  	<notification name="RegionEntryAccessBlocked">
  79.150 @@ -2515,10 +2509,10 @@
  79.151  		</form>
  79.152  	</notification>
  79.153  	<notification name="DeleteFilteredItems">
  79.154 -		Ein Filter ist auf Ihrem Inventar aktiv und es sind nicht alle Objekte sichtbar, die Sie löschen möchten.
  79.155 -
  79.156 -Sind Sie sicher, dass Sie diese löschen möchten?
  79.157 -		<usetemplate ignoretext="Bestätigten, wenn gefilterte Objekte gelöscht werden" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
  79.158 +		Ihr Inventar wird zur Zeit gefiltert, und nicht alle Objekte, die gelöscht werden sollen, sind momentan sichtbar. 
  79.159 +
  79.160 +Möchten Sie diese Objekte wirklich löschen?
  79.161 +		<usetemplate ignoretext="Vor dem Löschen gefilterter Objekte bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
  79.162  	</notification>
  79.163  	<notification name="ConfirmUnlink">
  79.164  		Soll das ausgewählte Objekt wirklich getrennt werden?
  79.165 @@ -2595,16 +2589,16 @@
  79.166  		<usetemplate ignoretext="Bestätigen, bevor ich einen Systemordner lösche." name="okcancelignore" notext="Abbrechen" yestext="OK"/>
  79.167  	</notification>
  79.168  	<notification name="PurgeSelectedItems">
  79.169 -		[COUNT] Objekt(e) werden permanent gelöscht. Sind Sie sicher, dass Sie die ausgewählten Objekte permanent aus dem Papierkorb löschen möchten?
  79.170 +		[COUNT] Objekt(e) wird/werden dauerhaft gelöscht. Möchten Sie das/die ausgewählte(n) Objekt(e) wirklich dauerhaft aus dem Papierkorb löschen?
  79.171  		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.172  	</notification>
  79.173  	<notification name="ConfirmEmptyTrash">
  79.174 -		[COUNT] Objekt(e) werden permanent gelöscht. Sind Sie sicher, dass Sie den Inhalt des Papierkorbs permanent löschen möchten?
  79.175 +		[COUNT] Objekte und Ordner werden dauerhaft gelöscht. Möchten Sie den Inhalt Ihres Papierkorbs wirklich dauerhaft löschen?
  79.176  		<usetemplate ignoretext="Bestätigen, bevor der Ordner Papierkorb im Inventar geleert wird" name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
  79.177  	</notification>
  79.178  	<notification name="TrashIsFull">
  79.179  		Ihr Papierkorb läuft über. Dies kann zu Anmeldeproblemen führen.
  79.180 -		<usetemplate name="okcancelbuttons" notext="Papierkorb später leeren" yestext="Papierkorb überprüfen"/>
  79.181 +		<usetemplate name="okcancelbuttons" notext="Papierkorb später leeren" yestext="Papierkorb ansehen"/>
  79.182  	</notification>
  79.183  	<notification name="ConfirmClearBrowserCache">
  79.184  		Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten?
  79.185 @@ -2742,6 +2736,9 @@
  79.186  	<notification name="AddSelfFriend">
  79.187  		Obwohl Sie ein sehr netter Mensch sind, können Sie sich nicht selbst als Freund hinzufügen.
  79.188  	</notification>
  79.189 +	<notification name="AddSelfRenderExceptions">
  79.190 +		Sie können sich nicht selbst der Rendering-Ausnahmeliste hinzufügen.
  79.191 +	</notification>
  79.192  	<notification name="UploadingAuctionSnapshot">
  79.193  		In-Welt- und Website-Fotos werden hochgeladen...
  79.194  (Dauert ca. 5 Minuten.)
  79.195 @@ -2941,9 +2938,9 @@
  79.196  		Alle Objekte auf der ausgewählten Parzelle, die Einwohner &apos;[NAME]&apos; gehören, wurden an ihren Eigentümern zurückgegeben.
  79.197  	</notification>
  79.198  	<notification name="GroupObjectsReturned">
  79.199 -		Die mit der Gruppe &lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt; gemeinsam genutzten Objekte auf dieser Parzelle wurden in das Inventar ihrer Eigentümer transferiert.
  79.200 -Transferierbare übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben.
  79.201 -Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht.
  79.202 +		Die mit der Gruppe &lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt; gemeinsam verwendeten Objekte auf dieser Parzelle wurden zurück in das Inventar ihrer Eigentümer transferiert.
  79.203 +Transferierbare, an die Gruppe übertragene Objekte wurden an ihre früheren Eigentümer zurückgegeben.
  79.204 +Nicht transferierbare, an die Gruppe übertragene Objekte wurden gelöscht.
  79.205  	</notification>
  79.206  	<notification name="UnOwnedObjectsReturned">
  79.207  		Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben.
  79.208 @@ -3397,7 +3394,7 @@
  79.209  		</form>
  79.210  	</notification>
  79.211  	<notification name="ScriptDialogGroup">
  79.212 -		„&lt;nolink&gt;[TITLE]&lt;/nolink&gt;“ von &lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt;
  79.213 +		&lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt;s &quot;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&quot; 
  79.214  [MESSAGE]
  79.215  		<form name="form">
  79.216  			<button name="Client_Side_Mute" text="Blockieren"/>
  79.217 @@ -3446,7 +3443,7 @@
  79.218  	</notification>
  79.219  	<notification name="VoiceInviteGroup">
  79.220  		[NAME] ist einem Voice-Chat mit der Gruppe &lt;nolink&gt;[GROUP]&lt;/nolink&gt; beigetreten.
  79.221 -Klicken Sie auf  &apos;Akzeptieren &apos;, um dem Gespräch beizutreten, oder auf  &apos;Ablehnen &apos;, um die Einladung auszuschlagen. Klicken Sie auf Ignorieren, um diesen Anrufer zu ignorieren.
  79.222 +Klicken Sie auf „Annehmen“, um die Einladung zu akzeptieren, oder auf „Ablehnen“, um die Einladung nicht zu akzeptieren. Klicken Sie auf „Ignorieren“, um diesen Anrufer zu ignorieren.
  79.223  		<form name="form">
  79.224  			<button name="Accept" text="Akzeptieren"/>
  79.225  			<button name="Decline" text="Ablehnen"/>
  79.226 @@ -3554,6 +3551,9 @@
  79.227  	<notification name="AppearanceToXMLFailed">
  79.228  		Fehler beim Speichern des Erscheinungsbilds als XML.
  79.229  	</notification>
  79.230 +	<notification name="SnapshotToComputerFailed">
  79.231 +		Fehler beim Speichern des Bildes unter [PATH]: Zu wenig Speicherplatz auf dem Medium. [NEED_MEMORY]KB werden benötigt, es stehen jedoch nur [FREE_MEMORY]KB zur Verfügung.
  79.232 +	</notification>
  79.233  	<notification name="PresetNotSaved">
  79.234  		Fehler beim Speichern der Voreinstellung [NAME].
  79.235  	</notification>
    80.1 --- a/indra/newview/skins/default/xui/de/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
    80.2 +++ b/indra/newview/skins/default/xui/de/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
    80.3 @@ -38,7 +38,7 @@
    80.4  		<action description="„Terrain bearbeiten“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle das Terrain bearbeiten, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow edit land" value="23"/>
    80.5  		<action description="„Fliegen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle fliegen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow fly" value="24"/>
    80.6  		<action description="„Objekte erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer gruppeneigenen Parzelle Objekte erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow create" value="25"/>
    80.7 -		<action description="„Landmarke erstellen“ zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können für eine gruppeneigene Parzelle eine Landmarke erstellen, selbst wenn diese Option unter „Land-Info“ &gt; „Optionen“ deaktiviert ist." name="land allow landmark" value="26"/>
    80.8 +		<action description="Landepunkt ignorieren" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können sich direkt zu einer gruppeneigenen Parzelle teleportieren, auch wenn eine Landmarke erstellen, selbst unter Land-Info &gt; Optionen ein Landepunkt definiert ist." name="land allow direct teleport" value="26"/>
    80.9  		<action description="„Hier als Zuhause wählen“ auf Gruppenland zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können auf einer an diese Gruppe übertragenen Parzelle die Funktion „Welt“ &gt; „Landmarken“ &gt; „Hier als Zuhause wählen“ verwenden." name="land allow set home" value="28"/>
   80.10  		<action description="Veranstaltung von Events auf Gruppenland zulassen" longdescription="Mitglieder in einer Rolle mit dieser Fähigkeit können Parzellen im Gruppenbesitz als Veranstaltungsorte für Events auswählen." name="land allow host event" value="41"/>
   80.11  	</action_set>
    81.1 --- a/indra/newview/skins/default/xui/de/strings.xml	Thu Nov 30 17:05:57 2017 +0000
    81.2 +++ b/indra/newview/skins/default/xui/de/strings.xml	Thu Nov 30 17:07:57 2017 +0000
    81.3 @@ -271,8 +271,8 @@
    81.4  [TIME] Pacific Time wieder verfügbar.
    81.5  	</string>
    81.6  	<string name="LoginFailedAccountDisabled">
    81.7 -		Ihre Anfrage kann derzeit nicht bearbeitet werden.
    81.8 -Wenden Sie sich unter http://secondlife.com/support an den Second Life-Support.
    81.9 +		Ihre Anfrage kann derzeit nicht bearbeitet werden. 
   81.10 +Bitte wenden Sie sich unter http://secondlife.com/support an den Second Life-Support.
   81.11  	</string>
   81.12  	<string name="LoginFailedTransformError">
   81.13  		Nicht übereinstimmende Daten bei der Anmeldung festgestellt.
   81.14 @@ -839,17 +839,16 @@
   81.15  		Status unbekannt
   81.16  	</string>
   81.17  	<string name="AssetUploadServerUnreacheble">
   81.18 -		Dienst nicht erreichbar.
   81.19 +		Dienst nicht verfügbar.
   81.20  	</string>
   81.21  	<string name="AssetUploadServerDifficulties">
   81.22 -		Der Server hat aktuell unerwartete technische Probleme.
   81.23 +		Auf dem Server sind unerwartete Probleme aufgetreten.
   81.24  	</string>
   81.25  	<string name="AssetUploadServerUnavaliable">
   81.26 -		Dienst nicht erreichbar oder Upload-Timeout wurde erreicht.
   81.27 +		Dienst nicht verfügbar oder Zeitüberschreitung beim Upload.
   81.28  	</string>
   81.29  	<string name="AssetUploadRequestInvalid">
   81.30 -Fehler in der Upload-Anfrage. Bitte besuchen Sie
   81.31 -Error in upload request.  Please visit 
   81.32 +Fehler in der Upload-Anforderung. Bitte besuchen Sie
   81.33  http://www.firestormviewer.org/support für Hilfe zum Lösen des Problems.
   81.34  	</string>
   81.35  	<string name="texture">
   81.36 @@ -1636,6 +1635,9 @@
   81.37  	<string name="InventoryNoMatchingItems">
   81.38  		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche].
   81.39  	</string>
   81.40 +	<string name="InventoryNoMatchingRecentItems">
   81.41 +		Sie haben nicht das Richtige gefunden? [secondlife:///app/inventory/filters Filter] anzeigen.
   81.42 +	</string>
   81.43  	<string name="PlacesNoMatchingItems">
   81.44  		Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/places/[SEARCH_TERM] Suche].
   81.45  	</string>
   81.46 @@ -2416,7 +2418,7 @@
   81.47  		Immer zulässig: ([ALLOWEDAGENTS], max [MAXACCESS])
   81.48  	</string>
   81.49  	<string name="RegionInfoAllowedGroups">
   81.50 -		Immer zulässige Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS])
   81.51 +		Immer zugelassene Gruppen: ([ALLOWEDGROUPS], max [MAXACCESS])
   81.52  	</string>
   81.53  	<string name="RegionInfoEstateManagers">
   81.54  		Grundbesitzverwalter: ([ESTATEMANAGERS], max [MAXMANAGERS])
    82.1 --- a/indra/newview/skins/default/xui/en/floater_tos.xml	Thu Nov 30 17:05:57 2017 +0000
    82.2 +++ b/indra/newview/skins/default/xui/en/floater_tos.xml	Thu Nov 30 17:07:57 2017 +0000
    82.3 @@ -74,7 +74,9 @@
    82.4       name="agree_list"
    82.5       top_delta="15"
    82.6       word_wrap="true"
    82.7 -     width="552">the Terms and Conditions, Privacy Policy, and Terms of Service, including the dispute resolution requirements. 
    82.8 +     width="552"
    82.9 +     text_color="LabelTextColor"
   82.10 +     text_readonly_color="LabelDisabledColor">the Terms and Conditions, Privacy Policy, and Terms of Service, including the dispute resolution requirements. 
   82.11      </text>
   82.12      <button
   82.13       enabled="false"
    83.1 --- a/indra/newview/skins/default/xui/en/notifications.xml	Thu Nov 30 17:05:57 2017 +0000
    83.2 +++ b/indra/newview/skins/default/xui/en/notifications.xml	Thu Nov 30 17:07:57 2017 +0000
    83.3 @@ -4107,7 +4107,8 @@
    83.4    <notification
    83.5     icon="alertmodal.tga"
    83.6     name="UpdaterServiceNotRunning"
    83.7 -   type="alertmodal">
    83.8 +   type="alertmodal"
    83.9 +   force_urls_external="true">
   83.10  There is a required update for your Second Life Installation.
   83.11  
   83.12  You may download this update from http://www.secondlife.com/downloads
   83.13 @@ -6520,7 +6521,7 @@
   83.14     icon="alertmodal.tga"
   83.15     name="ConfirmEmptyTrash"
   83.16     type="alertmodal">
   83.17 -[COUNT] items will be permanently deleted. Are you sure you want to permanently delete the contents of your Trash?
   83.18 +[COUNT] items and folders will be permanently deleted. Are you sure you want to permanently delete the contents of your Trash?
   83.19      <tag>confirm</tag>
   83.20      <usetemplate
   83.21       name="okcancelbuttons"
    84.1 --- a/indra/newview/skins/default/xui/en/strings.xml	Thu Nov 30 17:05:57 2017 +0000
    84.2 +++ b/indra/newview/skins/default/xui/en/strings.xml	Thu Nov 30 17:07:57 2017 +0000
    84.3 @@ -733,6 +733,7 @@
    84.4  
    84.5  	<!-- inventory -->
    84.6  	<string name="InventoryNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].</string>
    84.7 +	<string name="InventoryNoMatchingRecentItems">Didn't find what you're looking for? Show [secondlife:///app/inventory/filters Filters].</string>
    84.8  	<string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string>
    84.9  	<string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
   84.10  	<string name="MarketplaceNoMatchingItems">No items found. Check the spelling of your search string and try again.</string>
    85.1 --- a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
    85.2 +++ b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
    85.3 @@ -3,6 +3,9 @@
    85.4  	<floater.string name="not_found">
    85.5  		No se ha encontrado &apos;[TEXT]&apos;
    85.6  	</floater.string>
    85.7 +	<floater.string name="not_found_text">
    85.8 +		No se ha encontrado el residente.
    85.9 +	</floater.string>
   85.10  	<floater.string name="no_one_near">
   85.11  		No hay nadie cerca
   85.12  	</floater.string>
    86.1 --- a/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
    86.2 +++ b/indra/newview/skins/default/xui/es/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
    86.3 @@ -7,5 +7,6 @@
    86.4  	<name_list name="render_settings_list">
    86.5  		<name_list.columns label="Nombre" name="name"/>
    86.6  		<name_list.columns label="Configuración de renderizado" name="setting"/>
    86.7 +		<name_list.columns label="Fecha de ingreso" name="timestamp"/>
    86.8  	</name_list>
    86.9  </floater>
    87.1 --- a/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
    87.2 +++ b/indra/newview/skins/default/xui/es/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
    87.3 @@ -16,6 +16,8 @@
    87.4  	<button label="Todos" label_selected="Todo" name="All"/>
    87.5  	<button label="Ninguno" label_selected="Nada" name="None"/>
    87.6  	<check_box label="Mostrar carpetas siempre" name="check_show_empty"/>
    87.7 +	<check_box label="Creado por mí" name="check_created_by_me"/>
    87.8 +	<check_box label="Creado por otros" name="check_created_by_others"/>
    87.9  	<check_box bottom_delta="-36" label="Desde el fin de sesión" name="check_since_logoff"/>
   87.10  	<text name="- OR -">
   87.11  		- o -
    88.1 --- a/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
    88.2 +++ b/indra/newview/skins/default/xui/es/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
    88.3 @@ -1,5 +1,5 @@
    88.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    88.5 -<floater name="floater_pathfinding_linksets" title="Linksets de pathfinding">
    88.6 +<floater name="floater_pathfinding_linksets" title="OBJETOS DE LA REGIÓN">
    88.7  	<floater.string name="messaging_get_inprogress">
    88.8  		Consultando los linksets de pathfinding...
    88.9  	</floater.string>
   88.10 @@ -16,7 +16,7 @@
   88.11  		No hay linksets de pathfinding.
   88.12  	</floater.string>
   88.13  	<floater.string name="messaging_complete_available">
   88.14 -		[NUM_SELECTED] linksets seleccionados de [NUM_TOTAL].
   88.15 +		[NUM_SELECTED] seleccionados de [NUM_TOTAL].
   88.16  	</floater.string>
   88.17  	<floater.string name="messaging_not_enabled">
   88.18  		En esta región no está permitido el pathfinding.
   88.19 @@ -106,7 +106,7 @@
   88.20  			<scroll_list.columns label="Con scripts" name="scripted"/>
   88.21  			<scroll_list.columns label="Impacto" name="land_impact"/>
   88.22  			<scroll_list.columns label="Distancia" name="dist_from_you"/>
   88.23 -			<scroll_list.columns label="Utilización de linkset" name="linkset_use"/>
   88.24 +			<scroll_list.columns label="Uso de Pathfinding" name="linkset_use"/>
   88.25  			<scroll_list.columns label="A %" name="a_percent"/>
   88.26  			<scroll_list.columns label="B %" name="b_percent"/>
   88.27  			<scroll_list.columns label="C %" name="c_percent"/>
   88.28 @@ -121,7 +121,7 @@
   88.29  	</panel>
   88.30  	<panel name="pathfinding_linksets_actions">
   88.31  		<text name="linksets_actions_label" width="650">
   88.32 -			Acciones sobre los linksets seleccionados (Si se elimina un linkset del mundo, se pueden perder sus atributos):
   88.33 +			Acciones en los elementos seleccionados
   88.34  		</text>
   88.35  		<check_box label="Mostrar baliza" name="show_beacon"/>
   88.36  		<button label="Tomar" name="take_objects"/>
   88.37 @@ -132,7 +132,7 @@
   88.38  	</panel>
   88.39  	<panel name="pathfinding_linksets_attributes">
   88.40  		<text name="linksets_attributes_label">
   88.41 -			Edita los atributos de los linksets seleccionados y pulsa el botón para aplicar los cambios
   88.42 +			Modificar atributos de pathfinding
   88.43  		</text>
   88.44  		<text name="walkability_coefficients_label">
   88.45  			Transitabilidad:
    89.1 --- a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
    89.2 +++ b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
    89.3 @@ -1,8 +1,14 @@
    89.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    89.5 -<menu name="Avatar Icon Menu">
    89.6 +<toggleable_menu name="Avatar Icon Menu">
    89.7  	<menu_item_call label="Ver el perfil" name="Show Profile"/>
    89.8  	<menu_item_call label="Enviar un MI..." name="Send IM"/>
    89.9  	<menu_item_call label="Petición de teleporte" name="Request Teleport"/>
   89.10  	<menu_item_call label="Añadir como amigo..." name="Add Friend"/>
   89.11  	<menu_item_call label="Quitar de los amigos..." name="Remove Friend"/>
   89.12 -</menu>
   89.13 +	<context_menu label="Opciones del moderador" name="Moderator Options">
   89.14 +		<menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/>
   89.15 +		<menu_item_call label="Silenciar a este participante" name="ModerateVoiceMuteSelected"/>
   89.16 +		<menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/>
   89.17 +	</context_menu>
   89.18 +	<menu_item_call label="Expulsar a miembro" name="BanMember"/>
   89.19 +</toggleable_menu>
    90.1 --- a/indra/newview/skins/default/xui/es/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
    90.2 +++ b/indra/newview/skins/default/xui/es/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
    90.3 @@ -2,6 +2,7 @@
    90.4  <menu_bar name="Login Menu">
    90.5  	<menu label="Yo" name="File">
    90.6  		<menu_item_call label="Preferencias..." name="Preferences..."/>
    90.7 +		<menu_item_call label="Cerrar la ventana" name="Close Window"/>
    90.8  		<menu_item_check label="Mostrar selector del Grid" name="Show Grid Picker"/>
    90.9  		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
   90.10  	</menu>
    91.1 --- a/indra/newview/skins/default/xui/es/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
    91.2 +++ b/indra/newview/skins/default/xui/es/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
    91.3 @@ -38,7 +38,7 @@
    91.4  		<action description="Permitir siempre &apos;Editar el terreno&apos;" longdescription="Quien tenga un rol con esta capacidad puede editar el terreno de una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow edit land" value="23"/>
    91.5  		<action description="Permitir siempre &apos;Volar&apos;" longdescription="Quien tenga un rol con esta capacidad puede volar sobre una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow fly" value="24"/>
    91.6  		<action description="Permitir siempre &apos;Crear objetos&apos;" longdescription="Quien tenga un rol con esta capacidad puede crear objetos en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow create" value="25"/>
    91.7 -		<action description="Permitir siempre &apos;Crear hitos&apos;" longdescription="Quien tenga un rol con esta capacidad puede crear un hito en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno &gt; pestaña Opciones." name="land allow landmark" value="26"/>
    91.8 +		<action description="Ignorar punto de aterrizaje" longdescription="Los miembros en un rol con esta capacidad pueden teletransportarse directamente a una parcela que pertenece a un grupo, incluso si un punto de aterrizaje fue establecido en la pestaña Acerca del terreno &gt; Opciones." name="land allow direct teleport" value="26"/>
    91.9  		<action description="Permitir &apos;Fijar mi Base aquí&apos; en el terreno del grupo" longdescription="Los miembros que tengan un rol con esta capacidad pueden usar el menú Mundo &gt; Hitos &gt; Fijar aquí mi Base en una parcela transferida al grupo." name="land allow set home" value="28"/>
   91.10  		<action description="Permitir &quot;Organización de eventos&quot; en un terreno de grupo" longdescription="Los miembros con un rol que tenga esta capacidad pueden seleccionar parcelas propiedad de un grupo como sede de la organización de eventos." name="land allow host event" value="41"/>
   91.11  	</action_set>
    92.1 --- a/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
    92.2 +++ b/indra/newview/skins/default/xui/fr/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
    92.3 @@ -7,5 +7,6 @@
    92.4  	<name_list name="render_settings_list">
    92.5  		<name_list.columns label="Nom" name="name"/>
    92.6  		<name_list.columns label="Paramètre de rendu" name="setting"/>
    92.7 +		<name_list.columns label="Date ajoutée" name="timestamp"/>
    92.8  	</name_list>
    92.9  </floater>
    93.1 --- a/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
    93.2 +++ b/indra/newview/skins/default/xui/fr/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
    93.3 @@ -1,5 +1,5 @@
    93.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    93.5 -<floater name="floater_pathfinding_linksets" title="Groupes de liens de recherche de chemin">
    93.6 +<floater name="floater_pathfinding_linksets" title="OBJETS DES RÉGIONS">
    93.7  	<floater.string name="messaging_get_inprogress">
    93.8  		Requête relative aux groupes de liens de recherche de chemin en cours...
    93.9  	</floater.string>
   93.10 @@ -16,7 +16,7 @@
   93.11  		Aucun groupe de liens de recherche de chemin.
   93.12  	</floater.string>
   93.13  	<floater.string name="messaging_complete_available">
   93.14 -		[NUM_SELECTED] groupes de liens sélectionnés sur [NUM_TOTAL].
   93.15 +		[NUM_SELECTED] sélectionnés à partir de [NUM_TOTAL].
   93.16  	</floater.string>
   93.17  	<floater.string name="messaging_not_enabled">
   93.18  		La recherche de chemin n&apos;a pas été activée pour cette région.
   93.19 @@ -118,7 +118,7 @@
   93.20  			<scroll_list.columns label="Scripté" name="scripted"/>
   93.21  			<scroll_list.columns label="Impact" name="land_impact"/>
   93.22  			<scroll_list.columns label="Distance" name="dist_from_you"/>
   93.23 -			<scroll_list.columns label="Usage du groupe de liens" name="linkset_use"/>
   93.24 +			<scroll_list.columns label="Utiliser la recherche de chemin" name="linkset_use"/>
   93.25  			<scroll_list.columns label="% A" name="a_percent"/>
   93.26  			<scroll_list.columns label="% B" name="b_percent"/>
   93.27  			<scroll_list.columns label="% C" name="c_percent"/>
   93.28 @@ -133,7 +133,7 @@
   93.29  	</panel>
   93.30  	<panel name="pathfinding_linksets_actions">
   93.31  		<text name="linksets_actions_label">
   93.32 -			Actions sur les groupes de liens sélectionnés (si un groupe de liens est supprimé du monde, ses attributs risquent d’être perdus) :
   93.33 +			Actions sur les objets sélectionnés
   93.34  		</text>
   93.35  		<check_box label="Afficher la balise" name="show_beacon"/>
   93.36  		<button label="Prendre" name="take_objects"/>
   93.37 @@ -144,7 +144,7 @@
   93.38  	</panel>
   93.39  	<panel name="pathfinding_linksets_attributes">
   93.40  		<text name="linksets_attributes_label">
   93.41 -			Modifier les attributs des groupes de liens sélectionnés et appuyer sur le bouton pour appliquer les modifications
   93.42 +			Modifier les attributs de recherche de chemin
   93.43  		</text>
   93.44  		<text name="walkability_coefficients_label">
   93.45  			Marche possible :
    94.1 --- a/indra/newview/skins/default/xui/fr/strings.xml	Thu Nov 30 17:05:57 2017 +0000
    94.2 +++ b/indra/newview/skins/default/xui/fr/strings.xml	Thu Nov 30 17:07:57 2017 +0000
    94.3 @@ -238,9 +238,8 @@
    94.4  [TIME], heure du Pacifique.
    94.5  	</string>
    94.6  	<string name="LoginFailedAccountDisabled">
    94.7 -		Nous n&apos;avons pas réussi à traiter votre demande.
    94.8 -Pour obtenir de l&apos;aide, veuillez contacter l&apos;Assistance Second Life à la page suivante : http://secondlife.com/support.
    94.9 -Si vous ne parvenez pas à changer de mot de passe, veuillez appeler le (866) 476-9763.
   94.10 +		Impossible de traiter votre demande à l&apos;heure actuelle. 
   94.11 +Pour obtenir de l&apos;aide, veuillez contacter l&apos;Assistance Second Life à la page suivante : http://support.secondlife.com.
   94.12  	</string>
   94.13  	<string name="LoginFailedTransformError">
   94.14  		Incohérence des données lors de la connexion.
   94.15 @@ -683,6 +682,19 @@
   94.16  	<string name="AssetErrorUnknownStatus">
   94.17  		Statut inconnu
   94.18  	</string>
   94.19 +	<string name="AssetUploadServerUnreacheble">
   94.20 +		Service inaccessible.
   94.21 +	</string>
   94.22 +	<string name="AssetUploadServerDifficulties">
   94.23 +		Le serveur rencontres des difficultés imprévues.
   94.24 +	</string>
   94.25 +	<string name="AssetUploadServerUnavaliable">
   94.26 +		Services non disponible ou la durée du chargement est dépassée.
   94.27 +	</string>
   94.28 +	<string name="AssetUploadRequestInvalid">
   94.29 +		Erreur dans la demande de chargement. Veuillez consulter le site : 
   94.30 +http://secondlife.com/support pour vous aider à résoudre ce problème.
   94.31 +	</string>
   94.32  	<string name="texture">
   94.33  		texture
   94.34  	</string>
   94.35 @@ -2135,10 +2147,19 @@
   94.36  		tous les domaines que vous gérez pour [OWNER]
   94.37  	</string>
   94.38  	<string name="RegionInfoAllowedResidents">
   94.39 -		Résidents autorisés : ([ALLOWEDAGENTS], max. [MAXACCESS])
   94.40 +		Toujours autorisé : ([ALLOWEDAGENTS], max [MAXACCESS])
   94.41  	</string>
   94.42  	<string name="RegionInfoAllowedGroups">
   94.43 -		Groupes autorisés : ([ALLOWEDGROUPS], max. [MAXACCESS])
   94.44 +		Groupes toujours autorisés : [ALLOWEDGROUPS], max [MAXACCESS])
   94.45 +	</string>
   94.46 +	<string name="RegionInfoBannedResidents">
   94.47 +		Toujours interdits : ([BANNEDAGENTS], max. [MAXBANNED])
   94.48 +	</string>
   94.49 +	<string name="RegionInfoListTypeAllowedAgents">
   94.50 +		Toujours autorisé
   94.51 +	</string>
   94.52 +	<string name="RegionInfoListTypeBannedAgents">
   94.53 +		Toujours interdit
   94.54  	</string>
   94.55  	<string name="ScriptLimitsParcelScriptMemory">
   94.56  		Mémoire des scripts de parcelles
    95.1 --- a/indra/newview/skins/default/xui/it/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
    95.2 +++ b/indra/newview/skins/default/xui/it/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
    95.3 @@ -3,6 +3,9 @@
    95.4  	<floater.string name="not_found">
    95.5  		&apos;[TEXT]&apos; non trovato
    95.6  	</floater.string>
    95.7 +	<floater.string name="not_found_text">
    95.8 +		Residente non trovato
    95.9 +	</floater.string>
   95.10  	<floater.string name="no_one_near">
   95.11  		Nessuno vicino
   95.12  	</floater.string>
    96.1 --- a/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
    96.2 +++ b/indra/newview/skins/default/xui/it/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
    96.3 @@ -7,5 +7,6 @@
    96.4  	<name_list name="render_settings_list">
    96.5  		<name_list.columns label="Nome" name="name"/>
    96.6  		<name_list.columns label="Impostazione di rendering" name="setting"/>
    96.7 +		<name_list.columns label="Data aggiunta" name="timestamp"/>
    96.8  	</name_list>
    96.9  </floater>
    97.1 --- a/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
    97.2 +++ b/indra/newview/skins/default/xui/it/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
    97.3 @@ -15,6 +15,8 @@
    97.4  	<button label="Tutto" label_selected="Tutto" name="All"/>
    97.5  	<button label="Nulla" label_selected="Nulla" name="None"/>
    97.6  	<check_box label="Mostra sempre le cartelle" name="check_show_empty"/>
    97.7 +	<check_box label="Creato da me" name="check_created_by_me"/>
    97.8 +	<check_box label="Creato da altri" name="check_created_by_others"/>
    97.9  	<check_box label="Dall&apos;ultima sconnessione" name="check_since_logoff"/>
   97.10  	<text name="- OR -">
   97.11  		- Oppure -
    98.1 --- a/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
    98.2 +++ b/indra/newview/skins/default/xui/it/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
    98.3 @@ -1,5 +1,5 @@
    98.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    98.5 -<floater name="floater_pathfinding_linksets" title="Set collegati pathfinding">
    98.6 +<floater name="floater_pathfinding_linksets" title="OGGETTI REGIONE">
    98.7  	<floater.string name="messaging_get_inprogress">
    98.8  		Ricerca set collegati pathfinding in corso...
    98.9  	</floater.string>
   98.10 @@ -16,7 +16,7 @@
   98.11  		Nessun set collegato con pathfinding.
   98.12  	</floater.string>
   98.13  	<floater.string name="messaging_complete_available">
   98.14 -		[NUM_SELECTED] set collegati selezionati su [NUM_TOTAL].
   98.15 +		[NUM_SELECTED] selezionati su [NUM_TOTAL].
   98.16  	</floater.string>
   98.17  	<floater.string name="messaging_not_enabled">
   98.18  		In questa regione non è attivata la funzione pathfinding
   98.19 @@ -118,7 +118,7 @@
   98.20  			<scroll_list.columns label="Scriptato" name="scripted"/>
   98.21  			<scroll_list.columns label="Impatto" name="land_impact"/>
   98.22  			<scroll_list.columns label="Distanza" name="dist_from_you"/>
   98.23 -			<scroll_list.columns label="Uso set collegati" name="linkset_use"/>
   98.24 +			<scroll_list.columns label="Uso del pathfinding" name="linkset_use"/>
   98.25  			<scroll_list.columns label="A %" name="a_percent"/>
   98.26  			<scroll_list.columns label="B %" name="b_percent"/>
   98.27  			<scroll_list.columns label="C %" name="c_percent"/>
   98.28 @@ -133,7 +133,7 @@
   98.29  	</panel>
   98.30  	<panel name="pathfinding_linksets_actions">
   98.31  		<text name="linksets_actions_label">
   98.32 -			Azioni sui set collegati selezionati (se si rimuove un set collegato dal mondo, si potrebbero perdere i relativi attributi):
   98.33 +			Azioni sugli oggetti selezionati
   98.34  		</text>
   98.35  		<check_box label="Mostra marcatore" name="show_beacon"/>
   98.36  		<button label="Prendi" name="take_objects"/>
   98.37 @@ -144,7 +144,7 @@
   98.38  	</panel>
   98.39  	<panel name="pathfinding_linksets_attributes">
   98.40  		<text name="linksets_attributes_label">
   98.41 -			Modifica gli attributi dei set collegati selezionati e premi il pulsante per applicare le modifiche
   98.42 +			Modifica attributi pathfinding:
   98.43  		</text>
   98.44  		<text name="walkability_coefficients_label">
   98.45  			Camminabilità:
    99.1 --- a/indra/newview/skins/default/xui/it/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
    99.2 +++ b/indra/newview/skins/default/xui/it/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
    99.3 @@ -1,8 +1,14 @@
    99.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    99.5 -<menu name="Avatar Icon Menu">
    99.6 +<toggleable_menu name="Avatar Icon Menu">
    99.7  	<menu_item_call label="Vedi profilo" name="Show Profile"/>
    99.8  	<menu_item_call label="Manda IM..." name="Send IM"/>
    99.9  	<menu_item_call label="Richiedi teleport" name="Request Teleport"/>
   99.10  	<menu_item_call label="Aggiungi come amico..." name="Add Friend"/>
   99.11  	<menu_item_call label="Togli amicizia..." name="Remove Friend"/>
   99.12 -</menu>
   99.13 +	<context_menu label="Opzioni moderatore" name="Moderator Options">
   99.14 +		<menu_item_check label="Consenti chat di testo" name="AllowTextChat"/>
   99.15 +		<menu_item_call label="Disattiva audio di questo participante" name="ModerateVoiceMuteSelected"/>
   99.16 +		<menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/>
   99.17 +	</context_menu>
   99.18 +	<menu_item_call label="Espelli membro" name="BanMember"/>
   99.19 +</toggleable_menu>
   100.1 --- a/indra/newview/skins/default/xui/it/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
   100.2 +++ b/indra/newview/skins/default/xui/it/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
   100.3 @@ -2,6 +2,7 @@
   100.4  <menu_bar name="Login Menu">
   100.5  	<menu label="Io" name="File">
   100.6  		<menu_item_call label="Preferenze..." name="Preferences..."/>
   100.7 +		<menu_item_call label="Chiudi la finestra" name="Close Window"/>
   100.8  		<menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
   100.9  		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
  100.10  	</menu>
   101.1 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml	Thu Nov 30 17:05:57 2017 +0000
   101.2 +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml	Thu Nov 30 17:07:57 2017 +0000
   101.3 @@ -162,7 +162,7 @@
   101.4  			<menu_item_call label="Includi parte o faccia successiva" name="Include Next Part or Face"/>
   101.5  			<menu_item_call label="Includi parte o faccia precedente" name="Include Previous Part or Face"/>
   101.6  		</menu>
   101.7 -		<menu_item_call label="Set collegati..." name="pathfinding_linkset_menu_item"/>
   101.8 +		<menu_item_call label="Oggetti regione" name="pathfinding_linkset_menu_item"/>
   101.9  		<menu_item_call label="Ingrandisci selezione" name="Focus on Selection"/>
  101.10  		<menu_item_call label="Zoom sulla selezione" name="Zoom to Selection"/>
  101.11  		<menu label="Oggetto" name="Object">
  101.12 @@ -184,7 +184,7 @@
  101.13  			<menu_item_call label="Script Info (N.Script)" name="Script Info"/>
  101.14  		</menu>
  101.15  		<menu label="Pathfinding" name="Pathfinding">
  101.16 -			<menu_item_call label="Set collegati..." name="pathfinding_linksets_menu_item"/>
  101.17 +			<menu_item_call label="Oggetti regione" name="pathfinding_linksets_menu_item"/>
  101.18  			<menu_item_call label="Personaggi..." name="pathfinding_characters_menu_item"/>
  101.19  			<menu_item_call label="Visualizza / test..." name="pathfinding_console_menu_item"/>
  101.20  			<menu_item_call label="Rebake regione" name="pathfinding_rebake_navmesh_item"/>
   102.1 --- a/indra/newview/skins/default/xui/it/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   102.2 +++ b/indra/newview/skins/default/xui/it/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   102.3 @@ -15,54 +15,36 @@
   102.4  	<text name="estate_owner">
   102.5  		(sconosciuto)
   102.6  	</text>
   102.7 -	<check_box label="Usa orario globale" name="use_global_time_check"/>
   102.8 -	<button label="?" name="use_global_time_help"/>
   102.9 -	<check_box label="Sole fisso" name="fixed_sun_check"/>
  102.10 -	<button label="?" name="fixed_sun_help"/>
  102.11 -	<slider label="Fase" name="sun_hour_slider"/>
  102.12 -	<check_box label="Permetti accesso pubblico" name="externally_visible_check"/>
  102.13 -	<button label="?" name="externally_visible_help"/>
  102.14 -	<text name="Only Allow">
  102.15 -		Consenti l&apos;accesso solo ai Residenti che:
  102.16 -	</text>
  102.17 -	<check_box label="Hanno memorizzato le informazioni per l&apos;addebito" name="limit_payment" tool_tip="Per poter visitare questa proprietà immobiliare i Residenti devono aver fornito informazioni di pagamento a Linden Lab.  Vedi [SUPPORT_SITE] per maggiori informazioni."/>
  102.18 -	<check_box label="Hanno almeno 18 anni" name="limit_age_verified" tool_tip="Per poter visitare questa proprietà immobiliare i Residenti devono avere almeno 18 anni. Vedi [SUPPORT_SITE] per maggiori informazioni."/>
  102.19 +	<radio_group name="externally_visible_radio">
  102.20 +		<radio_item label="Consenti solo residenti e gruppi elencati qui sotto" name="estate_restricted_access"/>
  102.21 +		<radio_item label="Chiunque può visitare" name="estate_public_access"/>
  102.22 +	</radio_group>
  102.23 +	<check_box label="È necessario avere più di 18 anni" name="limit_age_verified" tool_tip="Per poter visitare questa proprietà immobiliare i Residenti devono avere almeno 18 anni. Vedi [SUPPORT_SITE] per maggiori informazioni."/>
  102.24 +	<check_box label="È necessario aver registrato le informazioni di pagamento" name="limit_payment" tool_tip="Per poter visitare questa proprietà immobiliare i Residenti devono aver fornito informazioni di pagamento a Linden Lab.  Vedi [SUPPORT_SITE] per maggiori informazioni."/>
  102.25 +	<check_box label="I proprietari dei lotti possono essere più restrittivi" name="parcel_access_override"/>
  102.26  	<check_box label="Permetti la chat voice" name="voice_chat_check"/>
  102.27 -	<button label="?" name="voice_chat_help"/>
  102.28  	<check_box label="Permetti teleport diretto" name="allow_direct_teleport"/>
  102.29 -	<button label="?" name="allow_direct_teleport_help"/>
  102.30 -	<text name="abuse_email_text" width="230">
  102.31 -		Indirizzo email per la denuncia di abuso:
  102.32 -	</text>
  102.33 -	<string name="email_unsupported">
  102.34 -		Tipologia non supportata
  102.35 -	</string>
  102.36 -	<button label="?" name="abuse_email_address_help"/>
  102.37  	<button label="Applica" name="apply_btn"/>
  102.38 -	<button font="SansSerifSmall" label="Espelli residente dalla proprietà..." name="kick_user_from_estate_btn"/>
  102.39 -	<button font="SansSerifSmall" label="Manda un messaggio di le proprietà..." name="message_estate_btn"/>
  102.40  	<text name="estate_manager_label">
  102.41  		Manager delle proprietà:
  102.42  	</text>
  102.43 -	<button label="?" name="estate_manager_help"/>
  102.44 +	<text name="allow_resident_label">
  102.45 +		Sempre consentito:
  102.46 +	</text>
  102.47 +	<button label="Aggiungi..." name="add_estate_manager_btn"/>
  102.48  	<button label="Rimuovi..." name="remove_estate_manager_btn"/>
  102.49 -	<button label="Aggiungi..." name="add_estate_manager_btn"/>
  102.50 -	<text name="allow_resident_label">
  102.51 -		Residenti autorizzati:
  102.52 +	<button label="Aggiungi..." name="add_allowed_avatar_btn"/>
  102.53 +	<button label="Rimuovi..." name="remove_allowed_avatar_btn"/>
  102.54 +	<text name="allow_group_label">
  102.55 +		Gruppi sempre consentiti:
  102.56  	</text>
  102.57 -	<button label="?" name="allow_resident_help"/>
  102.58 -	<button label="Rimuovi..." name="remove_allowed_avatar_btn"/>
  102.59 -	<button label="Aggiungi..." name="add_allowed_avatar_btn"/>
  102.60 -	<text name="allow_group_label">
  102.61 -		Gruppi autorizzati:
  102.62 +	<text name="ban_resident_label">
  102.63 +		Sempre escluso:
  102.64  	</text>
  102.65 -	<button label="?" name="allow_group_help"/>
  102.66 +	<button label="Aggiungi..." name="add_allowed_group_btn"/>
  102.67  	<button label="Rimuovi..." name="remove_allowed_group_btn"/>
  102.68 -	<button label="Aggiungi..." name="add_allowed_group_btn"/>
  102.69 -	<text name="ban_resident_label">
  102.70 -		Residenti bloccati:
  102.71 -	</text>
  102.72 -	<button label="?" name="ban_resident_help"/>
  102.73 +	<button label="Aggiungi..." name="add_banned_avatar_btn"/>
  102.74  	<button label="Rimuovi..." name="remove_banned_avatar_btn"/>
  102.75 -	<button label="Aggiungi..." name="add_banned_avatar_btn"/>
  102.76 +	<button font="SansSerifSmall" label="Manda un messaggio di le proprietà..." name="message_estate_btn"/>
  102.77 +	<button font="SansSerifSmall" label="Espelli residente dalla proprietà..." name="kick_user_from_estate_btn"/>
  102.78  </panel>
   103.1 --- a/indra/newview/skins/default/xui/it/panel_tools_texture.xml	Thu Nov 30 17:05:57 2017 +0000
   103.2 +++ b/indra/newview/skins/default/xui/it/panel_tools_texture.xml	Thu Nov 30 17:07:57 2017 +0000
   103.3 @@ -26,6 +26,7 @@
   103.4  		<radio_item label="Irregolarità (normale)" name="Bumpiness (normal)" value="1"/>
   103.5  		<radio_item label="Lucentezza (speculare)" name="Shininess (specular)" value="2"/>
   103.6  	</radio_group>
   103.7 +	<check_box initial_value="false" label="Blocca ripetizione" name="checkbox_sync_settings" tool_tip="Regola tutte le ripetizioni delle mappe contemporaneamente"/>
   103.8  	<texture_picker label="Texture" name="texture control" tool_tip="Clicca per scegliere una fotografia"/>
   103.9  	<text name="label alphamode">
  103.10  		Modalità Alfa
   104.1 --- a/indra/newview/skins/default/xui/it/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
   104.2 +++ b/indra/newview/skins/default/xui/it/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
   104.3 @@ -38,7 +38,7 @@
   104.4  		<action description="Consenti sempre la modifica del terreno" longdescription="I membri con questo ruolo e abilità possono modificare il terreno appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow edit land" value="23"/>
   104.5  		<action description="Consenti sempre il volo" longdescription=" I membri con questo ruolo e abilità possono volare in un terreno appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow fly" value="24"/>
   104.6  		<action description="Consenti sempre la creazione di oggetti" longdescription="I membri con questo ruolo e abilità possono creare oggetti in un lotto appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow create" value="25"/>
   104.7 -		<action description="Consenti sempre la creazione di punti di riferimento" longdescription="I membri con questo ruolo e abilità possono creare punti di riferimento in un lotto appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow landmark" value="26"/>
   104.8 +		<action description="Ignora punto di atterraggio" longdescription="I membri di un ruolo con questa abilità possono teletrasportarsi  direttamente in un lotto di proprietà di un gruppo, anche se il punto di atterraggio è stabilito in Informazioni sul terreno &gt; Opzioni." name="land allow direct teleport" value="26"/>
   104.9  		<action description="Consenti la funzione &apos;Imposta come Casa mia&apos; in un lotto di gruppo" longdescription="I membri in un ruolo con questa Abilità possono usare il menu Mondo &gt; Punti di riferimento &gt; Imposta come Casa su un lotto ceduto a questo gruppo." name="land allow set home" value="28"/>
  104.10  		<action description="Consentire &apos;Ospitare un evento&apos; su lotti di gruppo" longdescription="Membri in un ruolo con questa Abilità possono selezionare lotti posseduti da un gruppo come sedi in cui ospitare un evento." name="land allow host event" value="41"/>
  104.11  	</action_set>
   105.1 --- a/indra/newview/skins/default/xui/it/strings.xml	Thu Nov 30 17:05:57 2017 +0000
   105.2 +++ b/indra/newview/skins/default/xui/it/strings.xml	Thu Nov 30 17:07:57 2017 +0000
   105.3 @@ -234,9 +234,8 @@
   105.4  [TIME] fuso orario del Pacifico.
   105.5  	</string>
   105.6  	<string name="LoginFailedAccountDisabled">
   105.7 -		Non siamo attualmente in grado di completare la tua richiesta.
   105.8 -Contatta l&apos;assistenza Second Life alla pagina http://secondlife.com/support.
   105.9 -Se non sei in grado di cambiare la password, chiama (866) 476-9763.
  105.10 +		Non siamo attualmente in grado di completare la tua richiesta. 
  105.11 +Contatta l&apos;assistenza Second Life alla pagina http://support.secondlife.com.
  105.12  	</string>
  105.13  	<string name="LoginFailedTransformError">
  105.14  		Dati incompatibili rilevati durante l&apos;accesso.
  105.15 @@ -670,6 +669,19 @@
  105.16  	<string name="AssetErrorUnknownStatus">
  105.17  		Stato sconosciuto
  105.18  	</string>
  105.19 +	<string name="AssetUploadServerUnreacheble">
  105.20 +		Servizio non raggiungibile.
  105.21 +	</string>
  105.22 +	<string name="AssetUploadServerDifficulties">
  105.23 +		Il servizio sta riscontrando difficoltà inaspettate.
  105.24 +	</string>
  105.25 +	<string name="AssetUploadServerUnavaliable">
  105.26 +		Servizio non disponibile o limite di tempo per il caricamento raggiunto.
  105.27 +	</string>
  105.28 +	<string name="AssetUploadRequestInvalid">
  105.29 +		Errore nella richiesta di caricamento. Vai alla pagina 
  105.30 +http://secondlife.com/support per risolvere il problema.
  105.31 +	</string>
  105.32  	<string name="texture">
  105.33  		texture
  105.34  	</string>
  105.35 @@ -2147,10 +2159,19 @@
  105.36  		tutte le proprietà immobiliari che gestisci per conto di [OWNER]
  105.37  	</string>
  105.38  	<string name="RegionInfoAllowedResidents">
  105.39 -		Residenti consentiti: ([ALLOWEDAGENTS], massimo [MAXACCESS])
  105.40 +		Sempre consentiti: ([ALLOWEDAGENTS], max [MAXACCESS])
  105.41  	</string>
  105.42  	<string name="RegionInfoAllowedGroups">
  105.43 -		Gruppi ammessi: ([ALLOWEDGROUPS], massimo [MAXACCESS])
  105.44 +		Gruppi sempre consentiti: ([ALLOWEDGROUPS], max [MAXACCESS])
  105.45 +	</string>
  105.46 +	<string name="RegionInfoBannedResidents">
  105.47 +		Sempre esclusi: ([BANNEDAGENTS], max [MAXBANNED])
  105.48 +	</string>
  105.49 +	<string name="RegionInfoListTypeAllowedAgents">
  105.50 +		Sempre consentiti:
  105.51 +	</string>
  105.52 +	<string name="RegionInfoListTypeBannedAgents">
  105.53 +		Sempre esclusi:
  105.54  	</string>
  105.55  	<string name="ScriptLimitsParcelScriptMemory">
  105.56  		Memoria dello script del lotto
   106.1 --- a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
   106.2 +++ b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
   106.3 @@ -3,6 +3,9 @@
   106.4  	<floater.string name="not_found">
   106.5  		「[TEXT]」は見つかりませんでした
   106.6  	</floater.string>
   106.7 +	<floater.string name="not_found_text">
   106.8 +		住人が見つかりませんでした。
   106.9 +	</floater.string>
  106.10  	<floater.string name="no_one_near">
  106.11  		近くに誰もいません
  106.12  	</floater.string>
   107.1 --- a/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
   107.2 +++ b/indra/newview/skins/default/xui/ja/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
   107.3 @@ -7,5 +7,6 @@
   107.4  	<name_list name="render_settings_list">
   107.5  		<name_list.columns label="名前" name="name"/>
   107.6  		<name_list.columns label="描画設定" name="setting"/>
   107.7 +		<name_list.columns label="日付を追加" name="timestamp"/>
   107.8  	</name_list>
   107.9  </floater>
   108.1 --- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
   108.2 +++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
   108.3 @@ -15,6 +15,8 @@
   108.4  	<button label="すべて" label_selected="すべて" name="All"/>
   108.5  	<button label="なし" label_selected="なし" name="None"/>
   108.6  	<check_box label="常にフォルダを表示" name="check_show_empty"/>
   108.7 +	<check_box label="自作" name="check_created_by_me"/>
   108.8 +	<check_box label="他のユーザー作成" name="check_created_by_others"/>
   108.9  	<check_box label="ログオフ以降" name="check_since_logoff"/>
  108.10  	<text name="- OR -">
  108.11  		-または-
   109.1 --- a/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
   109.2 +++ b/indra/newview/skins/default/xui/ja/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
   109.3 @@ -1,8 +1,14 @@
   109.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   109.5 -<menu name="Avatar Icon Menu">
   109.6 +<toggleable_menu name="Avatar Icon Menu">
   109.7  	<menu_item_call label="プロフィールの表示" name="Show Profile"/>
   109.8  	<menu_item_call label="IMを送信..." name="Send IM"/>
   109.9  	<menu_item_call label="テレポートをリクエスト" name="Request Teleport"/>
  109.10  	<menu_item_call label="フレンドを追加..." name="Add Friend"/>
  109.11  	<menu_item_call label="フレンドを削除..." name="Remove Friend"/>
  109.12 -</menu>
  109.13 +	<context_menu label="モデレーターのオプション" name="Moderator Options">
  109.14 +		<menu_item_check label="文字チャットを許可" name="AllowTextChat"/>
  109.15 +		<menu_item_call label="この参加者をミュートする" name="ModerateVoiceMuteSelected"/>
  109.16 +		<menu_item_call label="この参加者のミュートを解除する" name="ModerateVoiceUnMuteSelected"/>
  109.17 +	</context_menu>
  109.18 +	<menu_item_call label="メンバーを立入禁止" name="BanMember"/>
  109.19 +</toggleable_menu>
   110.1 --- a/indra/newview/skins/default/xui/ja/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
   110.2 +++ b/indra/newview/skins/default/xui/ja/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
   110.3 @@ -2,6 +2,7 @@
   110.4  <menu_bar name="Login Menu">
   110.5  	<menu label="ビューワ" name="File">
   110.6  		<menu_item_call label="環境設定..." name="Preferences..."/>
   110.7 +		<menu_item_call label="ウィンドウを閉じる" name="Close Window"/>
   110.8  		<menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
   110.9  		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
  110.10  	</menu>
   111.1 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml	Thu Nov 30 17:05:57 2017 +0000
   111.2 +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml	Thu Nov 30 17:07:57 2017 +0000
   111.3 @@ -6,7 +6,7 @@
   111.4  	<text name="Cache:">
   111.5  		キャッシュ:
   111.6  	</text>
   111.7 -	<spinner label="キャッシュサイズ(256~9,984MB)" name="cachesizespinner"/>
   111.8 +	<spinner label="キャッシュサイズ (256 - 9984MB)" name="cachesizespinner"/>
   111.9  	<text name="text_box5">
  111.10  		MB
  111.11  	</text>
   112.1 --- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   112.2 +++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   112.3 @@ -15,58 +15,34 @@
   112.4  	<text name="estate_owner">
   112.5  		(不明)
   112.6  	</text>
   112.7 -	<text name="Only Allow">
   112.8 -		次の住人にのみアクセスを許可:
   112.9 -	</text>
  112.10 -	<check_box label="支払情情報が登録されている" name="limit_payment" tool_tip="支払情報が登録されていないと、この不動産にアクセスすることはできません。詳細については、[SUPPORT_SITE] をご覧ください。"/>
  112.11 -	<check_box label="18 才以上です" name="limit_age_verified" tool_tip="この不動産(エステート)にアクセスするには、18 才以上でなければなりません。詳細については、[SUPPORT_SITE] をご覧ください。"/>
  112.12 +	<radio_group name="externally_visible_radio">
  112.13 +		<radio_item label="下記の住人とグループのみ許可する" name="estate_restricted_access"/>
  112.14 +		<radio_item label="誰でも訪問可" name="estate_public_access"/>
  112.15 +	</radio_group>
  112.16 +	<check_box label="18 歳以上である必要があります" name="limit_age_verified" tool_tip="この不動産(エステート)にアクセスするには、18 才以上でなければなりません。詳細については、[SUPPORT_SITE] をご覧ください。"/>
  112.17 +	<check_box label="支払情報が登録されている必要があります" name="limit_payment" tool_tip="支払情報が登録されていないと、この不動産にアクセスすることはできません。詳細については、[SUPPORT_SITE] をご覧ください。"/>
  112.18 +	<check_box label="区画所有者" name="parcel_access_override"/>
  112.19  	<check_box label="ボイスチャットを許可" name="voice_chat_check"/>
  112.20 -	<button label="?" name="voice_chat_help"/>
  112.21 -	<text name="abuse_email_text">
  112.22 -		嫌がらせに関するメール先:
  112.23 -	</text>
  112.24 -	<string name="email_unsupported">
  112.25 -		サポートされていない機能
  112.26 -	</string>
  112.27 -	<button label="?" name="abuse_email_address_help"/>
  112.28 +	<check_box label="直接テレポートを許可" name="allow_direct_teleport"/>
  112.29 +	<button label="適用" name="apply_btn"/>
  112.30  	<text name="estate_manager_label">
  112.31  		不動産マネージャー:
  112.32  	</text>
  112.33 -	<button label="?" name="estate_manager_help"/>
  112.34 +	<text name="allow_resident_label">
  112.35 +		常に許可:
  112.36 +	</text>
  112.37  	<button label="追加..." name="add_estate_manager_btn"/>
  112.38  	<button label="削除..." name="remove_estate_manager_btn"/>
  112.39 -	<check_box label="世界時間を使用" name="use_global_time_check"/>
  112.40 -	<button label="?" name="use_global_time_help"/>
  112.41 -	<check_box label="太陽固定" name="fixed_sun_check"/>
  112.42 -	<button label="?" name="fixed_sun_help"/>
  112.43 -	<slider label="段階" name="sun_hour_slider"/>
  112.44 -	<check_box label="パブリックアクセスを許可" name="externally_visible_check"/>
  112.45 -	<button label="?" name="externally_visible_help"/>
  112.46 -	<check_box label="直接テレポートを許可" name="allow_direct_teleport"/>
  112.47 -	<button label="?" name="allow_direct_teleport_help"/>
  112.48 -	<text name="region_text_lbl">
  112.49 -		支払い状況によりアクセスを拒否:
  112.50 -	</text>
  112.51 -	<check_box label="支払情報登録がないものを拒否" name="deny_anonymous"/>
  112.52 -	<check_box label="支払情報登録があるものを拒否" name="deny_identified"/>
  112.53 -	<check_box label="使用されている支払情報を拒否" name="deny_transacted"/>
  112.54 -	<button label="適用" name="apply_btn"/>
  112.55 -	<text name="allow_resident_label">
  112.56 -		許可された住人:
  112.57 -	</text>
  112.58 -	<button label="?" name="allow_resident_help"/>
  112.59  	<button label="追加..." name="add_allowed_avatar_btn"/>
  112.60  	<button label="削除..." name="remove_allowed_avatar_btn"/>
  112.61  	<text name="allow_group_label">
  112.62 -		許可されたグループ:
  112.63 +		グループを常に許可:
  112.64  	</text>
  112.65 -	<button label="?" name="allow_group_help"/>
  112.66 +	<text name="ban_resident_label">
  112.67 +		常に禁止:
  112.68 +	</text>
  112.69  	<button label="追加..." name="add_allowed_group_btn"/>
  112.70  	<button label="削除..." name="remove_allowed_group_btn"/>
  112.71 -	<text name="ban_resident_label">
  112.72 -		禁止された住人:
  112.73 -	</text>
  112.74 -	<button label="?" name="ban_resident_help"/>
  112.75  	<button label="追加..." name="add_banned_avatar_btn"/>
  112.76  	<button label="削除..." name="remove_banned_avatar_btn"/>
  112.77  	<button label="メッセージを不動産に送信..." name="message_estate_btn"/>
   113.1 --- a/indra/newview/skins/default/xui/pl/notifications.xml	Thu Nov 30 17:05:57 2017 +0000
   113.2 +++ b/indra/newview/skins/default/xui/pl/notifications.xml	Thu Nov 30 17:07:57 2017 +0000
   113.3 @@ -2433,7 +2433,7 @@
   113.4  		<usetemplate name="okcancelbuttons" notext="Anuluj" />
   113.5  	</notification>
   113.6  	<notification name="ConfirmEmptyTrash">
   113.7 -		[COUNT] przedmiotów zostanie usuniętych. Na pewno chcesz permanentnie usunąć zawartość Kosza?
   113.8 +		[COUNT] przedmiotów i folderów zostanie usuniętych. Na pewno chcesz permanentnie usunąć zawartość Kosza?
   113.9  		<usetemplate name="okcancelbuttons" notext="Anuluj" />
  113.10  	</notification>
  113.11  	<notification name="TrashIsFull">
   114.1 --- a/indra/newview/skins/default/xui/pl/strings.xml	Thu Nov 30 17:05:57 2017 +0000
   114.2 +++ b/indra/newview/skins/default/xui/pl/strings.xml	Thu Nov 30 17:07:57 2017 +0000
   114.3 @@ -1561,6 +1561,9 @@
   114.4  	<string name="InventoryNoMatchingItems">
   114.5  		Nie udało Ci się znaleźć tego, czego szukasz? Spróbuj [secondlife:///app/search/all/[SEARCH_TERM] Wyszukiwarki].
   114.6  	</string>
   114.7 +	<string name="InventoryNoMatchingRecentItems">
   114.8 +		Nie udało Ci się znaleźć tego, czego szukasz? Spróbuj [secondlife:///app/inventory/filters Filtrowania].
   114.9 +	</string>
  114.10  	<string name="PlacesNoMatchingItems">
  114.11  		Nie udało Ci się znaleźć tego, czego szukasz? Spróbuj [secondlife:///app/search/places/[SEARCH_TERM] Wyszukiwarki].
  114.12  	</string>
   115.1 --- a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
   115.2 +++ b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
   115.3 @@ -3,6 +3,9 @@
   115.4  	<floater.string name="not_found">
   115.5  		&apos;[TEXT]&apos; não encontrado
   115.6  	</floater.string>
   115.7 +	<floater.string name="not_found_text">
   115.8 +		Residente não encontrado.
   115.9 +	</floater.string>
  115.10  	<floater.string name="no_one_near">
  115.11  		Ninguém por perto
  115.12  	</floater.string>
   116.1 --- a/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
   116.2 +++ b/indra/newview/skins/default/xui/pt/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
   116.3 @@ -7,5 +7,6 @@
   116.4  	<name_list name="render_settings_list">
   116.5  		<name_list.columns label="Nome" name="name"/>
   116.6  		<name_list.columns label="Configuração de renderização" name="setting"/>
   116.7 +		<name_list.columns label="Data adicionada" name="timestamp"/>
   116.8  	</name_list>
   116.9  </floater>
   117.1 --- a/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
   117.2 +++ b/indra/newview/skins/default/xui/pt/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
   117.3 @@ -15,6 +15,8 @@
   117.4  	<button label="Tudo" label_selected="Tudo" name="All"/>
   117.5  	<button label="Nenhum" label_selected="Nenhum" name="None"/>
   117.6  	<check_box label="Sempre mostrar as pastas" name="check_show_empty"/>
   117.7 +	<check_box label="Criado por mim" name="check_created_by_me"/>
   117.8 +	<check_box label="Criado por outros" name="check_created_by_others"/>
   117.9  	<check_box label="Desde o Logoff" name="check_since_logoff"/>
  117.10  	<text name="- OR -">
  117.11  		- OU -
   118.1 --- a/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
   118.2 +++ b/indra/newview/skins/default/xui/pt/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
   118.3 @@ -1,5 +1,5 @@
   118.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   118.5 -<floater name="floater_pathfinding_linksets" title="Linksets do pathfinding">
   118.6 +<floater name="floater_pathfinding_linksets" title="REGIÃO OBJETOS">
   118.7  	<floater.string name="messaging_get_inprogress">
   118.8  		Procurando por linksets do pathfinding...
   118.9  	</floater.string>
  118.10 @@ -16,7 +16,7 @@
  118.11  		Nenhum linkset do pathfinding.
  118.12  	</floater.string>
  118.13  	<floater.string name="messaging_complete_available">
  118.14 -		[NUM_SELECTED] linksets selecionados de [NUM_TOTAL].
  118.15 +		[NUM_SELECTED] selecionado de [NUM_TOTAL].
  118.16  	</floater.string>
  118.17  	<floater.string name="messaging_not_enabled">
  118.18  		Esta região não está habilitada para pathfinding.
  118.19 @@ -118,7 +118,7 @@
  118.20  			<scroll_list.columns label="Com script" name="scripted"/>
  118.21  			<scroll_list.columns label="Impacto" name="land_impact"/>
  118.22  			<scroll_list.columns label="Distância" name="dist_from_you"/>
  118.23 -			<scroll_list.columns label="Uso do linkset" name="linkset_use"/>
  118.24 +			<scroll_list.columns label="Uso de pathfinding" name="linkset_use"/>
  118.25  			<scroll_list.columns label="A %" name="a_percent"/>
  118.26  			<scroll_list.columns label="B %" name="b_percent"/>
  118.27  			<scroll_list.columns label="C %" name="c_percent"/>
  118.28 @@ -133,7 +133,7 @@
  118.29  	</panel>
  118.30  	<panel name="pathfinding_linksets_actions">
  118.31  		<text name="linksets_actions_label">
  118.32 -			Ações em linksets selecionados (se um linkset for removido de um mundo, seus atributos podem ser perdidos):
  118.33 +			Ações sobre o selecionado
  118.34  		</text>
  118.35  		<check_box label="Exibir baliza" name="show_beacon"/>
  118.36  		<button label="Pegar" name="take_objects"/>
  118.37 @@ -144,7 +144,7 @@
  118.38  	</panel>
  118.39  	<panel name="pathfinding_linksets_attributes">
  118.40  		<text name="linksets_attributes_label">
  118.41 -			Edite os atributos de linksets selecionados e pressione o botão para aplicar as alterações
  118.42 +			Editar atributos do pathfinding
  118.43  		</text>
  118.44  		<text name="walkability_coefficients_label">
  118.45  			Possibilidade de caminhar:
   119.1 --- a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
   119.2 +++ b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
   119.3 @@ -1,8 +1,14 @@
   119.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   119.5 -<menu name="Avatar Icon Menu">
   119.6 +<toggleable_menu name="Avatar Icon Menu">
   119.7  	<menu_item_call label="Ver perfil" name="Show Profile"/>
   119.8  	<menu_item_call label="Enviar MI..." name="Send IM"/>
   119.9  	<menu_item_call label="Solicitar teletransporte" name="Request Teleport"/>
  119.10  	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
  119.11  	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
  119.12 -</menu>
  119.13 +	<context_menu label="Opções do moderador" name="Moderator Options">
  119.14 +		<menu_item_check label="Permitir bate-papo de texto" name="AllowTextChat"/>
  119.15 +		<menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/>
  119.16 +		<menu_item_call label="Desfazer silenciar" name="ModerateVoiceUnMuteSelected"/>
  119.17 +	</context_menu>
  119.18 +	<menu_item_call label="Banir membro" name="BanMember"/>
  119.19 +</toggleable_menu>
   120.1 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   120.2 +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   120.3 @@ -75,10 +75,12 @@
   120.4  	<menu_item_call label="Propriedades" name="Properties"/>
   120.5  	<menu_item_call label="Renomear" name="Rename"/>
   120.6  	<menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/>
   120.7 +	<menu_item_call label="Mostrar no Painel Principal" name="Show in Main Panel"/>
   120.8  	<menu_item_call label="Cortar" name="Cut"/>
   120.9  	<menu_item_call label="Copiar" name="Copy"/>
  120.10  	<menu_item_call label="Colar" name="Paste"/>
  120.11  	<menu_item_call label="Colar como link" name="Paste As Link"/>
  120.12 +	<menu_item_call label="Links trocados" name="Replace Links"/>
  120.13  	<menu_item_call label="Apagar" name="Delete"/>
  120.14  	<menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
  120.15  	<menu_item_call label="Pasta conversa em conferência" name="Conference Chat Folder"/>
   121.1 --- a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml	Thu Nov 30 17:05:57 2017 +0000
   121.2 +++ b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml	Thu Nov 30 17:07:57 2017 +0000
   121.3 @@ -13,5 +13,6 @@
   121.4  	<menu_item_call label="Compartilhar" name="Share"/>
   121.5  	<menu_item_call label="Encontrar original" name="Find Original"/>
   121.6  	<menu_item_call label="Encontrar todos os links" name="Find All Links"/>
   121.7 +	<menu_item_call label="Links trocados" name="Replace Links"/>
   121.8  	<menu_item_call label="Esvaziar lixeira" name="empty_trash"/>
   121.9  </toggleable_menu>
   122.1 --- a/indra/newview/skins/default/xui/pt/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
   122.2 +++ b/indra/newview/skins/default/xui/pt/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
   122.3 @@ -2,6 +2,7 @@
   122.4  <menu_bar name="Login Menu">
   122.5  	<menu label="Eu" name="File">
   122.6  		<menu_item_call label="Preferências..." name="Preferences..."/>
   122.7 +		<menu_item_call label="Fechar janela" name="Close Window"/>
   122.8  		<menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
   122.9  		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
  122.10  	</menu>
   123.1 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml	Thu Nov 30 17:05:57 2017 +0000
   123.2 +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml	Thu Nov 30 17:07:57 2017 +0000
   123.3 @@ -122,7 +122,7 @@
   123.4  			<menu_item_call label="Incluir próxima parte ou face" name="Include Next Part or Face"/>
   123.5  			<menu_item_call label="Incluir parte anterior ou face" name="Include Previous Part or Face"/>
   123.6  		</menu>
   123.7 -		<menu_item_call label="Linksets..." name="pathfinding_linkset_menu_item"/>
   123.8 +		<menu_item_call label="Região Objetos" name="pathfinding_linkset_menu_item"/>
   123.9  		<menu_item_call label="Enfocar seleção" name="Focus on Selection"/>
  123.10  		<menu_item_call label="Ampliar seleção" name="Zoom to Selection"/>
  123.11  		<menu label="Objeto:" name="Object">
  123.12 @@ -142,7 +142,7 @@
  123.13  			<menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/>
  123.14  		</menu>
  123.15  		<menu label="Pathfinding" name="Pathfinding">
  123.16 -			<menu_item_call label="Linksets..." name="pathfinding_linksets_menu_item"/>
  123.17 +			<menu_item_call label="Região Objetos" name="pathfinding_linksets_menu_item"/>
  123.18  			<menu_item_call label="Personagens..." name="pathfinding_characters_menu_item"/>
  123.19  			<menu_item_call label="Visualização/teste..." name="pathfinding_console_menu_item"/>
  123.20  			<menu_item_call label="Recarregar região" name="pathfinding_rebake_navmesh_item"/>
   124.1 --- a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   124.2 +++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   124.3 @@ -12,10 +12,17 @@
   124.4  	<text name="ItemcountText">
   124.5  		Itens:
   124.6  	</text>
   124.7 -	<filter_editor label="Filtro" name="inventory search editor"/>
   124.8 +	<filter_editor label="Digite o texto de pesquisa" name="inventory search editor"/>
   124.9 +	<combo_box name="search_type">
  124.10 +		<item label="Nome" name="Name" value="search_by_name"/>
  124.11 +		<item label="Criador" name="Creator" value="search_by_creator"/>
  124.12 +		<item label="Descrição" name="Description" value="search_by_description"/>
  124.13 +		<item label="UUID" name="UUID" value="search_by_UUID"/>
  124.14 +	</combo_box>
  124.15  	<tab_container name="inventory filter tabs">
  124.16  		<inventory_panel label="Todos os itens" name="All Items"/>
  124.17  		<recent_inventory_panel label="Itens recentes" name="Recent Items"/>
  124.18 +		<inventory_panel label="USADO" name="Worn Items"/>
  124.19  	</tab_container>
  124.20  	<layout_stack name="bottom_panel">
  124.21  		<layout_panel name="options_gear_btn_panel">
   125.1 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml	Thu Nov 30 17:05:57 2017 +0000
   125.2 +++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml	Thu Nov 30 17:07:57 2017 +0000
   125.3 @@ -6,7 +6,7 @@
   125.4  	<text name="Cache:">
   125.5  		Cache:
   125.6  	</text>
   125.7 -	<spinner label="Cache (256 - 9984 MB)" name="cachesizespinner"/>
   125.8 +	<spinner label="Tamanho do cache (256 - 9984MB)" name="cachesizespinner"/>
   125.9  	<text name="text_box5">
  125.10  		MB
  125.11  	</text>
   126.1 --- a/indra/newview/skins/default/xui/pt/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   126.2 +++ b/indra/newview/skins/default/xui/pt/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   126.3 @@ -15,54 +15,36 @@
   126.4  	<text name="estate_owner">
   126.5  		(desconhecido)
   126.6  	</text>
   126.7 -	<check_box label="Usar Tempo global" name="use_global_time_check"/>
   126.8 -	<button label="?" name="use_global_time_help"/>
   126.9 -	<check_box label="Sol fixo" name="fixed_sun_check"/>
  126.10 -	<button label="?" name="fixed_sun_help"/>
  126.11 -	<slider label="Fase" name="sun_hour_slider"/>
  126.12 -	<check_box label="Permitir acesso público" name="externally_visible_check"/>
  126.13 -	<button label="?" name="externally_visible_help"/>
  126.14 -	<text name="Only Allow">
  126.15 -		Permitir acesso apenas para residentes que:
  126.16 -	</text>
  126.17 -	<check_box label="Dados de pagamento constam no registro." name="limit_payment" tool_tip="Propriedade de acesso restrito a residentes que já cadastraram seus dados de pagamento  Consulte o [SUPPORT_SITE] para saber mais."/>
  126.18 -	<check_box label="Tem 18 anos ou mais" name="limit_age_verified" tool_tip="Os residentes devem ter 18 anos ou mais para acessar esta propriedade. Consulte o [SUPPORT_SITE] para obter mais informações."/>
  126.19 +	<radio_group name="externally_visible_radio">
  126.20 +		<radio_item label="Permitir somente os residentes e os grupos listados abaixo" name="estate_restricted_access"/>
  126.21 +		<radio_item label="Qualquer um pode visitar" name="estate_public_access"/>
  126.22 +	</radio_group>
  126.23 +	<check_box label="Deve ser maior de 18 anos" name="limit_age_verified" tool_tip="Os residentes devem ter 18 anos ou mais para acessar esta propriedade. Consulte o [SUPPORT_SITE] para obter mais informações."/>
  126.24 +	<check_box label="Deve ter informação de pagamento no arquivo" name="limit_payment" tool_tip="Propriedade de acesso restrito a residentes que já cadastraram seus dados de pagamento  Consulte o [SUPPORT_SITE] para saber mais."/>
  126.25 +	<check_box label="Os proprietários dos lotes podem ser mais restritivos." name="parcel_access_override"/>
  126.26  	<check_box label="Permitir conversa de voz" name="voice_chat_check"/>
  126.27 -	<button label="?" name="voice_chat_help"/>
  126.28  	<check_box label="Permitir Tele-transporte direto" name="allow_direct_teleport"/>
  126.29 -	<button label="?" name="allow_direct_teleport_help"/>
  126.30 -	<text name="abuse_email_text">
  126.31 -		Endereço de email de Abuso:
  126.32 -	</text>
  126.33 -	<string name="email_unsupported">
  126.34 -		Funcionalidade não suportada
  126.35 -	</string>
  126.36 -	<button label="?" name="abuse_email_address_help"/>
  126.37  	<button label="Aplicar" name="apply_btn"/>
  126.38 -	<button label="Expulsar da propriedade..." name="kick_user_from_estate_btn"/>
  126.39 -	<button label="Enviar mensagem à Propriedade" name="message_estate_btn"/>
  126.40  	<text name="estate_manager_label">
  126.41  		Gerentes da propriedade:
  126.42  	</text>
  126.43 -	<button label="?" name="estate_manager_help"/>
  126.44 +	<text name="allow_resident_label">
  126.45 +		Sempre permitido:
  126.46 +	</text>
  126.47 +	<button label="Adicionar..." name="add_estate_manager_btn"/>
  126.48  	<button label="Remover..." name="remove_estate_manager_btn"/>
  126.49 -	<button label="Adicionar..." name="add_estate_manager_btn"/>
  126.50 -	<text name="allow_resident_label">
  126.51 -		Residentes permitidos:
  126.52 +	<button label="Adicionar..." name="add_allowed_avatar_btn"/>
  126.53 +	<button label="Remover..." name="remove_allowed_avatar_btn"/>
  126.54 +	<text name="allow_group_label">
  126.55 +		Grupos sempre permitidos:
  126.56  	</text>
  126.57 -	<button label="?" name="allow_resident_help"/>
  126.58 -	<button label="Remover..." name="remove_allowed_avatar_btn"/>
  126.59 -	<button label="Adicionar..." name="add_allowed_avatar_btn"/>
  126.60 -	<text name="allow_group_label">
  126.61 -		Grupos permitidos:
  126.62 +	<text name="ban_resident_label">
  126.63 +		Sempre banido:
  126.64  	</text>
  126.65 -	<button label="?" name="allow_group_help"/>
  126.66 +	<button label="Adicionar..." name="add_allowed_group_btn"/>
  126.67  	<button label="Remover..." name="remove_allowed_group_btn"/>
  126.68 -	<button label="Adicionar..." name="add_allowed_group_btn"/>
  126.69 -	<text name="ban_resident_label">
  126.70 -		Residentes banidos:
  126.71 -	</text>
  126.72 -	<button label="?" name="ban_resident_help"/>
  126.73 +	<button label="Adicionar..." name="add_banned_avatar_btn"/>
  126.74  	<button label="Remover..." name="remove_banned_avatar_btn"/>
  126.75 -	<button label="Adicionar..." name="add_banned_avatar_btn"/>
  126.76 +	<button label="Enviar mensagem à Propriedade" name="message_estate_btn"/>
  126.77 +	<button label="Expulsar da propriedade..." name="kick_user_from_estate_btn"/>
  126.78  </panel>
   127.1 --- a/indra/newview/skins/default/xui/pt/panel_tools_texture.xml	Thu Nov 30 17:05:57 2017 +0000
   127.2 +++ b/indra/newview/skins/default/xui/pt/panel_tools_texture.xml	Thu Nov 30 17:07:57 2017 +0000
   127.3 @@ -26,6 +26,7 @@
   127.4  		<radio_item label="Relevo (normal)" name="Bumpiness (normal)" value="1"/>
   127.5  		<radio_item label="Brilho (especular)" name="Shininess (specular)" value="2"/>
   127.6  	</radio_group>
   127.7 +	<check_box initial_value="false" label="Repetir bloqueio" name="checkbox_sync_settings" tool_tip="Ajustar os mapas repetidos simultaneamente"/>
   127.8  	<texture_picker label="Textura" name="texture control" tool_tip="Selecionar imagem"/>
   127.9  	<text name="label alphamode">
  127.10  		Modo alpha
   128.1 --- a/indra/newview/skins/default/xui/pt/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
   128.2 +++ b/indra/newview/skins/default/xui/pt/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
   128.3 @@ -38,7 +38,7 @@
   128.4  		<action description="Sempre permitir &apos;Editar terreno&apos;" longdescription="Membros em uma função com esta habilidade podem editar terreno em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow edit land" value="23"/>
   128.5  		<action description="Sempre permitir &apos;Voar&apos;" longdescription="Membros em uma função com esta habilidade podem voar sobre uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow fly" value="24"/>
   128.6  		<action description="Sempre permitir &apos;Criar objetos&apos;" longdescription="Membros em uma função com esta habilidade podem criar objetos em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow create" value="25"/>
   128.7 -		<action description="Sempre permitir &apos;Criar ponto de referência&apos;" longdescription="Membros em uma função com esta habilidade podem colocar um ponto de referência uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno &gt; aba Opções." name="land allow landmark" value="26"/>
   128.8 +		<action description="Ignorar um ponto de aterrissagem" longdescription="O membros com um Cargo com esta Habilidade pode se teleportar direto para um lote de propriedade aberta, mesmo que um ponto de aterrissagem tenha sido definido em Sobre terrenos &gt; guia Opções." name="land allow direct teleport" value="26"/>
   128.9  		<action description="Permitir &apos;Colocar casa aqui&apos; no terreno do grupo" longdescription="Membros exercendo cargos com esta função podem selecionar no menu Mundo &gt; Marcos &gt; Definir como casa em lotes doados ao grupo." name="land allow set home" value="28"/>
  128.10  		<action description="Permitir a &apos;Organização de eventos&apos; que usam terrenos do grupo" longdescription="Membros que exercem cargos com esta função podem usar terrenos do grupo para eventos que estão organizando." name="land allow host event" value="41"/>
  128.11  	</action_set>
   129.1 --- a/indra/newview/skins/default/xui/pt/strings.xml	Thu Nov 30 17:05:57 2017 +0000
   129.2 +++ b/indra/newview/skins/default/xui/pt/strings.xml	Thu Nov 30 17:07:57 2017 +0000
   129.3 @@ -217,7 +217,8 @@
   129.4  		Sua conta não está disponível para acesso até [TIME], horário do Pacífico nos EUA (GMT-08).
   129.5  	</string>
   129.6  	<string name="LoginFailedAccountDisabled">
   129.7 -		Não é possível concluir a solicitação neste momento. Para obter mais ajuda, conte o suporte em http://secondlife.com/support. Caso você não possa mudar sua senha, ligue para (866) 476-9763.
   129.8 +		Não é possível concluir a solicitação neste momento. 
   129.9 +Entre em contato com o suporte do Second Life para obter ajuda em http://support.secondlife.com.
  129.10  	</string>
  129.11  	<string name="LoginFailedTransformError">
  129.12  		Dados discrepantes detectados durante o login.  Contate support@secondlife.com.
  129.13 @@ -631,6 +632,19 @@
  129.14  	<string name="AssetErrorUnknownStatus">
  129.15  		Status desconhecido
  129.16  	</string>
  129.17 +	<string name="AssetUploadServerUnreacheble">
  129.18 +		Serviço não disponível.
  129.19 +	</string>
  129.20 +	<string name="AssetUploadServerDifficulties">
  129.21 +		O servidor está enfrentando dificuldades inesperadas.
  129.22 +	</string>
  129.23 +	<string name="AssetUploadServerUnavaliable">
  129.24 +		Serviço não disponível ou o tempo final para upload foi atingido.
  129.25 +	</string>
  129.26 +	<string name="AssetUploadRequestInvalid">
  129.27 +		Erro na solicitação de upload. Acesso 
  129.28 +http://secondlife.com/support para ajuda ao resolver este problema.
  129.29 +	</string>
  129.30  	<string name="texture">
  129.31  		textura
  129.32  	</string>
  129.33 @@ -2106,10 +2120,19 @@
  129.34  		todas as propriedades que você gerencia para [OWNER]
  129.35  	</string>
  129.36  	<string name="RegionInfoAllowedResidents">
  129.37 -		Residentes autorizados: ([ALLOWEDAGENTS], max [MAXACCESS])
  129.38 +		Sempre permitido: ([ALLOWEDAGENTS], máx [MAXACCESS])
  129.39  	</string>
  129.40  	<string name="RegionInfoAllowedGroups">
  129.41 -		Grupos permitidos: ([ALLOWEDGROUPS], max [MAXACCESS])
  129.42 +		Grupos sempre permitidos: ([ALLOWEDGROUPS], máx [MAXACCESS])
  129.43 +	</string>
  129.44 +	<string name="RegionInfoBannedResidents">
  129.45 +		Grupos banidos: ([BANNEDAGENTS], máx [MAXBANNED])
  129.46 +	</string>
  129.47 +	<string name="RegionInfoListTypeAllowedAgents">
  129.48 +		Sempre permitido
  129.49 +	</string>
  129.50 +	<string name="RegionInfoListTypeBannedAgents">
  129.51 +		Sempre banido
  129.52  	</string>
  129.53  	<string name="ScriptLimitsParcelScriptMemory">
  129.54  		Memória de scripts no lote
   130.1 --- a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
   130.2 +++ b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
   130.3 @@ -3,6 +3,9 @@
   130.4  	<floater.string name="not_found">
   130.5  		Текст '[TEXT]' не найден
   130.6  	</floater.string>
   130.7 +	<floater.string name="not_found_text">
   130.8 +		Житель не найден.
   130.9 +	</floater.string>
  130.10  	<floater.string name="no_one_near">
  130.11  		Рядом никого нет
  130.12  	</floater.string>
   131.1 --- a/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
   131.2 +++ b/indra/newview/skins/default/xui/ru/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
   131.3 @@ -7,5 +7,6 @@
   131.4  	<name_list name="render_settings_list">
   131.5  		<name_list.columns label="Имя" name="name"/>
   131.6  		<name_list.columns label="Настройка отрисовки" name="setting"/>
   131.7 +		<name_list.columns label="Дата добавлена" name="timestamp"/>
   131.8  	</name_list>
   131.9  </floater>
   132.1 --- a/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
   132.2 +++ b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
   132.3 @@ -15,6 +15,8 @@
   132.4  	<button label="Все" label_selected="Все" name="All"/>
   132.5  	<button label="Нет" label_selected="Нет" name="None"/>
   132.6  	<check_box label="Всегда показывать папки" name="check_show_empty"/>
   132.7 +	<check_box label="Создано мной" name="check_created_by_me"/>
   132.8 +	<check_box label="Создано другими" name="check_created_by_others"/>
   132.9  	<check_box label="С момента выхода" name="check_since_logoff"/>
  132.10  	<text name="- OR -">
  132.11  		- ИЛИ -
   133.1 --- a/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
   133.2 +++ b/indra/newview/skins/default/xui/ru/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
   133.3 @@ -1,5 +1,5 @@
   133.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   133.5 -<floater name="floater_pathfinding_linksets" title="Наборы связей для поиска пути">
   133.6 +<floater name="floater_pathfinding_linksets" title="ОБЪЕКТЫ РЕГИОНА">
   133.7  	<floater.string name="messaging_get_inprogress">
   133.8  		Запрос наборов связей для поиска пути...
   133.9  	</floater.string>
  133.10 @@ -16,7 +16,7 @@
  133.11  		Нет наборов связей для поиска пути.
  133.12  	</floater.string>
  133.13  	<floater.string name="messaging_complete_available">
  133.14 -		Выбрано наборов связей: [NUM_SELECTED] из [NUM_TOTAL].
  133.15 +		Выбрано [NUM_SELECTED] из [NUM_TOTAL].
  133.16  	</floater.string>
  133.17  	<floater.string name="messaging_not_enabled">
  133.18  		В этом регионе не разрешен поиск пути.
  133.19 @@ -118,7 +118,7 @@
  133.20  			<scroll_list.columns label="Скриптовые" name="scripted"/>
  133.21  			<scroll_list.columns label="Воздействие" name="land_impact"/>
  133.22  			<scroll_list.columns label="Расстояние" name="dist_from_you"/>
  133.23 -			<scroll_list.columns label="Использование набора связей" name="linkset_use"/>
  133.24 +			<scroll_list.columns label="Использование поиска пути" name="linkset_use"/>
  133.25  			<scroll_list.columns label="A %" name="a_percent"/>
  133.26  			<scroll_list.columns label="B %" name="b_percent"/>
  133.27  			<scroll_list.columns label="C %" name="c_percent"/>
  133.28 @@ -133,7 +133,7 @@
  133.29  	</panel>
  133.30  	<panel name="pathfinding_linksets_actions">
  133.31  		<text name="linksets_actions_label">
  133.32 -			Действия с выбранными наборами связей (если атрибут удаляется из мира, его атрибуты могут быть утрачены):
  133.33 +			Действия с выбранным
  133.34  		</text>
  133.35  		<check_box label="Показать метку" name="show_beacon"/>
  133.36  		<button label="Взять" name="take_objects"/>
  133.37 @@ -144,7 +144,7 @@
  133.38  	</panel>
  133.39  	<panel name="pathfinding_linksets_attributes">
  133.40  		<text name="linksets_attributes_label">
  133.41 -			Измените атрибуты выбранных наборов связей и нажмите кнопку, чтобы применить изменения
  133.42 +			Изменить параметры поиска пути
  133.43  		</text>
  133.44  		<text name="walkability_coefficients_label">
  133.45  			Проходимость:
   134.1 --- a/indra/newview/skins/default/xui/ru/floater_tos.xml	Thu Nov 30 17:05:57 2017 +0000
   134.2 +++ b/indra/newview/skins/default/xui/ru/floater_tos.xml	Thu Nov 30 17:07:57 2017 +0000
   134.3 @@ -6,13 +6,16 @@
   134.4  	<floater.string name="loading_url">
   134.5  		data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
   134.6  	</floater.string>
   134.7 -	<button label="Продолжить" label_selected="Продолжить" name="Continue"/>
   134.8 -	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
   134.9 -	<check_box label="Я принимаю условия Пользовательского соглашения и Политики конфиденциальности" name="agree_chk"/>
  134.10  	<text name="tos_heading">
  134.11 -		Внимательно прочитайте Пользовательское соглашение и Политику конфиденциальности. Для входа в [SECOND_LIFE] вы должны согласиться с условиями соглашения.
  134.12 +		Прочитайте условия и положения по конфиденциальности Пользовательского соглашения Second Life, включая порядок разрешения споров и отказ от любого требования класса или группы для разрешения разногласий. Для входа в [SECOND_LIFE] вы должны согласиться с условиями соглашения.
  134.13  	</text>
  134.14  	<text name="external_tos_required">
  134.15  		Для продолжения перейдите на сайт https://my.secondlife.com, войдите и примите Условия обслуживания. Спасибо!
  134.16  	</text>
  134.17 +	<check_box label="Я прочитал и согласен с" name="agree_chk"/>
  134.18 +	<text name="agree_list">
  134.19 +		условия и положения по конфиденциальности Пользовательского соглашения, включая требования по разрешению разногласий.
  134.20 +	</text>
  134.21 +	<button label="Продолжить" label_selected="Продолжить" name="Continue"/>
  134.22 +	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
  134.23  </floater>
   135.1 --- a/indra/newview/skins/default/xui/ru/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   135.2 +++ b/indra/newview/skins/default/xui/ru/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   135.3 @@ -15,38 +15,36 @@
   135.4  	<text name="estate_owner">
   135.5  		(неизвестно)
   135.6  	</text>
   135.7 -	<check_box label="Глобальное время" name="use_global_time_check"/>
   135.8 -	<check_box label="Фиксированное" name="fixed_sun_check"/>
   135.9 -	<slider label="Фаза" name="sun_hour_slider"/>
  135.10 -	<check_box label="Разрешить общий доступ" name="externally_visible_check"/>
  135.11 -	<text name="Only Allow">
  135.12 -		Разрешить доступ только таким жителям:
  135.13 -	</text>
  135.14 -	<check_box label="Зарегистрирована информация об оплате" name="limit_payment" tool_tip="Для доступа к этому землевладению у жителя должна быть зарегистрирована информация об оплате.  Более подробная информация находится здесь: [SUPPORT_SITE]."/>
  135.15 -	<check_box label="18 лет и старше" name="limit_age_verified" tool_tip="Доступ к этому землевладению имеют только жители 18 лет и старше. Более подробная информация находится здесь: [SUPPORT_SITE]."/>
  135.16 +	<radio_group name="externally_visible_radio">
  135.17 +		<radio_item label="Разрешено только нижеперечисленным жителям и группам" name="estate_restricted_access"/>
  135.18 +		<radio_item label="Доступ открыт для всех" name="estate_public_access"/>
  135.19 +	</radio_group>
  135.20 +	<check_box label="Должен быть 18 и старше" name="limit_age_verified" tool_tip="Доступ к этому землевладению имеют только жители 18 лет и старше. Более подробная информация находится здесь: [SUPPORT_SITE]."/>
  135.21 +	<check_box label="Информация о платежах должна быть в файле" name="limit_payment" tool_tip="Для доступа к этому землевладению у жителя должна быть зарегистрирована информация об оплате.  Более подробная информация находится здесь: [SUPPORT_SITE]."/>
  135.22 +	<check_box label="Владельцы участков могут принимать более ограничетельные меры" name="parcel_access_override"/>
  135.23  	<check_box label="Разрешить голосовое общение" name="voice_chat_check"/>
  135.24  	<check_box label="Разрешить прямой телепорт" name="allow_direct_teleport"/>
  135.25  	<button label="Применить" name="apply_btn"/>
  135.26 -	<button label="Сообщение в землевладение..." name="message_estate_btn"/>
  135.27 -	<button label="Выкинуть жителя с землевладения..." name="kick_user_from_estate_btn"/>
  135.28  	<text name="estate_manager_label">
  135.29  		Менеджеры землевладения:
  135.30  	</text>
  135.31 +	<text name="allow_resident_label">
  135.32 +		Разрешено всегда:
  135.33 +	</text>
  135.34 +	<button label="Добавить..." name="add_estate_manager_btn"/>
  135.35  	<button label="Удалить..." name="remove_estate_manager_btn"/>
  135.36 -	<button label="Добавить..." name="add_estate_manager_btn"/>
  135.37 -	<text name="allow_resident_label">
  135.38 -		Допущенные жители:
  135.39 +	<button label="Добавить..." name="add_allowed_avatar_btn"/>
  135.40 +	<button label="Удалить..." name="remove_allowed_avatar_btn"/>
  135.41 +	<text name="allow_group_label">
  135.42 +		Группы всегда разрешены:
  135.43  	</text>
  135.44 -	<button label="Удалить..." name="remove_allowed_avatar_btn"/>
  135.45 -	<button label="Добавить..." name="add_allowed_avatar_btn"/>
  135.46 -	<text name="allow_group_label">
  135.47 -		Допущенные группы:
  135.48 +	<text name="ban_resident_label">
  135.49 +		Всегда заблокированы:
  135.50  	</text>
  135.51 +	<button label="Добавить..." name="add_allowed_group_btn"/>
  135.52  	<button label="Удалить..." name="remove_allowed_group_btn"/>
  135.53 -	<button label="Добавить..." name="add_allowed_group_btn"/>
  135.54 -	<text name="ban_resident_label">
  135.55 -		Забаненные жители:
  135.56 -	</text>
  135.57 +	<button label="Добавить..." name="add_banned_avatar_btn"/>
  135.58  	<button label="Удалить..." name="remove_banned_avatar_btn"/>
  135.59 -	<button label="Добавить..." name="add_banned_avatar_btn"/>
  135.60 +	<button label="Сообщение в землевладение..." name="message_estate_btn"/>
  135.61 +	<button label="Выкинуть жителя с землевладения..." name="kick_user_from_estate_btn"/>
  135.62  </panel>
   136.1 --- a/indra/newview/skins/default/xui/ru/panel_tools_texture.xml	Thu Nov 30 17:05:57 2017 +0000
   136.2 +++ b/indra/newview/skins/default/xui/ru/panel_tools_texture.xml	Thu Nov 30 17:07:57 2017 +0000
   136.3 @@ -26,6 +26,7 @@
   136.4  		<radio_item label="Шероховатость (обычная)" name="Bumpiness (normal)" value="1"/>
   136.5  		<radio_item label="Блеск (зеркальный)" name="Shininess (specular)" value="2"/>
   136.6  	</radio_group>
   136.7 +	<check_box initial_value="false" label="Повтор блокировки" name="checkbox_sync_settings" tool_tip="Одновременно сверить все повторы карт"/>
   136.8  	<texture_picker label="Текстура" name="texture control" tool_tip="Щелкните для выбора изображения"/>
   136.9  	<text name="label alphamode">
  136.10  		Альфа-режим
   137.1 --- a/indra/newview/skins/default/xui/ru/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
   137.2 +++ b/indra/newview/skins/default/xui/ru/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
   137.3 @@ -38,7 +38,7 @@
   137.4  		<action description="Всегда разрешено изменение ландшафта" longdescription="Участники роли с этой способностью могут изменять ландшафт участка группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow edit land" value="23"/>
   137.5  		<action description="Всегда разрешен полет" longdescription="Участники роли с этой способностью могут летать над участком группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow fly" value="24"/>
   137.6  		<action description="Всегда разрешено создавать объекты" longdescription="Участники роли с этой способностью могут создавать объекты на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow create" value="25"/>
   137.7 -		<action description="Всегда разрешено создавать закладки" longdescription="Участники роли с этой способностью могут поместить закладку на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow landmark" value="26"/>
   137.8 +		<action description="Игнорировать данные о точке телепортации" longdescription="Участники роли с этой способностью могут направить телепорт на участок группы, даже если точка телепортации установлена в окне «О земле»&gt;вкладки «Параметры»." name="land allow direct teleport" value="26"/>
   137.9  		<action description="Разрешено установить дом на земле группы" longdescription="Участники роли с такой способностью могут использовать меню «Мир &gt; Закладки &gt; Установить дом здесь» для участка, переданного этой группе." name="land allow set home" value="28"/>
  137.10  		<action description="Разрешена орагнизация событий на земле группы" longdescription="Участники роли с этой способностью могут выбрать участки группы в качестве любимого места при организации события." name="land allow host event" value="41"/>
  137.11  	</action_set>
   138.1 --- a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
   138.2 +++ b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
   138.3 @@ -3,6 +3,9 @@
   138.4  	<floater.string name="not_found">
   138.5  		&apos;[TEXT]&apos; bulunamadı
   138.6  	</floater.string>
   138.7 +	<floater.string name="not_found_text">
   138.8 +		Sakin bulunamadı.
   138.9 +	</floater.string>
  138.10  	<floater.string name="no_one_near">
  138.11  		Yakında kimse yok
  138.12  	</floater.string>
   139.1 --- a/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
   139.2 +++ b/indra/newview/skins/default/xui/tr/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
   139.3 @@ -7,5 +7,6 @@
   139.4  	<name_list name="render_settings_list">
   139.5  		<name_list.columns label="Ad" name="name"/>
   139.6  		<name_list.columns label="İşleme ayarı" name="setting"/>
   139.7 +		<name_list.columns label="Ekleme tarihi" name="timestamp"/>
   139.8  	</name_list>
   139.9  </floater>
   140.1 --- a/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
   140.2 +++ b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
   140.3 @@ -15,6 +15,8 @@
   140.4  	<button label="Tümü" label_selected="Tümü" name="All"/>
   140.5  	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
   140.6  	<check_box label="Klasörleri her zaman göster" name="check_show_empty"/>
   140.7 +	<check_box label="Benim tarafımdan oluşturulan" name="check_created_by_me"/>
   140.8 +	<check_box label="Başkalarının tarafından oluşturulan" name="check_created_by_others"/>
   140.9  	<check_box label="Oturum Kapandıktan Beri" name="check_since_logoff"/>
  140.10  	<text name="- OR -">
  140.11  		- VEYA -
   141.1 --- a/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
   141.2 +++ b/indra/newview/skins/default/xui/tr/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
   141.3 @@ -1,5 +1,5 @@
   141.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   141.5 -<floater name="floater_pathfinding_linksets" title="Yol bulma bağlantı kümeleri">
   141.6 +<floater name="floater_pathfinding_linksets" title="BÖLGE NESNELERİ">
   141.7  	<floater.string name="messaging_get_inprogress">
   141.8  		Yol bulma bağlantı kümeleri için sorgulama yapılıyor ...
   141.9  	</floater.string>
  141.10 @@ -16,7 +16,7 @@
  141.11  		Yol bulma bağlantı kümeleri yok.
  141.12  	</floater.string>
  141.13  	<floater.string name="messaging_complete_available">
  141.14 -		Toplam [NUM_TOTAL] bağlantı kümesi içerisinden [NUM_SELECTED] adet seçildi.
  141.15 +		[NUM_SELECTED] / [NUM_TOTAL] seçildi.
  141.16  	</floater.string>
  141.17  	<floater.string name="messaging_not_enabled">
  141.18  		Bu bölgede yol bulma etkin değil.
  141.19 @@ -118,7 +118,7 @@
  141.20  			<scroll_list.columns label="Komut Dosyalı" name="scripted"/>
  141.21  			<scroll_list.columns label="Etki" name="land_impact"/>
  141.22  			<scroll_list.columns label="Mesafe" name="dist_from_you"/>
  141.23 -			<scroll_list.columns label="Bağlantı kümesi kullanımı" name="linkset_use"/>
  141.24 +			<scroll_list.columns label="Yol bulma kullanımı" name="linkset_use"/>
  141.25  			<scroll_list.columns label="% A" name="a_percent"/>
  141.26  			<scroll_list.columns label="% B" name="b_percent"/>
  141.27  			<scroll_list.columns label="% C" name="c_percent"/>
  141.28 @@ -133,7 +133,7 @@
  141.29  	</panel>
  141.30  	<panel name="pathfinding_linksets_actions">
  141.31  		<text name="linksets_actions_label">
  141.32 -			Seçilen bağlantı kümeleri üzerindeki işlemler (bir bağlantı kümesi dünyadan çıkarılırsa, özellikleri de kaybolabilir)
  141.33 +			Seçilenler üzerindeki eylemler
  141.34  		</text>
  141.35  		<check_box label="İşareti göster" name="show_beacon"/>
  141.36  		<button label="Al" name="take_objects"/>
  141.37 @@ -144,7 +144,7 @@
  141.38  	</panel>
  141.39  	<panel name="pathfinding_linksets_attributes">
  141.40  		<text name="linksets_attributes_label">
  141.41 -			Seçili bağlantı kümelerinin özelliklerini düzenleyin ve değişiklikleri uygulamak için düğmeye basın
  141.42 +			Yol bulma özelliklerini düzenle
  141.43  		</text>
  141.44  		<text name="walkability_coefficients_label">
  141.45  			Yürüyebilirlik:
   142.1 --- a/indra/newview/skins/default/xui/tr/floater_tos.xml	Thu Nov 30 17:05:57 2017 +0000
   142.2 +++ b/indra/newview/skins/default/xui/tr/floater_tos.xml	Thu Nov 30 17:07:57 2017 +0000
   142.3 @@ -6,13 +6,16 @@
   142.4  	<floater.string name="loading_url">
   142.5  		data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
   142.6  	</floater.string>
   142.7 -	<button label="Devam Et" label_selected="Devam Et" name="Continue"/>
   142.8 -	<button label="İptal" label_selected="İptal" name="Cancel"/>
   142.9 -	<check_box label="Hizmet Koşullarını ve Gizlilik Politikasını Kabul Ediyorum" name="agree_chk"/>
  142.10  	<text name="tos_heading">
  142.11 -		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.
  142.12 +		Lütfen anlaşmazlıkları çözümlemek için tahkim kullanımı ve her türden veya sınıftan feragat talebi gereklilikleri de dahil olmak üzere aşağıdaki Second Life Koşullarını ve Şartlarını, Gizlilik Politikasını ve Hizmet Koşullarını okuyun. [SECOND_LIFE]&apos;ta oturum açmaya devam etmek için bu anlaşmaları kabul etmelisiniz.
  142.13  	</text>
  142.14  	<text name="external_tos_required">
  142.15  		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!
  142.16  	</text>
  142.17 +	<check_box label="Uyuşmazlıkların çözümü gerekliliklerini içeren Second Life Şartlar ve Koşulları, Gizlilik Politikası&apos;nı ve Hizmet Koşulları&apos;nı" name="agree_chk"/>
  142.18 +	<text name="agree_list">
  142.19 +		okudum ve kabul ediyorum.
  142.20 +	</text>
  142.21 +	<button label="Devam Et" label_selected="Devam Et" name="Continue"/>
  142.22 +	<button label="İptal" label_selected="İptal" name="Cancel"/>
  142.23  </floater>
   143.1 --- a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
   143.2 +++ b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
   143.3 @@ -1,8 +1,14 @@
   143.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   143.5 -<menu name="Avatar Icon Menu">
   143.6 +<toggleable_menu name="Avatar Icon Menu">
   143.7  	<menu_item_call label="Profili Göster" name="Show Profile"/>
   143.8  	<menu_item_call label="Aİ Gönder..." name="Send IM"/>
   143.9  	<menu_item_call label="Işınlanma Talep Et" name="Request Teleport"/>
  143.10  	<menu_item_call label="Arkadaş Ekle..." name="Add Friend"/>
  143.11  	<menu_item_call label="Arkadaşı Çıkar..." name="Remove Friend"/>
  143.12 -</menu>
  143.13 +	<context_menu label="Moderatör Seçenekleri" name="Moderator Options">
  143.14 +		<menu_item_check label="Metin sohbetine izin ver" name="AllowTextChat"/>
  143.15 +		<menu_item_call label="Bu katılımcıyı sessize al" name="ModerateVoiceMuteSelected"/>
  143.16 +		<menu_item_call label="Bu katılımcının sesini aç" name="ModerateVoiceUnMuteSelected"/>
  143.17 +	</context_menu>
  143.18 +	<menu_item_call label="Üyeyi yasakla" name="BanMember"/>
  143.19 +</toggleable_menu>
   144.1 --- a/indra/newview/skins/default/xui/tr/menu_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   144.2 +++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   144.3 @@ -75,10 +75,12 @@
   144.4  	<menu_item_call label="Özellikler" name="Properties"/>
   144.5  	<menu_item_call label="Yeniden Adlandır" name="Rename"/>
   144.6  	<menu_item_call label="Varlık UUID&apos;sini Kopyala" name="Copy Asset UUID"/>
   144.7 +	<menu_item_call label="Ana Bölmede Göster" name="Show in Main Panel"/>
   144.8  	<menu_item_call label="Kes" name="Cut"/>
   144.9  	<menu_item_call label="Kopyala" name="Copy"/>
  144.10  	<menu_item_call label="Yapıştır" name="Paste"/>
  144.11  	<menu_item_call label="Bağlantı Olarak Yapıştır" name="Paste As Link"/>
  144.12 +	<menu_item_call label="Bağlantıları Değiştir" name="Replace Links"/>
  144.13  	<menu_item_call label="Sil" name="Delete"/>
  144.14  	<menu_item_call label="Sistem Klasörünü Sil" name="Delete System Folder"/>
  144.15  	<menu_item_call label="Konferans Sohbeti Başlat" name="Conference Chat Folder"/>
   145.1 --- a/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml	Thu Nov 30 17:05:57 2017 +0000
   145.2 +++ b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml	Thu Nov 30 17:07:57 2017 +0000
   145.3 @@ -13,5 +13,6 @@
   145.4  	<menu_item_call label="Paylaş" name="Share"/>
   145.5  	<menu_item_call label="Orijinali Bul" name="Find Original"/>
   145.6  	<menu_item_call label="Tüm Bağlantıları Bul" name="Find All Links"/>
   145.7 +	<menu_item_call label="Bağlantıları Değiştir" name="Replace Links"/>
   145.8  	<menu_item_call label="Çöpü Boşalt" name="empty_trash"/>
   145.9  </toggleable_menu>
   146.1 --- a/indra/newview/skins/default/xui/tr/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
   146.2 +++ b/indra/newview/skins/default/xui/tr/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
   146.3 @@ -2,6 +2,7 @@
   146.4  <menu_bar name="Login Menu">
   146.5  	<menu label="Ben" name="File">
   146.6  		<menu_item_call label="Tercihler..." name="Preferences..."/>
   146.7 +		<menu_item_call label="Pencereyi Kapat" name="Close Window"/>
   146.8  		<menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/>
   146.9  		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
  146.10  	</menu>
   147.1 --- a/indra/newview/skins/default/xui/tr/menu_viewer.xml	Thu Nov 30 17:05:57 2017 +0000
   147.2 +++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml	Thu Nov 30 17:07:57 2017 +0000
   147.3 @@ -116,7 +116,7 @@
   147.4  			<menu_item_call label="Sonraki Parçayı veya Yüzü Dahil Et" name="Include Next Part or Face"/>
   147.5  			<menu_item_call label="Önceki Parçayı veya Yüzü Dahil Et" name="Include Previous Part or Face"/>
   147.6  		</menu>
   147.7 -		<menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linkset_menu_item"/>
   147.8 +		<menu_item_call label="Bölge Nesneleri" name="pathfinding_linkset_menu_item"/>
   147.9  		<menu_item_call label="Seçime Odaklan" name="Focus on Selection"/>
  147.10  		<menu_item_call label="Seçimi Yakınlaştır" name="Zoom to Selection"/>
  147.11  		<menu label="Nesne" name="Object">
  147.12 @@ -136,7 +136,7 @@
  147.13  			<menu_item_call label="Komut Dosyalarını Çalışmıyor Olarak Ayarla" name="Set Scripts to Not Running"/>
  147.14  		</menu>
  147.15  		<menu label="Yol bulma" name="Pathfinding">
  147.16 -			<menu_item_call label="Bağlantı kümeleri..." name="pathfinding_linksets_menu_item"/>
  147.17 +			<menu_item_call label="Bölge Nesneleri" name="pathfinding_linksets_menu_item"/>
  147.18  			<menu_item_call label="Karakterler..." name="pathfinding_characters_menu_item"/>
  147.19  			<menu_item_call label="Görüntüleme / test..." name="pathfinding_console_menu_item"/>
  147.20  			<menu_item_call label="Bölgeyi tekrar kaydet" name="pathfinding_rebake_navmesh_item"/>
   148.1 --- a/indra/newview/skins/default/xui/tr/notifications.xml	Thu Nov 30 17:05:57 2017 +0000
   148.2 +++ b/indra/newview/skins/default/xui/tr/notifications.xml	Thu Nov 30 17:07:57 2017 +0000
   148.3 @@ -3,6 +3,10 @@
   148.4  	<global name="skipnexttime">
   148.5  		Bunu bir daha gösterme
   148.6  	</global>
   148.7 +	<global name="skipnexttimesessiononly">
   148.8 +		Bunu bir daha gösterme 
   148.9 +(mevcut oturum için)
  148.10 +	</global>
  148.11  	<global name="alwayschoose">
  148.12  		Her zaman bu seçeneği seç
  148.13  	</global>
  148.14 @@ -343,7 +347,7 @@
  148.15  		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
  148.16  	</notification>
  148.17  	<notification name="JoinGroupNoCost">
  148.18 -		[NAME] grubuna katılıyorsunuz.
  148.19 +		&lt;nolink&gt;[NAME]&lt;/nolink&gt; grubuna katılıyorsunuz. 
  148.20  Devam etmek istiyor musunuz?
  148.21  		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
  148.22  	</notification>
  148.23 @@ -357,6 +361,40 @@
  148.24  Lütfen 48 saat içinde diğer üyeleri davet edin.
  148.25  		<usetemplate canceltext="İptal" name="okcancelbuttons" notext="İptal" yestext="L$ [COST] ödeyerek grubu oluştur"/>
  148.26  	</notification>
  148.27 +	<notification name="JoinGroupInaccessible">
  148.28 +		Bu gruba erişemezsiniz.
  148.29 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.30 +	</notification>
  148.31 +	<notification name="JoinGroupError">
  148.32 +		Grup üyeliği talebiniz işlenirken hata.
  148.33 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.34 +	</notification>
  148.35 +	<notification name="JoinGroupErrorReason">
  148.36 +		Gruba katılma başarısız: [reason]
  148.37 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.38 +	</notification>
  148.39 +	<notification name="JoinGroupTrialUser">
  148.40 +		Üzgünüz, deneme kullanıcıları gruplara katılamaz.
  148.41 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.42 +	</notification>
  148.43 +	<notification name="JoinGroupMaxGroups">
  148.44 +		&apos;&lt;nolink&gt;[group_name]&lt;/nolink&gt;› grubuna katılamazsınız: 
  148.45 +Zaten [group_count] gruba üyesiniz, maksimum izin verilen sayı [max_groups]&apos;tir
  148.46 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.47 +	</notification>
  148.48 +	<notification name="JoinGroupClosedEnrollment">
  148.49 +		&apos;&lt;nolink&gt;[group_name]&lt;/nolink&gt;› grubuna katılamazsınız: 
  148.50 +Grup artık katılıma açık değil.
  148.51 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.52 +	</notification>
  148.53 +	<notification name="JoinGroupSuccess">
  148.54 +		Gruba eklendiniz.
  148.55 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.56 +	</notification>
  148.57 +	<notification name="JoinGroupInsufficientFunds">
  148.58 +		Gereken L$ [membership_fee] üyelik ücreti aktarılamadı.
  148.59 +		<usetemplate name="okbutton" yestext="Tamam"/>
  148.60 +	</notification>
  148.61  	<notification name="LandBuyPass">
  148.62  		L$ [COST] ödeyerek (&apos;[PARCEL_NAME]&apos;) arazisine [TIME] saat süreyle girebilirsiniz.  Giriş hakkı satın almak istiyor musunuz?
  148.63  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
  148.64 @@ -378,9 +416,9 @@
  148.65  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
  148.66  	</notification>
  148.67  	<notification name="ReturnObjectsDeededToGroup">
  148.68 -		&apos;[NAME]&apos; grubuyla bu arazi parseli üzerinde paylaşılan tüm nesneleri önceki sahiplerinin envanterine iade etmek istediğinize emin misiniz?
  148.69 +		&apos;&lt;nolink&gt;[NAME]&lt;/nolink&gt;&apos; grubuyla bu arazi parseli üzerinde paylaşılan tüm nesneleri önceki sahiplerinin envanterine iade etmek istediğinize emin misiniz? 
  148.70  
  148.71 -*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
  148.72 +*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir! 
  148.73  
  148.74  Nesneler: [N]
  148.75  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
  148.76 @@ -424,7 +462,7 @@
  148.77  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
  148.78  	</notification>
  148.79  	<notification name="ReturnObjectsNotOwnedByGroup">
  148.80 -		Bu arazi parseli üzerinde [NAME] grubuyla PAYLAŞILMAYAN nesneler sahiplerinin envanterine iade edilsin mi?
  148.81 +		Bu arazi parseli üzerinde &lt;nolink&gt;[NAME]&lt;/nolink&gt; grubuyla PAYLAŞILMAYAN nesneler sahiplerinin envanterine iade edilsin mi? 
  148.82  
  148.83  Nesneler: [N]
  148.84  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
  148.85 @@ -472,7 +510,7 @@
  148.86  		Aşağıdaki nedenden dolayı, bir raporun ekran görüntüsü karşıya yüklenirken bir sorun oluştu: [REASON]
  148.87  	</notification>
  148.88  	<notification name="MustAgreeToLogIn">
  148.89 -		[SECOND_LIFE]&apos;ta oturum açmaya devam etmek için Hizmet Sözleşmesi&apos;ni kabul etmelisiniz.
  148.90 +		[SECOND_LIFE]&apos;ta oturum açmaya devam etmek için Second Life Şartlar ve Koşullar&apos;ı, Gizlilik Politikası&apos;nı ve Hizmet Koşulları&apos;nı kabul etmelisiniz.
  148.91  	</notification>
  148.92  	<notification name="CouldNotPutOnOutfit">
  148.93  		Dış görünüm eklenemedi.
  148.94 @@ -725,7 +763,7 @@
  148.95  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Çıkar"/>
  148.96  	</notification>
  148.97  	<notification name="EjectAvatarFromGroup">
  148.98 -		[AVATAR_NAME] adlı kişiyi [GROUP_NAME] grubundan çıkardınız
  148.99 +		[AVATAR_NAME] adlı kişiyi &lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt; grubundan çıkardınız
 148.100  	</notification>
 148.101  	<notification name="AcquireErrorTooManyObjects">
 148.102  		ALMA HATASI: Çok fazla nesne seçilmiş.
 148.103 @@ -1323,18 +1361,18 @@
 148.104  Lütfen daha küçük bir alan seçin ve tekrar deneyin.
 148.105  	</notification>
 148.106  	<notification name="DeedLandToGroup">
 148.107 -		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
 148.108 -Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
 148.109 +		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir. Arazinin satış bedeli sahibine geri ödenmez. 
 148.110 +Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür. 
 148.111  
 148.112 -[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
 148.113 +[AREA] m²&apos;lik bu arazi &apos;&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;&apos; grubuna devredilsin mi?
 148.114  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
 148.115  	</notification>
 148.116  	<notification name="DeedLandToGroupWithContribution">
 148.117 -		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
 148.118 -Bu devir eş zamanlı olarak &apos;[NAME]&apos; adlı kişiden gruba arazi katkısı sağlayacaktır.
 148.119 -Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
 148.120 +		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir. 
 148.121 +Bu devir eş zamanlı olarak &apos;[NAME]&apos; adlı kişiden gruba arazi katkısı sağlayacaktır. 
 148.122 +Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür. 
 148.123  
 148.124 -[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
 148.125 +[AREA] m²&apos;lik bu arazi &apos;&lt;nolink&gt;[GROUP_NAME]&lt;/nolink&gt;&apos; grubuna devredilsin mi?
 148.126  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
 148.127  	</notification>
 148.128  	<notification name="DisplaySetToSafe">
 148.129 @@ -1747,7 +1785,7 @@
 148.130  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
 148.131  	</notification>
 148.132  	<notification name="GroupDepart">
 148.133 -		&quot;[group_name]&quot; grubundan ayrıldınız.
 148.134 +		&apos;&lt;nolink&gt;[group_name]&lt;/nolink&gt;&apos; grubundan ayrıldınız.
 148.135  	</notification>
 148.136  	<notification name="OwnerCannotLeaveGroup">
 148.137  		Gruptan ayrılınamıyor. Gruptan ayrılamazsınız çünkü grubun son sahibisiniz. Lütfen önce sahip rolüne başka bir üye atayın.
 148.138 @@ -2018,6 +2056,10 @@
 148.139  		Gayrimenkul Sözleşmesini değiştirmek istediğinize emin misiniz?
 148.140  		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
 148.141  	</notification>
 148.142 +	<notification name="EstateParcelAccessOverride">
 148.143 +		Bu seçeneğin onay işaretini kaldırmak, parsel sahiplerinin rahatsızlık veren oyuncuları bunu yapmasını engellemek, gizliliği sürdürmek ve yaşı tutmayan sakinleri yetişkin içeriklerden korumak için ekledikleri kısıtlamaları kaldırabilir. Lütfen gerekli olduğunda parsel sahiplerinizle tartışın.
 148.144 +		<usetemplate name="okbutton" yestext="Tamam"/>
 148.145 +	</notification>
 148.146  	<notification name="RegionEntryAccessBlocked">
 148.147  		Ziyaret etmeye çalıştığınız bölge, mevcut tercihlerinizi aşan içeriğe sahip.  Ben &gt; Tercihler &gt; Genel sekmesini kullanarak tercihlerinizi değiştirebilirsiniz.
 148.148  		<usetemplate name="okbutton" yestext="Tamam"/>
 148.149 @@ -2357,7 +2399,17 @@
 148.150  	</notification>
 148.151  	<notification name="DeleteItems">
 148.152  		[QUESTION]
 148.153 -		<usetemplate ignoretext="Öğeleri silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
 148.154 +		<form name="form">
 148.155 +			<ignore name="ignore" text="Öğeleri silmeden önce doğrulayın"/>
 148.156 +			<button name="Yes" text="Tamam"/>
 148.157 +			<button name="No" text="İptal Et"/>
 148.158 +		</form>
 148.159 +	</notification>
 148.160 +	<notification name="DeleteFilteredItems">
 148.161 +		Envanteriniz şu anda filtreli ve silmek üzere olduğunuz öğelerin tümü görünür değil. 
 148.162 +
 148.163 +Öğeyi silmek istediğinize emin misiniz?
 148.164 +		<usetemplate ignoretext="Filtrelenen öğeleri silmeden önce doğrulayın" name="okcancelignore" notext="İptal Et" yestext="Tamam"/>
 148.165  	</notification>
 148.166  	<notification name="ConfirmUnlink">
 148.167  		Bu, geniş bir bağlantı kümeleri seçimi. Bağlantıyı kaldırırsanız tekrar bağlayamayabilirsiniz. Tedbiren, envanterinizdeki bağlantı kümelerinin bir kopyasını almayı isteyebilirsiniz.
 148.168 @@ -2434,13 +2486,17 @@
 148.169  		&apos;[FOLDERNAME]&apos; klasörü bir sistem klasörüdür. Sistem klasörlerini silmek kararsızlığa neden olabilir. Silmek istediğinize emin misiniz?
 148.170  		<usetemplate ignoretext="Bir sistem klasörünü silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
 148.171  	</notification>
 148.172 +	<notification name="PurgeSelectedItems">
 148.173 +		[COUNT] öğe kalıcı olarak silinecektir. Seçilen öğeyi/öğeleri çöp kutunuzdan kalıcı olarak silmek istediğinize emin misiniz?
 148.174 +		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tamam"/>
 148.175 +	</notification>
 148.176  	<notification name="ConfirmEmptyTrash">
 148.177 -		Çöp kutunuzun içeriğini kalıcı olarak silmek istediğinize emin misiniz?
 148.178 -		<usetemplate ignoretext="Envanter Çöp Kutusu klasörünü boşaltmadan önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
 148.179 +		[COUNT] öğe kalıcı olarak silinecektir. Çöp kutunuzun içeriğini kalıcı olarak silmek istediğinize emin misiniz?
 148.180 +		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tamam"/>
 148.181  	</notification>
 148.182  	<notification name="TrashIsFull">
 148.183  		Çöpte yer kalmamış. Bu durum oturum açma sırasında sorun yaşamanıza neden olabilir.
 148.184 -		<usetemplate name="okcancelbuttons" notext="Çöpü daha sonra boşaltacağım" yestext="Çöp kutusunu şimdi boşalt"/>
 148.185 +		<usetemplate name="okcancelbuttons" notext="Çöpü daha sonra boşaltacağım" yestext="Çöp kutusu klasörünü denetle"/>
 148.186  	</notification>
 148.187  	<notification name="ConfirmClearBrowserCache">
 148.188  		Seyahat, web ve arama geçmişinizi silmek istediğinize emin misiniz?
 148.189 @@ -2570,6 +2626,9 @@
 148.190  	<notification name="AddSelfFriend">
 148.191  		Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
 148.192  	</notification>
 148.193 +	<notification name="AddSelfRenderExceptions">
 148.194 +		Kendinizi ödeme istisnaları listesine ekleyemezsiniz.
 148.195 +	</notification>
 148.196  	<notification name="UploadingAuctionSnapshot">
 148.197  		SL dünyası içinde ve web sitesinde yer alan anlık görüntüler karşıya yükleniyor...
 148.198  (Yaklaşık 5 dakika sürecektir.)
 148.199 @@ -2764,8 +2823,8 @@
 148.200  		&apos;[NAME]&apos; adlı Sakinin sahip olduğu seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerine iade edildi.
 148.201  	</notification>
 148.202  	<notification name="GroupObjectsReturned">
 148.203 -		[GROUPNAME] ile paylaşılan seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerinin envanterlerine iade edildi.
 148.204 -Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edildi.
 148.205 +		&lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt; ile paylaşılan seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerinin envanterlerine iade edildi. 
 148.206 +Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edildi. 
 148.207  Gruba devredilen nesnelerden aktarılamayanlar silindi.
 148.208  	</notification>
 148.209  	<notification name="UnOwnedObjectsReturned">
 148.210 @@ -3195,7 +3254,7 @@
 148.211  		</form>
 148.212  	</notification>
 148.213  	<notification name="ScriptDialogGroup">
 148.214 -		[GROUPNAME] grubuna ait &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
 148.215 +		&lt;nolink&gt;[GROUPNAME]&lt;/nolink&gt;&apos;nın &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; 
 148.216  [MESSAGE]
 148.217  		<form name="form">
 148.218  			<button name="Client_Side_Mute" text="Engelle"/>
 148.219 @@ -3242,8 +3301,8 @@
 148.220  		[NAME] adlı kişiye envanter teklif edildi ve otomatik olarak engeli kaldırıldı.
 148.221  	</notification>
 148.222  	<notification name="VoiceInviteGroup">
 148.223 -		[NAME], [GROUP] grubu ile bir Sesli Sohbet&apos;e katıldı.
 148.224 -Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
 148.225 +		[NAME], &lt;nolink&gt;[GROUP]&lt;/nolink&gt; grubu ile bir Sesli Sohbet&apos;e katıldı. 
 148.226 +Aramaya katılmak için Kabul Et&apos;e veya reddetmek için Reddet&apos;e tıklayın. Bu arayanı engellemek için Engelle&apos;ye tıklayın.
 148.227  		<form name="form">
 148.228  			<button name="Accept" text="Kabul Et"/>
 148.229  			<button name="Decline" text="Reddet"/>
 148.230 @@ -3357,6 +3416,9 @@
 148.231  	<notification name="AppearanceToXMLFailed">
 148.232  		Görünüm XML&apos;e kaydedilemedi.
 148.233  	</notification>
 148.234 +	<notification name="SnapshotToComputerFailed">
 148.235 +		Anlık görüntü [PATH] yoluna kaydedilemedi: Disk dolu. [NEED_MEMORY]KB gerekli ancak yalnızca [FREE_MEMORY]KB boş.
 148.236 +	</notification>
 148.237  	<notification name="PresetNotSaved">
 148.238  		Ön ayar ([NAME]) kaydedilirken hata oluştu.
 148.239  	</notification>
 148.240 @@ -3394,9 +3456,14 @@
 148.241  	<notification name="ShareNotification">
 148.242  		Paylaşılacak sakinleri seç.
 148.243  	</notification>
 148.244 +	<notification name="MeshUploadErrorDetails">
 148.245 +		[LABEL] karşıya yüklenemedi: [MESSAGE] 
 148.246 +[DETAILS]Detaylar için SecondLife.log&apos;a bakın
 148.247 +	</notification>
 148.248  	<notification name="MeshUploadError">
 148.249 -		[LABEL] karşıya yüklenemedi: [MESSAGE] [IDENTIFIER]
 148.250 -[DETAILS]Ayrıntılar için bkz. SecondLife.log
 148.251 +		[LABEL] karşıya yüklenemedi: [MESSAGE] 
 148.252 +
 148.253 +Detaylar için SecondLife.log&apos;a bakın
 148.254  	</notification>
 148.255  	<notification name="MeshUploadPermError">
 148.256  		Karşıya örgü yükleme izinleri talep edilirken hata oluştu.
   149.1 --- a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   149.2 +++ b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   149.3 @@ -12,10 +12,17 @@
   149.4  	<text name="ItemcountText">
   149.5  		Ögeler:
   149.6  	</text>
   149.7 -	<filter_editor label="Envanteri Filtrele" name="inventory search editor"/>
   149.8 +	<filter_editor label="Arama metnini gir" name="inventory search editor"/>
   149.9 +	<combo_box name="search_type">
  149.10 +		<item label="Ad" name="Name" value="search_by_name"/>
  149.11 +		<item label="Oluşturan" name="Creator" value="search_by_creator"/>
  149.12 +		<item label="Açıklama" name="Description" value="search_by_description"/>
  149.13 +		<item label="UUID" name="UUID" value="search_by_UUID"/>
  149.14 +	</combo_box>
  149.15  	<tab_container name="inventory filter tabs">
  149.16  		<inventory_panel label="ENVANTERİM" name="All Items"/>
  149.17  		<recent_inventory_panel label="SON" name="Recent Items"/>
  149.18 +		<inventory_panel label="GİYİLEN" name="Worn Items"/>
  149.19  	</tab_container>
  149.20  	<layout_stack name="bottom_panel">
  149.21  		<layout_panel name="options_gear_btn_panel">
   150.1 --- a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml	Thu Nov 30 17:05:57 2017 +0000
   150.2 +++ b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml	Thu Nov 30 17:07:57 2017 +0000
   150.3 @@ -6,7 +6,7 @@
   150.4  	<text name="Cache:">
   150.5  		Önbellek:
   150.6  	</text>
   150.7 -	<spinner label="Önbellek boyutu (256-9984 MB)" name="cachesizespinner"/>
   150.8 +	<spinner label="Önbellek büyüklüğü (256 - 9984MB)" name="cachesizespinner"/>
   150.9  	<text name="text_box5">
  150.10  		MB
  150.11  	</text>
   151.1 --- a/indra/newview/skins/default/xui/tr/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   151.2 +++ b/indra/newview/skins/default/xui/tr/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   151.3 @@ -15,38 +15,36 @@
   151.4  	<text name="estate_owner">
   151.5  		(bilinmiyor)
   151.6  	</text>
   151.7 -	<check_box label="Küresel Saati Kullan" name="use_global_time_check"/>
   151.8 -	<check_box label="Sabit Güneş" name="fixed_sun_check"/>
   151.9 -	<slider label="Faz" name="sun_hour_slider"/>
  151.10 -	<check_box label="Kamusal Erişime İzin Ver" name="externally_visible_check"/>
  151.11 -	<text name="Only Allow">
  151.12 -		Sadece şu Sakinlere erişim izni verin:
  151.13 -	</text>
  151.14 -	<check_box label="Ödeme bilgileri kayıtlı" name="limit_payment" tool_tip="Sakinlerin bu gayrimenkule erişebilmesi için ödeme bilgilerinin kayıtlı olması gerekir.  Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
  151.15 -	<check_box label="18 veya üzeri bir yaşta" name="limit_age_verified" tool_tip="Sakinlerin bu gayrimenkule erişebilmesi için 18 veya üzeri bir yaşta olmaları gerekir. Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
  151.16 +	<radio_group name="externally_visible_radio">
  151.17 +		<radio_item label="Yalnızca aşağıda listelenen sakinlere ve gruplara izin ver" name="estate_restricted_access"/>
  151.18 +		<radio_item label="Herkes ziyaret edebilir" name="estate_public_access"/>
  151.19 +	</radio_group>
  151.20 +	<check_box label="18 yaşından büyük olmalıdır" name="limit_age_verified" tool_tip="Sakinlerin bu gayrimenkule erişebilmesi için 18 veya üzeri bir yaşta olmaları gerekir. Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
  151.21 +	<check_box label="Dosyadaki ödeme bilgisine sahip olmalıdır" name="limit_payment" tool_tip="Sakinlerin bu gayrimenkule erişebilmesi için ödeme bilgilerinin kayıtlı olması gerekir.  Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
  151.22 +	<check_box label="Parsel sahipleri daha kısıtlayıcı olabilir" name="parcel_access_override"/>
  151.23  	<check_box label="Sesli Sohbete İzin Ver" name="voice_chat_check"/>
  151.24  	<check_box label="Doğrudan Işınlamaya İzin Ver" name="allow_direct_teleport"/>
  151.25  	<button label="Uygula" name="apply_btn"/>
  151.26 -	<button label="Gayrimenkule İleti Gönder..." name="message_estate_btn"/>
  151.27 -	<button label="Sakinlerini Gayrimenkulden Çıkar..." name="kick_user_from_estate_btn"/>
  151.28  	<text name="estate_manager_label">
  151.29  		Gayrimenkul Yöneticileri:
  151.30  	</text>
  151.31 +	<text name="allow_resident_label">
  151.32 +		Her zaman izin verilen:
  151.33 +	</text>
  151.34 +	<button label="Ekle..." name="add_estate_manager_btn"/>
  151.35  	<button label="Kaldır..." name="remove_estate_manager_btn"/>
  151.36 -	<button label="Ekle..." name="add_estate_manager_btn"/>
  151.37 -	<text name="allow_resident_label">
  151.38 -		İzin verilen Sakinler:
  151.39 +	<button label="Ekle..." name="add_allowed_avatar_btn"/>
  151.40 +	<button label="Kaldır..." name="remove_allowed_avatar_btn"/>
  151.41 +	<text name="allow_group_label">
  151.42 +		Her zaman izin verilen gruplar:
  151.43  	</text>
  151.44 -	<button label="Kaldır..." name="remove_allowed_avatar_btn"/>
  151.45 -	<button label="Ekle..." name="add_allowed_avatar_btn"/>
  151.46 -	<text name="allow_group_label">
  151.47 -		İzin verilen Gruplar:
  151.48 +	<text name="ban_resident_label">
  151.49 +		Her zaman engellenen:
  151.50  	</text>
  151.51 +	<button label="Ekle..." name="add_allowed_group_btn"/>
  151.52  	<button label="Kaldır..." name="remove_allowed_group_btn"/>
  151.53 -	<button label="Ekle..." name="add_allowed_group_btn"/>
  151.54 -	<text name="ban_resident_label">
  151.55 -		Yasaklı Sakinler:
  151.56 -	</text>
  151.57 +	<button label="Ekle..." name="add_banned_avatar_btn"/>
  151.58  	<button label="Kaldır..." name="remove_banned_avatar_btn"/>
  151.59 -	<button label="Ekle..." name="add_banned_avatar_btn"/>
  151.60 +	<button label="Gayrimenkule İleti Gönder..." name="message_estate_btn"/>
  151.61 +	<button label="Sakinlerini Gayrimenkulden Çıkar..." name="kick_user_from_estate_btn"/>
  151.62  </panel>
   152.1 --- a/indra/newview/skins/default/xui/tr/panel_tools_texture.xml	Thu Nov 30 17:05:57 2017 +0000
   152.2 +++ b/indra/newview/skins/default/xui/tr/panel_tools_texture.xml	Thu Nov 30 17:07:57 2017 +0000
   152.3 @@ -26,6 +26,7 @@
   152.4  		<radio_item label="Yumruluk (normal)" name="Bumpiness (normal)" value="1"/>
   152.5  		<radio_item label="Parıldama (yansıtan)" name="Shininess (specular)" value="2"/>
   152.6  	</radio_group>
   152.7 +	<check_box initial_value="false" label="Kilit tekrarı" name="checkbox_sync_settings" tool_tip="Tüm harita tekrarlarını aynı anda ayarla"/>
   152.8  	<texture_picker label="Doku" name="texture control" tool_tip="Bir resim seçmek için tıklayın"/>
   152.9  	<text name="label alphamode">
  152.10  		Alfa modu
   153.1 --- a/indra/newview/skins/default/xui/tr/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
   153.2 +++ b/indra/newview/skins/default/xui/tr/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
   153.3 @@ -38,7 +38,7 @@
   153.4  		<action description="&apos;Yüzeyi Düzenle&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yüzey düzenleme yapabilir." name="land allow edit land" value="23"/>
   153.5  		<action description="&apos;Uç&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde uçabilir." name="land allow fly" value="24"/>
   153.6  		<action description="&apos;Nesneleri Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde nesne oluşturabilirler." name="land allow create" value="25"/>
   153.7 -		<action description="&apos;Yer İmi Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yer imi oluşturabilirler." name="land allow landmark" value="26"/>
   153.8 +		<action description="İniş noktasını yoksay" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, bir iniş noktası Arazi Hakkında &gt; Seçenekler sekmesinde ayarlanmış olsa da grubun sahip olduğu parseli bir telefona yönlendirebilirler." name="land allow direct teleport" value="26"/>
   153.9  		<action description="Grup arazisi üzerinde &apos;Ana Konumu Burası Olarak Seç&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, bu gruba devrediilmiş bir parsel üzerinde Dünya menüsü &gt; Yer imleri &gt; Ana Konumu Burası Olarak Seç seçeneğini kullanabilirler." name="land allow set home" value="28"/>
  153.10  		<action description="Grup arazisi üzerinde &apos;Etkinliğe Ev Sahipliği Yap&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler bir etkinliğe ev sahipliği yapmak için grubun sahip olduğu parselleri mekan olarak seçebilirler." name="land allow host event" value="41"/>
  153.11  	</action_set>
   154.1 --- a/indra/newview/skins/default/xui/tr/strings.xml	Thu Nov 30 17:05:57 2017 +0000
   154.2 +++ b/indra/newview/skins/default/xui/tr/strings.xml	Thu Nov 30 17:07:57 2017 +0000
   154.3 @@ -253,9 +253,8 @@
   154.4  Pasifik Saati ile [TIME].
   154.5  	</string>
   154.6  	<string name="LoginFailedAccountDisabled">
   154.7 -		Talebinizi şu anda tamamlayamıyoruz.
   154.8 -Lütfen yardım almak için Second Life destek bölümüne başvurun: http://secondlife.com/support
   154.9 -Eğer parolanızı değiştiremiyorsanız, lütfen şu numarayı arayın: (866) 476-9763.
  154.10 +		Talebinizi şu anda tamamlayamıyoruz. 
  154.11 +Lütfen yardım almak için http://support.secondlife.com adresinden Second Life destek bölümüyle iletişime geçin.
  154.12  	</string>
  154.13  	<string name="LoginFailedTransformError">
  154.14  		Oturum açılması sırasında veri tutarsızlığı saptandı.
  154.15 @@ -693,6 +692,19 @@
  154.16  	<string name="AssetErrorUnknownStatus">
  154.17  		Bilinmeyen durum
  154.18  	</string>
  154.19 +	<string name="AssetUploadServerUnreacheble">
  154.20 +		Hizmet ulaşılamaz.
  154.21 +	</string>
  154.22 +	<string name="AssetUploadServerDifficulties">
  154.23 +		Sunucu beklenmeyen zorluklar yaşıyor.
  154.24 +	</string>
  154.25 +	<string name="AssetUploadServerUnavaliable">
  154.26 +		Hizmet kullanılabilir değil veya karşıya yükleme zaman aşımına ulaşıldı.
  154.27 +	</string>
  154.28 +	<string name="AssetUploadRequestInvalid">
  154.29 +		Karşıya yükleme talebinde hata. Bu sorunu çözmek için lütfen 
  154.30 +http://secondlife.com/support adresini ziyaret edin.
  154.31 +	</string>
  154.32  	<string name="texture">
  154.33  		doku
  154.34  	</string>
  154.35 @@ -2187,10 +2199,19 @@
  154.36  		[OWNER] adına yönettiğiniz tüm gayrimenkuller
  154.37  	</string>
  154.38  	<string name="RegionInfoAllowedResidents">
  154.39 -		İzin verilen Sakinler: ([ALLOWEDAGENTS], maks [MAXACCESS])
  154.40 +		Her zaman izin verilen: ([ALLOWEDAGENTS], maks [MAXACCESS])
  154.41  	</string>
  154.42  	<string name="RegionInfoAllowedGroups">
  154.43 -		İzin verilen gruplar: ([ALLOWEDGROUPS], maks [MAXACCESS])
  154.44 +		Her zaman izin verilen gruplar: ([ALLOWEDGROUPS], maks [MAXACCESS])
  154.45 +	</string>
  154.46 +	<string name="RegionInfoBannedResidents">
  154.47 +		Her zaman engellenen: ([BANNEDAGENTS], maks [MAXBANNED])
  154.48 +	</string>
  154.49 +	<string name="RegionInfoListTypeAllowedAgents">
  154.50 +		Her zaman izin verilen
  154.51 +	</string>
  154.52 +	<string name="RegionInfoListTypeBannedAgents">
  154.53 +		Her zaman engellenen
  154.54  	</string>
  154.55  	<string name="ScriptLimitsParcelScriptMemory">
  154.56  		Parsel Komut Dosyası Belleği
   155.1 --- a/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml	Thu Nov 30 17:05:57 2017 +0000
   155.2 +++ b/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml	Thu Nov 30 17:07:57 2017 +0000
   155.3 @@ -3,6 +3,9 @@
   155.4  	<floater.string name="not_found">
   155.5  		查無「[TEXT]」
   155.6  	</floater.string>
   155.7 +	<floater.string name="not_found_text">
   155.8 +		未發現居民。
   155.9 +	</floater.string>
  155.10  	<floater.string name="no_one_near">
  155.11  		附近無人
  155.12  	</floater.string>
   156.1 --- a/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml	Thu Nov 30 17:05:57 2017 +0000
   156.2 +++ b/indra/newview/skins/default/xui/zh/floater_avatar_render_settings.xml	Thu Nov 30 17:07:57 2017 +0000
   156.3 @@ -7,5 +7,6 @@
   156.4  	<name_list name="render_settings_list">
   156.5  		<name_list.columns label="名稱" name="name"/>
   156.6  		<name_list.columns label="呈像設定" name="setting"/>
   156.7 +		<name_list.columns label="新增日期" name="timestamp"/>
   156.8  	</name_list>
   156.9  </floater>
   157.1 --- a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml	Thu Nov 30 17:05:57 2017 +0000
   157.2 +++ b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml	Thu Nov 30 17:07:57 2017 +0000
   157.3 @@ -15,6 +15,8 @@
   157.4  	<button label="全部" label_selected="全部" name="All"/>
   157.5  	<button label="無" label_selected="無" name="None"/>
   157.6  	<check_box label="固定顯示資料夾" name="check_show_empty"/>
   157.7 +	<check_box label="我建立的" name="check_created_by_me"/>
   157.8 +	<check_box label="其他人所建立" name="check_created_by_others"/>
   157.9  	<check_box label="自上次登出" name="check_since_logoff"/>
  157.10  	<text name="- OR -">
  157.11  		- 或 -
   158.1 --- a/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml	Thu Nov 30 17:05:57 2017 +0000
   158.2 +++ b/indra/newview/skins/default/xui/zh/floater_pathfinding_linksets.xml	Thu Nov 30 17:07:57 2017 +0000
   158.3 @@ -1,5 +1,5 @@
   158.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   158.5 -<floater name="floater_pathfinding_linksets" title="尋徑聯結集">
   158.6 +<floater name="floater_pathfinding_linksets" title="地區物件">
   158.7  	<floater.string name="messaging_get_inprogress">
   158.8  		尋徑聯結集查詢中…
   158.9  	</floater.string>
  158.10 @@ -16,7 +16,7 @@
  158.11  		沒有尋徑聯結集。
  158.12  	</floater.string>
  158.13  	<floater.string name="messaging_complete_available">
  158.14 -		從 [NUM_TOTAL] 個聯結集中選取了 [NUM_SELECTED] 個。
  158.15 +		從[NUM_TOTAL]個中選取了[NUM_SELECTED]個。
  158.16  	</floater.string>
  158.17  	<floater.string name="messaging_not_enabled">
  158.18  		這地區並未啟用尋徑。
  158.19 @@ -118,7 +118,7 @@
  158.20  			<scroll_list.columns label="有腳本" name="scripted"/>
  158.21  			<scroll_list.columns label="衝擊" name="land_impact"/>
  158.22  			<scroll_list.columns label="距離" name="dist_from_you"/>
  158.23 -			<scroll_list.columns label="聯結集的使用" name="linkset_use"/>
  158.24 +			<scroll_list.columns label="尋徑所用" name="linkset_use"/>
  158.25  			<scroll_list.columns label="A %" name="a_percent"/>
  158.26  			<scroll_list.columns label="B %" name="b_percent"/>
  158.27  			<scroll_list.columns label="C %" name="c_percent"/>
  158.28 @@ -133,7 +133,7 @@
  158.29  	</panel>
  158.30  	<panel name="pathfinding_linksets_actions">
  158.31  		<text name="linksets_actions_label">
  158.32 -			對所選聯結集採取的動作(如果連結集從虛擬世界移除,其屬性恐會遺失):
  158.33 +			對所選採取的動作
  158.34  		</text>
  158.35  		<check_box label="顯示指標" name="show_beacon"/>
  158.36  		<button label="取得" name="take_objects"/>
  158.37 @@ -144,7 +144,7 @@
  158.38  	</panel>
  158.39  	<panel name="pathfinding_linksets_attributes">
  158.40  		<text name="linksets_attributes_label">
  158.41 -			編輯所選聯結集的屬性,並按按鈕啟用變更
  158.42 +			編輯尋徑屬性
  158.43  		</text>
  158.44  		<text name="walkability_coefficients_label">
  158.45  			可行走性:
   159.1 --- a/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml	Thu Nov 30 17:05:57 2017 +0000
   159.2 +++ b/indra/newview/skins/default/xui/zh/menu_avatar_icon.xml	Thu Nov 30 17:07:57 2017 +0000
   159.3 @@ -1,8 +1,14 @@
   159.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   159.5 -<menu name="Avatar Icon Menu">
   159.6 +<toggleable_menu name="Avatar Icon Menu">
   159.7  	<menu_item_call label="察看檔案" name="Show Profile"/>
   159.8  	<menu_item_call label="送出 IM..." name="Send IM"/>
   159.9  	<menu_item_call label="要求瞬間傳送" name="Request Teleport"/>
  159.10  	<menu_item_call label="加為朋友..." name="Add Friend"/>
  159.11  	<menu_item_call label="移除朋友..." name="Remove Friend"/>
  159.12 -</menu>
  159.13 +	<context_menu label="主持人選項" name="Moderator Options">
  159.14 +		<menu_item_check label="允許文字聊天" name="AllowTextChat"/>
  159.15 +		<menu_item_call label="將此參與者消音" name="ModerateVoiceMuteSelected"/>
  159.16 +		<menu_item_call label="取消對此一參與者的消音" name="ModerateVoiceUnMuteSelected"/>
  159.17 +	</context_menu>
  159.18 +	<menu_item_call label="封鎖成員" name="BanMember"/>
  159.19 +</toggleable_menu>
   160.1 --- a/indra/newview/skins/default/xui/zh/menu_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   160.2 +++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   160.3 @@ -75,10 +75,12 @@
   160.4  	<menu_item_call label="屬性" name="Properties"/>
   160.5  	<menu_item_call label="更名" name="Rename"/>
   160.6  	<menu_item_call label="覆製資產 UUID" name="Copy Asset UUID"/>
   160.7 +	<menu_item_call label="顯示在主面板" name="Show in Main Panel"/>
   160.8  	<menu_item_call label="剪下" name="Cut"/>
   160.9  	<menu_item_call label="恚庨" name="Copy"/>
  160.10  	<menu_item_call label="貼上" name="Paste"/>
  160.11  	<menu_item_call label="以連結格式貼上" name="Paste As Link"/>
  160.12 +	<menu_item_call label="取代連結" name="Replace Links"/>
  160.13  	<menu_item_call label="刪除" name="Delete"/>
  160.14  	<menu_item_call label="刪除系統資料夾" name="Delete System Folder"/>
  160.15  	<menu_item_call label="發起多方通話" name="Conference Chat Folder"/>
   161.1 --- a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml	Thu Nov 30 17:05:57 2017 +0000
   161.2 +++ b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml	Thu Nov 30 17:07:57 2017 +0000
   161.3 @@ -13,5 +13,6 @@
   161.4  	<menu_item_call label="分享" name="Share"/>
   161.5  	<menu_item_call label="尋找原件" name="Find Original"/>
   161.6  	<menu_item_call label="尋找全部聯結" name="Find All Links"/>
   161.7 +	<menu_item_call label="取代連結" name="Replace Links"/>
   161.8  	<menu_item_call label="清空垃圾筒" name="empty_trash"/>
   161.9  </toggleable_menu>
   162.1 --- a/indra/newview/skins/default/xui/zh/menu_login.xml	Thu Nov 30 17:05:57 2017 +0000
   162.2 +++ b/indra/newview/skins/default/xui/zh/menu_login.xml	Thu Nov 30 17:07:57 2017 +0000
   162.3 @@ -2,6 +2,7 @@
   162.4  <menu_bar name="Login Menu">
   162.5  	<menu label="我自己" name="File">
   162.6  		<menu_item_call label="偏好設定…" name="Preferences..."/>
   162.7 +		<menu_item_call label="關閉視窗" name="Close Window"/>
   162.8  		<menu_item_check label="顯示格線挑選器" name="Show Grid Picker"/>
   162.9  		<menu_item_call label="退出 [APP_NAME]" name="Quit"/>
  162.10  	</menu>
   163.1 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml	Thu Nov 30 17:05:57 2017 +0000
   163.2 +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml	Thu Nov 30 17:07:57 2017 +0000
   163.3 @@ -116,7 +116,7 @@
   163.4  			<menu_item_call label="包括下一部位或臉" name="Include Next Part or Face"/>
   163.5  			<menu_item_call label="包括上一部位或臉" name="Include Previous Part or Face"/>
   163.6  		</menu>
   163.7 -		<menu_item_call label="聯結集…" name="pathfinding_linkset_menu_item"/>
   163.8 +		<menu_item_call label="地區物件" name="pathfinding_linkset_menu_item"/>
   163.9  		<menu_item_call label="聚焦於所選部位" name="Focus on Selection"/>
  163.10  		<menu_item_call label="縮放至所選部位" name="Zoom to Selection"/>
  163.11  		<menu label="物件" name="Object">
  163.12 @@ -136,7 +136,7 @@
  163.13  			<menu_item_call label="設定腳本為非執行中" name="Set Scripts to Not Running"/>
  163.14  		</menu>
  163.15  		<menu label="尋徑" name="Pathfinding">
  163.16 -			<menu_item_call label="聯結集…" name="pathfinding_linksets_menu_item"/>
  163.17 +			<menu_item_call label="地區物件" name="pathfinding_linksets_menu_item"/>
  163.18  			<menu_item_call label="角色…" name="pathfinding_characters_menu_item"/>
  163.19  			<menu_item_call label="察看 / 測試…" name="pathfinding_console_menu_item"/>
  163.20  			<menu_item_call label="重新產出地區" name="pathfinding_rebake_navmesh_item"/>
   164.1 --- a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml	Thu Nov 30 17:05:57 2017 +0000
   164.2 +++ b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml	Thu Nov 30 17:07:57 2017 +0000
   164.3 @@ -12,10 +12,17 @@
   164.4  	<text name="ItemcountText">
   164.5  		物品:
   164.6  	</text>
   164.7 -	<filter_editor label="收納區過濾器" name="inventory search editor"/>
   164.8 +	<filter_editor label="輸入搜尋文字" name="inventory search editor"/>
   164.9 +	<combo_box name="search_type">
  164.10 +		<item label="名稱" name="Name" value="search_by_name"/>
  164.11 +		<item label="創造者" name="Creator" value="search_by_creator"/>
  164.12 +		<item label="描述" name="Description" value="search_by_description"/>
  164.13 +		<item label="UUID" name="UUID" value="search_by_UUID"/>
  164.14 +	</combo_box>
  164.15  	<tab_container name="inventory filter tabs">
  164.16  		<inventory_panel label="我的收納區" name="All Items"/>
  164.17  		<recent_inventory_panel label="最近" name="Recent Items"/>
  164.18 +		<inventory_panel label="已穿戴" name="Worn Items"/>
  164.19  	</tab_container>
  164.20  	<layout_stack name="bottom_panel">
  164.21  		<layout_panel name="options_gear_btn_panel">
   165.1 --- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml	Thu Nov 30 17:05:57 2017 +0000
   165.2 +++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml	Thu Nov 30 17:07:57 2017 +0000
   165.3 @@ -1,32 +1,111 @@
   165.4  <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   165.5  <panel label="文字聊天" name="chat">
   165.6 -	<tab_container name="tabs">
   165.7 -		<panel name="ChatVisuals">
   165.8 -			<radio_group name="chat_console_font_size">
   165.9 -				<radio_item label="小" name="consradio"/>
  165.10 -				<radio_item label="中" name="consradio2"/>
  165.11 -				<radio_item label="大" name="consradio3"/>
  165.12 -			</radio_group>
  165.13 -			<check_box label="聊天泡泡" name="bubble_text_chat"/>
  165.14 -		</panel>
  165.15 -		<panel name="ChatWindows">
  165.16 -			<text name="font_size">
  165.17 -				字型大小:
  165.18 -			</text>
  165.19 -			<radio_group name="chat_font_size">
  165.20 -				<radio_item label="小" name="radio"/>
  165.21 -				<radio_item label="中" name="radio2"/>
  165.22 -				<radio_item label="大" name="radio3"/>
  165.23 -			</radio_group>
  165.24 -		</panel>
  165.25 -		<panel name="ChatTyping">
  165.26 -			<button name="autoreplace_showgui" label="自動取代…"/>
  165.27 -			<button name="spellcheck_showgui" label="拼字檢查…"/>
  165.28 -			<button label="翻譯…" name="translation_settings_btn"/>
  165.29 -			<check_box label="聊天時呈現打字動作" name="play_typing_animation"/>
  165.30 -		</panel>
  165.31 -		<panel name="ChatNotices">
  165.32 -			<check_box label="當我離線時將收到的 IM 訊息郵寄給我 ([EMAIL])" name="send_im_to_email"/>
  165.33 -		</panel>
  165.34 -	</tab_container>
  165.35 +	<check_box initial_value="true" label="在附近聊天中,自動完成姿勢" name="auto_complete_gestures"/>
  165.36 +	<panel name="general_chat_settings">
  165.37 +		<check_box initial_value="true" label="聊天時呈現打字動作" name="play_typing_animation"/>
  165.38 +		<check_box label="當我離線時將收到的 IM 訊息郵寄給我" name="send_im_to_email"/>
  165.39 +		<check_box label="只允許我的朋友和群組與我通話或 IM 給我" name="voice_call_friends_only_check"/>
  165.40 +		<text name="font_size">
  165.41 +			字型大小:
  165.42 +		</text>
  165.43 +		<combo_box name="chat_font_size">
  165.44 +			<item label="小" name="Small" value="0"/>
  165.45 +			<item label="中" name="Medium" value="1"/>
  165.46 +			<item label="大" name="Large" value="2"/>
  165.47 +		</combo_box>
  165.48 +		<check_box label="聊天泡泡" name="bubble_text_chat"/>
  165.49 +	</panel>
  165.50 +	<panel name="im_notification_settings">
  165.51 +		<text name="friend_ims">
  165.52 +			朋友 IM:
  165.53 +		</text>
  165.54 +		<combo_box name="FriendIMOptions">
  165.55 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
  165.56 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
  165.57 +			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
  165.58 +			<item label="無動作" name="NoAction" value="noaction"/>
  165.59 +		</combo_box>
  165.60 +		<check_box label="播放聲音" name="play_sound_friend_im"/>
  165.61 +		<text name="non_friend_ims">
  165.62 +			非朋友 IM:
  165.63 +		</text>
  165.64 +		<combo_box name="NonFriendIMOptions">
  165.65 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
  165.66 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
  165.67 +			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
  165.68 +			<item label="無動作" name="NoAction" value="noaction"/>
  165.69 +		</combo_box>
  165.70 +		<check_box label="播放聲音" name="play_sound_non_friend_im"/>
  165.71 +		<text name="conference_ims">
  165.72 +			多方交談 IM:
  165.73 +		</text>
  165.74 +		<combo_box name="ConferenceIMOptions">
  165.75 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
  165.76 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
  165.77 +			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
  165.78 +			<item label="無動作" name="NoAction" value="noaction"/>
  165.79 +		</combo_box>
  165.80 +		<check_box label="播放聲音" name="play_sound_conference_im"/>
  165.81 +		<text name="group_chat">
  165.82 +			群組聊天:
  165.83 +		</text>
  165.84 +		<combo_box name="GroupChatOptions">
  165.85 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
  165.86 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
  165.87 +			<item label="Flash 工具列按鈕" name="FlashToolbarButton" value="flash"/>
  165.88 +			<item label="無動作" name="NoAction" value="noaction"/>
  165.89 +		</combo_box>
  165.90 +		<check_box label="播放聲音" name="play_sound_group_chat_im"/>
  165.91 +		<text name="nearby_chat">
  165.92 +			附近的聊天:
  165.93 +		</text>
  165.94 +		<combo_box name="NearbyChatOptions">
  165.95 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
  165.96 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
  165.97 +			<item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/>
  165.98 +			<item label="無動作" name="NoAction" value="noaction"/>
  165.99 +		</combo_box>
 165.100 +		<check_box label="播放聲音" name="play_sound_nearby_chat_im"/>
 165.101 +		<text name="object_ims">
 165.102 +			來自物件的 IM:
 165.103 +		</text>
 165.104 +		<combo_box name="ObjectIMOptions">
 165.105 +			<item label="開啟交談視窗" name="OpenConversationsWindow" value="openconversations"/>
 165.106 +			<item label="以突顯式視窗顯示訊息" name="PopUpMessage" value="toast"/>
 165.107 +			<item label="Flash 工具列按鈕" name="FlashToolBarButton" value="flash"/>
 165.108 +			<item label="無動作" name="NoAction" value="noaction"/>
 165.109 +		</combo_box>
 165.110 +		<check_box label="播放聲音" name="play_sound_object_im"/>
 165.111 +		<text name="notifications_alert">
 165.112 +			若要暫時停止所有通知,請設定「溝通 &gt; 請勿打擾」。
 165.113 +		</text>
 165.114 +	</panel>
 165.115 +	<panel name="play_sound_settings">
 165.116 +		<text name="play_sound">
 165.117 +			播放聲音:
 165.118 +		</text>
 165.119 +		<check_box label="新交談" name="new_conversation"/>
 165.120 +		<check_box label="語音通話來電" name="incoming_voice_call"/>
 165.121 +		<check_box label="瞬間傳送邀請" name="teleport_offer"/>
 165.122 +		<check_box label="收納物品贈送" name="inventory_offer"/>
 165.123 +	</panel>
 165.124 +	<panel name="log_settings">
 165.125 +		<text name="logging_label">
 165.126 +			儲存:
 165.127 +		</text>
 165.128 +		<combo_box name="conversation_log_combo">
 165.129 +			<item label="活動記錄和交談記錄" name="log_and_transcripts" value="2"/>
 165.130 +			<item label="僅活動記錄" name="log_only" value="1"/>
 165.131 +			<item label="沒有活動記錄或交談記錄" name="no_log_or_transcript" value="0"/>
 165.132 +		</combo_box>
 165.133 +		<button label="清空記錄…" name="clear_log"/>
 165.134 +		<button label="刪除交談內容記錄…" name="delete_transcripts"/>
 165.135 +		<text name="log_location_label">
 165.136 +			位置:
 165.137 +		</text>
 165.138 +		<button label="瀏覽…" label_selected="瀏覽" name="log_path_button"/>
 165.139 +	</panel>
 165.140 +	<button label="翻譯…" name="ok_btn"/>
 165.141 +	<button label="自動取代…" name="autoreplace_showgui"/>
 165.142 +	<button label="拼字檢查…" name="spellcheck_showgui"/>
 165.143  </panel>
   166.1 --- a/indra/newview/skins/default/xui/zh/panel_region_estate.xml	Thu Nov 30 17:05:57 2017 +0000
   166.2 +++ b/indra/newview/skins/default/xui/zh/panel_region_estate.xml	Thu Nov 30 17:07:57 2017 +0000
   166.3 @@ -15,38 +15,36 @@
   166.4  	<text name="estate_owner">
   166.5  		(未知)
   166.6  	</text>
   166.7 -	<check_box label="使用全域時間" name="use_global_time_check"/>
   166.8 -	<check_box label="固定太陽" name="fixed_sun_check"/>
   166.9 -	<slider label="相位" name="sun_hour_slider"/>
  166.10 -	<check_box label="允許公開出入" name="externally_visible_check"/>
  166.11 -	<text name="Only Allow">
  166.12 -		僅允許符合以下條件的居民進入:
  166.13 -	</text>
  166.14 -	<check_box label="已經預留付款資料" name="limit_payment" tool_tip="居民必須提供付款資料才能進入這領地。  參閱 [SUPPORT_SITE] 獲取進一步資訊。"/>
  166.15 -	<check_box label="已年滿 18 歲" name="limit_age_verified" tool_tip="居民必須年滿 18 歲才能進入這領地。 參閱 [SUPPORT_SITE] 獲取進一步資訊。"/>
  166.16 +	<radio_group name="externally_visible_radio">
  166.17 +		<radio_item label="只允許下列的居民和群組" name="estate_restricted_access"/>
  166.18 +		<radio_item label="任何人都可造訪" name="estate_public_access"/>
  166.19 +	</radio_group>
  166.20 +	<check_box label="必須滿18歲" name="limit_age_verified" tool_tip="居民必須年滿 18 歲才能進入這領地。 參閱 [SUPPORT_SITE] 獲取進一步資訊。"/>
  166.21 +	<check_box label="須具備預留的付款資料" name="limit_payment" tool_tip="居民必須提供付款資料才能進入這領地。  參閱 [SUPPORT_SITE] 獲取進一步資訊。"/>
  166.22 +	<check_box label="地段所有人可能施加更多限制" name="parcel_access_override"/>
  166.23  	<check_box label="允許語音聊天" name="voice_chat_check"/>
  166.24  	<check_box label="允許直接瞬間傳送" name="allow_direct_teleport"/>
  166.25  	<button label="套用" name="apply_btn"/>
  166.26 -	<button label="送出訊息到領地..." name="message_estate_btn"/>
  166.27 -	<button label="由領地將居民踢出..." name="kick_user_from_estate_btn"/>
  166.28  	<text name="estate_manager_label">
  166.29  		領地管理員:
  166.30  	</text>
  166.31 +	<text name="allow_resident_label">
  166.32 +		永遠允許:
  166.33 +	</text>
  166.34 +	<button label="添加..." name="add_estate_manager_btn"/>
  166.35  	<button label="移除..." name="remove_estate_manager_btn"/>
  166.36 -	<button label="添加..." name="add_estate_manager_btn"/>
  166.37 -	<text name="allow_resident_label">
  166.38 -		允許的居民:
  166.39 +	<button label="添加..." name="add_allowed_avatar_btn"/>
  166.40 +	<button label="移除..." name="remove_allowed_avatar_btn"/>
  166.41 +	<text name="allow_group_label">
  166.42 +		永遠允許的群組:
  166.43  	</text>
  166.44 -	<button label="移除..." name="remove_allowed_avatar_btn"/>
  166.45 -	<button label="添加..." name="add_allowed_avatar_btn"/>
  166.46 -	<text name="allow_group_label">
  166.47 -		允許的群組:
  166.48 +	<text name="ban_resident_label">
  166.49 +		永遠封鎖:
  166.50  	</text>
  166.51 +	<button label="添加..." name="add_allowed_group_btn"/>
  166.52  	<button label="移除..." name="remove_allowed_group_btn"/>
  166.53 -	<button label="添加..." name="add_allowed_group_btn"/>
  166.54 -	<text name="ban_resident_label">
  166.55 -		被封鎖的居民:
  166.56 -	</text>
  166.57 +	<button label="添加..." name="add_banned_avatar_btn"/>
  166.58  	<button label="移除..." name="remove_banned_avatar_btn"/>
  166.59 -	<button label="添加..." name="add_banned_avatar_btn"/>
  166.60 +	<button label="送出訊息到領地..." name="message_estate_btn"/>
  166.61 +	<button label="由領地將居民踢出..." name="kick_user_from_estate_btn"/>
  166.62  </panel>
   167.1 --- a/indra/newview/skins/default/xui/zh/panel_tools_texture.xml	Thu Nov 30 17:05:57 2017 +0000
   167.2 +++ b/indra/newview/skins/default/xui/zh/panel_tools_texture.xml	Thu Nov 30 17:07:57 2017 +0000
   167.3 @@ -26,6 +26,7 @@
   167.4  		<radio_item label="凹凸度(正交)" name="Bumpiness (normal)" value="1"/>
   167.5  		<radio_item label="閃亮度(鏡反光)" name="Shininess (specular)" value="2"/>
   167.6  	</radio_group>
   167.7 +	<check_box initial_value="false" label="鎖住重覆" name="checkbox_sync_settings" tool_tip="同時調整所有映射的重覆"/>
   167.8  	<texture_picker label="材質" name="texture control" tool_tip="點按以挑選圖片"/>
   167.9  	<text name="label alphamode">
  167.10  		半透明模式
   168.1 --- a/indra/newview/skins/default/xui/zh/role_actions.xml	Thu Nov 30 17:05:57 2017 +0000
   168.2 +++ b/indra/newview/skins/default/xui/zh/role_actions.xml	Thu Nov 30 17:07:57 2017 +0000
   168.3 @@ -38,7 +38,7 @@
   168.4  		<action description="固定允許「編輯地形」" longdescription="身負具此能力的角色的成員可以在群組所有地段上編輯地形,無論這功能在「土地資料」&gt; 選項頁籤裡是否被禁止。" name="land allow edit land" value="23"/>
   168.5  		<action description="固定允許「飛行」" longdescription="身負具此能力的角色的成員可以在群組所有地段上飛行,無論這能力是否在「土地資料」&gt; 選項頁籤裡被禁止。" name="land allow fly" value="24"/>
   168.6  		<action description="固定允許「新建物件」" longdescription="身負具此能力的角色的成員可以在群組所有地段上新建物件,無論這能力是否在「土地資料」&gt; 選項頁籤裡被禁止。" name="land allow create" value="25"/>
   168.7 -		<action description="總是允許「新建地標」" longdescription="身負具此能力的角色的成員可以將群組所有的地段設為地標,無論這能力是否在「土地資料」&gt; 選項頁籤裡被禁止。" name="land allow landmark" value="26"/>
   168.8 +		<action description="忽略降落點" longdescription="身負具此能力的角色的成員可以直接瞬間傳送到一個群組所有的地段,即使「土地資料」&gt;「選項」頁籤裡已設定了某個降落點。" name="land allow direct teleport" value="26"/>
   168.9  		<action description="允許在群組所有土地上「將這裡設為我的家」" longdescription="身負具此能力的角色的成員,可以在讓渡給這群組的地段上使用「世界」選單 &gt; 地標 &gt; 「將這裡設為我的家」。" name="land allow set home" value="28"/>
  168.10  		<action description="允許在群組所有土地上「開辦活動」" longdescription="身負具這能力的角色的成員,可以選擇群組所有的地段作為開辦活動的場地。" name="land allow host event" value="41"/>
  168.11  	</action_set>
   169.1 --- a/indra/newview/skins/default/xui/zh/strings.xml	Thu Nov 30 17:05:57 2017 +0000
   169.2 +++ b/indra/newview/skins/default/xui/zh/strings.xml	Thu Nov 30 17:07:57 2017 +0000
   169.3 @@ -245,8 +245,7 @@
   169.4  	</string>
   169.5  	<string name="LoginFailedAccountDisabled">
   169.6  		此時無法完成你的請求。
   169.7 -請到 http://secondlife.com/support 聯絡支援人員獲得幫助。
   169.8 -如果你無法變更密碼,請致電 (866) 476-9763 (美國)。
   169.9 +請到 http://support.secondlife.com 聯絡支援人員獲得幫助。
  169.10  	</string>
  169.11  	<string name="LoginFailedTransformError">
  169.12  		登入時的資料不一致。
  169.13 @@ -675,6 +674,19 @@
  169.14  	<string name="AssetErrorUnknownStatus">
  169.15  		未知狀態
  169.16  	</string>
  169.17 +	<string name="AssetUploadServerUnreacheble">
  169.18 +		服務無法取得。
  169.19 +	</string>
  169.20 +	<string name="AssetUploadServerDifficulties">
  169.21 +		伺服器發生意料外的困難。
  169.22 +	</string>
  169.23 +	<string name="AssetUploadServerUnavaliable">
  169.24 +		無法提供服務,或者上傳逾時。
  169.25 +	</string>
  169.26 +	<string name="AssetUploadRequestInvalid">
  169.27 +		上傳要求發生錯誤。  請參見: 
  169.28 +http://secondlife.com/support 求助解決問題。
  169.29 +	</string>
  169.30  	<string name="texture">
  169.31  		材質
  169.32  	</string>
  169.33 @@ -2153,10 +2165,19 @@
  169.34  		你為 [OWNER] 管理的全部領地
  169.35  	</string>
  169.36  	<string name="RegionInfoAllowedResidents">
  169.37 -		允許居民:([ALLOWEDAGENTS],最多 [MAXACCESS])
  169.38 +		永遠允許:([ALLOWEDAGENTS],最多 [MAXACCESS])
  169.39  	</string>
  169.40  	<string name="RegionInfoAllowedGroups">
  169.41 -		允許的群組:([ALLOWEDGROUPS],最多 [MAXACCESS])
  169.42 +		永遠允許的群組:([ALLOWEDGROUPS],最多 [MAXACCESS])
  169.43 +	</string>
  169.44 +	<string name="RegionInfoBannedResidents">
  169.45 +		永遠封鎖:([BANNEDAGENTS],最多可封鎖 [MAXBANNED] 名)
  169.46 +	</string>
  169.47 +	<string name="RegionInfoListTypeAllowedAgents">
  169.48 +		永遠允許
  169.49 +	</string>
  169.50 +	<string name="RegionInfoListTypeBannedAgents">
  169.51 +		永遠封鎖
  169.52  	</string>
  169.53  	<string name="ScriptLimitsParcelScriptMemory">
  169.54  		地段腳本記憶體
   170.1 --- a/package_override_vc12.ini	Thu Nov 30 17:05:57 2017 +0000
   170.2 +++ b/package_override_vc12.ini	Thu Nov 30 17:07:57 2017 +0000
   170.3 @@ -95,4 +95,4 @@
   170.4  windows  = http://downloads.phoenixviewer.com/vlc_bin-2.2.4.201608121201-windows64-201608121201.tar.bz2|035cd97ce22bd26cfe6eb80c411c40d4
   170.5  
   170.6  [llphysicsextensions_stub]
   170.7 -windows = file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.507006-windows64-507006.tar.bz2|02be2996e6ec53656a460cf0b34bc000
   170.8 +windows = file:///c:/cygwin/opt/firestorm/llphysicsextensions_tpv-1.0.511060-windows64-511060.tar.bz2|65183e2fbd4044aeca35ff9e70ac38ac

mercurial