<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>60008</bug_id>
          
          <creation_ts>2011-05-02 22:03:43 -0700</creation_ts>
          <short_desc>[chromium] Use mapTexSubImage2D for tile uploads if available</short_desc>
          <delta_ts>2011-05-11 19:17:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>396953</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-02 22:03:43 -0700</bug_when>
    <thetext>[chromium] Use mapTexSubImage2D for tile uploads if available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396954</commentid>
    <comment_count>1</comment_count>
      <attachid>92043</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-02 22:04:04 -0700</bug_when>
    <thetext>Created attachment 92043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396955</commentid>
    <comment_count>2</comment_count>
      <attachid>92044</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-02 22:07:24 -0700</bug_when>
    <thetext>Created attachment 92044
Remove webview instrumentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>396968</commentid>
    <comment_count>3</comment_count>
      <attachid>92044</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-02 22:37:59 -0700</bug_when>
    <thetext>Comment on attachment 92044
Remove webview instrumentation.

View in context: https://bugs.webkit.org/attachment.cgi?id=92044&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:281
&gt; +        TRACE_EVENT(&quot;LayerTilerChromium::update::paint&quot;, this, String::format(&quot;%i %i&quot;, m_paintRect.width(), m_paintRect.height()).utf8().data());

nit: does this mean we do a string format + utf16-&gt;utf8 conversion for each paint call, or does the macro only evaluate its arguments when tracing is actually enabled?  Also, does this actually put the string contents in the trace?  Could we just pass two ints?

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:361
&gt; +                    memcpy(pixelDest, &amp;paintPixels[4 * paintOffset.y() * paintRect.width()], paintRect.width() * destRect.height() * 4);

is memcpy()ing into a mapped buffer more efficient than passing the value to texSubImage2D directly?  there&apos;s a higher synchronization overhead for mapped buffers than for the normal transfer buffer, iirc

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:379
&gt; +                        memcpy(&amp;m_tilePixels[destRect.width() * 4 * row],

in the mapped case it seems like we want to avoid allocating m_tilePixels at all - it&apos;s an extra 256x256x4 = 262,144 byte overhead for each composited layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397079</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-05-03 07:50:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 92044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92044&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:281
&gt; &gt; +        TRACE_EVENT(&quot;LayerTilerChromium::update::paint&quot;, this, String::format(&quot;%i %i&quot;, m_paintRect.width(), m_paintRect.height()).utf8().data());
&gt; 
&gt; nit: does this mean we do a string format + utf16-&gt;utf8 conversion for each paint call, or does the macro only evaluate its arguments when tracing is actually enabled?  Also, does this actually put the string contents in the trace?  Could we just pass two ints?

I disagree.  I think the trace output should be *more* verbose (so long as it doesn&apos;t get executed except when tracing).  I had in my mind that we could eventually pass JSON through trace events, so we could do something like { paintedPixels: x, paintedTiles: y, usingMapSubImage: false }.  Then (insert hand waving here) you could select an event (or a set of events) on the trace and you could see aggregated values of these arguments.

It might make sense to just push this part of the change into a smaller &quot;improving tracing&quot; patch anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397394</commentid>
    <comment_count>5</comment_count>
      <attachid>92132</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-03 14:29:57 -0700</bug_when>
    <thetext>Created attachment 92132
Remove tracing, use map in hud.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398145</commentid>
    <comment_count>6</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-04 12:02:31 -0700</bug_when>
    <thetext>+vangelis for the overall discussion of should we even commit this change.

Upside: smooths out scrolling
Downside: uses memory because we don&apos;t have a memory manager for the allocations created by the mapBuffer system

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398807</commentid>
    <comment_count>7</comment_count>
      <attachid>92132</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-05-05 10:25:10 -0700</bug_when>
    <thetext>Comment on attachment 92132
Remove tracing, use map in hud.

View in context: https://bugs.webkit.org/attachment.cgi?id=92132&amp;action=review

Nat is right that I&apos;m concerned about possibly over-allocating memory if we use mapped textures for the tiler (which means we&apos;ll be using mapped textures for the root and every content layer). 
A couple of questions that I&apos;d be interested in getting answered:
1. Do we get a new shared memory block every time we map a new texture?  
2. What&apos;s the overhead of creating the shared memory? 
3. When does the memory allocated by the mapped tiles get freed?  Does it get freed when the texture is deleted? 

I agree that we should try to get the visible tab as many resources as there are available to speed it up.  Maybe all we need is to add an additional method to the tiler to force de-allocation of all the shared memory resources for mapped tiles and call it whenever the tab associated with the layer renderer goes to the background (or only keep some of them alive via an LRU scheme).

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:59
&gt; +    m_useMapSubForUploads = layerRendererContext()-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);

I think it would be useful to make that a creation time option for the tiler so that we can decide which tilers use mapped textures.  For example we could use mapped textures for root tiles but not for content layer tiles to control memory usage.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:91
&gt; +    if (m_useMapSubForUploads)

shouldn&apos;t this be if (!m_useMapSubForUploads)  ?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.h:72
&gt; +    static const int kBeginFrameHistorySize = 64;

This change doesn&apos;t seem to belong to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398823</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-05-05 10:41:10 -0700</bug_when>
    <thetext>For your questions 1 2 and 3. Currently the shm is allocated on demand, used for the duration of the map, and then returned to a pool where it gets reused. There&apos;s a couple of sync IPCs to create the shm the first time (could in theory be reduced to 1 on mac and 0 on windows/linux) but after that the overhead is virtually null. There is no size cap and the shm isn&apos;t freed until the context is freed.

So in steady state for reasonable content the shm pool grows to about the amount of transfer data you need per frame or 2, and stays there, there is no synchronization and you save a copy per transfer.

Malicious content could grow the pool to an arbitrary large size. It should be easy to add a cap (which implies synchronization once the cap is reached).
To reduce memory usage, it is also possible (and not hard) to reclaim unused shm, possibly aggressively for off-screen content, at the cost of some synchronization when the content comes back on-screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398890</commentid>
    <comment_count>9</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-05-05 12:02:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; For your questions 1 2 and 3. Currently the shm is allocated on demand, used for the duration of the map, and then returned to a pool where it gets reused. There&apos;s a couple of sync IPCs to create the shm the first time (could in theory be reduced to 1 on mac and 0 on windows/linux) but after that the overhead is virtually null. There is no size cap and the shm isn&apos;t freed until the context is freed.
&gt; 
&gt; So in steady state for reasonable content the shm pool grows to about the amount of transfer data you need per frame or 2, and stays there, there is no synchronization and you save a copy per transfer.
&gt; 
&gt; Malicious content could grow the pool to an arbitrary large size. It should be easy to add a cap (which implies synchronization once the cap is reached).
&gt; To reduce memory usage, it is also possible (and not hard) to reclaim unused shm, possibly aggressively for off-screen content, at the cost of some synchronization when the content comes back on-screen.

Thanks, Antoine.

We have several memory &quot;managers&quot; in place and we need to centralize them as a separate task definitely.  So I&apos;m warming up to the idea of putting this patch in and dealing with memory management issues after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400971</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-09 18:42:10 -0700</bug_when>
    <thetext>jamesr, enne, any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400977</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-09 18:51:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I think it would be useful to make that a creation time option for the tiler so that we can decide which tilers use mapped textures.  For example we could use mapped textures for root tiles but not for content layer tiles to control memory usage.

I tried this on my local build and while its a simple change, right now, having this is a benefit 99% of the time. This is basically because our texImage2d implementation always blocks.

My suggestion is that we defer this to when we make a memory manager change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400985</commentid>
    <comment_count>12</comment_count>
      <attachid>92905</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-09 18:53:53 -0700</bug_when>
    <thetext>Created attachment 92905
Nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401312</commentid>
    <comment_count>13</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-05-10 10:38:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; jamesr, enne, any comments?

The patch itself looks good to me.  The memory issues definitely need to get solved, but I think our context-limiting code will help mitigate global memory usage in the short term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401329</commentid>
    <comment_count>14</comment_count>
      <attachid>92905</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-10 10:51:50 -0700</bug_when>
    <thetext>Comment on attachment 92905
Nits.

View in context: https://bugs.webkit.org/attachment.cgi?id=92905&amp;action=review

See if you can consolidate the extension query+enable, but otherwise this looks fine.

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.cpp:61
&gt; +    m_useMapSubForUploads = layerRendererContext()-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);
&gt; +    if (m_useMapSubForUploads)
&gt; +        layerRendererContext()-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);

Rather than querying+enabling this once per LayerTilerChromium can we do this on the LRC to just do it once per compositor context?  It seems awfully wasteful to have to do this once per layer.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:76
&gt; +    m_useMapSubForUploads = m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);
&gt; +    if (m_useMapSubForUploads)
&gt; +        m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);

This could reuse the bit on LRC if it existed there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402187</commentid>
    <comment_count>15</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-11 12:57:49 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; See if you can consolidate the extension query+enable, but otherwise this looks fine.

I liked this suggestion when I first saw it, because I agree its lame to query this for every WebGL layer. We&apos;d always have to enable it on every context, though.... that&apos;s the GL way.

Then when I was coding this, I realized that we&apos;re looking for this extension on the WebGL layer context, not the compositor context. Right now, the presence of the extension on one implies presence on the other, but that&apos;s a pretty fragile assumption. Consider, e.g., the threading work where the compositor context isn&apos;t available on the main thread, or the quirky platforms we&apos;ve been talking about where WebGL contexts may be out of process but compositor contexts may be in-process.

I&apos;m leaning toward committing as-is because the suggested optimization is too fragile for my taste.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402200</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-11 13:19:48 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; See if you can consolidate the extension query+enable, but otherwise this looks fine.
&gt; 
&gt; I liked this suggestion when I first saw it, because I agree its lame to query this for every WebGL layer. We&apos;d always have to enable it on every context, though.... that&apos;s the GL way.
&gt; 
&gt; Then when I was coding this, I realized that we&apos;re looking for this extension on the WebGL layer context, not the compositor context. Right now, the presence of the extension on one implies presence on the other, but that&apos;s a pretty fragile assumption. Consider, e.g., the threading work where the compositor context isn&apos;t available on the main thread, or the quirky platforms we&apos;ve been talking about where WebGL contexts may be out of process but compositor contexts may be in-process.
&gt; 
&gt; I&apos;m leaning toward committing as-is because the suggested optimization is too fragile for my taste.
&gt; 
&gt; Thoughts?

This patch enables the extension once for each LayerTilerChromium, but all the queries and enables are on the same context (the compositor context).  I don&apos;t think there are any WebGL contexts at play.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402293</commentid>
    <comment_count>17</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-11 14:33:40 -0700</bug_when>
    <thetext>&gt; This patch enables the extension once for each LayerTilerChromium, but all the queries and enables are on the same context (the compositor context).  I don&apos;t think there are any WebGL contexts at play.

Unless I read the code wrong [which is totally possible] this patch uses m_context --- m_context points at the WebGL context, not at layerRenderer()-&gt;context().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402296</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-11 14:38:16 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; This patch enables the extension once for each LayerTilerChromium, but all the queries and enables are on the same context (the compositor context).  I don&apos;t think there are any WebGL contexts at play.
&gt; 
&gt; Unless I read the code wrong [which is totally possible] this patch uses m_context --- m_context points at the WebGL context, not at layerRenderer()-&gt;context().

I think we&apos;re talking about different patches - this is the extension code I&apos;m referring to (from LayerTilerChromium.cpp):

 59    m_useMapSubForUploads = m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);
 60    if (m_useMapSubForUploads)
 61        m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);

and (from CCHeadsUpDisplay.cpp):

 74    m_useMapSubForUploads = m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);
 75    if (m_useMapSubForUploads)
 76        m_layerRenderer-&gt;context()-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402297</commentid>
    <comment_count>19</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-11 14:40:27 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
Ugh I suck. My bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402388</commentid>
    <comment_count>20</comment_count>
      <attachid>93205</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-05-11 16:06:54 -0700</bug_when>
    <thetext>Created attachment 93205
Check for mapsub once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402389</commentid>
    <comment_count>21</comment_count>
      <attachid>93205</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-11 16:11:56 -0700</bug_when>
    <thetext>Comment on attachment 93205
Check for mapsub once.

View in context: https://bugs.webkit.org/attachment.cgi?id=93205&amp;action=review

R=me

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:125
&gt;      m_contextSupportsLatch = m_context-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_latch&quot;);
&gt; +    m_contextSupportsMapSub = m_context-&gt;getExtensions()-&gt;supports(&quot;GL_CHROMIUM_map_sub&quot;);
&gt; +    if (m_contextSupportsMapSub)
&gt; +        m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_map_sub&quot;);

hmm, looks like I should go ask John Bates about why we aren&apos;t calling ensureEnabled(&quot;GL_CHROMIUM_latch&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402551</commentid>
    <comment_count>22</comment_count>
      <attachid>93205</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-11 19:16:56 -0700</bug_when>
    <thetext>Comment on attachment 93205
Check for mapsub once.

Clearing flags on attachment: 93205

Committed r86301: &lt;http://trac.webkit.org/changeset/86301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402552</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-11 19:17:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92043</attachid>
            <date>2011-05-02 22:04:04 -0700</date>
            <delta_ts>2011-05-02 22:07:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60008-20110502220402.patch</filename>
            <type>text/plain</type>
            <size>8861</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZDg5ODJjYjRjNjFjMmQ1
ZDVkNjA3OWNmMzRmZTQ4YjRhYjQ1ODU2Li5jOTFiZTZlODZjNjA3ZGQ3NTc5NzZhYzc0ODExMTg2
NGFiM2E4YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMDIgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRp
bGUgdXBsb2FkcyBpZiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDA4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGVGcm9tUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNC0yOSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZGZp
eCBhZnRlciByODUzNDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCBjNzhj
MTM3ZjhjZDY4MmIxYmY4ZWZjYjBmYTUyOGYxOTlmMDBkNGE0Li40ZDAxMWYxODhjMTdiNTlkMGJj
MWFkNWY4MjM5MTU1ZWIxOWQ2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogCisj
aW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU1LDYgKzU3LDkgQEAg
TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb24KICAgICAsIG1fdGlsaW5nRGF0YShtYXgodGlsZVNpemUu
d2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpLCAwLCAwLCBib3JkZXIgPT0gSGFzQm9yZGVyVGV4
ZWxzKQogICAgICwgbV9sYXllclJlbmRlcmVyKGxheWVyUmVuZGVyZXIpCiB7CisgICAgbV91c2VN
YXBTdWJGb3JVcGxvYWRzID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIGlmIChtX3VzZU1hcFN1YkZv
clVwbG9hZHMpCisgICAgICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIHNldFRpbGVTaXpl
KHRpbGVTaXplKTsKIH0KIApAQCAtMjczLDcgKzI3OCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGUoVGlsZVBhaW50SW50ZXJmYWNlJiBwYWludGVyLCBjb25zdCBJbnRSZWN0JiBj
b250CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMs
IHRleHRPcHRpb24pOwogICAgIGNhbnZhc1BhaW50ZXIuY29udGV4dCgpLT50cmFuc2xhdGUoLW1f
cGFpbnRSZWN0LngoKSwgLW1fcGFpbnRSZWN0LnkoKSk7CiAgICAgewotICAgICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGU6OnBhaW50IiwgdGhpcywgMCk7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZTo6cGFpbnQiLCB0aGlz
LCBTdHJpbmc6OmZvcm1hdCgiJWkgJWkiLCBtX3BhaW50UmVjdC53aWR0aCgpLCBtX3BhaW50UmVj
dC5oZWlnaHQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHBhaW50ZXIucGFpbnQoKmNhbnZh
c1BhaW50ZXIuY29udGV4dCgpLCBtX3BhaW50UmVjdCk7CiAgICAgfQogfQpAQCAtMzQxLDI3ICsz
NDYsNDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZUZyb21QaXhlbHMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFIKICAgICAgICAgICAgIGlmIChwYWludE9m
ZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IHBhaW50UmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICBjb25zdCB1aW50OF90KiBwaXhlbFNv
dXJjZTsKLSAgICAgICAgICAgIGlmIChwYWludFJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0Lndp
ZHRoKCkgJiYgIXBhaW50T2Zmc2V0LngoKSkKLSAgICAgICAgICAgICAgICBwaXhlbFNvdXJjZSA9
ICZwYWludFBpeGVsc1s0ICogcGFpbnRPZmZzZXQueSgpICogcGFpbnRSZWN0LndpZHRoKCldOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWws
IHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAvLyBw
YWludCByZXN1bHRzIGludG8gYSB0ZW1wIGJ1ZmZlciBmb3IgdXBsb2FkaW5nLgotICAgICAgICAg
ICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3JvdykK
LSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZtX3RpbGVQaXhlbHNbZGVzdFJlY3Qud2lkdGgo
KSAqIDQgKiByb3ddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhaW50UGl4ZWxzWzQg
KiAocGFpbnRPZmZzZXQueCgpICsgKHBhaW50T2Zmc2V0LnkoKSArIHJvdykgKiBwYWludFJlY3Qu
d2lkdGgoKSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlY3Qud2lkdGgoKSAq
IDQpOwotCi0gICAgICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV90aWxlUGl4ZWxzWzBdOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJl
KCk7Ci0KICAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxpbmdEYXRhLmJv
cmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4
dDNEOjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCi0gICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRo
KCksIGRlc3RSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CisgICAgICAgICAgICB0aWxl
LT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7CisKKyAgICAgICAgICAgIGlmIChtX3VzZU1hcFN1
YkZvclVwbG9hZHMpIHsKKyAgICAgICAgICAgICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBh
IG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKKyAgICAgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJv
bWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgICAgICAgICB1aW50OF90KiBwaXhlbERl
c3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENI
Uk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRl
c3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGl4
ZWxEZXN0KTsKKyAgICAgICAgICAgICAgICBpZiAocGFpbnRSZWN0LndpZHRoKCkgPT0gc291cmNl
UmVjdC53aWR0aCgpICYmICFwYWludE9mZnNldC54KCkpCisgICAgICAgICAgICAgICAgICAgIG1l
bWNweShwaXhlbERlc3QsICZwYWludFBpeGVsc1s0ICogcGFpbnRPZmZzZXQueSgpICogcGFpbnRS
ZWN0LndpZHRoKCldLCBwYWludFJlY3Qud2lkdGgoKSAqIGRlc3RSZWN0LmhlaWdodCgpICogNCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN0cmlkZXMg
bm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20gdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byB0aGUgcGl4ZWxEZXN0CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3Jv
dykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmcGl4ZWxEZXN0W2Rlc3RSZWN0Lndp
ZHRoKCkgKiA0ICogcm93XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFpbnRQ
aXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFpbnRPZmZzZXQueSgpICsgcm93KSAqIHBh
aW50UmVjdC53aWR0aCgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJl
Y3Qud2lkdGgoKSAqIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHRl
bnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwaXhlbFNvdXJjZTsK
KyAgICAgICAgICAgICAgICBpZiAocGFpbnRSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0
aCgpICYmICFwYWludE9mZnNldC54KCkpCisgICAgICAgICAgICAgICAgICAgIHBpeGVsU291cmNl
ID0gJnBhaW50UGl4ZWxzWzQgKiBwYWludE9mZnNldC55KCkgKiBwYWludFJlY3Qud2lkdGgoKV07
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN0cmlkZXMg
bm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20gdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byBhIHRlbXAgYnVmZmVyIGZvciB1cGxvYWRp
bmcuCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0
LmhlaWdodCgpOyArK3JvdykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmbV90aWxl
UGl4ZWxzW2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcGFpbnRQaXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFpbnRPZmZz
ZXQueSgpICsgcm93KSAqIHBhaW50UmVjdC53aWR0aCgpKV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFJlY3Qud2lkdGgoKSAqIDQpOworCisgICAgICAgICAgICAgICAgICAg
IHBpeGVsU291cmNlID0gJm1fdGlsZVBpeGVsc1swXTsKKyAgICAgICAgICAgICAgICB9CisKKwor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwg
ZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxTb3VyY2UpKTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCmluZGV4IDE2NTBjODY2YWM4MDM2Y2FmOGM1N2U0
MmM2NWYwNmU1MTFlNWM0MDkuLjBmNzU1ODNmMWQxYjA0MDVlMzlhMDkyYTQ3MmY5NzkxYmU3NTk2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCkBAIC0xNjcsNiArMTY3LDkgQEAgcHJp
dmF0ZToKIAogICAgIFRpbGluZ0RhdGEgbV90aWxpbmdEYXRhOwogCisgICAgLy8gV2hldGhlciB0
aGUgdGlsZXIgd2lsbCB1c2UgR0xfQ0hST01JVU1fbWFwX3N1YiBmb3IgdGV4dHVyZSB1cGxvYWRz
LgorICAgIGJvb2wgbV91c2VNYXBTdWJGb3JVcGxvYWRzOworCiAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBtX2xheWVyUmVuZGVyZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDNkNTQwZWU0NDE2NDg0YmYzZTJjNGYyOTNlOTUzYjU3ZjU2ZDFkOGYuLjE1ZWNiMDczMWVi
MzEzYmU4N2RkZTU0MmYyZmM2MzZjZDJjNDNjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDIgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtj
aHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRpbGUgdXBsb2FkcyBpZiBhdmFpbGFi
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDA4
CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpsYXlvdXQp
OgorCiAyMDExLTA0LTI5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4gU2tpcCBXZWJQYWdlTmV3U2VyaWFsaXplclRlc3Qu
Y3BwIGluIFdpbmRvd3MgbXVsdGktRExMIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGI0YWY3YzE1NDNkNjg3ZWZhMDI1OTJiNTFjNjUxMWM1
OGE5OWY2ZWIuLmU1NzRhYzk1NzllMGFjOTkxNDFmNjY2NmQ0MGE4ZGE3MjRiNTcyMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEwMDAsNiArMTAw
MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQog
CiB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKCkKIHsKKyAgICBUUkFDRV9FVkVOVCgiV2ViVmll
d0ltcGw6OmFuaW1hdGUiLCB0aGlzLCAwKTsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiAgICAgV2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5GcmFtZUltcGwoKTsKICAg
ICBpZiAod2ViZnJhbWUpIHsKQEAgLTEwMTIsNiArMTAxMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OmFuaW1hdGUoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpsYXlvdXQoKQogeworICAgIFRSQUNFX0VW
RU5UKCJXZWJWaWV3SW1wbDo6bGF5b3V0IiwgdGhpcywgMCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogICAgIC8vIEZJWE1FOiBSVEwgc3R5bGUgbm90IHN1cHBvcnRlZCBieSB0
aGUgY29tcG9zaXRvciB5ZXQuCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSgpICYmIHBhZ2VIYXNSVExTdHlsZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92044</attachid>
            <date>2011-05-02 22:07:24 -0700</date>
            <delta_ts>2011-05-03 14:29:48 -0700</delta_ts>
            <desc>Remove webview instrumentation.</desc>
            <filename>bug-60008-20110502220723.patch</filename>
            <type>text/plain</type>
            <size>7270</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZDg5ODJjYjRjNjFjMmQ1
ZDVkNjA3OWNmMzRmZTQ4YjRhYjQ1ODU2Li5jOTFiZTZlODZjNjA3ZGQ3NTc5NzZhYzc0ODExMTg2
NGFiM2E4YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMDIgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRp
bGUgdXBsb2FkcyBpZiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDA4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGVGcm9tUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNC0yOSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZGZp
eCBhZnRlciByODUzNDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCBjNzhj
MTM3ZjhjZDY4MmIxYmY4ZWZjYjBmYTUyOGYxOTlmMDBkNGE0Li40ZDAxMWYxODhjMTdiNTlkMGJj
MWFkNWY4MjM5MTU1ZWIxOWQ2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogCisj
aW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU1LDYgKzU3LDkgQEAg
TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb24KICAgICAsIG1fdGlsaW5nRGF0YShtYXgodGlsZVNpemUu
d2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpLCAwLCAwLCBib3JkZXIgPT0gSGFzQm9yZGVyVGV4
ZWxzKQogICAgICwgbV9sYXllclJlbmRlcmVyKGxheWVyUmVuZGVyZXIpCiB7CisgICAgbV91c2VN
YXBTdWJGb3JVcGxvYWRzID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1YiIpOworICAgIGlmIChtX3VzZU1hcFN1YkZv
clVwbG9hZHMpCisgICAgICAgIGxheWVyUmVuZGVyZXJDb250ZXh0KCktPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIHNldFRpbGVTaXpl
KHRpbGVTaXplKTsKIH0KIApAQCAtMjczLDcgKzI3OCw3IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGUoVGlsZVBhaW50SW50ZXJmYWNlJiBwYWludGVyLCBjb25zdCBJbnRSZWN0JiBj
b250CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMs
IHRleHRPcHRpb24pOwogICAgIGNhbnZhc1BhaW50ZXIuY29udGV4dCgpLT50cmFuc2xhdGUoLW1f
cGFpbnRSZWN0LngoKSwgLW1fcGFpbnRSZWN0LnkoKSk7CiAgICAgewotICAgICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGU6OnBhaW50IiwgdGhpcywgMCk7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZTo6cGFpbnQiLCB0aGlz
LCBTdHJpbmc6OmZvcm1hdCgiJWkgJWkiLCBtX3BhaW50UmVjdC53aWR0aCgpLCBtX3BhaW50UmVj
dC5oZWlnaHQoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHBhaW50ZXIucGFpbnQoKmNhbnZh
c1BhaW50ZXIuY29udGV4dCgpLCBtX3BhaW50UmVjdCk7CiAgICAgfQogfQpAQCAtMzQxLDI3ICsz
NDYsNDYgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZUZyb21QaXhlbHMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFIKICAgICAgICAgICAgIGlmIChwYWludE9m
ZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IHBhaW50UmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICBjb25zdCB1aW50OF90KiBwaXhlbFNv
dXJjZTsKLSAgICAgICAgICAgIGlmIChwYWludFJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0Lndp
ZHRoKCkgJiYgIXBhaW50T2Zmc2V0LngoKSkKLSAgICAgICAgICAgICAgICBwaXhlbFNvdXJjZSA9
ICZwYWludFBpeGVsc1s0ICogcGFpbnRPZmZzZXQueSgpICogcGFpbnRSZWN0LndpZHRoKCldOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWws
IHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAvLyBw
YWludCByZXN1bHRzIGludG8gYSB0ZW1wIGJ1ZmZlciBmb3IgdXBsb2FkaW5nLgotICAgICAgICAg
ICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3JvdykK
LSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZtX3RpbGVQaXhlbHNbZGVzdFJlY3Qud2lkdGgo
KSAqIDQgKiByb3ddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhaW50UGl4ZWxzWzQg
KiAocGFpbnRPZmZzZXQueCgpICsgKHBhaW50T2Zmc2V0LnkoKSArIHJvdykgKiBwYWludFJlY3Qu
d2lkdGgoKSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJlY3Qud2lkdGgoKSAq
IDQpOwotCi0gICAgICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV90aWxlUGl4ZWxzWzBdOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPmJpbmRUZXh0dXJl
KCk7Ci0KICAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxpbmdEYXRhLmJv
cmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4
dDNEOjpORUFSRVNUOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCi0gICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRo
KCksIGRlc3RSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIHBpeGVsU291cmNlKSk7CisgICAgICAgICAgICB0aWxl
LT50ZXh0dXJlKCktPmJpbmRUZXh0dXJlKCk7CisKKyAgICAgICAgICAgIGlmIChtX3VzZU1hcFN1
YkZvclVwbG9hZHMpIHsKKyAgICAgICAgICAgICAgICAvLyBVcGxvYWQgdGlsZSBkYXRhIHZpYSBh
IG1hcHBlZCB0cmFuc2ZlciBidWZmZXIKKyAgICAgICAgICAgICAgICBFeHRlbnNpb25zM0RDaHJv
bWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgICAgICAgICB1aW50OF90KiBwaXhlbERl
c3QgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENI
Uk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRl
c3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5z
aW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocGl4
ZWxEZXN0KTsKKyAgICAgICAgICAgICAgICBpZiAocGFpbnRSZWN0LndpZHRoKCkgPT0gc291cmNl
UmVjdC53aWR0aCgpICYmICFwYWludE9mZnNldC54KCkpCisgICAgICAgICAgICAgICAgICAgIG1l
bWNweShwaXhlbERlc3QsICZwYWludFBpeGVsc1s0ICogcGFpbnRPZmZzZXQueSgpICogcGFpbnRS
ZWN0LndpZHRoKCldLCBwYWludFJlY3Qud2lkdGgoKSAqIGRlc3RSZWN0LmhlaWdodCgpICogNCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN0cmlkZXMg
bm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20gdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byB0aGUgcGl4ZWxEZXN0CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0LmhlaWdodCgpOyArK3Jv
dykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmcGl4ZWxEZXN0W2Rlc3RSZWN0Lndp
ZHRoKCkgKiA0ICogcm93XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFpbnRQ
aXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFpbnRPZmZzZXQueSgpICsgcm93KSAqIHBh
aW50UmVjdC53aWR0aCgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFJl
Y3Qud2lkdGgoKSAqIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHRl
bnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwaXhlbFNvdXJjZTsK
KyAgICAgICAgICAgICAgICBpZiAocGFpbnRSZWN0LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0
aCgpICYmICFwYWludE9mZnNldC54KCkpCisgICAgICAgICAgICAgICAgICAgIHBpeGVsU291cmNl
ID0gJnBhaW50UGl4ZWxzWzQgKiBwYWludE9mZnNldC55KCkgKiBwYWludFJlY3Qud2lkdGgoKV07
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN0cmlkZXMg
bm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20gdGhlCisgICAgICAgICAg
ICAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byBhIHRlbXAgYnVmZmVyIGZvciB1cGxvYWRp
bmcuCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGRlc3RSZWN0
LmhlaWdodCgpOyArK3JvdykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSgmbV90aWxl
UGl4ZWxzW2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcGFpbnRQaXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFpbnRPZmZz
ZXQueSgpICsgcm93KSAqIHBhaW50UmVjdC53aWR0aCgpKV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFJlY3Qud2lkdGgoKSAqIDQpOworCisgICAgICAgICAgICAgICAgICAg
IHBpeGVsU291cmNlID0gJm1fdGlsZVBpeGVsc1swXTsKKyAgICAgICAgICAgICAgICB9CisKKwor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwg
ZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxTb3VyY2UpKTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCmluZGV4IDE2NTBjODY2YWM4MDM2Y2FmOGM1N2U0
MmM2NWYwNmU1MTFlNWM0MDkuLjBmNzU1ODNmMWQxYjA0MDVlMzlhMDkyYTQ3MmY5NzkxYmU3NTk2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCkBAIC0xNjcsNiArMTY3LDkgQEAgcHJp
dmF0ZToKIAogICAgIFRpbGluZ0RhdGEgbV90aWxpbmdEYXRhOwogCisgICAgLy8gV2hldGhlciB0
aGUgdGlsZXIgd2lsbCB1c2UgR0xfQ0hST01JVU1fbWFwX3N1YiBmb3IgdGV4dHVyZSB1cGxvYWRz
LgorICAgIGJvb2wgbV91c2VNYXBTdWJGb3JVcGxvYWRzOworCiAgICAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBtX2xheWVyUmVuZGVyZXI7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92132</attachid>
            <date>2011-05-03 14:29:57 -0700</date>
            <delta_ts>2011-05-09 18:53:50 -0700</delta_ts>
            <desc>Remove tracing, use map in hud.</desc>
            <filename>bug-60008-20110503142956.patch</filename>
            <type>text/plain</type>
            <size>10355</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODUzNjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZDg5ODJjYjRjNjFjMmQ1
ZDVkNjA3OWNmMzRmZTQ4YjRhYjQ1ODU2Li5jOTFiZTZlODZjNjA3ZGQ3NTc5NzZhYzc0ODExMTg2
NGFiM2E4YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMDIgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRp
bGUgdXBsb2FkcyBpZiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDA4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGVGcm9tUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNC0yOSAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBidWlsZGZp
eCBhZnRlciByODUzNDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCBjNzhj
MTM3ZjhjZDY4MmIxYmY4ZWZjYjBmYTUyOGYxOTlmMDBkNGE0Li5iZjAzMTRlMGQwYmY1M2NmY2E4
MjEwNWI1MzFmYmI4OGExMGU1MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogCisj
aW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtNTUsNiArNTYsOSBAQCBMYXllclRpbGVyQ2hyb21pdW06Okxh
eWVyVGlsZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNv
bgogICAgICwgbV90aWxpbmdEYXRhKG1heCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWln
aHQoKSksIDAsIDAsIGJvcmRlciA9PSBIYXNCb3JkZXJUZXhlbHMpCiAgICAgLCBtX2xheWVyUmVu
ZGVyZXIobGF5ZXJSZW5kZXJlcikKIHsKKyAgICBtX3VzZU1hcFN1YkZvclVwbG9hZHMgPSBsYXll
clJlbmRlcmVyQ29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9tYXBfc3ViIik7CisgICAgaWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykKKyAgICAgICAgbGF5
ZXJSZW5kZXJlckNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9D
SFJPTUlVTV9tYXBfc3ViIik7CiAgICAgc2V0VGlsZVNpemUodGlsZVNpemUpOwogfQogCkBAIC04
NCw3ICs4OCw4IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6ZTsKLSAg
ICBtX3RpbGVQaXhlbHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fdGlsZVNpemUud2lk
dGgoKSAqIG1fdGlsZVNpemUuaGVpZ2h0KCkgKiA0XSk7CisgICAgaWYgKG1fdXNlTWFwU3ViRm9y
VXBsb2FkcykKKyAgICAgICAgbV90aWxlUGl4ZWxzID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhf
dFttX3RpbGVTaXplLndpZHRoKCkgKiBtX3RpbGVTaXplLmhlaWdodCgpICogNF0pOwogICAgIG1f
dGlsaW5nRGF0YS5zZXRNYXhUZXh0dXJlU2l6ZShtYXgoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKSk7CiB9CiAKQEAgLTM0MSwyNyArMzQ2LDQ2IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVt
Ojp1cGRhdGVGcm9tUGl4ZWxzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRS
CiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBw
YWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAg
ICAgY29uc3QgdWludDhfdCogcGl4ZWxTb3VyY2U7Ci0gICAgICAgICAgICBpZiAocGFpbnRSZWN0
LndpZHRoKCkgPT0gc291cmNlUmVjdC53aWR0aCgpICYmICFwYWludE9mZnNldC54KCkpCi0gICAg
ICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmcGFpbnRQaXhlbHNbNCAqIHBhaW50T2Zmc2V0Lnko
KSAqIHBhaW50UmVjdC53aWR0aCgpXTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIC8vIFN0cmlkZXMgbm90IGVxdWFsLCBzbyBkbyBhIHJvdy1ieS1yb3cgbWVtY3B5IGZyb20g
dGhlCi0gICAgICAgICAgICAgICAgLy8gcGFpbnQgcmVzdWx0cyBpbnRvIGEgdGVtcCBidWZmZXIg
Zm9yIHVwbG9hZGluZy4KLSAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBk
ZXN0UmVjdC5oZWlnaHQoKTsgKytyb3cpCi0gICAgICAgICAgICAgICAgICAgIG1lbWNweSgmbV90
aWxlUGl4ZWxzW2Rlc3RSZWN0LndpZHRoKCkgKiA0ICogcm93XSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZwYWludFBpeGVsc1s0ICogKHBhaW50T2Zmc2V0LngoKSArIChwYWludE9mZnNl
dC55KCkgKyByb3cpICogcGFpbnRSZWN0LndpZHRoKCkpXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiA0KTsKLQotICAgICAgICAgICAgICAgIHBpeGVsU291
cmNlID0gJm1fdGlsZVBpeGVsc1swXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGls
ZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZSgpOwotCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50
IGZpbHRlciA9IG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNE
OjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICAgICAgICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKICAg
ICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVS
LCBmaWx0ZXIpKTsKIAotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1Yklt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVz
dFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNv
dXJjZSkpOworICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5iaW5kVGV4dHVyZSgpOworCisg
ICAgICAgICAgICBpZiAobV91c2VNYXBTdWJGb3JVcGxvYWRzKSB7CisgICAgICAgICAgICAgICAg
Ly8gVXBsb2FkIHRpbGUgZGF0YSB2aWEgYSBtYXBwZWQgdHJhbnNmZXIgYnVmZmVyCisgICAgICAg
ICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAg
ICAgICAgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVu
c2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRl
c3RSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHBpeGVsRGVzdCk7CisgICAgICAgICAgICAgICAgaWYgKHBh
aW50UmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhcGFpbnRPZmZzZXQueCgp
KQorICAgICAgICAgICAgICAgICAgICBtZW1jcHkocGl4ZWxEZXN0LCAmcGFpbnRQaXhlbHNbNCAq
IHBhaW50T2Zmc2V0LnkoKSAqIHBhaW50UmVjdC53aWR0aCgpXSwgcGFpbnRSZWN0LndpZHRoKCkg
KiBkZXN0UmVjdC5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93IG1l
bWNweSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBwYWludCByZXN1bHRzIGludG8g
dGhlIHBpeGVsRGVzdAorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cg
PCBkZXN0UmVjdC5oZWlnaHQoKTsgKytyb3cpCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1j
cHkoJnBpeGVsRGVzdFtkZXN0UmVjdC53aWR0aCgpICogNCAqIHJvd10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnBhaW50UGl4ZWxzWzQgKiAocGFpbnRPZmZzZXQueCgpICsgKHBh
aW50T2Zmc2V0LnkoKSArIHJvdykgKiBwYWludFJlY3Qud2lkdGgoKSldLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiA0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0ocGl4ZWxEZXN0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCogcGl4ZWxTb3VyY2U7CisgICAgICAgICAgICAgICAgaWYgKHBhaW50UmVjdC53
aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhcGFpbnRPZmZzZXQueCgpKQorICAgICAg
ICAgICAgICAgICAgICBwaXhlbFNvdXJjZSA9ICZwYWludFBpeGVsc1s0ICogcGFpbnRPZmZzZXQu
eSgpICogcGFpbnRSZWN0LndpZHRoKCldOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93IG1l
bWNweSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBwYWludCByZXN1bHRzIGludG8g
YSB0ZW1wIGJ1ZmZlciBmb3IgdXBsb2FkaW5nLgorICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCByb3cgPSAwOyByb3cgPCBkZXN0UmVjdC5oZWlnaHQoKTsgKytyb3cpCisgICAgICAgICAgICAg
ICAgICAgICAgICBtZW1jcHkoJm1fdGlsZVBpeGVsc1tkZXN0UmVjdC53aWR0aCgpICogNCAqIHJv
d10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhaW50UGl4ZWxzWzQgKiAocGFp
bnRPZmZzZXQueCgpICsgKHBhaW50T2Zmc2V0LnkoKSArIHJvdykgKiBwYWludFJlY3Qud2lkdGgo
KSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LndpZHRoKCkgKiA0
KTsKKworICAgICAgICAgICAgICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3RpbGVQaXhlbHNbMF07
CisgICAgICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCksIGRlc3RSZWN0LndpZHRoKCksIGRlc3RSZWN0LmhlaWdo
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIHBpeGVsU291cmNlKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRpbGUt
PmNsZWFyRGlydHkoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRl
eCAxNjUwYzg2NmFjODAzNmNhZjhjNTdlNDJjNjVmMDZlNTExZTVjNDA5Li4wZjc1NTgzZjFkMWIw
NDA1ZTM5YTA5MmE0NzJmOTc5MWJlNzU5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
aApAQCAtMTY3LDYgKzE2Nyw5IEBAIHByaXZhdGU6CiAKICAgICBUaWxpbmdEYXRhIG1fdGlsaW5n
RGF0YTsKIAorICAgIC8vIFdoZXRoZXIgdGhlIHRpbGVyIHdpbGwgdXNlIEdMX0NIUk9NSVVNX21h
cF9zdWIgZm9yIHRleHR1cmUgdXBsb2Fkcy4KKyAgICBib29sIG1fdXNlTWFwU3ViRm9yVXBsb2Fk
czsKKwogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbV9sYXllclJlbmRlcmVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NIZWFkc1VwRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAppbmRleCA5MWY4ZDRlOWQwZWExZmYxOGY1
ZThiYTdhZmQ5ZDAxZWE3ZGNkZWNiLi5iMWUwZjA0ZGIwODMyNTU1NWZhOWUwMmY2ZjA5NDVkYjQ1
YzFjNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtMjcsNiArMjcs
NyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlICJDQ0hlYWRz
VXBEaXNwbGF5LmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgpAQCAtNjksNiArNzAsMTAgQEAgQ0NIZWFkc1VwRGlzcGxheTo6Q0NI
ZWFkc1VwRGlzcGxheShMYXllclJlbmRlcmVyQ2hyb21pdW0qIG93bmVyKQogCiAgICAgbV9zbWFs
bEZvbnQgPSBhZG9wdFB0cihuZXcgRm9udChzbWFsbEZvbnREZXNjLCAwLCAwKSk7CiAgICAgbV9z
bWFsbEZvbnQtPnVwZGF0ZSgwKTsKKworICAgIG1fdXNlTWFwU3ViRm9yVXBsb2FkcyA9IG1fbGF5
ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJP
TUlVTV9tYXBfc3ViIik7CisgICAgaWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykKKyAgICAgICAg
bV9sYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogfQogCiBDQ0hlYWRzVXBEaXNwbGF5Ojp+Q0NIZWFk
c1VwRGlzcGxheSgpCkBAIC0xMDYsNyArMTExLDEzIEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6
ZHJhdygpCiAgICAgICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmY2FudmFz
KTsKIAogICAgICAgICBtX2h1ZFRleHR1cmUtPmJpbmRUZXh0dXJlKCk7Ci0gICAgICAgIEdMQyhj
b250ZXh0LmdldCgpLCBjb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgY2FudmFzLnNpemUoKS53aWR0aCgp
LCBjYW52YXMuc2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tlci5waXhlbHMoKSkpOworICAgICAg
ICBpZiAobV91c2VNYXBTdWJGb3JVcGxvYWRzKSB7CisgICAgICAgICAgICBFeHRlbnNpb25zM0RD
aHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4o
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIHBpeGVsRGVz
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hS
T01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGh1ZFNpemUud2lk
dGgoKSwgaHVkU2l6ZS5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05M
WSkpOworICAgICAgICAgICAgbWVtY3B5KHBpeGVsRGVzdCwgbG9ja2VyLnBpeGVscygpLCBodWRT
aXplLndpZHRoKCkgKiBodWRTaXplLmhlaWdodCgpICogNCk7CisgICAgICAgICAgICBleHRlbnNp
b25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShwaXhlbERlc3QpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEdMQyhjb250ZXh0LmdldCgpLCBjb250ZXh0LT50ZXhJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
Y2FudmFzLnNpemUoKS53aWR0aCgpLCBjYW52YXMuc2l6ZSgpLmhlaWdodCgpLCAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGxvY2tl
ci5waXhlbHMoKSkpOwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIEhVRCBvbnRvIHRoZSBkZWZh
dWx0IHJlbmRlciBzdXJmYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCmluZGV4IGEw
OWZkMTUzYjg4ZTI0ODRkYTkyMjNmMjZkMjIwMjY4YjZiZTIyMjAuLjFkN2MxZTZjNzY5M2NmNjg1
YWY4MzM5N2NkY2Y3NWM2YTUwZDQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgK
QEAgLTY5LDYgKzY5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBo
aWNzQ29udGV4dCosIGludCB0b3AsIGludCBoZWlnaHQpOwogICAgIHZvaWQgZHJhd1BsYXRmb3Jt
TGF5ZXJUcmVlKEdyYXBoaWNzQ29udGV4dCosIGludCB0b3ApOwogCisgICAgc3RhdGljIGNvbnN0
IGludCBrQmVnaW5GcmFtZUhpc3RvcnlTaXplID0gNjQ7CisgICAgZG91YmxlIG1fYmVnaW5UaW1l
SGlzdG9yeUluU2VjW2tCZWdpbkZyYW1lSGlzdG9yeVNpemVdOwogCiAgICAgaW50IG1fY3VycmVu
dEZyYW1lTnVtYmVyOwogCkBAIC03OCwxNCArODAsMTMgQEAgcHJpdmF0ZToKIAogICAgIExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbV9sYXllclJlbmRlcmVyOwogCi0gICAgc3RhdGljIGNvbnN0IGlu
dCBrQmVnaW5GcmFtZUhpc3RvcnlTaXplID0gNjQ7Ci0gICAgZG91YmxlIG1fYmVnaW5UaW1lSGlz
dG9yeUluU2VjW2tCZWdpbkZyYW1lSGlzdG9yeVNpemVdOwotCiAgICAgYm9vbCBtX3Nob3dGUFND
b3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CiAKICAgICBPd25QdHI8
Rm9udD4gbV9zbWFsbEZvbnQ7CiAgICAgT3duUHRyPEZvbnQ+IG1fbWVkaXVtRm9udDsKKworICAg
IGJvb2wgbV91c2VNYXBTdWJGb3JVcGxvYWRzOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92905</attachid>
            <date>2011-05-09 18:53:53 -0700</date>
            <delta_ts>2011-05-11 16:06:49 -0700</delta_ts>
            <desc>Nits.</desc>
            <filename>bug-60008-20110509185351.patch</filename>
            <type>text/plain</type>
            <size>9812</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYwNjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYWQ2YzJiOTg3MTY5MmEx
NzQwZmQyMDQ5ZDNkMGU1MjdlNDg2NTk4Li4zM2E2YjMxYTQzNmIyZjlmNzU0MWUzNmI2ZDQxYmU2
NDY5ZDRmNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMDIgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRp
bGUgdXBsb2FkcyBpZiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDA4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGVGcm9tUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNS0wOSAgQWJoaXNoZWsgQXJ5YSAg
PGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCBhMmNiZTdlZjRkYTgxODRiMTNj
OWViNmM3YTcxNjg1ZDE3MTc1OGIxLi43M2FjNTNhMzYzYmZlMjI0YWQyNWVhYTZjNjFlNTEwYjc4
MDk0MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkxheWVyVGlsZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgpAQCAtNTUsNiArNTYsOSBAQCBMYXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1
bShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbgogICAgICwgbV90aWxp
bmdEYXRhKG1heCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSksIDAsIDAsIGJv
cmRlciA9PSBIYXNCb3JkZXJUZXhlbHMpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIobGF5ZXJSZW5k
ZXJlcikKIHsKKyAgICBtX3VzZU1hcFN1YkZvclVwbG9hZHMgPSBsYXllclJlbmRlcmVyQ29udGV4
dCgpLT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7Cisg
ICAgaWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykKKyAgICAgICAgbGF5ZXJSZW5kZXJlckNvbnRl
eHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9tYXBfc3Vi
Iik7CiAgICAgc2V0VGlsZVNpemUodGlsZVNpemUpOwogfQogCkBAIC04NCw3ICs4OCw4IEBAIHZv
aWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6ZTsKLSAgICBtX3RpbGVQaXhlbHMg
PSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fdGlsZVNpemUud2lkdGgoKSAqIG1fdGlsZVNp
emUuaGVpZ2h0KCkgKiA0XSk7CisgICAgaWYgKCFtX3VzZU1hcFN1YkZvclVwbG9hZHMpCisgICAg
ICAgIG1fdGlsZVBpeGVscyA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbbV90aWxlU2l6ZS53
aWR0aCgpICogbV90aWxlU2l6ZS5oZWlnaHQoKSAqIDRdKTsKICAgICBtX3RpbGluZ0RhdGEuc2V0
TWF4VGV4dHVyZVNpemUobWF4KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwogfQogCkBA
IC0zNDEsMjcgKzM0Niw0NiBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlRnJvbVBp
eGVscyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50UgogICAgICAgICAgICAg
aWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gcGFpbnRSZWN0LmhlaWdo
dCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHBpeGVsU291cmNlOwotICAgICAgICAgICAgaWYgKHBhaW50UmVjdC53aWR0aCgpID09IHNv
dXJjZVJlY3Qud2lkdGgoKSAmJiAhcGFpbnRPZmZzZXQueCgpKQotICAgICAgICAgICAgICAgIHBp
eGVsU291cmNlID0gJnBhaW50UGl4ZWxzWzQgKiBwYWludE9mZnNldC55KCkgKiBwYWludFJlY3Qu
d2lkdGgoKV07Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTdHJpZGVz
IG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93IG1lbWNweSBmcm9tIHRoZQotICAgICAgICAg
ICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byBhIHRlbXAgYnVmZmVyIGZvciB1cGxvYWRpbmcu
Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0
KCk7ICsrcm93KQotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJm1fdGlsZVBpeGVsc1tkZXN0
UmVjdC53aWR0aCgpICogNCAqIHJvd10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFp
bnRQaXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFpbnRPZmZzZXQueSgpICsgcm93KSAq
IHBhaW50UmVjdC53aWR0aCgpKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVj
dC53aWR0aCgpICogNCk7Ci0KLSAgICAgICAgICAgICAgICBwaXhlbFNvdXJjZSA9ICZtX3RpbGVQ
aXhlbHNbMF07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+
YmluZFRleHR1cmUoKTsKLQogICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3Rp
bGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3Jh
cGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CiAgICAgICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CiAK
LSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSwgZGVz
dFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgcGl4ZWxTb3VyY2UpKTsKKyAgICAg
ICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoKTsKKworICAgICAgICAgICAgaWYg
KG1fdXNlTWFwU3ViRm9yVXBsb2FkcykgeworICAgICAgICAgICAgICAgIC8vIFVwbG9hZCB0aWxl
IGRhdGEgdmlhIGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgorICAgICAgICAgICAgICAgIEV4dGVu
c2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICAgICAgICAgIHVpbnQ4
X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RS
ZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworICAgICAgICAgICAgICAg
IEFTU0VSVChwaXhlbERlc3QpOworICAgICAgICAgICAgICAgIGlmIChwYWludFJlY3Qud2lkdGgo
KSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIXBhaW50T2Zmc2V0LngoKSkKKyAgICAgICAgICAg
ICAgICAgICAgbWVtY3B5KHBpeGVsRGVzdCwgJnBhaW50UGl4ZWxzWzQgKiBwYWludE9mZnNldC55
KCkgKiBwYWludFJlY3Qud2lkdGgoKV0sIHBhaW50UmVjdC53aWR0aCgpICogZGVzdFJlY3QuaGVp
Z2h0KCkgKiA0KTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gU3RyaWRlcyBub3QgZXF1YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUK
KyAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQgcmVzdWx0cyBpbnRvIHRoZSBwaXhlbERlc3QK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVp
Z2h0KCk7ICsrcm93KQorICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZwaXhlbERlc3Rb
ZGVzdFJlY3Qud2lkdGgoKSAqIDQgKiByb3ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZwYWludFBpeGVsc1s0ICogKHBhaW50T2Zmc2V0LngoKSArIChwYWludE9mZnNldC55KCkg
KyByb3cpICogcGFpbnRSZWN0LndpZHRoKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0UmVjdC53aWR0aCgpICogNCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKHBpeGVsRGVzdCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBp
eGVsU291cmNlOworICAgICAgICAgICAgICAgIGlmIChwYWludFJlY3Qud2lkdGgoKSA9PSBzb3Vy
Y2VSZWN0LndpZHRoKCkgJiYgIXBhaW50T2Zmc2V0LngoKSkKKyAgICAgICAgICAgICAgICAgICAg
cGl4ZWxTb3VyY2UgPSAmcGFpbnRQaXhlbHNbNCAqIHBhaW50T2Zmc2V0LnkoKSAqIHBhaW50UmVj
dC53aWR0aCgpXTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gU3RyaWRlcyBub3QgZXF1YWwsIHNvIGRvIGEgcm93LWJ5LXJvdyBtZW1jcHkgZnJvbSB0aGUK
KyAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQgcmVzdWx0cyBpbnRvIGEgdGVtcCBidWZmZXIg
Zm9yIHVwbG9hZGluZy4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93
IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQorICAgICAgICAgICAgICAgICAgICAgICAgbWVt
Y3B5KCZtX3RpbGVQaXhlbHNbZGVzdFJlY3Qud2lkdGgoKSAqIDQgKiByb3ddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZwYWludFBpeGVsc1s0ICogKHBhaW50T2Zmc2V0LngoKSAr
IChwYWludE9mZnNldC55KCkgKyByb3cpICogcGFpbnRSZWN0LndpZHRoKCkpXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICogNCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV90aWxlUGl4ZWxzWzBdOworICAgICAgICAgICAg
ICAgIH0KKworCisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1Yklt
YWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVz
dFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbFNv
dXJjZSkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKaW5kZXggMTY1MGM4NjZhYzgw
MzZjYWY4YzU3ZTQyYzY1ZjA2ZTUxMWU1YzQwOS4uMGY3NTU4M2YxZDFiMDQwNWUzOWEwOTJhNDcy
Zjk3OTFiZTc1OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKQEAgLTE2Nyw2ICsx
NjcsOSBAQCBwcml2YXRlOgogCiAgICAgVGlsaW5nRGF0YSBtX3RpbGluZ0RhdGE7CiAKKyAgICAv
LyBXaGV0aGVyIHRoZSB0aWxlciB3aWxsIHVzZSBHTF9DSFJPTUlVTV9tYXBfc3ViIGZvciB0ZXh0
dXJlIHVwbG9hZHMuCisgICAgYm9vbCBtX3VzZU1hcFN1YkZvclVwbG9hZHM7CisKICAgICBMYXll
clJlbmRlcmVyQ2hyb21pdW0qIG1fbGF5ZXJSZW5kZXJlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggOTFmOGQ0ZTlkMGVhMWZmMThmNWU4YmE3YWZkOWQwMWVh
N2RjZGVjYi4uYjFlMGYwNGRiMDgzMjU1NTVmYTllMDJmNmYwOTQ1ZGI0NWMxYzZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxheS5oIgog
CisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNsdWRlICJGb250LmgiCiAj
aW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKQEAgLTY5LDYgKzcwLDEwIEBAIENDSGVhZHNVcERpc3BsYXk6OkNDSGVhZHNVcERpc3BsYXko
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBvd25lcikKIAogICAgIG1fc21hbGxGb250ID0gYWRvcHRQ
dHIobmV3IEZvbnQoc21hbGxGb250RGVzYywgMCwgMCkpOwogICAgIG1fc21hbGxGb250LT51cGRh
dGUoMCk7CisKKyAgICBtX3VzZU1hcFN1YkZvclVwbG9hZHMgPSBtX2xheWVyUmVuZGVyZXItPmNv
bnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fbWFwX3N1YiIp
OworICAgIGlmIChtX3VzZU1hcFN1YkZvclVwbG9hZHMpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJl
ci0+Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVN
X21hcF9zdWIiKTsKIH0KIAogQ0NIZWFkc1VwRGlzcGxheTo6fkNDSGVhZHNVcERpc3BsYXkoKQpA
QCAtMTA2LDcgKzExMSwxMyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoKQogICAgICAg
ICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJmNhbnZhcyk7CiAKICAgICAgICAg
bV9odWRUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOwotICAgICAgICBHTEMoY29udGV4dC5nZXQoKSwg
Y29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIGNhbnZhcy5zaXplKCkud2lkdGgoKSwgY2FudmFzLnNpemUo
KS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsKKyAgICAgICAgaWYgKG1fdXNlTWFw
U3ViRm9yVXBsb2FkcykgeworICAgICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKSk7CisgICAgICAgICAgICB1aW50OF90KiBwaXhlbERlc3QgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBodWRTaXplLndpZHRoKCksIGh1ZFNpemUu
aGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICAgICAg
ICAgIG1lbWNweShwaXhlbERlc3QsIGxvY2tlci5waXhlbHMoKSwgaHVkU2l6ZS53aWR0aCgpICog
aHVkU2l6ZS5oZWlnaHQoKSAqIDQpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy0+dW5tYXBUZXhT
dWJJbWFnZTJEQ0hST01JVU0ocGl4ZWxEZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBHTEMoY29udGV4dC5nZXQoKSwgY29udGV4dC0+dGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIGNhbnZhcy5zaXplKCku
d2lkdGgoKSwgY2FudmFzLnNpemUoKS5oZWlnaHQoKSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBsb2NrZXIucGl4ZWxzKCkpKTsK
ICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBIVUQgb250byB0aGUgZGVmYXVsdCByZW5kZXIgc3Vy
ZmFjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAppbmRleCBhMDlmZDE1M2I4OGUyNDg0
ZGE5MjIzZjI2ZDIyMDI2OGI2YmUyMjIwLi5kNjQ4NzhkYTlhYzVmODRiOTVjZDIwZTI0MjZkYmZk
ZTk3MzZmMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCkBAIC04Niw2ICs4Niw4
IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8Rm9udD4gbV9zbWFsbEZvbnQ7CiAgICAgT3duUHRy
PEZvbnQ+IG1fbWVkaXVtRm9udDsKKworICAgIGJvb2wgbV91c2VNYXBTdWJGb3JVcGxvYWRzOwog
fTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93205</attachid>
            <date>2011-05-11 16:06:54 -0700</date>
            <delta_ts>2011-05-11 19:16:56 -0700</delta_ts>
            <desc>Check for mapsub once.</desc>
            <filename>bug-60008-20110511160652.patch</filename>
            <type>text/plain</type>
            <size>11562</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYxNjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhN2Q3ZTAyN2U2ZjQwNzUz
OGQwN2NlYzhjZjQ4OTA5ZTY2N2EwZjQ5Li43YmQ4YzQwMDVlYzU5NGEyY2Y1ODI1YTBmYmQyZGUx
ODVjZWJjMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDUtMDIgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG1hcFRleFN1YkltYWdlMkQgZm9yIHRp
bGUgdXBsb2FkcyBpZiBhdmFpbGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDA4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
ckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
aWxlckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9t
aXVtOjp1cGRhdGVGcm9tUGl4ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNS0wNiAgQnJldHQgV2lsc29uICA8
YnJldHR3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMDlkODM2MDE5NjE4MGQy
ZjViMTQ4MWVmMzRiMDFkNWYzYWU3ZDkyNC4uMzk0N2I0N2NkZTRiMWZkNzNmMzMyYTY4YTJmNWEz
OWNlYTM1ZWY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0x
MjAsNiArMTIwLDkgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21p
dW0oUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGUKICAgICAsIG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UoMCkKIHsKICAgICBtX2NvbnRleHRTdXBwb3J0c0xhdGNoID0gbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9sYXRjaCIpOworICAgIG1f
Y29udGV4dFN1cHBvcnRzTWFwU3ViID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9tYXBfc3ViIik7CisgICAgaWYgKG1fY29udGV4dFN1cHBvcnRzTWFw
U3ViKQorICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgi
R0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIG1faGFyZHdhcmVDb21wb3NpdGluZyA9IGluaXRp
YWxpemVTaGFyZWRPYmplY3RzKCk7CiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXll
clRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBJbnRTaXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxl
ckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CiAgICAgQVNTRVJUKG1fcm9vdExheWVyQ29udGVu
dFRpbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggMzk5NTYyZDYz
MjJmMzk4ZGY5MjdkZTUzYzcxYTFmYzQxOGFkMGIyYi4uM2M5YzZlYTdjNGM4YjA5MjE4ODNkZDYz
NWFlMGM1MDRkYTA4MGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAg
LTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIH5MYXllclJlbmRlcmVyQ2hyb21pdW0oKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCk7CisgICAgYm9vbCBjb250ZXh0U3VwcG9y
dHNNYXBTdWIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTdXBwb3J0c01hcFN1YjsgfQogCiAg
ICAgdm9pZCBpbnZhbGlkYXRlUm9vdExheWVyUmVjdChjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
OwogCkBAIC0yMzMsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRDb250ZXh0
c1dlcmVDb3BpZWQ7CiAKICAgICBib29sIG1fY29udGV4dFN1cHBvcnRzTGF0Y2g7CisgICAgYm9v
bCBtX2NvbnRleHRTdXBwb3J0c01hcFN1YjsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSog
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAK
aW5kZXggYTJjYmU3ZWY0ZGE4MTg0YjEzYzllYjZjN2E3MTY4NWQxNzE3NThiMS4uYmY1Y2NhNTQ1
ODAwMjNiOWQ1MzY3ZGM1MWE1ZmQ1MjBiYTBmNzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJMYXllclRpbGVyQ2hyb21p
dW0uaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAgLTUzLDYgKzU0LDcgQEAgUGFzc093blB0cjxM
YXllclRpbGVyQ2hyb21pdW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSoKIExheWVyVGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKICAgICA6IG1fc2tpcHNEcmF3KGZhbHNlKQogICAg
ICwgbV90aWxpbmdEYXRhKG1heCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSks
IDAsIDAsIGJvcmRlciA9PSBIYXNCb3JkZXJUZXhlbHMpCisgICAgLCBtX3VzZU1hcFN1YkZvclVw
bG9hZHMobGF5ZXJSZW5kZXJlci0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpCiAgICAgLCBtX2xh
eWVyUmVuZGVyZXIobGF5ZXJSZW5kZXJlcikKIHsKICAgICBzZXRUaWxlU2l6ZSh0aWxlU2l6ZSk7
CkBAIC04NCw3ICs4Niw4IEBAIHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRUaWxlU2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogICAgIHJlc2V0KCk7CiAKICAgICBtX3RpbGVTaXplID0gc2l6
ZTsKLSAgICBtX3RpbGVQaXhlbHMgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W21fdGlsZVNp
emUud2lkdGgoKSAqIG1fdGlsZVNpemUuaGVpZ2h0KCkgKiA0XSk7CisgICAgaWYgKCFtX3VzZU1h
cFN1YkZvclVwbG9hZHMpCisgICAgICAgIG1fdGlsZVBpeGVscyA9IGFkb3B0QXJyYXlQdHIobmV3
IHVpbnQ4X3RbbV90aWxlU2l6ZS53aWR0aCgpICogbV90aWxlU2l6ZS5oZWlnaHQoKSAqIDRdKTsK
ICAgICBtX3RpbGluZ0RhdGEuc2V0TWF4VGV4dHVyZVNpemUobWF4KHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSkpOwogfQogCkBAIC0zNDEsMjcgKzM0NCw0NiBAQCB2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6dXBkYXRlRnJvbVBpeGVscyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50UgogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHBpeGVsU291cmNlOwotICAgICAgICAgICAgaWYgKHBh
aW50UmVjdC53aWR0aCgpID09IHNvdXJjZVJlY3Qud2lkdGgoKSAmJiAhcGFpbnRPZmZzZXQueCgp
KQotICAgICAgICAgICAgICAgIHBpeGVsU291cmNlID0gJnBhaW50UGl4ZWxzWzQgKiBwYWludE9m
ZnNldC55KCkgKiBwYWludFJlY3Qud2lkdGgoKV07Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAvLyBTdHJpZGVzIG5vdCBlcXVhbCwgc28gZG8gYSByb3ctYnktcm93IG1lbWNw
eSBmcm9tIHRoZQotICAgICAgICAgICAgICAgIC8vIHBhaW50IHJlc3VsdHMgaW50byBhIHRlbXAg
YnVmZmVyIGZvciB1cGxvYWRpbmcuCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsg
cm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQotICAgICAgICAgICAgICAgICAgICBtZW1j
cHkoJm1fdGlsZVBpeGVsc1tkZXN0UmVjdC53aWR0aCgpICogNCAqIHJvd10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAmcGFpbnRQaXhlbHNbNCAqIChwYWludE9mZnNldC54KCkgKyAocGFp
bnRPZmZzZXQueSgpICsgcm93KSAqIHBhaW50UmVjdC53aWR0aCgpKV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICogNCk7Ci0KLSAgICAgICAgICAgICAgICBw
aXhlbFNvdXJjZSA9ICZtX3RpbGVQaXhlbHNbMF07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUoKTsKLQogICAgICAgICAgICAgY29uc3Qg
R0MzRGludCBmaWx0ZXIgPSBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7CiAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVy
KSk7CiAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFH
X0ZJTFRFUiwgZmlsdGVyKSk7CiAKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50
ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBkZXN0UmVjdC54
KCksIGRlc3RSZWN0LnkoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
cGl4ZWxTb3VyY2UpKTsKKyAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+YmluZFRleHR1cmUo
KTsKKworICAgICAgICAgICAgaWYgKG1fdXNlTWFwU3ViRm9yVXBsb2FkcykgeworICAgICAgICAg
ICAgICAgIC8vIFVwbG9hZCB0aWxlIGRhdGEgdmlhIGEgbWFwcGVkIHRyYW5zZmVyIGJ1ZmZlcgor
ICAgICAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGlj
X2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOwor
ICAgICAgICAgICAgICAgIHVpbnQ4X3QqIHBpeGVsRGVzdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0
aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05M
WSkpOworICAgICAgICAgICAgICAgIEFTU0VSVChwaXhlbERlc3QpOworICAgICAgICAgICAgICAg
IGlmIChwYWludFJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIXBhaW50T2Zm
c2V0LngoKSkKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHBpeGVsRGVzdCwgJnBhaW50UGl4
ZWxzWzQgKiBwYWludE9mZnNldC55KCkgKiBwYWludFJlY3Qud2lkdGgoKV0sIHBhaW50UmVjdC53
aWR0aCgpICogZGVzdFJlY3QuaGVpZ2h0KCkgKiA0KTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWwsIHNvIGRvIGEgcm93LWJ5
LXJvdyBtZW1jcHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQgcmVzdWx0
cyBpbnRvIHRoZSBwaXhlbERlc3QKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0g
MDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQorICAgICAgICAgICAgICAgICAgICAg
ICAgbWVtY3B5KCZwaXhlbERlc3RbZGVzdFJlY3Qud2lkdGgoKSAqIDQgKiByb3ddLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZwYWludFBpeGVsc1s0ICogKHBhaW50T2Zmc2V0Lngo
KSArIChwYWludE9mZnNldC55KCkgKyByb3cpICogcGFpbnRSZWN0LndpZHRoKCkpXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0aCgpICogNCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2Uy
RENIUk9NSVVNKHBpeGVsRGVzdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIHBpeGVsU291cmNlOworICAgICAgICAgICAgICAgIGlmIChwYWlu
dFJlY3Qud2lkdGgoKSA9PSBzb3VyY2VSZWN0LndpZHRoKCkgJiYgIXBhaW50T2Zmc2V0LngoKSkK
KyAgICAgICAgICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmcGFpbnRQaXhlbHNbNCAqIHBhaW50
T2Zmc2V0LnkoKSAqIHBhaW50UmVjdC53aWR0aCgpXTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gU3RyaWRlcyBub3QgZXF1YWwsIHNvIGRvIGEgcm93LWJ5
LXJvdyBtZW1jcHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFpbnQgcmVzdWx0
cyBpbnRvIGEgdGVtcCBidWZmZXIgZm9yIHVwbG9hZGluZy4KKyAgICAgICAgICAgICAgICAgICAg
Zm9yIChpbnQgcm93ID0gMDsgcm93IDwgZGVzdFJlY3QuaGVpZ2h0KCk7ICsrcm93KQorICAgICAg
ICAgICAgICAgICAgICAgICAgbWVtY3B5KCZtX3RpbGVQaXhlbHNbZGVzdFJlY3Qud2lkdGgoKSAq
IDQgKiByb3ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYWludFBpeGVsc1s0
ICogKHBhaW50T2Zmc2V0LngoKSArIChwYWludE9mZnNldC55KCkgKyByb3cpICogcGFpbnRSZWN0
LndpZHRoKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVjdC53aWR0
aCgpICogNCk7CisKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxTb3VyY2UgPSAmbV90aWxlUGl4
ZWxzWzBdOworICAgICAgICAgICAgICAgIH0KKworCisgICAgICAgICAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0UmVj
dC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBwaXhlbFNvdXJjZSkpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICB0aWxlLT5jbGVhckRpcnR5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVt
LmgKaW5kZXggMTY1MGM4NjZhYzgwMzZjYWY4YzU3ZTQyYzY1ZjA2ZTUxMWU1YzQwOS4uMGY3NTU4
M2YxZDFiMDQwNWUzOWEwOTJhNDcyZjk3OTFiZTc1OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNo
cm9taXVtLmgKQEAgLTE2Nyw2ICsxNjcsOSBAQCBwcml2YXRlOgogCiAgICAgVGlsaW5nRGF0YSBt
X3RpbGluZ0RhdGE7CiAKKyAgICAvLyBXaGV0aGVyIHRoZSB0aWxlciB3aWxsIHVzZSBHTF9DSFJP
TUlVTV9tYXBfc3ViIGZvciB0ZXh0dXJlIHVwbG9hZHMuCisgICAgYm9vbCBtX3VzZU1hcFN1YkZv
clVwbG9hZHM7CisKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIG1fbGF5ZXJSZW5kZXJlcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggOTFmOGQ0ZTlkMGVh
MWZmMThmNWU4YmE3YWZkOWQwMWVhN2RjZGVjYi4uYWZjNzlmYWM2MzhhN2YzMTYyOGNlNDNjZTc0
M2ZmNDlmOTcyZjVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAi
Q0NIZWFkc1VwRGlzcGxheS5oIgogCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTUwLDYgKzUxLDcgQEAgQ0NIZWFkc1VwRGlzcGxh
eTo6Q0NIZWFkc1VwRGlzcGxheShMYXllclJlbmRlcmVyQ2hyb21pdW0qIG93bmVyKQogICAgICwg
bV9sYXllclJlbmRlcmVyKG93bmVyKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAg
ICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV91c2VNYXBTdWJGb3JV
cGxvYWRzKG93bmVyLT5jb250ZXh0U3VwcG9ydHNNYXBTdWIoKSkKIHsKICAgICBtX2JlZ2luVGlt
ZUhpc3RvcnlJblNlY1swXSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgbV9iZWdpblRpbWVIaXN0b3J5
SW5TZWNbMV0gPSBtX2JlZ2luVGltZUhpc3RvcnlJblNlY1swXTsKQEAgLTEwNiw3ICsxMDgsMTMg
QEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkKICAgICAgICAgUGxhdGZvcm1DYW52YXM6
OkF1dG9Mb2NrZXIgbG9ja2VyKCZjYW52YXMpOwogCiAgICAgICAgIG1faHVkVGV4dHVyZS0+Ymlu
ZFRleHR1cmUoKTsKLSAgICAgICAgR0xDKGNvbnRleHQuZ2V0KCksIGNvbnRleHQtPnRleEltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBjYW52YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZhcy5zaXplKCkuaGVpZ2h0KCksIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
bG9ja2VyLnBpeGVscygpKSk7CisgICAgICAgIGlmIChtX3VzZU1hcFN1YkZvclVwbG9hZHMpIHsK
KyAgICAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAg
ICAgICAgICAgdWludDhfdCogcGl4ZWxEZXN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVu
c2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgMCwgMCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVu
c2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisgICAgICAgICAgICBtZW1jcHkocGl4ZWxE
ZXN0LCBsb2NrZXIucGl4ZWxzKCksIGh1ZFNpemUud2lkdGgoKSAqIGh1ZFNpemUuaGVpZ2h0KCkg
KiA0KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KHBpeGVsRGVzdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgR0xDKGNvbnRleHQuZ2V0
KCksIGNvbnRleHQtPnRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBjYW52YXMuc2l6ZSgpLndpZHRoKCksIGNhbnZhcy5z
aXplKCkuaGVpZ2h0KCksIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgbG9ja2VyLnBpeGVscygpKSk7CiAgICAgfQogCiAgICAgLy8g
RHJhdyB0aGUgSFVEIG9udG8gdGhlIGRlZmF1bHQgcmVuZGVyIHN1cmZhY2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0hlYWRzVXBEaXNwbGF5LmgKaW5kZXggYTA5ZmQxNTNiODhlMjQ4NGRhOTIyM2YyNmQyMjAyNjhi
NmJlMjIyMC4uZDY0ODc4ZGE5YWM1Zjg0Yjk1Y2QyMGUyNDI2ZGJmZGU5NzM2ZjM3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaApAQCAtODYsNiArODYsOCBAQCBwcml2YXRlOgogCiAg
ICAgT3duUHRyPEZvbnQ+IG1fc21hbGxGb250OwogICAgIE93blB0cjxGb250PiBtX21lZGl1bUZv
bnQ7CisKKyAgICBib29sIG1fdXNlTWFwU3ViRm9yVXBsb2FkczsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>