<?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>64771</bug_id>
          
          <creation_ts>2011-07-18 18:12:44 -0700</creation_ts>
          <short_desc>[chromium] Seperate texture management for contents textures vs render surface textures</short_desc>
          <delta_ts>2011-07-22 18:55:34 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>64772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438886</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-18 18:12:44 -0700</bug_when>
    <thetext>[chromium] Seperate texture management for contents textures vs render surface textures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438891</commentid>
    <comment_count>1</comment_count>
      <attachid>101253</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-18 18:22:23 -0700</bug_when>
    <thetext>Created attachment 101253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439364</commentid>
    <comment_count>2</comment_count>
      <attachid>101253</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-19 12:29:07 -0700</bug_when>
    <thetext>Comment on attachment 101253
Patch

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

This looks good overall. Couple of questions. I&apos;d like to get an unofficial review from enne or vangelis before setting r+.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:219
&gt; +    m_contentsTextureManager-&gt;reduceMemoryToLimit(textureMemoryLowLimitBytes);
&gt; +    m_contentsTextureManager-&gt;unprotectAllTextures();
&gt; +    // Evict all RenderSurface textures.
&gt; +    m_renderSurfaceTextureManager-&gt;unprotectAllTextures();
&gt; +    m_renderSurfaceTextureManager-&gt;reduceMemoryToLimit(0);

Why are these two methods called in different orders on the different TextureManager instances?

&gt; Source/WebCore/platform/graphics/chromium/TextureManager.h:69
&gt;      void reduceMemoryToLimit(size_t);

Consider unifying this API with the new setLimits() API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440024</commentid>
    <comment_count>3</comment_count>
      <attachid>101253</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-20 14:37:45 -0700</bug_when>
    <thetext>Comment on attachment 101253
Patch

Given that there&apos;s now a disconnect between the two texture pools, do you think it&apos;s a problem that we can now go over the hard texture limit? If you had a lot of render surfaces, the content texture pool wouldn&apos;t know about them and could allocate up to the hard limit.  In aggregate, it&apos;d be over the hard limit temporarily changed the limits and removed those.  It seems like an unlikely edge case and one that could only happen on active tabs.  I just wanted to mention it, but am not convinced it&apos;s serious enough to try to address.  Besides, it&apos;s way more elegant to have two separate texture managers than try to have one texture manager that&apos;s trying to track two different kinds of resources.

In general, this unofficially looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440048</commentid>
    <comment_count>4</comment_count>
      <attachid>101253</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-20 15:04:33 -0700</bug_when>
    <thetext>Comment on attachment 101253
Patch

Marking r+ based on enne&apos;s unofficial review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440060</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-20 15:19:39 -0700</bug_when>
    <thetext>Thanks!  I&apos;ll give some thought to how to handle the hard limit and unifying with the setLimit() API before landing as it does seem that there&apos;s an opportunity for simplification here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440073</commentid>
    <comment_count>6</comment_count>
      <attachid>101253</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-20 15:52:51 -0700</bug_when>
    <thetext>Comment on attachment 101253
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:322
&gt; +        renderSurfaceLimits.reclaimLimit = textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes();

Not sure I get this part.  if textureMemoryReclaimLimitBytes &lt; m_contentsTextureManager-&gt;currentMemoryUseBytes() then wouldn&apos;t textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes() be negative?   Did you mean to say &gt; instead of &lt; ?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:325
&gt; +    m_renderSurfaceTextureManager-&gt;setLimits(renderSurfaceLimits);

Maybe cleaner to call reduceMemoryToLimit() here instead of calling setLimits() as the limits will be reset again before the next draw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440182</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-20 18:56:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 101253 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101253&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:322
&gt; &gt; +        renderSurfaceLimits.reclaimLimit = textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes();
&gt; 
&gt; Not sure I get this part.  if textureMemoryReclaimLimitBytes &lt; m_contentsTextureManager-&gt;currentMemoryUseBytes() then wouldn&apos;t textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes() be negative?   Did you mean to say &gt; instead of &lt; ?
&gt; 
Whoops, I got that backwards.  Will fix.

I also think that it might make sense to remove the notion of two texture limits in TextureManager itself and go back to just one limit + reduceMemoryToLimit().  The texture management sequence would look like this:

(0) during compositor intialization, set contents TextureManager limit to textureMemoryHighLimitBytes (this never changes)

for every frame:
paint stuff:
(1) protect all contents textures needed for this frame
(2) paint
(3) call reduceMemoryToLimit(textureMemoryReclaimLimitBytes) on the contents TextureManager to evict any unprotected textures over the reclaim limit
(4) upload textures

draw stuff:
(5) set the render surface TextureManager limit to textureMemoryHighLimitBytes less the contents TextureManager&apos;s current memory use. if there&apos;s no room, abort the composite since we can&apos;t possibly render and stay under budget
(6) draw
(7) unprotect all contents textures
(8) unprotect all render surface textures
(9) call reduceMemoryToLimit(textureMemoryReclaimLimitBytes) on the contents TextureManager
(10) call reduceMemoryToLimit(textureMemoryReclaimLimitBytes - contents TextureManager current memory use) on the render surface TextureManager

with the eventual goal that &quot;paint stuff&quot; happens without any specific interaction with the compositor thread (except for the uploads themselves), and &quot;draw stuff&quot; happens on the compositor thread.  The main difference in behavior between this and the existing code is that it more aggressively favors contents textures over render surface textures.  If the amount of textures used by the page is very close to the reclaim limit, this logic will keep as many contents textures as will fit and will evict all render surface textures.  I think that&apos;s a good tradeoff to make.

Patch on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440202</commentid>
    <comment_count>8</comment_count>
      <attachid>101546</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-20 19:29:29 -0700</bug_when>
    <thetext>Created attachment 101546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440525</commentid>
    <comment_count>9</comment_count>
      <attachid>101615</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 11:39:46 -0700</bug_when>
    <thetext>Created attachment 101615
fix compile error in debug (oops)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440693</commentid>
    <comment_count>10</comment_count>
      <attachid>101615</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-21 16:02:26 -0700</bug_when>
    <thetext>Comment on attachment 101615
fix compile error in debug (oops)

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

I like where this is going.  As an aside, I&apos;m curious how the texture manager will function in the threaded compositor world.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:314
&gt; +    m_renderSurfaceTextureManager-&gt;unprotectAllTextures();

Render surface textures get unprotected after they&apos;re used (at the top of this function) so unprotecting them here has no effect.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:315
&gt; +    m_renderSurfaceTextureManager-&gt;reduceMemoryToLimit(textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes());

reduceMemoryToLimit won&apos;t deal well with negative values.  You either need to fix this here or in the implementation of the method.

&gt; Source/WebCore/platform/graphics/chromium/TextureManager.cpp:34
&gt; +using namespace std;

I don&apos;t think the include or the &quot;using&quot; lines are needed based on the changes I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440800</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 19:39:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 101615 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101615&amp;action=review
&gt; 
&gt; I like where this is going.  As an aside, I&apos;m curious how the texture manager will function in the threaded compositor world.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:314
&gt; &gt; +    m_renderSurfaceTextureManager-&gt;unprotectAllTextures();
&gt; 
&gt; Render surface textures get unprotected after they&apos;re used (at the top of this function) so unprotecting them here has no effect.

Right, I forgot that we did render surface ones this way.  Call removed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:315
&gt; &gt; +    m_renderSurfaceTextureManager-&gt;reduceMemoryToLimit(textureMemoryReclaimLimitBytes - m_contentsTextureManager-&gt;currentMemoryUseBytes());
&gt; 
&gt; reduceMemoryToLimit won&apos;t deal well with negative values.  You either need to fix this here or in the implementation of the method.

Actually it won&apos;t even take negative numbers, size_t is unsigned.  Fixed here.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureManager.cpp:34
&gt; &gt; +using namespace std;
&gt; 
&gt; I don&apos;t think the include or the &quot;using&quot; lines are needed based on the changes I see.

Nope, they were for a previous iteration.  Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440801</commentid>
    <comment_count>12</comment_count>
      <attachid>101691</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-21 19:41:11 -0700</bug_when>
    <thetext>Created attachment 101691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441304</commentid>
    <comment_count>13</comment_count>
      <attachid>101691</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-07-22 18:06:46 -0700</bug_when>
    <thetext>Comment on attachment 101691
Patch

(unofficial) LGTM from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441306</commentid>
    <comment_count>14</comment_count>
      <attachid>101691</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-22 18:09:24 -0700</bug_when>
    <thetext>Comment on attachment 101691
Patch

Sounds good. r=me again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441325</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-22 18:55:34 -0700</bug_when>
    <thetext>Committed r91629: &lt;http://trac.webkit.org/changeset/91629&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101253</attachid>
            <date>2011-07-18 18:22:23 -0700</date>
            <delta_ts>2011-07-20 19:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64771-20110718182222.patch</filename>
            <type>text/plain</type>
            <size>11775</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNWFmNDRjOWQ2MDMyMGIw
MTFiNWI3N2YwZGE4YTZlYmNkM2JiYjFlLi4zNjcyMzI0ZjQ1MzhlYTFhYmNmYWMxYzA3YWZiM2Rh
YzlkNTc3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDctMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNl
cGVyYXRlIHRleHR1cmUgbWFuYWdlbWVudCBmb3IgY29udGVudHMgdGV4dHVyZXMgdnMgcmVuZGVy
IHN1cmZhY2UgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXRzIHRoZSBjaHJvbWl1bSB0ZXh0dXJlIG1hbmFnZW1lbnQgYWNyb3NzIHR3
byBUZXh0dXJlTWFuYWdlcnMsIG9uZSBmb3IgY29udGVudHMgdGV4dHVyZXMgYW5kIG9uZSBmb3Ig
cmVuZGVyCisgICAgICAgIHN1cmZhY2VzLiAgVGhlIGxpZmV0aW1lcyBhbmQgcmVsYXRpdmUgZXZp
Y2l0aW9uIGNvc3RzIGZvciB0aGVzZSB0eXBlcyBvZiB0ZXh0dXJlcyBhcmUgc2lnbmlmaWNhbnRs
eSBkaWZmZXJlbnQuCisgICAgICAgIENvbnRlbnQgdGV4dHVyZXMgbmVlZCB0byBiZSBtYW5hZ2Vk
IGZyb20gcGFpbnQgdGltZSB0aHJvdWdoIGRyYXcgdGltZSBhbmQgZXZpY3RpbmcgdGhlbSBpcyBn
ZW5lcmFsbHkgZXhwZW5zaXZlLAorICAgICAgICBzaW5jZSByZXBsYWNpbmcgdGhlIHRleHR1cmUg
cmVxdWlyZXMgZG9pbmcgYSBzb2Z0d2FyZSByZXBhaW50IGludG8gYSBidWZmZXIsIGNyZWF0aW5n
IGEgbmV3IHRleHR1cmUsIGFuZAorICAgICAgICB1cGxvYWRpbmcgdGhlIGNvbnRlbnRzIGludG8g
dGhlIHRleHR1cmUuICBSZW5kZXIgc3VyZmFjZSB0ZXh0dXJlcyBhcmUgb25seSB1c2VkIHdoaWxl
IGRyYXdpbmcgYW5kIG5ldmVyIGNvbnRhaW4KKyAgICAgICAgdXNlZnVsIGNvbnRlbnRzIGJldHdl
ZW4gZnJhbWVzLiAgVGhlIG9ubHkgcmVhc29uIHRvIHByZXNlcnZlIGEgcmVuZGVyIHN1cmZhY2Ug
dGV4dHVyZSBiZXR3ZWVuIGZyYW1lcyBpcyB0byBhdm9pZAorICAgICAgICBoYXZpbmcgdG8gY3Jl
YXRlIHRoZSB0ZXh0dXJlIG9uIHRoZSBuZXh0IGZyYW1lLCB0aGV5IG5ldmVyIGNvbnRhaW4gdXNl
ZnVsIGNvbnRlbnRzIGFjcm9zcyBmcmFtZXMuCisKKyAgICAgICAgVGhlIGNvbnRlbnRzIHRleHR1
cmUgbGltaXRzIHJlbWFpbiB0aGUgc2FtZS4gIFJlbmRlciBzdXJmYWNlcyBhcmUgYWxsb2NhdGVk
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGhpZ2gKKyAgICAgICAgbWVtb3J5IGJvdW5kIGFu
ZCB0aGUgY29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGR1cmluZyBhIGZyYW1lIGFuZCB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb3cgbWVtb3J5IGJvdW5kCisgICAgICAgIGFuZCB0aGUg
Y29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGJldHdlZW4gZnJhbWVzLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlVGV4dHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpzZXRMaW1pdHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3VycmVudE1lbW9yeVVzZUJ5dGVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXcpOgorCiAyMDExLTA3LTE4
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lmeSBhIGNh
c2NhZGUgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBDb3JlIFRl
eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDMxYmU5ZGRjNTI0
ZDAxODQzNDU1MDZiZTk1NzA3ZDY5YmNlYzY5YzUuLmNiNmIwZmIwM2QwOTMyOWJlYzc5OGVkNDVi
YTI1ZDA5MGUyN2IzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApA
QCAtMjEyLDggKzIxMiwxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6cmVsZWFzZVRl
eHR1cmVzKCkKICAgICAvLyBSZWR1Y2VzIHRleHR1cmUgbWVtb3J5IHVzYWdlIHRvIHRleHR1cmVN
ZW1vcnlMb3dMaW1pdEJ5dGVzIGJ5IGRlbGV0aW5nIG5vbiByb290IGxheWVyCiAgICAgLy8gdGV4
dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnByb3RlY3RUaWxlVGV4dHVyZXMo
bV92aWV3cG9ydFZpc2libGVSZWN0KTsKLSAgICBtX3RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1v
cnlUb0xpbWl0KHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzKTsKLSAgICBtX3RleHR1cmVNYW5h
Z2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5TG93TGltaXRCeXRlcyk7CisgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIC8v
IEV2aWN0IGFsbCBSZW5kZXJTdXJmYWNlIHRleHR1cmVzLgorICAgIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwogfQogCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVudHMoKQpAQCAtMzAzLDkgKzMw
NiwyMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVycygpCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1lbW9yeUxpbWl0cyByZW5k
ZXJTdXJmYWNlTGltaXRzOworICAgIC8vIFdoaWxlIGRyYXdpbmcsIHdlIGxldCByZW5kZXIgc3Vy
ZmFjZXMgdXNlIGFzIG11Y2ggdGV4dHVyZSBSQU0gYXMgdGhleSBuZWVkIHRvIHVwIHRvIHRoZSBo
aWdoIHdhdGVyIG1hcmsgbGVzcyB0aGUgbWVtb3J5IHVzZWQgYnkgY29udGVudHMgdGV4dHVyZXMu
CisgICAgcmVuZGVyU3VyZmFjZUxpbWl0cy51cHBlckxpbWl0ID0gdGV4dHVyZU1lbW9yeUhpZ2hM
aW1pdEJ5dGVzIC0gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKTsKKyAgICByZW5kZXJTdXJmYWNlTGltaXRzLnJlY2xhaW1MaW1pdCA9IHJlbmRlclN1cmZh
Y2VMaW1pdHMudXBwZXJMaW1pdDsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+
c2V0TGltaXRzKHJlbmRlclN1cmZhY2VMaW1pdHMpOworCiAgICAgZHJhd0xheWVycygqbV9jb21w
dXRlZFJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCi0gICAgbV90ZXh0dXJlTWFuYWdlci0+dW5w
cm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJv
dGVjdEFsbFRleHR1cmVzKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdEFsbFRleHR1cmVzKCk7CisKKyAgICAvLyBBZnRlciBkcmF3aW5nIGlzIG92ZXIsIHJl
ZHVjZSB0aGUgcmVuZGVyIHN1cmZhY2UgbGltaXRzIHRvIHRoZSBvdmVyYWxsIHJlY2xhaW0gbGlt
aXQgbGVzcyB0aGUgbWVtb3J5IHVzZSBvZiBjb250ZW50cyB0ZXh0dXJlcy4KKyAgICBpZiAodGV4
dHVyZU1lbW9yeVJlY2xhaW1MaW1pdEJ5dGVzIDwgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKSkKKyAgICAgICAgcmVuZGVyU3VyZmFjZUxpbWl0cy5yZWNs
YWltTGltaXQgPSB0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgLSBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOworICAgIGVsc2UKKyAgICAgICAg
cmVuZGVyU3VyZmFjZUxpbWl0cy5yZWNsYWltTGltaXQgPSAwOworICAgIG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyLT5zZXRMaW1pdHMocmVuZGVyU3VyZmFjZUxpbWl0cyk7CiAKICAgICAv
LyBBZnRlciBkcmF3TGF5ZXJzOgogICAgIGlmIChoYXJkd2FyZUNvbXBvc2l0aW5nKCkgJiYgbV9j
b250ZXh0U3VwcG9ydHNMYXRjaCkgewpAQCAtMTE2MSw3ICsxMTc4LDggQEAgYm9vbCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkKICAgICBUZXh0dXJlTWFu
YWdlcjo6VGV4dHVyZU1lbW9yeUxpbWl0cyBsaW1pdHM7CiAgICAgbGltaXRzLnVwcGVyTGltaXQg
PSB0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXM7CiAgICAgbGltaXRzLnJlY2xhaW1MaW1pdCA9
IHRleHR1cmVNZW1vcnlSZWNsYWltTGltaXRCeXRlczsKLSAgICBtX3RleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIGxpbWl0cywgbV9tYXhUZXh0
dXJlU2l6ZSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCksIGxpbWl0cywgbV9tYXhUZXh0dXJlU2l6ZSk7CisgICAg
bV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1f
Y29udGV4dC5nZXQoKSwgbGltaXRzLCBtX21heFRleHR1cmVTaXplKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTI5NSw3ICsxMzEzLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNsZWFudXBTaGFyZWRPYmplY3RzKCkKICAgICAvLyBDbGVhciB0aWxlcnMgYmVmb3JlIHRoZSB0
ZXh0dXJlIG1hbmFnZXIsIGFzIHRoZXkgaGF2ZSByZWZlcmVuY2VzIHRvIHRleHR1cmVzLgogICAg
IG1fcm9vdExheWVyQ29udGVudFRpbGVyLmNsZWFyKCk7CiAKLSAgICBtX3RleHR1cmVNYW5hZ2Vy
LmNsZWFyKCk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmNsZWFyKCk7CisgICAgbV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuY2xlYXIoKTsKIH0KIAogU3RyaW5nIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKaW5kZXggOTM4ZTA1ZjdlNDZjMDQ1YjhiODhmZDNlNTg2OTRmYzViMjQ5
Nzk2NS4uM2UxZjZhZjRkNTE5NzdlNGMzOTc1Y2RlYzJjNmE1MTgyMGZhNTY0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTE0Miw3ICsxNDIsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVj
dCYgcmVjdCk7CiAKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyLmdldCgpOyB9CisgICAgVGV4dHVyZU1hbmFnZXIqIGNv
bnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXIuZ2V0KCk7IH0KKyAgICBUZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0
KCk7IH0KIAogICAgIENDSGVhZHNVcERpc3BsYXkqIGhlYWRzVXBEaXNwbGF5KCkgeyByZXR1cm4g
bV9oZWFkc1VwRGlzcGxheS5nZXQoKTsgfQogCkBAIC0yNDMsNyArMjQ0LDggQEAgcHJpdmF0ZToK
ICAgICBPd25QdHI8Q0NWaWRlb0xheWVySW1wbDo6WVVWUHJvZ3JhbT4gbV92aWRlb0xheWVyWVVW
UHJvZ3JhbTsKICAgICBPd25QdHI8Q0NQbHVnaW5MYXllckltcGw6OlByb2dyYW0+IG1fcGx1Z2lu
TGF5ZXJQcm9ncmFtOwogCi0gICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX3RleHR1cmVNYW5h
Z2VyOworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
OworICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFn
ZXI7CiAKICAgICBPd25QdHI8Q0NIZWFkc1VwRGlzcGxheT4gbV9oZWFkc1VwRGlzcGxheTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKaW5kZXggNzY5ZjhlNzFkYjNiODZkMzFmZDVm
MDRjYzQ0Y2VlN2QwYjU3NmUxYS4uYTBiZDEwOGE4MjU0ZWM5ZTM2YTgzZDM1OWI1YTVhODVjNjc3
YzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgTGF5ZXJUaWxlckNocm9taXVtOjpUaWxlKiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRp
bGUoaW50IGksIGludCBqKQogICAgICAgICBBU1NFUlQodGlsZS0+cmVmQ291bnQoKSA9PSAxKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVy
UmVuZGVyZXJDb250ZXh0KCk7Ci0gICAgICAgIFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyID0gbGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlTWFuYWdlcigpOworICAgICAgICBUZXh0dXJlTWFuYWdlciog
bWFuYWdlciA9IGxheWVyUmVuZGVyZXIoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpOwogICAg
ICAgICB0aWxlID0gYWRvcHRSZWYobmV3IFRpbGUoTGF5ZXJUZXh0dXJlOjpjcmVhdGUoY29udGV4
dCwgbWFuYWdlcikpKTsKICAgICB9CiAgICAgbV90aWxlcy5hZGQobWFrZV9wYWlyKGksIGopLCB0
aWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCmluZGV4IDI3NzZjYzUx
YmExYzg1NDdkMzA2YjlmMThjYTI1NGQzMTdiYWRhOTkuLmUyYjllYzhjNWI2NjljNThlNWU0MDcx
NjM0ODA1ZDgzMTgxMDg4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNw
cApAQCAtODIsNyArODIsNyBAQCBGbG9hdFJlY3QgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpkcmF3
YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKIGJvb2wgUmVuZGVyU3VyZmFjZUNocm9taXVtOjpwcmVw
YXJlQ29udGVudHNUZXh0dXJlKCkKIHsKICAgICBJbnRTaXplIHJlcXVpcmVkU2l6ZShtX2NvbnRl
bnRSZWN0LnNpemUoKSk7Ci0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlTWFuYWdlcigpOworICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0
dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXIoKS0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
KCk7CiAKICAgICBpZiAoIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dCgpLCB0
ZXh0dXJlTWFuYWdlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggNjZhN2Q4MTI2NGQ1
ZjI3MzEyMDdhMWQxMzQxZTE4NzE5M2RmZmYyMi4uNjQ0ZGQyYTZhYzA0NmU5OGUzN2Q2OTA4NWU0
ZDU5ZDA0NWI0NTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtNDcsNiArNDcsMTIg
QEAgVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBUZXh0dXJlTWVtb3J5TGkKIHsKIH0KIAordm9pZCBUZXh0dXJlTWFuYWdlcjo6
c2V0TGltaXRzKGNvbnN0IFRleHR1cmVNZW1vcnlMaW1pdHMmIG1lbW9yeUxpbWl0cykKK3sKKyAg
ICBtX21lbW9yeUxpbWl0cyA9IG1lbW9yeUxpbWl0czsKKyAgICByZWR1Y2VNZW1vcnlUb0xpbWl0
KG1lbW9yeUxpbWl0cy5yZWNsYWltTGltaXQpOworfQorCiBUZXh0dXJlVG9rZW4gVGV4dHVyZU1h
bmFnZXI6OmdldFRva2VuKCkKIHsKICAgICByZXR1cm4gbV9uZXh0VG9rZW4rKzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TWFuYWdlci5oCmluZGV4IDljNjU4ZTQxMTc1OWY0NDA1NDAxNWUwMTBkMTU1MjUyYTBkNDNhZmIu
LmUwZDJkNTc0MjdmNWYxMmEwZWI4MDNjZTIyMmU2YTE2Y2FlYzIwNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVGV4dHVyZU1hbmFnZXIoY29udGV4dCwgbWVtb3J5TGltaXRzLCBtYXhUZXh0dXJlU2l6
ZSkpOwogICAgIH0KIAorICAgIC8vIFNldHMgbmV3IHJlc291cmNlIGxpbWl0cyBhbmQgcmVjbGFp
bXMgYXZhaWxhYmxlIHRleHR1cmVzIGFzIGNsb3NlIHRvIHJlY2xhaW1MaW1pdCBhcyBwb3NzaWJs
ZS4KKyAgICB2b2lkIHNldExpbWl0cyhjb25zdCBUZXh0dXJlTWVtb3J5TGltaXRzJik7CisKICAg
ICBUZXh0dXJlVG9rZW4gZ2V0VG9rZW4oKTsKICAgICB2b2lkIHJlbGVhc2VUb2tlbihUZXh0dXJl
VG9rZW4pOwogICAgIGJvb2wgaGFzVGV4dHVyZShUZXh0dXJlVG9rZW4pOwpAQCAtNjQsNiArNjcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCiAgICAg
dm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CisgICAgc2l6ZV90IGN1cnJlbnRNZW1v
cnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KIAogcHJpdmF0
ZToKICAgICBUZXh0dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFRleHR1cmVN
ZW1vcnlMaW1pdHMmLCBpbnQgbWF4VGV4dHVyZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAppbmRleCAyOTVkMzEwZGI0ZjJkYmNjZDExOTJjYzY0ZWJmMTQ0NTBmOGU1ZDBl
Li4wYzA3MGM1Y2U1NzcwMGIxNWVkMDliMTcwYzFhOTI0N2I1ZWEyZjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIENDSGVhZHNVcERp
c3BsYXk6OmRyYXcoKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9sYXll
clJlbmRlcmVyLT5jb250ZXh0KCk7CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAgIG1f
aHVkVGV4dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKGNvbnRleHQsIG1fbGF5ZXJSZW5kZXJl
ci0+dGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9IExheWVyVGV4dHVy
ZTo6Y3JlYXRlKGNvbnRleHQsIG1fbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVN
YW5hZ2VyKCkpOwogCiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2Ug
bmVlZCB0by4uLgogICAgIEludFNpemUgaHVkU2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101546</attachid>
            <date>2011-07-20 19:29:29 -0700</date>
            <delta_ts>2011-07-21 11:39:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64771-20110720192928.patch</filename>
            <type>text/plain</type>
            <size>14112</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMTA3YmQyNTVmOTgzMDEw
ZDJkZGU4MWJmYzBkNmY3MzY1OTAxZTU3Li5mNzVkMGI2YjNkMTI0MjkzNTQyZmY3ZjA5OWNhZDFm
MTE3NmI0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDctMjAgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNl
cGVyYXRlIHRleHR1cmUgbWFuYWdlbWVudCBmb3IgY29udGVudHMgdGV4dHVyZXMgdnMgcmVuZGVy
IHN1cmZhY2UgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXRzIHRoZSBjaHJvbWl1bSB0ZXh0dXJlIG1hbmFnZW1lbnQgYWNyb3NzIHR3
byBUZXh0dXJlTWFuYWdlcnMsIG9uZSBmb3IgY29udGVudHMgdGV4dHVyZXMgYW5kIG9uZSBmb3Ig
cmVuZGVyCisgICAgICAgIHN1cmZhY2VzLiAgVGhlIGxpZmV0aW1lcyBhbmQgcmVsYXRpdmUgZXZp
Y2l0aW9uIGNvc3RzIGZvciB0aGVzZSB0eXBlcyBvZiB0ZXh0dXJlcyBhcmUgc2lnbmlmaWNhbnRs
eSBkaWZmZXJlbnQuCisgICAgICAgIENvbnRlbnQgdGV4dHVyZXMgbmVlZCB0byBiZSBtYW5hZ2Vk
IGZyb20gcGFpbnQgdGltZSB0aHJvdWdoIGRyYXcgdGltZSBhbmQgZXZpY3RpbmcgdGhlbSBpcyBn
ZW5lcmFsbHkgZXhwZW5zaXZlLAorICAgICAgICBzaW5jZSByZXBsYWNpbmcgdGhlIHRleHR1cmUg
cmVxdWlyZXMgZG9pbmcgYSBzb2Z0d2FyZSByZXBhaW50IGludG8gYSBidWZmZXIsIGNyZWF0aW5n
IGEgbmV3IHRleHR1cmUsIGFuZAorICAgICAgICB1cGxvYWRpbmcgdGhlIGNvbnRlbnRzIGludG8g
dGhlIHRleHR1cmUuICBSZW5kZXIgc3VyZmFjZSB0ZXh0dXJlcyBhcmUgb25seSB1c2VkIHdoaWxl
IGRyYXdpbmcgYW5kIG5ldmVyIGNvbnRhaW4KKyAgICAgICAgdXNlZnVsIGNvbnRlbnRzIGJldHdl
ZW4gZnJhbWVzLiAgVGhlIG9ubHkgcmVhc29uIHRvIHByZXNlcnZlIGEgcmVuZGVyIHN1cmZhY2Ug
dGV4dHVyZSBiZXR3ZWVuIGZyYW1lcyBpcyB0byBhdm9pZAorICAgICAgICBoYXZpbmcgdG8gY3Jl
YXRlIHRoZSB0ZXh0dXJlIG9uIHRoZSBuZXh0IGZyYW1lLCB0aGV5IG5ldmVyIGNvbnRhaW4gdXNl
ZnVsIGNvbnRlbnRzIGFjcm9zcyBmcmFtZXMuCisKKyAgICAgICAgVGhlIGNvbnRlbnRzIHRleHR1
cmUgbGltaXRzIHJlbWFpbiB0aGUgc2FtZS4gIFJlbmRlciBzdXJmYWNlcyBhcmUgYWxsb2NhdGVk
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGhpZ2gKKyAgICAgICAgbWVtb3J5IGJvdW5kIGFu
ZCB0aGUgY29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGR1cmluZyBhIGZyYW1lIGFuZCB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb3cgbWVtb3J5IGJvdW5kCisgICAgICAgIGFuZCB0aGUg
Y29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGJldHdlZW4gZnJhbWVzLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlVGV4dHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5TGltaXRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpjdXJyZW50TWVtb3J5VXNlQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisKIDIwMTEtMDctMTkgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCBjb2RlIGlu
IEZvcm1EYXRhU3RyZWFtQ0ZOZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IDRhM2JhMTg2NTIyZDkwODI0MmM5NGM1ZDhiYWY1NDJmNjc3NTdkZGYuLmJlNTYxZDRk
ZDc3ZmFmMDM2NTMxMjQyZDczZmRhMDg3OTVlYjMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtMjEyLDggKzIxMiwxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVsZWFzZVRleHR1cmVzKCkKICAgICAvLyBSZWR1Y2VzIHRleHR1cmUgbWVtb3J5
IHVzYWdlIHRvIHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzIGJ5IGRlbGV0aW5nIG5vbiByb290
IGxheWVyCiAgICAgLy8gdGV4dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnBy
b3RlY3RUaWxlVGV4dHVyZXMobV92aWV3cG9ydFZpc2libGVSZWN0KTsKLSAgICBtX3RleHR1cmVN
YW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzKTsK
LSAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5TG93
TGltaXRCeXRlcyk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOworICAgIC8vIEV2aWN0IGFsbCBSZW5kZXJTdXJmYWNlIHRleHR1cmVzLgorICAg
IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDAp
OwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVu
dHMoKQpAQCAtMzAzLDkgKzMwNiwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycygpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
TWFuYWdlci0+c2V0TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMg
LSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKICAg
ICBkcmF3TGF5ZXJzKCptX2NvbXB1dGVkUmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBt
X3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1p
dEJ5dGVzKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxs
VGV4dHVyZXMoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgLSBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKIAogICAgIC8vIEFmdGVyIGRy
YXdMYXllcnM6CiAgICAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSAmJiBtX2NvbnRleHRTdXBw
b3J0c0xhdGNoKSB7CkBAIC0zNjksNiArMzc2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycyhMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAg
ICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT51cGRhdGVSZWN0KG1fcm9vdExheWVyVGV4dHVy
ZVVwZGF0ZXIuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+
cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMpOwogICAg
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiB9CiAK
QEAgLTExNjcsMTAgKzExNzUsOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMoKQogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0
LT5mbHVzaCgpKTsKIAotICAgIFRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWVtb3J5TGltaXRzIGxp
bWl0czsKLSAgICBsaW1pdHMudXBwZXJMaW1pdCA9IHRleHR1cmVNZW1vcnlIaWdoTGltaXRCeXRl
czsKLSAgICBsaW1pdHMucmVjbGFpbUxpbWl0ID0gdGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1pdEJ5
dGVzOwotICAgIG1fdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSwgbGltaXRzLCBtX21heFRleHR1cmVTaXplKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgdGV4
dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzLCBtX21heFRleHR1cmVTaXplKTsKKyAgICBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpLCB0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzA0LDcgKzEzMTAsOCBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIC8vIENsZWFyIHRpbGVy
cyBiZWZvcmUgdGhlIHRleHR1cmUgbWFuYWdlciwgYXMgdGhleSBoYXZlIHJlZmVyZW5jZXMgdG8g
dGV4dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIuY2xlYXIoKTsKIAotICAgIG1f
dGV4dHVyZU1hbmFnZXIuY2xlYXIoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIuY2xl
YXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5jbGVhcigpOwogfQogCiBT
dHJpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpsYXllclRyZWVBc1RleHQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA5MzhlMDVmN2U0NmMwNDViOGI4OGZk
M2U1ODY5NGZjNWIyNDk3OTY1Li4zZTFmNmFmNGQ1MTk3N2U0YzM5NzVjZGVjMmM2YTUxODIwZmE1
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTQyLDcgKzE0Miw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxz
LCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAotICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFu
YWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBUZXh0
dXJlTWFuYWdlciogY29udGVudHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQorICAgIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlci5nZXQoKTsgfQogCiAgICAgQ0NIZWFkc1VwRGlzcGxheSogaGVhZHNVcERpc3Bs
YXkoKSB7IHJldHVybiBtX2hlYWRzVXBEaXNwbGF5LmdldCgpOyB9CiAKQEAgLTI0Myw3ICsyNDQs
OCBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBt
X3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1BsdWdpbkxheWVySW1wbDo6UHJv
Z3JhbT4gbV9wbHVnaW5MYXllclByb2dyYW07CiAKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IG1fdGV4dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlTWFuYWdlcjsKIAogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5PiBtX2hlYWRz
VXBEaXNwbGF5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCA3NjlmOGU3
MWRiM2I4NmQzMWZkNWYwNGNjNDRjZWU3ZDBiNTc2ZTFhLi5hMGJkMTA4YTgyNTRlYzllMzZhODNk
MzU5YjVhNWE4NWM2NzdjN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBMYXllclRpbGVyQ2hyb21pdW06OlRpbGUqIExheWVyVGlsZXJDaHJv
bWl1bTo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAgICAgICAgIEFTU0VSVCh0aWxlLT5yZWZD
b3VudCgpID09IDEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICAgICAgVGV4dHVyZU1hbmFnZXIq
IG1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnRleHR1cmVNYW5hZ2VyKCk7CisgICAgICAgIFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCk7CiAgICAgICAgIHRpbGUgPSBhZG9wdFJlZihuZXcgVGlsZShMYXllclRleHR1cmU6
OmNyZWF0ZShjb250ZXh0LCBtYW5hZ2VyKSkpOwogICAgIH0KICAgICBtX3RpbGVzLmFkZChtYWtl
X3BhaXIoaSwgaiksIHRpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAK
aW5kZXggMjFiYTgxNTRmY2MzYjM1ZWQ4NjBjNWQwMTAzNWQ3ZWY3NTAzNDE0Yi4uNmEyNzIxNmQw
MjRiZTkzMTJlZjY5NjI3MTk0MmU2Mjk1ZGI4NDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJm
YWNlQ2hyb21pdW0uY3BwCkBAIC04Miw3ICs4Miw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogYm9vbCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUoKQogewogICAgIEludFNpemUgcmVxdWly
ZWRTaXplKG1fY29udGVudFJlY3Quc2l6ZSgpKTsKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVy
ZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnRleHR1cmVNYW5hZ2VyKCk7CisgICAgVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlmICghbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAg
IG1fY29udGVudHNUZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlcigp
LT5jb250ZXh0KCksIHRleHR1cmVNYW5hZ2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCA2NmE3ZDgxMjY0ZDVmMjczMTIwN2ExZDEzNDFlMTg3MTkzZGZmZjIyLi44ZTFmYzAxNjk1M2Mx
Y2ZhYzA4MTRhN2E2ZjE1MmJjNGU0ZTY0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCit1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDE1ICs0MSwyMiBA
QCBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKEludFNpemUgc2l6ZSwgdW5zaWduZWQgdGV4
dHVyZUZvcm1hdCkKICAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7
CiB9CiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgVGV4dHVyZU1lbW9yeUxpbWl0cyYgbWVtb3J5TGltaXRzLCBpbnQgbWF4
VGV4dHVyZVNpemUpCitUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNp
emUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbWVtb3J5TGltaXRzKG1lbW9y
eUxpbWl0cykKKyAgICAsIG1fbWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKQogICAg
ICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwgbV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJl
U2l6ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCiB7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6
OnNldE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit7CisgICAgcmVk
dWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICBBU1NFUlQobWVtb3J5VXNl
Qnl0ZXMoKSA8IG1lbW9yeUxpbWl0Qnl0ZXMpOworICAgIG1fbWVtb3J5TGltaXRCeXRlcyA9IG1l
bW9yeUxpbWl0Qnl0ZXM7Cit9CisKIFRleHR1cmVUb2tlbiBUZXh0dXJlTWFuYWdlcjo6Z2V0VG9r
ZW4oKQogewogICAgIHJldHVybiBtX25leHRUb2tlbisrOwpAQCAtMTQ4LDEwICsxNTgsMTEgQEAg
dW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tl
biwgSW50U2l6ZSBzaXplLCB1bnNpZ24KICAgICB9CiAKICAgICBzaXplX3QgbWVtb3J5UmVxdWly
ZWRCeXRlcyA9IG1lbW9yeVVzZUJ5dGVzKHNpemUsIGZvcm1hdCk7CisgICAgaWYgKG1lbW9yeVJl
cXVpcmVkQnl0ZXMgPiBtX21lbW9yeUxpbWl0Qnl0ZXMpCisgICAgICAgIHJldHVybiAwOwogCi0g
ICAgLy8gUmVjbGFpbSBleGlzdGluZyB1bnJlc2VydmVkIHRleHR1cmVzIHRvIHRyeSB0byBzdGF5
IGJlbG93IHRoZSByZWNsYWltIGxpbWl0LgotICAgIHJlZHVjZU1lbW9yeVRvTGltaXQoc3RkOjpt
YXgobV9tZW1vcnlMaW1pdHMucmVjbGFpbUxpbWl0IC0gbWVtb3J5UmVxdWlyZWRCeXRlcywgc3Rh
dGljX2Nhc3Q8c2l6ZV90PigwKSkpOwotICAgIGlmIChtX21lbW9yeVVzZUJ5dGVzICsgbWVtb3J5
UmVxdWlyZWRCeXRlcyA+IG1fbWVtb3J5TGltaXRzLnVwcGVyTGltaXQpCisgICAgcmVkdWNlTWVt
b3J5VG9MaW1pdChtX21lbW9yeUxpbWl0Qnl0ZXMgLSBtZW1vcnlSZXF1aXJlZEJ5dGVzKTsKKyAg
ICBpZiAobV9tZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21lbW9yeUxp
bWl0Qnl0ZXMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgdGV4dHVyZUlkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggOWM2NThlNDExNzU5ZjQ0MDU0MDE1ZTAxMGQxNTUyNTJh
MGQ0M2FmYi4uZGE2Mjg2ZTkzYTNkMmUxNWM0NjE2NzZiOGIyZTc2YzAxZjI3NTMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
ZXh0dXJlTWFuYWdlci5oCkBAIC00MCwxOCArNDAsMTMgQEAgdHlwZWRlZiBpbnQgVGV4dHVyZVRv
a2VuOwogY2xhc3MgVGV4dHVyZU1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRl
eHR1cmVNYW5hZ2VyKTsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgVGV4dHVyZU1lbW9yeUxpbWl0cyB7
Ci0gICAgICAgIC8vIE1heGltdW0gdGV4dHVyZSBhbGxvY2F0aW9uIHNpemUuCi0gICAgICAgIHNp
emVfdCB1cHBlckxpbWl0OwotICAgICAgICAvLyBMaW1pdCBvdmVyIHdoaWNoIGV4aXN0aW5nIHVu
cmVzZXJ2ZWQgdGV4dHVyZXMgd2lsbCBiZSByZWNsYWltZWQuCi0gICAgICAgIHNpemVfdCByZWNs
YWltTGltaXQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFRleHR1cmVNZW1vcnlM
aW1pdHMmIG1lbW9yeUxpbWl0cywgaW50IG1heFRleHR1cmVTaXplKQorICAgIHN0YXRpYyBQYXNz
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYW5hZ2VyKGNvbnRleHQsIG1lbW9yeUxp
bWl0cywgbWF4VGV4dHVyZVNpemUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0
dXJlTWFuYWdlcihjb250ZXh0LCBtZW1vcnlMaW1pdEJ5dGVzLCBtYXhUZXh0dXJlU2l6ZSkpOwog
ICAgIH0KIAorICAgIHZvaWQgc2V0TWVtb3J5TGltaXRCeXRlcyhzaXplX3QpOworCiAgICAgVGV4
dHVyZVRva2VuIGdldFRva2VuKCk7CiAgICAgdm9pZCByZWxlYXNlVG9rZW4oVGV4dHVyZVRva2Vu
KTsKICAgICBib29sIGhhc1RleHR1cmUoVGV4dHVyZVRva2VuKTsKQEAgLTY0LDkgKzU5LDEwIEBA
IHB1YmxpYzoKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAKICAgICB2b2lk
IHJlZHVjZU1lbW9yeVRvTGltaXQoc2l6ZV90KTsKKyAgICBzaXplX3QgY3VycmVudE1lbW9yeVVz
ZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2VCeXRlczsgfQogCiBwcml2YXRlOgot
ICAgIFRleHR1cmVNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgVGV4dHVyZU1lbW9y
eUxpbWl0cyYsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgVGV4dHVyZU1hbmFnZXIoR3JhcGhp
Y3NDb250ZXh0M0QqLCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXpl
KTsKIAogICAgIHN0cnVjdCBUZXh0dXJlSW5mbyB7CiAgICAgICAgIEludFNpemUgc2l6ZTsKQEAg
LTg0LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwIG1fdGV4dHVyZXM7CiAgICAg
TGlzdEhhc2hTZXQ8VGV4dHVyZVRva2VuPiBtX3RleHR1cmVMUlVTZXQ7CiAKLSAgICBUZXh0dXJl
TWVtb3J5TGltaXRzIG1fbWVtb3J5TGltaXRzOworICAgIHNpemVfdCBtX21lbW9yeUxpbWl0Qnl0
ZXM7CiAgICAgc2l6ZV90IG1fbWVtb3J5VXNlQnl0ZXM7CiAgICAgaW50IG1fbWF4VGV4dHVyZVNp
emU7CiAgICAgVGV4dHVyZVRva2VuIG1fbmV4dFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAppbmRleCAyOTVkMzEwZGI0ZjJkYmNjZDExOTJjYzY0ZWJmMTQ0NTBmOGU1ZDBl
Li4wYzA3MGM1Y2U1NzcwMGIxNWVkMDliMTcwYzFhOTI0N2I1ZWEyZjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIENDSGVhZHNVcERp
c3BsYXk6OmRyYXcoKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gbV9sYXll
clJlbmRlcmVyLT5jb250ZXh0KCk7CiAgICAgaWYgKCFtX2h1ZFRleHR1cmUpCi0gICAgICAgIG1f
aHVkVGV4dHVyZSA9IExheWVyVGV4dHVyZTo6Y3JlYXRlKGNvbnRleHQsIG1fbGF5ZXJSZW5kZXJl
ci0+dGV4dHVyZU1hbmFnZXIoKSk7CisgICAgICAgIG1faHVkVGV4dHVyZSA9IExheWVyVGV4dHVy
ZTo6Y3JlYXRlKGNvbnRleHQsIG1fbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVN
YW5hZ2VyKCkpOwogCiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2Ug
bmVlZCB0by4uLgogICAgIEludFNpemUgaHVkU2l6ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101615</attachid>
            <date>2011-07-21 11:39:46 -0700</date>
            <delta_ts>2011-07-21 19:41:07 -0700</delta_ts>
            <desc>fix compile error in debug (oops)</desc>
            <filename>bug-64771-20110721113945.patch</filename>
            <type>text/plain</type>
            <size>14119</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMTA3YmQyNTVmOTgzMDEw
ZDJkZGU4MWJmYzBkNmY3MzY1OTAxZTU3Li5mNzVkMGI2YjNkMTI0MjkzNTQyZmY3ZjA5OWNhZDFm
MTE3NmI0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDctMjAgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNl
cGVyYXRlIHRleHR1cmUgbWFuYWdlbWVudCBmb3IgY29udGVudHMgdGV4dHVyZXMgdnMgcmVuZGVy
IHN1cmZhY2UgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXRzIHRoZSBjaHJvbWl1bSB0ZXh0dXJlIG1hbmFnZW1lbnQgYWNyb3NzIHR3
byBUZXh0dXJlTWFuYWdlcnMsIG9uZSBmb3IgY29udGVudHMgdGV4dHVyZXMgYW5kIG9uZSBmb3Ig
cmVuZGVyCisgICAgICAgIHN1cmZhY2VzLiAgVGhlIGxpZmV0aW1lcyBhbmQgcmVsYXRpdmUgZXZp
Y2l0aW9uIGNvc3RzIGZvciB0aGVzZSB0eXBlcyBvZiB0ZXh0dXJlcyBhcmUgc2lnbmlmaWNhbnRs
eSBkaWZmZXJlbnQuCisgICAgICAgIENvbnRlbnQgdGV4dHVyZXMgbmVlZCB0byBiZSBtYW5hZ2Vk
IGZyb20gcGFpbnQgdGltZSB0aHJvdWdoIGRyYXcgdGltZSBhbmQgZXZpY3RpbmcgdGhlbSBpcyBn
ZW5lcmFsbHkgZXhwZW5zaXZlLAorICAgICAgICBzaW5jZSByZXBsYWNpbmcgdGhlIHRleHR1cmUg
cmVxdWlyZXMgZG9pbmcgYSBzb2Z0d2FyZSByZXBhaW50IGludG8gYSBidWZmZXIsIGNyZWF0aW5n
IGEgbmV3IHRleHR1cmUsIGFuZAorICAgICAgICB1cGxvYWRpbmcgdGhlIGNvbnRlbnRzIGludG8g
dGhlIHRleHR1cmUuICBSZW5kZXIgc3VyZmFjZSB0ZXh0dXJlcyBhcmUgb25seSB1c2VkIHdoaWxl
IGRyYXdpbmcgYW5kIG5ldmVyIGNvbnRhaW4KKyAgICAgICAgdXNlZnVsIGNvbnRlbnRzIGJldHdl
ZW4gZnJhbWVzLiAgVGhlIG9ubHkgcmVhc29uIHRvIHByZXNlcnZlIGEgcmVuZGVyIHN1cmZhY2Ug
dGV4dHVyZSBiZXR3ZWVuIGZyYW1lcyBpcyB0byBhdm9pZAorICAgICAgICBoYXZpbmcgdG8gY3Jl
YXRlIHRoZSB0ZXh0dXJlIG9uIHRoZSBuZXh0IGZyYW1lLCB0aGV5IG5ldmVyIGNvbnRhaW4gdXNl
ZnVsIGNvbnRlbnRzIGFjcm9zcyBmcmFtZXMuCisKKyAgICAgICAgVGhlIGNvbnRlbnRzIHRleHR1
cmUgbGltaXRzIHJlbWFpbiB0aGUgc2FtZS4gIFJlbmRlciBzdXJmYWNlcyBhcmUgYWxsb2NhdGVk
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGhpZ2gKKyAgICAgICAgbWVtb3J5IGJvdW5kIGFu
ZCB0aGUgY29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGR1cmluZyBhIGZyYW1lIGFuZCB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb3cgbWVtb3J5IGJvdW5kCisgICAgICAgIGFuZCB0aGUg
Y29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGJldHdlZW4gZnJhbWVzLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlVGV4dHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5TGltaXRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpjdXJyZW50TWVtb3J5VXNlQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisKIDIwMTEtMDctMTkgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCBjb2RlIGlu
IEZvcm1EYXRhU3RyZWFtQ0ZOZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IDRhM2JhMTg2NTIyZDkwODI0MmM5NGM1ZDhiYWY1NDJmNjc3NTdkZGYuLmJlNTYxZDRk
ZDc3ZmFmMDM2NTMxMjQyZDczZmRhMDg3OTVlYjMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtMjEyLDggKzIxMiwxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVsZWFzZVRleHR1cmVzKCkKICAgICAvLyBSZWR1Y2VzIHRleHR1cmUgbWVtb3J5
IHVzYWdlIHRvIHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzIGJ5IGRlbGV0aW5nIG5vbiByb290
IGxheWVyCiAgICAgLy8gdGV4dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnBy
b3RlY3RUaWxlVGV4dHVyZXMobV92aWV3cG9ydFZpc2libGVSZWN0KTsKLSAgICBtX3RleHR1cmVN
YW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzKTsK
LSAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5TG93
TGltaXRCeXRlcyk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOworICAgIC8vIEV2aWN0IGFsbCBSZW5kZXJTdXJmYWNlIHRleHR1cmVzLgorICAg
IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDAp
OwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVu
dHMoKQpAQCAtMzAzLDkgKzMwNiwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycygpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
TWFuYWdlci0+c2V0TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMg
LSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKICAg
ICBkcmF3TGF5ZXJzKCptX2NvbXB1dGVkUmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBt
X3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1p
dEJ5dGVzKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxs
VGV4dHVyZXMoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVt
b3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgLSBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKIAogICAgIC8vIEFmdGVyIGRy
YXdMYXllcnM6CiAgICAgaWYgKGhhcmR3YXJlQ29tcG9zaXRpbmcoKSAmJiBtX2NvbnRleHRTdXBw
b3J0c0xhdGNoKSB7CkBAIC0zNjksNiArMzc2LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVwZGF0ZUxheWVycyhMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAg
ICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT51cGRhdGVSZWN0KG1fcm9vdExheWVyVGV4dHVy
ZVVwZGF0ZXIuZ2V0KCkpOwogICAgIH0KIAorICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+
cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMpOwogICAg
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiB9CiAK
QEAgLTExNjcsMTAgKzExNzUsOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMoKQogCiAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0
LT5mbHVzaCgpKTsKIAotICAgIFRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWVtb3J5TGltaXRzIGxp
bWl0czsKLSAgICBsaW1pdHMudXBwZXJMaW1pdCA9IHRleHR1cmVNZW1vcnlIaWdoTGltaXRCeXRl
czsKLSAgICBsaW1pdHMucmVjbGFpbUxpbWl0ID0gdGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1pdEJ5
dGVzOwotICAgIG1fdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1fY29u
dGV4dC5nZXQoKSwgbGltaXRzLCBtX21heFRleHR1cmVTaXplKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgdGV4
dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVzLCBtX21heFRleHR1cmVTaXplKTsKKyAgICBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpLCB0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzA0LDcgKzEzMTAsOCBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Y2xlYW51cFNoYXJlZE9iamVjdHMoKQogICAgIC8vIENsZWFyIHRpbGVy
cyBiZWZvcmUgdGhlIHRleHR1cmUgbWFuYWdlciwgYXMgdGhleSBoYXZlIHJlZmVyZW5jZXMgdG8g
dGV4dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIuY2xlYXIoKTsKIAotICAgIG1f
dGV4dHVyZU1hbmFnZXIuY2xlYXIoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIuY2xl
YXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5jbGVhcigpOwogfQogCiBT
dHJpbmcgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpsYXllclRyZWVBc1RleHQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCA5MzhlMDVmN2U0NmMwNDViOGI4OGZk
M2U1ODY5NGZjNWIyNDk3OTY1Li4zZTFmNmFmNGQ1MTk3N2U0YzM5NzVjZGVjMmM2YTUxODIwZmE1
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTQyLDcgKzE0Miw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxz
LCBjb25zdCBJbnRSZWN0JiByZWN0KTsKIAotICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFu
YWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBUZXh0
dXJlTWFuYWdlciogY29udGVudHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQorICAgIFRleHR1cmVNYW5hZ2VyKiByZW5kZXJT
dXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlci5nZXQoKTsgfQogCiAgICAgQ0NIZWFkc1VwRGlzcGxheSogaGVhZHNVcERpc3Bs
YXkoKSB7IHJldHVybiBtX2hlYWRzVXBEaXNwbGF5LmdldCgpOyB9CiAKQEAgLTI0Myw3ICsyNDQs
OCBAQCBwcml2YXRlOgogICAgIE93blB0cjxDQ1ZpZGVvTGF5ZXJJbXBsOjpZVVZQcm9ncmFtPiBt
X3ZpZGVvTGF5ZXJZVVZQcm9ncmFtOwogICAgIE93blB0cjxDQ1BsdWdpbkxheWVySW1wbDo6UHJv
Z3JhbT4gbV9wbHVnaW5MYXllclByb2dyYW07CiAKLSAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IG1fdGV4dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXI7CisgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX3JlbmRlclN1cmZh
Y2VUZXh0dXJlTWFuYWdlcjsKIAogICAgIE93blB0cjxDQ0hlYWRzVXBEaXNwbGF5PiBtX2hlYWRz
VXBEaXNwbGF5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAppbmRleCA3NjlmOGU3
MWRiM2I4NmQzMWZkNWYwNGNjNDRjZWU3ZDBiNTc2ZTFhLi5hMGJkMTA4YTgyNTRlYzllMzZhODNk
MzU5YjVhNWE4NWM2NzdjN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBMYXllclRpbGVyQ2hyb21pdW06OlRpbGUqIExheWVyVGlsZXJDaHJv
bWl1bTo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAgICAgICAgIEFTU0VSVCh0aWxlLT5yZWZD
b3VudCgpID09IDEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gbGF5ZXJSZW5kZXJlckNvbnRleHQoKTsKLSAgICAgICAgVGV4dHVyZU1hbmFnZXIq
IG1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnRleHR1cmVNYW5hZ2VyKCk7CisgICAgICAgIFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyID0gbGF5ZXJSZW5kZXJlcigpLT5jb250ZW50c1RleHR1cmVN
YW5hZ2VyKCk7CiAgICAgICAgIHRpbGUgPSBhZG9wdFJlZihuZXcgVGlsZShMYXllclRleHR1cmU6
OmNyZWF0ZShjb250ZXh0LCBtYW5hZ2VyKSkpOwogICAgIH0KICAgICBtX3RpbGVzLmFkZChtYWtl
X3BhaXIoaSwgaiksIHRpbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHAK
aW5kZXggMjFiYTgxNTRmY2MzYjM1ZWQ4NjBjNWQwMTAzNWQ3ZWY3NTAzNDE0Yi4uNmEyNzIxNmQw
MjRiZTkzMTJlZjY5NjI3MTk0MmU2Mjk1ZGI4NDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJm
YWNlQ2hyb21pdW0uY3BwCkBAIC04Miw3ICs4Miw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogYm9vbCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUoKQogewogICAgIEludFNpemUgcmVxdWly
ZWRTaXplKG1fY29udGVudFJlY3Quc2l6ZSgpKTsKLSAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVy
ZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnRleHR1cmVNYW5hZ2VyKCk7CisgICAgVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlcigpLT5yZW5kZXJTdXJmYWNl
VGV4dHVyZU1hbmFnZXIoKTsKIAogICAgIGlmICghbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAg
IG1fY29udGVudHNUZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlcigp
LT5jb250ZXh0KCksIHRleHR1cmVNYW5hZ2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCA2NmE3ZDgxMjY0ZDVmMjczMTIwN2ExZDEzNDFlMTg3MTkzZGZmZjIyLi5mZTY1N2IxMWRlZDQ2
MjVmODFhMGE4NWE5ODBhMjU5N2I5Y2RkN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCit1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDE1ICs0MSwyMiBA
QCBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKEludFNpemUgc2l6ZSwgdW5zaWduZWQgdGV4
dHVyZUZvcm1hdCkKICAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7
CiB9CiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgVGV4dHVyZU1lbW9yeUxpbWl0cyYgbWVtb3J5TGltaXRzLCBpbnQgbWF4
VGV4dHVyZVNpemUpCitUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFnZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBpbnQgbWF4VGV4dHVyZVNp
emUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbWVtb3J5TGltaXRzKG1lbW9y
eUxpbWl0cykKKyAgICAsIG1fbWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdEJ5dGVzKQogICAg
ICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwgbV9tYXhUZXh0dXJlU2l6ZShtYXhUZXh0dXJl
U2l6ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCiB7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6
OnNldE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMpCit7CisgICAgcmVk
dWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICBBU1NFUlQoY3VycmVudE1l
bW9yeVVzZUJ5dGVzKCkgPCBtZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICBtX21lbW9yeUxpbWl0Qnl0
ZXMgPSBtZW1vcnlMaW1pdEJ5dGVzOworfQorCiBUZXh0dXJlVG9rZW4gVGV4dHVyZU1hbmFnZXI6
OmdldFRva2VuKCkKIHsKICAgICByZXR1cm4gbV9uZXh0VG9rZW4rKzsKQEAgLTE0OCwxMCArMTU4
LDExIEBAIHVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9r
ZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduCiAgICAgfQogCiAgICAgc2l6ZV90IG1lbW9y
eVJlcXVpcmVkQnl0ZXMgPSBtZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOworICAgIGlmICht
ZW1vcnlSZXF1aXJlZEJ5dGVzID4gbV9tZW1vcnlMaW1pdEJ5dGVzKQorICAgICAgICByZXR1cm4g
MDsKIAotICAgIC8vIFJlY2xhaW0gZXhpc3RpbmcgdW5yZXNlcnZlZCB0ZXh0dXJlcyB0byB0cnkg
dG8gc3RheSBiZWxvdyB0aGUgcmVjbGFpbSBsaW1pdC4KLSAgICByZWR1Y2VNZW1vcnlUb0xpbWl0
KHN0ZDo6bWF4KG1fbWVtb3J5TGltaXRzLnJlY2xhaW1MaW1pdCAtIG1lbW9yeVJlcXVpcmVkQnl0
ZXMsIHN0YXRpY19jYXN0PHNpemVfdD4oMCkpKTsKLSAgICBpZiAobV9tZW1vcnlVc2VCeXRlcyAr
IG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21lbW9yeUxpbWl0cy51cHBlckxpbWl0KQorICAgIHJl
ZHVjZU1lbW9yeVRvTGltaXQobV9tZW1vcnlMaW1pdEJ5dGVzIC0gbWVtb3J5UmVxdWlyZWRCeXRl
cyk7CisgICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMgKyBtZW1vcnlSZXF1aXJlZEJ5dGVzID4gbV9t
ZW1vcnlMaW1pdEJ5dGVzKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVuc2lnbmVkIHRleHR1
cmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4IDljNjU4ZTQxMTc1OWY0NDA1NDAxNWUwMTBk
MTU1MjUyYTBkNDNhZmIuLmRhNjI4NmU5M2EzZDJlMTVjNDYxNjc2YjhiMmU3NmMwMWYyNzUzM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtNDAsMTggKzQwLDEzIEBAIHR5cGVkZWYgaW50IFRl
eHR1cmVUb2tlbjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShUZXh0dXJlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgc3RydWN0IFRleHR1cmVNZW1vcnlM
aW1pdHMgewotICAgICAgICAvLyBNYXhpbXVtIHRleHR1cmUgYWxsb2NhdGlvbiBzaXplLgotICAg
ICAgICBzaXplX3QgdXBwZXJMaW1pdDsKLSAgICAgICAgLy8gTGltaXQgb3ZlciB3aGljaCBleGlz
dGluZyB1bnJlc2VydmVkIHRleHR1cmVzIHdpbGwgYmUgcmVjbGFpbWVkLgotICAgICAgICBzaXpl
X3QgcmVjbGFpbUxpbWl0OwotICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJl
TWFuYWdlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBUZXh0dXJl
TWVtb3J5TGltaXRzJiBtZW1vcnlMaW1pdHMsIGludCBtYXhUZXh0dXJlU2l6ZSkKKyAgICBzdGF0
aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRleHR1cmVTaXplKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFuYWdlcihjb250ZXh0LCBt
ZW1vcnlMaW1pdHMsIG1heFRleHR1cmVTaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGV4dHVyZU1hbmFnZXIoY29udGV4dCwgbWVtb3J5TGltaXRCeXRlcywgbWF4VGV4dHVyZVNp
emUpKTsKICAgICB9CiAKKyAgICB2b2lkIHNldE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90KTsKKwog
ICAgIFRleHR1cmVUb2tlbiBnZXRUb2tlbigpOwogICAgIHZvaWQgcmVsZWFzZVRva2VuKFRleHR1
cmVUb2tlbik7CiAgICAgYm9vbCBoYXNUZXh0dXJlKFRleHR1cmVUb2tlbik7CkBAIC02NCw5ICs1
OSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCiAg
ICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CisgICAgc2l6ZV90IGN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNlQnl0ZXM7IH0KIAogcHJp
dmF0ZToKLSAgICBUZXh0dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFRleHR1
cmVNZW1vcnlMaW1pdHMmLCBpbnQgbWF4VGV4dHVyZVNpemUpOworICAgIFRleHR1cmVNYW5hZ2Vy
KEdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0ZXMsIGludCBtYXhUZXh0
dXJlU2l6ZSk7CiAKICAgICBzdHJ1Y3QgVGV4dHVyZUluZm8gewogICAgICAgICBJbnRTaXplIHNp
emU7CkBAIC04NCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcCBtX3RleHR1cmVz
OwogICAgIExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj4gbV90ZXh0dXJlTFJVU2V0OwogCi0gICAg
VGV4dHVyZU1lbW9yeUxpbWl0cyBtX21lbW9yeUxpbWl0czsKKyAgICBzaXplX3QgbV9tZW1vcnlM
aW1pdEJ5dGVzOwogICAgIHNpemVfdCBtX21lbW9yeVVzZUJ5dGVzOwogICAgIGludCBtX21heFRl
eHR1cmVTaXplOwogICAgIFRleHR1cmVUb2tlbiBtX25leHRUb2tlbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggMjk1ZDMxMGRiNGYyZGJjY2QxMTkyY2M2NGViZjE0NDUw
ZjhlNWQwZS4uMGMwNzBjNWNlNTc3MDBiMTVlZDA5YjE3MGMxYTkyNDdiNWVhMmY5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFk
c1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBDQ0hl
YWRzVXBEaXNwbGF5OjpkcmF3KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IG1fbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmICghbV9odWRUZXh0dXJlKQotICAg
ICAgICBtX2h1ZFRleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShjb250ZXh0LCBtX2xheWVy
UmVuZGVyZXItPnRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1ZFRleHR1cmUgPSBMYXll
clRleHR1cmU6OmNyZWF0ZShjb250ZXh0LCBtX2xheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIFVzZSBhIGZ1bGxzY3JlZW4gdGV4dHVyZSBvbmx5
IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNpemU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101691</attachid>
            <date>2011-07-21 19:41:11 -0700</date>
            <delta_ts>2011-07-22 18:09:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64771-20110721194109.patch</filename>
            <type>text/plain</type>
            <size>14077</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMTA3YmQyNTVmOTgzMDEw
ZDJkZGU4MWJmYzBkNmY3MzY1OTAxZTU3Li5mNzVkMGI2YjNkMTI0MjkzNTQyZmY3ZjA5OWNhZDFm
MTE3NmI0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDctMjAgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNl
cGVyYXRlIHRleHR1cmUgbWFuYWdlbWVudCBmb3IgY29udGVudHMgdGV4dHVyZXMgdnMgcmVuZGVy
IHN1cmZhY2UgdGV4dHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0NzcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3BsaXRzIHRoZSBjaHJvbWl1bSB0ZXh0dXJlIG1hbmFnZW1lbnQgYWNyb3NzIHR3
byBUZXh0dXJlTWFuYWdlcnMsIG9uZSBmb3IgY29udGVudHMgdGV4dHVyZXMgYW5kIG9uZSBmb3Ig
cmVuZGVyCisgICAgICAgIHN1cmZhY2VzLiAgVGhlIGxpZmV0aW1lcyBhbmQgcmVsYXRpdmUgZXZp
Y2l0aW9uIGNvc3RzIGZvciB0aGVzZSB0eXBlcyBvZiB0ZXh0dXJlcyBhcmUgc2lnbmlmaWNhbnRs
eSBkaWZmZXJlbnQuCisgICAgICAgIENvbnRlbnQgdGV4dHVyZXMgbmVlZCB0byBiZSBtYW5hZ2Vk
IGZyb20gcGFpbnQgdGltZSB0aHJvdWdoIGRyYXcgdGltZSBhbmQgZXZpY3RpbmcgdGhlbSBpcyBn
ZW5lcmFsbHkgZXhwZW5zaXZlLAorICAgICAgICBzaW5jZSByZXBsYWNpbmcgdGhlIHRleHR1cmUg
cmVxdWlyZXMgZG9pbmcgYSBzb2Z0d2FyZSByZXBhaW50IGludG8gYSBidWZmZXIsIGNyZWF0aW5n
IGEgbmV3IHRleHR1cmUsIGFuZAorICAgICAgICB1cGxvYWRpbmcgdGhlIGNvbnRlbnRzIGludG8g
dGhlIHRleHR1cmUuICBSZW5kZXIgc3VyZmFjZSB0ZXh0dXJlcyBhcmUgb25seSB1c2VkIHdoaWxl
IGRyYXdpbmcgYW5kIG5ldmVyIGNvbnRhaW4KKyAgICAgICAgdXNlZnVsIGNvbnRlbnRzIGJldHdl
ZW4gZnJhbWVzLiAgVGhlIG9ubHkgcmVhc29uIHRvIHByZXNlcnZlIGEgcmVuZGVyIHN1cmZhY2Ug
dGV4dHVyZSBiZXR3ZWVuIGZyYW1lcyBpcyB0byBhdm9pZAorICAgICAgICBoYXZpbmcgdG8gY3Jl
YXRlIHRoZSB0ZXh0dXJlIG9uIHRoZSBuZXh0IGZyYW1lLCB0aGV5IG5ldmVyIGNvbnRhaW4gdXNl
ZnVsIGNvbnRlbnRzIGFjcm9zcyBmcmFtZXMuCisKKyAgICAgICAgVGhlIGNvbnRlbnRzIHRleHR1
cmUgbGltaXRzIHJlbWFpbiB0aGUgc2FtZS4gIFJlbmRlciBzdXJmYWNlcyBhcmUgYWxsb2NhdGVk
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGhpZ2gKKyAgICAgICAgbWVtb3J5IGJvdW5kIGFu
ZCB0aGUgY29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGR1cmluZyBhIGZyYW1lIGFuZCB0aGUg
ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb3cgbWVtb3J5IGJvdW5kCisgICAgICAgIGFuZCB0aGUg
Y29udGVudHMgdGV4dHVyZSBtZW1vcnkgdXNlIGJldHdlZW4gZnJhbWVzLgorCisgICAgICAgIENv
dmVyZWQgYnkgZXhpc3RpbmcgY29tcG9zaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpyZWxlYXNlVGV4dHVyZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZVNoYXJlZE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVk
T2JqZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpyZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6c2V0TWVtb3J5TGltaXRCeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYW5hZ2VyOjpjdXJyZW50TWVtb3J5VXNlQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisKIDIwMTEtMDctMTkgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVudXNlZCBjb2RlIGlu
IEZvcm1EYXRhU3RyZWFtQ0ZOZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IDRhM2JhMTg2NTIyZDkwODI0MmM5NGM1ZDhiYWY1NDJmNjc3NTdkZGYuLjNiYzVjZTcx
YTY2MGM0MDMzZWYwMDEzODAwMGUxYzczYmY2MDdjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtMjEyLDggKzIxMiwxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6cmVsZWFzZVRleHR1cmVzKCkKICAgICAvLyBSZWR1Y2VzIHRleHR1cmUgbWVtb3J5
IHVzYWdlIHRvIHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzIGJ5IGRlbGV0aW5nIG5vbiByb290
IGxheWVyCiAgICAgLy8gdGV4dHVyZXMuCiAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnBy
b3RlY3RUaWxlVGV4dHVyZXMobV92aWV3cG9ydFZpc2libGVSZWN0KTsKLSAgICBtX3RleHR1cmVN
YW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlMb3dMaW1pdEJ5dGVzKTsK
LSAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJlTWVtb3J5TG93
TGltaXRCeXRlcyk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOworICAgIC8vIEV2aWN0IGFsbCBSZW5kZXJTdXJmYWNlIHRleHR1cmVzLgorICAg
IG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDAp
OwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVu
dHMoKQpAQCAtMzAzLDkgKzMwNiwxNiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJh
d0xheWVycygpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJl
TWFuYWdlci0+c2V0TWVtb3J5TGltaXRCeXRlcyh0ZXh0dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMg
LSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKTsKICAg
ICBkcmF3TGF5ZXJzKCptX2NvbXB1dGVkUmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBt
X3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOworICAgIG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQodGV4dHVyZU1lbW9yeVJlY2xhaW1MaW1p
dEJ5dGVzKTsKKworICAgIGlmICh0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgPiBtX2Nv
bnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpKQorICAgICAgICBt
X3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdCh0ZXh0dXJl
TWVtb3J5UmVjbGFpbUxpbWl0Qnl0ZXMgLSBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJl
bnRNZW1vcnlVc2VCeXRlcygpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwogCiAgICAgLy8gQWZ0ZXIgZHJh
d0xheWVyczoKICAgICBpZiAoaGFyZHdhcmVDb21wb3NpdGluZygpICYmIG1fY29udGV4dFN1cHBv
cnRzTGF0Y2gpIHsKQEAgLTM2OSw2ICszNzksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJzKExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKICAgICAg
ICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZVJlY3QobV9yb290TGF5ZXJUZXh0dXJl
VXBkYXRlci5nZXQoKSk7CiAgICAgfQogCisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5y
ZWR1Y2VNZW1vcnlUb0xpbWl0KHRleHR1cmVNZW1vcnlSZWNsYWltTGltaXRCeXRlcyk7CiAgICAg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIApA
QCAtMTE2NywxMCArMTE3OCw4IEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppbml0aWFs
aXplU2hhcmVkT2JqZWN0cygpCiAKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmZsdXNoKCkpOwogCi0gICAgVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNZW1vcnlMaW1pdHMgbGlt
aXRzOwotICAgIGxpbWl0cy51cHBlckxpbWl0ID0gdGV4dHVyZU1lbW9yeUhpZ2hMaW1pdEJ5dGVz
OwotICAgIGxpbWl0cy5yZWNsYWltTGltaXQgPSB0ZXh0dXJlTWVtb3J5UmVjbGFpbUxpbWl0Qnl0
ZXM7Ci0gICAgbV90ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9jb250
ZXh0LmdldCgpLCBsaW1pdHMsIG1fbWF4VGV4dHVyZVNpemUpOworICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpLCB0ZXh0
dXJlTWVtb3J5SGlnaExpbWl0Qnl0ZXMsIG1fbWF4VGV4dHVyZVNpemUpOworICAgIG1fcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtX2NvbnRleHQu
Z2V0KCksIHRleHR1cmVNZW1vcnlIaWdoTGltaXRCeXRlcywgbV9tYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzMDQsNyArMTMxMyw4IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjbGVhbnVwU2hhcmVkT2JqZWN0cygpCiAgICAgLy8gQ2xlYXIgdGlsZXJz
IGJlZm9yZSB0aGUgdGV4dHVyZSBtYW5hZ2VyLCBhcyB0aGV5IGhhdmUgcmVmZXJlbmNlcyB0byB0
ZXh0dXJlcy4KICAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci5jbGVhcigpOwogCi0gICAgbV90
ZXh0dXJlTWFuYWdlci5jbGVhcigpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci5jbGVh
cigpOworICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmNsZWFyKCk7CiB9CiAKIFN0
cmluZyBMYXllclJlbmRlcmVyQ2hyb21pdW06OmxheWVyVHJlZUFzVGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDkzOGUwNWY3ZTQ2YzA0NWI4Yjg4ZmQz
ZTU4Njk0ZmM1YjI0OTc5NjUuLjNlMWY2YWY0ZDUxOTc3ZTRjMzk3NWNkZWMyYzZhNTE4MjBmYTU2
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xNDIsNyArMTQyLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMs
IGNvbnN0IEludFJlY3QmIHJlY3QpOwogCi0gICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5h
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci5nZXQoKTsgfQorICAgIFRleHR1
cmVNYW5hZ2VyKiBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpOyB9CisgICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1
cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyLmdldCgpOyB9CiAKICAgICBDQ0hlYWRzVXBEaXNwbGF5KiBoZWFkc1VwRGlzcGxh
eSgpIHsgcmV0dXJuIG1faGVhZHNVcERpc3BsYXkuZ2V0KCk7IH0KIApAQCAtMjQzLDcgKzI0NCw4
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDVmlkZW9MYXllckltcGw6OllVVlByb2dyYW0+IG1f
dmlkZW9MYXllcllVVlByb2dyYW07CiAgICAgT3duUHRyPENDUGx1Z2luTGF5ZXJJbXBsOjpQcm9n
cmFtPiBtX3BsdWdpbkxheWVyUHJvZ3JhbTsKIAotICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
bV90ZXh0dXJlTWFuYWdlcjsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNU
ZXh0dXJlTWFuYWdlcjsKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fcmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyOwogCiAgICAgT3duUHRyPENDSGVhZHNVcERpc3BsYXk+IG1faGVhZHNV
cERpc3BsYXk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwCmluZGV4IDc2OWY4ZTcx
ZGIzYjg2ZDMxZmQ1ZjA0Y2M0NGNlZTdkMGI1NzZlMWEuLmEwYmQxMDhhODI1NGVjOWUzNmE4M2Qz
NTliNWE1YTg1YzY3N2M3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIExheWVyVGlsZXJDaHJvbWl1bTo6VGlsZSogTGF5ZXJUaWxlckNocm9t
aXVtOjpjcmVhdGVUaWxlKGludCBpLCBpbnQgaikKICAgICAgICAgQVNTRVJUKHRpbGUtPnJlZkNv
dW50KCkgPT0gMSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOwotICAgICAgICBUZXh0dXJlTWFuYWdlciog
bWFuYWdlciA9IGxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZU1hbmFnZXIoKTsKKyAgICAgICAgVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPmNvbnRlbnRzVGV4dHVyZU1h
bmFnZXIoKTsKICAgICAgICAgdGlsZSA9IGFkb3B0UmVmKG5ldyBUaWxlKExheWVyVGV4dHVyZTo6
Y3JlYXRlKGNvbnRleHQsIG1hbmFnZXIpKSk7CiAgICAgfQogICAgIG1fdGlsZXMuYWRkKG1ha2Vf
cGFpcihpLCBqKSwgdGlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcApp
bmRleCAyMWJhODE1NGZjYzNiMzVlZDg2MGM1ZDAxMDM1ZDdlZjc1MDM0MTRiLi42YTI3MjE2ZDAy
NGJlOTMxMmVmNjk2MjcxOTQyZTYyOTVkYjg0MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZh
Y2VDaHJvbWl1bS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgRmxvYXRSZWN0IFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiBib29sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSgpCiB7CiAgICAgSW50U2l6ZSByZXF1aXJl
ZFNpemUobV9jb250ZW50UmVjdC5zaXplKCkpOwotICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJl
TWFuYWdlciA9IGxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZU1hbmFnZXIoKTsKKyAgICBUZXh0dXJl
TWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyKCktPnJlbmRlclN1cmZhY2VU
ZXh0dXJlTWFuYWdlcigpOwogCiAgICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSkKICAgICAgICAg
bV9jb250ZW50c1RleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVyKCkt
PmNvbnRleHQoKSwgdGV4dHVyZU1hbmFnZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4
IDY2YTdkODEyNjRkNWYyNzMxMjA3YTFkMTM0MWUxODcxOTNkZmZmMjIuLjllNGVhMjg2NzhjYmY2
YWNhMGQxM2UxYmEwMmM1MWU0MTg2ZTI2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKQEAg
LTM4LDE1ICszOCwyMiBAQCBzdGF0aWMgc2l6ZV90IG1lbW9yeVVzZUJ5dGVzKEludFNpemUgc2l6
ZSwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCkKICAgICByZXR1cm4gc2l6ZS53aWR0aCgpICogc2l6
ZS5oZWlnaHQoKSAqIDQ7CiB9CiAKLVRleHR1cmVNYW5hZ2VyOjpUZXh0dXJlTWFuYWdlcihHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgVGV4dHVyZU1lbW9yeUxpbWl0cyYgbWVtb3J5
TGltaXRzLCBpbnQgbWF4VGV4dHVyZVNpemUpCitUZXh0dXJlTWFuYWdlcjo6VGV4dHVyZU1hbmFn
ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBtZW1vcnlMaW1pdEJ5dGVzLCBp
bnQgbWF4VGV4dHVyZVNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fbWVt
b3J5TGltaXRzKG1lbW9yeUxpbWl0cykKKyAgICAsIG1fbWVtb3J5TGltaXRCeXRlcyhtZW1vcnlM
aW1pdEJ5dGVzKQogICAgICwgbV9tZW1vcnlVc2VCeXRlcygwKQogICAgICwgbV9tYXhUZXh0dXJl
U2l6ZShtYXhUZXh0dXJlU2l6ZSkKICAgICAsIG1fbmV4dFRva2VuKDEpCiB7CiB9CiAKK3ZvaWQg
VGV4dHVyZU1hbmFnZXI6OnNldE1lbW9yeUxpbWl0Qnl0ZXMoc2l6ZV90IG1lbW9yeUxpbWl0Qnl0
ZXMpCit7CisgICAgcmVkdWNlTWVtb3J5VG9MaW1pdChtZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICBB
U1NFUlQoY3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPCBtZW1vcnlMaW1pdEJ5dGVzKTsKKyAgICBt
X21lbW9yeUxpbWl0Qnl0ZXMgPSBtZW1vcnlMaW1pdEJ5dGVzOworfQorCiBUZXh0dXJlVG9rZW4g
VGV4dHVyZU1hbmFnZXI6OmdldFRva2VuKCkKIHsKICAgICByZXR1cm4gbV9uZXh0VG9rZW4rKzsK
QEAgLTE0OCwxMCArMTU1LDExIEBAIHVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4
dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduCiAgICAgfQogCiAg
ICAgc2l6ZV90IG1lbW9yeVJlcXVpcmVkQnl0ZXMgPSBtZW1vcnlVc2VCeXRlcyhzaXplLCBmb3Jt
YXQpOworICAgIGlmIChtZW1vcnlSZXF1aXJlZEJ5dGVzID4gbV9tZW1vcnlMaW1pdEJ5dGVzKQor
ICAgICAgICByZXR1cm4gMDsKIAotICAgIC8vIFJlY2xhaW0gZXhpc3RpbmcgdW5yZXNlcnZlZCB0
ZXh0dXJlcyB0byB0cnkgdG8gc3RheSBiZWxvdyB0aGUgcmVjbGFpbSBsaW1pdC4KLSAgICByZWR1
Y2VNZW1vcnlUb0xpbWl0KHN0ZDo6bWF4KG1fbWVtb3J5TGltaXRzLnJlY2xhaW1MaW1pdCAtIG1l
bW9yeVJlcXVpcmVkQnl0ZXMsIHN0YXRpY19jYXN0PHNpemVfdD4oMCkpKTsKLSAgICBpZiAobV9t
ZW1vcnlVc2VCeXRlcyArIG1lbW9yeVJlcXVpcmVkQnl0ZXMgPiBtX21lbW9yeUxpbWl0cy51cHBl
ckxpbWl0KQorICAgIHJlZHVjZU1lbW9yeVRvTGltaXQobV9tZW1vcnlMaW1pdEJ5dGVzIC0gbWVt
b3J5UmVxdWlyZWRCeXRlcyk7CisgICAgaWYgKG1fbWVtb3J5VXNlQnl0ZXMgKyBtZW1vcnlSZXF1
aXJlZEJ5dGVzID4gbV9tZW1vcnlMaW1pdEJ5dGVzKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IHVuc2lnbmVkIHRleHR1cmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCmluZGV4IDljNjU4ZTQxMTc1
OWY0NDA1NDAxNWUwMTBkMTU1MjUyYTBkNDNhZmIuLmRhNjI4NmU5M2EzZDJlMTVjNDYxNjc2Yjhi
MmU3NmMwMWYyNzUzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaApAQCAtNDAsMTggKzQwLDEzIEBA
IHR5cGVkZWYgaW50IFRleHR1cmVUb2tlbjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFuYWdlcik7CiBwdWJsaWM6Ci0gICAgc3RydWN0
IFRleHR1cmVNZW1vcnlMaW1pdHMgewotICAgICAgICAvLyBNYXhpbXVtIHRleHR1cmUgYWxsb2Nh
dGlvbiBzaXplLgotICAgICAgICBzaXplX3QgdXBwZXJMaW1pdDsKLSAgICAgICAgLy8gTGltaXQg
b3ZlciB3aGljaCBleGlzdGluZyB1bnJlc2VydmVkIHRleHR1cmVzIHdpbGwgYmUgcmVjbGFpbWVk
LgotICAgICAgICBzaXplX3QgcmVjbGFpbUxpbWl0OwotICAgIH07Ci0KLSAgICBzdGF0aWMgUGFz
c093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBUZXh0dXJlTWVtb3J5TGltaXRzJiBtZW1vcnlMaW1pdHMsIGludCBtYXhUZXh0dXJl
U2l6ZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFuYWdlcj4gY3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgbWVtb3J5TGltaXRCeXRlcywgaW50IG1heFRl
eHR1cmVTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFu
YWdlcihjb250ZXh0LCBtZW1vcnlMaW1pdHMsIG1heFRleHR1cmVTaXplKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hbmFnZXIoY29udGV4dCwgbWVtb3J5TGltaXRCeXRl
cywgbWF4VGV4dHVyZVNpemUpKTsKICAgICB9CiAKKyAgICB2b2lkIHNldE1lbW9yeUxpbWl0Qnl0
ZXMoc2l6ZV90KTsKKwogICAgIFRleHR1cmVUb2tlbiBnZXRUb2tlbigpOwogICAgIHZvaWQgcmVs
ZWFzZVRva2VuKFRleHR1cmVUb2tlbik7CiAgICAgYm9vbCBoYXNUZXh0dXJlKFRleHR1cmVUb2tl
bik7CkBAIC02NCw5ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb3RlY3RlZChUZXh0
dXJlVG9rZW4pOwogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnlUb0xpbWl0KHNpemVfdCk7CisgICAg
c2l6ZV90IGN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNl
Qnl0ZXM7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlTWFuYWdlcihHcmFwaGljc0NvbnRleHQz
RCosIGNvbnN0IFRleHR1cmVNZW1vcnlMaW1pdHMmLCBpbnQgbWF4VGV4dHVyZVNpemUpOworICAg
IFRleHR1cmVNYW5hZ2VyKEdyYXBoaWNzQ29udGV4dDNEKiwgc2l6ZV90IG1lbW9yeUxpbWl0Qnl0
ZXMsIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAKICAgICBzdHJ1Y3QgVGV4dHVyZUluZm8gewogICAg
ICAgICBJbnRTaXplIHNpemU7CkBAIC04NCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVy
ZU1hcCBtX3RleHR1cmVzOwogICAgIExpc3RIYXNoU2V0PFRleHR1cmVUb2tlbj4gbV90ZXh0dXJl
TFJVU2V0OwogCi0gICAgVGV4dHVyZU1lbW9yeUxpbWl0cyBtX21lbW9yeUxpbWl0czsKKyAgICBz
aXplX3QgbV9tZW1vcnlMaW1pdEJ5dGVzOwogICAgIHNpemVfdCBtX21lbW9yeVVzZUJ5dGVzOwog
ICAgIGludCBtX21heFRleHR1cmVTaXplOwogICAgIFRleHR1cmVUb2tlbiBtX25leHRUb2tlbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggMjk1ZDMxMGRiNGYyZGJjY2Qx
MTkyY2M2NGViZjE0NDUwZjhlNWQwZS4uMGMwNzBjNWNlNTc3MDBiMTVlZDA5YjE3MGMxYTkyNDdi
NWVhMmY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KCkKIHsKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCA9IG1fbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogICAgIGlmICghbV9o
dWRUZXh0dXJlKQotICAgICAgICBtX2h1ZFRleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShj
b250ZXh0LCBtX2xheWVyUmVuZGVyZXItPnRleHR1cmVNYW5hZ2VyKCkpOworICAgICAgICBtX2h1
ZFRleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZShjb250ZXh0LCBtX2xheWVyUmVuZGVyZXIt
PnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIFVzZSBhIGZ1bGxzY3Jl
ZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNpemU7Cg==
</data>
<flag name="review"
          id="96686"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>