<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Monty+Linden</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Monty+Linden"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Monty_Linden"/>
	<updated>2026-05-26T00:47:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlHTTPRequest&amp;diff=1218362</id>
		<title>LlHTTPRequest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlHTTPRequest&amp;diff=1218362"/>
		<updated>2025-07-23T18:26:00Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Trivial edit to test save&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llHTTPRequest&lt;br /&gt;
|func_id=230&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_desc=Sends an HTTP request to the specified URL with the body of the request and parameters. When the response is received, a [[http_response]] event is raised.&lt;br /&gt;
|sort=HTTPRequest&lt;br /&gt;
|func_footnote=&lt;br /&gt;
|return_type=key|return_subtype=handle&lt;br /&gt;
|return_text=identifying the HTTP request made.&lt;br /&gt;
|p1_type=string|p1_name=url|p1_desc=A valid HTTP/HTTPS URL.&lt;br /&gt;
|p2_type=list|p2_subtype=instructions|p2_name=parameters|p2_desc=configuration parameters, specified as HTTP_* flag-value pairs&lt;br /&gt;
[ parameter1, value1, parameter2, value2, . . . parameterN, valueN]&lt;br /&gt;
|p3_type=string|p3_name=body|p3_desc=Contents of the request.&lt;br /&gt;
|constants={{LSL_Constants_HTTP}}&lt;br /&gt;
{{LSL_Constants/HTTP_Headers}}&lt;br /&gt;
{{LSL_Extended_Error_HTTP}}&lt;br /&gt;
|spec=&lt;br /&gt;
|caveats=&lt;br /&gt;
*Spaces, control characters, and other characters that are not allowed in URLs will cause a run time error.&lt;br /&gt;
*The corresponding [[http_response]] event will be triggered in all scripts in the [[prim]], not just in the requesting script.&lt;br /&gt;
*Requests must fully complete after 60 seconds, or else the response will be thrown away and the [[http_response]] status code will be 499.&lt;br /&gt;
*The response body is limited to 2048 bytes by default, see [[HTTP_BODY_MAXLENGTH]] above to increase it. If the response is longer, it will be truncated.&lt;br /&gt;
*The request body size (e.g., of POST and PUT requests) is limited only by available script memory. Scripts can hold at most 32k characters in a string, under [[Mono]], as characters are two bytes each, so, scripts cannot upload over 32k UTF-8 characters&lt;br /&gt;
*Cannot be used to load textures or images from the internet, &amp;lt;strike&amp;gt;for more information see [[Web Textures]]&amp;lt;/strike&amp;gt;{{Footnote|&#039;&#039;&#039;Note:&#039;&#039;&#039; Web textures have been made obsolete for many reasons, and the link has been archived; nevertheless, the reference might be interesting for historical reasons.}}.&lt;br /&gt;
*If the accessed site is relying on the LSL script to report [[L$]] transactions, then it &#039;&#039;&#039;must&#039;&#039;&#039; check the &amp;lt;code&amp;gt;X-SecondLife-Shard&amp;lt;/code&amp;gt; header to see if the script is running on the beta grid.&lt;br /&gt;
* Some servers will return a &amp;lt;code&amp;gt;405&amp;lt;/code&amp;gt; error if you send POST to a file that can&#039;t accept metadata, such as a text or HTML file. Make sure you use the GET method to ensure success in any environment.&lt;br /&gt;
* While the HTTP status code from the server is provided to the script, redirect codes such as &amp;lt;code&amp;gt;302&amp;lt;/code&amp;gt; will result in the redirect being automatically and transparently followed ONLY IF the [[HTTP_METHOD]] is GET, with the resulting response being returned.  If the [[HTTP_METHOD]] is anything other than GET then you&#039;ll get back an [[http_response]] with a status code of &amp;lt;code&amp;gt;302&amp;lt;/code&amp;gt;, but without any way to view the headers, you can&#039;t know where you were being redirected to unless that was also included in the body.&lt;br /&gt;
* The following applies when making a request to a script using HTTP-In:&lt;br /&gt;
**When appending a query string to a cap URL there &#039;&#039;&#039;MUST&#039;&#039;&#039; be a trailing slash between the cap guid and the query string token &amp;lt;code&amp;gt;&amp;quot;?&amp;quot;&amp;lt;/code&amp;gt;. For example: [https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322?arg=gra {{HoverTextStyle|style=color:green;|&amp;lt;nowiki&amp;gt;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&amp;lt;/nowiki&amp;gt;|2={{String|x-script-url}} = {{String|https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322}}}}?{{HoverTextStyle|style=color:red;|1=arg=gra|2={{String|x-query-string}} = {{String|1=arg=gra}}}}] will return a 500 HTTP status {{Wikipedia|List_of_HTTP_status_codes#5xx_Server_Error|Server Error code}}, but [https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/?arg=gra {{HoverTextStyle|style=color:green;|&amp;lt;nowiki&amp;gt;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&amp;lt;/nowiki&amp;gt;|2={{String|x-script-url}} = {{String|https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322}}}}{{HoverTextStyle|style=color:blue;|/|2={{String|x-path-info}} = {{String|/}}}}?{{HoverTextStyle|style=color:red;|1=arg=gra|2={{String|x-query-string}} = {{String|1=arg=gra}}}}] will succeed.&lt;br /&gt;
* &amp;lt;code&amp;gt;X-SecondLife-Owner-Name&amp;lt;/code&amp;gt; may return &amp;lt;code&amp;gt;&amp;quot;(Loading...)&amp;quot;&amp;lt;/code&amp;gt; instead of owner name (still true, 30th of March, 2022)&lt;br /&gt;
* Requests made at approx 0625 SLT may fail with a &amp;lt;code&amp;gt;503&amp;lt;/code&amp;gt; status code, with &amp;lt;code&amp;gt;&amp;quot;ERROR: The requested URL could not be retrieved&amp;quot;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;quot;(111) Connection refused&amp;quot;&amp;lt;/code&amp;gt; in the body of the response.  This has been confirmed as expected behavior by Kelly, due to the nightly maintenance and log rotation.  It does reliably impact object to object HTTP at that time, and quite probably may impact object to/from web around the same time.  The interruption in service is fairly brief, and the precise timing may vary as LL adjust their nightly maintenance processes, or due to server load.&lt;br /&gt;
* Use &amp;lt;code&amp;gt;HTTP_MIMETYPE&amp;lt;/code&amp;gt; to set the &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. Attempts to use &amp;lt;code&amp;gt;HTTP_CUSTOM_HEADER&amp;lt;/code&amp;gt; to set it will cause a runtime script error.&lt;br /&gt;
* If the origin server does not include a content-type header in its response, LSL will attempt to treat the incoming data as &amp;quot;text/plain; charset=utf-8&amp;quot;. This behavior diverges from [https://datatracker.ietf.org/doc/html/rfc2616#section-7.2.1 RFC 2616].&lt;br /&gt;
&lt;br /&gt;
==== Throttles ====&lt;br /&gt;
&lt;br /&gt;
The LSL function [[llHTTPRequest]] is throttled in three ways:  by object, by owner, and by http error.  All group-owned objects are considered together in the same throttle.&lt;br /&gt;
&lt;br /&gt;
The current limits are:&lt;br /&gt;
* 25 requests in 20 seconds for each object&lt;br /&gt;
* 1000 requests in 20 seconds for each owner with higher limits for some regions&lt;br /&gt;
* Five HTTP errors (500 or higher) in 60 seconds for each script&lt;br /&gt;
These may change in the future if needed to prevent problems in regions.&lt;br /&gt;
&lt;br /&gt;
It is possible for a large collection of objects or scripts to make many calls to [[llHTTPRequest]] and reach one or more throttles.  When a script calls [[llHTTPRequest]] with a throttle blocking the request, it will return [[NULL_KEY]].&lt;br /&gt;
&lt;br /&gt;
The calling script must check for the [[NULL_KEY]] result and react properly for the script and object to function correctly.  Some things to consider:&lt;br /&gt;
&lt;br /&gt;
* Pause further requests until the throttle clears&lt;br /&gt;
* Do not make any additional [[llHTTPRequest]] calls until enough time has passed for the throttle to reset.    They will fail and continue to return [[NULL_KEY]] otherwise.&lt;br /&gt;
* Once reached, the throttles will remain in effect as long as requests continue, but will clear if there is a silent period with no requests at least twice the throttle interval, in the common case 2 * 20 or 40 seconds.‎&lt;br /&gt;
&lt;br /&gt;
:Consider how a group of objects behaves.   Developers must consider how multiple objects will interact and how that will affect clearing the throttle.‎&lt;br /&gt;
&lt;br /&gt;
:The [[llHTTPRequest]] throttle is most likely to be an issue with a large number of objects in a region making requests.  To clear the throttle fastest, when an object encounters the throttle, it should broadcast a region-wide chat message to other objects informing them of the event and stopping their requests. If those objects continue making requests, those requests will fail and just prolong recovery.‎&lt;br /&gt;
&lt;br /&gt;
:If an object waits and still gets a failure, it may be a good idea to increase the time before the next request and/or add a small random value to the wait time. This may help prevent failures caused by large groups of objects acting nearly in unison.&lt;br /&gt;
&lt;br /&gt;
* Object requests are throttled at approximately 25 requests per 20 seconds. This is to support a sustained rate of one per second or a maximum burst of up to 25 every 40 seconds (twice the interval for maximum burst), smaller bursts are recommended. &lt;br /&gt;
* [[NULL_KEY]] is returned if the request is throttled.&lt;br /&gt;
* See [http://forums-archive.secondlife.com/139/72/108960/1.html this thread] and [http://forums-archive.secondlife.com/139/2c/109571/1.html this thread] for older details.&lt;br /&gt;
----&lt;br /&gt;
|examples=&lt;br /&gt;
&lt;br /&gt;
*[[Writing Headers and HTTP POST Body to a File]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
key http_request_id;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        http_request_id = llHTTPRequest(&amp;quot;url&amp;quot;, [], &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http_response(key request_id, integer status, list metadata, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (request_id != http_request_id) return;// exit if unknown&lt;br /&gt;
&lt;br /&gt;
        vector COLOR_BLUE = &amp;lt;0.0, 0.0, 1.0&amp;gt;;&lt;br /&gt;
        float  OPAQUE     = 1.0;&lt;br /&gt;
&lt;br /&gt;
        llSetText(body, COLOR_BLUE, OPAQUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example PHP test script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php header(&amp;quot;content-type: text/plain; charset=utf-8&amp;quot;); ?&amp;gt;&lt;br /&gt;
Headers received:&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Wouter Hobble&lt;br /&gt;
 * @copyright 2008&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
foreach ($_SERVER as $k =&amp;gt; $v)&lt;br /&gt;
{&lt;br /&gt;
    if( substr($k, 0, 5) == &#039;HTTP_&#039;)&lt;br /&gt;
    {&lt;br /&gt;
        print &amp;quot;\n&amp;quot;. $k. &amp;quot;\t&amp;quot;. $v;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example PHP wrapper script both capturing Apache headers and global methods&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    // Author Waster Skronski.&lt;br /&gt;
    // General Public License (GPL).&lt;br /&gt;
    // Mind that some headers are not included because they&#039;re either useless or unreliable.&lt;br /&gt;
&lt;br /&gt;
    $USE_APACHE_HEADERS = TRUE;// switch to false if you need CGI methods&lt;br /&gt;
&lt;br /&gt;
    if ($USE_APACHE_HEADERS)&lt;br /&gt;
    {&lt;br /&gt;
        $headers    = apache_request_headers();&lt;br /&gt;
        $objectgrid = $headers[&amp;quot;X-SecondLife-Shard&amp;quot;];&lt;br /&gt;
        $objectname = $headers[&amp;quot;X-SecondLife-Object-Name&amp;quot;];&lt;br /&gt;
        $objectkey  = $headers[&amp;quot;X-SecondLife-Object-Key&amp;quot;];&lt;br /&gt;
        $objectpos  = $headers[&amp;quot;X-SecondLife-Local-Position&amp;quot;];&lt;br /&gt;
        $ownerkey   = $headers[&amp;quot;X-SecondLife-Owner-Key&amp;quot;];&lt;br /&gt;
        $ownername  = $headers[&amp;quot;X-SecondLife-Owner-Name&amp;quot;];&lt;br /&gt;
        $regiondata = $headers[&amp;quot;X-SecondLife-Region&amp;quot;];&lt;br /&gt;
        $regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);        // cut coords off&lt;br /&gt;
        $regionpos  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
        $regionname = substr($regiontmp[0],0,-1);       // cut last space from region name&lt;br /&gt;
    } else {&lt;br /&gt;
        $db         = $GLOBALS;&lt;br /&gt;
        $headers    = $db[&#039;$_ENV&#039;];&lt;br /&gt;
        $objectgrid = $headers[&amp;quot;HTTP_X_SECONDLIFE_SHARD&amp;quot;];&lt;br /&gt;
        $objectname = $headers[&amp;quot;HTTP_X_SECONDLIFE_OBJECT_NAME&amp;quot;];&lt;br /&gt;
        $objectkey  = $headers[&amp;quot;HTTP_X_SECONDLIFE_OBJECT_KEY&amp;quot;];&lt;br /&gt;
        $ownerkey   = $headers[&amp;quot;HTTP_X_SECONDLIFE_OWNER_KEY&amp;quot;];&lt;br /&gt;
        $objectpos  = $headers[&amp;quot;HTTP_X_SECONDLIFE_LOCAL_POSITION&amp;quot;];&lt;br /&gt;
        $ownername  = $headers[&amp;quot;HTTP_X_SECONDLIFE_OWNER_NAME&amp;quot;];&lt;br /&gt;
        $regiondata = $headers[&amp;quot;HTTP_X_SECONDLIFE_REGION&amp;quot;];&lt;br /&gt;
        $regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);&lt;br /&gt;
        $regionpos  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
        $regionname = substr($regiontmp[0],0,-1);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example wrapper script for GoDaddy.com Linux PHP servers (fix made by Thomas Conover):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// FETCH HEADERS START&lt;br /&gt;
&lt;br /&gt;
if (!function_exists(&#039;apache_request_headers&#039;))&lt;br /&gt;
{&lt;br /&gt;
    function apache_request_headers() {&lt;br /&gt;
        foreach($_SERVER as $key=&amp;gt;$value) {&lt;br /&gt;
            if (substr($key,0,5)==&amp;quot;HTTP_&amp;quot;) {&lt;br /&gt;
                $key=str_replace(&amp;quot; &amp;quot;,&amp;quot;-&amp;quot;,ucwords(strtolower(str_replace(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;,substr($key,5)))));&lt;br /&gt;
                $out[$key]=$value;&lt;br /&gt;
            }else{&lt;br /&gt;
                $out[$key]=$value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $out;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Mind that some headers are not included because they&#039;re either useless or unreliable (e.g. X-Secondlife-Local-Position)&lt;br /&gt;
$headers    = apache_request_headers();&lt;br /&gt;
$objectgrid = $headers[&amp;quot;X-Secondlife-Shard&amp;quot;];&lt;br /&gt;
$objectname = $headers[&amp;quot;X-Secondlife-Object-Name&amp;quot;];&lt;br /&gt;
$objectkey  = $headers[&amp;quot;X-Secondlife-Object-Key&amp;quot;];&lt;br /&gt;
$objectpos  = $headers[&amp;quot;X-Secondlife-Local-Position&amp;quot;];&lt;br /&gt;
$ownerkey   = $headers[&amp;quot;X-Secondlife-Owner-Key&amp;quot;];&lt;br /&gt;
$ownername  = $headers[&amp;quot;X-Secondlife-Owner-Name&amp;quot;];&lt;br /&gt;
$regiondata = $headers[&amp;quot;X-Secondlife-Region&amp;quot;];&lt;br /&gt;
$regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);            // cut coords off&lt;br /&gt;
$regionname = substr($regiontmp[0],0,-1);           // cut last space from region name&lt;br /&gt;
$regiontmp  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
$regionpos  = $regiontmp[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// FETCH HEADERS END&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[http_response]]}}&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llEscapeURL]]}}&lt;br /&gt;
{{LSL DefineRow||[[llHTTPResponse]]}}&lt;br /&gt;
{{LSL DefineRow||[[llUnescapeURL]]}}&lt;br /&gt;
|also_articles={{LSL DefineRow||[[Simulator IP Addresses]]}}&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=If for some reason while using the function [[llHTTPRequest]] or the event [[http_response]] you are unable to parse a known good RSS feed or some other form of web contents, you will need to work around it outside of Second Life. This is unlikely to change in the near future since checking the headers requires more overhead at the simulator level.&lt;br /&gt;
&lt;br /&gt;
You may find that some web servers return either a null or a nonsensical result when [[llHTTPRequest]] is used, even though the same URL in a PC web browser returns the expected result. This may be due to the fact that the [[llHTTPRequest]] User Agent string is not recognised by some web servers as it does not contain &amp;lt;code&amp;gt;&amp;quot;Mozilla&amp;quot;&amp;lt;/code&amp;gt;, which would identify it as a web browser instead of, for example, a [https://www.shoutcast.com/ Shoutcast] or an RSS client. This is also true when the PHP script relies on [https://www.php.net/manual/en/reserved.variables.cookies.php $_COOKIE]. Neither can the function [[llHTTPRequest]] set a cookie nor can the event [[http_request]] retrieve them.&lt;br /&gt;
&lt;br /&gt;
CGI environments may place the headers into variables by capitalizing the entire name, replacing dashes with underscores, and prefixing the name with &amp;lt;code&amp;gt;HTTP_&amp;lt;/code&amp;gt;, e.g. &amp;lt;code&amp;gt;HTTP_X_SECONDLIFE_OBJECT_NAME&amp;lt;/code&amp;gt;. PHP &amp;lt;code&amp;gt;$_SERVER&amp;lt;/code&amp;gt; variables do this as well, and so does PHP running inside PHP-FPM (as opposed to an Apache module), which is the standard way to configure PHP on non-Apache webservers (such as [https://nginx.org/nginx {{code|nginx}}]).&lt;br /&gt;
&lt;br /&gt;
Apache can include the headers in its logs, using the &amp;lt;code&amp;gt;CustomLog&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LogFormat&amp;lt;/code&amp;gt; directives.  See [https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats the docs] for details on the syntax.&lt;br /&gt;
&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|permission&lt;br /&gt;
|cat1=HTTP&lt;br /&gt;
|cat2=XML-RPC&lt;br /&gt;
|cat3=Communications&lt;br /&gt;
|cat4=HTTP/Client&lt;br /&gt;
|haiku={{Haiku|Shining break of day|Lov&#039;ly web, carefully spun|Of bytes and prims}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Lua_Alpha&amp;diff=1218056</id>
		<title>Lua Alpha</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Lua_Alpha&amp;diff=1218056"/>
		<updated>2025-03-13T21:30:34Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* How to Get Started with SLua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|This functionality is in alpha. Instability is to be expected, and there may be very sharp edges. At this point it is expected that Luau can crash regions and perform other types of undesirable behavior.}}&lt;br /&gt;
&lt;br /&gt;
= Second Life Lua (SLua) Alpha =&lt;br /&gt;
&lt;br /&gt;
[[File:Luau.png|720px|thumb|right|Luau logo]]&lt;br /&gt;
&lt;br /&gt;
We&#039;re thrilled to announce the launch of the SLua Alpha for Second Life! This significant update introduces the Lua scripting language, offering creators enhanced performance, improved memory efficiency, and a more versatile scripting environment.&lt;br /&gt;
&lt;br /&gt;
== What is SLua? ==&lt;br /&gt;
&lt;br /&gt;
SLua is scripting for Second Life based on Luau, a fast, small, safe, and gradually typed embeddable scripting language derived from Lua. It is designed to be backwards compatible with Lua 5.1, incorporating features from future Lua releases and expanding the feature set with type annotations and a state-of-the-art type inference system. Luau is largely implemented from scratch, with the language runtime being a heavily modified version of the Lua 5.1 runtime, featuring a completely rewritten interpreter and other performance innovations.&lt;br /&gt;
&lt;br /&gt;
== Why Lua? ==&lt;br /&gt;
&lt;br /&gt;
The decision to integrate Lua into Second Life was driven by its ability to meet all the requirements for a scripting engine within the platform. Lua offers a high-quality scripting experience to creators, addressing many of the limitations present in the current LSL (Linden Scripting Language) environment. Its lightweight nature and performance optimizations make it an ideal choice for enhancing the scripting capabilities in Second Life. For more information on why Lua was chosen, please see the [https://wiki.secondlife.com/wiki/Lua_FAQ Lua FAQ].&lt;br /&gt;
&lt;br /&gt;
== How to Get Started with SLua ==&lt;br /&gt;
&lt;br /&gt;
In order to play with SLua, you&#039;ll need to download our Lua project viewer, and log onto our [https://lindenlab.freshdesk.com/support/solutions/articles/31000156725-accessing-aditi Aditi beta grid].&lt;br /&gt;
&lt;br /&gt;
* Access the latest build of the SLua-enabled Second Life Viewer from [https://releasenotes.secondlife.com/viewer/7.1.12.13526902562.html here].&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve got the new viewer and have logged onto the beta grid, head over to these SLua-enabled regions:&lt;br /&gt;
&lt;br /&gt;
* [secondlife://Aditi/secondlife/SLua%20Yardang/241/235/27 SLua Yardang]&lt;br /&gt;
* [secondlife://Aditi/secondlife/SLua%20Tombolo/241/235/27 SLua Tombolo]&lt;br /&gt;
* [secondlife://Aditi/secondlife/SLua%20Mesa/241/235/27 SLua Mesa]&lt;br /&gt;
* [secondlife://Aditi/secondlife/SLua%20Tideland/241/235/27 SLua Tideland]&lt;br /&gt;
&lt;br /&gt;
When editing a script in the new Lua project viewer, you&#039;ll notice a new &#039;&#039;&#039;Compiler&#039;&#039;&#039; drop-down near the save button. This drop-down will allow you to select which compiler will be used, as well as which script runtime will be used (LSO2, Mono, Luau).&lt;br /&gt;
&lt;br /&gt;
[[File:Compiler_dropdown.png|Compiler selection dropdown]]&lt;br /&gt;
&lt;br /&gt;
Compiler drop-down options:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;LSL: Legacy (LSO2)&#039;&#039;&#039; - Scripts written in LSL, to be run on the old LSO2 VM&lt;br /&gt;
* &#039;&#039;&#039;LSL: Mono&#039;&#039;&#039;- Scripts written in LSL, to be run on the Mono VM&lt;br /&gt;
* &#039;&#039;&#039;Lua&#039;&#039;&#039; - Scripts written in Lua, to be run on the SLua VM&lt;br /&gt;
* &#039;&#039;&#039;LSL/Luau&#039;&#039;&#039;- Scripts written in LSL, to be run on the SLua VM&lt;br /&gt;
&lt;br /&gt;
=== Transitioning from LSL to SLua ===&lt;br /&gt;
* &#039;&#039;&#039;Function Namespacing:&#039;&#039;&#039;&lt;br /&gt;
** In SLua, Linden Lab functions have been moved under the &#039;&#039;&#039;ll&#039;&#039;&#039; namespace.&lt;br /&gt;
** For example:&lt;br /&gt;
*** &#039;&#039;llSay&#039;&#039; becomes &#039;&#039;ll.Say&#039;&#039;&lt;br /&gt;
*** &#039;&#039;llGetPos&#039;&#039; becomes &#039;&#039;ll.GetPos&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Lists&#039;&#039;&#039;&lt;br /&gt;
** Lua indexes begin from 1, unlike LSL where indexes begin from 0.&lt;br /&gt;
** Lua uses &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; for &#039;&#039;tables&#039;&#039;, unlike LSL where &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; is used for &#039;&#039;lists&#039;&#039;.&lt;br /&gt;
** When calling LL functions in SLua, lists often have type-strict requirements, unlike Luau in general.&lt;br /&gt;
*** For example, &amp;lt;code&amp;gt;ll.SetPrimitiveParams({PRIM_GLOW, 0, 1})&amp;lt;/code&amp;gt; will cause a type-error because &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; is a Luau &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; type, instead of the LSL &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt; type expected by [[llSetPrimitiveParams]]. For cases like this, there are special functions which provide the correct data types.&lt;br /&gt;
*** Correct: &amp;lt;code&amp;gt;ll.SetPrimitiveParams({PRIM_GLOW, integer(0), 1})&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Similar functions exist for: &#039;&#039;&#039;integer&#039;&#039;&#039;, &#039;&#039;&#039;uuid&#039;&#039;&#039; (key), &#039;&#039;&#039;vector&#039;&#039;&#039;, &#039;&#039;&#039;quaternion&#039;&#039;&#039; (rotation)&lt;br /&gt;
&lt;br /&gt;
=== SLua Libraries ===&lt;br /&gt;
* &#039;&#039;&#039;Coroutines:&#039;&#039;&#039;&lt;br /&gt;
** SLua supports coroutines, allowing for cooperative multitasking within scripts.&lt;br /&gt;
** Key functions include:&lt;br /&gt;
*** &#039;&#039;coroutine.create&#039;&#039;&lt;br /&gt;
*** &#039;&#039;coroutine.status&#039;&#039;&lt;br /&gt;
*** &#039;&#039;coroutine.resume&#039;&#039;&lt;br /&gt;
** Refer to the [https://luau.org/library#coroutine-library coroutine library documentation] for more details.&lt;br /&gt;
* &#039;&#039;&#039;Bitwise Operations:&#039;&#039;&#039;&lt;br /&gt;
** SLua includes a &#039;&#039;bit32&#039;&#039; library for bitwise operations, enabling more efficient data manipulation.&lt;br /&gt;
** Refer to the [https://luau.org/library#bit32-library bit32 library documentation] for more details.&lt;br /&gt;
* &#039;&#039;&#039;Standard Library:&#039;&#039;&#039;&lt;br /&gt;
** SLua comes equipped with a standard library of functions designed to manipulate built-in data types.&lt;br /&gt;
** Explore the [https://luau.org/library Luau Standard Library] for a comprehensive list of available functions.&lt;br /&gt;
&lt;br /&gt;
== Feedback and Support ==&lt;br /&gt;
&lt;br /&gt;
We encourage all creators to explore the new scripting capabilities and provide feedback. Your insights are invaluable in refining and enhancing this feature. For more information and to share your experiences, please refer to our [https://wiki.secondlife.com/wiki/Lua_FAQ Lua FAQ].&lt;br /&gt;
&lt;br /&gt;
== Example Scripts ==&lt;br /&gt;
&lt;br /&gt;
To help you get started, we&#039;ve assembled some example scripts that demonstrate the capabilities of SLua. These scripts cover various functionalities and can serve as a foundation for your own creations. Please feel free to propose changes to these scripts, or modify them to your heart&#039;s desire!&lt;br /&gt;
&lt;br /&gt;
=== default_script.lua ===&lt;br /&gt;
This script is roughly equivalent to the default &amp;quot;new script&amp;quot; that gets created for LSL.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function state_entry()&lt;br /&gt;
    ll.Say(0, &amp;quot;Hello, Avatar!&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called when the object is touched.&lt;br /&gt;
function touch_start(total_number)&lt;br /&gt;
   ll.Say(0, &amp;quot;Touched.&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Invoke state_entry on startup, since simulator doesn&#039;t invoke &lt;br /&gt;
-- it like it does in LSL&lt;br /&gt;
state_entry()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog.lua ===&lt;br /&gt;
This script demonstrates how one can interact with dialog menus.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Define the menu buttons and dialog message.&lt;br /&gt;
local buttons = {&amp;quot;-&amp;quot;, &amp;quot;Red&amp;quot;, &amp;quot;Green&amp;quot;, &amp;quot;Yellow&amp;quot;}&lt;br /&gt;
local dialogInfo = &amp;quot;\nPlease make a choice.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local ToucherID = nil&lt;br /&gt;
local dialogChannel = nil&lt;br /&gt;
local listenHandle = nil&lt;br /&gt;
&lt;br /&gt;
-- This function is called when the script first starts.&lt;br /&gt;
function state_entry()&lt;br /&gt;
    -- Get the object&#039;s key and compute a dialog channel number.&lt;br /&gt;
    local key = ll.GetKey()&lt;br /&gt;
    -- Extract the last 7 characters of the key and convert it from hex.&lt;br /&gt;
    dialogChannel = -1 - tonumber(string.sub(tostring(key), -7, -1), 16)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called when the object is touched.&lt;br /&gt;
function touch_start(num_detected)&lt;br /&gt;
    ToucherID = ll.DetectedKey(0)&lt;br /&gt;
    -- If there is already a listen handle, then remove it&lt;br /&gt;
    if listenHandle then&lt;br /&gt;
        ll.ListenRemove(listenHandle)&lt;br /&gt;
    end&lt;br /&gt;
    listenHandle = ll.Listen(dialogChannel, &amp;quot;&amp;quot;, ToucherID, &amp;quot;&amp;quot;)&lt;br /&gt;
    ll.Dialog(ToucherID, dialogInfo, buttons, dialogChannel)&lt;br /&gt;
    -- Set a 60-second timer for response.&lt;br /&gt;
    ll.SetTimerEvent(60.0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called when a dialog response is received.&lt;br /&gt;
function listen(channel, name, sender_id, message)&lt;br /&gt;
    if message == &amp;quot;-&amp;quot; then&lt;br /&gt;
        -- Redisplay the dialog if the &amp;quot;-&amp;quot; option is selected.&lt;br /&gt;
        ll.Dialog(ToucherID, dialogInfo, buttons, dialogChannel)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    -- Stop the timer, and stop the listening handler.&lt;br /&gt;
    ll.ListenRemove(listenHandle)&lt;br /&gt;
    ll.SetTimerEvent(0)&lt;br /&gt;
    -- Let the user know what they selected&lt;br /&gt;
    ll.Say(0, `You selected {message}`)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Called when the timer expires.&lt;br /&gt;
function timer()&lt;br /&gt;
    -- Stop the timer and clean up the listener.&lt;br /&gt;
    if listenHandle then&lt;br /&gt;
        ll.SetTimerEvent(0)&lt;br /&gt;
        ll.ListenRemove(listenHandle)&lt;br /&gt;
        ll.Whisper(0, &amp;quot;Sorry. You snooze; you lose.&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Invoke state_entry on startup, since simulator doesn&#039;t invoke &lt;br /&gt;
-- it like it does in LSL&lt;br /&gt;
state_entry()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== user_input_coroutine.lua ===&lt;br /&gt;
This script demonstrates [https://www.lua.org/pil/9.html coroutines] and how they can simplify the overarching logic of a script, enabling us to write the bulk of our multi-event code within a centralized function instead of fragmenting across separate event handlers.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Wait for user input mid-function before doing something useful with it.&lt;br /&gt;
main = function(toucher)&lt;br /&gt;
    local handle = ll.Listen(0, &amp;quot;&amp;quot;, toucher, &amp;quot;&amp;quot;)&lt;br /&gt;
    local event = touch_start   -- save function for later&lt;br /&gt;
    touch_start = nil           -- disable touch_start&lt;br /&gt;
&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Do you want pants or gloves?&amp;quot;)&lt;br /&gt;
    local clothing = coroutine.yield() -- pause the routine&#039;s execution here&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;For men or women?&amp;quot;)&lt;br /&gt;
    local gender = coroutine.yield()&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Favorite color?&amp;quot;)&lt;br /&gt;
    local color = coroutine.yield()&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Here&#039;s &amp;quot;..color..&amp;quot; &amp;quot;..clothing..&amp;quot; for &amp;quot;..gender)&lt;br /&gt;
&lt;br /&gt;
    ll.ListenRemove(handle)&lt;br /&gt;
    touch_start = event -- restore touch_start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function touch_start(total_num)&lt;br /&gt;
    local toucher = ll.DetectedKey(0)&lt;br /&gt;
    routine = coroutine.create(main)    -- new coroutine&lt;br /&gt;
    coroutine.resume(routine, toucher)  -- run coroutine (with one argument)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- When the coroutine is suspended, incoming events can be handled&lt;br /&gt;
-- and we can resume() execution of the routine&lt;br /&gt;
-- and pass any number of arguments to be returned by yield()&lt;br /&gt;
function listen(channel, name, id, message)&lt;br /&gt;
    coroutine.resume(routine, message)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== multi_user_input_coroutine.lua ===&lt;br /&gt;
Following from the above example, how can we handle multiple users? This is where coroutines shine.&lt;br /&gt;
&lt;br /&gt;
Instead of disabling touches to prevent others from interacting with the object, we can create new copies of the coroutine each time an avatar touches the object. We can then resume whichever coroutine is needed, based on the avatar, while all of them track their own progress separately and automagically.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Key: avatar uuid; Value: coroutine thread&lt;br /&gt;
routines = {}&lt;br /&gt;
&lt;br /&gt;
main = function(toucher)&lt;br /&gt;
    local handle = ll.Listen(0, &amp;quot;&amp;quot;, toucher, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Do you want pants or gloves?&amp;quot;)&lt;br /&gt;
    local clothing = coroutine.yield()&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;For men or women?&amp;quot;)&lt;br /&gt;
    local gender = coroutine.yield()&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Favorite color?&amp;quot;)&lt;br /&gt;
    local color = coroutine.yield()&lt;br /&gt;
    ll.RegionSayTo(toucher, 0, &amp;quot;Here&#039;s &amp;quot;..color..&amp;quot; &amp;quot;..clothing..&amp;quot; for &amp;quot;..gender)&lt;br /&gt;
&lt;br /&gt;
    ll.ListenRemove(handle)&lt;br /&gt;
    routines[toucher] = nil -- Remove from collection&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function touch_start(total_num)&lt;br /&gt;
    local toucher = ll.DetectedKey(0)&lt;br /&gt;
    local routine = routines[toucher]&lt;br /&gt;
    if not routine then -- New user needs new routine&lt;br /&gt;
        routine = coroutine.create(main)&lt;br /&gt;
        routines[toucher] = routine -- Add to collection&lt;br /&gt;
        coroutine.resume(routine, toucher)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function listen(channel, name, id, message)&lt;br /&gt;
    coroutine.resume(routines[id], message) -- Resume a specific coroutine&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More Examples ===&lt;br /&gt;
&lt;br /&gt;
* Find more example scripts at [[Luau Example Scripts]]&lt;br /&gt;
&lt;br /&gt;
* [https://roblox.github.io/lua-style-guide/gotchas/ Lua Gotchas, Footguns and Other Hazards]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=EventQueueGet&amp;diff=1217888</id>
		<title>EventQueueGet</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=EventQueueGet&amp;diff=1217888"/>
		<updated>2025-01-23T07:54:38Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Fill out the message list a bit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The EventQueueGet cap is actually a service.  The CAP provides access to the service.&lt;br /&gt;
Currently if the client cannot get an EventQueueGet cap, it will refuse to show neighbor regions and you will not be able to teleport to another region.  You&#039;re essentially trapped where you are.&lt;br /&gt;
&lt;br /&gt;
It&#039;s also very easy for the client to stop polling the EventQueueGet CAP&lt;br /&gt;
&lt;br /&gt;
The Client essentially sends an application/xml Map with two keys.  ack and done.   Ack is an integer of the last Event ID and done is..     well, we don&#039;t know what done is yet besides it&#039;s a boolean.  At this moment, it&#039;s always false.&lt;br /&gt;
&lt;br /&gt;
The simulator will hold on to this request until it has some events to send to the client or the simulator times out the connection with a very specific response.   The simulator will usually do this in around 20 to 30 seconds from the request start.  To understand this, think in terms of requesting a web page that does a lot of background processing before sending you back a response.   If you were to be able to post to the EventQueueGet Cap in a browser, it would look like a white page  loading for about 20 or 30 seconds, and then it would give you back a 502 error.    Don&#039;t fret! the 502 error is normal!  When the EventQueueGet service doesn&#039;t have any events to send to the client, it typically sends a &#039;HTTP/1.0 502 Upstream error:&#039; response with &#039;Upstream error: &#039; as the body.   It&#039;s really important to note that the client will *only* accept a response like stated above.  If you send it as a HTTP/1.1 response, the client will stop polling!&lt;br /&gt;
&lt;br /&gt;
After the client closes the connection to the simulator (with a DisableSimulator packet), further attempts to poll the EventQueueGet cap will result in a 404 response.  This tells the client to stop polling the cap.  On the Debug Console, you&#039;ll see a nice message paraphrased: EventPollResponder: {1} https://CAPADDRESS/ stop 404&lt;br /&gt;
&lt;br /&gt;
The client will keep polling the EventQueueGet cap until you give it a 404 even after you&#039;ve left the region!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The client posts to the EventQueueGet cap provided in the region seed cap with an application/xml content type.  (this will eventually be application/llsd+xml)&lt;br /&gt;
&lt;br /&gt;
 Client Request -&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   ack  : integer,&lt;br /&gt;
   done : boolean&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 ; Successful response (no events) &amp;lt;-&lt;br /&gt;
 HTTP/1.0 502 Upstream error:&lt;br /&gt;
 Content-Type: text/plain&lt;br /&gt;
 Connection: close&lt;br /&gt;
 &lt;br /&gt;
 Upstream error: &lt;br /&gt;
 &lt;br /&gt;
 ; Successful Response (event) &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   events : [ event ],&lt;br /&gt;
   id     : integer&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
There are a few events that OpenSimulator has implemented over the EventQueueGet cap.   &lt;br /&gt;
So far they&#039;re;&lt;br /&gt;
* EnableSimulator&lt;br /&gt;
* CrossedRegion&lt;br /&gt;
* TeleportFinish&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
===AgentDropGroup===&lt;br /&gt;
===AgentGroupDataUpdate===&lt;br /&gt;
===AgentPreferencesUpdate===&lt;br /&gt;
===AgentStateUpdate===&lt;br /&gt;
===ChatterBoxInvitation===&lt;br /&gt;
===ChatterBoxSessionEventReply===&lt;br /&gt;
===ChatterBoxSessionStartLeaveReply===&lt;br /&gt;
===ChatterBoxSessionStartReply===&lt;br /&gt;
===CrossedRegion===&lt;br /&gt;
The simulator uses CrossedRegion to inform your client that it has crossed into a new region.  Typically this is sent out when an avatar crosses a border between two simulators.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   body    : {&lt;br /&gt;
               CrossedRegion : [&lt;br /&gt;
                                 {&lt;br /&gt;
                                   AgentData  : [&lt;br /&gt;
                                                  {&lt;br /&gt;
                                                    AgentID   : UUID,&lt;br /&gt;
                                                    SessionID : UUID&lt;br /&gt;
                                                  }&lt;br /&gt;
                                                ],&lt;br /&gt;
                                   RegionData : [&lt;br /&gt;
                                                  {&lt;br /&gt;
                                                    RegionHandle   : binary,&lt;br /&gt;
                                                    SeedCapability : string,&lt;br /&gt;
                                                    SimIP          : binary,&lt;br /&gt;
                                                    SimPort        : integer&lt;br /&gt;
                                                  }&lt;br /&gt;
                                                ],&lt;br /&gt;
                                   Info       : [&lt;br /&gt;
                                                  {&lt;br /&gt;
                                                    LookAt   : [ real, real, real ],&lt;br /&gt;
                                                    Position : [ real, real, real ]&lt;br /&gt;
                                                  }&lt;br /&gt;
                                                ]&lt;br /&gt;
                                 }&lt;br /&gt;
                               ]&lt;br /&gt;
             },&lt;br /&gt;
   message : &#039;EnableSimulator&#039;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===DisplayNameUpdate===&lt;br /&gt;
===EnableSimulator===&lt;br /&gt;
EnableSimulator is the event that tells the client to connect to a new simulator.   We use it to inform clients that there is a neighbor region to the one that the avatar is currently in.   This causes the client to attempt to connect to the region described in the EnableSimulator event.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   body    : {&lt;br /&gt;
               SimulatorInfo : [&lt;br /&gt;
                                 {&lt;br /&gt;
                                   Handle : binary&lt;br /&gt;
                                   IP     : binary&lt;br /&gt;
                                   Port   : integer&lt;br /&gt;
                                 }&lt;br /&gt;
                               ]&lt;br /&gt;
             },&lt;br /&gt;
   message : &#039;EnableSimulator&#039;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Remember, Handle is the regionhandle of the new simulator in BIG Endian format, base64 encoded.&lt;br /&gt;
IP is the IP Address of the new simulator as a byte array, base64 encoded.&lt;br /&gt;
Port is the UDP port of the new simulator UDP service.&lt;br /&gt;
&lt;br /&gt;
 Note:&lt;br /&gt;
 The IP address (24.151.1.250) contains 4 bytes:&lt;br /&gt;
 24&lt;br /&gt;
 151&lt;br /&gt;
 1&lt;br /&gt;
 250&lt;br /&gt;
 &lt;br /&gt;
 The regionhandle is a 64 bit representation of the X and Y cordinate of the 0,0 point of the new simulator&lt;br /&gt;
 Where x is the uint X coordinate, and y is the uint Y coordinate, the formula for creating a regionhandle is: &lt;br /&gt;
 ulong regionhandle = ((ulong)x &amp;lt;&amp;lt; 32) | (ulong)y;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===EstablishAgentCommunication===&lt;br /&gt;
===ForceCloseChatterBoxSession===&lt;br /&gt;
===NavMeshStatusUpdates===&lt;br /&gt;
===OpenCircuit===&lt;br /&gt;
===ParcelVoiceInfo===&lt;br /&gt;
===RequiredVoiceVersion===&lt;br /&gt;
===SetDisplayNameReply===&lt;br /&gt;
===SimConsoleResponse===&lt;br /&gt;
===TeleportFinish===&lt;br /&gt;
This tells the client that the serverside processing for teleport is complete and that the client should begin the client side portion of the teleport.&lt;br /&gt;
 {&lt;br /&gt;
   body    : {&lt;br /&gt;
               Info : [&lt;br /&gt;
                        {&lt;br /&gt;
                          AgentID : UUID,&lt;br /&gt;
                          LocationID : integer,&lt;br /&gt;
                          RegionHandle : binary,&lt;br /&gt;
                          SeedCapability : string,&lt;br /&gt;
                          SimAccess : integer,&lt;br /&gt;
                          SimIP : binary,&lt;br /&gt;
                          SimPort : integer,&lt;br /&gt;
                          TeleportFlags : binary&lt;br /&gt;
                        }&lt;br /&gt;
                      ]&lt;br /&gt;
              },&lt;br /&gt;
   message : &#039;TeleportFinish&#039;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can find additional information on : [http://www.libsecondlife.org/wiki/EventQueueGet a page from libsecondlife.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Architecture Working Group]]&lt;br /&gt;
[[Category:Grid_Interoperability]]&lt;br /&gt;
[[Category:AW Groupies]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=VoiceSignalingRequest&amp;diff=1217880</id>
		<title>VoiceSignalingRequest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=VoiceSignalingRequest&amp;diff=1217880"/>
		<updated>2025-01-15T03:55:20Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[ Note:  Don&#039;t trust this yet.  Mostly just placeholder content to get it started. ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POST:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;viewer_session&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;candidates&amp;lt;/key&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;key&amp;gt;candidate&amp;lt;/key&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;key&amp;gt;jsep&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;map&amp;gt;&lt;br /&gt;
            &amp;lt;key&amp;gt;type&amp;lt;/key&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;key&amp;gt;sdp&amp;lt;/key&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
        &amp;lt;/map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;parcel_local_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;...&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;parcel_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;string&amp;gt;...&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On success, the response is an empty LLSD value.  On error, you get an HTTP status code and short text description in the body.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2024 || Introduced for WebRTC support&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1217879</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1217879"/>
		<updated>2025-01-15T03:25:44Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Added VoiceSignalingRequest&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[AcceptFriendship Capability|AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentProfile]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[DeclineFriendship Capability|DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]] (Removed)&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]] (Removed)&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[InventoryThumbnailUpload]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[ModifyMaterialParams]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RegionObjects]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]] (Removed)&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateMaterialAgentInventory]]&lt;br /&gt;
* [[UpdateMaterialTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadAgentProfileImage]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
* [[VoiceSignalingRequest]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SimulatorFeatures&amp;diff=1217663</id>
		<title>SimulatorFeatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SimulatorFeatures&amp;diff=1217663"/>
		<updated>2024-11-21T18:13:45Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
==SimulatorFeatures Capability==&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
Basic syntax for getting display name data structures for a given uuid or slid:&lt;br /&gt;
&lt;br /&gt;
 GET getCapability(&amp;quot;SimulatorFeatures&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Response===&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;AnimatedObjects&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;AnimatedObjectMaxTris&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;100000&amp;lt;/integer&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;MaxAgentAnimatedObjectAttachments&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;/map&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;AvatarHoverHeightEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;BakesOnMeshEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;DeadReckoningDistance&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;real&amp;gt;20&amp;lt;/real&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;DeadReckoningTime&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;real&amp;gt;1&amp;lt;/real&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;DynamicPathfindingEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;GLTFEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;HostName&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;string&amp;gt;simhost-01d3500f306966b31.agni.secondlife.io&amp;lt;/string&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;LSLSyntaxId&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;uuid&amp;gt;2d3d4b45-e4c0-d890-a49c-ca4745af1f70&amp;lt;/uuid&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxAgentAttachments&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;38&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxAgentGroups&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;70&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxAgentGroupsBasic&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;42&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxAgentGroupsPremium&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;70&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxEstateAccessIds&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;750&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxEstateManagers&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;20&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxMaterialsPerTransaction&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;50&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxTextureResolution&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;2048&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MeshRezEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MeshUploadEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MeshXferEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MirrorsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;NoModBypassSupport&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;PBRMaterialSwatchEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;PBRTerrainEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;PBRTerrainTransformsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;PhysicsMaterialsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;PhysicsShapeTypes&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;convex&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;none&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;prim&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;/map&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;RenderMaterialsCapability&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
  &amp;lt;/llsd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SimulatorFeatures&amp;diff=1217662</id>
		<title>SimulatorFeatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SimulatorFeatures&amp;diff=1217662"/>
		<updated>2024-11-21T18:11:48Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Initial version - example from a 2024 BBQ simulator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
==SimulatorFeatures Capability==&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
Basic syntax for getting display name data structures for a given uuid or slid:&lt;br /&gt;
&lt;br /&gt;
 GET getCapability(&amp;quot;SimulatorFeatures&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
===Response===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
  &amp;lt;map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;AnimatedObjects&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;AnimatedObjectMaxTris&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;100000&amp;lt;/integer&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;MaxAgentAnimatedObjectAttachments&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;integer&amp;gt;2&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;AvatarHoverHeightEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;BakesOnMeshEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;DeadReckoningDistance&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;real&amp;gt;20&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;DeadReckoningTime&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;real&amp;gt;1&amp;lt;/real&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;DynamicPathfindingEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;GLTFEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;0&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;HostName&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;string&amp;gt;simhost-01d3500f306966b31.agni.secondlife.io&amp;lt;/string&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;LSLSyntaxId&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;uuid&amp;gt;2d3d4b45-e4c0-d890-a49c-ca4745af1f70&amp;lt;/uuid&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxAgentAttachments&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;38&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxAgentGroups&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;70&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxAgentGroupsBasic&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;42&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxAgentGroupsPremium&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;70&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxEstateAccessIds&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;750&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxEstateManagers&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;20&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxMaterialsPerTransaction&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;50&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MaxTextureResolution&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;integer&amp;gt;2048&amp;lt;/integer&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MeshRezEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MeshUploadEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MeshXferEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;MirrorsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;NoModBypassSupport&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;PBRMaterialSwatchEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;PBRTerrainEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;PBRTerrainTransformsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;PhysicsMaterialsEnabled&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;PhysicsShapeTypes&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;convex&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;none&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
      &amp;lt;key&amp;gt;prim&amp;lt;/key&amp;gt;&lt;br /&gt;
      &amp;lt;boolean&amp;gt;1&amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
    &amp;lt;key&amp;gt;RenderMaterialsCapability&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;real&amp;gt;4&amp;lt;/real&amp;gt;&lt;br /&gt;
  &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1217563</id>
		<title>GroupMemberData</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1217563"/>
		<updated>2024-10-26T21:53:22Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Service fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;POST:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The response is a map containing the requesting agent&#039;s ID, the group ID, the member count, a map of member data, a map of group defaults, and an array of group titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;00112233-4455-6677-8899-aabbccddeeff&amp;lt;/uuid&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;key&amp;gt;member_count&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;integer&amp;gt;10&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;4&amp;lt;/integer&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;2012/20/03&amp;lt;/string&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;FFFFFFFF&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;bool&amp;gt;True&amp;lt;/bool&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;map&amp;gt;  &amp;lt;!-- Group Defaults --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;default_powers&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;01c00000&amp;lt;/string&amp;gt;    &lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;array&amp;gt; &amp;lt;!-- Group Titles --&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Default Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 1&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 2&amp;lt;/string&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Owner Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 3&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; the &#039;&#039;powers&#039;&#039; value is a string and must be converted to a U64.&lt;br /&gt;
&lt;br /&gt;
To reduce the amount of data being transferred, default member information is omitted from the member list.  This may result in a member information block with an empty map.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If any of the above keys do not exist, use the following default values:&lt;br /&gt;
* &#039;&#039;&#039;donated_square_meters&#039;&#039;&#039;: 0&lt;br /&gt;
* &#039;&#039;&#039;last_login&#039;&#039;&#039;: &amp;quot;unknown&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;powers&#039;&#039;&#039;: &#039;&#039;default_powers&#039;&#039; from the &#039;&#039;defaults&#039;&#039; map&lt;br /&gt;
* &#039;&#039;&#039;title&#039;&#039;&#039;: the first element from the &#039;&#039;titles&#039;&#039; array&lt;br /&gt;
* &#039;&#039;&#039;owner&#039;&#039;&#039;: &#039;&#039;false&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2024 || Fixed.  Note that large groups can return an enormous amount of data.&lt;br /&gt;
|-&lt;br /&gt;
| 2017 || Broken.  May return data for other group.  Callers should verify &#039;group_id&#039; in response matches that in request and re-issue if different.  SL-16849.&lt;br /&gt;
|-&lt;br /&gt;
| ~2012 || Introduced&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlHTTPRequest&amp;diff=1216844</id>
		<title>LlHTTPRequest</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlHTTPRequest&amp;diff=1216844"/>
		<updated>2024-06-28T14:31:19Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Update the throttling details.  Still not what it should be but the basics are now correct.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|func=llHTTPRequest&lt;br /&gt;
|func_id=230&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_desc=Sends an HTTP request to the specified URL with the body of the request and parameters. When the response is received, a [[http_response]] event is raised.&lt;br /&gt;
|sort=HTTPRequest&lt;br /&gt;
|func_footnote=&lt;br /&gt;
|return_type=key|return_subtype=handle&lt;br /&gt;
|return_text=identifying the HTTP request made.&lt;br /&gt;
|p1_type=string|p1_name=url|p1_desc=A valid HTTP/HTTPS URL.&lt;br /&gt;
|p2_type=list|p2_subtype=instructions|p2_name=parameters|p2_desc=configuration parameters, specified as HTTP_* flag-value pairs&lt;br /&gt;
[ parameter1, value1, parameter2, value2, . . . parameterN, valueN]&lt;br /&gt;
|p3_type=string|p3_name=body|p3_desc=Contents of the request.&lt;br /&gt;
|constants={{LSL_Constants_HTTP}}&lt;br /&gt;
{{LSL_Constants/HTTP_Headers}}&lt;br /&gt;
{{LSL_Extended_Error_HTTP}}&lt;br /&gt;
|spec=&lt;br /&gt;
|caveats=&lt;br /&gt;
*Spaces, control characters, and other characters that are not allowed in URLs will cause a run time error.&lt;br /&gt;
*The corresponding [[http_response]] event will be triggered in all scripts in the [[prim]], not just in the requesting script.&lt;br /&gt;
*Requests must fully complete after 60 seconds, or else the response will be thrown away and the [[http_response]] status code will be 499.&lt;br /&gt;
*The response body is limited to 2048 bytes by default, see [[HTTP_BODY_MAXLENGTH]] above to increase it. If the response is longer, it will be truncated.&lt;br /&gt;
*The request body size (e.g., of POST and PUT requests) is limited only by available script memory. Scripts can hold at most 32k characters in a string, under [[Mono]], as characters are two bytes each, so, scripts cannot upload over 32k UTF-8 characters&lt;br /&gt;
*Cannot be used to load textures or images from the internet, for more information see [[Web Textures]].&lt;br /&gt;
*If the accessed site is relying on the LSL script to report [[L$]] transactions, then it &#039;&#039;&#039;must&#039;&#039;&#039; check the &amp;lt;code&amp;gt;X-SecondLife-Shard&amp;lt;/code&amp;gt; header to see if the script is running on the beta grid.&lt;br /&gt;
* Some servers will return a &amp;lt;code&amp;gt;405&amp;lt;/code&amp;gt; error if you send POST to a file that can&#039;t accept metadata, such as a text or HTML file. Make sure you use the GET method to ensure success in any environment.&lt;br /&gt;
* While the HTTP status code from the server is provided to the script, redirect codes such as &amp;lt;code&amp;gt;302&amp;lt;/code&amp;gt; will result in the redirect being automatically and transparently followed ONLY IF the [[HTTP_METHOD]] is GET, with the resulting response being returned.  If the [[HTTP_METHOD]] is anything other than GET then you&#039;ll get back an [[http_response]] with a status code of &amp;lt;code&amp;gt;302&amp;lt;/code&amp;gt;, but without any way to view the headers, you can&#039;t know where you were being redirected to unless that was also included in the body.&lt;br /&gt;
* The following applies when making a request to a script using HTTP-In:&lt;br /&gt;
**When appending a query string to a cap URL there &#039;&#039;&#039;MUST&#039;&#039;&#039; be a trailing slash between the cap guid and the query string token &amp;lt;code&amp;gt;&amp;quot;?&amp;quot;&amp;lt;/code&amp;gt;. For example: [https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322?arg=gra {{HoverTextStyle|style=color:green;|&amp;lt;nowiki&amp;gt;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&amp;lt;/nowiki&amp;gt;|2={{String|x-script-url}} = {{String|https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322}}}}?{{HoverTextStyle|style=color:red;|1=arg=gra|2={{String|x-query-string}} = {{String|1=arg=gra}}}}] will return a 500 HTTP status {{Wikipedia|List_of_HTTP_status_codes#5xx_Server_Error|Server Error code}}, but [https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/?arg=gra {{HoverTextStyle|style=color:green;|&amp;lt;nowiki&amp;gt;https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322&amp;lt;/nowiki&amp;gt;|2={{String|x-script-url}} = {{String|https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322}}}}{{HoverTextStyle|style=color:blue;|/|2={{String|x-path-info}} = {{String|/}}}}?{{HoverTextStyle|style=color:red;|1=arg=gra|2={{String|x-query-string}} = {{String|1=arg=gra}}}}] will succeed.&lt;br /&gt;
* &amp;lt;code&amp;gt;X-SecondLife-Owner-Name&amp;lt;/code&amp;gt; may return &amp;lt;code&amp;gt;&amp;quot;(Loading...)&amp;quot;&amp;lt;/code&amp;gt; instead of owner name (still true, 30th of March, 2022)&lt;br /&gt;
* Requests made at approx 0625 SLT may fail with a &amp;lt;code&amp;gt;503&amp;lt;/code&amp;gt; status code, with &amp;lt;code&amp;gt;&amp;quot;ERROR: The requested URL could not be retrieved&amp;quot;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;quot;(111) Connection refused&amp;quot;&amp;lt;/code&amp;gt; in the body of the response.  This has been confirmed as expected behavior by Kelly, due to the nightly maintenance and log rotation.  It does reliably impact object to object HTTP at that time, and quite probably may impact object to/from web around the same time.  The interruption in service is fairly brief, and the precise timing may vary as LL adjust their nightly maintenance processes, or due to server load.&lt;br /&gt;
* Use &amp;lt;code&amp;gt;HTTP_MIMETYPE&amp;lt;/code&amp;gt; to set the &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. Attempts to use &amp;lt;code&amp;gt;HTTP_CUSTOM_HEADER&amp;lt;/code&amp;gt; to set it will cause a runtime script error.&lt;br /&gt;
* If the origin server does not include a content-type header in its response, LSL will attempt to treat the incoming data as &amp;quot;text/plain; charset=utf-8&amp;quot;. This behavior diverges from [https://datatracker.ietf.org/doc/html/rfc2616#section-7.2.1 RFC 2616].&lt;br /&gt;
&lt;br /&gt;
==== Throttles ====&lt;br /&gt;
&lt;br /&gt;
The LSL function [[llHTTPRequest]] is throttled in three ways:  by object, by owner, and by http error.  All group-owned objects are considered together in the same throttle.&lt;br /&gt;
&lt;br /&gt;
The current limits are:&lt;br /&gt;
* 25 requests in 20 seconds for each object&lt;br /&gt;
* 1000 requests in 20 seconds for each owner with higher limits for some regions&lt;br /&gt;
* Five HTTP errors (500 or higher) in 60 seconds for each script&lt;br /&gt;
These may change in the future if needed to prevent problems in regions.&lt;br /&gt;
&lt;br /&gt;
It is possible for a large collection of objects or scripts to make many calls to [[llHTTPRequest]] and reach one or more throttles.  When a script calls [[llHTTPRequest]] with a throttle blocking the request, it will return [[NULL_KEY]].&lt;br /&gt;
&lt;br /&gt;
The calling script must check for the [[NULL_KEY]] result and react properly for the script and object to function correctly.   Some things to consider:&lt;br /&gt;
&lt;br /&gt;
* Pause further requests until the throttle clears&lt;br /&gt;
* Do not make any additional [[llHTTPRequest]] calls until enough time has passed for the throttle to reset.    They will fail and continue to return [[NULL_KEY]] otherwise.&lt;br /&gt;
* Once reached, the throttles will remain in effect as long as requests continue, but will clear if there is a silent period with no requests at least twice the throttle interval, in the common case 2 * 20 or 40 seconds.‎&lt;br /&gt;
&lt;br /&gt;
:Consider how a group of objects behaves.   Developers must consider how multiple objects will interact and how that will affect clearing the throttle.‎&lt;br /&gt;
&lt;br /&gt;
:The [[llHTTPRequest]] throttle is most likely to be an issue with a large number of objects in a region making requests.  To clear the throttle fastest, when an object encounters the throttle, it should broadcast a region-wide chat message to other objects informing them of the event and stopping their requests. If those objects continue making requests, those requests will fail and just prolong recovery.‎&lt;br /&gt;
&lt;br /&gt;
:If an object waits and still gets a failure, it may be a good idea to increase the time before the next request and/or add a small random value to the wait time. This may help prevent failures caused by large groups of objects acting nearly in unison.&lt;br /&gt;
&lt;br /&gt;
* Object requests are throttled at approximately 25 requests per 20 seconds. This is to support a sustained rate of one per second or a maximum burst of up to 25 every 40 seconds (twice the interval for maximum burst), smaller bursts are recommended. &lt;br /&gt;
* [[NULL_KEY]] is returned if the request is throttled.&lt;br /&gt;
* See [http://forums-archive.secondlife.com/139/72/108960/1.html this thread] and [http://forums-archive.secondlife.com/139/2c/109571/1.html this thread] for older details.&lt;br /&gt;
----&lt;br /&gt;
|examples=&lt;br /&gt;
&lt;br /&gt;
*[[Writing Headers and HTTP POST Body to a File]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
key http_request_id;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        http_request_id = llHTTPRequest(&amp;quot;url&amp;quot;, [], &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    http_response(key request_id, integer status, list metadata, string body)&lt;br /&gt;
    {&lt;br /&gt;
        if (request_id != http_request_id) return;// exit if unknown&lt;br /&gt;
&lt;br /&gt;
        vector COLOR_BLUE = &amp;lt;0.0, 0.0, 1.0&amp;gt;;&lt;br /&gt;
        float  OPAQUE     = 1.0;&lt;br /&gt;
&lt;br /&gt;
        llSetText(body, COLOR_BLUE, OPAQUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example PHP test script:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php header(&amp;quot;content-type: text/plain; charset=utf-8&amp;quot;); ?&amp;gt;&lt;br /&gt;
Headers received:&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Wouter Hobble&lt;br /&gt;
 * @copyright 2008&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
foreach ($_SERVER as $k =&amp;gt; $v)&lt;br /&gt;
{&lt;br /&gt;
    if( substr($k, 0, 5) == &#039;HTTP_&#039;)&lt;br /&gt;
    {&lt;br /&gt;
        print &amp;quot;\n&amp;quot;. $k. &amp;quot;\t&amp;quot;. $v;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example PHP wrapper script both capturing Apache headers and global methods&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    // Author Waster Skronski.&lt;br /&gt;
    // General Public License (GPL).&lt;br /&gt;
    // Mind that some headers are not included because they&#039;re either useless or unreliable.&lt;br /&gt;
&lt;br /&gt;
    $USE_APACHE_HEADERS = TRUE;// switch to false if you need CGI methods&lt;br /&gt;
&lt;br /&gt;
    if ($USE_APACHE_HEADERS)&lt;br /&gt;
    {&lt;br /&gt;
        $headers    = apache_request_headers();&lt;br /&gt;
        $objectgrid = $headers[&amp;quot;X-SecondLife-Shard&amp;quot;];&lt;br /&gt;
        $objectname = $headers[&amp;quot;X-SecondLife-Object-Name&amp;quot;];&lt;br /&gt;
        $objectkey  = $headers[&amp;quot;X-SecondLife-Object-Key&amp;quot;];&lt;br /&gt;
        $objectpos  = $headers[&amp;quot;X-SecondLife-Local-Position&amp;quot;];&lt;br /&gt;
        $ownerkey   = $headers[&amp;quot;X-SecondLife-Owner-Key&amp;quot;];&lt;br /&gt;
        $ownername  = $headers[&amp;quot;X-SecondLife-Owner-Name&amp;quot;];&lt;br /&gt;
        $regiondata = $headers[&amp;quot;X-SecondLife-Region&amp;quot;];&lt;br /&gt;
        $regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);        // cut coords off&lt;br /&gt;
        $regionpos  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
        $regionname = substr($regiontmp[0],0,-1);       // cut last space from region name&lt;br /&gt;
    } else {&lt;br /&gt;
        $db         = $GLOBALS;&lt;br /&gt;
        $headers    = $db[&#039;$_ENV&#039;];&lt;br /&gt;
        $objectgrid = $headers[&amp;quot;HTTP_X_SECONDLIFE_SHARD&amp;quot;];&lt;br /&gt;
        $objectname = $headers[&amp;quot;HTTP_X_SECONDLIFE_OBJECT_NAME&amp;quot;];&lt;br /&gt;
        $objectkey  = $headers[&amp;quot;HTTP_X_SECONDLIFE_OBJECT_KEY&amp;quot;];&lt;br /&gt;
        $ownerkey   = $headers[&amp;quot;HTTP_X_SECONDLIFE_OWNER_KEY&amp;quot;];&lt;br /&gt;
        $objectpos  = $headers[&amp;quot;HTTP_X_SECONDLIFE_LOCAL_POSITION&amp;quot;];&lt;br /&gt;
        $ownername  = $headers[&amp;quot;HTTP_X_SECONDLIFE_OWNER_NAME&amp;quot;];&lt;br /&gt;
        $regiondata = $headers[&amp;quot;HTTP_X_SECONDLIFE_REGION&amp;quot;];&lt;br /&gt;
        $regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);&lt;br /&gt;
        $regionpos  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
        $regionname = substr($regiontmp[0],0,-1);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example wrapper script for GoDaddy.com Linux PHP servers (fix made by Thomas Conover):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// FETCH HEADERS START&lt;br /&gt;
&lt;br /&gt;
if (!function_exists(&#039;apache_request_headers&#039;))&lt;br /&gt;
{&lt;br /&gt;
    function apache_request_headers() {&lt;br /&gt;
        foreach($_SERVER as $key=&amp;gt;$value) {&lt;br /&gt;
            if (substr($key,0,5)==&amp;quot;HTTP_&amp;quot;) {&lt;br /&gt;
                $key=str_replace(&amp;quot; &amp;quot;,&amp;quot;-&amp;quot;,ucwords(strtolower(str_replace(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;,substr($key,5)))));&lt;br /&gt;
                $out[$key]=$value;&lt;br /&gt;
            }else{&lt;br /&gt;
                $out[$key]=$value;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return $out;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// Mind that some headers are not included because they&#039;re either useless or unreliable (e.g. X-Secondlife-Local-Position)&lt;br /&gt;
$headers    = apache_request_headers();&lt;br /&gt;
$objectgrid = $headers[&amp;quot;X-Secondlife-Shard&amp;quot;];&lt;br /&gt;
$objectname = $headers[&amp;quot;X-Secondlife-Object-Name&amp;quot;];&lt;br /&gt;
$objectkey  = $headers[&amp;quot;X-Secondlife-Object-Key&amp;quot;];&lt;br /&gt;
$objectpos  = $headers[&amp;quot;X-Secondlife-Local-Position&amp;quot;];&lt;br /&gt;
$ownerkey   = $headers[&amp;quot;X-Secondlife-Owner-Key&amp;quot;];&lt;br /&gt;
$ownername  = $headers[&amp;quot;X-Secondlife-Owner-Name&amp;quot;];&lt;br /&gt;
$regiondata = $headers[&amp;quot;X-Secondlife-Region&amp;quot;];&lt;br /&gt;
$regiontmp  = explode (&amp;quot;(&amp;quot;,$regiondata);            // cut coords off&lt;br /&gt;
$regionname = substr($regiontmp[0],0,-1);           // cut last space from region name&lt;br /&gt;
$regiontmp  = explode (&amp;quot;)&amp;quot;,$regiontmp[1]);&lt;br /&gt;
$regionpos  = $regiontmp[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// FETCH HEADERS END&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_header&lt;br /&gt;
|also_events={{LSL DefineRow||[[http_response]]}}&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llEscapeURL]]}}&lt;br /&gt;
{{LSL DefineRow||[[llHTTPResponse]]}}&lt;br /&gt;
{{LSL DefineRow||[[llUnescapeURL]]}}&lt;br /&gt;
|also_articles={{LSL DefineRow||[[Simulator IP Addresses]]}}&lt;br /&gt;
|also_footer&lt;br /&gt;
|notes=If for some reason while using the function [[llHTTPRequest]] or the event [[http_response]] you are unable to parse a known good RSS feed or some other form of web contents, you will need to work around it outside of Second Life. This is unlikely to change in the near future since checking the headers requires more overhead at the simulator level.&lt;br /&gt;
&lt;br /&gt;
You may find that some web servers return either a null or a nonsensical result when [[llHTTPRequest]] is used, even though the same URL in a PC web browser returns the expected result. This may be due to the fact that the [[llHTTPRequest]] User Agent string is not recognised by some web servers as it does not contain &amp;lt;code&amp;gt;&amp;quot;Mozilla&amp;quot;&amp;lt;/code&amp;gt;, which would identify it as a web browser instead of, for example, a [https://www.shoutcast.com/ Shoutcast] or an RSS client. This is also true when the PHP script relies on [https://www.php.net/manual/en/reserved.variables.cookies.php $_COOKIE]. Neither can the function [[llHTTPRequest]] set a cookie nor can the event [[http_request]] retrieve them.&lt;br /&gt;
&lt;br /&gt;
CGI environments may place the headers into variables by capitalizing the entire name, replacing dashes with underscores, and prefixing the name with &amp;lt;code&amp;gt;HTTP_&amp;lt;/code&amp;gt;, e.g. &amp;lt;code&amp;gt;HTTP_X_SECONDLIFE_OBJECT_NAME&amp;lt;/code&amp;gt;. PHP &amp;lt;code&amp;gt;$_SERVER&amp;lt;/code&amp;gt; variables do this as well, and so does PHP running inside PHP-FPM (as opposed to an Apache module), which is the standard way to configure PHP on non-Apache webservers (such as [https://nginx.org/nginx {{code|nginx}}]).&lt;br /&gt;
&lt;br /&gt;
Apache can include the headers in its logs, using the &amp;lt;code&amp;gt;CustomLog&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LogFormat&amp;lt;/code&amp;gt; directives.  See [https://httpd.apache.org/docs/2.4/mod/mod_log_config.html#formats the docs] for details on the syntax.&lt;br /&gt;
&lt;br /&gt;
|mode&lt;br /&gt;
|deprecated&lt;br /&gt;
|permission&lt;br /&gt;
|cat1=HTTP&lt;br /&gt;
|cat2=XML-RPC&lt;br /&gt;
|cat3=Communications&lt;br /&gt;
|cat4=HTTP/Client&lt;br /&gt;
|haiku={{Haiku|Shining break of day|Lov&#039;ly web, carefully spun|Of bytes and prims}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=InventoryThumbnailUpload&amp;diff=1216636</id>
		<title>InventoryThumbnailUpload</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=InventoryThumbnailUpload&amp;diff=1216636"/>
		<updated>2024-05-05T17:45:35Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The InventoryThumbnailUpload Capability performs a function...  === History ===  {| class=&amp;quot;wikitable&amp;quot; |- | 2023 || Introduced |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The InventoryThumbnailUpload Capability performs a function...&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2023 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=ModifyMaterialParams&amp;diff=1216635</id>
		<title>ModifyMaterialParams</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=ModifyMaterialParams&amp;diff=1216635"/>
		<updated>2024-05-05T17:45:05Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The ModifyMaterialParams Capability performs a function...  === History ===  {| class=&amp;quot;wikitable&amp;quot; |- | 2023 || Introduced |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The ModifyMaterialParams Capability performs a function...&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2023 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=UpdateMaterialTaskInventory&amp;diff=1216634</id>
		<title>UpdateMaterialTaskInventory</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=UpdateMaterialTaskInventory&amp;diff=1216634"/>
		<updated>2024-05-05T17:43:57Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The UpdateMaterialTaskInventory Capability performs a function...  === History ===  {| class=&amp;quot;wikitable&amp;quot; |- | 2023 || Introduced |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The UpdateMaterialTaskInventory Capability performs a function...&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2023 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=UpdateMaterialAgentInventory&amp;diff=1216633</id>
		<title>UpdateMaterialAgentInventory</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=UpdateMaterialAgentInventory&amp;diff=1216633"/>
		<updated>2024-05-05T17:43:30Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The UpdateMaterialAgentInventory Capability performs a function...  === History ===  {| class=&amp;quot;wikitable&amp;quot; |- | 2023 || Introduced |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The UpdateMaterialAgentInventory Capability performs a function...&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2023 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1216632</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1216632"/>
		<updated>2024-05-05T17:39:32Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Add some missing materials caps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[AcceptFriendship Capability|AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentProfile]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[DeclineFriendship Capability|DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]] (Removed)&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]] (Removed)&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[InventoryThumbnailUpload]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[ModifyMaterialParams]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RegionObjects]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]] (Removed)&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateMaterialAgentInventory]]&lt;br /&gt;
* [[UpdateMaterialTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadAgentProfileImage]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216339</id>
		<title>Simulator Main Loop</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216339"/>
		<updated>2024-03-12T18:17:30Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
Common to time simulations, the Linden simulators have a main loop where time deltas occur and state changes and housekeeping tasks are organized.  Most of this is simply hidden from view and is experienced as either &amp;quot;laggy today&amp;quot; or &amp;quot;not too laggy today.&amp;quot;  Some phases of the loop are reported back to the Viewer and displayed on the Statistics floater and are the subject of much interest and debate.  So here is a high-level breakdown of the loop and a description that relates simulation back to the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
[[File:Simulator Main Loop Breakdown.png|800px|||Main Loop Breakdown]]&lt;br /&gt;
&lt;br /&gt;
== Columns ==&lt;br /&gt;
=== App State ===&lt;br /&gt;
The Simulator, like the Viewer, defines numerous application states which serve as an internal marker of progress of context while executing.  Labels are mostly self-describing and occur once but there are exceptions.  The &#039;SVC_PUMP_*&#039; and &#039;SVC_CB_*&#039; labels mark repetitions of the same I/O logic at four different points in a single pass through the loop.&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
Each state is broken down, where possible, into discrete steps tagged with function and method names, some real, some imaginary.&lt;br /&gt;
&lt;br /&gt;
=== Bounds ===&lt;br /&gt;
A simulation frame does not execute every possible step on every frame.  Bounding of execution load is performed in several ways to avoid unnecessary computation and improve overall framerate behavior.  These bounds take several forms.&lt;br /&gt;
&lt;br /&gt;
Frequency bound.  This indicates how often the step is invoked.  As indicated by the key, there are roughly four schemes in play:&lt;br /&gt;
* Every frame (green).  The most common case, the step is invoked on every frame.&lt;br /&gt;
* Skipped frames (yellow).  Invoked on every Nth frame of simulation.&lt;br /&gt;
* Scheduled on the clock (pink).  Invoked after a time interval has passed.&lt;br /&gt;
* Selectively run based on random logic (red).  Complex or opaque skipping logic is applied.&lt;br /&gt;
&lt;br /&gt;
Time bound.  Once started, a simulation step does not always run to completion.  Early exit from the step may be performed to get on with the frame or as a result of not-yet-arrived data.  Breakdown:&lt;br /&gt;
* Run to completion (green).&lt;br /&gt;
* Run to a clock target (yellow).  Usually something more complicated than a simple deadline but the idea is to limit damage to the frametime.&lt;br /&gt;
* Run to complex time target (pink).  Rococo schemes for early termination.&lt;br /&gt;
* Run to simple clock target (red).  Basic deadline stop.&lt;br /&gt;
&lt;br /&gt;
Other bounds.  Other system state can lead to early termination of a step.  This can literally be anything but we have a few &#039;common&#039; cases:&lt;br /&gt;
* No other bound (green).&lt;br /&gt;
* Run until HTTP request throttles invokes (yellow).  Back off the HTTP when using it too hard.&lt;br /&gt;
* Run until agent limits hit (pink).  Simulation step has a related agent limit controlling execution.&lt;br /&gt;
* Run until random logic fires (red).  Some complex case allowing early termination of step.&lt;br /&gt;
&lt;br /&gt;
=== Viewer Statistics ===&lt;br /&gt;
The remaining column involves the reporting of loop statistics to interested viewers.  Metrics collection in the simulator is mostly used for internal processes and is kept there.  But the SimStats message, used to populate the Statistics floater, communicates some of these back to the Viewer.  These are indicated by green bars in the four reporting columns which are also tagged with the text from the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
There are gaps in the simulation frame that aren&#039;t reported to the Viewer.  These are indicated in yellow and are simply gathered internally.  There are also some additional metrics being reported to the Viewer that aren&#039;t on the Statistics floater.  (Something to be documented in the future.)&lt;br /&gt;
&lt;br /&gt;
Finally, the &#039;Physics Step&#039; and &#039;Physics Other&#039; spans aren&#039;t precisely as indicated.  They&#039;re collected somewhat independently as part of Havok simulation but this will do for representational purposes.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Server_architecture&amp;diff=1216338</id>
		<title>Server architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Server_architecture&amp;diff=1216338"/>
		<updated>2024-03-12T15:30:38Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
This wiki is mainly focused on the viewer, since that is the portion of the system that is open source.  However, because the viewer interacts with the Second Life servers in somewhat complicated ways, it is helpful to have an understanding of what components do what on the server side.&lt;br /&gt;
&lt;br /&gt;
Much of what you&#039;ll need to understand is actually covered in the [[protocol|protocol documentation]].  In particular, take a look at [[Authentication Flow]], which outlines the process by which the viewer establishes connections with a number of components.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(obsolete)&#039;&#039; if you want to see what the architecture may look like in the future, or if you would like to help shape it, visit the [[Architecture Working Group]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
=== Login server ===&lt;br /&gt;
CGI script running on login.agni.lindenlab.com.  Handles verification of user name and password.  Determines the login region based on home vs. last location vs. URL specified location.  Finds the simulator process running that region and verifies user is allowed to connect there.  Alerts the simulator to expect a connection.  Informs the viewer of where to connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spaceserver ===&lt;br /&gt;
Handles routing of messages based on grid x,y locations. Simulator talks to Space Server to *register* and also find who the neighbors are.  &lt;br /&gt;
&lt;br /&gt;
=== Dataserver ===&lt;br /&gt;
Handles connections to the central database, log database, inventory database(s) and search database(s).  Performs queries on behalf of the simulator process.&lt;br /&gt;
&lt;br /&gt;
=== Simulator ===&lt;br /&gt;
The primary SL server process. Each simulator process simulates one 256x256 meter region. There are about 31,000 regions in total currently.  Each one has to be  hosted on a server running copies of the Simulator program. There is one simulator per region, 4 or more sims per server, 8000 or so servers. As the viewer moves through the world it is handled off from one simulator to another.  It handles storing object state, land parcel state, and terrain height-map state. It performs visibility calculations on objects and land and transmits the data to the client.  It transmits image data in a prioritized queue.  Physics simulation is handled with the Havok physics library.  Chat and instant messages are processed here.&lt;br /&gt;
&lt;br /&gt;
Running at full tilt, a simulator will run at 45 frames/sec.  If it can&#039;t keep up, it will attempt time dialation without reducing frame rate.  More details on work performed during a frame are in [[Simulator Main Loop]].&lt;br /&gt;
&lt;br /&gt;
Simulators communicate with one another using a [[circuit]] via UDP.  A &amp;quot;circuit&amp;quot; is a UDP network connection.  Circuits are maintained between adjacent simulators.&lt;br /&gt;
&lt;br /&gt;
==== Simulator vs. Viewer ====&lt;br /&gt;
&lt;br /&gt;
It helps to understand the division of labor between the simulator and the viewer, since the split in Second Life is very different than most other virtual environments:&lt;br /&gt;
&lt;br /&gt;
*  Simulator&#039;s job:&lt;br /&gt;
**  Runs physics engine&lt;br /&gt;
**  Collision detection&lt;br /&gt;
**  keeps track of where everything is&lt;br /&gt;
**  Sends locations of stuff to viewer&lt;br /&gt;
**  Sends updates to viewers only when needed (only when collision occurs or other changes in direction, velocity etc.)&lt;br /&gt;
*  Viewer&#039;s job:&lt;br /&gt;
**  Handle locations of objects&lt;br /&gt;
**  Gets velocities and other physics information, and does simple physics to keep track of what is moving where&lt;br /&gt;
**  No collision detection&lt;br /&gt;
&lt;br /&gt;
=== Other servers ===&lt;br /&gt;
&lt;br /&gt;
* Central Backbone &lt;br /&gt;
* Agent Database&lt;br /&gt;
** Agent DB keeps track of metadata&amp;lt;-&amp;gt;item id (UUID) mapping&lt;br /&gt;
* Central DB (CDB)&lt;br /&gt;
** a list of who owns what, used for billing, etc&lt;br /&gt;
* Find DB (replica of Central DB used for search)&lt;br /&gt;
* Map server - renders overall map with OpenGL&lt;br /&gt;
* RPC server&lt;br /&gt;
** API for developers to manupulate Second Life without using the viewer&lt;br /&gt;
** Translates XMLRPC server into in-world requests&lt;br /&gt;
** Communicates with space server and CDB&lt;br /&gt;
* Region Conductor&lt;br /&gt;
** Looks for regions that should be running, but are down&lt;br /&gt;
** Start those regions on a sim host that has room for it&lt;br /&gt;
** Grid Restart Modes&lt;br /&gt;
*** Startup Mode: Regions are stuck on the current sim host&lt;br /&gt;
*** Normal Mode: Regions are sent to a random sim host&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216337</id>
		<title>Simulator Main Loop</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216337"/>
		<updated>2024-03-12T15:27:26Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Add lucidchart diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
Common to time simulations, the Linden simulators have a main loop where time deltas occur and state changes and housekeeping tasks are organized.  Most of this is simply hidden from view and is experienced as either &amp;quot;laggy&amp;quot; or &amp;quot;not too laggy today.&amp;quot;  Some phases of the loop are reported back to the Viewer and displayed on the Statistics floater and are the subject of much interest and debate.  So here is a high-level breakdown of the loop and a description that relates simulation back to the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
[[File:Simulator Main Loop Breakdown.png|800px|||Main Loop Breakdown]]&lt;br /&gt;
&lt;br /&gt;
== Columns ==&lt;br /&gt;
=== App State ===&lt;br /&gt;
The Simulator, like the Viewer, defines numerous application states which serve as an internal marker of progress of context while executing.  Labels are mostly self-describing and occur once but there are exceptions.  The &#039;SVC_PUMP_*&#039; and &#039;SVC_CB_*&#039; labels mark repetitions of the same I/O logic at four different points in a single pass through the loop.&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
Each state is broken down, where possible, into discrete steps tagged with function and method names, some real, some imaginary.&lt;br /&gt;
&lt;br /&gt;
=== Bounds ===&lt;br /&gt;
A simulation frame does not execute every possible step on every frame.  Bounding of execution load is performed in several ways to avoid unnecessary computation and improve overall framerate behavior.  These bounds take several forms.&lt;br /&gt;
&lt;br /&gt;
Frequency bound.  This indicates how often the step is invoked.  As indicated by the key, there are roughly four schemes in play:&lt;br /&gt;
* Every frame (green).  The most common case, the step is invoked on every frame.&lt;br /&gt;
* Skipped frames (yellow).  Invoked on every Nth frame of simulation.&lt;br /&gt;
* Scheduled on the clock (pink).  Invoked after a time interval has passed.&lt;br /&gt;
* Selectively run based on random logic (red).  Complex or opaque skipping logic is applied.&lt;br /&gt;
&lt;br /&gt;
Time bound.  Once started, a simulation step does not always run to completion.  Early exit from the step may be performed to get on with the frame or as a result of not-yet-arrived data.  Breakdown:&lt;br /&gt;
* Run to completion (green).&lt;br /&gt;
* Run to a clock target (yellow).  Usually something more complicated than a simple deadline but the idea is to limit damage to the frametime.&lt;br /&gt;
* Run to complex time target (pink).  Rococo schemes for early termination.&lt;br /&gt;
* Run to simple clock target (red).  Basic deadline stop.&lt;br /&gt;
&lt;br /&gt;
Other bounds.  Other system state can lead to early termination of a step.  This can literally be anything but we have a few &#039;common&#039; cases:&lt;br /&gt;
* No other bound (green).&lt;br /&gt;
* Run until HTTP request throttles invokes (yellow).  Back off the HTTP when using it too hard.&lt;br /&gt;
* Run until agent limits hit (pink).  Simulation step has a related agent limit controlling execution.&lt;br /&gt;
* Run until random logic fires (red).  Some complex case allowing early termination of step.&lt;br /&gt;
&lt;br /&gt;
=== Viewer Statistics ===&lt;br /&gt;
The remaining column involves the reporting of loop statistics to interested viewers.  Metrics collection in the simulator is mostly used for internal processes and is kept there.  But the SimStats message, used to populate the Statistics floater, communicates some of these back to the Viewer.  These are indicated by green bars in the four reporting columns which are also tagged with the text from the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
There are gaps in the simulation frame that aren&#039;t reported to the Viewer.  These are indicated in yellow and are simply gathered internally.  There are also some additional metrics being reported to the Viewer that aren&#039;t on the Statistics floater.  (Something to be documented in the future.)&lt;br /&gt;
&lt;br /&gt;
Finally, the &#039;Physics Step&#039; and &#039;Physics Other&#039; spans aren&#039;t precisely as indicated.  They&#039;re collected somewhat independently as part of Havok simulation but this will do for representational purposes.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Simulator_Main_Loop_Breakdown.svg&amp;diff=1216336</id>
		<title>File:Simulator Main Loop Breakdown.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Simulator_Main_Loop_Breakdown.svg&amp;diff=1216336"/>
		<updated>2024-03-12T15:22:39Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Source material for this is in Lucidchart.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Source material for this is in Lucidchart.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Simulator_Main_Loop_Breakdown.png&amp;diff=1216335</id>
		<title>File:Simulator Main Loop Breakdown.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Simulator_Main_Loop_Breakdown.png&amp;diff=1216335"/>
		<updated>2024-03-12T15:21:18Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216334</id>
		<title>Simulator Main Loop</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Simulator_Main_Loop&amp;diff=1216334"/>
		<updated>2024-03-12T15:18:57Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Create &amp;#039;Simulator Main Loop&amp;#039; page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiLearnBox}}&lt;br /&gt;
&lt;br /&gt;
Common to time simulations, the Linden simulators have a main loop where time deltas occur and state changes and housekeeping tasks are organized.  Most of this is simply hidden from view and is experienced as either &amp;quot;laggy&amp;quot; or &amp;quot;not too laggy today.&amp;quot;  Some phases of the loop are reported back to the Viewer and displayed on the Statistics floater and are the subject of much interest and debate.  So here is a high-level breakdown of the loop and a description that relates simulation back to the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
== Columns ==&lt;br /&gt;
=== App State ===&lt;br /&gt;
The Simulator, like the Viewer, defines numerous application states which serve as an internal marker of progress of context while executing.  Labels are mostly self-describing and occur once but there are exceptions.  The &#039;SVC_PUMP_*&#039; and &#039;SVC_CB_*&#039; labels mark repetitions of the same I/O logic at four different points in a single pass through the loop.&lt;br /&gt;
&lt;br /&gt;
=== Operations ===&lt;br /&gt;
Each state is broken down, where possible, into discrete steps tagged with function and method names, some real, some imaginary.&lt;br /&gt;
&lt;br /&gt;
=== Bounds ===&lt;br /&gt;
A simulation frame does not execute every possible step on every frame.  Bounding of execution load is performed in several ways to avoid unnecessary computation and improve overall framerate behavior.  These bounds take several forms.&lt;br /&gt;
&lt;br /&gt;
Frequency bound.  This indicates how often the step is invoked.  As indicated by the key, there are roughly four schemes in play:&lt;br /&gt;
* Every frame (green).  The most common case, the step is invoked on every frame.&lt;br /&gt;
* Skipped frames (yellow).  Invoked on every Nth frame of simulation.&lt;br /&gt;
* Scheduled on the clock (pink).  Invoked after a time interval has passed.&lt;br /&gt;
* Selectively run based on random logic (red).  Complex or opaque skipping logic is applied.&lt;br /&gt;
&lt;br /&gt;
Time bound.  Once started, a simulation step does not always run to completion.  Early exit from the step may be performed to get on with the frame or as a result of not-yet-arrived data.  Breakdown:&lt;br /&gt;
* Run to completion (green).&lt;br /&gt;
* Run to a clock target (yellow).  Usually something more complicated than a simple deadline but the idea is to limit damage to the frametime.&lt;br /&gt;
* Run to complex time target (pink).  Rococo schemes for early termination.&lt;br /&gt;
* Run to simple clock target (red).  Basic deadline stop.&lt;br /&gt;
&lt;br /&gt;
Other bounds.  Other system state can lead to early termination of a step.  This can literally be anything but we have a few &#039;common&#039; cases:&lt;br /&gt;
* No other bound (green).&lt;br /&gt;
* Run until HTTP request throttles invokes (yellow).  Back off the HTTP when using it too hard.&lt;br /&gt;
* Run until agent limits hit (pink).  Simulation step has a related agent limit controlling execution.&lt;br /&gt;
* Run until random logic fires (red).  Some complex case allowing early termination of step.&lt;br /&gt;
&lt;br /&gt;
=== Viewer Statistics ===&lt;br /&gt;
The remaining column involves the reporting of loop statistics to interested viewers.  Metrics collection in the simulator is mostly used for internal processes and is kept there.  But the SimStats message, used to populate the Statistics floater, communicates some of these back to the Viewer.  These are indicated by green bars in the four reporting columns which are also tagged with the text from the Statistics floater.&lt;br /&gt;
&lt;br /&gt;
There are gaps in the simulation frame that aren&#039;t reported to the Viewer.  These are indicated in yellow and are simply gathered internally.  There are also some additional metrics being reported to the Viewer that aren&#039;t on the Statistics floater.  (Something to be documented in the future.)&lt;br /&gt;
&lt;br /&gt;
Finally, the &#039;Physics Step&#039; and &#039;Physics Other&#039; spans aren&#039;t precisely as indicated.  They&#039;re collected somewhat independently as part of Havok simulation but this will do for representational purposes.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1212174</id>
		<title>Texture Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1212174"/>
		<updated>2022-09-22T17:50:31Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Delete 3.4.3 and earlier console descriptions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiFeatureNav}}&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Decode&#039;&#039;&#039; - Uncompressing a downloaded texture, in SL&#039;s case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discard Level&#039;&#039;&#039; - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)&lt;br /&gt;
&lt;br /&gt;
== 3.7.2 ==&lt;br /&gt;
[[Image:Texture_console_v372.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
# FBO (Needs Details)&lt;br /&gt;
# Raw Tot.  (ND)&lt;br /&gt;
# Bias.  Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
# Cache.&lt;br /&gt;
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.&lt;br /&gt;
# Tot Obj.  (MB) (ND)&lt;br /&gt;
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.&lt;br /&gt;
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.&lt;br /&gt;
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.&lt;br /&gt;
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.&lt;br /&gt;
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.&lt;br /&gt;
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).&lt;br /&gt;
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.&lt;br /&gt;
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests&lt;br /&gt;
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.&lt;br /&gt;
# RAW.  Count of instances of LLImageRaw objects currently in the system.&lt;br /&gt;
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).&lt;br /&gt;
# DEC.  Count of requests outstanding for decoding of texture data.&lt;br /&gt;
# CRE.  (ND)&lt;br /&gt;
# BW.  UDP + HTTP texture bandwidth as consumed / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.&lt;br /&gt;
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:&lt;br /&gt;
#* White = Normal priority image&lt;br /&gt;
#* Yellow = Selected image, prioritized&lt;br /&gt;
#* Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
#* Magenta = Boosted (prioritized) image&lt;br /&gt;
#* Green = UI image &lt;br /&gt;
#* Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client&#039;s record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.&lt;br /&gt;
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.&lt;br /&gt;
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets&lt;br /&gt;
# State.  The texture request&#039;s current state in the fetching/decoding state machine.  States include:&lt;br /&gt;
#* &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard).  If red, invalid state.&lt;br /&gt;
#* &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
#* &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
#* &amp;quot;NET&amp;quot; - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers&lt;br /&gt;
#* &amp;quot;SIM&amp;quot; - Waiting for UDP packet data from simulator&lt;br /&gt;
#* &amp;quot;HTW&amp;quot; - Resource waiting for HTTP resources prior to &amp;quot;HTP&amp;quot; state&lt;br /&gt;
#* &amp;quot;REQ&amp;quot; - Preparing to send HTTP request to grid&lt;br /&gt;
#* &amp;quot;HTP&amp;quot; - Waiting for HTTP response data&lt;br /&gt;
#* &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
#* &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
#* &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
#* &amp;quot;CRE&amp;quot; - Texture needs to be created&lt;br /&gt;
#* &amp;quot;FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):&lt;br /&gt;
#* White = packet received from simulator&lt;br /&gt;
#* Green = data requested from simulator&lt;br /&gt;
#* Yellow = texture processed by state machine&lt;br /&gt;
# Bnd.  Binding of fetched data to OpenGL:&lt;br /&gt;
#* Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
# W x H.  Dimensions of image.&lt;br /&gt;
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).&lt;br /&gt;
# Mem.  Amount of memory consumed by the texture.&lt;br /&gt;
# Mesh Reqs(Tot/Htp/Big).  Mesh status line starting with counts of mesh requests issued:  total (pre-cache), &#039;normal&#039; HTTP and &#039;Big&#039; (over 2MB) HTTP.  A mesh request will typically be for a part of a full mesh:  a single level-of-detail or perhaps a header.  A request may be satisfied by the mesh cache.  If not in the cache, then an HTTP request is issued.  That request will be either a &#039;normal&#039; or a &#039;big&#039; request.&lt;br /&gt;
# Rtr/Err.  Retries issued and final errors received for HTTP mesh requests.&lt;br /&gt;
# Cread/Cwrite.  Mesh cache read and write operations.  &#039;Cwrite&#039; will approximately follow &#039;Htp&#039; + &#039;Big&#039;.  &#039;Cread&#039; gives an indication of the effectiveness of the local mesh cache.&lt;br /&gt;
# Low/At/High.  The mesh fetching code maintains a pool of requests.  This code attempts to keep the pool filled between the &#039;Low&#039; and &#039;High&#039; water levels shown here.  The current pool level is given by &#039;At&#039; and the pool is refilled when it falls below &#039;Low&#039;.&lt;br /&gt;
&lt;br /&gt;
Some patterns to look for when searching for texture fetch bugs:&lt;br /&gt;
&lt;br /&gt;
1.  If Cread is growing quickly while Cwrite and &#039;Tot Htp&#039; are&lt;br /&gt;
static or growing slowly then the texture cache is populated&lt;br /&gt;
and being used.&lt;br /&gt;
&lt;br /&gt;
2.  If Cwrite and &#039;Tot Htp&#039; grow at about the same rate as&lt;br /&gt;
Cread, then either the texture cache is cold or it isn&#039;t working.&lt;br /&gt;
&lt;br /&gt;
3.  If &#039;Tot Htp&#039; is growing faster than &#039;Cwrite&#039;, then we&#039;re&lt;br /&gt;
doing unnecessary fetches for assets for some reason.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* &#039;Texture Memory&#039; or &#039;OpenGL Memory&#039; refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1210728</id>
		<title>TPVD/Developers Group Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1210728"/>
		<updated>2022-05-06T15:22:30Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schedule: &#039;&#039;&#039;See [https://second.life/calendar SL Public Calendar]&#039;&#039;&#039; &lt;br /&gt;
{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewer Pipeline ==&lt;br /&gt;
&lt;br /&gt;
See repository links on [https://releasenotes.secondlife.com/repositories.html Viewer Source Repositories] and downloads on [https://releasenotes.secondlife.com/viewer.html Alternate Viewers]&lt;br /&gt;
&lt;br /&gt;
* Maint L has been promoted&lt;br /&gt;
* Merges in progress&lt;br /&gt;
* In RC:&lt;br /&gt;
** Performance Improvements Viewer&lt;br /&gt;
** MFA Viewer&lt;br /&gt;
&lt;br /&gt;
==Ongoing and Upcoming==&lt;br /&gt;
&lt;br /&gt;
* {{JiraIssue|DRTSIM-537|Restoring offline friendship and group membership offers}}&lt;br /&gt;
** Aditi regions available for testing include:  &amp;quot;Animesh1&amp;quot;, &amp;quot;Animesh Adult&amp;quot;, and &amp;quot;PerfTest 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== New Topics: ==&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Attendees should add agenda items here as needed - see comments when you edit the page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Viewer builds now use python 3 and autobuild 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
 ! Add your items immediately above this comment&lt;br /&gt;
 ! If you refer to a Jira issue, please use the template like this: {{JiraIssue|id|description}}&lt;br /&gt;
 ! Be sure to attach your name or signature using ~~~ so Oz knows who to contact for any clarification&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Meeting Notes ==&lt;br /&gt;
https://modemworld.me/tag/tpv-developer-meetings/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Third Party Viewers]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1210672</id>
		<title>TPVD/Developers Group Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1210672"/>
		<updated>2022-04-22T13:31:40Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Next meeting: &#039;&#039;&#039;1:00 PM SLT, March 18 [http://maps.secondlife.com/secondlife/Hippotropolis/242/6/25 Hippo Theater]&#039;&#039;&#039; &lt;br /&gt;
{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewer Pipeline ==&lt;br /&gt;
&lt;br /&gt;
See repository links on [https://releasenotes.secondlife.com/repositories.html Viewer Source Repositories] and downloads on [https://releasenotes.secondlife.com/viewer.html Alternate Viewers]&lt;br /&gt;
&lt;br /&gt;
* Maint JK has been promoted&lt;br /&gt;
* Merges in progress&lt;br /&gt;
* Performance Improvements viewer coming to RC soon&lt;br /&gt;
&lt;br /&gt;
==Ongoing and Upcoming==&lt;br /&gt;
&lt;br /&gt;
== New Topics: ==&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Attendees should add agenda items here as needed - see comments when you edit the page&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DRTSIM-537.  Restoring offline friendship and group membership offers.&lt;br /&gt;
** New (temporary?) implementations of the ReadOfflineMsgs, AcceptFriendship, DeclineFriendship, AcceptGroupInvite, and DeclineGroupInvite Capabilities.&lt;br /&gt;
** Revival of the [[Current_Sim_Capabilities]] page with a few updates.&lt;br /&gt;
* Viewer builds now use python 3 and autobuild 3&lt;br /&gt;
* Possible time change for TPV meetings?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
 ! Add your items immediately above this comment&lt;br /&gt;
 ! If you refer to a Jira issue, please use the template like this: {{JiraIssue|id|description}}&lt;br /&gt;
 ! Be sure to attach your name or signature using ~~~ so Oz knows who to contact for any clarification&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Meeting Notes ==&lt;br /&gt;
https://modemworld.me/tag/tpv-developer-meetings/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Third Party Viewers]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210568</id>
		<title>ReadOfflineMsgs</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210568"/>
		<updated>2022-04-01T16:46:26Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Still documenting the past.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The ReadOfflineMsgs Capability performs a function similar to the RetrieveInstantMessages LLMessage.&lt;br /&gt;
It retrieves offline Instant Messages and returns them to the caller.  Those IMs are returned directly&lt;br /&gt;
in the response body rather than in individual messages.  As a side-effect of the retrieval, certain&lt;br /&gt;
offers, such as friendship, may become active and available to the caller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Client Request GET -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 [&lt;br /&gt;
   [&lt;br /&gt;
     {&lt;br /&gt;
       asset_id:  UUID,&lt;br /&gt;
       binary_bucket:  Binary,&lt;br /&gt;
       dialog:  Integer,&lt;br /&gt;
       estate_id:  Integer,&lt;br /&gt;
       from_agent_id:  UUID,&lt;br /&gt;
       from_agent_name:  String,&lt;br /&gt;
       from_group:  Boolean,&lt;br /&gt;
       message:  String,&lt;br /&gt;
       message_time:  String,&lt;br /&gt;
       offline:  Integer,&lt;br /&gt;
       parent_estate_id:  Integer,&lt;br /&gt;
       position:  [ Real, Real, Real ],&lt;br /&gt;
       region_id:  UUID,&lt;br /&gt;
       timestamp:  Integer,&lt;br /&gt;
       to_agent_id:  UUID,&lt;br /&gt;
       transaction-id:  UUID&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
An early form of the service had a response structure of:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   messages: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_0&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_1&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_n&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
but that should not be encountered anymore.&lt;br /&gt;
&lt;br /&gt;
Side Effects.  The GET operation currently deletes all of an agent&#039;s stored IMs and subsequent calls will return empty arrays until new IMs are stored.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ~2018 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210567</id>
		<title>DeclineFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210567"/>
		<updated>2022-04-01T16:10:07Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The DeclineFriendship Capability performs a function similar to the [[DeclineFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be actively declined.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieved from offline/stored instant messages.  Offers from online agents cannot be declined with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if declined using this capability.&lt;br /&gt;
&lt;br /&gt;
One query term is required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
&lt;br /&gt;
 Client Request DEL &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ~2018 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210566</id>
		<title>AcceptFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210566"/>
		<updated>2022-04-01T16:09:46Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The AcceptFriendship Capability performs a function similar to the [[AcceptFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be accepted.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieve from offline/stored instant messages.  Offers from online agents cannot be accepted with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if accepted using this capability.&lt;br /&gt;
&lt;br /&gt;
Two query terms are required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
* &#039;agent_name&#039; is the &#039;full name&#039; of the recipient&lt;br /&gt;
&lt;br /&gt;
 Client Request POST &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt;&amp;amp;agent_name=&amp;lt;string&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ~2018 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210565</id>
		<title>ReadOfflineMsgs</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210565"/>
		<updated>2022-04-01T16:09:17Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The ReadOfflineMsgs Capability performs a function similar to the RetrieveInstantMessages LLMessage.&lt;br /&gt;
It retrieves offline Instant Messages and returns them to the caller.  Those IMs are returned directly&lt;br /&gt;
in the response body rather than in individual messages.  As a side-effect of the retrieval, certain&lt;br /&gt;
offers, such as friendship, may become active and available to the caller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Client Request GET -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 [&lt;br /&gt;
   [&lt;br /&gt;
     {&lt;br /&gt;
       asset_id:  UUID,&lt;br /&gt;
       binary_bucket:  Binary,&lt;br /&gt;
       dialog:  Integer,&lt;br /&gt;
       estate_id:  Integer,&lt;br /&gt;
       from_agent_id:  UUID,&lt;br /&gt;
       from_agent_name:  String,&lt;br /&gt;
       from_group:  Boolean,&lt;br /&gt;
       message:  String,&lt;br /&gt;
       message_time:  String,&lt;br /&gt;
       offline:  Integer,&lt;br /&gt;
       parent_estate_id:  Integer,&lt;br /&gt;
       position:  [ Real, Real, Real ],&lt;br /&gt;
       region_id:  UUID,&lt;br /&gt;
       timestamp:  Integer,&lt;br /&gt;
       to_agent_id:  UUID,&lt;br /&gt;
       transaction-id:  UUID&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
An early form of the service had a response structure of:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   messages: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_0&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_1&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_n&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
but that should not be encountered anymore.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ~2018 || Introduced&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1210564</id>
		<title>GroupMemberData</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1210564"/>
		<updated>2022-04-01T16:07:54Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;POST:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The response is a map containing the requesting agent&#039;s ID, the group ID, the member count, a map of member data, a map of group defaults, and an array of group titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Response:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;00112233-4455-6677-8899-aabbccddeeff&amp;lt;/uuid&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;key&amp;gt;member_count&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;integer&amp;gt;10&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;4&amp;lt;/integer&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;2012/20/03&amp;lt;/string&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;FFFFFFFF&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;bool&amp;gt;True&amp;lt;/bool&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;map&amp;gt;  &amp;lt;!-- Group Defaults --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;default_powers&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;01c00000&amp;lt;/string&amp;gt;    &lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;array&amp;gt; &amp;lt;!-- Group Titles --&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Default Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 1&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 2&amp;lt;/string&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Owner Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 3&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; the &#039;&#039;powers&#039;&#039; value is a string and must be converted to a U64.&lt;br /&gt;
&lt;br /&gt;
To reduce the amount of data being transferred, default member information is omitted from the member list.  This may result in a member information block with an empty map.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If any of the above keys do not exist, use the following default values:&lt;br /&gt;
* &#039;&#039;&#039;donated_square_meters&#039;&#039;&#039;: 0&lt;br /&gt;
* &#039;&#039;&#039;last_login&#039;&#039;&#039;: &amp;quot;unknown&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;powers&#039;&#039;&#039;: &#039;&#039;default_powers&#039;&#039; from the &#039;&#039;defaults&#039;&#039; map&lt;br /&gt;
* &#039;&#039;&#039;title&#039;&#039;&#039;: the first element from the &#039;&#039;titles&#039;&#039; array&lt;br /&gt;
* &#039;&#039;&#039;owner&#039;&#039;&#039;: &#039;&#039;false&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2017 || Broken.  May return data for other group.  Callers should verify &#039;group_id&#039; in response matches that in request and re-issue if different.  SL-16849.&lt;br /&gt;
|-&lt;br /&gt;
| ~2012 || Introduced&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1210563</id>
		<title>GroupMemberData</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=GroupMemberData&amp;diff=1210563"/>
		<updated>2022-04-01T16:04:02Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;POST:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The response is a map containing the requesting agent&#039;s ID, the group ID, the member count, a map of member data, a map of group defaults, and an array of group titles.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repsonse:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;llsd&amp;gt;&lt;br /&gt;
    &amp;lt;map&amp;gt;&lt;br /&gt;
        &amp;lt;key&amp;gt;agent_id&amp;lt;/key&amp;gt;&lt;br /&gt;
        &amp;lt;uuid&amp;gt;00112233-4455-6677-8899-aabbccddeeff&amp;lt;/uuid&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
	&amp;lt;key&amp;gt;group_id&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;uuid&amp;gt;01234567-89ab-cdef-fedc-ba9876543210&amp;lt;/uuid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;key&amp;gt;member_count&amp;lt;/key&amp;gt;&lt;br /&gt;
	&amp;lt;integer&amp;gt;10&amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;4&amp;lt;/integer&amp;gt;&lt;br /&gt;
			&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;2012/20/03&amp;lt;/string&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;string&amp;gt;FFFFFFFF&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;integer&amp;gt;1&amp;lt;/integer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;bool&amp;gt;True&amp;lt;/bool&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;map&amp;gt;  &amp;lt;!-- Group Defaults --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;default_powers&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;01c00000&amp;lt;/string&amp;gt;    &lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;array&amp;gt; &amp;lt;!-- Group Titles --&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Default Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 1&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 2&amp;lt;/string&amp;gt;&lt;br /&gt;
	    &amp;lt;string&amp;gt;Group Owner Title&amp;lt;/string&amp;gt;&lt;br /&gt;
            &amp;lt;string&amp;gt;Group Title 3&amp;lt;/string&amp;gt;&lt;br /&gt;
	&amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; the &#039;&#039;powers&#039;&#039; value is a string and must be converted to a U64.&lt;br /&gt;
&lt;br /&gt;
To reduce the amount of data being transferred, default member information is omitted from the member list.  This may result in a member information block with an empty map.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&amp;lt;map&amp;gt; &amp;lt;!-- Member List --&amp;gt;&lt;br /&gt;
	    &amp;lt;key&amp;gt;ffeeddcc-bbaa-9988-7766-554433221100&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;map&amp;gt;&lt;br /&gt;
	        &amp;lt;key&amp;gt;donated_square_meters&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;last_login&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;powers&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;title&amp;lt;/key&amp;gt;&lt;br /&gt;
		&amp;lt;key&amp;gt;owner&amp;lt;/key&amp;gt;&lt;br /&gt;
	    &amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/map&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If any of the above keys do not exist, use the following default values:&lt;br /&gt;
* &#039;&#039;&#039;donated_square_meters&#039;&#039;&#039;: 0&lt;br /&gt;
* &#039;&#039;&#039;last_login&#039;&#039;&#039;: &amp;quot;unknown&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;powers&#039;&#039;&#039;: &#039;&#039;default_powers&#039;&#039; from the &#039;&#039;defaults&#039;&#039; map&lt;br /&gt;
* &#039;&#039;&#039;title&#039;&#039;&#039;: the first element from the &#039;&#039;titles&#039;&#039; array&lt;br /&gt;
* &#039;&#039;&#039;owner&#039;&#039;&#039;: &#039;&#039;false&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2017 || Broken.  May return data for other group.  Callers should verify &#039;group_id&#039; in response matches that in request and re-issue if different.  SL-16849.&lt;br /&gt;
|-&lt;br /&gt;
| ~2012 || Introduced&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210562</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210562"/>
		<updated>2022-04-01T13:27:26Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[AcceptFriendship Capability|AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[DeclineFriendship Capability|DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]]&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]]&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]]&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Capability_DeclineFriendship&amp;diff=1210561</id>
		<title>Capability DeclineFriendship</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Capability_DeclineFriendship&amp;diff=1210561"/>
		<updated>2022-04-01T13:20:43Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Monty Linden moved page Capability DeclineFriendship to DeclineFriendship Capability: Better indexing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DeclineFriendship Capability]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210560</id>
		<title>DeclineFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210560"/>
		<updated>2022-04-01T13:20:43Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Monty Linden moved page Capability DeclineFriendship to DeclineFriendship Capability: Better indexing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The DeclineFriendship Capability performs a function similar to the [[DeclineFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be actively declined.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieved from offline/stored instant messages.  Offers from online agents cannot be declined with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if declined using this capability.&lt;br /&gt;
&lt;br /&gt;
One query term is required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
&lt;br /&gt;
 Client Request DEL &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Capability_AcceptFriendship&amp;diff=1210559</id>
		<title>Capability AcceptFriendship</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Capability_AcceptFriendship&amp;diff=1210559"/>
		<updated>2022-04-01T13:20:06Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Monty Linden moved page Capability AcceptFriendship to AcceptFriendship Capability: Indexes better this way&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AcceptFriendship Capability]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210558</id>
		<title>AcceptFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210558"/>
		<updated>2022-04-01T13:20:06Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Monty Linden moved page Capability AcceptFriendship to AcceptFriendship Capability: Indexes better this way&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The AcceptFriendship Capability performs a function similar to the [[AcceptFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be accepted.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieve from offline/stored instant messages.  Offers from online agents cannot be accepted with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if accepted using this capability.&lt;br /&gt;
&lt;br /&gt;
Two query terms are required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
* &#039;agent_name&#039; is the &#039;full name&#039; of the recipient&lt;br /&gt;
&lt;br /&gt;
 Client Request POST &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt;&amp;amp;agent_name=&amp;lt;string&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210557</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210557"/>
		<updated>2022-04-01T13:10:35Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* External Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[Capability AcceptFriendship|AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[Capability DeclineFriendship|DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]]&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]]&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]]&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210556</id>
		<title>DeclineFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=DeclineFriendship_Capability&amp;diff=1210556"/>
		<updated>2022-04-01T13:07:43Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The DeclineFriendship Capability performs a function similar to the DeclineFriendship LLMessage.  It allows the recipient of a friendship offer,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The DeclineFriendship Capability performs a function similar to the [[DeclineFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be actively declined.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieved from offline/stored instant messages.  Offers from online agents cannot be declined with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if declined using this capability.&lt;br /&gt;
&lt;br /&gt;
One query term is required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
&lt;br /&gt;
 Client Request DEL &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210555</id>
		<title>AcceptFriendship Capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=AcceptFriendship_Capability&amp;diff=1210555"/>
		<updated>2022-04-01T13:07:09Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Initial Version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The AcceptFriendship Capability performs a function similar to the [[AcceptFriendship]] LLMessage.  It allows the&lt;br /&gt;
recipient of a friendship offer, restored from the retrieval of an instant message, to be accepted.  This &lt;br /&gt;
interface comes with usage contraints not present in the LLMessage interface:&lt;br /&gt;
&lt;br /&gt;
* The friendship offer must have been retrieve from offline/stored instant messages.  Offers from online agents cannot be accepted with this interface.&lt;br /&gt;
* The friendship offer must have been retrieved using the ReadOfflineMsgs Capability.  Offers that arise from events in response to a RetrieveInstantMessages LLMessage will likely be ignored if accepted using this capability.&lt;br /&gt;
&lt;br /&gt;
Two query terms are required when invoking the cap:&lt;br /&gt;
* &#039;from&#039; must provide the UUID of the agent offering friendship&lt;br /&gt;
* &#039;agent_name&#039; is the &#039;full name&#039; of the recipient&lt;br /&gt;
&lt;br /&gt;
 Client Request POST &amp;lt;path&amp;gt;?from=&amp;lt;uuid&amp;gt;&amp;amp;agent_name=&amp;lt;string&amp;gt; -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 {&lt;br /&gt;
   success: Boolean&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 ; 4xx/5xx codes as well&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210554</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210554"/>
		<updated>2022-04-01T13:06:14Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[Capability AcceptFriendship|AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[Capability DeclineFriendship|DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]]&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]]&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]]&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet|Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210553</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210553"/>
		<updated>2022-04-01T13:04:08Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Same name for llmessage and capabilities.  Needs to be distinguished.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[Capability AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[Capability DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]]&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]]&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]]&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet|Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210552</id>
		<title>ReadOfflineMsgs</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210552"/>
		<updated>2022-04-01T13:02:37Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The ReadOfflineMsgs Capability performs a function similar to the RetrieveInstantMessages LLMessage.&lt;br /&gt;
It retrieves offline Instant Messages and returns them to the caller.  Those IMs are returned directly&lt;br /&gt;
in the response body rather than in individual messages.  As a side-effect of the retrieval, certain&lt;br /&gt;
offers, such as friendship, may become active and available to the caller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Client Request GET -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 [&lt;br /&gt;
   [&lt;br /&gt;
     {&lt;br /&gt;
       asset_id:  UUID,&lt;br /&gt;
       binary_bucket:  Binary,&lt;br /&gt;
       dialog:  Integer,&lt;br /&gt;
       estate_id:  Integer,&lt;br /&gt;
       from_agent_id:  UUID,&lt;br /&gt;
       from_agent_name:  String,&lt;br /&gt;
       from_group:  Boolean,&lt;br /&gt;
       message:  String,&lt;br /&gt;
       message_time:  String,&lt;br /&gt;
       offline:  Integer,&lt;br /&gt;
       parent_estate_id:  Integer,&lt;br /&gt;
       position:  [ Real, Real, Real ],&lt;br /&gt;
       region_id:  UUID,&lt;br /&gt;
       timestamp:  Integer,&lt;br /&gt;
       to_agent_id:  UUID,&lt;br /&gt;
       transaction-id:  UUID&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
An early form of the service had a response structure of:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   messages: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_0&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_1&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_n&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
but that should not be encountered anymore.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210551</id>
		<title>ReadOfflineMsgs</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=ReadOfflineMsgs&amp;diff=1210551"/>
		<updated>2022-04-01T13:02:11Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Created page with &amp;quot;Category:Capabilities The ReadOfflineMsgs Capability performs a function similar to the RetrieveInstantMessages LLMessage. It retrieves offline Instant Messages and return...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Capabilities]]&lt;br /&gt;
The ReadOfflineMsgs Capability performs a function similar to the RetrieveInstantMessages LLMessage.&lt;br /&gt;
It retrieves offline Instant Messages and returns them to the caller.  Those IMs are returned directly&lt;br /&gt;
in the response body rather than in individual messages.  As a side-effect of the retrieval, certain&lt;br /&gt;
offers, such as friendship, may become active and available to the caller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Client Request GET -&amp;gt;&lt;br /&gt;
 &amp;lt;empty&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; 200 Response &amp;lt;-&lt;br /&gt;
 [&lt;br /&gt;
   [&lt;br /&gt;
     {&lt;br /&gt;
       asset_id:  UUID,&lt;br /&gt;
       binary_bucket:  Binary,&lt;br /&gt;
       dialog:  Integer,&lt;br /&gt;
       estate_id:  Integer,&lt;br /&gt;
       from_agent_id:  UUID,&lt;br /&gt;
       from_agent_name:  String,&lt;br /&gt;
       from_group:  Boolean,&lt;br /&gt;
       message:  String,&lt;br /&gt;
       message_time:  String,&lt;br /&gt;
       offline:  Integer,&lt;br /&gt;
       parent_estate_id:  Integer,&lt;br /&gt;
       position:  [ Real, Real, Real ],&lt;br /&gt;
       region_id:  UUID,&lt;br /&gt;
       timestamp:  Integer,&lt;br /&gt;
       to_agent_id:  UUID,&lt;br /&gt;
       transaction-id:  UUID&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
An early form of the service had a response structure of:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   messages: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_0&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_1&amp;gt;&lt;br /&gt;
     },&lt;br /&gt;
     ...&lt;br /&gt;
     {&lt;br /&gt;
       &amp;lt;IM_n&amp;gt;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
but that should not be encountered anymore.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210550</id>
		<title>Current Sim Capabilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Current_Sim_Capabilities&amp;diff=1210550"/>
		<updated>2022-04-01T12:57:56Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Update list of sub-subcapabilities.  Believe it is now complete except for the unnamed caps generated by caps-generating-caps (sub-sub-capabilities).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
&lt;br /&gt;
In the current protocols, there appear to be at least 2 kinds of [[Capabilities|capabilities]]: [[Current_Sim_Capabilities#Sim capabilities|Sim capabilities]] and [[Current_Sim_Capabilities#Sub-Capabilities|Sub-Capabilities]] obtained from the Sim Capability. The [[Current_login_protocols|current login protocols]] return a &amp;quot;seed-capability&amp;quot; which is actually the Sim-Capability of the sim the avatar enters upon performing a full login. This will change with the new [[Login_Protocol|login protocols]].&lt;br /&gt;
&lt;br /&gt;
The following slides are from an October, 2007 presentation by Tess Linden. Though it was an internal Linden Lab presentation, the slides may be useful for those residents trying to learn Second Life&#039;s messaging and capability systems.  [[Message_System_and_Capabilities]]&lt;br /&gt;
&lt;br /&gt;
=Accessing Capabilities=&lt;br /&gt;
&lt;br /&gt;
A typical capability is of the form: https://sim1234.agni.lindenlab.com:12345/cap/UUID&lt;br /&gt;
&lt;br /&gt;
In the current client, sim capabilities are accessed via an https request of the form:&lt;br /&gt;
&lt;br /&gt;
https request {POST, URL:port, path, body, header}&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
&lt;br /&gt;
:• URL:port is of the form: sim1234.agni.lindenlab.com:12345;&lt;br /&gt;
:• path is of the form: /cap/UUID;&lt;br /&gt;
:• body is an xml-encoded LLSD array of the form: &amp;lt;llsd&amp;gt;&amp;lt;array&amp;gt;&amp;lt;string&amp;gt;request1&amp;lt;/string&amp;gt;&amp;lt;string&amp;gt;request2&amp;lt;/string&amp;gt;&amp;lt;/array&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
:• Header is of the form: &amp;quot;content-type&amp;quot;: &amp;quot;application/llsd+xml&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The response from a  sim capability  transaction is an xml-encoded LLSD dictionary with key, value pairs in the form:&lt;br /&gt;
&lt;br /&gt;
:• &amp;lt;llsd&amp;gt;&amp;lt;map&amp;gt;&amp;lt;key&amp;gt;request1&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability1&amp;lt;/string&amp;gt;&amp;lt;key&amp;gt;request2&amp;lt;/key&amp;gt;&amp;lt;string&amp;gt;Capability2&amp;lt;/string&amp;lt;/map&amp;gt;&amp;lt;/llsd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sub-capabilities apparently use the same protocol, but the body of the https request is dependent on which capability is used, as is the result.&lt;br /&gt;
&lt;br /&gt;
=Sub Capabilities=&lt;br /&gt;
The following are among the sub-capabilities returned by the sim cap. Each has its own protocols which will be discussed in separate pages:&lt;br /&gt;
&lt;br /&gt;
* [[AbuseCategories]]&lt;br /&gt;
* [[AcceptFriendship]]&lt;br /&gt;
* [[AcceptGroupInvite]]&lt;br /&gt;
* [[AgentExperiences]]&lt;br /&gt;
* [[AgentPreferences]]&lt;br /&gt;
* [[AgentState]]&lt;br /&gt;
* [[AttachmentResources]]&lt;br /&gt;
* [[AvatarPickerSearch]]&lt;br /&gt;
* [[AvatarRenderInfo]]&lt;br /&gt;
* [[CharacterProperties]]&lt;br /&gt;
* [[ChatSessionRequest]]&lt;br /&gt;
* [[CopyInventoryFromNotecard]]&lt;br /&gt;
* [[CreateInventoryCategory]]&lt;br /&gt;
* [[DeclineFriendship]]&lt;br /&gt;
* [[DeclineGroupInvite]]&lt;br /&gt;
* [[DirectDelivery]]&lt;br /&gt;
* [[DispatchRegionInfo]]&lt;br /&gt;
* [[EnvironmentSettings]]&lt;br /&gt;
* [[EstateAccess]]&lt;br /&gt;
* [[EstateChangeInfo]]&lt;br /&gt;
* [[EventQueueGet]]&lt;br /&gt;
* [[ExperiencePreferences]]&lt;br /&gt;
* [[ExperienceQuery]]&lt;br /&gt;
* [[ExtEnvironment]]&lt;br /&gt;
* [[FacebookConnect]]&lt;br /&gt;
* [[FetchInventory2]]&lt;br /&gt;
* [[FetchInventoryDescendents2]]&lt;br /&gt;
* [[FetchLib2]]&lt;br /&gt;
* [[FetchLibDescendents2]]&lt;br /&gt;
* [[FindExperienceByName]]&lt;br /&gt;
* [[FlickrConnect]]&lt;br /&gt;
* [[GetAdminExperiences]]&lt;br /&gt;
* [[GetCreatorExperiences]]&lt;br /&gt;
* [[GetDisplayNames]]&lt;br /&gt;
* [[GetExperienceInfo]]&lt;br /&gt;
* [[GetExperiences]]&lt;br /&gt;
* [[GetMesh]]&lt;br /&gt;
* [[GetMesh2]]&lt;br /&gt;
* [[GetMetadata]]&lt;br /&gt;
* [[GetObjectCost]]&lt;br /&gt;
* [[GetObjectPhysicsData]]&lt;br /&gt;
* [[GetTexture]]&lt;br /&gt;
* [[GroupAPIv1]]&lt;br /&gt;
* [[GroupExperiences]]&lt;br /&gt;
* [[GroupMemberData]]&lt;br /&gt;
* [[GroupProposalBallot]]&lt;br /&gt;
* [[HomeLocation]]&lt;br /&gt;
* [[IncrementCOFVersion]]&lt;br /&gt;
* [[InterestList]]&lt;br /&gt;
* [[InventoryAPIv1]]&lt;br /&gt;
* [[InventoryAPIv3]]&lt;br /&gt;
* [[IsExperienceAdmin]]&lt;br /&gt;
* [[IsExperienceContributor]]&lt;br /&gt;
* [[LandResources]]&lt;br /&gt;
* [[LibraryAPIv3]]&lt;br /&gt;
* [[LSLSyntax]]&lt;br /&gt;
* [[MapLayer]]&lt;br /&gt;
* [[MapLayerGod]]&lt;br /&gt;
* [[MeshUploadFlag]]&lt;br /&gt;
* [[NavMeshGenerationStatus]]&lt;br /&gt;
* [[NewFileAgentInventory]]&lt;br /&gt;
* [[ObjectAnimation]]&lt;br /&gt;
* [[ObjectMedia]]&lt;br /&gt;
* [[ObjectMediaNavigate]]&lt;br /&gt;
* [[ObjectNavMeshProperties]]&lt;br /&gt;
* [[ParcelPropertiesUpdate]]&lt;br /&gt;
* [[ParcelVoiceInfoRequest]]&lt;br /&gt;
* [[ProductInfoRequest]]&lt;br /&gt;
* [[ProvisionVoiceAccountRequest]]&lt;br /&gt;
* [[ReadOfflineMsgs]]&lt;br /&gt;
* [[RegionExperiences]]&lt;br /&gt;
* [[RemoteParcelRequest]]&lt;br /&gt;
* [[RenderMaterials]]&lt;br /&gt;
* [[RequestTextureDownload]]&lt;br /&gt;
* [[ResourceCostSelected]]&lt;br /&gt;
* [[RetrieveNavMeshSrc]]&lt;br /&gt;
* [[ScriptPermissions]]&lt;br /&gt;
* [[SearchStatRequest]]&lt;br /&gt;
* [[SearchStatTracking]]&lt;br /&gt;
* [[SendPostcard]]&lt;br /&gt;
* [[SendUserReport]]&lt;br /&gt;
* [[SendUserReportWithScreenshot]]&lt;br /&gt;
* [[ServerReleaseNotes]]&lt;br /&gt;
* [[SetDisplayName]]&lt;br /&gt;
* [[SimConsoleAsync]]&lt;br /&gt;
* [[SimulatorFeatures]]&lt;br /&gt;
* [[StartGroupProposal]]&lt;br /&gt;
* [[TerrainNavMeshProperties]]&lt;br /&gt;
* [[TextureStats]]&lt;br /&gt;
* [[TwitterConnect]]&lt;br /&gt;
* [[UntrustedSimulatorMessage]]&lt;br /&gt;
* [[UpdateAgentInformation]]&lt;br /&gt;
* [[UpdateAgentLanguage]]&lt;br /&gt;
* [[UpdateAvatarAppearance]]&lt;br /&gt;
* [[UpdateExperience]]&lt;br /&gt;
* [[UpdateGestureAgentInventory]]&lt;br /&gt;
* [[UpdateGestureTaskInventory]]&lt;br /&gt;
* [[UpdateNotecardAgentInventory]]&lt;br /&gt;
* [[UpdateNotecardTaskInventory]]&lt;br /&gt;
* [[UpdateScriptAgent]]&lt;br /&gt;
* [[UpdateScriptTask]]&lt;br /&gt;
* [[UpdateSettingsAgentInventory]]&lt;br /&gt;
* [[UpdateSettingsTaskInventory]]&lt;br /&gt;
* [[UploadBakedTexture]]&lt;br /&gt;
* [[UserInfo]]&lt;br /&gt;
* [[ViewerAsset]]&lt;br /&gt;
* [[ViewerBenefits]]&lt;br /&gt;
* [[ViewerMetrics]]&lt;br /&gt;
* [[ViewerStartAuction]]&lt;br /&gt;
* [[ViewerStats]]&lt;br /&gt;
&lt;br /&gt;
=External Links=&lt;br /&gt;
[http://www.libsecondlife.org/wiki/EventQueueGet] -- EventQueueGet - libsecondlife - [https://web.archive.org/web/20080502154101/http://www.libsecondlife.org/wiki/EventQueueGet|Wayback Machine]&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/MapLayer] -- MapLayer - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/NewAgentInventory] -- NewAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
[http://www.libsecondlife.org/wiki/UpdateNotecardAgentInventory] -- UpdateNotecardAgentInventory - libsecondlife&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: AW Groupies]][[Category:Capabilities]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Project_Refresh/3.7.12.291799&amp;diff=1192033</id>
		<title>Release Notes/Second Life Project Refresh/3.7.12.291799</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Release_Notes/Second_Life_Project_Refresh/3.7.12.291799&amp;diff=1192033"/>
		<updated>2014-07-10T20:36:04Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Fixup for llibpng error message text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{KnownIssuesHeader}}&lt;br /&gt;
{{GenericDownloadBox|Project|Released on July 10, 2014.|type=project|windows=http://download.cloud.secondlife.com/Viewer_3/Second_Life_Project_Refresh_3_7_12_291799_i686_Setup.exe|macintosh=http://download.cloud.secondlife.com/Viewer_3/Second_Life_Project_Refresh_3_7_12_291799_i386.dmg|linux=http://download.cloud.secondlife.com/Viewer_3/Second_Life_Project_Refresh_3_7_12_291799_i686.tar.bz2|version=3.7.12.291799}}&lt;br /&gt;
{{GreenCheckbox|title=Release Notes|body=This release contains an update to a large set of libraries to provide security, stability and consistency improvements to this and future viewers.&lt;br /&gt;
&lt;br /&gt;
====MAC OS X 10.5====&lt;br /&gt;
&lt;br /&gt;
The libraries below have been built with a minimum OS level of 10.6.  Viewers based on this release will not run on OS X 10.5 or earlier releases.&lt;br /&gt;
&lt;br /&gt;
====SSA/Avatar Baking Service and Various ISPs and Networking Gear====&lt;br /&gt;
&lt;br /&gt;
A few users have experienced problems with avatar appearance due to their very specific network configuration.  Gray avatars are accompanied by ‘Transferred a partial file’ errors in the SecondLife.log file.  Linden has not been able to reproduce this internally but a possible workaround is found in this release.  Relevant Jira reports are:&lt;br /&gt;
&lt;br /&gt;
*{{jira|BUG-3323}}&lt;br /&gt;
*{{jira|SH-4375}}&lt;br /&gt;
*{{jira|BUG-3770}}&lt;br /&gt;
*{{jira|BUG-3882}}&lt;br /&gt;
*{{jira|BUG-3879}}&lt;br /&gt;
*{{jira|BUG-3877}}&lt;br /&gt;
&lt;br /&gt;
====Zlib====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.2.3/1.2.4/1.2.5/1.2.6 to 1.2.8.&lt;br /&gt;
&lt;br /&gt;
Library changes can be found here:  http://zlib.net/ChangeLog.txt&lt;br /&gt;
&lt;br /&gt;
Contributed minizip library is now built on all platforms.  This library is used for file manipulations in colladadom.  Originally, that library supplied minizip via binary blob.&lt;br /&gt;
&lt;br /&gt;
====Libpng====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.5.1 to 1.6.8&lt;br /&gt;
&lt;br /&gt;
Library changes can be found here:  http://www.libpng.org/pub/png/libpng.html.  Changes aren’t in one place so expect to dig.&lt;br /&gt;
&lt;br /&gt;
Numerous .png files in viewer build show warnings/errors with new library due to non-conforming color profiles, etc.  These warnings appear in the viewer’s (or SLplugin’s) standard error stream and are one of the following:&lt;br /&gt;
&lt;br /&gt;
  iCCP: known incorrect sRGB profile&lt;br /&gt;
  iCCP: profile &#039;ICC Profile&#039;: 1000000h: invalid rendering intent&lt;br /&gt;
  iCCP: cHRM chunk does not match sRGB&lt;br /&gt;
&lt;br /&gt;
These PNG files were cleaned up and made conforming in changeset 654ca4c10c91.&lt;br /&gt;
&lt;br /&gt;
====OpenSSL====&lt;br /&gt;
&lt;br /&gt;
Updating from 0.9.8q/1.0.0d to 1.0.1h.  The new version includes fixes for the Heartbleed exploit.&lt;br /&gt;
&lt;br /&gt;
Library changes can be found here:  http://www.openssl.org/news/changelog.html&lt;br /&gt;
&lt;br /&gt;
====C-Ares====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.7.1 to 1.10.0.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://c-ares.haxx.se/download/&lt;br /&gt;
&lt;br /&gt;
These changes should be mostly irrelevant as the curl package has been switched over to use the threaded resolver.  But there is still a DNS lookup utility present in the viewer.&lt;br /&gt;
&lt;br /&gt;
====Libxml2====&lt;br /&gt;
&lt;br /&gt;
Updating from 2.6.24 to 2.9.1 and expanding platforms from Linux-only to all three.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://xmlsoft.org/news.html&lt;br /&gt;
&lt;br /&gt;
====PCRE====&lt;br /&gt;
&lt;br /&gt;
Updating from 7.6 to 8.35.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://www.pcre.org/changelog.txt&lt;br /&gt;
&lt;br /&gt;
====DirectFB====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.4.9 to 1.7.1.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://directfb.org/index.php?path=Main%2FDownloads&lt;br /&gt;
&lt;br /&gt;
====SDL====&lt;br /&gt;
&lt;br /&gt;
Updating SDL from 1.2.14 to 1.2.15.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://www.libsdl.org/release/changes-1.2.html&lt;br /&gt;
&lt;br /&gt;
====curl====&lt;br /&gt;
&lt;br /&gt;
Updating from 7.24.0 to 7.37.0.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://curl.haxx.se/changes.html&lt;br /&gt;
&lt;br /&gt;
====Boost====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.52.0 to 1.55.0.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://www.boost.org/users/history/version_1_55_0.html&lt;br /&gt;
&lt;br /&gt;
====google-mock====&lt;br /&gt;
&lt;br /&gt;
Updating from 1.1.0 to 1.7.0.  (1.6.0 to 1.7.0 on Windows)&lt;br /&gt;
&lt;br /&gt;
Changes can be found here (if you’re lucky and persistent):  https://code.google.com/p/googlemock/w/list&lt;br /&gt;
&lt;br /&gt;
====collada-dom====&lt;br /&gt;
&lt;br /&gt;
Continuing with 2.3 (dom version 1.4).  This is not a version change despite earlier viewers having advertised the library as a 2.2 release.&lt;br /&gt;
&lt;br /&gt;
====fontconfig====&lt;br /&gt;
&lt;br /&gt;
Updating from 2.8.0 to 2.11.0.&lt;br /&gt;
&lt;br /&gt;
Changes can be found here:  http://www.freedesktop.org/software/fontconfig/release/&lt;br /&gt;
&lt;br /&gt;
====freetype====&lt;br /&gt;
&lt;br /&gt;
Staying at 2.4.4 but built differently for the viewer.&lt;br /&gt;
&lt;br /&gt;
History can be found here:  http://www.freetype.org/index.html#news&lt;br /&gt;
&lt;br /&gt;
====llqtwebkit/Qt4====&lt;br /&gt;
&lt;br /&gt;
Functionally equivalent to the previous 4.7.1 version of the Qt4 library.  This collection of libraries is being built in a different, more maintainable fashion which is why it is mentioned.  This does not address the outstanding issues with Webkit services on various platforms (e.g. Media-on-a-Prim, streaming media viewing).}}{{GreenCheckbox|title=Resolved Issues|body=* {{jira|MAINT-3297}} &amp;quot;Input Window&amp;quot; open by keystroke.}}&lt;br /&gt;
{{RedInfobox|title=Known Issues|body=* {{jira|MAINT-4158}} Avatar distorted when changing outfits&lt;br /&gt;
* {{jira|MAINT-809}} [PUBLIC]Setting 16x antialiasing crashes Viewer in Ubuntu 11.10 with GeForce 6600&lt;br /&gt;
* {{jira|MAINT-3200}} WL Haze effects are inconsistent between solid and transparent objects under water.&lt;br /&gt;
* {{jira|MAINT-3197}} Rigged alpha attachments don&#039;t render for impostors.&lt;br /&gt;
* {{jira|MAINT-3198}} Legacy bumpiness renders funny on HUD faces with custom alpha mode&lt;br /&gt;
* {{jira|MAINT-3213}} Brightness and Darkness legacy bump maps render incorrectly on Intel GPUs.&lt;br /&gt;
* {{jira|WEB-4659}} Direct Delivery Outbox fails in Linux build&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Texture_console_v372.png&amp;diff=1187857</id>
		<title>File:Texture console v372.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Texture_console_v372.png&amp;diff=1187857"/>
		<updated>2014-02-25T00:21:03Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1187856</id>
		<title>Texture Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1187856"/>
		<updated>2014-02-25T00:20:23Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Document 3.7.2 release with new mesh status line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiFeatureNav}}&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Decode&#039;&#039;&#039; - Uncompressing a downloaded texture, in SL&#039;s case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discard Level&#039;&#039;&#039; - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)&lt;br /&gt;
&lt;br /&gt;
== 3.7.2 ==&lt;br /&gt;
[[Image:Texture_console_v372.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
# FBO (Needs Details)&lt;br /&gt;
# Raw Tot.  (ND)&lt;br /&gt;
# Bias.  Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
# Cache.&lt;br /&gt;
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.&lt;br /&gt;
# Tot Obj.  (MB) (ND)&lt;br /&gt;
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.&lt;br /&gt;
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.&lt;br /&gt;
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.&lt;br /&gt;
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.&lt;br /&gt;
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.&lt;br /&gt;
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).&lt;br /&gt;
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.&lt;br /&gt;
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests&lt;br /&gt;
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.&lt;br /&gt;
# RAW.  Count of instances of LLImageRaw objects currently in the system.&lt;br /&gt;
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).&lt;br /&gt;
# DEC.  Count of requests outstanding for decoding of texture data.&lt;br /&gt;
# CRE.  (ND)&lt;br /&gt;
# BW.  UDP + HTTP texture bandwidth as consumed / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.&lt;br /&gt;
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:&lt;br /&gt;
#* White = Normal priority image&lt;br /&gt;
#* Yellow = Selected image, prioritized&lt;br /&gt;
#* Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
#* Magenta = Boosted (prioritized) image&lt;br /&gt;
#* Green = UI image &lt;br /&gt;
#* Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client&#039;s record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.&lt;br /&gt;
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.&lt;br /&gt;
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets&lt;br /&gt;
# State.  The texture request&#039;s current state in the fetching/decoding state machine.  States include:&lt;br /&gt;
#* &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard).  If red, invalid state.&lt;br /&gt;
#* &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
#* &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
#* &amp;quot;NET&amp;quot; - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers&lt;br /&gt;
#* &amp;quot;SIM&amp;quot; - Waiting for UDP packet data from simulator&lt;br /&gt;
#* &amp;quot;HTW&amp;quot; - Resource waiting for HTTP resources prior to &amp;quot;HTP&amp;quot; state&lt;br /&gt;
#* &amp;quot;REQ&amp;quot; - Preparing to send HTTP request to grid&lt;br /&gt;
#* &amp;quot;HTP&amp;quot; - Waiting for HTTP response data&lt;br /&gt;
#* &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
#* &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
#* &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
#* &amp;quot;CRE&amp;quot; - Texture needs to be created&lt;br /&gt;
#* &amp;quot;FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):&lt;br /&gt;
#* White = packet received from simulator&lt;br /&gt;
#* Green = data requested from simulator&lt;br /&gt;
#* Yellow = texture processed by state machine&lt;br /&gt;
# Bnd.  Binding of fetched data to OpenGL:&lt;br /&gt;
#* Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
# W x H.  Dimensions of image.&lt;br /&gt;
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).&lt;br /&gt;
# Mem.  Amount of memory consumed by the texture.&lt;br /&gt;
# Mesh Reqs(Tot/Htp/Big).  Mesh status line starting with counts of mesh requests issued:  total (pre-cache), &#039;normal&#039; HTTP and &#039;Big&#039; (over 2MB) HTTP.  A mesh request will typically be for a part of a full mesh:  a single level-of-detail or perhaps a header.  A request may be satisfied by the mesh cache.  If not in the cache, then an HTTP request is issued.  That request will be either a &#039;normal&#039; or a &#039;big&#039; request.&lt;br /&gt;
# Rtr/Err.  Retries issued and final errors received for HTTP mesh requests.&lt;br /&gt;
# Cread/Cwrite.  Mesh cache read and write operations.  &#039;Cwrite&#039; will approximately follow &#039;Htp&#039; + &#039;Big&#039;.  &#039;Cread&#039; gives an indication of the effectiveness of the local mesh cache.&lt;br /&gt;
# Low/At/High.  The mesh fetching code maintains a pool of requests.  This code attempts to keep the pool filled between the &#039;Low&#039; and &#039;High&#039; water levels shown here.  The current pool level is given by &#039;At&#039; and the pool is refilled when it falls below &#039;Low&#039;.&lt;br /&gt;
&lt;br /&gt;
Some patterns to look for when searching for texture fetch bugs:&lt;br /&gt;
&lt;br /&gt;
1.  If Cread is growing quickly while Cwrite and &#039;Tot Htp&#039; are&lt;br /&gt;
static or growing slowly then the texture cache is populated&lt;br /&gt;
and being used.&lt;br /&gt;
&lt;br /&gt;
2.  If Cwrite and &#039;Tot Htp&#039; grow at about the same rate as&lt;br /&gt;
Cread, then either the texture cache is cold or it isn&#039;t working.&lt;br /&gt;
&lt;br /&gt;
3.  If &#039;Tot Htp&#039; is growing faster than &#039;Cwrite&#039;, then we&#039;re&lt;br /&gt;
doing unnecessary fetches for assets for some reason.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3.4.3 ==&lt;br /&gt;
[[Image:Texture_console_v343.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
# FBO (Needs Details)&lt;br /&gt;
# Raw Tot.  (ND)&lt;br /&gt;
# Bias.  Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
# Cache.&lt;br /&gt;
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.&lt;br /&gt;
# Tot Obj.  (MB) (ND)&lt;br /&gt;
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.&lt;br /&gt;
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.&lt;br /&gt;
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.&lt;br /&gt;
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.&lt;br /&gt;
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.&lt;br /&gt;
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).&lt;br /&gt;
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.&lt;br /&gt;
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests&lt;br /&gt;
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.&lt;br /&gt;
# RAW.  Count of instances of LLImageRaw objects currently in the system.&lt;br /&gt;
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).&lt;br /&gt;
# DEC.  Count of requests outstanding for decoding of texture data.&lt;br /&gt;
# CRE.  (ND)&lt;br /&gt;
# BW.  UDP bandwidth limit as negotiated / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.&lt;br /&gt;
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:&lt;br /&gt;
#* White = Normal priority image&lt;br /&gt;
#* Yellow = Selected image, prioritized&lt;br /&gt;
#* Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
#* Magenta = Boosted (prioritized) image&lt;br /&gt;
#* Green = UI image &lt;br /&gt;
#* Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client&#039;s record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.&lt;br /&gt;
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.&lt;br /&gt;
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets&lt;br /&gt;
# State.  The texture request&#039;s current state in the fetching/decoding state machine.  States include:&lt;br /&gt;
#* &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard).  If red, invalid state.&lt;br /&gt;
#* &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
#* &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
#* &amp;quot;NET&amp;quot; - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers&lt;br /&gt;
#* &amp;quot;SIM&amp;quot; - Waiting for UDP packet data from simulator&lt;br /&gt;
#* &amp;quot;HTW&amp;quot; - Resource waiting for HTTP resources prior to &amp;quot;HTP&amp;quot; state&lt;br /&gt;
#* &amp;quot;REQ&amp;quot; - Preparing to send HTTP request to grid&lt;br /&gt;
#* &amp;quot;HTP&amp;quot; - Waiting for HTTP response data&lt;br /&gt;
#* &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
#* &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
#* &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
#* &amp;quot;CRE&amp;quot; - Texture needs to be created&lt;br /&gt;
#* &amp;quot;FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):&lt;br /&gt;
#* White = packet received from simulator&lt;br /&gt;
#* Green = data requested from simulator&lt;br /&gt;
#* Yellow = texture processed by state machine&lt;br /&gt;
# Bnd.  Binding of fetched data to OpenGL:&lt;br /&gt;
#* Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
# W x H.  Dimensions of image.&lt;br /&gt;
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).&lt;br /&gt;
# Mem.  Amount of memory consumed by the texture.&lt;br /&gt;
&lt;br /&gt;
Some patterns to look for when searching for bugs:&lt;br /&gt;
&lt;br /&gt;
1.  If Cread is growing quickly while Cwrite and &#039;Tot Htp&#039; are&lt;br /&gt;
static or growing slowly then the texture cache is populated&lt;br /&gt;
and being used.&lt;br /&gt;
&lt;br /&gt;
2.  If Cwrite and &#039;Tot Htp&#039; grow at about the same rate as&lt;br /&gt;
Cread, then either the texture cache is cold or it isn&#039;t working.&lt;br /&gt;
&lt;br /&gt;
3.  If &#039;Tot Htp&#039; is growing faster than &#039;Cwrite&#039;, then we&#039;re&lt;br /&gt;
doing unnecessary fetches for assets for some reason.&lt;br /&gt;
&lt;br /&gt;
==1.14==&lt;br /&gt;
[[Image:Texture_console_1_14.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
* 3: Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
* 4: Graphical representation of 1. Red indicates that (3) will be increased&lt;br /&gt;
* 5: Total number of textures currently referenced (i.e. nearby)&lt;br /&gt;
* 6: Number of textures with data being actively fetched (number pending deletion)&lt;br /&gt;
* 7: Number of textures waiting to be Read/Written to the local cache&lt;br /&gt;
* 8: Graphical representation of 2&lt;br /&gt;
* 9: First chunk of texture ID&lt;br /&gt;
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.&lt;br /&gt;
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
* 13: Priority.&lt;br /&gt;
* 14: Requested Priority. &lt;br /&gt;
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).&lt;br /&gt;
* 16: Number of Packets received (numerical representation of 15)&lt;br /&gt;
* 17: Max number of packets&lt;br /&gt;
* 18: &amp;quot;---&amp;quot; see 27-33&lt;br /&gt;
* 19: State: What state the texture fetcher is in for this texture&lt;br /&gt;
* 20: Pkt:&lt;br /&gt;
** White = packet received from simulator&lt;br /&gt;
** Green = data requested from simulator&lt;br /&gt;
** Yellow = texture processed by state machine&lt;br /&gt;
* 21: Bnd: &lt;br /&gt;
** Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
* 22: Width x Height&lt;br /&gt;
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.&lt;br /&gt;
* 24: Amount of memory consumed by the texture&lt;br /&gt;
* 25/26: Text Color&lt;br /&gt;
** White = Normal priority image&lt;br /&gt;
** Yellow = Selected image, prioritized&lt;br /&gt;
** Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
** Magenta = Boosted (prioritized) image&lt;br /&gt;
** Green = UI image &lt;br /&gt;
** Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
* 27-33&lt;br /&gt;
** &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
** &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
** &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
** &amp;quot;NET&amp;quot; - Indicates the texture is in the network request queue, but has not yet been requested from the servers&lt;br /&gt;
** &amp;quot;SIM&amp;quot; - Waiting for packet data from simulator&lt;br /&gt;
** &amp;quot;URL&amp;quot; - Waiting for URL for HTTP request&lt;br /&gt;
** &amp;quot;HTP&amp;quot; - Waiting for HTTP data&lt;br /&gt;
** &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
** &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
** &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
** &amp;quot;CRE/FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
&lt;br /&gt;
(*) These are functions of the &#039;Graphics Card Memory&#039; setting under Preferences &amp;gt; Adv. Graphics&lt;br /&gt;
&lt;br /&gt;
==1.13==&lt;br /&gt;
[[Image:Texture console.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
* 3: Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
* 4: Graphical representation of 1. Red indicates that (3) will be increased&lt;br /&gt;
* 5: &lt;br /&gt;
* 6:&lt;br /&gt;
* 7:&lt;br /&gt;
* 8: Graphical representation of 2&lt;br /&gt;
* 9: First chunk of texture ID&lt;br /&gt;
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.&lt;br /&gt;
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
* 13: Priority.&lt;br /&gt;
* 14: Requested Priority. &lt;br /&gt;
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).&lt;br /&gt;
* 16: Number of Packets received (numerical representation of 15)&lt;br /&gt;
* 17: Max number of packets&lt;br /&gt;
* 18: A pip shows up here when a packet arrives&lt;br /&gt;
* 19: A pip shows up here while the texture is being decoded&lt;br /&gt;
* 20: A pip shows up here if the texture is being displayed (bound)&lt;br /&gt;
* 21: &lt;br /&gt;
* 22: Width x Height&lt;br /&gt;
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.&lt;br /&gt;
* 24: Amount of memory consumbed by the texture&lt;br /&gt;
* 25: grey text. &lt;br /&gt;
* 26: purple text. &lt;br /&gt;
* 27: green text. &lt;br /&gt;
* 28: *. &lt;br /&gt;
* 29: *r. &lt;br /&gt;
&lt;br /&gt;
(*) These are functions of the &#039;Graphics Card Memory&#039; setting under Preferences &amp;gt; Adv. Graphics&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* &#039;Texture Memory&#039; or &#039;OpenGL Memory&#039; refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Linden_Department_of_Public_Works&amp;diff=1176351</id>
		<title>Linden Department of Public Works</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Linden_Department_of_Public_Works&amp;diff=1176351"/>
		<updated>2013-01-25T16:38:51Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* What is it? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Glossary=*}}[[Image:Visit the Mainland2.jpg|behind|600px]]&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Linden Department of Public Works&#039;&#039;&#039; (LDPW) is a program focused on improvements related to the experience of living on, or visiting the Linden Mainland. The LDPW will organize teams of Resident builders, artists, and scripters (the Moles!) to create new content on Linden Lab&#039;s behalf and to the benefit of all. Rather than divert company resources from areas of development that contribute to important issues like stability and usability, Linden Lab is choosing to go to the experts...&lt;br /&gt;
&lt;br /&gt;
It should be no surprise that when it comes to creating compelling SL content, it&#039;s the Resident population itself that serves as the best talent pool.  In order to hit the ground running, the LDPW has approached a number of content creators whose credentials are well-established, but from the start, its intentions were to make application to the program open to all residents.  So if you&#039;re a skilled content creator, please consider applying when the application process is open!  If you&#039;d rather not join the build crew, but would still like to participate, then please help to name the new city sims by adding your suggestions below!&lt;br /&gt;
&lt;br /&gt;
=== Lindens in the LDPW ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[User:Michael Linden|Michael Linden]]&#039;&#039;&#039; is the Senior Content Specialist in LDPW.&lt;br /&gt;
&lt;br /&gt;
=== Residents in the LDPW ===&lt;br /&gt;
&lt;br /&gt;
Hard working city and country moles, these are the Residents that have made up the illustrious ranks of molekind. Note this list is not complete, and also includes veteran moles no longer with the LDPW.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|--&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Barnesworth Anubis&lt;br /&gt;
*Chance Abattoir&lt;br /&gt;
*Charlotte Bartlett&lt;br /&gt;
*Canolli Capalini&lt;br /&gt;
*Dee Firefly&lt;br /&gt;
*Goran Matzerath&lt;br /&gt;
*Leah Salome&lt;br /&gt;
*Lilli Field&lt;br /&gt;
*Betlog Hax&lt;br /&gt;
*Moundsa Mayo&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Alisha Matova&lt;br /&gt;
*Neil Robinson&lt;br /&gt;
*Prad Prathivi&lt;br /&gt;
*Nephilaine Protagonist&lt;br /&gt;
*Stella Costello&lt;br /&gt;
*Treacly Brodsy&lt;br /&gt;
*Vittorio Beerbaum&lt;br /&gt;
*Yeti Bing&lt;br /&gt;
*Zyrra Falcone&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Caliandris Pendragon&lt;br /&gt;
*Peter13 Peterman&lt;br /&gt;
*Ilse Mannonen&lt;br /&gt;
*Itazura Radio&lt;br /&gt;
*Lonewolf Switchblade&lt;br /&gt;
*Grandma Bates&lt;br /&gt;
*Ravenna Soothsayer&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Kat Claxton&lt;br /&gt;
*Miriel Enfield&lt;br /&gt;
*Elfod Nemeth&lt;br /&gt;
*Talia Tokugawa&lt;br /&gt;
*Grace Loudon&lt;br /&gt;
*Nerolus Mosienko&lt;br /&gt;
*Atashi Yue&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Past and Present Moles of the LDPW ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|--&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Abnor Mole&lt;br /&gt;
*Ani Mole&lt;br /&gt;
*Auspicious Mole&lt;br /&gt;
*Avogadro Mole&lt;br /&gt;
*Bloomin Mole&lt;br /&gt;
*Buhbuhcuh Mole&lt;br /&gt;
*Crafty Mole&lt;br /&gt;
*Crazy Mole&lt;br /&gt;
*Dark Mole&lt;br /&gt;
*Deep Mole&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
*Delicious Mole&lt;br /&gt;
*Earthy Mole&lt;br /&gt;
*Freerange Mole&lt;br /&gt;
*Garden Mole&lt;br /&gt;
*Glamorous Mole&lt;br /&gt;
*Guaca Mole&lt;br /&gt;
*Holy Mole&lt;br /&gt;
*Hyper Mole&lt;br /&gt;
*Igneous Mole&lt;br /&gt;
*Inconspicuous Mole&lt;br /&gt;
&lt;br /&gt;
|valign=top|&lt;br /&gt;
*La Mole&lt;br /&gt;
*Macho Mole&lt;br /&gt;
*Maladaptive Mole&lt;br /&gt;
*Mighty Mole&lt;br /&gt;
*Milk Mole&lt;br /&gt;
*Mini Mole&lt;br /&gt;
*Misty Mole&lt;br /&gt;
*Mouldy Mole&lt;br /&gt;
*Multi Mole&lt;br /&gt;
*Myopic Mole&lt;br /&gt;
*Mysterious Mole&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
*Mythic Mole&lt;br /&gt;
*Naughty Mole&lt;br /&gt;
*Opti Mole&lt;br /&gt;
*Princess Mole&lt;br /&gt;
*Protean Mole&lt;br /&gt;
*Railway Mole&lt;br /&gt;
*Secret Mole&lt;br /&gt;
*Silent Mole&lt;br /&gt;
*Smokey Mole&lt;br /&gt;
*Sneaky Mole&lt;br /&gt;
|valign=top|&lt;br /&gt;
&lt;br /&gt;
*Squishy Mole&lt;br /&gt;
*Stoic Mole&lt;br /&gt;
*Sunny Mole&lt;br /&gt;
*Sylvan Mole&lt;br /&gt;
*Undercover Mole&lt;br /&gt;
*Vanity Mole&lt;br /&gt;
*Whacka Mole&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Here are some common questions from the various blog postings and LDPW office hours, as answered by LDPW Lindens.&lt;br /&gt;
&lt;br /&gt;
; Is this a volunteer position?&lt;br /&gt;
&lt;br /&gt;
:The moles are paid an hourly rate.&lt;br /&gt;
&lt;br /&gt;
;Do I have to be good at design, building, texturing, sculpting AND scripting to apply?&lt;br /&gt;
&lt;br /&gt;
:Fully rounded content creators are certainly encouraged to apply, but we will be asking you to indicate your core skill, assuming that most people are not Leonardo DaVinci and specialize in certain areas.&lt;br /&gt;
&lt;br /&gt;
;What if I can&#039;t do any of those things, but still want to help somehow?&lt;br /&gt;
&lt;br /&gt;
:Contribute your ideas here on the wiki!  Suggest Region names and builds, or future LDPW projects, or even other ways for individuals to participate. &lt;br /&gt;
&lt;br /&gt;
;Are builders going to using any &#039;megaprims&#039;?  I love/hate those things&lt;br /&gt;
&lt;br /&gt;
:No, megaprims will not be used in any Linden or LDPW builds.&lt;br /&gt;
&lt;br /&gt;
;Do the contractors keep the rights to their content?&lt;br /&gt;
&lt;br /&gt;
:In order to maintain the rights to reproduce the content and to make some of it available via the Library, Linden Lab is purchasing full rights to content created by the mole builders.&lt;br /&gt;
&lt;br /&gt;
;Aren&#039;t you supposed to be fixing lag and stuff?&lt;br /&gt;
&lt;br /&gt;
:The LDPW project has no impact whatsoever on engineering or development efforts to improve Second Life.  You REALLY don&#039;t want the the LDPW folks mucking about in the code.  Trust me.&lt;br /&gt;
&lt;br /&gt;
; So this LDPW thing is all about making new city sims?&lt;br /&gt;
&lt;br /&gt;
:Not exclusively, no, although a new city area (Bay City) was the first LDPW project -- it entails numerous elements for future projects which will help us to define best practices and implement the structures needed to expand.  &lt;br /&gt;
&lt;br /&gt;
;So there will be road building then?&lt;br /&gt;
&lt;br /&gt;
:Yes, LDPW creates roads and bridges on mainland sims, and considering a number of other infrastructure projects from planting trees, to new Infohubs to region-wide builds.  We&#039;ll be taking all suggestions into account, so please stay tuned and join the continued discussion.&lt;br /&gt;
&lt;br /&gt;
;What&#039;s all this about moles?&lt;br /&gt;
&lt;br /&gt;
:The contractors use accounts with the last name Mole, which references a bit of graffiti that appeared in the original city sims long ago ... Beware the Mole People!  Of course, those moles who wish to make their primary account names known are certainly free to do so.&lt;br /&gt;
&lt;br /&gt;
==LDPW Projects==&lt;br /&gt;
[[LDPW_Projects|LDPW Projects]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1175792</id>
		<title>Texture Console</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Texture_Console&amp;diff=1175792"/>
		<updated>2013-01-02T21:53:57Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Update with the 3.4.3 layout of the texture console&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiFeatureNav}}&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
&#039;&#039;&#039;Decode&#039;&#039;&#039; - Uncompressing a downloaded texture, in SL&#039;s case a JPEG2000 texture, into memory. Once it is decoded it will be handed to OpenGL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discard Level&#039;&#039;&#039; - A discard level of 0 means the highest available detail version of the texture. Discard level 1 means the second highest detail version, which is 1/2 the size in each dimension (and thus 1/4 the memory footprint in memory)&lt;br /&gt;
&lt;br /&gt;
== 3.4.3 ==&lt;br /&gt;
[[Image:Texture_console_v343.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
# Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
# FBO (Needs Details)&lt;br /&gt;
# Raw Tot.  (ND)&lt;br /&gt;
# Bias.  Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
# Cache.&lt;br /&gt;
# Net Tot Tex.  Total size of textures (MB) downloaded over network in this session.  Includes both UDP and HTTP transport.  Value is updated internally on a 10-second timer and so lags other activity in the console.&lt;br /&gt;
# Tot Obj.  (MB) (ND)&lt;br /&gt;
# Tot Htp.  Total number of HTTP requests issued for texture downloads.  Repeated downloads (say, for existing or different discard levels) are counted individually.  Retries on connection or HTTP failures were counted in the past.  They are not counted currently.&lt;br /&gt;
# Cread.  Count of on-disk texture cache reads requested by texture fetch code.&lt;br /&gt;
# Cwrite.  Count of on-disk texture cache writes requested by texture fetch code.&lt;br /&gt;
# Rwait.  Count of texture fetch requests that went to resource wait state (HTW) because the HTTP library had enough work queued up.&lt;br /&gt;
# Textures.  Number of textures known to the texture management system.  These will be in various states of completeness.&lt;br /&gt;
# Fetch.  Number of outstanding texture fetch requests / Number of completed fetch requests awaiting finalization (leading to deletion of the request).&lt;br /&gt;
# Pkts.  Count of UDP packets received containing texture header or image data. / Count of UDP packets received that could not be processed due to some error such as corruption or invalid ordering or no valid request.&lt;br /&gt;
# Cache R/W.  Count of outstanding cache read requests / Count of outstanding cache write requests&lt;br /&gt;
# LFS.  Count of async file operation requests outstanding on the LFS worker thread.  LFS shouldn’t be involved in texture operations anymore so probably not interesting.&lt;br /&gt;
# RAW.  Count of instances of LLImageRaw objects currently in the system.&lt;br /&gt;
# HTP.  Count of active HTTP requests issued or queued for texture fetching.  Completion will contribute to ‘Tot Htp’ above.  These are the requests made available to the lower-level HTTP transport and not the number of concurrent requests (which is limited to eight by default).&lt;br /&gt;
# DEC.  Count of requests outstanding for decoding of texture data.&lt;br /&gt;
# CRE.  (ND)&lt;br /&gt;
# BW.  UDP bandwidth limit as negotiated / UDP bandwidth limit as configured.  Text will change color to yellow or red as configured value is approached and exceeded.&lt;br /&gt;
# Tex UUID.  Fragment of UUID identifying texture.  UUIDs will be rendered with varying colors:&lt;br /&gt;
#* White = Normal priority image&lt;br /&gt;
#* Yellow = Selected image, prioritized&lt;br /&gt;
#* Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
#* Magenta = Boosted (prioritized) image&lt;br /&gt;
#* Green = UI image &lt;br /&gt;
#* Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
# Area.  Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
# DDis(Req).  Desired Discard Level (see Discard definition) which is a function of area on screen and importance / Requested Discard Level.  This is the client&#039;s record of the last discard level requested to the server.  This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
# DecodePri(Fetch).  Priority for decode of image / Priority as requested for fetching.&lt;br /&gt;
# Progress Bar.  Fills up as the requested texture is downloaded.  This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).  Incremental progress is indicated for UDP requests, HTTP will jump to completion.&lt;br /&gt;
# pk/max.  For UDP, number of packets received (reflected in progress bar) / Max number of packets&lt;br /&gt;
# State.  The texture request&#039;s current state in the fetching/decoding state machine.  States include:&lt;br /&gt;
#* &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard).  If red, invalid state.&lt;br /&gt;
#* &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
#* &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
#* &amp;quot;NET&amp;quot; - Indicates the texture is in the UDP request queue, but has not yet been requested from the servers&lt;br /&gt;
#* &amp;quot;SIM&amp;quot; - Waiting for UDP packet data from simulator&lt;br /&gt;
#* &amp;quot;HTW&amp;quot; - Resource waiting for HTTP resources prior to &amp;quot;HTP&amp;quot; state&lt;br /&gt;
#* &amp;quot;REQ&amp;quot; - Preparing to send HTTP request to grid&lt;br /&gt;
#* &amp;quot;HTP&amp;quot; - Waiting for HTTP response data&lt;br /&gt;
#* &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
#* &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
#* &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
#* &amp;quot;CRE&amp;quot; - Texture needs to be created&lt;br /&gt;
#* &amp;quot;FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
# Pkt.  Handling information for recently-received data (mostly UDP-oriented):&lt;br /&gt;
#* White = packet received from simulator&lt;br /&gt;
#* Green = data requested from simulator&lt;br /&gt;
#* Yellow = texture processed by state machine&lt;br /&gt;
# Bnd.  Binding of fetched data to OpenGL:&lt;br /&gt;
#* Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
# W x H.  Dimensions of image.&lt;br /&gt;
# (Dis).  Actual Discarded level.  This should eventually (after textures are downloaded and decoded) be the same as Desired Discard Level (DDis).&lt;br /&gt;
# Mem.  Amount of memory consumed by the texture.&lt;br /&gt;
&lt;br /&gt;
Some patterns to look for when searching for bugs:&lt;br /&gt;
&lt;br /&gt;
1.  If Cread is growing quickly while Cwrite and &#039;Tot Htp&#039; are&lt;br /&gt;
static or growing slowly then the texture cache is populated&lt;br /&gt;
and being used.&lt;br /&gt;
&lt;br /&gt;
2.  If Cwrite and &#039;Tot Htp&#039; grow at about the same rate as&lt;br /&gt;
Cread, then either the texture cache is cold or it isn&#039;t working.&lt;br /&gt;
&lt;br /&gt;
3.  If &#039;Tot Htp&#039; is growing faster than &#039;Cwrite&#039;, then we&#039;re&lt;br /&gt;
doing unnecessary fetches for assets for some reason.&lt;br /&gt;
&lt;br /&gt;
==1.14==&lt;br /&gt;
[[Image:Texture_console_1_14.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
* 3: Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
* 4: Graphical representation of 1. Red indicates that (3) will be increased&lt;br /&gt;
* 5: Total number of textures currently referenced (i.e. nearby)&lt;br /&gt;
* 6: Number of textures with data being actively fetched (number pending deletion)&lt;br /&gt;
* 7: Number of textures waiting to be Read/Written to the local cache&lt;br /&gt;
* 8: Graphical representation of 2&lt;br /&gt;
* 9: First chunk of texture ID&lt;br /&gt;
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.&lt;br /&gt;
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
* 13: Priority.&lt;br /&gt;
* 14: Requested Priority. &lt;br /&gt;
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).&lt;br /&gt;
* 16: Number of Packets received (numerical representation of 15)&lt;br /&gt;
* 17: Max number of packets&lt;br /&gt;
* 18: &amp;quot;---&amp;quot; see 27-33&lt;br /&gt;
* 19: State: What state the texture fetcher is in for this texture&lt;br /&gt;
* 20: Pkt:&lt;br /&gt;
** White = packet received from simulator&lt;br /&gt;
** Green = data requested from simulator&lt;br /&gt;
** Yellow = texture processed by state machine&lt;br /&gt;
* 21: Bnd: &lt;br /&gt;
** Purple = Texture is currently bound (i.e. being rendered)&lt;br /&gt;
* 22: Width x Height&lt;br /&gt;
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.&lt;br /&gt;
* 24: Amount of memory consumed by the texture&lt;br /&gt;
* 25/26: Text Color&lt;br /&gt;
** White = Normal priority image&lt;br /&gt;
** Yellow = Selected image, prioritized&lt;br /&gt;
** Orange = Image under mouse (&amp;quot;hover&amp;quot;), prioritized&lt;br /&gt;
** Magenta = Boosted (prioritized) image&lt;br /&gt;
** Green = UI image &lt;br /&gt;
** Grey = Image not in state machine (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
* 27-33&lt;br /&gt;
** &amp;quot;---&amp;quot; - The texture is not being fetched (hopefully because current discard &amp;lt;= desired discard)&lt;br /&gt;
** &amp;quot;INI&amp;quot; - The texture is waiting to be processed by the state machine&lt;br /&gt;
** &amp;quot;DSK&amp;quot; - Reading from local cache (cyan=header, blue=body) &lt;br /&gt;
** &amp;quot;NET&amp;quot; - Indicates the texture is in the network request queue, but has not yet been requested from the servers&lt;br /&gt;
** &amp;quot;SIM&amp;quot; - Waiting for packet data from simulator&lt;br /&gt;
** &amp;quot;URL&amp;quot; - Waiting for URL for HTTP request&lt;br /&gt;
** &amp;quot;HTP&amp;quot; - Waiting for HTTP data&lt;br /&gt;
** &amp;quot;DEC&amp;quot; - Decoding Image&lt;br /&gt;
** &amp;quot;WRT&amp;quot; - Writing image to local cache&lt;br /&gt;
** &amp;quot;END&amp;quot; - Waiting for a request for more data or deletion (after timeout)&lt;br /&gt;
** &amp;quot;CRE/FUL/BAD/MIS&amp;quot; - Debug, shouldn&#039;t happen (needs create, fully loaded, bad, missing)&lt;br /&gt;
&lt;br /&gt;
(*) These are functions of the &#039;Graphics Card Memory&#039; setting under Preferences &amp;gt; Adv. Graphics&lt;br /&gt;
&lt;br /&gt;
==1.13==&lt;br /&gt;
[[Image:Texture console.png|Texture Console]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Important note: Unless the scene is *very* simple, this display only shows a tiny fraction of the number of textures. The textures displayed are active textures (i.e. textures that need more data) ordered by priority.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 1: Amount of texture data handed to OpenGL / Maximum amount SecondLife will hand to OpenGL*&lt;br /&gt;
* 2: Amount of texture data currently bound by OpenGL / Threshold at which we decrease texture detail*&lt;br /&gt;
* 3: Texture detail multiplier. &amp;gt; 1 indicates that texture detail is being decreased to fit into memory&lt;br /&gt;
* 4: Graphical representation of 1. Red indicates that (3) will be increased&lt;br /&gt;
* 5: &lt;br /&gt;
* 6:&lt;br /&gt;
* 7:&lt;br /&gt;
* 8: Graphical representation of 2&lt;br /&gt;
* 9: First chunk of texture ID&lt;br /&gt;
* 10: Area on screen. Approximate # of pixels this texture covers on-screen.&lt;br /&gt;
* 11: Desired Discard Level. (see Discard definition) Is a function of area on screen and importance.&lt;br /&gt;
* 12: Requested Discard Level. This is the clients record of the last discard level requested to the server. This is usually the same as Desired Discard Level, but may be larger if we have stopped requesting the texture because it is out of view (no area) or we have all of its data.&lt;br /&gt;
* 13: Priority.&lt;br /&gt;
* 14: Requested Priority. &lt;br /&gt;
* 15: Data received. This bar fills up as the requested texture is downloaded. This is basically a download progress bar for the textures current Desired Discard Level (but will only fill up if the requested discard level is 0).&lt;br /&gt;
* 16: Number of Packets received (numerical representation of 15)&lt;br /&gt;
* 17: Max number of packets&lt;br /&gt;
* 18: A pip shows up here when a packet arrives&lt;br /&gt;
* 19: A pip shows up here while the texture is being decoded&lt;br /&gt;
* 20: A pip shows up here if the texture is being displayed (bound)&lt;br /&gt;
* 21: &lt;br /&gt;
* 22: Width x Height&lt;br /&gt;
* 23: Actual Discarded level. This should eventually (after textures are downloaded and decoded) be the same as (11)Desired Discard Level.&lt;br /&gt;
* 24: Amount of memory consumbed by the texture&lt;br /&gt;
* 25: grey text. &lt;br /&gt;
* 26: purple text. &lt;br /&gt;
* 27: green text. &lt;br /&gt;
* 28: *. &lt;br /&gt;
* 29: *r. &lt;br /&gt;
&lt;br /&gt;
(*) These are functions of the &#039;Graphics Card Memory&#039; setting under Preferences &amp;gt; Adv. Graphics&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
* &#039;Texture Memory&#039; or &#039;OpenGL Memory&#039; refers to data passed to the OpenGL drivers. Depending upon the graphics card and driver, this memory may be on the graphics card, in system memory, or (likely) both.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Texture_console_v343.png&amp;diff=1175790</id>
		<title>File:Texture console v343.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Texture_console_v343.png&amp;diff=1175790"/>
		<updated>2013-01-02T21:11:14Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: Annotated capture of texture console as rendered in V3.4.3.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Annotated capture of texture console as rendered in V3.4.3.&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1169939</id>
		<title>TPVD/Developers Group Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1169939"/>
		<updated>2012-06-29T19:00:53Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* Open Items: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Add agenda requests at the end, and please put your SL Name in the request so Oz&#039;s know who to contact for any clarification&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Use &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt; to insert your signature&#039;&#039;&#039;&lt;br /&gt;
Next meeting: &#039;&#039;&#039;Noon SLT, June 29&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====New:====&lt;br /&gt;
&lt;br /&gt;
# Plans for the llphysicsextension stub, and the corresponding licensed library&lt;br /&gt;
# New community driven user group for content creation improvements --[[User:Geenz Spad|Geenz Spad]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Add your item above this comment, and be sure to attach your name or signature using --~~~ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Open Items:====&lt;br /&gt;
&lt;br /&gt;
# In-world Viewer Test resources ([[User:Alexa Linden|Alexa Linden]])&lt;br /&gt;
# Communications reliability issues&lt;br /&gt;
## Monty needs consumer router information&lt;br /&gt;
# People API (we can still hope)&lt;br /&gt;
&lt;br /&gt;
[[Category:Third Party Viewers]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1152907</id>
		<title>TPVD/Developers Group Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=TPVD/Developers_Group_Agenda&amp;diff=1152907"/>
		<updated>2011-09-02T19:17:19Z</updated>

		<summary type="html">&lt;p&gt;Monty Linden: /* Open Items: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &#039;&#039;&#039;Add agenda requests at the end, and please put your SL Name in the request so Oz&#039;s know who to contact for any clarification&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Use &amp;lt;nowiki&amp;gt;--~~~~&amp;lt;/nowiki&amp;gt; to insert your signature&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Current:====&lt;br /&gt;
&lt;br /&gt;
# Does LL have any plans to use Calling Cards/Friends soon? --[[User:Kadah Coba|Kadah Coba]] 11:58, 2 September 2011 (PDT)&lt;br /&gt;
&amp;lt;!-- Add your item above this comment, and be sure to attach your name or signature using --~~~~ --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Open Items:====&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Fixed&#039;&#039;&#039; {{JiraIssue|SVC-7104|Granting/revoking perms broken for non-web-profile viewers}} --[[User:Kadah Coba|Kadah Coba]] 10:32, 21 July 2011 (PDT)&lt;br /&gt;
# Any updates on:&lt;br /&gt;
#*{{JiraIssue|VWR-25940|HTTP communication with grid capabilities router is unreliable at times affecting HTTP Textures}}&lt;br /&gt;
#*{{JiraIssue|SVC-6917|Apache2-worker/caps router on sim hosts is relaying 499 HTTP status codes back to clients - not a valid wire status code}}&lt;br /&gt;
#*{{JiraIssue|SVC-6760|Apache2-worker/caps router on sim hosts is experiencing a high failure rate leading to service interruptions}}&lt;br /&gt;
#*{{JiraIssue|VWR-25145|asset/texture download scenarios that work badly}}&lt;br /&gt;
#*{{JiraIssue|VWR-26218|Windows viewer is experiencing DNS issues while attempting to fetch textures}}&lt;br /&gt;
#: and the 499/caps failures? Can someone find out why do a few users see these issues so much? --[[User:Kadah Coba|Kadah Coba]] 12:38, 31 May 2011 (PDT)&lt;br /&gt;
#* Seeking feedback on good/bad experiences and networking hardware here:&lt;br /&gt;
#** {{JiraIssue|VWR-25426|Friendlist displays users as Unknown or (loading), teleports fail, assets will not save}}&lt;br /&gt;
# &#039;&#039;&#039;Profile API&#039;&#039;&#039;&lt;br /&gt;
# Minimap coarse location messages, any possibility on getting that updated to support avatars over 1000m --[[User:Kadah Coba|Kadah Coba]] 13:13, 21 May 2011 (PDT)&lt;br /&gt;
## {{JiraIssue|VWR-9326|Incorrect chevron directions on minimap when agents are above 768m}}&lt;br /&gt;
## {{JiraIssue|SVC-6152|Sky height limit issues}}&lt;br /&gt;
# Search not working without cookies enabled - options for fixing this -- [[User:Nya Linden|Nya Linden]] 14:17, 1 August 2011 (PDT)&lt;br /&gt;
# 2.8/3.0 tip OS compiles broken, due to mesh stub library breakage. -- [[User:Arrehn Oberlander]] &lt;br /&gt;
# New search returns wrong output when users&#039;s local time falls on a different day than SLT -- [[User:Arrehn Oberlander]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Third Party Viewers]]&lt;/div&gt;</summary>
		<author><name>Monty Linden</name></author>
	</entry>
</feed>