<?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>74196</bug_id>
          
          <creation_ts>2011-12-09 12:05:50 -0800</creation_ts>
          <short_desc>[chromium] Delegate scroll events to the main thread when needed</short_desc>
          <delta_ts>2012-02-21 20:47:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>79155</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73350</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sami Kyostila">skyostil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>518379</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-09 12:05:50 -0800</bug_when>
    <thetext>Register a scrollable region for each LayerChromium and delegate scroll events inside the region to the main thread for processing.

Note that this essentially splits out the Chromium-only changes from bug 71385.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518383</commentid>
    <comment_count>1</comment_count>
      <attachid>118606</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-09 12:09:11 -0800</bug_when>
    <thetext>Created attachment 118606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520162</commentid>
    <comment_count>2</comment_count>
      <attachid>119033</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-13 10:32:09 -0800</bug_when>
    <thetext>Created attachment 119033
Patch

- Rebased after latest changes to bug 73350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520267</commentid>
    <comment_count>3</comment_count>
      <attachid>119033</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-12-13 12:06:02 -0800</bug_when>
    <thetext>Comment on attachment 119033
Patch

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

Other than one small thing, this is looking good to me.  Thanks for the tests!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:341
&gt; +    IntPoint contentPoint(layerImpl-&gt;screenSpaceTransform().inverse().mapPoint(viewportPoint));
&gt; +    // The content point for non-root layers must be scaled with the page scale. Note that the
&gt; +    // page scale delta is already embedded in each layer&apos;s screen space transform.
&gt; +    if (layerImpl != m_scrollLayerImpl)
&gt; +        contentPoint.scale(m_pageScale, m_pageScale);

I know you&apos;re just moving code here, but I don&apos;t follow this logic and why the scroll layer behaves differently.  Would you mind explaining why this is? Don&apos;t all layers (root or no) have the page scale applied to them?

Also, do you need to apply the page scale delta? Maybe I&apos;d feel more comfortable if there were more tests for this function that covered page scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521210</commentid>
    <comment_count>4</comment_count>
      <attachid>119033</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-14 12:53:02 -0800</bug_when>
    <thetext>Comment on attachment 119033
Patch

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

Setting as review- until the preceding patch layer scrolling is updated.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:341

&gt; 
&gt; I know you&apos;re just moving code here, but I don&apos;t follow this logic and why the scroll layer behaves differently.  Would you mind explaining why this is? Don&apos;t all layers (root or no) have the page scale applied to them?
&gt; 
&gt; Also, do you need to apply the page scale delta? Maybe I&apos;d feel more comfortable if there were more tests for this function that covered page scale.

Turns out the code here is not entirely correct, so I&apos;ll rework it in the preceding patch. Actually there is no need to differentiate between layers or scale the content point, but instead visibleLayerRect() must be scaled with the inverse of the page scale to get unscaled css coordinates that match the coordinate system of contentPoint.

The reason why page scale delta is not needed is that while we are zooming, visibleLayerRect() is recomputed in terms of the original page scale. It never includes m_pageScaleDelta so there is no need to undo that here. I&apos;m not really sure whether this is intended, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521250</commentid>
    <comment_count>5</comment_count>
      <attachid>119287</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-14 13:40:03 -0800</bug_when>
    <thetext>Created attachment 119287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521363</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-14 15:32:14 -0800</bug_when>
    <thetext>This seems to have quite a few merge conflicts on ToT, does it depend on https://bugs.webkit.org/show_bug.cgi?id=73350 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521809</commentid>
    <comment_count>7</comment_count>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-15 04:01:15 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; This seems to have quite a few merge conflicts on ToT, does it depend on https://bugs.webkit.org/show_bug.cgi?id=73350 ?

Yes, this patch should be applied after the one you linked. Sorry, I should have mentioned that here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523085</commentid>
    <comment_count>8</comment_count>
      <attachid>119684</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-16 15:17:49 -0800</bug_when>
    <thetext>Created attachment 119684
Patch

- Rebased after changes to bug 73350 (no functional changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524265</commentid>
    <comment_count>9</comment_count>
      <attachid>119684</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 16:18:22 -0800</bug_when>
    <thetext>Comment on attachment 119684
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:486
&gt; +    IntPoint contentPoint(layerImpl-&gt;screenSpaceTransform().inverse().mapPoint(viewportPoint));

if this layer&apos;s screen space transform is not invertible, you need to return false here - just calling .inverse().mapPoint() will map the point through an identity transform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524771</commentid>
    <comment_count>10</comment_count>
      <attachid>120064</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-20 13:02:11 -0800</bug_when>
    <thetext>Created attachment 120064
Patch

 - Updating according to layer walking order changes in bug 73350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524787</commentid>
    <comment_count>11</comment_count>
      <attachid>120068</attachid>
    <who name="Sami Kyostila">skyostil</who>
    <bug_when>2011-12-20 13:24:05 -0800</bug_when>
    <thetext>Created attachment 120068
Patch

 - Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525069</commentid>
    <comment_count>12</comment_count>
      <attachid>120068</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-20 20:30:35 -0800</bug_when>
    <thetext>Comment on attachment 120068
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:480
&gt; +    if (!layerImpl)
&gt; +        return false;

when can this parameter be null?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:489
&gt; +    if (!layerImpl-&gt;screenSpaceTransform().isInvertible())
&gt; +        return false;
&gt; +
&gt; +    IntPoint contentPoint(layerImpl-&gt;screenSpaceTransform().inverse().mapPoint(viewportPoint));
&gt; +    if (layerImpl-&gt;drawsContent() &amp;&amp; !isContentPointWithinLayer(layerImpl, contentPoint))
&gt; +        return false;
&gt; +
&gt; +    if (layerImpl-&gt;isInsideScrollableRegion(contentPoint))

there&apos;s not a whole lot (if anything) going on here that the CCLayerTreeHostImpl can do and the layer itself can&apos;t - all of the logic here is based on member functions of layerImpl. should this whole thing just be a member function of CCLayerImpl?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:526
&gt; +    if (!layerImpl-&gt;drawsContent() &amp;&amp; (layerImpl-&gt;scrollable() || !layerImpl-&gt;scrollableRegion().isEmpty()))

at this point, this probably deserves at least a comment explaining why a given layer should or shouldn&apos;t be in the assembled list since it&apos;s no longer a list of non-drawable scrollable layers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561557</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 20:46:53 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 79155 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118606</attachid>
            <date>2011-12-09 12:09:11 -0800</date>
            <delta_ts>2011-12-13 10:32:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-chromium-Delegate-scroll-events-to-the-main-thread-w.patch</filename>
            <type>text/plain</type>
            <size>17914</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSAwNWIyMzc4YzhkMDc0NDlmMTI4ZTgzMTZhN2U4MjkxYTU5N2EzZWVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IEZyaSwgMiBEZWMgMjAxMSAxMDo0NDoxNyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFtj
aHJvbWl1bV0gRGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBu
ZWVkZWQKCldoZW4gdGhlIGNvbXBvc2l0b3IgcmVjZWl2ZXMgYSBzY3JvbGwgZXZlbnQsIGl0IHNo
b3VsZCBkbyBjaGVjayB3aGV0aGVyCml0IGZhbGxzIG92ZXIgYSBzY3JvbGxhYmxlIGVsZW1lbnQg
d2hpY2ggaXMgbm90IGJhY2tlZCBieSBhIHNjcm9sbGFibGUKbGF5ZXIuIEluIHN1Y2ggYSBjYXNl
IHRoZSBldmVudCBtdXN0IGJlIHJlZGlyZWN0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLApiZWNhdXNl
IHRoZSBzaW1wbHkgdHJhbnNsYXRpbmcgdGhlIGVuY2xvc2luZyBsYXllciBpcyBkb2VzIG5vdCBy
ZXByb2R1Y2UKdGhlIGRlc2lyZWQgc2Nyb2xsaW5nIGJlaGF2aW9yLgoKVGhpcyBwYXRjaCBhZGRz
IGEgc2Nyb2xsYWJsZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgpp
bmRpY2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4g
dGhlIGxheWVyIGluCmxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1dCBoYW5k
bGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQpiZXR3ZWVuIHByb2Nlc3NpbmcgYSBzY3JvbGwgaW5w
dXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCmV2ZW50IHRvIHRoZSBtYWluIHRo
cmVhZC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMzYgKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwICAgfCAgICAxICsKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmggICAgIHwgICAgNCArKwogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCAgfCAgIDEyICsrKysrCiAuLi4vcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCAgICB8ICAgIDggKysrKwogLi4u
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwICAgfCAgIDQ0ICsr
KysrKysrKysrKysrKysrLS0tCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCAgICAgIHwgICAgMiArCiAuLi4vY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwICAgICB8ICAgMzYgKysrKysrKysr
KysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDc3MzVlMzcuLjk4OTA4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0MSBAQAogMjAxMS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9y
Zz4KIAorICAgICAgICBbY2hyb21pdW1dIERlbGVnYXRlIHNjcm9sbCBldmVudHMgdG8gdGhlIG1h
aW4gdGhyZWFkIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDE5NgorCisgICAgICAgIFdoZW4gdGhlIGNvbXBvc2l0b3IgcmVjZWl2
ZXMgYSBzY3JvbGwgZXZlbnQsIGl0IHNob3VsZCBkbyBjaGVjayB3aGV0aGVyCisgICAgICAgIGl0
IGZhbGxzIG92ZXIgYSBzY3JvbGxhYmxlIGVsZW1lbnQgd2hpY2ggaXMgbm90IGJhY2tlZCBieSBh
IHNjcm9sbGFibGUKKyAgICAgICAgbGF5ZXIuIEluIHN1Y2ggYSBjYXNlIHRoZSBldmVudCBtdXN0
IGJlIHJlZGlyZWN0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLAorICAgICAgICBiZWNhdXNlIHRoZSBz
aW1wbHkgdHJhbnNsYXRpbmcgdGhlIGVuY2xvc2luZyBsYXllciBpcyBkb2VzIG5vdCByZXByb2R1
Y2UKKyAgICAgICAgdGhlIGRlc2lyZWQgc2Nyb2xsaW5nIGJlaGF2aW9yLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIHNjcm9sbGFibGUgcmVnaW9uIHRvIGVhY2ggTGF5ZXJDaHJvbWl1bS4g
VGhpcyByZWdpb24KKyAgICAgICAgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbnMgb2YgYWxsIHNjcm9s
bGFibGUgZWxlbWVudHMgd2l0aGluIHRoZSBsYXllciBpbgorICAgICAgICBsb2NhbCBjb29yZGlu
YXRlcy4gVGhlIGNvbXBvc2l0b3IgaW5wdXQgaGFuZGxlciB1c2VzIHRoaXMgZGF0YSBjaG9vc2UK
KyAgICAgICAgYmV0d2VlbiBwcm9jZXNzaW5nIGEgc2Nyb2xsIGlucHV0IGV2ZW50IGJ5IGl0c2Vs
ZiBvciBkZWxlZ2F0aW5nIHRoZQorICAgICAgICBldmVudCB0byB0aGUgbWFpbiB0aHJlYWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpz
ZXRTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OndpbmRvd1RvTGF5ZXJDb250ZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJlZ2luU2Nyb2xsaW5nSW5uZXJtb3N0
TGF5ZXJBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbEJlZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmg6CisKKzIwMTEtMTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3Rp
bEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgbGF5ZXIgc2Ny
b2xsaW5nIGluIHRoZSBjb21wb3NpdG9yIHRocmVhZAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCA2NDdiYjkwLi4yY2FiNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzk3LDYgKzM5
Nyw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCog
bGF5ZXIpCiAKICAgICBsYXllci0+c2V0U2Nyb2xsRGVsdGEobGF5ZXItPnNjcm9sbERlbHRhKCkg
LSBsYXllci0+c2VudFNjcm9sbERlbHRhKCkpOwogICAgIGxheWVyLT5zZXRTZW50U2Nyb2xsRGVs
dGEoSW50U2l6ZSgpKTsKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZVJlZ2lvbihtX3Njcm9sbGFi
bGVSZWdpb24pOwogCiAgICAgaWYgKG1hc2tMYXllcigpKQogICAgICAgICBtYXNrTGF5ZXIoKS0+
cHVzaFByb3BlcnRpZXNUbyhsYXllci0+bWFza0xheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IGEzOTUwNDcuLjdmYzE3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiU2hhZGVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtMTk5LDYgKzIwMCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdhYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkgeyBtX2RyYXdhYmxlQ29udGVudFJlY3QgPSByZWN0OyB9CiAgICAgZmxvYXQgY29u
dGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTY2FsZTsgfQogICAgIHZvaWQg
c2V0Q29udGVudHNTY2FsZShmbG9hdCk7CisgICAgY29uc3QgUmVnaW9uJiBzY3JvbGxhYmxlUmVn
aW9uKCkgeyByZXR1cm4gbV9zY3JvbGxhYmxlUmVnaW9uOyB9CisgICAgdm9pZCBzZXRTY3JvbGxh
YmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IG1fc2Nyb2xsYWJsZVJlZ2lvbiA9IHJl
Z2lvbjsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIncyBkZXNj
ZW5kYW50cyBoYXMgY29udGVudCB0byBkcmF3LgogICAgIGJvb2wgZGVzY2VuZGFudERyYXdzQ29u
dGVudCgpOwpAQCAtMjczLDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZXNMYXll
ckNsaXBwaW5nOwogICAgIGJvb2wgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50OwogICAgIGJvb2wg
bV9wcmVzZXJ2ZXMzRDsKKyAgICBSZWdpb24gbV9zY3JvbGxhYmxlUmVnaW9uOwogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV9zdWJsYXllclRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA3MTQzODhk
Li4wMDQ3ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xMjMsNiArMTIzLDE4IEBA
IHZvaWQgQ0NMYXllckltcGw6OmJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKikKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBDQ0xheWVySW1wbDo6
aXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEludFBvaW50JiBjb250ZW50UG9pbnQpIGNv
bnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZVJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMgPSBtX3Njcm9s
bGFibGVSZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNp
emUoKTsgaSsrKQorICAgICAgICBpZiAocmVjdHNbaV0uY29udGFpbnMoY29udGVudFBvaW50KSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBD
Q0xheWVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKQogewogICAgIEludFNp
emUgbmV3RGVsdGEgPSBtX3Njcm9sbERlbHRhICsgc2Nyb2xsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
aW5kZXggNTYzMDRlMy4uNzVmMjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2lu
Y2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTYwLDYgKzE2MSwxMiBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbERl
bHRhOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJik7CiAKKyAgICBj
b25zdCBSZWdpb24mIHNjcm9sbGFibGVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFi
bGVSZWdpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJiBy
ZWdpb24pIHsgbV9zY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOyB9CisKKyAgICAvLyBSZXR1cm5z
IHRydWUgaWYgYSBwb2ludCBpbiBjb250ZW50IGNvb3JkaW5hdGVzIGlzIGluc2lkZSB0aGUgc2Ny
b2xsYWJsZSByZWdpb24uCisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdpb24oY29uc3Qg
SW50UG9pbnQmIGNvbnRlbnRQb2ludCkgY29uc3Q7CisKICAgICBmbG9hdCBwYWdlU2NhbGVEZWx0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRGVsdGE7IH0KICAgICB2b2lkIHNldFBhZ2VT
Y2FsZURlbHRhKGZsb2F0KTsKIApAQCAtMjM0LDYgKzI0MSw3IEBAIHByaXZhdGU6CiAgICAgSW50
UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKICAgICBDb2xv
ciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZWdpb24gbV9zY3JvbGxhYmxlUmVnaW9uOwogCiAg
ICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAg
Ym9vbCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCBlMGI2YWM5Li5lOTJlNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcApAQCAtMzMyLDYgKzMzMiwzNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6
OnNldE5lZWRzUmVkcmF3KCkKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJl
YWQoKTsKIH0KIAorSW50UG9pbnQgQ0NMYXllclRyZWVIb3N0SW1wbDo6d2luZG93VG9MYXllckNv
bnRlbnRQb2ludChDQ0xheWVySW1wbCogbGF5ZXJJbXBsLCBjb25zdCBJbnRQb2ludCYgd2luZG93
UG9pbnQpIGNvbnN0Cit7CisgICAgSW50UG9pbnQgY29udGVudFBvaW50KGxheWVySW1wbC0+c2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUG9pbnQod2luZG93UG9pbnQpKTsKKyAg
ICAvLyBUaGUgY29udGVudCBwb2ludCBmb3Igbm9uLXJvb3QgbGF5ZXJzIG11c3QgYmUgc2NhbGVk
IHdpdGggdGhlIHBhZ2Ugc2NhbGUuIE5vdGUgdGhhdCB0aGUKKyAgICAvLyBwYWdlIHNjYWxlIGRl
bHRhIGlzIGFscmVhZHkgZW1iZWRkZWQgaW4gZWFjaCBsYXllcidzIHNjcmVlbiBzcGFjZSB0cmFu
c2Zvcm0uCisgICAgaWYgKGxheWVySW1wbCAhPSBtX3Njcm9sbExheWVySW1wbCkKKyAgICAgICAg
Y29udGVudFBvaW50LnNjYWxlKG1fcGFnZVNjYWxlLCBtX3BhZ2VTY2FsZSk7CisgICAgcmV0dXJu
IGNvbnRlbnRQb2ludDsKK30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0luc2lkZVNj
cm9sbGFibGVSZWdpb24oQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KSBjb25zdAoreworICAgIGlmICghbGF5ZXJJbXBsKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVySW1wbC0+Y2hpbGRyZW4o
KS5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKGlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihsYXll
ckltcGwtPmNoaWxkcmVuKClbaV0uZ2V0KCksIHdpbmRvd1BvaW50KSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgSW50UG9pbnQgY29udGVudFBvaW50KHdpbmRvd1RvTGF5ZXJDb250
ZW50UG9pbnQobGF5ZXJJbXBsLCB3aW5kb3dQb2ludCkpOworCisgICAgaWYgKGxheWVySW1wbC0+
ZHJhd3NDb250ZW50KCkgJiYgIWxheWVySW1wbC0+dmlzaWJsZUxheWVyUmVjdCgpLmNvbnRhaW5z
KGNvbnRlbnRQb2ludCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChsYXllcklt
cGwtPmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihjb250ZW50UG9pbnQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpiZWdpblNjcm9sbGluZ0lubmVybW9z
dExheWVyQXRQb2ludChDQ0xheWVySW1wbCogbGF5ZXJJbXBsLCBjb25zdCBJbnRQb2ludCYgd2lu
ZG93UG9pbnQpCiB7CiAgICAgaWYgKCFsYXllckltcGwpCkBAIC0zNDMsMTIgKzM3Myw3IEBAIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6YmVn
aW5TY3JvbGxpbmdJbm5lcm1vc3RMCiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0K
IAotICAgIEludFBvaW50IGNvbnRlbnRQb2ludChsYXllckltcGwtPnNjcmVlblNwYWNlVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLm1hcFBvaW50KHdpbmRvd1BvaW50KSk7Ci0KLSAgICAvLyBUaGUgY29u
dGVudCBwb2ludCBmb3Igbm9uLXJvb3QgbGF5ZXJzIG11c3QgYmUgc2NhbGVkIHdpdGggdGhlIHBh
Z2Ugc2NhbGUuIE5vdGUgdGhhdCB0aGUKLSAgICAvLyBwYWdlIHNjYWxlIGRlbHRhIGlzIGFscmVh
ZHkgZW1iZWRkZWQgaW4gZWFjaCBsYXllcidzIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0uCi0gICAg
aWYgKGxheWVySW1wbCAhPSBtX3Njcm9sbExheWVySW1wbCkKLSAgICAgICAgY29udGVudFBvaW50
LnNjYWxlKG1fcGFnZVNjYWxlLCBtX3BhZ2VTY2FsZSk7CisgICAgSW50UG9pbnQgY29udGVudFBv
aW50KHdpbmRvd1RvTGF5ZXJDb250ZW50UG9pbnQobGF5ZXJJbXBsLCB3aW5kb3dQb2ludCkpOwog
CiAgICAgaWYgKGxheWVySW1wbC0+ZHJhd3NDb250ZW50KCkgJiYgIWxheWVySW1wbC0+dmlzaWJs
ZUxheWVyUmVjdCgpLmNvbnRhaW5zKGNvbnRlbnRQb2ludCkpCiAgICAgICAgIHJldHVybiBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsSWdub3JlZDsKQEAgLTM2Myw2ICszODgsMTMgQEAgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpiZWdp
blNjcm9sbGluZ0lubmVybW9zdEwKIAogQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1
cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbihjb25zdCBJbnRQb2ludCYgd2luZG93
UG9pbnQpCiB7CisgICAgLy8gSWYgdGhlIHBvaW50IGlzIHdpdGhpbiBhbnkgc2Nyb2xsYWJsZSBy
ZWdpb24sIHdlIG11c3QgZGVsZWdhdGUgaXQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGlzCisgICAg
Ly8gaXMgYmVjYXVzZSBldmVuIHRob3VnaCB0aGVyZSB3YXMgYSBzY3JvbGxhYmxlIGxheWVyIHVu
ZGVyIHRoZSBxdWVyeSBwb2ludCwgd2UgbWlnaHQgbmVlZAorICAgIC8vIHRvIG1vdmUgYW55IG9m
IGl0cyBhbmNlc3RvcnMgZHVyaW5nIHNjcm9sbGluZy4gSWYgb25lIG9mIHRob3NlIGFuY2VzdG9y
cyBpcyBhIHNjcm9sbGFibGUKKyAgICAvLyByZWdpb24gKGFzIG9wcG9zZWQgdG8gYSBsYXllciks
IHdlIHdvdWxkIG5lZWQgdG8gdHJhbnNpdGlvbiB0byBzY3JvbGxpbmcgaXQgaW4gdGhlIG1haW4K
KyAgICAvLyB0aHJlYWQsIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUuCisgICAgaWYg
KGlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihtX3Njcm9sbExheWVySW1wbC5nZXQoKSwgd2luZG93
UG9pbnQpKQorICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxl
ZDsKICAgICByZXR1cm4gYmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQobV9zY3Jv
bGxMYXllckltcGwuZ2V0KCksIHdpbmRvd1BvaW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IGI4MGI4ZmQuLjExNzgzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTEyOSw2ICsxMjksOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgYWRqdXN0U2Nyb2xsc0ZvclBhZ2VTY2FsZUNoYW5nZShmbG9hdCk7CiAgICAgdm9pZCB1cGRh
dGVNYXhTY3JvbGxQb3NpdGlvbigpOwogICAgIFNjcm9sbFN0YXR1cyBiZWdpblNjcm9sbGluZ0lu
bmVybW9zdExheWVyQXRQb2ludChDQ0xheWVySW1wbCosIGNvbnN0IEludFBvaW50Jik7CisgICAg
SW50UG9pbnQgd2luZG93VG9MYXllckNvbnRlbnRQb2ludChDQ0xheWVySW1wbCosIGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdpb24oQ0NMYXll
ckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdDsKIAog
ICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggZWUwZmUyMy4uZWU2ZTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsNSArMSwzMCBAQAogMjAxMS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9t
aXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIERlbGVnYXRlIHNjcm9sbCBldmVudHMgdG8g
dGhlIG1haW4gdGhyZWFkIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NDE5NgorCisgICAgICAgIFdoZW4gdGhlIGNvbXBvc2l0b3Ig
cmVjZWl2ZXMgYSBzY3JvbGwgZXZlbnQsIGl0IHNob3VsZCBkbyBjaGVjayB3aGV0aGVyCisgICAg
ICAgIGl0IGZhbGxzIG92ZXIgYSBzY3JvbGxhYmxlIGVsZW1lbnQgd2hpY2ggaXMgbm90IGJhY2tl
ZCBieSBhIHNjcm9sbGFibGUKKyAgICAgICAgbGF5ZXIuIEluIHN1Y2ggYSBjYXNlIHRoZSBldmVu
dCBtdXN0IGJlIHJlZGlyZWN0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLAorICAgICAgICBiZWNhdXNl
IHRoZSBzaW1wbHkgdHJhbnNsYXRpbmcgdGhlIGVuY2xvc2luZyBsYXllciBpcyBkb2VzIG5vdCBy
ZXByb2R1Y2UKKyAgICAgICAgdGhlIGRlc2lyZWQgc2Nyb2xsaW5nIGJlaGF2aW9yLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHNjcm9sbGFibGUgcmVnaW9uIHRvIGVhY2ggTGF5ZXJDaHJv
bWl1bS4gVGhpcyByZWdpb24KKyAgICAgICAgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbnMgb2YgYWxs
IHNjcm9sbGFibGUgZWxlbWVudHMgd2l0aGluIHRoZSBsYXllciBpbgorICAgICAgICBsb2NhbCBj
b29yZGluYXRlcy4gVGhlIGNvbXBvc2l0b3IgaW5wdXQgaGFuZGxlciB1c2VzIHRoaXMgZGF0YSBj
aG9vc2UKKyAgICAgICAgYmV0d2VlbiBwcm9jZXNzaW5nIGEgc2Nyb2xsIGlucHV0IGV2ZW50IGJ5
IGl0c2VsZiBvciBkZWxlZ2F0aW5nIHRoZQorICAgICAgICBldmVudCB0byB0aGUgbWFpbiB0aHJl
YWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudElt
cGw6OnNldExheWVyU2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVu
dEltcGwuaDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKKzIwMTEtMTItMDkgIFNhbWkgS3lvc3RpbGEgIDxz
a3lvc3RpbEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgbGF5
ZXIgc2Nyb2xsaW5nIGluIHRoZSBjb21wb3NpdG9yIHRocmVhZAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNTAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCAyMjk5NWZiLi4wZjBiZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cApAQCAtODExLDYgKzgxMSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlbW92ZVNjcm9s
bGluZ0xheWVyKE5vZGUqIG5vZGUsIFBsYXRmb3JtTGF5ZXIqIHNjcm9sbGluZwogICAgIGNvbnRl
bnRzTGF5ZXItPnNldFNjcm9sbGFibGUoZmFsc2UpOwogfQogCit2b2lkIENocm9tZUNsaWVudElt
cGw6OnNldExheWVyU2Nyb2xsYWJsZVJlZ2lvbihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3Qg
UmVnaW9uJiByZWdpb24pCit7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24ocmVnaW9u
KTsKK30KKwogLy8gRklYTUU6IFJlbW92ZSBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUgYW5kIENocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZQogLy8gb25jZSBhbGwgcG9ydHMgaGF2ZSBt
b3ZlZCB0byBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMgKS4KIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9j
YXRpb24sIHRoZXNlIG1ldGhvZHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24gYW5kIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5j
ZWxQZXJtaXNzaW9uUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAppbmRleCBhYzUzYzg5Li4wMzZjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IEZpbGVDaG9vc2VyOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvcHVwQ29udGFpbmVyOwogY2xhc3Mg
UG9wdXBNZW51Q2xpZW50OworY2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CkBAIC0xMzUsNiArMTM2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwYWludEN1c3RvbU92ZXJoYW5nQXJlYShXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkT3JVcGRhdGVTY3JvbGxpbmdMYXllcihXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UGxh
dGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbFNpemUpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVTY3JvbGxpbmdMYXllcihXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UGxh
dGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqIGNvbnRl
bnRzTGF5ZXIpOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclNjcm9sbGFibGVSZWdpb24oV2Vi
Q29yZTo6UGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9u
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAppbmRleCA3ZDFhMmMzLi44OTZjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtMjYwLDYgKzI2MCw0MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9s
bENoaWxkQW5kQ2hhbmdlUGFnZVNjYWxlKQogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZv
LmdldCgpLCBjaGlsZC0+aWQoKSwgc2Nyb2xsRGVsdGEpOwogfQogCitURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGFibGVSZWdpb25IaXRUZXN0aW5nKQoreworICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+
c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRT
aXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworCisg
ICAgUmVnaW9uIHNjcm9sbGFibGVSZWdpb247CisgICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJ
bnRSZWN0KEludFBvaW50KCksIEludFNpemUoNCwgNCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxh
YmxlUmVnaW9uKHNjcm9sbGFibGVSZWdpb24pOworCisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwt
PnNjcm9sbEJlZ2luKEludFBvaW50KDIsIDIpKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bEZhaWxlZCk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50
KDYsIDIpKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOworfQorCitURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGFibGVSZWdpb25PdmVycmlkZXNMYXll
cikKK3sKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDApOworICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWF4U2Ny
b2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihyb290KTsKKworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDApOworICAgIGNoaWxkLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGNoaWxk
LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgY2hpbGQtPnNl
dERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBjaGlsZC0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KEludFBvaW50KCksIEludFNpemUoMTAsIDEwKSkpOworCisgICAgUmVnaW9uIHNjcm9sbGFi
bGVSZWdpb247CisgICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJbnRSZWN0KEludFBvaW50KCks
IEludFNpemUoOCwgOCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlUmVnaW9uKHNjcm9sbGFi
bGVSZWdpb24pOworCisgICAgLy8gU2Nyb2xsIHNob3VsZCBmYWlsIHNpbmNlIHRoZXJlIGlzIGEg
c2Nyb2xsYWJsZSByZWdpb24gaW4gdGhlIHJvb3QgbGF5ZXIgdW5kZXIgdGhlc2UgY29vcmRpbmF0
ZXMuCisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUp
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cit9CisKIGNsYXNzIEJsZW5k
U3RhdGVUcmFja2VyQ29udGV4dDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBw
dWJsaWM6CiAgICAgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0KCkgOiBtX2JsZW5kKGZhbHNlKSB7
IH0KLS0gCjEuNy4zLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119033</attachid>
            <date>2011-12-13 10:32:09 -0800</date>
            <delta_ts>2011-12-14 13:39:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-chromium-Delegate-scroll-events-to-the-main-thread-w.patch</filename>
            <type>text/plain</type>
            <size>17959</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">RnJvbSBkYmUxZGFjODdlNWIwMWU2NzBmYjc1YWY5MzExMjQzZDBlMWE0MWZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEt5b3N0aWxhIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CkRhdGU6IEZyaSwgMiBEZWMgMjAxMSAxMDo0NDoxNyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFtj
aHJvbWl1bV0gRGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBu
ZWVkZWQKCldoZW4gdGhlIGNvbXBvc2l0b3IgcmVjZWl2ZXMgYSBzY3JvbGwgZXZlbnQsIGl0IHNo
b3VsZCBkbyBjaGVjayB3aGV0aGVyCml0IGZhbGxzIG92ZXIgYSBzY3JvbGxhYmxlIGVsZW1lbnQg
d2hpY2ggaXMgbm90IGJhY2tlZCBieSBhIHNjcm9sbGFibGUKbGF5ZXIuIEluIHN1Y2ggYSBjYXNl
IHRoZSBldmVudCBtdXN0IGJlIHJlZGlyZWN0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLApiZWNhdXNl
IHRoZSBzaW1wbHkgdHJhbnNsYXRpbmcgdGhlIGVuY2xvc2luZyBsYXllciBpcyBkb2VzIG5vdCBy
ZXByb2R1Y2UKdGhlIGRlc2lyZWQgc2Nyb2xsaW5nIGJlaGF2aW9yLgoKVGhpcyBwYXRjaCBhZGRz
IGEgc2Nyb2xsYWJsZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgpp
bmRpY2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4g
dGhlIGxheWVyIGluCmxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1dCBoYW5k
bGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQpiZXR3ZWVuIHByb2Nlc3NpbmcgYSBzY3JvbGwgaW5w
dXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCmV2ZW50IHRvIHRoZSBtYWluIHRo
cmVhZC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMzYgKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwICAgfCAgICAxICsKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmggICAgIHwgICAgNCArKwogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCAgfCAgIDEyICsrKysrCiAuLi4vcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCAgICB8ICAgIDggKysrKwogLi4u
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwICAgfCAgIDQ0ICsr
KysrKysrKysrKysrKysrLS0tCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCAgICAgIHwgICAgMiArCiAuLi4vY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwICAgICB8ICAgMzYgKysrKysrKysr
KysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGJkNWM1MTQuLjFkM2IyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSw0MSBAQAogMjAxMS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9y
Zz4KIAorICAgICAgICBbY2hyb21pdW1dIERlbGVnYXRlIHNjcm9sbCBldmVudHMgdG8gdGhlIG1h
aW4gdGhyZWFkIHdoZW4gbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDE5NgorCisgICAgICAgIFdoZW4gdGhlIGNvbXBvc2l0b3IgcmVjZWl2
ZXMgYSBzY3JvbGwgZXZlbnQsIGl0IHNob3VsZCBkbyBjaGVjayB3aGV0aGVyCisgICAgICAgIGl0
IGZhbGxzIG92ZXIgYSBzY3JvbGxhYmxlIGVsZW1lbnQgd2hpY2ggaXMgbm90IGJhY2tlZCBieSBh
IHNjcm9sbGFibGUKKyAgICAgICAgbGF5ZXIuIEluIHN1Y2ggYSBjYXNlIHRoZSBldmVudCBtdXN0
IGJlIHJlZGlyZWN0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLAorICAgICAgICBiZWNhdXNlIHRoZSBz
aW1wbHkgdHJhbnNsYXRpbmcgdGhlIGVuY2xvc2luZyBsYXllciBpcyBkb2VzIG5vdCByZXByb2R1
Y2UKKyAgICAgICAgdGhlIGRlc2lyZWQgc2Nyb2xsaW5nIGJlaGF2aW9yLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBhIHNjcm9sbGFibGUgcmVnaW9uIHRvIGVhY2ggTGF5ZXJDaHJvbWl1bS4g
VGhpcyByZWdpb24KKyAgICAgICAgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbnMgb2YgYWxsIHNjcm9s
bGFibGUgZWxlbWVudHMgd2l0aGluIHRoZSBsYXllciBpbgorICAgICAgICBsb2NhbCBjb29yZGlu
YXRlcy4gVGhlIGNvbXBvc2l0b3IgaW5wdXQgaGFuZGxlciB1c2VzIHRoaXMgZGF0YSBjaG9vc2UK
KyAgICAgICAgYmV0d2VlbiBwcm9jZXNzaW5nIGEgc2Nyb2xsIGlucHV0IGV2ZW50IGJ5IGl0c2Vs
ZiBvciBkZWxlZ2F0aW5nIHRoZQorICAgICAgICBldmVudCB0byB0aGUgbWFpbiB0aHJlYWQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpz
ZXRTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdEltcGw6OndpbmRvd1RvTGF5ZXJDb250ZW50UG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJlZ2luU2Nyb2xsaW5nSW5uZXJtb3N0
TGF5ZXJBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNj
cm9sbEJlZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmg6CisKKzIwMTEtMTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3Rp
bEBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgbGF5ZXIgc2Ny
b2xsaW5nIGluIHRoZSBjb21wb3NpdG9yIHRocmVhZAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCBjNzMzYWE5Li5lY2MxOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzk3LDYgKzM5
Nyw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCog
bGF5ZXIpCiAKICAgICBsYXllci0+c2V0U2Nyb2xsRGVsdGEobGF5ZXItPnNjcm9sbERlbHRhKCkg
LSBsYXllci0+c2VudFNjcm9sbERlbHRhKCkpOwogICAgIGxheWVyLT5zZXRTZW50U2Nyb2xsRGVs
dGEoSW50U2l6ZSgpKTsKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZVJlZ2lvbihtX3Njcm9sbGFi
bGVSZWdpb24pOwogCiAgICAgaWYgKG1hc2tMYXllcigpKQogICAgICAgICBtYXNrTGF5ZXIoKS0+
cHVzaFByb3BlcnRpZXNUbyhsYXllci0+bWFza0xheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDFmZjk4ZjUuLmI4ZDRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJl
bmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTIwMyw2ICsyMDQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXREcmF3YWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsg
bV9kcmF3YWJsZUNvbnRlbnRSZWN0ID0gcmVjdDsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2b2lkIHNldENvbnRlbnRz
U2NhbGUoZmxvYXQpOworICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJsZVJlZ2lvbigpIHsgcmV0
dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsYWJsZVJlZ2lvbihj
b25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24gPSByZWdpb247IH0KIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMgaGFz
IGNvbnRlbnQgdG8gZHJhdy4KICAgICBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKTsKQEAg
LTI3OCw2ICsyODEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsK
ICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1fcHJlc2VydmVz
M0Q7CisgICAgUmVnaW9uIG1fc2Nyb2xsYWJsZVJlZ2lvbjsKIAogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fdHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc3VibGF5ZXJU
cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNjdhZDZjYS4uNzJhOTM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTIyLDYgKzEyMiwxOCBAQCB2b2lkIENDTGF5
ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wgQ0NMYXllckltcGw6OmlzSW5zaWRlU2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29udGVudFBvaW50KSBjb25zdAoreworICAg
IGlmIChtX3Njcm9sbGFibGVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJlY3RzID0gbV9zY3JvbGxhYmxlUmVnaW9u
LnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7IGkrKykK
KyAgICAgICAgaWYgKHJlY3RzW2ldLmNvbnRhaW5zKGNvbnRlbnRQb2ludCkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQ0NMYXllckltcGw6
OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsKQogewogICAgIEZsb2F0U2l6ZSBuZXdE
ZWx0YSA9IG1fc2Nyb2xsRGVsdGEgKyBzY3JvbGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA2
OWQ2MGRiLi41MTk0ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0xNjAsNiArMTYxLDEyIEBAIHB1YmxpYzoKICAgICBjb25z
dCBGbG9hdFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxEZWx0YTsg
fQogICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJik7CiAKKyAgICBjb25z
dCBSZWdpb24mIHNjcm9sbGFibGVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVS
ZWdpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJiByZWdp
b24pIHsgbV9zY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOyB9CisKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgYSBwb2ludCBpbiBjb250ZW50IGNvb3JkaW5hdGVzIGlzIGluc2lkZSB0aGUgc2Nyb2xs
YWJsZSByZWdpb24uCisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdpb24oY29uc3QgSW50
UG9pbnQmIGNvbnRlbnRQb2ludCkgY29uc3Q7CisKICAgICBmbG9hdCBwYWdlU2NhbGVEZWx0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRGVsdGE7IH0KICAgICB2b2lkIHNldFBhZ2VTY2Fs
ZURlbHRhKGZsb2F0KTsKIApAQCAtMjI5LDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9p
bnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsKICAgICBDb2xvciBt
X2JhY2tncm91bmRDb2xvcjsKKyAgICBSZWdpb24gbV9zY3JvbGxhYmxlUmVnaW9uOwogCiAgICAg
Ly8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAgYm9v
bCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCBjOWFkNTBkLi4wNjgzMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtMzMyLDYgKzMzMiwzNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dE5lZWRzUmVkcmF3KCkKICAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQo
KTsKIH0KIAorSW50UG9pbnQgQ0NMYXllclRyZWVIb3N0SW1wbDo6dmlld3BvcnRUb0xheWVyQ29u
dGVudFBvaW50KENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGNvbnN0IEludFBvaW50JiB2aWV3cG9y
dFBvaW50KSBjb25zdAoreworICAgIEludFBvaW50IGNvbnRlbnRQb2ludChsYXllckltcGwtPnNj
cmVlblNwYWNlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFBvaW50KHZpZXdwb3J0UG9pbnQpKTsK
KyAgICAvLyBUaGUgY29udGVudCBwb2ludCBmb3Igbm9uLXJvb3QgbGF5ZXJzIG11c3QgYmUgc2Nh
bGVkIHdpdGggdGhlIHBhZ2Ugc2NhbGUuIE5vdGUgdGhhdCB0aGUKKyAgICAvLyBwYWdlIHNjYWxl
IGRlbHRhIGlzIGFscmVhZHkgZW1iZWRkZWQgaW4gZWFjaCBsYXllcidzIHNjcmVlbiBzcGFjZSB0
cmFuc2Zvcm0uCisgICAgaWYgKGxheWVySW1wbCAhPSBtX3Njcm9sbExheWVySW1wbCkKKyAgICAg
ICAgY29udGVudFBvaW50LnNjYWxlKG1fcGFnZVNjYWxlLCBtX3BhZ2VTY2FsZSk7CisgICAgcmV0
dXJuIGNvbnRlbnRQb2ludDsKK30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0luc2lk
ZVNjcm9sbGFibGVSZWdpb24oQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9pbnQm
IHZpZXdwb3J0UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFsYXllckltcGwpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJJbXBsLT5jaGls
ZHJlbigpLnNpemUoKTsgaSsrKQorICAgICAgICBpZiAoaXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9u
KGxheWVySW1wbC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgdmlld3BvcnRQb2ludCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEludFBvaW50IGNvbnRlbnRQb2ludCh2aWV3cG9ydFRv
TGF5ZXJDb250ZW50UG9pbnQobGF5ZXJJbXBsLCB2aWV3cG9ydFBvaW50KSk7CisKKyAgICBpZiAo
bGF5ZXJJbXBsLT5kcmF3c0NvbnRlbnQoKSAmJiAhbGF5ZXJJbXBsLT52aXNpYmxlTGF5ZXJSZWN0
KCkuY29udGFpbnMoY29udGVudFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGxheWVySW1wbC0+aXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKGNvbnRlbnRQb2ludCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVlSG9zdEltcGw6OmJlZ2luU2Nyb2xs
aW5nSW5uZXJtb3N0TGF5ZXJBdFBvaW50KENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGNvbnN0IElu
dFBvaW50JiB2aWV3cG9ydFBvaW50KQogewogICAgIGlmICghbGF5ZXJJbXBsKQpAQCAtMzQzLDEy
ICszNzMsNyBAQCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmJlZ2luU2Nyb2xsaW5nSW5uZXJtb3N0TAogICAgICAgICAgICAgcmV0dXJuIHN0
YXR1czsKICAgICB9CiAKLSAgICBJbnRQb2ludCBjb250ZW50UG9pbnQobGF5ZXJJbXBsLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBQb2ludCh2aWV3cG9ydFBvaW50KSk7Ci0K
LSAgICAvLyBUaGUgY29udGVudCBwb2ludCBmb3Igbm9uLXJvb3QgbGF5ZXJzIG11c3QgYmUgc2Nh
bGVkIHdpdGggdGhlIHBhZ2Ugc2NhbGUuIE5vdGUgdGhhdCB0aGUKLSAgICAvLyBwYWdlIHNjYWxl
IGRlbHRhIGlzIGFscmVhZHkgZW1iZWRkZWQgaW4gZWFjaCBsYXllcidzIHNjcmVlbiBzcGFjZSB0
cmFuc2Zvcm0uCi0gICAgaWYgKGxheWVySW1wbCAhPSBtX3Njcm9sbExheWVySW1wbCkKLSAgICAg
ICAgY29udGVudFBvaW50LnNjYWxlKG1fcGFnZVNjYWxlLCBtX3BhZ2VTY2FsZSk7CisgICAgSW50
UG9pbnQgY29udGVudFBvaW50KHZpZXdwb3J0VG9MYXllckNvbnRlbnRQb2ludChsYXllckltcGws
IHZpZXdwb3J0UG9pbnQpKTsKIAogICAgIGlmIChsYXllckltcGwtPmRyYXdzQ29udGVudCgpICYm
ICFsYXllckltcGwtPnZpc2libGVMYXllclJlY3QoKS5jb250YWlucyhjb250ZW50UG9pbnQpKQog
ICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbElnbm9yZWQ7CkBAIC0z
NjMsNiArMzg4LDEzIEBAIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXll
clRyZWVIb3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMCiAKIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4oY29u
c3QgSW50UG9pbnQmIHZpZXdwb3J0UG9pbnQpCiB7CisgICAgLy8gSWYgdGhlIHBvaW50IGlzIHdp
dGhpbiBhbnkgc2Nyb2xsYWJsZSByZWdpb24sIHdlIG11c3QgZGVsZWdhdGUgaXQgdG8gdGhlIG1h
aW4gdGhyZWFkLiBUaGlzCisgICAgLy8gaXMgYmVjYXVzZSBldmVuIHRob3VnaCB0aGVyZSB3YXMg
YSBzY3JvbGxhYmxlIGxheWVyIHVuZGVyIHRoZSBxdWVyeSBwb2ludCwgd2UgbWlnaHQgbmVlZAor
ICAgIC8vIHRvIG1vdmUgYW55IG9mIGl0cyBhbmNlc3RvcnMgZHVyaW5nIHNjcm9sbGluZy4gSWYg
b25lIG9mIHRob3NlIGFuY2VzdG9ycyBpcyBhIHNjcm9sbGFibGUKKyAgICAvLyByZWdpb24gKGFz
IG9wcG9zZWQgdG8gYSBsYXllciksIHdlIHdvdWxkIG5lZWQgdG8gdHJhbnNpdGlvbiB0byBzY3Jv
bGxpbmcgaXQgaW4gdGhlIG1haW4KKyAgICAvLyB0aHJlYWQsIHdoaWNoIGlzIGN1cnJlbnRseSBu
b3QgcG9zc2libGUuCisgICAgaWYgKGlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihtX3Njcm9sbExh
eWVySW1wbC5nZXQoKSwgdmlld3BvcnRQb2ludCkpCisgICAgICAgIHJldHVybiBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkOwogICAgIHJldHVybiBiZWdpblNjcm9sbGluZ0lubmVy
bW9zdExheWVyQXRQb2ludChtX3Njcm9sbExheWVySW1wbC5nZXQoKSwgdmlld3BvcnRQb2ludCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA4ZmU1OTBhLi4y
MjNkMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMzAsNiAr
MTMwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7CiAg
ICAgU2Nyb2xsU3RhdHVzIGJlZ2luU2Nyb2xsaW5nSW5uZXJtb3N0TGF5ZXJBdFBvaW50KENDTGF5
ZXJJbXBsKiwgY29uc3QgSW50UG9pbnQmKTsKICAgICBib29sIGNvbGxlY3RTY3JvbGxEZWx0YXMo
Q0NTY3JvbGxBbmRTY2FsZVNldCogc2Nyb2xsSW5mbywgQ0NMYXllckltcGwqIGxheWVySW1wbCkg
Y29uc3Q7CisgICAgSW50UG9pbnQgdmlld3BvcnRUb0xheWVyQ29udGVudFBvaW50KENDTGF5ZXJJ
bXBsKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBib29sIGlzSW5zaWRlU2Nyb2xsYWJs
ZVJlZ2lvbihDQ0xheWVySW1wbCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICBPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhkNjgzZDMuLjc0NGIxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MzAgQEAKIDIwMTEtMTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgW2Nocm9taXVtXSBEZWxlZ2F0ZSBzY3JvbGwgZXZlbnRzIHRvIHRoZSBtYWlu
IHRocmVhZCB3aGVuIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQxOTYKKworICAgICAgICBXaGVuIHRoZSBjb21wb3NpdG9yIHJlY2VpdmVz
IGEgc2Nyb2xsIGV2ZW50LCBpdCBzaG91bGQgZG8gY2hlY2sgd2hldGhlcgorICAgICAgICBpdCBm
YWxscyBvdmVyIGEgc2Nyb2xsYWJsZSBlbGVtZW50IHdoaWNoIGlzIG5vdCBiYWNrZWQgYnkgYSBz
Y3JvbGxhYmxlCisgICAgICAgIGxheWVyLiBJbiBzdWNoIGEgY2FzZSB0aGUgZXZlbnQgbXVzdCBi
ZSByZWRpcmVjdGVkIHRvIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgYmVjYXVzZSB0aGUgc2lt
cGx5IHRyYW5zbGF0aW5nIHRoZSBlbmNsb3NpbmcgbGF5ZXIgaXMgZG9lcyBub3QgcmVwcm9kdWNl
CisgICAgICAgIHRoZSBkZXNpcmVkIHNjcm9sbGluZyBiZWhhdmlvci4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgYSBzY3JvbGxhYmxlIHJlZ2lvbiB0byBlYWNoIExheWVyQ2hyb21pdW0uIFRo
aXMgcmVnaW9uCisgICAgICAgIGluZGljYXRlcyB0aGUgcG9zaXRpb25zIG9mIGFsbCBzY3JvbGxh
YmxlIGVsZW1lbnRzIHdpdGhpbiB0aGUgbGF5ZXIgaW4KKyAgICAgICAgbG9jYWwgY29vcmRpbmF0
ZXMuIFRoZSBjb21wb3NpdG9yIGlucHV0IGhhbmRsZXIgdXNlcyB0aGlzIGRhdGEgY2hvb3NlCisg
ICAgICAgIGJldHdlZW4gcHJvY2Vzc2luZyBhIHNjcm9sbCBpbnB1dCBldmVudCBieSBpdHNlbGYg
b3IgZGVsZWdhdGluZyB0aGUKKyAgICAgICAgZXZlbnQgdG8gdGhlIG1haW4gdGhyZWFkLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRM
YXllclNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6
CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpURVNUX0YpOgorCisyMDExLTEyLTA5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxA
Y2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGxheWVyIHNjcm9s
bGluZyBpbiB0aGUgY29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggMjQ3MjYxMS4uZDg4ZTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTg2
Miw2ICs4NjIsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZW1vdmVTY3JvbGxpbmdMYXll
cihOb2RlKiBub2RlLCBQbGF0Zm9ybUxheWVyKiBzY3JvbGxpbmcKICAgICBjb250ZW50c0xheWVy
LT5zZXRTY3JvbGxOb2RlKDApOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnNldExheWVy
U2Nyb2xsYWJsZVJlZ2lvbihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgUmVnaW9uJiByZWdp
b24pCit7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24ocmVnaW9uKTsKK30KKwogLy8g
RklYTUU6IFJlbW92ZSBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNz
aW9uRm9yRnJhbWUgYW5kIENocm9tZUNsaWVudEltcGw6OmNhbmNlbEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RGb3JGcmFtZQogLy8gb25jZSBhbGwgcG9ydHMgaGF2ZSBtb3ZlZCB0byBjbGll
bnQtYmFzZWQgZ2VvbG9jYXRpb24gKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDAzNzMgKS4KIC8vIEZvciBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24sIHRoZXNl
IG1ldGhvZHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVx
dWVzdFBlcm1pc3Npb24gYW5kIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpjYW5jZWxQZXJtaXNzaW9u
UmVxdWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
aAppbmRleCAwZDNmM2I2Li42MjRlYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEZpbGVDaG9vc2Vy
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvcHVwQ29udGFpbmVyOwogY2xhc3MgUG9wdXBNZW51Q2xp
ZW50OworY2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CiBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CkBAIC0xMzYsNiArMTM3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBwYWludEN1c3RvbU92ZXJoYW5nQXJlYShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkT3JVcGRh
dGVTY3JvbGxpbmdMYXllcihXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UGxhdGZvcm1MYXllciog
c2Nyb2xsaW5nTGF5ZXIsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXIsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbFNpemUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTY3JvbGxpbmdMYXllcihXZWJDb3JlOjpOb2RlKiwgV2ViQ29yZTo6UGxhdGZvcm1MYXllciog
c2Nyb2xsaW5nTGF5ZXIsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclNjcm9sbGFibGVSZWdpb24oV2ViQ29yZTo6UGxhdGZv
cm1MYXllciogbGF5ZXIsIGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6
OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cAppbmRleCBmY2I3Mjg1Li5hNjMyOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjQzLDYgKzI0
Myw0MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbENoaWxkQW5kQ2hh
bmdlUGFnZVNjYWxlKQogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZvLmdldCgpLCBjaGls
ZC0+aWQoKSwgc2Nyb2xsRGVsdGEpOwogfQogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHNjcm9sbGFibGVSZWdpb25IaXRUZXN0aW5nKQoreworICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJs
ZSh0cnVlKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAw
KSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworCisgICAgUmVnaW9uIHNj
cm9sbGFibGVSZWdpb247CisgICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJbnRSZWN0KEludFBv
aW50KCksIEludFNpemUoNCwgNCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlUmVnaW9uKHNj
cm9sbGFibGVSZWdpb24pOworCisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2lu
KEludFBvaW50KDIsIDIpKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cisg
ICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDYsIDIpKSwgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOworfQorCitURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGFibGVSZWdpb25PdmVycmlkZXNMYXllcikKK3sKKyAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDApOworICAgIHJv
b3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24o
SW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsK
KworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDAp
OworICAgIGNoaWxkLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGNoaWxkLT5zZXRNYXhTY3Jv
bGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgY2hpbGQtPnNldERyYXdzQ29udGVu
dCh0cnVlKTsKKyAgICBjaGlsZC0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50
KCksIEludFNpemUoMTAsIDEwKSkpOworCisgICAgUmVnaW9uIHNjcm9sbGFibGVSZWdpb247Cisg
ICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoOCwg
OCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlUmVnaW9uKHNjcm9sbGFibGVSZWdpb24pOwor
CisgICAgLy8gU2Nyb2xsIHNob3VsZCBmYWlsIHNpbmNlIHRoZXJlIGlzIGEgc2Nyb2xsYWJsZSBy
ZWdpb24gaW4gdGhlIHJvb3QgbGF5ZXIgdW5kZXIgdGhlc2UgY29vcmRpbmF0ZXMuCisgICAgRVhQ
RUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUpKSwgQ0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cit9CisKIGNsYXNzIEJsZW5kU3RhdGVUcmFja2Vy
Q29udGV4dDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CiAgICAg
QmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0KCkgOiBtX2JsZW5kKGZhbHNlKSB7IH0KLS0gCjEuNy4z
LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119287</attachid>
            <date>2011-12-14 13:40:03 -0800</date>
            <delta_ts>2011-12-16 15:17:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74196-20111214214001.patch</filename>
            <type>text/plain</type>
            <size>15792</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1YzUxNGFiOWJlY2My
Nzg2NmY4Y2Y3N2Q3M2VjNTI1MTc2OWQ5MS4uMWQzYjI2OTA0NDAwNWZjNDk2NGM0ZWFjYWQzZDRk
ZGE3Y2E3MTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEyLTA5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
RGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTk2CisKKyAg
ICAgICAgV2hlbiB0aGUgY29tcG9zaXRvciByZWNlaXZlcyBhIHNjcm9sbCBldmVudCwgaXQgc2hv
dWxkIGRvIGNoZWNrIHdoZXRoZXIKKyAgICAgICAgaXQgZmFsbHMgb3ZlciBhIHNjcm9sbGFibGUg
ZWxlbWVudCB3aGljaCBpcyBub3QgYmFja2VkIGJ5IGEgc2Nyb2xsYWJsZQorICAgICAgICBsYXll
ci4gSW4gc3VjaCBhIGNhc2UgdGhlIGV2ZW50IG11c3QgYmUgcmVkaXJlY3RlZCB0byB0aGUgbWFp
biB0aHJlYWQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNpbXBseSB0cmFuc2xhdGluZyB0aGUgZW5j
bG9zaW5nIGxheWVyIGlzIGRvZXMgbm90IHJlcHJvZHVjZQorICAgICAgICB0aGUgZGVzaXJlZCBz
Y3JvbGxpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2Nyb2xsYWJs
ZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgorICAgICAgICBpbmRp
Y2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4gdGhl
IGxheWVyIGluCisgICAgICAgIGxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1
dCBoYW5kbGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQorICAgICAgICBiZXR3ZWVuIHByb2Nlc3Np
bmcgYSBzY3JvbGwgaW5wdXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCisgICAg
ICAgIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2Nyb2xsYWJsZVJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlUmVnaW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVn
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNjcm9sbGFibGVSZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbGFibGVSZWdpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6d2luZG93VG9MYXll
ckNvbnRlbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
c0luc2lkZVNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKworMjAx
MS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIEltcGxlbWVudCBsYXllciBzY3JvbGxpbmcgaW4gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzM1MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkNjgzZDNmYzU0MTlkOTYzYjky
NGU5ZDNkMmMwMTBkZjM1MzgwOTguLjc0NGIxNzg4ZTVlODIzMmJiNGY4YmU0NGNmNDM1NmQwMmIx
NmI3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEt
MTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBEZWxlZ2F0ZSBzY3JvbGwgZXZlbnRzIHRvIHRoZSBtYWluIHRocmVhZCB3aGVu
IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxOTYKKworICAgICAgICBXaGVuIHRoZSBjb21wb3NpdG9yIHJlY2VpdmVzIGEgc2Nyb2xsIGV2
ZW50LCBpdCBzaG91bGQgZG8gY2hlY2sgd2hldGhlcgorICAgICAgICBpdCBmYWxscyBvdmVyIGEg
c2Nyb2xsYWJsZSBlbGVtZW50IHdoaWNoIGlzIG5vdCBiYWNrZWQgYnkgYSBzY3JvbGxhYmxlCisg
ICAgICAgIGxheWVyLiBJbiBzdWNoIGEgY2FzZSB0aGUgZXZlbnQgbXVzdCBiZSByZWRpcmVjdGVk
IHRvIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgYmVjYXVzZSB0aGUgc2ltcGx5IHRyYW5zbGF0
aW5nIHRoZSBlbmNsb3NpbmcgbGF5ZXIgaXMgZG9lcyBub3QgcmVwcm9kdWNlCisgICAgICAgIHRo
ZSBkZXNpcmVkIHNjcm9sbGluZyBiZWhhdmlvci4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JvbGxhYmxlIHJlZ2lvbiB0byBlYWNoIExheWVyQ2hyb21pdW0uIFRoaXMgcmVnaW9uCisg
ICAgICAgIGluZGljYXRlcyB0aGUgcG9zaXRpb25zIG9mIGFsbCBzY3JvbGxhYmxlIGVsZW1lbnRz
IHdpdGhpbiB0aGUgbGF5ZXIgaW4KKyAgICAgICAgbG9jYWwgY29vcmRpbmF0ZXMuIFRoZSBjb21w
b3NpdG9yIGlucHV0IGhhbmRsZXIgdXNlcyB0aGlzIGRhdGEgY2hvb3NlCisgICAgICAgIGJldHdl
ZW4gcHJvY2Vzc2luZyBhIHNjcm9sbCBpbnB1dCBldmVudCBieSBpdHNlbGYgb3IgZGVsZWdhdGlu
ZyB0aGUKKyAgICAgICAgZXZlbnQgdG8gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRMYXllclNjcm9sbGFi
bGVSZWdpb24pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorCisyMDExLTEyLTA5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGxheWVyIHNjcm9sbGluZyBpbiB0aGUg
Y29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYzczM2FhOTc3ODEx
Zjg4ZmEyNDUxYTRiZDEyYzIxOWZjZTdmNjFmMi4uZWNjMTlhNDg2ODQ2MmFjYjBhOTc0OGM1MjNl
YmZmNTUwMTk0MDFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5Nyw2ICszOTcsNyBA
QCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5
ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24obV9zY3JvbGxhYmxlUmVn
aW9uKTsKIAogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXItPm1hc2tMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAx
ZmY5OGY1NDg0ODQ0YzRmNGI2YWZkMDc2YjFhMjYzYjg0MDQ3NTc1Li5iOGQ0ZmM4MTBjMDNmZjY4
YjUzYTcwZDhkNTFhNGFkNDBhYzU2OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRl
ICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC0yMDMsNiArMjA0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RHJhd2FibGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0
KSB7IG1fZHJhd2FibGVDb250ZW50UmVjdCA9IHJlY3Q7IH0KICAgICBmbG9hdCBjb250ZW50c1Nj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAgICAgdm9pZCBzZXRDb250
ZW50c1NjYWxlKGZsb2F0KTsKKyAgICBjb25zdCBSZWdpb24mIHNjcm9sbGFibGVSZWdpb24oKSB7
IHJldHVybiBtX3Njcm9sbGFibGVSZWdpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbGFibGVSZWdp
b24oY29uc3QgUmVnaW9uJiByZWdpb24pIHsgbV9zY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOyB9
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBsYXllcidzIGRlc2NlbmRhbnRz
IGhhcyBjb250ZW50IHRvIGRyYXcuCiAgICAgYm9vbCBkZXNjZW5kYW50RHJhd3NDb250ZW50KCk7
CkBAIC0yNzgsNiArMjgxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlc0xheWVyQ2xpcHBp
bmc7CiAgICAgYm9vbCBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQ7CiAgICAgYm9vbCBtX3ByZXNl
cnZlczNEOworICAgIFJlZ2lvbiBtX3Njcm9sbGFibGVSZWdpb247CiAKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3N1Ymxh
eWVyVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDY3YWQ2Y2ExZWI2YTFm
Yjk5YTQ1ZDU1YjQ2OTBkMDlmOTIyNmU1OTguLjcyYTkzNzM2ZDM1NmIwZmFhODdmYmMyMDgwNmU0
OGRjMmE5MmQ0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTEyMiw2ICsxMjIsMTgg
QEAgdm9pZCBDQ0xheWVySW1wbDo6YmluZENvbnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29sIENDTGF5ZXJJbXBs
Ojppc0luc2lkZVNjcm9sbGFibGVSZWdpb24oY29uc3QgSW50UG9pbnQmIGNvbnRlbnRQb2ludCkg
Y29uc3QKK3sKKyAgICBpZiAobV9zY3JvbGxhYmxlUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cyA9IG1fc2Ny
b2xsYWJsZVJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMu
c2l6ZSgpOyBpKyspCisgICAgICAgIGlmIChyZWN0c1tpXS5jb250YWlucyhjb250ZW50UG9pbnQp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lk
IENDTGF5ZXJJbXBsOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIHNjcm9sbCkKIHsKICAgICBG
bG9hdFNpemUgbmV3RGVsdGEgPSBtX3Njcm9sbERlbHRhICsgc2Nyb2xsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmgKaW5kZXggNjlkNjBkYmU0YzhkNTI5ZDMzZDk4MGU4Y2M3ZDQ0Mzc5ODc2ZTA4Mi4uZWQ5
MGMxOTZmNTdmMTY5ZDg0Yzk3ODRjNGVkZGY3NGJmYjc2YTE1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5j
bHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCkBAIC0xNjAsNiArMTYxLDEyIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBGbG9hdFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxEZWx0YTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJik7
CiAKKyAgICBjb25zdCBSZWdpb24mIHNjcm9sbGFibGVSZWdpb24oKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGFibGVSZWdpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbGFibGVSZWdpb24oY29uc3Qg
UmVnaW9uJiByZWdpb24pIHsgbV9zY3JvbGxhYmxlUmVnaW9uID0gcmVnaW9uOyB9CisKKyAgICAv
LyBSZXR1cm5zIHRydWUgaWYgYSBwb2ludCBpbiBjb250ZW50IGNvb3JkaW5hdGVzIGlzIGluc2lk
ZSB0aGUgc2Nyb2xsYWJsZSByZWdpb24uCisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdp
b24oY29uc3QgSW50UG9pbnQmIGNvbnRlbnRQb2ludCkgY29uc3Q7CisKICAgICBmbG9hdCBwYWdl
U2NhbGVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlRGVsdGE7IH0KICAgICB2b2lk
IHNldFBhZ2VTY2FsZURlbHRhKGZsb2F0KTsKIApAQCAtMjI5LDYgKzIzNiw3IEBAIHByaXZhdGU6
CiAgICAgSW50UG9pbnQgbV9zY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fc2Nyb2xsYWJsZTsK
ICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZWdpb24gbV9zY3JvbGxhYmxlUmVn
aW9uOwogCiAgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRy
YXcuCiAgICAgYm9vbCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcAppbmRleCA2YmQ4MDE0OTZiYTAyZjE4Y2UzNjhlMjIwOTQ2MjlmNTNkMjdiYmVi
Li5kNDE0YjQ2NjRmYjNiNzNiODlmYmM4OGRkYzRmN2E1NzM1YmIyOGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzUwLDYgKzM1MCwyNSBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdEltcGw6OmlzQ29udGVudFBvaW50V2l0aGluTGF5ZXIoQ0NMYXllckltcGwq
IGxheWVySW1wbCwgY29ucwogICAgIHJldHVybiBsYXllckNvbnRlbnRSZWN0LmNvbnRhaW5zKGNv
bnRlbnRQb2ludCk7CiB9CiAKK2Jvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aXNJbnNpZGVTY3Jv
bGxhYmxlUmVnaW9uKENDTGF5ZXJJbXBsKiBsYXllckltcGwsIGNvbnN0IEludFBvaW50JiB2aWV3
cG9ydFBvaW50KSBjb25zdAoreworICAgIGlmICghbGF5ZXJJbXBsKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheWVySW1wbC0+Y2hpbGRyZW4o
KS5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKGlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihsYXll
ckltcGwtPmNoaWxkcmVuKClbaV0uZ2V0KCksIHZpZXdwb3J0UG9pbnQpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBJbnRQb2ludCBjb250ZW50UG9pbnQobGF5ZXJJbXBsLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBQb2ludCh2aWV3cG9ydFBvaW50KSk7Cisg
ICAgaWYgKGxheWVySW1wbC0+ZHJhd3NDb250ZW50KCkgJiYgIWlzQ29udGVudFBvaW50V2l0aGlu
TGF5ZXIobGF5ZXJJbXBsLCBjb250ZW50UG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobGF5ZXJJbXBsLT5pc0luc2lkZVNjcm9sbGFibGVSZWdpb24oY29udGVudFBvaW50
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6YmVnaW5T
Y3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQoQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29u
c3QgSW50UG9pbnQmIHZpZXdwb3J0UG9pbnQpCiB7CiAgICAgaWYgKCFsYXllckltcGwpCkBAIC0z
NzYsNiArMzk1LDEzIEBAIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXll
clRyZWVIb3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMCiBDQ0lucHV0SGFuZGxlckNs
aWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9sbEJlZ2luKGNvbnN0
IEludFBvaW50JiB2aWV3cG9ydFBvaW50KQogewogICAgIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5
ZXJJbXBsLmNsZWFyKCk7CisgICAgLy8gSWYgdGhlIHBvaW50IGlzIHdpdGhpbiBhbnkgc2Nyb2xs
YWJsZSByZWdpb24sIHdlIG11c3QgZGVsZWdhdGUgaXQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGlz
CisgICAgLy8gaXMgYmVjYXVzZSBldmVuIHRob3VnaCB0aGVyZSB3YXMgYSBzY3JvbGxhYmxlIGxh
eWVyIHVuZGVyIHRoZSBxdWVyeSBwb2ludCwgd2UgbWlnaHQgbmVlZAorICAgIC8vIHRvIG1vdmUg
YW55IG9mIGl0cyBhbmNlc3RvcnMgZHVyaW5nIHNjcm9sbGluZy4gSWYgb25lIG9mIHRob3NlIGFu
Y2VzdG9ycyBpcyBhIHNjcm9sbGFibGUKKyAgICAvLyByZWdpb24gKGFzIG9wcG9zZWQgdG8gYSBs
YXllciksIHdlIHdvdWxkIG5lZWQgdG8gdHJhbnNpdGlvbiB0byBzY3JvbGxpbmcgaXQgaW4gdGhl
IG1haW4KKyAgICAvLyB0aHJlYWQsIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgcG9zc2libGUuCisg
ICAgaWYgKGlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihtX3Njcm9sbExheWVySW1wbC5nZXQoKSwg
dmlld3BvcnRQb2ludCkpCisgICAgICAgIHJldHVybiBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Ny
b2xsRmFpbGVkOwogICAgIHJldHVybiBiZWdpblNjcm9sbGluZ0lubmVybW9zdExheWVyQXRQb2lu
dChtX3Njcm9sbExheWVySW1wbC5nZXQoKSwgdmlld3BvcnRQb2ludCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBmN2QxYjdmM2U3MTM1MWRiOTU5MDFmYWJk
YmQ2OGVjYzkzMDk1NDlhLi40ZGI5OWUyOTIyN2Y3NTg0NjMzYjE5NWI4ODQ4N2QyY2JlYzYwZGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMzEsNiArMTMxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQ29udGVudFBvaW50V2l0aGluTGF5ZXIoQ0NMYXllcklt
cGwqLCBjb25zdCBJbnRQb2ludCYgY29udGVudFBvaW50KSBjb25zdDsKICAgICBTY3JvbGxTdGF0
dXMgYmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQoQ0NMYXllckltcGwqLCBjb25z
dCBJbnRQb2ludCYpOwogICAgIHZvaWQgY29sbGVjdFNjcm9sbERlbHRhcyhDQ1Njcm9sbEFuZFNj
YWxlU2V0KiwgQ0NMYXllckltcGwqKSBjb25zdDsKKyAgICBib29sIGlzSW5zaWRlU2Nyb2xsYWJs
ZVJlZ2lvbihDQ0xheWVySW1wbCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICBPd25Q
dHI8TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBtX3Jvb3RMYXllckltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDI0NzI2MTFlYjNlNTUyZTY4MjBmNTNkODUz
ZGQxYmNiNzcxZTM0NGUuLmQ4OGUwYjgzMDY2YWJjZTY3MzMwYjBhYzQ4YTZhNmEzMGYwZDIyNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CkBAIC04NjIsNiArODYyLDExIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cmVtb3ZlU2Nyb2xs
aW5nTGF5ZXIoTm9kZSogbm9kZSwgUGxhdGZvcm1MYXllciogc2Nyb2xsaW5nCiAgICAgY29udGVu
dHNMYXllci0+c2V0U2Nyb2xsTm9kZSgwKTsKIH0KIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpz
ZXRMYXllclNjcm9sbGFibGVSZWdpb24oUGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IFJlZ2lv
biYgcmVnaW9uKQoreworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Cit9
CisKIC8vIEZJWE1FOiBSZW1vdmUgQ2hyb21lQ2xpZW50SW1wbDo6cmVxdWVzdEdlb2xvY2F0aW9u
UGVybWlzc2lvbkZvckZyYW1lIGFuZCBDaHJvbWVDbGllbnRJbXBsOjpjYW5jZWxHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUKIC8vIG9uY2UgYWxsIHBvcnRzIGhhdmUgbW92ZWQg
dG8gY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9uIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQwMzczICkuCiAvLyBGb3IgY2xpZW50LWJhc2VkIGdlb2xvY2F0aW9u
LCB0aGVzZSBtZXRob2RzIGFyZSBub3cgaW1wbGVtZW50ZWQgYXMgV2ViR2VvbG9jYXRpb25DbGll
bnQ6OnJlcXVlc3RQZXJtaXNzaW9uIGFuZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6Y2FuY2VsUGVy
bWlzc2lvblJlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmgKaW5kZXggMGQzZjNiNjgyMTRlZDllOTY4NGVkMDJjYjVmZTg0MjM3YjlhYzFmZS4u
ZGExZDM5OWIwYzM4MGQzNjBiOTNiYmMxZGE2ZWE2NGRkYmQzYzYxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtNDQsNiArNDQsNyBAQCBj
bGFzcyBGaWxlQ2hvb3NlcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNs
YXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIFJlZ2lvbjsKIGNsYXNzIFJlbmRlckJveDsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwpAQCAtMTM2LDYgKzEz
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGFkZE9yVXBkYXRlU2Nyb2xsaW5nTGF5ZXIoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6
OlBsYXRmb3JtTGF5ZXIqIHNjcm9sbGluZ0xheWVyLCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxTaXplKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2Nyb2xsaW5nTGF5ZXIoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6
OlBsYXRmb3JtTGF5ZXIqIHNjcm9sbGluZ0xheWVyLCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKiBj
b250ZW50c0xheWVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJTY3JvbGxhYmxlUmVnaW9u
KFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpSZWdpb24mKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2Vi
Q29yZTo6R2VvbG9jYXRpb24qKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNv
cmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcAppbmRleCBmY2I3Mjg1ZTNiODYyMGI2MjQxZTI5OWU4OTMwNWRkMTY0Nzg4Y2RjLi5hNjMy
OWQ1YmViMmVmY2VkMDgzNDg5MTJlNGY3MjdhMDM0ZTIxYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApA
QCAtMjQzLDYgKzI0Myw0MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9s
bENoaWxkQW5kQ2hhbmdlUGFnZVNjYWxlKQogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZv
LmdldCgpLCBjaGlsZC0+aWQoKSwgc2Nyb2xsRGVsdGEpOwogfQogCitURVNUX0YoQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGFibGVSZWdpb25IaXRUZXN0aW5nKQoreworICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+
c2V0U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRT
aXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworCisg
ICAgUmVnaW9uIHNjcm9sbGFibGVSZWdpb247CisgICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJ
bnRSZWN0KEludFBvaW50KCksIEludFNpemUoNCwgNCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxh
YmxlUmVnaW9uKHNjcm9sbGFibGVSZWdpb24pOworCisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwt
PnNjcm9sbEJlZ2luKEludFBvaW50KDIsIDIpKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9s
bEZhaWxlZCk7CisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50
KDYsIDIpKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOworfQorCitURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbGFibGVSZWdpb25PdmVycmlkZXNMYXll
cikKK3sKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDApOworICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgcm9vdC0+c2V0TWF4U2Ny
b2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1faG9zdEltcGwtPnNldFJvb3RM
YXllcihyb290KTsKKworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1w
bDo6Y3JlYXRlKDApOworICAgIGNoaWxkLT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGNoaWxk
LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgY2hpbGQtPnNl
dERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBjaGlsZC0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KEludFBvaW50KCksIEludFNpemUoMTAsIDEwKSkpOworCisgICAgUmVnaW9uIHNjcm9sbGFi
bGVSZWdpb247CisgICAgc2Nyb2xsYWJsZVJlZ2lvbi51bml0ZShJbnRSZWN0KEludFBvaW50KCks
IEludFNpemUoOCwgOCkpKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlUmVnaW9uKHNjcm9sbGFi
bGVSZWdpb24pOworCisgICAgLy8gU2Nyb2xsIHNob3VsZCBmYWlsIHNpbmNlIHRoZXJlIGlzIGEg
c2Nyb2xsYWJsZSByZWdpb24gaW4gdGhlIHJvb3QgbGF5ZXIgdW5kZXIgdGhlc2UgY29vcmRpbmF0
ZXMuCisgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUp
KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCk7Cit9CisKIGNsYXNzIEJsZW5k
U3RhdGVUcmFja2VyQ29udGV4dDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBw
dWJsaWM6CiAgICAgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0KCkgOiBtX2JsZW5kKGZhbHNlKSB7
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119684</attachid>
            <date>2011-12-16 15:17:49 -0800</date>
            <delta_ts>2011-12-20 13:01:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74196-20111216231747.patch</filename>
            <type>text/plain</type>
            <size>15649</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTczMDdmYTBkNDVhNjU4
ZmQ2NWQ2ZWZiM2ZkZmQ5NTkxYjFlMDdjYy4uM2JmNjU4NmE0OTk3NGYyNjk2YWEwNDg2YmM4NzUy
ZGEyYzBmOWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEyLTA5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
RGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTk2CisKKyAg
ICAgICAgV2hlbiB0aGUgY29tcG9zaXRvciByZWNlaXZlcyBhIHNjcm9sbCBldmVudCwgaXQgc2hv
dWxkIGRvIGNoZWNrIHdoZXRoZXIKKyAgICAgICAgaXQgZmFsbHMgb3ZlciBhIHNjcm9sbGFibGUg
ZWxlbWVudCB3aGljaCBpcyBub3QgYmFja2VkIGJ5IGEgc2Nyb2xsYWJsZQorICAgICAgICBsYXll
ci4gSW4gc3VjaCBhIGNhc2UgdGhlIGV2ZW50IG11c3QgYmUgcmVkaXJlY3RlZCB0byB0aGUgbWFp
biB0aHJlYWQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNpbXBseSB0cmFuc2xhdGluZyB0aGUgZW5j
bG9zaW5nIGxheWVyIGlzIGRvZXMgbm90IHJlcHJvZHVjZQorICAgICAgICB0aGUgZGVzaXJlZCBz
Y3JvbGxpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2Nyb2xsYWJs
ZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgorICAgICAgICBpbmRp
Y2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4gdGhl
IGxheWVyIGluCisgICAgICAgIGxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1
dCBoYW5kbGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQorICAgICAgICBiZXR3ZWVuIHByb2Nlc3Np
bmcgYSBzY3JvbGwgaW5wdXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCisgICAg
ICAgIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2Nyb2xsYWJsZVJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlUmVnaW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVn
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNjcm9sbGFibGVSZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbGFibGVSZWdpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6d2luZG93VG9MYXll
ckNvbnRlbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
c0luc2lkZVNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKworMjAx
MS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIEltcGxlbWVudCBsYXllciBzY3JvbGxpbmcgaW4gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzM1MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk3MmE2NGI1ZDAwMjYxYjczN2Q5
ZTFlMjI3YWQ2ZDYzOTUyNWNjODUuLjFiZGIzYmIyNGJhN2RkZWFmODkxMjY5NTRiYzlhOWRkOWM2
MzExOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEt
MTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBEZWxlZ2F0ZSBzY3JvbGwgZXZlbnRzIHRvIHRoZSBtYWluIHRocmVhZCB3aGVu
IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxOTYKKworICAgICAgICBXaGVuIHRoZSBjb21wb3NpdG9yIHJlY2VpdmVzIGEgc2Nyb2xsIGV2
ZW50LCBpdCBzaG91bGQgZG8gY2hlY2sgd2hldGhlcgorICAgICAgICBpdCBmYWxscyBvdmVyIGEg
c2Nyb2xsYWJsZSBlbGVtZW50IHdoaWNoIGlzIG5vdCBiYWNrZWQgYnkgYSBzY3JvbGxhYmxlCisg
ICAgICAgIGxheWVyLiBJbiBzdWNoIGEgY2FzZSB0aGUgZXZlbnQgbXVzdCBiZSByZWRpcmVjdGVk
IHRvIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgYmVjYXVzZSB0aGUgc2ltcGx5IHRyYW5zbGF0
aW5nIHRoZSBlbmNsb3NpbmcgbGF5ZXIgaXMgZG9lcyBub3QgcmVwcm9kdWNlCisgICAgICAgIHRo
ZSBkZXNpcmVkIHNjcm9sbGluZyBiZWhhdmlvci4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JvbGxhYmxlIHJlZ2lvbiB0byBlYWNoIExheWVyQ2hyb21pdW0uIFRoaXMgcmVnaW9uCisg
ICAgICAgIGluZGljYXRlcyB0aGUgcG9zaXRpb25zIG9mIGFsbCBzY3JvbGxhYmxlIGVsZW1lbnRz
IHdpdGhpbiB0aGUgbGF5ZXIgaW4KKyAgICAgICAgbG9jYWwgY29vcmRpbmF0ZXMuIFRoZSBjb21w
b3NpdG9yIGlucHV0IGhhbmRsZXIgdXNlcyB0aGlzIGRhdGEgY2hvb3NlCisgICAgICAgIGJldHdl
ZW4gcHJvY2Vzc2luZyBhIHNjcm9sbCBpbnB1dCBldmVudCBieSBpdHNlbGYgb3IgZGVsZWdhdGlu
ZyB0aGUKKyAgICAgICAgZXZlbnQgdG8gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRMYXllclNjcm9sbGFi
bGVSZWdpb24pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorCisyMDExLTEyLTA5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGxheWVyIHNjcm9sbGluZyBpbiB0aGUg
Y29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjhhZGUzOTM1OTZh
MTg3MThhYzRhMTk2MWRlNDNjYWMwYzNkY2E5ZC4uMWNjODY2ZTM4M2Q1MTQ5ZDczZmFiMzJhZDBi
ODdkZjNkYzViZGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5Nyw2ICszOTcsNyBA
QCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5
ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24obV9zY3JvbGxhYmxlUmVn
aW9uKTsKIAogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXItPm1hc2tMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA1
MDBjYzg4MTNhM2NmMDc2YTQ5NDUzYzJmYjNhMmIwNzJmYzdkNDljLi4yYmRjZDEzN2M0MTJlNmIw
ODU4OTYxZWE2Nzc3MzU5MWFmNGRhZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTIwMiw2ICsy
MDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmF3YWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpIHsgbV9kcmF3YWJsZUNvbnRlbnRSZWN0ID0gcmVjdDsgfQogICAgIGZsb2F0
IGNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2
b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJs
ZVJlZ2lvbigpIHsgcmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24g
PSByZWdpb247IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3Mg
ZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICBib29sIGRlc2NlbmRhbnREcmF3
c0NvbnRlbnQoKTsKQEAgLTI3Niw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2Vz
TGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBi
b29sIG1fcHJlc2VydmVzM0Q7CisgICAgUmVnaW9uIG1fc2Nyb2xsYWJsZVJlZ2lvbjsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMDY2
ZGU5YTA2NmZmMTQ5MjVjOTRlMTYxOGQ3ZDY2ZmNhYjY1NGJjMC4uNTc2MzY0NWQwYWM1ZGVmNGVi
MGJmNWY4ODZjN2ZmMzNlN2E1Yjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTQ5
LDYgKzE0OSwxOCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wg
Q0NMYXllckltcGw6OmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29u
dGVudFBvaW50KSBjb25zdAoreworICAgIGlmIChtX3Njcm9sbGFibGVSZWdpb24uaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzID0gbV9zY3JvbGxhYmxlUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKHJlY3RzW2ldLmNvbnRhaW5zKGNv
bnRlbnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xs
KQogewogICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IG1fc2Nyb2xsRGVsdGEgKyBzY3JvbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCBmZmJlOWVkNTkxYTRiYzk1OTFmMzYzZjJlNzI2YmM2OWY2
MmVkYWE0Li42YzhlZjdmNmQ4NDAyNzM1ZjgyNjI3MjA5MmIzZTNmMGY1MTUxMzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKQEAgLTE2Myw2ICsxNjQsMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbERlbHRhOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBGbG9h
dFNpemUmKTsKIAorICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJsZVJlZ2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsYWJsZVJlZ2lv
bihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24gPSByZWdpb247IH0K
KworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHBvaW50IGluIGNvbnRlbnQgY29vcmRpbmF0ZXMg
aXMgaW5zaWRlIHRoZSBzY3JvbGxhYmxlIHJlZ2lvbi4KKyAgICBib29sIGlzSW5zaWRlU2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29udGVudFBvaW50KSBjb25zdDsKKwogICAgIGZs
b2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGVEZWx0YTsgfQog
ICAgIHZvaWQgc2V0UGFnZVNjYWxlRGVsdGEoZmxvYXQpOwogCkBAIC0yMzUsNiArMjQyLDcgQEAg
cHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9zY3Jv
bGxhYmxlOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFJlZ2lvbiBtX3Njcm9s
bGFibGVSZWdpb247CiAKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBz
aG91bGQgZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDg5NTg3NTJiNDRiZDdhMmRhMjhlODk2MjljMGNlNGQy
MjljOWZjNGMuLjk3MDNlY2VmOTJiMThjYTlhNDgwNzNjYTY2NjhhODUxM2IyOTQ5MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00NzQsNiArNDc0LDI1IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aXNDb250ZW50UG9pbnRXaXRoaW5MYXllcihDQ0xh
eWVySW1wbCogbGF5ZXJJbXBsLCBjb25zCiAgICAgcmV0dXJuIGxheWVyQ29udGVudFJlY3QuY29u
dGFpbnMoY29udGVudFBvaW50KTsKIH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0lu
c2lkZVNjcm9sbGFibGVSZWdpb24oQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9p
bnQmIHZpZXdwb3J0UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFsYXllckltcGwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJJbXBsLT5j
aGlsZHJlbigpLnNpemUoKTsgaSsrKQorICAgICAgICBpZiAoaXNJbnNpZGVTY3JvbGxhYmxlUmVn
aW9uKGxheWVySW1wbC0+Y2hpbGRyZW4oKVtpXS5nZXQoKSwgdmlld3BvcnRQb2ludCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEludFBvaW50IGNvbnRlbnRQb2ludChsYXllcklt
cGwtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFBvaW50KHZpZXdwb3J0UG9p
bnQpKTsKKyAgICBpZiAobGF5ZXJJbXBsLT5kcmF3c0NvbnRlbnQoKSAmJiAhaXNDb250ZW50UG9p
bnRXaXRoaW5MYXllcihsYXllckltcGwsIGNvbnRlbnRQb2ludCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChsYXllckltcGwtPmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihjb250
ZW50UG9pbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpiZWdpblNjcm9sbGluZ0lubmVybW9zdExheWVyQXRQb2ludChDQ0xheWVySW1wbCogbGF5ZXJJ
bXBsLCBjb25zdCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCkKIHsKICAgICBpZiAoIWxheWVySW1w
bCkKQEAgLTUwMCw2ICs1MTksMTMgQEAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1
cyBDQ0xheWVyVHJlZUhvc3RJbXBsOjpiZWdpblNjcm9sbGluZ0lubmVybW9zdEwKIENDSW5wdXRI
YW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVn
aW4oY29uc3QgSW50UG9pbnQmIHZpZXdwb3J0UG9pbnQpCiB7CiAgICAgbV9jdXJyZW50bHlTY3Jv
bGxpbmdMYXllckltcGwuY2xlYXIoKTsKKyAgICAvLyBJZiB0aGUgcG9pbnQgaXMgd2l0aGluIGFu
eSBzY3JvbGxhYmxlIHJlZ2lvbiwgd2UgbXVzdCBkZWxlZ2F0ZSBpdCB0byB0aGUgbWFpbiB0aHJl
YWQuIFRoaXMKKyAgICAvLyBpcyBiZWNhdXNlIGV2ZW4gdGhvdWdoIHRoZXJlIHdhcyBhIHNjcm9s
bGFibGUgbGF5ZXIgdW5kZXIgdGhlIHF1ZXJ5IHBvaW50LCB3ZSBtaWdodCBuZWVkCisgICAgLy8g
dG8gbW92ZSBhbnkgb2YgaXRzIGFuY2VzdG9ycyBkdXJpbmcgc2Nyb2xsaW5nLiBJZiBvbmUgb2Yg
dGhvc2UgYW5jZXN0b3JzIGlzIGEgc2Nyb2xsYWJsZQorICAgIC8vIHJlZ2lvbiAoYXMgb3Bwb3Nl
ZCB0byBhIGxheWVyKSwgd2Ugd291bGQgbmVlZCB0byB0cmFuc2l0aW9uIHRvIHNjcm9sbGluZyBp
dCBpbiB0aGUgbWFpbgorICAgIC8vIHRocmVhZCwgd2hpY2ggaXMgY3VycmVudGx5IG5vdCBwb3Nz
aWJsZS4KKyAgICBpZiAoaXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKG1fc2Nyb2xsTGF5ZXJJbXBs
LmdldCgpLCB2aWV3cG9ydFBvaW50KSkKKyAgICAgICAgcmV0dXJuIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxGYWlsZWQ7CiAgICAgcmV0dXJuIGJlZ2luU2Nyb2xsaW5nSW5uZXJtb3N0TGF5
ZXJBdFBvaW50KG1fc2Nyb2xsTGF5ZXJJbXBsLmdldCgpLCB2aWV3cG9ydFBvaW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDhmZWUyZWRmMTcwNTcyNTFj
MDI4ZGZmN2E2N2ZkMWMwMDNlOTA3ZjMuLjk5OTU4YjNkZjQ0NDcyMmNlMTRkYzYxOTBmN2ZkZGY3
MThkMDFlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTEzOCw2
ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDb250ZW50UG9pbnRXaXRoaW5MYXllcihD
Q0xheWVySW1wbCosIGNvbnN0IEludFBvaW50JiBjb250ZW50UG9pbnQpIGNvbnN0OwogICAgIFNj
cm9sbFN0YXR1cyBiZWdpblNjcm9sbGluZ0lubmVybW9zdExheWVyQXRQb2ludChDQ0xheWVySW1w
bCosIGNvbnN0IEludFBvaW50Jik7CiAgICAgdm9pZCBjb2xsZWN0U2Nyb2xsRGVsdGFzKENDU2Ny
b2xsQW5kU2NhbGVTZXQqLCBDQ0xheWVySW1wbCopIGNvbnN0OworICAgIGJvb2wgaXNJbnNpZGVT
Y3JvbGxhYmxlUmVnaW9uKENDTGF5ZXJJbXBsKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAog
ICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBS
ZWZQdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKaW5kZXggYmFkOTMxNWE1ZWRjMDk5NDY3
YzEzZGFlOGViOWRhZjZhYTMxNjgyZi4uMDQyMjJmNTU0ZTg2ZDdiMmI4NGE5ZGY2NzI1NmI4Mzdj
MzNhOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKQEAgLTg2OCw2ICs4NjgsMTEgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpyZW1v
dmVTY3JvbGxpbmdMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBwbGF0Zm9ybUxheWVy
LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKCkpOwogfQogCit2b2lkIENocm9tZUNsaWVu
dEltcGw6OnNldExheWVyU2Nyb2xsYWJsZVJlZ2lvbihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29u
c3QgUmVnaW9uJiByZWdpb24pCit7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24ocmVn
aW9uKTsKK30KKwogLy8gRklYTUU6IFJlbW92ZSBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUgYW5kIENocm9tZUNsaWVudEltcGw6OmNhbmNlbEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZQogLy8gb25jZSBhbGwgcG9ydHMgaGF2
ZSBtb3ZlZCB0byBjbGllbnQtYmFzZWQgZ2VvbG9jYXRpb24gKHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzMgKS4KIC8vIEZvciBjbGllbnQtYmFzZWQgZ2Vv
bG9jYXRpb24sIHRoZXNlIG1ldGhvZHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24gYW5kIFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpj
YW5jZWxQZXJtaXNzaW9uUmVxdWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaAppbmRleCAwMWYyOWM0ZTA3NjRjNGNjYzY3OTQxMTRhYTAxMmUyMWFh
NjkwZDE0Li44Y2MyYWIxOWM3NGQxZjIyNmM4NzJlODg0MWY3YmE5OTljMThmYWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIEZpbGVDaG9vc2VyOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvcHVwQ29udGFp
bmVyOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OworY2xhc3MgUmVnaW9uOwogY2xhc3MgUmVuZGVy
Qm94OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKQEAgLTEz
Nyw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tT3Zlcmhh
bmdBcmVhKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRPclVwZGF0ZVNjcm9sbGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqLCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSopOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTY3JvbGxpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVhbCB2
b2lkIHNldExheWVyU2Nyb2xsYWJsZVJlZ2lvbihXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKiwgY29u
c3QgV2ViQ29yZTo6UmVnaW9uJik7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9u
Kik7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7CiAgICAgdmly
dHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RmlsZUNob29zZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZmNiNzI4NWUzYjg2MjBiNjI0
MWUyOTllODkzMDVkZDE2NDc4OGNkYy4uYTYzMjlkNWJlYjJlZmNlZDA4MzQ4OTEyZTRmNzI3YTAz
NGUyMWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI0Myw2ICsyNDMsNDIgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxDaGlsZEFuZENoYW5nZVBhZ2VTY2FsZSkKICAg
ICBleHBlY3RDb250YWlucygqc2Nyb2xsSW5mby5nZXQoKSwgY2hpbGQtPmlkKCksIHNjcm9sbERl
bHRhKTsKIH0KIAorVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxhYmxlUmVn
aW9uSGl0VGVzdGluZykKK3sKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDApOworICAgIHJvb3QtPnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgcm9v
dC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIG1faG9zdElt
cGwtPnNldFJvb3RMYXllcihyb290KTsKKworICAgIFJlZ2lvbiBzY3JvbGxhYmxlUmVnaW9uOwor
ICAgIHNjcm9sbGFibGVSZWdpb24udW5pdGUoSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDQs
IDQpKSk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZVJlZ2lvbihzY3JvbGxhYmxlUmVnaW9uKTsK
KworICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCgyLCAyKSks
IENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpOworICAgIEVYUEVDVF9FUShtX2hv
c3RJbXBsLT5zY3JvbGxCZWdpbihJbnRQb2ludCg2LCAyKSksIENDSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGFydGVkKTsKK30KKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBz
Y3JvbGxhYmxlUmVnaW9uT3ZlcnJpZGVzTGF5ZXIpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxl
KHRydWUpOworICAgIHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDAp
KTsKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdCk7CisKKyAgICBSZWZQdHI8Q0NM
YXllckltcGw+IGNoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgwKTsKKyAgICBjaGlsZC0+c2V0
U2Nyb2xsYWJsZSh0cnVlKTsKKyAgICBjaGlsZC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oSW50U2l6
ZSgxMDAsIDEwMCkpOworICAgIGNoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgY2hp
bGQtPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwLCAx
MCkpKTsKKworICAgIFJlZ2lvbiBzY3JvbGxhYmxlUmVnaW9uOworICAgIHNjcm9sbGFibGVSZWdp
b24udW5pdGUoSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDgsIDgpKSk7CisgICAgcm9vdC0+
c2V0U2Nyb2xsYWJsZVJlZ2lvbihzY3JvbGxhYmxlUmVnaW9uKTsKKworICAgIC8vIFNjcm9sbCBz
aG91bGQgZmFpbCBzaW5jZSB0aGVyZSBpcyBhIHNjcm9sbGFibGUgcmVnaW9uIGluIHRoZSByb290
IGxheWVyIHVuZGVyIHRoZXNlIGNvb3JkaW5hdGVzLgorICAgIEVYUEVDVF9FUShtX2hvc3RJbXBs
LT5zY3JvbGxCZWdpbihJbnRQb2ludCg1LCA1KSksIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxGYWlsZWQpOworfQorCiBjbGFzcyBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQ6IHB1YmxpYyBN
b2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAgIEJsZW5kU3RhdGVUcmFja2Vy
Q29udGV4dCgpIDogbV9ibGVuZChmYWxzZSkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120064</attachid>
            <date>2011-12-20 13:02:11 -0800</date>
            <delta_ts>2011-12-20 13:23:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74196-20111220210208.patch</filename>
            <type>text/plain</type>
            <size>15983</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU1OTlhN2VlOTMzM2M3
MGMwNjZmNTg3ZGQ4ZTRiODdhZWM4NmNkOC4uY2ExNTE0MGJkNTBkZDA3NWFkNDdmYjhhODZjOTBk
YmVjZWZmN2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEyLTA5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
RGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTk2CisKKyAg
ICAgICAgV2hlbiB0aGUgY29tcG9zaXRvciByZWNlaXZlcyBhIHNjcm9sbCBldmVudCwgaXQgc2hv
dWxkIGRvIGNoZWNrIHdoZXRoZXIKKyAgICAgICAgaXQgZmFsbHMgb3ZlciBhIHNjcm9sbGFibGUg
ZWxlbWVudCB3aGljaCBpcyBub3QgYmFja2VkIGJ5IGEgc2Nyb2xsYWJsZQorICAgICAgICBsYXll
ci4gSW4gc3VjaCBhIGNhc2UgdGhlIGV2ZW50IG11c3QgYmUgcmVkaXJlY3RlZCB0byB0aGUgbWFp
biB0aHJlYWQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNpbXBseSB0cmFuc2xhdGluZyB0aGUgZW5j
bG9zaW5nIGxheWVyIGlzIGRvZXMgbm90IHJlcHJvZHVjZQorICAgICAgICB0aGUgZGVzaXJlZCBz
Y3JvbGxpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2Nyb2xsYWJs
ZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgorICAgICAgICBpbmRp
Y2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4gdGhl
IGxheWVyIGluCisgICAgICAgIGxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1
dCBoYW5kbGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQorICAgICAgICBiZXR3ZWVuIHByb2Nlc3Np
bmcgYSBzY3JvbGwgaW5wdXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCisgICAg
ICAgIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2Nyb2xsYWJsZVJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlUmVnaW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVn
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNjcm9sbGFibGVSZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbGFibGVSZWdpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6d2luZG93VG9MYXll
ckNvbnRlbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
c0luc2lkZVNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKworMjAx
MS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIEltcGxlbWVudCBsYXllciBzY3JvbGxpbmcgaW4gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzM1MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE2MzRjYjQyMTUzZjMyNDFmMjQ2
ZTdjMDM3NDRkN2RmNmQ4NjNjNzYuLjE5ZWM3YzNhYjAwMGI4YjE1ZGFlZDBmNjlhM2RhYzM1MmVi
Yzc2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEt
MTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBEZWxlZ2F0ZSBzY3JvbGwgZXZlbnRzIHRvIHRoZSBtYWluIHRocmVhZCB3aGVu
IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxOTYKKworICAgICAgICBXaGVuIHRoZSBjb21wb3NpdG9yIHJlY2VpdmVzIGEgc2Nyb2xsIGV2
ZW50LCBpdCBzaG91bGQgZG8gY2hlY2sgd2hldGhlcgorICAgICAgICBpdCBmYWxscyBvdmVyIGEg
c2Nyb2xsYWJsZSBlbGVtZW50IHdoaWNoIGlzIG5vdCBiYWNrZWQgYnkgYSBzY3JvbGxhYmxlCisg
ICAgICAgIGxheWVyLiBJbiBzdWNoIGEgY2FzZSB0aGUgZXZlbnQgbXVzdCBiZSByZWRpcmVjdGVk
IHRvIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgYmVjYXVzZSB0aGUgc2ltcGx5IHRyYW5zbGF0
aW5nIHRoZSBlbmNsb3NpbmcgbGF5ZXIgaXMgZG9lcyBub3QgcmVwcm9kdWNlCisgICAgICAgIHRo
ZSBkZXNpcmVkIHNjcm9sbGluZyBiZWhhdmlvci4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JvbGxhYmxlIHJlZ2lvbiB0byBlYWNoIExheWVyQ2hyb21pdW0uIFRoaXMgcmVnaW9uCisg
ICAgICAgIGluZGljYXRlcyB0aGUgcG9zaXRpb25zIG9mIGFsbCBzY3JvbGxhYmxlIGVsZW1lbnRz
IHdpdGhpbiB0aGUgbGF5ZXIgaW4KKyAgICAgICAgbG9jYWwgY29vcmRpbmF0ZXMuIFRoZSBjb21w
b3NpdG9yIGlucHV0IGhhbmRsZXIgdXNlcyB0aGlzIGRhdGEgY2hvb3NlCisgICAgICAgIGJldHdl
ZW4gcHJvY2Vzc2luZyBhIHNjcm9sbCBpbnB1dCBldmVudCBieSBpdHNlbGYgb3IgZGVsZWdhdGlu
ZyB0aGUKKyAgICAgICAgZXZlbnQgdG8gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRMYXllclNjcm9sbGFi
bGVSZWdpb24pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorCisyMDExLTEyLTA5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGxheWVyIHNjcm9sbGluZyBpbiB0aGUg
Y29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjhhZGUzOTM1OTZh
MTg3MThhYzRhMTk2MWRlNDNjYWMwYzNkY2E5ZC4uMWNjODY2ZTM4M2Q1MTQ5ZDczZmFiMzJhZDBi
ODdkZjNkYzViZGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5Nyw2ICszOTcsNyBA
QCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5
ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24obV9zY3JvbGxhYmxlUmVn
aW9uKTsKIAogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXItPm1hc2tMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA1
NzcyMzBlZmM5ZWI4ZDEzYjdmNDA0YTJjZjQ4NjU4YWZlOTIzZmY5Li4wMzk4YzZkNTQyMWExNTdm
ODA3NWQ1M2YyNmE5NzA0MWY1ZGUwOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTIwMyw2ICsy
MDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmF3YWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpIHsgbV9kcmF3YWJsZUNvbnRlbnRSZWN0ID0gcmVjdDsgfQogICAgIGZsb2F0
IGNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2
b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJs
ZVJlZ2lvbigpIHsgcmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24g
PSByZWdpb247IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3Mg
ZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICBib29sIGRlc2NlbmRhbnREcmF3
c0NvbnRlbnQoKTsKQEAgLTI3Nyw2ICsyODAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2Vz
TGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBi
b29sIG1fcHJlc2VydmVzM0Q7CisgICAgUmVnaW9uIG1fc2Nyb2xsYWJsZVJlZ2lvbjsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMDY2
ZGU5YTA2NmZmMTQ5MjVjOTRlMTYxOGQ3ZDY2ZmNhYjY1NGJjMC4uNTc2MzY0NWQwYWM1ZGVmNGVi
MGJmNWY4ODZjN2ZmMzNlN2E1Yjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTQ5
LDYgKzE0OSwxOCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wg
Q0NMYXllckltcGw6OmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29u
dGVudFBvaW50KSBjb25zdAoreworICAgIGlmIChtX3Njcm9sbGFibGVSZWdpb24uaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzID0gbV9zY3JvbGxhYmxlUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKHJlY3RzW2ldLmNvbnRhaW5zKGNv
bnRlbnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xs
KQogewogICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IG1fc2Nyb2xsRGVsdGEgKyBzY3JvbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCBmZmJlOWVkNTkxYTRiYzk1OTFmMzYzZjJlNzI2YmM2OWY2
MmVkYWE0Li42YzhlZjdmNmQ4NDAyNzM1ZjgyNjI3MjA5MmIzZTNmMGY1MTUxMzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKQEAgLTE2Myw2ICsxNjQsMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbERlbHRhOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBGbG9h
dFNpemUmKTsKIAorICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJsZVJlZ2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsYWJsZVJlZ2lv
bihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24gPSByZWdpb247IH0K
KworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHBvaW50IGluIGNvbnRlbnQgY29vcmRpbmF0ZXMg
aXMgaW5zaWRlIHRoZSBzY3JvbGxhYmxlIHJlZ2lvbi4KKyAgICBib29sIGlzSW5zaWRlU2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29udGVudFBvaW50KSBjb25zdDsKKwogICAgIGZs
b2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGVEZWx0YTsgfQog
ICAgIHZvaWQgc2V0UGFnZVNjYWxlRGVsdGEoZmxvYXQpOwogCkBAIC0yMzUsNiArMjQyLDcgQEAg
cHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9zY3Jv
bGxhYmxlOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFJlZ2lvbiBtX3Njcm9s
bGFibGVSZWdpb247CiAKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBz
aG91bGQgZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGEwYzg5Zjg4ODQzNTcwNjA3MjVlZTNmZGQ2Y2E2Nzg5
ZWRlOGFkZTkuLjBjZDAzZWI0OWU5OGQ5MTRhNDc3YzIxY2IwM2Q2ODNjMTY5MTEwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00NzQsNiArNDc0LDI0IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aXNDb250ZW50UG9pbnRXaXRoaW5MYXllcihDQ0xh
eWVySW1wbCogbGF5ZXJJbXBsLCBjb25zCiAgICAgcmV0dXJuIGxheWVyQ29udGVudFJlY3QuY29u
dGFpbnMoY29udGVudFBvaW50KTsKIH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0lu
c2lkZVNjcm9sbGFibGVSZWdpb24oQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9p
bnQmIHZpZXdwb3J0UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFsYXllckltcGwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghbGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRQb2lu
dCBjb250ZW50UG9pbnQobGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2Uo
KS5tYXBQb2ludCh2aWV3cG9ydFBvaW50KSk7CisgICAgaWYgKGxheWVySW1wbC0+ZHJhd3NDb250
ZW50KCkgJiYgIWlzQ29udGVudFBvaW50V2l0aGluTGF5ZXIobGF5ZXJJbXBsLCBjb250ZW50UG9p
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobGF5ZXJJbXBsLT5pc0luc2lk
ZVNjcm9sbGFibGVSZWdpb24oY29udGVudFBvaW50KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0
dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdMYXllcihDQ0xheWVySW1wbCog
bGF5ZXJJbXBsLCBjb25zdCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCkKIHsKICAgICBpZiAoIWxh
eWVySW1wbCkKQEAgLTUwNSw3ICs1MjMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNv
bGxlY3RBbGxMYXllcnMoQ0NMYXllckxpc3QmIGxheWVycywgQ0NMYXllckltcGwqIGxheQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbGxlY3ROb25EcmF3aW5nU2Nyb2xsYWJsZUxheWVy
cyhDQ0xheWVyTGlzdCYgbGF5ZXJzLCBDQ0xheWVySW1wbCogbGF5ZXJJbXBsKQogewotICAgIGlm
ICghbGF5ZXJJbXBsLT5kcmF3c0NvbnRlbnQoKSAmJiBsYXllckltcGwtPnNjcm9sbGFibGUoKSkK
KyAgICBpZiAoIWxheWVySW1wbC0+ZHJhd3NDb250ZW50KCkgJiYgKGxheWVySW1wbC0+c2Nyb2xs
YWJsZSgpIHx8ICFsYXllckltcGwtPnNjcm9sbGFibGVSZWdpb24oKS5pc0VtcHR5KCkpKQogICAg
ICAgICBsYXllcnMuYXBwZW5kKGxheWVySW1wbCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxheWVySW1wbC0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkgewpAQCAtNTQ1LDYgKzU2Mywx
NSBAQCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVlSG9zdElt
cGw6OnNjcm9sbEJlZ2luKGNvbnN0IEludFBvaQogICAgICAgICBjb2xsZWN0QWxsTGF5ZXJzKGxh
eWVycywgcm9vdExheWVyKCkpOwogICAgIH0KIAorICAgIC8vIElmIHRoZSBwb2ludCBpcyB3aXRo
aW4gYW55IHNjcm9sbGFibGUgcmVnaW9uLCB3ZSBtdXN0IGRlbGVnYXRlIGl0IHRvIHRoZSBtYWlu
IHRocmVhZC4gVGhpcworICAgIC8vIGlzIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlcmUgd2FzIGEg
c2Nyb2xsYWJsZSBsYXllciB1bmRlciB0aGUgcXVlcnkgcG9pbnQsIHdlIG1pZ2h0IG5lZWQKKyAg
ICAvLyB0byBtb3ZlIGFueSBvZiBpdHMgYW5jZXN0b3JzIGR1cmluZyBzY3JvbGxpbmcuIElmIG9u
ZSBvZiB0aG9zZSBhbmNlc3RvcnMgaXMgYSBzY3JvbGxhYmxlCisgICAgLy8gcmVnaW9uIChhcyBv
cHBvc2VkIHRvIGEgbGF5ZXIpLCB3ZSB3b3VsZCBuZWVkIHRvIHRyYW5zaXRpb24gdG8gc2Nyb2xs
aW5nIGl0IGluIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLCB3aGljaCBpcyBjdXJyZW50bHkgbm90
IHBvc3NpYmxlLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICBpZiAoaXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKGxheWVyc1tpXS5nZXQoKSwg
dmlld3BvcnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbEZhaWxlZDsKKwogICAgIC8vIExvb2sgZm9yIGEgc2Nyb2xsYWJsZSBsYXllciBpbiBm
cm9udCB0byBiYWNrIG9yZGVyLgogICAgIGZvciAoaW50IGkgPSBsYXllcnMuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NMYXllckltcGwqIGxheWVySW1wbCA9IGxheWVyc1tp
XS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAxMDdiNGQ0
N2U1ZDUwMDQwOGQ1ZDUzYWY2N2U5MTkyNWEwZDZhZDJhLi4wZDBkYTQ1MzNhZGRkNTVjNzgwNjAy
OGYxOWYzOWQyYzI4NTQzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xNDEsNiArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0QWxs
TGF5ZXJzKENDTGF5ZXJMaXN0JiwgQ0NMYXllckltcGwqKTsKICAgICBTY3JvbGxTdGF0dXMgYmVn
aW5TY3JvbGxpbmdMYXllcihDQ0xheWVySW1wbCosIGNvbnN0IEludFBvaW50JiB2aWV3cG9ydFBv
aW50KTsKICAgICB2b2lkIGNvbGxlY3RTY3JvbGxEZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCos
IENDTGF5ZXJJbXBsKikgY29uc3Q7CisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdpb24o
Q0NMYXllckltcGwqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOwogICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gbV9yb290TGF5ZXJJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAppbmRleCBkNTBmNzdkYjM2YzJiOTdkMjkxZDBkMmM0Yjk1NjQxMTdl
ZTc3NGJlLi5kOGVhMTk5OTM4YTg5NzM0ZTJiZWM5ZWRkMzgyNDI0MThiNjMyODhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtODkx
LDYgKzg5MSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlbW92ZVNjcm9sbGluZ0xheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIHBsYXRmb3JtTGF5ZXItPnNldE1heFNjcm9sbFBv
c2l0aW9uKEludFNpemUoKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2V0TGF5ZXJT
Y3JvbGxhYmxlUmVnaW9uKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBSZWdpb24mIHJlZ2lv
bikKK3sKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworfQorCiAvLyBG
SVhNRTogUmVtb3ZlIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZSBhbmQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdEZvckZyYW1lCiAvLyBvbmNlIGFsbCBwb3J0cyBoYXZlIG1vdmVkIHRvIGNsaWVu
dC1iYXNlZCBnZW9sb2NhdGlvbiAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDM3MyApLgogLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2Ug
bWV0aG9kcyBhcmUgbm93IGltcGxlbWVudGVkIGFzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1
ZXN0UGVybWlzc2lvbiBhbmQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5o
CmluZGV4IDI5ZGQyOTNmMzFlOTQyZjM3ZDlkZWI5NTU5YjBiZGIyYjYwYjgxZmUuLmJjN2NjZjA1
MDVlY2VmZGFmY2RkNGQ1NmQ1MjQ3YzNjZDQ1MTExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRmls
ZUNob29zZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgUG9wdXBDb250YWluZXI7CiBj
bGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBSZWdpb247CiBjbGFzcyBSZW5kZXJCb3g7CiBj
bGFzcyBTY3JvbGxhYmxlQXJlYTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAtMTQwLDYgKzE0
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGFkZE9yVXBkYXRlU2Nyb2xsaW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcios
IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcm9s
bGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJTY3JvbGxhYmxlUmVnaW9uKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqLCBjb25zdCBXZWJD
b3JlOjpSZWdpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICNpZiBFTkFCTEUoSU5Q
VVRfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGQ4OGFiNGY4N2JmM2U4M2Y2MjJiOTE0YjY5
YzI5ZGM0MTUzZGQ0MmIuLmExZDVhYzdhNTg2ZWJjNWY5ODRmMDUyZGVlYTU0NzYyZjMwZTI5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDMsNiArMjQzLDQyIEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRBbmRDaGFuZ2VQYWdlU2NhbGUpCiAgICAgZXhwZWN0
Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIGNoaWxkLT5pZCgpLCBzY3JvbGxEZWx0YSk7CiB9
CiAKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYWJsZVJlZ2lvbkhpdFRl
c3RpbmcpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldE1h
eFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIocm9vdCk7CisKKyAgICBSZWdpb24gc2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBzY3Jv
bGxhYmxlUmVnaW9uLnVuaXRlKEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSg0LCA0KSkpOwor
ICAgIHJvb3QtPnNldFNjcm9sbGFibGVSZWdpb24oc2Nyb2xsYWJsZVJlZ2lvbik7CisKKyAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMiwgMikpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+
c2Nyb2xsQmVnaW4oSW50UG9pbnQoNiwgMikpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhcnRlZCk7Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYWJs
ZVJlZ2lvbk92ZXJyaWRlc0xheWVyKQoreworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsK
KyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworCisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgY2hpbGQtPnNldFNjcm9sbGFi
bGUodHJ1ZSk7CisgICAgY2hpbGQtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAx
MDApKTsKKyAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGNoaWxkLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMCwgMTApKSk7CisK
KyAgICBSZWdpb24gc2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBzY3JvbGxhYmxlUmVnaW9uLnVuaXRl
KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSg4LCA4KSkpOworICAgIHJvb3QtPnNldFNjcm9s
bGFibGVSZWdpb24oc2Nyb2xsYWJsZVJlZ2lvbik7CisKKyAgICAvLyBTY3JvbGwgc2hvdWxkIGZh
aWwgc2luY2UgdGhlcmUgaXMgYSBzY3JvbGxhYmxlIHJlZ2lvbiBpbiB0aGUgcm9vdCBsYXllciB1
bmRlciB0aGVzZSBjb29yZGluYXRlcy4KKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xs
QmVnaW4oSW50UG9pbnQoNSwgNSkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVk
KTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgTW9ja1dlYkdy
YXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQo
KSA6IG1fYmxlbmQoZmFsc2UpIHsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120068</attachid>
            <date>2011-12-20 13:24:05 -0800</date>
            <delta_ts>2012-02-21 20:47:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74196-20111220212403.patch</filename>
            <type>text/plain</type>
            <size>15983</size>
            <attacher name="Sami Kyostila">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0Y2JkOTMxNTdjNjE1
MjhkNThmZGY5OTA1NGY2YWQ4MWU2ZWFmOS4uNTQ0MzkwMjNkMGUxMDdlNDFmNGRlOGQ4MmQ5OTEy
MDM2YjlhYmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDExLTEyLTA5ICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
RGVsZWdhdGUgc2Nyb2xsIGV2ZW50cyB0byB0aGUgbWFpbiB0aHJlYWQgd2hlbiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MTk2CisKKyAg
ICAgICAgV2hlbiB0aGUgY29tcG9zaXRvciByZWNlaXZlcyBhIHNjcm9sbCBldmVudCwgaXQgc2hv
dWxkIGRvIGNoZWNrIHdoZXRoZXIKKyAgICAgICAgaXQgZmFsbHMgb3ZlciBhIHNjcm9sbGFibGUg
ZWxlbWVudCB3aGljaCBpcyBub3QgYmFja2VkIGJ5IGEgc2Nyb2xsYWJsZQorICAgICAgICBsYXll
ci4gSW4gc3VjaCBhIGNhc2UgdGhlIGV2ZW50IG11c3QgYmUgcmVkaXJlY3RlZCB0byB0aGUgbWFp
biB0aHJlYWQsCisgICAgICAgIGJlY2F1c2UgdGhlIHNpbXBseSB0cmFuc2xhdGluZyB0aGUgZW5j
bG9zaW5nIGxheWVyIGlzIGRvZXMgbm90IHJlcHJvZHVjZQorICAgICAgICB0aGUgZGVzaXJlZCBz
Y3JvbGxpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgc2Nyb2xsYWJs
ZSByZWdpb24gdG8gZWFjaCBMYXllckNocm9taXVtLiBUaGlzIHJlZ2lvbgorICAgICAgICBpbmRp
Y2F0ZXMgdGhlIHBvc2l0aW9ucyBvZiBhbGwgc2Nyb2xsYWJsZSBlbGVtZW50cyB3aXRoaW4gdGhl
IGxheWVyIGluCisgICAgICAgIGxvY2FsIGNvb3JkaW5hdGVzLiBUaGUgY29tcG9zaXRvciBpbnB1
dCBoYW5kbGVyIHVzZXMgdGhpcyBkYXRhIGNob29zZQorICAgICAgICBiZXR3ZWVuIHByb2Nlc3Np
bmcgYSBzY3JvbGwgaW5wdXQgZXZlbnQgYnkgaXRzZWxmIG9yIGRlbGVnYXRpbmcgdGhlCisgICAg
ICAgIGV2ZW50IHRvIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2Nyb2xsYWJsZVJlZ2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRTY3JvbGxhYmxlUmVnaW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6aXNJbnNpZGVTY3JvbGxhYmxlUmVn
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNjcm9sbGFibGVSZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbGFibGVSZWdpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6d2luZG93VG9MYXll
ckNvbnRlbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpp
c0luc2lkZVNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdJbm5lcm1vc3RMYXllckF0UG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKworMjAx
MS0xMi0wOSAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KKwogICAgICAg
ICBbY2hyb21pdW1dIEltcGxlbWVudCBsYXllciBzY3JvbGxpbmcgaW4gdGhlIGNvbXBvc2l0b3Ig
dGhyZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzM1MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNkNTVkNjgxODUwMzhlNWJmYmZi
ODZlNGE1ZjkxZTIwM2ZhZWFiY2IuLmM0ODYyOGJjY2VmNzI5YWJiMTQ0YjViNjZkMmZkMGU4NmUz
NGQ3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzAgQEAKIDIwMTEt
MTItMDkgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBEZWxlZ2F0ZSBzY3JvbGwgZXZlbnRzIHRvIHRoZSBtYWluIHRocmVhZCB3aGVu
IG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQxOTYKKworICAgICAgICBXaGVuIHRoZSBjb21wb3NpdG9yIHJlY2VpdmVzIGEgc2Nyb2xsIGV2
ZW50LCBpdCBzaG91bGQgZG8gY2hlY2sgd2hldGhlcgorICAgICAgICBpdCBmYWxscyBvdmVyIGEg
c2Nyb2xsYWJsZSBlbGVtZW50IHdoaWNoIGlzIG5vdCBiYWNrZWQgYnkgYSBzY3JvbGxhYmxlCisg
ICAgICAgIGxheWVyLiBJbiBzdWNoIGEgY2FzZSB0aGUgZXZlbnQgbXVzdCBiZSByZWRpcmVjdGVk
IHRvIHRoZSBtYWluIHRocmVhZCwKKyAgICAgICAgYmVjYXVzZSB0aGUgc2ltcGx5IHRyYW5zbGF0
aW5nIHRoZSBlbmNsb3NpbmcgbGF5ZXIgaXMgZG9lcyBub3QgcmVwcm9kdWNlCisgICAgICAgIHRo
ZSBkZXNpcmVkIHNjcm9sbGluZyBiZWhhdmlvci4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzY3JvbGxhYmxlIHJlZ2lvbiB0byBlYWNoIExheWVyQ2hyb21pdW0uIFRoaXMgcmVnaW9uCisg
ICAgICAgIGluZGljYXRlcyB0aGUgcG9zaXRpb25zIG9mIGFsbCBzY3JvbGxhYmxlIGVsZW1lbnRz
IHdpdGhpbiB0aGUgbGF5ZXIgaW4KKyAgICAgICAgbG9jYWwgY29vcmRpbmF0ZXMuIFRoZSBjb21w
b3NpdG9yIGlucHV0IGhhbmRsZXIgdXNlcyB0aGlzIGRhdGEgY2hvb3NlCisgICAgICAgIGJldHdl
ZW4gcHJvY2Vzc2luZyBhIHNjcm9sbCBpbnB1dCBldmVudCBieSBpdHNlbGYgb3IgZGVsZWdhdGlu
ZyB0aGUKKyAgICAgICAgZXZlbnQgdG8gdGhlIG1haW4gdGhyZWFkLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRMYXllclNjcm9sbGFi
bGVSZWdpb24pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorCisyMDExLTEyLTA5ICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3Jn
PgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IGxheWVyIHNjcm9sbGluZyBpbiB0aGUg
Y29tcG9zaXRvciB0aHJlYWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMzUwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDg3NzBhZWZhM2Q1
NzhlM2E0ZGYwZDRkYWE1OGYxODYxMDViOGRkMS4uYTg5ZGNlM2YzYWIyNzA3ZGM5OTM4OGEwZmU5
NGU4MjY3NDZmNzY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQyMyw2ICs0MjMsNyBA
QCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5
ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVSZWdpb24obV9zY3JvbGxhYmxlUmVn
aW9uKTsKIAogICAgIGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXItPm1hc2tMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBk
NjRkMTBmN2IwZWE1YTZmYjNkMmI4M2NkMDNlYTllNDc4ZjBiZTQ2Li45Mzg3NGM4Y2YyMWQ1NWQ4
MDFkMzg1MmJkMTE1NjQ3MmViMmQ2NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTIwMiw2ICsy
MDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmF3YWJsZUNvbnRlbnRSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpIHsgbV9kcmF3YWJsZUNvbnRlbnRSZWN0ID0gcmVjdDsgfQogICAgIGZsb2F0
IGNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2
b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJs
ZVJlZ2lvbigpIHsgcmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24g
PSByZWdpb247IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3Mg
ZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KICAgICBib29sIGRlc2NlbmRhbnREcmF3
c0NvbnRlbnQoKTsKQEAgLTI3Niw2ICsyNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2Vz
TGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKICAgICBi
b29sIG1fcHJlc2VydmVzM0Q7CisgICAgUmVnaW9uIG1fc2Nyb2xsYWJsZVJlZ2lvbjsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMDY2
ZGU5YTA2NmZmMTQ5MjVjOTRlMTYxOGQ3ZDY2ZmNhYjY1NGJjMC4uNTc2MzY0NWQwYWM1ZGVmNGVi
MGJmNWY4ODZjN2ZmMzNlN2E1Yjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTQ5
LDYgKzE0OSwxOCBAQCB2b2lkIENDTGF5ZXJJbXBsOjpiaW5kQ29udGVudHNUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wg
Q0NMYXllckltcGw6OmlzSW5zaWRlU2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29u
dGVudFBvaW50KSBjb25zdAoreworICAgIGlmIChtX3Njcm9sbGFibGVSZWdpb24uaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzID0gbV9zY3JvbGxhYmxlUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKHJlY3RzW2ldLmNvbnRhaW5zKGNv
bnRlbnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xs
KQogewogICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IG1fc2Nyb2xsRGVsdGEgKyBzY3JvbGw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCBmZmJlOWVkNTkxYTRiYzk1OTFmMzYzZjJlNzI2YmM2OWY2
MmVkYWE0Li42YzhlZjdmNmQ4NDAyNzM1ZjgyNjI3MjA5MmIzZTNmMGY1MTUxMzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKQEAgLTE2Myw2ICsxNjQsMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbERlbHRhOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBGbG9h
dFNpemUmKTsKIAorICAgIGNvbnN0IFJlZ2lvbiYgc2Nyb2xsYWJsZVJlZ2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZVJlZ2lvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsYWJsZVJlZ2lv
bihjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBtX3Njcm9sbGFibGVSZWdpb24gPSByZWdpb247IH0K
KworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHBvaW50IGluIGNvbnRlbnQgY29vcmRpbmF0ZXMg
aXMgaW5zaWRlIHRoZSBzY3JvbGxhYmxlIHJlZ2lvbi4KKyAgICBib29sIGlzSW5zaWRlU2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBJbnRQb2ludCYgY29udGVudFBvaW50KSBjb25zdDsKKwogICAgIGZs
b2F0IHBhZ2VTY2FsZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU2NhbGVEZWx0YTsgfQog
ICAgIHZvaWQgc2V0UGFnZVNjYWxlRGVsdGEoZmxvYXQpOwogCkBAIC0yMzUsNiArMjQyLDcgQEAg
cHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGJvb2wgbV9zY3Jv
bGxhYmxlOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworICAgIFJlZ2lvbiBtX3Njcm9s
bGFibGVSZWdpb247CiAKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBz
aG91bGQgZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGEwYzg5Zjg4ODQzNTcwNjA3MjVlZTNmZGQ2Y2E2Nzg5
ZWRlOGFkZTkuLjBjZDAzZWI0OWU5OGQ5MTRhNDc3YzIxY2IwM2Q2ODNjMTY5MTEwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC00NzQsNiArNDc0LDI0IEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6aXNDb250ZW50UG9pbnRXaXRoaW5MYXllcihDQ0xh
eWVySW1wbCogbGF5ZXJJbXBsLCBjb25zCiAgICAgcmV0dXJuIGxheWVyQ29udGVudFJlY3QuY29u
dGFpbnMoY29udGVudFBvaW50KTsKIH0KIAorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppc0lu
c2lkZVNjcm9sbGFibGVSZWdpb24oQ0NMYXllckltcGwqIGxheWVySW1wbCwgY29uc3QgSW50UG9p
bnQmIHZpZXdwb3J0UG9pbnQpIGNvbnN0Cit7CisgICAgaWYgKCFsYXllckltcGwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghbGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbnRQb2lu
dCBjb250ZW50UG9pbnQobGF5ZXJJbXBsLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2Uo
KS5tYXBQb2ludCh2aWV3cG9ydFBvaW50KSk7CisgICAgaWYgKGxheWVySW1wbC0+ZHJhd3NDb250
ZW50KCkgJiYgIWlzQ29udGVudFBvaW50V2l0aGluTGF5ZXIobGF5ZXJJbXBsLCBjb250ZW50UG9p
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobGF5ZXJJbXBsLT5pc0luc2lk
ZVNjcm9sbGFibGVSZWdpb24oY29udGVudFBvaW50KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0
dXMgQ0NMYXllclRyZWVIb3N0SW1wbDo6YmVnaW5TY3JvbGxpbmdMYXllcihDQ0xheWVySW1wbCog
bGF5ZXJJbXBsLCBjb25zdCBJbnRQb2ludCYgdmlld3BvcnRQb2ludCkKIHsKICAgICBpZiAoIWxh
eWVySW1wbCkKQEAgLTUwNSw3ICs1MjMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNv
bGxlY3RBbGxMYXllcnMoQ0NMYXllckxpc3QmIGxheWVycywgQ0NMYXllckltcGwqIGxheQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbGxlY3ROb25EcmF3aW5nU2Nyb2xsYWJsZUxheWVy
cyhDQ0xheWVyTGlzdCYgbGF5ZXJzLCBDQ0xheWVySW1wbCogbGF5ZXJJbXBsKQogewotICAgIGlm
ICghbGF5ZXJJbXBsLT5kcmF3c0NvbnRlbnQoKSAmJiBsYXllckltcGwtPnNjcm9sbGFibGUoKSkK
KyAgICBpZiAoIWxheWVySW1wbC0+ZHJhd3NDb250ZW50KCkgJiYgKGxheWVySW1wbC0+c2Nyb2xs
YWJsZSgpIHx8ICFsYXllckltcGwtPnNjcm9sbGFibGVSZWdpb24oKS5pc0VtcHR5KCkpKQogICAg
ICAgICBsYXllcnMuYXBwZW5kKGxheWVySW1wbCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxheWVySW1wbC0+Y2hpbGRyZW4oKS5zaXplKCk7ICsraSkgewpAQCAtNTQ1LDYgKzU2Mywx
NSBAQCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVlSG9zdElt
cGw6OnNjcm9sbEJlZ2luKGNvbnN0IEludFBvaQogICAgICAgICBjb2xsZWN0QWxsTGF5ZXJzKGxh
eWVycywgcm9vdExheWVyKCkpOwogICAgIH0KIAorICAgIC8vIElmIHRoZSBwb2ludCBpcyB3aXRo
aW4gYW55IHNjcm9sbGFibGUgcmVnaW9uLCB3ZSBtdXN0IGRlbGVnYXRlIGl0IHRvIHRoZSBtYWlu
IHRocmVhZC4gVGhpcworICAgIC8vIGlzIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlcmUgd2FzIGEg
c2Nyb2xsYWJsZSBsYXllciB1bmRlciB0aGUgcXVlcnkgcG9pbnQsIHdlIG1pZ2h0IG5lZWQKKyAg
ICAvLyB0byBtb3ZlIGFueSBvZiBpdHMgYW5jZXN0b3JzIGR1cmluZyBzY3JvbGxpbmcuIElmIG9u
ZSBvZiB0aG9zZSBhbmNlc3RvcnMgaXMgYSBzY3JvbGxhYmxlCisgICAgLy8gcmVnaW9uIChhcyBv
cHBvc2VkIHRvIGEgbGF5ZXIpLCB3ZSB3b3VsZCBuZWVkIHRvIHRyYW5zaXRpb24gdG8gc2Nyb2xs
aW5nIGl0IGluIHRoZSBtYWluCisgICAgLy8gdGhyZWFkLCB3aGljaCBpcyBjdXJyZW50bHkgbm90
IHBvc3NpYmxlLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytp
KQorICAgICAgICBpZiAoaXNJbnNpZGVTY3JvbGxhYmxlUmVnaW9uKGxheWVyc1tpXS5nZXQoKSwg
dmlld3BvcnRQb2ludCkpCisgICAgICAgICAgICByZXR1cm4gQ0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbEZhaWxlZDsKKwogICAgIC8vIExvb2sgZm9yIGEgc2Nyb2xsYWJsZSBsYXllciBpbiBm
cm9udCB0byBiYWNrIG9yZGVyLgogICAgIGZvciAoaW50IGkgPSBsYXllcnMuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NMYXllckltcGwqIGxheWVySW1wbCA9IGxheWVyc1tp
XS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCAxMDdiNGQ0
N2U1ZDUwMDQwOGQ1ZDUzYWY2N2U5MTkyNWEwZDZhZDJhLi4wZDBkYTQ1MzNhZGRkNTVjNzgwNjAy
OGYxOWYzOWQyYzI4NTQzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xNDEsNiArMTQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0QWxs
TGF5ZXJzKENDTGF5ZXJMaXN0JiwgQ0NMYXllckltcGwqKTsKICAgICBTY3JvbGxTdGF0dXMgYmVn
aW5TY3JvbGxpbmdMYXllcihDQ0xheWVySW1wbCosIGNvbnN0IEludFBvaW50JiB2aWV3cG9ydFBv
aW50KTsKICAgICB2b2lkIGNvbGxlY3RTY3JvbGxEZWx0YXMoQ0NTY3JvbGxBbmRTY2FsZVNldCos
IENDTGF5ZXJJbXBsKikgY29uc3Q7CisgICAgYm9vbCBpc0luc2lkZVNjcm9sbGFibGVSZWdpb24o
Q0NMYXllckltcGwqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgT3duUHRyPExheWVy
UmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOwogICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gbV9yb290TGF5ZXJJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAppbmRleCBkNTBmNzdkYjM2YzJiOTdkMjkxZDBkMmM0Yjk1NjQxMTdl
ZTc3NGJlLi5kOGVhMTk5OTM4YTg5NzM0ZTJiZWM5ZWRkMzgyNDI0MThiNjMyODhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApAQCAtODkx
LDYgKzg5MSwxMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OnJlbW92ZVNjcm9sbGluZ0xheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIHBsYXRmb3JtTGF5ZXItPnNldE1heFNjcm9sbFBv
c2l0aW9uKEludFNpemUoKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6c2V0TGF5ZXJT
Y3JvbGxhYmxlUmVnaW9uKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBSZWdpb24mIHJlZ2lv
bikKK3sKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworfQorCiAvLyBG
SVhNRTogUmVtb3ZlIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZSBhbmQgQ2hyb21lQ2xpZW50SW1wbDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdEZvckZyYW1lCiAvLyBvbmNlIGFsbCBwb3J0cyBoYXZlIG1vdmVkIHRvIGNsaWVu
dC1iYXNlZCBnZW9sb2NhdGlvbiAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDM3MyApLgogLy8gRm9yIGNsaWVudC1iYXNlZCBnZW9sb2NhdGlvbiwgdGhlc2Ug
bWV0aG9kcyBhcmUgbm93IGltcGxlbWVudGVkIGFzIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpyZXF1
ZXN0UGVybWlzc2lvbiBhbmQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OmNhbmNlbFBlcm1pc3Npb25S
ZXF1ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5o
CmluZGV4IDI5ZGQyOTNmMzFlOTQyZjM3ZDlkZWI5NTU5YjBiZGIyYjYwYjgxZmUuLmJjN2NjZjA1
MDVlY2VmZGFmY2RkNGQ1NmQ1MjQ3YzNjZDQ1MTExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgRmls
ZUNob29zZXI7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgUG9wdXBDb250YWluZXI7CiBj
bGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBSZWdpb247CiBjbGFzcyBSZW5kZXJCb3g7CiBj
bGFzcyBTY3JvbGxhYmxlQXJlYTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwpAQCAtMTQwLDYgKzE0
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGFkZE9yVXBkYXRlU2Nyb2xsaW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcios
IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcm9s
bGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TGF5ZXJTY3JvbGxhYmxlUmVnaW9uKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqLCBjb25zdCBXZWJD
b3JlOjpSZWdpb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlz
c2lvbkZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R2VvbG9jYXRpb24qKTsKICNpZiBFTkFCTEUoSU5Q
VVRfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGU5YmFjMjZkNGQ0ZTc0ZDczZWI0NzEyNmNh
YzhlMzNlMTI5YTUyZTEuLjQwY2Q3OTY3ZTAyZmVlMmVhZWNkOTcxMTkyNmQ1MDA0Y2E5NWIyYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yNDMsNiArMjQzLDQyIEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRBbmRDaGFuZ2VQYWdlU2NhbGUpCiAgICAgZXhwZWN0
Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIGNoaWxkLT5pZCgpLCBzY3JvbGxEZWx0YSk7CiB9
CiAKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYWJsZVJlZ2lvbkhpdFRl
c3RpbmcpCit7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSgwKTsKKyAgICByb290LT5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIHJvb3QtPnNldE1h
eFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIocm9vdCk7CisKKyAgICBSZWdpb24gc2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBzY3Jv
bGxhYmxlUmVnaW9uLnVuaXRlKEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSg0LCA0KSkpOwor
ICAgIHJvb3QtPnNldFNjcm9sbGFibGVSZWdpb24oc2Nyb2xsYWJsZVJlZ2lvbik7CisKKyAgICBF
WFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoMiwgMikpLCBDQ0lucHV0
SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKTsKKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+
c2Nyb2xsQmVnaW4oSW50UG9pbnQoNiwgMikpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhcnRlZCk7Cit9CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsYWJs
ZVJlZ2lvbk92ZXJyaWRlc0xheWVyKQoreworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9
IENDTGF5ZXJJbXBsOjpjcmVhdGUoMCk7CisgICAgcm9vdC0+c2V0U2Nyb2xsYWJsZSh0cnVlKTsK
KyAgICByb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
bV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QpOworCisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgY2hpbGQtPnNldFNjcm9sbGFi
bGUodHJ1ZSk7CisgICAgY2hpbGQtPnNldE1heFNjcm9sbFBvc2l0aW9uKEludFNpemUoMTAwLCAx
MDApKTsKKyAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGNoaWxkLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMCwgMTApKSk7CisK
KyAgICBSZWdpb24gc2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBzY3JvbGxhYmxlUmVnaW9uLnVuaXRl
KEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSg4LCA4KSkpOworICAgIHJvb3QtPnNldFNjcm9s
bGFibGVSZWdpb24oc2Nyb2xsYWJsZVJlZ2lvbik7CisKKyAgICAvLyBTY3JvbGwgc2hvdWxkIGZh
aWwgc2luY2UgdGhlcmUgaXMgYSBzY3JvbGxhYmxlIHJlZ2lvbiBpbiB0aGUgcm9vdCBsYXllciB1
bmRlciB0aGVzZSBjb29yZGluYXRlcy4KKyAgICBFWFBFQ1RfRVEobV9ob3N0SW1wbC0+c2Nyb2xs
QmVnaW4oSW50UG9pbnQoNSwgNSkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVk
KTsKK30KKwogY2xhc3MgQmxlbmRTdGF0ZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBCbGVuZFN0YXRlVHJhY2tlckNvbnRleHQo
KSA6IG1fYmxlbmQoZmFsc2UpIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>