<?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>112735</bug_id>
          
          <creation_ts>2013-03-19 12:31:50 -0700</creation_ts>
          <short_desc>[Qt][WK2] Extend QRawWebView classes for use as base API.</short_desc>
          <delta_ts>2014-02-03 03:25:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>109204</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Brüning">michael.bruning</reporter>
          <assigned_to name="Michael Brüning">michael.bruning</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858619</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-03-19 12:31:50 -0700</bug_when>
    <thetext>Subject says most. 

In principal, QRawWebView, QRawWebViewPrivate and QRawWebViewClient need to be extended so they can act as a real base layer for the QQuickWebView and also for C++ clients.

For this, the base is being set for moving the PageViewportControllerClientQt to the QRawWebView, as well as using the QRawWebViewPrivate as a functional page client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858637</commentid>
    <comment_count>1</comment_count>
      <attachid>193899</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-03-19 12:49:39 -0700</bug_when>
    <thetext>Created attachment 193899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858661</commentid>
    <comment_count>2</comment_count>
      <attachid>193899</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-19 13:11:46 -0700</bug_when>
    <thetext>Comment on attachment 193899
Patch

Attachment 193899 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17257048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859172</commentid>
    <comment_count>3</comment_count>
      <attachid>194001</attachid>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-03-20 01:48:50 -0700</bug_when>
    <thetext>Created attachment 194001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859182</commentid>
    <comment_count>4</comment_count>
      <attachid>194001</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-20 02:11:10 -0700</bug_when>
    <thetext>Comment on attachment 194001
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:529
&gt; +    WebCore::CoordinatedGraphicsScene* scene = coordinatedGraphicsScene();

why not just call is scene() you dont have any other, just like WebPageProxy is called page() many places

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:577
&gt; +#endif // ENABLE(GESTURE_EVENTS)

I dint this comment quite useless

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:81
&gt; +    virtual void handleAuthenticationRequiredRequest(const QString&amp;, const QString&amp;, const QString&amp;, QString&amp;, QString&amp;) = 0;

Well I know we like not adding things like const QString&amp; string as it is obvious what string is, but here it is not obvious what those strings mean at all

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:173
&gt; +    void setShowsAsSource(bool showsAsSource);

Shows? why trailing s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859257</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Brüning">michael.bruning</who>
    <bug_when>2013-03-20 04:41:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 194001 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194001&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:529
&gt; &gt; +    WebCore::CoordinatedGraphicsScene* scene = coordinatedGraphicsScene();
&gt; 
&gt; why not just call is scene() you dont have any other, just like WebPageProxy is called page() many places
&gt; 
I thought that the coordinatedGraphicsScene makes it a bit clearer which scene this is referring to and also, this is consistent with efl and nix and I tried to keep those as aligned as possible should we decide to move to a common WebView and / or C-API implementation.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:577
&gt; &gt; +#endif // ENABLE(GESTURE_EVENTS)
&gt; 
&gt; I dint this comment quite useless

I usually add those comments to the closing #endifs as I think it adds clarity should the code inside the #if block become larger. We don&apos;t really have a rule for this in the style guide, but I think it does not add significant noise. If there&apos;s agreement though that it should be removed, I am also fine with that.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:81
&gt; &gt; +    virtual void handleAuthenticationRequiredRequest(const QString&amp;, const QString&amp;, const QString&amp;, QString&amp;, QString&amp;) = 0;
True, I&apos;ll add those.
&gt; 
&gt; Well I know we like not adding things like const QString&amp; string as it is obvious what string is, but here it is not obvious what those strings mean at all
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:173
&gt; &gt; +    void setShowsAsSource(bool showsAsSource);
&gt; 
&gt; Shows? why trailing s?
This is for consistency with efl as well (see comment above regarding coordinateGraphicsScene).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935679</commentid>
    <comment_count>6</comment_count>
      <attachid>194001</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-02 21:26:35 -0700</bug_when>
    <thetext>Comment on attachment 194001
Patch

Qt has been removed, clearing review flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975696</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:25:22 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193899</attachid>
            <date>2013-03-19 12:49:39 -0700</date>
            <delta_ts>2013-03-20 01:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112735-20130319204529.patch</filename>
            <type>text/plain</type>
            <size>55962</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmVlYWM5YjJhMTY1ZDRh
MjJiNWVmZmQ3NjVkMjAxNTViZDY0OTcyYi4uMDZiMDg4MTJmOTQ4OTI2YjcwYjZmZDJiZGYyNWJm
YjA2YmQxMmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMy0wMy0xOSAgTWlj
aGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEV4dGVuZCBRUmF3V2ViVmlldyBjbGFzc2VzIGZvciB1c2UgYXMgYmFzZSBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI3MzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGV4dGVuZHMgdGhlIFFSYXdXZWJWaWV3IGNsYXNzZXMgd2l0aCB0aGUgbmVjZXNzYXJ5CisgICAg
ICAgIG1ldGhvZHMgdG8gYWN0IGFzIGEgYmFzZSBmb3IgdGhlIFF0IFdlYktpdDIgQVBJIGxheWVy
IGFuZCBwcm92aWRlCisgICAgICAgIGEgY2xlYXJlciBzZXBhcmF0aW9uIGJldHdlZSBXZWJLaXQy
IGludGVybmFscyBhbmQgdGhlIEFQSSBsYXllci4KKworICAgICAgICBUaGUgUVJhd1dlYlZpZXdQ
cml2YXRlIGNsYXNzIGlzIGV4dGVuZGVkIHRvIGJlIGEgbW9yZSBmdW5jdGlvbmFsIFBhZ2VDbGll
bnQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdGhhbiBiZWZvcmUuIFRoZSBRUmF3V2ViVmlldyBl
eHBvc2VzIGFsbCB0aGUgbmVjZXNzYXJ5IG1ldGhvZHMKKyAgICAgICAgdG8gaGF2ZSB0aGUgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlciBhbmQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCB1c2Vk
IAorICAgICAgICBmcm9tIHRoZXNlIGNsYXNzZXMgcmF0aGVyIHRoYW4gZGlyZWN0bHkgZnJvbSB0
aGUgZXhwb3NlZCBBUEkgY2xhc3Nlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24pOgor
ICAgICAgICAoZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbnMpOgorICAgICAgICAoZHJvcEFjdGlv
blRvRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3
UHJpdmF0ZTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6aGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgor
ICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVx
dWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6cmVnaXN0ZXJFZGl0
Q29tbWFuZCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmNsZWFyQWxsRWRpdENvbW1h
bmRzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVJhd1dlYlZpZXdQcml2YXRlOjpleGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoUVJhd1dl
YlZpZXdQcml2YXRlOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAg
IChRUmF3V2ViVmlld1ByaXZhdGU6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFFS
YXdXZWJWaWV3UHJpdmF0ZTo6aGFuZGxlV2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAoUVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CisgICAgICAgIChR
UmF3V2ViVmlld1ByaXZhdGU6OmRpZEZpbmRab29tYWJsZUFyZWEpOgorICAgICAgICAoUVJhd1dl
YlZpZXdQcml2YXRlOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjpzdGFydERyYWcpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRl
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmRp
ZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENy
YXNoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjppc1ZpZXdGb2N1c2VkKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmlzVmll
d1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjpRUmF3V2ViVmlld1By
aXZhdGUpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjp+UVJhd1dlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6Z2V0KToKKyAgICAgICAgKFFSYXdXZWJW
aWV3OjpRUmF3V2ViVmlldyk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2V0VXNlVmlld3BvcnRD
b250cm9sbGVyKToKKyAgICAgICAgKFFSYXdXZWJWaWV3Ojp1c2VWaWV3cG9ydENvbnRyb2xsZXIp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAg
ICAgIChRUmF3V2ViVmlldzo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZHJhd0Jh
Y2tncm91bmQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEZvY3VzZWQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OnNldFZpc2libGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEFjdGl2
ZSk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2V0U2l6ZSk6CisgICAgICAgIChRUmF3V2ViVmll
dzo6bWluaW11bVNjYWxlKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpwYWdlUmVmKToKKyAgICAg
ICAgKFFSYXdXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZEtleUV2
ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZW5kTW91c2VFdmVudCk6CisgICAgICAgIChR
UmF3V2ViVmlldzo6c2VuZFdoZWVsRXZlbnQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNlbmRU
b3VjaEV2ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3OjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVT
aW5nbGVUYXBFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFuZGxlRG91YmxlVGFwRXZl
bnQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmRldmljZVdpZHRoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZXREZXZp
Y2VXaWR0aCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZGV2aWNlSGVpZ2h0KToKKyAgICAgICAg
KFFSYXdXZWJWaWV3OjpzZXREZXZpY2VIZWlnaHQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNl
dFByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3Ojpw
cmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6Y29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVEcmFn
RW50ZXJFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFuZGxlRHJhZ0xlYXZlRXZlbnQp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OmhhbmRsZURyYWdNb3ZlRXZlbnQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmhhbmRsZURyb3BFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFu
ZGxlSW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZEZpbmRab29t
YWJsZUFyZWFGb3JQb2ludCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZFBvdGVudGlhbEFj
dGl2YXRpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRUmF3V2ViVmll
dzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEludHJpbnNp
Y0RldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpnZXRQcml2YXRlKToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjpyZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcik6CisgICAgICAg
IChRUmF3V2ViVmlldzo6c2V0UmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIpOgorICAgICAgICAoUVJh
d1dlYlZpZXc6OmVkaXRvclJlY3QpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmN1cnNvclJlY3Qp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNlbGVjdGVkVGV4dCk6CisgICAgICAgIChRUmF3V2Vi
Vmlldzo6c3Vycm91bmRpbmdUZXh0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjppbnB1dE1ldGhv
ZEhpbnRzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpjdXJzb3JQb3NpdGlvbik6CisgICAgICAg
IChRUmF3V2ViVmlldzo6YW5jaG9yUG9zaXRpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6Omlu
bmVyQm91bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6Om91dGVyQm91
bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnN1c3BlbmRDb250ZW50
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpyZXN1bWVDb250ZW50KToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3Ojpib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKToKKyAgICAgICAgKFFSYXdXZWJW
aWV3OjpoYXNTdXNwZW5kZWRDb250ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYWRVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEhhZFVzZXJJbnRlcmFjdGlv
bik6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjphbGxvd3NVc2VyU2NhbGluZyk6CisgICAgICAgIChRUmF3
V2ViVmlldzo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6cmVtb3RlSW5z
cGV0b3JVcmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3Au
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUmF3V2ViVmlld0NsaWVudCk6CisgICAg
ICAgIChRUmF3V2ViVmlld0NsaWVudDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAo
UVJhd1dlYlZpZXdDbGllbnQ6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChRUmF3V2Vi
Vmlld0NsaWVudDo6c2NyZWVuVG9XaW5kb3cpOgorICAgICAgICAoUVJhd1dlYlZpZXdDbGllbnQ6
OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vi
dmlld19wX3AuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3Fy
YXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CisgICAgICAgIChX
ZWJWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAg
IChXZWJWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKToKKyAgICAgICAgKFdlYlZpZXc6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYlZpZXc6OmRp
ZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYlZpZXc6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZVdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdCk6CisgICAg
ICAgIChXZWJWaWV3OjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJW
aWV3OjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViVmlldzo6ZGlkQ2hh
bmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYlZpZXc6OnNldFZpZXdwb3J0UG9zaXRpb24p
OgorICAgICAgICAoV2ViVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlZp
ZXc6OnZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlldzo6dmlld1Np
emUpOgorICAgICAgICAoV2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAo
V2ViVmlldzo6Y29udmVydFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYlZpZXc6OnNjcmVlblRv
V2luZG93KToKKyAgICAgICAgKFdlYlZpZXc6OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKFdl
YlZpZXc6OmhhbmRsZVN0YXJ0RHJhZyk6CisKIDIwMTMtMDMtMTkgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3drMl0gU2hvdWxkIHN1cHBvcnQgbXVs
dGlwbGUgcGFnZSBvdmVybGF5cywgbGlrZSB0aGUgQVBJIHN1Z2dlc3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKaW5kZXggNTAw
ZDhmN2I5MzJhNzhlOTcyZTRmYTk0OWE3NDc4NzNkMWMyN2MzMi4uNDdhYWY1ZDZhMmM4ZGRlMDkx
OTk4YzMwZTZiYWMxYjlmM2MzNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eUltcGwuaCIKKyNpbmNsdWRlICJFZGl0b3JTdGF0
ZS5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTMwLDUyICsz
MSwxMzYgQEAKICNlbmRpZgogI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRl
ICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfU0VSVkVSKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIK
ICNpbmNsdWRlICJxcmF3d2Vidmlld19wX3AuaCIKKyNpbmNsdWRlIDxRTWFwPgorI2luY2x1ZGUg
PFFNaW1lRGF0YT4KKyNpbmNsdWRlIDxRVGV4dENoYXJGb3JtYXQ+CisjaW5jbHVkZSA8V0tQcmVm
ZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdLU3RyaW5nUXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xcmF3
d2Vidmlld19wLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKwordHlwZWRlZiBRTWFwPFdLUGFnZVJlZiwgUVJhd1dlYlZpZXdQcml2YXRlKj4g
UGFnZVRvVmlld01hcDsKK1FfR0xPQkFMX1NUQVRJQyhQYWdlVG9WaWV3TWFwLCBwYWdlVG9WaWV3
KQorCitzdGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rp
b24odW5zaWduZWQgZHJhZ09wZXJhdGlvbikKK3sKKyAgICBRdDo6RHJvcEFjdGlvbiByZXN1bHQg
PSBRdDo6SWdub3JlQWN0aW9uOworICAgIGlmIChkcmFnT3BlcmF0aW9uICYgRHJhZ09wZXJhdGlv
bkNvcHkpCisgICAgICAgIHJlc3VsdCA9IFF0OjpDb3B5QWN0aW9uOworICAgIGVsc2UgaWYgKGRy
YWdPcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gUXQ6Ok1v
dmVBY3Rpb247CisgICAgZWxzZSBpZiAoZHJhZ09wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25HZW5l
cmljKQorICAgICAgICByZXN1bHQgPSBRdDo6TW92ZUFjdGlvbjsKKyAgICBlbHNlIGlmIChkcmFn
T3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9IFF0OjpMaW5r
QWN0aW9uOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgUXQ6OkRyb3BB
Y3Rpb25zIGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb25zKHVuc2lnbmVkIGRyYWdPcGVyYXRpb25z
KQoreworICAgIFF0OjpEcm9wQWN0aW9ucyByZXN1bHQgPSBRdDo6SWdub3JlQWN0aW9uOworICAg
IGlmIChkcmFnT3BlcmF0aW9ucyAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQg
fD0gUXQ6OkNvcHlBY3Rpb247CisgICAgaWYgKGRyYWdPcGVyYXRpb25zICYgRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgICAgIHJlc3VsdCB8PSBRdDo6TW92ZUFjdGlvbjsKKyAgICBpZiAoZHJhZ09w
ZXJhdGlvbnMgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0IHw9IFF0OjpN
b3ZlQWN0aW9uOworICAgIGlmIChkcmFnT3BlcmF0aW9ucyAmIERyYWdPcGVyYXRpb25MaW5rKQor
ICAgICAgICByZXN1bHQgfD0gUXQ6OkxpbmtBY3Rpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kworc3RhdGljIGlubGluZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyb3BBY3Rpb25Ub0RyYWdP
cGVyYXRpb24oUXQ6OkRyb3BBY3Rpb25zIGFjdGlvbnMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0
ID0gMDsKKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpDb3B5QWN0aW9uKQorICAgICAgICByZXN1bHQg
fD0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYgKGFjdGlvbnMgJiBRdDo6TW92ZUFjdGlvbikK
KyAgICAgICAgcmVzdWx0IHw9IChEcmFnT3BlcmF0aW9uTW92ZSB8IERyYWdPcGVyYXRpb25HZW5l
cmljKTsKKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpMaW5rQWN0aW9uKQorICAgICAgICByZXN1bHQg
fD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYgKHJlc3VsdCA9PSAoRHJhZ09wZXJhdGlvbkNv
cHkgfCBEcmFnT3BlcmF0aW9uTW92ZSB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbkxpbmspKQorICAgICAgICByZXN1bHQgPSBEcmFnT3BlcmF0aW9uRXZlcnk7CisgICAgcmV0
dXJuIChEcmFnT3BlcmF0aW9uKXJlc3VsdDsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KFdLU3RyaW5nUmVmIG1lc3Nh
Z2UpCit7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2Jq
ZWN0KFdLU3RyaW5nQ29weVFTdHJpbmcobWVzc2FnZSkpOworfQorCiB2b2lkIFFSYXdXZWJWaWV3
UHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICht
X3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgbV92aWV3cG9ydENvbnRyb2xsZXItPmRpZENo
YW5nZVZpZXdwb3J0QXR0cmlidXRlcyhhdHRyKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZh
dGU6OmhhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2Fk
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jbGllbnQtPmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVB
dXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25z
dCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcm
IHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgUVN0cmluZyBxVXNlcm5hbWU7CisgICAgUVN0cmluZyBxUGFzc3dvcmQ7CisKKyAgICBtX2Ns
aWVudC0+aGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoUVN0cmluZyhob3N0bmFt
ZSksIFFTdHJpbmcocmVhbG0pLCBRU3RyaW5nKHByZWZpbGxlZFVzZXJuYW1lKSwgcVVzZXJuYW1l
LCBxUGFzc3dvcmQpOworCisgICAgdXNlcm5hbWUgPSBxVXNlcm5hbWU7CisgICAgcGFzc3dvcmQg
PSBxUGFzc3dvcmQ7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVDZXJ0aWZp
Y2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdu
b3JlRXJyb3JzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWdub3JlRXJyb3JzID0g
bV9jbGllbnQtPmhhbmRsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChRU3RyaW5nKGhv
c3RuYW1lKSk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVQcm94eUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQxNl90
IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNlcm5hbWUs
IFN0cmluZyYgcGFzc3dvcmQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBRU3RyaW5n
IHFVc2VybmFtZTsKKyAgICBRU3RyaW5nIHFQYXNzd29yZDsKKworICAgIG1fY2xpZW50LT5oYW5k
bGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KFFTdHJpbmcoaG9zdG5hbWUpLCBw
b3J0LCBRU3RyaW5nKHByZWZpbGxlZFVzZXJuYW1lKSwgcVVzZXJuYW1lLCBxUGFzc3dvcmQpOwor
CisgICAgdXNlcm5hbWUgPSBxVXNlcm5hbWU7CisgICAgcGFzc3dvcmQgPSBxUGFzc3dvcmQ7CiB9
CiAKLXZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQ
dHI8V2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViS2l0OjpXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8pCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQ
YXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbyB1bmRvT3JSZWRvKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV91bmRv
Q29udHJvbGxlci5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9PclJlZG8pOwogfQog
Ci1ib29sIFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y2FuVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpjbGVh
ckFsbEVkaXRDb21tYW5kcygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgbV91bmRvQ29udHJvbGxlci5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogfQog
Ci12b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCitib29sIFFSYXdXZWJWaWV3UHJpdmF0ZTo6
Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbV91bmRvQ29udHJvbGxlci5jYW5VbmRvUmVk
byh1bmRvT3JSZWRvKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmV4ZWN1dGVVbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3sKKyAgICBtX3VuZG9D
b250cm9sbGVyLmV4ZWN1dGVVbmRvUmVkbyh1bmRvT3JSZWRvKTsKIH0KIAogV2ViQ29yZTo6Rmxv
YXRSZWN0IFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiByZWN0KQpAQCAtMTE3LDE3ICsyMDIsMTYgQEAgdm9pZCBRUmF3V2Vi
Vmlld1ByaXZhdGU6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IFdlYktp
dDo6TGF5ZXJUcmUKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQotCiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dXBk
YXRlVGV4dElucHV0U3RhdGUoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jbGll
bnQtPnVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRl
OjpoYW5kbGVXaWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX2NsaWVudC0+aGFuZGxlV2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKIH0KIAog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKQEAgLTEzNSw4ICsyMTksOCBAQCB2b2lkIFFSYXdX
ZWJWaWV3UHJpdmF0ZTo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJHZXN0
dXJlRXZlbnQmIGV2ZQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Ci0KICNlbmRpZgorCiB2
b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlzcGxheVZpZXcoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CkBAIC0xNTQsNyArMjM4LDcgQEAgdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmZsYXNo
QmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4KIAogdm9p
ZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJlYSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fY2xpZW50LT5kaWRGaW5kWm9vbWFibGVBcmVhKFFQb2lu
dEYodGFyZ2V0KSwgUVJlY3RGKGFyZWEpKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6
OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sIGhpZGRlblVudGlsTW91c2VNb3Zl
cykKQEAgLTE2OSwxMiArMjUzLDMwIEBAIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjp0b29sVGlw
Q2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXApCiAKIHZvaWQg
UVJhd1dlYlZpZXdQcml2YXRlOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogewotICAg
IG1fd2ViUGFnZVByb3h5LT5jb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7CisgICAgaWYg
KG1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3ZpZXdwb3J0Q29udHJvbGxlci0+cGFn
ZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2UtPmNv
bW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZh
dGU6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFBhc3NSZWZQ
dHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIFFJbWFnZSBkcmFnUUltYWdlOworICAgIGlmIChkcmFnSW1hZ2UpCisgICAg
ICAgIGRyYWdRSW1hZ2UgPSBkcmFnSW1hZ2UtPmNyZWF0ZVFJbWFnZSgpOworICAgIGVsc2UgaWYg
KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpICYmIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLT5oYXNJ
bWFnZSgpKQorICAgICAgICBkcmFnUUltYWdlID0gcXZhcmlhbnRfY2FzdDxRSW1hZ2U+KGRyYWdE
YXRhLnBsYXRmb3JtRGF0YSgpLT5pbWFnZURhdGEoKSk7CisKKyAgICBEcmFnT3BlcmF0aW9uIGRy
YWdPcGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7
CisgICAgUU1pbWVEYXRhKiBtaW1lRGF0YSA9IGNvbnN0X2Nhc3Q8UU1pbWVEYXRhKj4oZHJhZ0Rh
dGEucGxhdGZvcm1EYXRhKCkpOworICAgIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWREcm9wQWN0
aW9ucyA9IGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb25zKGRyYWdPcGVyYXRpb25NYXNrKTsKKwor
ICAgIFFQb2ludCBjbGllbnRQb3NpdGlvbjsKKyAgICBRUG9pbnQgZ2xvYmFsUG9zaXRpb247Cisg
ICAgUXQ6OkRyb3BBY3Rpb24gYWN0dWFsRHJvcEFjdGlvbjsKKworICAgIG1fY2xpZW50LT5oYW5k
bGVTdGFydERyYWcoZHJhZ1FJbWFnZSwgbWltZURhdGEsIHN1cHBvcnRlZERyb3BBY3Rpb25zLCBn
bG9iYWxQb3NpdGlvbiwgY2xpZW50UG9zaXRpb24sIGFjdHVhbERyb3BBY3Rpb24pOworICAgIG1f
cGFnZS0+ZHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJvcEFjdGlv
blRvRHJhZ09wZXJhdGlvbihhY3R1YWxEcm9wQWN0aW9uKSk7CiB9CiAKIFBhc3NSZWZQdHI8V2Vi
S2l0OjpXZWJQb3B1cE1lbnVQcm94eT4gUVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQpAQCAtMTk5LDEyICsz
MDEsMjMgQEAgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5PiBRUmF3V2Vi
Vmlld1ByaXZhdGU6OmNyZWF0ZUNvbG9yQ2hvb3NlclAKIAogdm9pZCBRUmF3V2ViVmlld1ByaXZh
dGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MpCiB7
Ci0gICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0ZWRTY3JvbGwocG9zKTsKKyAgICBpZiAobV92aWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVx
dWVzdFNjcm9sbChwb3MpOworICAgIGVsc2UKKyAgICAgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0
ZWRTY3JvbGwocG9zKTsKK30KIAordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlbmRlckZy
YW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgaWYgKG1fdmlld3BvcnRDb250cm9sbGVyKQor
ICAgICAgICBtX3ZpZXdwb3J0Q29udHJvbGxlci0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXpl
LCBjb3ZlcmVkUmVjdCk7CisgICAgbV9jbGllbnQtPmRpZFJlbmRlckZyYW1lKFFTaXplKGNvbnRl
bnRzU2l6ZSksIFFSZWN0KGNvdmVyZWRSZWN0KSk7CiB9CisKIHZvaWQgUVJhd1dlYlZpZXdQcml2
YXRlOjpwcm9jZXNzRGlkQ3Jhc2goKQogewotICAgIG1fY2xpZW50LT52aWV3UHJvY2Vzc0NyYXNo
ZWQoKTsKKyAgICBRVXJsIHVybChLVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgbV9wYWdl
LT51cmxBdFByb2Nlc3NFeGl0KCkpKTsKKyAgICBtX2NsaWVudC0+dmlld1Byb2Nlc3NDcmFzaGVk
KHVybCk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkaWRSZWxhdW5jaFByb2Nlc3Mo
KQpAQCAtMjE5LDcgKzMzMiwxMCBAQCB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld05l
ZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiB2b2lkIFFSYXdXZWJW
aWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IG5ld1NpemUpCiB7Ci0gICAgbV9jbGllbnQtPnZpZXdDb250ZW50U2l6ZUNoYW5nZWQobmV3U2l6
ZSk7CisgICAgaWYgKG1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBtX3ZpZXdwb3J0Q29u
dHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKG5ld1NpemUpOworICAgIGVsc2UKKyAgICAg
ICAgbV9jbGllbnQtPnZpZXdDb250ZW50U2l6ZUNoYW5nZWQobmV3U2l6ZSk7CiB9CiAKIHZvaWQg
UVJhd1dlYlZpZXdQcml2YXRlOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJz
b3IpCkBAIC0yMzksMjcgKzM1NSw2MCBAQCB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZG9uZVdp
dGhLZXlFdmVudChjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQmCiAgICAgbV9j
bGllbnQtPmRvbmVXaXRoS2V5RXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgd2FzRXZlbnRIYW5k
bGVkKTsKIH0KIAorV2ViQ29yZTo6SW50U2l6ZSBRUmF3V2ViVmlld1ByaXZhdGU6OnZpZXdTaXpl
KCkKK3sKKyAgICBRU2l6ZSBzaXplID0gbV9jbGllbnQtPnZpZXdTaXplKCk7CisgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZSgpOworICAgIHJl
dHVybiBXZWJDb3JlOjpJbnRTaXplKG1fc2l6ZSk7Cit9CisKK2Jvb2wgUVJhd1dlYlZpZXdQcml2
YXRlOjppc1ZpZXdGb2N1c2VkKCkKK3sKKyAgICByZXR1cm4gbV9mb2N1c2VkOworfQorCitib29s
IFFSYXdXZWJWaWV3UHJpdmF0ZTo6aXNWaWV3VmlzaWJsZSgpCit7CisgICAgcmV0dXJuIG1fdmlz
aWJsZTsKK30KKworYm9vbCBRUmF3V2ViVmlld1ByaXZhdGU6OmlzVmlld1dpbmRvd0FjdGl2ZSgp
Cit7CisgICAgcmV0dXJuIG1fYWN0aXZlOworfQorCiBQYXNzT3duUHRyPFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eT4gUVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkK
IHsKLSAgICByZXR1cm4gV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKG1fd2Vi
UGFnZVByb3h5LmdldCgpKTsKKyAgICByZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0
ZShtX3BhZ2UuZ2V0KCkpOwogfQogCi1RUmF3V2ViVmlld1ByaXZhdGU6OlFSYXdXZWJWaWV3UHJp
dmF0ZShXZWJLaXQ6OldlYkNvbnRleHQqIGNvbnRleHQsIFdlYktpdDo6V2ViUGFnZUdyb3VwKiBw
YWdlR3JvdXAsIFFSYXdXZWJWaWV3Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX2ZvY3VzZWQoZmFs
c2UpCitRUmF3V2ViVmlld1ByaXZhdGU6OlFSYXdXZWJWaWV3UHJpdmF0ZShXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBRUmF3V2ViVmlldyogcHVi
bGljVmlldywgUVJhd1dlYlZpZXdDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fYWN0aXZlKGZhbHNl
KQorICAgICwgbV9mb2N1c2VkKGZhbHNlKQorICAgICwgbV9yZW5kZXJUb09mZnNjcmVlbkJ1ZmZl
cihmYWxzZSkKICAgICAsIG1fdmlzaWJsZShmYWxzZSkKLSAgICAsIG1fYWN0aXZlKGZhbHNlKQor
ICAgICwgbV91c2VWaWV3cG9ydENvbnRyb2xsZXIoZmFsc2UpCiAgICAgLCBtX2NsaWVudChjbGll
bnQpCi0gICAgLCBtX3dlYlBhZ2VQcm94eShjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBh
Z2VHcm91cCkpCisgICAgLCBxKHB1YmxpY1ZpZXcpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPnBh
Z2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsK
KyAgICBtX3BhZ2UgPSB0b0ltcGwoY29udGV4dFJlZiktPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9J
bXBsKHBhZ2VHcm91cFJlZikpOworICAgIHBhZ2VUb1ZpZXcoKS0+aW5zZXJ0KHRvQVBJKG1fcGFn
ZS5nZXQoKSksIHRoaXMpOworICAgIG1fcGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogfQogCiBRUmF3V2ViVmlld1ByaXZhdGU6
On5RUmF3V2ViVmlld1ByaXZhdGUoKQogeworICAgIG1fcGFnZS0+Y2xvc2UoKTsKK30KKworUVJh
d1dlYlZpZXdQcml2YXRlKiBRUmF3V2ViVmlld1ByaXZhdGU6OmdldChXS1BhZ2VSZWYgcGFnZSkK
K3sKKyAgICByZXR1cm4gcGFnZVRvVmlldygpLT52YWx1ZShwYWdlKTsKIH0KIAogUVJhd1dlYlZp
ZXc6OlFSYXdXZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXBSZWYsIFFSYXdXZWJWaWV3Q2xpZW50KiBjbGllbnQpCi0gICAgOiBkKG5ldyBRUmF3
V2ViVmlld1ByaXZhdGUoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiksIFdlYktpdDo6dG9JbXBs
KHBhZ2VHcm91cFJlZiksIGNsaWVudCkpCisgICAgOiBkKG5ldyBRUmF3V2ViVmlld1ByaXZhdGUo
Y29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCB0aGlzLCBjbGllbnQpKQogewogfQogCkBAIC0yNjgs
MjkgKzQxNywzNCBAQCBRUmF3V2ViVmlldzo6flFSYXdXZWJWaWV3KCkKICAgICBkZWxldGUgZDsK
IH0KIAotdm9pZCBRUmF3V2ViVmlldzo6Y3JlYXRlKCkKK3ZvaWQgUVJhd1dlYlZpZXc6OnNldFVz
ZVZpZXdwb3J0Q29udHJvbGxlcihib29sIHVzZSkKK3sKKyAgICBkLT5tX3VzZVZpZXdwb3J0Q29u
dHJvbGxlciA9IHVzZTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6dXNlVmlld3BvcnRDb250cm9s
bGVyKCkgY29uc3QKIHsKLSAgICBkLT5tX3dlYlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2Uo
KTsKKyAgICByZXR1cm4gZC0+bV91c2VWaWV3cG9ydENvbnRyb2xsZXI7CiB9CiAKIHZvaWQgUVJh
d1dlYlZpZXc6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHZhbHVlKQogewotICAgIGQt
Pm1fd2ViUGFnZVByb3h5LT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCh2YWx1ZSk7Cisg
ICAgZC0+bV9wYWdlLT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCh2YWx1ZSk7CiB9CiAK
IGJvb2wgUVJhd1dlYlZpZXc6OnRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGQtPm1fd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOwor
ICAgIHJldHVybiBkLT5tX3BhZ2UtPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7CiB9CiAK
IHZvaWQgUVJhd1dlYlZpZXc6OnNldERyYXdCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpCiB7Ci0gICAg
ZC0+bV93ZWJQYWdlUHJveHktPnNldERyYXdzQmFja2dyb3VuZCh2YWx1ZSk7CisgICAgZC0+bV9w
YWdlLT5zZXREcmF3c0JhY2tncm91bmQodmFsdWUpOwogfQogCiBib29sIFFSYXdXZWJWaWV3Ojpk
cmF3QmFja2dyb3VuZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPm1fd2ViUGFnZVByb3h5LT5k
cmF3c0JhY2tncm91bmQoKTsKKyAgICByZXR1cm4gZC0+bV9wYWdlLT5kcmF3c0JhY2tncm91bmQo
KTsKIH0KIAogYm9vbCBRUmF3V2ViVmlldzo6aXNGb2N1c2VkKCkgY29uc3QKQEAgLTMwMSw3ICs0
NTUsNyBAQCBib29sIFFSYXdXZWJWaWV3Ojppc0ZvY3VzZWQoKSBjb25zdAogdm9pZCBRUmF3V2Vi
Vmlldzo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCiB7CiAgICAgZC0+bV9mb2N1c2VkID0gZm9j
dXNlZDsKLSAgICBkLT5tX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKKyAgICBkLT5tX3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOwogfQogCiBib29sIFFSYXdXZWJW
aWV3Ojppc1Zpc2libGUoKSBjb25zdApAQCAtMzEyLDcgKzQ2Niw3IEBAIGJvb2wgUVJhd1dlYlZp
ZXc6OmlzVmlzaWJsZSgpIGNvbnN0CiB2b2lkIFFSYXdXZWJWaWV3OjpzZXRWaXNpYmxlKGJvb2wg
dmlzaWJsZSkKIHsKICAgICBkLT5tX3Zpc2libGUgPSB2aXNpYmxlOwotICAgIGQtPm1fd2ViUGFn
ZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlZpZXdJc1Zp
c2libGUpOworICAgIGQtPm1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAogYm9vbCBRUmF3V2ViVmlldzo6aXNBY3RpdmUo
KSBjb25zdApAQCAtMzIzLDggKzQ3Nyw5IEBAIGJvb2wgUVJhd1dlYlZpZXc6OmlzQWN0aXZlKCkg
Y29uc3QKIHZvaWQgUVJhd1dlYlZpZXc6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKIHsKICAgICBk
LT5tX2FjdGl2ZSA9IGFjdGl2ZTsKLSAgICBkLT5tX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRlRGlk
Q2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwotICAgIGNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpLT5zZXRBY3RpdmUoYWN0aXZlKTsKKyAgICBkLT5tX3Bh
Z2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lz
QWN0aXZlKTsKKyAgICBpZiAoY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkpCisgICAgICAgIGNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpLT5zZXRBY3RpdmUoYWN0aXZlKTsKIH0KIAogUVNpemUg
UVJhd1dlYlZpZXc6OnNpemUoKSBjb25zdApAQCAtMzM0LDMzICs0ODksMjcgQEAgUVNpemUgUVJh
d1dlYlZpZXc6OnNpemUoKSBjb25zdAogCiB2b2lkIFFSYXdXZWJWaWV3OjpzZXRTaXplKGNvbnN0
IFFTaXplJiBzaXplKQogewotICAgIFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBkLT5tX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHkgKmRyYXdpbmdBcmVhID0gZC0+bV9wYWdlLT5kcmF3aW5nQXJlYSgpOworCiAg
ICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGQtPm1fd2Vi
UGFnZVByb3h5LT51c2VGaXhlZExheW91dCgpKQotICAgICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6
ZShzaXplLCBXZWJDb3JlOjpJbnRTaXplKCkpOwotCiAgICAgZC0+bV9zaXplID0gc2l6ZTsKIAog
ICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKGQtPm1fc2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSgpKTsK
ICAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0
KFdlYkNvcmU6OkludFBvaW50KCksIGQtPm1fc2l6ZSksIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7
CiB9CiAKLVdLUGFnZVJlZiBRUmF3V2ViVmlldzo6cGFnZVJlZigpCitmbG9hdCBRUmF3V2ViVmll
dzo6bWluaW11bVNjYWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdG9BUEkoZC0+bV93ZWJQYWdl
UHJveHkuZ2V0KCkpOworICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIGQtPm1fdmlld3BvcnRDb250cm9sbGVyLT5taW5pbXVtU2NhbGUoKTsKKyAgICByZXR1
cm4gMC4yNTsKIH0KIAotV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBRUmF3V2Vi
Vmlldzo6Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkgY29uc3QKK1dLUGFnZVJlZiBRUmF3V2Vi
Vmlldzo6cGFnZVJlZigpCiB7Ci0gICAgV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5n
QXJlYSA9IGQtPm1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOwotICAgIGlmICghZHJhd2lu
Z0FyZWEpCi0gICAgICAgIHJldHVybiAwOwotICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEt
PmNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7Ci0gICAgaWYgKCFjb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBy
ZXR1cm4gdG9BUEkoZC0+bV9wYWdlLmdldCgpKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlldzo6cGFp
bnQoY29uc3QgUU1hdHJpeDR4NCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBw
YWludEZsYWdzKQpAQCAtMzcyLDI4ICs1MjEsNDA3IEBAIHZvaWQgUVJhd1dlYlZpZXc6OnBhaW50
KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFp
CiAgICAgc2NlbmUtPnNldEFjdGl2ZSh0cnVlKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0KDAsIDAsIGQtPm1fc2l6ZS53aWR0aCgpLCBkLT5tX3NpemUuaGVpZ2h0KCkpOwotCiAgICAg
c2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybSwgb3BhY2l0eSwgdHJhbnNm
b3JtLm1hcFJlY3QocmVjdCksIHBhaW50RmxhZ3MpOwogfQogCit2b2lkIFFSYXdXZWJWaWV3Ojpw
YWludChRUGFpbnRlciogcGFpbnRlcikKK3sKKyAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUqIHNjZW5lID0gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CisgICAgaWYgKCFz
Y2VuZSkKKyAgICAgICAgcmV0dXJuOworICAgIHNjZW5lLT5wYWludFRvR3JhcGhpY3NDb250ZXh0
KHBhaW50ZXIpOworfQorCiB2b2lkIFFSYXdXZWJWaWV3OjpzZW5kS2V5RXZlbnQoUUtleUV2ZW50
KiBldmVudCkKIHsKLSAgICBkLT5tX3dlYlBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChX
ZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQpKTsKKyAgICBoYW5kbGVLZXlib2Fy
ZEV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBRUmF3V2ViVmlldzo6c2VuZE1vdXNlRXZlbnQoUU1v
dXNlRXZlbnQqIGV2ZW50LCBpbnQgY2xpY2tDb3VudCkKIHsKLSAgICBkLT5tX3dlYlBhZ2VQcm94
eS0+aGFuZGxlTW91c2VFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIFFU
cmFuc2Zvcm0oKSwgY2xpY2tDb3VudCkpOworICAgIGhhbmRsZU1vdXNlRXZlbnQoZXZlbnQsIFFU
cmFuc2Zvcm0oKSwgY2xpY2tDb3VudCk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXc6OnNlbmRXaGVl
bEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKIHsKLSAgICBkLT5tX3dlYlBhZ2VQcm94eS0+aGFu
ZGxlV2hlZWxFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIFFUcmFuc2Zv
cm0oKSkpOworICAgIGhhbmRsZVdoZWVsRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSk7CiB9CiAK
IHZvaWQgUVJhd1dlYlZpZXc6OnNlbmRUb3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKIHsK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVU
b3VjaEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudChldmVudCwgUVRyYW5zZm9ybSgp
KSk7Ci0jZW5kaWYKKyAgICBoYW5kbGVUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpOwor
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6Omhh
bmRsZUtleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKK3sKKyAgICBkLT5tX3BhZ2UtPmhh
bmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpOworfQorCit2
b2lkIFFSYXdXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCwgY29u
c3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBpbnQgY2xpY2tDb3VudCkKK3sKKyAgICBkLT5tX3Bh
Z2UtPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgdHJhbnNmb3Jt
LCBjbGlja0NvdW50KSk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmhhbmRsZVdoZWVsRXZlbnQo
UVdoZWVsRXZlbnQqIGV2ZW50LCBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7ICAgIAor
ICAgIGQtPm1fcGFnZS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2ZW50
LCB0cmFuc2Zvcm0pKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlU2luZ2xlVGFwRXZl
bnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50LCBjb25zdCBRVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pCit7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIFdlYkdlc3R1
cmVFdmVudCBnZXN0dXJlKFdlYkV2ZW50OjpHZXN0dXJlU2luZ2xlVGFwLCB0cmFuc2Zvcm0ubWFw
KHBvaW50LnBvcygpKS50b1BvaW50KCksIHBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKSwgV2Vi
RXZlbnQ6Ok1vZGlmaWVycygwKSwgMCwgSW50U2l6ZShwb2ludC5yZWN0KCkuc2l6ZSgpLnRvU2l6
ZSgpKSwgRmxvYXRQb2ludCgwLCAwKSk7CisgICAgZC0+bV9wYWdlLT5oYW5kbGVHZXN0dXJlRXZl
bnQoZ2VzdHVyZSk7CisjZW5kaWYgLy8gRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorfQorCit2b2lk
IFFSYXdXZWJWaWV3OjpoYW5kbGVEb3VibGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6VG91
Y2hQb2ludCYgcG9pbnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCisgICAgZC0+bV9wYWdlLT5maW5kWm9vbWFibGVBcmVhRm9yUG9p
bnQodHJhbnNmb3JtLm1hcChwb2ludC5wb3MoKSkudG9Qb2ludCgpLCBXZWJDb3JlOjpJbnRTaXpl
KHBvaW50LnJlY3QoKS5zaXplKCkudG9TaXplKCkpKTsKKyNlbmRpZiAvLyBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmhhbmRsZVRvdWNoRXZlbnQoUVRvdWNo
RXZlbnQqIGV2ZW50LCBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBkLT5tX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2Vi
VG91Y2hFdmVudChldmVudCwgdHJhbnNmb3JtKSk7CisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VW
RU5UUykKK30KKworaW50IFFSYXdXZWJWaWV3OjpkZXZpY2VXaWR0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGQtPm1fcGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPmRldmljZVdpZHRo
KCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNldERldmljZVdpZHRoKGludCB3aWR0aCkKK3sK
KyAgICBkLT5tX3BhZ2UtPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXREZXZpY2VXaWR0
aCh3aWR0aCk7Cit9CisKK2ludCBRUmF3V2ViVmlldzo6ZGV2aWNlSGVpZ2h0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+bV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+ZGV2aWNl
SGVpZ2h0KCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNldERldmljZUhlaWdodChpbnQgaGVp
Z2h0KQoreworICAgIGQtPm1fcGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldERl
dmljZUhlaWdodChoZWlnaHQpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZXRQcmVmZXJyZWRN
aW5pbXVtQ29udGVudHNXaWR0aChpbnQgd2lkdGgpCit7CisgICAgV2ViUHJlZmVyZW5jZXMqIHdl
YlByZWZlcmVuY2VzID0gZC0+bV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKKyAg
ICBpZiAod2lkdGggPT0gd2ViUHJlZmVyZW5jZXMtPmxheW91dEZhbGxiYWNrV2lkdGgoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHdlYlByZWZlcmVuY2VzLT5zZXRMYXlvdXRGYWxsYmFja1dpZHRo
KHdpZHRoKTsKK30KKworaW50IFFSYXdXZWJWaWV3OjpwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNX
aWR0aCgpCit7CisgICAgcmV0dXJuIGQtPm1fcGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2Vz
KCktPmxheW91dEZhbGxiYWNrV2lkdGgoKTsKK30KKworV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lKiBRUmF3V2ViVmlldzo6Y29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkgY29uc3QK
K3sKKyAgICBpZiAoIWQgfHwgIWQtPm1fcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgV2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IGQtPm1fcGFnZS0+ZHJhd2luZ0Fy
ZWEoKTsKKyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eSA9IGRyYXdpbmdBcmVhLT5jb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgpOwor
ICAgIGlmICghY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBjb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS0+Y29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmhhbmRsZURyYWdFbnRlckV2
ZW50KFFEcmFnRW50ZXJFdmVudCogZXZlbnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkK
K3sKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShldmVudC0+bWltZURhdGEoKSwgdHJhbnNmb3JtLm1h
cChldmVudC0+cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlv
bihldmVudC0+cG9zc2libGVBY3Rpb25zKCkpKTsKKyAgICBkLT5tX3BhZ2UtPnJlc2V0RHJhZ09w
ZXJhdGlvbigpOworICAgIGQtPm1fcGFnZS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKTsKKyAgICBl
dmVudC0+YWNjZXB0UHJvcG9zZWRBY3Rpb24oKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFu
ZGxlRHJhZ0xlYXZlRXZlbnQoUURyYWdMZWF2ZUV2ZW50KiAvKiBldmVudCAqLykKK3sKKyAgICAv
LyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKKyAgICBEcmFnRGF0YSBkcmFn
RGF0YSgwLCBXZWJDb3JlOjpJbnRQb2ludCgpLCBRQ3Vyc29yOjpwb3MoKSwgRHJhZ09wZXJhdGlv
bk5vbmUpOworICAgIGQtPm1fcGFnZS0+ZHJhZ0V4aXRlZCgmZHJhZ0RhdGEpOworICAgIGQtPm1f
cGFnZS0+cmVzZXREcmFnT3BlcmF0aW9uKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmhhbmRs
ZURyYWdNb3ZlRXZlbnQoUURyYWdNb3ZlRXZlbnQqIGV2ZW50LCBjb25zdCBRVHJhbnNmb3JtJiB0
cmFuc2Zvcm0pCit7CisgICAgYm9vbCBhY2NlcHRlZCA9IGV2ZW50LT5pc0FjY2VwdGVkKCk7CisK
KyAgICBEcmFnRGF0YSBkcmFnRGF0YShldmVudC0+bWltZURhdGEoKSwgdHJhbnNmb3JtLm1hcChl
dmVudC0+cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihl
dmVudC0+cG9zc2libGVBY3Rpb25zKCkpKTsKKyAgICBkLT5tX3BhZ2UtPmRyYWdVcGRhdGVkKCZk
cmFnRGF0YSk7CisKKyAgICBEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IGQtPm1fcGFnZS0+ZHJhZ1Nl
c3Npb24oKS5vcGVyYXRpb247CisgICAgZXZlbnQtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJhdGlv
blRvRHJvcEFjdGlvbihyZXN1bHQpKTsKKworICAgIGlmIChyZXN1bHQgIT0gRHJhZ09wZXJhdGlv
bk5vbmUpCisgICAgICAgIGV2ZW50LT5hY2NlcHQoKTsKKworICAgIGV2ZW50LT5zZXRBY2NlcHRl
ZChhY2NlcHRlZCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmhhbmRsZURyb3BFdmVudChRRHJv
cEV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIGJvb2wg
YWNjZXB0ZWQgPSBldmVudC0+aXNBY2NlcHRlZCgpOworCisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
ZXZlbnQtPm1pbWVEYXRhKCksIHRyYW5zZm9ybS5tYXAoZXZlbnQtPnBvcygpKSwgUUN1cnNvcjo6
cG9zKCksIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZXZlbnQtPnBvc3NpYmxlQWN0aW9ucygp
KSk7CisKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CisgICAgZC0+
bV9wYWdlLT5wZXJmb3JtRHJhZygmZHJhZ0RhdGEsIFN0cmluZygpLCBoYW5kbGUsIHNhbmRib3hF
eHRlbnNpb25Gb3JVcGxvYWQpOworICAgIERyYWdPcGVyYXRpb24gcmVzdWx0ID0gZC0+bV9wYWdl
LT5kcmFnU2Vzc2lvbigpLm9wZXJhdGlvbjsKKworICAgIGV2ZW50LT5zZXREcm9wQWN0aW9uKGRy
YWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24ocmVzdWx0KSk7CisgICAgZXZlbnQtPmFjY2VwdCgpOwor
ICAgIGV2ZW50LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6
OmhhbmRsZUlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqIGV2KQoreworICAgIFFT
dHJpbmcgY29tbWl0ID0gZXYtPmNvbW1pdFN0cmluZygpOworICAgIFFTdHJpbmcgY29tcG9zaXRp
b24gPSBldi0+cHJlZWRpdFN0cmluZygpOworCisgICAgaW50IHJlcGxhY2VtZW50U3RhcnQgPSBl
di0+cmVwbGFjZW1lbnRTdGFydCgpOworICAgIGludCByZXBsYWNlbWVudExlbmd0aCA9IGV2LT5y
ZXBsYWNlbWVudExlbmd0aCgpOworCisgICAgLy8gTk9URTogV2UgbWlnaHQgd2FudCB0byBoYW5k
bGUgZXZlbnRzIG9mIG9uZSBjaGFyIGFzIHNwZWNpYWwKKyAgICAvLyBhbmQgcmVzZW5kIHRoZW0g
YXMga2V5IGV2ZW50cyB0byBtYWtlIHdlYiBzaXRlIGNvbXBsZXRpb24gd29yay4KKworICAgIGlu
dCBjdXJzb3JQb3NpdGlvbldpdGhpbkNvbXBvc2l0aW9uID0gMDsKKworICAgIFZlY3RvcjxDb21w
b3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ZXYtPmF0dHJpYnV0ZXMoKS5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBRSW5wdXRNZXRo
b2RFdmVudDo6QXR0cmlidXRlJiBhdHRyID0gZXYtPmF0dHJpYnV0ZXMoKS5hdChpKTsKKyAgICAg
ICAgc3dpdGNoIChhdHRyLnR5cGUpIHsKKyAgICAgICAgY2FzZSBRSW5wdXRNZXRob2RFdmVudDo6
VGV4dEZvcm1hdDogeworICAgICAgICAgICAgaWYgKGNvbXBvc2l0aW9uLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgUVRleHRDaGFyRm9ybWF0IHRleHRD
aGFyRm9ybWF0ID0gYXR0ci52YWx1ZS52YWx1ZTxRVGV4dEZvcm1hdD4oKS50b0NoYXJGb3JtYXQo
KTsKKyAgICAgICAgICAgIFFDb2xvciBxY29sb3IgPSB0ZXh0Q2hhckZvcm1hdC51bmRlcmxpbmVD
b2xvcigpOworICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBtYWtlUkdCQShxY29sb3IucmVkKCks
IHFjb2xvci5ncmVlbigpLCBxY29sb3IuYmx1ZSgpLCBxY29sb3IuYWxwaGEoKSk7CisgICAgICAg
ICAgICBpbnQgc3RhcnQgPSBxTWluKGF0dHIuc3RhcnQsIChhdHRyLnN0YXJ0ICsgYXR0ci5sZW5n
dGgpKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBxTWF4KGF0dHIuc3RhcnQsIChhdHRyLnN0YXJ0
ICsgYXR0ci5sZW5ndGgpKTsKKyAgICAgICAgICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0
aW9uVW5kZXJsaW5lKHN0YXJ0LCBlbmQsIGNvbG9yLCBmYWxzZSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3I6
CisgICAgICAgICAgICBpZiAoYXR0ci5sZW5ndGgpCisgICAgICAgICAgICAgICAgY3Vyc29yUG9z
aXRpb25XaXRoaW5Db21wb3NpdGlvbiA9IGF0dHIuc3RhcnQ7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAvLyBTZWxlY3Rpb24gaXMgaGFuZGxlZCBmdXJ0aGVyIGRvd24uCisgICAgICAg
IGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbXBvc2l0aW9u
LmlzRW1wdHkoKSkgeworICAgICAgICBpbnQgc2VsZWN0aW9uU3RhcnQgPSAtMTsKKyAgICAgICAg
aW50IHNlbGVjdGlvbkxlbmd0aCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXYt
PmF0dHJpYnV0ZXMoKS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgUUlucHV0TWV0
aG9kRXZlbnQ6OkF0dHJpYnV0ZSYgYXR0ciA9IGV2LT5hdHRyaWJ1dGVzKCkuYXQoaSk7CisgICAg
ICAgICAgICBpZiAoYXR0ci50eXBlID09IFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IGF0dHIuc3RhcnQ7CisgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uTGVuZ3RoID0gYXR0ci5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICBB
U1NFUlQoc2VsZWN0aW9uU3RhcnQgPj0gMCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVj
dGlvbkxlbmd0aCA+PSAwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGQtPm1fcGFnZS0+Y29uZmlybUNvbXBvc2l0aW9uKGNvbW1p
dCwgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgQVNTRVJUKGN1cnNvclBvc2l0aW9uV2l0aGluQ29tcG9zaXRpb24gPj0gMCk7CisgICAgICAg
IEFTU0VSVChyZXBsYWNlbWVudFN0YXJ0ID49IDApOworCisgICAgICAgIGQtPm1fcGFnZS0+c2V0
Q29tcG9zaXRpb24oY29tcG9zaXRpb24sIHVuZGVybGluZXMsCisgICAgICAgICAgICBjdXJzb3JQ
b3NpdGlvbldpdGhpbkNvbXBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbldpdGhpbkNvbXBvc2l0aW9u
LAorICAgICAgICAgICAgcmVwbGFjZW1lbnRTdGFydCwgcmVwbGFjZW1lbnRMZW5ndGgpOworICAg
IH0KKworICAgIGV2LT5hY2NlcHQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6c2VuZEZpbmRa
b29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBRUG9pbnQmIHBvaW50LCBjb25zdCBRU2l6ZSYgYXJl
YSkKK3sKKyAgICBkLT5tX3BhZ2UtPmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChJbnRQb2ludChw
b2ludCksIEludFNpemUoYXJlYSkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZW5kUG90ZW50
aWFsQWN0aXZhdGlvbihjb25zdCBRUG9pbnQmIHBvaW50LCBjb25zdCBRU2l6ZSYgc2l6ZSkKK3sK
KyAgICBkLT5tX3BhZ2UtPmhhbmRsZVBvdGVudGlhbEFjdGl2YXRpb24oSW50UG9pbnQocG9pbnQp
LCBJbnRTaXplKHNpemUpKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aW5pdGlhbGl6ZShib29s
IHVzZUZpeGVkTGF5b3V0KQoreworICAgIGQtPm1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
KyAgICBkLT5tX3BhZ2UtPnNldFVzZUZpeGVkTGF5b3V0KHVzZUZpeGVkTGF5b3V0KTsKKyAgICAv
KgorICAgICAqIFRPRE86IFRoaXMgc2hvdWxkIGJlIGFjdGl2YXRlZCBieSBsYXRlciBwYXRjaGVz
CisgICAgaWYgKHVzZUZpeGVkTGF5b3V0KSB7CisgICAgICAgIGQtPm1fdmlld3BvcnRDb250cm9s
bGVyQ2xpZW50ID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdChk
LT5tX2NsaWVudCkpOworICAgICAgICBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlciA9IGFkb3B0UHRy
KG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyKGQtPm1fcGFnZS5nZXQoKSwgZC0+bV92aWV3cG9y
dENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKKyAgICB9CisgICAgKi8KK30KKwordm9pZCBRUmF3
V2ViVmlldzo6ZGlkQ2hhbmdlVmlld3BvcnRTaXplKGNvbnN0IFFTaXplRiYgc2l6ZSkKK3sKKyAg
ICBpZiAoZC0+bV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIGQtPm1fdmlld3BvcnRDb250
cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoRmxvYXRTaXplKHNpemUpKTsKKworfQorCitm
bG9hdCBRUmF3V2ViVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAoreworICAgIHJldHVy
biBkLT5tX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Cit9Cit2b2lkIFFSYXdXZWJWaWV3Ojpz
ZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3sK
KyAgICBkLT5tX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxl
RmFjdG9yKTsKK30KKworUVJhd1dlYlZpZXdQcml2YXRlKiBRUmF3V2ViVmlldzo6Z2V0UHJpdmF0
ZShRUmF3V2ViVmlldyogcmF3V2ViVmlldykKK3sKKyAgICByZXR1cm4gcmF3V2ViVmlldy0+ZDsK
K30KKworYm9vbCBRUmF3V2ViVmlldzo6cmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoKSBjb25zdAor
eworICAgIHJldHVybiBkLT5tX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyOworfQordm9pZCBRUmF3
V2ViVmlldzo6c2V0UmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoYm9vbCBlbmFibGUpCit7CisgICAg
aWYgKGVuYWJsZSA9PSBkLT5tX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKQorICAgICAgICByZXR1
cm47CisgICAgZC0+bV9yZW5kZXJUb09mZnNjcmVlbkJ1ZmZlciA9IGVuYWJsZTsKK30KKworUVJl
Y3RGIFFSYXdXZWJWaWV3OjplZGl0b3JSZWN0KCkKK3sKKyAgICByZXR1cm4gUVJlY3RGKGQtPm1f
cGFnZS0+ZWRpdG9yU3RhdGUoKS5lZGl0b3JSZWN0KTsKK30KKworUVJlY3RGIFFSYXdXZWJWaWV3
OjpjdXJzb3JSZWN0KCkKK3sKKyAgICByZXR1cm4gUVJlY3RGKGQtPm1fcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5jdXJzb3JSZWN0KTsKK30KKworUVN0cmluZyBRUmF3V2ViVmlldzo6c2VsZWN0ZWRUZXh0
KCkKK3sKKyAgICByZXR1cm4gUVN0cmluZyhkLT5tX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
ZWRUZXh0KTsKK30KKworUVN0cmluZyBRUmF3V2ViVmlldzo6c3Vycm91bmRpbmdUZXh0KCkKK3sK
KyAgICByZXR1cm4gUVN0cmluZyhkLT5tX3BhZ2UtPmVkaXRvclN0YXRlKCkuc3Vycm91bmRpbmdU
ZXh0KTsKK30KKworUXQ6OklucHV0TWV0aG9kSGludHMgUVJhd1dlYlZpZXc6OmlucHV0TWV0aG9k
SGludHMoKQoreworICAgIHJldHVybiBRdDo6SW5wdXRNZXRob2RIaW50cyhkLT5tX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaW5wdXRNZXRob2RIaW50cyk7Cit9CisKK3Vuc2lnbmVkIFFSYXdXZWJWaWV3
OjpjdXJzb3JQb3NpdGlvbigpCit7CisgICAgcmV0dXJuIGQtPm1fcGFnZS0+ZWRpdG9yU3RhdGUo
KS5jdXJzb3JQb3NpdGlvbjsKK30KKwordW5zaWduZWQgUVJhd1dlYlZpZXc6OmFuY2hvclBvc2l0
aW9uKCkKK3sKKyAgICByZXR1cm4gZC0+bV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmFuY2hvclBvc2l0
aW9uOworfQorCitmbG9hdCBRUmF3V2ViVmlldzo6aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZShm
bG9hdCBzY2FsZSkKK3sKKyAgICBpZiAoZC0+bV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAg
IHJldHVybiBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlci0+aW5uZXJCb3VuZGVkVmlld3BvcnRTY2Fs
ZShzY2FsZSk7CisgICAgcmV0dXJuIHNjYWxlOworfQorCitmbG9hdCBRUmF3V2ViVmlldzo6b3V0
ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCBzY2FsZSkKK3sKKyAgICBpZiAoZC0+bV92aWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlci0+
b3V0ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIHNjYWxlOworfQor
Cit2b2lkIFFSYXdXZWJWaWV3OjpzdXNwZW5kQ29udGVudCgpCit7CisgICAgaWYgKGQtPm1fdmll
d3BvcnRDb250cm9sbGVyKQorICAgICAgICBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlci0+c3VzcGVu
ZENvbnRlbnQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6cmVzdW1lQ29udGVudCgpCit7Cisg
ICAgaWYgKGQtPm1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBkLT5tX3ZpZXdwb3J0Q29u
dHJvbGxlci0+cmVzdW1lQ29udGVudCgpOworfQorCitRUG9pbnRGIFFSYXdXZWJWaWV3Ojpib3Vu
ZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKGNvbnN0IFFQb2ludEYmIHBvc2l0aW9uLCBmbG9hdCBz
Y2FsZSkKK3sKKyAgICBpZiAoZC0+bV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
biBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlci0+Ym91bmRDb250ZW50c1Bvc2l0aW9uQXRTY2FsZShw
b3NpdGlvbiwgc2NhbGUpOworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworYm9vbCBRUmF3V2Vi
Vmlldzo6aGFzU3VzcGVuZGVkQ29udGVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFkLT5tX3ZpZXdw
b3J0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkLT5tX3Zp
ZXdwb3J0Q29udHJvbGxlci0+aGFzU3VzcGVuZGVkQ29udGVudCgpOworfQorCitib29sIFFSYXdX
ZWJWaWV3OjpoYWRVc2VySW50ZXJhY3Rpb24oKSBjb25zdAoreworICAgIGlmICghZC0+bV92aWV3
cG9ydENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+bV92
aWV3cG9ydENvbnRyb2xsZXItPmhhZFVzZXJJbnRlcmFjdGlvbigpOworfQorCit2b2lkIFFSYXdX
ZWJWaWV3OjpzZXRIYWRVc2VySW50ZXJhY3Rpb24oYm9vbCBpbnRlcmFjdGlvbikKK3sKKyAgICBp
ZiAoIWQtPm1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgZC0+bV92
aWV3cG9ydENvbnRyb2xsZXItPnNldEhhZFVzZXJJbnRlcmFjdGlvbihpbnRlcmFjdGlvbik7Cit9
CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBR
UG9pbnRGJiBtYXBwZWRPcmlnaW4sIGZsb2F0IHNjYWxlLCBjb25zdCBRUG9pbnRGJiB0cmFqZWN0
b3J5KQoreworICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgZC0+bV92
aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtYXBwZWRPcmln
aW4sIHNjYWxlLCB0cmFqZWN0b3J5KTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6YWxsb3dzVXNl
clNjYWxpbmcoKSBjb25zdAoreworICAgIGlmICghZC0+bV92aWV3cG9ydENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+bV92aWV3cG9ydENvbnRyb2xsZXIt
PmFsbG93c1VzZXJTY2FsaW5nKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmRpZENvbW1pdExv
YWQoKQoreworICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgZC0+bV92
aWV3cG9ydENvbnRyb2xsZXItPmRpZENvbW1pdExvYWQoKTsKK30KKworUVVybCBRUmF3V2ViVmll
dzo6cmVtb3RlSW5zcGV0b3JVcmwoKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQor
ICAgIHJldHVybiBRVXJsKFdlYkluc3BlY3RvclNlcnZlcjo6c2hhcmVkKCkuaW5zcGVjdG9yVXJs
Rm9yUGFnZUlEKGQtPm1fcGFnZS0+aW5zcGVjdG9yKCktPnJlbW90ZUluc3BlY3Rpb25QYWdlSUQo
KSkpOworI2Vsc2UKKyAgICByZXR1cm4gUVVybCgpOworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfU0VSVkVSKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9yYXcvcXJhd3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXdfcC5oCmluZGV4IDRhZTNlNWU1M2VhYzM2MDE0ZmI4MDU3ZjQ5NTBmYWFm
NWZjMmMyNTIuLjk2NjBkMWMyMDQ5N2M0ZjhlNDY4OTU3NzM4NGZiMzU2OWRlZTBjOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3Au
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19w
LmgKQEAgLTI2LDIzICsyNiwyOSBAQAogI2RlZmluZSBxcmF3d2Vidmlld19wX2gKIAogI2luY2x1
ZGUgInF3ZWJraXRnbG9iYWwuaCIKLQorI2luY2x1ZGUgPFFTaXplPgorI2luY2x1ZGUgPFFUb3Vj
aEV2ZW50PgogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAKIFFUX0JFR0lO
X05BTUVTUEFDRQotY2xhc3MgUVJlY3Q7Ci1jbGFzcyBRUmVjdEY7Ci1jbGFzcyBRUG9pbnQ7Ci1j
bGFzcyBRU2l6ZTsKK2NsYXNzIFFDdXJzb3I7CitjbGFzcyBRRHJhZ0VudGVyRXZlbnQ7CitjbGFz
cyBRRHJhZ0xlYXZlRXZlbnQ7CitjbGFzcyBRRHJhZ01vdmVFdmVudDsKK2NsYXNzIFFEcm9wRXZl
bnQ7CiBjbGFzcyBRS2V5RXZlbnQ7CitjbGFzcyBRTWF0cml4NHg0OwogY2xhc3MgUU1vdXNlRXZl
bnQ7Ci1jbGFzcyBRV2hlZWxFdmVudDsKLWNsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVBhaW50
ZXI7CitjbGFzcyBRUG9pbnQ7CitjbGFzcyBRUmVjdDsKK2NsYXNzIFFSZWN0RjsKK2NsYXNzIFFT
aXplRjsKK2NsYXNzIFFUcmFuc2Zvcm07CiBjbGFzcyBRVXJsOwotY2xhc3MgUU1hdHJpeDR4NDsK
LWNsYXNzIFFDdXJzb3I7CitjbGFzcyBRV2hlZWxFdmVudDsKIFFUX0VORF9OQU1FU1BBQ0UKIAog
Y2xhc3MgUVJhd1dlYlZpZXdQcml2YXRlOwpAQCAtNTEsMTggKzU3LDQ1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIH0KIAorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBEb3dubG9hZFByb3h5OworfQorCiBjbGFzcyBRUmF3V2ViVmlld0Ns
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UVJhd1dlYlZpZXdDbGllbnQoKSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB2aWV3UHJvY2Vzc0NyYXNoZWQoY29uc3QgUVVybCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2aWV3Q29udGVu
dFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVx
dWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50
KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJs
ZUFyZWEoY29uc3QgUVBvaW50RiYsIGNvbnN0IFFSZWN0RiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgUVN0cmluZyYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2
ZW50KiwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBR
U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBRUmVjdCYgY292ZXJlZFJlY3QpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBRU3RyaW5nJiwgY29uc3Qg
UVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBRU3RyaW5nJiwgUVN0cmluZyYpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KGNvbnN0IFFT
dHJpbmcmIGhvc3RuYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3h5QXV0aGVu
dGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgUVN0cmluZyYgaG9zdG5hbWUsIHVpbnQxNl90
IHBvcnQsIGNvbnN0IFFTdHJpbmcmLCBRU3RyaW5nJiwgUVN0cmluZyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSopID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZUYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgUVBvaW50RiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKHFyZWFsIHNjYWxlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQoKSA9IDA7CisgICAg
dmlydHVhbCBRU2l6ZSB2aWV3U2l6ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgUVJlY3RG
IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFFSZWN0RiYgcmVjdCkgeyByZXR1cm4gcmVjdDsg
fQorICAgIHZpcnR1YWwgUVJlY3RGIGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBRUmVjdEYmIHJl
Y3QpIHsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFFQb2ludCBzY3JlZW5Ub1dpbmRvdyhj
b25zdCBRUG9pbnQmIHBvaW50KSB7IHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwgUVJlY3Qg
d2luZG93VG9TY3JlZW4oY29uc3QgUVJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVTdGFydERyYWcoY29uc3QgUUltYWdlJiwgUU1pbWVEYXRhKiwg
Y29uc3QgUXQ6OkRyb3BBY3Rpb25zJiwgUVBvaW50JiwgUVBvaW50JiwgUXQ6OkRyb3BBY3Rpb24m
KSA9IDA7CiB9OwogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUmF3V2ViVmlldyB7CkBAIC03MCw0
MCArMTAzLDExNCBAQCBwdWJsaWM6CiAgICAgUVJhd1dlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiwgUVJhd1dlYlZpZXdDbGllbnQqKTsKICAgICB+UVJhd1dlYlZpZXcoKTsKIAot
ICAgIHZvaWQgY3JlYXRlKCk7CisgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgdXNlRml4ZWRMYXlv
dXQgPSBmYWxzZSk7CisKKyAgICB2b2lkIHNldFVzZVZpZXdwb3J0Q29udHJvbGxlcihib29sIHVz
ZSk7CisgICAgYm9vbCB1c2VWaWV3cG9ydENvbnRyb2xsZXIoKSBjb25zdDsKKworICAgIHZvaWQg
c2VuZEtleUV2ZW50KFFLZXlFdmVudCopOworICAgIHZvaWQgc2VuZE1vdXNlRXZlbnQoUU1vdXNl
RXZlbnQqLCBpbnQgY2xpY2tDb3VudCA9IDApOworICAgIHZvaWQgc2VuZFdoZWVsRXZlbnQoUVdo
ZWVsRXZlbnQqKTsKKyAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisKKyAg
ICBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OworICAgIHZvaWQgc2V0VHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKTsKKworICAgIGJvb2wg
ZHJhd0JhY2tncm91bmQoKSBjb25zdDsKKyAgICB2b2lkIHNldERyYXdCYWNrZ3JvdW5kKGJvb2wg
YmFja2dyb3VuZCk7CisKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAg
IHZvaWQgc2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpOworICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqKTsKKyAgICB2b2lkIHBhaW50KGNvbnN0IFFN
YXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpbnRGbGFncyk7
CisgICAgdm9pZCBzZW5kRmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IFFQb2ludCYsIGNv
bnN0IFFTaXplJik7CisKKyAgICBib29sIHJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRSZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcihib29sIGVuYWJsZSk7CisKKyAg
ICB2b2lkIHNlbmRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IFFQb2ludCYsIGNvbnN0IFFTaXpl
Jik7CisKKyAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdm9p
ZCBoYW5kbGVNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYsIGludCk7
CisgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiwgY29uc3QgUVRyYW5zZm9y
bSYpOworCisgICAgdm9pZCBoYW5kbGVTaW5nbGVUYXBFdmVudChjb25zdCBRVG91Y2hFdmVudDo6
VG91Y2hQb2ludCYsIGNvbnN0IFFUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGhhbmRsZURvdWJsZVRh
cEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiwgY29uc3QgUVRyYW5zZm9ybSYp
OworICAgIHZvaWQgaGFuZGxlVG91Y2hFdmVudChRVG91Y2hFdmVudCosIGNvbnN0IFFUcmFuc2Zv
cm0mKTsKKyAgICB2b2lkIGhhbmRsZURyYWdFbnRlckV2ZW50KFFEcmFnRW50ZXJFdmVudCosIGNv
bnN0IFFUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGhhbmRsZURyYWdMZWF2ZUV2ZW50KFFEcmFnTGVh
dmVFdmVudCopOworICAgIHZvaWQgaGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCos
IGNvbnN0IFFUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50
KiwgY29uc3QgUVRyYW5zZm9ybSYpOworCisgICAgZmxvYXQgaW5uZXJCb3VuZGVkVmlld3BvcnRT
Y2FsZShmbG9hdCk7CisgICAgZmxvYXQgb3V0ZXJCb3VuZGVkVmlld3BvcnRTY2FsZShmbG9hdCk7
CisgICAgUVBvaW50RiBib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKGNvbnN0IFFQb2ludEYm
LCBmbG9hdCk7CisgICAgdm9pZCBzdXNwZW5kQ29udGVudCgpOworICAgIHZvaWQgcmVzdW1lQ29u
dGVudCgpOworICAgIGJvb2wgaGFzU3VzcGVuZGVkQ29udGVudCgpIGNvbnN0OworICAgIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygp
IGNvbnN0OworICAgIHZvaWQgc2V0SGFkVXNlckludGVyYWN0aW9uKGJvb2wgaW50ZXJhY3Rpb24p
OworICAgIGZsb2F0IG1pbmltdW1TY2FsZSgpIGNvbnN0OworCisgICAgdm9pZCBkaWRDaGFuZ2VD
b250ZW50c1Zpc2liaWxpdHkoY29uc3QgUVBvaW50RiYgbWFwcGVkT3JpZ2luLCBmbG9hdCBzY2Fs
ZSwgY29uc3QgUVBvaW50RiYgdHJhamVjdG9yeSA9IFFQb2ludEYoKSk7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkKCk7CiAKLSAgICB2b2lkIHNldFNpemUoY29uc3QgUVNpemUmKTsKICAgICBRU2l6
ZSBzaXplKCkgY29uc3Q7CisgICAgUVJlY3RGIGVkaXRvclJlY3QoKTsKKyAgICBRUmVjdEYgY3Vy
c29yUmVjdCgpOworCisgICAgUVN0cmluZyBzZWxlY3RlZFRleHQoKTsKKyAgICBRU3RyaW5nIHN1
cnJvdW5kaW5nVGV4dCgpOworICAgIFF0OjpJbnB1dE1ldGhvZEhpbnRzIGlucHV0TWV0aG9kSGlu
dHMoKTsKKworICAgIHVuc2lnbmVkIGN1cnNvclBvc2l0aW9uKCk7CisgICAgdW5zaWduZWQgYW5j
aG9yUG9zaXRpb24oKTsKIAotICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKKyAgICB2b2lkIGV4
aXRGdWxsU2NyZWVuKCk7CisgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKTsKKyAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CisgICAgdm9pZCBzZXRTaG93c0FzU291cmNlKGJvb2wgc2hvd3NBc1NvdXJjZSk7CisgICAgYm9v
bCBzaG93c0FzU291cmNlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEZvY3VzZWQoYm9vbCBmb2N1
c2VkKTsKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpOworICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQoKSBjb25zdDsKKwogICAgIGJvb2wgaXNW
aXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSk7CiAKLSAg
ICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpOwogCi0gICAgdm9pZCBzZXRUcmFuc3BhcmVudEJh
Y2tncm91bmQoYm9vbCk7Ci0gICAgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdDsK
KyAgICBib29sIHVzZVBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKSBjb25zdDsKKyAgICB2b2lkIHNl
dFVzZVBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoYm9vbCB1c2VQVkMpOwogCi0gICAgdm9pZCBzZXRE
cmF3QmFja2dyb3VuZChib29sKTsKLSAgICBib29sIGRyYXdCYWNrZ3JvdW5kKCkgY29uc3Q7Cisg
ICAgaW50IGRldmljZVdpZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXZpY2VXaWR0aChpbnQg
d2lkdGgpOwogCi0gICAgLy8gUGFpbnRzIG9uIHRoZSBjdXJyZW50IEdMIGNvbnRleHQuCi0gICAg
dm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVu
c2lnbmVkIHBhaW50RmxhZ3MpOworICAgIGludCBkZXZpY2VIZWlnaHQoKSBjb25zdDsKKyAgICB2
b2lkIHNldERldmljZUhlaWdodChpbnQgaGVpZ2h0KTsKIAotICAgIFdLUGFnZVJlZiBwYWdlUmVm
KCk7CisgICAgdm9pZCBzZXRQcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aChpbnQgd2lkdGgp
OworICAgIGludCBwcmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCgpOwogCi0gICAgdm9pZCBz
ZW5kS2V5RXZlbnQoUUtleUV2ZW50Kik7Ci0gICAgdm9pZCBzZW5kTW91c2VFdmVudChRTW91c2VF
dmVudCosIGludCBjbGlja0NvdW50ID0gMCk7Ci0gICAgdm9pZCBzZW5kV2hlZWxFdmVudChRV2hl
ZWxFdmVudCopOwotICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKyAgICB2
b2lkIHNldFNpemUoY29uc3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRTaXplKGNvbnN0IFFTaXplRiYpOwogCi1wcml2YXRlOgorICAgIFFVcmwgcmVtb3RlSW5zcGV0
b3JVcmwoKTsKKworICAgIFdLUGFnZVJlZiBwYWdlUmVmKCk7CisKKyAgICB2b2lkIGhhbmRsZUlu
cHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqIGV2KTsKICAgICBXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpIGNvbnN0Owor
ICAgIHN0YXRpYyBRUmF3V2ViVmlld1ByaXZhdGUqIGdldFByaXZhdGUoUVJhd1dlYlZpZXcqIHJh
d1dlYlZpZXcpOwogCitwcml2YXRlOgogICAgIFFSYXdXZWJWaWV3UHJpdmF0ZSogZDsKKyAgICBm
cmllbmQgY2xhc3MgUVdlYktpdFRlc3Q7CiB9OwogCiAjZW5kaWYgLy8gcXJhd3dlYnZpZXdfcF9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dl
YnZpZXdfcF9wLmgKaW5kZXggNWE4ZmMzNDc5OTU0NzQ4OWYxNWYwODk0OTNjNWFjMmE1ODMwZThh
Ny4uMzBkNzkyMTgxMmZhNjJmM2YzZjgwNGI1NmI3ZTRiZDFkNjhkMDQyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgK
QEAgLTI0LDE0ICsyNCwyMiBAQAogCiAjaWZuZGVmIHFyYXd3ZWJ2aWV3X3BfcF9oCiAjZGVmaW5l
IHFyYXd3ZWJ2aWV3X3BfcF9oCi0KKyNpbmNsdWRlICJEZWZhdWx0VW5kb0NvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGaW5kSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5LmgiCiAjaW5jbHVkZSAicXJhd3dlYnZpZXdfcC5oIgogCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwogY2xh
c3MgUVJhd1dlYlZpZXdQcml2YXRlIDogcHVibGljIFdlYktpdDo6UGFnZUNsaWVudCB7CiBwdWJs
aWM6CiAKQEAgLTQ0LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0
b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgV2ViS2l0OjpG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwg
V2ViS2l0OjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyQWxsRWRpdENvbW1hbmRzKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cik7CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqIGRvd25sb2FkKTsKQEAgLTkyLDggKzEwMCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJDb2xvckNo
b29zZXJQcm94eT4gY3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKICNlbmRpZgotCi0gICAgUVJhd1dlYlZpZXdQcml2YXRlKFdlYktpdDo6V2ViQ29udGV4
dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgUVJhd1dlYlZpZXdDbGllbnQqKTsKKyAgICBRUmF3
V2ViVmlld1ByaXZhdGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZiwgUVJhd1dlYlZpZXcqIHB1YmxpY1ZpZXcsIFFSYXdXZWJWaWV3Q2xpZW50KiBj
bGllbnQpOwogICAgIH5RUmF3V2ViVmlld1ByaXZhdGUoKTsKIAogICAgIC8vIFBhZ2VDbGllbnQK
QEAgLTEwNSwzMCArMTEyLDM0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVu
Y2hQcm9jZXNzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRl
bnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRD
dXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
Rm9jdXNlZCgpIHsgcmV0dXJuIG1fZm9jdXNlZDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdW
aXNpYmxlKCkgeyByZXR1cm4gbV92aXNpYmxlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1dp
bmRvd0FjdGl2ZSgpIHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChXS1N0cmluZ1JlZiBtZXNzYWdlKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxl
KCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZXdJbldpbmRvdygpIHsgcmV0dXJuIHRydWU7IH0gLy8gRklYTUUKLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBtX3NpemU7IH0KKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBk
b25lV2l0aEtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJv
b2wgd2FzRXZlbnRIYW5kbGVkKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1
YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2
ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOwogI2VuZGlmCisgICAgc3RhdGljIFFSYXdXZWJW
aWV3UHJpdmF0ZSogZ2V0KFdLUGFnZVJlZik7CiAKLQorICAgIFFTaXplIG1fc2l6ZTsKKyAgICBi
b29sIG1fYWN0aXZlOwogICAgIGJvb2wgbV9mb2N1c2VkOworICAgIGJvb2wgbV9yZW5kZXJUb09m
ZnNjcmVlbkJ1ZmZlcjsKICAgICBib29sIG1fdmlzaWJsZTsKLSAgICBib29sIG1fYWN0aXZlOwot
ICAgIFFTaXplIG1fc2l6ZTsKKyAgICBib29sIG1fdXNlVmlld3BvcnRDb250cm9sbGVyOwogCiAg
ICAgUVJhd1dlYlZpZXdDbGllbnQqIG1fY2xpZW50OwotICAgIFdURjo6UmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsKLQotcHJpdmF0ZToKKyAgICBSZWZQdHI8V2Vi
UGFnZVByb3h5PiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IG1f
dmlld3BvcnRDb250cm9sbGVyOworICAgIE93blB0cjxQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50UXQ+IG1fdmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIFdlYktpdDo6RGVmYXVsdFVu
ZG9Db250cm9sbGVyIG1fdW5kb0NvbnRyb2xsZXI7Citwcml2YXRlOiAgICAKICAgICBRUmF3V2Vi
VmlldyogcTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcApp
bmRleCAyMDgyODhkMWU2ZDBlY2U1YmU3ZmZlZDNhMWVmZTEyZWRjNWMwMmQ4Li5mNzhmNTVjNmFi
M2JlNmUwZWY1MTgzZDRmNzY5YmY5YTY0MTk1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy90
c3RfcXJhd3dlYnZpZXcuY3BwCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICovCisjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiLi4vdXRpbC5oIgogCiAjaW5jbHVkZSA8UUltYWdlPgpAQCAtNDIsNyArNDMsNyBA
QCBzdGF0aWMgV0tDb250ZXh0UmVmIHdlYkNvbnRleHQoKQogCiBzdGF0aWMgV0tQYWdlR3JvdXBS
ZWYgY3JlYXRlV2ViUGFnZUdyb3VwKGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwID1XS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3Ry
aW5nQ3JlYXRlV2l0aFFTdHJpbmcobmFtZSkpOworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcigobmFtZS5pc0VtcHR5KCkgPyAwIDpX
S1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKG5hbWUpKSk7CiAgICAgV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKICAgICBX
S1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMs
IHRydWUpOwogICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByZWZl
cmVuY2VzLCB0cnVlKTsKQEAgLTk5LDEyICsxMDAsMzkgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlld1Byb2Nlc3NDcmFzaGVkKGNvbnN0IFFVcmwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmll
d1Byb2Nlc3NSZWxhdW5jaGVkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6
ZUNoYW5nZWQoY29uc3QgUVNpemUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3Rl
ZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZG9u
ZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVu
dChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisjZW5kaWYKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludEYmLCBjb25zdCBR
UmVjdEYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdh
dG9yUXRPYmplY3QoY29uc3QgUVN0cmluZyYpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJl
bmRlckZyYW1lKGNvbnN0IFFTaXplJiwgY29uc3QgUVJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVu
dGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBj
b25zdCBRU3RyaW5nJiwgUVN0cmluZyYsIFFTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KGNvbnN0IFFTdHJpbmcmICkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9u
UmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFFTdHJpbmcmLCB1aW50MTZfdCwgY29uc3QgUVN0cmluZyYs
IFFTdHJpbmcmLCBRU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2Fk
UmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZUYmKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFZp
ZXdwb3J0UG9zaXRpb24oY29uc3QgUVBvaW50RiYpICB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yKHFyZWFsKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0QXR0
cmlidXRlc0NoYW5nZWQoKSB7IH0KKyAgICB2aXJ0dWFsIFFTaXplIHZpZXdTaXplKCkgY29uc3Qg
IHsgcmV0dXJuIFFTaXplKCk7IH0KKworICAgIHZpcnR1YWwgUVJlY3RGIGNvbnZlcnRUb0Rldmlj
ZVNwYWNlKGNvbnN0IFFSZWN0RiYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwg
UVJlY3RGIGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBRUmVjdEYmIHJlY3QpIHsgcmV0dXJuIHJl
Y3Q7IH0KKyAgICB2aXJ0dWFsIFFQb2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBRUG9pbnQmIHBv
aW50KSB7IHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwgUVJlY3Qgd2luZG93VG9TY3JlZW4o
Y29uc3QgUVJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVTdGFydERyYWcoY29uc3QgUUltYWdlJiwgUU1pbWVEYXRhKiwgY29uc3QgUXQ6OkRyb3BB
Y3Rpb25zJiwgUVBvaW50JiwgUVBvaW50JiwgUXQ6OkRyb3BBY3Rpb24mKSAgeyB9CiAKICAgICB2
b2lkIGZyYW1lTG9hZGVkKCkKICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggODQ4ZTNlY2FlNWQ4NTMyZjdjYTM3NTc0ZGNiOTEyNjI4NmQz
OTJiNC4uYzM4YTAzNzYzMDk5Y2UzNjdlMDUyZWVlZmQ2MzcxZjE5YjBmZDMwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBA
CisyMDEzLTAzLTE5ICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQGRpZ2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gRXh0ZW5kIFFSYXdXZWJWaWV3IGNsYXNzZXMgZm9yIHVz
ZSBhcyBiYXNlIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExMjczNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgdGhlIG5lY2Vzc2FyeSBjaGFuZ2VzIGFuZCBhZGQgdGhlIG5lZWRlZCBRUmF3
V2ViVmlld0NsaWVudCBtZXRob2QKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIHRvIGtlZXAgTWlu
aUJyb3dzZXJSYXcgaW4gdGhlIHNhbWUgZnVuY3Rpb25hbCBzdGF0ZSBhcyBiZWZvcmUuCisKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHA6CisgICAgICAgIChjcmVhdGVXZWJQ
YWdlR3JvdXApOgorICAgICAgICAoVmlldzo6Vmlldyk6CisgICAgICAgIChWaWV3OjpleHBvc2VF
dmVudCk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaDoKKyAgICAgICAgKFZp
ZXc6OnZpZXdQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChWaWV3OjpkaWRGaW5kWm9vbWFibGVB
cmVhKToKKyAgICAgICAgKFZpZXc6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2Jq
ZWN0KToKKyAgICAgICAgKFZpZXcpOgorICAgICAgICAoVmlldzo6ZGlkUmVuZGVyRnJhbWUpOgor
ICAgICAgICAoVmlldzo6dXBkYXRlVGV4dElucHV0U3RhdGUpOgorICAgICAgICAoVmlldzo6aGFu
ZGxlV2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAoVmlldzo6aGFuZGxlQXV0aGVu
dGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoVmlldzo6aGFuZGxlQ2VydGlmaWNh
dGVWZXJpZmljYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFZpZXc6OmhhbmRsZVByb3h5QXV0aGVu
dGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoVmlldzo6aGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KToKKyAgICAgICAgKFZpZXc6OmhhbmRsZVN0YXJ0RHJhZyk6CisgICAgICAgIChWaWV3
OjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoVmlldzo6ZGlkQ2hhbmdlQ29u
dGVudHNTaXplKToKKyAgICAgICAgKFZpZXc6OnNldFZpZXdwb3J0UG9zaXRpb24pOgorICAgICAg
ICAoVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFZpZXc6OnZpZXdwb3J0QXR0
cmlidXRlc0NoYW5nZWQpOgorICAgICAgICAoVmlldzo6dmlld1NpemUpOgorICAgICAgICAoVmll
dzo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAoVmlldzo6Y29udmVydFRvVXNlclNw
YWNlKToKKyAgICAgICAgKFZpZXc6OnNjcmVlblRvV2luZG93KToKKyAgICAgICAgKFZpZXc6Ondp
bmRvd1RvU2NyZWVuKToKKwogMjAxMy0wMy0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdHlsZSB0d2Vla3MgdG8gZGVmYXVsdC5jc3MuCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHAgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9yYXcvVmlldy5jcHAKaW5kZXggNGM0ZDUyODU1MzE0OWIzYmZjZWQ2Yzk2ZDQzNTU1
MDZjMzJmMGEwOS4uZDYwZTJhY2ZhOTI5ZGE5NzFlMmY3NGRjNTBjYjRlMzQzMjBjYzhjNiAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuY3BwCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgV0tDb250
ZXh0UmVmIGNyZWF0ZVdlYkNvbnRleHQoKQogCiBzdGF0aWMgV0tQYWdlR3JvdXBSZWYgY3JlYXRl
V2ViUGFnZUdyb3VwKGNvbnN0IFFTdHJpbmcmIG5hbWUpCiB7Ci0gICAgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwID1XS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRl
V2l0aFFTdHJpbmcobmFtZSkpOworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9V0tQYWdl
R3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcigobmFtZS5pc0VtcHR5KCkgPyAwIDpXS1N0cmluZ0Ny
ZWF0ZVdpdGhRU3RyaW5nKG5hbWUpKSk7CiAgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
cyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKICAgICBXS1ByZWZlcmVu
Y2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwog
ICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByZWZlcmVuY2VzLCB0
cnVlKTsKQEAgLTY5LDggKzY5LDcgQEAgVmlldzo6Vmlldyhjb25zdCBRU3RyaW5nJiB1cmwpCiAg
ICAgbV9jb250ZXh0LT5jcmVhdGUoKTsKIAogICAgIG1fd2ViVmlldyA9IG5ldyBRUmF3V2ViVmll
dyhjcmVhdGVXZWJDb250ZXh0KCksIGNyZWF0ZVdlYlBhZ2VHcm91cChRU3RyaW5nKCkpLCB0aGlz
KTsKLSAgICBtX3dlYlZpZXctPmNyZWF0ZSgpOwotICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0
KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVlKTsKKyAgICBtX3dlYlZpZXctPmluaXRpYWxpemUo
dHJ1ZSk7CiB9CiAKIApAQCAtNzksNyArNzgsNiBAQCB2b2lkIFZpZXc6OmV4cG9zZUV2ZW50KFFF
eHBvc2VFdmVudCogZXZlbnQpCiAgICAgaWYgKCFtX2FjdGl2ZSkgewogICAgICAgICBtX2FjdGl2
ZSA9IHRydWU7CiAgICAgICAgIFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5wYWdlUmVmKCksIFdL
VVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1fdXJsLnRvTG9jYWw4Qml0KCkuZGF0YSgpKSk7Ci0K
ICAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOwogICAgICAgICBtX3dlYlZpZXct
PnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaCBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0L3Jhdy9WaWV3LmgKaW5kZXggZTUzMjIzZjg5NmUzMjhmYzI5Zjc3MzU5OThiMmJi
OTE2MDRmNGY4MS4uZGQ0ZDA1YzE3ODNiMDNmNjhiYmZiYWQxYTk3MmNiNThjMjQ4M2Y3OSAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9yYXcvVmlldy5oCkBAIC0zNCwxMiArMzQsMzUgQEAgcHVibGljOgogcHVibGlj
OiAvLyBRUmF3V2ViVmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFFSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29u
c3QgUVBvaW50JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzQ3Jhc2hlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoY29uc3QgUVVybCYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpOwogICAg
IHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wgd2Fz
SGFuZGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBRVG91
Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRa
b29tYWJsZUFyZWEoY29uc3QgUVBvaW50RiYsIGNvbnN0IFFSZWN0RiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBRU3Ry
aW5nJikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgUVNpemUm
LCBjb25zdCBRUmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0
ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVz
dChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBRU3RyaW5n
JiwgUVN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlm
aWNhdGlvblJlcXVlc3QoY29uc3QgUVN0cmluZyYgKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3Qg
UVN0cmluZyYsIHVpbnQxNl90LCBjb25zdCBRU3RyaW5nJiwgUVN0cmluZyYsIFFTdHJpbmcmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVTdGFydERyYWcoY29uc3QgUUlt
YWdlJiwgUU1pbWVEYXRhKiwgY29uc3QgUXQ6OkRyb3BBY3Rpb25zJiwgUVBvaW50JiwgUVBvaW50
JiwgUXQ6OkRyb3BBY3Rpb24mKSAgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlz
aWJsZUNvbnRlbnRzKCkgIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Np
emUoY29uc3QgUVNpemVGJikgIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBvc2l0
aW9uKGNvbnN0IFFQb2ludEYmKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZh
Y3RvcihxcmVhbCkgIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydEF0dHJpYnV0ZXNDaGFu
Z2VkKCkgeyB9CisgICAgdmlydHVhbCBRU2l6ZSB2aWV3U2l6ZSgpIGNvbnN0ICB7IHJldHVybiBR
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKworICAgIHZpcnR1YWwgUVJlY3RGIGNvbnZlcnRU
b0RldmljZVNwYWNlKGNvbnN0IFFSZWN0RiYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorICAgIHZp
cnR1YWwgUVJlY3RGIGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBRUmVjdEYmIHJlY3QpIHsgcmV0
dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFFQb2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBRUG9p
bnQmIHBvaW50KSB7IHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwgUVJlY3Qgd2luZG93VG9T
Y3JlZW4oY29uc3QgUVJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBleHBvc2VFdmVudChRRXhwb3NlRXZlbnQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194001</attachid>
            <date>2013-03-20 01:48:50 -0700</date>
            <delta_ts>2013-10-02 21:26:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112735-20130320094439.patch</filename>
            <type>text/plain</type>
            <size>56722</size>
            <attacher name="Michael Brüning">michael.bruning</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGNjYmJjYmMxYmIyMTQ1
ODIwNzJjODhkZGQ0NGRjNTAwNTU0ZGY0OS4uNzAyOTg5ZGE0YTdlM2Q3NmM4NjYwOWE5NTg0NTRm
ZTFlZWZlNTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMy0wMy0yMCAgTWlj
aGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIEV4dGVuZCBRUmF3V2ViVmlldyBjbGFzc2VzIGZvciB1c2UgYXMgYmFzZSBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI3MzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGV4dGVuZHMgdGhlIFFSYXdXZWJWaWV3IGNsYXNzZXMgd2l0aCB0aGUgbmVjZXNzYXJ5CisgICAg
ICAgIG1ldGhvZHMgdG8gYWN0IGFzIGEgYmFzZSBmb3IgdGhlIFF0IFdlYktpdDIgQVBJIGxheWVy
IGFuZCBwcm92aWRlCisgICAgICAgIGEgY2xlYXJlciBzZXBhcmF0aW9uIGJldHdlZSBXZWJLaXQy
IGludGVybmFscyBhbmQgdGhlIEFQSSBsYXllci4KKworICAgICAgICBUaGUgUVJhd1dlYlZpZXdQ
cml2YXRlIGNsYXNzIGlzIGV4dGVuZGVkIHRvIGJlIGEgbW9yZSBmdW5jdGlvbmFsIFBhZ2VDbGll
bnQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdGhhbiBiZWZvcmUuIFRoZSBRUmF3V2ViVmlldyBl
eHBvc2VzIGFsbCB0aGUgbmVjZXNzYXJ5IG1ldGhvZHMKKyAgICAgICAgdG8gaGF2ZSB0aGUgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlciBhbmQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCB1c2Vk
IAorICAgICAgICBmcm9tIHRoZXNlIGNsYXNzZXMgcmF0aGVyIHRoYW4gZGlyZWN0bHkgZnJvbSB0
aGUgZXhwb3NlZCBBUEkgY2xhc3Nlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3
L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGRyYWdPcGVyYXRpb25Ub0Ryb3BBY3Rpb24pOgor
ICAgICAgICAoZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbnMpOgorICAgICAgICAoZHJvcEFjdGlv
blRvRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3
UHJpdmF0ZTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6aGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgor
ICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVx
dWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6cmVnaXN0ZXJFZGl0
Q29tbWFuZCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmNsZWFyQWxsRWRpdENvbW1h
bmRzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVJhd1dlYlZpZXdQcml2YXRlOjpleGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoUVJhd1dl
YlZpZXdQcml2YXRlOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAg
IChRUmF3V2ViVmlld1ByaXZhdGU6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFFS
YXdXZWJWaWV3UHJpdmF0ZTo6aGFuZGxlV2lsbFNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAoUVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CisgICAgICAgIChR
UmF3V2ViVmlld1ByaXZhdGU6OmRpZEZpbmRab29tYWJsZUFyZWEpOgorICAgICAgICAoUVJhd1dl
YlZpZXdQcml2YXRlOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjpzdGFydERyYWcpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRl
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmRp
ZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENy
YXNoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUpOgorICAgICAgICAoUVJh
d1dlYlZpZXdQcml2YXRlOjppc1ZpZXdGb2N1c2VkKToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJp
dmF0ZTo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmlzVmll
d1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjpRUmF3V2ViVmlld1By
aXZhdGUpOgorICAgICAgICAoUVJhd1dlYlZpZXdQcml2YXRlOjp+UVJhd1dlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZTo6Z2V0KToKKyAgICAgICAgKFFSYXdXZWJW
aWV3OjpRUmF3V2ViVmlldyk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2V0VXNlVmlld3BvcnRD
b250cm9sbGVyKToKKyAgICAgICAgKFFSYXdXZWJWaWV3Ojp1c2VWaWV3cG9ydENvbnRyb2xsZXIp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAg
ICAgIChRUmF3V2ViVmlldzo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZHJhd0Jh
Y2tncm91bmQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEZvY3VzZWQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OnNldFZpc2libGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEFjdGl2
ZSk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2V0U2l6ZSk6CisgICAgICAgIChRUmF3V2ViVmll
dzo6bWluaW11bVNjYWxlKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpwYWdlUmVmKToKKyAgICAg
ICAgKFFSYXdXZWJWaWV3OjpwYWludCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZEtleUV2
ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZW5kTW91c2VFdmVudCk6CisgICAgICAgIChR
UmF3V2ViVmlldzo6c2VuZFdoZWVsRXZlbnQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNlbmRU
b3VjaEV2ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3OjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVT
aW5nbGVUYXBFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFuZGxlRG91YmxlVGFwRXZl
bnQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmRldmljZVdpZHRoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZXREZXZp
Y2VXaWR0aCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZGV2aWNlSGVpZ2h0KToKKyAgICAgICAg
KFFSYXdXZWJWaWV3OjpzZXREZXZpY2VIZWlnaHQpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNl
dFByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoKToKKyAgICAgICAgKFFSYXdXZWJWaWV3Ojpw
cmVmZXJyZWRNaW5pbXVtQ29udGVudHNXaWR0aCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6Y29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYW5kbGVEcmFn
RW50ZXJFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFuZGxlRHJhZ0xlYXZlRXZlbnQp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OmhhbmRsZURyYWdNb3ZlRXZlbnQpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmhhbmRsZURyb3BFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6aGFu
ZGxlSW5wdXRNZXRob2RFdmVudCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZEZpbmRab29t
YWJsZUFyZWFGb3JQb2ludCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6c2VuZFBvdGVudGlhbEFj
dGl2YXRpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAo
UVJhd1dlYlZpZXc6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRUmF3V2ViVmll
dzo6ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEludHJpbnNp
Y0RldmljZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpnZXRQcml2YXRlKToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjpyZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcik6CisgICAgICAg
IChRUmF3V2ViVmlldzo6c2V0UmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIpOgorICAgICAgICAoUVJh
d1dlYlZpZXc6OmVkaXRvclJlY3QpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OmN1cnNvclJlY3Qp
OgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNlbGVjdGVkVGV4dCk6CisgICAgICAgIChRUmF3V2Vi
Vmlldzo6c3Vycm91bmRpbmdUZXh0KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjppbnB1dE1ldGhv
ZEhpbnRzKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpjdXJzb3JQb3NpdGlvbik6CisgICAgICAg
IChRUmF3V2ViVmlldzo6YW5jaG9yUG9zaXRpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6Omlu
bmVyQm91bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6Om91dGVyQm91
bmRlZFZpZXdwb3J0U2NhbGUpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnN1c3BlbmRDb250ZW50
KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpyZXN1bWVDb250ZW50KToKKyAgICAgICAgKFFSYXdX
ZWJWaWV3Ojpib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKToKKyAgICAgICAgKFFSYXdXZWJW
aWV3OjpoYXNTdXNwZW5kZWRDb250ZW50KToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpoYWRVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnNldEhhZFVzZXJJbnRlcmFjdGlv
bik6CisgICAgICAgIChRUmF3V2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KToK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjphbGxvd3NVc2VyU2NhbGluZyk6CisgICAgICAgIChRUmF3
V2ViVmlldzo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChRUmF3V2ViVmlldzo6cmVtb3RlSW5z
cGV0b3JVcmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3Au
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUmF3V2ViVmlld0NsaWVudCk6CisgICAg
ICAgIChRUmF3V2ViVmlld0NsaWVudDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAo
UVJhd1dlYlZpZXdDbGllbnQ6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChRUmF3V2Vi
Vmlld0NsaWVudDo6c2NyZWVuVG9XaW5kb3cpOgorICAgICAgICAoUVJhd1dlYlZpZXdDbGllbnQ6
OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vi
dmlld19wX3AuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRUmF3V2ViVmlld1ByaXZh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3Fy
YXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CisgICAgICAgIChX
ZWJWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAg
IChXZWJWaWV3OjpkaWRGaW5kWm9vbWFibGVBcmVhKToKKyAgICAgICAgKFdlYlZpZXc6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYlZpZXc6OmRp
ZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYlZpZXc6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZVdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYlZpZXc6OmhhbmRsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdCk6CisgICAg
ICAgIChXZWJWaWV3OjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJW
aWV3OjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2ViVmlldzo6ZGlkQ2hh
bmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYlZpZXc6OnNldFZpZXdwb3J0UG9zaXRpb24p
OgorICAgICAgICAoV2ViVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYlZp
ZXc6OnZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlldzo6dmlld1Np
emUpOgorICAgICAgICAoV2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAo
V2ViVmlldzo6Y29udmVydFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYlZpZXc6OnNjcmVlblRv
V2luZG93KToKKyAgICAgICAgKFdlYlZpZXc6OndpbmRvd1RvU2NyZWVuKToKKyAgICAgICAgKFdl
YlZpZXc6OmhhbmRsZVN0YXJ0RHJhZyk6CisKIDIwMTMtMDMtMTkgIEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPiBhbmQgTWlraGFpbCBQb3pkbnlha292ICA8
bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFNlcGFy
YXRlIFdlYlZpZXcgZnVydGhlciBmcm9tIEV3a1ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAppbmRleCA1MDBkOGY3YjkzMmE3
OGU5NzJlNGZhOTQ5YTc0Nzg3M2QxYzI3YzMyLi40N2FhZjVkNmEyYzhkZGUwOTE5OThjMzBlNmJh
YzFiOWYzYzM0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Jhdy9xcmF3d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9yYXcvcXJhd3dlYnZpZXcuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCiAjaW5j
bHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNl
RXZlbnQuaCIKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMzAsNTIgKzMxLDEzNiBAQAog
I2VuZGlmCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJW
RVIpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JTZXJ2ZXIuaCIKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICNpbmNsdWRl
ICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
InFyYXd3ZWJ2aWV3X3BfcC5oIgorI2luY2x1ZGUgPFFNYXA+CisjaW5jbHVkZSA8UU1pbWVEYXRh
PgorI2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyNpbmNsdWRlIDxXS1ByZWZlcmVuY2VzLmg+
CisjaW5jbHVkZSA8V0tTdHJpbmdRdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3FyYXd3ZWJ2aWV3X3Au
aD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
Cit0eXBlZGVmIFFNYXA8V0tQYWdlUmVmLCBRUmF3V2ViVmlld1ByaXZhdGUqPiBQYWdlVG9WaWV3
TWFwOworUV9HTE9CQUxfU1RBVElDKFBhZ2VUb1ZpZXdNYXAsIHBhZ2VUb1ZpZXcpCisKK3N0YXRp
YyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbih1bnNpZ25l
ZCBkcmFnT3BlcmF0aW9uKQoreworICAgIFF0OjpEcm9wQWN0aW9uIHJlc3VsdCA9IFF0OjpJZ25v
cmVBY3Rpb247CisgICAgaWYgKGRyYWdPcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAg
ICAgICAgcmVzdWx0ID0gUXQ6OkNvcHlBY3Rpb247CisgICAgZWxzZSBpZiAoZHJhZ09wZXJhdGlv
biAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQgPSBRdDo6TW92ZUFjdGlvbjsK
KyAgICBlbHNlIGlmIChkcmFnT3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAg
ICAgIHJlc3VsdCA9IFF0OjpNb3ZlQWN0aW9uOworICAgIGVsc2UgaWYgKGRyYWdPcGVyYXRpb24g
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gUXQ6OkxpbmtBY3Rpb247Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGlubGluZSBRdDo6RHJvcEFjdGlvbnMgZHJh
Z09wZXJhdGlvblRvRHJvcEFjdGlvbnModW5zaWduZWQgZHJhZ09wZXJhdGlvbnMpCit7CisgICAg
UXQ6OkRyb3BBY3Rpb25zIHJlc3VsdCA9IFF0OjpJZ25vcmVBY3Rpb247CisgICAgaWYgKGRyYWdP
cGVyYXRpb25zICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdCB8PSBRdDo6Q29w
eUFjdGlvbjsKKyAgICBpZiAoZHJhZ09wZXJhdGlvbnMgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAg
ICAgICAgcmVzdWx0IHw9IFF0OjpNb3ZlQWN0aW9uOworICAgIGlmIChkcmFnT3BlcmF0aW9ucyAm
IERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247
CisgICAgaWYgKGRyYWdPcGVyYXRpb25zICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJl
c3VsdCB8PSBRdDo6TGlua0FjdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
aW5saW5lIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihR
dDo6RHJvcEFjdGlvbnMgYWN0aW9ucykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworICAg
IGlmIChhY3Rpb25zICYgUXQ6OkNvcHlBY3Rpb24pCisgICAgICAgIHJlc3VsdCB8PSBEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICBpZiAoYWN0aW9ucyAmIFF0OjpNb3ZlQWN0aW9uKQorICAgICAgICBy
ZXN1bHQgfD0gKERyYWdPcGVyYXRpb25Nb3ZlIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAg
IGlmIChhY3Rpb25zICYgUXQ6OkxpbmtBY3Rpb24pCisgICAgICAgIHJlc3VsdCB8PSBEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICBpZiAocmVzdWx0ID09IChEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdP
cGVyYXRpb25Nb3ZlIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTGluaykp
CisgICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICByZXR1cm4gKERyYWdP
cGVyYXRpb24pcmVzdWx0OworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoV0tTdHJpbmdSZWYgbWVzc2FnZSkKK3sKKyAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoV0tTdHJp
bmdDb3B5UVN0cmluZyhtZXNzYWdlKSk7Cit9CisKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpk
aWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1
dGVzJiBhdHRyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fdmlld3BvcnRD
b250cm9sbGVyKQorICAgICAgICBtX3ZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKGF0dHIpOwogfQogCiB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6aGFuZGxl
RG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2NsaWVudC0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRv
d25sb2FkKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmhhbmRsZUF1dGhlbnRpY2F0
aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0cmluZyYg
cmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNlcm5hbWUs
IFN0cmluZyYgcGFzc3dvcmQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBRU3RyaW5n
IHFVc2VybmFtZTsKKyAgICBRU3RyaW5nIHFQYXNzd29yZDsKKworICAgIG1fY2xpZW50LT5oYW5k
bGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChRU3RyaW5nKGhvc3RuYW1lKSwgUVN0cmlu
ZyhyZWFsbSksIFFTdHJpbmcocHJlZmlsbGVkVXNlcm5hbWUpLCBxVXNlcm5hbWUsIHFQYXNzd29y
ZCk7CisKKyAgICB1c2VybmFtZSA9IHFVc2VybmFtZTsKKyAgICBwYXNzd29yZCA9IHFQYXNzd29y
ZDsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmhhbmRsZUNlcnRpZmljYXRlVmVyaWZp
Y2F0aW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBib29sJiBpZ25vcmVFcnJvcnMp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZ25vcmVFcnJvcnMgPSBtX2NsaWVudC0+
aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KFFTdHJpbmcoaG9zdG5hbWUpKTsK
IH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmhhbmRsZVByb3h5QXV0aGVudGljYXRpb25S
ZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29u
c3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBw
YXNzd29yZCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFFTdHJpbmcgcVVzZXJuYW1l
OworICAgIFFTdHJpbmcgcVBhc3N3b3JkOworCisgICAgbV9jbGllbnQtPmhhbmRsZVByb3h5QXV0
aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoUVN0cmluZyhob3N0bmFtZSksIHBvcnQsIFFTdHJp
bmcocHJlZmlsbGVkVXNlcm5hbWUpLCBxVXNlcm5hbWUsIHFQYXNzd29yZCk7CisKKyAgICB1c2Vy
bmFtZSA9IHFVc2VybmFtZTsKKyAgICBwYXNzd29yZCA9IHFQYXNzd29yZDsKIH0KIAotdm9pZCBR
UmF3V2ViVmlld1ByaXZhdGU6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykK
K3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8
V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVu
ZG9PclJlZG8pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3VuZG9Db250cm9sbGVy
LnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZCwgdW5kb09yUmVkbyk7CiB9CiAKLWJvb2wgUVJh
d1dlYlZpZXdQcml2YXRlOjpjYW5VbmRvUmVkbyhXZWJLaXQ6OldlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbyB1bmRvT3JSZWRvKQordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmNsZWFyQWxsRWRpdENv
bW1hbmRzKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX3VuZG9Db250cm9sbGVyLmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLXZvaWQgUVJh
d1dlYlZpZXdQcml2YXRlOjpleGVjdXRlVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKK2Jvb2wgUVJhd1dlYlZpZXdQcml2YXRlOjpjYW5VbmRvUmVk
byhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBtX3VuZG9Db250cm9sbGVyLmNhblVuZG9SZWRvKHVuZG9PclJl
ZG8pOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBh
Z2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAgIG1fdW5kb0NvbnRyb2xsZXIu
ZXhlY3V0ZVVuZG9SZWRvKHVuZG9PclJlZG8pOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgUVJh
d1dlYlZpZXdQcml2YXRlOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHJlY3QpCkBAIC0xMTcsMTcgKzIwMiwxNiBAQCB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0
ZTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXllclRy
ZQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Ci0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjp1cGRhdGVUZXh0SW5w
dXRTdGF0ZSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2NsaWVudC0+dXBkYXRl
VGV4dElucHV0U3RhdGUoKTsKIH0KIAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmhhbmRsZVdp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
Y2xpZW50LT5oYW5kbGVXaWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogfQogCiAjaWYgRU5BQkxF
KEdFU1RVUkVfRVZFTlRTKQpAQCAtMTM1LDggKzIxOSw4IEBAIHZvaWQgUVJhd1dlYlZpZXdQcml2
YXRlOjpkb25lV2l0aEdlc3R1cmVFdmVudChjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYg
ZXZlCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KLQogI2VuZGlmCisKIHZvaWQgUVJhd1dl
YlZpZXdQcml2YXRlOjpkaXNwbGF5VmlldygpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTE1NCw3ICsyMzgsNyBAQCB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6Zmxhc2hCYWNraW5nU3Rv
cmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PgogCiB2b2lkIFFSYXdXZWJW
aWV3UHJpdmF0ZTo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
dGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBhcmVhKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9jbGllbnQtPmRpZEZpbmRab29tYWJsZUFyZWEoUVBvaW50Rih0YXJnZXQp
LCBRUmVjdEYoYXJlYSkpOwogfQogCiB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6c2V0Q3Vyc29y
SGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKQpAQCAtMTY5
LDEyICsyNTMsMzAgQEAgdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnRvb2xUaXBDaGFuZ2VkKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbmV3VG9vbHRpcCkKIAogdm9pZCBRUmF3V2ViVmll
d1ByaXZhdGU6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiB7Ci0gICAgbV93ZWJQYWdl
UHJveHktPmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsKKyAgICBpZiAobV92aWV3cG9y
dENvbnRyb2xsZXIpCisgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLT5wYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+Y29tbWl0UGFnZVRy
YW5zaXRpb25WaWV3cG9ydCgpOwogfQogCiB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6c3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgUUltYWdlIGRyYWdRSW1hZ2U7CisgICAgaWYgKGRyYWdJbWFnZSkKKyAgICAgICAgZHJhZ1FJ
bWFnZSA9IGRyYWdJbWFnZS0+Y3JlYXRlUUltYWdlKCk7CisgICAgZWxzZSBpZiAoZHJhZ0RhdGEu
cGxhdGZvcm1EYXRhKCkgJiYgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCktPmhhc0ltYWdlKCkpCisg
ICAgICAgIGRyYWdRSW1hZ2UgPSBxdmFyaWFudF9jYXN0PFFJbWFnZT4oZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCktPmltYWdlRGF0YSgpKTsKKworICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlv
bk1hc2sgPSBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBRTWlt
ZURhdGEqIG1pbWVEYXRhID0gY29uc3RfY2FzdDxRTWltZURhdGEqPihkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7CisgICAgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZERyb3BBY3Rpb25zID0gZHJh
Z09wZXJhdGlvblRvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlvbk1hc2spOworCisgICAgUVBvaW50
IGNsaWVudFBvc2l0aW9uOworICAgIFFQb2ludCBnbG9iYWxQb3NpdGlvbjsKKyAgICBRdDo6RHJv
cEFjdGlvbiBhY3R1YWxEcm9wQWN0aW9uOworCisgICAgbV9jbGllbnQtPmhhbmRsZVN0YXJ0RHJh
ZyhkcmFnUUltYWdlLCBtaW1lRGF0YSwgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGdsb2JhbFBvc2l0
aW9uLCBjbGllbnRQb3NpdGlvbiwgYWN0dWFsRHJvcEFjdGlvbik7CisgICAgbV9wYWdlLT5kcmFn
RW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcm9wQWN0aW9uVG9EcmFnT3Bl
cmF0aW9uKGFjdHVhbERyb3BBY3Rpb24pKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5PiBRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YktpdDo6V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpCkBAIC0xOTksMTIgKzMwMSwyMyBAQCBQ
YXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IFFSYXdXZWJWaWV3UHJpdmF0
ZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUAogCiB2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6cGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcykKIHsKLSAgICBtX2Ns
aWVudC0+dmlld1JlcXVlc3RlZFNjcm9sbChwb3MpOworICAgIGlmIChtX3ZpZXdwb3J0Q29udHJv
bGxlcikKKyAgICAgICAgbV92aWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KHBvcyk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVudC0+dmlld1JlcXVlc3RlZFNjcm9sbChw
b3MpOworfQogCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVuZGVyRnJhbWUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
b3ZlcmVkUmVjdCkKK3sKKyAgICBpZiAobV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1f
dmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRS
ZWN0KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVuZGVyRnJhbWUoUVNpemUoY29udGVudHNTaXplKSwg
UVJlY3QoY292ZXJlZFJlY3QpKTsKIH0KKwogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnByb2Nl
c3NEaWRDcmFzaCgpCiB7Ci0gICAgbV9jbGllbnQtPnZpZXdQcm9jZXNzQ3Jhc2hlZCgpOworICAg
IFFVcmwgdXJsKEtVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2UtPnVybEF0UHJv
Y2Vzc0V4aXQoKSkpOworICAgIG1fY2xpZW50LT52aWV3UHJvY2Vzc0NyYXNoZWQodXJsKTsKIH0K
IAogdm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlbGF1bmNoUHJvY2VzcygpCkBAIC0yMTks
NyArMzMyLDEwIEBAIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpzZXRWaWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAKIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRl
OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkK
IHsKLSAgICBtX2NsaWVudC0+dmlld0NvbnRlbnRTaXplQ2hhbmdlZChuZXdTaXplKTsKKyAgICBp
ZiAobV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIG1fdmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VDb250ZW50c1NpemUobmV3U2l6ZSk7CisgICAgZWxzZQorICAgICAgICBtX2NsaWVu
dC0+dmlld0NvbnRlbnRTaXplQ2hhbmdlZChuZXdTaXplKTsKIH0KIAogdm9pZCBRUmF3V2ViVmll
d1ByaXZhdGU6OnNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcikKQEAgLTIz
OSwyNyArMzU1LDYwIEBAIHZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0aEtleUV2ZW50
KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYKICAgICBtX2NsaWVudC0+ZG9u
ZVdpdGhLZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOwogfQog
CitXZWJDb3JlOjpJbnRTaXplIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dmlld1NpemUoKQoreworICAg
IFFTaXplIHNpemUgPSBtX2NsaWVudC0+dmlld1NpemUoKTsKKyAgICBpZiAoc2l6ZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXplKCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkludFNpemUobV9zaXplKTsKK30KKworYm9vbCBRUmF3V2ViVmlld1ByaXZhdGU6OmlzVmll
d0ZvY3VzZWQoKQoreworICAgIHJldHVybiBtX2ZvY3VzZWQ7Cit9CisKK2Jvb2wgUVJhd1dlYlZp
ZXdQcml2YXRlOjppc1ZpZXdWaXNpYmxlKCkKK3sKKyAgICByZXR1cm4gbV92aXNpYmxlOworfQor
Citib29sIFFSYXdXZWJWaWV3UHJpdmF0ZTo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAgICBy
ZXR1cm4gbV9hY3RpdmU7Cit9CisKIFBhc3NPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
PiBRUmF3V2ViVmlld1ByaXZhdGU6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQogewotICAgIHJl
dHVybiBXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjpjcmVhdGUobV93ZWJQYWdlUHJveHku
Z2V0KCkpOworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKG1fcGFnZS5n
ZXQoKSk7CiB9CiAKLVFSYXdXZWJWaWV3UHJpdmF0ZTo6UVJhd1dlYlZpZXdQcml2YXRlKFdlYktp
dDo6V2ViQ29udGV4dCogY29udGV4dCwgV2ViS2l0OjpXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwg
UVJhd1dlYlZpZXdDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZm9jdXNlZChmYWxzZSkKK1FSYXdX
ZWJWaWV3UHJpdmF0ZTo6UVJhd1dlYlZpZXdQcml2YXRlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFFSYXdXZWJWaWV3KiBwdWJsaWNWaWV3LCBR
UmF3V2ViVmlld0NsaWVudCogY2xpZW50KQorICAgIDogbV9hY3RpdmUoZmFsc2UpCisgICAgLCBt
X2ZvY3VzZWQoZmFsc2UpCisgICAgLCBtX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKGZhbHNlKQog
ICAgICwgbV92aXNpYmxlKGZhbHNlKQotICAgICwgbV9hY3RpdmUoZmFsc2UpCisgICAgLCBtX3Vz
ZVZpZXdwb3J0Q29udHJvbGxlcihmYWxzZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAs
IG1fd2ViUGFnZVByb3h5KGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgcGFnZUdyb3VwKSkK
KyAgICAsIHEocHVibGljVmlldykKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCkt
PnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOworICAgIG1fcGFn
ZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFnZSh0aGlzLCB0b0ltcGwocGFnZUdy
b3VwUmVmKSk7CisgICAgcGFnZVRvVmlldygpLT5pbnNlcnQodG9BUEkobV9wYWdlLmdldCgpKSwg
dGhpcyk7CisgICAgbV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUodHJ1ZSk7CiB9CiAKIFFSYXdXZWJWaWV3UHJpdmF0ZTo6flFSYXdXZWJW
aWV3UHJpdmF0ZSgpCiB7CisgICAgbV9wYWdlLT5jbG9zZSgpOworfQorCitRUmF3V2ViVmlld1By
aXZhdGUqIFFSYXdXZWJWaWV3UHJpdmF0ZTo6Z2V0KFdLUGFnZVJlZiBwYWdlKQoreworICAgIHJl
dHVybiBwYWdlVG9WaWV3KCktPnZhbHVlKHBhZ2UpOwogfQogCiBRUmF3V2ViVmlldzo6UVJhd1dl
YlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJl
ZiwgUVJhd1dlYlZpZXdDbGllbnQqIGNsaWVudCkKLSAgICA6IGQobmV3IFFSYXdXZWJWaWV3UHJp
dmF0ZShXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKSwgV2ViS2l0Ojp0b0ltcGwocGFnZUdyb3Vw
UmVmKSwgY2xpZW50KSkKKyAgICA6IGQobmV3IFFSYXdXZWJWaWV3UHJpdmF0ZShjb250ZXh0UmVm
LCBwYWdlR3JvdXBSZWYsIHRoaXMsIGNsaWVudCkpCiB7CiB9CiAKQEAgLTI2OCwyOSArNDE3LDM0
IEBAIFFSYXdXZWJWaWV3Ojp+UVJhd1dlYlZpZXcoKQogICAgIGRlbGV0ZSBkOwogfQogCi12b2lk
IFFSYXdXZWJWaWV3OjpjcmVhdGUoKQordm9pZCBRUmF3V2ViVmlldzo6c2V0VXNlVmlld3BvcnRD
b250cm9sbGVyKGJvb2wgdXNlKQoreworICAgIGQtPm1fdXNlVmlld3BvcnRDb250cm9sbGVyID0g
dXNlOworfQorCitib29sIFFSYXdXZWJWaWV3Ojp1c2VWaWV3cG9ydENvbnRyb2xsZXIoKSBjb25z
dAogewotICAgIGQtPm1fd2ViUGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOworICAgIHJl
dHVybiBkLT5tX3VzZVZpZXdwb3J0Q29udHJvbGxlcjsKIH0KIAogdm9pZCBRUmF3V2ViVmlldzo6
c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpCiB7Ci0gICAgZC0+bV93ZWJQYWdl
UHJveHktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHZhbHVlKTsKKyAgICBkLT5tX3Bh
Z2UtPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHZhbHVlKTsKIH0KIAogYm9vbCBRUmF3
V2ViVmlldzo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+
bV93ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7CisgICAgcmV0dXJu
IGQtPm1fcGFnZS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKIH0KIAogdm9pZCBRUmF3
V2ViVmlldzo6c2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkKIHsKLSAgICBkLT5tX3dlYlBh
Z2VQcm94eS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHZhbHVlKTsKKyAgICBkLT5tX3BhZ2UtPnNldERy
YXdzQmFja2dyb3VuZCh2YWx1ZSk7CiB9CiAKIGJvb2wgUVJhd1dlYlZpZXc6OmRyYXdCYWNrZ3Jv
dW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+bV93ZWJQYWdlUHJveHktPmRyYXdzQmFja2dy
b3VuZCgpOworICAgIHJldHVybiBkLT5tX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpOwogfQogCiBi
b29sIFFSYXdXZWJWaWV3Ojppc0ZvY3VzZWQoKSBjb25zdApAQCAtMzAxLDcgKzQ1NSw3IEBAIGJv
b2wgUVJhd1dlYlZpZXc6OmlzRm9jdXNlZCgpIGNvbnN0CiB2b2lkIFFSYXdXZWJWaWV3OjpzZXRG
b2N1c2VkKGJvb2wgZm9jdXNlZCkKIHsKICAgICBkLT5tX2ZvY3VzZWQgPSBmb2N1c2VkOwotICAg
IGQtPm1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OlZpZXdJc0ZvY3VzZWQpOworICAgIGQtPm1fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdl
YlBhZ2VQcm94eTo6Vmlld0lzRm9jdXNlZCk7CiB9CiAKIGJvb2wgUVJhd1dlYlZpZXc6OmlzVmlz
aWJsZSgpIGNvbnN0CkBAIC0zMTIsNyArNDY2LDcgQEAgYm9vbCBRUmF3V2ViVmlldzo6aXNWaXNp
YmxlKCkgY29uc3QKIHZvaWQgUVJhd1dlYlZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQog
ewogICAgIGQtPm1fdmlzaWJsZSA9IHZpc2libGU7Ci0gICAgZC0+bV93ZWJQYWdlUHJveHktPnZp
ZXdTdGF0ZURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7Cisg
ICAgZC0+bV9wYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlZp
ZXdJc1Zpc2libGUpOwogfQogCiBib29sIFFSYXdXZWJWaWV3Ojppc0FjdGl2ZSgpIGNvbnN0CkBA
IC0zMjMsOCArNDc3LDkgQEAgYm9vbCBRUmF3V2ViVmlldzo6aXNBY3RpdmUoKSBjb25zdAogdm9p
ZCBRUmF3V2ViVmlldzo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIGQtPm1fYWN0aXZl
ID0gYWN0aXZlOwotICAgIGQtPm1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Ci0gICAgY29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKCktPnNldEFjdGl2ZShhY3RpdmUpOworICAgIGQtPm1fcGFnZS0+dmlld1N0
YXRlRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOwor
ICAgIGlmIChjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSkKKyAgICAgICAgY29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKCktPnNldEFjdGl2ZShhY3RpdmUpOwogfQogCiBRU2l6ZSBRUmF3V2ViVmll
dzo6c2l6ZSgpIGNvbnN0CkBAIC0zMzQsMzMgKzQ4OSwyNyBAQCBRU2l6ZSBRUmF3V2ViVmlldzo6
c2l6ZSgpIGNvbnN0CiAKIHZvaWQgUVJhd1dlYlZpZXc6OnNldFNpemUoY29uc3QgUVNpemUmIHNp
emUpCiB7Ci0gICAgV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IGQtPm1f
d2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIFdlYktpdDo6RHJhd2luZ0FyZWFQcm94
eSAqZHJhd2luZ0FyZWEgPSBkLT5tX3BhZ2UtPmRyYXdpbmdBcmVhKCk7CisKICAgICBpZiAoIWRy
YXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZC0+bV93ZWJQYWdlUHJveHkt
PnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKHNpemUsIFdl
YkNvcmU6OkludFNpemUoKSk7Ci0KICAgICBkLT5tX3NpemUgPSBzaXplOwogCiAgICAgZHJhd2lu
Z0FyZWEtPnNldFNpemUoZC0+bV9zaXplLCBXZWJDb3JlOjpJbnRTaXplKCkpOwogICAgIGRyYXdp
bmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6
SW50UG9pbnQoKSwgZC0+bV9zaXplKSwgV2ViQ29yZTo6RmxvYXRQb2ludCgpKTsKIH0KIAotV0tQ
YWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdlUmVmKCkKK2Zsb2F0IFFSYXdXZWJWaWV3OjptaW5pbXVt
U2NhbGUoKSBjb25zdAogewotICAgIHJldHVybiB0b0FQSShkLT5tX3dlYlBhZ2VQcm94eS5nZXQo
KSk7CisgICAgaWYgKGQtPm1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZC0+
bV92aWV3cG9ydENvbnRyb2xsZXItPm1pbmltdW1TY2FsZSgpOworICAgIHJldHVybiAwLjI1Owog
fQogCi1XZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIFFSYXdXZWJWaWV3Ojpjb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUoKSBjb25zdAorV0tQYWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdl
UmVmKCkKIHsKLSAgICBXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gZC0+
bV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eSogY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgPSBkcmF3aW5nQXJlYS0+Y29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKLSAgICBpZiAoIWNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHktPmNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOworICAgIHJldHVybiB0b0FQ
SShkLT5tX3BhZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFFSYXdXZWJWaWV3OjpwYWludChjb25zdCBR
TWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3Mp
CkBAIC0zNzIsMjggKzUyMSw0MDcgQEAgdm9pZCBRUmF3V2ViVmlldzo6cGFpbnQoY29uc3QgUU1h
dHJpeDR4NCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBwYWkKICAgICBzY2Vu
ZS0+c2V0QWN0aXZlKHRydWUpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMCwgMCwg
ZC0+bV9zaXplLndpZHRoKCksIGQtPm1fc2l6ZS5oZWlnaHQoKSk7Ci0KICAgICBzY2VuZS0+cGFp
bnRUb0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtLCBvcGFjaXR5LCB0cmFuc2Zvcm0ubWFwUmVj
dChyZWN0KSwgcGFpbnRGbGFncyk7CiB9CiAKK3ZvaWQgUVJhd1dlYlZpZXc6OnBhaW50KFFQYWlu
dGVyKiBwYWludGVyKQoreworICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSog
c2NlbmUgPSBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKKyAgICBpZiAoIXNjZW5lKQorICAg
ICAgICByZXR1cm47CisgICAgc2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQocGFpbnRlcik7
Cit9CisKIHZvaWQgUVJhd1dlYlZpZXc6OnNlbmRLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KQog
ewotICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KFdlYktpdDo6TmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpOworICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZl
bnQpOwogfQogCiB2b2lkIFFSYXdXZWJWaWV3OjpzZW5kTW91c2VFdmVudChRTW91c2VFdmVudCog
ZXZlbnQsIGludCBjbGlja0NvdW50KQogewotICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVN
b3VzZUV2ZW50KFdlYktpdDo6TmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgUVRyYW5zZm9ybSgp
LCBjbGlja0NvdW50KSk7CisgICAgaGFuZGxlTW91c2VFdmVudChldmVudCwgUVRyYW5zZm9ybSgp
LCBjbGlja0NvdW50KTsKIH0KIAogdm9pZCBRUmF3V2ViVmlldzo6c2VuZFdoZWVsRXZlbnQoUVdo
ZWVsRXZlbnQqIGV2ZW50KQogewotICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2
ZW50KFdlYktpdDo6TmF0aXZlV2ViV2hlZWxFdmVudChldmVudCwgUVRyYW5zZm9ybSgpKSk7Cisg
ICAgaGFuZGxlV2hlZWxFdmVudChldmVudCwgUVRyYW5zZm9ybSgpKTsKIH0KIAogdm9pZCBRUmF3
V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQogewogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgZC0+bV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQo
V2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKLSNlbmRp
ZgorICAgIGhhbmRsZVRvdWNoRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSk7CisjZW5kaWYgLy8g
RU5BQkxFKFRPVUNIX0VWRU5UUykKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlS2V5Ym9h
cmRFdmVudChRS2V5RXZlbnQqIGV2ZW50KQoreworICAgIGQtPm1fcGFnZS0+aGFuZGxlS2V5Ym9h
cmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2ZW50KSk7Cit9CisKK3ZvaWQgUVJhd1dl
YlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBjb25zdCBRVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGludCBjbGlja0NvdW50KQoreworICAgIGQtPm1fcGFnZS0+aGFuZGxl
TW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCB0cmFuc2Zvcm0sIGNsaWNrQ291
bnQpKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlV2hlZWxFdmVudChRV2hlZWxFdmVu
dCogZXZlbnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sgICAgCisgICAgZC0+bV9w
YWdlLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHRyYW5zZm9y
bSkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpoYW5kbGVTaW5nbGVUYXBFdmVudChjb25zdCBR
VG91Y2hFdmVudDo6VG91Y2hQb2ludCYgcG9pbnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9y
bSkKK3sKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgV2ViR2VzdHVyZUV2ZW50IGdl
c3R1cmUoV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXAsIHRyYW5zZm9ybS5tYXAocG9pbnQucG9z
KCkpLnRvUG9pbnQoKSwgcG9pbnQuc2NyZWVuUG9zKCkudG9Qb2ludCgpLCBXZWJFdmVudDo6TW9k
aWZpZXJzKDApLCAwLCBJbnRTaXplKHBvaW50LnJlY3QoKS5zaXplKCkudG9TaXplKCkpLCBGbG9h
dFBvaW50KDAsIDApKTsKKyAgICBkLT5tX3BhZ2UtPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJl
KTsKKyNlbmRpZiAvLyBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit9CisKK3ZvaWQgUVJhd1dlYlZp
ZXc6OmhhbmRsZURvdWJsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JiBw
b2ludCwgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKKyAgICBkLT5tX3BhZ2UtPmZpbmRab29tYWJsZUFyZWFGb3JQb2ludCh0cmFuc2Zv
cm0ubWFwKHBvaW50LnBvcygpKS50b1BvaW50KCksIFdlYkNvcmU6OkludFNpemUocG9pbnQucmVj
dCgpLnNpemUoKS50b1NpemUoKSkpOworI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
K30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlVG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZl
bnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgIGQtPm1fcGFnZS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50
KGV2ZW50LCB0cmFuc2Zvcm0pKTsKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorfQor
CitpbnQgUVJhd1dlYlZpZXc6OmRldmljZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
bV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+ZGV2aWNlV2lkdGgoKTsKK30KKwor
dm9pZCBRUmF3V2ViVmlldzo6c2V0RGV2aWNlV2lkdGgoaW50IHdpZHRoKQoreworICAgIGQtPm1f
cGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldERldmljZVdpZHRoKHdpZHRoKTsK
K30KKworaW50IFFSYXdXZWJWaWV3OjpkZXZpY2VIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBkLT5tX3BhZ2UtPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5kZXZpY2VIZWlnaHQoKTsK
K30KKwordm9pZCBRUmF3V2ViVmlldzo6c2V0RGV2aWNlSGVpZ2h0KGludCBoZWlnaHQpCit7Cisg
ICAgZC0+bV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0RGV2aWNlSGVpZ2h0
KGhlaWdodCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNldFByZWZlcnJlZE1pbmltdW1Db250
ZW50c1dpZHRoKGludCB3aWR0aCkKK3sKKyAgICBXZWJQcmVmZXJlbmNlcyogd2ViUHJlZmVyZW5j
ZXMgPSBkLT5tX3BhZ2UtPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpOworICAgIGlmICh3aWR0
aCA9PSB3ZWJQcmVmZXJlbmNlcy0+bGF5b3V0RmFsbGJhY2tXaWR0aCgpKQorICAgICAgICByZXR1
cm47CisgICAgd2ViUHJlZmVyZW5jZXMtPnNldExheW91dEZhbGxiYWNrV2lkdGgod2lkdGgpOwor
fQorCitpbnQgUVJhd1dlYlZpZXc6OnByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoKCkKK3sK
KyAgICByZXR1cm4gZC0+bV9wYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+bGF5b3V0
RmFsbGJhY2tXaWR0aCgpOworfQorCitXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUq
IFFSYXdXZWJWaWV3Ojpjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSBjb25zdAoreworICAgIGlm
ICghZCB8fCAhZC0+bV9wYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gZC0+bV9wYWdlLT5kcmF3aW5nQXJlYSgpOworICAg
IGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybiAwOworICAgIFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkqIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5ID0g
ZHJhd2luZ0FyZWEtPmNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7CisgICAgaWYgKCFj
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LT5jb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlRHJhZ0VudGVyRXZlbnQoUURyYWdF
bnRlckV2ZW50KiBldmVudCwgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIERy
YWdEYXRhIGRyYWdEYXRhKGV2ZW50LT5taW1lRGF0YSgpLCB0cmFuc2Zvcm0ubWFwKGV2ZW50LT5w
b3MoKSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2ZW50LT5w
b3NzaWJsZUFjdGlvbnMoKSkpOworICAgIGQtPm1fcGFnZS0+cmVzZXREcmFnT3BlcmF0aW9uKCk7
CisgICAgZC0+bV9wYWdlLT5kcmFnRW50ZXJlZCgmZHJhZ0RhdGEpOworICAgIGV2ZW50LT5hY2Nl
cHRQcm9wb3NlZEFjdGlvbigpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpoYW5kbGVEcmFnTGVh
dmVFdmVudChRRHJhZ0xlYXZlRXZlbnQqIC8qIGV2ZW50ICovKQoreworICAgIC8vIEZJWE1FOiBT
aG91bGQgbm90IHVzZSBRQ3Vyc29yOjpwb3MoKQorICAgIERyYWdEYXRhIGRyYWdEYXRhKDAsIFdl
YkNvcmU6OkludFBvaW50KCksIFFDdXJzb3I6OnBvcygpLCBEcmFnT3BlcmF0aW9uTm9uZSk7Cisg
ICAgZC0+bV9wYWdlLT5kcmFnRXhpdGVkKCZkcmFnRGF0YSk7CisgICAgZC0+bV9wYWdlLT5yZXNl
dERyYWdPcGVyYXRpb24oKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlRHJhZ01vdmVF
dmVudChRRHJhZ01vdmVFdmVudCogZXZlbnQsIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSkK
K3sKKyAgICBib29sIGFjY2VwdGVkID0gZXZlbnQtPmlzQWNjZXB0ZWQoKTsKKworICAgIERyYWdE
YXRhIGRyYWdEYXRhKGV2ZW50LT5taW1lRGF0YSgpLCB0cmFuc2Zvcm0ubWFwKGV2ZW50LT5wb3Mo
KSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2ZW50LT5wb3Nz
aWJsZUFjdGlvbnMoKSkpOworICAgIGQtPm1fcGFnZS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKTsK
KworICAgIERyYWdPcGVyYXRpb24gcmVzdWx0ID0gZC0+bV9wYWdlLT5kcmFnU2Vzc2lvbigpLm9w
ZXJhdGlvbjsKKyAgICBldmVudC0+c2V0RHJvcEFjdGlvbihkcmFnT3BlcmF0aW9uVG9Ecm9wQWN0
aW9uKHJlc3VsdCkpOworCisgICAgaWYgKHJlc3VsdCAhPSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAg
ICAgICAgZXZlbnQtPmFjY2VwdCgpOworCisgICAgZXZlbnQtPnNldEFjY2VwdGVkKGFjY2VwdGVk
KTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2
ZW50LCBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgYm9vbCBhY2NlcHRlZCA9
IGV2ZW50LT5pc0FjY2VwdGVkKCk7CisKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShldmVudC0+bWlt
ZURhdGEoKSwgdHJhbnNmb3JtLm1hcChldmVudC0+cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJv
cEFjdGlvblRvRHJhZ09wZXJhdGlvbihldmVudC0+cG9zc2libGVBY3Rpb25zKCkpKTsKKworICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKKyAgICBkLT5tX3BhZ2UtPnBl
cmZvcm1EcmFnKCZkcmFnRGF0YSwgU3RyaW5nKCksIGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZv
clVwbG9hZCk7CisgICAgRHJhZ09wZXJhdGlvbiByZXN1bHQgPSBkLT5tX3BhZ2UtPmRyYWdTZXNz
aW9uKCkub3BlcmF0aW9uOworCisgICAgZXZlbnQtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJhdGlv
blRvRHJvcEFjdGlvbihyZXN1bHQpKTsKKyAgICBldmVudC0+YWNjZXB0KCk7CisgICAgZXZlbnQt
PnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6aGFuZGxlSW5w
dXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCogZXYpCit7CisgICAgUVN0cmluZyBjb21t
aXQgPSBldi0+Y29tbWl0U3RyaW5nKCk7CisgICAgUVN0cmluZyBjb21wb3NpdGlvbiA9IGV2LT5w
cmVlZGl0U3RyaW5nKCk7CisKKyAgICBpbnQgcmVwbGFjZW1lbnRTdGFydCA9IGV2LT5yZXBsYWNl
bWVudFN0YXJ0KCk7CisgICAgaW50IHJlcGxhY2VtZW50TGVuZ3RoID0gZXYtPnJlcGxhY2VtZW50
TGVuZ3RoKCk7CisKKyAgICAvLyBOT1RFOiBXZSBtaWdodCB3YW50IHRvIGhhbmRsZSBldmVudHMg
b2Ygb25lIGNoYXIgYXMgc3BlY2lhbAorICAgIC8vIGFuZCByZXNlbmQgdGhlbSBhcyBrZXkgZXZl
bnRzIHRvIG1ha2Ugd2ViIHNpdGUgY29tcGxldGlvbiB3b3JrLgorCisgICAgaW50IGN1cnNvclBv
c2l0aW9uV2l0aGluQ29tcG9zaXRpb24gPSAwOworCisgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW5lPiB1bmRlcmxpbmVzOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBldi0+YXR0cmli
dXRlcygpLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFFJbnB1dE1ldGhvZEV2ZW50OjpB
dHRyaWJ1dGUmIGF0dHIgPSBldi0+YXR0cmlidXRlcygpLmF0KGkpOworICAgICAgICBzd2l0Y2gg
KGF0dHIudHlwZSkgeworICAgICAgICBjYXNlIFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0
OiB7CisgICAgICAgICAgICBpZiAoY29tcG9zaXRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBRVGV4dENoYXJGb3JtYXQgdGV4dENoYXJGb3JtYXQg
PSBhdHRyLnZhbHVlLnZhbHVlPFFUZXh0Rm9ybWF0PigpLnRvQ2hhckZvcm1hdCgpOworICAgICAg
ICAgICAgUUNvbG9yIHFjb2xvciA9IHRleHRDaGFyRm9ybWF0LnVuZGVybGluZUNvbG9yKCk7Cisg
ICAgICAgICAgICBDb2xvciBjb2xvciA9IG1ha2VSR0JBKHFjb2xvci5yZWQoKSwgcWNvbG9yLmdy
ZWVuKCksIHFjb2xvci5ibHVlKCksIHFjb2xvci5hbHBoYSgpKTsKKyAgICAgICAgICAgIGludCBz
dGFydCA9IHFNaW4oYXR0ci5zdGFydCwgKGF0dHIuc3RhcnQgKyBhdHRyLmxlbmd0aCkpOworICAg
ICAgICAgICAgaW50IGVuZCA9IHFNYXgoYXR0ci5zdGFydCwgKGF0dHIuc3RhcnQgKyBhdHRyLmxl
bmd0aCkpOworICAgICAgICAgICAgdW5kZXJsaW5lcy5hcHBlbmQoQ29tcG9zaXRpb25VbmRlcmxp
bmUoc3RhcnQsIGVuZCwgY29sb3IsIGZhbHNlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgUUlucHV0TWV0aG9kRXZlbnQ6OkN1cnNvcjoKKyAgICAgICAg
ICAgIGlmIChhdHRyLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBjdXJzb3JQb3NpdGlvbldpdGhp
bkNvbXBvc2l0aW9uID0gYXR0ci5zdGFydDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IC8vIFNlbGVjdGlvbiBpcyBoYW5kbGVkIGZ1cnRoZXIgZG93bi4KKyAgICAgICAgZGVmYXVsdDog
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29tcG9zaXRpb24uaXNFbXB0eSgp
KSB7CisgICAgICAgIGludCBzZWxlY3Rpb25TdGFydCA9IC0xOworICAgICAgICBpbnQgc2VsZWN0
aW9uTGVuZ3RoID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBldi0+YXR0cmlidXRl
cygpLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBRSW5wdXRNZXRob2RFdmVudDo6
QXR0cmlidXRlJiBhdHRyID0gZXYtPmF0dHJpYnV0ZXMoKS5hdChpKTsKKyAgICAgICAgICAgIGlm
IChhdHRyLnR5cGUgPT0gUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbikgeworICAgICAgICAg
ICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gYXR0ci5zdGFydDsKKyAgICAgICAgICAgICAgICBzZWxl
Y3Rpb25MZW5ndGggPSBhdHRyLmxlbmd0aDsKKworICAgICAgICAgICAgICAgIEFTU0VSVChzZWxl
Y3Rpb25TdGFydCA+PSAwKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0aW9uTGVuZ3Ro
ID49IDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgZC0+bV9wYWdlLT5jb25maXJtQ29tcG9zaXRpb24oY29tbWl0LCBzZWxlY3Rp
b25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
Y3Vyc29yUG9zaXRpb25XaXRoaW5Db21wb3NpdGlvbiA+PSAwKTsKKyAgICAgICAgQVNTRVJUKHJl
cGxhY2VtZW50U3RhcnQgPj0gMCk7CisKKyAgICAgICAgZC0+bV9wYWdlLT5zZXRDb21wb3NpdGlv
bihjb21wb3NpdGlvbiwgdW5kZXJsaW5lcywKKyAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uV2l0
aGluQ29tcG9zaXRpb24sIGN1cnNvclBvc2l0aW9uV2l0aGluQ29tcG9zaXRpb24sCisgICAgICAg
ICAgICByZXBsYWNlbWVudFN0YXJ0LCByZXBsYWNlbWVudExlbmd0aCk7CisgICAgfQorCisgICAg
ZXYtPmFjY2VwdCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZW5kRmluZFpvb21hYmxlQXJl
YUZvclBvaW50KGNvbnN0IFFQb2ludCYgcG9pbnQsIGNvbnN0IFFTaXplJiBhcmVhKQoreworICAg
IGQtPm1fcGFnZS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KEludFBvaW50KHBvaW50KSwgSW50
U2l6ZShhcmVhKSk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNlbmRQb3RlbnRpYWxBY3RpdmF0
aW9uKGNvbnN0IFFQb2ludCYgcG9pbnQsIGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIGQtPm1f
cGFnZS0+aGFuZGxlUG90ZW50aWFsQWN0aXZhdGlvbihJbnRQb2ludChwb2ludCksIEludFNpemUo
c2l6ZSkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3Ojppbml0aWFsaXplKGJvb2wgdXNlRml4ZWRM
YXlvdXQpCit7CisgICAgZC0+bV9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOworICAgIGQtPm1f
cGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodXNlRml4ZWRMYXlvdXQpOworICAgIC8qCisgICAgICog
VE9ETzogVGhpcyBzaG91bGQgYmUgYWN0aXZhdGVkIGJ5IGxhdGVyIHBhdGNoZXMKKyAgICBpZiAo
dXNlRml4ZWRMYXlvdXQpIHsKKyAgICAgICAgZC0+bV92aWV3cG9ydENvbnRyb2xsZXJDbGllbnQg
PSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0KGQtPm1fY2xpZW50
KSk7CisgICAgICAgIGQtPm1fdmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIoZC0+bV9wYWdlLmdldCgpLCBkLT5tX3ZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC5nZXQoKSkpOworICAgIH0KKyAgICAqLworfQorCit2b2lkIFFSYXdXZWJWaWV3Ojpk
aWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3QgUVNpemVGJiBzaXplKQoreworICAgIGlmIChkLT5t
X3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgZC0+bV92aWV3cG9ydENvbnRyb2xsZXItPmRp
ZENoYW5nZVZpZXdwb3J0U2l6ZShGbG9hdFNpemUoc2l6ZSkpOworCit9CisKK2Zsb2F0IFFSYXdX
ZWJWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKK30KK3ZvaWQgUVJhd1dlYlZpZXc6OnNldEludHJpbnNp
Y0RldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQoreworICAgIGQtPm1f
cGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOwor
fQorCitRUmF3V2ViVmlld1ByaXZhdGUqIFFSYXdXZWJWaWV3OjpnZXRQcml2YXRlKFFSYXdXZWJW
aWV3KiByYXdXZWJWaWV3KQoreworICAgIHJldHVybiByYXdXZWJWaWV3LT5kOworfQorCitib29s
IFFSYXdXZWJWaWV3OjpyZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGQtPm1fcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXI7Cit9Cit2b2lkIFFSYXdXZWJWaWV3Ojpz
ZXRSZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcihib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxl
ID09IGQtPm1fcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBk
LT5tX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyID0gZW5hYmxlOworfQorCitRUmVjdEYgUVJhd1dl
YlZpZXc6OmVkaXRvclJlY3QoKQoreworICAgIHJldHVybiBRUmVjdEYoZC0+bV9wYWdlLT5lZGl0
b3JTdGF0ZSgpLmVkaXRvclJlY3QpOworfQorCitRUmVjdEYgUVJhd1dlYlZpZXc6OmN1cnNvclJl
Y3QoKQoreworICAgIHJldHVybiBRUmVjdEYoZC0+bV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmN1cnNv
clJlY3QpOworfQorCitRU3RyaW5nIFFSYXdXZWJWaWV3OjpzZWxlY3RlZFRleHQoKQoreworICAg
IHJldHVybiBRU3RyaW5nKGQtPm1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3RlZFRleHQpOwor
fQorCitRU3RyaW5nIFFSYXdXZWJWaWV3OjpzdXJyb3VuZGluZ1RleHQoKQoreworICAgIHJldHVy
biBRU3RyaW5nKGQtPm1fcGFnZS0+ZWRpdG9yU3RhdGUoKS5zdXJyb3VuZGluZ1RleHQpOworfQor
CitRdDo6SW5wdXRNZXRob2RIaW50cyBRUmF3V2ViVmlldzo6aW5wdXRNZXRob2RIaW50cygpCit7
CisgICAgcmV0dXJuIFF0OjpJbnB1dE1ldGhvZEhpbnRzKGQtPm1fcGFnZS0+ZWRpdG9yU3RhdGUo
KS5pbnB1dE1ldGhvZEhpbnRzKTsKK30KKwordW5zaWduZWQgUVJhd1dlYlZpZXc6OmN1cnNvclBv
c2l0aW9uKCkKK3sKKyAgICByZXR1cm4gZC0+bV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmN1cnNvclBv
c2l0aW9uOworfQorCit1bnNpZ25lZCBRUmF3V2ViVmlldzo6YW5jaG9yUG9zaXRpb24oKQorewor
ICAgIHJldHVybiBkLT5tX3BhZ2UtPmVkaXRvclN0YXRlKCkuYW5jaG9yUG9zaXRpb247Cit9CisK
K2Zsb2F0IFFSYXdXZWJWaWV3Ojppbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZsb2F0IHNjYWxl
KQoreworICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGQt
Pm1fdmlld3BvcnRDb250cm9sbGVyLT5pbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKHNjYWxlKTsK
KyAgICByZXR1cm4gc2NhbGU7Cit9CisKK2Zsb2F0IFFSYXdXZWJWaWV3OjpvdXRlckJvdW5kZWRW
aWV3cG9ydFNjYWxlKGZsb2F0IHNjYWxlKQoreworICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIGQtPm1fdmlld3BvcnRDb250cm9sbGVyLT5vdXRlckJvdW5k
ZWRWaWV3cG9ydFNjYWxlKHNjYWxlKTsKKyAgICByZXR1cm4gc2NhbGU7Cit9CisKK3ZvaWQgUVJh
d1dlYlZpZXc6OnN1c3BlbmRDb250ZW50KCkKK3sKKyAgICBpZiAoZC0+bV92aWV3cG9ydENvbnRy
b2xsZXIpCisgICAgICAgIGQtPm1fdmlld3BvcnRDb250cm9sbGVyLT5zdXNwZW5kQ29udGVudCgp
OworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpyZXN1bWVDb250ZW50KCkKK3sKKyAgICBpZiAoZC0+
bV92aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIGQtPm1fdmlld3BvcnRDb250cm9sbGVyLT5y
ZXN1bWVDb250ZW50KCk7Cit9CisKK1FQb2ludEYgUVJhd1dlYlZpZXc6OmJvdW5kQ29udGVudHNQ
b3NpdGlvbkF0U2NhbGUoY29uc3QgUVBvaW50RiYgcG9zaXRpb24sIGZsb2F0IHNjYWxlKQorewor
ICAgIGlmIChkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGQtPm1fdmll
d3BvcnRDb250cm9sbGVyLT5ib3VuZENvbnRlbnRzUG9zaXRpb25BdFNjYWxlKHBvc2l0aW9uLCBz
Y2FsZSk7CisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCitib29sIFFSYXdXZWJWaWV3OjpoYXNT
dXNwZW5kZWRDb250ZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWQtPm1fdmlld3BvcnRDb250cm9s
bGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGQtPm1fdmlld3BvcnRDb250
cm9sbGVyLT5oYXNTdXNwZW5kZWRDb250ZW50KCk7Cit9CisKK2Jvb2wgUVJhd1dlYlZpZXc6Omhh
ZFVzZXJJbnRlcmFjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFkLT5tX3ZpZXdwb3J0Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkLT5tX3ZpZXdwb3J0Q29u
dHJvbGxlci0+aGFkVXNlckludGVyYWN0aW9uKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNl
dEhhZFVzZXJJbnRlcmFjdGlvbihib29sIGludGVyYWN0aW9uKQoreworICAgIGlmICghZC0+bV92
aWV3cG9ydENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBkLT5tX3ZpZXdwb3J0Q29u
dHJvbGxlci0+c2V0SGFkVXNlckludGVyYWN0aW9uKGludGVyYWN0aW9uKTsKK30KKwordm9pZCBR
UmF3V2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IFFQb2ludEYmIG1h
cHBlZE9yaWdpbiwgZmxvYXQgc2NhbGUsIGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnkpCit7Cisg
ICAgaWYgKGQtPm1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBkLT5tX3ZpZXdwb3J0Q29u
dHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1hcHBlZE9yaWdpbiwgc2NhbGUs
IHRyYWplY3RvcnkpOworfQorCitib29sIFFSYXdXZWJWaWV3OjphbGxvd3NVc2VyU2NhbGluZygp
IGNvbnN0Cit7CisgICAgaWYgKCFkLT5tX3ZpZXdwb3J0Q29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBkLT5tX3ZpZXdwb3J0Q29udHJvbGxlci0+YWxsb3dzVXNl
clNjYWxpbmcoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6ZGlkQ29tbWl0TG9hZCgpCit7Cisg
ICAgaWYgKGQtPm1fdmlld3BvcnRDb250cm9sbGVyKQorICAgICAgICBkLT5tX3ZpZXdwb3J0Q29u
dHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOworfQorCitRVXJsIFFSYXdXZWJWaWV3OjpyZW1vdGVJ
bnNwZXRvclVybCgpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgcmV0dXJu
IFFVcmwoV2ViSW5zcGVjdG9yU2VydmVyOjpzaGFyZWQoKS5pbnNwZWN0b3JVcmxGb3JQYWdlSUQo
ZC0+bV9wYWdlLT5pbnNwZWN0b3IoKS0+cmVtb3RlSW5zcGVjdGlvblBhZ2VJRCgpKSk7CisjZWxz
ZQorICAgIHJldHVybiBRVXJsKCk7CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3
d2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vi
dmlld19wLmgKaW5kZXggNGFlM2U1ZTUzZWFjMzYwMTRmYjgwNTdmNDk1MGZhYWY1ZmMyYzI1Mi4u
OTY2MGQxYzIwNDk3YzRmOGU0Njg5NTc3Mzg0ZmIzNTY5ZGVlMGM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaApAQCAtMjYs
MjMgKzI2LDI5IEBACiAjZGVmaW5lIHFyYXd3ZWJ2aWV3X3BfaAogCiAjaW5jbHVkZSAicXdlYmtp
dGdsb2JhbC5oIgotCisjaW5jbHVkZSA8UVNpemU+CisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KIAogUVRfQkVHSU5fTkFNRVNQQUNF
Ci1jbGFzcyBRUmVjdDsKLWNsYXNzIFFSZWN0RjsKLWNsYXNzIFFQb2ludDsKLWNsYXNzIFFTaXpl
OworY2xhc3MgUUN1cnNvcjsKK2NsYXNzIFFEcmFnRW50ZXJFdmVudDsKK2NsYXNzIFFEcmFnTGVh
dmVFdmVudDsKK2NsYXNzIFFEcmFnTW92ZUV2ZW50OworY2xhc3MgUURyb3BFdmVudDsKIGNsYXNz
IFFLZXlFdmVudDsKK2NsYXNzIFFNYXRyaXg0eDQ7CiBjbGFzcyBRTW91c2VFdmVudDsKLWNsYXNz
IFFXaGVlbEV2ZW50OwotY2xhc3MgUVRvdWNoRXZlbnQ7CitjbGFzcyBRUGFpbnRlcjsKK2NsYXNz
IFFQb2ludDsKK2NsYXNzIFFSZWN0OworY2xhc3MgUVJlY3RGOworY2xhc3MgUVNpemVGOworY2xh
c3MgUVRyYW5zZm9ybTsKIGNsYXNzIFFVcmw7Ci1jbGFzcyBRTWF0cml4NHg0OwotY2xhc3MgUUN1
cnNvcjsKK2NsYXNzIFFXaGVlbEV2ZW50OwogUVRfRU5EX05BTUVTUEFDRQogCiBjbGFzcyBRUmF3
V2ViVmlld1ByaXZhdGU7CkBAIC01MSwxOCArNTcsNDUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOwogfQogCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIERvd25sb2FkUHJveHk7Cit9CisKIGNsYXNzIFFSYXdXZWJWaWV3Q2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5RUmF3V2ViVmlld0NsaWVudCgpIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9j
ZXNzQ3Jhc2hlZChjb25zdCBRVXJsJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vz
c1JlbGF1bmNoZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5n
ZWQoY29uc3QgUVNpemUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRDdXJz
b3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0
aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdh
c0hhbmRsZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25z
dCBRUG9pbnRGJiwgY29uc3QgUVJlY3RGJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBRU3RyaW5nJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29s
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFFTaXplJiBjb250
ZW50c1NpemUsIGNvbnN0IFFSZWN0JiBjb3ZlcmVkUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiwg
Y29uc3QgUVN0cmluZyYsIFFTdHJpbmcmLCBRU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3QgUVN0cmluZyYgaG9z
dG5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJl
cXVpcmVkUmVxdWVzdChjb25zdCBRU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29u
c3QgUVN0cmluZyYsIFFTdHJpbmcmLCBRU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVEb3dubG9hZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5KikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGRpZENoYW5nZVZpc2libGVDb250ZW50cygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplRiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBRUG9pbnRGJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IocXJlYWwgc2NhbGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIFFT
aXplIHZpZXdTaXplKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBRUmVjdEYgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgUVJlY3RGJiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAgdmly
dHVhbCBRUmVjdEYgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFFSZWN0RiYgcmVjdCkgeyByZXR1
cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgUVBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFFQb2lu
dCYgcG9pbnQpIHsgcmV0dXJuIHBvaW50OyB9CisgICAgdmlydHVhbCBRUmVjdCB3aW5kb3dUb1Nj
cmVlbihjb25zdCBRUmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorCisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVN0YXJ0RHJhZyhjb25zdCBRSW1hZ2UmLCBRTWltZURhdGEqLCBjb25zdCBRdDo6
RHJvcEFjdGlvbnMmLCBRUG9pbnQmLCBRUG9pbnQmLCBRdDo6RHJvcEFjdGlvbiYpID0gMDsKIH07
CiAKIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFSYXdXZWJWaWV3IHsKQEAgLTcwLDQwICsxMDMsMTE0
IEBAIHB1YmxpYzoKICAgICBRUmF3V2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
LCBRUmF3V2ViVmlld0NsaWVudCopOwogICAgIH5RUmF3V2ViVmlldygpOwogCi0gICAgdm9pZCBj
cmVhdGUoKTsKKyAgICB2b2lkIGluaXRpYWxpemUoYm9vbCB1c2VGaXhlZExheW91dCA9IGZhbHNl
KTsKKworICAgIHZvaWQgc2V0VXNlVmlld3BvcnRDb250cm9sbGVyKGJvb2wgdXNlKTsKKyAgICBi
b29sIHVzZVZpZXdwb3J0Q29udHJvbGxlcigpIGNvbnN0OworCisgICAgdm9pZCBzZW5kS2V5RXZl
bnQoUUtleUV2ZW50Kik7CisgICAgdm9pZCBzZW5kTW91c2VFdmVudChRTW91c2VFdmVudCosIGlu
dCBjbGlja0NvdW50ID0gMCk7CisgICAgdm9pZCBzZW5kV2hlZWxFdmVudChRV2hlZWxFdmVudCop
OworICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKworICAgIGJvb2wgdHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3Q7CisgICAgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tn
cm91bmQoYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQpOworCisgICAgYm9vbCBkcmF3QmFja2dy
b3VuZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5k
KTsKKworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CisgICAgdm9pZCBzZXRJ
bnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
dm9pZCBwYWludChRUGFpbnRlciopOworICAgIHZvaWQgcGFpbnQoY29uc3QgUU1hdHJpeDR4NCYg
dHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBwYWludEZsYWdzKTsKKyAgICB2b2lk
IHNlbmRGaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgUVBvaW50JiwgY29uc3QgUVNpemUm
KTsKKworICAgIGJvb2wgcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoKSBjb25zdDsKKyAgICB2b2lk
IHNldFJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKGJvb2wgZW5hYmxlKTsKKworICAgIHZvaWQgc2Vu
ZFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgUVBvaW50JiwgY29uc3QgUVNpemUmKTsKKworICAg
IHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2b2lkIGhhbmRsZU1v
dXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiwgaW50KTsKKyAgICB2b2lk
IGhhbmRsZVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJik7CisKKyAg
ICB2b2lkIGhhbmRsZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50
JiwgY29uc3QgUVRyYW5zZm9ybSYpOworICAgIHZvaWQgaGFuZGxlRG91YmxlVGFwRXZlbnQoY29u
c3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmLCBjb25zdCBRVHJhbnNmb3JtJik7CisgICAgdm9p
ZCBoYW5kbGVUb3VjaEV2ZW50KFFUb3VjaEV2ZW50KiwgY29uc3QgUVRyYW5zZm9ybSYpOworICAg
IHZvaWQgaGFuZGxlRHJhZ0VudGVyRXZlbnQoUURyYWdFbnRlckV2ZW50KiwgY29uc3QgUVRyYW5z
Zm9ybSYpOworICAgIHZvaWQgaGFuZGxlRHJhZ0xlYXZlRXZlbnQoUURyYWdMZWF2ZUV2ZW50Kik7
CisgICAgdm9pZCBoYW5kbGVEcmFnTW92ZUV2ZW50KFFEcmFnTW92ZUV2ZW50KiwgY29uc3QgUVRy
YW5zZm9ybSYpOworICAgIHZvaWQgaGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqLCBjb25zdCBR
VHJhbnNmb3JtJik7CisKKyAgICBmbG9hdCBpbm5lckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZsb2F0
KTsKKyAgICBmbG9hdCBvdXRlckJvdW5kZWRWaWV3cG9ydFNjYWxlKGZsb2F0KTsKKyAgICBRUG9p
bnRGIGJvdW5kQ29udGVudHNQb3NpdGlvbkF0U2NhbGUoY29uc3QgUVBvaW50RiYsIGZsb2F0KTsK
KyAgICB2b2lkIHN1c3BlbmRDb250ZW50KCk7CisgICAgdm9pZCByZXN1bWVDb250ZW50KCk7Cisg
ICAgYm9vbCBoYXNTdXNwZW5kZWRDb250ZW50KCkgY29uc3Q7CisgICAgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24oKSBjb25zdDsKKyAgICBib29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRIYWRVc2VySW50ZXJhY3Rpb24oYm9vbCBpbnRlcmFjdGlvbik7CisgICAgZmxv
YXQgbWluaW11bVNjYWxlKCkgY29uc3Q7CisKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzVmlz
aWJpbGl0eShjb25zdCBRUG9pbnRGJiBtYXBwZWRPcmlnaW4sIGZsb2F0IHNjYWxlLCBjb25zdCBR
UG9pbnRGJiB0cmFqZWN0b3J5ID0gUVBvaW50RigpKTsKKyAgICB2b2lkIGRpZENvbW1pdExvYWQo
KTsKIAotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBRU2l6ZSYpOwogICAgIFFTaXplIHNpemUoKSBj
b25zdDsKKyAgICBRUmVjdEYgZWRpdG9yUmVjdCgpOworICAgIFFSZWN0RiBjdXJzb3JSZWN0KCk7
CisKKyAgICBRU3RyaW5nIHNlbGVjdGVkVGV4dCgpOworICAgIFFTdHJpbmcgc3Vycm91bmRpbmdU
ZXh0KCk7CisgICAgUXQ6OklucHV0TWV0aG9kSGludHMgaW5wdXRNZXRob2RIaW50cygpOworCisg
ICAgdW5zaWduZWQgY3Vyc29yUG9zaXRpb24oKTsKKyAgICB1bnNpZ25lZCBhbmNob3JQb3NpdGlv
bigpOwogCi0gICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOworICAgIHZvaWQgZXhpdEZ1bGxTY3Jl
ZW4oKTsKKyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwor
ICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lk
IHNldFNob3dzQXNTb3VyY2UoYm9vbCBzaG93c0FzU291cmNlKTsKKyAgICBib29sIHNob3dzQXNT
b3VyY2UoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Rm9jdXNlZChib29sIGZvY3VzZWQpOwogICAg
IGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7Cisg
ICAgYm9vbCB1c2VGaXhlZExheW91dCgpIGNvbnN0OworCiAgICAgYm9vbCBpc1Zpc2libGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKTsKIAotICAgIHZvaWQgc2V0
QWN0aXZlKGJvb2wpOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICB2b2lkIHNldEFj
dGl2ZShib29sIGFjdGl2ZSk7CiAKLSAgICB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZChi
b29sKTsKLSAgICBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OworICAgIGJvb2wg
dXNlUGFnZVZpZXdwb3J0Q29udHJvbGxlcigpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlUGFnZVZp
ZXdwb3J0Q29udHJvbGxlcihib29sIHVzZVBWQyk7CiAKLSAgICB2b2lkIHNldERyYXdCYWNrZ3Jv
dW5kKGJvb2wpOwotICAgIGJvb2wgZHJhd0JhY2tncm91bmQoKSBjb25zdDsKKyAgICBpbnQgZGV2
aWNlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldERldmljZVdpZHRoKGludCB3aWR0aCk7CiAK
LSAgICAvLyBQYWludHMgb24gdGhlIGN1cnJlbnQgR0wgY29udGV4dC4KLSAgICB2b2lkIHBhaW50
KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFp
bnRGbGFncyk7CisgICAgaW50IGRldmljZUhlaWdodCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGV2
aWNlSGVpZ2h0KGludCBoZWlnaHQpOwogCi0gICAgV0tQYWdlUmVmIHBhZ2VSZWYoKTsKKyAgICB2
b2lkIHNldFByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoKGludCB3aWR0aCk7CisgICAgaW50
IHByZWZlcnJlZE1pbmltdW1Db250ZW50c1dpZHRoKCk7CiAKLSAgICB2b2lkIHNlbmRLZXlFdmVu
dChRS2V5RXZlbnQqKTsKLSAgICB2b2lkIHNlbmRNb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50
IGNsaWNrQ291bnQgPSAwKTsKLSAgICB2b2lkIHNlbmRXaGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7
Ci0gICAgdm9pZCBzZW5kVG91Y2hFdmVudChRVG91Y2hFdmVudCopOworICAgIHZvaWQgc2V0U2l6
ZShjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29u
c3QgUVNpemVGJik7CiAKLXByaXZhdGU6CisgICAgUVVybCByZW1vdGVJbnNwZXRvclVybCgpOwor
CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYoKTsKKworICAgIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RF
dmVudChRSW5wdXRNZXRob2RFdmVudCogZXYpOwogICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkgY29uc3Q7CisgICAgc3RhdGlj
IFFSYXdXZWJWaWV3UHJpdmF0ZSogZ2V0UHJpdmF0ZShRUmF3V2ViVmlldyogcmF3V2ViVmlldyk7
CiAKK3ByaXZhdGU6CiAgICAgUVJhd1dlYlZpZXdQcml2YXRlKiBkOworICAgIGZyaWVuZCBjbGFz
cyBRV2ViS2l0VGVzdDsKIH07CiAKICNlbmRpZiAvLyBxcmF3d2Vidmlld19wX2gKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9w
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3Au
aAppbmRleCA1YThmYzM0Nzk5NTQ3NDg5ZjE1ZjA4OTQ5M2M1YWMyYTU4MzBlOGE3Li4zMGQ3OTIx
ODEyZmE2MmYzZjNmODA0YjU2YjdlNGJkMWQ2OGQwNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaApAQCAtMjQsMTQg
KzI0LDIyIEBACiAKICNpZm5kZWYgcXJhd3dlYnZpZXdfcF9wX2gKICNkZWZpbmUgcXJhd3dlYnZp
ZXdfcF9wX2gKLQorI2luY2x1ZGUgIkRlZmF1bHRVbmRvQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRRdC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKICNpbmNsdWRlICJX
ZWJFZGl0Q29tbWFuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNp
bmNsdWRlICJxcmF3d2Vidmlld19wLmgiCiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
UGFnZVByb3h5OworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCiBjbGFzcyBRUmF3V2Vi
Vmlld1ByaXZhdGUgOiBwdWJsaWMgV2ViS2l0OjpQYWdlQ2xpZW50IHsKIHB1YmxpYzoKIApAQCAt
NDQsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJp
bmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0
Q29tbWFuZHMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKTsKICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSogZG93bmxv
YWQpOwpAQCAtOTIsOCArMTAwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5
PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogI2Vu
ZGlmCi0KLSAgICBRUmF3V2ViVmlld1ByaXZhdGUoV2ViS2l0OjpXZWJDb250ZXh0KiwgV2ViS2l0
OjpXZWJQYWdlR3JvdXAqLCBRUmF3V2ViVmlld0NsaWVudCopOworICAgIFFSYXdXZWJWaWV3UHJp
dmF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBRUmF3V2ViVmlldyogcHVibGljVmlldywgUVJhd1dlYlZpZXdDbGllbnQqIGNsaWVudCk7CiAg
ICAgflFSYXdXZWJWaWV3UHJpdmF0ZSgpOwogCiAgICAgLy8gUGFnZUNsaWVudApAQCAtMTA1LDMw
ICsxMTIsMzQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3Mo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5k
ZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVy
RnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDb3JlOjpDdXJzb3ImKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkg
eyByZXR1cm4gbV9mb2N1c2VkOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKSB7
IHJldHVybiBtX3Zpc2libGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZl
KCkgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5h
dmlnYXRvclF0T2JqZWN0KFdLU3RyaW5nUmVmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgYm9vbCBp
c1ZpZXdGb2N1c2VkKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCk7CiAgICAgdmlydHVhbCBib29sIGlzVmll
d0luV2luZG93KCkgeyByZXR1cm4gdHJ1ZTsgfSAvLyBGSVhNRQotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5
RXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVu
dEhhbmRsZWQpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIGRv
bmVXaXRoVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29s
IHdhc0V2ZW50SGFuZGxlZCk7CiAjZW5kaWYKKyAgICBzdGF0aWMgUVJhd1dlYlZpZXdQcml2YXRl
KiBnZXQoV0tQYWdlUmVmKTsKIAotCisgICAgUVNpemUgbV9zaXplOworICAgIGJvb2wgbV9hY3Rp
dmU7CiAgICAgYm9vbCBtX2ZvY3VzZWQ7CisgICAgYm9vbCBtX3JlbmRlclRvT2Zmc2NyZWVuQnVm
ZmVyOwogICAgIGJvb2wgbV92aXNpYmxlOwotICAgIGJvb2wgbV9hY3RpdmU7Ci0gICAgUVNpemUg
bV9zaXplOworICAgIGJvb2wgbV91c2VWaWV3cG9ydENvbnRyb2xsZXI7CiAKICAgICBRUmF3V2Vi
Vmlld0NsaWVudCogbV9jbGllbnQ7Ci0gICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJv
eHk+IG1fd2ViUGFnZVByb3h5OwotCi1wcml2YXRlOgorICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+
IG1fcGFnZTsKKyAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlcj4gbV92aWV3cG9ydENv
bnRyb2xsZXI7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdD4gbV92
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CisgICAgV2ViS2l0OjpEZWZhdWx0VW5kb0NvbnRyb2xs
ZXIgbV91bmRvQ29udHJvbGxlcjsKK3ByaXZhdGU6ICAgIAogICAgIFFSYXdXZWJWaWV3KiBxOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
cmF3d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3BwCmluZGV4IDIwODI4
OGQxZTZkMGVjZTViZTdmZmVkM2ExZWZlMTJlZGM1YzAyZDguLmQ4MTkxZmM0NDgwNGVhMDljMmM0
YTQzYTY0MjUwOTI5NjRkOThmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vi
dmlldy5jcHAKQEAgLTE2LDYgKzE2LDcgQEAKICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgogKi8KKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICIu
Li91dGlsLmgiCiAKICNpbmNsdWRlIDxRSW1hZ2U+CkBAIC00Miw3ICs0Myw3IEBAIHN0YXRpYyBX
S0NvbnRleHRSZWYgd2ViQ29udGV4dCgpCiAKIHN0YXRpYyBXS1BhZ2VHcm91cFJlZiBjcmVhdGVX
ZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKIHsKLSAgICBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVX
aXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID1XS1BhZ2VH
cm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKChuYW1lLmlzRW1wdHkoKSA/IDAgOldLU3RyaW5nQ3Jl
YXRlV2l0aFFTdHJpbmcobmFtZSkpKTsKICAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
ID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOwogICAgIFdLUHJlZmVyZW5j
ZXNTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRy
dWUpOwpAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3dlYlZpZXcg
PSBuZXcgUVJhd1dlYlZpZXcod2ViQ29udGV4dCgpLCB3ZWJQYWdlR3JvdXAoUVN0cmluZygpKSwg
dGhpcyk7CiAgICAgICAgIG1fd2ViVmlldy0+c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRyYW5z
cGFyZW50KTsKLSAgICAgICAgbV93ZWJWaWV3LT5jcmVhdGUoKTsKKyAgICAgICAgbV93ZWJWaWV3
LT5pbml0aWFsaXplKHRydWUpOwogCiAgICAgICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJD
bGllbnQ7CiAgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9h
ZGVyQ2xpZW50KSk7CkBAIC03Myw3ICs3NCw2IEBAIHB1YmxpYzoKIAogICAgICAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJlZigpLCAmbG9hZGVyQ2xpZW50KTsK
ICAgICAgICAgV0tQYWdlTGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtX3dlYlZpZXctPnBhZ2VS
ZWYoKSwga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KTsKLSAgICAgICAgV0tQYWdl
U2V0VXNlRml4ZWRMYXlvdXQobV93ZWJWaWV3LT5wYWdlUmVmKCksIHRydWUpOwogCiAgICAgICAg
IG1fd2ViVmlldy0+c2V0U2l6ZShzaXplKTsKICAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2Vk
KHRydWUpOwpAQCAtOTksMTIgKzk5LDM5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgdmlld1JlcXVlc3RlZFNjcm9sbChjb25zdCBRUG9pbnQmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9j
ZXNzQ3Jhc2hlZChjb25zdCBRVXJsJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNz
UmVsYXVuY2hlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB2aWV3Q29udGVudFNpemVDaGFuZ2Vk
KGNvbnN0IFFTaXplJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRDdXJzb3JP
dmVycmlkZShjb25zdCBRQ3Vyc29yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5
RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSB7IH0KKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3Qg
UVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBRUG9pbnRGJiwgY29uc3QgUVJlY3RGJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2Jq
ZWN0KGNvbnN0IFFTdHJpbmcmKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFt
ZShjb25zdCBRU2l6ZSYsIGNvbnN0IFFSZWN0JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHRJbnB1dFN0YXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhlbnRpY2F0aW9u
UmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0
cmluZyYsIFFTdHJpbmcmLCBRU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZUNl
cnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBRU3RyaW5nJiApIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVk
UmVxdWVzdChjb25zdCBRU3RyaW5nJiwgdWludDE2X3QsIGNvbnN0IFFTdHJpbmcmLCBRU3RyaW5n
JiwgUVN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
V2ViS2l0OjpEb3dubG9hZFByb3h5KikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKCkgIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50
c1NpemUoY29uc3QgUVNpemVGJikgIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBv
c2l0aW9uKGNvbnN0IFFQb2ludEYmKSAgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2Fs
ZUZhY3RvcihxcmVhbCkgIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydEF0dHJpYnV0ZXND
aGFuZ2VkKCkgeyB9CisgICAgdmlydHVhbCBRU2l6ZSB2aWV3U2l6ZSgpIGNvbnN0ICB7IHJldHVy
biBRU2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIFFSZWN0RiBjb252ZXJ0VG9EZXZpY2VTcGFjZShj
b25zdCBRUmVjdEYmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFFSZWN0RiBj
b252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgUVJlY3RGJiByZWN0KSB7IHJldHVybiByZWN0OyB9Cisg
ICAgdmlydHVhbCBRUG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3QgUVBvaW50JiBwb2ludCkgeyBy
ZXR1cm4gcG9pbnQ7IH0KKyAgICB2aXJ0dWFsIFFSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFFS
ZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlU3Rh
cnREcmFnKGNvbnN0IFFJbWFnZSYsIFFNaW1lRGF0YSosIGNvbnN0IFF0OjpEcm9wQWN0aW9ucyYs
IFFQb2ludCYsIFFQb2ludCYsIFF0OjpEcm9wQWN0aW9uJikgIHsgfQogCiAgICAgdm9pZCBmcmFt
ZUxvYWRlZCgpCiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDhkNjdmN2JmZTg2OTdkODU1OTE1ZGNiNDM1ZDE1MjdlYjRiYTc5NDYuLjc1
NjlhNTAzNjgyZWU4YTU5NmQxYWFmNTc5MTRlNmRhMzU3Y2VlMzggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0w
My0yMCAgTWljaGFlbCBCcsO8bmluZyAgPG1pY2hhZWwuYnJ1bmluZ0BkaWdpYS5jb20+CisKKyAg
ICAgICAgW1F0XVtXSzJdIEV4dGVuZCBRUmF3V2ViVmlldyBjbGFzc2VzIGZvciB1c2UgYXMgYmFz
ZSBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTI3MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIHRoZSBuZWNlc3NhcnkgY2hhbmdlcyBhbmQgYWRkIHRoZSBuZWVkZWQgUVJhd1dlYlZpZXdD
bGllbnQgbWV0aG9kCisgICAgICAgIGltcGxlbWVudGF0aW9ucyB0byBrZWVwIE1pbmlCcm93c2Vy
UmF3IGluIHRoZSBzYW1lIGZ1bmN0aW9uYWwgc3RhdGUgYXMgYmVmb3JlLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuY3BwOgorICAgICAgICAoY3JlYXRlV2ViUGFnZUdyb3Vw
KToKKyAgICAgICAgKFZpZXc6OlZpZXcpOgorICAgICAgICAoVmlldzo6ZXhwb3NlRXZlbnQpOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3Jhdy9WaWV3Lmg6CisgICAgICAgIChWaWV3Ojp2aWV3
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoVmlldzo6ZGlkRmluZFpvb21hYmxlQXJlYSk6Cisg
ICAgICAgIChWaWV3OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6Cisg
ICAgICAgIChWaWV3KToKKyAgICAgICAgKFZpZXc6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAg
KFZpZXc6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFZpZXc6OmhhbmRsZVdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKFZpZXc6OmhhbmRsZUF1dGhlbnRpY2F0aW9u
UmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFZpZXc6OmhhbmRsZUNlcnRpZmljYXRlVmVyaWZp
Y2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChWaWV3OjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9u
UmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFZpZXc6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6
CisgICAgICAgIChWaWV3OjpoYW5kbGVTdGFydERyYWcpOgorICAgICAgICAoVmlldzo6ZGlkQ2hh
bmdlVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKFZpZXc6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZSk6CisgICAgICAgIChWaWV3OjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKFZpZXc6
OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChWaWV3Ojp2aWV3cG9ydEF0dHJpYnV0ZXND
aGFuZ2VkKToKKyAgICAgICAgKFZpZXc6OnZpZXdTaXplKToKKyAgICAgICAgKFZpZXc6OmNvbnZl
cnRUb0RldmljZVNwYWNlKToKKyAgICAgICAgKFZpZXc6OmNvbnZlcnRUb1VzZXJTcGFjZSk6Cisg
ICAgICAgIChWaWV3OjpzY3JlZW5Ub1dpbmRvdyk6CisgICAgICAgIChWaWV3Ojp3aW5kb3dUb1Nj
cmVlbik6CisKIDIwMTMtMDMtMjAgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0dUS10gYWNjZXNzaWJpbGl0eS9hcmlhLXNjcm9sbGJhci1yb2xlLmh0
bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcu
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuY3BwCmluZGV4IDRjNGQ1Mjg1NTMx
NDliM2JmY2VkNmM5NmQ0MzU1NTA2YzMyZjBhMDkuLmQ2MGUyYWNmYTkyOWRhOTcxZTJmNzRkYzUw
Y2I0ZTM0MzIwY2M4YzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3
LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgc3RhdGljIFdLQ29udGV4dFJlZiBjcmVhdGVXZWJDb250ZXh0KCkKIAogc3RhdGljIFdL
UGFnZUdyb3VwUmVmIGNyZWF0ZVdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQogewot
ICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRp
ZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKG5hbWUpKTsKKyAgICBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoKG5hbWUuaXNFbXB0
eSgpID8gMCA6V0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSkpOwogICAgIFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91
cCk7CiAgICAgV0tQcmVmZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHBy
ZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CkBAIC02OSw4ICs2OSw3IEBAIFZpZXc6OlZpZXcoY29u
c3QgUVN0cmluZyYgdXJsKQogICAgIG1fY29udGV4dC0+Y3JlYXRlKCk7CiAKICAgICBtX3dlYlZp
ZXcgPSBuZXcgUVJhd1dlYlZpZXcoY3JlYXRlV2ViQ29udGV4dCgpLCBjcmVhdGVXZWJQYWdlR3Jv
dXAoUVN0cmluZygpKSwgdGhpcyk7Ci0gICAgbV93ZWJWaWV3LT5jcmVhdGUoKTsKLSAgICBXS1Bh
Z2VTZXRVc2VGaXhlZExheW91dChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgdHJ1ZSk7CisgICAgbV93
ZWJWaWV3LT5pbml0aWFsaXplKHRydWUpOwogfQogCiAKQEAgLTc5LDcgKzc4LDYgQEAgdm9pZCBW
aWV3OjpleHBvc2VFdmVudChRRXhwb3NlRXZlbnQqIGV2ZW50KQogICAgIGlmICghbV9hY3RpdmUp
IHsKICAgICAgICAgbV9hY3RpdmUgPSB0cnVlOwogICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fd2Vi
Vmlldy0+cGFnZVJlZigpLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtX3VybC50b0xvY2Fs
OEJpdCgpLmRhdGEoKSkpOwotCiAgICAgICAgIG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVlKTsK
ICAgICAgICAgbV93ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBtX3dlYlZpZXct
PnNldEFjdGl2ZSh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9W
aWV3LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5oCmluZGV4IGU1MzIyM2Y4OTZl
MzI4ZmMyOWY3NzM1OTk4YjJiYjkxNjA0ZjRmODEuLmRkNGQwNWMxNzgzYjAzZjY4YmJmYmFkMWE5
NzJjYjU4YzI0ODNmNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3
LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaApAQCAtMzQsMTIgKzM0LDM1
IEBAIHB1YmxpYzoKIHB1YmxpYzogLy8gUVJhd1dlYlZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZv
aWQgdmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCB2aWV3
UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB2aWV3
UHJvY2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVk
KGNvbnN0IFFVcmwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNv
bnN0IFFDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBR
S2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludEYmLCBjb25zdCBRUmVj
dEYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9y
UXRPYmplY3QoY29uc3QgUVN0cmluZyYpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlbmRl
ckZyYW1lKGNvbnN0IFFTaXplJiwgY29uc3QgUVJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVGV4dElucHV0U3RhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2lsbFNl
dElucHV0TWV0aG9kU3RhdGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVudGlj
YXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25z
dCBRU3RyaW5nJiwgUVN0cmluZyYsIFFTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KGNvbnN0IFFTdHJpbmcmICkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVx
dWlyZWRSZXF1ZXN0KGNvbnN0IFFTdHJpbmcmLCB1aW50MTZfdCwgY29uc3QgUVN0cmluZyYsIFFT
dHJpbmcmLCBRU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVx
dWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
U3RhcnREcmFnKGNvbnN0IFFJbWFnZSYsIFFNaW1lRGF0YSosIGNvbnN0IFF0OjpEcm9wQWN0aW9u
cyYsIFFQb2ludCYsIFFQb2ludCYsIFF0OjpEcm9wQWN0aW9uJikgIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpc2libGVDb250ZW50cygpICB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplRiYpICB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBRUG9pbnRGJikgIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IocXJlYWwpICB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmll
d3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpIHsgfQorICAgIHZpcnR1YWwgUVNpemUgdmlld1NpemUo
KSBjb25zdCAgeyByZXR1cm4gUVNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOyB9CisKKyAgICB2aXJ0
dWFsIFFSZWN0RiBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBRUmVjdEYmIHJlY3QpIHsgcmV0
dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFFSZWN0RiBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3Qg
UVJlY3RGJiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBRUG9pbnQgc2NyZWVu
VG9XaW5kb3coY29uc3QgUVBvaW50JiBwb2ludCkgeyByZXR1cm4gcG9pbnQ7IH0KKyAgICB2aXJ0
dWFsIFFSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFFSZWN0JiByZWN0KSB7IHJldHVybiByZWN0
OyB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZXhwb3NlRXZlbnQoUUV4cG9zZUV2
ZW50Kik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>