<?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>56514</bug_id>
          
          <creation_ts>2011-03-16 18:32:02 -0700</creation_ts>
          <short_desc>[chromium] Properly reset VideoLayerChromium textures after lost renderer context</short_desc>
          <delta_ts>2011-03-22 18:13:50 -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>0</everconfirmed>
          <reporter name="Victoria Kirst">vrk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>amarinichev</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kbr</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>368708</commentid>
    <comment_count>0</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-16 18:32:02 -0700</bug_when>
    <thetext>[chromium] Properly reset VideoLayerChromium textures after lost renderer context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368712</commentid>
    <comment_count>1</comment_count>
      <attachid>86017</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-16 18:44:02 -0700</bug_when>
    <thetext>Created attachment 86017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368719</commentid>
    <comment_count>2</comment_count>
      <attachid>86017</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-16 18:55:50 -0700</bug_when>
    <thetext>Comment on attachment 86017
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:96
&gt; +    if (replacingRenderer)
&gt; +        resetFrameParameters();

LayerChromium::setLayerRenderer() will call cleanupResources() if (layerRenderer() &amp;&amp; layerRenderer() != renderer), which will call releaseCurrentFrame() which contains a call to resetFrameParameters(). Doesn&apos;t that make this override redundant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368728</commentid>
    <comment_count>3</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-16 19:24:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 86017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86017&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:96
&gt; &gt; +    if (replacingRenderer)
&gt; &gt; +        resetFrameParameters();
&gt; 
&gt; LayerChromium::setLayerRenderer() will call cleanupResources() if (layerRenderer() &amp;&amp; layerRenderer() != renderer), which will call releaseCurrentFrame() which contains a call to resetFrameParameters(). Doesn&apos;t that make this override redundant?

Good question! It&apos;s not redundant because m_currentFrame can be null, and in that case releaseCurrentFrame() will not call resetFrameParameters() because it exits out early.

And actually, saveCurrentFrame/releaseCurrentFrame are hooks to be used when we have hardware decoding implemented in Chrome. Right now we don&apos;t have hardware decode implemented, so m_currentFrame is _always_ null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369280</commentid>
    <comment_count>4</comment_count>
      <attachid>86017</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-17 14:00:34 -0700</bug_when>
    <thetext>Comment on attachment 86017
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:96
&gt;&gt;&gt; +        resetFrameParameters();
&gt;&gt; 
&gt;&gt; LayerChromium::setLayerRenderer() will call cleanupResources() if (layerRenderer() &amp;&amp; layerRenderer() != renderer), which will call releaseCurrentFrame() which contains a call to resetFrameParameters(). Doesn&apos;t that make this override redundant?
&gt; 
&gt; Good question! It&apos;s not redundant because m_currentFrame can be null, and in that case releaseCurrentFrame() will not call resetFrameParameters() because it exits out early.
&gt; 
&gt; And actually, saveCurrentFrame/releaseCurrentFrame are hooks to be used when we have hardware decoding implemented in Chrome. Right now we don&apos;t have hardware decode implemented, so m_currentFrame is _always_ null.

Wouldn&apos;t it be better to move the call to resetFrameParameters() to the top of releaseCurrentFrame() in that case? It shouldn&apos;t be necessary to override setLayerRenderer unless something more than simple resource reallocation needs to occur in response.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369474</commentid>
    <comment_count>5</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-17 19:42:32 -0700</bug_when>
    <thetext>Hey Kenneth! Wanted your opinion on a style issue...

So essentially there are two types of VideoFrameChromiums, SystemMemory-backed frames and texture-backed frames Both frame types are saved into m_textures because we want the draw method to treat these the same way.

But for SystemMemory frames, we allocate and take of the textures, so we have to delete them after destruction. But if we&apos;re already given the textures, we do not take ownership, so we should not destroy them.

I was thinking I would create another m_textures field (i.e. m_texturesToPaint) that stores textures we&apos;re painting to screen. Then in m_textures we would keep textures we&apos;ve allocated and must delete (never ones we&apos;ve gotten from VideoFrameChromium) and m_texturesToPaint will be ones drawn to screen (either type of texture).

Does that sound reasonable?

(I am also planning on doing some general code clean-up and variable renaming because right now the code is pretty misleading/confusing wrt texture-backed frames.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369691</commentid>
    <comment_count>6</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-18 10:06:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
Ahhh ignore this comment, Ken! I&apos;m doing some more serious rewriting because this is pretty fragile. I will just upload the patch in a little bit. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369978</commentid>
    <comment_count>7</comment_count>
      <attachid>86234</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-18 15:56:31 -0700</bug_when>
    <thetext>Created attachment 86234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369985</commentid>
    <comment_count>8</comment_count>
      <attachid>86234</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-18 16:03:14 -0700</bug_when>
    <thetext>Comment on attachment 86234
Patch

The logic was getting pretty gross so I did some mild refactoring. Please let me know your thoughts and/or if you have questions about my changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369992</commentid>
    <comment_count>9</comment_count>
      <attachid>86234</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-18 16:14:43 -0700</bug_when>
    <thetext>Comment on attachment 86234
Patch

Ah there are a few more style mistakes I want to clean-up ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369996</commentid>
    <comment_count>10</comment_count>
      <attachid>86237</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-18 16:21:08 -0700</bug_when>
    <thetext>Created attachment 86237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370047</commentid>
    <comment_count>11</comment_count>
      <attachid>86237</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-18 17:52:02 -0700</bug_when>
    <thetext>Comment on attachment 86237
Patch

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

Looks better overall, but a few questions. Also please mark the bug cq? if you would like me to cq+ it.

&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:96
&gt; +        Texture texture = m_textures[plane];
&gt; +        if (!texture.isEmpty &amp;&amp; texture.ownedByLayerRenderer)
&gt; +            GLC(context, context-&gt;deleteTexture(texture.id));

The fact that this code is only in the destructor looks suspicious to me. Since cleanupResources() might be called multiple times (though perhaps only in response to the GPU process being restarted?) it seems this code should be placed elsewhere and called multiple times from code below. I might be wrong about that though.

&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:365
&gt; +        m_textures[plane].id = 0;
&gt; +        m_textures[plane].size = IntSize();
&gt; +        m_textures[plane].visibleSize = IntSize();
&gt; +        m_textures[plane].ownedByLayerRenderer = false;
&gt; +        m_textures[plane].isEmpty = true;

What if m_textures[plane] was previously non-empty and was owned by the layer renderer? The overwrite of id here will cause a resource leak. Or is it guaranteed that if this is called, m_textures only contained stale data from an earlier GPU process?

&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:378
&gt; +        m_textures[plane].id = frame-&gt;texture(plane);
&gt; +        m_textures[plane].size = frame-&gt;requiredTextureSize(plane);
&gt; +        m_textures[plane].visibleSize = computeVisibleSize(frame, plane);
&gt; +        m_textures[plane].ownedByLayerRenderer = false;
&gt; +        m_textures[plane].isEmpty = false;

Same basic question here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371647</commentid>
    <comment_count>12</comment_count>
      <attachid>86237</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-22 14:32:46 -0700</bug_when>
    <thetext>Comment on attachment 86237
Patch

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

I will update the patch to fix saveFrame/resetFrame! Would like amarinichev&apos;s OK before r+.

&gt;&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:96
&gt;&gt; +            GLC(context, context-&gt;deleteTexture(texture.id));
&gt; 
&gt; The fact that this code is only in the destructor looks suspicious to me. Since cleanupResources() might be called multiple times (though perhaps only in response to the GPU process being restarted?) it seems this code should be placed elsewhere and called multiple times from code below. I might be wrong about that though.

OK, looks like cleanupResources() is only called in response to a lost context.

(cleanupResources() is called from setLayerRenderer when a renderer is being replaced, and that seems to be triggered only if the context is lost at the end of WebViewImpl::composite().)

@amarinichev, can you confirm this is true?

&gt;&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:365
&gt;&gt; +        m_textures[plane].isEmpty = true;
&gt; 
&gt; What if m_textures[plane] was previously non-empty and was owned by the layer renderer? The overwrite of id here will cause a resource leak. Or is it guaranteed that if this is called, m_textures only contained stale data from an earlier GPU process?

Ah, yeah, I was assuming that if you start playing a video with software decoding, you will always use software decoding, and vice versa (meaning that resetFrameParameter() is always called when ownedByLayerRenderer is false). I will update the patch to be robust to this case, though.

&gt;&gt; Source/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:378
&gt;&gt; +        m_textures[plane].isEmpty = false;
&gt; 
&gt; Same basic question here.

I will similarly update this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371703</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Marinichev">amarinichev</who>
    <bug_when>2011-03-22 15:15:07 -0700</bug_when>
    <thetext>&gt; OK, looks like cleanupResources() is only called in response to a lost context.
&gt; 
&gt; (cleanupResources() is called from setLayerRenderer when a renderer is being replaced, and that seems to be triggered only if the context is lost at the end of WebViewImpl::composite().)
&gt; 
&gt; @amarinichev, can you confirm this is true?

Yes, lost context reallocates a renderer, and when the old renderer is destroyed, it calls its cleanupResources method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371778</commentid>
    <comment_count>14</comment_count>
      <attachid>86535</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2011-03-22 16:17:06 -0700</bug_when>
    <thetext>Created attachment 86535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371838</commentid>
    <comment_count>15</comment_count>
      <attachid>86535</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-03-22 17:06:00 -0700</bug_when>
    <thetext>Comment on attachment 86535
Patch

amarinichev indicated offline that this looks good, and looks good to me too. Nice work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371882</commentid>
    <comment_count>16</comment_count>
      <attachid>86535</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-22 18:13:44 -0700</bug_when>
    <thetext>Comment on attachment 86535
Patch

Clearing flags on attachment: 86535

Committed r81737: &lt;http://trac.webkit.org/changeset/81737&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371883</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-22 18:13:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86017</attachid>
            <date>2011-03-16 18:44:02 -0700</date>
            <delta_ts>2011-03-18 15:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56514-20110316184401.patch</filename>
            <type>text/plain</type>
            <size>3072</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEyNzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzAzMGRiZDk4ZDA5YWYw
MGVhYjMzMjljM2IxNWQyN2YyZmVjNGM3Li43YTY5MmY5MjMzNmY1NmVhMjgxMmYxZjA2MTBlNzQ2
MDM4ZDU0NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTYgIFZpY3Rv
cmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBQcm9wZXJseSByZXNldCBWaWRlb0xheWVy
Q2hyb21pdW0gdGV4dHVyZXMgYWZ0ZXIgbG9zdCByZW5kZXJlciBjb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjUxNAorCisgICAgICAgIFRo
ZSBWaWRlb0xheWVyQ2hyb21pdW0gdGV4dHVyZXMgd2VyZSBzdGlsbCBtYXBwZWQgdG8gdGhlIG9s
ZAorICAgICAgICByZW5kZXJlcidzIGNvbnRleHQgd2hlbiBMYXllclJlbmRlcmVyQ2hyb21pdW0g
d2FzIGJlaW5nIHJlY3JlYXRlZAorICAgICAgICBpLmUuIHdoZW4gR1BVIHByb2Nlc3MgaXMga2ls
bGVkLiBUaGlzIHBhdGNoIGFsbG93cyBWaWRlb0xheWVyQ2hyb21pdW0KKyAgICAgICAgcmVjcmVh
dGVzIHRleHR1cmVzIGluIHRoZSBuZXcgY29udGV4dCB3aGVuIHRoZSBvbGQgcmVuZGVyZXIgaXMg
bG9zdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06On5WaWRl
b0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6
c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmg6CisKIDIwMTEtMDMtMTYgIERhdmlkIExldmluICA8bGV2aW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIENocm9taXVtIExlb3BhcmQgYnVpbGQgZml4IGF0dGVt
cHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCA1ZDdhNmU3YWZlNTViZDgw
ZjlmZWZiMjRiOWY3Yzg3NDZiYTFhMzdiLi5lODZmOTAzYjliM2RhZTJmNTBiNjRkMDM0ZTkzMTU1
NTNiOWE4YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTcxLDEyICs3
MSw2IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQCiBWaWRlb0xheWVyQ2hyb21pdW06On5WaWRl
b0xheWVyQ2hyb21pdW0oKQogewogICAgIGNsZWFudXBSZXNvdXJjZXMoKTsKLX0KLQotdm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQotewotICAgIExheWVyQ2hyb21p
dW06OmNsZWFudXBSZXNvdXJjZXMoKTsKLSAgICByZWxlYXNlQ3VycmVudEZyYW1lKCk7CiAgICAg
aWYgKCFsYXllclJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtODcsNiArODEsMjEg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIH0KIH0K
IAordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQoreworICAgIExh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKKyAgICByZWxlYXNlQ3VycmVudEZyYW1l
KCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogcmVuZGVyZXIpCit7CisgICAgYm9vbCByZXBsYWNpbmdSZW5kZXJl
ciA9IGxheWVyUmVuZGVyZXIoKSAmJiBsYXllclJlbmRlcmVyKCkgIT0gcmVuZGVyZXI7CisgICAg
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihyZW5kZXJlcik7CisKKyAgICBpZiAocmVw
bGFjaW5nUmVuZGVyZXIpCisgICAgICAgIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7Cit9CisKIHZv
aWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogewogICAgIGlm
ICghbV9jb250ZW50c0RpcnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCAyMTcw
ZTEzNGE1OTJmODJiNDAwMjQ1MDJmNzBiOTRmYmE3NDM5YWY0Li5kZWQ2MDJhNzdmNDc2M2NkYWVl
ZWJmYmVjODc5OTkyYWY0ODQ1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAt
NTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YW51cFJlc291cmNlcygpOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNT
dHJpbmcoKSBjb25zdCB7IHJldHVybiAiVmlkZW9MYXllciI7IH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86234</attachid>
            <date>2011-03-18 15:56:31 -0700</date>
            <delta_ts>2011-03-18 16:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56514-20110318155629.patch</filename>
            <type>text/plain</type>
            <size>15065</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE1MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjQwNjMzN2QzNzNjNTM5
OWU2NzM3MTNhYWJiNTZiNzBkN2ExMmE0Li45MmM3ZmUwNzM3NWZiMTgzZTExZGEyZTY5Yzc2ZTIz
MjE2NGJjNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMTggIFZpY3Rv
cmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBQcm9wZXJseSByZXNldCBWaWRlb0xheWVy
Q2hyb21pdW0gdGV4dHVyZXMgYWZ0ZXIgbG9zdCByZW5kZXJlciBjb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjUxNAorCisgICAgICAgIFRo
ZSBWaWRlb0xheWVyQ2hyb21pdW0gdGV4dHVyZXMgd2VyZSBzdGlsbCBtYXBwZWQgdG8gdGhlIG9s
ZAorICAgICAgICByZW5kZXJlcidzIGNvbnRleHQgd2hlbiBMYXllclJlbmRlcmVyQ2hyb21pdW0g
d2FzIGJlaW5nIHJlY3JlYXRlZAorICAgICAgICBpLmUuIHdoZW4gR1BVIHByb2Nlc3MgaXMga2ls
bGVkLiBUaGlzIHBhdGNoIGFsbG93cyBWaWRlb0xheWVyQ2hyb21pdW0KKyAgICAgICAgaXQgcmVj
cmVhdGUgdGV4dHVyZXMgaW4gdGhlIG5ldyBjb250ZXh0IHdoZW4gdGhlIG9sZCByZW5kZXJlciBp
cyBsb3N0LgorICAgICAgICBJdCBhbHNvIGRvZXMgYSBiaXQgb2YgcmVmYWN0b3JpbmcuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRl
bnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmFsbG9j
YXRlVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OmNvbXB1dGVWaXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hy
b21pdW06OmRyYXdZVVYpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpk
cmF3UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnJlc2V0RnJh
bWVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6c2F2
ZUN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmg6CisKIDIwMTEtMDMtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmNwcAppbmRleCAwMWJmOTQ4ODNjYTRkMTA1ODExMmM3N2JhODY1Mjk2
NTA4MjdjMjIzLi42ODgzMWI5ZDhhZGQ5NmNhZjhiNDVmMTNmOTc1NTNkMWU0MWQ3NjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg1LDIyICs4NSwyNyBAQCBWaWRlb0xh
eWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93
bmVyLCBWaWRlb0ZyYW1lUAogVmlkZW9MYXllckNocm9taXVtOjp+VmlkZW9MYXllckNocm9taXVt
KCkKIHsKICAgICBjbGVhbnVwUmVzb3VyY2VzKCk7Ci19CiAKLXZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKLXsKLSAgICBMYXllckNocm9taXVtOjpjbGVhbnVwUmVz
b3VyY2VzKCk7Ci0gICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbGF5ZXJSZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7
IHBsYW5lIDwgVmlkZW9GcmFtZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5lKyspIHsKLSAgICAg
ICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdKQotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlc1twbGFuZV0pKTsKKyAgICAgICAgVGV4dHVyZSB0
ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CisgICAgICAgIGlmICghdGV4dHVyZS5pc0VtcHR5
ICYmIHRleHR1cmUub3duZWRCeUxheWVyUmVuZGVyZXIpCisgICAgICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlLmlkKSk7CiAgICAgfQogfQogCit2b2lk
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCit7CisgICAgTGF5ZXJDaHJv
bWl1bTo6Y2xlYW51cFJlc291cmNlcygpOworICAgIGlmIChtX2N1cnJlbnRGcmFtZSkKKyAgICAg
ICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgpOworICAgIGVsc2UKKyAgICAgICAgcmVzZXRGcmFtZVBh
cmFtZXRlcnMoKTsKK30KKwogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRz
SWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRzRGlydHkpCkBAIC0xMzAsNiArMTM1LDkg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBJZiB0aGUgaW5jb21pbmcgZnJhbWUgaXMgYmFj
a2VkIGJ5IGEgdGV4dHVyZSAoaS5lLiBkZWNvZGVkIGluIGhhcmR3YXJlKSwKKyAgICAvLyB0aGVu
IHdlIGRvIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGEgdGV4dHVyZSB2aWEgdGhlIGxheWVyIHJlbmRl
cmVyLiBJbnN0ZWFkCisgICAgLy8gd2Ugc2F2ZSB0aGUgdGV4dHVyZSBkYXRhIHRoZW4gZXhpdC4K
ICAgICBpZiAoZnJhbWUtPnN1cmZhY2VUeXBlKCkgPT0gVmlkZW9GcmFtZUNocm9taXVtOjpUeXBl
VGV4dHVyZSkgewogICAgICAgICByZWxlYXNlQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIHNhdmVD
dXJyZW50RnJhbWUoZnJhbWUpOwpAQCAtMTUwLDggKzE1OCw5IEBAIHZvaWQgVmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogCiAgICAgLy8gVXBkYXRlIHRleHR1cmUg
cGxhbmVzLgogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFu
ZXMoKTsgcGxhbmUrKykgewotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNp
emUocGxhbmUpID09IG1fdGV4dHVyZVNpemVzW3BsYW5lXSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1
cmUoY29udGV4dCwgbV90ZXh0dXJlc1twbGFuZV0sIGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXpl
KHBsYW5lKSwgdGV4dHVyZUZvcm1hdCwgZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAgICAgICAgVGV4
dHVyZSB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CisgICAgICAgIEFTU0VSVChmcmFtZS0+
cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0gdGV4dHVyZS5zaXplKTsKKyAgICAgICAgdXBk
YXRlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLmlkLCB0ZXh0dXJlLnNpemUsIHRleHR1cmVGb3Jt
YXQsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CiAgICAgfQogCiAgICAgbV9kaXJ0eVJlY3Quc2V0U2l6
ZShGbG9hdFNpemUoKSk7CkBAIC0xNzQsNDcgKzE4Myw1OSBAQCB1bnNpZ25lZCBWaWRlb0xheWVy
Q2hyb21pdW06OmRldGVybWluZVRleHR1cmVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtKiBmcmFt
ZSkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUU7CiB9CiAKLWJv
b2wgVmlkZW9MYXllckNocm9taXVtOjphbGxvY2F0ZVRleHR1cmVzSWZOZWVkZWQoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIHVuc2lnbmVkIHRl
eHR1cmVGb3JtYXQpCitib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6YWxsb2NhdGVUZXh0dXJlc0lm
TmVlZGVkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBWaWRlb0ZyYW1lQ2hyb21p
dW0qIGZyYW1lLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KQogewogICAgIEFTU0VSVChjb250ZXh0
KTsKICAgICBBU1NFUlQoZnJhbWUpOwogCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBs
YW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7Ci0gICAgICAgIEludFNpemUgcGxhbmVU
ZXh0dXJlU2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAg
SW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplID0gZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUo
cGxhbmUpOworICAgICAgICBUZXh0dXJlIHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKIAog
ICAgICAgICAvLyBJZiB0aGUgcmVuZGVyZXIgY2Fubm90IGhhbmRsZSB0aGlzIGxhcmdlIG9mIGEg
dGV4dHVyZSwgcmV0dXJuIGZhbHNlLgogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVz
dCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1wbGVtZW50ZWQuCi0gICAgICAgIGlmICghbGF5ZXJS
ZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKHBsYW5lVGV4dHVyZVNpemUpKQorICAgICAgICBp
ZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6ZShyZXF1aXJlZFRleHR1cmVTaXpl
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fdGV4dHVyZXNb
cGxhbmVdKQotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0gPSBsYXllclJlbmRlcmVyKCkt
PmNyZWF0ZUxheWVyVGV4dHVyZSgpOwotCi0gICAgICAgIGlmICghcGxhbmVUZXh0dXJlU2l6ZS5p
c1plcm8oKSAmJiBwbGFuZVRleHR1cmVTaXplICE9IG1fdGV4dHVyZVNpemVzW3BsYW5lXSkgewot
ICAgICAgICAgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIG1fdGV4dHVyZXNbcGxhbmVdLCBw
bGFuZVRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKLSAgICAgICAgICAgIG1fdGV4dHVyZVNp
emVzW3BsYW5lXSA9IHBsYW5lVGV4dHVyZVNpemU7Ci0gICAgICAgICAgICBpbnQgZnJhbWVXaWR0
aCA9IGZyYW1lLT53aWR0aChwbGFuZSk7Ci0gICAgICAgICAgICBpbnQgZnJhbWVIZWlnaHQgPSBm
cmFtZS0+aGVpZ2h0KHBsYW5lKTsKLSAgICAgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIGRlYWQg
cGl4ZWxzIGF0IHRoZSBlZGdlIG9mIHRoZSB0ZXh0dXJlLCBkZWNyZWFzZQotICAgICAgICAgICAg
Ly8gdGhlIGZyYW1lIHdpZHRoIGJ5IDEgdG8gcHJldmVudCB0aGUgcmlnaHRtb3N0IHBpeGVscyBm
cm9tCi0gICAgICAgICAgICAvLyBpbnRlcnBvbGF0aW5nIHdpdGggdGhlIGRlYWQgcGl4ZWxzLgot
ICAgICAgICAgICAgaWYgKGZyYW1lLT5oYXNQYWRkaW5nQnl0ZXMocGxhbmUpKQotICAgICAgICAg
ICAgICAgIC0tZnJhbWVXaWR0aDsKLSAgICAgICAgICAgIG1fZnJhbWVTaXplc1twbGFuZV0gPSBJ
bnRTaXplKGZyYW1lV2lkdGgsIGZyYW1lSGVpZ2h0KTsKKyAgICAgICAgaWYgKHRleHR1cmUuaXNF
bXB0eSkgeworICAgICAgICAgICAgdGV4dHVyZS5pZCA9IGxheWVyUmVuZGVyZXIoKS0+Y3JlYXRl
TGF5ZXJUZXh0dXJlKCk7CisgICAgICAgICAgICB0ZXh0dXJlLm93bmVkQnlMYXllclJlbmRlcmVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHRleHR1cmUuaXNFbXB0eSA9IGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFyZXF1aXJlZFRleHR1cmVTaXplLmlzWmVybygpICYmIHJlcXVpcmVk
VGV4dHVyZVNpemUgIT0gdGV4dHVyZS5zaXplKSB7CisgICAgICAgICAgICBhbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgdGV4dHVyZS5pZCwgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1h
dCk7CisgICAgICAgICAgICB0ZXh0dXJlLnNpemUgPSByZXF1aXJlZFRleHR1cmVTaXplOworICAg
ICAgICAgICAgdGV4dHVyZS52aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwg
cGxhbmUpOwogICAgICAgICB9CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdID0gdGV4dHVyZTsK
ICAgICB9CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW50U2l6ZSBWaWRlb0xheWVyQ2hyb21p
dW06OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCB1
bnNpZ25lZCBwbGFuZSkKK3sKKyAgICBpbnQgdmlzaWJsZVdpZHRoID0gZnJhbWUtPndpZHRoKHBs
YW5lKTsKKyAgICBpbnQgdmlzaWJsZUhlaWdodCA9IGZyYW1lLT5oZWlnaHQocGxhbmUpOworICAg
IC8vIFdoZW4gdGhlcmUgYXJlIGRlYWQgcGl4ZWxzIGF0IHRoZSBlZGdlIG9mIHRoZSB0ZXh0dXJl
LCBkZWNyZWFzZQorICAgIC8vIHRoZSBmcmFtZSB3aWR0aCBieSAxIHRvIHByZXZlbnQgdGhlIHJp
Z2h0bW9zdCBwaXhlbHMgZnJvbQorICAgIC8vIGludGVycG9sYXRpbmcgd2l0aCB0aGUgZGVhZCBw
aXhlbHMuCisgICAgaWYgKGZyYW1lLT5oYXNQYWRkaW5nQnl0ZXMocGxhbmUpKQorICAgICAgICAt
LXZpc2libGVXaWR0aDsKKwogICAgIC8vIEluIFlWMTIsIGV2ZXJ5IDJ4MiBzcXVhcmUgb2YgWSB2
YWx1ZXMgY29ycmVzcG9uZHMgdG8gb25lIFUgYW5kCiAgICAgLy8gb25lIFYgdmFsdWUuIElmIHdl
IGRlY3JlYXNlIHRoZSB3aWR0aCBvZiB0aGUgVVYgcGxhbmUsIHdlIG11c3QgZGVjcmVhc2UgdGhl
CiAgICAgLy8gd2lkdGggb2YgdGhlIFkgdGV4dHVyZSBieSAyIGZvciBwcm9wZXIgYWxpZ25tZW50
LiBUaGlzIG11c3QgaGFwcGVuCiAgICAgLy8gYWx3YXlzLCBldmVuIGlmIFkncyB0ZXh0dXJlIGRv
ZXMgbm90IGhhdmUgcGFkZGluZyBieXRlcy4KLSAgICBpZiAoZnJhbWUtPmZvcm1hdCgpID09IFZp
ZGVvRnJhbWVDaHJvbWl1bTo6WVYxMikgewotICAgICAgICBpbnQgeVBsYW5lT3JpZ2luYWxXaWR0
aCA9IGZyYW1lLT53aWR0aChWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZSk7Ci0gICAgICAgIGlm
IChmcmFtZS0+aGFzUGFkZGluZ0J5dGVzKFZpZGVvRnJhbWVDaHJvbWl1bTo6dVBsYW5lKSkKLSAg
ICAgICAgICAgIG1fZnJhbWVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0uc2V0V2lk
dGgoeVBsYW5lT3JpZ2luYWxXaWR0aCAtIDIpOworICAgIGlmIChwbGFuZSA9PSBWaWRlb0ZyYW1l
Q2hyb21pdW06OnlQbGFuZSAmJiBmcmFtZS0+Zm9ybWF0KCkgPT0gVmlkZW9GcmFtZUNocm9taXVt
OjpZVjEyKSB7CisgICAgICAgIGlmIChmcmFtZS0+aGFzUGFkZGluZ0J5dGVzKFZpZGVvRnJhbWVD
aHJvbWl1bTo6dVBsYW5lKSkgeworICAgICAgICAgICAgaW50IG9yaWdpbmFsV2lkdGggPSBmcmFt
ZS0+d2lkdGgocGxhbmUpOworICAgICAgICAgICAgdmlzaWJsZVdpZHRoID0gb3JpZ2luYWxXaWR0
aCAtIDI7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
SW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCiB2b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1
bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRpbWVuc2lvbnMsIHVuc2lnbmVkIHRl
eHR1cmVGb3JtYXQpCkBAIC0yNzksMjIgKzMwMCwyMiBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6cmVsZWFzZUN1cnJlbnRGcmFtZSgpCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lV
Vihjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dyYW0pCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOworICAg
IFRleHR1cmUgeVRleHR1cmUgPSBtX3RleHR1cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5l
XTsKKyAgICBUZXh0dXJlIHVUZXh0dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06
OnVQbGFuZV07CisgICAgVGV4dHVyZSB2VGV4dHVyZSA9IG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNo
cm9taXVtOjp2UGxhbmVdOworCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVz
W1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgeVRleHR1cmUuaWQp
KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRTIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9t
aXVtOjp1UGxhbmVdKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB1VGV4dHVyZS5pZCkpOwogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMykp
OwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnZQbGFuZV0pKTsK
KyAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHZUZXh0dXJlLmlkKSk7CiAKICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNo
YWRlcihwcm9ncmFtLT5wcm9ncmFtKCkpOwotICAgIHVuc2lnbmVkIHlGcmFtZVdpZHRoID0gbV9m
cmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXS53aWR0aCgpOwotICAgIHVuc2ln
bmVkIHlUZXh0dXJlV2lkdGggPSBtX3RleHR1cmVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQ
bGFuZV0ud2lkdGgoKTsKLSAgICAvLyBBcmJpdHJhcmlseSB0YWtlIHRoZSB1IHNpemVzIGJlY2F1
c2UgdSBhbmQgdiBkaW1lbnNpb25zIGFyZSBpZGVudGljYWwuCi0gICAgdW5zaWduZWQgdXZGcmFt
ZVdpZHRoID0gbV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6dVBsYW5lXS53aWR0aCgp
OwotICAgIHVuc2lnbmVkIHV2VGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFt
ZUNocm9taXVtOjp1UGxhbmVdLndpZHRoKCk7CiAKLSAgICBmbG9hdCB5V2lkdGhTY2FsZUZhY3Rv
ciA9IHN0YXRpY19jYXN0PGZsb2F0Pih5RnJhbWVXaWR0aCkgLyB5VGV4dHVyZVdpZHRoOwotICAg
IGZsb2F0IHV2V2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZsb2F0Pih1dkZyYW1lV2lk
dGgpIC8gdXZUZXh0dXJlV2lkdGg7CisgICAgZmxvYXQgeVdpZHRoU2NhbGVGYWN0b3IgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oeVRleHR1cmUudmlzaWJsZVNpemUud2lkdGgoKSkgLyB5VGV4dHVyZS5z
aXplLndpZHRoKCk7CisgICAgLy8gQXJiaXRyYXJpbHkgdGFrZSB0aGUgdSBzaXplcyBiZWNhdXNl
IHUgYW5kIHYgZGltZW5zaW9ucyBhcmUgaWRlbnRpY2FsLgorICAgIGZsb2F0IHV2V2lkdGhTY2Fs
ZUZhY3RvciA9IHN0YXRpY19jYXN0PGZsb2F0Pih1VGV4dHVyZS52aXNpYmxlU2l6ZS53aWR0aCgp
KSAvIHVUZXh0dXJlLnNpemUud2lkdGgoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5p
Zm9ybTFmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnlXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24o
KSwgeVdpZHRoU2NhbGVGYWN0b3IpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9y
bTFmKHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCks
IHV2V2lkdGhTY2FsZUZhY3RvcikpOwogCkBAIC0zMTcsMTMgKzMzOCwxMyBAQCB2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dy
YW0qIHByb2dyYW0pCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1JHQkEoY29uc3QgVmlk
ZW9MYXllckNocm9taXVtOjpSR0JBUHJvZ3JhbSogcHJvZ3JhbSkKIHsKICAgICBHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CisgICAgVGV4dHVyZSB0
ZXh0dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXTsKKwogICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJn
YlBsYW5lXSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS5pZCkpOwogCiAgICAgbGF5ZXJSZW5kZXJl
cigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgpKTsKLSAgICB1bnNpZ25lZCBmcmFtZVdp
ZHRoID0gbV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6cmdiUGxhbmVdLndpZHRoKCk7
Ci0gICAgdW5zaWduZWQgdGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNo
cm9taXVtOjpyZ2JQbGFuZV0ud2lkdGgoKTsKLSAgICBmbG9hdCB3aWR0aFNjYWxlRmFjdG9yID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYW1lV2lkdGgpIC8gdGV4dHVyZVdpZHRoOworICAgIGZsb2F0
IHdpZHRoU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4odGV4dHVyZS52aXNpYmxlU2l6
ZS53aWR0aCgpKSAvIHRleHR1cmUuc2l6ZS53aWR0aCgpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRp
b24oKSwgMCwgMCwgd2lkdGhTY2FsZUZhY3RvciwgMSkpOwogCiAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLnNhbXBsZXJMb2NhdGlv
bigpLCAwKSk7CkBAIC0zMzcsOSArMzU4LDExIEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpk
cmF3UkdCQShjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtKiBwcm9ncmFtCiB2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXRGcmFtZVBhcmFtZXRlcnMoKQogewogICAgIGZv
ciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IFZpZGVvRnJhbWVDaHJvbWl1bTo6bWF4UGxh
bmVzOyBwbGFuZSsrKSB7Ci0gICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdID0gMDsKLSAgICAgICAg
bV90ZXh0dXJlU2l6ZXNbcGxhbmVdID0gSW50U2l6ZSgpOwotICAgICAgICBtX2ZyYW1lU2l6ZXNb
cGxhbmVdID0gSW50U2l6ZSgpOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5pZCA9IDA7Cisg
ICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLnNpemUgPSBJbnRTaXplKCk7CisgICAgICAgIG1fdGV4
dHVyZXNbcGxhbmVdLnZpc2libGVTaXplID0gSW50U2l6ZSgpOworICAgICAgICBtX3RleHR1cmVz
W3BsYW5lXS5vd25lZEJ5TGF5ZXJSZW5kZXJlciA9IGZhbHNlOworICAgICAgICBtX3RleHR1cmVz
W3BsYW5lXS5pc0VtcHR5ID0gdHJ1ZTsKICAgICB9CiB9CiAKQEAgLTM0OCw5ICszNzEsMTEgQEAg
dm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnNhdmVDdXJyZW50RnJhbWUoVmlkZW9GcmFtZUNocm9t
aXVtKiBmcmFtZSkKICAgICBBU1NFUlQoIW1fY3VycmVudEZyYW1lKTsKICAgICBtX2N1cnJlbnRG
cmFtZSA9IGZyYW1lOwogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1l
LT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBtX3RleHR1cmVzW3BsYW5lXSA9IGZyYW1l
LT50ZXh0dXJlKHBsYW5lKTsKLSAgICAgICAgbV90ZXh0dXJlU2l6ZXNbcGxhbmVdID0gZnJhbWUt
PnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpOwotICAgICAgICBtX2ZyYW1lU2l6ZXNbcGxhbmVd
ID0gbV90ZXh0dXJlU2l6ZXNbcGxhbmVdOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5pZCA9
IGZyYW1lLT50ZXh0dXJlKHBsYW5lKTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0uc2l6ZSA9
IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAgbV90ZXh0dXJlc1tw
bGFuZV0udmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAg
ICAgICAgbV90ZXh0dXJlc1twbGFuZV0ub3duZWRCeUxheWVyUmVuZGVyZXIgPSBmYWxzZTsKKyAg
ICAgICAgbV90ZXh0dXJlc1twbGFuZV0uaXNFbXB0eSA9IGZhbHNlOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCBjNjljYzdlZDJkNTY0YjBiOTk0MjI4MTRjOWMz
MDU1MzkwMjFiZDcyLi5iZDQ3NzA0YzhkZTc4OTliOWFkNjljNmIzODE1NDU0NmJiNDI2YjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDIsNiArNDIsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEgVmlkZW8gZWxlbWVudC4KIGNs
YXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
KyAgICBzdHJ1Y3QgVGV4dHVyZSB7CisgICAgICAgIHVuc2lnbmVkIGlkOworICAgICAgICBJbnRT
aXplIHNpemU7CisgICAgICAgIEludFNpemUgdmlzaWJsZVNpemU7CisgICAgICAgIGJvb2wgb3du
ZWRCeUxheWVyUmVuZGVyZXI7CisgICAgICAgIGJvb2wgaXNFbXB0eTsKKyAgICB9OworCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lciA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwogICAgIHZpcnR1YWwgflZp
ZGVvTGF5ZXJDaHJvbWl1bSgpOwpAQCAtNjQsOSArNzIsMTAgQEAgcHJpdmF0ZToKICAgICBWaWRl
b0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciwgVmlkZW9GcmFtZVBy
b3ZpZGVyKik7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChW
aWRlb0ZyYW1lQ2hyb21pdW0qKTsKLSAgICBib29sIGFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQzRCosIFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHRleHR1cmVG
b3JtYXQpOworICAgIGJvb2wgYWxsb2NhdGVUZXh0dXJlc0lmTmVlZGVkKEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7
CiAgICAgdm9pZCB1cGRhdGVZVVZDb250ZW50cyhHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFZp
ZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlUkdCQUNvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dDNEKiwgY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKik7CisgICAgSW50U2l6ZSBjb21w
dXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgcGxhbmUp
OwogICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
dGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0ZXh0dXJlRm9y
bWF0KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25l
ZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRpbWVuc2lvbnMsIHVuc2lnbmVkIHRleHR1cmVG
b3JtYXQsIGNvbnN0IHZvaWQqIGRhdGEpOwogICAgIHZvaWQgZHJhd1lVVihjb25zdCBZVVZQcm9n
cmFtKik7CkBAIC04MCwxMSArODksMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2tpcHNEcmF3
OwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9ybWF0IG1fZnJhbWVGb3JtYXQ7CiAgICAgVmlk
ZW9GcmFtZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwotICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9j
dXJyZW50RnJhbWU7CiAKLSAgICB1bnNpZ25lZCBtX3RleHR1cmVzWzNdOwotICAgIEludFNpemUg
bV90ZXh0dXJlU2l6ZXNbM107Ci0gICAgSW50U2l6ZSBtX2ZyYW1lU2l6ZXNbM107CisgICAgVGV4
dHVyZSBtX3RleHR1cmVzWzNdOworCisgICAgLy8gVGhpcyB3aWxsIGJlIG51bGwgZm9yIHRoZSBl
bnRpcmUgZHVyYXRpb24gb2YgdmlkZW8gcGxheWJhY2sgaWYgaGFyZHdhcmUKKyAgICAvLyBkZWNv
ZGluZyBpcyBub3QgYmVpbmcgdXNlZC4KKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fY3VycmVu
dEZyYW1lOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86237</attachid>
            <date>2011-03-18 16:21:08 -0700</date>
            <delta_ts>2011-03-22 16:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56514-20110318162107.patch</filename>
            <type>text/plain</type>
            <size>17144</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE1MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjQwNjMzN2QzNzNjNTM5
OWU2NzM3MTNhYWJiNTZiNzBkN2ExMmE0Li4yNjkwN2QxYjBlMWRkODRkNmUzNDdjZWIxM2JhYzIy
NGYzMDI5MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMTggIFZpY3Rv
cmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBQcm9wZXJseSByZXNldCBWaWRlb0xheWVy
Q2hyb21pdW0gdGV4dHVyZXMgYWZ0ZXIgbG9zdCByZW5kZXJlciBjb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjUxNAorCisgICAgICAgIFRo
ZSBWaWRlb0xheWVyQ2hyb21pdW0gdGV4dHVyZXMgd2VyZSBzdGlsbCBtYXBwZWQgdG8gdGhlIG9s
ZAorICAgICAgICByZW5kZXJlcidzIGNvbnRleHQgd2hlbiBMYXllclJlbmRlcmVyQ2hyb21pdW0g
d2FzIGJlaW5nIHJlY3JlYXRlZAorICAgICAgICBpLmUuIHdoZW4gR1BVIHByb2Nlc3MgaXMga2ls
bGVkLiBUaGlzIHBhdGNoIGFsbG93cyBWaWRlb0xheWVyQ2hyb21pdW0KKyAgICAgICAgaXQgcmVj
cmVhdGUgdGV4dHVyZXMgaW4gdGhlIG5ldyBjb250ZXh0IHdoZW4gdGhlIG9sZCByZW5kZXJlciBp
cyBsb3N0LgorICAgICAgICBQYXRjaCBhbHNvIGRvZXMgYSBiaXQgb2YgcmVmYWN0b3JpbmcgYW5k
IGNvZGUgY2xlYW4tdXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtOjp+VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0xheWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OnJlc2V0RnJhbWVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6c2F2ZUN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisKIDIwMTEtMDMtMTggIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCAwMWJmOTQ4ODNj
YTRkMTA1ODExMmM3N2JhODY1Mjk2NTA4MjdjMjIzLi4zMzI2MTc1YzViZTNkNGY2YzUzZDM0NDZl
MWQwY2UxMGNiNWJhOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg1
LDIyICs4NSwyNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUAogVmlkZW9MYXllckNocm9taXVt
Ojp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKICAgICBjbGVhbnVwUmVzb3VyY2VzKCk7Ci19CiAK
LXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKLXsKLSAgICBMYXll
ckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7Ci0gICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgp
OwogICAgIGlmICghbGF5ZXJSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgVmlkZW9GcmFtZUNocm9taXVtOjptYXhQbGFu
ZXM7IHBsYW5lKyspIHsKLSAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdKQotICAgICAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUobV90ZXh0dXJlc1twbGFuZV0p
KTsKKyAgICAgICAgVGV4dHVyZSB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CisgICAgICAg
IGlmICghdGV4dHVyZS5pc0VtcHR5ICYmIHRleHR1cmUub3duZWRCeUxheWVyUmVuZGVyZXIpCisg
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlLmlk
KSk7CiAgICAgfQogfQogCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNl
cygpCit7CisgICAgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOworICAgIGlmICht
X2N1cnJlbnRGcmFtZSkKKyAgICAgICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgpOworICAgIGVsc2UK
KyAgICAgICAgcmVzZXRGcmFtZVBhcmFtZXRlcnMoKTsKK30KKwogdm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRzRGly
dHkpCkBAIC0xMzAsNiArMTM1LDkgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzSWZEaXJ0eSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBJZiB0aGUg
aW5jb21pbmcgZnJhbWUgaXMgYmFja2VkIGJ5IGEgdGV4dHVyZSAoaS5lLiBkZWNvZGVkIGluIGhh
cmR3YXJlKSwKKyAgICAvLyB0aGVuIHdlIGRvIG5vdCBuZWVkIHRvIGFsbG9jYXRlIGEgdGV4dHVy
ZSB2aWEgdGhlIGxheWVyIHJlbmRlcmVyLiBJbnN0ZWFkCisgICAgLy8gd2Ugc2F2ZSB0aGUgdGV4
dHVyZSBkYXRhIHRoZW4gZXhpdC4KICAgICBpZiAoZnJhbWUtPnN1cmZhY2VUeXBlKCkgPT0gVmlk
ZW9GcmFtZUNocm9taXVtOjpUeXBlVGV4dHVyZSkgewogICAgICAgICByZWxlYXNlQ3VycmVudEZy
YW1lKCk7CiAgICAgICAgIHNhdmVDdXJyZW50RnJhbWUoZnJhbWUpOwpAQCAtMTUwLDggKzE1OCw5
IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogCiAg
ICAgLy8gVXBkYXRlIHRleHR1cmUgcGxhbmVzLgogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAw
OyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBBU1NFUlQoZnJh
bWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IG1fdGV4dHVyZVNpemVzW3BsYW5lXSk7
Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4dCwgbV90ZXh0dXJlc1twbGFuZV0sIGZyYW1l
LT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKSwgdGV4dHVyZUZvcm1hdCwgZnJhbWUtPmRhdGEo
cGxhbmUpKTsKKyAgICAgICAgVGV4dHVyZSB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07Cisg
ICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0gdGV4dHVy
ZS5zaXplKTsKKyAgICAgICAgdXBkYXRlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLmlkLCB0ZXh0
dXJlLnNpemUsIHRleHR1cmVGb3JtYXQsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CiAgICAgfQogCiAg
ICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShGbG9hdFNpemUoKSk7CkBAIC0xNjAsNyArMTY5LDcgQEAg
dm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSgpCiAgICAgbV9w
cm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKIH0KIAotdW5zaWduZWQgVmlkZW9MYXll
ckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bSogZnJh
bWUpCit1bnNpZ25lZCBWaWRlb0xheWVyQ2hyb21pdW06OmRldGVybWluZVRleHR1cmVGb3JtYXQo
Y29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSkKIHsKICAgICBzd2l0Y2ggKGZyYW1lLT5m
b3JtYXQoKSkgewogICAgIGNhc2UgVmlkZW9GcmFtZUNocm9taXVtOjpZVjEyOgpAQCAtMTc0LDU2
ICsxODMsNjggQEAgdW5zaWduZWQgVmlkZW9MYXllckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJl
Rm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUpCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX1ZBTFVFOwogfQogCi1ib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6YWxs
b2NhdGVUZXh0dXJlc0lmTmVlZGVkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBWaWRlb0Zy
YW1lQ2hyb21pdW0qIGZyYW1lLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KQorYm9vbCBWaWRlb0xh
eWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgdW5zaWduZWQgdGV4dHVy
ZUZvcm1hdCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKIAog
ICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxh
bmUrKykgewotICAgICAgICBJbnRTaXplIHBsYW5lVGV4dHVyZVNpemUgPSBmcmFtZS0+cmVxdWly
ZWRUZXh0dXJlU2l6ZShwbGFuZSk7CisgICAgICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6
ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAgVGV4dHVyZSB0
ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CiAKICAgICAgICAgLy8gSWYgdGhlIHJlbmRlcmVy
IGNhbm5vdCBoYW5kbGUgdGhpcyBsYXJnZSBvZiBhIHRleHR1cmUsIHJldHVybiBmYWxzZS4KICAg
ICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGlt
cGxlbWVudGVkLgotICAgICAgICBpZiAoIWxheWVyUmVuZGVyZXIoKS0+Y2hlY2tUZXh0dXJlU2l6
ZShwbGFuZVRleHR1cmVTaXplKSkKKyAgICAgICAgaWYgKCFsYXllclJlbmRlcmVyKCktPmNoZWNr
VGV4dHVyZVNpemUocmVxdWlyZWRUZXh0dXJlU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW3BsYW5lXSkKLSAgICAgICAgICAgIG1fdGV4
dHVyZXNbcGxhbmVdID0gbGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRleHR1cmUoKTsKLQot
ICAgICAgICBpZiAoIXBsYW5lVGV4dHVyZVNpemUuaXNaZXJvKCkgJiYgcGxhbmVUZXh0dXJlU2l6
ZSAhPSBtX3RleHR1cmVTaXplc1twbGFuZV0pIHsKLSAgICAgICAgICAgIGFsbG9jYXRlVGV4dHVy
ZShjb250ZXh0LCBtX3RleHR1cmVzW3BsYW5lXSwgcGxhbmVUZXh0dXJlU2l6ZSwgdGV4dHVyZUZv
cm1hdCk7Ci0gICAgICAgICAgICBtX3RleHR1cmVTaXplc1twbGFuZV0gPSBwbGFuZVRleHR1cmVT
aXplOwotICAgICAgICAgICAgaW50IGZyYW1lV2lkdGggPSBmcmFtZS0+d2lkdGgocGxhbmUpOwot
ICAgICAgICAgICAgaW50IGZyYW1lSGVpZ2h0ID0gZnJhbWUtPmhlaWdodChwbGFuZSk7Ci0gICAg
ICAgICAgICAvLyBXaGVuIHRoZXJlIGFyZSBkZWFkIHBpeGVscyBhdCB0aGUgZWRnZSBvZiB0aGUg
dGV4dHVyZSwgZGVjcmVhc2UKLSAgICAgICAgICAgIC8vIHRoZSBmcmFtZSB3aWR0aCBieSAxIHRv
IHByZXZlbnQgdGhlIHJpZ2h0bW9zdCBwaXhlbHMgZnJvbQotICAgICAgICAgICAgLy8gaW50ZXJw
b2xhdGluZyB3aXRoIHRoZSBkZWFkIHBpeGVscy4KLSAgICAgICAgICAgIGlmIChmcmFtZS0+aGFz
UGFkZGluZ0J5dGVzKHBsYW5lKSkKLSAgICAgICAgICAgICAgICAtLWZyYW1lV2lkdGg7Ci0gICAg
ICAgICAgICBtX2ZyYW1lU2l6ZXNbcGxhbmVdID0gSW50U2l6ZShmcmFtZVdpZHRoLCBmcmFtZUhl
aWdodCk7CisgICAgICAgIGlmICh0ZXh0dXJlLmlzRW1wdHkpIHsKKyAgICAgICAgICAgIHRleHR1
cmUuaWQgPSBsYXllclJlbmRlcmVyKCktPmNyZWF0ZUxheWVyVGV4dHVyZSgpOworICAgICAgICAg
ICAgdGV4dHVyZS5vd25lZEJ5TGF5ZXJSZW5kZXJlciA9IHRydWU7CisgICAgICAgICAgICB0ZXh0
dXJlLmlzRW1wdHkgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcmVxdWlyZWRU
ZXh0dXJlU2l6ZS5pc1plcm8oKSAmJiByZXF1aXJlZFRleHR1cmVTaXplICE9IHRleHR1cmUuc2l6
ZSkgeworICAgICAgICAgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUuaWQsIHJl
cXVpcmVkVGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOworICAgICAgICAgICAgdGV4dHVyZS5z
aXplID0gcmVxdWlyZWRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIHRleHR1cmUudmlzaWJsZVNp
emUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKICAgICAgICAgfQorICAgICAg
ICBtX3RleHR1cmVzW3BsYW5lXSA9IHRleHR1cmU7CiAgICAgfQogCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK0ludFNpemUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUoY29u
c3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgdW5zaWduZWQgcGxhbmUpCit7CisgICAgaW50
IHZpc2libGVXaWR0aCA9IGZyYW1lLT53aWR0aChwbGFuZSk7CisgICAgaW50IHZpc2libGVIZWln
aHQgPSBmcmFtZS0+aGVpZ2h0KHBsYW5lKTsKKyAgICAvLyBXaGVuIHRoZXJlIGFyZSBkZWFkIHBp
eGVscyBhdCB0aGUgZWRnZSBvZiB0aGUgdGV4dHVyZSwgZGVjcmVhc2UKKyAgICAvLyB0aGUgZnJh
bWUgd2lkdGggYnkgMSB0byBwcmV2ZW50IHRoZSByaWdodG1vc3QgcGl4ZWxzIGZyb20KKyAgICAv
LyBpbnRlcnBvbGF0aW5nIHdpdGggdGhlIGRlYWQgcGl4ZWxzLgorICAgIGlmIChmcmFtZS0+aGFz
UGFkZGluZ0J5dGVzKHBsYW5lKSkKKyAgICAgICAgLS12aXNpYmxlV2lkdGg7CisKICAgICAvLyBJ
biBZVjEyLCBldmVyeSAyeDIgc3F1YXJlIG9mIFkgdmFsdWVzIGNvcnJlc3BvbmRzIHRvIG9uZSBV
IGFuZAogICAgIC8vIG9uZSBWIHZhbHVlLiBJZiB3ZSBkZWNyZWFzZSB0aGUgd2lkdGggb2YgdGhl
IFVWIHBsYW5lLCB3ZSBtdXN0IGRlY3JlYXNlIHRoZQogICAgIC8vIHdpZHRoIG9mIHRoZSBZIHRl
eHR1cmUgYnkgMiBmb3IgcHJvcGVyIGFsaWdubWVudC4gVGhpcyBtdXN0IGhhcHBlbgogICAgIC8v
IGFsd2F5cywgZXZlbiBpZiBZJ3MgdGV4dHVyZSBkb2VzIG5vdCBoYXZlIHBhZGRpbmcgYnl0ZXMu
Ci0gICAgaWYgKGZyYW1lLT5mb3JtYXQoKSA9PSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTIpIHsK
LSAgICAgICAgaW50IHlQbGFuZU9yaWdpbmFsV2lkdGggPSBmcmFtZS0+d2lkdGgoVmlkZW9GcmFt
ZUNocm9taXVtOjp5UGxhbmUpOwotICAgICAgICBpZiAoZnJhbWUtPmhhc1BhZGRpbmdCeXRlcyhW
aWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZSkpCi0gICAgICAgICAgICBtX2ZyYW1lU2l6ZXNbVmlk
ZW9GcmFtZUNocm9taXVtOjp5UGxhbmVdLnNldFdpZHRoKHlQbGFuZU9yaWdpbmFsV2lkdGggLSAy
KTsKKyAgICBpZiAocGxhbmUgPT0gVmlkZW9GcmFtZUNocm9taXVtOjp5UGxhbmUgJiYgZnJhbWUt
PmZvcm1hdCgpID09IFZpZGVvRnJhbWVDaHJvbWl1bTo6WVYxMikgeworICAgICAgICBpZiAoZnJh
bWUtPmhhc1BhZGRpbmdCeXRlcyhWaWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZSkpIHsKKyAgICAg
ICAgICAgIGludCBvcmlnaW5hbFdpZHRoID0gZnJhbWUtPndpZHRoKHBsYW5lKTsKKyAgICAgICAg
ICAgIHZpc2libGVXaWR0aCA9IG9yaWdpbmFsV2lkdGggLSAyOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNp
YmxlSGVpZ2h0KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJ
bnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KQordm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
dW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0
ZXh0dXJlRm9ybWF0KSBjb25zdAogewogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmVGb3JtYXQsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGlt
ZW5zaW9ucy5oZWlnaHQoKSwgMCwgdGV4dHVyZUZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUpKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3Qg
SW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgZm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKQor
dm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywg
dW5zaWduZWQgZm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAogewogICAgIEFTU0VSVChj
b250ZXh0KTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOwpAQCAtMjc2LDI1ICsyOTcsMjUgQEAg
dm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VDdXJyZW50RnJhbWUoKQogICAgIHJlc2V0
RnJhbWVQYXJhbWV0ZXJzKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVW
KGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVWUHJvZ3JhbSogcHJvZ3JhbSkKK3ZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVWUHJv
Z3JhbSogcHJvZ3JhbSkgY29uc3QKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9
IGxheWVyUmVuZGVyZXJDb250ZXh0KCk7CisgICAgVGV4dHVyZSB5VGV4dHVyZSA9IG1fdGV4dHVy
ZXNbVmlkZW9GcmFtZUNocm9taXVtOjp5UGxhbmVdOworICAgIFRleHR1cmUgdVRleHR1cmUgPSBt
X3RleHR1cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6dVBsYW5lXTsKKyAgICBUZXh0dXJlIHZUZXh0
dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnZQbGFuZV07CisKICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RTEpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjp5UGxhbmVd
KSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCB5VGV4dHVyZS5pZCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMikpOwotICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZV0pKTsKKyAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHVUZXh0dXJlLmlkKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUzKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVzW1Zp
ZGVvRnJhbWVDaHJvbWl1bTo6dlBsYW5lXSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdlRleHR1cmUuaWQpKTsK
IAogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVyKHByb2dyYW0tPnByb2dyYW0oKSk7Ci0g
ICAgdW5zaWduZWQgeUZyYW1lV2lkdGggPSBtX2ZyYW1lU2l6ZXNbVmlkZW9GcmFtZUNocm9taXVt
Ojp5UGxhbmVdLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgeVRleHR1cmVXaWR0aCA9IG1fdGV4dHVy
ZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXS53aWR0aCgpOwotICAgIC8vIEFyYml0
cmFyaWx5IHRha2UgdGhlIHUgc2l6ZXMgYmVjYXVzZSB1IGFuZCB2IGRpbWVuc2lvbnMgYXJlIGlk
ZW50aWNhbC4KLSAgICB1bnNpZ25lZCB1dkZyYW1lV2lkdGggPSBtX2ZyYW1lU2l6ZXNbVmlkZW9G
cmFtZUNocm9taXVtOjp1UGxhbmVdLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgdXZUZXh0dXJlV2lk
dGggPSBtX3RleHR1cmVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZV0ud2lkdGgoKTsK
IAotICAgIGZsb2F0IHlXaWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHlGcmFt
ZVdpZHRoKSAvIHlUZXh0dXJlV2lkdGg7Ci0gICAgZmxvYXQgdXZXaWR0aFNjYWxlRmFjdG9yID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHV2RnJhbWVXaWR0aCkgLyB1dlRleHR1cmVXaWR0aDsKKyAgICBm
bG9hdCB5V2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZsb2F0Pih5VGV4dHVyZS52aXNp
YmxlU2l6ZS53aWR0aCgpKSAvIHlUZXh0dXJlLnNpemUud2lkdGgoKTsKKyAgICAvLyBBcmJpdHJh
cmlseSB0YWtlIHRoZSB1IHNpemVzIGJlY2F1c2UgdSBhbmQgdiBkaW1lbnNpb25zIGFyZSBpZGVu
dGljYWwuCisgICAgZmxvYXQgdXZXaWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHVUZXh0dXJlLnZpc2libGVTaXplLndpZHRoKCkpIC8gdVRleHR1cmUuc2l6ZS53aWR0aCgpOwog
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkueVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB5V2lkdGhTY2FsZUZhY3RvcikpOwogICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtMWYocHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
dXZXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgdXZXaWR0aFNjYWxlRmFjdG9yKSk7CiAKQEAg
LTMxNCwxNiArMzM1LDE2IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3WVVWKGNvbnN0
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6WVVWUHJvZ3JhbSogcHJvZ3JhbSkKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsK
IH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKGNvbnN0IFZpZGVvTGF5ZXJD
aHJvbWl1bTo6UkdCQVByb2dyYW0qIHByb2dyYW0pCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
ZHJhd1JHQkEoY29uc3QgVmlkZW9MYXllckNocm9taXVtOjpSR0JBUHJvZ3JhbSogcHJvZ3JhbSkg
Y29uc3QKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCA9IGxheWVyUmVuZGVyZXJD
b250ZXh0KCk7CisgICAgVGV4dHVyZSB0ZXh0dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hy
b21pdW06OnJnYlBsYW5lXTsKKwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwotICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJl
c1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXSkpOworICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS5p
ZCkpOwogCiAgICAgbGF5ZXJSZW5kZXJlcigpLT51c2VTaGFkZXIocHJvZ3JhbS0+cHJvZ3JhbSgp
KTsKLSAgICB1bnNpZ25lZCBmcmFtZVdpZHRoID0gbV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJv
bWl1bTo6cmdiUGxhbmVdLndpZHRoKCk7Ci0gICAgdW5zaWduZWQgdGV4dHVyZVdpZHRoID0gbV90
ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNocm9taXVtOjpyZ2JQbGFuZV0ud2lkdGgoKTsKLSAgICBm
bG9hdCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYW1lV2lkdGgpIC8g
dGV4dHVyZVdpZHRoOworICAgIGZsb2F0IHdpZHRoU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4odGV4dHVyZS52aXNpYmxlU2l6ZS53aWR0aCgpKSAvIHRleHR1cmUuc2l6ZS53aWR0aCgp
OwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3JtNGYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkudGV4VHJhbnNmb3JtTG9jYXRpb24oKSwgMCwgMCwgd2lkdGhTY2FsZUZhY3RvciwgMSkp
OwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnVuaWZvcm0xaShwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLnNhbXBsZXJMb2NhdGlvbigpLCAwKSk7CkBAIC0zMzcsOSArMzU4LDExIEBAIHZv
aWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQShjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06
OlJHQkFQcm9ncmFtKiBwcm9ncmFtCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXRGcmFt
ZVBhcmFtZXRlcnMoKQogewogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IFZp
ZGVvRnJhbWVDaHJvbWl1bTo6bWF4UGxhbmVzOyBwbGFuZSsrKSB7Ci0gICAgICAgIG1fdGV4dHVy
ZXNbcGxhbmVdID0gMDsKLSAgICAgICAgbV90ZXh0dXJlU2l6ZXNbcGxhbmVdID0gSW50U2l6ZSgp
OwotICAgICAgICBtX2ZyYW1lU2l6ZXNbcGxhbmVdID0gSW50U2l6ZSgpOworICAgICAgICBtX3Rl
eHR1cmVzW3BsYW5lXS5pZCA9IDA7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLnNpemUgPSBJ
bnRTaXplKCk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLnZpc2libGVTaXplID0gSW50U2l6
ZSgpOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5vd25lZEJ5TGF5ZXJSZW5kZXJlciA9IGZh
bHNlOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5pc0VtcHR5ID0gdHJ1ZTsKICAgICB9CiB9
CiAKQEAgLTM0OCw5ICszNzEsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnNhdmVDdXJy
ZW50RnJhbWUoVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSkKICAgICBBU1NFUlQoIW1fY3VycmVu
dEZyYW1lKTsKICAgICBtX2N1cnJlbnRGcmFtZSA9IGZyYW1lOwogICAgIGZvciAodW5zaWduZWQg
cGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBt
X3RleHR1cmVzW3BsYW5lXSA9IGZyYW1lLT50ZXh0dXJlKHBsYW5lKTsKLSAgICAgICAgbV90ZXh0
dXJlU2l6ZXNbcGxhbmVdID0gZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpOwotICAg
ICAgICBtX2ZyYW1lU2l6ZXNbcGxhbmVdID0gbV90ZXh0dXJlU2l6ZXNbcGxhbmVdOworICAgICAg
ICBtX3RleHR1cmVzW3BsYW5lXS5pZCA9IGZyYW1lLT50ZXh0dXJlKHBsYW5lKTsKKyAgICAgICAg
bV90ZXh0dXJlc1twbGFuZV0uc2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5l
KTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0udmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJs
ZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ub3duZWRCeUxh
eWVyUmVuZGVyZXIgPSBmYWxzZTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0uaXNFbXB0eSA9
IGZhbHNlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCBjNjlj
YzdlZDJkNTY0YjBiOTk0MjI4MTRjOWMzMDU1MzkwMjFiZDcyLi4xMzU0Yjg2YzljM2UyYzBmNWQy
Y2YxM2U5NDk3ZThhMzRjMmRjMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAt
NDIsNiArNDIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRh
aW5zIGEgVmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgVGV4dHVyZSB7CisgICAgICAgIHVu
c2lnbmVkIGlkOworICAgICAgICBJbnRTaXplIHNpemU7CisgICAgICAgIEludFNpemUgdmlzaWJs
ZVNpemU7CisgICAgICAgIGJvb2wgb3duZWRCeUxheWVyUmVuZGVyZXI7CisgICAgICAgIGJvb2wg
aXNFbXB0eTsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9t
aXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVy
KiA9IDApOwogICAgIHZpcnR1YWwgflZpZGVvTGF5ZXJDaHJvbWl1bSgpOwpAQCAtNjMsMTQgKzcx
LDE0IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVmlkZW9MYXllckNocm9taXVtKEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bSogb3duZXIsIFZpZGVvRnJhbWVQcm92aWRlciopOwogCi0gICAgc3Rh
dGljIHVuc2lnbmVkIGRldGVybWluZVRleHR1cmVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtKik7
Ci0gICAgYm9vbCBhbGxvY2F0ZVRleHR1cmVzSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0M0QqLCBW
aWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVw
ZGF0ZVlVVkNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgVmlkZW9GcmFtZUNocm9t
aXVtKik7Ci0gICAgdm9pZCB1cGRhdGVSR0JBQ29udGVudHMoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKLSAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGltZW5z
aW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1l
bnNpb25zLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0LCBjb25zdCB2b2lkKiBkYXRhKTsKLSAgICB2
b2lkIGRyYXdZVVYoY29uc3QgWVVWUHJvZ3JhbSopOwotICAgIHZvaWQgZHJhd1JHQkEoY29uc3Qg
UkdCQVByb2dyYW0qKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZGV0ZXJtaW5lVGV4dHVyZUZvcm1h
dChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKKyAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRl
VmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgcGxhbmUpOwor
CisgICAgYm9vbCBhbGxvY2F0ZVRleHR1cmVzSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2
b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHRleHR1cmVJ
ZCwgY29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCkgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQg
dGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBkaW1lbnNpb25zLCB1bnNpZ25lZCB0ZXh0dXJlRm9y
bWF0LCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdDsKKyAgICB2b2lkIGRyYXdZVVYoY29uc3QgWVVW
UHJvZ3JhbSopIGNvbnN0OworICAgIHZvaWQgZHJhd1JHQkEoY29uc3QgUkdCQVByb2dyYW0qKSBj
b25zdDsKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAgICAgdm9pZCBzYXZlQ3Vy
cmVudEZyYW1lKFZpZGVvRnJhbWVDaHJvbWl1bSopOwogCkBAIC04MCwxMSArODgsMTIgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc2tpcHNEcmF3OwogICAgIFZpZGVvRnJhbWVDaHJvbWl1bTo6Rm9y
bWF0IG1fZnJhbWVGb3JtYXQ7CiAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwot
ICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9jdXJyZW50RnJhbWU7CiAKLSAgICB1bnNpZ25lZCBt
X3RleHR1cmVzWzNdOwotICAgIEludFNpemUgbV90ZXh0dXJlU2l6ZXNbM107Ci0gICAgSW50U2l6
ZSBtX2ZyYW1lU2l6ZXNbM107CisgICAgVGV4dHVyZSBtX3RleHR1cmVzWzNdOworCisgICAgLy8g
VGhpcyB3aWxsIGJlIG51bGwgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdmlkZW8gcGxheWJh
Y2sgaWYgaGFyZHdhcmUKKyAgICAvLyBkZWNvZGluZyBpcyBub3QgYmVpbmcgdXNlZC4KKyAgICBW
aWRlb0ZyYW1lQ2hyb21pdW0qIG1fY3VycmVudEZyYW1lOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86535</attachid>
            <date>2011-03-22 16:17:06 -0700</date>
            <delta_ts>2011-03-22 18:13:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56514-20110322161704.patch</filename>
            <type>text/plain</type>
            <size>17295</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE1MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjQwNjMzN2QzNzNjNTM5
OWU2NzM3MTNhYWJiNTZiNzBkN2ExMmE0Li4yNjkwN2QxYjBlMWRkODRkNmUzNDdjZWIxM2JhYzIy
NGYzMDI5MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMTggIFZpY3Rv
cmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBQcm9wZXJseSByZXNldCBWaWRlb0xheWVy
Q2hyb21pdW0gdGV4dHVyZXMgYWZ0ZXIgbG9zdCByZW5kZXJlciBjb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjUxNAorCisgICAgICAgIFRo
ZSBWaWRlb0xheWVyQ2hyb21pdW0gdGV4dHVyZXMgd2VyZSBzdGlsbCBtYXBwZWQgdG8gdGhlIG9s
ZAorICAgICAgICByZW5kZXJlcidzIGNvbnRleHQgd2hlbiBMYXllclJlbmRlcmVyQ2hyb21pdW0g
d2FzIGJlaW5nIHJlY3JlYXRlZAorICAgICAgICBpLmUuIHdoZW4gR1BVIHByb2Nlc3MgaXMga2ls
bGVkLiBUaGlzIHBhdGNoIGFsbG93cyBWaWRlb0xheWVyQ2hyb21pdW0KKyAgICAgICAgaXQgcmVj
cmVhdGUgdGV4dHVyZXMgaW4gdGhlIG5ldyBjb250ZXh0IHdoZW4gdGhlIG9sZCByZW5kZXJlciBp
cyBsb3N0LgorICAgICAgICBQYXRjaCBhbHNvIGRvZXMgYSBiaXQgb2YgcmVmYWN0b3JpbmcgYW5k
IGNvZGUgY2xlYW4tdXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtOjp+VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0xheWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdZVVYpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OnJlc2V0RnJhbWVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6c2F2ZUN1cnJlbnRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisKIDIwMTEtMDMtMTggIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCAwMWJmOTQ4ODNj
YTRkMTA1ODExMmM3N2JhODY1Mjk2NTA4MjdjMjIzLi5kOTcwNGZhODA5NzM4ODk2N2ZlY2YwYTE3
NTY1YzkzZDgyZTUyZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTg1
LDIyICs4NSwzMSBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFw
aGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUAogVmlkZW9MYXllckNocm9taXVt
Ojp+VmlkZW9MYXllckNocm9taXVtKCkKIHsKICAgICBjbGVhbnVwUmVzb3VyY2VzKCk7CisgICAg
ZGVsZXRlVGV4dHVyZXNJblVzZSgpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xl
YW51cFJlc291cmNlcygpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZGVsZXRlVGV4dHVyZXNJ
blVzZSgpCiB7Ci0gICAgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwotICAgIHJl
bGVhc2VDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIWxheWVyUmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVy
Q29udGV4dCgpOwogICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IFZpZGVvRnJh
bWVDaHJvbWl1bTo6bWF4UGxhbmVzOyBwbGFuZSsrKSB7Ci0gICAgICAgIGlmIChtX3RleHR1cmVz
W3BsYW5lXSkKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5kZWxldGVUZXh0dXJl
KG1fdGV4dHVyZXNbcGxhbmVdKSk7CisgICAgICAgIFRleHR1cmUgdGV4dHVyZSA9IG1fdGV4dHVy
ZXNbcGxhbmVdOworICAgICAgICBpZiAoIXRleHR1cmUuaXNFbXB0eSAmJiB0ZXh0dXJlLm93bmVk
QnlMYXllclJlbmRlcmVyKQorICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmRlbGV0
ZVRleHR1cmUodGV4dHVyZS5pZCkpOwogICAgIH0KIH0KIAordm9pZCBWaWRlb0xheWVyQ2hyb21p
dW06OmNsZWFudXBSZXNvdXJjZXMoKQoreworICAgIExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNv
dXJjZXMoKTsKKyAgICBpZiAobV9jdXJyZW50RnJhbWUpCisgICAgICAgIHJlbGVhc2VDdXJyZW50
RnJhbWUoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7Cit9CisK
IHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogewogICAg
IGlmICghbV9jb250ZW50c0RpcnR5KQpAQCAtMTMwLDYgKzEzOSw5IEBAIHZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjp1cGRhdGVDb250ZW50c0lmRGlydHkoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgLy8gSWYgdGhlIGluY29taW5nIGZyYW1lIGlzIGJhY2tlZCBieSBhIHRleHR1cmUg
KGkuZS4gZGVjb2RlZCBpbiBoYXJkd2FyZSksCisgICAgLy8gdGhlbiB3ZSBkbyBub3QgbmVlZCB0
byBhbGxvY2F0ZSBhIHRleHR1cmUgdmlhIHRoZSBsYXllciByZW5kZXJlci4gSW5zdGVhZAorICAg
IC8vIHdlIHNhdmUgdGhlIHRleHR1cmUgZGF0YSB0aGVuIGV4aXQuCiAgICAgaWYgKGZyYW1lLT5z
dXJmYWNlVHlwZSgpID09IFZpZGVvRnJhbWVDaHJvbWl1bTo6VHlwZVRleHR1cmUpIHsKICAgICAg
ICAgcmVsZWFzZUN1cnJlbnRGcmFtZSgpOwogICAgICAgICBzYXZlQ3VycmVudEZyYW1lKGZyYW1l
KTsKQEAgLTE1MCw4ICsxNjIsOSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29u
dGVudHNJZkRpcnR5KCkKIAogICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KICAgICBmb3Ig
KHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsK
LSAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKSA9PSBtX3Rl
eHR1cmVTaXplc1twbGFuZV0pOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIG1fdGV4
dHVyZXNbcGxhbmVdLCBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSksIHRleHR1cmVG
b3JtYXQsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAgIFRleHR1cmUgdGV4dHVyZSA9IG1f
dGV4dHVyZXNbcGxhbmVdOworICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNp
emUocGxhbmUpID09IHRleHR1cmUuc2l6ZSk7CisgICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4
dCwgdGV4dHVyZS5pZCwgdGV4dHVyZS5zaXplLCB0ZXh0dXJlRm9ybWF0LCBmcmFtZS0+ZGF0YShw
bGFuZSkpOwogICAgIH0KIAogICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkpOwpA
QCAtMTYwLDcgKzE3Myw3IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50
c0lmRGlydHkoKQogICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAK
LXVuc2lnbmVkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChWaWRl
b0ZyYW1lQ2hyb21pdW0qIGZyYW1lKQordW5zaWduZWQgVmlkZW9MYXllckNocm9taXVtOjpkZXRl
cm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUpCiB7CiAg
ICAgc3dpdGNoIChmcmFtZS0+Zm9ybWF0KCkpIHsKICAgICBjYXNlIFZpZGVvRnJhbWVDaHJvbWl1
bTo6WVYxMjoKQEAgLTE3NCw1NiArMTg3LDY4IEBAIHVuc2lnbmVkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6ZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lKQogICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRTsKIH0KIAotYm9vbCBWaWRl
b0xheWVyQ2hyb21pdW06OmFsbG9jYXRlVGV4dHVyZXNJZk5lZWRlZChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgdW5zaWduZWQgdGV4dHVyZUZv
cm1hdCkKK2Jvb2wgVmlkZW9MYXllckNocm9taXVtOjphbGxvY2F0ZVRleHR1cmVzSWZOZWVkZWQo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJh
bWUsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAg
IEFTU0VSVChmcmFtZSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBm
cmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgSW50U2l6ZSBwbGFuZVRleHR1cmVT
aXplID0gZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpOworICAgICAgICBJbnRTaXpl
IHJlcXVpcmVkVGV4dHVyZVNpemUgPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSk7
CisgICAgICAgIFRleHR1cmUgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwogCiAgICAgICAg
IC8vIElmIHRoZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0ZXh0dXJl
LCByZXR1cm4gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4g
dGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KLSAgICAgICAgaWYgKCFsYXllclJlbmRlcmVy
KCktPmNoZWNrVGV4dHVyZVNpemUocGxhbmVUZXh0dXJlU2l6ZSkpCisgICAgICAgIGlmICghbGF5
ZXJSZW5kZXJlcigpLT5jaGVja1RleHR1cmVTaXplKHJlcXVpcmVkVGV4dHVyZVNpemUpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0p
Ci0gICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXSA9IGxheWVyUmVuZGVyZXIoKS0+Y3JlYXRl
TGF5ZXJUZXh0dXJlKCk7Ci0KLSAgICAgICAgaWYgKCFwbGFuZVRleHR1cmVTaXplLmlzWmVybygp
ICYmIHBsYW5lVGV4dHVyZVNpemUgIT0gbV90ZXh0dXJlU2l6ZXNbcGxhbmVdKSB7Ci0gICAgICAg
ICAgICBhbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgbV90ZXh0dXJlc1twbGFuZV0sIHBsYW5lVGV4
dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOwotICAgICAgICAgICAgbV90ZXh0dXJlU2l6ZXNbcGxh
bmVdID0gcGxhbmVUZXh0dXJlU2l6ZTsKLSAgICAgICAgICAgIGludCBmcmFtZVdpZHRoID0gZnJh
bWUtPndpZHRoKHBsYW5lKTsKLSAgICAgICAgICAgIGludCBmcmFtZUhlaWdodCA9IGZyYW1lLT5o
ZWlnaHQocGxhbmUpOwotICAgICAgICAgICAgLy8gV2hlbiB0aGVyZSBhcmUgZGVhZCBwaXhlbHMg
YXQgdGhlIGVkZ2Ugb2YgdGhlIHRleHR1cmUsIGRlY3JlYXNlCi0gICAgICAgICAgICAvLyB0aGUg
ZnJhbWUgd2lkdGggYnkgMSB0byBwcmV2ZW50IHRoZSByaWdodG1vc3QgcGl4ZWxzIGZyb20KLSAg
ICAgICAgICAgIC8vIGludGVycG9sYXRpbmcgd2l0aCB0aGUgZGVhZCBwaXhlbHMuCi0gICAgICAg
ICAgICBpZiAoZnJhbWUtPmhhc1BhZGRpbmdCeXRlcyhwbGFuZSkpCi0gICAgICAgICAgICAgICAg
LS1mcmFtZVdpZHRoOwotICAgICAgICAgICAgbV9mcmFtZVNpemVzW3BsYW5lXSA9IEludFNpemUo
ZnJhbWVXaWR0aCwgZnJhbWVIZWlnaHQpOworICAgICAgICBpZiAodGV4dHVyZS5pc0VtcHR5KSB7
CisgICAgICAgICAgICB0ZXh0dXJlLmlkID0gbGF5ZXJSZW5kZXJlcigpLT5jcmVhdGVMYXllclRl
eHR1cmUoKTsKKyAgICAgICAgICAgIHRleHR1cmUub3duZWRCeUxheWVyUmVuZGVyZXIgPSB0cnVl
OworICAgICAgICAgICAgdGV4dHVyZS5pc0VtcHR5ID0gZmFsc2U7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXJlcXVpcmVkVGV4dHVyZVNpemUuaXNaZXJvKCkgJiYgcmVxdWlyZWRUZXh0dXJl
U2l6ZSAhPSB0ZXh0dXJlLnNpemUpIHsKKyAgICAgICAgICAgIGFsbG9jYXRlVGV4dHVyZShjb250
ZXh0LCB0ZXh0dXJlLmlkLCByZXF1aXJlZFRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKKyAg
ICAgICAgICAgIHRleHR1cmUuc2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNpemU7CisgICAgICAgICAg
ICB0ZXh0dXJlLnZpc2libGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7
CiAgICAgICAgIH0KKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0gPSB0ZXh0dXJlOwogICAgIH0K
IAorICAgIHJldHVybiB0cnVlOworfQorCitJbnRTaXplIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y29t
cHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIHVuc2lnbmVk
IHBsYW5lKQoreworICAgIGludCB2aXNpYmxlV2lkdGggPSBmcmFtZS0+d2lkdGgocGxhbmUpOwor
ICAgIGludCB2aXNpYmxlSGVpZ2h0ID0gZnJhbWUtPmhlaWdodChwbGFuZSk7CisgICAgLy8gV2hl
biB0aGVyZSBhcmUgZGVhZCBwaXhlbHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIHRleHR1cmUsIGRlY3Jl
YXNlCisgICAgLy8gdGhlIGZyYW1lIHdpZHRoIGJ5IDEgdG8gcHJldmVudCB0aGUgcmlnaHRtb3N0
IHBpeGVscyBmcm9tCisgICAgLy8gaW50ZXJwb2xhdGluZyB3aXRoIHRoZSBkZWFkIHBpeGVscy4K
KyAgICBpZiAoZnJhbWUtPmhhc1BhZGRpbmdCeXRlcyhwbGFuZSkpCisgICAgICAgIC0tdmlzaWJs
ZVdpZHRoOworCiAgICAgLy8gSW4gWVYxMiwgZXZlcnkgMngyIHNxdWFyZSBvZiBZIHZhbHVlcyBj
b3JyZXNwb25kcyB0byBvbmUgVSBhbmQKICAgICAvLyBvbmUgViB2YWx1ZS4gSWYgd2UgZGVjcmVh
c2UgdGhlIHdpZHRoIG9mIHRoZSBVViBwbGFuZSwgd2UgbXVzdCBkZWNyZWFzZSB0aGUKICAgICAv
LyB3aWR0aCBvZiB0aGUgWSB0ZXh0dXJlIGJ5IDIgZm9yIHByb3BlciBhbGlnbm1lbnQuIFRoaXMg
bXVzdCBoYXBwZW4KICAgICAvLyBhbHdheXMsIGV2ZW4gaWYgWSdzIHRleHR1cmUgZG9lcyBub3Qg
aGF2ZSBwYWRkaW5nIGJ5dGVzLgotICAgIGlmIChmcmFtZS0+Zm9ybWF0KCkgPT0gVmlkZW9GcmFt
ZUNocm9taXVtOjpZVjEyKSB7Ci0gICAgICAgIGludCB5UGxhbmVPcmlnaW5hbFdpZHRoID0gZnJh
bWUtPndpZHRoKFZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lKTsKLSAgICAgICAgaWYgKGZyYW1l
LT5oYXNQYWRkaW5nQnl0ZXMoVmlkZW9GcmFtZUNocm9taXVtOjp1UGxhbmUpKQotICAgICAgICAg
ICAgbV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXS5zZXRXaWR0aCh5UGxh
bmVPcmlnaW5hbFdpZHRoIC0gMik7CisgICAgaWYgKHBsYW5lID09IFZpZGVvRnJhbWVDaHJvbWl1
bTo6eVBsYW5lICYmIGZyYW1lLT5mb3JtYXQoKSA9PSBWaWRlb0ZyYW1lQ2hyb21pdW06OllWMTIp
IHsKKyAgICAgICAgaWYgKGZyYW1lLT5oYXNQYWRkaW5nQnl0ZXMoVmlkZW9GcmFtZUNocm9taXVt
Ojp1UGxhbmUpKSB7CisgICAgICAgICAgICBpbnQgb3JpZ2luYWxXaWR0aCA9IGZyYW1lLT53aWR0
aChwbGFuZSk7CisgICAgICAgICAgICB2aXNpYmxlV2lkdGggPSBvcmlnaW5hbFdpZHRoIC0gMjsK
KyAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBJbnRTaXpl
KHZpc2libGVXaWR0aCwgdmlzaWJsZUhlaWdodCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjphbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVk
IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZv
cm1hdCkKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjphbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgZGlt
ZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCkgY29uc3QKIHsKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRl
eHR1cmVJZCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCB0ZXh0dXJlRm9ybWF0LCBkaW1l
bnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIDAsIHRleHR1cmVGb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFKSk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNo
cm9taXVtOjp1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRpbWVuc2lvbnMsIHVuc2lnbmVkIGZvcm1hdCwg
Y29uc3Qgdm9pZCogZGF0YSkKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IElu
dFNpemUmIGRpbWVuc2lvbnMsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3Qgdm9pZCogZGF0YSkgY29u
c3QKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlSWQpKTsKQEAg
LTI3NiwyNSArMzAxLDI1IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZWxlYXNlQ3VycmVu
dEZyYW1lKCkKICAgICByZXNldEZyYW1lUGFyYW1ldGVycygpOwogfQogCi12b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0q
IHByb2dyYW0pCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZHJhd1lVVihjb25zdCBWaWRlb0xh
eWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dyYW0pIGNvbnN0CiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOworICAgIFRleHR1cmUg
eVRleHR1cmUgPSBtX3RleHR1cmVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXTsKKyAgICBU
ZXh0dXJlIHVUZXh0dXJlID0gbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnVQbGFuZV07
CisgICAgVGV4dHVyZSB2VGV4dHVyZSA9IG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjp2
UGxhbmVdOworCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7Ci0gICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVzW1ZpZGVvRnJh
bWVDaHJvbWl1bTo6eVBsYW5lXSkpOworICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgeVRleHR1cmUuaWQpKTsKICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRTIpKTsKLSAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjp1UGxh
bmVdKSk7CisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCB1VGV4dHVyZS5pZCkpOwogICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMykpOwotICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnZQbGFuZV0pKTsKKyAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHZUZXh0dXJlLmlkKSk7CiAKICAgICBsYXllclJlbmRlcmVyKCktPnVzZVNoYWRlcihwcm9n
cmFtLT5wcm9ncmFtKCkpOwotICAgIHVuc2lnbmVkIHlGcmFtZVdpZHRoID0gbV9mcmFtZVNpemVz
W1ZpZGVvRnJhbWVDaHJvbWl1bTo6eVBsYW5lXS53aWR0aCgpOwotICAgIHVuc2lnbmVkIHlUZXh0
dXJlV2lkdGggPSBtX3RleHR1cmVTaXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnlQbGFuZV0ud2lk
dGgoKTsKLSAgICAvLyBBcmJpdHJhcmlseSB0YWtlIHRoZSB1IHNpemVzIGJlY2F1c2UgdSBhbmQg
diBkaW1lbnNpb25zIGFyZSBpZGVudGljYWwuCi0gICAgdW5zaWduZWQgdXZGcmFtZVdpZHRoID0g
bV9mcmFtZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6dVBsYW5lXS53aWR0aCgpOwotICAgIHVu
c2lnbmVkIHV2VGV4dHVyZVdpZHRoID0gbV90ZXh0dXJlU2l6ZXNbVmlkZW9GcmFtZUNocm9taXVt
Ojp1UGxhbmVdLndpZHRoKCk7CiAKLSAgICBmbG9hdCB5V2lkdGhTY2FsZUZhY3RvciA9IHN0YXRp
Y19jYXN0PGZsb2F0Pih5RnJhbWVXaWR0aCkgLyB5VGV4dHVyZVdpZHRoOwotICAgIGZsb2F0IHV2
V2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZsb2F0Pih1dkZyYW1lV2lkdGgpIC8gdXZU
ZXh0dXJlV2lkdGg7CisgICAgZmxvYXQgeVdpZHRoU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oeVRleHR1cmUudmlzaWJsZVNpemUud2lkdGgoKSkgLyB5VGV4dHVyZS5zaXplLndpZHRo
KCk7CisgICAgLy8gQXJiaXRyYXJpbHkgdGFrZSB0aGUgdSBzaXplcyBiZWNhdXNlIHUgYW5kIHYg
ZGltZW5zaW9ucyBhcmUgaWRlbnRpY2FsLgorICAgIGZsb2F0IHV2V2lkdGhTY2FsZUZhY3RvciA9
IHN0YXRpY19jYXN0PGZsb2F0Pih1VGV4dHVyZS52aXNpYmxlU2l6ZS53aWR0aCgpKSAvIHVUZXh0
dXJlLnNpemUud2lkdGgoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLnlXaWR0aFNjYWxlRmFjdG9yTG9jYXRpb24oKSwgeVdpZHRo
U2NhbGVGYWN0b3IpKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTFmKHByb2dy
YW0tPnZlcnRleFNoYWRlcigpLnV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHV2V2lkdGhT
Y2FsZUZhY3RvcikpOwogCkBAIC0zMTQsMTYgKzMzOSwxNiBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6ZHJhd1lVVihjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OllVVlByb2dyYW0qIHByb2dy
YW0pCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkUwKSk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjpkcmF3UkdC
QShjb25zdCBWaWRlb0xheWVyQ2hyb21pdW06OlJHQkFQcm9ncmFtKiBwcm9ncmFtKQordm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKGNvbnN0IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdC
QVByb2dyYW0qIHByb2dyYW0pIGNvbnN0CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQgPSBsYXllclJlbmRlcmVyQ29udGV4dCgpOworICAgIFRleHR1cmUgdGV4dHVyZSA9IG1fdGV4
dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjpyZ2JQbGFuZV07CisKICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApKTsKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZXNbVmlkZW9GcmFtZUNocm9taXVtOjpyZ2JQbGFuZV0pKTsKKyAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHRleHR1cmUuaWQpKTsKIAogICAgIGxheWVyUmVuZGVyZXIoKS0+dXNlU2hhZGVy
KHByb2dyYW0tPnByb2dyYW0oKSk7Ci0gICAgdW5zaWduZWQgZnJhbWVXaWR0aCA9IG1fZnJhbWVT
aXplc1tWaWRlb0ZyYW1lQ2hyb21pdW06OnJnYlBsYW5lXS53aWR0aCgpOwotICAgIHVuc2lnbmVk
IHRleHR1cmVXaWR0aCA9IG1fdGV4dHVyZVNpemVzW1ZpZGVvRnJhbWVDaHJvbWl1bTo6cmdiUGxh
bmVdLndpZHRoKCk7Ci0gICAgZmxvYXQgd2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZs
b2F0PihmcmFtZVdpZHRoKSAvIHRleHR1cmVXaWR0aDsKKyAgICBmbG9hdCB3aWR0aFNjYWxlRmFj
dG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRleHR1cmUudmlzaWJsZVNpemUud2lkdGgoKSkgLyB0
ZXh0dXJlLnNpemUud2lkdGgoKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dW5pZm9ybTRm
KHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnRleFRyYW5zZm9ybUxvY2F0aW9uKCksIDAsIDAsIHdp
ZHRoU2NhbGVGYWN0b3IsIDEpKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT51bmlmb3Jt
MWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwpAQCAt
MzM2LDIxICszNjEsMjcgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmRyYXdSR0JBKGNvbnN0
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6UkdCQVByb2dyYW0qIHByb2dyYW0KIAogdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnJlc2V0RnJhbWVQYXJhbWV0ZXJzKCkKIHsKKyAgICBkZWxldGVUZXh0dXJl
c0luVXNlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgVmlkZW9GcmFt
ZUNocm9taXVtOjptYXhQbGFuZXM7IHBsYW5lKyspIHsKLSAgICAgICAgbV90ZXh0dXJlc1twbGFu
ZV0gPSAwOwotICAgICAgICBtX3RleHR1cmVTaXplc1twbGFuZV0gPSBJbnRTaXplKCk7Ci0gICAg
ICAgIG1fZnJhbWVTaXplc1twbGFuZV0gPSBJbnRTaXplKCk7CisgICAgICAgIG1fdGV4dHVyZXNb
cGxhbmVdLmlkID0gMDsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0uc2l6ZSA9IEludFNpemUo
KTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0udmlzaWJsZVNpemUgPSBJbnRTaXplKCk7Cisg
ICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm93bmVkQnlMYXllclJlbmRlcmVyID0gZmFsc2U7Cisg
ICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLmlzRW1wdHkgPSB0cnVlOwogICAgIH0KIH0KIAogdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnNhdmVDdXJyZW50RnJhbWUoVmlkZW9GcmFtZUNocm9taXVt
KiBmcmFtZSkKIHsKICAgICBBU1NFUlQoIW1fY3VycmVudEZyYW1lKTsKKyAgICBkZWxldGVUZXh0
dXJlc0luVXNlKCk7CiAgICAgbV9jdXJyZW50RnJhbWUgPSBmcmFtZTsKICAgICBmb3IgKHVuc2ln
bmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAg
ICAgbV90ZXh0dXJlc1twbGFuZV0gPSBmcmFtZS0+dGV4dHVyZShwbGFuZSk7Ci0gICAgICAgIG1f
dGV4dHVyZVNpemVzW3BsYW5lXSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsK
LSAgICAgICAgbV9mcmFtZVNpemVzW3BsYW5lXSA9IG1fdGV4dHVyZVNpemVzW3BsYW5lXTsKKyAg
ICAgICAgbV90ZXh0dXJlc1twbGFuZV0uaWQgPSBmcmFtZS0+dGV4dHVyZShwbGFuZSk7CisgICAg
ICAgIG1fdGV4dHVyZXNbcGxhbmVdLnNpemUgPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShw
bGFuZSk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLnZpc2libGVTaXplID0gY29tcHV0ZVZp
c2libGVTaXplKGZyYW1lLCBwbGFuZSk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm93bmVk
QnlMYXllclJlbmRlcmVyID0gZmFsc2U7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLmlzRW1w
dHkgPSBmYWxzZTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXgg
YzY5Y2M3ZWQyZDU2NGIwYjk5NDIyODE0YzljMzA1NTM5MDIxYmQ3Mi4uZWYwZDAwMzY4YzYwOGY0
ZjdjZjQzYTcyZDM1MmQzZTM5NTc2ZDJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
QEAgLTQyLDYgKzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgdGhhdCBj
b250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJs
aWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgc3RydWN0IFRleHR1cmUgeworICAgICAg
ICB1bnNpZ25lZCBpZDsKKyAgICAgICAgSW50U2l6ZSBzaXplOworICAgICAgICBJbnRTaXplIHZp
c2libGVTaXplOworICAgICAgICBib29sIG93bmVkQnlMYXllclJlbmRlcmVyOworICAgICAgICBi
b29sIGlzRW1wdHk7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92
aWRlciogPSAwKTsKICAgICB2aXJ0dWFsIH5WaWRlb0xheWVyQ2hyb21pdW0oKTsKQEAgLTYzLDE0
ICs3MSwxNSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAg
IHN0YXRpYyB1bnNpZ25lZCBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1
bSopOwotICAgIGJvb2wgYWxsb2NhdGVUZXh0dXJlc0lmTmVlZGVkKEdyYXBoaWNzQ29udGV4dDNE
KiwgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9p
ZCB1cGRhdGVZVVZDb250ZW50cyhHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IFZpZGVvRnJhbWVD
aHJvbWl1bSopOwotICAgIHZvaWQgdXBkYXRlUkdCQUNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKik7Ci0gICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRp
bWVuc2lvbnMsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYg
ZGltZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCwgY29uc3Qgdm9pZCogZGF0YSk7Ci0g
ICAgdm9pZCBkcmF3WVVWKGNvbnN0IFlVVlByb2dyYW0qKTsKLSAgICB2b2lkIGRyYXdSR0JBKGNv
bnN0IFJHQkFQcm9ncmFtKik7CisgICAgc3RhdGljIHVuc2lnbmVkIGRldGVybWluZVRleHR1cmVG
b3JtYXQoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKik7CisgICAgc3RhdGljIEludFNpemUgY29t
cHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBsYW5l
KTsKKyAgICB2b2lkIGRlbGV0ZVRleHR1cmVzSW5Vc2UoKTsKKworICAgIGJvb2wgYWxsb2NhdGVU
ZXh0dXJlc0lmTmVlZGVkKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgVmlkZW9GcmFtZUNocm9t
aXVtKiwgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCk7CisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmIGRp
bWVuc2lvbnMsIHVuc2lnbmVkIHRleHR1cmVGb3JtYXQpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYgZGltZW5zaW9ucywgdW5zaWduZWQgdGV4dHVyZUZvcm1hdCwgY29uc3Qgdm9pZCogZGF0
YSkgY29uc3Q7CisgICAgdm9pZCBkcmF3WVVWKGNvbnN0IFlVVlByb2dyYW0qKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdSR0JBKGNvbnN0IFJHQkFQcm9ncmFtKikgY29uc3Q7CiAgICAgdm9pZCByZXNl
dEZyYW1lUGFyYW1ldGVycygpOwogICAgIHZvaWQgc2F2ZUN1cnJlbnRGcmFtZShWaWRlb0ZyYW1l
Q2hyb21pdW0qKTsKIApAQCAtODAsMTEgKzg5LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nr
aXBzRHJhdzsKICAgICBWaWRlb0ZyYW1lQ2hyb21pdW06OkZvcm1hdCBtX2ZyYW1lRm9ybWF0Owog
ICAgIFZpZGVvRnJhbWVQcm92aWRlciogbV9wcm92aWRlcjsKLSAgICBWaWRlb0ZyYW1lQ2hyb21p
dW0qIG1fY3VycmVudEZyYW1lOwogCi0gICAgdW5zaWduZWQgbV90ZXh0dXJlc1szXTsKLSAgICBJ
bnRTaXplIG1fdGV4dHVyZVNpemVzWzNdOwotICAgIEludFNpemUgbV9mcmFtZVNpemVzWzNdOwor
ICAgIFRleHR1cmUgbV90ZXh0dXJlc1szXTsKKworICAgIC8vIFRoaXMgd2lsbCBiZSBudWxsIGZv
ciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHZpZGVvIHBsYXliYWNrIGlmIGhhcmR3YXJlCisgICAg
Ly8gZGVjb2RpbmcgaXMgbm90IGJlaW5nIHVzZWQuCisgICAgVmlkZW9GcmFtZUNocm9taXVtKiBt
X2N1cnJlbnRGcmFtZTsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>