<?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>92794</bug_id>
          
          <creation_ts>2012-07-31 15:17:13 -0700</creation_ts>
          <short_desc>[chromium] deviceViewportSize cleanup</short_desc>
          <delta_ts>2012-08-06 12:43:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>trchen</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>683522</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-31 15:17:13 -0700</bug_when>
    <thetext>[chromium] deviceViewportSize cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683529</commentid>
    <comment_count>1</comment_count>
      <attachid>155646</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-31 15:29:10 -0700</bug_when>
    <thetext>Created attachment 155646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683530</commentid>
    <comment_count>2</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-31 15:30:01 -0700</bug_when>
    <thetext>I haven&apos;t updated all the tests yet, I&apos;ll do it when this change is confirmed OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683533</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 15:33:48 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683571</commentid>
    <comment_count>4</comment_count>
      <attachid>155646</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 15:59:14 -0700</bug_when>
    <thetext>Comment on attachment 155646
Patch

Attachment 155646 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13390950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684490</commentid>
    <comment_count>5</comment_count>
      <attachid>155646</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-01 12:53:32 -0700</bug_when>
    <thetext>Comment on attachment 155646
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:-808
&gt;      if (CCLayerImpl* clipLayer = m_rootScrollLayerImpl-&gt;parent()) {
&gt; -        if (clipLayer-&gt;masksToBounds())
&gt; +        // Compensate for non-overlay scrollbars.
&gt; +        if (clipLayer-&gt;masksToBounds()) {
&gt;              viewBounds = clipLayer-&gt;bounds();
&gt; +            viewBounds.scale(m_deviceScaleFactor);
&gt; +        }
&gt;      }
&gt;      viewBounds.scale(1 / m_pageScaleDelta);
&gt; -    viewBounds.scale(m_deviceScaleFactor);

I don&apos;t understand how this math is consistent with your ChangeLog description.  If layoutViewportSize * deviceScale != deviceViewportSize, then why can you multiply clipLayer bounds * deviceScale to be clipped physical pixels?

&gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:118
&gt; +    if (deviceViewportSize().isEmpty() &amp;&amp; !layoutViewportSize().isEmpty()) {
&gt; +        IntSize deviceViewportSize = layoutViewportSize();
&gt; +        deviceViewportSize.scale(deviceScaleFactor);
&gt; +        setViewportSize(layoutViewportSize(), deviceViewportSize);
&gt; +    }

Re: temporary scaffolding.  Are you sure that setDeviceScaleFactor is always called after setViewportSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684696</commentid>
    <comment_count>6</comment_count>
      <attachid>155910</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-01 15:57:22 -0700</bug_when>
    <thetext>Created attachment 155910
Patch

Changed scaffolding, updated unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684697</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-01 15:57:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 155646 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155646&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:-808
&gt; &gt;      if (CCLayerImpl* clipLayer = m_rootScrollLayerImpl-&gt;parent()) {
&gt; &gt; -        if (clipLayer-&gt;masksToBounds())
&gt; &gt; +        // Compensate for non-overlay scrollbars.
&gt; &gt; +        if (clipLayer-&gt;masksToBounds()) {
&gt; &gt;              viewBounds = clipLayer-&gt;bounds();
&gt; &gt; +            viewBounds.scale(m_deviceScaleFactor);
&gt; &gt; +        }
&gt; &gt;      }
&gt; &gt;      viewBounds.scale(1 / m_pageScaleDelta);
&gt; &gt; -    viewBounds.scale(m_deviceScaleFactor);
&gt; 
&gt; I don&apos;t understand how this math is consistent with your ChangeLog description.  If layoutViewportSize * deviceScale != deviceViewportSize, then why can you multiply clipLayer bounds * deviceScale to be clipped physical pixels?

I was also uncertain about this part, but I&apos;ve convinced myself that it&apos;s correct.  clipLayer bounds still remains (and has to remain) closely related to deviceViewportSize.  Multiplying it by deviceScaleFactor will do the right thing.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:118
&gt; &gt; +    if (deviceViewportSize().isEmpty() &amp;&amp; !layoutViewportSize().isEmpty()) {
&gt; &gt; +        IntSize deviceViewportSize = layoutViewportSize();
&gt; &gt; +        deviceViewportSize.scale(deviceScaleFactor);
&gt; &gt; +        setViewportSize(layoutViewportSize(), deviceViewportSize);
&gt; &gt; +    }
&gt; 
&gt; Re: temporary scaffolding.  Are you sure that setDeviceScaleFactor is always called after setViewportSize?

You&apos;re right, it seems that in Aura setDeviceScaleFactor is never called at all, and it&apos;s relying on the default value of 1.  I changed the scaffolding appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684742</commentid>
    <comment_count>8</comment_count>
      <attachid>155910</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-01 16:26:02 -0700</bug_when>
    <thetext>Comment on attachment 155910
Patch

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

&gt; Source/WebKit/chromium/src/WebLayerTreeView.cpp:100
&gt; +    if (!deviceViewportSize.isEmpty())
&gt; +        m_private-&gt;layerTreeHost()-&gt;setViewportSize(layoutViewportSize, deviceViewportSize);
&gt; +    else
&gt; +        m_private-&gt;layerTreeHost()-&gt;setViewportSize(layoutViewportSize, layoutViewportSize);

I know it&apos;s just temporary, but you need to handle non-1 device scale factors to not break Aura in the meantime.

Would it be easier to just ignore this deviceViewportSize parameter in all cases until the Chromium side of this change lands, and just call m_private-&gt;layerTreeHost()-&gt;setViewportSize whenever layoutViewportSize or deviceScale changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684749</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-01 16:28:39 -0700</bug_when>
    <thetext>The root compositor in Aura currently has its own device scale implementation and does not rely on the CC functionality.  I tested with Linux Aura with &quot;--force-device-scale-factor=2 --force-compositing-mode&quot; and the display looked the same as without my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684813</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-01 17:37:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The root compositor in Aura currently has its own device scale implementation and does not rely on the CC functionality.  I tested with Linux Aura with &quot;--force-device-scale-factor=2 --force-compositing-mode&quot; and the display looked the same as without my patch.

I don&apos;t understand how that could be.  With --force-device-scale-factor=2, layoutViewport != deviceViewport.  The deviceViewportSize is used for setting the root surface content rect, so this seems like it could cause visibility or occlusion errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684872</commentid>
    <comment_count>11</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-08-01 18:52:58 -0700</bug_when>
    <thetext>The renderer compositor uses the WebViewImpl call I changed as part of this patch.  For the browser compositor, there is no call to WebLayerTreeView::setDeviceScaleFactor anywhere in the chromium repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685475</commentid>
    <comment_count>12</comment_count>
      <attachid>155910</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-02 09:17:47 -0700</bug_when>
    <thetext>Comment on attachment 155910
Patch

(In reply to comment #11)
&gt; The renderer compositor uses the WebViewImpl call I changed as part of this patch.  For the browser compositor, there is no call to WebLayerTreeView::setDeviceScaleFactor anywhere in the chromium repository.

Thanks for being patient with my worries about breaking changes.  I misunderstood how device scale worked for the browser compositor.

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686050</commentid>
    <comment_count>13</comment_count>
      <attachid>155910</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 17:51:55 -0700</bug_when>
    <thetext>Comment on attachment 155910
Patch

Clearing flags on attachment: 155910

Committed r124543: &lt;http://trac.webkit.org/changeset/124543&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686051</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 17:52:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155646</attachid>
            <date>2012-07-31 15:29:10 -0700</date>
            <delta_ts>2012-08-01 15:57:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92794-20120731152853.patch</filename>
            <type>text/plain</type>
            <size>17537</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0NDIwOThjOTY1NTEy
NGI1N2UyODc2N2Q4MmNlYmIwMWM1ZTQ1N2NkLi4wNzZmMjFlNDBjYTNhM2M3NDVmZjY4YmEyYTIy
MzEyZjlkMGFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wNy0zMSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBkZXZpY2VWaWV3cG9ydFNpemUgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgZnV0dXJlLCBDU1MgbGF5b3V0IHNpemUgd2lsbCBi
ZWNvbWUgaW5jcmVhc2luZ2x5IGRpc2Fzc29jaWF0ZWQKKyAgICAgICAgZnJvbSBwaHlzaWNhbCBk
ZXZpY2Ugc2l6ZSwgYW5kIGl0IHdpbGwgYmVjb21lIGltcG9zc2libGUgdG8gaW5mZXIgb25lCisg
ICAgICAgIGZyb20gdGhlIG90aGVyIGluc2lkZSB0aGUgY29tcG9zaXRvci4gIFRoZXJlZm9yZSwg
dGhpcyBwYXRjaCBhbGxvd3MKKyAgICAgICAgZGV2aWNlVmlld3BvcnRTaXplIHRvIGJlIGV4cGxp
Y2l0bHkgcGFzc2VkIGluIGJ5IHRoZSBvdXRzaWRlIGNsaWVudC4KKworICAgICAgICBJIGFsc28g
cmVuYW1lZCB0aGUgZXhpc3Rpbmcgdmlld3BvcnRTaXplIGZpZWxkIHRvICJsYXlvdXRWaWV3cG9y
dFNpemUiCisgICAgICAgIGZvciBjbGFyaXR5LCBhbmQgY29udmVydGVkIGl0cyB1c2VzIHRvIGRl
dmljZVZpZXdwb3J0U2l6ZSBzaW5jZQorICAgICAgICB0aGF0IGlzIG1vcmUgYXBwcm9wcmlhdGUu
CisKKyAgICAgICAgSSBoYWQgdG8gYWRkIHNvbWUgZGVmYXVsdC12YWx1ZSBzY2FmZm9sZGluZyB0
byBXZWJMYXllclRyZWVWaWV3IGluCisgICAgICAgIG9yZGVyIHRvIGF2b2lkIGJyZWFraW5nIHVp
L2NvbXBvc2l0b3IuICBXZSBjYW4gZGVsZXRlIGl0IG9uY2UgdGhhdCdzCisgICAgICAgIHVwZGF0
ZWQuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAg
ICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDctMjUgIE1pbiBRaW4gIDxxaW5taW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwc3RyZWFtIGRlY2xhcmF0aW9uIG9mIFdlYkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVTdHJlYW1UZXh0dXJlQ0hST01JVU0oKSBmb3IgYW5kcm9pZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDMyMDg1MGY3YjVmYWFhMTFkZDc4YTQ5MDQ0NjJiZjAwZTFiMzcxZDIuLjJl
MDgyNTQ0ZjQ5ZmFjMzk5NzIzOGU1YzM4ZGY0YzQ4NTU0MzhhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxMi0wNy0zMSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBkZXZpY2VWaWV3cG9ydFNpemUgY2xlYW51cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3OTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgZnV0dXJl
LCBDU1MgbGF5b3V0IHNpemUgd2lsbCBiZWNvbWUgaW5jcmVhc2luZ2x5IGRpc2Fzc29jaWF0ZWQK
KyAgICAgICAgZnJvbSBwaHlzaWNhbCBkZXZpY2Ugc2l6ZSwgYW5kIGl0IHdpbGwgYmVjb21lIGlt
cG9zc2libGUgdG8gaW5mZXIgb25lCisgICAgICAgIGZyb20gdGhlIG90aGVyIGluc2lkZSB0aGUg
Y29tcG9zaXRvci4gIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBhbGxvd3MKKyAgICAgICAgZGV2aWNl
Vmlld3BvcnRTaXplIHRvIGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluIGJ5IHRoZSBvdXRzaWRlIGNs
aWVudC4KKworICAgICAgICBJIGFsc28gcmVuYW1lZCB0aGUgZXhpc3Rpbmcgdmlld3BvcnRTaXpl
IGZpZWxkIHRvICJsYXlvdXRWaWV3cG9ydFNpemUiCisgICAgICAgIGZvciBjbGFyaXR5LCBhbmQg
Y29udmVydGVkIGl0cyB1c2VzIHRvIGRldmljZVZpZXdwb3J0U2l6ZSBzaW5jZQorICAgICAgICB0
aGF0IGlzIG1vcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgSSBoYWQgdG8gYWRkIHNvbWUgZGVm
YXVsdC12YWx1ZSBzY2FmZm9sZGluZyB0byBXZWJMYXllclRyZWVWaWV3IGluCisgICAgICAgIG9y
ZGVyIHRvIGF2b2lkIGJyZWFraW5nIHVpL2NvbXBvc2l0b3IuICBXZSBjYW4gZGVsZXRlIGl0IG9u
Y2UgdGhhdCdzCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21t
aXRPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRW
aWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXREZXZpY2VTY2Fs
ZUZhY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpsYXlvdXRWaWV3cG9ydFNpemUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FuRHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRWaWV3cG9ydFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6c2V0RGV2aWNlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6dXBkYXRlTWF4U2Nyb2xs
UG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6bGF5b3V0Vmlld3BvcnRTaXplKToKKwog
MjAxMi0wNy0yOCAgTWluIFFpbiAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRk
IGFuIG92ZXJsYXkgcGxheSBidXR0b24gdG8gbWVkaWEgY29udHJvbHMgb24gYW5kcm9pZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwYjhhYTlmNDBmYjFhNDNjMzJjYTg3ZTgyMmEzMzY5
MjVjNjE5YjYzLi5iNTRkNDVkNWRiZjNhYzZjOTc0YTBmNDIyMzZkYmE4MTgwNzA1NzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA3LTMxICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIGRl
dmljZVZpZXdwb3J0U2l6ZSBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05Mjc5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIENTUyBsYXlvdXQgc2l6ZSB3aWxsIGJlY29t
ZSBpbmNyZWFzaW5nbHkgZGlzYXNzb2NpYXRlZAorICAgICAgICBmcm9tIHBoeXNpY2FsIGRldmlj
ZSBzaXplLCBhbmQgaXQgd2lsbCBiZWNvbWUgaW1wb3NzaWJsZSB0byBpbmZlciBvbmUKKyAgICAg
ICAgZnJvbSB0aGUgb3RoZXIgaW5zaWRlIHRoZSBjb21wb3NpdG9yLiAgVGhlcmVmb3JlLCB0aGlz
IHBhdGNoIGFsbG93cworICAgICAgICBkZXZpY2VWaWV3cG9ydFNpemUgdG8gYmUgZXhwbGljaXRs
eSBwYXNzZWQgaW4gYnkgdGhlIG91dHNpZGUgY2xpZW50LgorCisgICAgICAgIEkgYWxzbyByZW5h
bWVkIHRoZSBleGlzdGluZyB2aWV3cG9ydFNpemUgZmllbGQgdG8gImxheW91dFZpZXdwb3J0U2l6
ZSIKKyAgICAgICAgZm9yIGNsYXJpdHksIGFuZCBjb252ZXJ0ZWQgaXRzIHVzZXMgdG8gZGV2aWNl
Vmlld3BvcnRTaXplIHNpbmNlCisgICAgICAgIHRoYXQgaXMgbW9yZSBhcHByb3ByaWF0ZS4KKwor
ICAgICAgICBJIGhhZCB0byBhZGQgc29tZSBkZWZhdWx0LXZhbHVlIHNjYWZmb2xkaW5nIHRvIFdl
YkxheWVyVHJlZVZpZXcgaW4KKyAgICAgICAgb3JkZXIgdG8gYXZvaWQgYnJlYWtpbmcgdWkvY29t
cG9zaXRvci4gIFdlIGNhbiBkZWxldGUgaXQgb25jZSB0aGF0J3MKKyAgICAgICAgdXBkYXRlZC4K
KworICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJUcmVlVmlldzo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJUcmVlVmlldzo6bGF5b3V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OmRldmljZVZpZXdwb3J0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldERldmljZVNjYWxlRmFjdG9yKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlTGF5ZXJU
cmVlVmlld3BvcnQpOgorCiAyMDEyLTA3LTI4ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBTaWdoLiAgSnVzdCBkaXNhYmxlIGFsbCB0aGUgQXV0b1Jlc2l6
ZSB0ZXN0cyBhZnRlciB0aGUgZmlyc3QgdGhyZWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IGY1MjUxMTA0MzM2YTAzNGE1
MTQ2Y2RkZDE2YmRhMmJkNmExYzZjNDIuLmIzMGM5YjU0NmEyZWE0YjU0NWY3ZjYyNzA3ODczOWM5
ZjgzYjE3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oCkBAIC0xMDUsOCArMTA1LDEzIEBAIHB1YmxpYzoKIAogICAgIC8vIFZp
ZXcgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3Qg
V2ViU2l6ZSYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSB2aWV3cG9ydFNpemUoKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUm
IGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplID0g
V2ViU2l6ZSgpKTsKKyAgICAvLyBHaXZlcyB0aGUgdmlld3BvcnQgc2l6ZSBpbiBsYXllciBzcGFj
ZS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgbGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3Q7
CisgICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gcGh5c2ljYWwgZGV2aWNlIHBpeGVs
cyAobWF5IGJlIGRpZmZlcmVudAorICAgIC8vIGZyb20gdGhlIGFib3ZlIGlmIHRoZXJlIGV4aXN0
cyBwYWdlIHNjYWxlLCBkZXZpY2Ugc2NhbGUgb3IgZml4ZWQgbGF5b3V0CisgICAgLy8gbW9kZSku
CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0Owog
CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKICAg
ICBXRUJLSVRfRVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBmZjk3Y2YzYzQ2ZTJiYmIxYjkyMDA0NDMyNmM1
MDI3ZmM2ODcxNjU0Li4zNWZhNGJhZWRmZjc5MWY4ZTIwMjAwYTI4MTE5MWY2ZDZmMDlhYjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKQogICAgICAgICBob3N0SW1wbC0+c2V0TmVlZHNBbmltYXRlTGF5ZXJz
KCk7CiAKICAgICBob3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoY29tbWl0TnVtYmVyKCkp
OwotICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKCkpOworICAgIGhv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXplKCksIGRldmljZVZpZXdw
b3J0U2l6ZSgpKTsKICAgICBob3N0SW1wbC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CiAgICAgaG9zdEltcGwtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyht
X3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVGYWN0b3IsIG1fbWF4UGFnZVNjYWxlRmFj
dG9yKTsKICAgICBob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9y
KTsKQEAgLTM2NCwxNSArMzY0LDEzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRSb290TGF5
ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIpCiAgICAgc2V0TmVlZHNDb21t
aXQoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRT
aXplKGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplKQogewotICAgIGlmICh2aWV3cG9ydFNpemUgPT0gbV92aWV3cG9ydFNp
emUpCisgICAgaWYgKGxheW91dFZpZXdwb3J0U2l6ZSA9PSBtX2xheW91dFZpZXdwb3J0U2l6ZSAm
JiBkZXZpY2VWaWV3cG9ydFNpemUgPT0gbV9kZXZpY2VWaWV3cG9ydFNpemUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotCi0gICAgbV9kZXZp
Y2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7Ci0gICAgbV9kZXZpY2VWaWV3cG9ydFNpemUu
c2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgbV9sYXlvdXRWaWV3cG9ydFNpemUgPSBs
YXlvdXRWaWV3cG9ydFNpemU7CisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSBkZXZpY2VWaWV3
cG9ydFNpemU7CiAKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtNDU1LDcgKzQ1Myw3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgc2l6ZV90IG1lbW9yeUFsbG9jCiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICBpZiAobGF5
b3V0Vmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXMpOwpAQCAtNzA1LDggKzcwMyw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICAgICAg
cmV0dXJuOwogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcjsKIAot
ICAgIG1fZGV2aWNlVmlld3BvcnRTaXplID0gbV92aWV3cG9ydFNpemU7Ci0gICAgbV9kZXZpY2VW
aWV3cG9ydFNpemUuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgc2V0TmVlZHNDb21t
aXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA4YTIyOGYxYTI4YmRk
OWU0ZGZjMTBmYzJmYjVhOGJiMTcwMzUwNzMwLi4wMDFkYzc0MzU2YTg4MmJmYjgzYzA3ZTllZWVj
YTA3MTk3YTMyMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMjI5LDEwICsy
MjksOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KIAotICAgIHZvaWQgc2V0Vmlld3BvcnRT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRT
aXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6
ZSk7CiAKLSAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdwb3J0U2l6ZTsgfQotICAgIC8vIEdpdmVzIHRoZSB2aWV3cG9ydCBzaXplIGluIGRldmlj
ZS9jb250ZW50IHNwYWNlLgorICAgIGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Vmlld3BvcnRTaXplOyB9CiAgICAgY29uc3QgSW50U2l6
ZSYgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VWaWV3cG9ydFNp
emU7IH0KIAogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvciwgZmxvYXQgbWluUGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtYXhQYWdlU2NhbGVG
YWN0b3IpOwpAQCAtMzE3LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAKICAgICBDQ0xheWVyVHJlZVNl
dHRpbmdzIG1fc2V0dGluZ3M7CiAKLSAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOworICAgIElu
dFNpemUgbV9sYXlvdXRWaWV3cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdwb3J0
U2l6ZTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDQ5M2YzNWEyNzk1NTQ0ZDA0M2Q0ZGQ0ZmUxOTdm
YThiMTFlNDgwY2EuLmQxYjA3YmU1NmUxNGY1YzI0YzhmMmVlMTVhMWY1ZTdiMDlkNjE0MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0xNjYsNyArMTY2LDcg
QEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5EcmF3KCkKICAgICAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDAoImNjIiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcgbm8gcm9vdCBs
YXllciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICh2aWV3cG9ydFNp
emUoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoZGV2aWNlVmlld3BvcnRTaXplKCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYW5EcmF3IGVtcHR5IHZpZXdwb3J0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKICAgICBJbnRT
aXplIHNjYWxlZENvbnRlbnRTaXplID0gY29udGVudFNpemUoKTsKICAgICBzY2FsZWRDb250ZW50
U2l6ZS5zY2FsZShtX3BhZ2VTY2FsZURlbHRhKTsKIAotICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9u
ID0gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwg
bV92aWV3cG9ydFNpemUsIHNjYWxlZENvbnRlbnRTaXplLCBzdGFydFRpbWUpOworICAgIG1fcGFn
ZVNjYWxlQW5pbWF0aW9uID0gQ0NQYWdlU2NhbGVBbmltYXRpb246OmNyZWF0ZShzY3JvbGxUb3Rh
bCwgc2NhbGVUb3RhbCwgbV9kZXZpY2VWaWV3cG9ydFNpemUsIHNjYWxlZENvbnRlbnRTaXplLCBz
dGFydFRpbWUpOwogCiAgICAgaWYgKGFuY2hvclBvaW50KSB7CiAgICAgICAgIEludFNpemUgd2lu
ZG93QW5jaG9yKHRhcmdldFBvc2l0aW9uKTsKQEAgLTcwNSwxNSArNzA1LDEzIEBAIGJvb2wgQ0NM
YXllclRyZWVIb3N0SW1wbDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoUGFzc093blB0cjxDQ0dy
YXBoaWNzQ29udGV4dD4KICAgICByZXR1cm4gbV9sYXllclJlbmRlcmVyOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9y
dFNpemUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJ
bnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0
U2l6ZSkKIHsKLSAgICBpZiAodmlld3BvcnRTaXplID09IG1fdmlld3BvcnRTaXplKQorICAgIGlm
IChsYXlvdXRWaWV3cG9ydFNpemUgPT0gbV9sYXlvdXRWaWV3cG9ydFNpemUgJiYgZGV2aWNlVmll
d3BvcnRTaXplID09IG1fZGV2aWNlVmlld3BvcnRTaXplKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLQotICAgIG1fZGV2aWNlVmlld3BvcnRT
aXplID0gdmlld3BvcnRTaXplOwotICAgIG1fZGV2aWNlVmlld3BvcnRTaXplLnNjYWxlKG1fZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIG1fbGF5b3V0Vmlld3BvcnRTaXplID0gbGF5b3V0Vmlld3Bv
cnRTaXplOworICAgIG1fZGV2aWNlVmlld3BvcnRTaXplID0gZGV2aWNlVmlld3BvcnRTaXplOwog
CiAgICAgdXBkYXRlTWF4U2Nyb2xsUG9zaXRpb24oKTsKIApAQCAtNzQyLDEyICs3NDAsNiBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQogICAgIGlmIChkZXZpY2VTY2FsZUZhY3RvciA9PSBtX2RldmljZVNjYWxl
RmFjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IGRldmlj
ZVNjYWxlRmFjdG9yOwotCi0gICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemUo
KTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsK
LSAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOwotICAgIGlmIChtX2xheWVyUmVuZGVyZXIp
Ci0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRDaGFuZ2VkKCk7CiB9CiAKIApAQCAt
Nzk5LDEzICs3OTEsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjp1cGRhdGVNYXhTY3Jv
bGxQb3NpdGlvbigpCiAgICAgaWYgKCFtX3Jvb3RTY3JvbGxMYXllckltcGwgfHwgIW1fcm9vdFNj
cm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0U2l6ZSB2aWV3Qm91bmRzID0gbV92aWV3cG9ydFNpemU7CisgICAgRmxvYXRTaXplIHZp
ZXdCb3VuZHMgPSBtX2RldmljZVZpZXdwb3J0U2l6ZTsKICAgICBpZiAoQ0NMYXllckltcGwqIGNs
aXBMYXllciA9IG1fcm9vdFNjcm9sbExheWVySW1wbC0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYg
KGNsaXBMYXllci0+bWFza3NUb0JvdW5kcygpKQorICAgICAgICAvLyBDb21wZW5zYXRlIGZvciBu
b24tb3ZlcmxheSBzY3JvbGxiYXJzLgorICAgICAgICBpZiAoY2xpcExheWVyLT5tYXNrc1RvQm91
bmRzKCkpIHsKICAgICAgICAgICAgIHZpZXdCb3VuZHMgPSBjbGlwTGF5ZXItPmJvdW5kcygpOwor
ICAgICAgICAgICAgdmlld0JvdW5kcy5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICB2aWV3Qm91bmRzLnNjYWxlKDEgLyBtX3BhZ2VTY2FsZURlbHRhKTsK
LSAgICB2aWV3Qm91bmRzLnNjYWxlKG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgLy8gbWF4
U2Nyb2xsIGlzIGNvbXB1dGVkIGluIHBoeXNpY2FsIHBpeGVscywgYnV0IHNjcm9sbCBwb3NpdGlv
bnMgYXJlIGluIGxheW91dCBwaXhlbHMuCiAgICAgSW50U2l6ZSBtYXhTY3JvbGwgPSBjb250ZW50
U2l6ZSgpIC0gZXhwYW5kZWRJbnRTaXplKHZpZXdCb3VuZHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5oCmluZGV4IDA0NThlMjgxMWExZjQyNzY1NzA0NDQwZWVmMDc4MWM5NWQx
YTI4YmEuLjc5M2U1MjQ3OGRlMTA1MDIwZTU4MzUwNDNiNjgyODgwYWFhZjU2MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTE0OCw4ICsxNDgsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzV2VyZVB1cmdlZFNpbmNlTGFzdENvbW1pdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQ7
IH0KICAgICBzaXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzOyB9CiAKLSAgICBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQotICAgIHZvaWQg
c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0U2l6
ZShjb25zdCBJbnRTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGRldmlj
ZVZpZXdwb3J0U2l6ZSk7CisgICAgY29uc3QgSW50U2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRWaWV3cG9ydFNpemU7IH0KIAogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQogICAg
IHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIHBy
aXZhdGU6CiAgICAgQ0NMYXllckltcGwqIG1fY3VycmVudGx5U2Nyb2xsaW5nTGF5ZXJJbXBsOwog
ICAgIGludCBtX3Njcm9sbGluZ0xheWVySWRGcm9tUHJldmlvdXNUcmVlOwogICAgIENDTGF5ZXJU
cmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKLSAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOworICAg
IEludFNpemUgbV9sYXlvdXRWaWV3cG9ydFNpemU7CiAgICAgSW50U2l6ZSBtX2RldmljZVZpZXdw
b3J0U2l6ZTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV92aXNp
YmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cAppbmRleCBiY2Q0OTBhODQxZjQ0YmYzNzliZjQ4ODdmNzM0YjExNWRmZDY2MTQxLi40OGUwNzJj
ZTNlNzJhNjllZDdjZjE3NWZhNmMyNGY5ZGJiYmViYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtOTIsMTkgKzkyLDMwIEBAIGlu
dCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb21wb3NpdG9ySWRlbnRpZmllcigpOwogfQogCi12
b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJiB2aWV3
cG9ydFNpemUpCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBX
ZWJTaXplJiBsYXlvdXRWaWV3cG9ydFNpemUsIGNvbnN0IFdlYlNpemUmIGRldmljZVZpZXdwb3J0
U2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXpl
KHZpZXdwb3J0U2l6ZSk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdw
b3J0U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUsIGRldmljZVZpZXdwb3J0U2l6ZSk7CiB9CiAKLVdl
YlNpemUgV2ViTGF5ZXJUcmVlVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QKK1dlYlNpemUgV2Vi
TGF5ZXJUcmVlVmlldzo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V2ViU2l6ZShtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+dmlld3BvcnRTaXplKCkpOworICAg
IHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5sYXlvdXRWaWV3cG9y
dFNpemUoKSk7Cit9CisKK1dlYlNpemUgV2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlVmlld3BvcnRT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+ZGV2aWNlVmlld3BvcnRTaXplKCkpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6
OnNldERldmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewog
ICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXREZXZpY2VTY2FsZUZhY3RvcihkZXZp
Y2VTY2FsZUZhY3Rvcik7CisKKyAgICBpZiAoZGV2aWNlVmlld3BvcnRTaXplKCkuaXNFbXB0eSgp
ICYmICFsYXlvdXRWaWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgSW50U2l6ZSBk
ZXZpY2VWaWV3cG9ydFNpemUgPSBsYXlvdXRWaWV3cG9ydFNpemUoKTsKKyAgICAgICAgZGV2aWNl
Vmlld3BvcnRTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgc2V0Vmlld3Bv
cnRTaXplKGxheW91dFZpZXdwb3J0U2l6ZSgpLCBkZXZpY2VWaWV3cG9ydFNpemUpOworICAgIH0K
IH0KIAogZmxvYXQgV2ViTGF5ZXJUcmVlVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDdjNmRhNjBk
OTNhYmY2ZjEzMGIwYjIxNzk3ZTBhMzMzNjI4MzcwNzguLmQyMzllMzc1ZWFkNTkwM2Y4MjU4Zjdj
OGM2MjlkM2I0MGM2OTNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdl
YkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQogICAgICAgICBpZiAoY2FudmFz
KSB7CiAgICAgICAgICAgICAvLyBDbGlwIHJlY3QgdG8gdGhlIGNvbmZpbmVzIG9mIHRoZSByb290
TGF5ZXJUZXh0dXJlLgogICAgICAgICAgICAgSW50UmVjdCByZXNpemVSZWN0KHJlY3QpOwotICAg
ICAgICAgICAgcmVzaXplUmVjdC5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9s
YXllclRyZWVWaWV3LnZpZXdwb3J0U2l6ZSgpKSk7CisgICAgICAgICAgICByZXNpemVSZWN0Lmlu
dGVyc2VjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX2xheWVyVHJlZVZpZXcuZGV2aWNlVmll
d3BvcnRTaXplKCkpKTsKICAgICAgICAgICAgIGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKGNhbnZh
cywgcmVzaXplUmVjdCk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzc4Niw3ICszNzg2LDEwIEBA
IHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICBmbG9hdCBk
ZXZpY2VTY2FsZSA9IG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3I7CiAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29u
dGVudHNTaXplKCksIHNjcm9sbCwgdmlldy0+c2Nyb2xsT3JpZ2luKCksIGRldmljZVNjYWxlKTsK
IAotICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUoc2l6ZSgpKTsKKyAgICBJbnRT
aXplIGxheW91dFZpZXdwb3J0U2l6ZSA9IHNpemUoKTsKKyAgICBJbnRTaXplIGRldmljZVZpZXdw
b3J0U2l6ZSA9IHNpemUoKTsKKyAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2Nh
bGUpOworICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRT
aXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwogICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2Nh
bGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZh
Y3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155910</attachid>
            <date>2012-08-01 15:57:22 -0700</date>
            <delta_ts>2012-08-02 17:51:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92794-20120801155703.patch</filename>
            <type>text/plain</type>
            <size>47901</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0NDIwOThjOTY1NTEy
NGI1N2UyODc2N2Q4MmNlYmIwMWM1ZTQ1N2NkLi4wNzZmMjFlNDBjYTNhM2M3NDVmZjY4YmEyYTIy
MzEyZjlkMGFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wNy0zMSAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVt
XSBkZXZpY2VWaWV3cG9ydFNpemUgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgZnV0dXJlLCBDU1MgbGF5b3V0IHNpemUgd2lsbCBi
ZWNvbWUgaW5jcmVhc2luZ2x5IGRpc2Fzc29jaWF0ZWQKKyAgICAgICAgZnJvbSBwaHlzaWNhbCBk
ZXZpY2Ugc2l6ZSwgYW5kIGl0IHdpbGwgYmVjb21lIGltcG9zc2libGUgdG8gaW5mZXIgb25lCisg
ICAgICAgIGZyb20gdGhlIG90aGVyIGluc2lkZSB0aGUgY29tcG9zaXRvci4gIFRoZXJlZm9yZSwg
dGhpcyBwYXRjaCBhbGxvd3MKKyAgICAgICAgZGV2aWNlVmlld3BvcnRTaXplIHRvIGJlIGV4cGxp
Y2l0bHkgcGFzc2VkIGluIGJ5IHRoZSBvdXRzaWRlIGNsaWVudC4KKworICAgICAgICBJIGFsc28g
cmVuYW1lZCB0aGUgZXhpc3Rpbmcgdmlld3BvcnRTaXplIGZpZWxkIHRvICJsYXlvdXRWaWV3cG9y
dFNpemUiCisgICAgICAgIGZvciBjbGFyaXR5LCBhbmQgY29udmVydGVkIGl0cyB1c2VzIHRvIGRl
dmljZVZpZXdwb3J0U2l6ZSBzaW5jZQorICAgICAgICB0aGF0IGlzIG1vcmUgYXBwcm9wcmlhdGUu
CisKKyAgICAgICAgSSBoYWQgdG8gYWRkIHNvbWUgZGVmYXVsdC12YWx1ZSBzY2FmZm9sZGluZyB0
byBXZWJMYXllclRyZWVWaWV3IGluCisgICAgICAgIG9yZGVyIHRvIGF2b2lkIGJyZWFraW5nIHVp
L2NvbXBvc2l0b3IuICBXZSBjYW4gZGVsZXRlIGl0IG9uY2UgdGhhdCdzCisgICAgICAgIHVwZGF0
ZWQuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oOgorICAg
ICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisKIDIwMTItMDctMjUgIE1pbiBRaW4gIDxxaW5taW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwc3RyZWFtIGRlY2xhcmF0aW9uIG9mIFdlYkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVTdHJlYW1UZXh0dXJlQ0hST01JVU0oKSBmb3IgYW5kcm9pZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDMyMDg1MGY3YjVmYWFhMTFkZDc4YTQ5MDQ0NjJiZjAwZTFiMzcxZDIuLmJk
NzQwOTMyMGQxZjc2MzM5YjRhOGI4NWE0Y2Y5ZWI0YmIzNzA1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxMi0wNy0zMSAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBkZXZpY2VWaWV3cG9ydFNpemUgY2xlYW51cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3OTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGUgZnV0dXJl
LCBDU1MgbGF5b3V0IHNpemUgd2lsbCBiZWNvbWUgaW5jcmVhc2luZ2x5IGRpc2Fzc29jaWF0ZWQK
KyAgICAgICAgZnJvbSBwaHlzaWNhbCBkZXZpY2Ugc2l6ZSwgYW5kIGl0IHdpbGwgYmVjb21lIGlt
cG9zc2libGUgdG8gaW5mZXIgb25lCisgICAgICAgIGZyb20gdGhlIG90aGVyIGluc2lkZSB0aGUg
Y29tcG9zaXRvci4gIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBhbGxvd3MKKyAgICAgICAgZGV2aWNl
Vmlld3BvcnRTaXplIHRvIGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluIGJ5IHRoZSBvdXRzaWRlIGNs
aWVudC4KKworICAgICAgICBJIGFsc28gcmVuYW1lZCB0aGUgZXhpc3Rpbmcgdmlld3BvcnRTaXpl
IGZpZWxkIHRvICJsYXlvdXRWaWV3cG9ydFNpemUiCisgICAgICAgIGZvciBjbGFyaXR5LCBhbmQg
Y29udmVydGVkIGl0cyB1c2VzIHRvIGRldmljZVZpZXdwb3J0U2l6ZSBzaW5jZQorICAgICAgICB0
aGF0IGlzIG1vcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgSSBoYWQgdG8gYWRkIHNvbWUgZGVm
YXVsdC12YWx1ZSBzY2FmZm9sZGluZyB0byBXZWJMYXllclRyZWVWaWV3IGluCisgICAgICAgIG9y
ZGVyIHRvIGF2b2lkIGJyZWFraW5nIHVpL2NvbXBvc2l0b3IuICBXZSBjYW4gZGVsZXRlIGl0IG9u
Y2UgdGhhdCdzCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmxheW91dFZpZXdwb3J0U2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYW5E
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNj
YWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNl
dFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpz
ZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjp1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoQ0NMYXllclRy
ZWVIb3N0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpsYXlv
dXRWaWV3cG9ydFNpemUpOgorCiAyMDEyLTA3LTI4ICBNaW4gUWluICA8cWlubWluQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBBZGQgYW4gb3ZlcmxheSBwbGF5IGJ1dHRvbiB0byBtZWRpYSBjb250
cm9scyBvbiBhbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBiOGFhOWY0MGZi
MWE0M2MzMmNhODdlODIyYTMzNjkyNWM2MTliNjMuLmI1NGQ0NWQ1ZGJmM2FjNmM5NzRhMGY0MjIz
NmRiYTgxODA3MDU3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTItMDctMzEgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gZGV2aWNlVmlld3BvcnRTaXplIGNsZWFudXAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgQ1NTIGxh
eW91dCBzaXplIHdpbGwgYmVjb21lIGluY3JlYXNpbmdseSBkaXNhc3NvY2lhdGVkCisgICAgICAg
IGZyb20gcGh5c2ljYWwgZGV2aWNlIHNpemUsIGFuZCBpdCB3aWxsIGJlY29tZSBpbXBvc3NpYmxl
IHRvIGluZmVyIG9uZQorICAgICAgICBmcm9tIHRoZSBvdGhlciBpbnNpZGUgdGhlIGNvbXBvc2l0
b3IuICBUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggYWxsb3dzCisgICAgICAgIGRldmljZVZpZXdwb3J0
U2l6ZSB0byBiZSBleHBsaWNpdGx5IHBhc3NlZCBpbiBieSB0aGUgb3V0c2lkZSBjbGllbnQuCisK
KyAgICAgICAgSSBhbHNvIHJlbmFtZWQgdGhlIGV4aXN0aW5nIHZpZXdwb3J0U2l6ZSBmaWVsZCB0
byAibGF5b3V0Vmlld3BvcnRTaXplIgorICAgICAgICBmb3IgY2xhcml0eSwgYW5kIGNvbnZlcnRl
ZCBpdHMgdXNlcyB0byBkZXZpY2VWaWV3cG9ydFNpemUgc2luY2UKKyAgICAgICAgdGhhdCBpcyBt
b3JlIGFwcHJvcHJpYXRlLgorCisgICAgICAgIEkgaGFkIHRvIGFkZCBzb21lIGRlZmF1bHQtdmFs
dWUgc2NhZmZvbGRpbmcgdG8gV2ViTGF5ZXJUcmVlVmlldyBpbgorICAgICAgICBvcmRlciB0byBh
dm9pZCBicmVha2luZyB1aS9jb21wb3NpdG9yLiAgV2UgY2FuIGRlbGV0ZSBpdCBvbmNlIHRoYXQn
cworICAgICAgICB1cGRhdGVkLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpsYXlvdXRWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6ZGV2
aWNlVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6CisKIDIwMTItMDctMjggIFBldGVyIEth
c3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFNpZ2guICBKdXN0IGRpc2Fi
bGUgYWxsIHRoZSBBdXRvUmVzaXplIHRlc3RzIGFmdGVyIHRoZSBmaXJzdCB0aHJlZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5k
ZXggZjUyNTExMDQzMzZhMDM0YTUxNDZjZGRkMTZiZGEyYmQ2YTFjNmM0Mi4uYjMwYzliNTQ2YTJl
YTRiNTQ1ZjdmNjI3MDc4NzM5YzlmODNiMTc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEwNSw4ICsxMDUsMTMgQEAg
cHVibGljOgogCiAgICAgLy8gVmlldyBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFZpZXdwb3J0U2l6ZShjb25zdCBXZWJTaXplJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXpl
IHZpZXdwb3J0U2l6ZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRWaWV3cG9y
dFNpemUoY29uc3QgV2ViU2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXplLCBjb25zdCBXZWJTaXplJiBk
ZXZpY2VWaWV3cG9ydFNpemUgPSBXZWJTaXplKCkpOworICAgIC8vIEdpdmVzIHRoZSB2aWV3cG9y
dCBzaXplIGluIGxheWVyIHNwYWNlLgorICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSBsYXlvdXRW
aWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICAvLyBHaXZlcyB0aGUgdmlld3BvcnQgc2l6ZSBpbiBw
aHlzaWNhbCBkZXZpY2UgcGl4ZWxzIChtYXkgYmUgZGlmZmVyZW50CisgICAgLy8gZnJvbSB0aGUg
YWJvdmUgaWYgdGhlcmUgZXhpc3RzIHBhZ2Ugc2NhbGUsIGRldmljZSBzY2FsZSBvciBmaXhlZCBs
YXlvdXQKKyAgICAvLyBtb2RlKS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgZGV2aWNlVmll
d3BvcnRTaXplKCkgY29uc3Q7CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQpOwogICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGZmOTdjZjNj
NDZlMmJiYjFiOTIwMDQ0MzI2YzUwMjdmYzY4NzE2NTQuLjM1ZmE0YmFlZGZmNzkxZjhlMjAyMDBh
MjgxMTkxZjZkNmYwOWFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAt
MjQyLDcgKzI0Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiAgICAgICAgIGhvc3RJbXBsLT5z
ZXROZWVkc0FuaW1hdGVMYXllcnMoKTsKIAogICAgIGhvc3RJbXBsLT5zZXRTb3VyY2VGcmFtZU51
bWJlcihjb21taXROdW1iZXIoKSk7Ci0gICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3
cG9ydFNpemUoKSk7CisgICAgaG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShsYXlvdXRWaWV3cG9y
dFNpemUoKSwgZGV2aWNlVmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXREZXZpY2VT
Y2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBob3N0SW1wbC0+c2V0UGFnZVNj
YWxlRmFjdG9yQW5kTGltaXRzKG1fcGFnZVNjYWxlRmFjdG9yLCBtX21pblBhZ2VTY2FsZUZhY3Rv
ciwgbV9tYXhQYWdlU2NhbGVGYWN0b3IpOwogICAgIGhvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29s
b3IobV9iYWNrZ3JvdW5kQ29sb3IpOwpAQCAtMzY0LDE1ICszNjQsMTMgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IHJvb3RMYXll
cikKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0
Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgbGF5b3V0Vmlld3BvcnRTaXpl
LCBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUpCiB7Ci0gICAgaWYgKHZpZXdwb3J0
U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKKyAgICBpZiAobGF5b3V0Vmlld3BvcnRTaXplID09IG1f
bGF5b3V0Vmlld3BvcnRTaXplICYmIGRldmljZVZpZXdwb3J0U2l6ZSA9PSBtX2RldmljZVZpZXdw
b3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9y
dFNpemU7Ci0KLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBt
X2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICBtX2xh
eW91dFZpZXdwb3J0U2l6ZSA9IGxheW91dFZpZXdwb3J0U2l6ZTsKKyAgICBtX2RldmljZVZpZXdw
b3J0U2l6ZSA9IGRldmljZVZpZXdwb3J0U2l6ZTsKIAogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9
CkBAIC00NTUsNyArNDUzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBzaXplX3QgbWVtb3J5QWxsb2MKICAgICBpZiAoIXJv
b3RMYXllcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmlld3BvcnRTaXplKCkuaXNF
bXB0eSgpKQorICAgIGlmIChsYXlvdXRWaWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGlt
aXRCeXRlcyhtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyk7CkBAIC03MDUsOCArNzAzLDYgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKQogICAgICAgICByZXR1cm47CiAgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IGRl
dmljZVNjYWxlRmFjdG9yOwogCi0gICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSBtX3ZpZXdwb3J0
U2l6ZTsKLSAgICBtX2RldmljZVZpZXdwb3J0U2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9y
KTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IDhhMjI4ZjFhMjhiZGQ5ZTRkZmMxMGZjMmZiNWE4YmIxNzAzNTA3MzAuLjAwMWRjNzQz
NTZhODgyYmZiODNjMDdlOWVlZWNhMDcxOTdhMzIxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0yMjksMTAgKzIyOSw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENDTGF5ZXJU
cmVlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCi0g
ICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0Vmll
d3BvcnRTaXplKGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6
ZSYgZGV2aWNlVmlld3BvcnRTaXplKTsKIAotICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9Ci0gICAgLy8gR2l2ZXMgdGhlIHZp
ZXdwb3J0IHNpemUgaW4gZGV2aWNlL2NvbnRlbnQgc3BhY2UuCisgICAgY29uc3QgSW50U2l6ZSYg
bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRWaWV3cG9ydFNpemU7
IH0KICAgICBjb25zdCBJbnRTaXplJiBkZXZpY2VWaWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2RldmljZVZpZXdwb3J0U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JB
bmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5QYWdlU2NhbGVGYWN0b3Is
IGZsb2F0IG1heFBhZ2VTY2FsZUZhY3Rvcik7CkBAIC0zMTcsNyArMzE2LDcgQEAgcHJpdmF0ZToK
IAogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKIAotICAgIEludFNpemUgbV92
aWV3cG9ydFNpemU7CisgICAgSW50U2l6ZSBtX2xheW91dFZpZXdwb3J0U2l6ZTsKICAgICBJbnRT
aXplIG1fZGV2aWNlVmlld3BvcnRTaXplOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDkzZjM1YTI3
OTU1NDRkMDQzZDRkZDRmZTE5N2ZhOGIxMWU0ODBjYS4uZDFiMDdiZTU2ZTE0ZjVjMjRjOGYyZWUx
NWExZjVlN2IwOWQ2MTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXco
KQogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FuRHJhdyBubyByb290IGxheWVyIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkgeworICAgIGlmIChkZXZpY2VWaWV3
cG9ydFNpemUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNj
IiwgIkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbkRyYXcgZW1wdHkgdmlld3BvcnQiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdl
dFBvc2l0aW9uLAogICAgIEludFNpemUgc2NhbGVkQ29udGVudFNpemUgPSBjb250ZW50U2l6ZSgp
OwogICAgIHNjYWxlZENvbnRlbnRTaXplLnNjYWxlKG1fcGFnZVNjYWxlRGVsdGEpOwogCi0gICAg
bV9wYWdlU2NhbGVBbmltYXRpb24gPSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Y3JlYXRlKHNjcm9s
bFRvdGFsLCBzY2FsZVRvdGFsLCBtX3ZpZXdwb3J0U2l6ZSwgc2NhbGVkQ29udGVudFNpemUsIHN0
YXJ0VGltZSk7CisgICAgbV9wYWdlU2NhbGVBbmltYXRpb24gPSBDQ1BhZ2VTY2FsZUFuaW1hdGlv
bjo6Y3JlYXRlKHNjcm9sbFRvdGFsLCBzY2FsZVRvdGFsLCBtX2RldmljZVZpZXdwb3J0U2l6ZSwg
c2NhbGVkQ29udGVudFNpemUsIHN0YXJ0VGltZSk7CiAKICAgICBpZiAoYW5jaG9yUG9pbnQpIHsK
ICAgICAgICAgSW50U2l6ZSB3aW5kb3dBbmNob3IodGFyZ2V0UG9zaXRpb24pOwpAQCAtNzA1LDE1
ICs3MDUsMTMgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjppbml0aWFsaXplTGF5ZXJSZW5k
ZXJlcihQYXNzT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PgogICAgIHJldHVybiBtX2xheWVyUmVu
ZGVyZXI7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0Vmlld3BvcnRTaXplKGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0
Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgSW50
U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKQogewotICAgIGlmICh2aWV3cG9ydFNpemUgPT0gbV92
aWV3cG9ydFNpemUpCisgICAgaWYgKGxheW91dFZpZXdwb3J0U2l6ZSA9PSBtX2xheW91dFZpZXdw
b3J0U2l6ZSAmJiBkZXZpY2VWaWV3cG9ydFNpemUgPT0gbV9kZXZpY2VWaWV3cG9ydFNpemUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotCi0g
ICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7Ci0gICAgbV9kZXZpY2VWaWV3
cG9ydFNpemUuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgbV9sYXlvdXRWaWV3cG9y
dFNpemUgPSBsYXlvdXRWaWV3cG9ydFNpemU7CisgICAgbV9kZXZpY2VWaWV3cG9ydFNpemUgPSBk
ZXZpY2VWaWV3cG9ydFNpemU7CiAKICAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOwogCkBA
IC03NDIsMTIgKzc0MCw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgaWYgKGRldmljZVNjYWxlRmFj
dG9yID09IG1fZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Rldmlj
ZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3I7Ci0KLSAgICBtX2RldmljZVZpZXdwb3J0
U2l6ZSA9IHZpZXdwb3J0U2l6ZSgpOwotICAgIG1fZGV2aWNlVmlld3BvcnRTaXplLnNjYWxlKG1f
ZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCk7Ci0gICAg
aWYgKG1fbGF5ZXJSZW5kZXJlcikKLSAgICAgICAgbV9sYXllclJlbmRlcmVyLT52aWV3cG9ydENo
YW5nZWQoKTsKIH0KIAogCkBAIC03OTksMTMgKzc5MSwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnVwZGF0ZU1heFNjcm9sbFBvc2l0aW9uKCkKICAgICBpZiAoIW1fcm9vdFNjcm9sbExh
eWVySW1wbCB8fCAhbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5jaGlsZHJlbigpLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRTaXplIHZpZXdCb3VuZHMgPSBtX3ZpZXdwb3J0U2l6
ZTsKKyAgICBGbG9hdFNpemUgdmlld0JvdW5kcyA9IG1fZGV2aWNlVmlld3BvcnRTaXplOwogICAg
IGlmIChDQ0xheWVySW1wbCogY2xpcExheWVyID0gbV9yb290U2Nyb2xsTGF5ZXJJbXBsLT5wYXJl
bnQoKSkgewotICAgICAgICBpZiAoY2xpcExheWVyLT5tYXNrc1RvQm91bmRzKCkpCisgICAgICAg
IC8vIENvbXBlbnNhdGUgZm9yIG5vbi1vdmVybGF5IHNjcm9sbGJhcnMuCisgICAgICAgIGlmIChj
bGlwTGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkgewogICAgICAgICAgICAgdmlld0JvdW5kcyA9IGNs
aXBMYXllci0+Ym91bmRzKCk7CisgICAgICAgICAgICB2aWV3Qm91bmRzLnNjYWxlKG1fZGV2aWNl
U2NhbGVGYWN0b3IpOworICAgICAgICB9CiAgICAgfQogICAgIHZpZXdCb3VuZHMuc2NhbGUoMSAv
IG1fcGFnZVNjYWxlRGVsdGEpOwotICAgIHZpZXdCb3VuZHMuc2NhbGUobV9kZXZpY2VTY2FsZUZh
Y3Rvcik7CiAKICAgICAvLyBtYXhTY3JvbGwgaXMgY29tcHV0ZWQgaW4gcGh5c2ljYWwgcGl4ZWxz
LCBidXQgc2Nyb2xsIHBvc2l0aW9ucyBhcmUgaW4gbGF5b3V0IHBpeGVscy4KICAgICBJbnRTaXpl
IG1heFNjcm9sbCA9IGNvbnRlbnRTaXplKCkgLSBleHBhbmRlZEludFNpemUodmlld0JvdW5kcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMDQ1OGUyODExYTFmNDI3
NjU3MDQ0NDBlZWYwNzgxYzk1ZDFhMjhiYS4uNzkzZTUyNDc4ZGUxMDUwMjBlNTgzNTA0M2I2ODI4
ODBhYWFmNTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTQ4
LDggKzE0OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2Vk
U2luY2VMYXN0Q29tbWl0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmVzV2VyZVB1
cmdlZFNpbmNlTGFzdENvbW1pdDsgfQogICAgIHNpemVfdCBtZW1vcnlBbGxvY2F0aW9uTGltaXRC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7IH0KIAot
ICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3Bv
cnRTaXplOyB9Ci0gICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYpOworICAg
IHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwg
Y29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKTsKKyAgICBjb25zdCBJbnRTaXplJiBs
YXlvdXRWaWV3cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFZpZXdwb3J0U2l6ZTsg
fQogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rldmlj
ZVNjYWxlRmFjdG9yOyB9CiAgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCk7CkBA
IC0yNTgsNyArMjU4LDcgQEAgcHJpdmF0ZToKICAgICBDQ0xheWVySW1wbCogbV9jdXJyZW50bHlT
Y3JvbGxpbmdMYXllckltcGw7CiAgICAgaW50IG1fc2Nyb2xsaW5nTGF5ZXJJZEZyb21QcmV2aW91
c1RyZWU7CiAgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwotICAgIEludFNpemUg
bV92aWV3cG9ydFNpemU7CisgICAgSW50U2l6ZSBtX2xheW91dFZpZXdwb3J0U2l6ZTsKICAgICBJ
bnRTaXplIG1fZGV2aWNlVmlld3BvcnRTaXplOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0
b3I7CiAgICAgYm9vbCBtX3Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGJjZDQ5MGE4NDFmNDRiZjM3OWJmNDg4N2Y3MzRi
MTE1ZGZkNjYxNDEuLjFjZWFiZmEzYTczN2I1MGRiNzExNDE1Y2IyNmYwOWNkMTBlYTIzMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBA
IC05MiwxNCArOTIsMjIgQEAgaW50IFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0b3JJZGVudGlm
aWVyKCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbXBvc2l0b3JJ
ZGVudGlmaWVyKCk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0Vmlld3BvcnRTaXpl
KGNvbnN0IFdlYlNpemUmIHZpZXdwb3J0U2l6ZSkKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0
Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2Vi
U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXplKQogewotICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9z
dCgpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAgICBpZiAoIWRldmljZVZpZXdw
b3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5z
ZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXplLCBkZXZpY2VWaWV3cG9ydFNpemUpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0
U2l6ZShsYXlvdXRWaWV3cG9ydFNpemUsIGxheW91dFZpZXdwb3J0U2l6ZSk7Cit9CisKK1dlYlNp
emUgV2ViTGF5ZXJUcmVlVmlldzo6bGF5b3V0Vmlld3BvcnRTaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bGF5b3V0Vmlld3BvcnRT
aXplKCkpOwogfQogCi1XZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNv
bnN0CitXZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OmRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnZpZXdw
b3J0U2l6ZSgpKTsKKyAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3Qo
KS0+ZGV2aWNlVmlld3BvcnRTaXplKCkpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNl
dERldmljZVNjYWxlRmFjdG9yKGNvbnN0IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDdjNmRhNjBkOTNhYmY2
ZjEzMGIwYjIxNzk3ZTBhMzMzNjI4MzcwNzguLmQyMzllMzc1ZWFkNTkwM2Y4MjU4ZjdjOGM2Mjlk
M2I0MGM2OTNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZh
cyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0KQogICAgICAgICBpZiAoY2FudmFzKSB7CiAg
ICAgICAgICAgICAvLyBDbGlwIHJlY3QgdG8gdGhlIGNvbmZpbmVzIG9mIHRoZSByb290TGF5ZXJU
ZXh0dXJlLgogICAgICAgICAgICAgSW50UmVjdCByZXNpemVSZWN0KHJlY3QpOwotICAgICAgICAg
ICAgcmVzaXplUmVjdC5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9sYXllclRy
ZWVWaWV3LnZpZXdwb3J0U2l6ZSgpKSk7CisgICAgICAgICAgICByZXNpemVSZWN0LmludGVyc2Vj
dChJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX2xheWVyVHJlZVZpZXcuZGV2aWNlVmlld3BvcnRT
aXplKCkpKTsKICAgICAgICAgICAgIGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKGNhbnZhcywgcmVz
aXplUmVjdCk7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMzc4Niw3ICszNzg2LDEwIEBAIHZvaWQg
V2ViVmlld0ltcGw6OnVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCkKICAgICBmbG9hdCBkZXZpY2VT
Y2FsZSA9IG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3I7CiAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnNldFZpZXdwb3J0KHZpc2libGVSZWN0LnNpemUoKSwgdmlldy0+Y29udGVudHNT
aXplKCksIHNjcm9sbCwgdmlldy0+c2Nyb2xsT3JpZ2luKCksIGRldmljZVNjYWxlKTsKIAotICAg
IG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUoc2l6ZSgpKTsKKyAgICBJbnRTaXplIGxh
eW91dFZpZXdwb3J0U2l6ZSA9IHNpemUoKTsKKyAgICBJbnRTaXplIGRldmljZVZpZXdwb3J0U2l6
ZSA9IHNpemUoKTsKKyAgICBkZXZpY2VWaWV3cG9ydFNpemUuc2NhbGUoZGV2aWNlU2NhbGUpOwor
ICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRWaWV3cG9ydFNpemUobGF5b3V0Vmlld3BvcnRTaXplLCBk
ZXZpY2VWaWV3cG9ydFNpemUpOwogICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0
b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3Rvciwg
bV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA1M2Mz
MTJjZjVkOTU4ZGNkYTliNmNlZTQ4ZGFmYTJjNmJhNWJhYzgwLi5jZjY5MzBmY2E0MTYzY2RmZDY3
NjY5M2NjYWEzMDQ0Zjc0OWYyMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtNzQsNyArNzQsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNy
ZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7Ci0gICAgICAg
IG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApLCBJbnRTaXplKDEwLCAx
MCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9uSW1wbFRocmVh
ZCgpIE9WRVJSSURFIHsgfQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIE93blB0
cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6
Y3JlYXRlKHNldHRpbmdzLCB0aGlzKTsKIAogICAgICAgICBteUhvc3RJbXBsLT5pbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcihncmFwaGljc0NvbnRleHQsIFVudGhyb3R0bGVkVXBsb2FkZXIpOwotICAg
ICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAg
ICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSwgSW50U2l6ZSgx
MCwgMTApKTsKIAogICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSByb290UHRyOwog
CkBAIC0yNTYsNyArMjU2LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3Jv
bGxEZWx0YVJlcGVhdGVkU2Nyb2xscykKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
c2Nyb2xsUm9vdENhbGxzQ29tbWl0QW5kUmVkcmF3KQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29u
dGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDUwLCA1MCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDUwLCA1MCksIEludFNpemUoNTAsIDUwKSk7CiAgICAgaW5pdGlhbGl6ZUxheWVy
UmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKIAogICAgIEVYUEVDVF9FUShtX2hvc3RJbXBsLT5zY3Jv
bGxCZWdpbihJbnRQb2ludCgwLCAwKSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKSwgQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcmVwbGFjZVRyZWVXaGlsZVNjcm9sbGluZykK
ICAgICBjb25zdCBpbnQgc2Nyb2xsTGF5ZXJJZCA9IDE7CiAKICAgICBzZXR1cFNjcm9sbEFuZENv
bnRlbnRzTGF5ZXJzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSg1MCwgNTApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNp
emUoSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDUwLCA1MCkpOwogICAgIGluaXRpYWxpemVMYXll
clJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7CiAKICAgICAvLyBXZSBzaG91bGQgbm90IGNyYXNoIGlm
IHRoZSB0cmVlIGlzIHJlcGxhY2VkIHdoaWxlIHdlIGFyZSBzY3JvbGxpbmcuCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXBsYWNlVHJlZVdoaWxl
U2Nyb2xsaW5nKQogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBjbGVhclJvb3RSZW5k
ZXJTdXJmYWNlQW5kU2Nyb2xsKQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXllcnMo
SW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDUwLCA1MCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUw
LCA1MCksIEludFNpemUoNTAsIDUwKSk7CiAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmRE
cmF3RnJhbWUoKTsKIAogICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIHNjcm9sbCBldmVuIGlm
IHRoZSByb290IGxheWVyIGxvc2VzIGl0cyByZW5kZXIgc3VyZmFjZSBhZnRlciB0aGUgbW9zdApA
QCAtMzA5LDcgKzMwOSw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgY2xlYXJS
b290UmVuZGVyU3VyZmFjZUFuZFNjcm9sbCkKIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgd2hlZWxFdmVudEhhbmRsZXJzKQogewogICAgIHNldHVwU2Nyb2xsQW5kQ29udGVudHNMYXll
cnMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJ
bnRTaXplKDUwLCA1MCkpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXpl
KDUwLCA1MCksIEludFNpemUoNTAsIDUwKSk7CiAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJB
bmREcmF3RnJhbWUoKTsKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG1faG9zdEltcGwtPnJvb3RM
YXllcigpOwogCkBAIC0zMjUsNyArMzI1LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB3aGVlbEV2ZW50SGFuZGxlcnMpCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkKIHsKICAgICBzZXR1cFNjcm9sbEFuZENvbnRlbnRz
TGF5ZXJzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNp
emUoSW50U2l6ZSg1MCwgNTApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZSg1MCwgNTApLCBJbnRTaXplKDUwLCA1MCkpOwogICAgIGluaXRpYWxpemVMYXllclJlbmRl
cmVyQW5kRHJhd0ZyYW1lKCk7CiAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBtX2hvc3RJbXBsLT5y
b290TGF5ZXIoKTsKIApAQCAtMzM4LDcgKzMzOCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQogVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkJhc2ljKQogewogICAgIHNldHVwU2Ny
b2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgyMDAsIDIwMCkpOwotICAgIG1faG9zdEltcGwt
PnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0
Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAg
aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKICAgICBDQ0xheWVySW1wbCog
cm9vdCA9IG1faG9zdEltcGwtPnJvb3RMYXllcigpOwogCkBAIC0zNjAsNyArMzYwLDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkJhc2lj
KQogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bldpdGhPZmZzZXQpCiB7CiAgICAgc2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyhJbnRTaXpl
KDIwMCwgMjAwKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAw
LCAxMDApKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEw
MCksIEludFNpemUoMTAwLCAxMDApKTsKICAgICBDQ0xheWVySW1wbCogcm9vdCA9IG1faG9zdElt
cGwtPnJvb3RMYXllcigpOwogCiAgICAgcm9vdC0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
SW50UmVjdCgwLCAwLCA1MCwgNTApKTsKQEAgLTM3OSw3ICszNzksNyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uV2l0aE9mZnNldCkKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hHZXN0dXJlKQogewogICAgIHNldHVw
U2Nyb2xsQW5kQ29udGVudHNMYXllcnMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIG1faG9zdElt
cGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwLCA1MCkpOworICAgIG1faG9zdEltcGwtPnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplKDUwLCA1MCksIEludFNpemUoNTAsIDUwKSk7CiAgICAgaW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUoKTsKIAogICAgIENDTGF5ZXJJbXBsKiBz
Y3JvbGxMYXllciA9IG1faG9zdEltcGwtPnJvb3RTY3JvbGxMYXllcigpOwpAQCAtNDYwLDcgKzQ2
MCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcGluY2hHZXN0dXJlKQogVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmltYXRpb24pCiB7CiAgICAg
c2V0dXBTY3JvbGxBbmRDb250ZW50c0xheWVycyhJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgbV9o
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAsIDUwKSk7CisgICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSg1MCwgNTApKTsKICAg
ICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogCiAgICAgQ0NMYXllcklt
cGwqIHNjcm9sbExheWVyID0gbV9ob3N0SW1wbC0+cm9vdFNjcm9sbExheWVyKCk7CkBAIC01MTAs
NyArNTEwLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVBbmlt
YXRpb24pCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGluaGliaXRTY3JvbGxBbmRQ
YWdlU2NhbGVVcGRhdGVzV2hpbGVQaW5jaFpvb21pbmcpCiB7CiAgICAgc2V0dXBTY3JvbGxBbmRD
b250ZW50c0xheWVycyhJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmll
d3BvcnRTaXplKEludFNpemUoNTAsIDUwKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSg1MCwgNTApKTsKICAgICBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogCiAgICAgQ0NMYXllckltcGwqIHNjcm9sbExheWVy
ID0gbV9ob3N0SW1wbC0+cm9vdFNjcm9sbExheWVyKCk7CkBAIC01NjQsNyArNTY0LDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBpbmhpYml0U2Nyb2xsQW5kUGFnZVNjYWxlVXBk
YXRlc1doaWxlUGluY2hab29taW4KIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaW5o
aWJpdFNjcm9sbEFuZFBhZ2VTY2FsZVVwZGF0ZXNXaGlsZUFuaW1hdGluZ1BhZ2VTY2FsZSkKIHsK
ICAgICBzZXR1cFNjcm9sbEFuZENvbnRlbnRzTGF5ZXJzKEludFNpemUoMTAwLCAxMDApKTsKLSAg
ICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MCwgNTApKTsKKyAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDUwLCA1MCkp
OwogICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJhd0ZyYW1lKCk7CiAKICAgICBDQ0xh
eWVySW1wbCogc2Nyb2xsTGF5ZXIgPSBtX2hvc3RJbXBsLT5yb290U2Nyb2xsTGF5ZXIoKTsKQEAg
LTY5Niw3ICs2OTYsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGRpZERyYXdO
b3RDYWxsZWRPbkhpZGRlbkxheWVyKQogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB3
aWxsRHJhd05vdENhbGxlZE9uT2NjbHVkZWRMYXllcikKIHsKICAgICBJbnRTaXplIGJpZ1NpemUo
MTAwMCwgMTAwMCk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKGJpZ1NpemUpOwor
ICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShiaWdTaXplLCBiaWdTaXplKTsKIAogICAg
IG1faG9zdEltcGwtPnNldFJvb3RMYXllcihEaWREcmF3Q2hlY2tMYXllcjo6Y3JlYXRlKDEpKTsK
ICAgICBEaWREcmF3Q2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PERpZERyYXdDaGVja0xh
eWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOwpAQCAtODU4LDcgKzg1OCw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsTm9uQ29tcG9zaXRlZFJvb3QpCiAgICAg
c2Nyb2xsTGF5ZXItPmFkZENoaWxkKGNvbnRlbnRMYXllci5yZWxlYXNlKCkpOwogCiAgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKHNjcm9sbExheWVyLnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoc3VyZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKICAgICBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogCiAgICAgRVhQRUNUX0VRKG1faG9zdEltcGwtPnNj
cm9sbEJlZ2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6V2hlZWwpLCBD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CkBAIC04NzYsNyArODc2LDcgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxDaGlsZENhbGxzQ29tbWl0QW5k
UmVkcmF3KQogICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMoc3VyZmFjZVNpemUpOwogICAgIHJv
b3QtPmFkZENoaWxkKGNyZWF0ZVNjcm9sbGFibGVMYXllcigyLCBGbG9hdFBvaW50KDAsIDApLCBz
dXJmYWNlU2l6ZSkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2Uo
KSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBt
X2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKICAg
ICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogCiAgICAgRVhQRUNUX0VR
KG1faG9zdEltcGwtPnNjcm9sbEJlZ2luKEludFBvaW50KDUsIDUpLCBDQ0lucHV0SGFuZGxlckNs
aWVudDo6V2hlZWwpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCk7CkBAIC04
OTIsNyArODkyLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxNaXNz
ZXNDaGlsZCkKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3Jl
YXRlKDEpOwogICAgIHJvb3QtPmFkZENoaWxkKGNyZWF0ZVNjcm9sbGFibGVMYXllcigyLCBGbG9h
dFBvaW50KDAsIDApLCBzdXJmYWNlU2l6ZSkpOwogICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXll
cihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZh
Y2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUsIHN1
cmZhY2VTaXplKTsKICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwog
CiAgICAgLy8gU2Nyb2xsIGV2ZW50IGlzIGlnbm9yZWQgYmVjYXVzZSB0aGUgaW5wdXQgY29vcmRp
bmF0ZSBpcyBvdXRzaWRlIHRoZSBsYXllciBib3VuZGFyaWVzLgpAQCAtOTA2LDcgKzkwNiw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsTWlzc2VzQmFja2ZhY2luZ0No
aWxkKQogICAgIEludFNpemUgc3VyZmFjZVNpemUoMTAsIDEwKTsKICAgICBPd25QdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOwogICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gY2hpbGQgPSBjcmVhdGVTY3JvbGxhYmxlTGF5ZXIoMiwgRmxvYXRQb2ludCgwLCAwKSwg
c3VyZmFjZVNpemUpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNlU2l6
ZSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplLCBzdXJmYWNl
U2l6ZSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CiAgICAgbWF0cml4
LnJvdGF0ZTNkKDE4MCwgMCwgMCk7CkBAIC05MzUsNyArOTM1LDcgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBzY3JvbGxCbG9ja2VkQnlDb250ZW50TGF5ZXIpCiAgICAgc2Nyb2xs
TGF5ZXItPmFkZENoaWxkKGNvbnRlbnRMYXllci5yZWxlYXNlKCkpOwogCiAgICAgbV9ob3N0SW1w
bC0+c2V0Um9vdExheWVyKHNjcm9sbExheWVyLnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoc3VyZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKICAgICBpbml0aWFsaXplTGF5ZXJSZW5k
ZXJlckFuZERyYXdGcmFtZSgpOwogCiAgICAgLy8gU2Nyb2xsaW5nIGZhaWxzIGJlY2F1c2UgdGhl
IGNvbnRlbnQgbGF5ZXIgaXMgYXNraW5nIHRvIGJlIHNjcm9sbGVkIG9uIHRoZSBtYWluIHRocmVh
ZC4KQEAgLTk0OCw3ICs5NDgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNj
cm9sbFJvb3RBbmRDaGFuZ2VQYWdlU2NhbGVPbk1haW5UaHJlYWQpCiAgICAgZmxvYXQgcGFnZVNj
YWxlID0gMjsKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVTY3JvbGxhYmxl
TGF5ZXIoMSwgRmxvYXRQb2ludCgwLCAwKSwgc3VyZmFjZVNpemUpOwogICAgIG1faG9zdEltcGwt
PnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0SW1wbC0+c2V0Vmlld3Bv
cnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoc3Vy
ZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERy
YXdGcmFtZSgpOwogCiAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSgwLCAxMCk7CkBAIC05NzksNyAr
OTc5LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxSb290QW5kQ2hh
bmdlUGFnZVNjYWxlT25JbXBsVGhyZWFkKQogICAgIGZsb2F0IHBhZ2VTY2FsZSA9IDI7CiAgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlU2Nyb2xsYWJsZUxheWVyKDEsIEZsb2F0
UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKTsKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIo
cm9vdC5yZWxlYXNlKCkpOwotICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJmYWNl
U2l6ZSk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplLCBzdXJm
YWNlU2l6ZSk7CiAgICAgbV9ob3N0SW1wbC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKDEs
IDEsIHBhZ2VTY2FsZSk7CiAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJBbmREcmF3RnJhbWUo
KTsKIApAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBzY3JvbGxDaGlsZEFuZENoYW5nZVBhZ2VTY2FsZU9uTWFpblRocmVhZCkKICAgICBpbnQgc2Ny
b2xsTGF5ZXJJZCA9IDI7CiAgICAgcm9vdC0+YWRkQ2hpbGQoY3JlYXRlU2Nyb2xsYWJsZUxheWVy
KHNjcm9sbExheWVySWQsIEZsb2F0UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKSk7CiAgICAgbV9o
b3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoc3VyZmFjZVNpemUpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0
U2l6ZShzdXJmYWNlU2l6ZSwgc3VyZmFjZVNpemUpOwogICAgIGluaXRpYWxpemVMYXllclJlbmRl
cmVyQW5kRHJhd0ZyYW1lKCk7CiAKICAgICBDQ0xheWVySW1wbCogY2hpbGQgPSBtX2hvc3RJbXBs
LT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKQEAgLTExMDEsNyArMTEwMSw3IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRCZXlvbmRMaW1pdCkK
IAogICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CiAgICAgbV9ob3N0SW1wbC0+
c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKLSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoc3VyZmFjZVNpemUpOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShzdXJm
YWNlU2l6ZSwgc3VyZmFjZVNpemUpOwogICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyQW5kRHJh
d0ZyYW1lKCk7CiAgICAgewogICAgICAgICBJbnRTaXplIHNjcm9sbERlbHRhKC0zLCAtNyk7CkBA
IC0xMTMzLDcgKzExMzMsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9s
bEV2ZW50QnViYmxpbmcpCiAgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQucmVsZWFzZSgpKTsKIAog
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7Ci0gICAgbV9ob3N0
SW1wbC0+c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRW
aWV3cG9ydFNpemUoc3VyZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKICAgICBpbml0aWFsaXplTGF5
ZXJSZW5kZXJlckFuZERyYXdGcmFtZSgpOwogICAgIHsKICAgICAgICAgSW50U2l6ZSBzY3JvbGxE
ZWx0YSgwLCA0KTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgc2Nyb2xsQmVmb3JlUmVkcmF3KQogewogICAgIEludFNpemUgc3VyZmFjZVNpemUo
MTAsIDEwKTsKICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoY3JlYXRlU2Nyb2xsYWJsZUxh
eWVyKDEsIEZsb2F0UG9pbnQoMCwgMCksIHN1cmZhY2VTaXplKSk7Ci0gICAgbV9ob3N0SW1wbC0+
c2V0Vmlld3BvcnRTaXplKHN1cmZhY2VTaXplKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9y
dFNpemUoc3VyZmFjZVNpemUsIHN1cmZhY2VTaXplKTsKIAogICAgIC8vIERyYXcgb25lIGZyYW1l
IGFuZCB0aGVuIGltbWVkaWF0ZWx5IHJlYnVpbGQgdGhlIGxheWVyIHRyZWUgdG8gbWltaWMgYSB0
cmVlIHN5bmNocm9uaXphdGlvbi4KICAgICBpbml0aWFsaXplTGF5ZXJSZW5kZXJlckFuZERyYXdG
cmFtZSgpOwpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB2aWV3cG9ydENvdmVyZWQpCiAgICAgbV9ob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9y
KFNLX0NvbG9yR1JBWSk7CiAKICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgxMDAwLCAxMDAwKTsK
LSAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKyAgICBtX2hv
c3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplLCB2aWV3cG9ydFNpemUpOwogCiAg
ICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKEJsZW5kU3RhdGVDaGVja0xheWVyOjpjcmVhdGUo
MSwgbV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpKSk7CiAgICAgQmxlbmRTdGF0ZUNoZWNr
TGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1faG9zdElt
cGwtPnJvb3RMYXllcigpKTsKQEAgLTE2MjgsNyArMTYyOCw3IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAgQ0NTZXR0
aW5nczo6c2V0UGFydGlhbFN3YXBFbmFibGVkKHRydWUpOwogICAgIE93blB0cjxDQ0xheWVyVHJl
ZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0
ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXll
clJlbmRlcmVyKGNjQ29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwotICAg
IGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCkpOwor
ICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSg1MDAsIDUwMCks
IEludFNpemUoNTAwLCA1MDApKTsKIAogICAgIENDTGF5ZXJJbXBsKiByb290ID0gbmV3IEZha2VE
cmF3YWJsZUNDTGF5ZXJJbXBsKDEpOwogICAgIENDTGF5ZXJJbXBsKiBjaGlsZCA9IG5ldyBGYWtl
RHJhd2FibGVDQ0xheWVySW1wbCgyKTsKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgcGFydGlhbCBzd2FwIGlzIGNvbnN0cmFpbmVkIHRvIHRoZSB2aWV3
cG9ydCBkaW1lbnNpb25zCiAgICAgLy8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwogICAgIC8vIGV4cGVjdGVkIHN3YXAg
cmVjdDogZmxpcHBlZCBkYW1hZ2UgcmVjdCwgYnV0IGFsc28gY2xhbXBlZCB0byB2aWV3cG9ydAot
ICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApKTsK
KyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSwg
SW50U2l6ZSgxMCwgMTApKTsKICAgICByb290LT5zZXRPcGFjaXR5KDAuN2YpOyAvLyB0aGlzIHdp
bGwgZGFtYWdlIGV2ZXJ5dGhpbmcKICAgICBFWFBFQ1RfVFJVRShsYXllclRyZWVIb3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKQEAgLTE5MTIsNyArMTkxMiw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDTGF5ZXJU
cmVlSG9zdEltcGw+IHNldHVwTGF5ZXJzRm9yT3BhY2l0eShib29sIHBhcnRpYWxTd2FwLCBDCiAg
ICAgQ0NMYXllclRyZWVTZXR0aW5ncyBzZXR0aW5nczsKICAgICBPd25QdHI8Q0NMYXllclRyZWVI
b3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5n
cywgY2xpZW50KTsKICAgICBteUhvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250
ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7Ci0gICAgbXlIb3N0SW1wbC0+c2V0
Vmlld3BvcnRTaXplKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3
cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKTsKIAogICAgIC8q
CiAgICAgICBMYXllcnMgYXJlIGNyZWF0ZWQgYXMgZm9sbG93czoKQEAgLTIwMjEsNyArMjAyMSw3
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZGlkRHJhd05vdENhbGxlZE9uU2Np
c3NvcmVkTGF5ZXIpCiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gQ0NH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRyKG5ldyBQYXJ0aWFsU3dhcENvbnRleHQp
KTsKICAgICBPd25QdHI8Q0NMYXllclRyZWVIb3N0SW1wbD4gbXlIb3N0SW1wbCA9IENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CiAgICAgbXlIb3N0SW1wbC0+aW5p
dGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2Fk
ZXIpOwotICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOwor
ICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCksIEludFNpemUo
MTAsIDEwKSk7CiAKICAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIoRGlkRHJhd0NoZWNrTGF5
ZXI6OmNyZWF0ZSgxKSk7CiAgICAgRGlkRHJhd0NoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2Fz
dDxEaWREcmF3Q2hlY2tMYXllcio+KG15SG9zdEltcGwtPnJvb3RMYXllcigpKTsKQEAgLTI1MTYs
NyArMjUxNiw3IEBAIHN0YXRpYyB2b2lkIHNldHVwTGF5ZXJzRm9yVGV4dHVyZUNhY2hpbmcoQ0NM
YXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsCiAgICAgT3duUHRyPENDR3JhcGhp
Y3NDb250ZXh0PiBjb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKGFkb3B0UHRy
KG5ldyBQYXJ0aWFsU3dhcENvbnRleHQpKTsKIAogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5pbml0
aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRl
cik7Ci0gICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShyb290U2l6ZSk7Cisg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShyb290U2l6ZSwgcm9vdFNpemUp
OwogCiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgx
KTsKICAgICByb290UHRyID0gcm9vdC5nZXQoKTsKQEAgLTI1NjEsNyArMjU2MSw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoQ2xpcHBpbmcpCiAg
ICAgSW50U2l6ZSByb290U2l6ZSgxMDAsIDEwMCk7CiAKICAgICBteUhvc3RJbXBsLT5pbml0aWFs
aXplTGF5ZXJSZW5kZXJlcihjb250ZXh0LnJlbGVhc2UoKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7
Ci0gICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgo
KSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKKyAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSksIEludFNpemUocm9v
dFNpemUud2lkdGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpKTsKIAogICAgIE93blB0cjxDQ0xheWVy
SW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CiAgICAgcm9vdFB0ciA9IHJvb3Qu
Z2V0KCk7CkBAIC0yNjY4LDcgKzI2NjgsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHRleHR1cmVDYWNoaW5nV2l0aE9jY2x1c2lvbikKICAgICBJbnRTaXplIHJvb3RTaXplKDEw
MDAsIDEwMDApOwogCiAgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29u
dGV4dC5yZWxlYXNlKCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwotICAgIG15SG9zdEltcGwtPnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSk7CisgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lk
dGgoKSwgcm9vdFNpemUuaGVpZ2h0KCkpLCBJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RT
aXplLmhlaWdodCgpKSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVy
SW1wbDo6Y3JlYXRlKDEpOwogICAgIHJvb3RQdHIgPSByb290LmdldCgpOwpAQCAtMjc4MCw3ICsy
NzgwLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dp
dGhPY2NsdXNpb25FYXJseU91dCkKICAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOwog
CiAgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNl
KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwotICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisgICAgbXlI
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNp
emUuaGVpZ2h0KCkpLCBJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDEpOwogICAgIHJvb3RQdHIgPSByb290LmdldCgpOwpAQCAtMjg5Myw3ICsyODkzLDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhPY2NsdXNpb25F
eHRlcm5hbE92ZXJJbnRlcm5hbCkKICAgICBJbnRTaXplIHJvb3RTaXplKDEwMDAsIDEwMDApOwog
CiAgICAgbXlIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29udGV4dC5yZWxlYXNl
KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOwotICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgpKSk7CisgICAgbXlI
b3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUocm9vdFNpemUud2lkdGgoKSwgcm9vdFNp
emUuaGVpZ2h0KCkpLCBJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRl
KDEpOwogICAgIHJvb3RQdHIgPSByb290LmdldCgpOwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhPY2NsdXNpb25F
eHRlcm5hbE5vdEFsaWduZWQpCiAgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKIAog
ICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgp
LCBVbnRocm90dGxlZFVwbG9hZGVyKTsKLSAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUo
SW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworICAgIG15SG9z
dEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXpl
LmhlaWdodCgpKSwgSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkp
OwogCiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgx
KTsKICAgICByb290UHRyID0gcm9vdC5nZXQoKTsKQEAgLTMwNjAsNyArMzA2MCw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoT2NjbHVzaW9uUGFy
dGlhbFN3YXApCiAgICAgSW50U2l6ZSByb290U2l6ZSgxMDAwLCAxMDAwKTsKIAogICAgIG15SG9z
dEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQucmVsZWFzZSgpLCBVbnRocm90
dGxlZFVwbG9hZGVyKTsKLSAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZShy
b290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOworICAgIG15SG9zdEltcGwtPnNl
dFZpZXdwb3J0U2l6ZShJbnRTaXplKHJvb3RTaXplLndpZHRoKCksIHJvb3RTaXplLmhlaWdodCgp
KSwgSW50U2l6ZShyb290U2l6ZS53aWR0aCgpLCByb290U2l6ZS5oZWlnaHQoKSkpOwogCiAgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKICAgICBy
b290UHRyID0gcm9vdC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGVhNzY3OGIwMmFiZTNjZjFkMWYzMTBk
NjNhNzI2ZTEzMGQzYjNkNWQuLmU1YmE2MWE2NzQ1ZGM0Y2I3NDQzOGM3NWZkNmVkNzBiMjI2OGFk
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9udW1D
b21taXRzKys7CiAgICAgICAgIGlmIChtX251bUNvbW1pdHMgPT0gMSkgewogICAgICAgICAgICAg
Ly8gTWFrZSB0aGUgdmlld3BvcnQgZW1wdHkgc28gdGhlIGhvc3Qgc2F5cyBpdCBjYW4ndCBkcmF3
LgotICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgw
LCAwKSk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDAsIDApLCBJbnRTaXplKDAsIDApKTsKIAogICAgICAgICAgICAgT3duQXJyYXlQdHI8Y2hh
cj4gcGl4ZWxzKGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbNF0pKTsKICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y29tcG9zaXRlQW5kUmVhZGJhY2soc3RhdGljX2Nhc3Q8dm9pZCo+KHBpeGVs
cy5nZXQoKSksIEludFJlY3QoMCwgMCwgMSwgMSkpOwpAQCAtNzQ3LDcgKzc0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+cm9vdExheWVyKCktPnNldERyYXdPcGFjaXR5KDEpOwotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCksIEludFNpemUoMTAs
IDEwKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPnNldE9wYWNpdHko
MCk7CiAgICAgICAgIHBvc3RBZGRBbmltYXRpb25Ub01haW5UaHJlYWQoKTsKICAgICB9CkBAIC0x
MDA2LDcgKzEwMDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkK
ICAgICB7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUo
MjAsIDIwKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMjAsIDIwKSwgSW50U2l6ZSgyMCwgMjApKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyg1LCA1LCA1KTsKIApAQCAtMTAxNSw3ICsxMDE1
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVh
ZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQogICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKElu
dFNpemUoMjAsIDIwKSwgaW1wbC0+dmlld3BvcnRTaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEo
SW50U2l6ZSgyMCwgMjApLCBpbXBsLT5sYXlvdXRWaWV3cG9ydFNpemUoKSk7CiAgICAgICAgIEVY
UEVDVF9FUShDb2xvcjo6Z3JheSwgaW1wbC0+YmFja2dyb3VuZENvbG9yKCkpOwogICAgICAgICBF
WFBFQ1RfRVEoNSwgaW1wbC0+cGFnZVNjYWxlKCkpOwogCkBAIC0xMTkxLDcgKzExOTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCiAgICAgewogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOwotICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkpOworICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCksIEludFNp
emUoMTAsIDEwKSk7CiAKICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7
CiAgICAgfQpAQCAtMTIzOSwxMCArMTIzOSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblRlc3QoKQogICAgIHsKLSAgICAgICAgLy8gVGhlIGRldmljZSB2aWV3cG9ydCBzaG91
bGQgYmUgc2NhbGVkIGJ5IHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yLgotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDQwLCA0MCkpOworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDQwLCA0MCksIEludFNpemUoNjAs
IDYwKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0RGV2aWNlU2NhbGVGYWN0b3IoMS41
KTsKLSAgICAgICAgRVhQRUNUX0VRKEludFNpemUoNDAsIDQwKSwgbV9sYXllclRyZWVIb3N0LT52
aWV3cG9ydFNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDQwLCA0MCksIG1fbGF5
ZXJUcmVlSG9zdC0+bGF5b3V0Vmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoSW50
U2l6ZSg2MCwgNjApLCBtX2xheWVyVHJlZUhvc3QtPmRldmljZVZpZXdwb3J0U2l6ZSgpKTsKIAog
ICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9jaGlsZExheWVyKTsKQEAgLTEyNzMsNyAr
MTI3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX0VRKDF1LCBpbXBsLT5yb290TGF5ZXIo
KS0+Y2hpbGRyZW4oKS5zaXplKCkpOwogCiAgICAgICAgIC8vIERldmljZSB2aWV3cG9ydCBpcyBz
Y2FsZWQuCi0gICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDQwLCA0MCksIGltcGwtPnZpZXdwb3J0
U2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKEludFNpemUoNDAsIDQwKSwgaW1wbC0+bGF5b3V0
Vmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoSW50U2l6ZSg2MCwgNjApLCBpbXBs
LT5kZXZpY2VWaWV3cG9ydFNpemUoKSk7CiAKICAgICAgICAgQ0NMYXllckltcGwqIHJvb3QgPSBp
bXBsLT5yb290TGF5ZXIoKTsKQEAgLTEzNDcsNyArMTM0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5UZXN0KCkKICAgICB7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKG1fbGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDEwLCAxMCksIEludFNpemUoMTAsIDEwKSk7CiAKICAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgICAgIHBvc3RTZXROZWVkc1JlZHJh
d1RvTWFpblRocmVhZCgpOwpAQCAtMTQ0Nyw3ICsxNDQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIobV9wYXJlbnQpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEwLCAyMCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDEwLCAyMCksIEludFNpemUoMTAsIDIwKSk7CiAKICAgICAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobV9wYXJlbnQuZ2V0KCksIDAsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwLCAyMCksIHRydWUpOwpA
QCAtMTU0MywxMCArMTU0MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSAzOgogICAgICAgICAgICAgbV9jaGlsZC0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAg
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwLCAxMCkp
OworICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgx
MCwgMTApLCBJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgNDoKLSAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMTAsIDIwKSk7CisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDEwLCAyMCksIEludFNpemUoMTAsIDIwKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTYyNyw3ICsxNjI2LDcgQEAgcHVibGljOgogICAgICAgICBzZXRUZXN0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhncmFuZENoaWxkLmdldCgpLCBjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCks
IHRydWUpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXll
cik7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+
Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290
TGF5ZXItPmJvdW5kcygpLCByb290TGF5ZXItPmJvdW5kcygpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUobV9sYXllclRyZWVIb3N0LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcklmTmVlZGVkKCkpOwog
ICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOwpAQCAtMTY0Niw3ICsxNjQ1LDcgQEAgcHVibGljOgogICAgICAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0KCksIGNoaWxkLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9v
dExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExh
eWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwogCkBAIC0xNjY0LDcgKzE2NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldFRlc3RMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0KCksIGNoaWxkLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUw
MCwgNTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIo
cm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9v
dExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0
ZSgpOwogCkBAIC0xNjg0LDcgKzE2ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldFRlc3RMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0KCksIGNoaWxkLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogCkBAIC0xNzA2LDcgKzE3MDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNoaWxkLT5z
ZXRNYXNrTGF5ZXIobWFzay5nZXQoKSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9y
dFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOwogCkBAIC0xNzI4LDcgKzE3MjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNo
aWxkLT5zZXRNYXNrTGF5ZXIobWFzay5nZXQoKSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRW
aWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRz
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xNzUxLDcgKzE3NTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNoaWxkLT5zZXRPcGFjaXR5KDAuNSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCkBAIC0xNzc0LDcgKzE3NzMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGNoaWxkLT5zZXRPcGFjaXR5KDAuNSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9y
dFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCksIHJvb3RMYXllci0+Ym91bmRzKCkpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOwogCkBAIC0xODM1LDcgKzE4MzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
IAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwotICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygp
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5i
b3VuZHMoKSwgcm9vdExheWVyLT5ib3VuZHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKG1fbGF5
ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpKTsKICAgICAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKQEAg
LTE4NjQsNyArMTg2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpLCByb290TGF5ZXIt
PmJvdW5kcygpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRl
ciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTkyNCw3ICsxOTIzLDcgQEAgcHVibGlj
OgogICAgICAgICB9CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobGF5
ZXJzWzBdLmdldCgpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
bGF5ZXJzWzBdLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnRTaXplKGxheWVyc1swXS0+Ym91bmRzKCksIGxheWVyc1swXS0+Ym91bmRzKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVMYXllclJlbmRlcmVySWZO
ZWVkZWQoKSk7CiAgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7CkBAIC0yMTczLDcgKzIxNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5UZXN0KCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEwKSwgSW50U2l6ZSgxMCwgMTAp
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKS0+c2V0Qm91bmRzKEludFNp
emUoMTAsIDEwKSk7CiAgICAgICAgIAogICAgICAgICBtX3Jvb3RTY3JvbGxMYXllciA9IENvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGUoJm1fbW9ja0RlbGVnYXRlKTsKQEAgLTIyODMsNyArMjI4
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQogICAgIHsKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwg
MTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwogCiAgICAgICAgIG1fcm9vdExheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICBtX3N1cmZhY2VMYXllcjEtPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMTAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaHJlYWRlZFRlc3QuY3BwCmluZGV4IDJlMmMxYTA2ZjRiMGZmNWMwY2VmMWQzZDUyNzllZDgy
NmU5YzllOGQuLjVhOTU4Zjk3NGUxMGVlNTJkYzFmNzVjNzZkNGNmM2RlMzNmOGZkNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCkBAIC0x
NjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgICAgICBsYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKIAogICAgICAgICAvLyBMYXllclRyZWVIb3N0SW1wbCB3b24ndCBkcmF3
IGlmIGl0IGhhcyAxeDEgdmlld3BvcnQuCi0gICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShJbnRTaXplKDEsIDEpKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnRTaXplKEludFNpemUoMSwgMSksIEludFNpemUoMSwgMSkpOwogCiAgICAgICAgIGxheWVyVHJl
ZUhvc3QtPnJvb3RMYXllcigpLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKHRlc3RIb29rcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXll
ckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNz
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDkxYWViN2NhNWRiMzYxZDkwZDc3ZTE3NmY0NzUx
YjliZmE3ZWQ3NjMuLjQ1YThkMzYzZDljNzU0YjlmMmQ2NjQyYjU3YzNlNWQ2ZDgwYjA1N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9t
aXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xh
eWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgc3VjY2VzcyA9IGxheWVyVHJlZUhvc3QtPmluaXRpYWxpemUoKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoc3VjY2Vzcyk7CiAgICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihMYXll
ckNocm9taXVtOjpjcmVhdGUoKSk7Ci0gICAgICAgIGxheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDEsIDEpKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKEludFNpemUoMSwgMSksIEludFNpemUoMSwgMSkpOwogICAgICAgICByZXR1cm4gbGF5ZXJU
cmVlSG9zdC5yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBlMzlmZTdlNTY5
YzdlZDJhZGRkNWFjYzEyYTQzOGEyMTE4MDUzOTMwLi44ZDZiNzg5NDhhYzQ5MDMwYWQxMzQ3ZTUx
ZTljZGYxZTY3YzJiZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTg1Miw3ICs4NTIsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIGNoaWxk
TGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50UmVjdCk7CiAKICAgICBjY0xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKKyAgICBjY0xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMzAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwog
CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBtZW1vcnlMaW1p
dCk7CiAKQEAgLTkzMCw3ICs5MzAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50
UmVjdCk7CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihsYXllcik7Ci0gICAg
Y2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOworICAg
IGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApLCBJbnRT
aXplKDMwMCwgMjAwKSk7CiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4KICAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRzV2hlblRhcmdldFN1cmZhY2VD
YW50QmVBbGxvY2EKICAgICBjaGlsZDItPnNldFZpc2libGVDb250ZW50UmVjdChjaGlsZDJSZWN0
KTsKIAogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIGNjTGF5
ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RSZWN0LnNpemUoKSk7CisgICAgY2NMYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdFJlY3Quc2l6ZSgpLCByb290UmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gV2l0aCBhIGh1Z2UgbWVtb3J5IGxpbWl0LCBhbGwgbGF5ZXJzIHNob3Vs
ZCB1cGRhdGUgYW5kIHB1c2ggdGhlaXIgdGV4dHVyZXMuCiAgICAgcm9vdC0+aW52YWxpZGF0ZUNv
bnRlbnRSZWN0KHJvb3RSZWN0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>