<?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>127431</bug_id>
          
          <creation_ts>2014-01-22 10:27:32 -0800</creation_ts>
          <short_desc>[GLIB] Use GUniquePtr instead of GOwnPtr</short_desc>
          <delta_ts>2014-01-22 23:49:33 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mario</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970749</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 10:27:32 -0800</bug_when>
    <thetext>GUniquePtr is just a template alias of std::unique_ptr with a custo deleter that replaces GOwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970753</commentid>
    <comment_count>1</comment_count>
      <attachid>221873</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 10:37:32 -0800</bug_when>
    <thetext>Created attachment 221873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970754</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 10:38:52 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970755</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 10:39:14 -0800</bug_when>
    <thetext>Attachment 221873 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:447:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 3 in 121 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970759</commentid>
    <comment_count>4</comment_count>
      <attachid>221874</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 10:47:31 -0800</bug_when>
    <thetext>Created attachment 221874
Updated patch

Sorry, I forgot to git add a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970761</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 10:50:15 -0800</bug_when>
    <thetext>Attachment 221874 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:447:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 3 in 122 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970763</commentid>
    <comment_count>6</comment_count>
      <attachid>221874</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-01-22 10:54:25 -0800</bug_when>
    <thetext>Comment on attachment 221874
Updated patch

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

&gt; Source/WebCore/platform/gtk/GOwnPtrGtk.cpp:-31
&gt; -template &lt;&gt; void freeOwnedGPtr&lt;GdkEvent&gt;(GdkEvent* ptr)
&gt; -{
&gt; -    if (ptr)
&gt; -        gdk_event_free(ptr);
&gt; -}
&gt; -

A specialization isn&apos;t necessary for GUniquePtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970768</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 10:58:09 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 221874 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221874&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/GOwnPtrGtk.cpp:-31
&gt; &gt; -template &lt;&gt; void freeOwnedGPtr&lt;GdkEvent&gt;(GdkEvent* ptr)
&gt; &gt; -{
&gt; &gt; -    if (ptr)
&gt; &gt; -        gdk_event_free(ptr);
&gt; &gt; -}
&gt; &gt; -
&gt; 
&gt; A specialization isn&apos;t necessary for GUniquePtr?

Yes, good catch! I forgot to git add another file :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970770</commentid>
    <comment_count>8</comment_count>
      <attachid>221876</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 11:01:17 -0800</bug_when>
    <thetext>Created attachment 221876
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970772</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 11:04:01 -0800</bug_when>
    <thetext>Attachment 221876 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:446:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:447:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 3 in 123 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970947</commentid>
    <comment_count>10</comment_count>
      <attachid>221876</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-01-22 17:28:57 -0800</bug_when>
    <thetext>Comment on attachment 221876
Updated patch

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

This is a very large patch, but appears to be largely mechanical.

&gt; Source/WebCore/platform/network/soup/GUniquePtrSoup.h:2
&gt; + *  Copyright (C) 2010 Igalia S.L

Probably want to use 2014 here.

&gt; Source/WebCore/platform/network/soup/GUniquePtrSoup.h:24
&gt; +#include &lt;libsoup/soup.h&gt;
&gt; +#include &lt;wtf/gobject/GUniquePtr.h&gt;

One disadvantage of this is that we include third-party headers in more places, so this has the potential to impact compilation time. I suppose that isn&apos;t a *huge* issue though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971050</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 23:46:04 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 221876 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221876&amp;action=review
&gt; 
&gt; This is a very large patch, but appears to be largely mechanical.

Yeah, thanks for the quick review.

&gt; &gt; Source/WebCore/platform/network/soup/GUniquePtrSoup.h:2
&gt; &gt; + *  Copyright (C) 2010 Igalia S.L
&gt; 
&gt; Probably want to use 2014 here.

Sure.

&gt; &gt; Source/WebCore/platform/network/soup/GUniquePtrSoup.h:24
&gt; &gt; +#include &lt;libsoup/soup.h&gt;
&gt; &gt; +#include &lt;wtf/gobject/GUniquePtr.h&gt;
&gt; 
&gt; One disadvantage of this is that we include third-party headers in more places, so this has the potential to impact compilation time. I suppose that isn&apos;t a *huge* issue though.

Yes, I thought about that too, the advantage is that you can use those just including the header. I haven&apos;t noticed any regression in the build time, but I&apos;ll check if we can improve it anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971051</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-22 23:49:33 -0800</bug_when>
    <thetext>Committed r162599: &lt;http://trac.webkit.org/changeset/162599&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221873</attachid>
            <date>2014-01-22 10:37:32 -0800</date>
            <delta_ts>2014-01-22 10:47:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-g-unique-ptr.diff</filename>
            <type>text/plain</type>
            <size>277544</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MzBiYzk1Li5jNWM1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIz
IEBACisyMDE0LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR0xJQl0gVXNlIEdVbmlxdWVQdHIgaW5zdGVhZCBvZiBHT3duUHRyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlUHRy
IGlzIGEgdGVtcGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRyIHdpdGggYSBjdXN0b20KKyAg
ICAgICAgZGVsZXRlciB0aGF0IHJlcGxhY2VzIEdPd25QdHIuIEdPd25QdHIgaXMgc3RpbGwgdXNl
ZCBmb3IgdGhlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBvdXRwdXQgcG9pbnRlciBpcyBuZWVk
ZWQsIGJ1dCBpdCB3aWxsIGFsc28gYmUgcmVwbGFjZWQgc29vbi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAo
Z2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChhY2Nlc3Np
YmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKHRleHRFeHRlbnRzKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcik6CisgICAgICAgIChudW1iZXJPZlJlcGxhY2VkRWxl
bWVudHNCZWZvcmVPZmZzZXQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKHdlYktpdE1lZGlhU3JjQWRkU3JjKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50Ojp3YXNCbG9ja2VkKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5n
Q2xpZW50OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRoZW1l
SWNvbkZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9G
aWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVuYW1lRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNoYXJlZFJlc291cmNlc1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
R093blB0ckd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dPd25QdHJH
dGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0Ns
aWNrQ291bnRlcjo6c2hvdWxkUHJvY2Vzc0J1dHRvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3RrSW5w
dXRNZXRob2RGaWx0ZXI6OnNlbmRDb21wb3NpdGlvbkFuZFByZWVkaXRXaXRoRmFrZUtleUV2ZW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHdGtQb3B1cE1lbnU6OnBvcFVwKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a1BvcHVw
TWVudTo6dHlwZUFoZWFkRmluZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlt
YWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZEhlbHBlcjo6Z2V0Q2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51
R3RrOjpjcmVhdGVHdGtBY3Rpb25Gb3JNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnVHdGs6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNh
dGlvbldpZGdldC5jcHA6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNhdGlvbldpZGdldEluaXRp
YWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVh
ZHlDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZmFpbGluZ1VSSSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZW5z
dXJlUmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhbnVwU291cFJlcXVlc3RPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBN
ZXNzYWdlTWVtYmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVNvdXBNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXNwb25zZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJ
VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvS1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpt
YXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdl
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKwogMjAxNC0wMS0yMiAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIG92ZXJsYXkg
c2Nyb2xsYmFycyBpbiBzaW5nbGUgcGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggOWUyYzk4ZS4uYzhlNzdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02
MjQ0LDEwICs2MjQ0LDkgQEAgcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdJY29uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9FdmVudExvb3BHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5
c3RlbUd0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNw
cCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R1VuaXF1ZVB0ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3Vu
dGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMDE0OGIzNi4uZGZlMzhjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE5Niw3ICsxOTYsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL0V2ZW50TG9vcEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvRmlsZVN5
c3RlbUd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsvR093blB0ckd0ay5jcHAKICAgICBwbGF0Zm9y
bS9ndGsvR1JlZlB0ckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNw
cAogICAgIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5k
ZXggNjE1NTJmZS4uMjE5MWY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktp
dEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OGY2
YTI0Li44NDIyZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC01
MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRl
ICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtODcsMTggKzg3LDE4IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVT
ZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJp
bGl0CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gJnJlbmRlcmVyLT5zdHlsZSgpOwogCiAgICAg
QXRrQXR0cmlidXRlU2V0KiByZXN1bHQgPSAwOwotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcihn
X3N0cmR1cF9wcmludGYoIiVpIiwgc3R5bGUtPmZvbnRTaXplKCkpKTsKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIHN0eWxlLT5mb250U2l6ZSgpKSk7
CiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRy
aWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9TSVpFKSwgYnVmZmVyLmdldCgpKTsKIAogICAg
IENvbG9yIGJnQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
YnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVpLCVpLCVpIiwgYmdDb2xvci5yZWQoKSwgYmdD
b2xvci5ncmVlbigpLCBiZ0NvbG9yLmJsdWUoKSkpOworICAgICAgICBidWZmZXIucmVzZXQoZ19z
dHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIsIGJnQ29sb3IucmVkKCksIGJnQ29sb3IuZ3JlZW4oKSwg
YmdDb2xvci5ibHVlKCkpKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9CR19DT0xP
UiksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCiAgICAgQ29sb3IgZmdDb2xvciA9IHN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGZnQ29sb3Iu
aXNWYWxpZCgpKSB7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwl
aSIsIGZnQ29sb3IucmVkKCksIGZnQ29sb3IuZ3JlZW4oKSwgZmdDb2xvci5ibHVlKCkpKTsKKyAg
ICAgICAgYnVmZmVyLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJl
ZCgpLCBmZ0NvbG9yLmdyZWVuKCksIGZnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9
IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1l
KEFUS19URVhUX0FUVFJfRkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIApAQCAtMTIw
LDEzICsxMjAsMTMgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9y
QWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAo
aW5jbHVkZVJpc2UpIHsKLSAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVpIiwg
YmFzZWxpbmVQb3NpdGlvbikpOworICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRm
KCIlaSIsIGJhc2VsaW5lUG9zaXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRy
aWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9SSVNFKSwgYnVmZmVyLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlLT50ZXh0SW5k
ZW50KCkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBpbnQgaW5kZW50YXRpb24gPSB2YWx1ZUZv
ckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgpLCAmcmVu
ZGVyZXItPnZpZXcoKSk7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIs
IGluZGVudGF0aW9uKSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVp
IiwgaW5kZW50YXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQp
LCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBBdGtB
dHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3Qg
QWNjZXNzaWJpbGl0CiAgICAgICAgIGZvbnRXZWlnaHQgPSA5MDA7CiAgICAgfQogICAgIGlmIChm
b250V2VpZ2h0ID4gMCkgewotICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWki
LCBmb250V2VpZ2h0KSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVp
IiwgZm9udFdlaWdodCkpOwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChy
ZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1dFSUdIVCks
IGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIGd1aW50
IGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0KQogICAgIC8vIHdlbGwga25vd24gQVBJIHRvIGFsd2F5cyBnZXQgdGhlIHRleHQgaW4gYSBj
b25zaXN0ZW50IHdheQogICAgIEF0a09iamVjdCogYXRrT2JqID0gQVRLX09CSkVDVChvYmplY3Qt
PndyYXBwZXIoKSk7CiAgICAgaWYgKEFUS19JU19URVhUKGF0a09iaikpIHsKLSAgICAgICAgR093
blB0cjxnY2hhcj4gdGV4dCh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQoQVRLX1RFWFQoYXRr
T2JqKSwgMCwgLTEpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4dCh3ZWJraXRBY2Nl
c3NpYmxlVGV4dEdldFRleHQoQVRLX1RFWFQoYXRrT2JqKSwgMCwgLTEpKTsKICAgICAgICAgcmV0
dXJuIGdfdXRmOF9zdHJsZW4odGV4dC5nZXQoKSwgLTEpOwogICAgIH0KIApAQCAtMzM1LDcgKzMz
NSw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldFJ1bkF0dHJpYnV0ZXNGcm9tQWNjZXNp
YmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpCiAKIHN0YXRpYyBJbnRSZWN0IHRleHRFeHRl
bnRzKEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgbGVuZ3RoLCBBdGtDb29y
ZFR5cGUgY29vcmRzKQogewotICAgIEdPd25QdHI8Y2hhcj4gdGV4dENvbnRlbnQod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIHN0YXJ0T2Zmc2V0LCAtMSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gdGV4dENvbnRlbnQod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIHN0
YXJ0T2Zmc2V0LCAtMSkpOwogICAgIGdpbnQgdGV4dExlbmd0aCA9IGdfdXRmOF9zdHJsZW4odGV4
dENvbnRlbnQuZ2V0KCksIC0xKTsKIAogICAgIC8vIFRoZSBmaXJzdCBjYXNlIChlbmRPZmZzZXQg
b2YgLTEpIHNob3VsZCB3b3JrLCBidXQgc2VlbXMgYnJva2VuIGZvciBhbGwgR3RrKyBhcHBzLgpA
QCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENo
YXIoQXRrVGV4dCogdGV4dCwgaW50IG9mZnNldCwgR2V0VGV4dFJlbGF0CiAgICAgZWxzZSBpZiAo
dGV4dFBvc2l0aW9uID09IEdldFRleHRQb3NpdGlvbkFmdGVyKQogICAgICAgICBhY3R1YWxPZmZz
ZXQrKzsKIAotICAgIEdPd25QdHI8Y2hhcj4gdGV4dERhdGEod2Via2l0QWNjZXNzaWJsZVRleHRH
ZXRUZXh0KHRleHQsIDAsIC0xKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXh0RGF0YSh3ZWJr
aXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwgMCwgLTEpKTsKICAgICBpbnQgdGV4dExlbmd0
aCA9IGdfdXRmOF9zdHJsZW4odGV4dERhdGEuZ2V0KCksIC0xKTsKIAogICAgICpzdGFydE9mZnNl
dCA9IHN0ZDo6bWF4KDAsIGFjdHVhbE9mZnNldCk7CkBAIC02MzcsNyArNjM3LDcgQEAgc3RhdGlj
IFZpc2libGVTZWxlY3Rpb24gd29yZEF0UG9zaXRpb25Gb3JBdGtCb3VuZGFyeShjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KgogCiBzdGF0aWMgaW50IG51bWJlck9mUmVwbGFjZWRFbGVtZW50c0Jl
Zm9yZU9mZnNldChBdGtUZXh0KiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQpCiB7Ci0gICAgR093blB0
cjxjaGFyPiB0ZXh0Rm9yT2JqZWN0KHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAw
LCBvZmZzZXQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRleHRGb3JPYmplY3Qod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIDAsIG9mZnNldCkpOwogICAgIFN0cmluZyB0ZXh0QmVm
b3JlT2Zmc2V0ID0gU3RyaW5nOjpmcm9tVVRGOCh0ZXh0Rm9yT2JqZWN0LmdldCgpKTsKIAogICAg
IGludCBjb3VudCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKaW5kZXggNmQ1Y2Y3NC4uMDRhMDZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNzEsMTAgKzcxLDYgQEAKICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1Vu
aWNvZGUuaD4KIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBV
bmljb2RlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDEwNmM4
MzAuLjhjNTk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0z
OCw3ICszOCw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIkdPd25QdHJT
b3VwLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoU291cEJ1ZmZlciopOwotICAgIEdPd25QdHI8U291cEJ1
ZmZlcj4gbV9zb3VwQnVmZmVyOworICAgIEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4gbV9zb3VwQnVm
ZmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcAppbmRleCBiMmJiODgyLi5mZjY3MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTI0LDExICsyNCwxMSBAQAogCiAjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0lPQ2FsbGJhY2suaCIKLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgog
I2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRp
by5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMjEs
NyArMjIxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgLy8gRm9yIGVhY2ggY2hhbm5lbCBvZiB0aGUgYnVzIGNyZWF0ZSBh
IG5ldyB1cHN0cmVhbSBicmFuY2ggZm9yIGludGVybGVhdmUsIGxpa2U6CiAgICAgLy8gcXVldWUg
ISBjYXBzZmlsdGVyICEgYXVkaW9jb252ZXJ0LiB3aGljaCBpcyBwbHVnZ2VkIHRvIGEgbmV3IGlu
dGVybGVhdmUgcmVxdWVzdCBzaW5rcGFkLgogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4
ID0gMDsgY2hhbm5lbEluZGV4IDwgcHJpdi0+YnVzLT5udW1iZXJPZkNoYW5uZWxzKCk7IGNoYW5u
ZWxJbmRleCsrKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IHF1ZXVlTmFtZShnX3N0cmR1cF9w
cmludGYoIndlYmF1ZGlvUXVldWUldSIsIGNoYW5uZWxJbmRleCkpOworICAgICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBxdWV1ZU5hbWUoZ19zdHJkdXBfcHJpbnRmKCJ3ZWJhdWRpb1F1ZXVlJXUiLCBj
aGFubmVsSW5kZXgpKTsKICAgICAgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoInF1ZXVlIiwgcXVldWVOYW1lLmdldCgpKTsKICAgICAgICAgR3N0RWxlbWVu
dCogY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiY2Fwc2ZpbHRlciIsIDAp
OwogICAgICAgICBHc3RFbGVtZW50KiBhdWRpb2NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoImF1ZGlvY29udmVydCIsIDApOwpAQCAtMzU2LDggKzM1Niw4IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRXZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBp
ZiAocHJpdi0+bmV3U3RyZWFtRXZlbnRQZW5kaW5nKSB7CiAgICAgICAgICAgICBHUmVmUHRyPEdz
dEVsZW1lbnQ+IHF1ZXVlID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBh
ZCkpOwogICAgICAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUuZ2V0KCksICJzaW5rIikpOwotICAgICAgICAg
ICAgR093blB0cjxnY2hhcj4gcXVldWVOYW1lKGdzdF9lbGVtZW50X2dldF9uYW1lKHF1ZXVlLmdl
dCgpKSk7Ci0gICAgICAgICAgICBHT3duUHRyPGdjaGFyPiBzdHJlYW1JZChnX3N0cmR1cF9wcmlu
dGYoIndlYmF1ZGlvLyVzIiwgcXVldWVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBxdWV1ZU5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25hbWUocXVldWUuZ2V0KCkpKTsK
KyAgICAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmVhbUlkKGdfc3RyZHVwX3ByaW50Zigi
d2ViYXVkaW8vJXMiLCBxdWV1ZU5hbWUuZ2V0KCkpKTsKICAgICAgICAgICAgIEdzdEV2ZW50KiBz
dHJlYW1TdGFydEV2ZW50ID0gZ3N0X2V2ZW50X25ld19zdHJlYW1fc3RhcnQoc3RyZWFtSWQuZ2V0
KCkpOwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIsIDApCiAgICAgICAgICAgICBnc3RfZXZl
bnRfc2V0X2dyb3VwX2lkKHN0cmVhbVN0YXJ0RXZlbnQsIGdyb3VwSWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKaW5kZXggOTZiMjc1
My4uMmFkZWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3Rr
L0F1ZGlvQnVzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsv
QXVkaW9CdXNHdGsuY3BwCkBAIC0yNCwyMyArMjQsMjEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvRmls
ZVJlYWRlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLQotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KICNpbmNsdWRl
IDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFt
ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0
cmR1cF9wcmludGYoIiVzLndhdiIsIG5hbWUpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZShnX3N0cmR1cF9wcmludGYoIiVzLndhdiIsIG5hbWUpKTsKICAgICBjb25zdCBjaGFyKiBl
bnZpcm9ubWVudFBhdGggPSBnZXRlbnYoIkFVRElPX1JFU09VUkNFU19QQVRIIik7Ci0gICAgR093
blB0cjxnY2hhcj4gYWJzb2x1dGVGaWxlbmFtZTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBhYnNv
bHV0ZUZpbGVuYW1lOwogICAgIGlmIChlbnZpcm9ubWVudFBhdGgpCi0gICAgICAgIGFic29sdXRl
RmlsZW5hbWUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoZW52aXJvbm1lbnRQYXRoLCBmaWxlbmFtZS5n
ZXQoKSwgTlVMTCkpOworICAgICAgICBhYnNvbHV0ZUZpbGVuYW1lLnJlc2V0KGdfYnVpbGRfZmls
ZW5hbWUoZW52aXJvbm1lbnRQYXRoLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwogICAgIGVsc2UK
LSAgICAgICAgYWJzb2x1dGVGaWxlbmFtZS5zZXQoZ19idWlsZF9maWxlbmFtZShzaGFyZWRSZXNv
dXJjZXNQYXRoKCkuZGF0YSgpLCAicmVzb3VyY2VzIiwgImF1ZGlvIiwgZmlsZW5hbWUuZ2V0KCks
IE5VTEwpKTsKKyAgICAgICAgYWJzb2x1dGVGaWxlbmFtZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1l
KHNoYXJlZFJlc291cmNlc1BhdGgoKS5kYXRhKCksICJyZXNvdXJjZXMiLCAiYXVkaW8iLCBmaWxl
bmFtZS5nZXQoKSwgTlVMTCkpOwogICAgIHJldHVybiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGFi
c29sdXRlRmlsZW5hbWUuZ2V0KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2Vv
Y2x1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJv
dmlkZXJHZW9jbHVlLmNwcAppbmRleCBlNTM3NjA0Li5iMmE1NzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlk
ZXJHZW9jbHVlLmNwcApAQCAtMjgsOCArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgotCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogc3RhdGljIHZvaWQgZ2V0UG9zaXRpb25DYWxsYmFjayhHZW9jbHVlUG9zaXRp
b24qIHBvc2l0aW9uLCBHZW9jbHVlUG9zaXRpb25GaWVsZHMgZmllbGRzLCBpbnQgdGltZXN0YW1w
LCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgR2Vv
Y2x1ZUFjY3VyYWN5KiBhY2N1cmFjeSwgR0Vycm9yKiBlcnJvciwgR2VvbG9jYXRpb25Qcm92aWRl
ckdlb2NsdWUqIHByb3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCmlu
ZGV4IDA5MDkyMDcuLmIyMWFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5j
cHAKQEAgLTI2LDggKzI2LDYgQEAKIAogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Z3N0
L2dzdC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQogI2luY2x1ZGUgPGdz
dC92aWRlby9nc3R2aWRlb21ldGEuaD4KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDdkNWMzZjkuLmM0YTBmZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMTkwLDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0cmVhbVByb3BlcnRpZXMoR09iamVjdCogb2Jq
ZWN0KQogICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcoInN0
cmVhbS1wcm9wZXJ0aWVzIiwgIm1lZGlhLnJvbGUiLCBHX1RZUEVfU1RSSU5HLCByb2xlLCBOVUxM
KTsKICAgICBnX29iamVjdF9zZXQob2JqZWN0LCAic3RyZWFtLXByb3BlcnRpZXMiLCBzdHJ1Y3R1
cmUsIE5VTEwpOwogICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShzdHJ1Y3R1cmUpOwotICAgIEdPd25Q
dHI8Z2NoYXI+IGVsZW1lbnROYW1lKGdzdF9lbGVtZW50X2dldF9uYW1lKEdTVF9FTEVNRU5UKG9i
amVjdCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9n
ZXRfbmFtZShHU1RfRUxFTUVOVChvYmplY3QpKSk7CiAgICAgTE9HX01FRElBX01FU1NBR0UoIlNl
dCBtZWRpYS5yb2xlIGFzICVzIGF0ICVzIiwgcm9sZSwgZWxlbWVudE5hbWUuZ2V0KCkpOwogfQog
CkBAIC0xMDM3LDcgKzEwMzgsNyBAQCBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3Nh
Z2VfcGFyc2VfcmVxdWVzdF9zdGF0ZShtZXNzYWdlLCAmcmVxdWVzdGVkU3RhdGUpOwogICAgICAg
ICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5QmluLmdldCgpLCAmY3VycmVudFN0YXRlLCBO
VUxMLCAyNTApOwogICAgICAgICBpZiAocmVxdWVzdGVkU3RhdGUgPCBjdXJyZW50U3RhdGUpIHsK
LSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGVsZW1lbnROYW1lKGdzdF9lbGVtZW50X2dldF9u
YW1lKEdTVF9FTEVNRU5UKG1lc3NhZ2UpKSk7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFy
PiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVChtZXNzYWdlKSkp
OwogICAgICAgICAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJFbGVtZW50ICVzIHJlcXVlc3RlZCBz
dGF0ZSBjaGFuZ2UgdG8gJXMiLCBlbGVtZW50TmFtZS5nZXQoKSwKICAgICAgICAgICAgICAgICBn
c3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShyZXF1ZXN0ZWRTdGF0ZSkpOwogICAgICAgICAgICAg
bV9yZXF1ZXN0ZWRTdGF0ZSA9IHJlcXVlc3RlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNTVkY2U5NS4uODNiMTM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KICNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Tb3Vy
Y2UgewpAQCAtMTQxLDcgKzE0MSw2IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjQWRkU3Jj
KFdlYktpdE1lZGlhU3JjKiBzcmMsIEdzdEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgR3N0UGFk
KiBnaG9zdFBhZDsKICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7
Ci0gICAgR093blB0cjxnY2hhcj4gbmFtZTsKIAogICAgIGlmICghZ3N0X2Jpbl9hZGQoR1NUX0JJ
TihzcmMpLCBlbGVtZW50KSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNyYyBl
bGVtZW50IG5vdCBhZGRlZCIpOwpAQCAtMTU0LDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dE1lZGlhU3JjQWRkU3JjKFdlYktpdE1lZGlhU3JjKiBzcmMsIEdzdEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgfQogCiAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChlbGVtZW50
KTsKLSAgICBuYW1lLnNldChnX3N0cmR1cF9wcmludGYoInNyY18ldSIsIHByaXYtPm5iU291cmNl
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmFtZShnX3N0cmR1cF9wcmludGYoInNyY18ldSIs
IHByaXYtPm5iU291cmNlKSk7CiAgICAgZ2hvc3RQYWQgPSBXZWJDb3JlOjp3ZWJraXRHc3RHaG9z
dFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc3JjVGVtcGxhdGUsIG5hbWUuZ2V0KCksIHRhcmdldHNy
Yy5nZXQoKSk7CiAgICAgZ3N0X3BhZF9zZXRfYWN0aXZlKGdob3N0UGFkLCBUUlVFKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCAzYWVlNDhjLi41
MjRkNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApA
QCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5o
PgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dN
dXRleExvY2tlci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC01MDIsOSArNTAyLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0
YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQo
IlF1aWNrdGltZS83LjYuNiIpOwogCiAgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCkgewot
ICAgICAgICBHT3duUHRyPGdjaGFyPiB2YWw7Ci0KLSAgICAgICAgdmFsLnNldChnX3N0cmR1cF9w
cmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2LT5yZXF1ZXN0ZWRPZmZz
ZXQpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdmFsKGdfc3RyZHVwX3ByaW50ZigiYnl0
ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIHByaXYtPnJlcXVlc3RlZE9mZnNldCkpOwogICAg
ICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCB2YWwuZ2V0KCkpOwogICAg
IH0KICAgICBwcml2LT5vZmZzZXQgPSBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQ7CkBAIC0xMTUwLDEy
ICsxMTQ4LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZEZhaWwo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yCiB2b2lkIFJlc291cmNlSGFuZGxl
U3RyZWFtaW5nQ2xpZW50Ojp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKIHsKICAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAgICBHT3duUHRy
PGdjaGFyPiB1cmk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJpOwogCiAgICAgR1NUX0VSUk9S
X09CSkVDVChzcmMsICJSZXF1ZXN0IHdhcyBibG9ja2VkIik7CiAKICAgICBHTXV0ZXhMb2NrZXIg
bG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7Ci0gICAgdXJpLnNldChnX3N0cmR1cChz
cmMtPnByaXYtPnVyaSkpOworICAgIHVyaS5yZXNldChnX3N0cmR1cChzcmMtPnByaXYtPnVyaSkp
OwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVT
T1VSQ0UsIE9QRU5fUkVBRCwgKCJBY2Nlc3MgdG8gXCIlc1wiIHdhcyBibG9ja2VkIiwgdXJpLmdl
dCgpKSwgKDApKTsKQEAgLTExNjQsMTIgKzExNjIsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0
cmVhbWluZ0NsaWVudDo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB2b2lkIFJlc291cmNl
SGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikKIHsK
ICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAg
ICBHT3duUHRyPGdjaGFyPiB1cmk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJpOwogCiAgICAg
R1NUX0VSUk9SX09CSkVDVChzcmMsICJDYW5ub3Qgc2hvdyBVUkwiKTsKIAogICAgIEdNdXRleExv
Y2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsKLSAgICB1cmkuc2V0KGdfc3Ry
ZHVwKHNyYy0+cHJpdi0+dXJpKSk7CisgICAgdXJpLnJlc2V0KGdfc3RyZHVwKHNyYy0+cHJpdi0+
dXJpKSk7CiAgICAgbG9ja2VyLnVubG9jaygpOwogCiAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3Jj
LCBSRVNPVVJDRSwgT1BFTl9SRUFELCAoIkNhbid0IHNob3cgXCIlc1wiIiwgdXJpLmdldCgpKSwg
KDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
bWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4IDliNjkzZTMuLjc2NmY2YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNw
cApAQCAtMjEsMTEgKzIxLDExIEBACiAKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIkdka0NhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTY1LDEyICs2NSwxMiBAQCBzdGF0aWMgYm9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0CiAgICAgaWYgKCFw
aXhidWYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdFcnJvciogZXJyb3IgPSAwOwor
ICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAodHlwZSA9PSAianBlZyIgJiYgcXVh
bGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CiAgICAgICAgIFN0
cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nhc3Q8aW50
PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7Ci0gICAgICAgIGdka19waXhidWZfc2F2ZV90b19i
dWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwgdHlwZS51
dGY4KCkuZGF0YSgpLCAmZXJyb3IsICJxdWFsaXR5IiwgcXVhbGl0eVN0cmluZy51dGY4KCkuZGF0
YSgpLCBOVUxMKTsKKyAgICAgICAgZ2RrX3BpeGJ1Zl9zYXZlX3RvX2J1ZmZlcihwaXhidWYuZ2V0
KCksICZidWZmZXIub3V0UHRyKCksICZidWZmZXJTaXplLCB0eXBlLnV0ZjgoKS5kYXRhKCksICZl
cnJvci5vdXRQdHIoKSwgInF1YWxpdHkiLCBxdWFsaXR5U3RyaW5nLnV0ZjgoKS5kYXRhKCksIE5V
TEwpOwogICAgIH0gZWxzZQotICAgICAgICBnZGtfcGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1
Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1ZmZlclNpemUsIHR5cGUudXRmOCgpLmRhdGEo
KSwgJmVycm9yLCBOVUxMKTsKKyAgICAgICAgZ2RrX3BpeGJ1Zl9zYXZlX3RvX2J1ZmZlcihwaXhi
dWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZidWZmZXJTaXplLCB0eXBlLnV0ZjgoKS5kYXRh
KCksICZlcnJvci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICByZXR1cm4gIWVycm9yOwogfQpAQCAt
NzksNyArNzksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogewogICAgIEFTU0VSVChNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlw
ZSkpOwogCi0gICAgR093blB0cjxnY2hhcj4gYnVmZmVyKDApOworICAgIEdPd25QdHI8Z2NoYXI+
IGJ1ZmZlcjsKICAgICBnc2l6ZSBidWZmZXJTaXplOwogICAgIGlmICghZW5jb2RlSW1hZ2UobV9k
YXRhLm1fc3VyZmFjZS5nZXQoKSwgbWltZVR5cGUsIHF1YWxpdHksIGJ1ZmZlciwgYnVmZmVyU2l6
ZSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IDgwYWI2NmYuLjJlN2M0NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNw
cApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJH
ZGtDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTU0LDcgKzU2
LDcgQEAgc3RhdGljIENTdHJpbmcgZ2V0VGhlbWVJY29uRmlsZU5hbWUoY29uc3QgY2hhciogbmFt
ZSwgaW50IHNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX1NUT0NLX01JU1NJTkdfSU1BR0UsIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0lDT05fTE9PS1VQX05PX1NWRyk7CiAgICAgaWYg
KGljb25JbmZvKSB7Ci0gICAgICAgIEdPd25QdHI8R3RrSWNvbkluZm8+IGluZm8oaWNvbkluZm8p
OworICAgICAgICBHVW5pcXVlUHRyPEd0a0ljb25JbmZvPiBpbmZvKGljb25JbmZvKTsKICAgICAg
ICAgcmV0dXJuIENTdHJpbmcoZ3RrX2ljb25faW5mb19nZXRfZmlsZW5hbWUoaW5mby5nZXQoKSkp
OwogICAgIH0KIApAQCAtOTMsOCArOTUsOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKICAgICBpZiAoIXN0cmNtcCgibWlz
c2luZ0ltYWdlIiwgbmFtZSkpCiAgICAgICAgIGZpbGVOYW1lID0gZ2V0VGhlbWVJY29uRmlsZU5h
bWUoR1RLX1NUT0NLX01JU1NJTkdfSU1BR0UsIDE2KTsKICAgICBpZiAoZmlsZU5hbWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gaW1hZ2VOYW1lKGdfc3RyZHVwX3ByaW50Zigi
JXMucG5nIiwgbmFtZSkpOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBnbGliRmlsZU5hbWUoZ2V0
UGF0aFRvSW1hZ2VSZXNvdXJjZShpbWFnZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gaW1hZ2VOYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMucG5nIiwgbmFtZSkpOworICAg
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBnbGliRmlsZU5hbWUoZ2V0UGF0aFRvSW1hZ2VSZXNvdXJj
ZShpbWFnZU5hbWUuZ2V0KCkpKTsKICAgICAgICAgZmlsZU5hbWUgPSBnbGliRmlsZU5hbWUuZ2V0
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29u
dGV4dE1lbnVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51
R3RrLmNwcAppbmRleCA4YzAwMmM0Li45NmNkMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKQEAgLTI0LDggKzI0LDggQEAKICNpbmNsdWRl
ICJDb250ZXh0TWVudS5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTg3LDcgKzg3LDcgQEAgdW5zaWduZWQgQ29udGV4dE1lbnU6Oml0ZW1Db3VudCgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7CiAKLSAgICBHT3duUHRyPEdM
aXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1f
cGxhdGZvcm1EZXNjcmlwdGlvbikpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJlbihn
dGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1EZXNjcmlw
dGlvbikpKTsKICAgICByZXR1cm4gZ19saXN0X2xlbmd0aChjaGlsZHJlbi5nZXQoKSk7CiB9CiAK
QEAgLTk1LDcgKzk1LDcgQEAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVt
VmVjdG9yKGNvbnN0IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnUKIHsKICAgICBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtPiBtZW51SXRlbVZlY3RvcjsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGNo
aWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsK
KyAgICBHVW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJl
bihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAgICAgaW50IGl0ZW1Db3VudCA9IGdfbGlzdF9sZW5n
dGgoY2hpbGRyZW4uZ2V0KCkpOwogICAgIG1lbnVJdGVtVmVjdG9yLnJlc2VydmVDYXBhY2l0eShp
dGVtQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29u
dGV4dE1lbnVJdGVtR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0
TWVudUl0ZW1HdGsuY3BwCmluZGV4IGQ3MGI1YmUuLmI2YWQ2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCkBAIC0yNSw5ICsy
NSw5IEBACiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCiAKICNpbmNsdWRlICJDb250ZXh0
TWVudS5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjZGVmaW5lIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OICJ3ZWJraXQtY29udGV4dC1tZW51IgpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRp
YyBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gY3JlYXRlUGxhdGZvcm1NZW51SXRlbURlc2Ny
aXB0aW9uKENvbnRleHRNZW51CiAgICAgaWYgKHR5cGUgPT0gU2VwYXJhdG9yVHlwZSkKICAgICAg
ICAgcmV0dXJuIEdUS19NRU5VX0lURU0oZ3RrX3NlcGFyYXRvcl9tZW51X2l0ZW1fbmV3KCkpOwog
Ci0gICAgR093blB0cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVwX3ByaW50ZigiY29udGV4dC1t
ZW51LWFjdGlvbi0lZCIsIGFjdGlvbikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYWN0aW9uTmFt
ZShnX3N0cmR1cF9wcmludGYoImNvbnRleHQtbWVudS1hY3Rpb24tJWQiLCBhY3Rpb24pKTsKICAg
ICBHUmVmUHRyPEd0a0FjdGlvbj4gcGxhdGZvcm1BY3Rpb247CiAKICAgICBpZiAodHlwZSA9PSBD
aGVja2FibGVBY3Rpb25UeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5jcHAKaW5kZXggMTc3OWQ1Mi4uNzcxNTUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdChjb25zdCBT
dHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdf
ZmlsZW5hbWVfZnJvbV91cmkobGluZS51dGY4KCkuZGF0YSgpLCAwLCAmZXJyb3Iub3V0UHRyKCkp
KTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJv
bV91cmkobGluZS51dGY4KCkuZGF0YSgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAg
ICAgIGlmICghZXJyb3IgJiYgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgbV9maWxlbmFtZXMu
YXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUuZ2V0KCkpKTsKICAgICAgICAgfQpAQCAt
MTIzLDcgKzEyNCw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJMKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIG1hcmt1cC5hcHBlbmQoIjxhIGhyZWY9XCIiKTsK
ICAgICBtYXJrdXAuYXBwZW5kKHVybC5zdHJpbmcoKSk7CiAgICAgbWFya3VwLmFwcGVuZCgiXCI+
Iik7Ci0gICAgR093blB0cjxnY2hhcj4gZXNjYXBlZChnX21hcmt1cF9lc2NhcGVfdGV4dChhY3R1
YWxMYWJlbC51dGY4KCkuZGF0YSgpLCAtMSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2Fw
ZWQoZ19tYXJrdXBfZXNjYXBlX3RleHQoYWN0dWFsTGFiZWwudXRmOCgpLmRhdGEoKSwgLTEpKTsK
ICAgICBtYXJrdXAuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZXNjYXBlZC5nZXQoKSkpOwogICAg
IG1hcmt1cC5hcHBlbmQoIjwvYT4iKTsKICAgICBzZXRNYXJrdXAobWFya3VwLnRvU3RyaW5nKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4
IDI3YzRhYjAuLjdmYzQ5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmls
ZVN5c3RlbUd0ay5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00OCw3ICs0OSw3IEBA
IFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogI2lmIE9TKFdJ
TkRPV1MpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZmlsZW5hbWUpOwogI2Vsc2UKLSAg
ICBHT3duUHRyPGdjaGFyPiBlc2NhcGVkU3RyaW5nKGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZW5h
bWUsICIvOiIsIGZhbHNlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhn
X3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVuYW1lLCAiLzoiLCBmYWxzZSkpOwogICAgIHJldHVybiBl
c2NhcGVkU3RyaW5nLmdldCgpOwogI2VuZGlmCiB9CkBAIC01OCw3ICs1OSw3IEBAIENTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICNpZiBPUyhXSU5E
T1dTKQogICAgIHJldHVybiBwYXRoLnV0ZjgoKTsKICNlbHNlCi0gICAgR093blB0cjxnY2hhcj4g
ZmlsZW5hbWUoZ191cmlfdW5lc2NhcGVfc3RyaW5nKHBhdGgudXRmOCgpLmRhdGEoKSwgMCkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRo
LnV0ZjgoKS5kYXRhKCksIDApKTsKICAgICByZXR1cm4gZmlsZW5hbWUuZ2V0KCk7CiAjZW5kaWYK
IH0KQEAgLTcwLDcgKzcxLDcgQEAgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICByZXR1cm4gc3RyaW5nOwogI2Vsc2UKICAgICBDU3RyaW5nIGZpbGVu
YW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0cmluZyk7Ci0gICAgR093blB0cjxnY2hh
cj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZGF0YSgpLCAwLCAwLCAwLCAw
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmls
ZW5hbWUuZGF0YSgpLCAwLCAwLCAwLCAwKSk7CiAgICAgaWYgKCFkaXNwbGF5KQogICAgICAgICBy
ZXR1cm4gc3RyaW5nOwogCkBAIC0xOTAsNyArMTkxLDcgQEAgU3RyaW5nIHBhdGhHZXRGaWxlTmFt
ZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQogICAgICAgICByZXR1cm4gcGF0aE5hbWU7CiAKICAg
ICBDU3RyaW5nIHRtcEZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhOYW1l
KTsKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZp
bGVuYW1lLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9n
ZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoYmFzZU5hbWUuZ2V0KCkpOwogfQogCkBAIC0yMDEsMTEgKzIwMiwxMSBAQCBDU3RyaW5n
IGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpCiAgICAgICAgIHJldHVybiBwYXRoOwogCiAgICAg
Ly8gSWYgdGhlIGFib3ZlIGZhaWxzLCBjaGVjayB0aGUgUEFUSCBlbnYgdmFyaWFibGUuCi0gICAg
R093blB0cjxjaGFyPiBjdXJyZW50RXhlUGF0aChnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoKGdfZ2V0
X3ByZ25hbWUoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gY3VycmVudEV4ZVBhdGgoZ19maW5k
X3Byb2dyYW1faW5fcGF0aChnX2dldF9wcmduYW1lKCkpKTsKICAgICBpZiAoIWN1cnJlbnRFeGVQ
YXRoLmdldCgpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogCi0gICAgR093blB0cjxjaGFy
PiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShjdXJyZW50RXhlUGF0aC5nZXQoKSkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoY3VycmVudEV4ZVBh
dGguZ2V0KCkpKTsKICAgICByZXR1cm4gZGlybmFtZS5nZXQoKTsKIH0KIApAQCAtMjE5LDEwICsy
MjAsMTAgQEAgQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCkKICAgICBITU9EVUxFIGhtb2R1
bGUgPSAwOwogICAgIEdldE1vZHVsZUhhbmRsZUV4QShHRVRfTU9EVUxFX0hBTkRMRV9FWF9GTEFH
X0ZST01fQUREUkVTUywgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2hhcmVkUmVzb3VyY2VzUGF0
aCksICZobW9kdWxlKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IHJ1bnRpbWVEaXIoZ193aW4zMl9n
ZXRfcGFja2FnZV9pbnN0YWxsYXRpb25fZGlyZWN0b3J5X29mX21vZHVsZShobW9kdWxlKSk7Ci0g
ICAgR093blB0cjxnY2hhcj4gZGF0YVBhdGgoZ19idWlsZF9maWxlbmFtZShydW50aW1lRGlyLmdl
dCgpLCAic2hhcmUiLCAid2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywg
TlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJ1bnRpbWVEaXIoZ193aW4zMl9nZXRfcGFj
a2FnZV9pbnN0YWxsYXRpb25fZGlyZWN0b3J5X29mX21vZHVsZShobW9kdWxlKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZGF0YVBhdGgoZ19idWlsZF9maWxlbmFtZShydW50aW1lRGlyLmdldCgp
LCAic2hhcmUiLCAid2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgTlVM
TCkpOwogI2Vsc2UKLSAgICBHT3duUHRyPGdjaGFyPiBkYXRhUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KERBVEFfRElSLCAid2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgTlVM
TCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFQYXRoKGdfYnVpbGRfZmlsZW5hbWUoREFU
QV9ESVIsICJ3ZWJraXRndGstIiBXRUJLSVRHVEtfQVBJX1ZFUlNJT05fU1RSSU5HLCBOVUxMKSk7
CiAjZW5kaWYKIAogICAgIGNhY2hlZFBhdGggPSBkYXRhUGF0aC5nZXQoKTsKQEAgLTI0Miw3ICsy
NDMsNyBAQCB1aW50NjRfdCBnZXRWb2x1bWVGcmVlU2l6ZUZvclBhdGgoY29uc3QgY2hhciogcGF0
aCkKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvKiBO
byBudWxsIGNoZWNraW5nIG5lZWRlZCAqLwotICAgIEdPd25QdHI8Y2hhcj4gZGlybmFtZShnX3Bh
dGhfZ2V0X2Rpcm5hbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KGRpcm5hbWUuZ2V0KCkpOwogfQogCkBAIC0yNTEsMjggKzI1MiwyNiBAQCBWZWN0b3I8U3Ry
aW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0
ZXIpCiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0gICAgR0RpciogZGlyID0gZ19kaXJf
b3BlbihmaWxlbmFtZS5kYXRhKCksIDAsIDApOworICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdf
ZGlyX29wZW4oZmlsZW5hbWUuZGF0YSgpLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkaXIpCiAg
ICAgICAgIHJldHVybiBlbnRyaWVzOwogCi0gICAgR1BhdHRlcm5TcGVjICpwc3BlYyA9IGdfcGF0
dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKTsKLSAgICB3aGlsZSAoY29uc3Qg
Y2hhciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXIpKSB7Ci0gICAgICAgIGlmICghZ19wYXR0
ZXJuX21hdGNoX3N0cmluZyhwc3BlYywgbmFtZSkpCisgICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNw
ZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7Cisg
ICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkg
eworICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgR093blB0cjxnY2hhcj4gZW50cnko
Z19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5kYXRhKCksIG5hbWUsIE5VTEwpKTsKKyAgICAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5kYXRhKCks
IG5hbWUsIE5VTEwpKTsKICAgICAgICAgZW50cmllcy5hcHBlbmQoZmlsZW5hbWVUb1N0cmluZyhl
bnRyeS5nZXQoKSkpOwogICAgIH0KLSAgICBnX3BhdHRlcm5fc3BlY19mcmVlKHBzcGVjKTsKLSAg
ICBnX2Rpcl9jbG9zZShkaXIpOwogCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKIFN0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRm
KCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR093blB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9m
aWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0
ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90
bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CiAKICAg
ICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JF
QVRFX05PTkUsIDAsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dPd25QdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjY5M2Y0Li4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwu
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
LSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiR093blB0ckd0ay5oIgotCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdka0V2ZW50PihHZGtF
dmVudCogcHRyKQotewotICAgIGlmIChwdHIpCi0gICAgICAgIGdka19ldmVudF9mcmVlKHB0cik7
Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHdGtJY29uSW5mbz4oR3RrSWNv
bkluZm8qIGluZm8pCi17Ci0gICAgaWYgKGluZm8pCi0gICAgICAgIGd0a19pY29uX2luZm9fZnJl
ZShpbmZvKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0dPd25QdHJHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNWU4MzcuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaAorKysgL2Rldi9udWxsCkBAIC0x
LDMyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKgot
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgR093blB0ckd0a19oCi0jZGVmaW5lIEdPd25QdHJHdGtfaAotCi0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdka0V2ZW50PihHZGtFdmVudCopOwotdGVtcGxhdGUg
PD4gdm9pZCBmcmVlT3duZWRHUHRyPEd0a0ljb25JbmZvPihHdGtJY29uSW5mbyopOwotCi19Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRz
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKaW5k
ZXggYWY5NjA5ZC4uNDQyYmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dhbWVwYWRzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2Ft
ZXBhZHNHdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCkBAIC0xMjMsNyArMTI0LDcgQEAgR2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKHVuc2lnbmVk
IGxlbmd0aCkKICAgICBtX2d1ZGV2Q2xpZW50ID0gYWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3
KHN1YnN5c3RlbXMpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fZ3VkZXZDbGllbnQuZ2V0KCks
ICJ1ZXZlbnQiLCBHX0NBTExCQUNLKG9uVUV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKIAotICAgIEdP
d25QdHI8R0xpc3Q+IGRldmljZXNMaXN0KGdfdWRldl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVt
KG1fZ3VkZXZDbGllbnQuZ2V0KCksIHN1YnN5c3RlbXNbMF0pKTsKKyAgICBHVW5pcXVlUHRyPEdM
aXN0PiBkZXZpY2VzTGlzdChnX3VkZXZfY2xpZW50X3F1ZXJ5X2J5X3N1YnN5c3RlbShtX2d1ZGV2
Q2xpZW50LmdldCgpLCBzdWJzeXN0ZW1zWzBdKSk7CiAgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0g
PSBkZXZpY2VzTGlzdC5nZXQoKTsgbGlzdEl0ZW07IGxpc3RJdGVtID0gZ19saXN0X25leHQobGlz
dEl0ZW0pKSB7CiAgICAgICAgIEdVZGV2RGV2aWNlKiBkZXZpY2UgPSBHX1VERVZfREVWSUNFKGxp
c3RJdGVtLT5kYXRhKTsKICAgICAgICAgU3RyaW5nIGRldmljZUZpbGUgPSBTdHJpbmc6OmZyb21V
VEY4KGdfdWRldl9kZXZpY2VfZ2V0X2RldmljZV9maWxlKGRldmljZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAppbmRleCBhY2M4YTMyLi5i
YWE4OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tD
b3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3Vu
dGVyLmNwcApAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ikd0a0NsaWNrQ291bnRlci5oIgogCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUg
IkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBHdGtDbGlja0NvdW50ZXI6OnNob3VsZFByb2Nl
c3NCdXR0b25FdmVudChHZGtFdmVudEJ1dHRvbiogYnV0dG9uRXZlbnQpCiAgICAgLy8gY29taW5n
IHVwLCBpZ25vcmUgdGhpcyBldmVudCBhcyBpdCBjZXJ0YWlubHkgZ2VuZXJhdGVkIHRoZSBkb3Vi
bGUgb3IgdHJpcGxlCiAgICAgLy8gY2xpY2suIFRoZSBjb25zZXF1ZW5jZSBvZiBub3QgZWF0aW5n
IHRoaXMgZXZlbnQgaXMgdHdvIERPTSBidXR0b24gcHJlc3MgZXZlbnRzCiAgICAgLy8gYXJlIGdl
bmVyYXRlZC4KLSAgICBHT3duUHRyPEdka0V2ZW50PiBuZXh0RXZlbnQoZ2RrX2V2ZW50X3BlZWso
KSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbmV4dEV2ZW50KGdka19ldmVudF9wZWVrKCkp
OwogICAgIGlmICghbmV4dEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobmV4
dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVTUyB8fCBuZXh0RXZlbnQtPmFueS50
eXBlID09IEdES18zQlVUVE9OX1BSRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggYjk5ODBiNS4uMGEwMjY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RG
aWx0ZXIuY3BwCkBAIC0xOSwxMSArMTksMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJHdGtJbnB1dE1ldGhvZEZpbHRlci5oIgogCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgor
I2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAj
aW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAK
IC8vIFRoZSBXaW5kb3dzIGNvbXBvc2l0aW9uIGtleSBldmVudCBjb2RlIGlzIDI5OSBvciBWS19Q
Uk9DRVNTS0VZLiBXZSBuZWVkIHRvCiAvLyBlbWl0IHRoaXMgY29kZSBmb3Igd2ViIGNvbXBhdGli
aWxpdHkgcmVhc29ucyB3aGVuIGtleSBldmVudHMgdHJpZ2dlcgpAQCAtMjcwLDcgKzI3MSw3IEBA
IHZvaWQgR3RrSW5wdXRNZXRob2RGaWx0ZXI6OnVwZGF0ZVByZWVkaXQoKQogCiB2b2lkIEd0a0lu
cHV0TWV0aG9kRmlsdGVyOjpzZW5kQ29tcG9zaXRpb25BbmRQcmVlZGl0V2l0aEZha2VLZXlFdmVu
dHMoUmVzdWx0c1RvU2VuZCByZXN1bHRzVG9TZW5kKQogewotICAgIEdPd25QdHI8R2RrRXZlbnQ+
IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOworICAgIEdVbmlxdWVQdHI8R2Rr
RXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOwogICAgIGV2ZW50LT5r
ZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CiAgICAgZXZlbnQtPmtleS5rZXl2YWwgPSBnQ29t
cG9zaXRpb25FdmVudEtleUNvZGU7CiAgICAgc2VuZEtleUV2ZW50V2l0aENvbXBvc2l0aW9uUmVz
dWx0cygmZXZlbnQtPmtleSwgcmVzdWx0c1RvU2VuZCwgRXZlbnRGYWtlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwCmluZGV4IDQ1OGFmNGQuLmU1MmNl
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwCkBA
IC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3RrUG9wdXBN
ZW51LmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSAiR3Rr
VmVyc2lvbmluZy5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgR3RrUG9wdXBNZW51Ojpwb3BVcChj
b25zdCBJbnRTaXplJiBtZW51U2l6ZSwgY29uc3QgSW50UG9pbnQmIG1lbnVQb3NpdGlvbiwKICAg
ICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QobV9wb3B1cC5nZXQoKSwgc3RkOjptYXgobWVu
dVNpemUud2lkdGgoKSwgcmVxdWlzaXRpb24ud2lkdGgpLCAtMSk7CiAKICAgICBpZiAoaXRlbUNv
dW50KSB7Ci0gICAgICAgIEdPd25QdHI8R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0
X2NoaWxkcmVuKEdUS19DT05UQUlORVIobV9wb3B1cC5nZXQoKSkpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRB
SU5FUihtX3BvcHVwLmdldCgpKSkpOwogICAgICAgICBpbnQgaTsKICAgICAgICAgR0xpc3QqIGNo
aWxkOwogICAgICAgICBmb3IgKGkgPSAwLCBjaGlsZCA9IGNoaWxkcmVuLmdldCgpOyBpIDwgaXRl
bUNvdW50OyBpKyssIGNoaWxkID0gZ19saXN0X25leHQoY2hpbGQpKSB7CkBAIC0xNTksNyArMTU5
LDcgQEAgYm9vbCBHdGtQb3B1cE1lbnU6OnR5cGVBaGVhZEZpbmQoR2RrRXZlbnRLZXkqIGV2ZW50
KQogICAgIH0KIAogICAgIGdsb25nIGNoYXJhY3RlcnNXcml0dGVuOwotICAgIEdPd25QdHI8Z3Vu
aWNoYXIyPiB1dGYxNlN0cmluZyhnX3VjczRfdG9fdXRmMTYoJnVuaWNvZGVDaGFyYWN0ZXIsIDEs
IDAsICZjaGFyYWN0ZXJzV3JpdHRlbiwgMCkpOworICAgIEdVbmlxdWVQdHI8Z3VuaWNoYXIyPiB1
dGYxNlN0cmluZyhnX3VjczRfdG9fdXRmMTYoJnVuaWNvZGVDaGFyYWN0ZXIsIDEsIDAsICZjaGFy
YWN0ZXJzV3JpdHRlbiwgMCkpOwogICAgIGlmICghdXRmMTZTdHJpbmcpIHsKICAgICAgICAgcmVz
ZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc5LDcg
KzE3OSw3IEBAIGJvb2wgR3RrUG9wdXBNZW51Ojp0eXBlQWhlYWRGaW5kKEdka0V2ZW50S2V5KiBl
dmVudCkKIAogICAgIC8vIExpa2UgdGhlIENocm9taXVtIHBvcnQsIHdlIGNhc2UgZm9sZCBiZWZv
cmUgc2VhcmNoaW5nLCBiZWNhdXNlIAogICAgIC8vIHN0cm5jbXAgZG9lcyBub3QgaGFuZGxlIG5v
bi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgIEdPd25QdHI8Z2NoYXI+IHNlYXJjaFN0cmluZ1dpdGhD
YXNlRm9sZGVkKGdfdXRmOF9jYXNlZm9sZChtX2N1cnJlbnRTZWFyY2hTdHJpbmcudXRmOCgpLmRh
dGEoKSwgLTEpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzZWFyY2hTdHJpbmdXaXRoQ2FzZUZv
bGRlZChnX3V0ZjhfY2FzZWZvbGQobV9jdXJyZW50U2VhcmNoU3RyaW5nLnV0ZjgoKS5kYXRhKCks
IC0xKSk7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihzZWFyY2hTdHJpbmdXaXRo
Q2FzZUZvbGRlZC5nZXQoKSk7CiAKICAgICBHTGlzdCogY2hpbGRyZW4gPSBndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1fcG9wdXAuZ2V0KCkpKTsKQEAgLTIxMCw3ICsy
MTAsNyBAQCBib29sIEd0a1BvcHVwTWVudTo6dHlwZUFoZWFkRmluZChHZGtFdmVudEtleSogZXZl
bnQpCiAgICAgICAgIGlmICghY3VycmVudENoaWxkKQogICAgICAgICAgICAgY3VycmVudENoaWxk
ID0gY2hpbGRyZW47CiAKLSAgICAgICAgR093blB0cjxnY2hhcj4gaXRlbVRleHQoZ191dGY4X2Nh
c2Vmb2xkKGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEdUS19NRU5VX0lURU0oY3VycmVudENoaWxk
LT5kYXRhKSksIC0xKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGl0ZW1UZXh0KGdfdXRm
OF9jYXNlZm9sZChndGtfbWVudV9pdGVtX2dldF9sYWJlbChHVEtfTUVOVV9JVEVNKGN1cnJlbnRD
aGlsZC0+ZGF0YSkpLCAtMSkpOwogICAgICAgICBpZiAoIXN0cm5jbXAoc2VhcmNoU3RyaW5nV2l0
aENhc2VGb2xkZWQuZ2V0KCksIGl0ZW1UZXh0LmdldCgpLCBwcmVmaXhMZW5ndGgpKSB7CiAgICAg
ICAgICAgICBndGtfbWVudV9zaGVsbF9zZWxlY3RfaXRlbShHVEtfTUVOVV9TSEVMTChtX3BvcHVw
LmdldCgpKSwgR1RLX1dJREdFVChjdXJyZW50Q2hpbGQtPmRhdGEpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAKaW5kZXgg
MzdhNzFlNS4uNThkM2E5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0xhbmd1YWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3Vh
Z2VHdGsuY3BwCkBAIC0yMCw4ICsyMCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKIAotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2Uo
KQogICAgIGlmICghbG9jYWxlRGVmYXVsdCkKICAgICAgICAgcmV0dXJuIFN0cmluZygiYyIpOwog
Ci0gICAgR093blB0cjxnY2hhcj4gbm9ybWFsaXplZERlZmF1bHQoZ19hc2NpaV9zdHJkb3duKGxv
Y2FsZURlZmF1bHQsIC0xKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbm9ybWFsaXplZERlZmF1
bHQoZ19hc2NpaV9zdHJkb3duKGxvY2FsZURlZmF1bHQsIC0xKSk7CiAgICAgY2hhciogcHRyID0g
c3RyY2hyKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgpLCAnXycpOwogCiAgICAgaWYgKHB0cikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNw
cAppbmRleCA5NDcxZDlkLi4zMGQ3ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCkBAIC0yOSwxOCArMjksMTcgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGd0a1N0b2NrTGFiZWwoY29uc3QgY2hhciogc3RvY2tJ
RCkKQEAgLTU0NCw5ICs1NDMsOCBAQCBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpCiAKIFN0
cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZihDXygiVGl0
bGUgc3RyaW5nIGZvciBpbWFnZXMiLCAiJXMgICglZHglZCBwaXhlbHMpIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3By
aW50ZihDXygiVGl0bGUgc3RyaW5nIGZvciBpbWFnZXMiLCAiJXMgICglZHglZCBwaXhlbHMpIiks
CisgICAgICAgIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKIH0K
QEAgLTY2OCwyMSArNjY2LDIxIEBAIFN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlv
bihmbG9hdCB0aW1lKQogICAgIHNlY29uZHMgJT0gNjA7CiAKICAgICBpZiAoZGF5cykgewotICAg
ICAgICBHT3duUHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIlZCBkYXlzICVkIGhv
dXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRz
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVk
IGRheXMgJWQgaG91cnMgJWQgbWludXRlcyAlZCBzZWNvbmRzIiwgZGF5cywgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdl
dCgpKTsKICAgICB9CiAKICAgICBpZiAoaG91cnMpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4g
c3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgaG91cnMgJWQgbWludXRlcyAlZCBzZWNvbmRzIiwg
aG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Ry
aW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgaG91cnMgJWQgbWludXRlcyAlZCBzZWNvbmRzIiwgaG91
cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobWludXRlcykgewotICAgICAgICBHT3du
UHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIlZCBtaW51dGVzICVkIHNlY29uZHMi
LCBtaW51dGVzLCBzZWNvbmRzKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhn
X3N0cmR1cF9wcmludGYoIiVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIG1pbnV0ZXMsIHNlY29uZHMp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKICAgICB9
CiAKLSAgICBHT3duUHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIlZCBzZWNvbmRz
Iiwgc2Vjb25kcykpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmlu
dGYoIiVkIHNlY29uZHMiLCBzZWNvbmRzKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nLmdldCgpKTsKIH0KICNlbmRpZiAgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IGZhN2JjN2Iu
LjU1NzM0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTE3LDcgKzExOCw3IEBAIEd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRI
ZWxwZXI6OnRhcmdldExpc3QoKSBjb25zdAogc3RhdGljIFN0cmluZyBzZWxlY3Rpb25EYXRhVG9V
VEY4U3RyaW5nKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEpCiB7CiAgICAgLy8gZ19zdHJuZHVwIGd1
YXJkcyBhZ2FpbnN0IHNlbGVjdGlvbiBkYXRhIHRoYXQgaXMgbm90IG51bGwtdGVybWluYXRlZC4K
LSAgICBHT3duUHRyPGdjaGFyPiBtYXJrdXBTdHJpbmcoZ19zdHJuZHVwKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSksIGd0a19z
ZWxlY3Rpb25fZGF0YV9nZXRfbGVuZ3RoKGRhdGEpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
bWFya3VwU3RyaW5nKGdfc3RybmR1cChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihndGtf
c2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGEoZGF0YSkpLCBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2xl
bmd0aChkYXRhKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KG1hcmt1cFN0cmluZy5n
ZXQoKSk7CiB9CiAKQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6Omdl
dENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQogICAgIEFTU0VSVChk
YXRhT2JqZWN0KTsKIAogICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFpbGFi
bGUoY2xpcGJvYXJkKSkgewotICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0RGF0YShndGtfY2xp
cGJvYXJkX3dhaXRfZm9yX3RleHQoY2xpcGJvYXJkKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHRleHREYXRhKGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChjbGlwYm9hcmQpKTsKICAg
ICAgICAgaWYgKHRleHREYXRhKQogICAgICAgICAgICAgZGF0YU9iamVjdC0+c2V0VGV4dChTdHJp
bmc6OmZyb21VVEY4KHRleHREYXRhLmdldCgpKSk7CiAgICAgfQpAQCAtMTc2LDcgKzE3Nyw3IEBA
IHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0
YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCh1cmwpOwogCi0gICAgICAgIEdPd25QdHI8Z2NoYXI+IHJlc3VsdERhdGEoZ19zdHJk
dXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVz
dWx0RGF0YShnX3N0cmR1cChyZXN1bHQudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBndGtfc2Vs
ZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIG5ldHNjYXBlVVJMQXRvbSwgOCwKICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4ocmVzdWx0RGF0YS5nZXQoKSks
IHN0cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAKQEAgLTE5MywxMiArMTk0LDEyIEBAIHZvaWQg
UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2Vs
ZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAgICAgYXV0byB0eXBlcyA9IGRhdGFPYmplY3QtPnVua25v
d25UeXBlcygpOwogICAgICAgICBhdXRvIGVuZCA9IHR5cGVzLmVuZCgpOwogICAgICAgICBmb3Ig
KGF1dG8gaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAg
IEdPd25QdHI8Z2NoYXI+IGRpY3RJdGVtKGdfc3RyZHVwX3ByaW50ZigieyclcycsICclcyd9Iiwg
aXQtPmtleS51dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSkpOworICAgICAg
ICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGljdEl0ZW0oZ19zdHJkdXBfcHJpbnRmKCJ7JyVzJywg
JyVzJ30iLCBpdC0+a2V5LnV0ZjgoKS5kYXRhKCksIGl0LT52YWx1ZS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGRfcGFyc2VkKCZidWlsZGVyLCBkaWN0
SXRlbS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJp
YW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKTsKLSAgICAgICAgR093blB0cjxn
Y2hhcj4gc2VyaWFsaXplZFZhcmlhbnQoZ192YXJpYW50X3ByaW50KHZhcmlhbnQuZ2V0KCksIFRS
VUUpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2VyaWFsaXplZFZhcmlhbnQoZ192YXJp
YW50X3ByaW50KHZhcmlhbnQuZ2V0KCksIFRSVUUpKTsKICAgICAgICAgZ3RrX3NlbGVjdGlvbl9k
YXRhX3NldChzZWxlY3Rpb25EYXRhLCB1bmtub3duQXRvbSwgMSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBndWNoYXIqPihzZXJpYWxpemVkVmFyaWFudC5nZXQoKSksIHN0cmxlbihzZXJpYWxpemVk
VmFyaWFudC5nZXQoKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BvcHVwTWVudUd0ay5jcHAKaW5kZXggZTBmYjFmZC4uNTQwM2NiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5jcHAKQEAgLTI4LDExICsyOCwxMCBAQAog
I2luY2x1ZGUgIlBvcHVwTWVudUd0ay5oIgogCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5j
bHVkZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRl
ICJHdGtVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSA8Z3Rr
L2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDcgKzUxLDcgQEAg
UG9wdXBNZW51R3RrOjp+UG9wdXBNZW51R3RrKCkKIAogR3RrQWN0aW9uKiBQb3B1cE1lbnVHdGs6
OmNyZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVtKGludCBpdGVtSW5kZXgpCiB7Ci0gICAgR093blB0
cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVwX3ByaW50ZigicG9wdXAtbWVudS1hY3Rpb24tJWQi
LCBpdGVtSW5kZXgpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJkdXBf
cHJpbnRmKCJwb3B1cC1tZW51LWFjdGlvbi0lZCIsIGl0ZW1JbmRleCkpOwogICAgIEd0a0FjdGlv
biogYWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoYWN0aW9uTmFtZS5nZXQoKSwgY2xpZW50KCktPml0
ZW1UZXh0KGl0ZW1JbmRleCkudXRmOCgpLmRhdGEoKSwgY2xpZW50KCktPml0ZW1Ub29sVGlwKGl0
ZW1JbmRleCkudXRmOCgpLmRhdGEoKSwgMCk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoYWN0aW9uKSwgInBvcHVwLW1lbnUtYWN0aW9uLWluZGV4IiwgR0lOVF9UT19QT0lOVEVSKGl0
ZW1JbmRleCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NB
TExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwgdGhpcyk7CkBAIC04Niw3ICs4NSw3IEBAIHZvaWQg
UG9wdXBNZW51R3RrOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywg
aW50IGluZGV4KQogICAgIEludFBvaW50IG1lbnVQb3NpdGlvbiA9IGNvbnZlcnRXaWRnZXRQb2lu
dFRvU2NyZWVuUG9pbnQoR1RLX1dJREdFVCh2aWV3LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFn
ZUNsaWVudCgpKSwgdmlldy0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9uKCkpKTsKICAg
ICBtZW51UG9zaXRpb24ubW92ZSgwLCByZWN0LmhlaWdodCgpKTsKIAotICAgIEdPd25QdHI8R2Rr
RXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRfZXZlbnQoKSk7CisgICAgR1VuaXF1
ZVB0cjxHZGtFdmVudD4gY3VycmVudEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKICAg
ICBtX3BvcHVwLT5wb3BVcChyZWN0LnNpemUoKSwgbWVudVBvc2l0aW9uLCBzaXplLCBpbmRleCwg
Y3VycmVudEV2ZW50LmdldCgpKTsKIAogICAgIC8vIEdUSyBjYW4gcmVmdXNlIHRvIGFjdHVhbGx5
IG9wZW4gdGhlIG1lbnUgd2hlbiBtb3VzZSBncmFicyBmYWlscy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbldpZGdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25XaWRnZXQuY3Bw
CmluZGV4IGU0N2Q1OTkuLjc3ODA2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uV2lkZ2V0LmNwcApAQCAtMjMsNyAr
MjMsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJH
dGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0aGVudGljYXRpb25X
aWRnZXRJbml0aWFsaXplKFdlYktpdEF1dGhlbnRpY2F0aW9uV2lkZ2V0KiBhdXQKICAgICBndGtf
d2lkZ2V0X3Nob3coaWNvbik7CiAKICAgICBXZWJLaXRBdXRoZW50aWNhdGlvbldpZGdldFByaXZh
dGUqIHByaXYgPSBhdXRoV2lkZ2V0LT5wcml2OwotICAgIEdPd25QdHI8Y2hhcj4gcHJvbXB0KGdf
c3RyZHVwX3ByaW50ZigKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHByb21wdChnX3N0cmR1cF9wcmlu
dGYoCiAgICAgICAgIF8oIlRoZSBzaXRlICVzOiVpIHJlcXVlc3RzIGEgdXNlcm5hbWUgYW5kIHBh
c3N3b3JkIiksCiAgICAgICAgIHByaXYtPmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5ob3N0
KCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgcHJpdi0+Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLnBvcnQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCBmMTlkMDRkLi43ZGM0M2UyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaApAQCAtNDksOCArNDksOCBAQAogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkK
KyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CiBjbGFzcyBGcmFtZTsKICNlbmRpZgpAQCAtMTk3LDcgKzE5Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFi
bGU7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAg
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKLSAgICAgICAgR093blB0cjxT
b3VwQnVmZmVyPiBtX3NvdXBCdWZmZXI7CisgICAgICAgIEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4g
bV9zb3VwQnVmZmVyOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keVNpemU7CiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV9ib2R5RGF0YVNlbnQ7CiAgICAgICAgIFNvdXBTZXNzaW9uKiBzb3Vw
U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9n
dGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAppbmRleCA1ZjFlNGM1Li4xNDEy
MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVk
ZW50aWFsQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNlbmRpZgogCkBAIC03
Nyw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIGNyZWRlbnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5
Q2FsbGJhY2soU2VjcmV0U2VydmljZSogc2VydmljZSwgR0FzCiAgICAgZGVsZXRlIGNhbGxiYWNr
RGF0YTsKIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHT3duUHRyPEdMaXN0PiBl
bGVtZW50cyhzZWNyZXRfc2VydmljZV9zZWFyY2hfZmluaXNoKHNlcnZpY2UsIGFzeW5jUmVzdWx0
LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBlbGVtZW50cyhzZWNy
ZXRfc2VydmljZV9zZWFyY2hfZmluaXNoKHNlcnZpY2UsIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKICAgICBpZiAoZXJyb3IgfHwgIWVsZW1lbnRzIHx8ICFlbGVtZW50cy0+ZGF0YSkg
ewogICAgICAgICBjYWxsYmFjayhDcmVkZW50aWFsKCksIGRhdGEpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAKaW5kZXggMTVmZDdjNS4uODEwMWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMjIs
NyArMjIsNyBAQAogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgotI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAu
aCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFyCiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25Q
dHI8U291cFVSST4gb3JpZ2luKHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOwotICAgIEdPd25QdHI8U291cFVSST4gZmlyc3RQYXJ0eVVSSShzb3VwX3VyaV9uZXcoZmly
c3RQYXJ0eS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJ
PiBvcmlnaW4oc291cF91cmlfbmV3KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiBmaXJzdFBhcnR5VVJJKHNvdXBfdXJpX25ldyhmaXJzdFBhcnR5
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIEdldCBleGlzdGluZyBjb29raWVz
IGZvciB0aGlzIG9yaWdpbi4KICAgICBHU0xpc3QqIGV4aXN0aW5nQ29va2llcyA9IHNvdXBfY29v
a2llX2phcl9nZXRfY29va2llX2xpc3QoamFyLCBvcmlnaW4uZ2V0KCksIFRSVUUpOwpAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHZhbHVlLnNwbGl0KCdcbics
IGNvb2tpZXMpOwogICAgIGNvbnN0IHNpemVfdCBjb29raWVzQ291bnQgPSBjb29raWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXNDb3VudDsgKytpKSB7Ci0gICAg
ICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHNvdXBfY29va2llX3BhcnNlKGNvb2tpZXNb
aV0udXRmOCgpLmRhdGEoKSwgb3JpZ2luLmdldCgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8U291
cENvb2tpZT4gY29va2llKHNvdXBfY29va2llX3BhcnNlKGNvb2tpZXNbaV0udXRmOCgpLmRhdGEo
KSwgb3JpZ2luLmdldCgpKSk7CiAgICAgICAgIGlmICghY29va2llKQogICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAg
IGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBHT3duUHRyPFNvdXBV
Ukk+IHVyaShzb3VwX3VyaV9uZXcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBH
T3duUHRyPGNoYXI+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2dldF9jb29raWVzKGphciwgdXJp
LmdldCgpLCBmb3JIVFRQSGVhZGVyKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291
cF91cmlfbmV3KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llcyhqYXIsIHVyaS5nZXQoKSwg
Zm9ySFRUUEhlYWRlcikpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0
KCkpOwogfQogCkBAIC0xNDksOCArMTQ5LDggQEAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkKICAg
ICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR093blB0cjxTb3VwVVJJ
PiB1cmkoc291cF91cmlfbmV3KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR093
blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2dldF9jb29raWVfbGlzdChqYXIs
IHVyaS5nZXQoKSwgVFJVRSkpOworICAgIEdVbmlxdWVQdHI8U291cFVSST4gdXJpKHNvdXBfdXJp
X25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R1NMaXN0
PiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xpc3QoamFyLCB1cmkuZ2V0KCks
IFRSVUUpKTsKICAgICBpZiAoIWNvb2tpZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTcxLDggKzE3MSw4IEBAIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAgICAgaWYgKCFqYXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8U291cFVSST4gdXJpKHNvdXBfdXJpX25ldyh1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVz
KHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xpc3QoamFyLCB1cmkuZ2V0KCksIFRSVUUpKTsK
KyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXcodXJsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tp
ZV9qYXJfZ2V0X2Nvb2tpZV9saXN0KGphciwgdXJpLmdldCgpLCBUUlVFKSk7CiAgICAgaWYgKCFj
b29raWVzKQogICAgICAgICByZXR1cm47CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdAogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewog
ICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lv
bik7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29r
aWVzKGNvb2tpZUphcikpOworICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29v
a2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9
IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAg
ICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRh
dGEpOwogICAgICAgICBpZiAoY29va2llLT5kb21haW4pCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBTdHJpbmcKIHsKICAgICBDU3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9z
dG5hbWUudXRmOCgpOwogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZv
clNlc3Npb24oc2Vzc2lvbik7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOworICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBj
b29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3Ig
KEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQo
aXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENv
b2tpZSo+KGl0ZW0tPmRhdGEpOwogICAgICAgICBpZiAoc291cF9jb29raWVfZG9tYWluX21hdGNo
ZXMoY29va2llLCBob3N0TmFtZVN0cmluZy5kYXRhKCkpKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgU3RyaW5nCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNv
b2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOworICAgIEdVbmlx
dWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVK
YXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0g
PSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3Rh
dGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwogICAgICAgICBzb3VwX2Nvb2tpZV9q
YXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIGNvb2tpZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKaW5kZXggMmVhYjlhMy4uNmY2MzBi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3Vw
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIkROU1Jl
c29sdmVRdWV1ZS5oIgogCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIKICNpbmNsdWRlICJTb3Vw
TmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKaW5kZXggYmE4NjU3Yi4uYmI3MmM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJM
b2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBmYWls
aW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCiB7CiAgICAgQVNTRVJUKHNvdXBVUkkpOwotICAgIEdP
d25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkp
OwogICAgIHJldHVybiB1cmkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXgg
NGM3MDc0OS4uN2E2Nzc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTU2LDYgKzU2LDcg
QEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjg2LDkgKzI4Nyw5IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRCdWZmZXIoKQogICAgIHNpemVfdCBidWZmZXJT
aXplOwogICAgIGNoYXIqIGJ1ZmZlckZyb21DbGllbnQgPSBjbGllbnQoKS0+Z2V0T3JDcmVhdGVS
ZWFkQnVmZmVyKGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmIChi
dWZmZXJGcm9tQ2xpZW50KQotICAgICAgICBkLT5tX3NvdXBCdWZmZXIuc2V0KHNvdXBfYnVmZmVy
X25ldyhTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ1ZmZlckZyb21DbGllbnQsIGJ1ZmZlclNpemUp
KTsKKyAgICAgICAgZC0+bV9zb3VwQnVmZmVyLnJlc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01F
TU9SWV9URU1QT1JBUlksIGJ1ZmZlckZyb21DbGllbnQsIGJ1ZmZlclNpemUpKTsKICAgICBlbHNl
Ci0gICAgICAgIGQtPm1fc291cEJ1ZmZlci5zZXQoc291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZ
X1RBS0UsIHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhnRGVmYXVsdFJlYWRCdWZmZXJTaXpl
KSksIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpKTsKKyAgICAgICAgZC0+bV9zb3VwQnVmZmVyLnJl
c2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9UQUtFLCBzdGF0aWNfY2FzdDxjaGFyKj4o
Z19tYWxsb2MoZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSkpLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXpl
KSk7CiAKICAgICBBU1NFUlQoZC0+bV9zb3VwQnVmZmVyKTsKIH0KQEAgLTU0Nyw3ICs1NDgsNyBA
QCBzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbgogICAgIGQtPm1faW5wdXRTdHJlYW0uY2xlYXIoKTsK
ICAgICBkLT5tX211bHRpcGFydElucHV0U3RyZWFtLmNsZWFyKCk7CiAgICAgZC0+bV9jYW5jZWxs
YWJsZS5jbGVhcigpOwotICAgIGQtPm1fc291cEJ1ZmZlci5jbGVhcigpOworICAgIGQtPm1fc291
cEJ1ZmZlci5yZXNldCgpOwogCiAgICAgaWYgKGQtPm1fc291cE1lc3NhZ2UpIHsKICAgICAgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKGQtPm1fc291cE1lc3NhZ2UuZ2V0
KCksIEdfU0lHTkFMX01BVENIX0RBVEEsCkBAIC05OTIsNyArOTkzLDcgQEAgc3RhdGljIGJvb2wg
Y3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFIKIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKIAotICAgIEdPd25QdHI8
U291cFVSST4gc291cFVSSShyZXF1ZXN0LnNvdXBVUkkoKSk7CisgICAgR1VuaXF1ZVB0cjxTb3Vw
VVJJPiBzb3VwVVJJKHJlcXVlc3Quc291cFVSSSgpKTsKICAgICBpZiAoIXNvdXBVUkkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDQ3ODg0ODcu
LjIzNTlmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTIwLDExICsyMCwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogCi0jaW5j
bHVkZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1
ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlNvdXBVUklVdGlscy5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM2LDcgKzM1LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBN
ZXNzYWdlTWVtYmVycyhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpIGNvbnN0CiAKICAgICBTdHJp
bmcgZmlyc3RQYXJ0eVN0cmluZyA9IGZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5nKCk7CiAg
ICAgaWYgKCFmaXJzdFBhcnR5U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBHT3duUHRyPFNv
dXBVUkk+IGZpcnN0UGFydHkoc291cF91cmlfbmV3KGZpcnN0UGFydHlTdHJpbmcudXRmOCgpLmRh
dGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGZpcnN0UGFydHkoc291cF91cmlf
bmV3KGZpcnN0UGFydHlTdHJpbmcudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X2ZpcnN0X3BhcnR5KHNvdXBNZXNzYWdlLCBmaXJzdFBhcnR5LmdldCgpKTsKICAgICB9
CiAKQEAgLTcxLDcgKzcwLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNz
YWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKIHsKICAgICBnX29iamVjdF9zZXQo
c291cE1lc3NhZ2UsIFNPVVBfTUVTU0FHRV9NRVRIT0QsIGh0dHBNZXRob2QoKS51dGY4KCkuZGF0
YSgpLCBOVUxMKTsKIAotICAgIEdPd25QdHI8U291cFVSST4gdXJpKHNvdXBVUkkoKSk7CisgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291cFVSSSgpKTsKICAgICBzb3VwX21lc3NhZ2Vfc2V0
X3VyaShzb3VwTWVzc2FnZSwgdXJpLmdldCgpKTsKIAogICAgIHVwZGF0ZVNvdXBNZXNzYWdlTWVt
YmVycyhzb3VwTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRleCA1NDE2ZGJi
Li5lMzYyZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKQEAgLTIxLDcgKzIxLDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAKLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU291cFVSSVV0aWxzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVS
SVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJ
VXRpbHMuY3BwCmluZGV4IDU1M2JhZDkuLmVhODkwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCkBAIC0xOSw4ICsx
OSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU291cFVSSVV0aWxzLmgiCiAK
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3Vw
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gbm90IHdh
bnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9ucwog
VVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSkKIHsKLSAgICBHT3duUHRyPGdjaGFy
PiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxT
RSkpOwogICAgIFVSTCB1cmwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgp
KSk7CiAKICAgICBpZiAoIXNvdXBVUkktPnBhc3N3b3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKaW5kZXggZmI1NTczOC4uNzQ1Nzkw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNv
dXAuY3BwCkBAIC0yNiw5ICsyNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKICAgICA6IG1fc2l6ZSgw
KQorICAgICwgbV9zb3VwQnVmZmVyKHNvdXBCdWZmZXIpCiB7CiAgICAgQVNTRVJUKHNvdXBCdWZm
ZXIpOwotICAgIG1fc291cEJ1ZmZlci5zZXQoc291cEJ1ZmZlcik7CiB9CiAKIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIqIHNv
dXBCdWZmZXIpCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIqIHNvdXBCdWZmZXIpCiAKIHZvaWQg
U2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0YSgpCiB7Ci0gICAgbV9zb3VwQnVmZmVyLmNs
ZWFyKCk7CisgICAgbV9zb3VwQnVmZmVyLnJlc2V0KCk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVy
Ojp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyKiBuZXdD
b250ZW50cykKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNm
ZXJQbGF0Zm9ybURhdGEoKQogCiAgICAgLy8gSGFuZyBvbiB0byB0aGUgbV9zb3VwQnVmZmVyIHBv
aW50ZXIgaW4gYSBsb2NhbCBwb2ludGVyIGFzIGFwcGVuZCgpIHdpbGwgcmUtZW50ZXIgbWF5YmVU
cmFuc2ZlclBsYXRmb3JtRGF0YSgpCiAgICAgLy8gYW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRv
IGVhcmx5IHJldHVybiB3aGVuIGl0IGRvZXMuCi0gICAgR093blB0cjxTb3VwQnVmZmVyPiBzb3Vw
QnVmZmVyOworICAgIEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4gc291cEJ1ZmZlcjsKICAgICBzb3Vw
QnVmZmVyLnN3YXAobV9zb3VwQnVmZmVyKTsKIAogICAgIGFwcGVuZChzb3VwQnVmZmVyLT5kYXRh
LCBzb3VwQnVmZmVyLT5sZW5ndGgpOwpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZl
cjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNQ
bGF0Zm9ybURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3NvdXBCdWZmZXI7CisgICAgcmV0
dXJuIG1fc291cEJ1ZmZlci5nZXQoKTsKIH0KIAogY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpw
bGF0Zm9ybURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9n
dGsvUGx1Z2luUGFja2FnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVn
aW5QYWNrYWdlR3RrLmNwcAppbmRleCA5MjZhN2Q5Li5hODFmNWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcApAQCAtMjksMTMgKzI5LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCi0j
aW5jbHVkZSAiR093blB0ckd0ay5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgIlBsdWdpbkRlYnVnLmgiCiAjaW5jbHVk
ZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcyLDcg
KzcyLDcgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogCiAgICAgZ2NoYXIqKiBt
aW1lRGVzY3MgPSBnX3N0cnNwbGl0KHR5cGVzLCAiOyIsIC0xKTsKICAgICBmb3IgKGludCBpID0g
MDsgbWltZURlc2NzW2ldICYmIG1pbWVEZXNjc1tpXVswXTsgaSsrKSB7Ci0gICAgICAgIEdPd25Q
dHI8Y2hhcj4gbWltZShnX3V0Zjhfc3RyZG93bihtaW1lRGVzY3NbaV0sIC0xKSk7CisgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcj4gbWltZShnX3V0Zjhfc3RyZG93bihtaW1lRGVzY3NbaV0sIC0xKSk7
CiAgICAgICAgIGdjaGFyKiogbWltZURhdGEgPSBnX3N0cnNwbGl0KG1pbWUuZ2V0KCksICI6Iiwg
Myk7CiAgICAgICAgIGlmIChnX3N0cnZfbGVuZ3RoKG1pbWVEYXRhKSA8IDMpIHsKICAgICAgICAg
ICAgIGdfc3RyZnJlZXYobWltZURhdGEpOwpAQCAtMTI5LDIyICsxMjksMjIgQEAgYm9vbCBQbHVn
aW5QYWNrYWdlOjpsb2FkKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgR093
blB0cjxnY2hhcj4gZmluYWxQYXRoKGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmluYWxQYXRoKGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0
YSgpKSk7CiAgICAgd2hpbGUgKGdfZmlsZV90ZXN0KGZpbmFsUGF0aC5nZXQoKSwgR19GSUxFX1RF
U1RfSVNfU1lNTElOSykpIHsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbmFsUGF0aC5nZXQoKSkpOwogICAgICAgICBHUmVmUHRy
PEdGaWxlPiBkaXIgPSBhZG9wdEdSZWYoZ19maWxlX2dldF9wYXJlbnQoZmlsZS5nZXQoKSkpOwot
ICAgICAgICBHT3duUHRyPGdjaGFyPiBsaW5rUGF0aChnX2ZpbGVfcmVhZF9saW5rKGZpbmFsUGF0
aC5nZXQoKSwgMCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBsaW5rUGF0aChnX2ZpbGVf
cmVhZF9saW5rKGZpbmFsUGF0aC5nZXQoKSwgMCkpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBy
ZXNvbHZlZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX3Jlc29sdmVfcmVsYXRpdmVfcGF0aChkaXIu
Z2V0KCksIGxpbmtQYXRoLmdldCgpKSk7Ci0gICAgICAgIGZpbmFsUGF0aC5zZXQoZ19maWxlX2dl
dF9wYXRoKHJlc29sdmVkRmlsZS5nZXQoKSkpOworICAgICAgICBmaW5hbFBhdGgucmVzZXQoZ19m
aWxlX2dldF9wYXRoKHJlc29sdmVkRmlsZS5nZXQoKSkpOwogICAgIH0KIAogICAgIC8vIE5vIGpv
a2UuIElmIHRoZXJlIGlzIGEgbmV0c2NhcGUgY29tcG9uZW50IGluIHRoZSBwYXRoLCBnbyBiYWNr
CiAgICAgLy8gdG8gdGhlIHN5bWxpbmssIGFzIGZsYXNoIGJyZWFrcyBvdGhlcndpc2UuCiAgICAg
Ly8gU2VlIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL3dl
YmtpdC9nbHVlL3BsdWdpbnMvcGx1Z2luX2xpc3RfcG9zaXguY2MKLSAgICBHT3duUHRyPGdjaGFy
PiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKGZpbmFsUGF0aC5nZXQoKSkpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUoZmluYWxQYXRoLmdl
dCgpKSk7CiAgICAgaWYgKCFnX3N0cmNtcDAoYmFzZU5hbWUuZ2V0KCksICJsaWJmbGFzaHBsYXll
ci5zbyIpCiAgICAgICAgICYmIGdfc3Ryc3RyX2xlbihmaW5hbFBhdGguZ2V0KCksIC0xLCAiL25l
dHNjYXBlLyIpKQotICAgICAgICBmaW5hbFBhdGguc2V0KGdfc3RyZHVwKG1fcGF0aC51dGY4KCku
ZGF0YSgpKSk7CisgICAgICAgIGZpbmFsUGF0aC5yZXNldChnX3N0cmR1cChtX3BhdGgudXRmOCgp
LmRhdGEoKSkpOwogCiAgICAgbV9tb2R1bGUgPSBnX21vZHVsZV9vcGVuKGZpbmFsUGF0aC5nZXQo
KSwgR19NT0RVTEVfQklORF9MT0NBTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBkYjk3YWVhLi43
YTEwZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTQtMDEtMjIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTElC
XSBVc2UgR1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdVbmlxdWVQdHIgaXMgYSB0ZW1wbGF0ZSBhbGlh
cyBvZiBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBhIGN1c3RvbQorICAgICAgICBkZWxldGVyIHRoYXQg
cmVwbGFjZXMgR093blB0ci4gR093blB0ciBpcyBzdGlsbCB1c2VkIGZvciB0aGUgY2FzZXMKKyAg
ICAgICAgd2hlcmUgdGhlIG91dHB1dCBwb2ludGVyIGlzIG5lZWRlZCwgYnV0IGl0IHdpbGwgYWxz
byBiZSByZXBsYWNlZCBzb29uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRVbmljb2RlTWVudUl0ZW1Qb3Np
dGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmF2aWNvbmRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX3NldF9wYXRoKToK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0LmNwcDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgICh3ZWJraXRJbml0KToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Omtp
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHA6CisgICAgICAgICh3
ZWJraXRfaWNvbl9kYXRhYmFzZV9zZXRfcGF0aCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHNw
ZWxsY2hlY2tlcmVuY2hhbnQuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW4u
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl9wbHVnaW5fZ2V0X3BhdGgpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRl
eHRfbWVudV9ldmVudCk6CisgICAgICAgIChmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJh
Y2spOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKToKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDoKKwogMjAxNC0wMS0xOCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ug
c3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAK
aW5kZXggOWViNzVkZS4uYWI1ZjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBpbnB1dE1ldGhvZHNNZW51SXRlbSAoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIAogc3RhdGljIGludCBnZXRVbmljb2RlTWVudUl0ZW1Qb3NpdGlvbihHdGtN
ZW51KiBtZW51KQogewotICAgIEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0
X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBp
dGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAg
ICAgaW50IHVuaWNvZGVNZW51SXRlbVBvc2l0aW9uID0gLTE7CiAgICAgR0xpc3QqIGl0ZXI7CiAg
ICAgaW50IGkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcAppbmRleCAwOTA1NWViLi4xMTExN2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcApAQCAtMjgsOCAr
MjgsOCBAQAogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgogI2luY2x1ZGUg
IkdSZWZQdHJHdGsuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR3Rr
VmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFz
dGVib2FyZC5oIgpAQCAtODEsNyArODEsNyBAQCB2b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sCiAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KGtp
dCgmZnJhbWUpKTsKICAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCA9IGNsaXBi
b2FyZC5wYXN0ZWJvYXJkKCkuZGF0YU9iamVjdCgpOwogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlz
dD4gdGFyZ2V0TGlzdCA9IGFkb3B0R1JlZihQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVi
b2FyZEhlbHBlcigpLT50YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7
Ci0gICAgR093blB0cjxHZGtFdmVudD4gY3VycmVudEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVu
dCgpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJy
ZW50X2V2ZW50KCkpOwogCiAgICAgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQgPSBndGtfZHJhZ19i
ZWdpbihHVEtfV0lER0VUKG1fd2ViVmlldyksIHRhcmdldExpc3QuZ2V0KCksIGRyYWdPcGVyYXRp
b25Ub0dka0RyYWdBY3Rpb25zKGNsaXBib2FyZC5zb3VyY2VPcGVyYXRpb24oKSksIDEsIGN1cnJl
bnRFdmVudC5nZXQoKSk7CiAgICAgd2ViVmlldy0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuc3Rh
cnRlZERyYWcoY29udGV4dCwgZGF0YU9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAppbmRleCA4YzllNzYyLi5hZmE2YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFs
dWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHZhbHVlKTsKLSAgICBHT3duUHRyPGdjaGFyPiB2YWx1ZUJ1ZmZlcihzdGF0aWNfY2Fz
dDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
dmFsdWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwog
ICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodmFsdWUsIHZhbHVlQnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKICAgICBpbnB1dEVsZW1lbnQtPnNldFZhbHVlRm9yVXNlcihTdHJpbmc6OmZyb21V
VEY4KHZhbHVlQnVmZmVyLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCmluZGV4IDVmNTFjZmMuLmI0ODdiNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiAKICNpZiBFTkFCTEUoU1BFTExDSEVDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCBhMTAxODE1
Li4yYTI0NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC05Nyw2ICs5Nyw3IEBACiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtMTIzLDcgKzEyNCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50
Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsK
LSAgICBHT3duUHRyPGdjaGFyPiB1c2VyQWdlbnRTdHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2Vy
QWdlbnRGb3JVUkkoc2V0dGluZ3MsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gdXNlckFnZW50U3RyaW5nKHdlYmtpdFdlYlNldHRpbmdzVXNlckFn
ZW50Rm9yVVJJKHNldHRpbmdzLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHVzZXJBZ2VudFN0cmluZy5nZXQoKSk7CiB9CiAKQEAgLTIw
NCw3ICsyMDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQogICAgIGlmIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSkgewogICAgICAgICBD
U3RyaW5nIHVzZXJuYW1lOwogICAgICAgICBDU3RyaW5nIHBhc3N3b3JkOwotICAgICAgICBHT3du
UHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5nKGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVy
KSk7CiAgICAgICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfcmVzb3VyY2UodmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiAgICAgICAg
IGlmICghRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2F1dGhlbnRpY2F0aW9uQ2FsbGJhY2sg
fHwgIUR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19hdXRoZW50aWNhdGlvbkNhbGxiYWNrKHVz
ZXJuYW1lLCBwYXNzd29yZCwgd2ViUmVzb3VyY2UpKSB7CiAgICAgICAgICAgICBjaGFsbGVuZ2Uu
YXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKGNoYWxsZW5nZSk7CkBAIC0yNDQsNyArMjQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwKICAgICAgICAgbmV0d29ya1Jlc3BvbnNlID0gYWRvcHRHUmVmKGtpdE5ldyhyZWRp
cmVjdFJlc3BvbnNlKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zy
b21GcmFtZShtX2ZyYW1lKTsKLSAgICBHT3duUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRv
U3RyaW5nKGlkZW50aWZpZXIpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBpZGVudGlmaWVyU3Ry
aW5nKHRvU3RyaW5nKGlkZW50aWZpZXIpKTsKICAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVz
b3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKHdlYlZpZXcsIGlkZW50aWZpZXJT
dHJpbmcuZ2V0KCkpOwogICAgIEdSZWZQdHI8V2ViS2l0TmV0d29ya1JlcXVlc3Q+IG5ldHdvcmtS
ZXF1ZXN0KGFkb3B0R1JlZihraXROZXcocmVxdWVzdCkpKTsKIApAQCAtMjcwLDcgKzI3MSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2ln
bklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRl
bnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJp
bmcoaWRlbnRpZmllcikpOwogCiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0g
V0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNF
LCAidXJpIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCAwKSk7CiAKQEAg
LTMwMCw3ICszMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZAogICAgIG1fcmVzcG9uc2Ug
PSByZXNwb25zZTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZy
YW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJp
bmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmco
dG9TdHJpbmcoaWRlbnRpZmllcikpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJj
ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmlu
Zy5nZXQoKSk7CiAgICAgR1JlZlB0cjxXZWJLaXROZXR3b3JrUmVzcG9uc2U+IG5ldHdvcmtSZXNw
b25zZShhZG9wdEdSZWYoa2l0TmV3KHJlc3BvbnNlKSkpOwogCkBAIC05NDIsNyArOTQzLDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IFVSTCYgdXIKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoKQogewogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+
IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOwogICAgIFdlYktp
dFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uo
d2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUod2ViUmVzb3VyY2UsICJjb250ZW50LWxlbmd0aC1yZWNlaXZlZCIsIGRhdGFMZW5ndGgp
OwpAQCAtOTU1LDcgKzk1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyCiAgICAgc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpEb2N1bWVudExvYWRlcio+KGxvYWRlciktPmRlY3JlYXNlTG9hZENvdW50
KGlkZW50aWZpZXIpOwogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9t
RnJhbWUobV9mcmFtZSk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0
cmluZyhpZGVudGlmaWVyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmlu
Zyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291
cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlmaWVyU3Ry
aW5nLmdldCgpKTsKIAogICAgIC8vIEEgTlVMTCBXZWJSZXNvdXJjZSBtZWFucyB0aGUgbG9hZCBo
YXMgYmVlbiBpbnRlcnJ1cHRlZCwgYW5kCkBAIC05ODgsNyArOTg5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogbG9hZGVyLAogICAgIHN0YXRpY19jYXN0PFdlYktpdDo6RG9jdW1lbnRMb2FkZXIqPihsb2Fk
ZXIpLT5kZWNyZWFzZUxvYWRDb3VudChpZGVudGlmaWVyKTsKIAogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+
IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOwogICAgIFdlYktp
dFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uo
d2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiAKICAgICAvLyBBIE5VTEwgV2ViUmVz
b3VyY2UgbWVhbnMgdGhlIGxvYWQgaGFzIGJlZW4gaW50ZXJydXB0ZWQsIGFuZApAQCAtOTk2LDkg
Kzk5Nyw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmco
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBpZiAoIXdlYlJlc291cmNlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9u
ZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yLmVycm9yQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVh
cmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgIGVy
cm9yLmVycm9yQ29kZSgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRh
KCkpKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFp
bGVkIiwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1l
LCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCB3ZWJSZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwpA
QCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBub3RpZnlTdGF0dXMobV9m
cmFtZSwgV0VCS0lUX0xPQURfRkFJTEVEKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJv
cihnX2Vycm9yX25ld19saXRlcmFsKAorICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJvcihn
X2Vycm9yX25ld19saXRlcmFsKAogICAgICAgICBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICBlcnJvci5lcnJvckNvZGUoKSwKICAgICAg
ICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0xMDM5
LDcgKzEwMzksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIG1fbG9hZGluZ0Vycm9yUGFnZSA9IHRy
dWU7CiAKICAgICBTdHJpbmcgY29udGVudDsKLSAgICBHT3duUHRyPGdjaGFyPiBlcnJvclBhdGgo
Z19idWlsZF9maWxlbmFtZShzaGFyZWRSZXNvdXJjZXNQYXRoKCkuZGF0YSgpLCAicmVzb3VyY2Vz
IiwgImVycm9yLmh0bWwiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZXJyb3JQYXRo
KGdfYnVpbGRfZmlsZW5hbWUoc2hhcmVkUmVzb3VyY2VzUGF0aCgpLmRhdGEoKSwgInJlc291cmNl
cyIsICJlcnJvci5odG1sIiwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGVycm9yRmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGVycm9yUGF0aC5nZXQoKSkpOwogCiAgICAg
aWYgKCFlcnJvckZpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4IDcxNDFjZmYuLmI5MmE4ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAj
aW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFBhZ2U7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
S2l0V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJv
bnRlbmRQYWdlOwogICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50
OwotICAgIEdPd25QdHI8Z2NoYXI+IG1faW5zcGVjdG9yRmlsZXNQYXRoOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IG1faW5zcGVjdG9yRmlsZXNQYXRoOwogfTsKIAogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJh
c2UuY3BwCmluZGV4IDBlMmNlNmMuLjFkOTYwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAj
aW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAvKioK
QEAgLTE4OCw3ICsxODgsNyBAQCB0eXBlZGVmIFZlY3RvcjxPd25QdHI8UGVuZGluZ0ljb25SZXF1
ZXN0PiA+IFBlbmRpbmdJY29uUmVxdWVzdFZlY3RvcjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFBlbmRpbmdJY29uUmVxdWVzdFZlY3Rvcio+IFBlbmRpbmdJY29uUmVxdWVzdE1hcDsKIAogc3Ry
dWN0IF9XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlIHsKLSAgICBHT3duUHRyPGdjaGFyPiBw
YXRoOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhdGg7CiAgICAgSWNvbkRhdGFiYXNlQ2xpZW50
R3RrIGljb25EYXRhYmFzZUNsaWVudDsKICAgICBQZW5kaW5nSWNvblJlcXVlc3RNYXAgcGVuZGlu
Z0ljb25SZXF1ZXN0czsKICAgICBib29sIGltcG9ydEZpbmlzaGVkOwpAQCAtMzQ1LDcgKzM0NSw3
IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2Vfc2V0X3BhdGgoV2ViS2l0RmF2aWNvbkRh
dGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgZ2NoCiAKICAgICBkYXRhYmFzZS0+cHJpdi0+aW1wb3J0
RmluaXNoZWQgPSBmYWxzZTsKICAgICBpZiAoIXBhdGggfHwgIXBhdGhbMF0pIHsKLSAgICAgICAg
ZGF0YWJhc2UtPnByaXYtPnBhdGguc2V0KDApOworICAgICAgICBkYXRhYmFzZS0+cHJpdi0+cGF0
aC5yZXNldCgpOwogICAgICAgICBpY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX3NldF9wYXRoKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNv
bnN0IGdjaAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGF0YWJhc2UtPnByaXYtPnBh
dGguc2V0KGdfc3RyZHVwKHBhdGgpKTsKKyAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldChn
X3N0cmR1cChwYXRoKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGZpbGVjaG9vc2VycmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0LmNwcAppbmRleCBjMTM3M2VkLi4xYTIyODUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmlsZWNob29zZXJy
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmlsZWNob29z
ZXJyZXF1ZXN0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIndlYmtpdGZpbGVjaG9v
c2VycmVxdWVzdHByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNw
cAppbmRleCBmNjFjOGUyLi5hZmYyNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGdsb2JhbHMuY3BwCkBAIC01Myw4ICs1Myw4IEBACiAjaW5jbHVkZSA8cnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KIAogc3RhdGljIFdlYktpdENhY2hlTW9kZWwgY2FjaGVNb2RlbCA9IFdFQktJVF9DQUNIRV9N
T0RFTF9ERUZBVUxUOwogCkBAIC01NTAsMTUgKzU1MCwxNSBAQCB2b2lkIHdlYmtpdEluaXQoKQog
ICAgIC8vIHRoYXQgbWF5IG9ubHkgYmUgZG9uZSBieSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYXRv
bWljQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSgiVVRGLTgiKTsKIAotICAgIEdPd25QdHI8Z2No
YXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid2Via2l0IiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIo
KSwgIndlYmtpdCIsICJkYXRhYmFzZXMiLCBOVUxMKSk7CiAgICAgd2Via2l0X3NldF93ZWJfZGF0
YWJhc2VfZGlyZWN0b3J5X3BhdGgoZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogCi0gICAgR093
blB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCAid2Via2l0Z3RrIiwgImFwcGxpY2F0aW9ucyIsIE5VTEwpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJf
Y2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCAiYXBwbGljYXRpb25zIiwgTlVMTCkpOwogICAgIFdl
YkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KGNhY2hlRGlyZWN0b3J5Lmdl
dCgpKTsKIAogICAgIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3ModHJ1ZSk7
CiAKLSAgICBHT3duUHRyPGdjaGFyPiBpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0IiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0IiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsK
ICAgICB3ZWJraXRfaWNvbl9kYXRhYmFzZV9zZXRfcGF0aCh3ZWJraXRfZ2V0X2ljb25fZGF0YWJh
c2UoKSwgaWNvbkRhdGFiYXNlUGF0aC5nZXQoKSk7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IGNiNDFlZGQuLjA5NjM1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAK
QEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0yODMsMjYgKzI4MywyNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZ3VpbnQgY29udGV4dCA9IFdFQktJVF9ISVRfVEVTVF9S
RVNVTFRfQ09OVEVYVF9ET0NVTUVOVDsKLSAgICBHT3duUHRyPGNoYXI+IGxpbmtVUkkoMCk7Ci0g
ICAgR093blB0cjxjaGFyPiBpbWFnZVVSSSgwKTsKLSAgICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJ
KDApOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbGlua1VSSTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IGltYWdlVVJJOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWVkaWFVUkk7CiAgICAgV2ViS2l0RE9N
Tm9kZSogbm9kZSA9IDA7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGlubmVyTm9kZUZyYW1lOwogICAg
IFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogCiAgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JF
U1VMVF9DT05URVhUX0xJTks7Ci0gICAgICAgIGxpbmtVUkkuc2V0KGdfc3RyZHVwKHJlc3VsdC5h
YnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGxpbmtV
UkkucmVzZXQoZ19zdHJkdXAocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpKTsKICAgICB9CiAKICAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9D
T05URVhUX0lNQUdFOwotICAgICAgICBpbWFnZVVSSS5zZXQoZ19zdHJkdXAocmVzdWx0LmFic29s
dXRlSW1hZ2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGltYWdlVVJJ
LnJlc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSkpOwogICAgIH0KIAogICAgIGlmICghcmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5p
c0VtcHR5KCkpIHsKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NP
TlRFWFRfTUVESUE7Ci0gICAgICAgIG1lZGlhVVJJLnNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1
dGVNZWRpYVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgbWVkaWFVUkku
cmVzZXQoZ19zdHJkdXAocmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5pc1NlbGVjdGVkKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwCmluZGV4IDcwYjUx
MTQuLjQxMmQyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRp
Y29uZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29u
ZGF0YWJhc2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlv
cmlnaW5wcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiAvKioKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIGd1aW50IHdlYmtpdF9pY29uX2Rh
dGFiYXNlX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogR19ERUZJTkVfVFlQRShXZWJL
aXRJY29uRGF0YWJhc2UsIHdlYmtpdF9pY29uX2RhdGFiYXNlLCBHX1RZUEVfT0JKRUNUKTsKIAog
c3RydWN0IF9XZWJLaXRJY29uRGF0YWJhc2VQcml2YXRlIHsKLSAgICBHT3duUHRyPGdjaGFyPiBw
YXRoOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhdGg7CiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfaWNvbl9kYXRhYmFzZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCkBAIC0yMzQsMTIgKzIz
NCwxMiBAQCB2b2lkIHdlYmtpdF9pY29uX2RhdGFiYXNlX3NldF9wYXRoKFdlYktpdEljb25EYXRh
YmFzZSogZGF0YWJhc2UsIGNvbnN0IGdjaGFyKiBwYQogICAgICAgICBXZWJDb3JlOjppY29uRGF0
YWJhc2UoKS5jbG9zZSgpOwogCiAgICAgaWYgKCEocGF0aCAmJiBwYXRoWzBdKSkgewotICAgICAg
ICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5zZXQoMCk7CisgICAgICAgIGRhdGFiYXNlLT5wcml2LT5w
YXRoLnJlc2V0KCk7CiAgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGF0YWJhc2UtPnByaXYtPnBh
dGguc2V0KGdfc3RyZHVwKHBhdGgpKTsKKyAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldChn
X3N0cmR1cChwYXRoKSk7CiAKICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zZXRFbmFibGVk
KHRydWUpOwogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLm9wZW4oV2ViQ29yZTo6ZmlsZW5h
bWVUb1N0cmluZyhkYXRhYmFzZS0+cHJpdi0+cGF0aC5nZXQoKSksIFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxjaGVja2VyZW5jaGFudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxjaGVja2VyZW5jaGFudC5jcHAKaW5kZXggZTQ2MTQw
OC4uMGM0ZDcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNw
ZWxsY2hlY2tlcmVuY2hhbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIndl
YmtpdHNwZWxsY2hlY2tlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwCmluZGV4IDczYjQyZWUuLmNlYzYx
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwCkBA
IC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmgiCiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIC8qKgogICogU0VDVElPTjp3
ZWJraXR3ZWJwbHVnaW4KQEAgLTE5MiwxNCArMTkzLDE0IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF93
ZWJfcGx1Z2luX2dldF9wYXRoKFdlYktpdFdlYlBsdWdpbiogcGx1Z2luKQogICAgICAgICByZXR1
cm4gcHJpdi0+cGF0aC5nZXQoKTsKIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBw
cml2LT5wYXRoLnNldChnX2ZpbGVuYW1lX2Zyb21fdXRmOChwcml2LT5jb3JlUGx1Z2luLT5wYXRo
KCkudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsICZlcnJvci5vdXRQdHIoKSkpOworICAgIHByaXYt
PnBhdGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0ZjgocHJpdi0+Y29yZVBsdWdpbi0+cGF0aCgp
LnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKIAogICAgIGlmICgh
ZXJyb3IpCiAgICAgICAgIHJldHVybiBwcml2LT5wYXRoLmdldCgpOwogCiAgICAgLy8gSW4gdGhl
IHVubGlrZWx5IGNhc2UgdGhlIGNvbnZlcnRpb24gZmFpbHMsIHJlcG9ydCB0aGUgZXJyb3IgYW5k
IG1ha2Ugc3VyZSB3ZSBmcmVlCiAgICAgLy8gYW55IHBhcnRpYWwgY29udmVydGlvbiB0aGF0IGVu
ZGVkIHVwIGluIHRoZSB2YXJpYWJsZS4KLSAgICBwcml2LT5wYXRoLmNsZWFyKCk7CisgICAgcHJp
di0+cGF0aC5yZXNldCgpOwogCiAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gY29udmVydCAnJXMn
IHRvIHN5c3RlbSBmaWxlbmFtZSBlbmNvZGluZzogJXMiLCBwcml2LT5jb3JlUGx1Z2luLT5wYXRo
KCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2lucHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbnByaXZhdGUuaAppbmRleCA1MDdmNzJlLi5lZDIx
Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2lu
cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5w
cml2YXRlLmgKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbi5o
IgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDcgKzM5LDcgQEAg
c3RydWN0IF9XZWJLaXRXZWJQbHVnaW5Qcml2YXRlIHsKICAgICBSZWZQdHI8V2ViQ29yZTo6UGx1
Z2luUGFja2FnZT4gY29yZVBsdWdpbjsKICAgICBDU3RyaW5nIG5hbWU7CiAgICAgQ1N0cmluZyBk
ZXNjcmlwdGlvbjsKLSAgICBHT3duUHRyPGNoYXI+IHBhdGg7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiBwYXRoOwogICAgIEdTTGlzdCogbWltZVR5cGVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMDlhY2NmOC4uM2FjZWVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXR2ZXJzaW9uLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRl
LmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxp
Yi5oPgpAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Y2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAqCiAgICAgKiBT
aW5jZTogMS41LjIKICAgICAqLwotICAgIEdPd25QdHI8Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgo
Z19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXQiLCAiZGF0YWJh
c2VzIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXQiLCAiZGF0YWJhc2Vz
IiwgTlVMTCkpOwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9j
bGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfSFRNTDVfTE9D
QUxfU1RPUkFHRV9EQVRBQkFTRV9QQVRILAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaHRtbDUtbG9jYWwtc3RvcmFnZS1kYXRhYmFzZS1w
YXRoIiwKQEAgLTE0ODAsOSArMTQ4MCw5IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX25ldygpCiBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dlYl9zZXR0aW5nc19j
b3B5KFdlYktpdFdlYlNldHRpbmdzKiBvcmlnaW5hbCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJP
ZlByb3BlcnRpZXMgPSAwOwotICAgIEdPd25QdHI8R1BhcmFtU3BlYyo+IHByb3BlcnRpZXMoZ19v
YmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKAorICAgIEdVbmlxdWVQdHI8R1BhcmFtU3BlYyo+
IHByb3BlcnRpZXMoZ19vYmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKAogICAgICAgICBHX09C
SkVDVF9DTEFTUyhXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9DTEFTUyhvcmlnaW5hbCkpLCAmbnVt
YmVyT2ZQcm9wZXJ0aWVzKSk7Ci0gICAgR093blB0cjxHUGFyYW1ldGVyPiBwYXJhbWV0ZXJzKGdf
bmV3MChHUGFyYW1ldGVyLCBudW1iZXJPZlByb3BlcnRpZXMpKTsKKyAgICBHVW5pcXVlUHRyPEdQ
YXJhbWV0ZXI+IHBhcmFtZXRlcnMoZ19uZXcwKEdQYXJhbWV0ZXIsIG51bWJlck9mUHJvcGVydGll
cykpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlByb3BlcnRpZXM7IGkr
KykgewogICAgICAgICBHUGFyYW1TcGVjKiBwcm9wZXJ0eSA9IHByb3BlcnRpZXMuZ2V0KClbaV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYjRmOWE5
Yy4uMzVkOGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50R3RrLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2lu
Y2x1ZGUgIkdPd25QdHJHdGsuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25DbGllbnRHdGsuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTQxOSw3ICs0MTksNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0
X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9QVVBdLCAwLCBkZWZhdWx0TWVudSk7CiAKICAg
ICAvLyBJZiB0aGUgY29udGV4dCBtZW51IGlzIG5vdyBlbXB0eSwgZG9uJ3Qgc2hvdyBpdC4KLSAg
ICBHT3duUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09O
VEFJTkVSKGRlZmF1bHRNZW51KSkpOworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGl0ZW1zKGd0a19j
b250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIoZGVmYXVsdE1lbnUpKSk7CiAgICAg
aWYgKCFpdGVtcykKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCkBAIC0xMzA0LDcgKzEzMDQsNyBA
QCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9n
KiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0PiBhZG9wdGVkUmVxdWVzdCA9IGFkb3B0R1JlZihyZXF1ZXN0KTsKICAgICBpZiAo
cmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfQUNDRVBUKSB7Ci0gICAgICAgIEdPd25QdHI8R1NM
aXN0PiBmaWxlc0xpc3QoZ3RrX2ZpbGVfY2hvb3Nlcl9nZXRfZmlsZW5hbWVzKEdUS19GSUxFX0NI
T09TRVIoZGlhbG9nKSkpOworICAgICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gZmlsZXNMaXN0KGd0
a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lcyhHVEtfRklMRV9DSE9PU0VSKGRpYWxvZykpKTsK
ICAgICAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGZpbGVzQXJyYXkgPSBhZG9wdEdSZWYoZ19wdHJf
YXJyYXlfbmV3KCkpOwogICAgICAgICBmb3IgKEdTTGlzdCogZmlsZSA9IGZpbGVzTGlzdC5nZXQo
KTsgZmlsZTsgZmlsZSA9IGdfc2xpc3RfbmV4dChmaWxlKSkKICAgICAgICAgICAgIGdfcHRyX2Fy
cmF5X2FkZChmaWxlc0FycmF5LmdldCgpLCBmaWxlLT5kYXRhKTsKQEAgLTE1MTIsNyArMTUxMiw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgRnJhbWUmIGZyYW1lID0gY29yZSh3ZWJW
aWV3KS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICAvLyBT
eW50aGVzaXplIGEgYnV0dG9uIHJlbGVhc2UgZXZlbnQgdG8gc2VuZCB3aXRoIHRoZSBkcmFnIGVu
ZCBhY3Rpb24uCi0gICAgR093blB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtf
QlVUVE9OX1JFTEVBU0UpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZl
bnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOwogICAgIGludCB4LCB5LCB4Um9vdCwgeVJvb3Q7
CiAgICAgR2RrTW9kaWZpZXJUeXBlIG1vZGlmaWVycyA9IHN0YXRpY19jYXN0PEdka01vZGlmaWVy
VHlwZT4oMCk7CiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKaW5kZXggYWVlZmJkMC4uYjVlNjk3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgK
QEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJXZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuaCIK
ICNpbmNsdWRlICJXaWRnZXRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2Vidmlldy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50R3RrLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZjc1NTQ2OC4uNTVjMjkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg2IEBACiAyMDE0
LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAg
ICAgICBbR0xJQl0gVXNlIEdVbmlxdWVQdHIgaW5zdGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlUHRyIGlzIGEgdGVt
cGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRyIHdpdGggYSBjdXN0b20KKyAgICAgICAgZGVs
ZXRlciB0aGF0IHJlcGxhY2VzIEdPd25QdHIuIEdPd25QdHIgaXMgc3RpbGwgdXNlZCBmb3IgdGhl
IGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBvdXRwdXQgcG9pbnRlciBpcyBuZWVkZWQsIGJ1dCBp
dCB3aWxsIGFsc28gYmUgcmVwbGFjZWQgc29vbi4KKworICAgICAgICAqIFNoYXJlZC9Eb3dubG9h
ZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAg
ICAgICogU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlR0tleUZpbGUpOgor
ICAgICAgICAoSVBDOjpkZWNvZGVHS2V5RmlsZSk6CisgICAgICAgIChJUEM6OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1
Yk1lbnVGcm9tR3RrTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93
bmxvYWQuY3BwOgorICAgICAgICAod2Via2l0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbik6Cisg
ICAgICAgICh3ZWJraXREb3dubG9hZE5vdGlmeVByb2dyZXNzKToKKyAgICAgICAgKHdlYmtpdERv
d25sb2FkRmFpbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X3Nl
bGVjdF9maWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoZGlkUmVjZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6
CisgICAgICAgIChkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5jcHA6CisgICAgICAgIChkcmF3UGFn
ZXNGb3JQcmludGluZ0NvbXBsZXRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBf
aGVhZGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUp
OgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfcGF0aCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChpbmpl
Y3RlZEJ1bmRsZUZpbGVuYW1lKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2
aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdDcmVhdGVKYXZhU2NyaXB0RGlhbG9nKToKKyAgICAgICAgKGZpbGVD
aG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9h
ZENoYW5nZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3Jz
KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdQb3B1bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VTdGFydERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dl
Ykluc3BlY3RvclNlcnZlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNl
cnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y29ubmVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hl
cjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRm
b3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Y29udGV4dE1lbnVJdGVtVmlzaWJpbGl0eUNoYW5nZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlHdGs6OmNyZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6c2VuZCk6CisKKzIwMTQtMDEtMjIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsr
IGJ1aWxkIHdpdGggQ1VTVE9NX1BST1RPQ09MIGVuYWJsZWQgYWZ0ZXIgcjE2MjQ0OS4KIAogICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDI4YjFkY2QuLjg2Y2Rj
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3du
bG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8Z2lvL2dpby5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTk0LDcgKzk1LDcg
QEAgcHVibGljOgogICAgICAgICBtX2Rlc3RpbmF0aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUsIG92ZXJ3
cml0ZSk7CiAgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uVVJJLmlzRW1wdHkoKSkgewogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAgICAgICAgIEdPd25QdHI8Y2hhcj4gYnVmZmVyKGdfc3RyZHVwX3By
aW50ZihfKCJDYW5ub3QgZGV0ZXJtaW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0
aCBzdWdnZXN0ZWQgZmlsZW5hbWUgJXMiKSwgc3VnZ2VzdGVkRmlsZW5hbWUudXRmOCgpLmRhdGEo
KSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRm
KF8oIkNhbm5vdCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAlcyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZm
ZXIuZ2V0KCkpOwogI2Vsc2UKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJDYW5ub3QgZGV0ZXJtaW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0
aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggYzE3YjM0Mi4uZGZj
ODNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJk
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19D
TEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8R093blB0ckd0ay5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9HVW5pcXVlUHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtJbnB1dE1ldGhvZEZp
bHRlci5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShFRkwpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUEtJVCkKICAgICBS
ZXRhaW5QdHI8TlNFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAg
ICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50OworICAgIEdVbmlxdWVQdHI8R2RrRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CiAgICAgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1bHRzIG1fY29t
cG9zaXRpb25SZXN1bHRzOwogICAgIGJvb2wgbV9mYWtlRXZlbnRGb3JDb21wb3NpdGlvbjsKICNl
bGlmIFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRp
dmVXZWJNb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VF
dmVudC5oCmluZGV4IGUxZDRkMmEuLjJiNzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYk1vdXNlRXZlbnQuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4K
IHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogI2VsaWYgUExBVEZPUk0oRUZMKQog
I2luY2x1ZGUgPEV2YXMuaD4KQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQVBQ
S0lUKQogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CisgICAgR1VuaXF1
ZVB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBj
b25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCAxOWRlYmFhLi5hZWQzMDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIE5TVmlldzsKICNlbGlmIFBM
QVRGT1JNKEdUSykKLSNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
VW5pcXVlUHRyR3RrLmg+CiB0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVudDsKICNlbGlm
IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxFdmFzLmg+CkBAIC02Niw3ICs2Niw3IEBAIHByaXZh
dGU6CiAjaWYgVVNFKEFQUEtJVCkKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9uYXRpdmVFdmVu
dDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2
ZW50OworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFU
Rk9STShFRkwpCiAgICAgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogbV9uYXRpdmVFdmVu
dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAppbmRleCAxMTJlNzk4Li40MmMzYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJz
aW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKQEAgLTIzNywxMSArMjM3LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0CiBzdGF0
aWMgdm9pZCBlbmNvZGVHS2V5RmlsZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEdLZXlGaWxl
KiBrZXlGaWxlKQogewogICAgIGdzaXplIGRhdGFTaXplOwotICAgIEdPd25QdHI8Y2hhcj4gZGF0
YShnX2tleV9maWxlX3RvX2RhdGEoa2V5RmlsZSwgJmRhdGFTaXplLCAwKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiBkYXRhKGdfa2V5X2ZpbGVfdG9fZGF0YShrZXlGaWxlLCAmZGF0YVNpemUsIDAp
KTsKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oZGF0YS5nZXQoKSksIGRhdGFTaXplKTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlR0tleUZp
bGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHT3duUHRyPEdLZXlGaWxlPiYga2V5RmlsZSkK
K3N0YXRpYyBib29sIGRlY29kZUdLZXlGaWxlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR1Vu
aXF1ZVB0cjxHS2V5RmlsZT4mIGtleUZpbGUpCiB7CiAgICAgRGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCkBAIC0yNTAs
OSArMjUwLDkgQEAgc3RhdGljIGJvb2wgZGVjb2RlR0tleUZpbGUoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBHT3duUHRyPEdLZXlGaWxlPiYga2V5RmlsZSkKICAgICBpZiAoIWRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGtleUZpbGUuc2V0KGdfa2V5
X2ZpbGVfbmV3KCkpOworICAgIGtleUZpbGUucmVzZXQoZ19rZXlfZmlsZV9uZXcoKSk7CiAgICAg
aWYgKCFnX2tleV9maWxlX2xvYWRfZnJvbV9kYXRhKGtleUZpbGUuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZ2NoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uu
c2l6ZSgpLCBHX0tFWV9GSUxFX05PTkUsIDApKSB7Ci0gICAgICAgIGtleUZpbGUuY2xlYXIoKTsK
KyAgICAgICAga2V5RmlsZS5yZXNldCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC0yNjEsMTQgKzI2MSwxNCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVHS2V5RmlsZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIEdPd25QdHI8R0tleUZpbGU+JiBrZXlGaWxlKQogCiB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEd0a1ByaW50U2V0dGluZ3MqIHByaW50U2V0
dGluZ3MpCiB7Ci0gICAgR093blB0cjxHS2V5RmlsZT4ga2V5RmlsZShnX2tleV9maWxlX25ldygp
KTsKKyAgICBHVW5pcXVlUHRyPEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5X2ZpbGVfbmV3KCkpOwog
ICAgIGd0a19wcmludF9zZXR0aW5nc190b19rZXlfZmlsZShwcmludFNldHRpbmdzLCBrZXlGaWxl
LmdldCgpLCAiUHJpbnQgU2V0dGluZ3MiKTsKICAgICBlbmNvZGVHS2V5RmlsZShlbmNvZGVyLCBr
ZXlGaWxlLmdldCgpKTsKIH0KIAogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+JiBwcmludFNldHRpbmdzKQogewotICAgIEdPd25Q
dHI8R0tleUZpbGU+IGtleUZpbGU7CisgICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4ga2V5RmlsZTsK
ICAgICBpZiAoIWRlY29kZUdLZXlGaWxlKGRlY29kZXIsIGtleUZpbGUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTI4NCwxNCArMjg0LDE0IEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgR1JlZlB0cjxHdGtQcmludFNldHRpbmdzPiYgcHJpbnRTZXR0aW5ncykK
IAogdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBHdGtQYWdlU2V0dXAqIHBh
Z2VTZXR1cCkKIHsKLSAgICBHT3duUHRyPEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5X2ZpbGVfbmV3
KCkpOworICAgIEdVbmlxdWVQdHI8R0tleUZpbGU+IGtleUZpbGUoZ19rZXlfZmlsZV9uZXcoKSk7
CiAgICAgZ3RrX3BhZ2Vfc2V0dXBfdG9fa2V5X2ZpbGUocGFnZVNldHVwLCBrZXlGaWxlLmdldCgp
LCAiUGFnZSBTZXR1cCIpOwogICAgIGVuY29kZUdLZXlGaWxlKGVuY29kZXIsIGtleUZpbGUuZ2V0
KCkpOwogfQogCiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdSZWZQdHI8
R3RrUGFnZVNldHVwPiYgcGFnZVNldHVwKQogewotICAgIEdPd25QdHI8R0tleUZpbGU+IGtleUZp
bGU7CisgICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4ga2V5RmlsZTsKICAgICBpZiAoIWRlY29kZUdL
ZXlGaWxlKGRlY29kZXIsIGtleUZpbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IGU3NTJiNmEuLmM1ZTQ1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNw
cApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgd2Via2l0
Q29udGV4dE1lbnVJdGVtU2V0U3ViTWVudUZyb21HdGtNZW51KFdlYktpdENvbnRleHRNZW51SXRl
bSogaXRlbSwgR3RrCiAgICAgaWYgKCFzdWJNZW51KQogICAgICAgICByZXR1cm47CiAKLSAgICBH
T3duUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09O
VEFJTkVSKHN1Yk1lbnUpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2Nv
bnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihzdWJNZW51KSkpOwogICAgIGlmICgh
Z19saXN0X2xlbmd0aChjaGlsZHJlbi5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwCmlu
ZGV4IGZmNmQyYzQuLmU5NWU0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0Vycm9yc0d0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IF9XZWJLaXREb3du
bG9hZFByaXZhdGUgewogICAgIENTdHJpbmcgZGVzdGluYXRpb25VUkk7CiAgICAgZ3VpbnQ2NCBj
dXJyZW50U2l6ZTsKICAgICBib29sIGlzQ2FuY2VsbGVkOwotICAgIEdPd25QdHI8R1RpbWVyPiB0
aW1lcjsKKyAgICBHVW5pcXVlUHRyPEdUaW1lcj4gdGltZXI7CiAgICAgZ2RvdWJsZSBsYXN0UHJv
Z3Jlc3M7CiAgICAgZ2RvdWJsZSBsYXN0RWxhcHNlZDsKIH07CkBAIC0xMTMsMTQgKzExMywxNCBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbihXZWJLaXRE
b3dubG9hZCogZG93bmxvYWQsIGNvbnN0CiAgICAgaWYgKCFkb3dubG9hZC0+cHJpdi0+ZGVzdGlu
YXRpb25VUkkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIEdPd25QdHI8
Y2hhcj4gZmlsZW5hbWUoZ19zdHJkZWxpbWl0KGdfc3RyZHVwKHN1Z2dlc3RlZEZpbGVuYW1lKSwg
R19ESVJfU0VQQVJBVE9SX1MsICdfJykpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZW5hbWUo
Z19zdHJkZWxpbWl0KGdfc3RyZHVwKHN1Z2dlc3RlZEZpbGVuYW1lKSwgR19ESVJfU0VQQVJBVE9S
X1MsICdfJykpOwogICAgIGNvbnN0IGdjaGFyICpkb3dubG9hZHNEaXIgPSBnX2dldF91c2VyX3Nw
ZWNpYWxfZGlyKEdfVVNFUl9ESVJFQ1RPUllfRE9XTkxPQUQpOwogICAgIGlmICghZG93bmxvYWRz
RGlyKSB7CiAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgWERHIHVzZXIgZGlycyBpbmZvLCBz
ZXQganVzdCB0byBIT01FLgogICAgICAgICBkb3dubG9hZHNEaXIgPSBnX2dldF9ob21lX2Rpcigp
OwogICAgIH0KLSAgICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUo
ZG93bmxvYWRzRGlyLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdPd25QdHI8Y2hhcj4g
ZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDAp
KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoZG93
bmxvYWRzRGlyLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDAp
KTsKICAgICBkb3dubG9hZC0+cHJpdi0+ZGVzdGluYXRpb25VUkkgPSBkZXN0aW5hdGlvblVSSS5n
ZXQoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZG93bmxvYWQpLCAiZGVzdGluYXRp
b24iKTsKICAgICByZXR1cm4gVFJVRTsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIHdlYmtpdERv
d25sb2FkTm90aWZ5UHJvZ3Jlc3MoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBndWludDY0IGJ5
dGVzUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWRvd25sb2FkLT5wcml2LT50
aW1lcikKLSAgICAgICAgZG93bmxvYWQtPnByaXYtPnRpbWVyLnNldChnX3RpbWVyX25ldygpKTsK
KyAgICAgICAgZG93bmxvYWQtPnByaXYtPnRpbWVyLnJlc2V0KGdfdGltZXJfbmV3KCkpOwogCiAg
ICAgcHJpdi0+Y3VycmVudFNpemUgKz0gYnl0ZXNSZWNlaXZlZDsKICAgICBnX3NpZ25hbF9lbWl0
KGRvd25sb2FkLCBzaWduYWxzW1JFQ0VJVkVEX0RBVEFdLCAwLCBieXRlc1JlY2VpdmVkKTsKQEAg
LTMzOSw5ICszMzksOCBAQCB2b2lkIHdlYmtpdERvd25sb2FkTm90aWZ5UHJvZ3Jlc3MoV2ViS2l0
RG93bmxvYWQqIGRvd25sb2FkLCBndWludDY0IGJ5dGVzUmVjZWl2ZQogCiB2b2lkIHdlYmtpdERv
d25sb2FkRmFpbGVkKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJv
cl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJv
cihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5k
b21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUo
KSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICBpZiAoZG93bmxvYWQtPnByaXYtPnRpbWVyKQogICAgICAgICBnX3RpbWVyX3N0b3AoZG93
bmxvYWQtPnByaXYtPnRpbWVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKaW5k
ZXggN2UzYzI2Yi4uMDg1NWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBAIC0yNyw4
ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAt
MzA2LDcgKzMwNiw3IEBAIHZvaWQgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9m
aWxlcyhXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsCiAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGUgZmlsZSBwYXRoIGlzIHByZXNlbnRlZCBhcyBhbiBVUkkgKGVzY2FwZWQKICAgICAg
ICAgLy8gc3RyaW5nLCB3aXRoIHRoZSAnZmlsZTovLycgcHJlZml4KSB0byBXZWJDb3JlIG90aGVy
d2lzZSB0aGUKICAgICAgICAgLy8gRmlsZUNob29zZXIgd29uJ3QgYWN0dWFsbHkgY2hvb3NlIGl0
LgotICAgICAgICBHT3duUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlbmFtZS5nZXQo
KSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlbmFt
ZS5nZXQoKSkpOwogICAgICAgICBjaG9vc2VuRmlsZXMuYXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUo
U3RyaW5nOjpmcm9tVVRGOCh1cmkuZ2V0KCkpKSk7CiAKICAgICAgICAgLy8gRG8gbm90IHVzZSB0
aGUgVVJJIGhlcmUgYmVjYXVzZSB0aGlzIHdvbid0IHJlYWNoIFdlYkNvcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggZjI3MTIyMi4uMWI3N2I2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVk
QnVuZGxlQ2xpZW50LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUmVzb3VyY2VQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04Niw3ICs4Niw3
IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjCiAKICAgICAgICAgQVBJOjpFcnJvciogd2ViRXJy
b3IgPSBzdGF0aWNfY2FzdDxBUEk6OkVycm9yKj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRG
OCgiRXJyb3IiKSkpOwogICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwbGF0Zm9ybUVycm9y
ID0gd2ViRXJyb3ItPnBsYXRmb3JtRXJyb3IoKTsKLSAgICAgICAgR093blB0cjxHRXJyb3I+IHJl
c291cmNlRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHBsYXRm
b3JtRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgIEdVbmlxdWVQdHI8R0Vy
cm9yPiByZXNvdXJjZUVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmlu
ZyhwbGF0Zm9ybUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAgICAgICAgcGxh
dGZvcm1FcnJvci5lcnJvckNvZGUoKSwgcGxhdGZvcm1FcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgICAgICB3ZWJraXRXZWJSZXNvdXJjZUZhaWxlZChy
ZXNvdXJjZS5nZXQoKSwgcmVzb3VyY2VFcnJvci5nZXQoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0
UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWcKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKICAgICBHUmVmUHRyPEdWYXJpYW50PiBkYXRhID0gd2Via2l0V2ViQ29udGV4dElu
aXRpYWxpemVXZWJFeHRlbnNpb25zKFdFQktJVF9XRUJfQ09OVEVYVChjbGllbnRJbmZvKSk7Ci0g
ICAgR093blB0cjxnY2hhcj4gZGF0YVN0cmluZyhnX3ZhcmlhbnRfcHJpbnQoZGF0YS5nZXQoKSwg
VFJVRSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFTdHJpbmcoZ192YXJpYW50X3ByaW50
KGRhdGEuZ2V0KCksIFRSVUUpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tUeXBlUmVmPihX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkYXRhU3RyaW5nLmdldCgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDZlNGQyZjkuLjRiMmU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjUs
NyArMjUsNyBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQ
cml2YXRlLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC01Myw5ICs1Myw4IEBAIHN0YXRpYyB2b2lkIGRp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHJl
c291cmNlRXJyb3IgPSB0b0ltcGwoZXJyb3IpLT5wbGF0Zm9ybUVycm9yKCk7Ci0gICAgR093blB0
cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmlu
ZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2Rl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBH
VW5pcXVlUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zy
b21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAg
IHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgaWYgKHJlc291cmNlRXJyb3IudGxzRXJyb3Jz
KCkpIHsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdFQktJ
VF9XRUJfVklFVyhjbGllbnRJbmZvKSwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkudXRmOCgp
LmRhdGEoKSwgd2ViRXJyb3IuZ2V0KCksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHVGxzQ2Vy
dGlmaWNhdGVGbGFncz4ocmVzb3VyY2VFcnJvci50bHNFcnJvcnMoKSksIHJlc291cmNlRXJyb3Iu
Y2VydGlmaWNhdGUoKSk7CkBAIC04NSw5ICs4NCw4IEBAIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJy
CiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IgPSB0b0ltcGwoZXJyb3IpLT5wbGF0Zm9ybUVycm9yKCk7Ci0gICAgR093blB0cjxHRXJyb3I+
IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJj
ZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRy
PEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5n
KHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgIHJlc291cmNl
RXJyb3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKSk7CiAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV0VCS0lUX1dFQl9W
SUVXKGNsaWVudEluZm8pLCBXRUJLSVRfTE9BRF9DT01NSVRURUQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2Vi
RXJyb3IuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCmluZGV4IDM1NTEzYzIuLmVlOTcyNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50
T3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcmludE9wZXJhdGlvbi5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmZGVm
IEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKQEAgLTI2NCw5ICsyNjQsOCBAQCBzdGF0aWMgdm9pZCBk
cmF3UGFnZXNGb3JQcmludGluZ0NvbXBsZXRlZChXS0Vycm9yUmVmIHdrUHJpbnRFcnJvciwgV0tF
cnJvclJlZiwgdgogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgcmVzb3VyY2VF
cnJvciA9IHdrUHJpbnRFcnJvciA/IHRvSW1wbCh3a1ByaW50RXJyb3IpLT5wbGF0Zm9ybUVycm9y
KCkgOiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCk7CiAgICAgaWYgKCFyZXNvdXJjZUVycm9yLmlz
TnVsbCgpKSB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBwcmludEVycm9yKGdfZXJyb3JfbmV3
X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
cHJpbnRFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3Vy
Y2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgICAgIHJlc291cmNlRXJy
b3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIGdfc2lnbmFsX2VtaXQocHJpbnRPcGVyYXRpb24uZ2V0KCks
IHNpZ25hbHNbRkFJTEVEXSwgMCwgcHJpbnRFcnJvci5nZXQoKSk7CiAgICAgfQogICAgIGdfc2ln
bmFsX2VtaXQocHJpbnRPcGVyYXRpb24uZ2V0KCksIHNpZ25hbHNbRklOSVNIRURdLCAwLCBOVUxM
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVxdWVzdC5jcHAKaW5kZXggMzg0YmQzNy4uMmM1OWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKQEAgLTIyLDcg
KzIyLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRV
UklSZXF1ZXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNvdXAuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ4LDcgKzQ4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdHJ1Y3QgX1dlYktpdFVSSVJlcXVlc3RQcml2YXRl
IHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0OwogICAgIENT
dHJpbmcgdXJpOwotICAgIEdPd25QdHI8U291cE1lc3NhZ2VIZWFkZXJzPiBodHRwSGVhZGVyczsK
KyAgICBHVW5pcXVlUHRyPFNvdXBNZXNzYWdlSGVhZGVycz4gaHR0cEhlYWRlcnM7CiB9OwogCiBX
RUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVxdWVzdCwgd2Via2l0X3VyaV9yZXF1ZXN0LCBH
X1RZUEVfT0JKRUNUKQpAQCAtMTY2LDcgKzE2Niw3IEBAIFNvdXBNZXNzYWdlSGVhZGVycyogd2Vi
a2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnMoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVz
CiAgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJlcXVlc3QtPnByaXYt
Pmh0dHBIZWFkZXJzLnNldChzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcoU09VUF9NRVNTQUdFX0hF
QURFUlNfUkVRVUVTVCkpOworICAgIHJlcXVlc3QtPnByaXYtPmh0dHBIZWFkZXJzLnJlc2V0KHNv
dXBfbWVzc2FnZV9oZWFkZXJzX25ldyhTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNUKSk7CiAg
ICAgcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlSGVhZGVy
cyhyZXF1ZXN0LT5wcml2LT5odHRwSGVhZGVycy5nZXQoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Qt
PnByaXYtPmh0dHBIZWFkZXJzLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBk
MDEzNmNkLi5lMWU0MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMjYsOSArMjYsMTAg
QEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL0dPd25QdHJTb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291
cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC01OCw3
ICs1OSw3IEBAIHN0cnVjdCBfV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUgewogICAgIFJl
ZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdlOwogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RDsKICAgICBDU3RyaW5nIHVyaTsKLSAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkk7CisgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJOwogCiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+
IHN0cmVhbTsKICAgICB1aW50NjRfdCBzdHJlYW1MZW5ndGg7CkBAIC0xMDksNyArMTEwLDcgQEAg
Y29uc3QgY2hhciogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKFdlYktpdFVS
SVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKIAogICAgIGlmICghcmVxdWVzdC0+
cHJpdi0+c291cFVSSSkKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+c291cFVSSS5zZXQoc291cF91
cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVxdWVzdC0+cHJp
di0+c291cFVSSS5yZXNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJpdi0+dXJpLmRhdGEoKSkp
OwogICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLT5zY2hlbWU7CiB9CiAKQEAgLTE0
MSw3ICsxNDIsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9w
YXRoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CiAKICAgICBp
ZiAoIXJlcXVlc3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBV
Ukkuc2V0KHNvdXBfdXJpX25ldyhyZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgpKSk7CisgICAgICAg
IHJlcXVlc3QtPnByaXYtPnNvdXBVUkkucmVzZXQoc291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYt
PnVyaS5kYXRhKCkpKTsKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+c291cFVSSS0+cGF0aDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcAppbmRleCBkNTZmNWU1Li4wYTdhYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtNTAs
OCArNTAsOCBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBD
U3RyaW5nIGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkKIAogc3RhdGljIENTdHJpbmcgaW5qZWN0
ZWRCdW5kbGVGaWxlbmFtZSgpCiB7Ci0gICAgR093blB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShn
X2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkuZGF0YSgpLCAibGlid2Vi
a2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
YnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgp
LmRhdGEoKSwgImxpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIsIE5VTEwpKTsKICAgICBy
ZXR1cm4gYnVuZGxlRmlsZW5hbWUuZ2V0KCk7CiB9CiAKQEAgLTQ0Myw5ICs0NDMsOCBAQCB2b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICA6IGRpcmVjdG9yeVBhdGgudXRmOCgpOwogCiAg
ICAgLy8gQnVpbGQgdGhlIGZ1bGwgcGF0aCB0byB0aGUgaWNvbiBkYXRhYmFzZSBmaWxlIG9uIGRp
c2suCi0gICAgR093blB0cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVu
YW1lKHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6Okljb25E
YXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4KCkuZGF0YSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVu
YW1lKHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCisgICAgICAgIFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4KCkuZGF0YSgp
LCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdpbGwgY2F1c2UgdGhlIGlj
b24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgogICAgIHByaXYtPmNvbnRleHQtPnNldEljb25EYXRh
YmFzZVBhdGgoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhmYXZpY29uRGF0YWJhc2VQYXRoLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IDIzODg2MTQuLjdlZTBjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02MSw4ICs2MSw4IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSWNvbi5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNvdXAu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0xvYWRG
YWlsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCwgYwogICAgICAgICB8
fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QTFVHSU5fRVJST1IsIFdFQktJVF9QTFVH
SU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAg
IEdPd25QdHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PiVz
PC9ib2R5PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4i
LCBlcnJvci0+bWVzc2FnZSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9o
dG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCksIGZhaWxpbmdVUkksIDApOwogCiAgICAgcmV0
dXJuIFRSVUU7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIEd0a1dpZGdldCogd2Via2l0V2Vi
Vmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2coV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3QKICAg
ICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
d2ViVmlldykpOwogICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25l
dyh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cocGFyZW50KSA/IEdUS19XSU5ET1cocGFy
ZW50KSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwgdHlwZSwgYnV0dG9ucywgIiVzIiwgbWVz
c2FnZSk7Ci0gICAgR093blB0cjxjaGFyPiB0aXRsZShnX3N0cmR1cF9wcmludGYoIkphdmFTY3Jp
cHQgLSAlcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiB0aXRsZShnX3N0cmR1cF9wcmludGYoIkphdmFTY3JpcHQgLSAlcyIsIHdlYmtp
dF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUo
R1RLX1dJTkRPVyhkaWFsb2cpLCB0aXRsZS5nZXQoKSk7CiAgICAgZ3RrX2RpYWxvZ19zZXRfZGVm
YXVsdF9yZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyksIGRlZmF1bHRSZXNwb25zZSk7CiAKQEAg
LTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2Fs
bGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogewogICAgIEdSZWZQdHI8
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiBhZG9wdGVkUmVxdWVzdCA9IGFkb3B0R1JlZihyZXF1
ZXN0KTsKICAgICBpZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfQUNDRVBUKSB7Ci0gICAg
ICAgIEdPd25QdHI8R1NMaXN0PiBmaWxlc0xpc3QoZ3RrX2ZpbGVfY2hvb3Nlcl9nZXRfZmlsZW5h
bWVzKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSkpOworICAgICAgICBHVW5pcXVlUHRyPEdTTGlz
dD4gZmlsZXNMaXN0KGd0a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lcyhHVEtfRklMRV9DSE9P
U0VSKGRpYWxvZykpKTsKICAgICAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGZpbGVzQXJyYXkgPSBh
ZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3KCkpOwogICAgICAgICBmb3IgKEdTTGlzdCogZmlsZSA9
IGZpbGVzTGlzdC5nZXQoKTsgZmlsZTsgZmlsZSA9IGdfc2xpc3RfbmV4dChmaWxlKSkKICAgICAg
ICAgICAgIGdfcHRyX2FycmF5X2FkZChmaWxlc0FycmF5LmdldCgpLCBmaWxlLT5kYXRhKTsKQEAg
LTE1MTcsNyArMTUxNyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQpCiAgICAgICAgIHByaXYt
PndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKGxvYWRFdmVu
dCA9PSBXRUJLSVRfTE9BRF9DT01NSVRURUQpIHsKICAgICAgICAgV2ViS2l0RmF2aWNvbkRhdGFi
YXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZShw
cml2LT5jb250ZXh0KTsKLSAgICAgICAgR093blB0cjxjaGFyPiBmYXZpY29uVVJJKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwgcHJpdi0+YWN0aXZlVVJJ
LmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZhdmljb25VUkkod2Via2l0X2Zh
dmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBwcml2LT5hY3RpdmVVUkku
ZGF0YSgpKSk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uVVJJKHdlYlZpZXcs
IGZhdmljb25VUkkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghcHJpdi0+bWFpblJlc291cmNlKSB7
CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRM
U0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQogCiAgICAgV2Vi
S2l0VExTRXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CiAgICAgaWYgKHRs
c0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkgewotICAgICAg
ICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyhmYWlsaW5nVVJJ
KSk7CiAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBpbmZvKGNlcnRpZmljYXRlLCB0bHNF
cnJvcnMpOwogICAgICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICAgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9SU10sIDAsICZp
bmZvLCBzb3VwVVJJLT5ob3N0LCAmcmV0dXJuVmFsdWUpOwpAQCAtMTgxNSw3ICsxODE1LDcgQEAg
dm9pZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBBUEk6OkFycmF5KiBwcm9wb3MKICAgICAgICAgd2Via2l0V2ViVmlld0NyZWF0ZUFuZEFw
cGVuZElucHV0TWV0aG9kc01lbnVJdGVtKHdlYlZpZXcsIGNvbnRleHRNZW51LmdldCgpKTsKIAog
ICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9IGFkb3B0R1Jl
Zih3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKHdlYkhpdFRlc3RSZXN1bHQpKTsKLSAgICBHT3du
UHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50KHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRl
eHRNZW51RXZlbnQod2ViVmlld0Jhc2UpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBjb250
ZXh0TWVudUV2ZW50KHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZlbnQod2ViVmll
d0Jhc2UpKTsKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2lnbmFsX2VtaXQo
d2ViVmlldywgc2lnbmFsc1tDT05URVhUX01FTlVdLCAwLCBjb250ZXh0TWVudS5nZXQoKSwgY29u
dGV4dE1lbnVFdmVudC5nZXQoKSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgJnJldHVyblZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAppbmRleCA5NTU5Mjc5Li4wMDdkMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01MCw3
ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0dPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJH
dGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxp
dGllcy5oPgpAQCAtNjUsNyArNjUsNiBAQAogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CiAjZW5kaWYK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCkBAIC0xMDgsNyArMTA3LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUgewogICAgIEd0a1dpZGdldCogaW5zcGVjdG9yVmlldzsKICAgICBBdHRhY2htZW50
U2lkZSBpbnNwZWN0b3JBdHRhY2htZW50U2lkZTsKICAgICB1bnNpZ25lZCBpbnNwZWN0b3JWaWV3
U2l6ZTsKLSAgICBHT3duUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OworICAgIEdVbmlx
dWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4dE1lbnVQcm94
eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3QmFzZUlucHV0TWV0aG9k
RmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOwogCkBAIC02NjcsNyArNjY2LDcgQEAgc3RhdGljIGdi
b29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRCdXQKIAogICAgIC8vIElmIGl0J3MgYSByaWdodCBjbGljayBldmVudCBzYXZl
IGl0IGFzIGEgcG9zc2libGUgY29udGV4dCBtZW51IGV2ZW50LgogICAgIGlmIChidXR0b25FdmVu
dC0+YnV0dG9uID09IDMpCi0gICAgICAgIHByaXYtPmNvbnRleHRNZW51RXZlbnQuc2V0KGdka19l
dmVudF9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCkpKTsKKyAg
ICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudC5yZXNldChnZGtfZXZlbnRfY29weShyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQpKSk7CiAgICAgcHJpdi0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxH
ZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2xpY2tDb3VudGVyLmNsaWNrQ291bnRGb3JHZGtC
dXR0b25FdmVudCh3aWRnZXQsIGJ1dHRvbkV2ZW50KSkpOwogICAgIHJldHVybiBUUlVFOwpAQCAt
OTk0LDcgKzk5Myw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBEcmFnRGF0YSYKIAogICAgIFJlZlB0cjxEYXRh
T2JqZWN0R3RrPiBkYXRhT2JqZWN0ID0gYWRvcHRSZWYoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkp
OwogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IGFkb3B0R1JlZihQYXN0
ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0Rm9yRGF0
YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7Ci0gICAgR093blB0cjxHZGtFdmVudD4gY3VycmVu
dEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50
PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkpOwogICAgIEdka0RyYWdDb250
ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0Lmdl
dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ09w
ZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKaW5kZXgg
YjgzNmMxMS4uYjA2ZmE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJH
dGsuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KQEAgLTc4LDcgKzc5LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JTZXJ2
ZXI6OnBsYXRmb3JtUmVzb3VyY2VGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVmVjdG9yPGNo
YXIKICAgICBpZiAoIWdfaW5wdXRfc3RyZWFtX3JlYWRfYWxsKEdfSU5QVVRfU1RSRUFNKGlucHV0
U3RyZWFtLmdldCgpKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAwLCAwLCAwKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29udGVudFR5cGUgPSBHT3duUHRyPGdjaGFyPihnX2Zp
bGVfaW5mb19nZXRfYXR0cmlidXRlX2FzX3N0cmluZyhmaWxlSW5mby5nZXQoKSwgR19GSUxFX0FU
VFJJQlVURV9TVEFOREFSRF9GQVNUX0NPTlRFTlRfVFlQRSkpLmdldCgpOworICAgIGNvbnRlbnRU
eXBlID0gR1VuaXF1ZVB0cjxnY2hhcj4oZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV9hc19zdHJp
bmcoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfRkFTVF9DT05URU5U
X1RZUEUpKS5nZXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dl
YlNvY2tldFNlcnZlclNvdXAuY3BwCmluZGV4IDI4ZjRmMjEuLmYzYWQxM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRT
ZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
Y29ubmVjdGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiAvKnNlcnZpY2UqLywgR1NvY2tldENv
bm5lY3RpbwogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBHUmVmUHRyPEdTb2NrZXRBZGRyZXNz
PiBzb2NrZXRBZGRyZXNzID0gYWRvcHRHUmVmKGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3JlbW90
ZV9hZGRyZXNzKGNvbm5lY3Rpb24sIDApKTsKLSAgICBHT3duUHRyPGdjaGFyPiBhZGRyZXNzU3Ry
aW5nKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X2Fk
ZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkpKSkpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGFkZHJlc3NTdHJpbmcoZ19pbmV0X2FkZHJlc3NfdG9fc3RyaW5n
KGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lORVRfU09DS0VUX0FERFJFU1Mo
c29ja2V0QWRkcmVzcy5nZXQoKSkpKSk7CiAgICAgTE9HKEluc3BlY3RvclNlcnZlciwgIk5ldyBD
b25uZWN0aW9uIGZyb20gJXM6JWQuIiwgYWRkcmVzc1N0cmluZy5nZXQoKSwgZ19pbmV0X3NvY2tl
dF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhzb2NrZXRBZGRyZXNzLmdl
dCgpKSkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCBhYmU4MjA0Li40
ZmI1YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgog
CiAjaWYgT1MoVU5JWCkKQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093blB0cjxnY2hhcj4gc29j
a2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CiAKICAgICB1
bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNpemUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9yIGdfc3Bhd25f
YXN5bmMoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3Rr
LmNwcAppbmRleCA4YWNlZjNjLi40NGZhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
QEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgaW5pdEluc3BlY3RvclNlcnZlcigpCiAKIFdU
Rjo6U3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSBjb25zdAogewotICAgIEdPd25QdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsICJhcHBsaWNh
dGlvbnMiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgImFwcGxp
Y2F0aW9ucyIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmlu
ZyhjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKQEAgLTEyNSwyNSArMTI1LDI1IEBAIHZvaWQg
V2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiAKIFN0cmluZyBXZWJDb250
ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgR093
blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNl
cl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKICAgICBy
ZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7
CiB9CiAKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRo
KCkgY29uc3QKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJpY29uZGF0YWJh
c2UiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiaWNvbmRh
dGFiYXNlIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5n
KGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRm
b3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgR093blB0cjxn
Y2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9k
aXIoKSwgIndlYmtpdGd0ayIsICJsb2NhbHN0b3JhZ2UiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0
YV9kaXIoKSwgIndlYmtpdGd0ayIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoc3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiB9
CiAKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3Rvcnko
KSBjb25zdAogewotICAgIEdPd25QdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgZ19nZXRfcHJnbmFtZSgpLCBOVUxMKSk7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBnX2dldF9wcmduYW1lKCksIG51bGxwdHIpKTsKICAg
ICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b250ZXh0TWVudVByb3h5R3RrLmNwcAppbmRleCBmMzUyYzNhLi5jYzI1ZTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0
ay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgY29udGV4dE1lbnVJdGVtVmlzaWJp
bGl0eUNoYW5nZWQoR3RrQWN0aW9uKiBhY3Rpb24sIEdQYXJhbVNwZWMqLCBXZWIKICAgICBpZiAo
IW1lbnUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19j
b250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICBHVW5pcXVl
UHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVS
KG1lbnUpKSk7CiAgICAgYm9vbCBwcmV2aW91c1Zpc2libGVJdGVtSXNOb3RBU2VwYXJhdG9yID0g
ZmFsc2U7CiAgICAgR3RrV2lkZ2V0KiBsYXN0SXRlbVZpc2libGVTZXBhcmF0b3IgPSAwOwogICAg
IGZvciAoR0xpc3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0
KGl0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5z
cGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDk1MjJhMGEuLmY4MjIwODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBA
IC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQogCiAgICAgaWYg
KCFtX2luc3BlY3RvcldpbmRvdykKICAgICAgICAgcmV0dXJuOwotICAgIEdPd25QdHI8Z2NoYXI+
IHRpdGxlKGdfc3RyZHVwX3ByaW50ZigiJXMgLSAlcyIsIF8oIldlYiBJbnNwZWN0b3IiKSwgdXJs
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0aXRsZShnX3N0cmR1cF9w
cmludGYoIiVzIC0gJXMiLCBfKCJXZWIgSW5zcGVjdG9yIiksIHVybC51dGY4KCkuZGF0YSgpKSk7
CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhtX2luc3BlY3RvcldpbmRvdyks
IHRpdGxlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcAppbmRleCBhNDE4MzlhLi43ODI3MzBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5
R3RrLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5p
cXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTU0LDcgKzU0LDcgQEAgV2ViUG9wdXBNZW51UHJveHlHdGs6On5XZWJQ
b3B1cE1lbnVQcm94eUd0aygpCiAKIEd0a0FjdGlvbiogV2ViUG9wdXBNZW51UHJveHlHdGs6OmNy
ZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVtKGNvbnN0IFdlYlBvcHVwSXRlbSYgaXRlbSwgaW50IGl0
ZW1JbmRleCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJkdXBfcHJpbnRm
KCJwb3B1cC1tZW51LWFjdGlvbi0lZCIsIGl0ZW1JbmRleCkpOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoInBvcHVwLW1lbnUtYWN0aW9uLSVkIiwgaXRl
bUluZGV4KSk7CiAgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSBndGtfYWN0aW9uX25ldyhhY3Rpb25O
YW1lLmdldCgpLCBpdGVtLm1fdGV4dC51dGY4KCkuZGF0YSgpLCBpdGVtLm1fdG9vbFRpcC51dGY4
KCkuZGF0YSgpLCAwKTsKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChhY3Rpb24pLCAi
cG9wdXAtbWVudS1hY3Rpb24taW5kZXgiLCBHSU5UX1RPX1BPSU5URVIoaXRlbUluZGV4KSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChhY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0sobWVudUl0
ZW1BY3RpdmF0ZWQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcAppbmRleCBlNzdlNGJlLi41YTBl
ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
Ykluc3BlY3Rvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IGJmMTFmNDEuLmFkYzBiMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApA
QCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEhlbHBlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICAvLyBwcm9jZXNzIHRvIGNvbm5lY3QgdGhlIHR3byB3b3JsZHMgdGhyb3VnaCB0aGUgYWNj
ZXNzaWJpbGl0eQogICAgIC8vIG9iamVjdCB0aGVyZSBzcGVjaWZpY2FsbHkgcGxhY2VkIGZvciB0
aGF0IHB1cnBvc2UgKHRoZSBzb2NrZXQpLgogICAgIG1fYWNjZXNzaWJpbGl0eU9iamVjdCA9IGFk
b3B0R1JlZih3ZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdE5ldyh0aGlzKSk7Ci0gICAgR093blB0
cjxnY2hhcj4gcGx1Z0lEKGF0a19wbHVnX2dldF9pZChBVEtfUExVRyhtX2FjY2Vzc2liaWxpdHlP
YmplY3QuZ2V0KCkpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGx1Z0lEKGF0a19wbHVnX2dl
dF9pZChBVEtfUExVRyhtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCkpKSk7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kQWNjZXNzaWJpbGl0eVRyZWUoU3RyaW5nKHBsdWdJ
RC5nZXQoKSkpKTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKaW5kZXggYjFlYjE1NS4uY2I0Njg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BS
SU5USU5HCiAjaW5jbHVkZSAiUHJpbnRlckxpc3RHdGsuaCIKQEAgLTc1LDcgKzc2LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIHN0YXRpYyBpbnQgam9iTnVtYmVyID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogYXBwbGljYXRpb25OYW1lID0gZ19nZXRfYXBwbGljYXRpb25fbmFtZSgpOwotICAgICAg
ICBHT3duUHRyPGNoYXI+am9iTmFtZShnX3N0cmR1cF9wcmludGYoIiVzIGpvYiAjJWQiLCBhcHBs
aWNhdGlvbk5hbWUgPyBhcHBsaWNhdGlvbk5hbWUgOiAiV2ViS2l0IiwgKytqb2JOdW1iZXIpKTsK
KyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPmpvYk5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyBqb2Ig
IyVkIiwgYXBwbGljYXRpb25OYW1lID8gYXBwbGljYXRpb25OYW1lIDogIldlYktpdCIsICsram9i
TnVtYmVyKSk7CiAgICAgICAgIG1fcHJpbnRKb2IgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X2pvYl9u
ZXcoam9iTmFtZS5nZXQoKSwgcHJpbnRlciwgbV9wcmludFNldHRpbmdzLmdldCgpLCBtX3BhZ2VT
ZXR1cC5nZXQoKSkpOwogCiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAppbmRl
eCBlMTVmNjAyLi41N2Q0YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSA8
bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHAKaW5kZXggNzBmY2FkNS4uODE4ZWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3b3JrU2Vz
c2lvbi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYlNvdXBSZXF1ZXN0
TWFuYWdlcjo6c2VuZChHVGFzayogdGFzaykKIHsKICAgICBXZWJLaXRTb3VwUmVxdWVzdEdlbmVy
aWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNrX2dldF9zb3Vy
Y2Vfb2JqZWN0KHRhc2spKTsKICAgICBTb3VwUmVxdWVzdCogc291cFJlcXVlc3QgPSBTT1VQX1JF
UVVFU1QocmVxdWVzdCk7Ci0gICAgR093blB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9f
c3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHNvdXBSZXF1ZXN0KSwgRkFMU0UpKTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cF9yZXF1ZXN0
X2dldF91cmkoc291cFJlcXVlc3QpLCBGQUxTRSkpOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElE
ID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7CiAgICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0
SUQsIGFkb3B0UHRyKG5ldyBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSh0YXNrLCByZXF1ZXN0KSkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdm
Njg2OGUuLmM3NzdjNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxOTYgQEAKIDIwMTQtMDEtMjIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHTElCXSBVc2UgR1VuaXF1ZVB0
ciBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNzQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdVbmlxdWVQdHIgaXMgYSB0ZW1wbGF0ZSBhbGlhcyBvZiBzdGQ6OnVuaXF1
ZV9wdHIgd2l0aCBhIGN1c3RvbQorICAgICAgICBkZWxldGVyIHRoYXQgcmVwbGFjZXMgR093blB0
ci4gR093blB0ciBpcyBzdGlsbCB1c2VkIGZvciB0aGUgY2FzZXMKKyAgICAgICAgd2hlcmUgdGhl
IG91dHB1dCBwb2ludGVyIGlzIG5lZWRlZCwgYnV0IGl0IHdpbGwgYWxzbyBiZSByZXBsYWNlZCBz
b29uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFj
a3NBdGsuY3BwOgorICAgICAgICAocHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQpOgorICAgICAgICAo
YXhPYmplY3RFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChpbmRleFJhbmdlSW5UYWJsZSk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z1ZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckVmbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGdldE91dHB1dERpcik6
CisgICAgICAgIChnZXRGb250c1BhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZUZvbnRzKToKKyAg
ICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAoY29tcGFyZUhpc3RvcnlJdGVtcyk6
CisgICAgICAgIChkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAgICAoc291cFVSSVRvU3RyaW5nUHJl
c2VydmluZ1Bhc3N3b3JkKToKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAodGVtcG9yYXJ5RGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAod2Vi
Vmlld1RpdGxlQ2hhbmdlZCk6CisgICAgICAgICh3ZWJGcmFtZUxvYWRTdGF0dXNOb3RpZmllZCk6
CisgICAgICAgIChwYXRoRnJvbVNvdXBVUkkpOgorICAgICAgICAoY29udmVydFdlYlJlc291cmNl
VG9VUkxQYXRoKToKKyAgICAgICAgKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAg
IChkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgICh3aWxsU2VuZFJl
cXVlc3RDYWxsYmFjayk6CisgICAgICAgIChmcmFtZUxvYWRFdmVudENhbGxiYWNrKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRWRpdGluZ0NhbGxiYWNrcy5jcHA6CisgICAgICAgIChk
dW1wTm9kZVBhdGgpOgorICAgICAgICAoZHVtcFJhbmdlKToKKyAgICAgICAgKHNob3VsZEFwcGx5
U3R5bGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6Cisg
ICAgICAgIChjb250ZXh0Q2xpY2tDYWxsYmFjayk6CisgICAgICAgIChiZWdpbkRyYWdXaXRoRmls
ZXNDYWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsu
Y3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAg
IChUZXN0UnVubmVyOjpxdWV1ZUxvYWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZmluZFN0cmlu
Zyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9y
VVJMU2NoZW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6Cisg
ICAgICAgIChUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rp
b24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHNldE1hcmtlZFRleHRDYWxsYmFjayk6CisgICAgICAgIChpbnNlcnRUZXh0
Q2FsbGJhY2spOgorICAgICAgICAoZG9Db21tYW5kQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcDoKKyAgICAgICAgKExvYWRIVE1MU3Ry
aW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01Ob2RlVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6dGVzdFRhZ05hbWVzKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEJhY2tGb3J3YXJkTGlzdC5j
cHA6CisgICAgICAgICh0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHA6Cisg
ICAgICAgICh0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwOgorICAg
ICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlKToKKyAgICAgICAgKHRlc3REb3dubG9hZExvY2Fs
RmlsZUVycm9yKToKKyAgICAgICAgKGFkZENvbnRlbnREaXNwb3NpdGlvbkhUVFBIZWFkZXJUb1Jl
c3BvbnNlKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3REb3dubG9h
ZFJlbW90ZUZpbGVFcnJvcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwOgorICAgICAgICAoc3RhcnRUZXN0U2VydmVyKToK
KyAgICAgICAgKHRlc3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdCk6CisgICAgICAgIChvcGVuUmVt
b3RlRGVidWdnaW5nU2Vzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAgICAgICh0ZXN0UHJpbnRPcGVyYXRpb25Qcmlu
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJj
ZXMuY3BwOgorICAgICAgICAoYWRkQ2FjaGVIVFRQSGVhZGVyc1RvUmVzcG9uc2UpOgorICAgICAg
ICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0U1NMLmNwcDoKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAoaHR0cFNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3SmF2YVNjcmlw
dERpYWxvZ3MpOgorICAgICAgICAodGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAodGVz
dFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAodGVzdFdlYkV4dGVu
c2lvbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgIChzdGFydFRlc3RTZXJ2
ZXIpOgorICAgICAgICAoY2hlY2tBdHNwaUFjY2Vzc2libGUpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RDbGVhckRhdGFiYXNlKToKKyAg
ICAgICAgKHRlc3RHZXRGYXZpY29uVVJJKToKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFz
ZUZpbmFsaXplZENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHRH
ZXRQbHVnaW5zKToKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3
TW9kZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHA6
CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcDoKKyAg
ICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUpOgorICAgICAg
ICAodGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZSk6CisgICAgICAgICh0ZXN0
V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3
RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKHNlbmRSZXF1ZXN0Q2Fs
bGJhY2spOgorICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpVdGlsOjpjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
b0tleVN0cm9rZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkb01vdXNlQnV0dG9uRXZlbnQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNl
TW92ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tp
bmdUZXN0LmNwcDoKKyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChMb2Fk
VHJhY2tpbmdUZXN0Ojpsb2FkVVJJKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRI
dG1sKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRQbGFpblRleHQpOgorICAgICAg
ICAoTG9hZFRyYWNraW5nVGVzdDo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoTG9hZFRyYWNraW5n
VGVzdDo6cmVsb2FkKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFjayk6CisgICAg
ICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwOgorICAgICAgICAocmVnaXN0ZXJHUmVz
b3VyY2UpOgorICAgICAgICAocmVtb3ZlTm9uRW1wdHlEaXJlY3RvcnkpOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oOgor
ICAgICAgICAoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0Rpcik6CisgICAgICAgIChUZXN0
OjpnZXRSZXNvdXJjZXNEaXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJH
dGsvV2ViS2l0VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpydW4pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHA6
CisgICAgICAgIChXZWJLaXRUZXN0U2VydmVyOjpXZWJLaXRUZXN0U2VydmVyKToKKyAgICAgICAg
KFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2Vi
UHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3Rr
L1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAocmVzb3VyY2VHZXREYXRhQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEpOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlT
dHJva2UpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmRvTW91c2VCdXR0b25FdmVudCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFj
Y2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250c0d0ay5jcHA6CisgICAgICAgIChXVFI6OmdldE91
dHB1dERpcik6CisgICAgICAgIChXVFI6OmdldEZvbnRzUGF0aCk6CisgICAgICAgIChXVFI6Omlu
aXRpYWxpemVGb250Q29uZmlnU2V0dGluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAo
V1RSOjp0b3BMZXZlbFBhdGgpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpw
YXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0
Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFs
aXplSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KToKKworMjAxNC0wMS0yMiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKIAogICAgICAgICBbR1RLXSBBZGQgR1Vu
aXF1ZVB0cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3MTcwCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0
eUNhbGxiYWNrc0F0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0
eUNhbGxiYWNrc0F0ay5jcHAKaW5kZXggZTkyM2YzZi4uYTkwODI0MSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcApA
QCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAi
SlNSZXRhaW5QdHIuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogI2lm
IFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuaCIKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRBY2Nlc3NpYmls
aXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBnY2hhciogc2lnbmFsTmEKICAg
ICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5hbWUgPT0gJ1wwJykKICAgICAgICAgb2JqZWN0
TmFtZSA9ICIoTm8gbmFtZSkiOwogCi0gICAgR093blB0cjxnY2hhcj4gc2lnbmFsTmFtZUFuZFZh
bHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJpbnRmKCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwg
c2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFsTmFtZSkpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMg
PSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsK
ICAgICBwcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFtZTog
XCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0TmFt
ZSwgb2JqZWN0Um9sZSk7CiB9CiAKQEAgLTk0LDM3ICs5NCwzNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
YXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFsSGludCwg
Z3VpbnQgbgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEdTaWduYWxRdWVyeSBzaWduYWxR
dWVyeTsKLSAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxOYW1lOwotICAgIEdPd25QdHI8Z2NoYXI+
IHNpZ25hbFZhbHVlOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNpZ25hbE5hbWU7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gc2lnbmFsVmFsdWU7CiAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWU7
CiAKICAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWduYWxRdWVy
eSk7CiAKICAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInN0YXRl
LWNoYW5nZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50Zigic3Rh
dGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAg
ICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9i
b29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNldChnX3N0
cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1W
YWx1ZXNbMV0pKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
JWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKICAgICAgICAgaWYg
KCFnX3N0cmNtcDAoZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJjaGVja2Vk
IikpCiAgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkNoZWNrZWRTdGF0ZUNoYW5nZWQi
OwogICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1W
YWx1ZXNbMV0pLCAiaW52YWxpZC1lbnRyeSIpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAo
c2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIpKSB7Ci0gICAgICAgIHNpZ25h
bE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUu
c2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVl
c1sxXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNldChnX3N0cmR1cCgiZm9jdXMtZXZlbnQi
KSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3Zh
bHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1sxXSkpKTsKICAgICAgICAgaWYgKGdfdmFsdWVf
Z2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5h
bWUgPSAiQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJj
bXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdlZCIpKSB7CiAgICAg
ICAgIGNvbnN0IGdjaGFyKiBjaGlsZHJlbkNoYW5nZWREZXRhaWwgPSBnX3F1YXJrX3RvX3N0cmlu
ZyhzaWduYWxIaW50LT5kZXRhaWwpOwotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9w
cmludGYoImNoaWxkcmVuLWNoYW5nZWQ6JXMiLCBjaGlsZHJlbkNoYW5nZWREZXRhaWwpKTsKLSAg
ICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91
aW50KCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNldChnX3N0cmR1
cF9wcmludGYoImNoaWxkcmVuLWNoYW5nZWQ6JXMiLCBjaGlsZHJlbkNoYW5nZWREZXRhaWwpKTsK
KyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVf
Z2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOwogICAgICAgICBub3RpZmljYXRpb25OYW1lID0g
IWdfc3RyY21wMChjaGlsZHJlbkNoYW5nZWREZXRhaWwsICJhZGQiKSA/ICJBWENoaWxkcmVuQWRk
ZWQiIDogIkFYQ2hpbGRyZW5SZW1vdmVkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2ln
bmFsUXVlcnkuc2lnbmFsX25hbWUsICJwcm9wZXJ0eS1jaGFuZ2UiKSkgewotICAgICAgICBzaWdu
YWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVhcmtf
dG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNl
dChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5n
KHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAoZ19xdWFya190
b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSwgImFjY2Vzc2libGUtdmFsdWUiKSkKICAgICAg
ICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOwogICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImxvYWQtY29tcGxldGUiKSkK
ICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWExvYWRDb21wbGV0ZSI7CiAgICAgZWxzZQot
ICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSkp
OworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lKSk7CiAKICAgICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCiAgICAgICAgIHBy
aW50QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25h
bFZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA5NmUzZTA3Li5hZGM4NGRiIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVl
SlNTdHJpbmcuaD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTMsNyArOTMsNyBA
QCBjb25zdCBjaGFyKiBsYW5kbWFya1N0cmluZ1NlYXJjaCA9ICJBWExhbmRtYXJrU2VhcmNoIjsK
IFN0cmluZyBqc1N0cmluZ1RvV1RGU3RyaW5nKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIHsKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShh
dHRyaWJ1dGUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+
KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYnVmZmVyKHN0
YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGF0dHJpYnV0ZSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CkBAIC0xNzcsNyArMTc3LDcg
QEAgU3RyaW5nIGdldEF0a0F0dHJpYnV0ZVNldEFzU3RyaW5nKEF0a09iamVjdCogYWNjZXNzaWJs
ZSwgQXRrQXR0cmlidXRlVHlwZSB0eXBlKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmli
dXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5k
YXRhKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChh
dHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOworICAgICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFt
ZSwgIjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGF0dHJpYnV0ZURhdGEuZ2V0KCkpOwogICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4dCkKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0YXRp
YyBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZ2V0VmlzaWJsZUNlbGxzKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIGVsCiAKIEpTU3RyaW5nUmVmIGluZGV4UmFuZ2VJblRhYmxlKFBsYXRm
b3JtVUlFbGVtZW50IGVsZW1lbnQsIGJvb2wgaXNSb3dSYW5nZSkKIHsKLSAgICBHT3duUHRyPGdj
aGFyPiByYW5nZVN0cmluZyhnX3N0cmR1cCgiezAsIDB9IikpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7CiAKICAgICBpZiAoIUFUS19JU19P
QkpFQ1QoZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CkBAIC01MTksNyArNTE5LDcgQEAgSlNTdHJpbmdSZWYg
aW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1Jh
bmdlKQogICAgICAgICAgICAgYmFzZSA9IGNvbHVtbjsKICAgICAgICAgICAgIGxlbmd0aCA9IGF0
a190YWJsZV9nZXRfY29sdW1uX2V4dGVudF9hdChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywgY29s
dW1uKTsKICAgICAgICAgfQotICAgICAgICByYW5nZVN0cmluZy5zZXQoZ19zdHJkdXBfcHJpbnRm
KCJ7JWQsICVkfSIsIGJhc2UsIGxlbmd0aCkpOworICAgICAgICByYW5nZVN0cmluZy5yZXNldChn
X3N0cmR1cF9wcmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsK
QEAgLTczNyw3ICs3MzcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b2xlKCkKICAgICBpZiAoIWF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVChtX2VsZW1lbnQp
KSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAK
LSAgICBHT3duUHRyPGNoYXI+IHJvbGVTdHJpbmdXaXRoUHJlZml4KGdfc3RyZHVwX3ByaW50Zigi
QVhSb2xlOiAlcyIsIHJvbGVUb1N0cmluZyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpKSk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiByb2xlU3RyaW5nV2l0aFByZWZpeChnX3N0cmR1cF9wcmludGYoIkFY
Um9sZTogJXMiLCByb2xlVG9TdHJpbmcoQVRLX09CSkVDVChtX2VsZW1lbnQpKSkpOwogICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyb2xlU3RyaW5nV2l0aFByZWZpeC5n
ZXQoKSk7CiB9CiAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0aXRsZSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOwogCiAgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBhdGtfb2JqZWN0X2dldF9u
YW1lKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxnY2hhcj4gYXhUaXRsZShn
X3N0cmR1cF9wcmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSA/IG5hbWUgOiAiIikpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGF4VGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJBWFRpdGxlOiAlcyIsIG5h
bWUgPyBuYW1lIDogIiIpKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhheFRpdGxlLmdldCgpKTsKIH0KQEAgLTc3MSw3ICs3NzEsNyBAQCBKU1N0cmluZ1JlZiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiAgICAgaWYgKCFkZXNjcmlwdGlv
bikKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAK
LSAgICBHT3duUHRyPGdjaGFyPiBheERlc2MoZ19zdHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0aW9u
OiAlcyIsIGRlc2NyaXB0aW9uKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhEZXNjKGdfc3Ry
ZHVwX3ByaW50ZigiQVhEZXNjcmlwdGlvbjogJXMiLCBkZXNjcmlwdGlvbikpOwogCiAgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4RGVzYy5nZXQoKSk7CiB9CkBAIC03
ODEsOSArNzgxLDkgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
VmFsdWUoKQogICAgIGlmICghQVRLX0lTX1RFWFQobV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFy
PiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKG1fZWxlbWVudCksIDAsIC0xKSk7Ci0g
ICAgR093blB0cjxnY2hhcj4gdGV4dFdpdGhSZXBsYWNlZENoYXJhY3RlcnMocmVwbGFjZUNoYXJh
Y3RlcnNGb3JSZXN1bHRzKHRleHQuZ2V0KCkpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBheFZhbHVl
KGdfc3RyZHVwX3ByaW50ZigiQVhWYWx1ZTogJXMiLCB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVy
cy5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQo
QVRLX1RFWFQobV9lbGVtZW50KSwgMCwgLTEpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0
V2l0aFJlcGxhY2VkQ2hhcmFjdGVycyhyZXBsYWNlQ2hhcmFjdGVyc0ZvclJlc3VsdHModGV4dC5n
ZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRmKCJB
WFZhbHVlOiAlcyIsIHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJzLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhWYWx1ZS5nZXQoKSk7CiB9CkBA
IC03OTcsNyArNzk3LDcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFu
Z3VhZ2UoKQogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gYXhWYWx1ZShnX3N0cmR1
cF9wcmludGYoIkFYTGFuZ3VhZ2U6ICVzIiwgbG9jYWxlKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhMYW5ndWFnZTogJXMiLCBsb2NhbGUpKTsKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhWYWx1ZS5nZXQoKSk7CiB9
CiAKQEAgLTExMjcsNyArMTEyNyw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5l
Rm9ySW5kZXgoaW50IGluZGV4KQogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBhdGtfdGV4
dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFUS19URVhUKG1fZWxlbWVudCkpKQogICAgICAgICByZXR1
cm4gLTE7CiAKLSAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKG1fZWxlbWVudCksIDAsIGluZGV4KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4dChh
dGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChtX2VsZW1lbnQpLCAwLCBpbmRleCkpOwogICAgIGlu
dCBsaW5lTm8gPSAwOwogICAgIGZvciAoZ2NoYXIqIG9mZnNldCA9IHRleHQuZ2V0KCk7ICpvZmZz
ZXQ7ICsrb2Zmc2V0KSB7CiAgICAgICAgIGlmICgqb2Zmc2V0ID09ICdcbicpCkBAIC0xMTk1LDcg
KzExOTUsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRl
eHRSYW5nZSgpCiAgICAgZ2ludCBzdGFydCwgZW5kOwogICAgIGdfZnJlZShhdGtfdGV4dF9nZXRf
c2VsZWN0aW9uKEFUS19URVhUKG1fZWxlbWVudCksIDAsICZzdGFydCwgJmVuZCkpOwogCi0gICAg
R093blB0cjxnY2hhcj4gc2VsZWN0aW9uKGdfc3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBzdGFy
dCwgZW5kIC0gc3RhcnQpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzZWxlY3Rpb24oZ19zdHJk
dXBfcHJpbnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOwogICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzZWxlY3Rpb24uZ2V0KCkpOwogfQogCkBAIC0x
Mzg3LDcgKzEzODcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwo
KQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAog
ICAgIEF0a0h5cGVybGluayogaHlwZXJsaW5rID0gYXRrX2h5cGVybGlua19pbXBsX2dldF9oeXBl
cmxpbmsoQVRLX0hZUEVSTElOS19JTVBMKG1fZWxlbWVudCkpOwotICAgIEdPd25QdHI8Y2hhcj4g
aHlwZXJsaW5rVVJJKGF0a19oeXBlcmxpbmtfZ2V0X3VyaShoeXBlcmxpbmssIDApKTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGh5cGVybGlua1VSSShhdGtfaHlwZXJsaW5rX2dldF91cmkoaHlwZXJs
aW5rLCAwKSk7CiAKICAgICAvLyBCdWlsZCB0aGUgcmVzdWx0IHN0cmluZywgc3RyaXBwaW5nIHRo
ZSBhYnNvbHV0ZSBVUkwgcGF0aHMgaWYgcHJlc2VudC4KICAgICBjaGFyKiBsb2NhbFVSSSA9IGdf
c3Ryc3RyX2xlbihoeXBlcmxpbmtVUkkuZ2V0KCksIC0xLCAiTGF5b3V0VGVzdHMiKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckVm
bC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJF
ZmwuY3BwCmluZGV4IDgwMTJkYTYuLjY4M2U2NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckVmbC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyRWZsLmNwcApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oIgogCiAjaW5jbHVkZSA8YXRrL2F0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50KCkKIHsK
QEAgLTY0LDcgKzY0LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmUKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShpZCk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRCdWZmZXIoc3RhdGljX2Nhc3Q8Z2No
YXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkQnVm
ZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKGlkLCBpZEJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAg
ICBBdGtPYmplY3QqIHJlc3VsdCA9IGNoaWxkRWxlbWVudEJ5SWQocm9vdCwgaWRCdWZmZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckd0ay5jcHAKaW5kZXggZDg5YThkMi4uODY4YWM3MSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8YXRrL2F0ay5oPgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogQWNjZXNz
aWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQo
KQogewpAQCAtNjIsNyArNjIsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKGlkKTsKLSAgICBHT3duUHRyPGdjaGFyPiBpZEJ1ZmZlcihzdGF0aWNfY2Fz
dDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
aWRCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAg
IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaWQsIGlkQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsK
IAogICAgIEF0a09iamVjdCogcmVzdWx0ID0gY2hpbGRFbGVtZW50QnlJZChyb290LCBpZEJ1ZmZl
ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApp
bmRleCAxNWYyZjYxLi42NGFmNjY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJXb3JrUXVldWUuaCIK
ICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1
ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5j
bHVkZSA8Y3N0cmluZz4KQEAgLTIwMywxOSArMjAzLDE5IEBAIENTdHJpbmcgZ2V0T3V0cHV0RGly
KCkKICAgICAgICAgcmV0dXJuIHdlYmtpdE91dHB1dERpcjsKIAogICAgIENTdHJpbmcgdG9wTGV2
ZWxQYXRoID0gZ2V0VG9wTGV2ZWxQYXRoKCk7Ci0gICAgR093blB0cjxjaGFyPiBvdXRwdXREaXIo
Z19idWlsZF9maWxlbmFtZSh0b3BMZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0QnVpbGQiLCBOVUxM
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXREaXIoZ19idWlsZF9maWxlbmFtZSh0b3BM
ZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0QnVpbGQiLCBOVUxMKSk7CiAgICAgcmV0dXJuIG91dHB1
dERpci5nZXQoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0Rm9udHNQYXRoKCkKIHsKICAgICBD
U3RyaW5nIHdlYmtpdE91dHB1dERpciA9IGdldE91dHB1dERpcigpOwotICAgIEdPd25QdHI8Y2hh
cj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0RGlyLmRhdGEoKSwgIkRl
cGVuZGVuY2llcyIsICJSb290IiwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVMTCkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0
RGlyLmRhdGEoKSwgIkRlcGVuZGVuY2llcyIsICJSb290IiwgIndlYmtpdGd0ay10ZXN0LWZvbnRz
IiwgTlVMTCkpOwogICAgIGlmIChnX2ZpbGVfdGVzdChmb250c1BhdGguZ2V0KCksIHN0YXRpY19j
YXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfRElSKSkp
CiAgICAgICAgIHJldHVybiBmb250c1BhdGguZ2V0KCk7CiAKICAgICAvLyBUcnkgYWx0ZXJuYXRp
dmUgZm9udHMgcGF0aC4KLSAgICBmb250c1BhdGguc2V0KGdfYnVpbGRfZmlsZW5hbWUod2Via2l0
T3V0cHV0RGlyLmRhdGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVMTCkpOworICAgIGZv
bnRzUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCksICJ3
ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKICAgICBpZiAoZ19maWxlX3Rlc3QoZm9udHNQ
YXRoLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8IEdf
RklMRV9URVNUX0lTX0RJUikpKQogICAgICAgICByZXR1cm4gZm9udHNQYXRoLmdldCgpOwogCkBA
IC0yMzksNyArMjM5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUZvbnRzKGNvbnN0IGNoYXIq
IHRlc3RVUkwgPSAwKQogICAgIC8vIExvYWQgb3VyIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2hpY2gg
c2V0cyB1cCBwcm9wZXIgYWxpYXNlcyBmb3IgZmFtaWx5CiAgICAgLy8gbmFtZXMgbGlrZSBzYW5z
LCBzZXJpZiBhbmQgbW9ub3NwYWNlLgogICAgIEZjQ29uZmlnKiBjb25maWcgPSBGY0NvbmZpZ0Ny
ZWF0ZSgpOwotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnRDb25maWdGaWxlbmFtZShnX2J1aWxkX2Zp
bGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiZm9udHMuY29uZiIsIE5VTEwpKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmb250Q29uZmlnRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05G
X0RJUiwgImZvbnRzLmNvbmYiLCBudWxscHRyKSk7CiAgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5k
TG9hZChjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGZvbnRDb25maWdGaWxlbmFt
ZS5nZXQoKSksIHRydWUpKQogICAgICAgICBnX2Vycm9yKCJDb3VsZG4ndCBsb2FkIGZvbnQgY29u
ZmlndXJhdGlvbiBmaWxlIGZyb206ICVzIiwgZm9udENvbmZpZ0ZpbGVuYW1lLmdldCgpKTsKIApA
QCAtMjQ3LDMwICsyNDcsMzAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUZvbnRzKGNvbnN0IGNo
YXIqIHRlc3RVUkwgPSAwKQogICAgIGlmIChmb250c1BhdGguaXNOdWxsKCkpCiAgICAgICAgIGdf
ZXJyb3IoIkNvdWxkIG5vdCBsb2NhdGUgdGVzdCBmb250cyBhdCAlcy4gSXMgV0VCS0lUX1RPUF9M
RVZFTCBzZXQ/IiwgZm9udHNQYXRoLmRhdGEoKSk7CiAKLSAgICBHT3duUHRyPEdEaXI+IGZvbnRz
RGlyZWN0b3J5KGdfZGlyX29wZW4oZm9udHNQYXRoLmRhdGEoKSwgMCwgMCkpOworICAgIEdVbmlx
dWVQdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihmb250c1BhdGguZGF0YSgpLCAw
LCBudWxscHRyKSk7CiAgICAgd2hpbGUgKGNvbnN0IGNoYXIqIGRpcmVjdG9yeUVudHJ5ID0gZ19k
aXJfcmVhZF9uYW1lKGZvbnRzRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICBpZiAoIWdfc3Ry
X2hhc19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIudHRmIikgJiYgIWdfc3RyX2hhc19zdWZmaXgo
ZGlyZWN0b3J5RW50cnksICIub3RmIikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
R093blB0cjxnY2hhcj4gZm9udFBhdGgoZ19idWlsZF9maWxlbmFtZShmb250c1BhdGguZGF0YSgp
LCBkaXJlY3RvcnlFbnRyeSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9yeUVudHJ5LCBu
dWxscHRyKSk7CiAgICAgICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRQYXRoLmdldCgpKSkpCiAgICAgICAg
ICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9hZCBmb250IGF0ICVzISIsIGZvbnRQYXRoLmdldCgp
KTsKIAogICAgIH0KIAogICAgIC8vIEFoZW0gaXMgdXNlZCBieSBtYW55IGxheW91dCB0ZXN0cy4K
LSAgICBHT3duUHRyPGdjaGFyPiBhaGVtRm9udEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9O
VFNfQ09ORl9ESVIsICJBSEVNX19fXy5UVEYiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gYWhlbUZvbnRGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiQUhF
TV9fX18uVFRGIiwgbnVsbHB0cikpOwogICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShj
b25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGFoZW1Gb250RmlsZW5hbWUuZ2V0KCkp
KSkKICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvYWQgZm9udCBhdCAlcyEiLCBhaGVtRm9u
dEZpbGVuYW1lLmdldCgpKTsgCiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8PSA5OyBpKyspIHsK
LSAgICAgICAgR093blB0cjxnY2hhcj4gZm9udEZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiV2Vi
S2l0V2VpZ2h0V2F0Y2hlciVpMDAudHRmIiwgaSkpOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBm
b250UGF0aChnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiLi4iLCAiLi4iLCAiZm9u
dHMiLCBmb250RmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZm9udEZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiV2ViS2l0V2VpZ2h0V2F0Y2hlciVpMDAu
dHRmIiwgaSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250UGF0aChnX2J1aWxkX2Zp
bGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiLi4iLCAiLi4iLCAiZm9udHMiLCBmb250RmlsZW5hbWUu
Z2V0KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGNv
bmZpZywgcmVpbnRlcnByZXRfY2FzdDxGY0NoYXI4Kj4oZm9udFBhdGguZ2V0KCkpKSkKICAgICAg
ICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9udFBhdGguZ2V0
KCkpOyAKICAgICB9CiAKICAgICAvLyBBIGZvbnQgd2l0aCBubyB2YWxpZCBGb250Y29uZmlnIGVu
Y29kaW5nIHRvIHRlc3QgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NDUyCi0gICAgR093blB0cjxnY2hhcj4gZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZShn
X2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiRm9udFdpdGhOb1ZhbGlkRW5jb2Rpbmcu
Zm9uIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRXaXRoTm9WYWxpZEVuY29k
aW5nRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJUiwgIkZvbnRXaXRoTm9W
YWxpZEVuY29kaW5nLmZvbiIsIG51bGxwdHIpKTsKICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFk
ZEZpbGUoY29uZmlnLCByZWludGVycHJldF9jYXN0PEZjQ2hhcjgqPihmb250V2l0aE5vVmFsaWRF
bmNvZGluZ0ZpbGVuYW1lLmdldCgpKSkpCiAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2Fk
IGZvbnQgYXQgJXMhIiwgZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZS5nZXQoKSk7IAog
CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIGdjaGFyKiBkdW1wRnJhbWVzQXNUZXh0KFdlYktp
dFdlYkZyYW1lKiBmcmFtZSkKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpKSB7CiAgICAgICAgIEdTTGlzdCogY2hpbGRyZW4gPSBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmdldEZyYW1lQ2hpbGRyZW4oZnJhbWUpOwogICAgICAgICBmb3IgKEdTTGlzdCogY2hp
bGQgPSBjaGlsZHJlbjsgY2hpbGQ7IGNoaWxkID0gZ19zbGlzdF9uZXh0KGNoaWxkKSkgewotICAg
ICAgICAgICAgR093blB0cjxnY2hhcj4gY2hpbGREYXRhKGR1bXBGcmFtZXNBc1RleHQoc3RhdGlj
X2Nhc3Q8V2ViS2l0V2ViRnJhbWUqPihjaGlsZC0+ZGF0YSkpKTsKKyAgICAgICAgICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGNoaWxkRGF0YShkdW1wRnJhbWVzQXNUZXh0KHN0YXRpY19jYXN0PFdlYktp
dFdlYkZyYW1lKj4oY2hpbGQtPmRhdGEpKSk7CiAgICAgICAgICAgICBhcHBlbmRTdHJpbmcocmVz
dWx0LCBjaGlsZERhdGEuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGdfc2xpc3RfZnJlZShj
aGlsZHJlbik7CkBAIC0zMTAsOCArMzEwLDggQEAgc3RhdGljIGdjaGFyKiBkdW1wRnJhbWVzQXNU
ZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIAogc3RhdGljIGdpbnQgY29tcGFyZUhpc3RvcnlJ
dGVtcyhncG9pbnRlciogaXRlbTEsIGdwb2ludGVyKiBpdGVtMikKIHsKLSAgICBHT3duUHRyPGdj
aGFyPiBmaXJzdEl0ZW1UYXJnZXQod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RhcmdldChX
RUJLSVRfV0VCX0hJU1RPUllfSVRFTShpdGVtMSkpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzZWNv
bmRJdGVtVGFyZ2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQoV0VCS0lUX1dF
Ql9ISVNUT1JZX0lURU0oaXRlbTIpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlyc3RJdGVt
VGFyZ2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQoV0VCS0lUX1dFQl9ISVNU
T1JZX0lURU0oaXRlbTEpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2Vjb25kSXRlbVRhcmdl
dCh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFyZ2V0KFdFQktJVF9XRUJfSElTVE9SWV9J
VEVNKGl0ZW0yKSkpOwogICAgIHJldHVybiBnX2FzY2lpX3N0cmNhc2VjbXAoZmlyc3RJdGVtVGFy
Z2V0LmdldCgpLCBzZWNvbmRJdGVtVGFyZ2V0LmdldCgpKTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShXZWJLaXRXZWJIaXN0b3J5SXRlbSogaXRl
bSwgaW50IGluZGVudCwgYm9vbCBjdXJyZW50CiAKICAgICBnX2ZyZWUodXJpU2NoZW1lKTsKIAot
ICAgIEdPd25QdHI8Z2NoYXI+IHRhcmdldCh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFy
Z2V0KGl0ZW0pKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0YXJnZXQod2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0X3RhcmdldChpdGVtKSk7CiAgICAgaWYgKHRhcmdldC5nZXQoKSAmJiBzdHJs
ZW4odGFyZ2V0LmdldCgpKSA+IDApCiAgICAgICAgIHByaW50ZigiIChpbiBmcmFtZSBcIiVzXCIp
IiwgdGFyZ2V0LmdldCgpKTsKICAgICBpZiAod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1faXNfdGFy
Z2V0X2l0ZW0oaXRlbSkpCkBAIC00MjksMTkgKzQyOSwxOSBAQCBib29sIHNob3VsZFNldFdhaXRU
b0R1bXBXYXRjaGRvZygpCiBDU3RyaW5nIHNvdXBVUklUb1N0cmluZ1ByZXNlcnZpbmdQYXNzd29y
ZChTb3VwVVJJKiBzb3VwVVJJKQogewogICAgIGlmICghc291cFVSSS0+cGFzc3dvcmQpIHsKLSAg
ICAgICAgR093blB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3Rv
X3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwogICAgICAgICByZXR1cm4gdXJpU3RyaW5nLmdldCgp
OwogICAgIH0KIAogICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZyBkb2VzIG5vdCBpbnNlcnQgdGhl
IHBhc3N3b3JkIGludG8gdGhlIHN0cmluZywgc28gd2UgbmVlZCB0byBjcmVhdGUgdGhlCiAgICAg
Ly8gVVJJIHN0cmluZyBhbmQgdGhlbiByZWluc2VydCBhbnkgY3JlZGVudGlhbHMgdGhhdCB3ZXJl
IHByZXNlbnQgaW4gdGhlIFNvdXBVUkkuIEFsbCB0ZXN0cyB0aGF0CiAgICAgLy8gdXNlIFVSTC1l
bWJlZGRlZCBjcmVkZW50aWFscyB1c2UgSFRUUCwgc28gaXQncyBzYWZlIGhlcmUuCi0gICAgR093
blB0cjxjaGFyPiBwYXNzd29yZChzb3VwVVJJLT5wYXNzd29yZCk7Ci0gICAgR093blB0cjxjaGFy
PiB1c2VyKHNvdXBVUkktPnVzZXIpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGFzc3dvcmQoc291
cFVSSS0+cGFzc3dvcmQpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXNlcihzb3VwVVJJLT51c2Vy
KTsKICAgICBzb3VwVVJJLT5wYXNzd29yZCA9IDA7CiAgICAgc291cFVSSS0+dXNlciA9IDA7CiAK
LSAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwg
RkFMU0UpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJp
bmcoc291cFVSSSwgRkFMU0UpKTsKICAgICBTdHJpbmcgYWJzb2x1dGVVUklXaXRob3V0Q3JlZGVu
dGlhbFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKTsKICAgICBTdHJp
bmcgcHJvdG9jb2xBbmRDcmVkZW50aWFsID0gU3RyaW5nOjpmb3JtYXQoImh0dHA6Ly8lczolc0Ai
LCB1c2VyID8gdXNlci5nZXQoKSA6ICIiLCBwYXNzd29yZC5nZXQoKSk7CiAgICAgcmV0dXJuIGFi
c29sdXRlVVJJV2l0aG91dENyZWRlbnRpYWxTdHJpbmcucmVwbGFjZSgiaHR0cDovLyIsIHByb3Rv
Y29sQW5kQ3JlZGVudGlhbCkudXRmOCgpOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lk
IGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiBzdGF0aWMgdm9pZCBy
ZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBXZWJLaXRXZWJTZXR0aW5n
cyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOwotICAg
IEdPd25QdHI8Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2RhdGFfZGlyKCksICJEdW1wUmVuZGVyVHJlZUd0ayIsICJkYXRhYmFzZXMiLCBOVUxMKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbG9jYWxTdG9yYWdlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIkR1bXBSZW5kZXJUcmVlR3RrIiwgImRhdGFiYXNlcyIs
IG51bGxwdHIpKTsKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLAogICAgICAg
ICAiZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIiwgRkFMU0UsCiAgICAgICAgICJlbmFi
bGUtcHJpdmF0ZS1icm93c2luZyIsIEZBTFNFLApAQCAtNjc5LDcgKzY3OSw3IEBAIHN0YXRpYyBD
U3RyaW5nIHRlbXBvcmFyeURhdGFiYXNlRGlyZWN0b3J5KCkKICAgICBjb25zdCBjaGFyKiBkaXJl
Y3RvcnlGcm9tRW52aXJvbm1lbnQgPSBnX2dldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpOwog
ICAgIGlmIChkaXJlY3RvcnlGcm9tRW52aXJvbm1lbnQpCiAgICAgICAgIHJldHVybiBkaXJlY3Rv
cnlGcm9tRW52aXJvbm1lbnQ7Ci0gICAgR093blB0cjxjaGFyPiBmYWxsYmFjayhnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgImd0a3dlYmtpdGRydCIsICJkYXRhYmFzZXMi
LCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmYWxsYmFjayhnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgImd0a3dlYmtpdGRydCIsICJkYXRhYmFzZXMiLCBOVUxM
KSk7CiAgICAgcmV0dXJuIGZhbGxiYWNrLmdldCgpOwogfQogCkBAIC05ODQsNyArOTg0LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYlZpZXdTY3JpcHRDb25maXJtKFdlYktpdFdlYlZpZXcqIHZpZXcs
IFdlYktpdFdlYkZyYW1lKiBmcmFtZSwKIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRsZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciog
dGl0bGUsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgaWYgKGdUZXN0UnVubmVyLT5kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkgJiYgIWRvbmUpIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBmcmFtZU5h
bWUoZ2V0RnJhbWVOYW1lU3VpdGFibGVGb3JUZXN0UmVzdWx0KHZpZXcsIGZyYW1lKSk7CisgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1aXRhYmxlRm9yVGVz
dFJlc3VsdCh2aWV3LCBmcmFtZSkpOwogICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRp
dGxlOiAlc1xuIiwgZnJhbWVOYW1lLmdldCgpLCB0aXRsZSA/IHRpdGxlIDogIiIpOwogICAgIH0K
IApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgc3RhdGljIHZvaWQgd2ViRnJhbWVMb2FkU3RhdHVzTm90
aWZpZWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBncG9pbnRlciB1c2VyX2RhdGEKICAgICBXZWJL
aXRMb2FkU3RhdHVzIGxvYWRTdGF0dXMgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9sb2FkX3N0YXR1
cyhmcmFtZSk7CiAKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
KSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFtZU5hbWVTdWl0YWJs
ZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJhbWUpLCBmcmFt
ZSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFtZU5hbWVTdWl0
YWJsZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJhbWUpLCBm
cmFtZSkpOwogCiAgICAgICAgIHN3aXRjaCAobG9hZFN0YXR1cykgewogICAgICAgICBjYXNlIFdF
QktJVF9MT0FEX1BST1ZJU0lPTkFMOgpAQCAtMTE3NiwxMCArMTE3NiwxMCBAQCBzdGF0aWMgU3Ry
aW5nIHBhdGhGcm9tU291cFVSSShTb3VwVVJJKiB1cmkpCiAgICAgICAgIHJldHVybiBzb3VwVVJJ
VG9TdHJpbmdQcmVzZXJ2aW5nUGFzc3dvcmQodXJpKS5kYXRhKCk7CiAKICAgICBTdHJpbmcgcGF0
aFN0cmluZyA9IHVyaS0+cGF0aDsKLSAgICBHT3duUHRyPGdjaGFyPiBwYXRoQmFzZW5hbWUoZ19w
YXRoX2dldF9iYXNlbmFtZShwYXRoU3RyaW5nLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBwYXRoQmFzZW5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZShwYXRoU3RyaW5nLnV0
ZjgoKS5kYXRhKCkpKTsKIAogICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJhbWUgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldyk7Ci0gICAgR093blB0cjxTb3VwVVJJPiBt
YWluRnJhbWVVcmkoc291cF91cmlfbmV3KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShtYWluRnJh
bWUpKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBtYWluRnJhbWVVcmkoc291cF91cmlfbmV3
KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShtYWluRnJhbWUpKSk7CiAKICAgICBTdHJpbmcgbWFp
bkZyYW1lVXJpUGF0aFN0cmluZyA9IG1haW5GcmFtZVVyaS5nZXQoKS0+cGF0aDsKICAgICBTdHJp
bmcgYmFzZVBhdGggPSBtYWluRnJhbWVVcmlQYXRoU3RyaW5nLnN1YnN0cmluZygwLCBtYWluRnJh
bWVVcmlQYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKQEAgLTEyMDYsNyArMTIwNiw3
IEBAIHN0YXRpYyBDU3RyaW5nIGNvbnZlcnROZXR3b3JrUmVxdWVzdFRvVVJMUGF0aChXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKIAogc3RhdGljIENTdHJpbmcgY29udmVydFdlYlJlc291
cmNlVG9VUkxQYXRoKFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSkKIHsKLSAgICBHT3du
UHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXcod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJp
KHdlYlJlc291cmNlKSkpOworICAgIEdVbmlxdWVQdHI8U291cFVSST4gdXJpKHNvdXBfdXJpX25l
dyh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVzb3VyY2UpKSk7CiAgICAgcmV0dXJu
IHBhdGhGcm9tU291cFVSSSh1cmkuZ2V0KCkpLnV0ZjgoKTsKIH0KIApAQCAtMTIxNSw3ICsxMjE1
LDcgQEAgc3RhdGljIENTdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IGNoYXIq
IHVyaVN0cmluZykKICAgICBpZiAoIWdfc3RyX2hhc19wcmVmaXgodXJpU3RyaW5nLCAiZmlsZTov
LyIpKQogICAgICAgICByZXR1cm4gQ1N0cmluZyh1cmlTdHJpbmcpOwogCi0gICAgR093blB0cjxn
Y2hhcj4gYmFzZW5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmlTdHJpbmcpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBiYXNlbmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHVyaVN0cmluZykpOwog
ICAgIHJldHVybiBDU3RyaW5nKGJhc2VuYW1lLmdldCgpKTsKIH0KIApAQCAtMTIyNCw3ICsxMjI0
LDcgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoU291
cFVSSSogdXJpKQogICAgIGlmICghdXJpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygiKG51bGwp
Iik7CiAKLSAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJp
LCBmYWxzZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0
cmluZyh1cmksIGZhbHNlKSk7CiAgICAgcmV0dXJuIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1
cmlTdHJpbmcuZ2V0KCkpOwogfQogCkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBzdGF0aWMgQ1N0cmlu
ZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChHRXJyb3IqIGVycm9yLCBXZWJLaXRX
ZWJSZXNvdXJjZQogICAgICAgICBlcnJvckRvbWFpbiA9ICJXZWJLaXRFcnJvckRvbWFpbiI7CiAK
ICAgICAvLyBUT0RPOiB0aGUgb3RoZXIgcG9ydHMgZ2V0IHRoZSBmYWlsaW5nVVJMIGZyb20gdGhl
IFJlc291cmNlRXJyb3IKLSAgICBHT3duUHRyPGNoYXI+IGVycm9yU3RyaW5nKGdfc3RyZHVwX3By
aW50ZigiPE5TRXJyb3IgZG9tYWluICVzLCBjb2RlICVkLCBmYWlsaW5nIFVSTCBcIiVzXCI+IiwK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IGVycm9yU3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiPE5TRXJy
b3IgZG9tYWluICVzLCBjb2RlICVkLCBmYWlsaW5nIFVSTCBcIiVzXCI+IiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRvbWFpbiwgZXJyb3ItPmNv
ZGUsIHJlc291cmNlVVJJU3RyaW5nLmRhdGEoKSkpOwogICAgIHJldHVybiBDU3RyaW5nKGVycm9y
U3RyaW5nLmdldCgpKTsKIH0KQEAgLTEyNTUsNyArMTI1NSw3IEBAIHN0YXRpYyBDU3RyaW5nIGRl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1
ZXN0KQogICAgIFNvdXBVUkkqIG1haW5Eb2N1bWVudFVSSSA9IHNvdXBfbWVzc2FnZV9nZXRfZmly
c3RfcGFydHkoc291cE1lc3NhZ2UpOwogICAgIENTdHJpbmcgbWFpbkRvY3VtZW50VVJJU3RyaW5n
KGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1haW5Eb2N1bWVudFVSSSkpOwogICAg
IENTdHJpbmcgcGF0aChjb252ZXJ0TmV0d29ya1JlcXVlc3RUb1VSTFBhdGgocmVxdWVzdCkpOwot
ICAgIEdPd25QdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ19zdHJkdXBfcHJpbnRmKCI8TlNVUkxSZXF1
ZXN0IFVSTCAlcywgbWFpbiBkb2N1bWVudCBVUkwgJXMsIGh0dHAgbWV0aG9kICVzPiIsCisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBkZXNjcmlwdGlvbihnX3N0cmR1cF9wcmludGYoIjxOU1VSTFJlcXVl
c3QgVVJMICVzLCBtYWluIGRvY3VtZW50IFVSTCAlcywgaHR0cCBtZXRob2QgJXM+IiwKICAgICAg
ICAgcGF0aC5kYXRhKCksIG1haW5Eb2N1bWVudFVSSVN0cmluZy5kYXRhKCksIHNvdXBNZXNzYWdl
LT5tZXRob2QpKTsKICAgICByZXR1cm4gQ1N0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CiB9CkBA
IC0xMjc2LDcgKzEyNzYsNyBAQCBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChXZWJLaXROZXR3b3JrUmVzcG9uc2UqIHJlc3BvbnNlKQogICAgIH0gZWxzZQog
ICAgICAgICBwYXRoID0gQ1N0cmluZygiKG51bGwpIik7CiAKLSAgICBHT3duUHRyPGNoYXI+IGRl
c2NyaXB0aW9uKGdfc3RyZHVwX3ByaW50ZigiPE5TVVJMUmVzcG9uc2UgJXMsIGh0dHAgc3RhdHVz
IGNvZGUgJWQ+IiwgcGF0aC5kYXRhKCksIHN0YXR1c0NvZGUpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IGRlc2NyaXB0aW9uKGdfc3RyZHVwX3ByaW50ZigiPE5TVVJMUmVzcG9uc2UgJXMsIGh0dHAg
c3RhdHVzIGNvZGUgJWQ+IiwgcGF0aC5kYXRhKCksIHN0YXR1c0NvZGUpKTsKICAgICByZXR1cm4g
Q1N0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CiB9CiAKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHN0
YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdFdlYkZyYW1lKiB3ZWJGCiAgICAgU291cFVSSSogdXJpID0gc291cF91cmlfbmV3KHdl
YmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CiAKICAgICBpZiAoU09VUF9V
UklfSVNfVkFMSUQodXJpKSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3Vw
X3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHVy
aVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOwogCiAgICAgICAgIGlmIChT
T1VQX1VSSV9WQUxJRF9GT1JfSFRUUCh1cmkpICYmIGdfc3RyY21wMCh1cmktPmhvc3QsICIxMjcu
MC4wLjEiKQogICAgICAgICAgICAgJiYgZ19zdHJjbXAwKHVyaS0+aG9zdCwgIjI1NS4yNTUuMjU1
LjI1NSIpCkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBzdGF0aWMgdm9pZCBmcmFtZUxvYWRFdmVudENh
bGxiYWNrKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RwogICAg
IGlmIChkb25lIHx8ICFnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBHT3duUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFtZU5hbWVT
dWl0YWJsZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJhbWUp
LCBmcmFtZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1
aXRhYmxlRm9yVGVzdFJlc3VsdCh3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSks
IGZyYW1lKSk7CiAgICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6CiAgICAgICAgIEFTU0VS
VCh1cmwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0VkaXRpbmdDYWxs
YmFja3MuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0VkaXRpbmdDYWxsYmFja3MuY3Bw
CmluZGV4IGVmNWE5NjkuLjNjMDhmODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9FZGl0aW5nQ2FsbGJhY2tzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RWRpdGluZ0NhbGxiYWNrcy5jcHAKQEAgLTMzLDI0ICszMywyNCBAQAogI2luY2x1ZGUgIlRlc3RS
dW5uZXIuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdC5o
PgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBzdGF0aWMg
Q1N0cmluZyBkdW1wTm9kZVBhdGgoV2ViS2l0RE9NTm9kZSogbm9kZSkKIHsKLSAgICBHT3duUHRy
PGdjaGFyPiBub2RlTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShub2RlKSk7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gbm9kZU5hbWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25h
bWUobm9kZSkpOwogICAgIEdTdHJpbmcqIHBhdGggPSBnX3N0cmluZ19uZXcobm9kZU5hbWUuZ2V0
KCkpOwogCiAgICAgV2ViS2l0RE9NTm9kZSogcGFyZW50ID0gd2Via2l0X2RvbV9ub2RlX2dldF9w
YXJlbnRfbm9kZShub2RlKTsKICAgICB3aGlsZSAocGFyZW50KSB7Ci0gICAgICAgIEdPd25QdHI8
Z2NoYXI+IHBhcmVudE5hbWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25hbWUocGFyZW50KSk7
CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhcmVudE5hbWUod2Via2l0X2RvbV9ub2RlX2dl
dF9ub2RlX25hbWUocGFyZW50KSk7CiAKICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHBhdGgsICIg
PiAiKTsKICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHBhdGgsIHBhcmVudE5hbWUuZ2V0KCkpOwog
ICAgICAgICBwYXJlbnQgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X3BhcmVudF9ub2RlKHBhcmVudCk7
CiAgICAgfQogCi0gICAgR093blB0cjxnY2hhcj4gcGF0aEJ1ZmZlcihnX3N0cmluZ19mcmVlKHBh
dGgsIEZBTFNFKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGF0aEJ1ZmZlcihnX3N0cmluZ19m
cmVlKHBhdGgsIEZBTFNFKSk7CiAgICAgcmV0dXJuIHBhdGhCdWZmZXIuZ2V0KCk7CiB9CiAKQEAg
LTU5LDcgKzU5LDcgQEAgc3RhdGljIENTdHJpbmcgZHVtcFJhbmdlKFdlYktpdERPTVJhbmdlKiBy
YW5nZSkKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gIihudWxsKSI7CiAKLSAgICBH
T3duUHRyPGdjaGFyPiBkdW1wKGdfc3RyZHVwX3ByaW50ZigicmFuZ2UgZnJvbSAlbGkgb2YgJXMg
dG8gJWxpIG9mICVzIiwKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkdW1wKGdfc3RyZHVwX3ByaW50
ZigicmFuZ2UgZnJvbSAlbGkgb2YgJXMgdG8gJWxpIG9mICVzIiwKICAgICAgICAgd2Via2l0X2Rv
bV9yYW5nZV9nZXRfc3RhcnRfb2Zmc2V0KHJhbmdlLCAwKSwKICAgICAgICAgZHVtcE5vZGVQYXRo
KHdlYmtpdF9kb21fcmFuZ2VfZ2V0X3N0YXJ0X2NvbnRhaW5lcihyYW5nZSwgMCkpLmRhdGEoKSwK
ICAgICAgICAgd2Via2l0X2RvbV9yYW5nZV9nZXRfZW5kX29mZnNldChyYW5nZSwgMCksCkBAIC0x
NTEsNyArMTUxLDcgQEAgZ2Jvb2xlYW4gc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRET01SYW5nZSogZnJvbVIKIGdib29sZWFuIHNob3VsZEFw
cGx5U3R5bGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUsIFdlYktpdERPTVJhbmdlKiByYW5nZSkKIHsKICAgICBpZiAoIWRvbmUgJiYg
Z1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgR093blB0cjxn
Y2hhcj4gc3R5bGVUZXh0KHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9jc3Nf
dGV4dChzdHlsZSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHlsZVRleHQod2Via2l0
X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X2Nzc190ZXh0KHN0eWxlKSk7CiAgICAgICAg
IHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0b0VsZW1lbnRz
SW5ET01SYW5nZTolc1xuIiwKICAgICAgICAgICAgICAgIHN0eWxlVGV4dC5nZXQoKSwgZHVtcFJh
bmdlKHJhbmdlKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRT
ZW5kZXIuY3BwCmluZGV4IDNjNjM2NDguLjU4MjYwMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtMzUsNyArMzUsNiBAQAogCiAjaW5jbHVkZSAiRHVtcFJl
bmRlclRyZWUuaCIKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaCIKLSNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CiAjaW5jbHVkZSA8R1JlZlB0ckd0ay5o
PgogI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U09iamVjdFJlZi5oPgpAQCAtNDgsNiArNDcsOCBAQAogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3
ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAog
ZXh0ZXJuICJDIiB7CkBAIC0yMjAsNyArMjIxLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29udGV4
dENsaWNrQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8K
ICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXco
bWFpbkZyYW1lKTsKICAgICBHdGtNZW51KiBndGtNZW51ID0gd2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0X21lbnUodmlldyk7CiAgICAgaWYgKGd0a01lbnUpIHsKLSAgICAgICAgR093blB0cjxH
TGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihndGtN
ZW51KSkpOworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dl
dF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKGd0a01lbnUpKSk7CiAgICAgICAgIEpTVmFsdWVSZWYg
YXJyYXlWYWx1ZXNbZ19saXN0X2xlbmd0aChpdGVtcy5nZXQoKSldOwogICAgICAgICBpbnQgaW5k
ZXggPSAwOwogICAgICAgICBmb3IgKEdMaXN0KiBpdGVtID0gZ19saXN0X2ZpcnN0KGl0ZW1zLmdl
dCgpKTsgaXRlbTsgaXRlbSA9IGdfbGlzdF9uZXh0KGl0ZW0pKSB7CkBAIC01NDIsOSArNTQzLDkg
QEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICAvLyBJZiB0aGlzIGlzIGFuIEhUVFAgdGVz
dCwgd2Ugc3RpbGwgbmVlZCB0byBwYXNzIGEgbG9jYWwgZmlsZSBwYXRoCiAgICAgLy8gdG8gV2Vi
Q29yZS4gRXZlbiB0aG91Z2ggdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgdGhpcyBzaG91bGQgYmUg
ZmluZQogICAgIC8vIGZvciBtb3N0IHRlc3RzLgotICAgIEdPd25QdHI8Z2NoYXI+IHNjaGVtZShn
X2ZpbGVfZ2V0X3VyaV9zY2hlbWUocGFyZW50RGlyZWN0b3J5LmdldCgpKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gc2NoZW1lKGdfZmlsZV9nZXRfdXJpX3NjaGVtZShwYXJlbnREaXJlY3Rvcnku
Z2V0KCkpKTsKICAgICBpZiAoZ19zdHJfZXF1YWwoc2NoZW1lLmdldCgpLCAiaHR0cCIpIHx8IGdf
c3RyX2VxdWFsKHNjaGVtZS5nZXQoKSwgImh0dHBzIikpIHsKLSAgICAgICAgR093blB0cjxnY2hh
cj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsKICAgICAg
ICAgcGFyZW50RGlyZWN0b3J5ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoY3VycmVu
dERpcmVjdG9yeS5nZXQoKSkpOwogICAgIH0KIApAQCAtNTU3LDcgKzU1OCw3IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmCiAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGVuYW1lU3RyaW5nID0gSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29u
dGV4dCwgZmlsZXNBcnJheSwgaSwgMCksIDApOwogICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlbmFtZVN0cmluZyk7Ci0gICAg
ICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19t
YWxsb2MoYnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWVC
dWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAgICAg
ICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGVuYW1lU3RyaW5nLCBmaWxlbmFtZUJ1ZmZlci5n
ZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmaWxlbmFtZVN0cmlu
Zyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAppbmRleCBl
YTU3ZDIzLi5hN2MzOTdlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJH
dGsuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBleHRlcm4gIkMiIHsKQEAgLTEzMiwx
OSArMTMyLDE5IEBAIHZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSgpCiAKIEpTU3RyaW5nUmVm
IFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
U3RyaW5nUmVmIHVybCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHVybENTdHJpbmcoSlNTdHJpbmdD
b3B5VVRGOENTdHJpbmcodXJsKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmxDU3RyaW5nKEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKHVybCkpOwogICAgIGlmICghZ19zdHJfaGFzX3ByZWZpeCh1
cmxDU3RyaW5nLmdldCgpLCAiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvIikpCiAgICAgICAgIHJl
dHVybiBKU1N0cmluZ1JldGFpbih1cmwpOwogCiAgICAgY29uc3QgY2hhciogbGF5b3V0VGVzdHNT
dWZmaXggPSB1cmxDU3RyaW5nLmdldCgpICsgc3RybGVuKCJmaWxlOi8vL3RtcC8iKTsKLSAgICBH
T3duUHRyPGNoYXI+IHRlc3RQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ2V0VG9wTGV2ZWxQYXRoKCku
ZGF0YSgpLCBsYXlvdXRUZXN0c1N1ZmZpeCwgTlVMTCkpOwotICAgIEdPd25QdHI8Y2hhcj4gdGVz
dFVSSShnX2ZpbGVuYW1lX3RvX3VyaSh0ZXN0UGF0aC5nZXQoKSwgMCwgMCkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gdGVzdFBhdGgoZ19idWlsZF9maWxlbmFtZShnZXRUb3BMZXZlbFBhdGgoKS5k
YXRhKCksIGxheW91dFRlc3RzU3VmZml4LCBudWxscHRyKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiB0ZXN0VVJJKGdfZmlsZW5hbWVfdG9fdXJpKHRlc3RQYXRoLmdldCgpLCAwLCAwKSk7CiAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRlc3RVUkkuZ2V0KCkpOwogfQog
CiB2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVm
IHRhcmdldCkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiByZWxhdGl2ZVVSTChKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyh1cmwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZWxhdGl2ZVVSTChKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyh1cmwpKTsKICAgICBTb3VwVVJJKiBiYXNlVVJJID0gc291cF91
cmlfbmV3KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShtYWluRnJhbWUpKTsKICAgICBTb3VwVVJJ
KiBhYnNvbHV0ZVVSSSA9IHNvdXBfdXJpX25ld193aXRoX2Jhc2UoYmFzZVVSSSwgcmVsYXRpdmVV
UkwuZ2V0KCkpOwogICAgIHNvdXBfdXJpX2ZyZWUoYmFzZVVSSSk7CkBAIC0yMTksOSArMjE5LDkg
QEAgdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmlu
Z1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW4KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5n
UmVmIHByb3RvY29sLCBKU1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVTdWJkb21haW5zKQog
ewotICAgIEdPd25QdHI8Z2NoYXI+IHNvdXJjZU9yaWdpbkdDaGFyKEpTU3RyaW5nQ29weVVURjhD
U3RyaW5nKHNvdXJjZU9yaWdpbikpOwotICAgIEdPd25QdHI8Z2NoYXI+IHByb3RvY29sR0NoYXIo
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcocHJvdG9jb2wpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBo
b3N0R0NoYXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoaG9zdCkpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHNvdXJjZU9yaWdpbkdDaGFyKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHNvdXJjZU9y
aWdpbikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHByb3RvY29sR0NoYXIoSlNTdHJpbmdDb3B5
VVRGOENTdHJpbmcocHJvdG9jb2wpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBob3N0R0NoYXIo
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoaG9zdCkpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6cmVtb3ZlV2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmlnaW5HQ2hhci5n
ZXQoKSwgcHJvdG9jb2xHQ2hhci5nZXQoKSwgaG9zdEdDaGFyLmdldCgpLCBpbmNsdWRlU3ViZG9t
YWlucyk7CiB9CiAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQog
ICAgICAgICB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsK
ICAgICBBU1NFUlQodmlldyk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBjTWVzc2FnZShKU1N0cmlu
Z0NvcHlVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY01lc3Nh
Z2UoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobWVzc2FnZSkpOwogICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKHZp
ZXcsIGNNZXNzYWdlLmdldCgpKTsKIH0KIApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgV2ViS2l0
SWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF9nZXRfaWNvbl9kYXRhYmFzZSgpOwogICAg
IGlmIChlbmFibGVkKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGljb25EYXRhYmFzZVBhdGgo
Z19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksICJEdW1wUmVuZGVyVHJlZSIsICJpY29u
ZGF0YWJhc2UiLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGljb25EYXRhYmFz
ZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksICJEdW1wUmVuZGVyVHJlZSIs
ICJpY29uZGF0YWJhc2UiLCBudWxscHRyKSk7CiAgICAgICAgIHdlYmtpdF9pY29uX2RhdGFiYXNl
X3NldF9wYXRoKGRhdGFiYXNlLCBpY29uRGF0YWJhc2VQYXRoLmdldCgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgd2Via2l0X2ljb25fZGF0YWJhc2Vfc2V0X3BhdGgoZGF0YWJhc2UsIDApOwpAQCAt
NDk4LDcgKzQ5OCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVjdFJlCiAgICAgaWYgKCFKU1ZhbHVl
SXNOdW1iZXIoY29udGV4dCwgbGVuZ3RoVmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBHT3duUHRyPGdjaGFyPiB0YXJnZXRTdHJpbmcoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
dGFyZ2V0KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGFyZ2V0U3RyaW5nKEpTU3RyaW5nQ29w
eVVURjhDU3RyaW5nKHRhcmdldCkpOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRpY19jYXN0
PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGxlbmd0aFZhbHVlLCAwKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtNjMxLDcgKzYzMSw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwg
SlNTdHJpbmdSZWYgc2NoZW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHVybFNjaGVtZShKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyhzY2hlbWUpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB1cmxT
Y2hlbWUoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc2NoZW1lKSk7CiAgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGZv
cmJpZGRlbiwgdXJsU2NoZW1lLmdldCgpKTsKIH0KIApAQCAtNjU5LDggKzY1OSw4IEBAIHN0YXRp
YyBnYm9vbGVhbiBib29sZWFuRnJvbVZhbHVlKGdjaGFyKiB2YWx1ZSkKIAogdm9pZCBUZXN0UnVu
bmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1
ZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBvcmlnaW5hbE5hbWUoSlNTdHJpbmdDb3B5VVRGOENT
dHJpbmcoa2V5KSk7Ci0gICAgR093blB0cjxnY2hhcj4gdmFsdWVBc1N0cmluZyhKU1N0cmluZ0Nv
cHlVVEY4Q1N0cmluZyh2YWx1ZSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9yaWdpbmFsTmFt
ZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhrZXkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB2
YWx1ZUFzU3RyaW5nKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHZhbHVlKSk7CiAKICAgICBXZWJL
aXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1l
KTsKICAgICBBU1NFUlQodmlldyk7CkBAIC03MzQsMTMgKzczNCwxMyBAQCB2b2lkIFRlc3RSdW5u
ZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVl
KQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQoSlNTdHJpbmdSZWYgc291cmNlLCBi
b29sIHJ1bkF0U3RhcnQsIGJvb2wgYWxsRnJhbWVzKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHNv
dXJjZUNvZGUoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc291cmNlKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gc291cmNlQ29kZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhzb3VyY2UpKTsKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmFkZFVzZXJTY3JpcHQobWFpbkZyYW1lLCBzb3Vy
Y2VDb2RlLmdldCgpLCBydW5BdFN0YXJ0LCBhbGxGcmFtZXMpOwogfQogCiB2b2lkIFRlc3RSdW5u
ZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBhbGxGcmFtZXMp
CiB7Ci0gICAgR093blB0cjxnY2hhcj4gc291cmNlQ29kZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmlu
Zyhzb3VyY2UpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VDb2RlKEpTU3RyaW5nQ29w
eVVURjhDU3RyaW5nKHNvdXJjZSkpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRk
VXNlclN0eWxlU2hlZXQobWFpbkZyYW1lLCBzb3VyY2VDb2RlLmdldCgpLCBhbGxGcmFtZXMpOwog
ICAgIC8vIEZJWE1FOiBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24gd2h5IHVzZXJzY3JpcHRzL3Vz
ZXItc3R5bGUtdG9wLWZyYW1lLW9ubHkuaHRtbCBmYWlscyB3aGVuIGFsbEZyYW1lcyBpcyBmYWxz
ZS4KIApAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRU
UExvYWRzKGJvb2wgc2VyaWFsaXplKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rp
b24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHdyaXRpbmdE
aXJlY3Rpb24oSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoZGlyZWN0aW9uKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gd3JpdGluZ0RpcmVjdGlvbihKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhkaXJl
Y3Rpb24pKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIEFTU0VSVCh2aWV3KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCBlZWQzYmJlLi5h
ZWU1NTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGV4dElucHV0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1RleHRJbnB1dENvbnRy
b2xsZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5o
IgogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgot
I2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxHVW5pcXVlUHRyR3RrLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVm
Lmg+CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1hcmtlZFRleHRDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpCiAgICAgQVNTRVJU
KCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBHT3duUHRyPGdj
aGFyPiBzdHJpbmdCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXpl
KSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNfY2FzdDxnY2hh
cio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhz
dHJpbmcsIHN0cmluZ0J1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgSlNTdHJpbmdSZWxl
YXNlKHN0cmluZyk7CiAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgaW5zZXJ0
VGV4dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwK
ICAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAg
IEdPd25QdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9j
KGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RyaW5nQnVmZmVyKHN0YXRp
Y19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBKU1N0cmluZ0dldFVU
RjhDU3RyaW5nKHN0cmluZywgc3RyaW5nQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBK
U1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKIApAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGRvQ29tbWFuZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwKICAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CiAKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShz
dHJpbmcpOwotICAgIEdPd25QdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNfY2FzdDxnY2hh
cio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RyaW5n
QnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyaW5nQnVmZmVyLmdldCgpLCBidWZmZXJT
aXplKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCmluZGV4IDIzZWNhN2IuLjk1NDYxMjcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgogI2lu
Y2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogCiAvLyBSZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIFVURi04IGNoYXJhY3RlciBidWZmZXIg
d2hpY2ggbXVzdCBiZSBmcmVlZCB3aXRoIGdfZnJlZSgpCiBnY2hhciogSlNTdHJpbmdDb3B5VVRG
OENTdHJpbmcoSlNTdHJpbmdSZWYganNTdHJpbmcpCkBAIC01OSwxMSArNTksMTEgQEAgYm9vbCBM
b2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIAogYm9vbCBMb2FkSFRNTFN0cmluZ0l0ZW06Omludm9r
ZSgpIGNvbnN0CiB7Ci0gICAgR093blB0cjxnY2hhcj4gY29udGVudChKU1N0cmluZ0NvcHlVVEY4
Q1N0cmluZyhtX2NvbnRlbnQuZ2V0KCkpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlVVJMKEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKG1fYmFzZVVSTC5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGNvbnRlbnQoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV9jb250ZW50LmdldCgpKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZVVSTChKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyht
X2Jhc2VVUkwuZ2V0KCkpKTsKIAogICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7Ci0gICAgICAg
IEdPd25QdHI8Z2NoYXI+IHVucmVhY2hhYmxlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1f
dW5yZWFjaGFibGVVUkwuZ2V0KCkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdW5yZWFj
aGFibGVVUkwoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV91bnJlYWNoYWJsZVVSTC5nZXQoKSkp
OwogICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmluZyhtYWluRnJh
bWUsIGNvbnRlbnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVhY2hhYmxlVVJMLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggOTE2YTkzOS4uMTkwYjFmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0zMyw3ICszMyw2IEBAIHNldCh3ZWJraXQyX2FwaV9oYXJuZXNzX1NPVVJD
RVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9ndGsvUGxhdGZvcm1VdGlsaXRpZXNHdGsuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAotICAgIC4u
Ly4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcAogKQogCiBsaXN0
KEFQUEVORCB0ZXN0X3d0Zl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01Ob2RlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvRE9NTm9kZVRlc3QuY3BwCmluZGV4IGUxNzU0Y2YuLmQxODdjNTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01Ob2Rl
VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTU5v
ZGVUZXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0Lmgi
CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRl
bnNpb24uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBjbGFzcyBXZWJLaXRET01Ob2RlVGVzdCA6IHB1Ymxp
YyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVDb3VudDsgaSsrKSB7CiAgICAg
ICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShs
aXN0LCBpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7
Ci0gICAgICAgICAgICBHT3duUHRyPGNoYXI+IHRhZ05hbWUod2Via2l0X2RvbV9ub2RlX2dldF9u
b2RlX25hbWUobm9kZSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0YWdOYW1lKHdl
YmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih0YWdOYW1lLmdldCgpLCA9PSwgZXhwZWN0ZWRUYWdOYW1lc1tpXSk7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RCYWNrRm9yd2FyZExpc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGI0NzkzNjYuLjY1YzNkMmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QmFja0Zvcndh
cmRMaXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
QmFja0ZvcndhcmRMaXN0TmF2aWdhdGlvbihCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludAogc3RhdGljIHZvaWQgdGVzdEJhY2tGb3J3YXJkTGlzdExpbWl0QW5kQ2FjaGUoQmFj
a0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGtCYWNrRm9yd2FyZExpc3RMaW1pdDsgaSsrKSB7Ci0gICAgICAgIEdPd25QdHI8
Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBpKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBpKSk7CiAgICAgICAg
IHRlc3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW0g
fCBCYWNrRm9yd2FyZExpc3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgICAgIHRlc3QtPmxvYWRVUkko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoLmdldCgpKS5kYXRhKCkpOwogICAgICAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTI1NCw5ICsyNTQsOSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZShCYWNrRm9yd2FyZExpc3RUZXN0KiB0
ZXN0LCBnY29uc3RwbwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwga0JhY2tGb3J3YXJkTGlzdExpbWl0
KTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtUGFnZUZpcnN0ID0gd2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbSh0ZXN0LT5tX2xpc3QsIC0oa0JhY2tGb3J3
YXJkTGlzdExpbWl0IC0gMSkpOwotICAgIEdPd25QdHI8R0xpc3Q+IHJlbW92ZWRJdGVtcyhnX2xp
c3RfcHJlcGVuZCgwLCBpdGVtUGFnZUZpcnN0KSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gcmVt
b3ZlZEl0ZW1zKGdfbGlzdF9wcmVwZW5kKDAsIGl0ZW1QYWdlRmlyc3QpKTsKIAotICAgIEdPd25Q
dHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBrQmFja0ZvcndhcmRMaXN0
TGltaXQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvUGFn
ZSVkIiwga0JhY2tGb3J3YXJkTGlzdExpbWl0KSk7CiAgICAgdGVzdC0+bV9jaGFuZ2VkRmxhZ3Mg
PSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6
OkFkZGVkSXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OlJlbW92ZWRJdGVtczsKICAgICB0ZXN0
LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aC5nZXQoKSkuZGF0YSgpKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWRBbmRDaGVja1JlbW92ZWRJdGVtcyhyZW1vdmVk
SXRlbXMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCBhMjMyOWI5Li5hOTFlNzg3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRN
ZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENv
bnRleHRNZW51LmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICBHdGtNZW51KiBn
ZXRQb3B1cE1lbnUoKQogICAgIHsKLSAgICAgICAgR093blB0cjxHTGlzdD4gdG9wbGV2ZWxzKGd0
a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHRv
cGxldmVscyhndGtfd2luZG93X2xpc3RfdG9wbGV2ZWxzKCkpOwogICAgICAgICBmb3IgKEdMaXN0
KiBpdGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQoaXRlcikp
IHsKICAgICAgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6CiAKICAgICBHdGtN
ZW51SXRlbSogZ2V0TWVudUl0ZW0oR3RrTWVudSogbWVudSwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJl
bCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0
X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxHTGlz
dD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkp
OwogICAgICAgICBmb3IgKEdMaXN0KiBpdGVyID0gaXRlbXMuZ2V0KCk7IGl0ZXI7IGl0ZXIgPSBn
X2xpc3RfbmV4dChpdGVyKSkgewogICAgICAgICAgICAgR3RrTWVudUl0ZW0qIGNoaWxkID0gR1RL
X01FTlVfSVRFTShpdGVyLT5kYXRhKTsKICAgICAgICAgICAgIGlmIChnX3N0cl9lcXVhbChpdGVt
TGFiZWwsIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKGNoaWxkKSkpCkBAIC03ODUsNyArNzg1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0b3JzKENvbnRleHRNZW51
U21hcnRTZXBhcmF0b3JzVGVzdCogdGVzdCwKICAgICBnX2Fzc2VydChtZW51KTsKIAogICAgIC8v
IExlYWRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIG5vdCBhZGRlZCB0byB0aGUgY29u
dGV4dCBtZW51LgotICAgIEdPd25QdHI8R0xpc3Q+IG1lbnVJdGVtcyhndGtfY29udGFpbmVyX2dl
dF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4g
bWVudUl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkp
KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgobWVudUl0ZW1zLmdldCgpKSwg
PT0sIDYpOwogICAgIEd0a1dpZGdldCogaXRlbSA9IEdUS19XSURHRVQoZ19saXN0X250aF9kYXRh
KG1lbnVJdGVtcy5nZXQoKSwgMCkpOwogICAgIGdfYXNzZXJ0KCFHVEtfSVNfU0VQQVJBVE9SX01F
TlVfSVRFTShpdGVtKSAmJiBndGtfd2lkZ2V0X2dldF92aXNpYmxlKGl0ZW0pKTsKQEAgLTgwMyw3
ICs4MDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnMoQ29u
dGV4dE1lbnVTbWFydFNlcGFyYXRvcnNUZXN0KiB0ZXN0LAogICAgIC8vIEhpZGluZyBhIG1lbnUg
aXRlbSBiZXR3ZWVuIHR3byBzZXBhcmF0b3JzIGhpZGVzIHRoZSBmb2xsb3dpbmcgc2VwYXJhdG9y
LgogICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2Fj
dGlvbihHVEtfQUNUSVZBVEFCTEUoZ19saXN0X250aF9kYXRhKG1lbnVJdGVtcy5nZXQoKSwgMykp
KTsKICAgICBndGtfYWN0aW9uX3NldF92aXNpYmxlKGFjdGlvbiwgRkFMU0UpOwotICAgIG1lbnVJ
dGVtcy5zZXQoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkp
OworICAgIG1lbnVJdGVtcy5yZXNldChndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09O
VEFJTkVSKG1lbnUpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKG1lbnVJ
dGVtcy5nZXQoKSksID09LCA2KTsKICAgICBpdGVtID0gR1RLX1dJREdFVChnX2xpc3RfbnRoX2Rh
dGEobWVudUl0ZW1zLmdldCgpLCAwKSk7CiAgICAgZ19hc3NlcnQoIUdUS19JU19TRVBBUkFUT1Jf
TUVOVV9JVEVNKGl0ZW0pICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUoaXRlbSkpOwpAQCAtODM2
LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9ycyhD
b250ZXh0TWVudVNtYXJ0U2VwYXJhdG9yc1Rlc3QqIHRlc3QsCiAgICAgLy8gVHJhaWxpbmcgc2Vw
YXJhdG9ycyBhcmUgaGlkZGVuIHRvby4KICAgICBhY3Rpb24gPSBndGtfYWN0aXZhdGFibGVfZ2V0
X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShnX2xpc3RfbnRoX2RhdGEobWVudUl0ZW1z
LmdldCgpLCA1KSkpOwogICAgIGd0a19hY3Rpb25fc2V0X3Zpc2libGUoYWN0aW9uLCBGQUxTRSk7
Ci0gICAgbWVudUl0ZW1zLnNldChndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJ
TkVSKG1lbnUpKSk7CisgICAgbWVudUl0ZW1zLnJlc2V0KGd0a19jb250YWluZXJfZ2V0X2NoaWxk
cmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBpdGVtID0gR1RLX1dJREdFVChnX2xpc3Rf
bnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAwKSk7CiAgICAgZ19hc3NlcnQoIUdUS19JU19TRVBB
UkFUT1JfTUVOVV9JVEVNKGl0ZW0pICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUoaXRlbSkpOwog
ICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0KCksIDEp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGFkYzZiNWIuLmJmMzUxZTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVN
YW5hZ2VyLmNwcApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChz
dG9yYWdlKSB7CiAgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0Vf
VEVYVDoKICAgICAgICAgICAgIGlmICghbV9jb29raWVzVGV4dEZpbGUpCi0gICAgICAgICAgICAg
ICAgbV9jb29raWVzVGV4dEZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3Rvcnks
ICJjb29raWVzLnR4dCIsIE5VTEwpKTsKKyAgICAgICAgICAgICAgICBtX2Nvb2tpZXNUZXh0Rmls
ZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2llcy50eHQiLCBO
VUxMKSk7CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1fY29va2llc1RleHRGaWxlLmdldCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5U
X1NUT1JBR0VfU1FMSVRFOgogICAgICAgICAgICAgaWYgKCFtX2Nvb2tpZXNTUUxpdGVGaWxlKQot
ICAgICAgICAgICAgICAgIG1fY29va2llc1NRTGl0ZUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUo
a1RlbXBEaXJlY3RvcnksICJjb29raWVzLmRiIiwgTlVMTCkpOworICAgICAgICAgICAgICAgIG1f
Y29va2llc1NRTGl0ZUZpbGUucmVzZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwg
ImNvb2tpZXMuZGIiLCBOVUxMKSk7CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1fY29va2llc1NR
TGl0ZUZpbGUuZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAg
LTE2Niw4ICsxNjYsOCBAQCBwdWJsaWM6CiAgICAgY2hhcioqIG1fZG9tYWluczsKICAgICBib29s
IG1fY29va2llc0NoYW5nZWQ7CiAgICAgYm9vbCBtX2ZpbmlzaExvb3BXaGVuQ29va2llc0NoYW5n
ZTsKLSAgICBHT3duUHRyPGNoYXI+IG1fY29va2llc1RleHRGaWxlOwotICAgIEdPd25QdHI8Y2hh
cj4gbV9jb29raWVzU1FMaXRlRmlsZTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fY29va2llc1Rl
eHRGaWxlOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9jb29raWVzU1FMaXRlRmlsZTsKIH07CiAK
IHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tpZU1hbmFnZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCmluZGV4IGI3Y2E3M2EuLmE0ZDI3
YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdERvd25sb2Fkcy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBzdGF0aWMgY2hhcioga1RlbXBEaXJlY3Rvcnk7CkBAIC0x
NDQsOCArMTQ0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0
aW9uKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgZ2NoYXIqIHN1Z2dlc3RlZEZpbGVu
YW1lKQogICAgIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBkZXN0aW5hdGlvbihnX2J1aWxkX2Zp
bGVuYW1lKGtUZW1wRGlyZWN0b3J5LCBzdWdnZXN0ZWRGaWxlbmFtZSwgTlVMTCkpOwotICAgICAg
ICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0
aW9uLmdldCgpLCAwLCAwKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRpb24o
Z19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgc3VnZ2VzdGVkRmlsZW5hbWUsIE5VTEwp
KTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvblVSSShnX2ZpbGVuYW1lX3Rv
X3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOwogICAgICAgICB3ZWJraXRfZG93bmxvYWRf
c2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvblVSSS5nZXQoKSk7CiAgICAgfQog
CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXdlYmtpdF9kb3dubG9h
ZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBHUmVmUHRyPEdGaWxlPiBkZXN0RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmko
d2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCkpKTsKLSAgICAgICAgR093
blB0cjxjaGFyPiBkZXN0QmFzZW5hbWUoZ19maWxlX2dldF9iYXNlbmFtZShkZXN0RmlsZS5nZXQo
KSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RCYXNlbmFtZShnX2ZpbGVfZ2V0X2Jh
c2VuYW1lKGRlc3RGaWxlLmdldCgpKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihkZXN0QmFz
ZW5hbWUuZ2V0KCksID09LCBleHBlY3RlZE5hbWUpOwogCiAgICAgICAgIGdfZmlsZV9kZWxldGUo
ZGVzdEZpbGUuZ2V0KCksIDAsIDApOwpAQCAtMTgyLDEwICsxODIsMTAgQEAgcHVibGljOgogCiBz
dGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGUoRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewotICAgIEdPd25QdHI8Y2hhcj4gc291cmNlUGF0aChnX2J1aWxkX2ZpbGVu
YW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJ0ZXN0LnBkZiIs
IE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCAidGVzdC5wZGYiLCBO
VUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gc291cmNlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgoc291cmNlUGF0aC5nZXQoKSkpOwogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBzb3Vy
Y2VJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKHNvdXJjZS5nZXQoKSwgR19GSUxF
X0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBzdGF0aWNfY2FzdDxHRmlsZVF1ZXJ5SW5mb0ZsYWdz
PigwKSwgMCwgMCkpOwotICAgIEdPd25QdHI8Y2hhcj4gc291cmNlVVJJKGdfZmlsZV9nZXRfdXJp
KHNvdXJjZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc291cmNlVVJJKGdfZmlsZV9n
ZXRfdXJpKHNvdXJjZS5nZXQoKSkpOwogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25s
b2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoc291
cmNlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3Zp
ZXcoZG93bmxvYWQuZ2V0KCkpKTsKIApAQCAtMjYyLDkgKzI2Miw5IEBAIHN0YXRpYyB2b2lkIHRl
c3REb3dubG9hZExvY2FsRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9nZXRfZXN0aW1h
dGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAKICAgICB0ZXN0LT5tX2V4cGVj
dGVkRXJyb3IgPSBXRUJLSVRfRE9XTkxPQURfRVJST1JfREVTVElOQVRJT047Ci0gICAgR093blB0
cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNl
c0RpcigpLmRhdGEoKSwgInRlc3QucGRmIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5k
YXRhKCksICJ0ZXN0LnBkZiIsIE5VTEwpKTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5nZXQoKSkpOwotICAgIEdPd25QdHI8Y2hh
cj4gdXJpKGdfZmlsZV9nZXRfdXJpKGZpbGUuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlLmdldCgpKSk7CiAgICAgZG93bmxvYWQgPSBhZG9wdEdS
ZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyh1cmkuZ2V0KCkpKTsKICAg
ICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkp
OwogCkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGtTZXJ2ZXJTdWdnZXN0
ZWRGaWxlbmFtZSA9ICJ3ZWJraXQtZG93bmxvYWRlZC1maWxlIjsKIAogc3RhdGljIHZvaWQgYWRk
Q29udGVudERpc3Bvc2l0aW9uSFRUUEhlYWRlclRvUmVzcG9uc2UoU291cE1lc3NhZ2UqIG1lc3Nh
Z2UpCiB7Ci0gICAgR093blB0cjxjaGFyPiBjb250ZW50RGlzcG9zaXRpb24oZ19zdHJkdXBfcHJp
bnRmKCJmaWxlbmFtZT0lcyIsIGtTZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZSkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gY29udGVudERpc3Bvc2l0aW9uKGdfc3RyZHVwX3ByaW50ZigiZmlsZW5hbWU9
JXMiLCBrU2VydmVyU3VnZ2VzdGVkRmlsZW5hbWUpKTsKICAgICBzb3VwX21lc3NhZ2VfaGVhZGVy
c19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkNvbnRlbnQtRGlzcG9zaXRpb24i
LCBjb250ZW50RGlzcG9zaXRpb24uZ2V0KCkpOwogfQogCkBAIC0zMjksNyArMzI5LDcgQEAgc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdPd25Q
dHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJl
c291Y2VzRGlyKCkuZGF0YSgpLCBwYXRoLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBm
aWxlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIo
KS5kYXRhKCksIHBhdGgsIE5VTEwpKTsKICAgICBjaGFyKiBjb250ZW50czsKICAgICBnc2l6ZSBj
b250ZW50c0xlbmd0aDsKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmlsZVBhdGguZ2V0
KCksICZjb250ZW50cywgJmNvbnRlbnRzTGVuZ3RoLCAwKSkgewpAQCAtNDA5LDcgKzQwOSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBldmVudHMuY2xlYXIoKTsKICAgICBnX2Fzc2Vy
dF9jbXBmbG9hdCh3ZWJraXRfZG93bmxvYWRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyhkb3dubG9h
ZC5nZXQoKSksIDwsIDEpOwogICAgIC8vIENoZWNrIHRoZSBpbnRlcm1lZGlhdGUgZmlsZSBpcyBk
ZWxldGVkIHdoZW4gdGhlIGRvd25sb2FkIGlzIGNhbmNlbGxlZC4KLSAgICBHT3duUHRyPGNoYXI+
IGludGVybWVkaWF0ZVVSSShnX3N0cmR1cF9wcmludGYoIiVzLndrZG93bmxvYWQiLCB3ZWJraXRf
ZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gaW50ZXJtZWRpYXRlVVJJKGdfc3RyZHVwX3ByaW50ZigiJXMud2tkb3dubG9hZCIs
IHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQuZ2V0KCkpKSk7CiAgICAg
R1JlZlB0cjxHRmlsZT4gaW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl91cmkoaW50ZXJtZWRpYXRlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIWdfZmlsZV9xdWVy
eV9leGlzdHMoaW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0cikpOwogfQpAQCAtNDQ0LDgg
KzQ0NCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBkb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uQ2FsbGJhY2soV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhciog
c3VnZ2VzdGVkRmlsZW5hbWUsIFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewotICAg
ICAgICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJl
Y3RvcnksIHN1Z2dlc3RlZEZpbGVuYW1lLCBOVUxMKSk7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4g
ZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDAp
KTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvbihnX2J1aWxkX2ZpbGVuYW1l
KGtUZW1wRGlyZWN0b3J5LCBzdWdnZXN0ZWRGaWxlbmFtZSwgTlVMTCkpOworICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9u
LmdldCgpLCAwLCAwKSk7CiAgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRfZGVzdGluYXRpb24o
ZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdldCgpKTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IGZiYjYyY2UuLmE2ODc4MjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9y
U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dEluc3BlY3RvclNlcnZlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRU
ZXN0U2VydmVyTW9uaXRvcigpCiBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIoKQogewogICAg
IC8vIFByZXBhcmUgYXJndltdIGZvciBzcGF3bmluZyB0aGUgc2VydmVyIHByb2Nlc3MuCi0gICAg
R093blB0cjxjaGFyPiB0ZXN0U2VydmVyUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9FWEVD
X1BBVEgsICJUZXN0V2ViS2l0QVBJIiwgIldlYktpdDJHdGsiLCBnVGVzdFNlcnZlckFwcE5hbWUs
IE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RTZXJ2ZXJQYXRoKGdfYnVpbGRfZmls
ZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRBUEkiLCAiV2ViS2l0Mkd0ayIsIGdU
ZXN0U2VydmVyQXBwTmFtZSwgTlVMTCkpOwogCiAgICAgLy8gV2UgaW5zdGFsbCBhIGhhbmRsZXIg
dG8gZW5zdXJlIHRoYXQgd2Uga2lsbCB0aGUgY2hpbGQgcHJvY2VzcwogICAgIC8vIGlmIHRoZSBw
YXJlbnQgZGllcyBiZWNhdXNlIG9mIHdoYXRldmVyIHRoZSByZWFzb24gaXMuCkBAIC0xNzMsMTcg
KzE3MywxNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QoSW5zcGVj
dG9yU2VydmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAgICAgaW50IHBhZ2VJZCA9IFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9O
dW1iZXIoamF2YXNjcmlwdFJlc3VsdCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5n
OworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmc7CiAgICAgamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGFnZXNbMF0udXJs
OyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZh
bHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ID09LCAiaHR0cDovLzEyNy4wLjAuMToyOTk5LyIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGFnZXNbMF0uaW5zcGVj
dG9yVXJsOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwor
ICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3Ry
aW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBTdHJpbmcgdmFsaWRJbnNwZWN0b3JVUkwgPSBT
dHJpbmcoIi9NYWluLmh0bWw/cGFnZT0iKSArIFN0cmluZzo6bnVtYmVyKHBhZ2VJZCk7CiAgICAg
QVNTRVJUX0NNUF9DU1RSSU5HKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgdmFsaWRJbnNwZWN0b3JV
UkwudXRmOCgpKTsKIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBvcGVuUmVtb3Rl
RGVidWdnaW5nU2Vzc2lvbihJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHRpdGxlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IHRpdGxlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRS
ZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGl0bGUuZ2V0KCksID09LCAiaHR0cDovLzEy
Ny4wLjAuMToyOTk5LyIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFByaW50aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcuY3BwCmluZGV4IDA1MjQwNzIuLjk5ZWZhN2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UHJpbnRp
bmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UHJp
bnRpbmcuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0
aW9uUHJpbnQoUHJpbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgR093blB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKGtUZW1wRGlyZWN0b3J5LCAid2Via2l0LXByaW50LnBkZiIsIE5VTEwpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IG91dHB1dEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3Rv
cnksICJ3ZWJraXQtcHJpbnQucGRmIiwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IG91dHB1
dEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvdXRwdXRGaWxlbmFtZS5nZXQo
KSkpOwotICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJpKG91dHB1dEZp
bGUuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG91dHB1dFVSSShnX2ZpbGVfZ2V0X3Vy
aShvdXRwdXRGaWxlLmdldCgpKSk7CiAKICAgICBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+IHBy
aW50U2V0dGluZ3MgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X3NldHRpbmdzX25ldygpKTsKICAgICBn
dGtfcHJpbnRfc2V0dGluZ3Nfc2V0X3ByaW50ZXIocHJpbnRTZXR0aW5ncy5nZXQoKSwgZ3RrX3By
aW50ZXJfZ2V0X25hbWUocHJpbnRlci5nZXQoKSkpOwpAQCAtMjQ3LDkgKzI0Nyw5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEdPd25QdHI8Y2hh
cj4gb3V0cHV0RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgIndlYmtp
dC1jbG9zZS1hZnRlci1wcmludC5wZGYiLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gb3V0cHV0RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgIndlYmtp
dC1jbG9zZS1hZnRlci1wcmludC5wZGYiLCBOVUxMKSk7CiAgICAgICAgIG1fb3V0cHV0RmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG91dHB1dEZpbGVuYW1lLmdldCgpKSk7Ci0g
ICAgICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJpKG1fb3V0cHV0Rmls
ZS5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG91dHB1dFVSSShnX2ZpbGVfZ2V0
X3VyaShtX291dHB1dEZpbGUuZ2V0KCkpKTsKIAogICAgICAgICBHUmVmUHRyPEd0a1ByaW50U2V0
dGluZ3M+IHByaW50U2V0dGluZ3MgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X3NldHRpbmdzX25ldygp
KTsKICAgICAgICAgZ3RrX3ByaW50X3NldHRpbmdzX3NldF9wcmludGVyKHByaW50U2V0dGluZ3Mu
Z2V0KCksIGd0a19wcmludGVyX2dldF9uYW1lKHByaW50ZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcApp
bmRleCAwYzIxYzcxLi4zYTQ1OWEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAg
cHVibGljOgogICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZGF0YVNpemUsID4sIDApOwogCiAgICAg
ICAgIFJlc291cmNlc1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZXNUZXN0Kj4odXNl
ckRhdGEpOwotICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5zZXQocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oZGF0YSkpOworICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5yZXNldChyZWlu
dGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7CiAgICAgICAgIHRlc3QtPm1fcmVzb3VyY2VEYXRh
U2l6ZSA9IGRhdGFTaXplOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxv
b3ApOwogICAgIH0KQEAgLTE5MSwxMiArMTkxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdf
YXNzZXJ0KCFzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrSmF2YXNjcmlwdCwgbV9yZXNv
dXJjZURhdGFTaXplKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9y
ZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9yZXNvdXJjZXNMb2Fk
ZWQ7CiAgICAgc2l6ZV90IG1fcmVzb3VyY2VzVG9Mb2FkOwotICAgIEdPd25QdHI8Y2hhcj4gbV9y
ZXNvdXJjZURhdGE7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX3Jlc291cmNlRGF0YTsKICAgICBz
aXplX3QgbV9yZXNvdXJjZURhdGFTaXplOwogICAgIEdMaXN0KiBtX3N1YnJlc291cmNlczsKIH07
CkBAIC02NzEsMTIgKzY3MSwxMiBAQCBzdGF0aWMgdm9pZCBhZGRDYWNoZUhUVFBIZWFkZXJzVG9S
ZXNwb25zZShTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICAvLyBUaGUgYWN0dWFsIGRhdGUg
ZG9lc24ndCByZWFsbHkgbWF0dGVyLgogICAgIFNvdXBEYXRlKiBzb3VwRGF0ZSA9IHNvdXBfZGF0
ZV9uZXdfZnJvbV9ub3coMCk7Ci0gICAgR093blB0cjxjaGFyPiBkYXRlKHNvdXBfZGF0ZV90b19z
dHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBk
YXRlKHNvdXBfZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQKSk7CiAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJM
YXN0LU1vZGlmaWVkIiwgZGF0ZS5nZXQoKSk7CiAgICAgc291cF9kYXRlX2ZyZWUoc291cERhdGUp
OwogICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFk
ZXJzLCAiQ2FjaGUtY29udHJvbCIsICJwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAiKTsKICAgICBz
b3VwRGF0ZSA9IHNvdXBfZGF0ZV9uZXdfZnJvbV9ub3coMzYwMCk7Ci0gICAgZGF0ZS5zZXQoc291
cF9kYXRlX3RvX3N0cmluZyhzb3VwRGF0ZSwgU09VUF9EQVRFX0hUVFApKTsKKyAgICBkYXRlLnJl
c2V0KHNvdXBfZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQKSk7CiAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJF
eHBpcmVzIiwgZGF0ZS5nZXQoKSk7CiAgICAgc291cF9kYXRlX2ZyZWUoc291cERhdGUpOwogfQpA
QCAtNzM0LDcgKzczNCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBqYXZhc2NyaXB0UmVsYXRpdmVIVE1MID0gIjxodG1sPjxoZWFkPjxzY3Jp
cHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnIHNyYz0nL3JlZGlyZWN0ZWQtdG8tY2FuY2VsLmpzJz48
L3NjcmlwdD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOwogICAgICAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElD
LCBqYXZhc2NyaXB0UmVsYXRpdmVIVE1MLCBzdHJsZW4oamF2YXNjcmlwdFJlbGF0aXZlSFRNTCkp
OwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9ibGFuay5pY28iKSkgewotICAg
ICAgICBHT3duUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2Vi
S2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgcGF0aCwgTlVMTCkpOworICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRl
c3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgcGF0aCwgTlVMTCkpOwogICAgICAgICBjaGFyKiBjb250
ZW50czsKICAgICAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7CiAgICAgICAgIGdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZVBhdGguZ2V0KCksICZjb250ZW50cywgJmNvbnRlbnRzTGVuZ3RoLCAwKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NM
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NMLmNwcApp
bmRleCBlMzE4MGM1Li41YzYwZGExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogICAg
ICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgICAgICB3ZWJraXRfY2VydGlmaWNh
dGVfaW5mb19mcmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKICAgICAgICAgbV9jZXJ0aWZpY2F0ZUlu
Zm8gPSB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5KGluZm8pOwotICAgICAgICBtX2hvc3Qu
c2V0KGdfc3RyZHVwKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0LnJlc2V0KGdfc3RyZHVwKGhvc3Qp
KTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKICAgICB9CiAKQEAgLTE4
Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q2VydGlmaWNhdGVJ
bmZvKiBtX2NlcnRpZmljYXRlSW5mbzsKLSAgICBHT3duUHRyPGNoYXI+IG1faG9zdDsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IG1faG9zdDsKIH07CiAKIHN0YXRpYyB2b2lkIHRlc3RMb2FkRmFpbGVk
V2l0aFRMU0Vycm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjI1
LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QKICAgICAgICAgc291cF9tZXNzYWdl
X2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywg
aW5kZXhIVE1MLCBzdHJsZW4oaW5kZXhIVE1MKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJf
ZXF1YWwocGF0aCwgIi9pbnNlY3VyZS1jb250ZW50LyIpKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hh
cj4gcmVzcG9uc2VIVE1MKGdfc3RyZHVwX3ByaW50ZihpbnNlY3VyZUNvbnRlbnRIVE1MLCBrSHR0
cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qtc2NyaXB0IikuZGF0YSgpLCBrSHR0cFNlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtaW1hZ2UiKS5kYXRhKCkpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiByZXNwb25zZUhUTUwoZ19zdHJkdXBfcHJpbnRmKGluc2VjdXJlQ29udGVudEhU
TUwsIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1zY3JpcHQiKS5kYXRhKCksIGtI
dHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1pbWFnZSIpLmRhdGEoKSkpOwogICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9N
RU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdldCgp
KSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgaHR0cFNlcnZlckNhbGxi
YWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGMKICAg
ICB9CiAKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LXNjcmlwdCIpKSB7Ci0gICAg
ICAgIEdPd25QdHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJl
c291cmNlc0RpcigpLmRhdGEoKSwgImxpbmstdGl0bGUuanMiLCBOVUxMKSk7CisgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291
cmNlc0RpcigpLmRhdGEoKSwgImxpbmstdGl0bGUuanMiLCBOVUxMKSk7CiAgICAgICAgIGNoYXIq
IGNvbnRlbnRzOwogICAgICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgICAgIGdfZmlsZV9nZXRfY29u
dGVudHMocGF0aFRvRmlsZS5nZXQoKSwgJmNvbnRlbnRzLCAmbGVuZ3RoLCAwKTsKQEAgLTI1NCw3
ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBodHRwU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgYwogICAgICAgICBzb3VwX21lc3NhZ2Vf
c2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgIH0gZWxzZSBpZiAo
Z19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LWltYWdlIikpIHsKLSAgICAgICAgR093blB0cjxjaGFy
PiBwYXRoVG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNl
c0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBwYXRoVG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNv
dWNlc0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIE5VTEwpKTsKICAgICAgICAgY2hhciogY29u
dGVudHM7CiAgICAgICAgIGdzaXplIGxlbmd0aDsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50
cyhwYXRoVG9GaWxlLmdldCgpLCAmY29udGVudHMsICZsZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAppbmRl
eCBiYzMwZDZkLi5kMjRlZGM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApAQCAtMzc3LDIwICszNzcsMjAgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzUHJvbXB0Rm9ybWF0ID0g
ImFsZXJ0KHByb21wdCgnJXMnLCAnZGVmYXVsdCcpKTsiOwogCiAgICAgdGVzdC0+bV9zY3JpcHRE
aWFsb2dUeXBlID0gV0VCS0lUX1NDUklQVF9ESUFMT0dfQUxFUlQ7Ci0gICAgR093blB0cjxjaGFy
PiBhbGVydERpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQWxlcnRGb3JtYXQsIGtBbGVy
dERpYWxvZ01lc3NhZ2UpKTsKLSAgICBHT3duUHRyPGNoYXI+IGFsZXJ0SFRNTChnX3N0cmR1cF9w
cmludGYoaHRtbE9uTG9hZEZvcm1hdCwgYWxlcnREaWFsb2dNZXNzYWdlLmdldCgpKSk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBhbGVydERpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQWxl
cnRGb3JtYXQsIGtBbGVydERpYWxvZ01lc3NhZ2UpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFs
ZXJ0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgYWxlcnREaWFsb2dNZXNz
YWdlLmdldCgpKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoYWxlcnRIVE1MLmdldCgpLCAwKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiAKICAgICB0ZXN0LT5tX3Njcmlw
dERpYWxvZ1R5cGUgPSBXRUJLSVRfU0NSSVBUX0RJQUxPR19DT05GSVJNOwotICAgIEdPd25QdHI8
Y2hhcj4gY29uZmlybURpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQ29uZmlybUZvcm1h
dCwga0NvbmZpcm1EaWFsb2dNZXNzYWdlKSk7Ci0gICAgR093blB0cjxjaGFyPiBjb25maXJtSFRN
TChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgY29uZmlybURpYWxvZ01lc3NhZ2Uu
Z2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGNvbmZpcm1EaWFsb2dNZXNzYWdlKGdfc3Ry
ZHVwX3ByaW50Zihqc0NvbmZpcm1Gb3JtYXQsIGtDb25maXJtRGlhbG9nTWVzc2FnZSkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY29uZmlybUhUTUwoZ19zdHJkdXBfcHJpbnRmKGh0bWxPbkxvYWRG
b3JtYXQsIGNvbmZpcm1EaWFsb2dNZXNzYWdlLmdldCgpKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwo
Y29uZmlybUhUTUwuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNo
ZXMoKTsKIAogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nVHlwZSA9IFdFQktJVF9TQ1JJUFRfRElB
TE9HX1BST01QVDsKLSAgICBHT3duUHRyPGNoYXI+IHByb21wdERpYWxvZ01lc3NhZ2UoZ19zdHJk
dXBfcHJpbnRmKGpzUHJvbXB0Rm9ybWF0LCBrUHJvbXB0RGlhbG9nTWVzc2FnZSkpOwotICAgIEdP
d25QdHI8Y2hhcj4gcHJvbXB0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwg
cHJvbXB0RGlhbG9nTWVzc2FnZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJvbXB0
RGlhbG9nTWVzc2FnZShnX3N0cmR1cF9wcmludGYoanNQcm9tcHRGb3JtYXQsIGtQcm9tcHREaWFs
b2dNZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm9tcHRIVE1MKGdfc3RyZHVwX3By
aW50ZihodG1sT25Mb2FkRm9ybWF0LCBwcm9tcHREaWFsb2dNZXNzYWdlLmdldCgpKSk7CiAgICAg
dGVzdC0+bG9hZEh0bWwocHJvbXB0SFRNTC5nZXQoKSwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGls
TWFpbkxvb3BGaW5pc2hlcygpOwogfQpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5ID0geyAxMDAsIDE1MCwgNDAwLCA0MDAgfTsK
ICAgICB0ZXN0LT5zZXRFeHBlY3RlZFdpbmRvd1Byb3BlcnRpZXMoVUlDbGllbnRUZXN0OjpXaW5k
b3dQcm9wZXJ0aWVzKCZnZW9tZXRyeSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCBmYWxzZSkpOwogCi0gICAgR093blB0cjxjaGFyPiBodG1sU3RyaW5nKGdfc3RyZHVw
X3ByaW50ZigiPGh0bWw+PGJvZHkgb25Mb2FkPVwid2luZG93Lm9wZW4oJycsICcnLCAnJXMnKS5j
bG9zZSgpO1wiPjwvYm9keT48L2h0bWw+Iiwgd2luZG93UHJvcnBlcnRpZXNTdHJpbmcpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48Ym9k
eSBvbkxvYWQ9XCJ3aW5kb3cub3BlbignJywgJycsICclcycpLmNsb3NlKCk7XCI+PC9ib2R5Pjwv
aHRtbD4iLCB3aW5kb3dQcm9ycGVydGllc1N0cmluZykpOwogICAgIHRlc3QtPmxvYWRIdG1sKGh0
bWxTdHJpbmcuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMo
KTsKIApAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29z
ZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZmlsZUNob29zZXJIVE1MRm9ybWF0ID0gIjxodG1sPjxib2R5PjxpbnB1
dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6
MCcgdHlwZT0nZmlsZScgJXMvPjwvYm9keT48L2h0bWw+IjsKIAogICAgIC8vIE11bHRpcGxlIHNl
bGVjdGlvbnMgbm90IGFsbG93ZWQsIG5vIE1JTUUgZmlsdGVyaW5nLgotICAgIEdPd25QdHI8Y2hh
cj4gc2ltcGxlRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJpbnRmKGZpbGVDaG9vc2VySFRNTEZv
cm1hdCwgIiIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpbXBsZUZpbGVVcGxvYWRIVE1MKGdf
c3RyZHVwX3ByaW50ZihmaWxlQ2hvb3NlckhUTUxGb3JtYXQsICIiKSk7CiAgICAgdGVzdC0+bG9h
ZEh0bWwoc2ltcGxlRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogZmlsZUNob29z
ZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JGaWxlQ2hvb3NlclJl
cXVlc3QoNSwgNSk7CkBAIC02MDEsNyArNjAxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdG
aWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0
KTsKIAogICAgIC8vIE11bHRpcGxlIHNlbGVjdGlvbnMgYWxsb3dlZCwgbm8gTUlNRSBmaWx0ZXJp
bmcsIHNvbWUgcHJlLXNlbGVjdGVkIGZpbGVzLgotICAgIEdPd25QdHI8Y2hhcj4gbXVsdGlwbGVT
ZWxlY3Rpb25GaWxlVXBsb2FkSFRNTChnX3N0cmR1cF9wcmludGYoZmlsZUNob29zZXJIVE1MRm9y
bWF0LCAibXVsdGlwbGUiKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtdWx0aXBsZVNlbGVjdGlv
bkZpbGVVcGxvYWRIVE1MKGdfc3RyZHVwX3ByaW50ZihmaWxlQ2hvb3NlckhUTUxGb3JtYXQsICJt
dWx0aXBsZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChtdWx0aXBsZVNlbGVjdGlvbkZpbGVVcGxv
YWRIVE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAg
ICBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckZp
bGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hv
b3NlclJlcXVlc3QpOwogCiAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9ucyBub3QgYWxsb3dlZCwg
b25seSBhY2NlcHQgaW1hZ2VzLCBhdWRpbyBhbmQgdmlkZW8gZmlsZXMuLgotICAgIEdPd25QdHI8
Y2hhcj4gbWltZUZpbHRlcmVkRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJpbnRmKGZpbGVDaG9v
c2VySFRNTEZvcm1hdCwgImFjY2VwdD0nYXVkaW8vKix2aWRlby8qLGltYWdlLyonIikpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gbWltZUZpbHRlcmVkRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJp
bnRmKGZpbGVDaG9vc2VySFRNTEZvcm1hdCwgImFjY2VwdD0nYXVkaW8vKix2aWRlby8qLGltYWdl
LyonIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKG1pbWVGaWx0ZXJlZEZpbGVVcGxvYWRIVE1MLmdl
dCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBmaWxlQ2hv
b3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckZpbGVDaG9vc2Vy
UmVxdWVzdCg1LCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IGU5ZWYxOTIuLjlhMTBlMzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJFeHRlbnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmVjaG8oJ0Zv
bycpOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7
CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3Ry
aW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiB9CiAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgR093blB0cjxjaGFyPiB2YWx1ZVN0cmlu
ZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIkZvbyIpOwogCiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGlzb2xhdGVkV29ybGRTY3JpcHQgPQpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIC8vIENoZWNrIHRoYXQgJ3RvcC5mb28nIGRlZmluZWQgaW4gbWFpbiB3b3Js
ZCBpcyBub3QgdmlzaWJsZSBpbiBpc29sYXRlZCB3b3JsZC4KICAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIsIDApOwogICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVz
ZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3Vs
dCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ1bmRlZmlu
ZWQiKTsKIAogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcs
IHNjcmlwdERpYWxvZ0lEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCmluZGV4IDA0
N2NjMzEuLmE1ZDhkZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcApAQCAtMzMs
OCArMzMsOCBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx1
bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAvLyBOYW1lIG9mIHRoZSB0ZXN0IHNlcnZl
ciBhcHBsaWNhdGlvbiBjcmVhdGluZyB0aGUgd2ViVmlldyBvYmplY3QuCiBzdGF0aWMgY29uc3Qg
Y2hhcioga1Rlc3RTZXJ2ZXJBcHBOYW1lID0gIkFjY2Vzc2liaWxpdHlUZXN0U2VydmVyIjsKQEAg
LTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRUZXN0U2VydmVyTW9uaXRvcigpCiBzdGF0
aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIoKQogewogICAgIC8vIFByZXBhcmUgYXJndltdIGZvciBz
cGF3bmluZyB0aGUgc2VydmVyIHByb2Nlc3MuCi0gICAgR093blB0cjxjaGFyPiB0ZXN0U2VydmVy
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9FWEVDX1BBVEgsICJUZXN0V2ViS2l0QVBJIiwg
IldlYktpdDJHdGsiLCBrVGVzdFNlcnZlckFwcE5hbWUsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IHRlc3RTZXJ2ZXJQYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwg
IlRlc3RXZWJLaXRBUEkiLCAiV2ViS2l0Mkd0ayIsIGtUZXN0U2VydmVyQXBwTmFtZSwgbnVsbHB0
cikpOwogCiAgICAgY2hhciogdGVzdFNlcnZlckFyZ3ZbMl07CiAgICAgdGVzdFNlcnZlckFyZ3Zb
MF0gPSB0ZXN0U2VydmVyUGF0aC5nZXQoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja0F0c3BpQWNjZXNzaWJsZShBdHNwaUFjY2Vzc2libGUqIGFjY2Vzc2libGUsIGNvbnN0
IGNoYXIqIHRhcmdldAogewogICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoYWNjZXNz
aWJsZSkpOwogCi0gICAgR093blB0cjxjaGFyPiBuYW1lKGF0c3BpX2FjY2Vzc2libGVfZ2V0X25h
bWUoYWNjZXNzaWJsZSwgMCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShhdHNwaV9hY2Nl
c3NpYmxlX2dldF9uYW1lKGFjY2Vzc2libGUsIDApKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGFy
Z2V0TmFtZSwgPT0sIG5hbWUuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGludCh0YXJnZXRSb2xl
LCA9PSwgYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9sZShhY2Nlc3NpYmxlLCAwKSk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMWEwNmY3NC4uOTViNWMwMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lu
Y2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiBzdGF0aWMgY2hhciog
a1RlbXBEaXJlY3Rvcnk7CkBAIC0xMTgsNyArMTE5LDcgQEAgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2gKICAgICBjaGFyKiBjb250ZW50czsKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgaWYgKGdfc3Ry
X2VxdWFsKHBhdGgsICIvaWNvbi9mYXZpY29uLmljbyIpKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hh
cj4gcGF0aFRvRmF2aWNvbihnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVz
b3VjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gcGF0aFRvRmF2aWNvbihnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFU
ZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBOVUxMKSk7CiAgICAgICAgIGdf
ZmlsZV9nZXRfY29udGVudHMocGF0aFRvRmF2aWNvbi5nZXQoKSwgJmNvbnRlbnRzLCAmbGVuZ3Ro
LCAwKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBsZW5ndGgpOwogICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9ub2Zhdmljb24iKSkgewpAQCAtMTUzLDcgKzE1NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RDbGVhckRhdGFiYXNlKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3Qp
CiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSh0ZXN0LT5tX3dlYkNvbnRleHQpOwogICAgIHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2NsZWFyKGRhdGFiYXNlKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gaWNv
blVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0YWJhc2UsIGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IGljb25VUkkod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFi
YXNlLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgpKSk7CiAgICAgZ19hc3Nl
cnQoIWljb25VUkkpOwogfQogCkBAIC0yMDMsNyArMjA0LDcgQEAgc3RhdGljIHZvaWQgdGVzdEdl
dEZhdmljb25VUkkoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICBXZWJLaXRGYXZpY29u
RGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFi
YXNlKHRlc3QtPm1fd2ViQ29udGV4dCk7CiAKICAgICBDU3RyaW5nIGJhc2VVUkkgPSBrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvZm9vIik7Ci0gICAgR093blB0cjxjaGFyPiBpY29uVVJJKHdlYmtp
dF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwgYmFzZVVSSS5kYXRh
KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGljb25VUkkod2Via2l0X2Zhdmljb25fZGF0YWJh
c2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBiYXNlVVJJLmRhdGEoKSkpOwogICAgIEFTU0VS
VF9DTVBfQ1NUUklORyhpY29uVVJJLmdldCgpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L2ljb24vZmF2aWNvbi5pY28iKSk7CiB9CiAKQEAgLTI1Nyw3ICsyNTgsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VGaW5hbGl6ZWRDYWxsYmFjayhncG9pbnRlciwgR09iamVj
dCopCiAgICAgaWYgKCFnX2ZpbGVfdGVzdChrVGVtcERpcmVjdG9yeSwgR19GSUxFX1RFU1RfSVNf
RElSKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR093blB0cjxjaGFyPiBmaWxlbmFtZShnX2J1
aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiV2VicGFnZUljb25zLmRiIiwgTlVMTCkpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVj
dG9yeSwgIldlYnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKICAgICBnX3VubGluayhmaWxlbmFt
ZS5nZXQoKSk7CiAKICAgICBnX3JtZGlyKGtUZW1wRGlyZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNv
bnRleHQuY3BwCmluZGV4IGE0MTQ4NTMuLjMxOWVlYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtMjQsOCArMjQsOCBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CkBAIC04OSw3
ICs4OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQbHVnaW5zVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB9CiAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BM
VUdJTih0ZXN0UGx1Z2luLmdldCgpKSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHBsdWdpblBhdGgo
Z19idWlsZF9maWxlbmFtZShXRUJLSVRfVEVTVF9QTFVHSU5fRElSLCAibGliVGVzdE5ldHNjYXBl
UGx1Z2luLnNvIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGx1Z2luUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKFdFQktJVF9URVNUX1BMVUdJTl9ESVIsICJsaWJUZXN0TmV0c2NhcGVQbHVn
aW4uc28iLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0
X3BhdGgodGVzdFBsdWdpbi5nZXQoKSksID09LCBwbHVnaW5QYXRoLmdldCgpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfZGVzY3JpcHRpb24odGVzdFBsdWdpbi5nZXQo
KSksID09LCAiU2ltcGxlIE5ldHNjYXBlwq4gcGx1Zy1pbiB0aGF0IGhhbmRsZXMgdGVzdCBjb250
ZW50IGZvciBXZWJLaXQiKTsKICAgICBHTGlzdCogbWltZUluZm9MaXN0ID0gd2Via2l0X3BsdWdp
bl9nZXRfbWltZV9pbmZvX2xpc3QodGVzdFBsdWdpbi5nZXQoKSk7CkBAIC0xNTYsNyArMTU2LDcg
QEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX2hhbmRsZXJzTWFwLmNvbnRhaW5z
KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSkpOwogCiAgICAgICAgIGlmICghZ19zdHJjbXAwKHNj
aGVtZSwgImVycm9yIikpIHsKLSAgICAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcihnX2Vy
cm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNv
ZGUsIGVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9y
KGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiksIGVy
cm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9y
ZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Q29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZWNobyIsIGtFY2hvSFRNTEZvcm1hdCwg
LTEsICJ0ZXh0L2h0bWwiKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJlY2hvOmhlbGxvIHdvcmxkIik7
CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgR093blB0cjxjaGFyPiBl
Y2hvSFRNTChnX3N0cmR1cF9wcmludGYoa0VjaG9IVE1MRm9ybWF0LCB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF9wYXRoKHRlc3QtPm1fdXJpU2NoZW1lUmVxdWVzdC5nZXQoKSkpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IGVjaG9IVE1MKGdfc3RyZHVwX3ByaW50ZihrRWNob0hUTUxGb3Jt
YXQsIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgodGVzdC0+bV91cmlTY2hlbWVS
ZXF1ZXN0LmdldCgpKSkpOwogICAgIG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBtYWlu
UmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6
ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVu
KGVjaG9IVE1MLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBhNDliMzc2Li43MzQy
YjYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTkwLDE5ICs5MCwxOSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBn
X2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwot
ICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFs
dWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJX
ZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1
ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIpOwog
CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGV4
dENvbnRlbnQiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgdmFsdWVTdHJpbmcuc2V0KFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsK
KyAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5n
LmdldCgpLCA9PSwgIldlYktpdEdUSysgV2Vic2l0ZSIpOwogCiAgICAgamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IDI1OyIsICZl
cnJvci5vdXRQdHIoKSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRV
bnRpbEZpbmlzaGVkKCIvb3JnL3dlYmtpdC93ZWJraXQyZ3RrL3Rlc3RzL2xpbmstdGl0bGUuanMi
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAg
IGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgdmFsdWVTdHJpbmcuc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICB2YWx1
ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZh
c2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9
PSwgIldlYktpdEdUSysgVGl0bGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvd3JvbmcvcGF0
aC90by9yZXNvdXJjZS5qcyIsICZlcnJvci5vdXRQdHIoKSk7CkBAIC0zNzEsMTQgKzM3MSwxNCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNhdmVBbmRXYWl0Rm9yRmlsZSgpCiAgICAgewotICAgICAg
ICBtX3NhdmVEZXN0aW5hdGlvbkZpbGVQYXRoLnNldChnX2J1aWxkX2ZpbGVuYW1lKG1fdGVtcERp
cmVjdG9yeS5nZXQoKSwgInRlc3RXZWJWaWV3U2F2ZVJlc3VsdC5taHQiLCBOVUxMKSk7CisgICAg
ICAgIG1fc2F2ZURlc3RpbmF0aW9uRmlsZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShtX3Rl
bXBEaXJlY3RvcnkuZ2V0KCksICJ0ZXN0V2ViVmlld1NhdmVSZXN1bHQubWh0IiwgTlVMTCkpOwog
ICAgICAgICBtX2ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChtX3NhdmVEZXN0
aW5hdGlvbkZpbGVQYXRoLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19zYXZlX3Rv
X2ZpbGUobV93ZWJWaWV3LCBtX2ZpbGUuZ2V0KCksIFdFQktJVF9TQVZFX01PREVfTUhUTUwsIDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2ViVmlld1NhdmVkVG9GaWxl
Q2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwog
ICAgIH0KIAotICAgIEdPd25QdHI8Y2hhcj4gbV90ZW1wRGlyZWN0b3J5OwotICAgIEdPd25QdHI8
Y2hhcj4gbV9zYXZlRGVzdGluYXRpb25GaWxlUGF0aDsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1f
dGVtcERpcmVjdG9yeTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fc2F2ZURlc3RpbmF0aW9uRmls
ZVBhdGg7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CiAgICAgR1Jl
ZlB0cjxHRmlsZT4gbV9maWxlOwogfTsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVz
dC0+bG9hZEh0bWwoaW5kZXhIVE1MLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuYm9k
eS50ZXh0Q29udGVudDsiLCAwKTsKLSAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFs
dWVTdHJpbmcuZ2V0KCksID09LCAiVGVzdCBXZWIgVmlldyBNb2RlIik7CiAKICAgICAvLyBTb3Vy
Y2UgbW9kZS4KQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vZGUo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoaW5k
ZXhIVE1MLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3
aW5kb3cuZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudDsiLCAwKTsKLSAgICB2YWx1ZVN0cmluZy5z
ZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3Vs
dCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVT
dHJpbmcuZ2V0KCksID09LCBpbmRleEhUTUwpOwogfQogCkBAIC00NjIsNyArNDYyLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNp
YmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIEdPd25QdHI8Y2hhcj4g
dmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdf
YXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJoaWRkZW4iKTsKIAogICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJv
ci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5n
LnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRS
ZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAidmlz
aWJsZSIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZlcnJvci5vdXRQdHIoKSk7CkBA
IC00OTIsNyArNDkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNpYmls
aXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChX
ZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7
CisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmlu
Zy5nZXQoKSwgPT0sICJoaWRkZW4iKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmZXJy
b3Iub3V0UHRyKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCmluZGV4IDQwMTY1NWYu
Ljc0MDA4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTEwOCw3ICsxMDgs
NyBAQCBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3
VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aAogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHJl
c3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2Ny
aXB0UmVzdWx0KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIHJl
dHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRUZXN0U2NyaXB0
UmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggMWVhMmFjZC4uN2YwYTA2MSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJW
aWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2kKICAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQo
KTsKLSAgICBHT3duUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zv
cl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9h
cmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBh
IGR1bGwiKTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
CiAgICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBH
T3duUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRl
c3QtPm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0
a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5
IG1ha2UgSmFjayBhIGR1bGwgYm95LiIpOwogfQogCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZQogICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKIAogICAgIHRlc3Qt
PmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHT3duUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2Ns
aXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5t
X2NsaXBib2FyZCkpOwogCiAgICAgLy8gSW5pdGlhbGx5IG9ubHkgdGhlIHN1YnNwYW4gaXMgc2Vs
ZWN0ZWQuCiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAibWFr
ZSBKYWNrIGEgZHVsbCIpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19j
b21tYW5kKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxM
KTsKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7Ci0gICAgY2xpcGJvYXJkVGV4dC5zZXQoZ3Rr
X2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgY2xpcGJv
YXJkVGV4dC5yZXNldChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9h
cmQpKTsKIAogICAgIC8vIFRoZSBtYWluc3BhbiBzaG91bGQgYmUgc2VsZWN0ZWQgYWZ0ZXIgY2Fs
bGluZyBTRUxFQ1RfQUxMLgogICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgp
LCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LiIpOwpAQCAt
MTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxF
ZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHRl
c3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVD
VF9BTEwpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHT3duUHRyPGNoYXI+
IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJv
YXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRf
d2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwogCiAgICAgLy8gSW5pdGlhbGx5IG9u
bHkgdGhlIHN1YnNwYW4gaXMgc2VsZWN0ZWQuCiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2Fy
ZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogCiAgICAgd2Via2l0X3dlYl92
aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9TRUxFQ1RfQUxMKTsKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7Ci0gICAg
Y2xpcGJvYXJkVGV4dC5zZXQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xp
cGJvYXJkKSk7CisgICAgY2xpcGJvYXJkVGV4dC5yZXNldChndGtfY2xpcGJvYXJkX3dhaXRfZm9y
X3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKIAogICAgIC8vIFRoZSBtYWluc3BhbiBzaG91bGQg
YmUgc2VsZWN0ZWQgYWZ0ZXIgY2FsbGluZyBTRUxFQ1RfQUxMLgogICAgIGdfYXNzZXJ0X2NtcHN0
cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFj
ayBhIGR1bGwgYm95LiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGU4YTJiOWYuLjJlODAzNGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRl
bnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
V2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RhdGljIGNvbnN0IGNoYXIgaW50
cm9zcGVjdGlvblhNTFtdID0KQEAgLTEzMSw4ICsxMzIsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2Vu
ZFJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVz
dCwgVwogICAgIGdfYXNzZXJ0KHJlcXVlc3RVUkkpOwogCiAgICAgaWYgKGNvbnN0IGNoYXIqIHN1
ZmZpeCA9IGdfc3RycnN0cihyZXF1ZXN0VVJJLCAiL3JlbW92ZS10aGlzL2phdmFzY3JpcHQuanMi
KSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHByZWZpeChnX3N0cm5kdXAocmVxdWVzdFVSSSwg
c3RybGVuKHJlcXVlc3RVUkkpIC0gc3RybGVuKHN1ZmZpeCkpKTsKLSAgICAgICAgR093blB0cjxj
aGFyPiBuZXdVUkkoZ19zdHJkdXBfcHJpbnRmKCIlcy9qYXZhc2NyaXB0LmpzIiwgcHJlZml4Lmdl
dCgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJlZml4KGdfc3RybmR1cChyZXF1ZXN0
VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBzdHJsZW4oc3VmZml4KSkpOworICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IG5ld1VSSShnX3N0cmR1cF9wcmludGYoIiVzL2phdmFzY3JpcHQuanMiLCBw
cmVmaXguZ2V0KCkpKTsKICAgICAgICAgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkocmVxdWVz
dCwgbmV3VVJJLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgocmVxdWVz
dFVSSSwgIi9hZGQtZG8tbm90LXRyYWNrLWhlYWRlciIpKSB7CiAgICAgICAgIFNvdXBNZXNzYWdl
SGVhZGVycyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHJl
cXVlc3QpOwpAQCAtMTk5LDcgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIG1ldGhvZENhbGxDYWxsYmFj
ayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRlciwKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3
ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgR093blB0cjxj
aGFyPiB0aXRsZSh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF90aXRsZShkb2N1bWVudCkpOworICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxl
KGRvY3VtZW50KSk7CiAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFs
dWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwgdGl0bGUuZ2V0KCkpKTsKICAgICB9
IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlJ1bkphdmFTY3JpcHRJbklzb2xhdGVk
V29ybGQiKSkgewogICAgICAgICB1aW50NjRfdCBwYWdlSUQ7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAKaW5kZXggNmZkMDVmNS4uZWU2NWRj
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1VdGlsaXRpZXNH
dGsuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3Rr
LmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAK
ICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGls
IHsKQEAgLTY3LDE4ICs2NywxOCBAQCBzdGF0aWMgY2hhciogZ2V0RmlsZW5hbWVGcm9tRW52aXJv
bm1lbnRWYXJpYWJsZUFzVVRGOChjb25zdCBjaGFyKiB2YXJpYWJsZU5hbWUpCiAKIFdLU3RyaW5n
UmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgR093blB0cjxjaGFyPiBpbmpl
Y3RlZEJ1bmRsZVBhdGgoZ2V0RmlsZW5hbWVGcm9tRW52aXJvbm1lbnRWYXJpYWJsZUFzVVRGOCgi
VEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX1BBVEgiKSk7Ci0gICAgR093
blB0cjxjaGFyPiBpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0
ZWRCdW5kbGVQYXRoLmdldCgpLCAibGliVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLmxhIiwg
TlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5qZWN0ZWRCdW5kbGVQYXRoKGdldEZpbGVu
YW1lRnJvbUVudmlyb25tZW50VmFyaWFibGVBc1VURjgoIlRFU1RfV0VCS0lUX0FQSV9XRUJLSVQy
X0lOSkVDVEVEX0JVTkRMRV9QQVRIIikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5qZWN0ZWRC
dW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlUGF0aC5nZXQoKSwg
ImxpYlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5sYSIsIG51bGxwdHIpKTsKICAgICByZXR1
cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoaW5qZWN0ZWRCdW5kbGVGaWxlbmFtZS5n
ZXQoKSk7CiB9CiAKIFdLVVJMUmVmIGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJl
c291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNpb24pCiB7Ci0gICAgR093blB0cjxjaGFyPiB0ZXN0
UmVzb3VyY2VzUGF0aChnZXRGaWxlbmFtZUZyb21FbnZpcm9ubWVudFZhcmlhYmxlQXNVVEY4KCJU
RVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCIpKTsKLSAgICBHT3duUHRyPGNo
YXI+IHJlc291cmNlQmFzZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy4lcyIsIHJlc291cmNlLCBl
eHRlbnNpb24pKTsKLSAgICBHT3duUHRyPGNoYXI+IHJlc291cmNlRmlsZW5hbWUoZ19idWlsZF9m
aWxlbmFtZSh0ZXN0UmVzb3VyY2VzUGF0aC5nZXQoKSwgcmVzb3VyY2VCYXNlbmFtZS5nZXQoKSwg
TlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFJlc291cmNlc1BhdGgoZ2V0RmlsZW5h
bWVGcm9tRW52aXJvbm1lbnRWYXJpYWJsZUFzVVRGOCgiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJf
UkVTT1VSQ0VTX1BBVEgiKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZUJhc2VuYW1l
KGdfc3RyZHVwX3ByaW50ZigiJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKSk7CisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiByZXNvdXJjZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUodGVzdFJlc291
cmNlc1BhdGguZ2V0KCksIHJlc291cmNlQmFzZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKICAgICBH
UmVmUHRyPEdGaWxlPiByZXNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChyZXNvdXJjZUZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR093blB0cjxjaGFyPiByZXNvdXJjZVVS
SShnX2ZpbGVfZ2V0X3VyaShyZXNvdXJjZUZpbGUuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IHJlc291cmNlVVJJKGdfZmlsZV9nZXRfdXJpKHJlc291cmNlRmlsZS5nZXQoKSkpOwogICAg
IHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZXNvdXJjZVVSSS5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0
ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCmlu
ZGV4IGJhNmZhYjAuLjEyZWVlZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3Rr
L1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxh
dGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9HT3du
UHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIApAQCAtNTgsNyAr
NTgsNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQgd2lkdGgsIHVu
c2lnbmVkIGhlaWdodCkKIAogc3RhdGljIHZvaWQgZG9LZXlTdHJva2UoR3RrV2lkZ2V0KiB2aWV3
V2lkZ2V0LCB1bnNpZ25lZCBpbnQga2V5VmFsKQogewotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2
ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOworICAgIEdVbmlxdWVQdHI8R2RrRXZl
bnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOwogICAgIGV2ZW50LT5rZXku
a2V5dmFsID0ga2V5VmFsOwogICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CiAgICAgZXZlbnQtPmtleS5zdGF0ZSA9IDA7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXNzKCkKIAogc3RhdGljIHZvaWQgZG9Nb3VzZUJ1
dHRvbkV2ZW50KEd0a1dpZGdldCogdmlld1dpZGdldCwgR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwg
aW50IHgsIGludCB5LCB1bnNpZ25lZCBpbnQgYnV0dG9uKQogewotICAgIEdPd25QdHI8R2RrRXZl
bnQ+IGV2ZW50KGdka19ldmVudF9uZXcoZXZlbnRUeXBlKSk7CisgICAgR1VuaXF1ZVB0cjxHZGtF
dmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKICAgICBldmVudC0+YnV0dG9u
LnggPSB4OwogICAgIGV2ZW50LT5idXR0b24ueSA9IHk7CiAgICAgZXZlbnQtPmJ1dHRvbi5idXR0
b24gPSBidXR0b247CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNp
bXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQogCiB2b2lkIFBsYXRmb3Jt
V2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUodW5zaWduZWQgeCwgdW5zaWduZWQgeSkKIHsKLSAg
ICBHT3duUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZ
KSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9U
SU9OX05PVElGWSkpOwogICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7CiAgICAgZXZlbnQtPm1vdGlv
bi55ID0geTsKICAgICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdU
ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5n
VGVzdC5jcHAKaW5kZXggZGYzNDIwNC4uMjExZmE4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVuCiBzdGF0aWMgdm9pZCBsb2FkRmFpbGVk
Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVu
dCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRyYWNraW5nVGVz
dCogdGVzdCkKIHsKICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQgPSB0cnVlOwotICAgIHRlc3QtPm1f
ZXJyb3Iuc2V0KGdfZXJyb3JfY29weShlcnJvcikpOworICAgIHRlc3QtPm1fZXJyb3IucmVzZXQo
Z19lcnJvcl9jb3B5KGVycm9yKSk7CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewogICAgIGNh
c2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRVUkkoY29uc3QgY2hhciogdXJpKQogewogICAgIG1fbG9hZEV2ZW50cy5j
bGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIo
KTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6OmxvYWRVUkkodXJpKTsK
IH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9hZEh0bWwo
Y29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSkKIHsKICAgICBtX2xvYWRFdmVu
dHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBtX2Vycm9yLmNs
ZWFyKCk7CisgICAgbV9lcnJvci5yZXNldCgpOwogICAgIFdlYlZpZXdUZXN0Ojpsb2FkSHRtbCho
dG1sLCBiYXNlVVJJKTsKIH0KIApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgTG9hZFRyYWNraW5n
VGVzdDo6bG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpCiB7CiAgICAgbV9sb2Fk
RXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0gICAgbV9lcnJv
ci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVzdDo6bG9hZFBs
YWluVGV4dChwbGFpblRleHQpOwogfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBMb2FkVHJh
Y2tpbmdUZXN0Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0KQogewogICAg
IG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAg
IG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6
OmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwogfQogCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBMb2Fk
VHJhY2tpbmdUZXN0OjpyZWxvYWQoKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAg
IG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vy
cm9yLnJlc2V0KCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZChtX3dlYlZpZXcpOwogfQog
CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpnb0JhY2soKQogewog
ICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwot
ICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rl
c3Q6OmdvQmFjaygpOwogfQogCkBAIC0yMDIsNiArMjAyLDYgQEAgdm9pZCBMb2FkVHJhY2tpbmdU
ZXN0Ojpnb0ZvcndhcmQoKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0
aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJl
c2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6OmdvRm9yd2FyZCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaAppbmRleCBh
M2NmNzg0Li5kMGVkMWU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJL
aXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICBib29sIG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbjsKICAgICBib29sIG1fbG9h
ZEZhaWxlZDsKLSAgICBHT3duUHRyPEdFcnJvcj4gbV9lcnJvcjsKKyAgICBHVW5pcXVlUHRyPEdF
cnJvcj4gbV9lcnJvcjsKICAgICBWZWN0b3I8TG9hZEV2ZW50cz4gbV9sb2FkRXZlbnRzOwogICAg
IGZsb2F0IG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAgICAgQ1N0cmluZyBtX3JlZGlyZWN0VVJJOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmNwcAppbmRl
eCBkMjFmZmQ3Li44MDQzNTU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJL
aXQyR3RrL1Rlc3RNYWluLmNwcApAQCAtMjMsMTQgKzIzLDE0IEBACiAjaW5jbHVkZSA8Z2xpYi9n
c3RkaW8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQy
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dVbmlxdWVQdHIuaD4KIAogdm9pZCBiZWZvcmVBbGwoKTsKIHZvaWQgYWZ0ZXJBbGwoKTsK
IAogc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uodm9pZCkKIHsKLSAgICBHT3duUHRyPGNo
YXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfRVhFQ19QQVRILCAiVGVz
dFdlYktpdEFQSSIsICJXZWJLaXQyR3RrIiwgInJlc291cmNlcyIsICJ3ZWJraXQyZ3RrLXRlc3Rz
LXJlc291cmNlcy5ncmVzb3VyY2UiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNv
dXJjZXNQYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRB
UEkiLCAiV2ViS2l0Mkd0ayIsICJyZXNvdXJjZXMiLCAid2Via2l0Mmd0ay10ZXN0cy1yZXNvdXJj
ZXMuZ3Jlc291cmNlIiwgbnVsbHB0cikpOwogICAgIEdSZXNvdXJjZSogcmVzb3VyY2UgPSBnX3Jl
c291cmNlX2xvYWQocmVzb3VyY2VzUGF0aC5nZXQoKSwgMCk7CiAgICAgZ19hc3NlcnQocmVzb3Vy
Y2UpOwogCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZU5vbkVtcHR5RGlyZWN0
b3J5KGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgpCiAgICAgZ19hc3NlcnQoZGlyZWN0b3J5KTsK
ICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZTsKICAgICB3aGlsZSAoKGZpbGVOYW1lID0gZ19kaXJf
cmVhZF9uYW1lKGRpcmVjdG9yeSkpKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gZmlsZVBhdGgo
Z19idWlsZF9maWxlbmFtZShkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSwgTlVMTCkpOworICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZGlyZWN0b3J5UGF0
aCwgZmlsZU5hbWUsIG51bGxwdHIpKTsKICAgICAgICAgZ191bmxpbmsoZmlsZVBhdGguZ2V0KCkp
OwogICAgIH0KICAgICBnX2Rpcl9jbG9zZShkaXJlY3RvcnkpOwpAQCAtNjQsNyArNjQsNyBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgp
OwogCi0gICAgR093blB0cjxjaGFyPiBkaXNrQ2FjaGVUZW1wRGlyZWN0b3J5KGdfZGlyX21ha2Vf
dG1wKCJXZWJLaXQyVGVzdHNEaXNrQ2FjaGUtWFhYWFhYIiwgMCkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGlza0NhY2hlVGVtcERpcmVjdG9yeShnX2Rpcl9tYWtlX3RtcCgiV2ViS2l0MlRlc3Rz
RGlza0NhY2hlLVhYWFhYWCIsIDApKTsKICAgICBnX2Fzc2VydChkaXNrQ2FjaGVUZW1wRGlyZWN0
b3J5LmdldCgpKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0
b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBkaXNrQ2FjaGVUZW1wRGlyZWN0
b3J5LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0
TWFpbi5oCmluZGV4IDBlMTFkNDAuLmQ1Y2VhZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxn
bGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNkZWZpbmUgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShDbGFzc05hbWUpIFwKQEAgLTM3LDcgKzM4LDcgQEAKICAgICB9IFwKICAgICBzdGF0aWMg
dm9pZCBhZGQoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwgdm9p
ZCAoKnRlc3RGdW5jKShDbGFzc05hbWUqLCBjb25zdCB2b2lkKikpIFwKICAgICB7IFwKLSAgICAg
ICAgR093blB0cjxnY2hhcj4gdGVzdFBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvd2Via2l0Mi8lcy8l
cyIsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsgXAorICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0
ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0
TmFtZSkpOyBcCiAgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENsYXNzTmFtZSwg
MCwgQ2xhc3NOYW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRvd24pOyBcCiAg
ICAgfQogCkBAIC04MywxMyArODQsMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGljIENTdHJpbmcg
Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpCiAgICAgewotICAgICAgICBHT3duUHRyPGNoYXI+
IHJlc291cmNlc0RpcihnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAi
VGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJXZWJLaXRHdGsiLCAicmVzb3VyY2VzIiwgTlVMTCkp
OworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1aWxkX2ZpbGVuYW1l
KFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJXZWJL
aXRHdGsiLCAicmVzb3VyY2VzIiwgbnVsbHB0cikpOwogICAgICAgICByZXR1cm4gcmVzb3VyY2Vz
RGlyLmdldCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDU3RyaW5nIGdldFJlc291cmNlc0Rpcigp
CiAgICAgewotICAgICAgICBHT3duUHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1aWxkX2ZpbGVu
YW1lKFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJX
ZWJLaXQyR3RrIiwgInJlc291cmNlcyIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiByZXNvdXJjZXNEaXIoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfU1JDX0RJUiwgIlRvb2xzIiwg
IlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0Mkd0ayIsICJyZXNvdXJjZXMiLCBudWxs
cHRyKSk7CiAgICAgICAgIHJldHVybiByZXNvdXJjZXNEaXIuZ2V0KCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNw
cAppbmRleCA4YzJkM2Y2Li5kMGRmYWU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBXZWJLaXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVzKCkKQEAgLTMx
LDcgKzMyLDcgQEAgV2ViS2l0VGVzdEJ1czo6V2ViS2l0VGVzdEJ1cygpCiBib29sIFdlYktpdFRl
c3RCdXM6OnJ1bigpCiB7CiAgICAgLy8gRklYTUU6IFVzZSBHVGVzdERCdXMgd2hlbiB3ZSBidW1w
IGdsaWIgdG8gMi4zNC4KLSAgICBHT3duUHRyPGNoYXI+IGRidXNMYXVuY2goZ19maW5kX3Byb2dy
YW1faW5fcGF0aCgiZGJ1cy1sYXVuY2giKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzTGF1
bmNoKGdfZmluZF9wcm9ncmFtX2luX3BhdGgoImRidXMtbGF1bmNoIikpOwogICAgIGlmICghZGJ1
c0xhdW5jaCkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERCVVMgZGFlbW9u
OiBkYnVzLWxhdW5jaCBub3QgZm91bmQgaW4gcGF0aCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRU
ZXN0U2VydmVyLmNwcAppbmRleCAwYWE4NmJjLi44NzM2NzcxIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAg
LTIxLDE2ICsyMSwxNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKIAogI2luY2x1
ZGUgIlRlc3RNYWluLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogV2ViS2l0VGVzdFNlcnZlcjo6V2ViS2l0
VGVzdFNlcnZlcihTZXJ2ZXJUeXBlIHR5cGUpCiB7Ci0gICAgR093blB0cjxjaGFyPiBzc2xDZXJ0
aWZpY2F0ZUZpbGU7Ci0gICAgR093blB0cjxjaGFyPiBzc2xLZXlGaWxlOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc3NsQ2VydGlmaWNhdGVGaWxlOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3NsS2V5
RmlsZTsKICAgICBpZiAodHlwZSA9PSBTZXJ2ZXJIVFRQUykgewogICAgICAgICBDU3RyaW5nIHJl
c291cmNlc0RpciA9IFRlc3Q6OmdldFJlc291cmNlc0RpcigpOwotICAgICAgICBzc2xDZXJ0aWZp
Y2F0ZUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUocmVzb3VyY2VzRGlyLmRhdGEoKSwgInRlc3Qt
Y2VydC5wZW0iLCBOVUxMKSk7Ci0gICAgICAgIHNzbEtleUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5h
bWUocmVzb3VyY2VzRGlyLmRhdGEoKSwgInRlc3Qta2V5LnBlbSIsIE5VTEwpKTsKKyAgICAgICAg
c3NsQ2VydGlmaWNhdGVGaWxlLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocmVzb3VyY2VzRGlyLmRh
dGEoKSwgInRlc3QtY2VydC5wZW0iLCBOVUxMKSk7CisgICAgICAgIHNzbEtleUZpbGUucmVzZXQo
Z19idWlsZF9maWxlbmFtZShyZXNvdXJjZXNEaXIuZGF0YSgpLCAidGVzdC1rZXkucGVtIiwgTlVM
TCkpOwogICAgIH0KIAogICAgIEdSZWZQdHI8U291cEFkZHJlc3M+IGFkZHJlc3MgPSBhZG9wdEdS
ZWYoc291cF9hZGRyZXNzX25ldygiMTI3LjAuMC4xIiwgU09VUF9BRERSRVNTX0FOWV9QT1JUKSk7
CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNvdXBTZXJ2ZXJD
YWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0VVJJ
Rm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKQogewogICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJp
X25ld193aXRoX2Jhc2UobV9iYXNlVVJJLCBwYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiB1cmlT
dHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpKTsKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpKTsKICAgICBzb3Vw
X3VyaV9mcmVlKHVyaSk7CiAgICAgcmV0dXJuIHVyaVN0cmluZy5nZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVz
dFJ1bm5lci5jcHAKaW5kZXggNGEzY2Q5Ni4uOTlhOWRkYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5j
cHAKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzVGVzdFJ1bm5lci5oIgogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXI6OldlYlByb2Nlc3NUZXN0UnVubmVyKCkKICAgICA6IG1fbWFpbkxvb3AoZ19tYWluX2xvb3Bf
bmV3KDAsIFRSVUUpKQpAQCAtOTMsNyArOTMsNyBAQCBib29sIFdlYlByb2Nlc3NUZXN0UnVubmVy
OjpydW5UZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUsCiAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogCiAgICAgbV90ZXN0UmVzdWx0ID0gZmFs
c2U7Ci0gICAgR093blB0cjxjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIiVzLyVzIiwg
c3VpdGVOYW1lLCB0ZXN0TmFtZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFBhdGgoZ19z
dHJkdXBfcHJpbnRmKCIlcy8lcyIsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsKICAgICBnX2RidXNf
cHJveHlfY2FsbCgKICAgICAgICAgcHJveHkoKSwKICAgICAgICAgIlJ1blRlc3QiLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAppbmRl
eCA4ZDZkZjU1Li5lYjdiMGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIldl
YlZpZXdUZXN0LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1
ZVB0ckd0ay5oPgogCiBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQogICAgIDogbV93ZWJWaWV3
KFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9yZWZfc2luayh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkp
KSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxsYmFj
ayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbgogICAgIGdfYXNz
ZXJ0KGRhdGEpOwogCiAgICAgV2ViVmlld1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJWaWV3
VGVzdCo+KHVzZXJEYXRhKTsKLSAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5zZXQocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgIHRlc3QtPm1fcmVzb3VyY2VEYXRhLnJlc2V0KHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpKTsKICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YVNp
emUgPSBkYXRhU2l6ZTsKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwog
fQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNr
KEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2luCiBjb25zdCBjaGFy
KiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFT
aXplKQogewogICAgIG1fcmVzb3VyY2VEYXRhU2l6ZSA9IDA7Ci0gICAgbV9yZXNvdXJjZURhdGEu
Y2xlYXIoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIFdlYktpdFdlYlJlc291
cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZShtX3dlYlZp
ZXcpOwogICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKIApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQg
V2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgbW91c2VNb2Rp
ZmllcnMpCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcp
OwogICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKIAot
ICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJ
RlkpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19N
T1RJT05fTk9USUZZKSk7CiAgICAgZXZlbnQtPm1vdGlvbi54ID0geDsKICAgICBldmVudC0+bW90
aW9uLnkgPSB5OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6a2V5U3Ry
b2tlKHVuc2lnbmVkIGtleVZhbCwgdW5zaWduZWQga2V5TW9kaWZpZXJzKQogICAgIEd0a1dpZGdl
dCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKICAgICBnX2Fzc2VydChndGtf
d2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CiAKLSAgICBHT3duUHRyPEdka0V2ZW50
PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKKyAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKICAgICBldmVudC0+
a2V5LmtleXZhbCA9IGtleVZhbDsKIAogICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJSRU5U
X1RJTUU7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6ZG9Nb3VzZUJ1dHRv
bkV2ZW50KEdka0V2ZW50VHlwZSBldmVudFR5cGUsIGludCB4LCBpbnQgeSwgdW5zaWcKICAgICBH
dGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7CiAgICAgZ19hc3Nl
cnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwogCi0gICAgR093blB0cjxH
ZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKKyAgICBHVW5pcXVlUHRy
PEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSkpOwogICAgIGV2ZW50LT5i
dXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwogICAgIGdf
b2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaAppbmRleCBhZWViMDYyLi5mNDVlMTI1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdU
ZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nIG1fZXhwZWN0ZWRUaXRs
ZTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBtX2phdmFzY3JpcHRSZXN1bHQ7CiAgICAg
R0Vycm9yKiogbV9qYXZhc2NyaXB0RXJyb3I7Ci0gICAgR093blB0cjxjaGFyPiBtX3Jlc291cmNl
RGF0YTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIHNpemVfdCBt
X3Jlc291cmNlRGF0YVNpemU7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2U7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAppbmRleCA0ZTExMTUw
Li4zNTczYTJhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2VQcml2
YXRlLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5oPgogI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdU
UiB7CkBAIC0xMDQsNyArMTA0LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShpZCk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRCdWZmZXIoc3Rh
dGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGlkQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkp
KTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGlkLCBpZEJ1ZmZlci5nZXQoKSwgYnVmZmVy
U2l6ZSk7CiAKICAgICBBdGtPYmplY3QqIHJlc3VsdCA9IGNoaWxkRWxlbWVudEJ5SWQocm9vdCwg
aWRCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwCmluZGV4IDkxNTU1OTguLmI1MjEwNzIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZS5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTY3LDggKzY3LDggQEAgdm9pZCBw
cmludEFjY2Vzc2liaWxpdHlFdmVudChBdGtPYmplY3QqIGFjY2Vzc2libGUsIGNvbnN0IGNoYXIq
IHNpZ25hbE5hbWUsIGNvbnMKICAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5hbWUgPT0g
J1wwJykKICAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOwogCi0gICAgR093blB0cjxj
aGFyPiBzaWduYWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9wcmludGYoIiVz
ID0gJXMiLCBzaWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWduYWxOYW1lKSk7
Ci0gICAgR093blB0cjxjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJp
bnRmKCJBY2Nlc3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAv
IFJvbGU6ICVkXG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVj
dFJvbGUpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxW
YWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVl
KSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFjY2Vzc2li
aWxpdHlFdmVudFN0cmluZyhnX3N0cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVt
aXR0ZWQgXCIlc1wiIC8gTmFtZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRW
YWx1ZS5nZXQoKSwgb2JqZWN0TmFtZSwgb2JqZWN0Um9sZSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5vdXRwdXRUZXh0KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJpbGl0eUV2ZW50
U3RyaW5nLmdldCgpKSk7CiB9CiAKQEAgLTgzLDM3ICs4MywzNyBAQCBnYm9vbGVhbiBheE9iamVj
dEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50KiBzaWduYWxIaW50LCB1bnNpZ25l
ZCBudW1QYQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEdTaWduYWxRdWVyeSBzaWduYWxR
dWVyeTsKLSAgICBHT3duUHRyPGNoYXI+IHNpZ25hbE5hbWU7Ci0gICAgR093blB0cjxjaGFyPiBz
aWduYWxWYWx1ZTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpZ25hbE5hbWU7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiBzaWduYWxWYWx1ZTsKICAgICBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1l
ID0gbnVsbHB0cjsKIAogICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwg
JnNpZ25hbFF1ZXJ5KTsKIAogICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lLCAic3RhdGUtY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBf
cHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVz
WzFdKSkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOworICAgICAgICBzaWduYWxOYW1l
LnJlc2V0KGdfc3RyZHVwX3ByaW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3Ry
aW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJk
dXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwog
ICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFd
KSwgImNoZWNrZWQiKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQ2hlY2tlZFN0
YXRlQ2hhbmdlZCI7CiAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAoZ192YWx1ZV9nZXRfc3Ry
aW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5IikpCiAgICAgICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwogICAgIH0gZWxzZSBpZiAo
IWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50IikpIHsKLSAg
ICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwotICAgICAgICBz
aWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
JnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwKCJm
b2N1cy1ldmVudCIpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwogICAgICAgICBp
ZiAoZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKQogICAgICAgICAgICAgbm90
aWZpY2F0aW9uTmFtZSA9ICJBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIjsKICAgICB9IGVsc2Ug
aWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2Vk
IikpIHsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNoaWxkcmVuQ2hhbmdlZERldGFpbCA9IGdfcXVh
cmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCk7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0
KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxkcmVuQ2hhbmdlZERl
dGFpbCkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdf
dmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxOYW1lLnJl
c2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxkcmVuQ2hhbmdl
ZERldGFpbCkpOworICAgICAgICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVk
IiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7CiAgICAgICAgIG5vdGlmaWNh
dGlvbk5hbWUgPSAhZ19zdHJjbXAwKGNoaWxkcmVuQ2hhbmdlZERldGFpbCwgImFkZCIpID8gIkFY
Q2hpbGRyZW5BZGRlZCIgOiAiQVhDaGlsZHJlblJlbW92ZWQiOwogICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKSB7Ci0g
ICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVz
IiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOworICAgICAgICBzaWdu
YWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVzIiwgZ19xdWFy
a190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOwogICAgICAgICBpZiAoIWdfc3RyY21w
MChnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRhaWwpLCAiYWNjZXNzaWJsZS12YWx1
ZSIpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CiAg
ICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAibG9hZC1j
b21wbGV0ZSIpKQogICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYTG9hZENvbXBsZXRlIjsK
ICAgICBlbHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNp
Z25hbF9uYW1lKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXAoc2lnbmFsUXVl
cnkuc2lnbmFsX25hbWUpKTsKIAogICAgIGlmIChsb2dnaW5nQWNjZXNzaWJpbGl0eUV2ZW50cykK
ICAgICAgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNzaWJsZSwgc2lnbmFsTmFtZS5n
ZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcAppbmRleCA1ZTUwNzZjLi44OGFjYTVhIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTk3LDcgKzk3LDcgQEAgY29uc3QgY2hhciogbGFuZG1hcmtTdHJpbmdTZWFyY2gg
PSAiQVhMYW5kbWFya1NlYXJjaCI7CiBTdHJpbmcganNTdHJpbmdUb1dURlN0cmluZyhKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoYXR0cmlidXRlKTsKLSAgICBHT3duUHRyPGdjaGFyPiBidWZm
ZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNp
emUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhhdHRyaWJ1dGUsIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0
KCkpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFN0cmluZyBnZXRBdGtBdHRyaWJ1dGVTZXRBc1N0cmlu
ZyhBdGtPYmplY3QqIGFjY2Vzc2libGUsIEF0a0F0dHJpYnV0ZVR5cGUgdHlwZSkKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZXMg
PSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0
KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8QXRrQXR0
cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJp
YnV0ZURhdGEoZ19zdHJjb25jYXQoYXR0cmlidXRlLT5uYW1lLCAiOiIsIGF0dHJpYnV0ZS0+dmFs
dWUsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0
cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOwog
ICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAgICAgICAgaWYg
KGF0dHJpYnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKQEAg
LTIwMiw3ICsyMDIsNyBAQCBib29sIGNoZWNrRWxlbWVudFN0YXRlKFBsYXRmb3JtVUlFbGVtZW50
IGVsZW1lbnQsIEF0a1N0YXRlVHlwZSBzdGF0ZVR5cGUpCiAKIEpTU3RyaW5nUmVmIGluZGV4UmFu
Z2VJblRhYmxlKFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIGJvb2wgaXNSb3dSYW5nZSkKIHsK
LSAgICBHT3duUHRyPGdjaGFyPiByYW5nZVN0cmluZyhnX3N0cmR1cCgiezAsIDB9IikpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7CiAKICAg
ICBpZiAoIUFUS19JU19PQkpFQ1QoZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CkBAIC0yMzIsNyAr
MjMyLDcgQEAgSlNTdHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1VSUVsZW1lbnQg
ZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQogICAgICAgICAgICAgYmFzZSA9IGNvbHVtbjsKICAg
ICAgICAgICAgIGxlbmd0aCA9IGF0a190YWJsZV9nZXRfY29sdW1uX2V4dGVudF9hdChBVEtfVEFC
TEUoYXhUYWJsZSksIHJvdywgY29sdW1uKTsKICAgICAgICAgfQotICAgICAgICByYW5nZVN0cmlu
Zy5zZXQoZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIGJhc2UsIGxlbmd0aCkpOworICAgICAg
ICByYW5nZVN0cmluZy5yZXNldChnX3N0cmR1cF9wcmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVu
Z3RoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHJhbmdlU3RyaW5nLmdldCgpKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiAgICAgaWYgKCFhdGtfb2Jq
ZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpCiAgICAgICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxjaGFy
PiByb2xlU3RyaW5nV2l0aFByZWZpeChnX3N0cmR1cF9wcmludGYoIkFYUm9sZTogJXMiLCByb2xl
VG9TdHJpbmcoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKSkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcm9sZVN0cmluZ1dpdGhQcmVmaXgoZ19zdHJkdXBfcHJpbnRmKCJBWFJvbGU6ICVzIiwg
cm9sZVRvU3RyaW5nKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpKTsKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocm9sZVN0cmluZ1dpdGhQcmVmaXguZ2V0KCkp
OwogfQogCkBAIC04OTcsNyArODk3LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKICAgICBjb25zdCBnY2hhciogbmFtZSA9IGF0a19vYmpl
Y3RfZ2V0X25hbWUoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKTsKLSAgICBHT3duUHRyPGdj
aGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRsZTogJXMiLCBuYW1lID8gbmFtZSA6
ICIiKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhUaXRsZShnX3N0cmR1cF9wcmludGYoIkFY
VGl0bGU6ICVzIiwgbmFtZSA/IG5hbWUgOiAiIikpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKGF4VGl0bGUuZ2V0KCkpOwogfQpAQCAtOTExLDcgKzkxMSw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlw
dGlvbigpCiAgICAgaWYgKCFkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBheERlc2MoZ19z
dHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0aW9uOiAlcyIsIGRlc2NyaXB0aW9uKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gYXhEZXNjKGdfc3RyZHVwX3ByaW50ZigiQVhEZXNjcmlwdGlvbjogJXMi
LCBkZXNjcmlwdGlvbikpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGF4RGVzYy5nZXQoKSk7CiB9CkBAIC05MzgsOSArOTM4LDkgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKICAgICBpZiAo
IUFUS19JU19URVhUKG1fZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxnY2hhcj4gdGV4dChhdGtf
dGV4dF9nZXRfdGV4dChBVEtfVEVYVChtX2VsZW1lbnQuZ2V0KCkpLCAwLCAtMSkpOwotICAgIEdP
d25QdHI8Z2NoYXI+IHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJzKHJlcGxhY2VDaGFyYWN0ZXJz
Rm9yUmVzdWx0cyh0ZXh0LmdldCgpKSk7Ci0gICAgR093blB0cjxnY2hhcj4gYXhWYWx1ZShnX3N0
cmR1cF9wcmludGYoIkFYVmFsdWU6ICVzIiwgdGV4dFdpdGhSZXBsYWNlZENoYXJhY3RlcnMuZ2V0
KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKG1fZWxlbWVudC5nZXQoKSksIDAsIC0xKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4
dFdpdGhSZXBsYWNlZENoYXJhY3RlcnMocmVwbGFjZUNoYXJhY3RlcnNGb3JSZXN1bHRzKHRleHQu
Z2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBheFZhbHVlKGdfc3RyZHVwX3ByaW50Zigi
QVhWYWx1ZTogJXMiLCB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVycy5nZXQoKSkpOwogCiAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VmFsdWUuZ2V0KCkpOwogfQpA
QCAtOTU0LDcgKzk1NCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxjaGFyPiBh
eFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhMYW5ndWFnZTogJXMiLCBsb2NhbGUpKTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRmKCJBWExhbmd1YWdlOiAlcyIs
IGxvY2FsZSkpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhheFZh
bHVlLmdldCgpKTsKIH0KIApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiAgICAgaWYgKGluZGV4IDwgMCB8fCBp
bmRleCA+IGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfY291bnQoQVRLX1RFWFQobV9lbGVtZW50Lmdl
dCgpKSkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IHRleHQoYXRr
X3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50LmdldCgpKSwgMCwgaW5kZXgpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKG1fZWxl
bWVudC5nZXQoKSksIDAsIGluZGV4KSk7CiAgICAgaW50IGxpbmVObyA9IDA7CiAgICAgZm9yIChn
Y2hhciogb2Zmc2V0ID0gdGV4dC5nZXQoKTsgKm9mZnNldDsgKytvZmZzZXQpIHsKICAgICAgICAg
aWYgKCpvZmZzZXQgPT0gJ1xuJykKQEAgLTEzNjQsNyArMTM2NCw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgpCiAg
ICAgZ2ludCBzdGFydCwgZW5kOwogICAgIGdfZnJlZShhdGtfdGV4dF9nZXRfc2VsZWN0aW9uKEFU
S19URVhUKG1fZWxlbWVudC5nZXQoKSksIDAsICZzdGFydCwgJmVuZCkpOwogCi0gICAgR093blB0
cjxnY2hhcj4gc2VsZWN0aW9uKGdfc3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBzdGFydCwgZW5k
IC0gc3RhcnQpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzZWxlY3Rpb24oZ19zdHJkdXBfcHJp
bnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOwogICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzZWxlY3Rpb24uZ2V0KCkpOwogfQogCkBAIC0xNDQxLDcg
KzE0NDEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dXJsKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CiAKICAgICBBdGtIeXBlcmxpbmsqIGh5cGVybGluayA9IGF0a19oeXBlcmxpbmtfaW1wbF9n
ZXRfaHlwZXJsaW5rKEFUS19IWVBFUkxJTktfSU1QTChtX2VsZW1lbnQuZ2V0KCkpKTsKLSAgICBH
T3duUHRyPGNoYXI+IGh5cGVybGlua1VSSShhdGtfaHlwZXJsaW5rX2dldF91cmkoaHlwZXJsaW5r
LCAwKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoeXBlcmxpbmtVUkkoYXRrX2h5cGVybGlua19n
ZXRfdXJpKGh5cGVybGluaywgMCkpOwogCiAgICAgLy8gQnVpbGQgdGhlIHJlc3VsdCBzdHJpbmcs
IHN0cmlwcGluZyB0aGUgYWJzb2x1dGUgVVJMIHBhdGhzIGlmIHByZXNlbnQuCiAgICAgY2hhciog
bG9jYWxVUkkgPSBnX3N0cnN0cl9sZW4oaHlwZXJsaW5rVVJJLmdldCgpLCAtMSwgIkxheW91dFRl
c3RzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2d0ay9BY3RpdmF0ZUZvbnRzR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCmluZGV4IDFhYzVhM2EuLjdjOWRhYjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0Fj
dGl2YXRlRm9udHNHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj
b25maWcuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC02MSwx
OSArNjEsMTkgQEAgQ1N0cmluZyBnZXRPdXRwdXREaXIoKQogICAgICAgICByZXR1cm4gd2Via2l0
T3V0cHV0RGlyOwogCiAgICAgQ1N0cmluZyB0b3BMZXZlbFBhdGggPSBXVFI6OnRvcExldmVsUGF0
aCgpOwotICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0RGlyKGdfYnVpbGRfZmlsZW5hbWUodG9wTGV2
ZWxQYXRoLmRhdGEoKSwgIldlYktpdEJ1aWxkIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gb3V0cHV0RGlyKGdfYnVpbGRfZmlsZW5hbWUodG9wTGV2ZWxQYXRoLmRhdGEoKSwgIldlYktp
dEJ1aWxkIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBvdXRwdXREaXIuZ2V0KCk7CiB9CiAKIHN0
YXRpYyBDU3RyaW5nIGdldEZvbnRzUGF0aCgpCiB7CiAgICAgQ1N0cmluZyB3ZWJraXRPdXRwdXRE
aXIgPSBnZXRPdXRwdXREaXIoKTsKLSAgICBHT3duUHRyPGNoYXI+IGZvbnRzUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCksICJEZXBlbmRlbmNpZXMiLCAiUm9vdCIs
ICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGZv
bnRzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCksICJEZXBlbmRl
bmNpZXMiLCAiUm9vdCIsICJ3ZWJraXRndGstdGVzdC1mb250cyIsIG51bGxwdHIpKTsKICAgICBp
ZiAoZ19maWxlX3Rlc3QoZm9udHNQYXRoLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdf
RklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX0RJUikpKQogICAgICAgICByZXR1cm4g
Zm9udHNQYXRoLmdldCgpOwogCiAgICAgLy8gVHJ5IGFsdGVybmF0aXZlIGZvbnRzIHBhdGguCi0g
ICAgZm9udHNQYXRoLnNldChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCks
ICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKKyAgICBmb250c1BhdGgucmVzZXQoZ19i
dWlsZF9maWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAid2Via2l0Z3RrLXRlc3QtZm9u
dHMiLCBOVUxMKSk7CiAgICAgaWYgKGdfZmlsZV90ZXN0KGZvbnRzUGF0aC5nZXQoKSwgc3RhdGlj
X2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19ESVIp
KSkKICAgICAgICAgcmV0dXJuIGZvbnRzUGF0aC5nZXQoKTsKIApAQCAtOTcsNyArOTcsNyBAQCB2
b2lkIGluaXRpYWxpemVGb250Q29uZmlnU2V0dGluZygpCiAgICAgLy8gTG9hZCBvdXIgY29uZmln
dXJhdGlvbiBmaWxlLCB3aGljaCBzZXRzIHVwIHByb3BlciBhbGlhc2VzIGZvciBmYW1pbHkKICAg
ICAvLyBuYW1lcyBsaWtlIHNhbnMsIHNlcmlmIGFuZCBtb25vc3BhY2UuCiAgICAgRmNDb25maWcq
IGNvbmZpZyA9IEZjQ29uZmlnQ3JlYXRlKCk7Ci0gICAgR093blB0cjxnY2hhcj4gZm9udENvbmZp
Z0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJmb250cy5jb25mIiwg
TlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRDb25maWdGaWxlbmFtZShnX2J1aWxk
X2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiZm9udHMuY29uZiIsIG51bGxwdHIpKTsKICAgICBp
ZiAoIWdfZmlsZV90ZXN0KGZvbnRDb25maWdGaWxlbmFtZS5nZXQoKSwgR19GSUxFX1RFU1RfSVNf
UkVHVUxBUikpCiAgICAgICAgIGdfZXJyb3IoIkNhbm5vdCBmaW5kIGZvbnRzLmNvbmYgYXQgJXNc
biIsIGZvbnRDb25maWdGaWxlbmFtZS5nZXQoKSk7CiAgICAgaWYgKCFGY0NvbmZpZ1BhcnNlQW5k
TG9hZChjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGZvbnRDb25maWdGaWxlbmFt
ZS5nZXQoKSksIHRydWUpKQpAQCAtMTA3LDE3ICsxMDcsMTcgQEAgdm9pZCBpbml0aWFsaXplRm9u
dENvbmZpZ1NldHRpbmcoKQogICAgIGlmIChmb250c1BhdGguaXNOdWxsKCkpCiAgICAgICAgIGdf
ZXJyb3IoIkNvdWxkIG5vdCBsb2NhdGUgdGVzdCBmb250cyBhdCAlcy4gSXMgV0VCS0lUX1RPUF9M
RVZFTCBzZXQ/IiwgZm9udHNQYXRoLmRhdGEoKSk7CiAKLSAgICBHT3duUHRyPEdEaXI+IGZvbnRz
RGlyZWN0b3J5KGdfZGlyX29wZW4oZm9udHNQYXRoLmRhdGEoKSwgMCwgMCkpOworICAgIEdVbmlx
dWVQdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihmb250c1BhdGguZGF0YSgpLCAw
LCBudWxscHRyKSk7CiAgICAgd2hpbGUgKGNvbnN0IGNoYXIqIGRpcmVjdG9yeUVudHJ5ID0gZ19k
aXJfcmVhZF9uYW1lKGZvbnRzRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICBpZiAoIWdfc3Ry
X2hhc19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIudHRmIikgJiYgIWdfc3RyX2hhc19zdWZmaXgo
ZGlyZWN0b3J5RW50cnksICIub3RmIikpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
R093blB0cjxnY2hhcj4gZm9udFBhdGgoZ19idWlsZF9maWxlbmFtZShmb250c1BhdGguZGF0YSgp
LCBkaXJlY3RvcnlFbnRyeSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9yeUVudHJ5LCBu
dWxscHRyKSk7CiAgICAgICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRQYXRoLmdldCgpKSkpCiAgICAgICAg
ICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9hZCBmb250IGF0ICVzISIsIGZvbnRQYXRoLmdldCgp
KTsKICAgICB9CiAKICAgICAvLyBBaGVtIGlzIHVzZWQgYnkgbWFueSBsYXlvdXQgdGVzdHMuCi0g
ICAgR093blB0cjxnY2hhcj4gYWhlbUZvbnRGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRT
X0NPTkZfRElSLCAiQUhFTV9fX18uVFRGIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGFoZW1Gb250RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJUiwgIkFIRU1f
X19fLlRURiIsIG51bGxwdHIpKTsKICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoY29u
ZmlnLCByZWludGVycHJldF9jYXN0PEZjQ2hhcjgqPihhaGVtRm9udEZpbGVuYW1lLmdldCgpKSkp
CiAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwgYWhlbUZvbnRG
aWxlbmFtZS5nZXQoKSk7IAogCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCB2b2lkIGluaXRpYWxpemVG
b250Q29uZmlnU2V0dGluZygpCiAgICAgfTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBmb250
RmlsZW5hbWVzW2ldOyArK2kpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gZm9udEZpbGVuYW1l
KGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICIuLiIsICIuLiIsICJmb250cyIsIGZv
bnRGaWxlbmFtZXNbaV0sIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZm9udEZp
bGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICIuLiIsICIuLiIsICJmb250
cyIsIGZvbnRGaWxlbmFtZXNbaV0sIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFGY0NvbmZpZ0Fw
cEZvbnRBZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxGY0NoYXI4Kj4oZm9udEZpbGVu
YW1lLmdldCgpKSkpCiAgICAgICAgICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9hZCBmb250IGF0
ICVzISIsIGZvbnRGaWxlbmFtZS5nZXQoKSk7IAogICAgIH0KIAogICAgIC8vIEEgZm9udCB3aXRo
IG5vIHZhbGlkIEZvbnRjb25maWcgZW5jb2RpbmcgdG8gdGVzdCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0NTIKLSAgICBHT3duUHRyPGdjaGFyPiBmb250V2l0aE5v
VmFsaWRFbmNvZGluZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJG
b250V2l0aE5vVmFsaWRFbmNvZGluZy5mb24iLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRT
X0NPTkZfRElSLCAiRm9udFdpdGhOb1ZhbGlkRW5jb2RpbmcuZm9uIiwgbnVsbHB0cikpOwogICAg
IGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmND
aGFyOCo+KGZvbnRXaXRoTm9WYWxpZEVuY29kaW5nRmlsZW5hbWUuZ2V0KCkpKSkKICAgICAgICAg
Z19lcnJvcigiQ291bGQgbm90IGxvYWQgZm9udCBhdCAlcyEiLCBmb250V2l0aE5vVmFsaWRFbmNv
ZGluZ0ZpbGVuYW1lLmdldCgpKTsgCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlVXRpbGl0aWVzLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlVXRpbGl0
aWVzLmNwcAppbmRleCAxZjUzOWJhLi5mZWJkYWFkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZVV0aWxpdGllcy5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRC
dW5kbGVVdGlsaXRpZXMuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdUUiB7
CkBAIC00Myw5ICs0Myw5IEBAIENTdHJpbmcgdG9wTGV2ZWxQYXRoKCkKICAgICAvLyBJZiB0aGUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgd2Fzbid0IHByb3ZpZGVkIHRoZW4gYXNzdW1lIHdlIHdlcmUg
YnVpbHQgaW50bwogICAgIC8vIFdlYktpdEJ1aWxkL0RlYnVnIG9yIFdlYktpdEJ1aWxkL1JlbGVh
c2UuIE9idmlvdXNseSB0aGlzIHdpbGwgZmFpbCBpZiB0aGUgYnVpbGQKICAgICAvLyBkaXJlY3Rv
cnkgaXMgbm9uLXN0YW5kYXJkLCBidXQgd2UgY2FuJ3QgZG8gbXVjaCBtb3JlIGFib3V0IHRoaXMu
Ci0gICAgR093blB0cjxjaGFyPiBwYXJlbnRQYXRoKGdfcGF0aF9nZXRfZGlybmFtZShnZXRDdXJy
ZW50RXhlY3V0YWJsZVBhdGgoKS5kYXRhKCkpKTsKLSAgICBHT3duUHRyPGNoYXI+IGxheW91dFRl
c3RzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHBhcmVudFBhdGguZ2V0KCksICIuLiIsICIuLiIsICIu
LiIsIE5VTEwpKTsKLSAgICBHT3duUHRyPGNoYXI+IGFic29sdXRlVG9wTGV2ZWxQYXRoKHJlYWxw
YXRoKGxheW91dFRlc3RzUGF0aC5nZXQoKSwgMCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGFy
ZW50UGF0aChnX3BhdGhfZ2V0X2Rpcm5hbWUoZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCkuZGF0
YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBsYXlvdXRUZXN0c1BhdGgoZ19idWlsZF9maWxl
bmFtZShwYXJlbnRQYXRoLmdldCgpLCAiLi4iLCAiLi4iLCAiLi4iLCBudWxscHRyKSk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBhYnNvbHV0ZVRvcExldmVsUGF0aChyZWFscGF0aChsYXlvdXRUZXN0
c1BhdGguZ2V0KCksIDApKTsKICAgICByZXR1cm4gYWJzb2x1dGVUb3BMZXZlbFBhdGguZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Z3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggZGY0MDQzYS4uMjU0Mzc0OCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5l
ckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC02NiwxNSArNjYs
MTUgQEAgdm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNoZG9nVGltZXJJ
Zk5lZWRlZCgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6cGF0aFRvTG9j
YWxSZXNvdXJjZShKU1N0cmluZ1JlZiB1cmwpCiB7CiAgICAgc2l6ZV90IHVybFNpemUgPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodXJsKTsKLSAgICBHT3duUHRyPGdjaGFyPiB1
cmxTdHJpbmcoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyh1cmxTaXplKSkpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IHVybFN0cmluZyhzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKHVy
bFNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh1cmwsIHVybFN0cmluZy5nZXQo
KSwgdXJsU2l6ZSk7CiAKICAgICBpZiAoIWdfc3RyX2hhc19wcmVmaXgodXJsU3RyaW5nLmdldCgp
LCAiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvIikpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ1Jl
dGFpbih1cmwpOwogCiAgICAgY29uc3QgZ2NoYXIqIGxheW91dFRlc3RzU3VmZml4ID0gdXJsU3Ry
aW5nLmdldCgpICsgc3RybGVuKCJmaWxlOi8vL3RtcC8iKTsKLSAgICBHT3duUHRyPGdjaGFyPiB0
ZXN0UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdUUjo6dG9wTGV2ZWxQYXRoKCkuZGF0YSgpLCBsYXlv
dXRUZXN0c1N1ZmZpeCwgTlVMTCkpOwotICAgIEdPd25QdHI8Z2NoYXI+IHRlc3RVUkkoZ19maWxl
bmFtZV90b191cmkodGVzdFBhdGguZ2V0KCksIDAsIDApKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiB0ZXN0UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdUUjo6dG9wTGV2ZWxQYXRoKCkuZGF0YSgpLCBs
YXlvdXRUZXN0c1N1ZmZpeCwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RV
UkkoZ19maWxlbmFtZV90b191cmkodGVzdFBhdGguZ2V0KCksIDAsIDApKTsKICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGVzdFVSSS5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBl
MjQwNTQ1Li5kOGZiOWY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9U
ZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVGVz
dENvbnRyb2xsZXJHdGsuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC04OCwxMyArODgsMTMg
QEAgc3RhdGljIGNoYXIqIGdldEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoY29uc3Qg
Y2hhciogdmFyaWFibGVOYW1lKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplSW5q
ZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHV0ZjhCdW5kbGVQYXRoKGdl
dEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoIlRFU1RfUlVOTkVSX0lOSkVDVEVEX0JV
TkRMRV9GSUxFTkFNRSIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHV0ZjhCdW5kbGVQYXRoKGdl
dEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoIlRFU1RfUlVOTkVSX0lOSkVDVEVEX0JV
TkRMRV9GSUxFTkFNRSIpKTsKICAgICBtX2luamVjdGVkQnVuZGxlUGF0aC5hZG9wdChXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1dGY4QnVuZGxlUGF0aC5nZXQoKSkpOwogfQogCiB2b2lk
IFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSgpCiB7Ci0gICAg
R093blB0cjxjaGFyPiB0ZXN0UGx1Z2luUGF0aChnZXRFbnZpcm9ubWVudFZhcmlhYmxlQXNVVEY4
U3RyaW5nKCJURVNUX1JVTk5FUl9URVNUX1BMVUdJTl9QQVRIIikpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gdGVzdFBsdWdpblBhdGgoZ2V0RW52aXJvbm1lbnRWYXJpYWJsZUFzVVRGOFN0cmluZygi
VEVTVF9SVU5ORVJfVEVTVF9QTFVHSU5fUEFUSCIpKTsKICAgICBtX3Rlc3RQbHVnaW5EaXJlY3Rv
cnkuYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGVzdFBsdWdpblBhdGguZ2V0
KCkpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221874</attachid>
            <date>2014-01-22 10:47:31 -0800</date>
            <delta_ts>2014-01-22 11:01:17 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-g-unique-ptr2.diff</filename>
            <type>text/plain</type>
            <size>279118</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMmE3YjFmLi5mNWQ4ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0
IEBACisyMDE0LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR0xJQl0gVXNlIEdVbmlxdWVQdHIgaW5zdGVhZCBvZiBHT3duUHRyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlUHRy
IGlzIGEgdGVtcGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRyIHdpdGggYSBjdXN0b20KKyAg
ICAgICAgZGVsZXRlciB0aGF0IHJlcGxhY2VzIEdPd25QdHIuIEdPd25QdHIgaXMgc3RpbGwgdXNl
ZCBmb3IgdGhlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBvdXRwdXQgcG9pbnRlciBpcyBuZWVk
ZWQsIGJ1dCBpdCB3aWxsIGFsc28gYmUgcmVwbGFjZWQgc29vbi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAo
Z2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChhY2Nlc3Np
YmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKHRleHRFeHRlbnRzKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcik6CisgICAgICAgIChudW1iZXJPZlJlcGxhY2VkRWxl
bWVudHNCZWZvcmVPZmZzZXQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKHdlYktpdE1lZGlhU3JjQWRkU3JjKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50Ojp3YXNCbG9ja2VkKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5n
Q2xpZW50OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRoZW1l
SWNvbkZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9G
aWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVuYW1lRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNoYXJlZFJlc291cmNlc1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
R093blB0ckd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dPd25QdHJH
dGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0Ns
aWNrQ291bnRlcjo6c2hvdWxkUHJvY2Vzc0J1dHRvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3RrSW5w
dXRNZXRob2RGaWx0ZXI6OnNlbmRDb21wb3NpdGlvbkFuZFByZWVkaXRXaXRoRmFrZUtleUV2ZW50
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHdGtQb3B1cE1lbnU6OnBvcFVwKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a1BvcHVw
TWVudTo6dHlwZUFoZWFkRmluZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlt
YWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZEhlbHBlcjo6Z2V0Q2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51
R3RrOjpjcmVhdGVHdGtBY3Rpb25Gb3JNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cE1lbnVHdGs6OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNh
dGlvbldpZGdldC5jcHA6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNhdGlvbldpZGdldEluaXRp
YWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVh
ZHlDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaDogQWRkZWQKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZmFpbGluZ1VSSSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZW5z
dXJlUmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpjbGVhbnVwU291cFJlcXVlc3RPcGVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBN
ZXNzYWdlTWVtYmVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0
ZVNvdXBNZXNzYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXNwb25zZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJ
VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cFVSSVRvS1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y2xlYXJQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpt
YXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aGFzUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdl
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKwogMjAxNC0wMS0yMiAgUm9i
ZXJ0IFNpcGthICA8c2lwa2FAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtjdXJsXSBJbXBy
b3ZlIGRldGVjdGluZyBhbmQgaGFuZGxpbmcgb2YgU1NMIGNsaWVudCBjZXJ0aWZpY2F0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOWUyYzk4ZS4uYzhlNzdmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MjQ0LDEwICs2MjQ0LDkgQEAgcGxhdGZvcm1ndGtf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJY29uLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dPd25QdHJHdGsuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJH
dGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1VuaXF1ZVB0ci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5k
ZXggMDE0OGIzNi4uZGZlMzhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE5Niw3
ICsxOTYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBs
YXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0V2ZW50TG9vcEd0ay5j
cHAKICAgICBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ndGsv
R093blB0ckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKICAgICBwbGF0
Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5k
RHJvcEhlbHBlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggNjE1NTJmZS4uMjE5MWY3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5j
cHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCi0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OGY2YTI0Li44NDIyZDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0
QWNjZXNzaWJsZVV0aWwuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5o
IgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODcsMTggKzg3
LDE4IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2li
aWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0g
JnJlbmRlcmVyLT5zdHlsZSgpOwogCiAgICAgQXRrQXR0cmlidXRlU2V0KiByZXN1bHQgPSAwOwot
ICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcihnX3N0cmR1cF9wcmludGYoIiVpIiwgc3R5bGUtPmZv
bnRTaXplKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRm
KCIlaSIsIHN0eWxlLT5mb250U2l6ZSgpKSk7CiAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1
dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9T
SVpFKSwgYnVmZmVyLmdldCgpKTsKIAogICAgIENvbG9yIGJnQ29sb3IgPSBzdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKICAgICBpZiAoYmdD
b2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVp
LCVpLCVpIiwgYmdDb2xvci5yZWQoKSwgYmdDb2xvci5ncmVlbigpLCBiZ0NvbG9yLmJsdWUoKSkp
OworICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIsIGJnQ29s
b3IucmVkKCksIGJnQ29sb3IuZ3JlZW4oKSwgYmdDb2xvci5ibHVlKCkpKTsKICAgICAgICAgcmVz
dWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0
X25hbWUoQVRLX1RFWFRfQVRUUl9CR19DT0xPUiksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCiAg
ICAgQ29sb3IgZmdDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcik7CiAgICAgaWYgKGZnQ29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGJ1ZmZlci5z
ZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIsIGZnQ29sb3IucmVkKCksIGZnQ29sb3IuZ3Jl
ZW4oKSwgZmdDb2xvci5ibHVlKCkpKTsKKyAgICAgICAgYnVmZmVyLnJlc2V0KGdfc3RyZHVwX3By
aW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJlZCgpLCBmZ0NvbG9yLmdyZWVuKCksIGZnQ29sb3Iu
Ymx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfRkdfQ09MT1IpLCBidWZm
ZXIuZ2V0KCkpOwogICAgIH0KIApAQCAtMTIwLDEzICsxMjAsMTMgQEAgc3RhdGljIEF0a0F0dHJp
YnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nl
c3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAoaW5jbHVkZVJpc2UpIHsKLSAgICAgICAgYnVmZmVy
LnNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgYmFzZWxpbmVQb3NpdGlvbikpOworICAgICAgICBi
dWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIGJhc2VsaW5lUG9zaXRpb24pKTsKICAg
ICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRy
aWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9SSVNFKSwgYnVmZmVyLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAoIXN0eWxlLT50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkgewogICAgICAg
ICBpbnQgaW5kZW50YXRpb24gPSB2YWx1ZUZvckxlbmd0aChzdHlsZS0+dGV4dEluZGVudCgpLCBv
YmplY3QtPnNpemUoKS53aWR0aCgpLCAmcmVuZGVyZXItPnZpZXcoKSk7Ci0gICAgICAgIGJ1ZmZl
ci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIGluZGVudGF0aW9uKSk7CisgICAgICAgIGJ1ZmZl
ci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgaW5kZW50YXRpb24pKTsKICAgICAgICAgcmVz
dWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0
X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIApAQCAt
MTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIGdldEF0dHJpYnV0ZVNldEZv
ckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0CiAgICAgICAgIGZvbnRXZWln
aHQgPSA5MDA7CiAgICAgfQogICAgIGlmIChmb250V2VpZ2h0ID4gMCkgewotICAgICAgICBidWZm
ZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBmb250V2VpZ2h0KSk7CisgICAgICAgIGJ1ZmZl
ci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgZm9udFdlaWdodCkpOwogICAgICAgICByZXN1
bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRf
bmFtZShBVEtfVEVYVF9BVFRSX1dFSUdIVCksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCkBAIC0y
NjEsNyArMjYxLDcgQEAgc3RhdGljIGd1aW50IGFjY2Vzc2liaWxpdHlPYmplY3RMZW5ndGgoY29u
c3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQogICAgIC8vIHdlbGwga25vd24gQVBJIHRv
IGFsd2F5cyBnZXQgdGhlIHRleHQgaW4gYSBjb25zaXN0ZW50IHdheQogICAgIEF0a09iamVjdCog
YXRrT2JqID0gQVRLX09CSkVDVChvYmplY3QtPndyYXBwZXIoKSk7CiAgICAgaWYgKEFUS19JU19U
RVhUKGF0a09iaikpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdGV4dCh3ZWJraXRBY2Nlc3Np
YmxlVGV4dEdldFRleHQoQVRLX1RFWFQoYXRrT2JqKSwgMCwgLTEpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGV4dCh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQoQVRLX1RFWFQoYXRr
T2JqKSwgMCwgLTEpKTsKICAgICAgICAgcmV0dXJuIGdfdXRmOF9zdHJsZW4odGV4dC5nZXQoKSwg
LTEpOwogICAgIH0KIApAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQq
IGdldFJ1bkF0dHJpYnV0ZXNGcm9tQWNjZXNpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxp
CiAKIHN0YXRpYyBJbnRSZWN0IHRleHRFeHRlbnRzKEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRP
ZmZzZXQsIGdpbnQgbGVuZ3RoLCBBdGtDb29yZFR5cGUgY29vcmRzKQogewotICAgIEdPd25QdHI8
Y2hhcj4gdGV4dENvbnRlbnQod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIHN0YXJ0
T2Zmc2V0LCAtMSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGV4dENvbnRlbnQod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIHN0YXJ0T2Zmc2V0LCAtMSkpOwogICAgIGdpbnQgdGV4
dExlbmd0aCA9IGdfdXRmOF9zdHJsZW4odGV4dENvbnRlbnQuZ2V0KCksIC0xKTsKIAogICAgIC8v
IFRoZSBmaXJzdCBjYXNlIChlbmRPZmZzZXQgb2YgLTEpIHNob3VsZCB3b3JrLCBidXQgc2VlbXMg
YnJva2VuIGZvciBhbGwgR3RrKyBhcHBzLgpAQCAtNTI5LDcgKzUyOSw3IEBAIHN0YXRpYyBjaGFy
KiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldENoYXIoQXRrVGV4dCogdGV4dCwgaW50IG9mZnNldCwg
R2V0VGV4dFJlbGF0CiAgICAgZWxzZSBpZiAodGV4dFBvc2l0aW9uID09IEdldFRleHRQb3NpdGlv
bkFmdGVyKQogICAgICAgICBhY3R1YWxPZmZzZXQrKzsKIAotICAgIEdPd25QdHI8Y2hhcj4gdGV4
dERhdGEod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIDAsIC0xKSk7CisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB0ZXh0RGF0YSh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwg
MCwgLTEpKTsKICAgICBpbnQgdGV4dExlbmd0aCA9IGdfdXRmOF9zdHJsZW4odGV4dERhdGEuZ2V0
KCksIC0xKTsKIAogICAgICpzdGFydE9mZnNldCA9IHN0ZDo6bWF4KDAsIGFjdHVhbE9mZnNldCk7
CkBAIC02MzcsNyArNjM3LDcgQEAgc3RhdGljIFZpc2libGVTZWxlY3Rpb24gd29yZEF0UG9zaXRp
b25Gb3JBdGtCb3VuZGFyeShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KgogCiBzdGF0aWMgaW50
IG51bWJlck9mUmVwbGFjZWRFbGVtZW50c0JlZm9yZU9mZnNldChBdGtUZXh0KiB0ZXh0LCB1bnNp
Z25lZCBvZmZzZXQpCiB7Ci0gICAgR093blB0cjxjaGFyPiB0ZXh0Rm9yT2JqZWN0KHdlYmtpdEFj
Y2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAwLCBvZmZzZXQpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IHRleHRGb3JPYmplY3Qod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIDAsIG9m
ZnNldCkpOwogICAgIFN0cmluZyB0ZXh0QmVmb3JlT2Zmc2V0ID0gU3RyaW5nOjpmcm9tVVRGOCh0
ZXh0Rm9yT2JqZWN0LmdldCgpKTsKIAogICAgIGludCBjb3VudCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggNmQ1Y2Y3NC4uMDRhMDZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApA
QCAtNzEsMTAgKzcxLDYgQEAKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KIAotI2lmIFBMQVRGT1JNKEdUSykK
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+Ci0jZW5kaWYKLQogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IDEwNmM4MzAuLjhjNTk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBACiAjZW5kaWYKIAogI2lmIFVT
RShTT1VQKQotI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0clNv
dXAuaCIKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjExLDcgKzIxMSw3IEBAIHBy
aXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoU291cEJ1
ZmZlciopOwotICAgIEdPd25QdHI8U291cEJ1ZmZlcj4gbV9zb3VwQnVmZmVyOworICAgIEdVbmlx
dWVQdHI8U291cEJ1ZmZlcj4gbV9zb3VwQnVmZmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9T
b3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBiMmJiODgyLi5mZjY3
MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTI0LDExICsyNCwxMSBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJB
dWRpb0lPQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3Bi
dXRpbHMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0
V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgLy8gRm9yIGVhY2gg
Y2hhbm5lbCBvZiB0aGUgYnVzIGNyZWF0ZSBhIG5ldyB1cHN0cmVhbSBicmFuY2ggZm9yIGludGVy
bGVhdmUsIGxpa2U6CiAgICAgLy8gcXVldWUgISBjYXBzZmlsdGVyICEgYXVkaW9jb252ZXJ0LiB3
aGljaCBpcyBwbHVnZ2VkIHRvIGEgbmV3IGludGVybGVhdmUgcmVxdWVzdCBzaW5rcGFkLgogICAg
IGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgcHJpdi0+YnVz
LT5udW1iZXJPZkNoYW5uZWxzKCk7IGNoYW5uZWxJbmRleCsrKSB7Ci0gICAgICAgIEdPd25QdHI8
Z2NoYXI+IHF1ZXVlTmFtZShnX3N0cmR1cF9wcmludGYoIndlYmF1ZGlvUXVldWUldSIsIGNoYW5u
ZWxJbmRleCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBxdWV1ZU5hbWUoZ19zdHJkdXBf
cHJpbnRmKCJ3ZWJhdWRpb1F1ZXVlJXUiLCBjaGFubmVsSW5kZXgpKTsKICAgICAgICAgR3N0RWxl
bWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgcXVldWVOYW1l
LmdldCgpKTsKICAgICAgICAgR3N0RWxlbWVudCogY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2Zh
Y3RvcnlfbWFrZSgiY2Fwc2ZpbHRlciIsIDApOwogICAgICAgICBHc3RFbGVtZW50KiBhdWRpb2Nv
bnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvY29udmVydCIsIDApOwpAQCAt
MzU2LDggKzM1Niw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjTG9vcChXZWJLaXRX
ZWJBdWRpb1NyYyogc3JjKQogICAgICAgICBpZiAocHJpdi0+bmV3U3RyZWFtRXZlbnRQZW5kaW5n
KSB7CiAgICAgICAgICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHF1ZXVlID0gYWRvcHRHUmVmKGdz
dF9wYWRfZ2V0X3BhcmVudF9lbGVtZW50KHBhZCkpOwogICAgICAgICAgICAgR1JlZlB0cjxHc3RQ
YWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUu
Z2V0KCksICJzaW5rIikpOwotICAgICAgICAgICAgR093blB0cjxnY2hhcj4gcXVldWVOYW1lKGdz
dF9lbGVtZW50X2dldF9uYW1lKHF1ZXVlLmdldCgpKSk7Ci0gICAgICAgICAgICBHT3duUHRyPGdj
aGFyPiBzdHJlYW1JZChnX3N0cmR1cF9wcmludGYoIndlYmF1ZGlvLyVzIiwgcXVldWVOYW1lLmdl
dCgpKSk7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBxdWV1ZU5hbWUoZ3N0X2VsZW1l
bnRfZ2V0X25hbWUocXVldWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHN0cmVhbUlkKGdfc3RyZHVwX3ByaW50Zigid2ViYXVkaW8vJXMiLCBxdWV1ZU5hbWUuZ2V0KCkp
KTsKICAgICAgICAgICAgIEdzdEV2ZW50KiBzdHJlYW1TdGFydEV2ZW50ID0gZ3N0X2V2ZW50X25l
d19zdHJlYW1fc3RhcnQoc3RyZWFtSWQuZ2V0KCkpOwogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEs
IDIsIDApCiAgICAgICAgICAgICBnc3RfZXZlbnRfc2V0X2dyb3VwX2lkKHN0cmVhbVN0YXJ0RXZl
bnQsIGdyb3VwSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3RrL0F1ZGlvQnVzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9B
dWRpb0J1c0d0ay5jcHAKaW5kZXggOTZiMjc1My4uMmFkZWU5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCkBAIC0yNCwyMyArMjQs
MjEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKLQotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0KICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKLSAgICBH
T3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzLndhdiIsIG5hbWUpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzLndhdiIs
IG5hbWUpKTsKICAgICBjb25zdCBjaGFyKiBlbnZpcm9ubWVudFBhdGggPSBnZXRlbnYoIkFVRElP
X1JFU09VUkNFU19QQVRIIik7Ci0gICAgR093blB0cjxnY2hhcj4gYWJzb2x1dGVGaWxlbmFtZTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBhYnNvbHV0ZUZpbGVuYW1lOwogICAgIGlmIChlbnZpcm9u
bWVudFBhdGgpCi0gICAgICAgIGFic29sdXRlRmlsZW5hbWUuc2V0KGdfYnVpbGRfZmlsZW5hbWUo
ZW52aXJvbm1lbnRQYXRoLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgICAgICBhYnNvbHV0
ZUZpbGVuYW1lLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoZW52aXJvbm1lbnRQYXRoLCBmaWxlbmFt
ZS5nZXQoKSwgTlVMTCkpOwogICAgIGVsc2UKLSAgICAgICAgYWJzb2x1dGVGaWxlbmFtZS5zZXQo
Z19idWlsZF9maWxlbmFtZShzaGFyZWRSZXNvdXJjZXNQYXRoKCkuZGF0YSgpLCAicmVzb3VyY2Vz
IiwgImF1ZGlvIiwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICAgICAgYWJzb2x1dGVGaWxl
bmFtZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHNoYXJlZFJlc291cmNlc1BhdGgoKS5kYXRhKCks
ICJyZXNvdXJjZXMiLCAiYXVkaW8iLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwogICAgIHJldHVy
biBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGFic29sdXRlRmlsZW5hbWUuZ2V0KCksIGZhbHNlLCBz
YW1wbGVSYXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vv
Y2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcAppbmRleCBlNTM3NjA0
Li5iMmE1NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW9jbHVlL0dl
b2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlLmNwcApAQCAtMjgsOCArMjgsNiBA
QAogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIHZvaWQgZ2V0UG9z
aXRpb25DYWxsYmFjayhHZW9jbHVlUG9zaXRpb24qIHBvc2l0aW9uLCBHZW9jbHVlUG9zaXRpb25G
aWVsZHMgZmllbGRzLCBpbnQgdGltZXN0YW1wLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25n
aXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgR2VvY2x1ZUFjY3VyYWN5KiBhY2N1cmFjeSwgR0Vycm9y
KiBlcnJvciwgR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUqIHByb3ZpZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCmluZGV4IDA5MDkyMDcuLmIyMWFjYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTI2LDggKzI2LDYgQEAKIAogI2luY2x1
ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KLQogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDdk
NWMzZjkuLmM0YTBmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlz
c2luZy1wbHVnaW5zLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMTkw
LDcgKzE5MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRBdWRpb1N0
cmVhbVByb3BlcnRpZXMoR09iamVjdCogb2JqZWN0KQogICAgIEdzdFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcoInN0cmVhbS1wcm9wZXJ0aWVzIiwgIm1lZGlhLnJvbGUi
LCBHX1RZUEVfU1RSSU5HLCByb2xlLCBOVUxMKTsKICAgICBnX29iamVjdF9zZXQob2JqZWN0LCAi
c3RyZWFtLXByb3BlcnRpZXMiLCBzdHJ1Y3R1cmUsIE5VTEwpOwogICAgIGdzdF9zdHJ1Y3R1cmVf
ZnJlZShzdHJ1Y3R1cmUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGVsZW1lbnROYW1lKGdzdF9lbGVt
ZW50X2dldF9uYW1lKEdTVF9FTEVNRU5UKG9iamVjdCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVChvYmplY3QpKSk7
CiAgICAgTE9HX01FRElBX01FU1NBR0UoIlNldCBtZWRpYS5yb2xlIGFzICVzIGF0ICVzIiwgcm9s
ZSwgZWxlbWVudE5hbWUuZ2V0KCkpOwogfQogCkBAIC0xMDM3LDcgKzEwMzgsNyBAQCBnYm9vbGVh
biBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSog
bWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfcmVxdWVzdF9zdGF0ZShtZXNzYWdl
LCAmcmVxdWVzdGVkU3RhdGUpOwogICAgICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9wbGF5
QmluLmdldCgpLCAmY3VycmVudFN0YXRlLCBOVUxMLCAyNTApOwogICAgICAgICBpZiAocmVxdWVz
dGVkU3RhdGUgPCBjdXJyZW50U3RhdGUpIHsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGVs
ZW1lbnROYW1lKGdzdF9lbGVtZW50X2dldF9uYW1lKEdTVF9FTEVNRU5UKG1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRf
bmFtZShHU1RfRUxFTUVOVChtZXNzYWdlKSkpOwogICAgICAgICAgICAgSU5GT19NRURJQV9NRVNT
QUdFKCJFbGVtZW50ICVzIHJlcXVlc3RlZCBzdGF0ZSBjaGFuZ2UgdG8gJXMiLCBlbGVtZW50TmFt
ZS5nZXQoKSwKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZShyZXF1
ZXN0ZWRTdGF0ZSkpOwogICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTdGF0ZSA9IHJlcXVlc3RlZFN0
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5k
ZXggNTVkY2U5NS4uODNiMTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3Vy
Y2VHU3RyZWFtZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3Rh
cHBzcmMuaD4KICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlz
c2luZy1wbHVnaW5zLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHR5cGVkZWYgc3RydWN0IF9Tb3VyY2UgewpAQCAtMTQxLDcgKzE0MSw2IEBAIHN0YXRp
YyB2b2lkIHdlYktpdE1lZGlhU3JjQWRkU3JjKFdlYktpdE1lZGlhU3JjKiBzcmMsIEdzdEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgR3N0UGFkKiBnaG9zdFBhZDsKICAgICBXZWJLaXRNZWRpYVNy
Y1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAgR093blB0cjxnY2hhcj4gbmFtZTsKIAog
ICAgIGlmICghZ3N0X2Jpbl9hZGQoR1NUX0JJTihzcmMpLCBlbGVtZW50KSkgewogICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIlNyYyBlbGVtZW50IG5vdCBhZGRlZCIpOwpAQCAtMTU0LDcg
KzE1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjQWRkU3JjKFdlYktpdE1lZGlhU3Jj
KiBzcmMsIEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgfQogCiAgICAgZ3N0X2VsZW1lbnRfc3lu
Y19zdGF0ZV93aXRoX3BhcmVudChlbGVtZW50KTsKLSAgICBuYW1lLnNldChnX3N0cmR1cF9wcmlu
dGYoInNyY18ldSIsIHByaXYtPm5iU291cmNlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbmFt
ZShnX3N0cmR1cF9wcmludGYoInNyY18ldSIsIHByaXYtPm5iU291cmNlKSk7CiAgICAgZ2hvc3RQ
YWQgPSBXZWJDb3JlOjp3ZWJraXRHc3RHaG9zdFBhZEZyb21TdGF0aWNUZW1wbGF0ZSgmc3JjVGVt
cGxhdGUsIG5hbWUuZ2V0KCksIHRhcmdldHNyYy5nZXQoKSk7CiAgICAgZ3N0X3BhZF9zZXRfYWN0
aXZlKGdob3N0UGFkLCBUUlVFKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAppbmRleCAzYWVlNDhjLi41MjRkNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDEsOCArNDEsOCBAQAogI2luY2x1ZGUgPGdz
dC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dNdXRleExvY2tlci5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01MDIsOSArNTAyLDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOwogCiAgICAgaWYg
KHByaXYtPnJlcXVlc3RlZE9mZnNldCkgewotICAgICAgICBHT3duUHRyPGdjaGFyPiB2YWw7Ci0K
LSAgICAgICAgdmFsLnNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JN
QVQgIi0iLCBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdmFsKGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIHBy
aXYtPnJlcXVlc3RlZE9mZnNldCkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZCgiUmFuZ2UiLCB2YWwuZ2V0KCkpOwogICAgIH0KICAgICBwcml2LT5vZmZzZXQgPSBwcml2LT5y
ZXF1ZXN0ZWRPZmZzZXQ7CkBAIC0xMTUwLDEyICsxMTQ4LDEyIEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVTdHJlYW1pbmdDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJj
ZUVycm9yCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojp3YXNCbG9ja2VkKFJl
c291cmNlSGFuZGxlKikKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KG1fc3JjLmdldCgpKTsKLSAgICBHT3duUHRyPGdjaGFyPiB1cmk7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdXJpOwogCiAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJSZXF1ZXN0IHdhcyBibG9j
a2VkIik7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3Jj
KSk7Ci0gICAgdXJpLnNldChnX3N0cmR1cChzcmMtPnByaXYtPnVyaSkpOworICAgIHVyaS5yZXNl
dChnX3N0cmR1cChzcmMtPnByaXYtPnVyaSkpOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAg
IEdTVF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwgKCJBY2Nlc3MgdG8g
XCIlc1wiIHdhcyBibG9ja2VkIiwgdXJpLmdldCgpKSwgKDApKTsKQEAgLTExNjQsMTIgKzExNjIs
MTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50OjpjYW5ub3RT
aG93VVJMKFJlc291cmNlSGFuZGxlKikKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAgICBHT3duUHRyPGdjaGFyPiB1cmk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gdXJpOwogCiAgICAgR1NUX0VSUk9SX09CSkVDVChzcmMsICJDYW5ub3Qg
c2hvdyBVUkwiKTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9D
SyhzcmMpKTsKLSAgICB1cmkuc2V0KGdfc3RyZHVwKHNyYy0+cHJpdi0+dXJpKSk7CisgICAgdXJp
LnJlc2V0KGdfc3RyZHVwKHNyYy0+cHJpdi0+dXJpKSk7CiAgICAgbG9ja2VyLnVubG9jaygpOwog
CiAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELCAoIkNhbid0
IHNob3cgXCIlc1wiIiwgdXJpLmdldCgpKSwgKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwCmluZGV4IDliNjkz
ZTMuLjc2NmY2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcApAQCAtMjEsMTEgKzIxLDExIEBACiAKICNpbmNs
dWRlICJDYWlyb1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdka0NhaXJvVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNs
dWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY1LDEyICs2NSwxMiBAQCBzdGF0aWMg
Ym9vbCBlbmNvZGVJbWFnZShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0CiAgICAgaWYgKCFwaXhidWYpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIEdFcnJvciogZXJyb3IgPSAwOworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICBpZiAodHlwZSA9PSAianBlZyIgJiYgcXVhbGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1
YWxpdHkgPD0gMS4wKSB7CiAgICAgICAgIFN0cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpm
b3JtYXQoIiVkIiwgc3RhdGljX2Nhc3Q8aW50PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7Ci0g
ICAgICAgIGdka19waXhidWZfc2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91
dFB0cigpLCAmYnVmZmVyU2l6ZSwgdHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3IsICJxdWFsaXR5
IiwgcXVhbGl0eVN0cmluZy51dGY4KCkuZGF0YSgpLCBOVUxMKTsKKyAgICAgICAgZ2RrX3BpeGJ1
Zl9zYXZlX3RvX2J1ZmZlcihwaXhidWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZidWZmZXJT
aXplLCB0eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvci5vdXRQdHIoKSwgInF1YWxpdHkiLCBxdWFs
aXR5U3RyaW5nLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogICAgIH0gZWxzZQotICAgICAgICBnZGtf
cGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1
ZmZlclNpemUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLCBOVUxMKTsKKyAgICAgICAgZ2Rr
X3BpeGJ1Zl9zYXZlX3RvX2J1ZmZlcihwaXhidWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZi
dWZmZXJTaXplLCB0eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvci5vdXRQdHIoKSwgTlVMTCk7CiAK
ICAgICByZXR1cm4gIWVycm9yOwogfQpAQCAtNzksNyArNzksNyBAQCBTdHJpbmcgSW1hZ2VCdWZm
ZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxp
dHksIENvbwogewogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGVGb3JFbmNvZGluZyhtaW1lVHlwZSkpOwogCi0gICAgR093blB0cjxnY2hhcj4gYnVm
ZmVyKDApOworICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcjsKICAgICBnc2l6ZSBidWZmZXJTaXpl
OwogICAgIGlmICghZW5jb2RlSW1hZ2UobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgbWltZVR5cGUs
IHF1YWxpdHksIGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3Bw
CmluZGV4IDgwYWI2NmYuLjJlN2M0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2luY2x1
ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkdV
bmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUg
IkdPd25QdHJHdGsuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KQEAgLTU0LDcgKzU2LDcgQEAgc3RhdGljIENTdHJpbmcgZ2V0VGhlbWVJ
Y29uRmlsZU5hbWUoY29uc3QgY2hhciogbmFtZSwgaW50IHNpemUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX01JU1NJTkdfSU1BR0UsIHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0lD
T05fTE9PS1VQX05PX1NWRyk7CiAgICAgaWYgKGljb25JbmZvKSB7Ci0gICAgICAgIEdPd25QdHI8
R3RrSWNvbkluZm8+IGluZm8oaWNvbkluZm8pOworICAgICAgICBHVW5pcXVlUHRyPEd0a0ljb25J
bmZvPiBpbmZvKGljb25JbmZvKTsKICAgICAgICAgcmV0dXJuIENTdHJpbmcoZ3RrX2ljb25faW5m
b19nZXRfZmlsZW5hbWUoaW5mby5nZXQoKSkpOwogICAgIH0KIApAQCAtOTMsOCArOTUsOCBAQCBQ
YXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciog
bmFtZSkKICAgICBpZiAoIXN0cmNtcCgibWlzc2luZ0ltYWdlIiwgbmFtZSkpCiAgICAgICAgIGZp
bGVOYW1lID0gZ2V0VGhlbWVJY29uRmlsZU5hbWUoR1RLX1NUT0NLX01JU1NJTkdfSU1BR0UsIDE2
KTsKICAgICBpZiAoZmlsZU5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4g
aW1hZ2VOYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMucG5nIiwgbmFtZSkpOwotICAgICAgICBHT3du
UHRyPGdjaGFyPiBnbGliRmlsZU5hbWUoZ2V0UGF0aFRvSW1hZ2VSZXNvdXJjZShpbWFnZU5hbWUu
Z2V0KCkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaW1hZ2VOYW1lKGdfc3RyZHVwX3By
aW50ZigiJXMucG5nIiwgbmFtZSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBnbGliRmls
ZU5hbWUoZ2V0UGF0aFRvSW1hZ2VSZXNvdXJjZShpbWFnZU5hbWUuZ2V0KCkpKTsKICAgICAgICAg
ZmlsZU5hbWUgPSBnbGliRmlsZU5hbWUuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAppbmRleCA4YzAwMmM0Li45NmNkMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAK
QEAgLTI0LDggKzI0LDggQEAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgogCiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg3LDcgKzg3LDcgQEAgdW5zaWduZWQgQ29u
dGV4dE1lbnU6Oml0ZW1Db3VudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcGxhdGZvcm1EZXNj
cmlwdGlvbik7CiAKLSAgICBHT3duUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dl
dF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpKTsKKyAgICBH
VW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtf
Q09OVEFJTkVSKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikpKTsKICAgICByZXR1cm4gZ19saXN0X2xl
bmd0aChjaGlsZHJlbi5nZXQoKSk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgVmVjdG9yPENvbnRl
eHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVmVjdG9yKGNvbnN0IFBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIG1lbnUKIHsKICAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBtZW51SXRlbVZlY3Rv
cjsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxk
cmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJl
bihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAgICAg
aW50IGl0ZW1Db3VudCA9IGdfbGlzdF9sZW5ndGgoY2hpbGRyZW4uZ2V0KCkpOwogICAgIG1lbnVJ
dGVtVmVjdG9yLnJlc2VydmVDYXBhY2l0eShpdGVtQ291bnQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwCmluZGV4IGQ3MGI1YmUu
LmI2YWQ2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0
TWVudUl0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0
TWVudUl0ZW1HdGsuY3BwCkBAIC0yNSw5ICsyNSw5IEBACiAjaW5jbHVkZSAiQ29udGV4dE1lbnVJ
dGVtLmgiCiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjZGVmaW5lIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OICJ3ZWJraXQtY29udGV4dC1tZW51
IgpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24g
Y3JlYXRlUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uKENvbnRleHRNZW51CiAgICAgaWYgKHR5
cGUgPT0gU2VwYXJhdG9yVHlwZSkKICAgICAgICAgcmV0dXJuIEdUS19NRU5VX0lURU0oZ3RrX3Nl
cGFyYXRvcl9tZW51X2l0ZW1fbmV3KCkpOwogCi0gICAgR093blB0cjxjaGFyPiBhY3Rpb25OYW1l
KGdfc3RyZHVwX3ByaW50ZigiY29udGV4dC1tZW51LWFjdGlvbi0lZCIsIGFjdGlvbikpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoImNvbnRleHQtbWVu
dS1hY3Rpb24tJWQiLCBhY3Rpb24pKTsKICAgICBHUmVmUHRyPEd0a0FjdGlvbj4gcGxhdGZvcm1B
Y3Rpb247CiAKICAgICBpZiAodHlwZSA9PSBDaGVja2FibGVBY3Rpb25UeXBlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKaW5kZXggMTc3OWQ1Mi4u
NzcxNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3Rr
LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgRGF0YU9i
amVjdEd0azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICAgICAgICAg
IEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJvbV91cmkobGluZS51dGY4KCku
ZGF0YSgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJvbV91cmkobGluZS51dGY4KCkuZGF0YSgpLCAwLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKICAgICAgICAgICAgIGlmICghZXJyb3IgJiYgZmlsZW5hbWUpCiAg
ICAgICAgICAgICAgICAgbV9maWxlbmFtZXMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZmlsZW5h
bWUuZ2V0KCkpKTsKICAgICAgICAgfQpAQCAtMTIzLDcgKzEyNCw3IEBAIHZvaWQgRGF0YU9iamVj
dEd0azo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIG1h
cmt1cC5hcHBlbmQoIjxhIGhyZWY9XCIiKTsKICAgICBtYXJrdXAuYXBwZW5kKHVybC5zdHJpbmco
KSk7CiAgICAgbWFya3VwLmFwcGVuZCgiXCI+Iik7Ci0gICAgR093blB0cjxnY2hhcj4gZXNjYXBl
ZChnX21hcmt1cF9lc2NhcGVfdGV4dChhY3R1YWxMYWJlbC51dGY4KCkuZGF0YSgpLCAtMSkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVzY2FwZWQoZ19tYXJrdXBfZXNjYXBlX3RleHQoYWN0dWFs
TGFiZWwudXRmOCgpLmRhdGEoKSwgLTEpKTsKICAgICBtYXJrdXAuYXBwZW5kKFN0cmluZzo6ZnJv
bVVURjgoZXNjYXBlZC5nZXQoKSkpOwogICAgIG1hcmt1cC5hcHBlbmQoIjwvYT4iKTsKICAgICBz
ZXRNYXJrdXAobWFya3VwLnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IDI3YzRhYjAuLjdmYzQ5NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC00OCw3ICs0OSw3IEBAIFN0cmluZyBmaWxlbmFtZVRvU3RyaW5nKGNvbnN0
IGNoYXIqIGZpbGVuYW1lKQogI2lmIE9TKFdJTkRPV1MpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoZmlsZW5hbWUpOwogI2Vsc2UKLSAgICBHT3duUHRyPGdjaGFyPiBlc2NhcGVkU3RyaW5n
KGdfdXJpX2VzY2FwZV9zdHJpbmcoZmlsZW5hbWUsICIvOiIsIGZhbHNlKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9lc2NhcGVfc3RyaW5nKGZpbGVuYW1lLCAi
LzoiLCBmYWxzZSkpOwogICAgIHJldHVybiBlc2NhcGVkU3RyaW5nLmdldCgpOwogI2VuZGlmCiB9
CkBAIC01OCw3ICs1OSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKICNpZiBPUyhXSU5ET1dTKQogICAgIHJldHVybiBwYXRoLnV0ZjgoKTsK
ICNlbHNlCi0gICAgR093blB0cjxnY2hhcj4gZmlsZW5hbWUoZ191cmlfdW5lc2NhcGVfc3RyaW5n
KHBhdGgudXRmOCgpLmRhdGEoKSwgMCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1l
KGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCksIDApKTsKICAgICByZXR1
cm4gZmlsZW5hbWUuZ2V0KCk7CiAjZW5kaWYKIH0KQEAgLTcwLDcgKzcxLDcgQEAgU3RyaW5nIGZp
bGVuYW1lRm9yRGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gc3RyaW5n
OwogI2Vsc2UKICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHN0cmluZyk7Ci0gICAgR093blB0cjxnY2hhcj4gZGlzcGxheShnX2ZpbGVuYW1lX3RvX3V0Zjgo
ZmlsZW5hbWUuZGF0YSgpLCAwLCAwLCAwLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGlz
cGxheShnX2ZpbGVuYW1lX3RvX3V0ZjgoZmlsZW5hbWUuZGF0YSgpLCAwLCAwLCAwLCAwKSk7CiAg
ICAgaWYgKCFkaXNwbGF5KQogICAgICAgICByZXR1cm4gc3RyaW5nOwogCkBAIC0xOTAsNyArMTkx
LDcgQEAgU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGhOYW1lKQogICAg
ICAgICByZXR1cm4gcGF0aE5hbWU7CiAKICAgICBDU3RyaW5nIHRtcEZpbGVuYW1lID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGhOYW1lKTsKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlTmFt
ZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmRhdGEoKSkpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodG1wRmlsZW5hbWUuZGF0YSgp
KSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0KCkpOwogfQogCkBA
IC0yMDEsMTEgKzIwMiwxMSBAQCBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpCiAg
ICAgICAgIHJldHVybiBwYXRoOwogCiAgICAgLy8gSWYgdGhlIGFib3ZlIGZhaWxzLCBjaGVjayB0
aGUgUEFUSCBlbnYgdmFyaWFibGUuCi0gICAgR093blB0cjxjaGFyPiBjdXJyZW50RXhlUGF0aChn
X2ZpbmRfcHJvZ3JhbV9pbl9wYXRoKGdfZ2V0X3ByZ25hbWUoKSkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gY3VycmVudEV4ZVBhdGgoZ19maW5kX3Byb2dyYW1faW5fcGF0aChnX2dldF9wcmduYW1l
KCkpKTsKICAgICBpZiAoIWN1cnJlbnRFeGVQYXRoLmdldCgpKQogICAgICAgICByZXR1cm4gQ1N0
cmluZygpOwogCi0gICAgR093blB0cjxjaGFyPiBkaXJuYW1lKGdfcGF0aF9nZXRfZGlybmFtZShj
dXJyZW50RXhlUGF0aC5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShnX3Bh
dGhfZ2V0X2Rpcm5hbWUoY3VycmVudEV4ZVBhdGguZ2V0KCkpKTsKICAgICByZXR1cm4gZGlybmFt
ZS5nZXQoKTsKIH0KIApAQCAtMjE5LDEwICsyMjAsMTAgQEAgQ1N0cmluZyBzaGFyZWRSZXNvdXJj
ZXNQYXRoKCkKICAgICBITU9EVUxFIGhtb2R1bGUgPSAwOwogICAgIEdldE1vZHVsZUhhbmRsZUV4
QShHRVRfTU9EVUxFX0hBTkRMRV9FWF9GTEFHX0ZST01fQUREUkVTUywgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oc2hhcmVkUmVzb3VyY2VzUGF0aCksICZobW9kdWxlKTsKIAotICAgIEdPd25QdHI8
Z2NoYXI+IHJ1bnRpbWVEaXIoZ193aW4zMl9nZXRfcGFja2FnZV9pbnN0YWxsYXRpb25fZGlyZWN0
b3J5X29mX21vZHVsZShobW9kdWxlKSk7Ci0gICAgR093blB0cjxnY2hhcj4gZGF0YVBhdGgoZ19i
dWlsZF9maWxlbmFtZShydW50aW1lRGlyLmdldCgpLCAic2hhcmUiLCAid2Via2l0Z3RrLSIgV0VC
S0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHJ1bnRpbWVEaXIoZ193aW4zMl9nZXRfcGFja2FnZV9pbnN0YWxsYXRpb25fZGlyZWN0b3J5X29m
X21vZHVsZShobW9kdWxlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YVBhdGgoZ19idWls
ZF9maWxlbmFtZShydW50aW1lRGlyLmdldCgpLCAic2hhcmUiLCAid2Via2l0Z3RrLSIgV0VCS0lU
R1RLX0FQSV9WRVJTSU9OX1NUUklORywgTlVMTCkpOwogI2Vsc2UKLSAgICBHT3duUHRyPGdjaGFy
PiBkYXRhUGF0aChnX2J1aWxkX2ZpbGVuYW1lKERBVEFfRElSLCAid2Via2l0Z3RrLSIgV0VCS0lU
R1RLX0FQSV9WRVJTSU9OX1NUUklORywgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRh
dGFQYXRoKGdfYnVpbGRfZmlsZW5hbWUoREFUQV9ESVIsICJ3ZWJraXRndGstIiBXRUJLSVRHVEtf
QVBJX1ZFUlNJT05fU1RSSU5HLCBOVUxMKSk7CiAjZW5kaWYKIAogICAgIGNhY2hlZFBhdGggPSBk
YXRhUGF0aC5nZXQoKTsKQEAgLTI0Miw3ICsyNDMsNyBAQCB1aW50NjRfdCBnZXRWb2x1bWVGcmVl
U2l6ZUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICAvKiBObyBudWxsIGNoZWNraW5nIG5lZWRlZCAqLwotICAg
IEdPd25QdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlybmFtZShn
X3BhdGhfZ2V0X2Rpcm5hbWUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkp
OwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkpOwogfQogCkBAIC0y
NTEsMjggKzI1MiwyNiBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmll
czsKIAogICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7Ci0gICAgR0RpciogZGlyID0gZ19kaXJfb3BlbihmaWxlbmFtZS5kYXRhKCksIDAsIDApOwor
ICAgIEdVbmlxdWVQdHI8R0Rpcj4gZGlyKGdfZGlyX29wZW4oZmlsZW5hbWUuZGF0YSgpLCAwLCBu
dWxscHRyKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybiBlbnRyaWVzOwogCi0gICAg
R1BhdHRlcm5TcGVjICpwc3BlYyA9IGdfcGF0dGVybl9zcGVjX25ldygoZmlsdGVyLnV0ZjgoKSku
ZGF0YSgpKTsKLSAgICB3aGlsZSAoY29uc3QgY2hhciogbmFtZSA9IGdfZGlyX3JlYWRfbmFtZShk
aXIpKSB7Ci0gICAgICAgIGlmICghZ19wYXR0ZXJuX21hdGNoX3N0cmluZyhwc3BlYywgbmFtZSkp
CisgICAgR1VuaXF1ZVB0cjxHUGF0dGVyblNwZWM+IHBzcGVjKGdfcGF0dGVybl9zcGVjX25ldygo
ZmlsdGVyLnV0ZjgoKSkuZGF0YSgpKSk7CisgICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBn
X2Rpcl9yZWFkX25hbWUoZGlyLmdldCgpKSkgeworICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRj
aF9zdHJpbmcocHNwZWMuZ2V0KCksIG5hbWUpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgR093blB0cjxnY2hhcj4gZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5kYXRh
KCksIG5hbWUsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZW50cnkoZ19idWls
ZF9maWxlbmFtZShmaWxlbmFtZS5kYXRhKCksIG5hbWUsIE5VTEwpKTsKICAgICAgICAgZW50cmll
cy5hcHBlbmQoZmlsZW5hbWVUb1N0cmluZyhlbnRyeS5nZXQoKSkpOwogICAgIH0KLSAgICBnX3Bh
dHRlcm5fc3BlY19mcmVlKHBzcGVjKTsKLSAgICBnX2Rpcl9jbG9zZShkaXIpOwogCiAgICAgcmV0
dXJuIGVudHJpZXM7CiB9CiAKIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgR093blB0cjxnY2hh
cj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCks
IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR093blB0
cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVu
YW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJk
dXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBh
dGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxM
KSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9w
YXRoKHRlbXBQYXRoLmdldCgpKSk7CiAKICAgICBoYW5kbGUgPSBnX2ZpbGVfY3JlYXRlX3JlYWR3
cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5YjY5M2Y0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
T3duUHRyR3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgotCi0jaW5j
bHVkZSA8Z3RrL2d0ay5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gdm9pZCBm
cmVlT3duZWRHUHRyPEdka0V2ZW50PihHZGtFdmVudCogcHRyKQotewotICAgIGlmIChwdHIpCi0g
ICAgICAgIGdka19ldmVudF9mcmVlKHB0cik7Ci19Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93
bmVkR1B0cjxHdGtJY29uSW5mbz4oR3RrSWNvbkluZm8qIGluZm8pCi17Ci0gICAgaWYgKGluZm8p
Ci0gICAgICAgIGd0a19pY29uX2luZm9fZnJlZShpbmZvKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGJkNWU4MzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25Q
dHJHdGsuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDEwIElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR093blB0ckd0a19oCi0j
ZGVmaW5lIEdPd25QdHJHdGtfaAotCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdka0V2
ZW50PihHZGtFdmVudCopOwotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPEd0a0ljb25J
bmZvPihHdGtJY29uSW5mbyopOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKaW5kZXggYWY5NjA5ZC4uNDQyYmJlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC0xMjMsNyArMTI0LDcgQEAgR2FtZXBh
ZHNHdGs6OkdhbWVwYWRzR3RrKHVuc2lnbmVkIGxlbmd0aCkKICAgICBtX2d1ZGV2Q2xpZW50ID0g
YWRvcHRHUmVmKGdfdWRldl9jbGllbnRfbmV3KHN1YnN5c3RlbXMpKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fZ3VkZXZDbGllbnQuZ2V0KCksICJ1ZXZlbnQiLCBHX0NBTExCQUNLKG9uVUV2ZW50
Q2FsbGJhY2spLCB0aGlzKTsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGRldmljZXNMaXN0KGdfdWRl
dl9jbGllbnRfcXVlcnlfYnlfc3Vic3lzdGVtKG1fZ3VkZXZDbGllbnQuZ2V0KCksIHN1YnN5c3Rl
bXNbMF0pKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBkZXZpY2VzTGlzdChnX3VkZXZfY2xpZW50
X3F1ZXJ5X2J5X3N1YnN5c3RlbShtX2d1ZGV2Q2xpZW50LmdldCgpLCBzdWJzeXN0ZW1zWzBdKSk7
CiAgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBkZXZpY2VzTGlzdC5nZXQoKTsgbGlzdEl0ZW07
IGxpc3RJdGVtID0gZ19saXN0X25leHQobGlzdEl0ZW0pKSB7CiAgICAgICAgIEdVZGV2RGV2aWNl
KiBkZXZpY2UgPSBHX1VERVZfREVWSUNFKGxpc3RJdGVtLT5kYXRhKTsKICAgICAgICAgU3RyaW5n
IGRldmljZUZpbGUgPSBTdHJpbmc6OmZyb21VVEY4KGdfdWRldl9kZXZpY2VfZ2V0X2RldmljZV9m
aWxlKGRldmljZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a0NsaWNrQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tD
b3VudGVyLmNwcAppbmRleCBhY2M4YTMyLi5iYWE4OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcApAQCAtMTksNyArMTksNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkd0a0NsaWNrQ291bnRlci5oIgogCi0jaW5jbHVk
ZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBH
dGtDbGlja0NvdW50ZXI6OnNob3VsZFByb2Nlc3NCdXR0b25FdmVudChHZGtFdmVudEJ1dHRvbiog
YnV0dG9uRXZlbnQpCiAgICAgLy8gY29taW5nIHVwLCBpZ25vcmUgdGhpcyBldmVudCBhcyBpdCBj
ZXJ0YWlubHkgZ2VuZXJhdGVkIHRoZSBkb3VibGUgb3IgdHJpcGxlCiAgICAgLy8gY2xpY2suIFRo
ZSBjb25zZXF1ZW5jZSBvZiBub3QgZWF0aW5nIHRoaXMgZXZlbnQgaXMgdHdvIERPTSBidXR0b24g
cHJlc3MgZXZlbnRzCiAgICAgLy8gYXJlIGdlbmVyYXRlZC4KLSAgICBHT3duUHRyPEdka0V2ZW50
PiBuZXh0RXZlbnQoZ2RrX2V2ZW50X3BlZWsoKSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4g
bmV4dEV2ZW50KGdka19ldmVudF9wZWVrKCkpOwogICAgIGlmICghbmV4dEV2ZW50KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfMkJVVFRP
Tl9QUkVTUyB8fCBuZXh0RXZlbnQtPmFueS50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5j
cHAKaW5kZXggYjk5ODBiNS4uMGEwMjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC0xOSwxMSArMTksMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHdGtJbnB1dE1ldGhvZEZpbHRlci5oIgog
Ci0jaW5jbHVkZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNp
bmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIC8vIFRoZSBXaW5kb3dzIGNvbXBvc2l0aW9uIGtl
eSBldmVudCBjb2RlIGlzIDI5OSBvciBWS19QUk9DRVNTS0VZLiBXZSBuZWVkIHRvCiAvLyBlbWl0
IHRoaXMgY29kZSBmb3Igd2ViIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aGVuIGtleSBldmVudHMg
dHJpZ2dlcgpAQCAtMjcwLDcgKzI3MSw3IEBAIHZvaWQgR3RrSW5wdXRNZXRob2RGaWx0ZXI6OnVw
ZGF0ZVByZWVkaXQoKQogCiB2b2lkIEd0a0lucHV0TWV0aG9kRmlsdGVyOjpzZW5kQ29tcG9zaXRp
b25BbmRQcmVlZGl0V2l0aEZha2VLZXlFdmVudHMoUmVzdWx0c1RvU2VuZCByZXN1bHRzVG9TZW5k
KQogewotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9Q
UkVTUykpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RL
X0tFWV9QUkVTUykpOwogICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7CiAg
ICAgZXZlbnQtPmtleS5rZXl2YWwgPSBnQ29tcG9zaXRpb25FdmVudEtleUNvZGU7CiAgICAgc2Vu
ZEtleUV2ZW50V2l0aENvbXBvc2l0aW9uUmVzdWx0cygmZXZlbnQtPmtleSwgcmVzdWx0c1RvU2Vu
ZCwgRXZlbnRGYWtlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1l
bnUuY3BwCmluZGV4IDQ1OGFmNGQuLmU1MmNlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiR3RrUG9wdXBNZW51LmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgR3RrUG9wdXBNZW51Ojpwb3BVcChjb25zdCBJbnRTaXplJiBtZW51U2l6ZSwgY29uc3Qg
SW50UG9pbnQmIG1lbnVQb3NpdGlvbiwKICAgICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3Qo
bV9wb3B1cC5nZXQoKSwgc3RkOjptYXgobWVudVNpemUud2lkdGgoKSwgcmVxdWlzaXRpb24ud2lk
dGgpLCAtMSk7CiAKICAgICBpZiAoaXRlbUNvdW50KSB7Ci0gICAgICAgIEdPd25QdHI8R0xpc3Q+
IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobV9wb3B1
cC5nZXQoKSkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRh
aW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtX3BvcHVwLmdldCgpKSkpOwogICAgICAg
ICBpbnQgaTsKICAgICAgICAgR0xpc3QqIGNoaWxkOwogICAgICAgICBmb3IgKGkgPSAwLCBjaGls
ZCA9IGNoaWxkcmVuLmdldCgpOyBpIDwgaXRlbUNvdW50OyBpKyssIGNoaWxkID0gZ19saXN0X25l
eHQoY2hpbGQpKSB7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBHdGtQb3B1cE1lbnU6OnR5cGVB
aGVhZEZpbmQoR2RrRXZlbnRLZXkqIGV2ZW50KQogICAgIH0KIAogICAgIGdsb25nIGNoYXJhY3Rl
cnNXcml0dGVuOwotICAgIEdPd25QdHI8Z3VuaWNoYXIyPiB1dGYxNlN0cmluZyhnX3VjczRfdG9f
dXRmMTYoJnVuaWNvZGVDaGFyYWN0ZXIsIDEsIDAsICZjaGFyYWN0ZXJzV3JpdHRlbiwgMCkpOwor
ICAgIEdVbmlxdWVQdHI8Z3VuaWNoYXIyPiB1dGYxNlN0cmluZyhnX3VjczRfdG9fdXRmMTYoJnVu
aWNvZGVDaGFyYWN0ZXIsIDEsIDAsICZjaGFyYWN0ZXJzV3JpdHRlbiwgMCkpOwogICAgIGlmICgh
dXRmMTZTdHJpbmcpIHsKICAgICAgICAgcmVzZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wgR3RrUG9wdXBNZW51Ojp0
eXBlQWhlYWRGaW5kKEdka0V2ZW50S2V5KiBldmVudCkKIAogICAgIC8vIExpa2UgdGhlIENocm9t
aXVtIHBvcnQsIHdlIGNhc2UgZm9sZCBiZWZvcmUgc2VhcmNoaW5nLCBiZWNhdXNlIAogICAgIC8v
IHN0cm5jbXAgZG9lcyBub3QgaGFuZGxlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgIEdPd25Q
dHI8Z2NoYXI+IHNlYXJjaFN0cmluZ1dpdGhDYXNlRm9sZGVkKGdfdXRmOF9jYXNlZm9sZChtX2N1
cnJlbnRTZWFyY2hTdHJpbmcudXRmOCgpLmRhdGEoKSwgLTEpKTsKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiBzZWFyY2hTdHJpbmdXaXRoQ2FzZUZvbGRlZChnX3V0ZjhfY2FzZWZvbGQobV9jdXJyZW50
U2VhcmNoU3RyaW5nLnV0ZjgoKS5kYXRhKCksIC0xKSk7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0
aCA9IHN0cmxlbihzZWFyY2hTdHJpbmdXaXRoQ2FzZUZvbGRlZC5nZXQoKSk7CiAKICAgICBHTGlz
dCogY2hpbGRyZW4gPSBndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1f
cG9wdXAuZ2V0KCkpKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIEd0a1BvcHVwTWVudTo6dHlw
ZUFoZWFkRmluZChHZGtFdmVudEtleSogZXZlbnQpCiAgICAgICAgIGlmICghY3VycmVudENoaWxk
KQogICAgICAgICAgICAgY3VycmVudENoaWxkID0gY2hpbGRyZW47CiAKLSAgICAgICAgR093blB0
cjxnY2hhcj4gaXRlbVRleHQoZ191dGY4X2Nhc2Vmb2xkKGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVs
KEdUS19NRU5VX0lURU0oY3VycmVudENoaWxkLT5kYXRhKSksIC0xKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGl0ZW1UZXh0KGdfdXRmOF9jYXNlZm9sZChndGtfbWVudV9pdGVtX2dldF9s
YWJlbChHVEtfTUVOVV9JVEVNKGN1cnJlbnRDaGlsZC0+ZGF0YSkpLCAtMSkpOwogICAgICAgICBp
ZiAoIXN0cm5jbXAoc2VhcmNoU3RyaW5nV2l0aENhc2VGb2xkZWQuZ2V0KCksIGl0ZW1UZXh0Lmdl
dCgpLCBwcmVmaXhMZW5ndGgpKSB7CiAgICAgICAgICAgICBndGtfbWVudV9zaGVsbF9zZWxlY3Rf
aXRlbShHVEtfTUVOVV9TSEVMTChtX3BvcHVwLmdldCgpKSwgR1RLX1dJREdFVChjdXJyZW50Q2hp
bGQtPmRhdGEpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9MYW5ndWFnZUd0ay5jcHAKaW5kZXggMzdhNzFlNS4uNThkM2E5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCkBAIC0yMCw4ICsyMCw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDAsNyArNDAsNyBAQCBzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogICAgIGlmICghbG9jYWxlRGVmYXVsdCkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygiYyIpOwogCi0gICAgR093blB0cjxnY2hhcj4gbm9ybWFsaXpl
ZERlZmF1bHQoZ19hc2NpaV9zdHJkb3duKGxvY2FsZURlZmF1bHQsIC0xKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gbm9ybWFsaXplZERlZmF1bHQoZ19hc2NpaV9zdHJkb3duKGxvY2FsZURlZmF1
bHQsIC0xKSk7CiAgICAgY2hhciogcHRyID0gc3RyY2hyKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgp
LCAnXycpOwogCiAgICAgaWYgKHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAppbmRleCA5NDcxZDlkLi4zMGQ3ZDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsu
Y3BwCkBAIC0yOSwxOCArMjksMTcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgorCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDxndGsv
Z3RrLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGd0a1N0
b2NrTGFiZWwoY29uc3QgY2hhciogc3RvY2tJRCkKQEAgLTU0NCw5ICs1NDMsOCBAQCBTdHJpbmcg
dW5rbm93bkZpbGVTaXplVGV4dCgpCiAKIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gc3Ry
aW5nKGdfc3RyZHVwX3ByaW50ZihDXygiVGl0bGUgc3RyaW5nIGZvciBpbWFnZXMiLCAiJXMgICgl
ZHglZCBwaXhlbHMpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZihDXygiVGl0bGUgc3RyaW5nIGZvciBpbWFn
ZXMiLCAiJXMgICglZHglZCBwaXhlbHMpIiksCisgICAgICAgIGZpbGVuYW1lLnV0ZjgoKS5kYXRh
KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKIH0KQEAgLTY2OCwyMSArNjY2LDIxIEBAIFN0cmluZyBs
b2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCB0aW1lKQogICAgIHNlY29uZHMgJT0g
NjA7CiAKICAgICBpZiAoZGF5cykgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBzdHJpbmcoZ19z
dHJkdXBfcHJpbnRmKCIlZCBkYXlzICVkIGhvdXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIGRh
eXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVkIGRheXMgJWQgaG91cnMgJWQgbWludXRlcyAlZCBz
ZWNvbmRzIiwgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoaG91cnMp
IHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgaG91
cnMgJWQgbWludXRlcyAlZCBzZWNvbmRzIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgaG91cnMg
JWQgbWludXRlcyAlZCBzZWNvbmRzIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBp
ZiAobWludXRlcykgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJp
bnRmKCIlZCBtaW51dGVzICVkIHNlY29uZHMiLCBtaW51dGVzLCBzZWNvbmRzKSk7CisgICAgICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVkIG1pbnV0ZXMgJWQg
c2Vjb25kcyIsIG1pbnV0ZXMsIHNlY29uZHMpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nLmdldCgpKTsKICAgICB9CiAKLSAgICBHT3duUHRyPGdjaGFyPiBzdHJpbmco
Z19zdHJkdXBfcHJpbnRmKCIlZCBzZWNvbmRzIiwgc2Vjb25kcykpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVkIHNlY29uZHMiLCBzZWNvbmRzKSk7CiAg
ICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKIH0KICNlbmRpZiAgLy8g
RU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCmluZGV4IGZhN2JjN2IuLjU1NzM0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTE3LDcgKzExOCw3IEBA
IEd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXI6OnRhcmdldExpc3QoKSBjb25zdAogc3Rh
dGljIFN0cmluZyBzZWxlY3Rpb25EYXRhVG9VVEY4U3RyaW5nKEd0a1NlbGVjdGlvbkRhdGEqIGRh
dGEpCiB7CiAgICAgLy8gZ19zdHJuZHVwIGd1YXJkcyBhZ2FpbnN0IHNlbGVjdGlvbiBkYXRhIHRo
YXQgaXMgbm90IG51bGwtdGVybWluYXRlZC4KLSAgICBHT3duUHRyPGdjaGFyPiBtYXJrdXBTdHJp
bmcoZ19zdHJuZHVwKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGd0a19zZWxlY3Rpb25f
ZGF0YV9nZXRfZGF0YShkYXRhKSksIGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfbGVuZ3RoKGRhdGEp
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbWFya3VwU3RyaW5nKGdfc3RybmR1cChyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGEoZGF0YSkp
LCBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2xlbmd0aChkYXRhKSkpOwogICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KG1hcmt1cFN0cmluZy5nZXQoKSk7CiB9CiAKQEAgLTEyNyw3ICsxMjgsNyBA
QCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2Fy
ZCogY2xpcGJvYXJkKQogICAgIEFTU0VSVChkYXRhT2JqZWN0KTsKIAogICAgIGlmIChndGtfY2xp
cGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFpbGFibGUoY2xpcGJvYXJkKSkgewotICAgICAgICBHT3du
UHRyPGdjaGFyPiB0ZXh0RGF0YShndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQoY2xpcGJvYXJk
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRleHREYXRhKGd0a19jbGlwYm9hcmRfd2Fp
dF9mb3JfdGV4dChjbGlwYm9hcmQpKTsKICAgICAgICAgaWYgKHRleHREYXRhKQogICAgICAgICAg
ICAgZGF0YU9iamVjdC0+c2V0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHREYXRhLmdldCgpKSk7
CiAgICAgfQpAQCAtMTc2LDcgKzE3Nyw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNl
bGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1cmwpOwogCi0gICAgICAgIEdPd25Q
dHI8Z2NoYXI+IHJlc3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmVzdWx0RGF0YShnX3N0cmR1cChyZXN1bHQudXRmOCgp
LmRhdGEoKSkpOwogICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEs
IG5ldHNjYXBlVVJMQXRvbSwgOCwKICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Z3VjaGFyKj4ocmVzdWx0RGF0YS5nZXQoKSksIHN0cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAK
QEAgLTE5MywxMiArMTk0LDEyIEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlv
bkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICAgICAgYXV0
byB0eXBlcyA9IGRhdGFPYmplY3QtPnVua25vd25UeXBlcygpOwogICAgICAgICBhdXRvIGVuZCA9
IHR5cGVzLmVuZCgpOwogICAgICAgICBmb3IgKGF1dG8gaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGRpY3RJdGVtKGdfc3Ry
ZHVwX3ByaW50ZigieyclcycsICclcyd9IiwgaXQtPmtleS51dGY4KCkuZGF0YSgpLCBpdC0+dmFs
dWUudXRmOCgpLmRhdGEoKSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGljdEl0
ZW0oZ19zdHJkdXBfcHJpbnRmKCJ7JyVzJywgJyVzJ30iLCBpdC0+a2V5LnV0ZjgoKS5kYXRhKCks
IGl0LT52YWx1ZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9hZGRfcGFyc2VkKCZidWlsZGVyLCBkaWN0SXRlbS5nZXQoKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZi
dWlsZGVyKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gc2VyaWFsaXplZFZhcmlhbnQoZ192YXJp
YW50X3ByaW50KHZhcmlhbnQuZ2V0KCksIFRSVUUpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gc2VyaWFsaXplZFZhcmlhbnQoZ192YXJpYW50X3ByaW50KHZhcmlhbnQuZ2V0KCksIFRSVUUp
KTsKICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1bmtub3du
QXRvbSwgMSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihzZXJpYWxpemVkVmFyaWFu
dC5nZXQoKSksIHN0cmxlbihzZXJpYWxpemVkVmFyaWFudC5nZXQoKSkpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0ay5jcHAKaW5kZXggZTBmYjFm
ZC4uNTQwM2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVw
TWVudUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BvcHVwTWVudUd0
ay5jcHAKQEAgLTI4LDExICsyOCwxMCBAQAogI2luY2x1ZGUgIlBvcHVwTWVudUd0ay5oIgogCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUg
IkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJI
b3N0V2luZG93LmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUyLDcgKzUxLDcgQEAgUG9wdXBNZW51R3RrOjp+UG9wdXBNZW51R3RrKCkK
IAogR3RrQWN0aW9uKiBQb3B1cE1lbnVHdGs6OmNyZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVtKGlu
dCBpdGVtSW5kZXgpCiB7Ci0gICAgR093blB0cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVwX3By
aW50ZigicG9wdXAtbWVudS1hY3Rpb24tJWQiLCBpdGVtSW5kZXgpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJkdXBfcHJpbnRmKCJwb3B1cC1tZW51LWFjdGlvbi0lZCIs
IGl0ZW1JbmRleCkpOwogICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoYWN0
aW9uTmFtZS5nZXQoKSwgY2xpZW50KCktPml0ZW1UZXh0KGl0ZW1JbmRleCkudXRmOCgpLmRhdGEo
KSwgY2xpZW50KCktPml0ZW1Ub29sVGlwKGl0ZW1JbmRleCkudXRmOCgpLmRhdGEoKSwgMCk7CiAg
ICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWN0aW9uKSwgInBvcHVwLW1lbnUtYWN0aW9u
LWluZGV4IiwgR0lOVF9UT19QT0lOVEVSKGl0ZW1JbmRleCkpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKG1lbnVJdGVtQWN0aXZhdGVkKSwgdGhp
cyk7CkBAIC04Niw3ICs4NSw3IEBAIHZvaWQgUG9wdXBNZW51R3RrOjpzaG93KGNvbnN0IEludFJl
Y3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogICAgIEludFBvaW50IG1lbnVQ
b3NpdGlvbiA9IGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQoR1RLX1dJREdFVCh2aWV3
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSwgdmlldy0+Y29udGVudHNUb1dp
bmRvdyhyZWN0LmxvY2F0aW9uKCkpKTsKICAgICBtZW51UG9zaXRpb24ubW92ZSgwLCByZWN0Lmhl
aWdodCgpKTsKIAotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1
cnJlbnRfZXZlbnQoKSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY3VycmVudEV2ZW50KGd0
a19nZXRfY3VycmVudF9ldmVudCgpKTsKICAgICBtX3BvcHVwLT5wb3BVcChyZWN0LnNpemUoKSwg
bWVudVBvc2l0aW9uLCBzaXplLCBpbmRleCwgY3VycmVudEV2ZW50LmdldCgpKTsKIAogICAgIC8v
IEdUSyBjYW4gcmVmdXNlIHRvIGFjdHVhbGx5IG9wZW4gdGhlIG1lbnUgd2hlbiBtb3VzZSBncmFi
cyBmYWlscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XZWJLaXRB
dXRoZW50aWNhdGlvbldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2Vi
S2l0QXV0aGVudGljYXRpb25XaWRnZXQuY3BwCmluZGV4IGU0N2Q1OTkuLjc3ODA2ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbldp
ZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dlYktpdEF1dGhlbnRp
Y2F0aW9uV2lkZ2V0LmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0QXV0aGVudGljYXRpb25XaWRnZXRJbml0aWFsaXplKFdlYktpdEF1dGhlbnRp
Y2F0aW9uV2lkZ2V0KiBhdXQKICAgICBndGtfd2lkZ2V0X3Nob3coaWNvbik7CiAKICAgICBXZWJL
aXRBdXRoZW50aWNhdGlvbldpZGdldFByaXZhdGUqIHByaXYgPSBhdXRoV2lkZ2V0LT5wcml2Owot
ICAgIEdPd25QdHI8Y2hhcj4gcHJvbXB0KGdfc3RyZHVwX3ByaW50ZigKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IHByb21wdChnX3N0cmR1cF9wcmludGYoCiAgICAgICAgIF8oIlRoZSBzaXRlICVzOiVp
IHJlcXVlc3RzIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIiksCiAgICAgICAgIHByaXYtPmNoYWxs
ZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5ob3N0KCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgcHJp
di0+Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLnBvcnQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApp
bmRleCBmMTlkMDRkLi43ZGM0M2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtNDksOCArNDksOCBA
QAogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgog
I2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiBjbGFzcyBGcmFtZTsKICNlbmRp
ZgpAQCAtMTk3LDcgKzE5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1JlZlB0
cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVz
dWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91
dFNvdXJjZTsKLSAgICAgICAgR093blB0cjxTb3VwQnVmZmVyPiBtX3NvdXBCdWZmZXI7CisgICAg
ICAgIEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4gbV9zb3VwQnVmZmVyOwogICAgICAgICB1bnNpZ25l
ZCBsb25nIG1fYm9keVNpemU7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9ib2R5RGF0YVNlbnQ7
CiAgICAgICAgIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0
b3JlLmNwcAppbmRleCA1ZjFlNGM1Li4xNDEyMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3Jl
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGxpYnNlY3JldC9zZWNyZXQuaD4KICNp
bmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNlbmRpZgogCkBAIC03Nyw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIGNyZWRl
bnRpYWxGb3JDaGFsbGVuZ2VBc3luY1JlYWR5Q2FsbGJhY2soU2VjcmV0U2VydmljZSogc2Vydmlj
ZSwgR0FzCiAgICAgZGVsZXRlIGNhbGxiYWNrRGF0YTsKIAogICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKLSAgICBHT3duUHRyPEdMaXN0PiBlbGVtZW50cyhzZWNyZXRfc2VydmljZV9zZWFyY2hf
ZmluaXNoKHNlcnZpY2UsIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBHVW5p
cXVlUHRyPEdMaXN0PiBlbGVtZW50cyhzZWNyZXRfc2VydmljZV9zZWFyY2hfZmluaXNoKHNlcnZp
Y2UsIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZXJyb3IgfHwgIWVs
ZW1lbnRzIHx8ICFlbGVtZW50cy0+ZGF0YSkgewogICAgICAgICBjYWxsYmFjayhDcmVkZW50aWFs
KCksIGRhdGEpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKaW5kZXggMTVmZDdjNS4uODEw
MWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIkNvb2tpZUph
clNvdXAuaCIKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgi
CisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCkBA
IC04OCw4ICs4OCw4IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgaWYgKCFqYXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8U291cFVSST4gb3JpZ2luKHNvdXBfdXJpX25l
dyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdPd25QdHI8U291cFVSST4gZmly
c3RQYXJ0eVVSSShzb3VwX3VyaV9uZXcoZmlyc3RQYXJ0eS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBvcmlnaW4oc291cF91cmlfbmV3KHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBmaXJzdFBhcnR5
VVJJKHNvdXBfdXJpX25ldyhmaXJzdFBhcnR5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKIAog
ICAgIC8vIEdldCBleGlzdGluZyBjb29raWVzIGZvciB0aGlzIG9yaWdpbi4KICAgICBHU0xpc3Qq
IGV4aXN0aW5nQ29va2llcyA9IHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xpc3QoamFyLCBv
cmlnaW4uZ2V0KCksIFRSVUUpOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcgogICAgIHZhbHVlLnNwbGl0KCdcbicsIGNvb2tpZXMpOwogICAgIGNvbnN0IHNpemVfdCBj
b29raWVzQ291bnQgPSBjb29raWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvb2tpZXNDb3VudDsgKytpKSB7Ci0gICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2ll
KHNvdXBfY29va2llX3BhcnNlKGNvb2tpZXNbaV0udXRmOCgpLmRhdGEoKSwgb3JpZ2luLmdldCgp
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8U291cENvb2tpZT4gY29va2llKHNvdXBfY29va2llX3Bh
cnNlKGNvb2tpZXNbaV0udXRmOCgpLmRhdGEoKSwgb3JpZ2luLmdldCgpKSk7CiAgICAgICAgIGlm
ICghY29va2llKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEyMiw4ICsxMjIsOCBAQCBz
dGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKLSAgICBHT3duUHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXcodXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBHT3duUHRyPGNoYXI+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2dldF9jb29raWVzKGphciwgdXJpLmdldCgpLCBmb3JIVFRQSGVhZGVyKSk7CisgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291cF91cmlfbmV3KHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb29raWVzKHNvdXBfY29va2llX2phcl9n
ZXRfY29va2llcyhqYXIsIHVyaS5nZXQoKSwgZm9ySFRUUEhlYWRlcikpOwogICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0KCkpOwogfQogCkBAIC0xNDksOCArMTQ5LDggQEAg
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiAvKmZpcnN0UGFydHkKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgR093blB0cjxTb3VwVVJJPiB1cmkoc291cF91cmlfbmV3KHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2dldF9jb29raWVfbGlzdChqYXIsIHVyaS5nZXQoKSwgVFJVRSkpOworICAgIEdVbmlx
dWVQdHI8U291cFVSST4gdXJpKHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOworICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRf
Y29va2llX2xpc3QoamFyLCB1cmkuZ2V0KCksIFRSVUUpKTsKICAgICBpZiAoIWNvb2tpZXMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8
U291cFVSST4gdXJpKHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwot
ICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xp
c3QoamFyLCB1cmkuZ2V0KCksIFRSVUUpKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHVyaShz
b3VwX3VyaV9uZXcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRy
PEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZV9saXN0KGphciwgdXJp
LmdldCgpLCBUUlVFKSk7CiAgICAgaWYgKCFjb29raWVzKQogICAgICAgICByZXR1cm47CiAKQEAg
LTE5MSw3ICsxOTEsNyBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogdm9pZCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hT
ZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNvb2tp
ZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOworICAgIEdVbmlxdWVQ
dHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIp
KTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBn
X3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGlj
X2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwogICAgICAgICBpZiAoY29va2llLT5kb21h
aW4pCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcKIHsKICAgICBD
U3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwogICAgIFNvdXBDb29raWVK
YXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7Ci0gICAgR093blB0
cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikp
OworICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29v
a2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7
IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSog
Y29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwogICAgICAgICBp
ZiAoc291cF9jb29raWVfZG9tYWluX21hdGNoZXMoY29va2llLCBob3N0TmFtZVN0cmluZy5kYXRh
KCkpKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nCiB2b2lkIGRl
bGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewog
ICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lv
bik7Ci0gICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29r
aWVzKGNvb2tpZUphcikpOworICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29v
a2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9
IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAg
ICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRh
dGEpOwogICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIGNv
b2tpZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKaW5kZXggMmVhYjlhMy4uNmY2MzBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkROUy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCi0jaW5jbHVkZSAiR093
blB0clNvdXAuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWYyZjdkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIEdVbmlxdWVQdHJTb3VwX2gKKyNkZWZpbmUgR1VuaXF1ZVB0clNv
dXBfaAorCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV1RGX0RFRklORV9HUFRSX0RFTEVU
RVIoU291cFVSSSwgc291cF91cmlfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBD
b29raWUsIHNvdXBfY29va2llX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVz
c2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWUpCitXVEZfREVGSU5FX0dQVFJf
REVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1ZmZlcl9mcmVlKQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCBiYTg2NTdiLi5iYjcyYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VF
cnJvclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUVycm9yU291cC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGZhaWxpbmdV
UkkoU291cFVSSSogc291cFVSSSkKIHsKICAgICBBU1NFUlQoc291cFVSSSk7Ci0gICAgR093blB0
cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7CisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB1cmkoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7CiAg
ICAgcmV0dXJuIHVyaS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCA0Yzcw
NzQ5Li43YTY3NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNTYsNiArNTYsNyBAQAog
I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0yODYsOSArMjg3LDkgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZW5zdXJlUmVhZEJ1ZmZlcigpCiAgICAgc2l6ZV90IGJ1ZmZlclNpemU7
CiAgICAgY2hhciogYnVmZmVyRnJvbUNsaWVudCA9IGNsaWVudCgpLT5nZXRPckNyZWF0ZVJlYWRC
dWZmZXIoZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKGJ1ZmZl
ckZyb21DbGllbnQpCi0gICAgICAgIGQtPm1fc291cEJ1ZmZlci5zZXQoc291cF9idWZmZXJfbmV3
KFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYnVmZmVyRnJvbUNsaWVudCwgYnVmZmVyU2l6ZSkpOwor
ICAgICAgICBkLT5tX3NvdXBCdWZmZXIucmVzZXQoc291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZ
X1RFTVBPUkFSWSwgYnVmZmVyRnJvbUNsaWVudCwgYnVmZmVyU2l6ZSkpOwogICAgIGVsc2UKLSAg
ICAgICAgZC0+bV9zb3VwQnVmZmVyLnNldChzb3VwX2J1ZmZlcl9uZXcoU09VUF9NRU1PUllfVEFL
RSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGdfbWFsbG9jKGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpKSwg
Z0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSkpOworICAgICAgICBkLT5tX3NvdXBCdWZmZXIucmVzZXQo
c291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZX1RBS0UsIHN0YXRpY19jYXN0PGNoYXIqPihnX21h
bGxvYyhnRGVmYXVsdFJlYWRCdWZmZXJTaXplKSksIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpKTsK
IAogICAgIEFTU0VSVChkLT5tX3NvdXBCdWZmZXIpOwogfQpAQCAtNTQ3LDcgKzU0OCw3IEBAIHN0
YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgZC0+bV9pbnB1dFN0cmVhbS5jbGVhcigpOwogICAg
IGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uY2xlYXIoKTsKICAgICBkLT5tX2NhbmNlbGxhYmxl
LmNsZWFyKCk7Ci0gICAgZC0+bV9zb3VwQnVmZmVyLmNsZWFyKCk7CisgICAgZC0+bV9zb3VwQnVm
ZmVyLnJlc2V0KCk7CiAKICAgICBpZiAoZC0+bV9zb3VwTWVzc2FnZSkgewogICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSwg
R19TSUdOQUxfTUFUQ0hfREFUQSwKQEAgLTk5Miw3ICs5OTMsNyBAQCBzdGF0aWMgYm9vbCBjcmVh
dGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUgogCiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogCi0gICAgR093blB0cjxTb3Vw
VVJJPiBzb3VwVVJJKHJlcXVlc3Quc291cFVSSSgpKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+
IHNvdXBVUkkocmVxdWVzdC5zb3VwVVJJKCkpOwogICAgIGlmICghc291cFVSSSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNDc4ODQ4Ny4uMjM1
OWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMjAsMTEgKzIwLDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAKLSNpbmNsdWRl
ICJHT3duUHRyU291cC5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAi
SFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
U291cFVSSVV0aWxzLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtMzYsNyArMzUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3Nh
Z2VNZW1iZXJzKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkgY29uc3QKIAogICAgIFN0cmluZyBm
aXJzdFBhcnR5U3RyaW5nID0gZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5zdHJpbmcoKTsKICAgICBp
ZiAoIWZpcnN0UGFydHlTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdPd25QdHI8U291cFVS
ST4gZmlyc3RQYXJ0eShzb3VwX3VyaV9uZXcoZmlyc3RQYXJ0eVN0cmluZy51dGY4KCkuZGF0YSgp
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gZmlyc3RQYXJ0eShzb3VwX3VyaV9uZXco
Zmlyc3RQYXJ0eVN0cmluZy51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9z
ZXRfZmlyc3RfcGFydHkoc291cE1lc3NhZ2UsIGZpcnN0UGFydHkuZ2V0KCkpOwogICAgIH0KIApA
QCAtNzEsNyArNzAsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cE1lc3NhZ2Uo
U291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKSBjb25zdAogewogICAgIGdfb2JqZWN0X3NldChzb3Vw
TWVzc2FnZSwgU09VUF9NRVNTQUdFX01FVEhPRCwgaHR0cE1ldGhvZCgpLnV0ZjgoKS5kYXRhKCks
IE5VTEwpOwogCi0gICAgR093blB0cjxTb3VwVVJJPiB1cmkoc291cFVSSSgpKTsKKyAgICBHVW5p
cXVlUHRyPFNvdXBVUkk+IHVyaShzb3VwVVJJKCkpOwogICAgIHNvdXBfbWVzc2FnZV9zZXRfdXJp
KHNvdXBNZXNzYWdlLCB1cmkuZ2V0KCkpOwogCiAgICAgdXBkYXRlU291cE1lc3NhZ2VNZW1iZXJz
KHNvdXBNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCmluZGV4IDU0MTZkYmIuLmUz
NjJmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtMjEsNyArMjEsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKIAotI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGls
cy5jcHAKaW5kZXggNTUzYmFkOS4uZWE4OTAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKQEAgLTE5LDggKzE5LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTb3VwVVJJVXRpbHMuaCIKIAotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBub3Qgd2FudCB0
byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCiBVUkwg
c291cFVSSVRvS1VSTChTb3VwVVJJKiBzb3VwVVJJKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHVy
bFN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNFKSk7
CiAgICAgVVJMIHVybChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsK
IAogICAgIGlmICghc291cFVSSS0+cGFzc3dvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAppbmRleCBmYjU1NzM4Li43NDU3OTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5j
cHAKQEAgLTI2LDkgKzI2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQogICAgIDogbV9zaXplKDApCisg
ICAgLCBtX3NvdXBCdWZmZXIoc291cEJ1ZmZlcikKIHsKICAgICBBU1NFUlQoc291cEJ1ZmZlcik7
Ci0gICAgbV9zb3VwQnVmZmVyLnNldChzb3VwQnVmZmVyKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1
ZmZlcikKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6d3JhcFNvdXBCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKIAogdm9pZCBTaGFy
ZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkKIHsKLSAgICBtX3NvdXBCdWZmZXIuY2xlYXIo
KTsKKyAgICBtX3NvdXBCdWZmZXIucmVzZXQoKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OnRy
eVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXIqIG5ld0NvbnRl
bnRzKQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBs
YXRmb3JtRGF0YSgpCiAKICAgICAvLyBIYW5nIG9uIHRvIHRoZSBtX3NvdXBCdWZmZXIgcG9pbnRl
ciBpbiBhIGxvY2FsIHBvaW50ZXIgYXMgYXBwZW5kKCkgd2lsbCByZS1lbnRlciBtYXliZVRyYW5z
ZmVyUGxhdGZvcm1EYXRhKCkKICAgICAvLyBhbmQgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gZWFy
bHkgcmV0dXJuIHdoZW4gaXQgZG9lcy4KLSAgICBHT3duUHRyPFNvdXBCdWZmZXI+IHNvdXBCdWZm
ZXI7CisgICAgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiBzb3VwQnVmZmVyOwogICAgIHNvdXBCdWZm
ZXIuc3dhcChtX3NvdXBCdWZmZXIpOwogCiAgICAgYXBwZW5kKHNvdXBCdWZmZXItPmRhdGEsIHNv
dXBCdWZmZXItPmxlbmd0aCk7CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpt
YXliZVRyYW5zZmVyUGxhdGZvcm1EYXRhKCkKIAogYm9vbCBTaGFyZWRCdWZmZXI6Omhhc1BsYXRm
b3JtRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cEJ1ZmZlcjsKKyAgICByZXR1cm4g
bV9zb3VwQnVmZmVyLmdldCgpOwogfQogCiBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OnBsYXRm
b3JtRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9Q
bHVnaW5QYWNrYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblBh
Y2thZ2VHdGsuY3BwCmluZGV4IDkyNmE3ZDkuLmE4MWY1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblBhY2thZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvZ3RrL1BsdWdpblBhY2thZ2VHdGsuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAKLSNpbmNs
dWRlICJHT3duUHRyR3RrLmgiCiAjaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
Im5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGVidWcuaCIKICNpbmNsdWRlIDxn
aW8vZ2lvLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsNyArNzIs
NyBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAKICAgICBnY2hhcioqIG1pbWVE
ZXNjcyA9IGdfc3Ryc3BsaXQodHlwZXMsICI7IiwgLTEpOwogICAgIGZvciAoaW50IGkgPSAwOyBt
aW1lRGVzY3NbaV0gJiYgbWltZURlc2NzW2ldWzBdOyBpKyspIHsKLSAgICAgICAgR093blB0cjxj
aGFyPiBtaW1lKGdfdXRmOF9zdHJkb3duKG1pbWVEZXNjc1tpXSwgLTEpKTsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBtaW1lKGdfdXRmOF9zdHJkb3duKG1pbWVEZXNjc1tpXSwgLTEpKTsKICAg
ICAgICAgZ2NoYXIqKiBtaW1lRGF0YSA9IGdfc3Ryc3BsaXQobWltZS5nZXQoKSwgIjoiLCAzKTsK
ICAgICAgICAgaWYgKGdfc3Rydl9sZW5ndGgobWltZURhdGEpIDwgMykgewogICAgICAgICAgICAg
Z19zdHJmcmVldihtaW1lRGF0YSk7CkBAIC0xMjksMjIgKzEyOSwyMiBAQCBib29sIFBsdWdpblBh
Y2thZ2U6OmxvYWQoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHT3duUHRy
PGdjaGFyPiBmaW5hbFBhdGgoZ19zdHJkdXAobV9wYXRoLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBmaW5hbFBhdGgoZ19zdHJkdXAobV9wYXRoLnV0ZjgoKS5kYXRhKCkp
KTsKICAgICB3aGlsZSAoZ19maWxlX3Rlc3QoZmluYWxQYXRoLmdldCgpLCBHX0ZJTEVfVEVTVF9J
U19TWU1MSU5LKSkgewogICAgICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoZmluYWxQYXRoLmdldCgpKSk7CiAgICAgICAgIEdSZWZQdHI8R0Zp
bGU+IGRpciA9IGFkb3B0R1JlZihnX2ZpbGVfZ2V0X3BhcmVudChmaWxlLmdldCgpKSk7Ci0gICAg
ICAgIEdPd25QdHI8Z2NoYXI+IGxpbmtQYXRoKGdfZmlsZV9yZWFkX2xpbmsoZmluYWxQYXRoLmdl
dCgpLCAwKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGxpbmtQYXRoKGdfZmlsZV9yZWFk
X2xpbmsoZmluYWxQYXRoLmdldCgpLCAwKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IHJlc29s
dmVkRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVzb2x2ZV9yZWxhdGl2ZV9wYXRoKGRpci5nZXQo
KSwgbGlua1BhdGguZ2V0KCkpKTsKLSAgICAgICAgZmluYWxQYXRoLnNldChnX2ZpbGVfZ2V0X3Bh
dGgocmVzb2x2ZWRGaWxlLmdldCgpKSk7CisgICAgICAgIGZpbmFsUGF0aC5yZXNldChnX2ZpbGVf
Z2V0X3BhdGgocmVzb2x2ZWRGaWxlLmdldCgpKSk7CiAgICAgfQogCiAgICAgLy8gTm8gam9rZS4g
SWYgdGhlcmUgaXMgYSBuZXRzY2FwZSBjb21wb25lbnQgaW4gdGhlIHBhdGgsIGdvIGJhY2sKICAg
ICAvLyB0byB0aGUgc3ltbGluaywgYXMgZmxhc2ggYnJlYWtzIG90aGVyd2lzZS4KICAgICAvLyBT
ZWUgaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvd2Via2l0
L2dsdWUvcGx1Z2lucy9wbHVnaW5fbGlzdF9wb3NpeC5jYwotICAgIEdPd25QdHI8Z2NoYXI+IGJh
c2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUoZmluYWxQYXRoLmdldCgpKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZShmaW5hbFBhdGguZ2V0KCkp
KTsKICAgICBpZiAoIWdfc3RyY21wMChiYXNlTmFtZS5nZXQoKSwgImxpYmZsYXNocGxheWVyLnNv
IikKICAgICAgICAgJiYgZ19zdHJzdHJfbGVuKGZpbmFsUGF0aC5nZXQoKSwgLTEsICIvbmV0c2Nh
cGUvIikpCi0gICAgICAgIGZpbmFsUGF0aC5zZXQoZ19zdHJkdXAobV9wYXRoLnV0ZjgoKS5kYXRh
KCkpKTsKKyAgICAgICAgZmluYWxQYXRoLnJlc2V0KGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0
YSgpKSk7CiAKICAgICBtX21vZHVsZSA9IGdfbW9kdWxlX29wZW4oZmluYWxQYXRoLmdldCgpLCBH
X01PRFVMRV9CSU5EX0xPQ0FMKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRiOTdhZWEuLjdhMTBk
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxNC0wMS0yMiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dMSUJdIFVz
ZSBHVW5pcXVlUHRyIGluc3RlYWQgb2YgR093blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgR1VuaXF1ZVB0ciBpcyBhIHRlbXBsYXRlIGFsaWFzIG9m
IHN0ZDo6dW5pcXVlX3B0ciB3aXRoIGEgY3VzdG9tCisgICAgICAgIGRlbGV0ZXIgdGhhdCByZXBs
YWNlcyBHT3duUHRyLiBHT3duUHRyIGlzIHN0aWxsIHVzZWQgZm9yIHRoZSBjYXNlcworICAgICAg
ICB3aGVyZSB0aGUgb3V0cHV0IHBvaW50ZXIgaXMgbmVlZGVkLCBidXQgaXQgd2lsbCBhbHNvIGJl
IHJlcGxhY2VkIHNvb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldFVuaWNvZGVNZW51SXRlbVBvc2l0aW9u
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2Vu
dCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJh
c2UuY3BwOgorICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0YWJhc2Vfc2V0X3BhdGgpOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXRmaWxlY2hvb3NlcnJlcXVlc3QuY3BwOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXRnbG9iYWxzLmNwcDoKKyAgICAgICAgKHdlYmtpdEluaXQpOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6a2l0KToK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtp
dF9pY29uX2RhdGFiYXNlX3NldF9wYXRoKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0c3BlbGxj
aGVja2VyZW5jaGFudC5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3BsdWdpbl9nZXRfcGF0aCk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnBsdWdpbnByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2ZvcndhcmRfY29udGV4dF9t
ZW51X2V2ZW50KToKKyAgICAgICAgKGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOgorCiAyMDE0LTAxLTE4ICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBhZ2Ugc2hvdWxkIHVzZSBzdGQ6
OnVuaXF1ZV9wdHIgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcAppbmRl
eCA5ZWI3NWRlLi5hYjVmNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IHN0YXRpYyBHdGtXaWRnZXQqIGlucHV0TWV0aG9kc01lbnVJdGVtIChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogCiBzdGF0aWMgaW50IGdldFVuaWNvZGVNZW51SXRlbVBvc2l0aW9uKEd0a01lbnUq
IG1lbnUpCiB7Ci0gICAgR093blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hp
bGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkpOworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGl0ZW1z
KGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBp
bnQgdW5pY29kZU1lbnVJdGVtUG9zaXRpb24gPSAtMTsKICAgICBHTGlzdCogaXRlcjsKICAgICBp
bnQgaSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuY3BwCmluZGV4IDA5MDU1ZWIuLjExMTE3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAjaW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHT3duUHRyR3RrLmgiCiAjaW5jbHVkZSAiR1Jl
ZlB0ckd0ay5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJHdGtWZXJz
aW9uaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXN0ZWJv
YXJkLmgiCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJ
bWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoa2l0KCZm
cmFtZSkpOwogICAgIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0ID0gY2xpcGJvYXJk
LnBhc3RlYm9hcmQoKS5kYXRhT2JqZWN0KCk7CiAgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0
YXJnZXRMaXN0ID0gYWRvcHRHUmVmKFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJk
SGVscGVyKCktPnRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmplY3QuZ2V0KCkpKTsKLSAg
ICBHT3duUHRyPEdka0V2ZW50PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkp
OworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRf
ZXZlbnQoKSk7CiAKICAgICBHZGtEcmFnQ29udGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2lu
KEdUS19XSURHRVQobV93ZWJWaWV3KSwgdGFyZ2V0TGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMoY2xpcGJvYXJkLnNvdXJjZU9wZXJhdGlvbigpKSwgMSwgY3VycmVudEV2
ZW50LmdldCgpKTsKICAgICB3ZWJWaWV3LT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5zdGFydGVk
RHJhZyhjb250ZXh0LCBkYXRhT2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
CmluZGV4IDhjOWU3NjIuLmFmYTZhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAt
NDg3LDcgKzQ4Nyw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRWYWx1ZUZv
clVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYKICAgICAgICAgcmV0dXJuOwog
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUodmFsdWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IHZhbHVlQnVmZmVyKHN0YXRpY19jYXN0PGdj
aGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB2YWx1
ZUJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAg
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh2YWx1ZSwgdmFsdWVCdWZmZXIuZ2V0KCksIGJ1ZmZlclNp
emUpOwogICAgIGlucHV0RWxlbWVudC0+c2V0VmFsdWVGb3JVc2VyKFN0cmluZzo6ZnJvbVVURjgo
dmFsdWVCdWZmZXIuZ2V0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKaW5kZXggNWY1MWNmYy4uYjQ4N2I2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAog
I2lmIEVOQUJMRShTUEVMTENIRUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGExMDE4MTUuLjJh
MjQ2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlIDxz
dGRpby5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oPgogCkBAIC0xMjMsNyArMTI0LDcgQEAgRnJhbWVMb2FkZXJDbGllbnQ6On5G
cmFtZUxvYWRlckNsaWVudCgpCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSkpOwotICAg
IEdPd25QdHI8Z2NoYXI+IHVzZXJBZ2VudFN0cmluZyh3ZWJraXRXZWJTZXR0aW5nc1VzZXJBZ2Vu
dEZvclVSSShzZXR0aW5ncywgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiB1c2VyQWdlbnRTdHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRG
b3JVUkkoc2V0dGluZ3MsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgodXNlckFnZW50U3RyaW5nLmdldCgpKTsKIH0KIApAQCAtMjA0LDcg
KzIwNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtCiAgICAgaWYgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpKSB7CiAgICAgICAgIENTdHJp
bmcgdXNlcm5hbWU7CiAgICAgICAgIENTdHJpbmcgcGFzc3dvcmQ7Ci0gICAgICAgIEdPd25QdHI8
Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOworICAgICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5nKGlkZW50aWZpZXIpKTsK
ICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0gd2Via2l0X3dlYl92aWV3
X2dldF9yZXNvdXJjZSh2aWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKICAgICAgICAgaWYg
KCFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfYXV0aGVudGljYXRpb25DYWxsYmFjayB8fCAh
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2F1dGhlbnRpY2F0aW9uQ2FsbGJhY2sodXNlcm5h
bWUsIHBhc3N3b3JkLCB3ZWJSZXNvdXJjZSkpIHsKICAgICAgICAgICAgIGNoYWxsZW5nZS5hdXRo
ZW50aWNhdGlvbkNsaWVudCgpLT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRl
bnRpYWwoY2hhbGxlbmdlKTsKQEAgLTI0NCw3ICsyNDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9h
ZGVyLAogICAgICAgICBuZXR3b3JrUmVzcG9uc2UgPSBhZG9wdEdSZWYoa2l0TmV3KHJlZGlyZWN0
UmVzcG9uc2UpKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZy
YW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJp
bmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmco
dG9TdHJpbmcoaWRlbnRpZmllcikpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJj
ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmlu
Zy5nZXQoKSk7CiAgICAgR1JlZlB0cjxXZWJLaXROZXR3b3JrUmVxdWVzdD4gbmV0d29ya1JlcXVl
c3QoYWRvcHRHUmVmKGtpdE5ldyhyZXF1ZXN0KSkpOwogCkBAIC0yNzAsNyArMjcxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6YXNzaWduSWRl
bnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgR093blB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlm
aWVyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhp
ZGVudGlmaWVyKSk7CiAKICAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSBXRUJL
SVRfV0VCX1JFU09VUkNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUkVTT1VSQ0UsICJ1
cmkiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIDApKTsKIApAQCAtMzAw
LDcgKzMwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgbV9yZXNwb25zZSA9IHJl
c3BvbnNlOwogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUo
bV9mcmFtZSk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhp
ZGVudGlmaWVyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0
cmluZyhpZGVudGlmaWVyKSk7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0g
d2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZSh3ZWJWaWV3LCBpZGVudGlmaWVyU3RyaW5nLmdl
dCgpKTsKICAgICBHUmVmUHRyPFdlYktpdE5ldHdvcmtSZXNwb25zZT4gbmV0d29ya1Jlc3BvbnNl
KGFkb3B0R1JlZihraXROZXcocmVzcG9uc2UpKSk7CiAKQEAgLTk0Miw3ICs5NDMsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgVVJMJiB1cgogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRl
bnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CiAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UqIHdlYlJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZSh3ZWJW
aWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZSh3ZWJSZXNvdXJjZSwgImNvbnRlbnQtbGVuZ3RoLXJlY2VpdmVkIiwgZGF0YUxlbmd0aCk7CkBA
IC05NTUsNyArOTU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIKICAgICBzdGF0aWNfY2Fz
dDxXZWJLaXQ6OkRvY3VtZW50TG9hZGVyKj4obG9hZGVyKS0+ZGVjcmVhc2VMb2FkQ291bnQoaWRl
bnRpZmllcik7CiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFt
ZShtX2ZyYW1lKTsKLSAgICBHT3duUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5n
KGlkZW50aWZpZXIpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRv
U3RyaW5nKGlkZW50aWZpZXIpKTsKICAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2Ug
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jlc291cmNlKHdlYlZpZXcsIGlkZW50aWZpZXJTdHJpbmcu
Z2V0KCkpOwogCiAgICAgLy8gQSBOVUxMIFdlYlJlc291cmNlIG1lYW5zIHRoZSBsb2FkIGhhcyBi
ZWVuIGludGVycnVwdGVkLCBhbmQKQEAgLTk4OCw3ICs5ODksNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIsCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpEb2N1bWVudExvYWRlcio+KGxvYWRlcikt
PmRlY3JlYXNlTG9hZENvdW50KGlkZW50aWZpZXIpOwogCiAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRl
bnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CiAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UqIHdlYlJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9yZXNvdXJjZSh3ZWJW
aWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIAogICAgIC8vIEEgTlVMTCBXZWJSZXNvdXJj
ZSBtZWFucyB0aGUgbG9hZCBoYXMgYmVlbiBpbnRlcnJ1cHRlZCwgYW5kCkBAIC05OTYsOSArOTk3
LDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJD
b3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLAogICAgIGlmICghd2ViUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19s
aXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Iu
ZXJyb3JDb2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
R1VuaXF1ZVB0cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19m
cm9tX3N0cmluZyhlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgZXJyb3Iu
ZXJyb3JDb2RlKCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkp
OwogCiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlJlc291cmNlLCAibG9hZC1mYWlsZWQi
LCB3ZWJFcnJvci5nZXQoKSk7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJy
ZXNvdXJjZS1sb2FkLWZhaWxlZCIsIHdlYlJlc291cmNlLCB3ZWJFcnJvci5nZXQoKSk7CkBAIC0x
MDI2LDcgKzEwMjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIG5vdGlmeVN0YXR1cyhtX2ZyYW1l
LCBXRUJLSVRfTE9BRF9GQUlMRUQpOwogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdl
dFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7Ci0gICAgR093blB0cjxHRXJyb3I+IHdlYkVycm9yKGdf
ZXJyb3JfbmV3X2xpdGVyYWwoCisgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJy
b3JfbmV3X2xpdGVyYWwoCiAgICAgICAgIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWlu
KCkudXRmOCgpLmRhdGEoKSksCiAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLAogICAgICAgICBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKQEAgLTEwMzksNyAr
MTAzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgbV9sb2FkaW5nRXJyb3JQYWdlID0gdHJ1ZTsK
IAogICAgIFN0cmluZyBjb250ZW50OwotICAgIEdPd25QdHI8Z2NoYXI+IGVycm9yUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKHNoYXJlZFJlc291cmNlc1BhdGgoKS5kYXRhKCksICJyZXNvdXJjZXMiLCAi
ZXJyb3IuaHRtbCIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBlcnJvclBhdGgoZ19i
dWlsZF9maWxlbmFtZShzaGFyZWRSZXNvdXJjZXNQYXRoKCkuZGF0YSgpLCAicmVzb3VyY2VzIiwg
ImVycm9yLmh0bWwiLCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZXJyb3JGaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZXJyb3JQYXRoLmdldCgpKSk7CiAKICAgICBpZiAo
IWVycm9yRmlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggNzE0MWNmZi4uYjkyYThkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgK
QEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKICNpbmNs
dWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUGFnZTsKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJLaXRX
ZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVu
ZFBhZ2U7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7Ci0g
ICAgR093blB0cjxnY2hhcj4gbV9pbnNwZWN0b3JGaWxlc1BhdGg7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gbV9pbnNwZWN0b3JGaWxlc1BhdGg7CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5j
cHAKaW5kZXggMGUyY2U2Yy4uMWQ5NjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNs
dWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIC8qKgpAQCAt
MTg4LDcgKzE4OCw3IEBAIHR5cGVkZWYgVmVjdG9yPE93blB0cjxQZW5kaW5nSWNvblJlcXVlc3Q+
ID4gUGVuZGluZ0ljb25SZXF1ZXN0VmVjdG9yOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUGVu
ZGluZ0ljb25SZXF1ZXN0VmVjdG9yKj4gUGVuZGluZ0ljb25SZXF1ZXN0TWFwOwogCiBzdHJ1Y3Qg
X1dlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUgewotICAgIEdPd25QdHI8Z2NoYXI+IHBhdGg7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGF0aDsKICAgICBJY29uRGF0YWJhc2VDbGllbnRHdGsg
aWNvbkRhdGFiYXNlQ2xpZW50OwogICAgIFBlbmRpbmdJY29uUmVxdWVzdE1hcCBwZW5kaW5nSWNv
blJlcXVlc3RzOwogICAgIGJvb2wgaW1wb3J0RmluaXNoZWQ7CkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9zZXRfcGF0aChXZWJLaXRGYXZpY29uRGF0YWJh
c2UqIGRhdGFiYXNlLCBjb25zdCBnY2gKIAogICAgIGRhdGFiYXNlLT5wcml2LT5pbXBvcnRGaW5p
c2hlZCA9IGZhbHNlOwogICAgIGlmICghcGF0aCB8fCAhcGF0aFswXSkgewotICAgICAgICBkYXRh
YmFzZS0+cHJpdi0+cGF0aC5zZXQoMCk7CisgICAgICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJl
c2V0KCk7CiAgICAgICAgIGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25f
ZGF0YWJhc2Vfc2V0X3BhdGgoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3Qg
Z2NoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5z
ZXQoZ19zdHJkdXAocGF0aCkpOworICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KGdfc3Ry
ZHVwKHBhdGgpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRmaWxlY2hvb3NlcnJlcXVlc3QuY3BwCmluZGV4IGMxMzczZWQuLjFhMjI4NTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmaWxlY2hvb3NlcnJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmaWxlY2hvb3NlcnJl
cXVlc3QuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAid2Via2l0ZmlsZWNob29zZXJy
ZXF1ZXN0cHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5j
bHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGds
b2JhbHMuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCmlu
ZGV4IGY2MWM4ZTIuLmFmZjI3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
Z2xvYmFscy5jcHAKQEAgLTUzLDggKzUzLDggQEAKICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
CiBzdGF0aWMgV2ViS2l0Q2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gV0VCS0lUX0NBQ0hFX01PREVM
X0RFRkFVTFQ7CiAKQEAgLTU1MCwxNSArNTUwLDE1IEBAIHZvaWQgd2Via2l0SW5pdCgpCiAgICAg
Ly8gdGhhdCBtYXkgb25seSBiZSBkb25lIGJ5IHRoZSBtYWluIHRocmVhZC4KICAgICBhdG9taWND
YW5vbmljYWxUZXh0RW5jb2RpbmdOYW1lKCJVVEYtOCIpOwogCi0gICAgR093blB0cjxnY2hhcj4g
ZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCks
ICJ3ZWJraXQiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRh
dGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAi
d2Via2l0IiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKICAgICB3ZWJraXRfc2V0X3dlYl9kYXRhYmFz
ZV9kaXJlY3RvcnlfcGF0aChkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAKLSAgICBHT3duUHRy
PGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3ZWJraXRndGsiLCAiYXBwbGljYXRpb25zIiwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNo
ZV9kaXIoKSwgIndlYmtpdGd0ayIsICJhcHBsaWNhdGlvbnMiLCBOVUxMKSk7CiAgICAgV2ViQ29y
ZTo6Y2FjaGVTdG9yYWdlKCkuc2V0Q2FjaGVEaXJlY3RvcnkoY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OwogCiAgICAgUGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKTsKIAot
ICAgIEdPd25QdHI8Z2NoYXI+IGljb25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXQiLCAiaWNvbmRhdGFiYXNlIiwgTlVMTCkpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGljb25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXQiLCAiaWNvbmRhdGFiYXNlIiwgTlVMTCkpOwogICAg
IHdlYmtpdF9pY29uX2RhdGFiYXNlX3NldF9wYXRoKHdlYmtpdF9nZXRfaWNvbl9kYXRhYmFzZSgp
LCBpY29uRGF0YWJhc2VQYXRoLmdldCgpKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpzZXRJZ25vcmVTU0xFcnJvcnModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggY2I0MWVkZC4uMDk2MzVjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAt
MzAsOCArMzAsOCBAQAogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHMuaCIKICNpbmNsdWRlICJ3ZWJr
aXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiAvKioKQEAgLTI4MywyNiArMjgzLDI2IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogV2ViS2l0SGl0VGVzdFJlc3VsdCoga2l0KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQmIHJlc3VsdCkKIHsKICAgICBndWludCBjb250ZXh0ID0gV0VCS0lUX0hJVF9URVNUX1JFU1VM
VF9DT05URVhUX0RPQ1VNRU5UOwotICAgIEdPd25QdHI8Y2hhcj4gbGlua1VSSSgwKTsKLSAgICBH
T3duUHRyPGNoYXI+IGltYWdlVVJJKDApOwotICAgIEdPd25QdHI8Y2hhcj4gbWVkaWFVUkkoMCk7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBsaW5rVVJJOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW1h
Z2VVUkk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtZWRpYVVSSTsKICAgICBXZWJLaXRET01Ob2Rl
KiBub2RlID0gMDsKICAgICBXZWJDb3JlOjpGcmFtZSogaW5uZXJOb2RlRnJhbWU7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQ7CiAKICAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxU
X0NPTlRFWFRfTElOSzsKLSAgICAgICAgbGlua1VSSS5zZXQoZ19zdHJkdXAocmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgbGlua1VSSS5y
ZXNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSkpOwogICAgIH0KIAogICAgIGlmICghcmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgY29udGV4dCB8PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRF
WFRfSU1BR0U7Ci0gICAgICAgIGltYWdlVVJJLnNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVJ
bWFnZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgaW1hZ2VVUkkucmVz
ZXQoZ19zdHJkdXAocmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLmlzRW1w
dHkoKSkgewogICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVY
VF9NRURJQTsKLSAgICAgICAgbWVkaWFVUkkuc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZU1l
ZGlhVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBtZWRpYVVSSS5yZXNl
dChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmlzU2VsZWN0ZWQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25kYXRhYmFzZS5jcHAKaW5kZXggNzBiNTExNC4u
NDEyZDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25k
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25kYXRh
YmFzZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJ3ZWJraXRzZWN1cml0eW9yaWdp
bnByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIC8qKgpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgZ3VpbnQgd2Via2l0X2ljb25fZGF0YWJh
c2Vfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiBHX0RFRklORV9UWVBFKFdlYktpdElj
b25EYXRhYmFzZSwgd2Via2l0X2ljb25fZGF0YWJhc2UsIEdfVFlQRV9PQkpFQ1QpOwogCiBzdHJ1
Y3QgX1dlYktpdEljb25EYXRhYmFzZVByaXZhdGUgewotICAgIEdPd25QdHI8Z2NoYXI+IHBhdGg7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGF0aDsKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9p
Y29uX2RhdGFiYXNlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKQEAgLTIzNCwxMiArMjM0LDEy
IEBAIHZvaWQgd2Via2l0X2ljb25fZGF0YWJhc2Vfc2V0X3BhdGgoV2ViS2l0SWNvbkRhdGFiYXNl
KiBkYXRhYmFzZSwgY29uc3QgZ2NoYXIqIHBhCiAgICAgICAgIFdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLmNsb3NlKCk7CiAKICAgICBpZiAoIShwYXRoICYmIHBhdGhbMF0pKSB7Ci0gICAgICAgIGRh
dGFiYXNlLT5wcml2LT5wYXRoLnNldCgwKTsKKyAgICAgICAgZGF0YWJhc2UtPnByaXYtPnBhdGgu
cmVzZXQoKTsKICAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5z
ZXQoZ19zdHJkdXAocGF0aCkpOworICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KGdfc3Ry
ZHVwKHBhdGgpKTsKIAogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQodHJ1
ZSk7CiAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkub3BlbihXZWJDb3JlOjpmaWxlbmFtZVRv
U3RyaW5nKGRhdGFiYXNlLT5wcml2LT5wYXRoLmdldCgpKSwgV2ViQ29yZTo6SWNvbkRhdGFiYXNl
OjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcAppbmRleCBlNDYxNDA4Li4w
YzRkNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxj
aGVja2VyZW5jaGFudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNw
ZWxsY2hlY2tlcmVuY2hhbnQuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAid2Via2l0
c3BlbGxjaGVja2VyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKaW5kZXggNzNiNDJlZS4uY2VjNjE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKQEAgLTI0
LDYgKzI0LDcgQEAKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnBsdWdpbnByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIAogLyoqCiAgKiBTRUNUSU9OOndlYmtp
dHdlYnBsdWdpbgpAQCAtMTkyLDE0ICsxOTMsMTQgQEAgY29uc3QgY2hhciogd2Via2l0X3dlYl9w
bHVnaW5fZ2V0X3BhdGgoV2ViS2l0V2ViUGx1Z2luKiBwbHVnaW4pCiAgICAgICAgIHJldHVybiBw
cml2LT5wYXRoLmdldCgpOwogCiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIHByaXYt
PnBhdGguc2V0KGdfZmlsZW5hbWVfZnJvbV91dGY4KHByaXYtPmNvcmVQbHVnaW4tPnBhdGgoKS51
dGY4KCkuZGF0YSgpLCAtMSwgMCwgMCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgcHJpdi0+cGF0
aC5yZXNldChnX2ZpbGVuYW1lX2Zyb21fdXRmOChwcml2LT5jb3JlUGx1Z2luLT5wYXRoKCkudXRm
OCgpLmRhdGEoKSwgLTEsIDAsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogCiAgICAgaWYgKCFlcnJv
cikKICAgICAgICAgcmV0dXJuIHByaXYtPnBhdGguZ2V0KCk7CiAKICAgICAvLyBJbiB0aGUgdW5s
aWtlbHkgY2FzZSB0aGUgY29udmVydGlvbiBmYWlscywgcmVwb3J0IHRoZSBlcnJvciBhbmQgbWFr
ZSBzdXJlIHdlIGZyZWUKICAgICAvLyBhbnkgcGFydGlhbCBjb252ZXJ0aW9uIHRoYXQgZW5kZWQg
dXAgaW4gdGhlIHZhcmlhYmxlLgotICAgIHByaXYtPnBhdGguY2xlYXIoKTsKKyAgICBwcml2LT5w
YXRoLnJlc2V0KCk7CiAKICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBjb252ZXJ0ICclcycgdG8g
c3lzdGVtIGZpbGVuYW1lIGVuY29kaW5nOiAlcyIsIHByaXYtPmNvcmVQbHVnaW4tPnBhdGgoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VicGx1Z2lucHJpdmF0ZS5oCmluZGV4IDUwN2Y3MmUuLmVkMjE3Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbnByaXZh
dGUuaApAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAid2Via2l0d2VicGx1Z2luLmgiCiAj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksNyArMzksNyBAQCBzdHJ1
Y3QgX1dlYktpdFdlYlBsdWdpblByaXZhdGUgewogICAgIFJlZlB0cjxXZWJDb3JlOjpQbHVnaW5Q
YWNrYWdlPiBjb3JlUGx1Z2luOwogICAgIENTdHJpbmcgbmFtZTsKICAgICBDU3RyaW5nIGRlc2Ny
aXB0aW9uOwotICAgIEdPd25QdHI8Y2hhcj4gcGF0aDsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGg7CiAgICAgR1NMaXN0KiBtaW1lVHlwZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAwOWFjY2Y4Li4zYWNlZWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdHZlcnNpb24uaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCIK
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+
CkBAIC00ODQsNyArNDg0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFz
c19pbml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3MqIGtsYXNzKQogICAgICoKICAgICAqIFNpbmNl
OiAxLjUuMgogICAgICovCi0gICAgR093blB0cjxnY2hhcj4gbG9jYWxTdG9yYWdlUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdCIsICJkYXRhYmFzZXMi
LCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbG9jYWxTdG9yYWdlUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdCIsICJkYXRhYmFzZXMiLCBO
VUxMKSk7CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9IVE1MNV9MT0NBTF9T
VE9SQUdFX0RBVEFCQVNFX1BBVEgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJodG1sNS1sb2NhbC1zdG9yYWdlLWRhdGFiYXNlLXBhdGgi
LApAQCAtMTQ4MCw5ICsxNDgwLDkgQEAgV2ViS2l0V2ViU2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0
dGluZ3NfbmV3KCkKIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHko
V2ViS2l0V2ViU2V0dGluZ3MqIG9yaWdpbmFsKQogewogICAgIHVuc2lnbmVkIG51bWJlck9mUHJv
cGVydGllcyA9IDA7Ci0gICAgR093blB0cjxHUGFyYW1TcGVjKj4gcHJvcGVydGllcyhnX29iamVj
dF9jbGFzc19saXN0X3Byb3BlcnRpZXMoCisgICAgR1VuaXF1ZVB0cjxHUGFyYW1TcGVjKj4gcHJv
cGVydGllcyhnX29iamVjdF9jbGFzc19saXN0X3Byb3BlcnRpZXMoCiAgICAgICAgIEdfT0JKRUNU
X0NMQVNTKFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX0NMQVNTKG9yaWdpbmFsKSksICZudW1iZXJP
ZlByb3BlcnRpZXMpKTsKLSAgICBHT3duUHRyPEdQYXJhbWV0ZXI+IHBhcmFtZXRlcnMoZ19uZXcw
KEdQYXJhbWV0ZXIsIG51bWJlck9mUHJvcGVydGllcykpOworICAgIEdVbmlxdWVQdHI8R1BhcmFt
ZXRlcj4gcGFyYW1ldGVycyhnX25ldzAoR1BhcmFtZXRlciwgbnVtYmVyT2ZQcm9wZXJ0aWVzKSk7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mUHJvcGVydGllczsgaSsrKSB7
CiAgICAgICAgIEdQYXJhbVNwZWMqIHByb3BlcnR5ID0gcHJvcGVydGllcy5nZXQoKVtpXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBiNGY5YTljLi4z
NWQ4ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBA
IC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVk
ZSAiR093blB0ckd0ay5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJHdGsuaCIKICNpbmNsdWRlICJH
ZW9sb2NhdGlvbkNsaWVudEd0ay5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDE5LDcgKzQxOSw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9yd2FyZF9jb250ZXh0X21lbnVfZXZlbnQoV2Vi
S2l0V2ViVmlldyogd2ViVmllCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCB3ZWJraXRfd2Vi
X3ZpZXdfc2lnbmFsc1tQT1BVTEFURV9QT1BVUF0sIDAsIGRlZmF1bHRNZW51KTsKIAogICAgIC8v
IElmIHRoZSBjb250ZXh0IG1lbnUgaXMgbm93IGVtcHR5LCBkb24ndCBzaG93IGl0LgotICAgIEdP
d25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlO
RVIoZGVmYXVsdE1lbnUpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRh
aW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihkZWZhdWx0TWVudSkpKTsKICAgICBpZiAo
IWl0ZW1zKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHN0
YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRp
YWxvZywgZ2ludCByZXNwb25zZUlECiB7CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3Q+IGFkb3B0ZWRSZXF1ZXN0ID0gYWRvcHRHUmVmKHJlcXVlc3QpOwogICAgIGlmIChyZXNw
b25zZUlEID09IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKLSAgICAgICAgR093blB0cjxHU0xpc3Q+
IGZpbGVzTGlzdChndGtfZmlsZV9jaG9vc2VyX2dldF9maWxlbmFtZXMoR1RLX0ZJTEVfQ0hPT1NF
UihkaWFsb2cpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBmaWxlc0xpc3QoZ3RrX2Zp
bGVfY2hvb3Nlcl9nZXRfZmlsZW5hbWVzKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSkpOwogICAg
ICAgICBHUmVmUHRyPEdQdHJBcnJheT4gZmlsZXNBcnJheSA9IGFkb3B0R1JlZihnX3B0cl9hcnJh
eV9uZXcoKSk7CiAgICAgICAgIGZvciAoR1NMaXN0KiBmaWxlID0gZmlsZXNMaXN0LmdldCgpOyBm
aWxlOyBmaWxlID0gZ19zbGlzdF9uZXh0KGZpbGUpKQogICAgICAgICAgICAgZ19wdHJfYXJyYXlf
YWRkKGZpbGVzQXJyYXkuZ2V0KCksIGZpbGUtPmRhdGEpOwpAQCAtMTUxMiw3ICsxNTEyLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtEcmFnQ29udGV4dCogY29udGV4dCkKICAgICBGcmFtZSYgZnJhbWUgPSBjb3JlKHdlYlZpZXcp
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIC8vIFN5bnRo
ZXNpemUgYSBidXR0b24gcmVsZWFzZSBldmVudCB0byBzZW5kIHdpdGggdGhlIGRyYWcgZW5kIGFj
dGlvbi4KLSAgICBHT3duUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19CVVRU
T05fUkVMRUFTRSkpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9u
ZXcoR0RLX0JVVFRPTl9SRUxFQVNFKSk7CiAgICAgaW50IHgsIHksIHhSb290LCB5Um9vdDsKICAg
ICBHZGtNb2RpZmllclR5cGUgbW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8R2RrTW9kaWZpZXJUeXBl
PigwKTsKICNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCBhZWVmYmQwLi5iNWU2OTc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIldlYlZpZXdJbnB1dE1ldGhvZEZpbHRlci5oIgogI2lu
Y2x1ZGUgIldpZGdldEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXR3ZWJ2
aWV3Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRHdGsuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCAwMzVjYmJjLi5hYmFlZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODYgQEAKIDIwMTQtMDEt
MjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAg
IFtHTElCXSBVc2UgR1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdVbmlxdWVQdHIgaXMgYSB0ZW1wbGF0
ZSBhbGlhcyBvZiBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBhIGN1c3RvbQorICAgICAgICBkZWxldGVy
IHRoYXQgcmVwbGFjZXMgR093blB0ci4gR093blB0ciBpcyBzdGlsbCB1c2VkIGZvciB0aGUgY2Fz
ZXMKKyAgICAgICAgd2hlcmUgdGhlIG91dHB1dCBwb2ludGVyIGlzIG5lZWRlZCwgYnV0IGl0IHdp
bGwgYWxzbyBiZSByZXBsYWNlZCBzb29uLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9z
b3VwL0Rvd25sb2FkU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2
ZW50Lmg6CisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaDoKKyAgICAgICAg
KiBTaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjplbmNvZGVHS2V5RmlsZSk6CisgICAg
ICAgIChJUEM6OmRlY29kZUdLZXlGaWxlKToKKyAgICAgICAgKElQQzo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtU2V0U3ViTWVu
dUZyb21HdGtNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9h
ZC5jcHA6CisgICAgICAgICh3ZWJraXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uKToKKyAgICAg
ICAgKHdlYmtpdERvd25sb2FkTm90aWZ5UHJvZ3Jlc3MpOgorICAgICAgICAod2Via2l0RG93bmxv
YWRGYWlsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0
X2ZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHA6CisgICAgICAgIChkaWRSZWNlaXZlV2ViVmlld01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorICAgICAgICAoZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAg
ICAgICAgKGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKGRyYXdQYWdlc0Zv
clByaW50aW5nQ29tcGxldGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFk
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZSk6Cisg
ICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9wYXRoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKGluamVjdGVk
QnVuZGxlRmlsZW5hbWUpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29u
X2RhdGFiYXNlX2RpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWwpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2cpOgorICAgICAgICAoZmlsZUNob29z
ZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkQ2hh
bmdlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgor
ICAgICAgICAod2Via2l0V2ViVmlld1BvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlQnV0dG9uUHJlc3NFdmVudCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0
YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5z
cGVjdG9yU2VydmVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVy
OjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
b25uZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJv
Y2Vzc0xhdW5jaGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjps
YXVuY2hQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1E
ZWZhdWx0RGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb250ZXh0TWVudUl0ZW1WaXNpYmlsaXR5Q2hhbmdlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENoYW5nZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVQcm94eUd0azo6Y3JlYXRlR3RrQWN0aW9uRm9yTWVudUl0ZW0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3Nv
dXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU291cFJl
cXVlc3RNYW5hZ2VyOjpzZW5kKToKKworMjAxNC0wMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgUkVHUkVTU0lPTihyMTYyNDQxKTogW0dU
S10gUmVzb3VyY2VMb2FkZXIgaXMgYnJva2VuIHdoZW4gdGhlcmUgYXJlbid0IHVzZXIgZXh0ZW5z
aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3
NDIyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9E
b3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHAKaW5kZXggMjhiMWRjZC4uODZjZGNlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTQsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
ZGVzdGluYXRpb25VUkkgPSBtX2Rvd25sb2FkLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSwgb3ZlcndyaXRlKTsKICAgICAgICAgaWYgKG1f
ZGVzdGluYXRpb25VUkkuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAg
ICAgR093blB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1p
bmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAl
cyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGJ1ZmZlcihnX3N0cmR1cF9wcmludGYoXygiQ2Fubm90IGRldGVybWluZSBk
ZXN0aW5hdGlvbiBVUkkgZm9yIGRvd25sb2FkIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICVzIiks
IHN1Z2dlc3RlZEZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CiAjZWxzZQogICAg
ICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIkNhbm5vdCBkZXRlcm1p
bmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAi
LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YktleWJvYXJkRXZlbnQuaAppbmRleCBjMTdiMzQyLi5kZmM4M2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKQEAgLTM0LDggKzM0LDggQEAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIE5TVmlldzsKICNlbGlmIFBM
QVRGT1JNKEdUSykKLSNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b21wb3NpdGlvblJlc3VsdHMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0d0a0lucHV0TWV0aG9kRmlsdGVyLmg+CiB0eXBlZGVmIHVuaW9u
IF9HZGtFdmVudCBHZGtFdmVudDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKQEAgLTc5LDcgKzc5LDcg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQVBQS0lUKQogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25h
dGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1f
bmF0aXZlRXZlbnQ7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICAg
ICBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMgbV9jb21wb3NpdGlvblJlc3VsdHM7CiAgICAg
Ym9vbCBtX2Zha2VFdmVudEZvckNvbXBvc2l0aW9uOwogI2VsaWYgUExBVEZPUk0oRUZMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKaW5kZXggZTFkNGQyYS4u
MmI3N2ZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNl
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViTW91c2VFdmVudC5o
CkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogT0JKQ19DTEFT
UyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8R093blB0ckd0ay5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZl
bnQgR2RrRXZlbnQ7CiAjZWxpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8RXZhcy5oPgpAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogI2lmIFVTRShBUFBLSVQpCiAgICAgUmV0YWluUHRyPE5T
RXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgR093blB0cjxH
ZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBtX25hdGl2
ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oRUZMKQogICAgIGNvbnN0IHZvaWQqIG1fbmF0aXZlRXZl
bnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJX
aGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5o
CmluZGV4IDE5ZGViYWEuLmFlZDMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYldoZWVsRXZlbnQuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIE9CSkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUg
PEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KIHR5cGVk
ZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogI2VsaWYgUExBVEZPUk0oRUZMKQogI2luY2x1
ZGUgPEV2YXMuaD4KQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQVBQS0lUKQog
ICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VsaWYgUExBVEZPUk0oR1RL
KQotICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CisgICAgR1VuaXF1ZVB0cjxH
ZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICAgICBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDExMmU3OTgu
LjQyYzNhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjM3LDExICsyMzcs
MTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXQKIHN0YXRpYyB2b2lkIGVuY29kZUdLZXlGaWxl
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgR0tleUZpbGUqIGtleUZpbGUpCiB7CiAgICAgZ3Np
emUgZGF0YVNpemU7Ci0gICAgR093blB0cjxjaGFyPiBkYXRhKGdfa2V5X2ZpbGVfdG9fZGF0YShr
ZXlGaWxlLCAmZGF0YVNpemUsIDApKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRhdGEoZ19rZXlf
ZmlsZV90b19kYXRhKGtleUZpbGUsICZkYXRhU2l6ZSwgMCkpOwogICAgIGVuY29kZXIgPDwgRGF0
YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhLmdldCgpKSwgZGF0YVNp
emUpOwogfQogCi1zdGF0aWMgYm9vbCBkZWNvZGVHS2V5RmlsZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIEdPd25QdHI8R0tleUZpbGU+JiBrZXlGaWxlKQorc3RhdGljIGJvb2wgZGVjb2RlR0tl
eUZpbGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHVW5pcXVlUHRyPEdLZXlGaWxlPiYga2V5
RmlsZSkKIHsKICAgICBEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKQEAgLTI1MCw5ICsyNTAsOSBAQCBzdGF0aWMgYm9v
bCBkZWNvZGVHS2V5RmlsZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdPd25QdHI8R0tleUZp
bGU+JiBrZXlGaWxlKQogICAgIGlmICghZGF0YVJlZmVyZW5jZS5zaXplKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAga2V5RmlsZS5zZXQoZ19rZXlfZmlsZV9uZXcoKSk7CisgICAga2V5
RmlsZS5yZXNldChnX2tleV9maWxlX25ldygpKTsKICAgICBpZiAoIWdfa2V5X2ZpbGVfbG9hZF9m
cm9tX2RhdGEoa2V5RmlsZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KGRh
dGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCksIEdfS0VZX0ZJTEVfTk9O
RSwgMCkpIHsKLSAgICAgICAga2V5RmlsZS5jbGVhcigpOworICAgICAgICBrZXlGaWxlLnJlc2V0
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI2MSwxNCArMjYxLDE0IEBA
IHN0YXRpYyBib29sIGRlY29kZUdLZXlGaWxlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR093
blB0cjxHS2V5RmlsZT4mIGtleUZpbGUpCiAKIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlciwgR3RrUHJpbnRTZXR0aW5ncyogcHJpbnRTZXR0aW5ncykKIHsKLSAgICBHT3duUHRy
PEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5X2ZpbGVfbmV3KCkpOworICAgIEdVbmlxdWVQdHI8R0tl
eUZpbGU+IGtleUZpbGUoZ19rZXlfZmlsZV9uZXcoKSk7CiAgICAgZ3RrX3ByaW50X3NldHRpbmdz
X3RvX2tleV9maWxlKHByaW50U2V0dGluZ3MsIGtleUZpbGUuZ2V0KCksICJQcmludCBTZXR0aW5n
cyIpOwogICAgIGVuY29kZUdLZXlGaWxlKGVuY29kZXIsIGtleUZpbGUuZ2V0KCkpOwogfQogCiBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdSZWZQdHI8R3RrUHJpbnRTZXR0
aW5ncz4mIHByaW50U2V0dGluZ3MpCiB7Ci0gICAgR093blB0cjxHS2V5RmlsZT4ga2V5RmlsZTsK
KyAgICBHVW5pcXVlUHRyPEdLZXlGaWxlPiBrZXlGaWxlOwogICAgIGlmICghZGVjb2RlR0tleUZp
bGUoZGVjb2Rlciwga2V5RmlsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjg0LDE0
ICsyODQsMTQgQEAgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHUmVmUHRy
PEd0a1ByaW50U2V0dGluZ3M+JiBwcmludFNldHRpbmdzKQogCiB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIEd0a1BhZ2VTZXR1cCogcGFnZVNldHVwKQogewotICAgIEdPd25Q
dHI8R0tleUZpbGU+IGtleUZpbGUoZ19rZXlfZmlsZV9uZXcoKSk7CisgICAgR1VuaXF1ZVB0cjxH
S2V5RmlsZT4ga2V5RmlsZShnX2tleV9maWxlX25ldygpKTsKICAgICBndGtfcGFnZV9zZXR1cF90
b19rZXlfZmlsZShwYWdlU2V0dXAsIGtleUZpbGUuZ2V0KCksICJQYWdlIFNldHVwIik7CiAgICAg
ZW5jb2RlR0tleUZpbGUoZW5jb2Rlciwga2V5RmlsZS5nZXQoKSk7CiB9CiAKIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR1JlZlB0cjxHdGtQYWdlU2V0dXA+JiBwYWdlU2V0
dXApCiB7Ci0gICAgR093blB0cjxHS2V5RmlsZT4ga2V5RmlsZTsKKyAgICBHVW5pcXVlUHRyPEdL
ZXlGaWxlPiBrZXlGaWxlOwogICAgIGlmICghZGVjb2RlR0tleUZpbGUoZGVjb2Rlciwga2V5Rmls
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggZTc1
MmI2YS4uYzVlNDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC0zMSw4ICszMSw4IEBACiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJN
ZW51RnJvbUd0a01lbnUoV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtLCBHdGsKICAgICBpZiAo
IXN1Yk1lbnUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGNoaWxkcmVu
KGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIoc3ViTWVudSkpKTsKKyAg
ICBHVW5pcXVlUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihH
VEtfQ09OVEFJTkVSKHN1Yk1lbnUpKSk7CiAgICAgaWYgKCFnX2xpc3RfbGVuZ3RoKGNoaWxkcmVu
LmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKaW5kZXggZmY2ZDJjNC4uZTk1ZTRjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25s
b2FkLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgX1dlYktpdERvd25sb2FkUHJpdmF0ZSB7CiAgICAgQ1N0
cmluZyBkZXN0aW5hdGlvblVSSTsKICAgICBndWludDY0IGN1cnJlbnRTaXplOwogICAgIGJvb2wg
aXNDYW5jZWxsZWQ7Ci0gICAgR093blB0cjxHVGltZXI+IHRpbWVyOworICAgIEdVbmlxdWVQdHI8
R1RpbWVyPiB0aW1lcjsKICAgICBnZG91YmxlIGxhc3RQcm9ncmVzczsKICAgICBnZG91YmxlIGxh
c3RFbGFwc2VkOwogfTsKQEAgLTExMywxNCArMTEzLDE0IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29u
c3QKICAgICBpZiAoIWRvd25sb2FkLT5wcml2LT5kZXN0aW5hdGlvblVSSS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgR093blB0cjxjaGFyPiBmaWxlbmFtZShnX3N0cmRl
bGltaXQoZ19zdHJkdXAoc3VnZ2VzdGVkRmlsZW5hbWUpLCBHX0RJUl9TRVBBUkFUT1JfUywgJ18n
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlbmFtZShnX3N0cmRlbGltaXQoZ19zdHJkdXAo
c3VnZ2VzdGVkRmlsZW5hbWUpLCBHX0RJUl9TRVBBUkFUT1JfUywgJ18nKSk7CiAgICAgY29uc3Qg
Z2NoYXIgKmRvd25sb2Fkc0RpciA9IGdfZ2V0X3VzZXJfc3BlY2lhbF9kaXIoR19VU0VSX0RJUkVD
VE9SWV9ET1dOTE9BRCk7CiAgICAgaWYgKCFkb3dubG9hZHNEaXIpIHsKICAgICAgICAgLy8gSWYg
d2UgZG9uJ3QgaGF2ZSBYREcgdXNlciBkaXJzIGluZm8sIHNldCBqdXN0IHRvIEhPTUUuCiAgICAg
ICAgIGRvd25sb2Fkc0RpciA9IGdfZ2V0X2hvbWVfZGlyKCk7CiAgICAgfQotICAgIEdPd25QdHI8
Y2hhcj4gZGVzdGluYXRpb24oZ19idWlsZF9maWxlbmFtZShkb3dubG9hZHNEaXIsIGZpbGVuYW1l
LmdldCgpLCBOVUxMKSk7Ci0gICAgR093blB0cjxjaGFyPiBkZXN0aW5hdGlvblVSSShnX2ZpbGVu
YW1lX3RvX3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZGVzdGluYXRpb24oZ19idWlsZF9maWxlbmFtZShkb3dubG9hZHNEaXIsIGZpbGVuYW1lLmdl
dCgpLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvblVSSShnX2ZpbGVu
YW1lX3RvX3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOwogICAgIGRvd25sb2FkLT5wcml2
LT5kZXN0aW5hdGlvblVSSSA9IGRlc3RpbmF0aW9uVVJJLmdldCgpOwogICAgIGdfb2JqZWN0X25v
dGlmeShHX09CSkVDVChkb3dubG9hZCksICJkZXN0aW5hdGlvbiIpOwogICAgIHJldHVybiBUUlVF
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgd2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhX
ZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGd1aW50NjQgYnl0ZXNSZWNlaXZlCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghZG93bmxvYWQtPnByaXYtPnRpbWVyKQotICAgICAgICBkb3dubG9h
ZC0+cHJpdi0+dGltZXIuc2V0KGdfdGltZXJfbmV3KCkpOworICAgICAgICBkb3dubG9hZC0+cHJp
di0+dGltZXIucmVzZXQoZ190aW1lcl9uZXcoKSk7CiAKICAgICBwcml2LT5jdXJyZW50U2l6ZSAr
PSBieXRlc1JlY2VpdmVkOwogICAgIGdfc2lnbmFsX2VtaXQoZG93bmxvYWQsIHNpZ25hbHNbUkVD
RUlWRURfREFUQV0sIDAsIGJ5dGVzUmVjZWl2ZWQpOwpAQCAtMzM5LDkgKzMzOSw4IEBAIHZvaWQg
d2Via2l0RG93bmxvYWROb3RpZnlQcm9ncmVzcyhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGd1
aW50NjQgYnl0ZXNSZWNlaXZlCiAKIHZvaWQgd2Via2l0RG93bmxvYWRGYWlsZWQoV2ViS2l0RG93
bmxvYWQqIGRvd25sb2FkLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewot
ICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtf
ZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9y
LmVycm9yQ29kZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwo
Z19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkp
LAorICAgICAgICByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpLCByZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIGlmIChkb3dubG9hZC0+cHJp
di0+dGltZXIpCiAgICAgICAgIGdfdGltZXJfc3RvcChkb3dubG9hZC0+cHJpdi0+dGltZXIuZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCA3ZTNjMjZiLi4wODU1ZGVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
U3lzdGVtLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCB3
ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2ZpbGVzKFdlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdCogcmVxdWVzdCwKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWxlIHBhdGggaXMg
cHJlc2VudGVkIGFzIGFuIFVSSSAoZXNjYXBlZAogICAgICAgICAvLyBzdHJpbmcsIHdpdGggdGhl
ICdmaWxlOi8vJyBwcmVmaXgpIHRvIFdlYkNvcmUgb3RoZXJ3aXNlIHRoZQogICAgICAgICAvLyBG
aWxlQ2hvb3NlciB3b24ndCBhY3R1YWxseSBjaG9vc2UgaXQuCi0gICAgICAgIEdPd25QdHI8Y2hh
cj4gdXJpKGdfZmlsZV9nZXRfdXJpKGZpbGVuYW1lLmdldCgpKSk7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gdXJpKGdfZmlsZV9nZXRfdXJpKGZpbGVuYW1lLmdldCgpKSk7CiAgICAgICAgIGNo
b29zZW5GaWxlcy5hcHBlbmQoQVBJOjpVUkw6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHVyaS5n
ZXQoKSkpKTsKIAogICAgICAgICAvLyBEbyBub3QgdXNlIHRoZSBVUkkgaGVyZSBiZWNhdXNlIHRo
aXMgd29uJ3QgcmVhY2ggV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRl
eCBmMjcxMjIyLi4xYjc3YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJSZXNvdXJjZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGMKIAogICAgICAgICBBUEk6OkVycm9yKiB3ZWJFcnJvciA9IHN0YXRpY19jYXN0PEFQSTo6
RXJyb3IqPihtZXNzYWdlLmdldChTdHJpbmc6OmZyb21VVEY4KCJFcnJvciIpKSk7CiAgICAgICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIHBsYXRmb3JtRXJyb3IgPSB3ZWJFcnJvci0+cGxhdGZvcm1F
cnJvcigpOwotICAgICAgICBHT3duUHRyPEdFcnJvcj4gcmVzb3VyY2VFcnJvcihnX2Vycm9yX25l
d19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocGxhdGZvcm1FcnJvci5kb21haW4oKS51dGY4
KCkuZGF0YSgpKSwKKyAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IHJlc291cmNlRXJyb3IoZ19l
cnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHBsYXRmb3JtRXJyb3IuZG9tYWlu
KCkudXRmOCgpLmRhdGEoKSksCiAgICAgICAgICAgICBwbGF0Zm9ybUVycm9yLmVycm9yQ29kZSgp
LCBwbGF0Zm9ybUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOwog
CiAgICAgICAgIHdlYmtpdFdlYlJlc291cmNlRmFpbGVkKHJlc291cmNlLmdldCgpLCByZXNvdXJj
ZUVycm9yLmdldCgpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Zwogc3RhdGljIFdLVHlwZVJlZiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEdSZWZQdHI8
R1ZhcmlhbnQ+IGRhdGEgPSB3ZWJraXRXZWJDb250ZXh0SW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMo
V0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8pKTsKLSAgICBHT3duUHRyPGdjaGFyPiBkYXRh
U3RyaW5nKGdfdmFyaWFudF9wcmludChkYXRhLmdldCgpLCBUUlVFKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGF0YVN0cmluZyhnX3ZhcmlhbnRfcHJpbnQoZGF0YS5nZXQoKSwgVFJVRSkpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS1R5cGVSZWY+KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGRhdGFTdHJpbmcuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKaW5kZXggNmU0ZDJm
OS4uNGIyZTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAi
V2ViS2l0VVJJUmVzcG9uc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTUzLDkgKzUzLDggQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGYKICAgICAgICAgcmV0
dXJuOwogCiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciA9IHRvSW1wbChl
cnJvciktPnBsYXRmb3JtRXJyb3IoKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19l
cnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWlu
KCkudXRmOCgpLmRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJF
cnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJv
ci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNv
ZGUoKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
KTsKICAgICBpZiAocmVzb3VyY2VFcnJvci50bHNFcnJvcnMoKSkgewogICAgICAgICB3ZWJraXRX
ZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8p
LCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQo
KSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPihyZXNvdXJj
ZUVycm9yLnRsc0Vycm9ycygpKSwgcmVzb3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKTsKQEAgLTg1
LDkgKzg0LDggQEAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnIKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciA9IHRvSW1wbChlcnJvciktPnBs
YXRmb3JtRXJyb3IoKTsKLSAgICBHT3duUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdf
bGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgp
LmRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vy
cm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgcmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB3
ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIFdFQktJ
VF9MT0FEX0NPTU1JVFRFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKS51dGY4KCkuZGF0YSgpLCB3ZWJFcnJvci5nZXQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9w
ZXJhdGlvbi5jcHAKaW5kZXggMzU1MTNjMi4uZWU5NzI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3BlcmF0aW9uLmNwcApA
QCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWZkZWYgSEFWRV9HVEtfVU5JWF9QUklOVElO
RwpAQCAtMjY0LDkgKzI2NCw4IEBAIHN0YXRpYyB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nQ29t
cGxldGVkKFdLRXJyb3JSZWYgd2tQcmludEVycm9yLCBXS0Vycm9yUmVmLCB2CiAKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yID0gd2tQcmludEVycm9yID8g
dG9JbXBsKHdrUHJpbnRFcnJvciktPnBsYXRmb3JtRXJyb3IoKSA6IFdlYkNvcmU6OlJlc291cmNl
RXJyb3IoKTsKICAgICBpZiAoIXJlc291cmNlRXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgR093
blB0cjxHRXJyb3I+IHByaW50RXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21f
c3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iu
ZXJyb3JDb2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBwcmludEVycm9yKGdfZXJyb3JfbmV3
X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCkpLAorICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgcmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAg
Z19zaWduYWxfZW1pdChwcmludE9wZXJhdGlvbi5nZXQoKSwgc2lnbmFsc1tGQUlMRURdLCAwLCBw
cmludEVycm9yLmdldCgpKTsKICAgICB9CiAgICAgZ19zaWduYWxfZW1pdChwcmludE9wZXJhdGlv
bi5nZXQoKSwgc2lnbmFsc1tGSU5JU0hFRF0sIDAsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCAzODRi
ZDM3Li4yYzU5Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAi
V2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFVSSVJlcXVlc3RQcml2YXRlLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyU291cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1
ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHN0cnVjdCBfV2ViS2l0VVJJUmVxdWVzdFByaXZhdGUgewogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3Q7CiAgICAgQ1N0cmluZyB1cmk7Ci0gICAgR093blB0
cjxTb3VwTWVzc2FnZUhlYWRlcnM+IGh0dHBIZWFkZXJzOworICAgIEdVbmlxdWVQdHI8U291cE1l
c3NhZ2VIZWFkZXJzPiBodHRwSGVhZGVyczsKIH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXRVUklSZXF1ZXN0LCB3ZWJraXRfdXJpX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCkBAIC0xNjYs
NyArMTY2LDcgQEAgU291cE1lc3NhZ2VIZWFkZXJzKiB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0
dHBfaGVhZGVycyhXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXMKICAgICBpZiAoIXJlcXVlc3QtPnBy
aXYtPnJlc291cmNlUmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmVxdWVzdC0+cHJpdi0+aHR0cEhlYWRlcnMuc2V0KHNvdXBf
bWVzc2FnZV9oZWFkZXJzX25ldyhTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNUKSk7CisgICAg
cmVxdWVzdC0+cHJpdi0+aHR0cEhlYWRlcnMucmVzZXQoc291cF9tZXNzYWdlX2hlYWRlcnNfbmV3
KFNPVVBfTUVTU0FHRV9IRUFERVJTX1JFUVVFU1QpKTsKICAgICByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXBkYXRlU291cE1lc3NhZ2VIZWFkZXJzKHJlcXVlc3QtPnByaXYtPmh0dHBI
ZWFkZXJzLmdldCgpKTsKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+aHR0cEhlYWRlcnMuZ2V0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IGQwMTM2Y2QuLmUxZTQyMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNiw5ICsyNiwxMCBAQAogI2luY2x1ZGUgIldlYktpdFdl
YlZpZXcuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNvdXAuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgc3RydWN0IF9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5p
dGlhdGluZ1BhZ2U7CiAgICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwot
ICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHNv
dXBVUkk7CiAKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFtOwogICAgIHVpbnQ2NF90
IHN0cmVhbUxlbmd0aDsKQEAgLTEwOSw3ICsxMTAsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVz
dAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NIRU1FX1JFUVVFU1Qo
cmVxdWVzdCksIDApOwogCiAgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5zb3VwVVJJKQotICAgICAg
ICByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLnNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJpdi0+
dXJpLmRhdGEoKSkpOworICAgICAgICByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLnJlc2V0KHNvdXBf
dXJpX25ldyhyZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Qt
PnByaXYtPnNvdXBVUkktPnNjaGVtZTsKIH0KIApAQCAtMTQxLDcgKzE0Miw3IEBAIGNvbnN0IGNo
YXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgoV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogcmVxdWVzdCkKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVJJX1ND
SEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKIAogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+c291
cFVSSSkKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+c291cFVSSS5zZXQoc291cF91cmlfbmV3KHJl
cXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+c291cFVS
SS5yZXNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJpdi0+dXJpLmRhdGEoKSkpOwogICAgIHJl
dHVybiByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLT5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGQ1
NmY1ZTUuLjBhN2FhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIENTdHJpbmcgaW5qZWN0ZWRCdW5kbGVE
aXJlY3RvcnkoKQogCiBzdGF0aWMgQ1N0cmluZyBpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKCkKIHsK
LSAgICBHT3duUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0
ZWRCdW5kbGVEaXJlY3RvcnkoKS5kYXRhKCksICJsaWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUu
c28iLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxk
X2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkuZGF0YSgpLCAibGlid2Via2l0Mmd0
a2luamVjdGVkYnVuZGxlLnNvIiwgTlVMTCkpOwogICAgIHJldHVybiBidW5kbGVGaWxlbmFtZS5n
ZXQoKTsKIH0KIApAQCAtNDQzLDkgKzQ0Myw4IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAg
ICAgICAgIDogZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKICAgICAvLyBCdWlsZCB0aGUgZnVsbCBw
YXRoIHRvIHRoZSBpY29uIGRhdGFiYXNlIGZpbGUgb24gZGlzay4KLSAgICBHT3duUHRyPGdjaGFy
PiBmYXZpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+ZmF2aWNvbkRhdGFi
YXNlRGlyZWN0b3J5LmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJh
c2VGaWxlbmFtZSgpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBmYXZpY29uRGF0YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+ZmF2aWNvbkRhdGFi
YXNlRGlyZWN0b3J5LmRhdGEoKSwKKyAgICAgICAgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZSgpLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKIAogICAgIC8v
IFNldHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVu
ZWQuCiAgICAgcHJpdi0+Y29udGV4dC0+c2V0SWNvbkRhdGFiYXNlUGF0aChXZWJDb3JlOjpmaWxl
bmFtZVRvU3RyaW5nKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMjM4ODYx
NC4uN2VlMGM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKQEAgLTYxLDggKzYxLDggQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdJY29uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyR3Rr
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HT3duUHRyU291cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
R1VuaXF1ZVB0ckd0ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0clNvdXAuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRy
Q2Fpcm8uaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgpAQCAtMjEyLDcgKzIxMiw3IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3TG9hZEZhaWwoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0TG9hZEV2ZW50LCBjCiAgICAgICAgIHx8IGdfZXJyb3JfbWF0Y2hlcyhlcnJv
ciwgV0VCS0lUX1BMVUdJTl9FUlJPUiwgV0VCS0lUX1BMVUdJTl9FUlJPUl9XSUxMX0hBTkRMRV9M
T0FEKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgR093blB0cjxjaGFyPiBodG1sU3Ry
aW5nKGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIGVycm9y
LT5tZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBodG1sU3RyaW5nKGdfc3RyZHVwX3By
aW50ZigiPGh0bWw+PGJvZHk+JXM8L2JvZHk+PC9odG1sPiIsIGVycm9yLT5tZXNzYWdlKSk7CiAg
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwod2ViVmlldywgaHRtbFN0cmlu
Zy5nZXQoKSwgZmFpbGluZ1VSSSwgMCk7CiAKICAgICByZXR1cm4gVFJVRTsKQEAgLTIyOCw3ICsy
MjgsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiB3ZWJraXRXZWJWaWV3Q3JlYXRlSmF2YVNjcmlwdERp
YWxvZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdAogICAgIEd0a1dpZGdldCogcGFyZW50ID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CiAgICAgR3RrV2lk
Z2V0KiBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KHdpZGdldElzT25zY3JlZW5Ub3Bs
ZXZlbFdpbmRvdyhwYXJlbnQpID8gR1RLX1dJTkRPVyhwYXJlbnQpIDogMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX0RJQUxPR19ERVNUUk9ZX1dJ
VEhfUEFSRU5ULCB0eXBlLCBidXR0b25zLCAiJXMiLCBtZXNzYWdlKTsKLSAgICBHT3duUHRyPGNo
YXI+IHRpdGxlKGdfc3RyZHVwX3ByaW50ZigiSmF2YVNjcmlwdCAtICVzIiwgd2Via2l0X3dlYl92
aWV3X2dldF91cmkod2ViVmlldykpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKGdfc3Ry
ZHVwX3ByaW50ZigiSmF2YVNjcmlwdCAtICVzIiwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2Vi
VmlldykpKTsKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIHRp
dGxlLmdldCgpKTsKICAgICBndGtfZGlhbG9nX3NldF9kZWZhdWx0X3Jlc3BvbnNlKEdUS19ESUFM
T0coZGlhbG9nKSwgZGVmYXVsdFJlc3BvbnNlKTsKIApAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRp
YyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxv
ZywgZ2ludCByZXNwb25zZUlECiB7CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3Q+IGFkb3B0ZWRSZXF1ZXN0ID0gYWRvcHRHUmVmKHJlcXVlc3QpOwogICAgIGlmIChyZXNwb25z
ZUlEID09IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKLSAgICAgICAgR093blB0cjxHU0xpc3Q+IGZp
bGVzTGlzdChndGtfZmlsZV9jaG9vc2VyX2dldF9maWxlbmFtZXMoR1RLX0ZJTEVfQ0hPT1NFUihk
aWFsb2cpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBmaWxlc0xpc3QoZ3RrX2ZpbGVf
Y2hvb3Nlcl9nZXRfZmlsZW5hbWVzKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSkpOwogICAgICAg
ICBHUmVmUHRyPEdQdHJBcnJheT4gZmlsZXNBcnJheSA9IGFkb3B0R1JlZihnX3B0cl9hcnJheV9u
ZXcoKSk7CiAgICAgICAgIGZvciAoR1NMaXN0KiBmaWxlID0gZmlsZXNMaXN0LmdldCgpOyBmaWxl
OyBmaWxlID0gZ19zbGlzdF9uZXh0KGZpbGUpKQogICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRk
KGZpbGVzQXJyYXkuZ2V0KCksIGZpbGUtPmRhdGEpOwpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
TG9hZEV2ZW50IGxvYWRFdmVudCkKICAgICAgICAgcHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJj
ZSA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FEX0NPTU1J
VFRFRCkgewogICAgICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0
X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNlKHByaXYtPmNvbnRleHQpOwotICAgICAg
ICBHT3duUHRyPGNoYXI+IGZhdmljb25VUkkod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zh
dmljb25fdXJpKGRhdGFiYXNlLCBwcml2LT5hY3RpdmVVUkkuZGF0YSgpKSk7CisgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZmF2aWNvblVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2
aWNvbl91cmkoZGF0YWJhc2UsIHByaXYtPmFjdGl2ZVVSSS5kYXRhKCkpKTsKICAgICAgICAgd2Vi
a2l0V2ViVmlld1VwZGF0ZUZhdmljb25VUkkod2ViVmlldywgZmF2aWNvblVSSS5nZXQoKSk7CiAK
ICAgICAgICAgaWYgKCFwcml2LT5tYWluUmVzb3VyY2UpIHsKQEAgLTE1NTIsNyArMTU1Miw3IEBA
IHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhCiAKICAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgdGxz
RXJyb3JzUG9saWN5ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeSh3
ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICBpZiAodGxzRXJyb3JzUG9saWN5ID09IFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKSB7Ci0gICAgICAgIEdPd25QdHI8U291cFVSST4gc291
cFVSSShzb3VwX3VyaV9uZXcoZmFpbGluZ1VSSSkpOworICAgICAgICBHVW5pcXVlUHRyPFNvdXBV
Ukk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdVUkkpKTsKICAgICAgICAgV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvIGluZm8oY2VydGlmaWNhdGUsIHRsc0Vycm9ycyk7CiAgICAgICAgIGdib29s
ZWFuIHJldHVyblZhbHVlOwogICAgICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNb
TE9BRF9GQUlMRURfV0lUSF9UTFNfRVJST1JTXSwgMCwgJmluZm8sIHNvdXBVUkktPmhvc3QsICZy
ZXR1cm5WYWx1ZSk7CkBAIC0xODE1LDcgKzE4MTUsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdQb3B1
bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEFQSTo6QXJyYXkqIHByb3Bv
cwogICAgICAgICB3ZWJraXRXZWJWaWV3Q3JlYXRlQW5kQXBwZW5kSW5wdXRNZXRob2RzTWVudUl0
ZW0od2ViVmlldywgY29udGV4dE1lbnUuZ2V0KCkpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRIaXRU
ZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gYWRvcHRHUmVmKHdlYmtpdEhpdFRlc3RSZXN1bHRD
cmVhdGUod2ViSGl0VGVzdFJlc3VsdCkpOwotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGNvbnRleHRN
ZW51RXZlbnQod2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lbnVFdmVudCh3ZWJWaWV3QmFz
ZSkpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQod2Via2l0V2Vi
Vmlld0Jhc2VUYWtlQ29udGV4dE1lbnVFdmVudCh3ZWJWaWV3QmFzZSkpOwogCiAgICAgZ2Jvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NPTlRF
WFRfTUVOVV0sIDAsIGNvbnRleHRNZW51LmdldCgpLCBjb250ZXh0TWVudUV2ZW50LmdldCgpLCBo
aXRUZXN0UmVzdWx0LmdldCgpLCAmcmV0dXJuVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDk1NTky
NzkuLjAwN2QyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnSWNvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0
ay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhl
bHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CkBAIC02NSw3ICs2NSw2
IEBACiAjaW5jbHVkZSA8Z2RrL2dka3guaD4KICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTEwOCw3
ICsxMDcsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAgR3RrV2lk
Z2V0KiBpbnNwZWN0b3JWaWV3OwogICAgIEF0dGFjaG1lbnRTaWRlIGluc3BlY3RvckF0dGFjaG1l
bnRTaWRlOwogICAgIHVuc2lnbmVkIGluc3BlY3RvclZpZXdTaXplOwotICAgIEdPd25QdHI8R2Rr
RXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gY29udGV4
dE1lbnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVu
dVByb3h5OwogICAgIFdlYlZpZXdCYXNlSW5wdXRNZXRob2RGaWx0ZXIgaW5wdXRNZXRob2RGaWx0
ZXI7CiAKQEAgLTY2Nyw3ICs2NjYsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VCdXR0b25QcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dAogCiAgICAg
Ly8gSWYgaXQncyBhIHJpZ2h0IGNsaWNrIGV2ZW50IHNhdmUgaXQgYXMgYSBwb3NzaWJsZSBjb250
ZXh0IG1lbnUgZXZlbnQuCiAgICAgaWYgKGJ1dHRvbkV2ZW50LT5idXR0b24gPT0gMykKLSAgICAg
ICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudC5zZXQoZ2RrX2V2ZW50X2NvcHkocmVpbnRlcnByZXRf
Y2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSkpOworICAgICAgICBwcml2LT5jb250ZXh0TWVu
dUV2ZW50LnJlc2V0KGdka19ldmVudF9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihi
dXR0b25FdmVudCkpKTsKICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0
aXZlV2ViTW91c2VFdmVudChyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cml2LT5jbGlja0NvdW50ZXIuY2xpY2tDb3VudEZvckdka0J1dHRvbkV2ZW50KHdpZGdldCwgYnV0
dG9uRXZlbnQpKSk7CiAgICAgcmV0dXJuIFRSVUU7CkBAIC05OTQsNyArOTkzLDcgQEAgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IGNvbnN0IERyYWdEYXRhJgogCiAgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3Qg
PSBhZG9wdFJlZihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgR1JlZlB0cjxHdGtUYXJn
ZXRMaXN0PiB0YXJnZXRMaXN0ID0gYWRvcHRHUmVmKFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQ
YXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmplY3QuZ2V0
KCkpKTsKLSAgICBHT3duUHRyPEdka0V2ZW50PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50
X2V2ZW50KCkpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0
X2N1cnJlbnRfZXZlbnQoKSk7CiAgICAgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQgPSBndGtfZHJh
Z19iZWdpbihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldExpc3QuZ2V0KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyhkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JT
ZXJ2ZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9n
dGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAppbmRleCBiODM2YzExLi5iMDZmYTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJ
bnNwZWN0b3JTZXJ2ZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgpAQCAt
NzgsNyArNzksNyBAQCBib29sIFdlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZv
clBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcgogICAgIGlmICghZ19pbnB1dF9z
dHJlYW1fcmVhZF9hbGwoR19JTlBVVF9TVFJFQU0oaW5wdXRTdHJlYW0uZ2V0KCkpLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCksIDAsIDAsIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBjb250ZW50VHlwZSA9IEdPd25QdHI8Z2NoYXI+KGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVf
YXNfc3RyaW5nKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX0ZBU1Rf
Q09OVEVOVF9UWVBFKSkuZ2V0KCk7CisgICAgY29udGVudFR5cGUgPSBHVW5pcXVlUHRyPGdjaGFy
PihnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX2FzX3N0cmluZyhmaWxlSW5mby5nZXQoKSwgR19G
SUxFX0FUVFJJQlVURV9TVEFOREFSRF9GQVNUX0NPTlRFTlRfVFlQRSkpLmdldCgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAK
aW5kZXggMjhmNGYyMS4uZjNhZDEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2
ZXJTb3VwLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNs
dWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjb25uZWN0aW9uQ2FsbGJhY2soR1Nv
Y2tldFNlcnZpY2UqIC8qc2VydmljZSovLCBHU29ja2V0Q29ubmVjdGlvCiB7CiAjaWYgIUxPR19E
SVNBQkxFRAogICAgIEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IHNvY2tldEFkZHJlc3MgPSBhZG9w
dEdSZWYoZ19zb2NrZXRfY29ubmVjdGlvbl9nZXRfcmVtb3RlX2FkZHJlc3MoY29ubmVjdGlvbiwg
MCkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGFkZHJlc3NTdHJpbmcoZ19pbmV0X2FkZHJlc3NfdG9f
c3RyaW5nKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lORVRfU09DS0VUX0FE
RFJFU1Moc29ja2V0QWRkcmVzcy5nZXQoKSkpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYWRk
cmVzc1N0cmluZyhnX2luZXRfYWRkcmVzc190b19zdHJpbmcoZ19pbmV0X3NvY2tldF9hZGRyZXNz
X2dldF9hZGRyZXNzKEdfSU5FVF9TT0NLRVRfQUREUkVTUyhzb2NrZXRBZGRyZXNzLmdldCgpKSkp
KTsKICAgICBMT0coSW5zcGVjdG9yU2VydmVyLCAiTmV3IENvbm5lY3Rpb24gZnJvbSAlczolZC4i
LCBhZGRyZXNzU3RyaW5nLmdldCgpLCBnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19J
TkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkpKSk7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1
bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGFiZTgyMDQuLjRmYjVjOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVu
Y2hlckd0ay5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAKICNpZiBPUyhVTklYKQpAQCAtOTUs
NyArOTYsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgfQog
CiAgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1
dGFibGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIl
ZCIsIHNvY2tldHNbMF0pKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb2NrZXQoZ19zdHJkdXBf
cHJpbnRmKCIlZCIsIHNvY2tldHNbMF0pKTsKIAogICAgIHVuc2lnbmVkIG5hcmdzID0gNDsgLy8g
c2l6ZSBvZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9hc3luYygpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCmluZGV4IDhhY2VmM2MuLjQ0
ZmE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3Rr
LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
aGVtZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpAQCAtOTAsNyArOTAsNyBAQCBzdGF0
aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKIAogV1RGOjpTdHJpbmcgV2ViQ29udGV4dDo6
cGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAg
R093blB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgImFwcGxpY2F0aW9ucyIsIE5VTEwpKTsKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCAiYXBwbGljYXRpb25zIiwgbnVsbHB0cikpOwog
ICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGNhY2hlRGlyZWN0b3J5LmdldCgp
KTsKIH0KIApAQCAtMTI1LDI1ICsxMjUsMjUgQEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKIAogU3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERh
dGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBkYXRhYmFzZURp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0
ayIsICJkYXRhYmFzZXMiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRn
dGsiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFt
ZVRvU3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBhdGgoKSBjb25zdAogewotICAgIEdPd25Q
dHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9k
YXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJpY29uZGF0YWJhc2UiLCBudWxscHRyKSk7CiAg
ICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZ2V0
KCkpOwogfQogCiBTdHJpbmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3QKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5
KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImxv
Y2Fsc3RvcmFnZSIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwg
ImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVU
b1N0cmluZyhzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRleHQ6
OnBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAgR093blB0
cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCBnX2dldF9wcmduYW1lKCksIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IGRpc2tDYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCksIGdfZ2V0X3ByZ25hbWUoKSwgbnVsbHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxl
bmFtZVRvU3RyaW5nKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3Bw
CmluZGV4IGYzNTJjM2EuLmNjMjVlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgdm9pZCBjb250ZXh0TWVudUl0ZW1WaXNpYmlsaXR5Q2hhbmdlZChHdGtBY3Rpb24q
IGFjdGlvbiwgR1BhcmFtU3BlYyosIFdlYgogICAgIGlmICghbWVudSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgR093blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4o
R1RLX0NPTlRBSU5FUihtZW51KSkpOworICAgIEdVbmlxdWVQdHI8R0xpc3Q+IGl0ZW1zKGd0a19j
b250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBib29sIHBy
ZXZpb3VzVmlzaWJsZUl0ZW1Jc05vdEFTZXBhcmF0b3IgPSBmYWxzZTsKICAgICBHdGtXaWRnZXQq
IGxhc3RJdGVtVmlzaWJsZVNlcGFyYXRvciA9IDA7CiAgICAgZm9yIChHTGlzdCogaXRlciA9IGl0
ZW1zLmdldCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQoaXRlcikpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5k
ZXggOTUyMmEwYS4uZjgyMjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE0NCw3
ICsxNDQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFVSTENo
YW5nZWQoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICBpZiAoIW1faW5zcGVjdG9yV2luZG93KQog
ICAgICAgICByZXR1cm47Ci0gICAgR093blB0cjxnY2hhcj4gdGl0bGUoZ19zdHJkdXBfcHJpbnRm
KCIlcyAtICVzIiwgXygiV2ViIEluc3BlY3RvciIpLCB1cmwudXRmOCgpLmRhdGEoKSkpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHRpdGxlKGdfc3RyZHVwX3ByaW50ZigiJXMgLSAlcyIsIF8oIldl
YiBJbnNwZWN0b3IiKSwgdXJsLnV0ZjgoKS5kYXRhKCkpKTsKICAgICBndGtfd2luZG93X3NldF90
aXRsZShHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwgdGl0bGUuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlH
dGsuY3BwCmluZGV4IGE0MTgzOWEuLjc4MjczMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTQsNyAr
NTQsNyBAQCBXZWJQb3B1cE1lbnVQcm94eUd0azo6fldlYlBvcHVwTWVudVByb3h5R3RrKCkKIAog
R3RrQWN0aW9uKiBXZWJQb3B1cE1lbnVQcm94eUd0azo6Y3JlYXRlR3RrQWN0aW9uRm9yTWVudUl0
ZW0oY29uc3QgV2ViUG9wdXBJdGVtJiBpdGVtLCBpbnQgaXRlbUluZGV4KQogewotICAgIEdPd25Q
dHI8Y2hhcj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoInBvcHVwLW1lbnUtYWN0aW9uLSVk
IiwgaXRlbUluZGV4KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVw
X3ByaW50ZigicG9wdXAtbWVudS1hY3Rpb24tJWQiLCBpdGVtSW5kZXgpKTsKICAgICBHdGtBY3Rp
b24qIGFjdGlvbiA9IGd0a19hY3Rpb25fbmV3KGFjdGlvbk5hbWUuZ2V0KCksIGl0ZW0ubV90ZXh0
LnV0ZjgoKS5kYXRhKCksIGl0ZW0ubV90b29sVGlwLnV0ZjgoKS5kYXRhKCksIDApOwogICAgIGdf
b2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFjdGlvbiksICJwb3B1cC1tZW51LWFjdGlvbi1pbmRl
eCIsIEdJTlRfVE9fUE9JTlRFUihpdGVtSW5kZXgpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGFj
dGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhtZW51SXRlbUFjdGl2YXRlZCksIHRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJbnNw
ZWN0b3JHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJJ
bnNwZWN0b3JHdGsuY3BwCmluZGV4IGU3N2U0YmUuLjVhMGVmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgog
I2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAK
aW5kZXggYmYxMWY0MS4uYWRjMGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkSGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+Ci0jaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU0LDcgKzU0LDcgQEAg
dm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIC8vIHByb2Nlc3MgdG8gY29u
bmVjdCB0aGUgdHdvIHdvcmxkcyB0aHJvdWdoIHRoZSBhY2Nlc3NpYmlsaXR5CiAgICAgLy8gb2Jq
ZWN0IHRoZXJlIHNwZWNpZmljYWxseSBwbGFjZWQgZm9yIHRoYXQgcHVycG9zZSAodGhlIHNvY2tl
dCkuCiAgICAgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0ID0gYWRvcHRHUmVmKHdlYlBhZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0TmV3KHRoaXMpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBwbHVnSUQoYXRrX3Bs
dWdfZ2V0X2lkKEFUS19QTFVHKG1fYWNjZXNzaWJpbGl0eU9iamVjdC5nZXQoKSkpKTsKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBwbHVnSUQoYXRrX3BsdWdfZ2V0X2lkKEFUS19QTFVHKG1fYWNjZXNz
aWJpbGl0eU9iamVjdC5nZXQoKSkpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkJpbmRBY2Nlc3NpYmlsaXR5VHJlZShTdHJpbmcocGx1Z0lELmdldCgpKSkpOwogCiAjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCBiMWVi
MTU1Li5jYjQ2ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KIAogI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKICNpbmNsdWRlICJQcmlu
dGVyTGlzdEd0ay5oIgpAQCAtNzUsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgc3RhdGlj
IGludCBqb2JOdW1iZXIgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhcHBsaWNhdGlvbk5hbWUg
PSBnX2dldF9hcHBsaWNhdGlvbl9uYW1lKCk7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj5qb2JOYW1l
KGdfc3RyZHVwX3ByaW50ZigiJXMgam9iICMlZCIsIGFwcGxpY2F0aW9uTmFtZSA/IGFwcGxpY2F0
aW9uTmFtZSA6ICJXZWJLaXQiLCArK2pvYk51bWJlcikpOworICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+am9iTmFtZShnX3N0cmR1cF9wcmludGYoIiVzIGpvYiAjJWQiLCBhcHBsaWNhdGlvbk5hbWUg
PyBhcHBsaWNhdGlvbk5hbWUgOiAiV2ViS2l0IiwgKytqb2JOdW1iZXIpKTsKICAgICAgICAgbV9w
cmludEpvYiA9IGFkb3B0R1JlZihndGtfcHJpbnRfam9iX25ldyhqb2JOYW1lLmdldCgpLCBwcmlu
dGVyLCBtX3ByaW50U2V0dGluZ3MuZ2V0KCksIG1fcGFnZVNldHVwLmdldCgpKSk7CiAKICAgICAg
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCmluZGV4IGUxNWY2MDIuLjU3ZDRhYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0
ay5jcHAKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNs
dWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCA3MGZjYWQ1Li44MThl
ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU291cE5ldHdvcmtTZXNzaW9uLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTc2LDcgKzE3Niw3IEBAIHZvaWQgV2ViU291cFJlcXVlc3RNYW5hZ2VyOjpzZW5kKEdUYXNrKiB0
YXNrKQogewogICAgIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyogcmVxdWVzdCA9IFdFQktJVF9T
T1VQX1JFUVVFU1RfR0VORVJJQyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzaykpOwogICAg
IFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCA9IFNPVVBfUkVRVUVTVChyZXF1ZXN0KTsKLSAgICBH
T3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cF9yZXF1ZXN0X2dl
dF91cmkoc291cFJlcXVlc3QpLCBGQUxTRSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3Ry
aW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX3JlcXVlc3RfZ2V0X3VyaShzb3VwUmVxdWVzdCks
IEZBTFNFKSk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBnZW5lcmF0ZVNvdXBSZXF1ZXN0
SUQoKTsKICAgICBtX3JlcXVlc3RNYXAuc2V0KHJlcXVlc3RJRCwgYWRvcHRQdHIobmV3IFdlYlNv
dXBSZXF1ZXN0QXN5bmNEYXRhKHRhc2ssIHJlcXVlc3QpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Y2ODY4ZS4uYzc3N2M2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5
NiBAQAogMjAxNC0wMS0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKKyAgICAgICAgW0dMSUJdIFVzZSBHVW5pcXVlUHRyIGluc3RlYWQgb2YgR093blB0cgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1VuaXF1ZVB0
ciBpcyBhIHRlbXBsYXRlIGFsaWFzIG9mIHN0ZDo6dW5pcXVlX3B0ciB3aXRoIGEgY3VzdG9tCisg
ICAgICAgIGRlbGV0ZXIgdGhhdCByZXBsYWNlcyBHT3duUHRyLiBHT3duUHRyIGlzIHN0aWxsIHVz
ZWQgZm9yIHRoZSBjYXNlcworICAgICAgICB3aGVyZSB0aGUgb3V0cHV0IHBvaW50ZXIgaXMgbmVl
ZGVkLCBidXQgaXQgd2lsbCBhbHNvIGJlIHJlcGxhY2VkIHNvb24uCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHA6CisgICAgICAgIChw
cmludEFjY2Vzc2liaWxpdHlFdmVudCk6CisgICAgICAgIChheE9iamVjdEV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcDoKKyAgICAgICAgKGluZGV4UmFuZ2VJblRhYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0
bGUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24pOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZUZvckluZGV4KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVy
bCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
RWZsLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckd0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNz
aWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAoZ2V0T3V0cHV0RGlyKToKKyAgICAgICAgKGdldEZvbnRzUGF0
aCk6CisgICAgICAgIChpbml0aWFsaXplRm9udHMpOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4
dCk6CisgICAgICAgIChjb21wYXJlSGlzdG9yeUl0ZW1zKToKKyAgICAgICAgKGR1bXBIaXN0b3J5
SXRlbSk6CisgICAgICAgIChzb3VwVVJJVG9TdHJpbmdQcmVzZXJ2aW5nUGFzc3dvcmQpOgorICAg
ICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICh0ZW1wb3Jh
cnlEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgICh3ZWJWaWV3VGl0bGVDaGFuZ2VkKToKKyAg
ICAgICAgKHdlYkZyYW1lTG9hZFN0YXR1c05vdGlmaWVkKToKKyAgICAgICAgKHBhdGhGcm9tU291
cFVSSSk6CisgICAgICAgIChjb252ZXJ0V2ViUmVzb3VyY2VUb1VSTFBhdGgpOgorICAgICAgICAo
dXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKGRlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KToKKyAgICAgICAgKHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKToKKyAgICAg
ICAgKGZyYW1lTG9hZEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0
ay9FZGl0aW5nQ2FsbGJhY2tzLmNwcDoKKyAgICAgICAgKGR1bXBOb2RlUGF0aCk6CisgICAgICAg
IChkdW1wUmFuZ2UpOgorICAgICAgICAoc2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKGNvbnRleHRDbGlja0Nh
bGxiYWNrKToKKyAgICAgICAgKGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgIChUZXN0UnVu
bmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnF1ZXVlTG9h
ZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxl
ZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFk
ZFVzZXJTY3JpcHQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkVXNlclN0eWxlU2hlZXQpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlvbik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TWFya2Vk
VGV4dENhbGxiYWNrKToKKyAgICAgICAgKGluc2VydFRleHRDYWxsYmFjayk6CisgICAgICAgIChk
b0NvbW1hbmRDYWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1
ZUl0ZW1HdGsuY3BwOgorICAgICAgICAoTG9hZEhUTUxTdHJpbmdJdGVtOjppbnZva2UpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTU5vZGVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dERPTU5vZGVUZXN0Ojp0ZXN0VGFnTmFtZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKHRlc3RCYWNr
Rm9yd2FyZExpc3RMaW1pdEFuZENhY2hlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRlc3RDb250ZXh0TWVu
dVNtYXJ0U2VwYXJhdG9ycyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgICh0ZXN0RG93bmxvYWRMb2Nh
bEZpbGUpOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IpOgorICAgICAgICAo
YWRkQ29udGVudERpc3Bvc2l0aW9uSFRUUEhlYWRlclRvUmVzcG9uc2UpOgorICAgICAgICAoc2Vy
dmVyQ2FsbGJhY2spOgorICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZl
ci5jcHA6CisgICAgICAgIChzdGFydFRlc3RTZXJ2ZXIpOgorICAgICAgICAodGVzdEluc3BlY3Rv
clNlcnZlclBhZ2VMaXN0KToKKyAgICAgICAgKG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFByaW50aW5nLmNw
cDoKKyAgICAgICAgKHRlc3RQcmludE9wZXJhdGlvblByaW50KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHA6CisgICAgICAgIChhZGRD
YWNoZUhUVFBIZWFkZXJzVG9SZXNwb25zZSk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwOgorICAg
ICAgICAoaHR0cHNTZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChodHRwU2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQu
Y3BwOgorICAgICAgICAodGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyk6CisgICAgICAgICh0
ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hv
b3NlclJlcXVlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0V2ViRXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2Jq
ZWN0Q2xlYXJlZCk6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRBY2Nlc3Np
YmlsaXR5LmNwcDoKKyAgICAgICAgKHN0YXJ0VGVzdFNlcnZlcik6CisgICAgICAgIChjaGVja0F0
c3BpQWNjZXNzaWJsZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAodGVzdENsZWFyRGF0YWJhc2UpOgorICAgICAgICAodGVzdEdldEZhdmljb25V
UkkpOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlRmluYWxpemVkQ2FsbGJhY2spOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29u
dGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMpOgorICAgICAgICAo
dGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1J1
bkphdmFTY3JpcHQpOgorICAgICAgICAodGVzdFdlYlZpZXdNb2RlKToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcDoKKyAgICAgICAgKGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0
b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckN1
dENvcHlQYXN0ZUVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxs
Tm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxFZGl0YWJs
ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lv
blRlc3QuY3BwOgorICAgICAgICAoc2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChtZXRo
b2RDYWxsQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRp
bGl0aWVzR3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUluamVj
dGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVVUkxG
b3JSZXNvdXJjZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3
R3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRvS2V5U3Ryb2tlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRvTW91c2VCdXR0b25FdmVudCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuY3BwOgorICAgICAgICAo
bG9hZEZhaWxlZENhbGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRVUkkp
OgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9hZEh0bWwpOgorICAgICAgICAoTG9hZFRy
YWNraW5nVGVzdDo6bG9hZFBsYWluVGV4dCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojps
b2FkUmVxdWVzdCk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0OjpyZWxvYWQpOgorICAgICAg
ICAoTG9hZFRyYWNraW5nVGVzdDo6Z29CYWNrKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6
OmdvRm9yd2FyZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2Fk
VHJhY2tpbmdUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9U
ZXN0TWFpbi5jcHA6CisgICAgICAgIChyZWdpc3RlckdSZXNvdXJjZSk6CisgICAgICAgIChyZW1v
dmVOb25FbXB0eURpcmVjdG9yeSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmg6CisgICAgICAgIChUZXN0OjpnZXRXZWJL
aXQxVGVzdFJlc291Y2VzRGlyKToKKyAgICAgICAgKFRlc3Q6OmdldFJlc291cmNlc0Rpcik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RCdXM6OnJ1bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
dGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RT
ZXJ2ZXI6OldlYktpdFRlc3RTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0VGVzdFNlcnZlcjo6Z2V0
VVJJRm9yUGF0aCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQ
cm9jZXNzVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cnVu
VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVz
dC5jcHA6CisgICAgICAgIChyZXNvdXJjZUdldERhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bW91c2VN
b3ZlVG8pOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxp
bmVGb3JJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJs
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY3RpdmF0
ZUZvbnRzR3RrLmNwcDoKKyAgICAgICAgKFdUUjo6Z2V0T3V0cHV0RGlyKToKKyAgICAgICAgKFdU
Ujo6Z2V0Rm9udHNQYXRoKToKKyAgICAgICAgKFdUUjo6aW5pdGlhbGl6ZUZvbnRDb25maWdTZXR0
aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9Jbmpl
Y3RlZEJ1bmRsZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXVFI6OnRvcExldmVsUGF0aCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBhdGgp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRlc3RQbHVnaW5EaXJl
Y3RvcnkpOgorCisyMDE0LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKwogCiAgICAgICAgIFtHVEtdIEFkZCBHVW5pcXVlUHRyCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjcxNzAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcAppbmRl
eCBlOTIzZjNmLi5hOTA4MjQxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsv
QWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
YXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5j
bHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNsdWRlICJKU1JldGFpblB0ci5oIgogI2luY2x1
ZGUgPGF0ay9hdGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1
ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgpAQCAtNzksNyAr
NzksNyBAQCBzdGF0aWMgdm9pZCBwcmludEFjY2Vzc2liaWxpdHlFdmVudChBdGtPYmplY3QqIGFj
Y2Vzc2libGUsIGNvbnN0IGdjaGFyKiBzaWduYWxOYQogICAgIGlmICghb2JqZWN0TmFtZSB8fCAq
b2JqZWN0TmFtZSA9PSAnXDAnKQogICAgICAgICBvYmplY3ROYW1lID0gIihObyBuYW1lKSI7CiAK
LSAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0
cmR1cF9wcmludGYoIiVzID0gJXMiLCBzaWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1
cChzaWduYWxOYW1lKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2lnbmFsTmFtZUFuZFZhbHVl
KHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJpbnRmKCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwgc2ln
bmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFsTmFtZSkpOwogICAgIHByaW50ZigiQWNjZXNzaWJp
bGl0eSBvYmplY3QgZW1pdHRlZCBcIiVzXCIgLyBOYW1lOiBcIiVzXCIgLyBSb2xlOiAlZFxuIiwg
c2lnbmFsTmFtZUFuZFZhbHVlLmdldCgpLCBvYmplY3ROYW1lLCBvYmplY3RSb2xlKTsKIH0KIApA
QCAtOTQsMzcgKzk0LDM3IEBAIHN0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIo
R1NpZ25hbEludm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBndWludCBuCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5OwotICAgIEdPd25QdHI8Z2No
YXI+IHNpZ25hbE5hbWU7Ci0gICAgR093blB0cjxnY2hhcj4gc2lnbmFsVmFsdWU7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzaWduYWxW
YWx1ZTsKICAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZTsKIAogICAgIGdfc2lnbmFsX3F1ZXJ5
KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbFF1ZXJ5KTsKIAogICAgIGlmICghZ19zdHJj
bXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAic3RhdGUtY2hhbmdlIikpIHsKLSAgICAgICAg
c2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVl
X2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJd
KSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigic3RhdGUtY2hh
bmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAg
c2lnbmFsVmFsdWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xl
YW4oJnBhcmFtVmFsdWVzWzJdKSkpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dl
dF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSwgImNoZWNrZWQiKSkKICAgICAgICAgICAgIG5vdGlm
aWNhdGlvbk5hbWUgPSAiQ2hlY2tlZFN0YXRlQ2hhbmdlZCI7CiAgICAgICAgIGVsc2UgaWYgKCFn
X3N0cmNtcDAoZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVu
dHJ5IikpCiAgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0No
YW5nZWQiOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFt
ZSwgImZvY3VzLWV2ZW50IikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZv
Y3VzLWV2ZW50IikpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIl
ZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWdu
YWxOYW1lLnJlc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKKyAgICAgICAgc2lnbmFsVmFs
dWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFt
VmFsdWVzWzFdKSkpOwogICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1
ZXNbMV0pKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFs
X25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikpIHsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNoaWxk
cmVuQ2hhbmdlZERldGFpbCA9IGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCk7
Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdl
ZDolcyIsIGNoaWxkcmVuQ2hhbmdlZERldGFpbCkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkp
OworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hh
bmdlZDolcyIsIGNoaWxkcmVuQ2hhbmdlZERldGFpbCkpOworICAgICAgICBzaWduYWxWYWx1ZS5y
ZXNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNb
MV0pKSk7CiAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAhZ19zdHJjbXAwKGNoaWxkcmVuQ2hh
bmdlZERldGFpbCwgImFkZCIpID8gIkFYQ2hpbGRyZW5BZGRlZCIgOiAiQVhDaGlsZHJlblJlbW92
ZWQiOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
InByb3BlcnR5LWNoYW5nZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3By
aW50ZigicHJvcGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+
ZGV0YWlsKSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigicHJv
cGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkp
OwogICAgICAgICBpZiAoIWdfc3RyY21wMChnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5k
ZXRhaWwpLCAiYWNjZXNzaWJsZS12YWx1ZSIpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFt
ZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1
ZXJ5LnNpZ25hbF9uYW1lLCAibG9hZC1jb21wbGV0ZSIpKQogICAgICAgICBub3RpZmljYXRpb25O
YW1lID0gIkFYTG9hZENvbXBsZXRlIjsKICAgICBlbHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0
KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lKSk7CisgICAgICAgIHNpZ25hbE5hbWUu
cmVzZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKIAogICAgIGlmIChsb2dn
aW5nQWNjZXNzaWJpbGl0eUV2ZW50cykKICAgICAgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQo
YWNjZXNzaWJsZSwgc2lnbmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwCmluZGV4IDk2ZTNlMDcuLmFkYzg0ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTM1LDggKzM1LDgg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogI2luY2x1ZGUg
PGF0ay9hdGsuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IGNoYXIqIGxhbmRtYXJr
U3RyaW5nU2VhcmNoID0gIkFYTGFuZG1hcmtTZWFyY2giOwogU3RyaW5nIGpzU3RyaW5nVG9XVEZT
dHJpbmcoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGF0dHJpYnV0ZSk7Ci0gICAgR093blB0
cjxnY2hhcj4gYnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkp
KTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBidWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21h
bGxvYyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoYXR0cmlidXRl
LCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoYnVmZmVyLmdldCgpKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBTdHJpbmcgZ2V0QXRrQXR0cmli
dXRlU2V0QXNTdHJpbmcoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBBdGtBdHRyaWJ1dGVUeXBlIHR5
cGUpCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoQXRrQXR0cmlidXRlU2V0
KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVzID0gYXR0
cmlidXRlcy0+bmV4dCkgewogICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHN0YXRp
Y19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOwotICAgICAgICBHT3duUHRy
PGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFtZSwgIjoiLCBh
dHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGF0dHJp
YnV0ZURhdGEoZ19zdHJjb25jYXQoYXR0cmlidXRlLT5uYW1lLCAiOiIsIGF0dHJpYnV0ZS0+dmFs
dWUsIE5VTEwpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXR0cmlidXRlRGF0YS5nZXQoKSk7
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzLT5uZXh0KQogICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoIiwgIik7CkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIFZlY3RvcjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBnZXRWaXNpYmxlQ2VsbHMoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZWwKIAog
SlNTdHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwg
Ym9vbCBpc1Jvd1JhbmdlKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3Ry
ZHVwKCJ7MCwgMH0iKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmFuZ2VTdHJpbmcoZ19zdHJk
dXAoInswLCAwfSIpKTsKIAogICAgIGlmICghQVRLX0lTX09CSkVDVChlbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgp
KTsKQEAgLTUxOSw3ICs1MTksNyBAQCBKU1N0cmluZ1JlZiBpbmRleFJhbmdlSW5UYWJsZShQbGF0
Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBib29sIGlzUm93UmFuZ2UpCiAgICAgICAgICAgICBiYXNl
ID0gY29sdW1uOwogICAgICAgICAgICAgbGVuZ3RoID0gYXRrX3RhYmxlX2dldF9jb2x1bW5fZXh0
ZW50X2F0KEFUS19UQUJMRShheFRhYmxlKSwgcm93LCBjb2x1bW4pOwogICAgICAgICB9Ci0gICAg
ICAgIHJhbmdlU3RyaW5nLnNldChnX3N0cmR1cF9wcmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVu
Z3RoKSk7CisgICAgICAgIHJhbmdlU3RyaW5nLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigieyVkLCAl
ZH0iLCBiYXNlLCBsZW5ndGgpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOwpAQCAtNzM3LDcgKzczNyw3IEBAIEpT
U3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQogICAgIGlmICghYXRrX29i
amVjdF9nZXRfcm9sZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpKQogICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gcm9s
ZVN0cmluZ1dpdGhQcmVmaXgoZ19zdHJkdXBfcHJpbnRmKCJBWFJvbGU6ICVzIiwgcm9sZVRvU3Ry
aW5nKEFUS19PQkpFQ1QobV9lbGVtZW50KSkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJvbGVT
dHJpbmdXaXRoUHJlZml4KGdfc3RyZHVwX3ByaW50ZigiQVhSb2xlOiAlcyIsIHJvbGVUb1N0cmlu
ZyhBVEtfT0JKRUNUKG1fZWxlbWVudCkpKSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHJvbGVTdHJpbmdXaXRoUHJlZml4LmdldCgpKTsKIH0KIApAQCAtNzU3LDcg
Kzc1Nyw3IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKICAg
ICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKICAgICBj
b25zdCBnY2hhciogbmFtZSA9IGF0a19vYmplY3RfZ2V0X25hbWUoQVRLX09CSkVDVChtX2VsZW1l
bnQpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRs
ZTogJXMiLCBuYW1lID8gbmFtZSA6ICIiKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhUaXRs
ZShnX3N0cmR1cF9wcmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSA/IG5hbWUgOiAiIikpOwogCiAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VGl0bGUuZ2V0KCkpOwog
fQpAQCAtNzcxLDcgKzc3MSw3IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmRlc2NyaXB0aW9uKCkKICAgICBpZiAoIWRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGF4
RGVzYyhnX3N0cmR1cF9wcmludGYoIkFYRGVzY3JpcHRpb246ICVzIiwgZGVzY3JpcHRpb24pKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBheERlc2MoZ19zdHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0
aW9uOiAlcyIsIGRlc2NyaXB0aW9uKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYXhEZXNjLmdldCgpKTsKIH0KQEAgLTc4MSw5ICs3ODEsOSBAQCBKU1N0cmlu
Z1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiAgICAgaWYgKCFBVEtf
SVNfVEVYVChtX2VsZW1lbnQpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3Rl
eHQoQVRLX1RFWFQobV9lbGVtZW50KSwgMCwgLTEpKTsKLSAgICBHT3duUHRyPGdjaGFyPiB0ZXh0
V2l0aFJlcGxhY2VkQ2hhcmFjdGVycyhyZXBsYWNlQ2hhcmFjdGVyc0ZvclJlc3VsdHModGV4dC5n
ZXQoKSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRmKCJBWFZh
bHVlOiAlcyIsIHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJzLmdldCgpKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChtX2VsZW1lbnQpLCAw
LCAtMSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJz
KHJlcGxhY2VDaGFyYWN0ZXJzRm9yUmVzdWx0cyh0ZXh0LmdldCgpKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gYXhWYWx1ZShnX3N0cmR1cF9wcmludGYoIkFYVmFsdWU6ICVzIiwgdGV4dFdpdGhS
ZXBsYWNlZENoYXJhY3RlcnMuZ2V0KCkpKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhheFZhbHVlLmdldCgpKTsKIH0KQEAgLTc5Nyw3ICs3OTcsNyBAQCBKU1N0
cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAgICAgaWYgKCFsb2Nh
bGUpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwog
Ci0gICAgR093blB0cjxjaGFyPiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhMYW5ndWFnZTog
JXMiLCBsb2NhbGUpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJp
bnRmKCJBWExhbmd1YWdlOiAlcyIsIGxvY2FsZSkpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhheFZhbHVlLmdldCgpKTsKIH0KIApAQCAtMTEyNyw3ICsxMTI3LDcg
QEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiAg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfY291bnQo
QVRLX1RFWFQobV9lbGVtZW50KSkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIEdPd25QdHI8
Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50KSwgMCwgaW5k
ZXgpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKG1fZWxlbWVudCksIDAsIGluZGV4KSk7CiAgICAgaW50IGxpbmVObyA9IDA7CiAgICAgZm9y
IChnY2hhciogb2Zmc2V0ID0gdGV4dC5nZXQoKTsgKm9mZnNldDsgKytvZmZzZXQpIHsKICAgICAg
ICAgaWYgKCpvZmZzZXQgPT0gJ1xuJykKQEAgLTExOTUsNyArMTE5NSw3IEBAIEpTU3RyaW5nUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKICAgICBnaW50IHN0
YXJ0LCBlbmQ7CiAgICAgZ19mcmVlKGF0a190ZXh0X2dldF9zZWxlY3Rpb24oQVRLX1RFWFQobV9l
bGVtZW50KSwgMCwgJnN0YXJ0LCAmZW5kKSk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBzZWxlY3Rp
b24oZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHNlbGVjdGlvbihnX3N0cmR1cF9wcmludGYoInslZCwgJWR9Iiwg
c3RhcnQsIGVuZCAtIHN0YXJ0KSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHNlbGVjdGlvbi5nZXQoKSk7CiB9CiAKQEAgLTEzODcsNyArMTM4Nyw3IEBAIEpTU3Ry
aW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCiAgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgQXRrSHlwZXJsaW5rKiBoeXBl
cmxpbmsgPSBhdGtfaHlwZXJsaW5rX2ltcGxfZ2V0X2h5cGVybGluayhBVEtfSFlQRVJMSU5LX0lN
UEwobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxjaGFyPiBoeXBlcmxpbmtVUkkoYXRrX2h5cGVy
bGlua19nZXRfdXJpKGh5cGVybGluaywgMCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHlwZXJs
aW5rVVJJKGF0a19oeXBlcmxpbmtfZ2V0X3VyaShoeXBlcmxpbmssIDApKTsKIAogICAgIC8vIEJ1
aWxkIHRoZSByZXN1bHQgc3RyaW5nLCBzdHJpcHBpbmcgdGhlIGFic29sdXRlIFVSTCBwYXRocyBp
ZiBwcmVzZW50LgogICAgIGNoYXIqIGxvY2FsVVJJID0gZ19zdHJzdHJfbGVuKGh5cGVybGlua1VS
SS5nZXQoKSwgLTEsICJMYXlvdXRUZXN0cyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckVmbC5jcHAKaW5kZXggODAxMmRhNi4u
NjgzZTY1MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJFZmwuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgiCiAKICNpbmNsdWRlIDxhdGsv
YXRrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnQoKQogewpAQCAtNjQsNyArNjQsNyBAQCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoSlNTdHJpbmdSZQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHNpemVfdCBidWZm
ZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGlkKTsKLSAgICBHT3du
UHRyPGdjaGFyPiBpZEJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNp
emUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIq
PihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaWQs
IGlkQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgIEF0a09iamVjdCogcmVzdWx0ID0g
Y2hpbGRFbGVtZW50QnlJZChyb290LCBpZEJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcAppbmRl
eCBkODlhOGQyLi44NjhhYzcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXQuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudCgpCiB7CkBAIC02Miw3ICs2Miw3IEBA
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2li
bGVFbGVtZW50QnlJZChKU1N0cmluZ1JlCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaWQpOwotICAg
IEdPd25QdHI8Z2NoYXI+IGlkQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVm
ZmVyU2l6ZSkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBpZEJ1ZmZlcihzdGF0aWNfY2FzdDxn
Y2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhpZCwgaWRCdWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogCiAgICAgQXRrT2JqZWN0KiByZXN1
bHQgPSBjaGlsZEVsZW1lbnRCeUlkKHJvb3QsIGlkQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDE1ZjJmNjEuLjY0YWY2Njkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDUs
NyArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZUl0
ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUg
PGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxjc3RyaW5nPgpAQCAtMjAz
LDE5ICsyMDMsMTkgQEAgQ1N0cmluZyBnZXRPdXRwdXREaXIoKQogICAgICAgICByZXR1cm4gd2Vi
a2l0T3V0cHV0RGlyOwogCiAgICAgQ1N0cmluZyB0b3BMZXZlbFBhdGggPSBnZXRUb3BMZXZlbFBh
dGgoKTsKLSAgICBHT3duUHRyPGNoYXI+IG91dHB1dERpcihnX2J1aWxkX2ZpbGVuYW1lKHRvcExl
dmVsUGF0aC5kYXRhKCksICJXZWJLaXRCdWlsZCIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IG91dHB1dERpcihnX2J1aWxkX2ZpbGVuYW1lKHRvcExldmVsUGF0aC5kYXRhKCksICJXZWJL
aXRCdWlsZCIsIE5VTEwpKTsKICAgICByZXR1cm4gb3V0cHV0RGlyLmdldCgpOwogfQogCiBzdGF0
aWMgQ1N0cmluZyBnZXRGb250c1BhdGgoKQogewogICAgIENTdHJpbmcgd2Via2l0T3V0cHV0RGly
ID0gZ2V0T3V0cHV0RGlyKCk7Ci0gICAgR093blB0cjxjaGFyPiBmb250c1BhdGgoZ19idWlsZF9m
aWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAiRGVwZW5kZW5jaWVzIiwgIlJvb3QiLCAi
d2Via2l0Z3RrLXRlc3QtZm9udHMiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb250
c1BhdGgoZ19idWlsZF9maWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAiRGVwZW5kZW5j
aWVzIiwgIlJvb3QiLCAid2Via2l0Z3RrLXRlc3QtZm9udHMiLCBOVUxMKSk7CiAgICAgaWYgKGdf
ZmlsZV90ZXN0KGZvbnRzUGF0aC5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVf
VEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19ESVIpKSkKICAgICAgICAgcmV0dXJuIGZvbnRz
UGF0aC5nZXQoKTsKIAogICAgIC8vIFRyeSBhbHRlcm5hdGl2ZSBmb250cyBwYXRoLgotICAgIGZv
bnRzUGF0aC5zZXQoZ19idWlsZF9maWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAid2Vi
a2l0Z3RrLXRlc3QtZm9udHMiLCBOVUxMKSk7CisgICAgZm9udHNQYXRoLnJlc2V0KGdfYnVpbGRf
ZmlsZW5hbWUod2Via2l0T3V0cHV0RGlyLmRhdGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwg
TlVMTCkpOwogICAgIGlmIChnX2ZpbGVfdGVzdChmb250c1BhdGguZ2V0KCksIHN0YXRpY19jYXN0
PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfRElSKSkpCiAg
ICAgICAgIHJldHVybiBmb250c1BhdGguZ2V0KCk7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplRm9udHMoY29uc3QgY2hhciogdGVzdFVSTCA9IDApCiAgICAgLy8g
TG9hZCBvdXIgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBzZXRzIHVwIHByb3BlciBhbGlhc2Vz
IGZvciBmYW1pbHkKICAgICAvLyBuYW1lcyBsaWtlIHNhbnMsIHNlcmlmIGFuZCBtb25vc3BhY2Uu
CiAgICAgRmNDb25maWcqIGNvbmZpZyA9IEZjQ29uZmlnQ3JlYXRlKCk7Ci0gICAgR093blB0cjxn
Y2hhcj4gZm9udENvbmZpZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIs
ICJmb250cy5jb25mIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRDb25maWdG
aWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiZm9udHMuY29uZiIsIG51
bGxwdHIpKTsKICAgICBpZiAoIUZjQ29uZmlnUGFyc2VBbmRMb2FkKGNvbmZpZywgcmVpbnRlcnBy
ZXRfY2FzdDxGY0NoYXI4Kj4oZm9udENvbmZpZ0ZpbGVuYW1lLmdldCgpKSwgdHJ1ZSkpCiAgICAg
ICAgIGdfZXJyb3IoIkNvdWxkbid0IGxvYWQgZm9udCBjb25maWd1cmF0aW9uIGZpbGUgZnJvbTog
JXMiLCBmb250Q29uZmlnRmlsZW5hbWUuZ2V0KCkpOwogCkBAIC0yNDcsMzAgKzI0NywzMCBAQCBz
dGF0aWMgdm9pZCBpbml0aWFsaXplRm9udHMoY29uc3QgY2hhciogdGVzdFVSTCA9IDApCiAgICAg
aWYgKGZvbnRzUGF0aC5pc051bGwoKSkKICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvY2F0
ZSB0ZXN0IGZvbnRzIGF0ICVzLiBJcyBXRUJLSVRfVE9QX0xFVkVMIHNldD8iLCBmb250c1BhdGgu
ZGF0YSgpKTsKIAotICAgIEdPd25QdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihm
b250c1BhdGguZGF0YSgpLCAwLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxHRGlyPiBmb250c0RpcmVj
dG9yeShnX2Rpcl9vcGVuKGZvbnRzUGF0aC5kYXRhKCksIDAsIG51bGxwdHIpKTsKICAgICB3aGls
ZSAoY29uc3QgY2hhciogZGlyZWN0b3J5RW50cnkgPSBnX2Rpcl9yZWFkX25hbWUoZm9udHNEaXJl
Y3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIGlmICghZ19zdHJfaGFzX3N1ZmZpeChkaXJlY3RvcnlF
bnRyeSwgIi50dGYiKSAmJiAhZ19zdHJfaGFzX3N1ZmZpeChkaXJlY3RvcnlFbnRyeSwgIi5vdGYi
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBmb250UGF0
aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9yeUVudHJ5LCBOVUxM
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
Zm9udHNQYXRoLmRhdGEoKSwgZGlyZWN0b3J5RW50cnksIG51bGxwdHIpKTsKICAgICAgICAgaWYg
KCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBG
Y0NoYXI4Kj4oZm9udFBhdGguZ2V0KCkpKSkKICAgICAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5v
dCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9udFBhdGguZ2V0KCkpOwogCiAgICAgfQogCiAgICAgLy8g
QWhlbSBpcyB1c2VkIGJ5IG1hbnkgbGF5b3V0IHRlc3RzLgotICAgIEdPd25QdHI8Z2NoYXI+IGFo
ZW1Gb250RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJUiwgIkFIRU1fX19f
LlRURiIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBhaGVtRm9udEZpbGVuYW1lKGdf
YnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJBSEVNX19fXy5UVEYiLCBudWxscHRyKSk7
CiAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2Fz
dDxGY0NoYXI4Kj4oYWhlbUZvbnRGaWxlbmFtZS5nZXQoKSkpKQogICAgICAgICBnX2Vycm9yKCJD
b3VsZCBub3QgbG9hZCBmb250IGF0ICVzISIsIGFoZW1Gb250RmlsZW5hbWUuZ2V0KCkpOyAKIAog
ICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDk7IGkrKykgewotICAgICAgICBHT3duUHRyPGdjaGFy
PiBmb250RmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCJXZWJLaXRXZWlnaHRXYXRjaGVyJWkwMC50
dGYiLCBpKSk7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGZvbnRQYXRoKGdfYnVpbGRfZmlsZW5h
bWUoRk9OVFNfQ09ORl9ESVIsICIuLiIsICIuLiIsICJmb250cyIsIGZvbnRGaWxlbmFtZS5nZXQo
KSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250RmlsZW5hbWUoZ19zdHJk
dXBfcHJpbnRmKCJXZWJLaXRXZWlnaHRXYXRjaGVyJWkwMC50dGYiLCBpKSk7CisgICAgICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGZvbnRQYXRoKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIs
ICIuLiIsICIuLiIsICJmb250cyIsIGZvbnRGaWxlbmFtZS5nZXQoKSwgbnVsbHB0cikpOwogICAg
ICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoY29uZmlnLCByZWludGVycHJldF9jYXN0
PEZjQ2hhcjgqPihmb250UGF0aC5nZXQoKSkpKQogICAgICAgICAgICAgZ19lcnJvcigiQ291bGQg
bm90IGxvYWQgZm9udCBhdCAlcyEiLCBmb250UGF0aC5nZXQoKSk7IAogICAgIH0KIAogICAgIC8v
IEEgZm9udCB3aXRoIG5vIHZhbGlkIEZvbnRjb25maWcgZW5jb2RpbmcgdG8gdGVzdCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0NTIKLSAgICBHT3duUHRyPGdjaGFy
PiBmb250V2l0aE5vVmFsaWRFbmNvZGluZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNf
Q09ORl9ESVIsICJGb250V2l0aE5vVmFsaWRFbmNvZGluZy5mb24iLCBOVUxMKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZShnX2J1aWxkX2Zp
bGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiRm9udFdpdGhOb1ZhbGlkRW5jb2RpbmcuZm9uIiwgbnVs
bHB0cikpOwogICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJlaW50ZXJw
cmV0X2Nhc3Q8RmNDaGFyOCo+KGZvbnRXaXRoTm9WYWxpZEVuY29kaW5nRmlsZW5hbWUuZ2V0KCkp
KSkKICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvYWQgZm9udCBhdCAlcyEiLCBmb250V2l0
aE5vVmFsaWRFbmNvZGluZ0ZpbGVuYW1lLmdldCgpKTsgCiAKQEAgLTI5OSw3ICsyOTksNyBAQCBz
dGF0aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAg
IGlmIChnVGVzdFJ1bm5lci0+ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCkpIHsKICAgICAgICAgR1NM
aXN0KiBjaGlsZHJlbiA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2V0RnJhbWVDaGlsZHJl
bihmcmFtZSk7CiAgICAgICAgIGZvciAoR1NMaXN0KiBjaGlsZCA9IGNoaWxkcmVuOyBjaGlsZDsg
Y2hpbGQgPSBnX3NsaXN0X25leHQoY2hpbGQpKSB7Ci0gICAgICAgICAgICBHT3duUHRyPGdjaGFy
PiBjaGlsZERhdGEoZHVtcEZyYW1lc0FzVGV4dChzdGF0aWNfY2FzdDxXZWJLaXRXZWJGcmFtZSo+
KGNoaWxkLT5kYXRhKSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2hpbGREYXRh
KGR1bXBGcmFtZXNBc1RleHQoc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRnJhbWUqPihjaGlsZC0+ZGF0
YSkpKTsKICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhyZXN1bHQsIGNoaWxkRGF0YS5nZXQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgZ19zbGlzdF9mcmVlKGNoaWxkcmVuKTsKQEAgLTMxMCw4ICsz
MTAsOCBAQCBzdGF0aWMgZ2NoYXIqIGR1bXBGcmFtZXNBc1RleHQoV2ViS2l0V2ViRnJhbWUqIGZy
YW1lKQogCiBzdGF0aWMgZ2ludCBjb21wYXJlSGlzdG9yeUl0ZW1zKGdwb2ludGVyKiBpdGVtMSwg
Z3BvaW50ZXIqIGl0ZW0yKQogewotICAgIEdPd25QdHI8Z2NoYXI+IGZpcnN0SXRlbVRhcmdldCh3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFyZ2V0KFdFQktJVF9XRUJfSElTVE9SWV9JVEVN
KGl0ZW0xKSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IHNlY29uZEl0ZW1UYXJnZXQod2Via2l0X3dl
Yl9oaXN0b3J5X2l0ZW1fZ2V0X3RhcmdldChXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShpdGVtMikp
KTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaXJzdEl0ZW1UYXJnZXQod2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0X3RhcmdldChXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShpdGVtMSkpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBzZWNvbmRJdGVtVGFyZ2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX2dldF90YXJnZXQoV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oaXRlbTIpKSk7CiAgICAgcmV0
dXJuIGdfYXNjaWlfc3RyY2FzZWNtcChmaXJzdEl0ZW1UYXJnZXQuZ2V0KCksIHNlY29uZEl0ZW1U
YXJnZXQuZ2V0KCkpOwogfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIHZvaWQgZHVtcEhp
c3RvcnlJdGVtKFdlYktpdFdlYkhpc3RvcnlJdGVtKiBpdGVtLCBpbnQgaW5kZW50LCBib29sIGN1
cnJlbnQKIAogICAgIGdfZnJlZSh1cmlTY2hlbWUpOwogCi0gICAgR093blB0cjxnY2hhcj4gdGFy
Z2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQoaXRlbSkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHRhcmdldCh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFyZ2V0KGl0
ZW0pKTsKICAgICBpZiAodGFyZ2V0LmdldCgpICYmIHN0cmxlbih0YXJnZXQuZ2V0KCkpID4gMCkK
ICAgICAgICAgcHJpbnRmKCIgKGluIGZyYW1lIFwiJXNcIikiLCB0YXJnZXQuZ2V0KCkpOwogICAg
IGlmICh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9pc190YXJnZXRfaXRlbShpdGVtKSkKQEAgLTQy
OSwxOSArNDI5LDE5IEBAIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKIENTdHJp
bmcgc291cFVSSVRvU3RyaW5nUHJlc2VydmluZ1Bhc3N3b3JkKFNvdXBVUkkqIHNvdXBVUkkpCiB7
CiAgICAgaWYgKCFzb3VwVVJJLT5wYXNzd29yZCkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHVy
aVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkksIEZBTFNF
KSk7CiAgICAgICAgIHJldHVybiB1cmlTdHJpbmcuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gc291
cF91cmlfdG9fc3RyaW5nIGRvZXMgbm90IGluc2VydCB0aGUgcGFzc3dvcmQgaW50byB0aGUgc3Ry
aW5nLCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUKICAgICAvLyBVUkkgc3RyaW5nIGFuZCB0aGVu
IHJlaW5zZXJ0IGFueSBjcmVkZW50aWFscyB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgU291cFVS
SS4gQWxsIHRlc3RzIHRoYXQKICAgICAvLyB1c2UgVVJMLWVtYmVkZGVkIGNyZWRlbnRpYWxzIHVz
ZSBIVFRQLCBzbyBpdCdzIHNhZmUgaGVyZS4KLSAgICBHT3duUHRyPGNoYXI+IHBhc3N3b3JkKHNv
dXBVUkktPnBhc3N3b3JkKTsKLSAgICBHT3duUHRyPGNoYXI+IHVzZXIoc291cFVSSS0+dXNlcik7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXNzd29yZChzb3VwVVJJLT5wYXNzd29yZCk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiB1c2VyKHNvdXBVUkktPnVzZXIpOwogICAgIHNvdXBVUkktPnBhc3N3
b3JkID0gMDsKICAgICBzb3VwVVJJLT51c2VyID0gMDsKIAotICAgIEdPd25QdHI8Y2hhcj4gdXJp
U3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwog
ICAgIFN0cmluZyBhYnNvbHV0ZVVSSVdpdGhvdXRDcmVkZW50aWFsU3RyaW5nID0gU3RyaW5nOjpm
cm9tVVRGOCh1cmlTdHJpbmcuZ2V0KCkpOwogICAgIFN0cmluZyBwcm90b2NvbEFuZENyZWRlbnRp
YWwgPSBTdHJpbmc6OmZvcm1hdCgiaHR0cDovLyVzOiVzQCIsIHVzZXIgPyB1c2VyLmdldCgpIDog
IiIsIHBhc3N3b3JkLmdldCgpKTsKICAgICByZXR1cm4gYWJzb2x1dGVVUklXaXRob3V0Q3JlZGVu
dGlhbFN0cmluZy5yZXBsYWNlKCJodHRwOi8vIiwgcHJvdG9jb2xBbmRDcmVkZW50aWFsKS51dGY4
KCk7CkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFueVByZXZpb3Vz
V2FpdFRvRHVtcFdhdGNoZG9nKCkKIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3Rl
bnRWYWx1ZXMoKQogewogICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7Ci0gICAgR093blB0cjxnY2hhcj4gbG9jYWxT
dG9yYWdlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIkR1bXBS
ZW5kZXJUcmVlR3RrIiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBsb2NhbFN0b3JhZ2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rpcigp
LCAiRHVtcFJlbmRlclRyZWVHdGsiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwogICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksCiAgICAgICAgICJlbmFibGUtYWNjZWxlcmF0ZWQt
Y29tcG9zaXRpbmciLCBGQUxTRSwKICAgICAgICAgImVuYWJsZS1wcml2YXRlLWJyb3dzaW5nIiwg
RkFMU0UsCkBAIC02NzksNyArNjc5LDcgQEAgc3RhdGljIENTdHJpbmcgdGVtcG9yYXJ5RGF0YWJh
c2VEaXJlY3RvcnkoKQogICAgIGNvbnN0IGNoYXIqIGRpcmVjdG9yeUZyb21FbnZpcm9ubWVudCA9
IGdfZ2V0ZW52KCJEVU1QUkVOREVSVFJFRV9URU1QIik7CiAgICAgaWYgKGRpcmVjdG9yeUZyb21F
bnZpcm9ubWVudCkKICAgICAgICAgcmV0dXJuIGRpcmVjdG9yeUZyb21FbnZpcm9ubWVudDsKLSAg
ICBHT3duUHRyPGNoYXI+IGZhbGxiYWNrKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAiZ3Rrd2Via2l0ZHJ0IiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IGZhbGxiYWNrKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rpcigp
LCAiZ3Rrd2Via2l0ZHJ0IiwgImRhdGFiYXNlcyIsIE5VTEwpKTsKICAgICByZXR1cm4gZmFsbGJh
Y2suZ2V0KCk7CiB9CiAKQEAgLTk4NCw3ICs5ODQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmll
d1NjcmlwdENvbmZpcm0oV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1l
LAogc3RhdGljIHZvaWQgd2ViVmlld1RpdGxlQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB2aWV3LCBX
ZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiB0aXRsZSwgZ3BvaW50ZXIgZGF0YSkK
IHsKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSAmJiAhZG9u
ZSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFtZU5hbWVTdWl0YWJs
ZUZvclRlc3RSZXN1bHQodmlldywgZnJhbWUpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBm
cmFtZU5hbWUoZ2V0RnJhbWVOYW1lU3VpdGFibGVGb3JUZXN0UmVzdWx0KHZpZXcsIGZyYW1lKSk7
CiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBmcmFtZU5hbWUu
Z2V0KCksIHRpdGxlID8gdGl0bGUgOiAiIik7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJGcmFtZUxvYWRTdGF0dXNOb3RpZmllZChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUsIGdwb2ludGVyIHVzZXJfZGF0YQogICAgIFdlYktpdExvYWRTdGF0dXMgbG9hZFN0YXR1
cyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2xvYWRfc3RhdHVzKGZyYW1lKTsKIAogICAgIGlmIChn
VGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIEdPd25QdHI8
Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3ZWJraXRf
d2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSksIGZyYW1lKSk7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3ZWJr
aXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSksIGZyYW1lKSk7CiAKICAgICAgICAgc3dp
dGNoIChsb2FkU3RhdHVzKSB7CiAgICAgICAgIGNhc2UgV0VCS0lUX0xPQURfUFJPVklTSU9OQUw6
CkBAIC0xMTc2LDEwICsxMTc2LDEwIEBAIHN0YXRpYyBTdHJpbmcgcGF0aEZyb21Tb3VwVVJJKFNv
dXBVUkkqIHVyaSkKICAgICAgICAgcmV0dXJuIHNvdXBVUklUb1N0cmluZ1ByZXNlcnZpbmdQYXNz
d29yZCh1cmkpLmRhdGEoKTsKIAogICAgIFN0cmluZyBwYXRoU3RyaW5nID0gdXJpLT5wYXRoOwot
ICAgIEdPd25QdHI8Z2NoYXI+IHBhdGhCYXNlbmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHBhdGhT
dHJpbmcudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhdGhCYXNlbmFt
ZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHBhdGhTdHJpbmcudXRmOCgpLmRhdGEoKSkpOwogCiAgICAg
V2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFt
ZSh3ZWJWaWV3KTsKLSAgICBHT3duUHRyPFNvdXBVUkk+IG1haW5GcmFtZVVyaShzb3VwX3VyaV9u
ZXcod2Via2l0X3dlYl9mcmFtZV9nZXRfdXJpKG1haW5GcmFtZSkpKTsKKyAgICBHVW5pcXVlUHRy
PFNvdXBVUkk+IG1haW5GcmFtZVVyaShzb3VwX3VyaV9uZXcod2Via2l0X3dlYl9mcmFtZV9nZXRf
dXJpKG1haW5GcmFtZSkpKTsKIAogICAgIFN0cmluZyBtYWluRnJhbWVVcmlQYXRoU3RyaW5nID0g
bWFpbkZyYW1lVXJpLmdldCgpLT5wYXRoOwogICAgIFN0cmluZyBiYXNlUGF0aCA9IG1haW5GcmFt
ZVVyaVBhdGhTdHJpbmcuc3Vic3RyaW5nKDAsIG1haW5GcmFtZVVyaVBhdGhTdHJpbmcucmV2ZXJz
ZUZpbmQoJy8nKSArIDEpOwpAQCAtMTIwNiw3ICsxMjA2LDcgQEAgc3RhdGljIENTdHJpbmcgY29u
dmVydE5ldHdvcmtSZXF1ZXN0VG9VUkxQYXRoKFdlYktpdE5ldHdvcmtSZXF1ZXN0KiByZXF1ZXN0
KQogCiBzdGF0aWMgQ1N0cmluZyBjb252ZXJ0V2ViUmVzb3VyY2VUb1VSTFBhdGgoV2ViS2l0V2Vi
UmVzb3VyY2UqIHdlYlJlc291cmNlKQogewotICAgIEdPd25QdHI8U291cFVSST4gdXJpKHNvdXBf
dXJpX25ldyh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVzb3VyY2UpKSk7CisgICAg
R1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291cF91cmlfbmV3KHdlYmtpdF93ZWJfcmVzb3VyY2Vf
Z2V0X3VyaSh3ZWJSZXNvdXJjZSkpKTsKICAgICByZXR1cm4gcGF0aEZyb21Tb3VwVVJJKHVyaS5n
ZXQoKSkudXRmOCgpOwogfQogCkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0aWMgQ1N0cmluZyB1
cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5nKQogICAgIGlmICgh
Z19zdHJfaGFzX3ByZWZpeCh1cmlTdHJpbmcsICJmaWxlOi8vIikpCiAgICAgICAgIHJldHVybiBD
U3RyaW5nKHVyaVN0cmluZyk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlbmFtZShnX3BhdGhf
Z2V0X2Jhc2VuYW1lKHVyaVN0cmluZykpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VuYW1l
KGdfcGF0aF9nZXRfYmFzZW5hbWUodXJpU3RyaW5nKSk7CiAgICAgcmV0dXJuIENTdHJpbmcoYmFz
ZW5hbWUuZ2V0KCkpOwogfQogCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBzdGF0aWMgQ1N0cmluZyBk
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChTb3VwVVJJKiB1cmkpCiAgICAgaWYgKCF1
cmkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCIobnVsbCkiKTsKIAotICAgIEdPd25QdHI8Y2hh
cj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgZmFsc2UpKTsKICAg
ICByZXR1cm4gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVyaVN0cmluZy5nZXQoKSk7CiB9CiAK
QEAgLTEyNDAsNyArMTI0MCw3IEBAIHN0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KEdFcnJvciogZXJyb3IsIFdlYktpdFdlYlJlc291cmNlCiAgICAgICAgIGVy
cm9yRG9tYWluID0gIldlYktpdEVycm9yRG9tYWluIjsKIAogICAgIC8vIFRPRE86IHRoZSBvdGhl
ciBwb3J0cyBnZXQgdGhlIGZhaWxpbmdVUkwgZnJvbSB0aGUgUmVzb3VyY2VFcnJvcgotICAgIEdP
d25QdHI8Y2hhcj4gZXJyb3JTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8TlNFcnJvciBkb21haW4g
JXMsIGNvZGUgJWQsIGZhaWxpbmcgVVJMIFwiJXNcIj4iLAorICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZXJyb3JTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8TlNFcnJvciBkb21haW4gJXMsIGNvZGUgJWQs
IGZhaWxpbmcgVVJMIFwiJXNcIj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yRG9tYWluLCBlcnJvci0+Y29kZSwgcmVzb3VyY2VVUklTdHJpbmcu
ZGF0YSgpKSk7CiAgICAgcmV0dXJuIENTdHJpbmcoZXJyb3JTdHJpbmcuZ2V0KCkpOwogfQpAQCAt
MTI1NSw3ICsxMjU1LDcgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCiAgICAgU291cFVSSSogbWFp
bkRvY3VtZW50VVJJID0gc291cF9tZXNzYWdlX2dldF9maXJzdF9wYXJ0eShzb3VwTWVzc2FnZSk7
CiAgICAgQ1N0cmluZyBtYWluRG9jdW1lbnRVUklTdHJpbmcoZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQobWFpbkRvY3VtZW50VVJJKSk7CiAgICAgQ1N0cmluZyBwYXRoKGNvbnZlcnRO
ZXR3b3JrUmVxdWVzdFRvVVJMUGF0aChyZXF1ZXN0KSk7Ci0gICAgR093blB0cjxjaGFyPiBkZXNj
cmlwdGlvbihnX3N0cmR1cF9wcmludGYoIjxOU1VSTFJlcXVlc3QgVVJMICVzLCBtYWluIGRvY3Vt
ZW50IFVSTCAlcywgaHR0cCBtZXRob2QgJXM+IiwKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc2Ny
aXB0aW9uKGdfc3RyZHVwX3ByaW50ZigiPE5TVVJMUmVxdWVzdCBVUkwgJXMsIG1haW4gZG9jdW1l
bnQgVVJMICVzLCBodHRwIG1ldGhvZCAlcz4iLAogICAgICAgICBwYXRoLmRhdGEoKSwgbWFpbkRv
Y3VtZW50VVJJU3RyaW5nLmRhdGEoKSwgc291cE1lc3NhZ2UtPm1ldGhvZCkpOwogICAgIHJldHVy
biBDU3RyaW5nKGRlc2NyaXB0aW9uLmdldCgpKTsKIH0KQEAgLTEyNzYsNyArMTI3Niw3IEBAIHN0
YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYktpdE5ldHdv
cmtSZXNwb25zZSogcmVzcG9uc2UpCiAgICAgfSBlbHNlCiAgICAgICAgIHBhdGggPSBDU3RyaW5n
KCIobnVsbCkiKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ19zdHJkdXBfcHJp
bnRmKCI8TlNVUkxSZXNwb25zZSAlcywgaHR0cCBzdGF0dXMgY29kZSAlZD4iLCBwYXRoLmRhdGEo
KSwgc3RhdHVzQ29kZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ19zdHJk
dXBfcHJpbnRmKCI8TlNVUkxSZXNwb25zZSAlcywgaHR0cCBzdGF0dXMgY29kZSAlZD4iLCBwYXRo
LmRhdGEoKSwgc3RhdHVzQ29kZSkpOwogICAgIHJldHVybiBDU3RyaW5nKGRlc2NyaXB0aW9uLmdl
dCgpKTsKIH0KIApAQCAtMTMwMCw3ICsxMzAwLDcgQEAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViRnJhbWUqIHdlYkYK
ICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9uZXcod2Via2l0X25ldHdvcmtfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpKTsKIAogICAgIGlmIChTT1VQX1VSSV9JU19WQUxJRCh1cmkpKSB7Ci0g
ICAgICAgIEdPd25QdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0cmluZyh1cmksIEZB
TFNFKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJpX3RvX3N0
cmluZyh1cmksIEZBTFNFKSk7CiAKICAgICAgICAgaWYgKFNPVVBfVVJJX1ZBTElEX0ZPUl9IVFRQ
KHVyaSkgJiYgZ19zdHJjbXAwKHVyaS0+aG9zdCwgIjEyNy4wLjAuMSIpCiAgICAgICAgICAgICAm
JiBnX3N0cmNtcDAodXJpLT5ob3N0LCAiMjU1LjI1NS4yNTUuMjU1IikKQEAgLTEzNzQsNyArMTM3
NCw3IEBAIHN0YXRpYyB2b2lkIGZyYW1lTG9hZEV2ZW50Q2FsbGJhY2soV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHCiAgICAgaWYgKGRvbmUgfHwgIWdUZXN0UnVu
bmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdP
d25QdHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3
ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSksIGZyYW1lKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiBmcmFtZU5hbWUoZ2V0RnJhbWVOYW1lU3VpdGFibGVGb3JUZXN0UmVzdWx0KHdl
YmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KGZyYW1lKSwgZnJhbWUpKTsKICAgICBzd2l0Y2gg
KGV2ZW50KSB7CiAgICAgY2FzZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OldpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RUb1VSTDoKICAgICAgICAgQVNTRVJUKHVybCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRWRpdGluZ0NhbGxiYWNrcy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRWRpdGluZ0NhbGxiYWNrcy5jcHAKaW5kZXggZWY1YTk2OS4uM2MwOGY4
MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0VkaXRpbmdDYWxsYmFja3Mu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FZGl0aW5nQ2FsbGJhY2tzLmNwcApA
QCAtMzMsMjQgKzMzLDI0IEBACiAjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHN0YXRpYyBDU3RyaW5nIGR1bXBOb2RlUGF0aChX
ZWJLaXRET01Ob2RlKiBub2RlKQogewotICAgIEdPd25QdHI8Z2NoYXI+IG5vZGVOYW1lKHdlYmtp
dF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBu
b2RlTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShub2RlKSk7CiAgICAgR1N0cmlu
ZyogcGF0aCA9IGdfc3RyaW5nX25ldyhub2RlTmFtZS5nZXQoKSk7CiAKICAgICBXZWJLaXRET01O
b2RlKiBwYXJlbnQgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X3BhcmVudF9ub2RlKG5vZGUpOwogICAg
IHdoaWxlIChwYXJlbnQpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gcGFyZW50TmFtZSh3ZWJr
aXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShwYXJlbnQpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gcGFyZW50TmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShwYXJlbnQpKTsK
IAogICAgICAgICBnX3N0cmluZ19hcHBlbmQocGF0aCwgIiA+ICIpOwogICAgICAgICBnX3N0cmlu
Z19hcHBlbmQocGF0aCwgcGFyZW50TmFtZS5nZXQoKSk7CiAgICAgICAgIHBhcmVudCA9IHdlYmtp
dF9kb21fbm9kZV9nZXRfcGFyZW50X25vZGUocGFyZW50KTsKICAgICB9CiAKLSAgICBHT3duUHRy
PGdjaGFyPiBwYXRoQnVmZmVyKGdfc3RyaW5nX2ZyZWUocGF0aCwgRkFMU0UpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBwYXRoQnVmZmVyKGdfc3RyaW5nX2ZyZWUocGF0aCwgRkFMU0UpKTsKICAg
ICByZXR1cm4gcGF0aEJ1ZmZlci5nZXQoKTsKIH0KIApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMg
Q1N0cmluZyBkdW1wUmFuZ2UoV2ViS2l0RE9NUmFuZ2UqIHJhbmdlKQogICAgIGlmICghcmFuZ2Up
CiAgICAgICAgIHJldHVybiAiKG51bGwpIjsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGR1bXAoZ19z
dHJkdXBfcHJpbnRmKCJyYW5nZSBmcm9tICVsaSBvZiAlcyB0byAlbGkgb2YgJXMiLAorICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGR1bXAoZ19zdHJkdXBfcHJpbnRmKCJyYW5nZSBmcm9tICVsaSBvZiAl
cyB0byAlbGkgb2YgJXMiLAogICAgICAgICB3ZWJraXRfZG9tX3JhbmdlX2dldF9zdGFydF9vZmZz
ZXQocmFuZ2UsIDApLAogICAgICAgICBkdW1wTm9kZVBhdGgod2Via2l0X2RvbV9yYW5nZV9nZXRf
c3RhcnRfY29udGFpbmVyKHJhbmdlLCAwKSkuZGF0YSgpLAogICAgICAgICB3ZWJraXRfZG9tX3Jh
bmdlX2dldF9lbmRfb2Zmc2V0KHJhbmdlLCAwKSwKQEAgLTE1MSw3ICsxNTEsNyBAQCBnYm9vbGVh
biBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dERPTVJhbmdlKiBmcm9tUgogZ2Jvb2xlYW4gc2hvdWxkQXBwbHlTdHlsZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgV2ViS2l0RE9N
UmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEVkaXRp
bmdDYWxsYmFja3MoKSkgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBzdHlsZVRleHQod2Via2l0
X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X2Nzc190ZXh0KHN0eWxlKSk7CisgICAgICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHN0eWxlVGV4dCh3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJh
dGlvbl9nZXRfY3NzX3RleHQoc3R5bGUpKTsKICAgICAgICAgcHJpbnRmKCJFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRBcHBseVN0eWxlOiVzIHRvRWxlbWVudHNJbkRPTVJhbmdlOiVzXG4iLAogICAg
ICAgICAgICAgICAgc3R5bGVUZXh0LmdldCgpLCBkdW1wUmFuZ2UocmFuZ2UpLmRhdGEoKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXggM2M2MzY0
OC4uNTgyNjAyNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBA
IC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUg
IldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIgotI2luY2x1ZGUgPEdP
d25QdHJHdGsuaD4KICNpbmNsdWRlIDxHUmVmUHRyR3RrLmg+CiAjaW5jbHVkZSA8R3RrVmVyc2lv
bmluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CkBAIC00OCw2
ICs0Nyw4IEBACiAjaW5jbHVkZSA8d2Via2l0L3dlYmtpdHdlYnZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBleHRlcm4gIkMiIHsKQEAgLTIyMCw3
ICsyMjEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb250ZXh0Q2xpY2tDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpbwogICAgIFdlYktpdFdlYlZpZXcqIHZp
ZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIEd0a01l
bnUqIGd0a01lbnUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHRfbWVudSh2aWV3KTsKICAg
ICBpZiAoZ3RrTWVudSkgewotICAgICAgICBHT3duUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFp
bmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKGd0a01lbnUpKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlO
RVIoZ3RrTWVudSkpKTsKICAgICAgICAgSlNWYWx1ZVJlZiBhcnJheVZhbHVlc1tnX2xpc3RfbGVu
Z3RoKGl0ZW1zLmdldCgpKV07CiAgICAgICAgIGludCBpbmRleCA9IDA7CiAgICAgICAgIGZvciAo
R0xpc3QqIGl0ZW0gPSBnX2xpc3RfZmlyc3QoaXRlbXMuZ2V0KCkpOyBpdGVtOyBpdGVtID0gZ19s
aXN0X25leHQoaXRlbSkpIHsKQEAgLTU0Miw5ICs1NDMsOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBi
ZWdpbkRyYWdXaXRoRmlsZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZgogICAgIC8vIElmIHRoaXMgaXMgYW4gSFRUUCB0ZXN0LCB3ZSBzdGlsbCBuZWVkIHRvIHBh
c3MgYSBsb2NhbCBmaWxlIHBhdGgKICAgICAvLyB0byBXZWJDb3JlLiBFdmVuIHRob3VnaCB0aGUg
ZmlsZSBkb2Vzbid0IGV4aXN0LCB0aGlzIHNob3VsZCBiZSBmaW5lCiAgICAgLy8gZm9yIG1vc3Qg
dGVzdHMuCi0gICAgR093blB0cjxnY2hhcj4gc2NoZW1lKGdfZmlsZV9nZXRfdXJpX3NjaGVtZShw
YXJlbnREaXJlY3RvcnkuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzY2hlbWUoZ19m
aWxlX2dldF91cmlfc2NoZW1lKHBhcmVudERpcmVjdG9yeS5nZXQoKSkpOwogICAgIGlmIChnX3N0
cl9lcXVhbChzY2hlbWUuZ2V0KCksICJodHRwIikgfHwgZ19zdHJfZXF1YWwoc2NoZW1lLmdldCgp
LCAiaHR0cHMiKSkgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBjdXJyZW50RGlyZWN0b3J5KGdf
Z2V0X2N1cnJlbnRfZGlyKCkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjdXJyZW50RGly
ZWN0b3J5KGdfZ2V0X2N1cnJlbnRfZGlyKCkpOwogICAgICAgICBwYXJlbnREaXJlY3RvcnkgPSBh
ZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChjdXJyZW50RGlyZWN0b3J5LmdldCgpKSk7CiAg
ICAgfQogCkBAIC01NTcsNyArNTU4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0
aEZpbGVzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICAg
ICAgSlNTdHJpbmdSZWYgZmlsZW5hbWVTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU09iamVjdEdldFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBmaWxlc0FycmF5LCBpLCAw
KSwgMCk7CiAgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKGZpbGVuYW1lU3RyaW5nKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gZmls
ZW5hbWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwor
ICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZUJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hh
cio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJp
bmcoZmlsZW5hbWVTdHJpbmcsIGZpbGVuYW1lQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAg
ICAgICAgSlNTdHJpbmdSZWxlYXNlKGZpbGVuYW1lU3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IGVhNTdkMjMuLmE3YzM5N2UgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIGV4dGVybiAiQyIgewpAQCAtMTMyLDE5ICsxMzIsMTkgQEAgdm9pZCBUZXN0
UnVubmVyOjpub3RpZnlEb25lKCkKIAogSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6cGF0aFRvTG9j
YWxSZXNvdXJjZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdXJsKQogewotICAg
IEdPd25QdHI8Y2hhcj4gdXJsQ1N0cmluZyhKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyh1cmwpKTsK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IHVybENTdHJpbmcoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
dXJsKSk7CiAgICAgaWYgKCFnX3N0cl9oYXNfcHJlZml4KHVybENTdHJpbmcuZ2V0KCksICJmaWxl
Oi8vL3RtcC9MYXlvdXRUZXN0cy8iKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVy
bCk7CiAKICAgICBjb25zdCBjaGFyKiBsYXlvdXRUZXN0c1N1ZmZpeCA9IHVybENTdHJpbmcuZ2V0
KCkgKyBzdHJsZW4oImZpbGU6Ly8vdG1wLyIpOwotICAgIEdPd25QdHI8Y2hhcj4gdGVzdFBhdGgo
Z19idWlsZF9maWxlbmFtZShnZXRUb3BMZXZlbFBhdGgoKS5kYXRhKCksIGxheW91dFRlc3RzU3Vm
Zml4LCBOVUxMKSk7Ci0gICAgR093blB0cjxjaGFyPiB0ZXN0VVJJKGdfZmlsZW5hbWVfdG9fdXJp
KHRlc3RQYXRoLmdldCgpLCAwLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXN0UGF0aChn
X2J1aWxkX2ZpbGVuYW1lKGdldFRvcExldmVsUGF0aCgpLmRhdGEoKSwgbGF5b3V0VGVzdHNTdWZm
aXgsIG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RVUkkoZ19maWxlbmFtZV90
b191cmkodGVzdFBhdGguZ2V0KCksIDAsIDApKTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcodGVzdFVSSS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cXVl
dWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogewotICAgIEdPd25Q
dHI8Z2NoYXI+IHJlbGF0aXZlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHVybCkpOworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHJlbGF0aXZlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHVy
bCkpOwogICAgIFNvdXBVUkkqIGJhc2VVUkkgPSBzb3VwX3VyaV9uZXcod2Via2l0X3dlYl9mcmFt
ZV9nZXRfdXJpKG1haW5GcmFtZSkpOwogICAgIFNvdXBVUkkqIGFic29sdXRlVVJJID0gc291cF91
cmlfbmV3X3dpdGhfYmFzZShiYXNlVVJJLCByZWxhdGl2ZVVSTC5nZXQoKSk7CiAgICAgc291cF91
cmlfZnJlZShiYXNlVVJJKTsKQEAgLTIxOSw5ICsyMTksOSBAQCB2b2lkIFRlc3RSdW5uZXI6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNT
dHJpbgogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgcHJvdG9jb2wsIEpTU3RyaW5n
UmVmIGhvc3QsIGJvb2wgaW5jbHVkZVN1YmRvbWFpbnMpCiB7Ci0gICAgR093blB0cjxnY2hhcj4g
c291cmNlT3JpZ2luR0NoYXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc291cmNlT3JpZ2luKSk7
Ci0gICAgR093blB0cjxnY2hhcj4gcHJvdG9jb2xHQ2hhcihKU1N0cmluZ0NvcHlVVEY4Q1N0cmlu
Zyhwcm90b2NvbCkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGhvc3RHQ2hhcihKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhob3N0KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc291cmNlT3JpZ2luR0No
YXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc291cmNlT3JpZ2luKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gcHJvdG9jb2xHQ2hhcihKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhwcm90b2NvbCkp
OworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGhvc3RHQ2hhcihKU1N0cmluZ0NvcHlVVEY4Q1N0cmlu
Zyhob3N0KSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZW1vdmVXaGl0ZUxpc3RB
Y2Nlc3NGcm9tT3JpZ2luKHNvdXJjZU9yaWdpbkdDaGFyLmdldCgpLCBwcm90b2NvbEdDaGFyLmdl
dCgpLCBob3N0R0NoYXIuZ2V0KCksIGluY2x1ZGVTdWJkb21haW5zKTsKIH0KIApAQCAtNDAzLDcg
KzQwMyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiAgICAgICAgIHZpZXcgPSB3ZWJraXRf
d2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIEFTU0VSVCh2aWV3KTsKIAot
ICAgIEdPd25QdHI8Z2NoYXI+IGNNZXNzYWdlKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1lc3Nh
Z2UpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBjTWVzc2FnZShKU1N0cmluZ0NvcHlVVEY4Q1N0
cmluZyhtZXNzYWdlKSk7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IodmlldywgY01lc3NhZ2UuZ2V0KCkpOwog
fQogCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRJY29uRGF0YWJhc2VF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBXZWJLaXRJY29uRGF0YWJhc2UqIGRhdGFiYXNl
ID0gd2Via2l0X2dldF9pY29uX2RhdGFiYXNlKCk7CiAgICAgaWYgKGVuYWJsZWQpIHsKLSAgICAg
ICAgR093blB0cjxnY2hhcj4gaWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0
X3RtcF9kaXIoKSwgIkR1bXBSZW5kZXJUcmVlIiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3RtcF9kaXIoKSwgIkR1bXBSZW5kZXJUcmVlIiwgImljb25kYXRhYmFzZSIsIG51bGxw
dHIpKTsKICAgICAgICAgd2Via2l0X2ljb25fZGF0YWJhc2Vfc2V0X3BhdGgoZGF0YWJhc2UsIGlj
b25EYXRhYmFzZVBhdGguZ2V0KCkpOwogICAgIH0gZWxzZQogICAgICAgICB3ZWJraXRfaWNvbl9k
YXRhYmFzZV9zZXRfcGF0aChkYXRhYmFzZSwgMCk7CkBAIC00OTgsNyArNDk4LDcgQEAgYm9vbCBU
ZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB0
YXJnZXQsIEpTT2JqZWN0UmUKICAgICBpZiAoIUpTVmFsdWVJc051bWJlcihjb250ZXh0LCBsZW5n
dGhWYWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IHRh
cmdldFN0cmluZyhKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyh0YXJnZXQpKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiB0YXJnZXRTdHJpbmcoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcodGFyZ2V0KSk7
CiAKICAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZhbHVlVG9OdW1i
ZXIoY29udGV4dCwgbGVuZ3RoVmFsdWUsIDApKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzeW5j
TG9jYWxTdG9yYWdlKCkKIAogdm9pZCBUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBKU1N0cmluZ1JlZiBzY2hlbWUpCiB7
Ci0gICAgR093blB0cjxnY2hhcj4gdXJsU2NoZW1lKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHNj
aGVtZSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVybFNjaGVtZShKU1N0cmluZ0NvcHlVVEY4
Q1N0cmluZyhzY2hlbWUpKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldERvbWFp
blJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCB1cmxTY2hlbWUuZ2V0
KCkpOwogfQogCkBAIC02NTksOCArNjU5LDggQEAgc3RhdGljIGdib29sZWFuIGJvb2xlYW5Gcm9t
VmFsdWUoZ2NoYXIqIHZhbHVlKQogCiB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5j
ZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKQogewotICAgIEdPd25QdHI8Z2No
YXI+IG9yaWdpbmFsTmFtZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhrZXkpKTsKLSAgICBHT3du
UHRyPGdjaGFyPiB2YWx1ZUFzU3RyaW5nKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHZhbHVlKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gb3JpZ2luYWxOYW1lKEpTU3RyaW5nQ29weVVURjhDU3Ry
aW5nKGtleSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHZhbHVlQXNTdHJpbmcoSlNTdHJpbmdD
b3B5VVRGOENTdHJpbmcodmFsdWUpKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIEFTU0VSVCh2aWV3KTsK
QEAgLTczNCwxMyArNzM0LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNl
KEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6
YWRkVXNlclNjcmlwdChKU1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgcnVuQXRTdGFydCwgYm9vbCBh
bGxGcmFtZXMpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gc291cmNlQ29kZShKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhzb3VyY2UpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VDb2RlKEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKHNvdXJjZSkpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6YWRkVXNlclNjcmlwdChtYWluRnJhbWUsIHNvdXJjZUNvZGUuZ2V0KCksIHJ1bkF0U3Rh
cnQsIGFsbEZyYW1lcyk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVXNlclN0eWxlU2hlZXQo
SlNTdHJpbmdSZWYgc291cmNlLCBib29sIGFsbEZyYW1lcykKIHsKLSAgICBHT3duUHRyPGdjaGFy
PiBzb3VyY2VDb2RlKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHNvdXJjZSkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHNvdXJjZUNvZGUoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc291cmNlKSk7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjphZGRVc2VyU3R5bGVTaGVldChtYWluRnJh
bWUsIHNvdXJjZUNvZGUuZ2V0KCksIGFsbEZyYW1lcyk7CiAgICAgLy8gRklYTUU6IG5lZWRzIG1v
cmUgaW52ZXN0aWdhdGlvbiB3aHkgdXNlcnNjcmlwdHMvdXNlci1zdHlsZS10b3AtZnJhbWUtb25s
eS5odG1sIGZhaWxzIHdoZW4gYWxsRnJhbWVzIGlzIGZhbHNlLgogCkBAIC04MjksNyArODI5LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoYm9vbCBzZXJpYWxpemUp
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlvbihKU1N0cmluZ1JlZiBkaXJlY3Rp
b24pCiB7Ci0gICAgR093blB0cjxnY2hhcj4gd3JpdGluZ0RpcmVjdGlvbihKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhkaXJlY3Rpb24pKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB3cml0aW5nRGly
ZWN0aW9uKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKGRpcmVjdGlvbikpOwogCiAgICAgV2ViS2l0
V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7
CiAgICAgQVNTRVJUKHZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L1RleHRJbnB1dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1RleHRJ
bnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IGVlZDNiYmUuLmFlZTU1OTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvVGV4dElucHV0Q29udHJvbGxlci5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgiCi0jaW5jbHVkZSA8R093blB0ckd0ay5o
PgorI2luY2x1ZGUgPEdVbmlxdWVQdHJHdGsuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U09iamVjdFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgc2V0TWFya2VkVGV4dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGkKICAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2Vw
dGlvbik7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIEdPd25QdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0
aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gc3RyaW5nQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6
ZSkpKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyaW5nQnVmZmVyLmdl
dCgpLCBidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKIApAQCAtOTks
NyArOTksNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBpbnNlcnRUZXh0Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogICAgIEFTU0VSVCghZXhjZXB0aW9u
IHx8ICEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgR093blB0cjxnY2hhcj4gc3RyaW5n
QnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKKyAgICBH
VW5pcXVlUHRyPGdjaGFyPiBzdHJpbmdCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxv
YyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBzdHJp
bmdCdWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcp
OwogCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgZG9Db21tYW5kQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLAogICAgIEFTU0VS
VCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgR093blB0cjxn
Y2hhcj4gc3RyaW5nQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6
ZSkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHJpbmdCdWZmZXIoc3RhdGljX2Nhc3Q8Z2No
YXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmco
c3RyaW5nLCBzdHJpbmdCdWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5nUmVs
ZWFzZShzdHJpbmcpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29y
a1F1ZXVlSXRlbUd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRl
bUd0ay5jcHAKaW5kZXggMjNlY2E3Yi4uOTU0NjEyNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIC8vIFJldHVybnMgYSBuZXds
eSBhbGxvY2F0ZWQgVVRGLTggY2hhcmFjdGVyIGJ1ZmZlciB3aGljaCBtdXN0IGJlIGZyZWVkIHdp
dGggZ19mcmVlKCkKIGdjaGFyKiBKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhKU1N0cmluZ1JlZiBq
c1N0cmluZykKQEAgLTU5LDExICs1OSwxMSBAQCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25z
dAogCiBib29sIExvYWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKCkgY29uc3QKIHsKLSAgICBHT3du
UHRyPGdjaGFyPiBjb250ZW50KEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1fY29udGVudC5nZXQo
KSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGJhc2VVUkwoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmco
bV9iYXNlVVJMLmdldCgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY29udGVudChKU1N0cmlu
Z0NvcHlVVEY4Q1N0cmluZyhtX2NvbnRlbnQuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBiYXNlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1fYmFzZVVSTC5nZXQoKSkpOwogCiAg
ICAgaWYgKG1fdW5yZWFjaGFibGVVUkwpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdW5yZWFj
aGFibGVVUkwoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV91bnJlYWNoYWJsZVVSTC5nZXQoKSkp
OworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB1bnJlYWNoYWJsZVVSTChKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhtX3VucmVhY2hhYmxlVVJMLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF93ZWJf
ZnJhbWVfbG9hZF9hbHRlcm5hdGVfc3RyaW5nKG1haW5GcmFtZSwgY29udGVudC5nZXQoKSwgYmFz
ZVVSTC5nZXQoKSwgdW5yZWFjaGFibGVVUkwuZ2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtl
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5MTZhOTM5Li4x
OTBiMWZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTMzLDcgKzMz
LDYgQEAgc2V0KHdlYmtpdDJfYXBpX2hhcm5lc3NfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCi0gICAgLi4vLi4vU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwCiApCiAKIGxpc3QoQVBQRU5EIHRlc3Rfd3RmX0xJQlJB
UklFUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RP
TU5vZGVUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01O
b2RlVGVzdC5jcHAKaW5kZXggZTE3NTRjZi4uZDE4N2M1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL0RPTU5vZGVUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NTm9kZVRlc3QuY3BwCkBAIC0yMiw3ICsy
Miw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3QuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAKIGNsYXNzIFdlYktpdERPTU5vZGVUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0IHsKIHB1
YmxpYzoKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgIFdlYktpdERPTU5vZGUq
IG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QsIGkpOwogICAgICAgICAgICAg
Z19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKLSAgICAgICAgICAgIEdPd25QdHI8
Y2hhcj4gdGFnTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShub2RlKSk7CisgICAg
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRhZ05hbWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2Rl
X25hbWUobm9kZSkpOwogICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRhZ05hbWUuZ2V0KCks
ID09LCBleHBlY3RlZFRhZ05hbWVzW2ldKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEJhY2tGb3J3YXJkTGlz
dC5jcHAKaW5kZXggYjQ3OTM2Ni4uNjVjM2QyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNrRm9yd2FyZExpc3ROYXZpZ2F0
aW9uKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiBzdGF0aWMgdm9pZCB0
ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZShCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwga0JhY2tGb3J3YXJk
TGlzdExpbWl0OyBpKyspIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBwYXRoKGdfc3RyZHVwX3By
aW50ZigiL1BhZ2UlZCIsIGkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfc3Ry
ZHVwX3ByaW50ZigiL1BhZ2UlZCIsIGkpKTsKICAgICAgICAgdGVzdC0+bV9jaGFuZ2VkRmxhZ3Mg
PSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6
OkFkZGVkSXRlbTsKICAgICAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRo
KHBhdGguZ2V0KCkpLmRhdGEoKSk7CiAgICAgICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwpAQCAtMjU0LDkgKzI1NCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNrRm9yd2FyZExpc3RM
aW1pdEFuZENhY2hlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvCiAKICAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKHRlc3Qt
Pm1fbGlzdCksID09LCBrQmFja0ZvcndhcmRMaXN0TGltaXQpOwogICAgIFdlYktpdEJhY2tGb3J3
YXJkTGlzdEl0ZW0qIGl0ZW1QYWdlRmlyc3QgPSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X250aF9pdGVtKHRlc3QtPm1fbGlzdCwgLShrQmFja0ZvcndhcmRMaXN0TGltaXQgLSAxKSk7Ci0g
ICAgR093blB0cjxHTGlzdD4gcmVtb3ZlZEl0ZW1zKGdfbGlzdF9wcmVwZW5kKDAsIGl0ZW1QYWdl
Rmlyc3QpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiByZW1vdmVkSXRlbXMoZ19saXN0X3ByZXBl
bmQoMCwgaXRlbVBhZ2VGaXJzdCkpOwogCi0gICAgR093blB0cjxjaGFyPiBwYXRoKGdfc3RyZHVw
X3ByaW50ZigiL1BhZ2UlZCIsIGtCYWNrRm9yd2FyZExpc3RMaW1pdCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBrQmFja0ZvcndhcmRMaXN0
TGltaXQpKTsKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJhY2tGb3J3YXJkTGlzdFRlc3Q6
OkN1cnJlbnRJdGVtIHwgQmFja0ZvcndhcmRMaXN0VGVzdDo6QWRkZWRJdGVtIHwgQmFja0Zvcndh
cmRMaXN0VGVzdDo6UmVtb3ZlZEl0ZW1zOwogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aChwYXRoLmdldCgpKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZEFuZENoZWNrUmVtb3ZlZEl0ZW1zKHJlbW92ZWRJdGVtcy5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1l
bnUuY3BwCmluZGV4IGEyMzI5YjkuLmE5MWU3ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIEd0a01lbnUqIGdldFBvcHVwTWVudSgpCiAgICAgewot
ICAgICAgICBHT3duUHRyPEdMaXN0PiB0b3BsZXZlbHMoZ3RrX3dpbmRvd19saXN0X3RvcGxldmVs
cygpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gdG9wbGV2ZWxzKGd0a193aW5kb3dfbGlz
dF90b3BsZXZlbHMoKSk7CiAgICAgICAgIGZvciAoR0xpc3QqIGl0ZXIgPSB0b3BsZXZlbHMuZ2V0
KCk7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dChpdGVyKSkgewogICAgICAgICAgICAgaWYgKCFH
VEtfSVNfV0lORE9XKGl0ZXItPmRhdGEpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NDMyLDcgKzQzMiw3IEBAIHB1YmxpYzoKIAogICAgIEd0a01lbnVJdGVtKiBnZXRNZW51SXRlbShH
dGtNZW51KiBtZW51LCBjb25zdCBnY2hhciogaXRlbUxhYmVsKQogICAgIHsKLSAgICAgICAgR093
blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5F
UihtZW51KSkpOworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAgICAgICAgIGZvciAoR0xpc3Qq
IGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0KGl0ZXIpKSB7CiAg
ICAgICAgICAgICBHdGtNZW51SXRlbSogY2hpbGQgPSBHVEtfTUVOVV9JVEVNKGl0ZXItPmRhdGEp
OwogICAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsKGl0ZW1MYWJlbCwgZ3RrX21lbnVfaXRlbV9n
ZXRfbGFiZWwoY2hpbGQpKSkKQEAgLTc4NSw3ICs3ODUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29u
dGV4dE1lbnVTbWFydFNlcGFyYXRvcnMoQ29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnNUZXN0KiB0
ZXN0LAogICAgIGdfYXNzZXJ0KG1lbnUpOwogCiAgICAgLy8gTGVhZGluZyBhbmQgdHJhaWxpbmcg
c2VwYXJhdG9ycyBhcmUgbm90IGFkZGVkIHRvIHRoZSBjb250ZXh0IG1lbnUuCi0gICAgR093blB0
cjxHTGlzdD4gbWVudUl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlO
RVIobWVudSkpKTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBtZW51SXRlbXMoZ3RrX2NvbnRhaW5l
cl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQoZ19saXN0X2xlbmd0aChtZW51SXRlbXMuZ2V0KCkpLCA9PSwgNik7CiAgICAgR3RrV2lkZ2V0
KiBpdGVtID0gR1RLX1dJREdFVChnX2xpc3RfbnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAwKSk7
CiAgICAgZ19hc3NlcnQoIUdUS19JU19TRVBBUkFUT1JfTUVOVV9JVEVNKGl0ZW0pICYmIGd0a193
aWRnZXRfZ2V0X3Zpc2libGUoaXRlbSkpOwpAQCAtODAzLDcgKzgwMyw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9ycyhDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9y
c1Rlc3QqIHRlc3QsCiAgICAgLy8gSGlkaW5nIGEgbWVudSBpdGVtIGJldHdlZW4gdHdvIHNlcGFy
YXRvcnMgaGlkZXMgdGhlIGZvbGxvd2luZyBzZXBhcmF0b3IuCiAgICAgR3RrQWN0aW9uKiBhY3Rp
b24gPSBndGtfYWN0aXZhdGFibGVfZ2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShn
X2xpc3RfbnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAzKSkpOwogICAgIGd0a19hY3Rpb25fc2V0
X3Zpc2libGUoYWN0aW9uLCBGQUxTRSk7Ci0gICAgbWVudUl0ZW1zLnNldChndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgbWVudUl0ZW1zLnJlc2V0
KGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgobWVudUl0ZW1zLmdldCgpKSwgPT0sIDYpOwog
ICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0KCksIDAp
KTsKICAgICBnX2Fzc2VydCghR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0oaXRlbSkgJiYgZ3Rr
X3dpZGdldF9nZXRfdmlzaWJsZShpdGVtKSk7CkBAIC04MzYsNyArODM2LDcgQEAgc3RhdGljIHZv
aWQgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0b3JzKENvbnRleHRNZW51U21hcnRTZXBhcmF0
b3JzVGVzdCogdGVzdCwKICAgICAvLyBUcmFpbGluZyBzZXBhcmF0b3JzIGFyZSBoaWRkZW4gdG9v
LgogICAgIGFjdGlvbiA9IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FD
VElWQVRBQkxFKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0KCksIDUpKSk7CiAgICAgZ3Rr
X2FjdGlvbl9zZXRfdmlzaWJsZShhY3Rpb24sIEZBTFNFKTsKLSAgICBtZW51SXRlbXMuc2V0KGd0
a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICBtZW51
SXRlbXMucmVzZXQoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51
KSkpOwogICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0
KCksIDApKTsKICAgICBnX2Fzc2VydCghR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0oaXRlbSkg
JiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZShpdGVtKSk7CiAgICAgaXRlbSA9IEdUS19XSURHRVQo
Z19saXN0X250aF9kYXRhKG1lbnVJdGVtcy5nZXQoKSwgMSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAK
aW5kZXggYWRjNmI1Yi4uYmYzNTFlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC03MiwxMiAr
NzIsMTIgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKHN0b3JhZ2UpIHsKICAgICAgICAgY2Fz
ZSBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUOgogICAgICAgICAgICAgaWYg
KCFtX2Nvb2tpZXNUZXh0RmlsZSkKLSAgICAgICAgICAgICAgICBtX2Nvb2tpZXNUZXh0RmlsZS5z
ZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgImNvb2tpZXMudHh0IiwgTlVMTCkp
OworICAgICAgICAgICAgICAgIG1fY29va2llc1RleHRGaWxlLnJlc2V0KGdfYnVpbGRfZmlsZW5h
bWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVzLnR4dCIsIE5VTEwpKTsKICAgICAgICAgICAgIGZp
bGVuYW1lID0gbV9jb29raWVzVGV4dEZpbGUuZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEU6CiAgICAg
ICAgICAgICBpZiAoIW1fY29va2llc1NRTGl0ZUZpbGUpCi0gICAgICAgICAgICAgICAgbV9jb29r
aWVzU1FMaXRlRmlsZS5zZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgImNvb2tp
ZXMuZGIiLCBOVUxMKSk7CisgICAgICAgICAgICAgICAgbV9jb29raWVzU1FMaXRlRmlsZS5yZXNl
dChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2llcy5kYiIsIE5VTEwpKTsK
ICAgICAgICAgICAgIGZpbGVuYW1lID0gbV9jb29raWVzU1FMaXRlRmlsZS5nZXQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMTY2LDggKzE2Niw4IEBAIHB1Ymxp
YzoKICAgICBjaGFyKiogbV9kb21haW5zOwogICAgIGJvb2wgbV9jb29raWVzQ2hhbmdlZDsKICAg
ICBib29sIG1fZmluaXNoTG9vcFdoZW5Db29raWVzQ2hhbmdlOwotICAgIEdPd25QdHI8Y2hhcj4g
bV9jb29raWVzVGV4dEZpbGU7Ci0gICAgR093blB0cjxjaGFyPiBtX2Nvb2tpZXNTUUxpdGVGaWxl
OworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9jb29raWVzVGV4dEZpbGU7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBtX2Nvb2tpZXNTUUxpdGVGaWxlOwogfTsKIAogc3RhdGljIHZvaWQgdGVzdENvb2tp
ZU1hbmFnZXJBY2NlcHRQb2xpY3koQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dERvd25sb2Fkcy5jcHAKaW5kZXggYjdjYTczYS4uYTRkMjdhNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0RG93bmxvYWRzLmNwcApAQCAt
MjcsOCArMjcsOCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Vi
a2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHN0YXRpYyBjaGFyKiBrVGVtcERpcmVjdG9yeTsKQEAgLTE0NCw4ICsxNDQsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb24oV2ViS2l0RG93bmxvYWQqIGRv
d25sb2FkLCBjb25zdCBnY2hhciogc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgewotICAgICAgICBH
T3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3Rvcnks
IHN1Z2dlc3RlZEZpbGVuYW1lLCBOVUxMKSk7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gZGVzdGlu
YXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDApKTsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvbihnX2J1aWxkX2ZpbGVuYW1lKGtUZW1w
RGlyZWN0b3J5LCBzdWdnZXN0ZWRGaWxlbmFtZSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRlc3RpbmF0aW9uLmdldCgp
LCAwLCAwKSk7CiAgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRfZGVzdGluYXRpb24oZG93bmxv
YWQsIGRlc3RpbmF0aW9uVVJJLmdldCgpKTsKICAgICB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghd2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3du
bG9hZCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGRlc3RG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh3ZWJraXRfZG93bmxvYWRfZ2V0X2Rl
c3RpbmF0aW9uKGRvd25sb2FkKSkpOwotICAgICAgICBHT3duUHRyPGNoYXI+IGRlc3RCYXNlbmFt
ZShnX2ZpbGVfZ2V0X2Jhc2VuYW1lKGRlc3RGaWxlLmdldCgpKSk7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZGVzdEJhc2VuYW1lKGdfZmlsZV9nZXRfYmFzZW5hbWUoZGVzdEZpbGUuZ2V0KCkp
KTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGRlc3RCYXNlbmFtZS5nZXQoKSwgPT0sIGV4cGVj
dGVkTmFtZSk7CiAKICAgICAgICAgZ19maWxlX2RlbGV0ZShkZXN0RmlsZS5nZXQoKSwgMCwgMCk7
CkBAIC0xODIsMTAgKzE4MiwxMCBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3REb3dubG9h
ZExvY2FsRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgR093
blB0cjxjaGFyPiBzb3VyY2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRl
c3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgInRlc3QucGRmIiwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0
UmVzb3VjZXNEaXIoKS5kYXRhKCksICJ0ZXN0LnBkZiIsIE5VTEwpKTsKICAgICBHUmVmUHRyPEdG
aWxlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChzb3VyY2VQYXRoLmdl
dCgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IHNvdXJjZUluZm8gPSBhZG9wdEdSZWYoZ19m
aWxlX3F1ZXJ5X2luZm8oc291cmNlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJ
WkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJbmZvRmxhZ3M+KDApLCAwLCAwKSk7Ci0gICAgR093
blB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291cmNlLmdldCgpKSk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291cmNlLmdldCgpKSk7
CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+
ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhzb3VyY2VVUkkuZ2V0KCkpKTsKICAgICBn
X2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwog
CkBAIC0yNjIsOSArMjYyLDkgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJy
b3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRf
Y21wZmxvYXQod2Via2l0X2Rvd25sb2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoZG93bmxvYWQu
Z2V0KCkpLCA8LCAxKTsKIAogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9ET1dO
TE9BRF9FUlJPUl9ERVNUSU5BVElPTjsKLSAgICBHT3duUHRyPGNoYXI+IHBhdGgoZ19idWlsZF9m
aWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCAidGVzdC5w
ZGYiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmlsZW5hbWUo
VGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgInRlc3QucGRmIiwgTlVM
TCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3Jf
cGF0aChwYXRoLmdldCgpKSk7Ci0gICAgR093blB0cjxjaGFyPiB1cmkoZ19maWxlX2dldF91cmko
ZmlsZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpKGdfZmlsZV9nZXRfdXJpKGZp
bGUuZ2V0KCkpKTsKICAgICBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFu
ZFdhaXRVbnRpbEZpbmlzaGVzKHVyaS5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93
bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKQEAgLTI5Niw3ICsyOTYsNyBA
QCBzdGF0aWMgY29uc3QgY2hhcioga1NlcnZlclN1Z2dlc3RlZEZpbGVuYW1lID0gIndlYmtpdC1k
b3dubG9hZGVkLWZpbGUiOwogCiBzdGF0aWMgdm9pZCBhZGRDb250ZW50RGlzcG9zaXRpb25IVFRQ
SGVhZGVyVG9SZXNwb25zZShTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBHT3duUHRyPGNo
YXI+IGNvbnRlbnREaXNwb3NpdGlvbihnX3N0cmR1cF9wcmludGYoImZpbGVuYW1lPSVzIiwga1Nl
cnZlclN1Z2dlc3RlZEZpbGVuYW1lKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50RGlz
cG9zaXRpb24oZ19zdHJkdXBfcHJpbnRmKCJmaWxlbmFtZT0lcyIsIGtTZXJ2ZXJTdWdnZXN0ZWRG
aWxlbmFtZSkpOwogICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9oZWFkZXJzLCAiQ29udGVudC1EaXNwb3NpdGlvbiIsIGNvbnRlbnREaXNwb3NpdGlvbi5n
ZXQoKSk7CiB9CiAKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR093blB0cjxjaGFyPiBmaWxlUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksIHBh
dGgsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5h
bWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgcGF0aCwgTlVMTCkp
OwogICAgIGNoYXIqIGNvbnRlbnRzOwogICAgIGdzaXplIGNvbnRlbnRzTGVuZ3RoOwogICAgIGlm
ICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlUGF0aC5nZXQoKSwgJmNvbnRlbnRzLCAmY29udGVu
dHNMZW5ndGgsIDApKSB7CkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25s
b2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGV2ZW50cy5jbGVhcigpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3du
bG9hZF9nZXRfZXN0aW1hdGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAgICAg
Ly8gQ2hlY2sgdGhlIGludGVybWVkaWF0ZSBmaWxlIGlzIGRlbGV0ZWQgd2hlbiB0aGUgZG93bmxv
YWQgaXMgY2FuY2VsbGVkLgotICAgIEdPd25QdHI8Y2hhcj4gaW50ZXJtZWRpYXRlVVJJKGdfc3Ry
ZHVwX3ByaW50ZigiJXMud2tkb3dubG9hZCIsIHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRp
b24oZG93bmxvYWQuZ2V0KCkpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnRlcm1lZGlhdGVV
UkkoZ19zdHJkdXBfcHJpbnRmKCIlcy53a2Rvd25sb2FkIiwgd2Via2l0X2Rvd25sb2FkX2dldF9k
ZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpKTsKICAgICBHUmVmUHRyPEdGaWxlPiBpbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShpbnRlcm1lZGlhdGVVUkku
Z2V0KCkpKTsKICAgICBnX2Fzc2VydCghZ19maWxlX3F1ZXJ5X2V4aXN0cyhpbnRlcm1lZGlhdGVG
aWxlLmdldCgpLCBudWxscHRyKSk7CiB9CkBAIC00NDQsOCArNDQ0LDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGdib29sZWFuIGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DYWxsYmFjayhXZWJL
aXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBzdWdnZXN0ZWRGaWxlbmFtZSwgV2Vi
Vmlld0Rvd25sb2FkVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gZGVz
dGluYXRpb24oZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgc3VnZ2VzdGVkRmlsZW5h
bWUsIE5VTEwpKTsKLSAgICAgICAgR093blB0cjxjaGFyPiBkZXN0aW5hdGlvblVSSShnX2ZpbGVu
YW1lX3RvX3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOworICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksIHN1Z2dl
c3RlZEZpbGVuYW1lLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVzdGluYXRp
b25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0KCksIDAsIDApKTsKICAgICAg
ICAgd2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb25V
UkkuZ2V0KCkpOwogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEluc3BlY3RvclNlcnZl
ci5jcHAKaW5kZXggZmJiNjJjZS4uYTY4NzgyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcApA
QCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXJNb25pdG9yKCkKIHN0
YXRpYyB2b2lkIHN0YXJ0VGVzdFNlcnZlcigpCiB7CiAgICAgLy8gUHJlcGFyZSBhcmd2W10gZm9y
IHNwYXduaW5nIHRoZSBzZXJ2ZXIgcHJvY2Vzcy4KLSAgICBHT3duUHRyPGNoYXI+IHRlc3RTZXJ2
ZXJQYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRBUEki
LCAiV2ViS2l0Mkd0ayIsIGdUZXN0U2VydmVyQXBwTmFtZSwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gdGVzdFNlcnZlclBhdGgoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfRVhFQ19QQVRI
LCAiVGVzdFdlYktpdEFQSSIsICJXZWJLaXQyR3RrIiwgZ1Rlc3RTZXJ2ZXJBcHBOYW1lLCBOVUxM
KSk7CiAKICAgICAvLyBXZSBpbnN0YWxsIGEgaGFuZGxlciB0byBlbnN1cmUgdGhhdCB3ZSBraWxs
IHRoZSBjaGlsZCBwcm9jZXNzCiAgICAgLy8gaWYgdGhlIHBhcmVudCBkaWVzIGJlY2F1c2Ugb2Yg
d2hhdGV2ZXIgdGhlIHJlYXNvbiBpcy4KQEAgLTE3MywxNyArMTczLDE3IEBAIHN0YXRpYyB2b2lk
IHRlc3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdChJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyCiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBpbnQgcGFnZUlk
ID0gV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0
KTsKIAotICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmc7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiB2YWx1ZVN0cmluZzsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1swXS51cmw7IiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4x
OjI5OTkvIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1swXS5pbnNwZWN0b3JVcmw7IiwgJmVycm9yLm91dFB0
cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJy
b3IuZ2V0KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVzZXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OwogICAgIFN0cmluZyB2YWxpZEluc3BlY3RvclVSTCA9IFN0cmluZygiL01haW4uaHRtbD9wYWdl
PSIpICsgU3RyaW5nOjpudW1iZXIocGFnZUlkKTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcodmFs
dWVTdHJpbmcuZ2V0KCksID09LCB2YWxpZEluc3BlY3RvclVSTC51dGY4KCkpOwogfQpAQCAtMjQx
LDcgKzI0MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKEluc3Bl
Y3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKIAotICAgIEdPd25QdHI8
Y2hhcj4gdGl0bGUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGl0bGUoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih0aXRsZS5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjI5OTkvIik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UHJp
bnRpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmlu
dGluZy5jcHAKaW5kZXggMDUyNDA3Mi4uOTllZmE3YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5jcHAKQEAgLTEzNCw5ICsx
MzQsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25QcmludChQcmludFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHT3duUHRy
PGNoYXI+IG91dHB1dEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJ3
ZWJraXQtcHJpbnQucGRmIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gb3V0cHV0Rmls
ZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgIndlYmtpdC1wcmludC5wZGYi
LCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gb3V0cHV0RmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKG91dHB1dEZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR093blB0cjxjaGFy
PiBvdXRwdXRVUkkoZ19maWxlX2dldF91cmkob3V0cHV0RmlsZS5nZXQoKSkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJpKG91dHB1dEZpbGUuZ2V0KCkpKTsK
IAogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gcHJpbnRTZXR0aW5ncyA9IGFkb3B0R1Jl
ZihndGtfcHJpbnRfc2V0dGluZ3NfbmV3KCkpOwogICAgIGd0a19wcmludF9zZXR0aW5nc19zZXRf
cHJpbnRlcihwcmludFNldHRpbmdzLmdldCgpLCBndGtfcHJpbnRlcl9nZXRfbmFtZShwcmludGVy
LmdldCgpKSk7CkBAIC0yNDcsOSArMjQ3LDkgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgR093blB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1
aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAid2Via2l0LWNsb3NlLWFmdGVyLXByaW50LnBk
ZiIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1
aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAid2Via2l0LWNsb3NlLWFmdGVyLXByaW50LnBk
ZiIsIE5VTEwpKTsKICAgICAgICAgbV9vdXRwdXRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgob3V0cHV0RmlsZW5hbWUuZ2V0KCkpKTsKLSAgICAgICAgR093blB0cjxjaGFyPiBv
dXRwdXRVUkkoZ19maWxlX2dldF91cmkobV9vdXRwdXRGaWxlLmdldCgpKSk7CisgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJpKG1fb3V0cHV0RmlsZS5nZXQo
KSkpOwogCiAgICAgICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gcHJpbnRTZXR0aW5ncyA9
IGFkb3B0R1JlZihndGtfcHJpbnRfc2V0dGluZ3NfbmV3KCkpOwogICAgICAgICBndGtfcHJpbnRf
c2V0dGluZ3Nfc2V0X3ByaW50ZXIocHJpbnRTZXR0aW5ncy5nZXQoKSwgZ3RrX3ByaW50ZXJfZ2V0
X25hbWUocHJpbnRlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCmluZGV4IDBjMjFjNzEuLjNhNDU5YTAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVz
b3VyY2VzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFJlc291cmNlcy5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNz
ZXJ0X2NtcGludChkYXRhU2l6ZSwgPiwgMCk7CiAKICAgICAgICAgUmVzb3VyY2VzVGVzdCogdGVz
dCA9IHN0YXRpY19jYXN0PFJlc291cmNlc1Rlc3QqPih1c2VyRGF0YSk7Ci0gICAgICAgIHRlc3Qt
Pm1fcmVzb3VyY2VEYXRhLnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7CisgICAg
ICAgIHRlc3QtPm1fcmVzb3VyY2VEYXRhLnJlc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRh
dGEpKTsKICAgICAgICAgdGVzdC0+bV9yZXNvdXJjZURhdGFTaXplID0gZGF0YVNpemU7CiAgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiAgICAgfQpAQCAtMTkxLDEy
ICsxOTEsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnQoIXN0cm5jbXAobV9yZXNv
dXJjZURhdGEuZ2V0KCksIGtKYXZhc2NyaXB0LCBtX3Jlc291cmNlRGF0YVNpemUpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwotICAgICAgICBt
X3Jlc291cmNlRGF0YS5jbGVhcigpOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwog
ICAgIH0KIAogICAgIHNpemVfdCBtX3Jlc291cmNlc0xvYWRlZDsKICAgICBzaXplX3QgbV9yZXNv
dXJjZXNUb0xvYWQ7Ci0gICAgR093blB0cjxjaGFyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IG1fcmVzb3VyY2VEYXRhOwogICAgIHNpemVfdCBtX3Jlc291cmNlRGF0YVNp
emU7CiAgICAgR0xpc3QqIG1fc3VicmVzb3VyY2VzOwogfTsKQEAgLTY3MSwxMiArNjcxLDEyIEBA
IHN0YXRpYyB2b2lkIGFkZENhY2hlSFRUUEhlYWRlcnNUb1Jlc3BvbnNlKFNvdXBNZXNzYWdlKiBt
ZXNzYWdlKQogewogICAgIC8vIFRoZSBhY3R1YWwgZGF0ZSBkb2Vzbid0IHJlYWxseSBtYXR0ZXIu
CiAgICAgU291cERhdGUqIHNvdXBEYXRlID0gc291cF9kYXRlX25ld19mcm9tX25vdygwKTsKLSAg
ICBHT3duUHRyPGNoYXI+IGRhdGUoc291cF9kYXRlX3RvX3N0cmluZyhzb3VwRGF0ZSwgU09VUF9E
QVRFX0hUVFApKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRhdGUoc291cF9kYXRlX3RvX3N0cmlu
Zyhzb3VwRGF0ZSwgU09VUF9EQVRFX0hUVFApKTsKICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxhc3QtTW9kaWZpZWQiLCBkYXRlLmdl
dCgpKTsKICAgICBzb3VwX2RhdGVfZnJlZShzb3VwRGF0ZSk7CiAgICAgc291cF9tZXNzYWdlX2hl
YWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJDYWNoZS1jb250cm9sIiwg
InB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCIpOwogICAgIHNvdXBEYXRlID0gc291cF9kYXRlX25l
d19mcm9tX25vdygzNjAwKTsKLSAgICBkYXRlLnNldChzb3VwX2RhdGVfdG9fc3RyaW5nKHNvdXBE
YXRlLCBTT1VQX0RBVEVfSFRUUCkpOworICAgIGRhdGUucmVzZXQoc291cF9kYXRlX3RvX3N0cmlu
Zyhzb3VwRGF0ZSwgU09VUF9EQVRFX0hUVFApKTsKICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkV4cGlyZXMiLCBkYXRlLmdldCgpKTsK
ICAgICBzb3VwX2RhdGVfZnJlZShzb3VwRGF0ZSk7CiB9CkBAIC03MzQsNyArNzM0LDcgQEAgc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGphdmFzY3Jp
cHRSZWxhdGl2ZUhUTUwgPSAiPGh0bWw+PGhlYWQ+PHNjcmlwdCBsYW5ndWFnZT0namF2YXNjcmlw
dCcgc3JjPScvcmVkaXJlY3RlZC10by1jYW5jZWwuanMnPjwvc2NyaXB0PjwvaGVhZD48Ym9keT48
L2JvZHk+PC9odG1sPiI7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdl
LT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGphdmFzY3JpcHRSZWxhdGl2ZUhU
TUwsIHN0cmxlbihqYXZhc2NyaXB0UmVsYXRpdmVIVE1MKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0
cl9lcXVhbChwYXRoLCAiL2JsYW5rLmljbyIpKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gZmls
ZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCku
ZGF0YSgpLCBwYXRoLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZVBhdGgo
Z19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgp
LCBwYXRoLCBOVUxMKSk7CiAgICAgICAgIGNoYXIqIGNvbnRlbnRzOwogICAgICAgICBnc2l6ZSBj
b250ZW50c0xlbmd0aDsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50cyhmaWxlUGF0aC5nZXQo
KSwgJmNvbnRlbnRzLCAmY29udGVudHNMZW5ndGgsIDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCmluZGV4IGUzMTgwYzUuLjVjNjBkYTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NM
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5j
cHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2NlcnRpZmljYXRl
SW5mbykKICAgICAgICAgICAgIHdlYmtpdF9jZXJ0aWZpY2F0ZV9pbmZvX2ZyZWUobV9jZXJ0aWZp
Y2F0ZUluZm8pOwogICAgICAgICBtX2NlcnRpZmljYXRlSW5mbyA9IHdlYmtpdF9jZXJ0aWZpY2F0
ZV9pbmZvX2NvcHkoaW5mbyk7Ci0gICAgICAgIG1faG9zdC5zZXQoZ19zdHJkdXAoaG9zdCkpOwor
ICAgICAgICBtX2hvc3QucmVzZXQoZ19zdHJkdXAoaG9zdCkpOwogICAgICAgICBnX21haW5fbG9v
cF9xdWl0KG1fbWFpbkxvb3ApOwogICAgIH0KIApAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBXZWJLaXRDZXJ0aWZpY2F0ZUluZm8qIG1fY2VydGlmaWNhdGVJbmZv
OwotICAgIEdPd25QdHI8Y2hhcj4gbV9ob3N0OworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9ob3N0
OwogfTsKIAogc3RhdGljIHZvaWQgdGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFRMU0Vycm9y
c1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHZv
aWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+
cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBpbmRleEhUTUwsIHN0cmxlbihpbmRl
eEhUTUwpKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2luc2VjdXJl
LWNvbnRlbnQvIikpIHsKLSAgICAgICAgR093blB0cjxjaGFyPiByZXNwb25zZUhUTUwoZ19zdHJk
dXBfcHJpbnRmKGluc2VjdXJlQ29udGVudEhUTUwsIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvdGVzdC1zY3JpcHQiKS5kYXRhKCksIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVz
dC1pbWFnZSIpLmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3BvbnNlSFRN
TChnX3N0cmR1cF9wcmludGYoaW5zZWN1cmVDb250ZW50SFRNTCwga0h0dHBTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi90ZXN0LXNjcmlwdCIpLmRhdGEoKSwga0h0dHBTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi90ZXN0LWltYWdlIikuZGF0YSgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9DT1BZLCByZXNwb25zZUhU
TUwuZ2V0KCksIHN0cmxlbihyZXNwb25zZUhUTUwuZ2V0KCkpKTsKICAgICAgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKQEAgLTI0NSw3ICsy
NDUsNyBAQCBzdGF0aWMgdm9pZCBodHRwU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVy
LCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgYwogICAgIH0KIAogICAgIGlmIChnX3N0cl9l
cXVhbChwYXRoLCAiL3Rlc3Qtc2NyaXB0IikpIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBwYXRo
VG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAi
bGluay10aXRsZS5qcyIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoVG9G
aWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAibGlu
ay10aXRsZS5qcyIsIE5VTEwpKTsKICAgICAgICAgY2hhciogY29udGVudHM7CiAgICAgICAgIGdz
aXplIGxlbmd0aDsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50cyhwYXRoVG9GaWxlLmdldCgp
LCAmY29udGVudHMsICZsZW5ndGgsIDApOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyB2b2lk
IGh0dHBTZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNz
YWdlLCBjb25zdCBjCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2Fn
ZS0+cmVzcG9uc2VfYm9keSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3Rl
c3QtaW1hZ2UiKSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHBhdGhUb0ZpbGUoZ19idWlsZF9m
aWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCAiYmxhbmsu
aWNvIiwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGhUb0ZpbGUoZ19idWls
ZF9maWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCAiYmxh
bmsuaWNvIiwgTlVMTCkpOwogICAgICAgICBjaGFyKiBjb250ZW50czsKICAgICAgICAgZ3NpemUg
bGVuZ3RoOwogICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKHBhdGhUb0ZpbGUuZ2V0KCksICZj
b250ZW50cywgJmxlbmd0aCwgMCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGJjMzBkNmQuLmQyNGVkYzYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlDbGll
bnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0VUlD
bGllbnQuY3BwCkBAIC0zNzcsMjAgKzM3NywyMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ph
dmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBz
dGF0aWMgY29uc3QgY2hhcioganNQcm9tcHRGb3JtYXQgPSAiYWxlcnQocHJvbXB0KCclcycsICdk
ZWZhdWx0JykpOyI7CiAKICAgICB0ZXN0LT5tX3NjcmlwdERpYWxvZ1R5cGUgPSBXRUJLSVRfU0NS
SVBUX0RJQUxPR19BTEVSVDsKLSAgICBHT3duUHRyPGNoYXI+IGFsZXJ0RGlhbG9nTWVzc2FnZShn
X3N0cmR1cF9wcmludGYoanNBbGVydEZvcm1hdCwga0FsZXJ0RGlhbG9nTWVzc2FnZSkpOwotICAg
IEdPd25QdHI8Y2hhcj4gYWxlcnRIVE1MKGdfc3RyZHVwX3ByaW50ZihodG1sT25Mb2FkRm9ybWF0
LCBhbGVydERpYWxvZ01lc3NhZ2UuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFsZXJ0
RGlhbG9nTWVzc2FnZShnX3N0cmR1cF9wcmludGYoanNBbGVydEZvcm1hdCwga0FsZXJ0RGlhbG9n
TWVzc2FnZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYWxlcnRIVE1MKGdfc3RyZHVwX3ByaW50
ZihodG1sT25Mb2FkRm9ybWF0LCBhbGVydERpYWxvZ01lc3NhZ2UuZ2V0KCkpKTsKICAgICB0ZXN0
LT5sb2FkSHRtbChhbGVydEhUTUwuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5M
b29wRmluaXNoZXMoKTsKIAogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nVHlwZSA9IFdFQktJVF9T
Q1JJUFRfRElBTE9HX0NPTkZJUk07Ci0gICAgR093blB0cjxjaGFyPiBjb25maXJtRGlhbG9nTWVz
c2FnZShnX3N0cmR1cF9wcmludGYoanNDb25maXJtRm9ybWF0LCBrQ29uZmlybURpYWxvZ01lc3Nh
Z2UpKTsKLSAgICBHT3duUHRyPGNoYXI+IGNvbmZpcm1IVE1MKGdfc3RyZHVwX3ByaW50ZihodG1s
T25Mb2FkRm9ybWF0LCBjb25maXJtRGlhbG9nTWVzc2FnZS5nZXQoKSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gY29uZmlybURpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQ29uZmlybUZv
cm1hdCwga0NvbmZpcm1EaWFsb2dNZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb25m
aXJtSFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgY29uZmlybURpYWxvZ01l
c3NhZ2UuZ2V0KCkpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChjb25maXJtSFRNTC5nZXQoKSwgMCk7
CiAgICAgdGVzdC0+d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOwogCiAgICAgdGVzdC0+bV9z
Y3JpcHREaWFsb2dUeXBlID0gV0VCS0lUX1NDUklQVF9ESUFMT0dfUFJPTVBUOwotICAgIEdPd25Q
dHI8Y2hhcj4gcHJvbXB0RGlhbG9nTWVzc2FnZShnX3N0cmR1cF9wcmludGYoanNQcm9tcHRGb3Jt
YXQsIGtQcm9tcHREaWFsb2dNZXNzYWdlKSk7Ci0gICAgR093blB0cjxjaGFyPiBwcm9tcHRIVE1M
KGdfc3RyZHVwX3ByaW50ZihodG1sT25Mb2FkRm9ybWF0LCBwcm9tcHREaWFsb2dNZXNzYWdlLmdl
dCgpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm9tcHREaWFsb2dNZXNzYWdlKGdfc3RyZHVw
X3ByaW50Zihqc1Byb21wdEZvcm1hdCwga1Byb21wdERpYWxvZ01lc3NhZ2UpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IHByb21wdEhUTUwoZ19zdHJkdXBfcHJpbnRmKGh0bWxPbkxvYWRGb3JtYXQs
IHByb21wdERpYWxvZ01lc3NhZ2UuZ2V0KCkpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChwcm9tcHRI
VE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiB9
CkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0
aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHZGtSZWN0YW5nbGUg
Z2VvbWV0cnkgPSB7IDEwMCwgMTUwLCA0MDAsIDQwMCB9OwogICAgIHRlc3QtPnNldEV4cGVjdGVk
V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3Q6OldpbmRvd1Byb3BlcnRpZXMoJmdlb21ldHJ5
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKSk7CiAKLSAg
ICBHT3duUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48Ym9keSBv
bkxvYWQ9XCJ3aW5kb3cub3BlbignJywgJycsICclcycpLmNsb3NlKCk7XCI+PC9ib2R5PjwvaHRt
bD4iLCB3aW5kb3dQcm9ycGVydGllc1N0cmluZykpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHRt
bFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVu
KCcnLCAnJywgJyVzJykuY2xvc2UoKTtcIj48L2JvZHk+PC9odG1sPiIsIHdpbmRvd1Byb3JwZXJ0
aWVzU3RyaW5nKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoaHRtbFN0cmluZy5nZXQoKSwgMCk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOwogCkBAIC01ODYsNyArNTg2LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmaWxlQ2hv
b3NlckhUTUxGb3JtYXQgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNv
bHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2luOjA7cGFkZGluZzowJyB0eXBlPSdmaWxlJyAlcy8+PC9i
b2R5PjwvaHRtbD4iOwogCiAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9ucyBub3QgYWxsb3dlZCwg
bm8gTUlNRSBmaWx0ZXJpbmcuCi0gICAgR093blB0cjxjaGFyPiBzaW1wbGVGaWxlVXBsb2FkSFRN
TChnX3N0cmR1cF9wcmludGYoZmlsZUNob29zZXJIVE1MRm9ybWF0LCAiIikpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gc2ltcGxlRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJpbnRmKGZpbGVDaG9v
c2VySFRNTEZvcm1hdCwgIiIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzaW1wbGVGaWxlVXBsb2Fk
SFRNTC5nZXQoKSwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAg
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlj
a01vdXNlQnV0dG9uQW5kV2FpdEZvckZpbGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKQEAgLTYwMSw3
ICs2MDEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxl
Q2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nl
cl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogCiAgICAgLy8gTXVsdGlwbGUg
c2VsZWN0aW9ucyBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZywgc29tZSBwcmUtc2VsZWN0ZWQg
ZmlsZXMuCi0gICAgR093blB0cjxjaGFyPiBtdWx0aXBsZVNlbGVjdGlvbkZpbGVVcGxvYWRIVE1M
KGdfc3RyZHVwX3ByaW50ZihmaWxlQ2hvb3NlckhUTUxGb3JtYXQsICJtdWx0aXBsZSIpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IG11bHRpcGxlU2VsZWN0aW9uRmlsZVVwbG9hZEhUTUwoZ19zdHJk
dXBfcHJpbnRmKGZpbGVDaG9vc2VySFRNTEZvcm1hdCwgIm11bHRpcGxlIikpOwogICAgIHRlc3Qt
PmxvYWRIdG1sKG11bHRpcGxlU2VsZWN0aW9uRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDApOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGZpbGVDaG9vc2VyUmVxdWVzdCA9
IHRlc3QtPmNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yRmlsZUNob29zZXJSZXF1ZXN0KDUsIDUp
OwpAQCAtNjM4LDcgKzYzOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJS
ZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRf
ZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAKICAgICAv
LyBNdWx0aXBsZSBzZWxlY3Rpb25zIG5vdCBhbGxvd2VkLCBvbmx5IGFjY2VwdCBpbWFnZXMsIGF1
ZGlvIGFuZCB2aWRlbyBmaWxlcy4uCi0gICAgR093blB0cjxjaGFyPiBtaW1lRmlsdGVyZWRGaWxl
VXBsb2FkSFRNTChnX3N0cmR1cF9wcmludGYoZmlsZUNob29zZXJIVE1MRm9ybWF0LCAiYWNjZXB0
PSdhdWRpby8qLHZpZGVvLyosaW1hZ2UvKiciKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtaW1l
RmlsdGVyZWRGaWxlVXBsb2FkSFRNTChnX3N0cmR1cF9wcmludGYoZmlsZUNob29zZXJIVE1MRm9y
bWF0LCAiYWNjZXB0PSdhdWRpby8qLHZpZGVvLyosaW1hZ2UvKiciKSk7CiAgICAgdGVzdC0+bG9h
ZEh0bWwobWltZUZpbHRlcmVkRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDApOwogICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGZpbGVDaG9vc2VyUmVxdWVzdCA9IHRlc3QtPmNs
aWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yRmlsZUNob29zZXJSZXF1ZXN0KDUsIDUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNp
b25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0
ZW5zaW9ucy5jcHAKaW5kZXggZTllZjE5Mi4uOWExMGUzNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09i
amVjdENsZWFyZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZWNobygnRm9vJyk7IiwgJmVycm9yLm91dFB0cigp
KTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3Iu
Z2V0KCkpOwotICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmco
amF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQo
KSwgPT0sICJGb28iKTsKIH0KIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwiLCAwKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKLSAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBHVW5pcXVlUHRyPGNo
YXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ID09LCAiRm9vIik7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogaXNvbGF0ZWRXb3JsZFNjcmlw
dCA9CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xh
dGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gQ2hlY2sg
dGhhdCAndG9wLmZvbycgZGVmaW5lZCBpbiBtYWluIHdvcmxkIGlzIG5vdCB2aXNpYmxlIGluIGlz
b2xhdGVkIHdvcmxkLgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyku
aW5uZXJIVE1MIiwgMCk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgdmFs
dWVTdHJpbmcuc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpKTsKKyAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInVuZGVmaW5lZCIpOwogCiAgICAgZ19zaWduYWxf
aGFuZGxlcl9kaXNjb25uZWN0KHRlc3QtPm1fd2ViVmlldywgc2NyaXB0RGlhbG9nSUQpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRB
Y2Nlc3NpYmlsaXR5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggMDQ3Y2MzMS4uYTVkOGRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRBY2Nl
c3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCkBAIC0zMyw4ICszMyw4IEBAIGV4dGVybiAiQyIg
ewogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVl
UHRyLmg+CiAKIC8vIE5hbWUgb2YgdGhlIHRlc3Qgc2VydmVyIGFwcGxpY2F0aW9uIGNyZWF0aW5n
IHRoZSB3ZWJWaWV3IG9iamVjdC4KIHN0YXRpYyBjb25zdCBjaGFyKiBrVGVzdFNlcnZlckFwcE5h
bWUgPSAiQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIiOwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMg
dm9pZCBzdGFydFRlc3RTZXJ2ZXJNb25pdG9yKCkKIHN0YXRpYyB2b2lkIHN0YXJ0VGVzdFNlcnZl
cigpCiB7CiAgICAgLy8gUHJlcGFyZSBhcmd2W10gZm9yIHNwYXduaW5nIHRoZSBzZXJ2ZXIgcHJv
Y2Vzcy4KLSAgICBHT3duUHRyPGNoYXI+IHRlc3RTZXJ2ZXJQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
V0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRBUEkiLCAiV2ViS2l0Mkd0ayIsIGtUZXN0U2Vy
dmVyQXBwTmFtZSwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFNlcnZlclBhdGgo
Z19idWlsZF9maWxlbmFtZShXRUJLSVRfRVhFQ19QQVRILCAiVGVzdFdlYktpdEFQSSIsICJXZWJL
aXQyR3RrIiwga1Rlc3RTZXJ2ZXJBcHBOYW1lLCBudWxscHRyKSk7CiAKICAgICBjaGFyKiB0ZXN0
U2VydmVyQXJndlsyXTsKICAgICB0ZXN0U2VydmVyQXJndlswXSA9IHRlc3RTZXJ2ZXJQYXRoLmdl
dCgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQXRzcGlBY2Nlc3NpYmxl
KEF0c3BpQWNjZXNzaWJsZSogYWNjZXNzaWJsZSwgY29uc3QgY2hhciogdGFyZ2V0CiB7CiAgICAg
Z19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CiAKLSAgICBHT3duUHRy
PGNoYXI+IG5hbWUoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShhY2Nlc3NpYmxlLCAwKSk7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBuYW1lKGF0c3BpX2FjY2Vzc2libGVfZ2V0X25hbWUoYWNjZXNz
aWJsZSwgMCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0YXJnZXROYW1lLCA9PSwgbmFtZS5nZXQo
KSk7CiAgICAgZ19hc3NlcnRfY21waW50KHRhcmdldFJvbGUsID09LCBhdHNwaV9hY2Nlc3NpYmxl
X2dldF9yb2xlKGFjY2Vzc2libGUsIDApKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcAppbmRleCAxYTA2Zjc0Li45NWI1YzAxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4K
ICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBzdGF0aWMgV2ViS2l0
VGVzdFNlcnZlcioga1NlcnZlcjsKIHN0YXRpYyBjaGFyKiBrVGVtcERpcmVjdG9yeTsKQEAgLTEx
OCw3ICsxMTksNyBAQCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaAogICAgIGNoYXIqIGNvbnRlbnRz
OwogICAgIGdzaXplIGxlbmd0aDsKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pY29uL2Zh
dmljb24uaWNvIikpIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBwYXRoVG9GYXZpY29uKGdfYnVp
bGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgImJs
YW5rLmljbyIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoVG9GYXZpY29u
KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEo
KSwgImJsYW5rLmljbyIsIE5VTEwpKTsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50cyhwYXRo
VG9GYXZpY29uLmdldCgpLCAmY29udGVudHMsICZsZW5ndGgsIDApOwogICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFL
RSwgY29udGVudHMsIGxlbmd0aCk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAi
L25vZmF2aWNvbiIpKSB7CkBAIC0xNTMsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgdGVzdENsZWFy
RGF0YWJhc2UoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICBXZWJLaXRGYXZpY29uRGF0
YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZpY29uX2RhdGFiYXNl
KHRlc3QtPm1fd2ViQ29udGV4dCk7CiAgICAgd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfY2xlYXIo
ZGF0YWJhc2UpOwogCi0gICAgR093blB0cjxjaGFyPiBpY29uVVJJKHdlYmtpdF9mYXZpY29uX2Rh
dGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L2ZvbyIpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaWNvblVSSSh3ZWJraXRfZmF2
aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0YWJhc2UsIGtTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9mb28iKS5kYXRhKCkpKTsKICAgICBnX2Fzc2VydCghaWNvblVSSSk7CiB9CiAKQEAg
LTIwMyw3ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvblVSSShGYXZpY29uRGF0
YWJhc2VUZXN0KiB0ZXN0KQogICAgIFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UgPSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Zhdmljb25fZGF0YWJhc2UodGVzdC0+bV93ZWJDb250ZXh0
KTsKIAogICAgIENTdHJpbmcgYmFzZVVSSSA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28i
KTsKLSAgICBHT3duUHRyPGNoYXI+IGljb25VUkkod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0
X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBiYXNlVVJJLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gaWNvblVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0
YWJhc2UsIGJhc2VVUkkuZGF0YSgpKSk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKGljb25VUkku
Z2V0KCksID09LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaWNvbi9mYXZpY29uLmljbyIpKTsK
IH0KIApAQCAtMjU3LDcgKzI1OCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFz
ZUZpbmFsaXplZENhbGxiYWNrKGdwb2ludGVyLCBHT2JqZWN0KikKICAgICBpZiAoIWdfZmlsZV90
ZXN0KGtUZW1wRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBHT3duUHRyPGNoYXI+IGZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJl
Y3RvcnksICJXZWJwYWdlSWNvbnMuZGIiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBm
aWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiV2VicGFnZUljb25zLmRi
IiwgbnVsbHB0cikpOwogICAgIGdfdW5saW5rKGZpbGVuYW1lLmdldCgpKTsKIAogICAgIGdfcm1k
aXIoa1RlbXBEaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYTQxNDg1
My4uMzE5ZWVjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yNCw4ICsyNCw4IEBA
CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBzdGF0aWMg
V2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYkNvbnRleHRHZXRQbHVnaW5zKFBsdWdpbnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIH0KICAgICBnX2Fzc2VydChXRUJLSVRfSVNfUExVR0lOKHRlc3RQbHVnaW4uZ2V0KCkp
KTsKIAotICAgIEdPd25QdHI8Y2hhcj4gcGx1Z2luUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJ
VF9URVNUX1BMVUdJTl9ESVIsICJsaWJUZXN0TmV0c2NhcGVQbHVnaW4uc28iLCBOVUxMKSk7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBwbHVnaW5QYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX1RF
U1RfUExVR0lOX0RJUiwgImxpYlRlc3ROZXRzY2FwZVBsdWdpbi5zbyIsIG51bGxwdHIpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfcGF0aCh0ZXN0UGx1Z2luLmdldCgp
KSwgPT0sIHBsdWdpblBhdGguZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1
Z2luX2dldF9kZXNjcmlwdGlvbih0ZXN0UGx1Z2luLmdldCgpKSwgPT0sICJTaW1wbGUgTmV0c2Nh
cGXCriBwbHVnLWluIHRoYXQgaGFuZGxlcyB0ZXN0IGNvbnRlbnQgZm9yIFdlYktpdCIpOwogICAg
IEdMaXN0KiBtaW1lSW5mb0xpc3QgPSB3ZWJraXRfcGx1Z2luX2dldF9taW1lX2luZm9fbGlzdCh0
ZXN0UGx1Z2luLmdldCgpKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdf
YXNzZXJ0KHRlc3QtPm1faGFuZGxlcnNNYXAuY29udGFpbnMoU3RyaW5nOjpmcm9tVVRGOChzY2hl
bWUpKSk7CiAKICAgICAgICAgaWYgKCFnX3N0cmNtcDAoc2NoZW1lLCAiZXJyb3IiKSkgewotICAg
ICAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFy
a19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiksIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7Cisg
ICAgICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChn
X3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJl
cXVlc3QsIGVycm9yLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNj
aGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+cmVnaXN0ZXJVUklTY2hl
bWVIYW5kbGVyKCJlY2hvIiwga0VjaG9IVE1MRm9ybWF0LCAtMSwgInRleHQvaHRtbCIpOwogICAg
IHRlc3QtPmxvYWRVUkkoImVjaG86aGVsbG8gd29ybGQiKTsKICAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKLSAgICBHT3duUHRyPGNoYXI+IGVjaG9IVE1MKGdfc3RyZHVwX3ByaW50
ZihrRWNob0hUTUxGb3JtYXQsIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgodGVz
dC0+bV91cmlTY2hlbWVSZXF1ZXN0LmdldCgpKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZWNo
b0hUTUwoZ19zdHJkdXBfcHJpbnRmKGtFY2hvSFRNTEZvcm1hdCwgd2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9nZXRfcGF0aCh0ZXN0LT5tX3VyaVNjaGVtZVJlcXVlc3QuZ2V0KCkpKSk7CiAgICAg
bWFpblJlc291cmNlRGF0YVNpemUgPSAwOwogICAgIG1haW5SZXNvdXJjZURhdGEgPSB0ZXN0LT5t
YWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oZWNob0hUTUwuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0
V2ViVmlldy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCmluZGV4IGE0OWIzNzYuLjczNDJiNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcApAQCAtOTAsMTkgKzkwLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNj
cmlwdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsn
KS50aXRsZTsiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgR093blB0cjxjaGFyPiB2YWx1
ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUiKTsKIAog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLmhyZWY7
IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAg
ICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFs
dWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwg
PT0sICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS50ZXh0Q29udGVudCIsICZlcnJvci5vdXRQ
dHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RL
KyBXZWJzaXRlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKQEAgLTEz
OCw3ICsxMzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi9vcmcvd2Vi
a2l0L3dlYmtpdDJndGsvdGVzdHMvbGluay10aXRsZS5qcyIsICZlcnJvci5vdXRQdHIoKSk7CiAg
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgp
KTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBUaXRsZSIp
OwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291
cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi93cm9uZy9wYXRoL3RvL3Jlc291cmNlLmpzIiwgJmVy
cm9yLm91dFB0cigpKTsKQEAgLTM3MSwxNCArMzcxLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2F2ZUFuZFdhaXRGb3JGaWxlKCkKICAgICB7Ci0gICAgICAgIG1fc2F2ZURlc3RpbmF0aW9uRmls
ZVBhdGguc2V0KGdfYnVpbGRfZmlsZW5hbWUobV90ZW1wRGlyZWN0b3J5LmdldCgpLCAidGVzdFdl
YlZpZXdTYXZlUmVzdWx0Lm1odCIsIE5VTEwpKTsKKyAgICAgICAgbV9zYXZlRGVzdGluYXRpb25G
aWxlUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKG1fdGVtcERpcmVjdG9yeS5nZXQoKSwgInRl
c3RXZWJWaWV3U2F2ZVJlc3VsdC5taHQiLCBOVUxMKSk7CiAgICAgICAgIG1fZmlsZSA9IGFkb3B0
R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG1fc2F2ZURlc3RpbmF0aW9uRmlsZVBhdGguZ2V0KCkp
KTsKICAgICAgICAgd2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZShtX3dlYlZpZXcsIG1fZmls
ZS5nZXQoKSwgV0VCS0lUX1NBVkVfTU9ERV9NSFRNTCwgMCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5
bmNSZWFkeUNhbGxiYWNrPih3ZWJWaWV3U2F2ZWRUb0ZpbGVDYWxsYmFjayksIHRoaXMpOwogICAg
ICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAgICAgfQogCi0gICAgR093blB0cjxj
aGFyPiBtX3RlbXBEaXJlY3Rvcnk7Ci0gICAgR093blB0cjxjaGFyPiBtX3NhdmVEZXN0aW5hdGlv
bkZpbGVQYXRoOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV90ZW1wRGlyZWN0b3J5OworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gbV9zYXZlRGVzdGluYXRpb25GaWxlUGF0aDsKICAgICBHUmVmUHRyPEdJ
bnB1dFN0cmVhbT4gbV9pbnB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdGaWxlPiBtX2ZpbGU7CiB9
OwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW9kZShXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRtbChpbmRleEhUTUws
IDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5ib2R5LnRleHRDb250ZW50OyIsIDApOwot
ICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFs
dWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJU
ZXN0IFdlYiBWaWV3IE1vZGUiKTsKIAogICAgIC8vIFNvdXJjZSBtb2RlLgpAQCAtNDM2LDcgKzQz
Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW9kZShXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRtbChpbmRleEhUTUwsIDApOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5ib2R5LnRl
eHRDb250ZW50OyIsIDApOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcu
cmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJl
c3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sIGluZGV4
SFRNTCk7CiB9CiAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Bh
Z2VWaXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iu
b3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0
KCFlcnJvci5nZXQoKSk7Ci0gICAgR093blB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3Ry
aW5nLmdldCgpLCA9PSwgImhpZGRlbiIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZl
cnJvci5vdXRQdHIoKSk7CkBAIC00NzcsNyArNDc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fz
c2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAg
IHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhq
YXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ2aXNpYmxlIik7CiAKICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1
bWVudC5oaWRkZW47IiwgJmVycm9yLm91dFB0cigpKTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iub3V0
UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7Ci0gICAgdmFsdWVTdHJpbmcuc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICB2YWx1ZVN0cmluZy5yZXNl
dChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0
KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImhpZGRlbiIp
OwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZlcnJvci5vdXRQdHIoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZp
ZXdHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYlZpZXdHcm91cC5jcHAKaW5kZXggNDAxNjU1Zi4uNzQwMDhlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3Jv
dXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2Vi
S2l0V2ViVmlld0dyb3VwLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGlzU3R5
bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFy
KiBwYXRoCiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gcmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgcmV0dXJuICFnX3N0cmNtcDAocmVzdWx0
U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0
b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3
RWRpdG9yLmNwcAppbmRleCAxZWEyYWNkLi43ZjBhMDYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQ
YXN0ZU5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0
KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9Q
QVNURSkpOwogCiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwotICAgIEdPd25QdHI8Y2hhcj4g
Y2xpcGJvYXJkVGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9h
cmQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93
YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGNs
aXBib2FyZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogfQogCkBAIC0xMjcs
NyArMTI3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0
YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKICAgICBnX2Fzc2VydCh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwog
CiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwotICAgIEdPd25QdHI8Y2hhcj4gY2xpcGJvYXJk
VGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90
ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRl
eHQuZ2V0KCksID09LCAiQWxsIHdvcmsgYW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3ku
Iik7CiB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRp
dG9yU2VsZWN0QWxsTm9uRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAg
ICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwotICAg
IEdPd25QdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQo
dGVzdC0+bV9jbGlwYm9hcmQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQo
Z3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CiAKICAgICAv
LyBJbml0aWFsbHkgb25seSB0aGUgc3Vic3BhbiBpcyBzZWxlY3RlZC4KICAgICBnX2Fzc2VydF9j
bXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7CiAKICAg
ICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3
LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpOwogICAgIHRlc3QtPmNvcHlDbGlw
Ym9hcmQoKTsKLSAgICBjbGlwYm9hcmRUZXh0LnNldChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3Rl
eHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKKyAgICBjbGlwYm9hcmRUZXh0LnJlc2V0KGd0a19jbGlw
Ym9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwogCiAgICAgLy8gVGhlIG1h
aW5zcGFuIHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciBjYWxsaW5nIFNFTEVDVF9BTEwuCiAgICAg
Z19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAiQWxsIHdvcmsgYW5kIG5v
IHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuIik7CkBAIC0xNzYsMTQgKzE3NiwxNCBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVkaXRvclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCiAgICAgdGVzdC0+
Y29weUNsaXBib2FyZCgpOwotICAgIEdPd25QdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xp
cGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1f
Y2xpcGJvYXJkKSk7CiAKICAgICAvLyBJbml0aWFsbHkgb25seSB0aGUgc3Vic3BhbiBpcyBzZWxl
Y3RlZC4KICAgICBnX2Fzc2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtl
IEphY2sgYSBkdWxsIik7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwp
OwogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBjbGlwYm9hcmRUZXh0LnNldChndGtf
Y2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKKyAgICBjbGlwYm9h
cmRUZXh0LnJlc2V0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2Fy
ZCkpOwogCiAgICAgLy8gVGhlIG1haW5zcGFuIHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciBjYWxs
aW5nIFNFTEVDVF9BTEwuCiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCks
ID09LCAiQWxsIHdvcmsgYW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuIik7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9u
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5z
aW9uVGVzdC5jcHAKaW5kZXggZThhMmI5Zi4uMmU4MDM0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQpAQCAt
MTMxLDggKzEzMiw4IEBAIHN0YXRpYyBnYm9vbGVhbiBzZW5kUmVxdWVzdENhbGxiYWNrKFdlYktp
dFdlYlBhZ2UqLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBXCiAgICAgZ19hc3NlcnQocmVx
dWVzdFVSSSk7CiAKICAgICBpZiAoY29uc3QgY2hhciogc3VmZml4ID0gZ19zdHJyc3RyKHJlcXVl
c3RVUkksICIvcmVtb3ZlLXRoaXMvamF2YXNjcmlwdC5qcyIpKSB7Ci0gICAgICAgIEdPd25QdHI8
Y2hhcj4gcHJlZml4KGdfc3RybmR1cChyZXF1ZXN0VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBz
dHJsZW4oc3VmZml4KSkpOwotICAgICAgICBHT3duUHRyPGNoYXI+IG5ld1VSSShnX3N0cmR1cF9w
cmludGYoIiVzL2phdmFzY3JpcHQuanMiLCBwcmVmaXguZ2V0KCkpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBwcmVmaXgoZ19zdHJuZHVwKHJlcXVlc3RVUkksIHN0cmxlbihyZXF1ZXN0VVJJ
KSAtIHN0cmxlbihzdWZmaXgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmV3VVJJKGdf
c3RyZHVwX3ByaW50ZigiJXMvamF2YXNjcmlwdC5qcyIsIHByZWZpeC5nZXQoKSkpOwogICAgICAg
ICB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaShyZXF1ZXN0LCBuZXdVUkkuZ2V0KCkpOwogICAg
IH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeChyZXF1ZXN0VVJJLCAiL2FkZC1kby1ub3QtdHJh
Y2staGVhZGVyIikpIHsKICAgICAgICAgU291cE1lc3NhZ2VIZWFkZXJzKiBoZWFkZXJzID0gd2Vi
a2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnMocmVxdWVzdCk7CkBAIC0xOTksNyArMjAw
LDcgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBHT3duUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9kb21f
ZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
dGl0bGUod2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdGl0bGUoZG9jdW1lbnQpKTsKICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIocykiLCB0aXRsZS5nZXQoKSkpOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiUnVuSmF2YVNjcmlwdEluSXNvbGF0ZWRXb3JsZCIpKSB7CiAgICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRm
b3JtVXRpbGl0aWVzR3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRp
bGl0aWVzR3RrLmNwcAppbmRleCA2ZmQwNWY1Li5lZTY1ZGNhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9ndGsvUGxhdGZvcm1VdGlsaXRpZXNHdGsuY3BwCkBAIC0yNyw4ICsyNyw4IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0aWwgewpAQCAtNjcsMTggKzY3LDE4IEBA
IHN0YXRpYyBjaGFyKiBnZXRGaWxlbmFtZUZyb21FbnZpcm9ubWVudFZhcmlhYmxlQXNVVEY4KGNv
bnN0IGNoYXIqIHZhcmlhYmxlTmFtZSkKIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5k
bGVQYXRoKCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IGluamVjdGVkQnVuZGxlUGF0aChnZXRGaWxl
bmFtZUZyb21FbnZpcm9ubWVudFZhcmlhYmxlQXNVVEY4KCJURVNUX1dFQktJVF9BUElfV0VCS0lU
Ml9JTkpFQ1RFRF9CVU5ETEVfUEFUSCIpKTsKLSAgICBHT3duUHRyPGNoYXI+IGluamVjdGVkQnVu
ZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZVBhdGguZ2V0KCksICJs
aWJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUubGEiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBpbmplY3RlZEJ1bmRsZVBhdGgoZ2V0RmlsZW5hbWVGcm9tRW52aXJvbm1lbnRWYXJp
YWJsZUFzVVRGOCgiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX1BBVEgi
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRf
ZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVQYXRoLmdldCgpLCAibGliVGVzdFdlYktpdEFQSUluamVj
dGVkQnVuZGxlLmxhIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhpbmplY3RlZEJ1bmRsZUZpbGVuYW1lLmdldCgpKTsKIH0KIAogV0tVUkxSZWYg
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4
dGVuc2lvbikKIHsKLSAgICBHT3duUHRyPGNoYXI+IHRlc3RSZXNvdXJjZXNQYXRoKGdldEZpbGVu
YW1lRnJvbUVudmlyb25tZW50VmFyaWFibGVBc1VURjgoIlRFU1RfV0VCS0lUX0FQSV9XRUJLSVQy
X1JFU09VUkNFU19QQVRIIikpOwotICAgIEdPd25QdHI8Y2hhcj4gcmVzb3VyY2VCYXNlbmFtZShn
X3N0cmR1cF9wcmludGYoIiVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lvbikpOwotICAgIEdPd25Q
dHI8Y2hhcj4gcmVzb3VyY2VGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKHRlc3RSZXNvdXJjZXNQ
YXRoLmdldCgpLCByZXNvdXJjZUJhc2VuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiB0ZXN0UmVzb3VyY2VzUGF0aChnZXRGaWxlbmFtZUZyb21FbnZpcm9ubWVudFZhcmlh
YmxlQXNVVEY4KCJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCIpKTsKKyAg
ICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlQmFzZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy4l
cyIsIHJlc291cmNlLCBleHRlbnNpb24pKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNl
RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZSh0ZXN0UmVzb3VyY2VzUGF0aC5nZXQoKSwgcmVzb3Vy
Y2VCYXNlbmFtZS5nZXQoKSwgbnVsbHB0cikpOwogICAgIEdSZWZQdHI8R0ZpbGU+IHJlc291cmNl
RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHJlc291cmNlRmlsZW5hbWUuZ2V0
KCkpKTsKLSAgICBHT3duUHRyPGNoYXI+IHJlc291cmNlVVJJKGdfZmlsZV9nZXRfdXJpKHJlc291
cmNlRmlsZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkkoZ19maWxl
X2dldF91cmkocmVzb3VyY2VGaWxlLmdldCgpKSk7CiAgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHJlc291cmNlVVJJLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKaW5kZXggYmE2ZmFiMC4uMTJlZWVkNyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1X
ZWJWaWV3LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0dPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUGxhdGZvcm1X
ZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogCiBzdGF0
aWMgdm9pZCBkb0tleVN0cm9rZShHdGtXaWRnZXQqIHZpZXdXaWRnZXQsIHVuc2lnbmVkIGludCBr
ZXlWYWwpCiB7Ci0gICAgR093blB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtf
S0VZX1BSRVNTKSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25l
dyhHREtfS0VZX1BSRVNTKSk7CiAgICAgZXZlbnQtPmtleS5rZXl2YWwgPSBrZXlWYWw7CiAgICAg
ZXZlbnQtPmtleS50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKICAgICBldmVudC0+a2V5LnN0YXRl
ID0gMDsKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQWx0
S2V5UHJlc3MoKQogCiBzdGF0aWMgdm9pZCBkb01vdXNlQnV0dG9uRXZlbnQoR3RrV2lkZ2V0KiB2
aWV3V2lkZ2V0LCBHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50IHksIHVuc2lnbmVk
IGludCBidXR0b24pCiB7Ci0gICAgR093blB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25l
dyhldmVudFR5cGUpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRf
bmV3KGV2ZW50VHlwZSkpOwogICAgIGV2ZW50LT5idXR0b24ueCA9IHg7CiAgICAgZXZlbnQtPmJ1
dHRvbi55ID0geTsKICAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKQEAgLTEyNCw3
ICsxMjQsNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKHVuc2ln
bmVkIHgsIHVuc2lnbmVkIHkpCiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNl
TW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQogewotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2
ZW50KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKKyAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19NT1RJT05fTk9USUZZKSk7CiAgICAgZXZl
bnQtPm1vdGlvbi54ID0geDsKICAgICBldmVudC0+bW90aW9uLnkgPSB5OwogICAgIGV2ZW50LT5t
b3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcAppbmRleCBkZjM0MjA0
Li4yMTFmYThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3Rr
L0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktp
dDJHdGsvTG9hZFRyYWNraW5nVGVzdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQg
bG9hZENoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hZEV2ZW4KIHN0YXRpYyB2b2lkIGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBjb25zdCBjaGFyKiBmYWlsaW5n
VVJJLCBHRXJyb3IqIGVycm9yLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogewogICAgIHRlc3Qt
Pm1fbG9hZEZhaWxlZCA9IHRydWU7Ci0gICAgdGVzdC0+bV9lcnJvci5zZXQoZ19lcnJvcl9jb3B5
KGVycm9yKSk7CisgICAgdGVzdC0+bV9lcnJvci5yZXNldChnX2Vycm9yX2NvcHkoZXJyb3IpKTsK
IAogICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9TVEFSVEVE
OgpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6bG9hZFVSSShjb25z
dCBjaGFyKiB1cmkpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0
ZWRQcm9ncmVzcyA9IDA7Ci0gICAgbV9lcnJvci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQo
KTsKICAgICBXZWJWaWV3VGVzdDo6bG9hZFVSSSh1cmkpOwogfQogCkBAIC0xNjIsNyArMTYyLDcg
QEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25z
dCBjaGFyKiBiYXNlVVJJKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0
aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJl
c2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6OmxvYWRIdG1sKGh0bWwsIGJhc2VVUkkpOwogfQogCkBA
IC0xNzAsNyArMTcwLDcgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkUGxhaW5UZXh0KGNv
bnN0IGNoYXIqIHBsYWluVGV4dCkKIHsKICAgICBtX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICBt
X2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBtX2Vycm9yLmNsZWFyKCk7CisgICAgbV9lcnJv
ci5yZXNldCgpOwogICAgIFdlYlZpZXdUZXN0Ojpsb2FkUGxhaW5UZXh0KHBsYWluVGV4dCk7CiB9
CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRSZXF1ZXN0
KFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7
CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0gICAgbV9lcnJvci5jbGVhcigpOworICAg
IG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVzdDo6bG9hZFJlcXVlc3QocmVxdWVzdCk7
CiB9CiAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OnJlbG9hZCgp
CiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9
IDA7Ci0gICAgbV9lcnJvci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfcmVsb2FkKG1fd2ViVmlldyk7CiB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2
b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFjaygpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFy
KCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0gICAgbV9lcnJvci5jbGVhcigpOwor
ICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVzdDo6Z29CYWNrKCk7CiB9CiAKQEAg
LTIwMiw2ICsyMDIsNiBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OmdvRm9yd2FyZCgpCiB7CiAg
ICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0g
ICAgbV9lcnJvci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVz
dDo6Z29Gb3J3YXJkKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oCmluZGV4IGEzY2Y3ODQuLmQwZWQxZTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVz
dC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5n
VGVzdC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIGJvb2wgbV9ydW5M
b2FkVW50aWxDb21wbGV0aW9uOwogICAgIGJvb2wgbV9sb2FkRmFpbGVkOwotICAgIEdPd25QdHI8
R0Vycm9yPiBtX2Vycm9yOworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBtX2Vycm9yOwogICAgIFZl
Y3RvcjxMb2FkRXZlbnRzPiBtX2xvYWRFdmVudHM7CiAgICAgZmxvYXQgbV9lc3RpbWF0ZWRQcm9n
cmVzczsKICAgICBDU3RyaW5nIG1fcmVkaXJlY3RVUkk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwCmluZGV4IGQyMWZmZDcuLjgwNDM1NTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwCkBA
IC0yMywxNCArMjMsMTQgQEAKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KLSNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB2
b2lkIGJlZm9yZUFsbCgpOwogdm9pZCBhZnRlckFsbCgpOwogCiBzdGF0aWMgdm9pZCByZWdpc3Rl
ckdSZXNvdXJjZSh2b2lkKQogewotICAgIEdPd25QdHI8Y2hhcj4gcmVzb3VyY2VzUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKFdFQktJVF9FWEVDX1BBVEgsICJUZXN0V2ViS2l0QVBJIiwgIldlYktpdDJH
dGsiLCAicmVzb3VyY2VzIiwgIndlYmtpdDJndGstdGVzdHMtcmVzb3VyY2VzLmdyZXNvdXJjZSIs
IE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxl
bmFtZShXRUJLSVRfRVhFQ19QQVRILCAiVGVzdFdlYktpdEFQSSIsICJXZWJLaXQyR3RrIiwgInJl
c291cmNlcyIsICJ3ZWJraXQyZ3RrLXRlc3RzLXJlc291cmNlcy5ncmVzb3VyY2UiLCBudWxscHRy
KSk7CiAgICAgR1Jlc291cmNlKiByZXNvdXJjZSA9IGdfcmVzb3VyY2VfbG9hZChyZXNvdXJjZXNQ
YXRoLmdldCgpLCAwKTsKICAgICBnX2Fzc2VydChyZXNvdXJjZSk7CiAKQEAgLTQ0LDcgKzQ0LDcg
QEAgc3RhdGljIHZvaWQgcmVtb3ZlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgY2hhciogZGlyZWN0
b3J5UGF0aCkKICAgICBnX2Fzc2VydChkaXJlY3RvcnkpOwogICAgIGNvbnN0IGNoYXIqIGZpbGVO
YW1lOwogICAgIHdoaWxlICgoZmlsZU5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyZWN0b3J5KSkp
IHsKLSAgICAgICAgR093blB0cjxjaGFyPiBmaWxlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGRpcmVj
dG9yeVBhdGgsIGZpbGVOYW1lLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmls
ZVBhdGgoZ19idWlsZF9maWxlbmFtZShkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSwgbnVsbHB0cikp
OwogICAgICAgICBnX3VubGluayhmaWxlUGF0aC5nZXQoKSk7CiAgICAgfQogICAgIGdfZGlyX2Ns
b3NlKGRpcmVjdG9yeSk7CkBAIC02NCw3ICs2NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIAogICAgIHJlZ2lzdGVyR1Jlc291cmNlKCk7CiAKLSAgICBHT3duUHRyPGNoYXI+
IGRpc2tDYWNoZVRlbXBEaXJlY3RvcnkoZ19kaXJfbWFrZV90bXAoIldlYktpdDJUZXN0c0Rpc2tD
YWNoZS1YWFhYWFgiLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVUZW1wRGly
ZWN0b3J5KGdfZGlyX21ha2VfdG1wKCJXZWJLaXQyVGVzdHNEaXNrQ2FjaGUtWFhYWFhYIiwgMCkp
OwogICAgIGdfYXNzZXJ0KGRpc2tDYWNoZVRlbXBEaXJlY3RvcnkuZ2V0KCkpOwogICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCksIGRpc2tDYWNoZVRlbXBEaXJlY3RvcnkuZ2V0KCkpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgKaW5kZXggMGUxMWQ0MC4u
ZDVjZWFlOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9U
ZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1h
aW4uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogI2RlZmluZSBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENsYXNzTmFtZSkgXApAQCAt
MzcsNyArMzgsNyBAQAogICAgIH0gXAogICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBjaGFyKiBz
dWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCB2b2lkICgqdGVzdEZ1bmMpKENsYXNzTmFt
ZSosIGNvbnN0IHZvaWQqKSkgXAogICAgIHsgXAotICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXN0
UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFt
ZSkpOyBcCisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50
ZigiL3dlYmtpdDIvJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7IFwKICAgICAgICAgZ190
ZXN0X2FkZCh0ZXN0UGF0aC5nZXQoKSwgQ2xhc3NOYW1lLCAwLCBDbGFzc05hbWU6OnNldFVwLCB0
ZXN0RnVuYywgQ2xhc3NOYW1lOjp0ZWFyRG93bik7IFwKICAgICB9CiAKQEAgLTgzLDEzICs4NCwx
MyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ1N0cmluZyBnZXRXZWJLaXQxVGVzdFJlc291Y2Vz
RGlyKCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gcmVzb3VyY2VzRGlyKGdfYnVpbGRf
ZmlsZW5hbWUoV0VCS0lUX1NSQ19ESVIsICJUb29scyIsICJUZXN0V2ViS2l0QVBJIiwgIlRlc3Rz
IiwgIldlYktpdEd0ayIsICJyZXNvdXJjZXMiLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcmVzb3VyY2VzRGlyKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX1NSQ19ESVIsICJUb29s
cyIsICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktpdEd0ayIsICJyZXNvdXJjZXMiLCBu
dWxscHRyKSk7CiAgICAgICAgIHJldHVybiByZXNvdXJjZXNEaXIuZ2V0KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIENTdHJpbmcgZ2V0UmVzb3VyY2VzRGlyKCkKICAgICB7Ci0gICAgICAgIEdPd25Q
dHI8Y2hhcj4gcmVzb3VyY2VzRGlyKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX1NSQ19ESVIsICJU
b29scyIsICJUZXN0V2ViS2l0QVBJIiwgIlRlc3RzIiwgIldlYktpdDJHdGsiLCAicmVzb3VyY2Vz
IiwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1aWxk
X2ZpbGVuYW1lKFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0
cyIsICJXZWJLaXQyR3RrIiwgInJlc291cmNlcyIsIG51bGxwdHIpKTsKICAgICAgICAgcmV0dXJu
IHJlc291cmNlc0Rpci5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IDhjMmQzZjYuLmQwZGZh
ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0
VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJL
aXRUZXN0QnVzLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMu
aCIKIAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIFdl
YktpdFRlc3RCdXM6OldlYktpdFRlc3RCdXMoKQpAQCAtMzEsNyArMzIsNyBAQCBXZWJLaXRUZXN0
QnVzOjpXZWJLaXRUZXN0QnVzKCkKIGJvb2wgV2ViS2l0VGVzdEJ1czo6cnVuKCkKIHsKICAgICAv
LyBGSVhNRTogVXNlIEdUZXN0REJ1cyB3aGVuIHdlIGJ1bXAgZ2xpYiB0byAyLjM0LgotICAgIEdP
d25QdHI8Y2hhcj4gZGJ1c0xhdW5jaChnX2ZpbmRfcHJvZ3JhbV9pbl9wYXRoKCJkYnVzLWxhdW5j
aCIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRidXNMYXVuY2goZ19maW5kX3Byb2dyYW1faW5f
cGF0aCgiZGJ1cy1sYXVuY2giKSk7CiAgICAgaWYgKCFkYnVzTGF1bmNoKSB7CiAgICAgICAgIGdf
d2FybmluZygiRXJyb3Igc3RhcnRpbmcgREJVUyBkYWVtb246IGRidXMtbGF1bmNoIG5vdCBmb3Vu
ZCBpbiBwYXRoIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCmluZGV4IDBh
YTg2YmMuLjg3MzY3NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktp
dDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsv
V2ViS2l0Mkd0ay9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAtMjEsMTYgKzIxLDE2IEBACiAjaW5j
bHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogCiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogCiBXZWJLaXRUZXN0U2VydmVyOjpXZWJLaXRUZXN0U2VydmVyKFNlcnZlclR5cGUg
dHlwZSkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHNzbENlcnRpZmljYXRlRmlsZTsKLSAgICBHT3du
UHRyPGNoYXI+IHNzbEtleUZpbGU7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBzc2xDZXJ0aWZpY2F0
ZUZpbGU7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBzc2xLZXlGaWxlOwogICAgIGlmICh0eXBlID09
IFNlcnZlckhUVFBTKSB7CiAgICAgICAgIENTdHJpbmcgcmVzb3VyY2VzRGlyID0gVGVzdDo6Z2V0
UmVzb3VyY2VzRGlyKCk7Ci0gICAgICAgIHNzbENlcnRpZmljYXRlRmlsZS5zZXQoZ19idWlsZF9m
aWxlbmFtZShyZXNvdXJjZXNEaXIuZGF0YSgpLCAidGVzdC1jZXJ0LnBlbSIsIE5VTEwpKTsKLSAg
ICAgICAgc3NsS2V5RmlsZS5zZXQoZ19idWlsZF9maWxlbmFtZShyZXNvdXJjZXNEaXIuZGF0YSgp
LCAidGVzdC1rZXkucGVtIiwgTlVMTCkpOworICAgICAgICBzc2xDZXJ0aWZpY2F0ZUZpbGUucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShyZXNvdXJjZXNEaXIuZGF0YSgpLCAidGVzdC1jZXJ0LnBlbSIs
IE5VTEwpKTsKKyAgICAgICAgc3NsS2V5RmlsZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHJlc291
cmNlc0Rpci5kYXRhKCksICJ0ZXN0LWtleS5wZW0iLCBOVUxMKSk7CiAgICAgfQogCiAgICAgR1Jl
ZlB0cjxTb3VwQWRkcmVzcz4gYWRkcmVzcyA9IGFkb3B0R1JlZihzb3VwX2FkZHJlc3NfbmV3KCIx
MjcuMC4wLjEiLCBTT1VQX0FERFJFU1NfQU5ZX1BPUlQpKTsKQEAgLTU3LDcgKzU3LDcgQEAgdm9p
ZCBXZWJLaXRUZXN0U2VydmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNrIHNlcnZlckNhbGxiYWNr
KQogQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBh
dGgpCiB7CiAgICAgU291cFVSSSogdXJpID0gc291cF91cmlfbmV3X3dpdGhfYmFzZShtX2Jhc2VV
UkksIHBhdGgpOwotICAgIEdPd25QdHI8Z2NoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJp
bmcodXJpLCBGQUxTRSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVyaVN0cmluZyhzb3VwX3Vy
aV90b19zdHJpbmcodXJpLCBGQUxTRSkpOwogICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsKICAgICBy
ZXR1cm4gdXJpU3RyaW5nLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcAppbmRleCA0YTNj
ZDk2Li45OWE5ZGRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQy
R3RrL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcApAQCAtMjAsNyArMjAsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0UnVubmVyLmgiCiAK
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogCiBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6V2ViUHJvY2Vzc1Rlc3RSdW5u
ZXIoKQogICAgIDogbV9tYWluTG9vcChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCkBAIC05Myw3
ICs5Myw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3QoY29uc3QgY2hhciog
c3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwKICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7CiAKICAgICBtX3Rlc3RSZXN1bHQgPSBmYWxzZTsKLSAgICBHT3duUHRyPGNoYXI+
IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50ZigiJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIiVzLyVzIiwg
c3VpdGVOYW1lLCB0ZXN0TmFtZSkpOwogICAgIGdfZGJ1c19wcm94eV9jYWxsKAogICAgICAgICBw
cm94eSgpLAogICAgICAgICAiUnVuVGVzdCIsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDhkNmRmNTUuLmViN2IwZGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3Qu
Y3BwCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKIAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HT3du
UHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAKIFdlYlZpZXdU
ZXN0OjpXZWJWaWV3VGVzdCgpCiAgICAgOiBtX3dlYlZpZXcoV0VCS0lUX1dFQl9WSUVXKGdfb2Jq
ZWN0X3JlZl9zaW5rKHdlYmtpdF93ZWJfdmlld19uZXcoKSkpKQpAQCAtMjIzLDcgKzIyMyw3IEBA
IHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2luCiAgICAgZ19hc3NlcnQoZGF0YSk7CiAKICAgICBXZWJW
aWV3VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpOwotICAg
IHRlc3QtPm1fcmVzb3VyY2VEYXRhLnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7
CisgICAgdGVzdC0+bV9yZXNvdXJjZURhdGEucmVzZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
ZGF0YSkpOwogICAgIHRlc3QtPm1fcmVzb3VyY2VEYXRhU2l6ZSA9IGRhdGFTaXplOwogICAgIGdf
bWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiB9CkBAIC0yMzEsNyArMjMxLDcgQEAg
c3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW4KIGNvbnN0IGNoYXIqIFdlYlZpZXdUZXN0OjptYWluUmVz
b3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpCiB7CiAgICAgbV9yZXNvdXJj
ZURhdGFTaXplID0gMDsKLSAgICBtX3Jlc291cmNlRGF0YS5jbGVhcigpOworICAgIG1fcmVzb3Vy
Y2VEYXRhLnJlc2V0KCk7CiAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0
X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKG1fd2ViVmlldyk7CiAgICAgZ19hc3NlcnQocmVz
b3VyY2UpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bW91c2VNb3Zl
VG8oaW50IHgsIGludCB5LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKICAgICBHdGtXaWRnZXQq
IHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7CiAgICAgZ19hc3NlcnQoZ3RrX3dp
ZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwogCi0gICAgR093blB0cjxHZGtFdmVudD4g
ZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOworICAgIEdVbmlxdWVQdHI8
R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKICAgICBl
dmVudC0+bW90aW9uLnggPSB4OwogICAgIGV2ZW50LT5tb3Rpb24ueSA9IHk7CiAKQEAgLTI3OCw3
ICsyNzgsNyBAQCB2b2lkIFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1
bnNpZ25lZCBrZXlNb2RpZmllcnMpCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJ
REdFVChtX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZp
ZXdXaWRnZXQpKTsKIAotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXco
R0RLX0tFWV9QUkVTUykpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVu
dF9uZXcoR0RLX0tFWV9QUkVTUykpOwogICAgIGV2ZW50LT5rZXkua2V5dmFsID0ga2V5VmFsOwog
CiAgICAgZXZlbnQtPmtleS50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKQEAgLTMwNCw3ICszMDQs
NyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBlIGV2
ZW50VHlwZSwgaW50IHgsIGludCB5LCB1bnNpZwogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9
IEdUS19XSURHRVQobV93ZWJWaWV3KTsKICAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9yZWFs
aXplZCh2aWV3V2lkZ2V0KSk7CiAKLSAgICBHT3duUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZl
bnRfbmV3KGV2ZW50VHlwZSkpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19l
dmVudF9uZXcoZXZlbnRUeXBlKSk7CiAgICAgZXZlbnQtPmJ1dHRvbi53aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF93aW5kb3codmlld1dpZGdldCk7CiAgICAgZ19vYmplY3RfcmVmKGV2ZW50LT5idXR0
b24ud2luZG93KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9X
ZWJWaWV3VGVzdC5oCmluZGV4IGFlZWIwNjIuLmY0NWUxMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmgKQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIENTdHJpbmcgbV9leHBlY3RlZFRpdGxlOwogICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIG1famF2YXNjcmlwdFJlc3VsdDsKICAgICBHRXJyb3IqKiBtX2phdmFzY3JpcHRF
cnJvcjsKLSAgICBHT3duUHRyPGNoYXI+IG1fcmVzb3VyY2VEYXRhOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgc2l6ZV90IG1fcmVzb3VyY2VEYXRhU2l6ZTsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IDRlMTExNTAuLjM1NzNhMmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxhdGsv
YXRrLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTEwNCw3ICsxMDQsNyBA
QCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGlk
KTsKLSAgICBHT3duUHRyPGdjaGFyPiBpZEJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFs
bG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRCdWZmZXIoc3RhdGlj
X2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoaWQsIGlkQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgIEF0a09iamVj
dCogcmVzdWx0ID0gY2hpbGRFbGVtZW50QnlJZChyb290LCBpZEJ1ZmZlci5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAKaW5kZXggOTE1NTU5OC4uYjUyMTA3MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJB
dGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZVBhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNjcsOCArNjcsOCBAQCB2b2lkIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50
KEF0a09iamVjdCogYWNjZXNzaWJsZSwgY29uc3QgY2hhciogc2lnbmFsTmFtZSwgY29ucwogICAg
IGlmICghb2JqZWN0TmFtZSB8fCAqb2JqZWN0TmFtZSA9PSAnXDAnKQogICAgICAgICBvYmplY3RO
YW1lID0gIihObyBuYW1lKSI7CiAKLSAgICBHT3duUHRyPGNoYXI+IHNpZ25hbE5hbWVBbmRWYWx1
ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNp
Z25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKLSAgICBHT3duUHRyPGNoYXI+IGFj
Y2Vzc2liaWxpdHlFdmVudFN0cmluZyhnX3N0cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2Jq
ZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFtZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5h
bWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0TmFtZSwgb2JqZWN0Um9sZSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2lnbmFsTmFtZUFuZFZhbHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJpbnRm
KCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwgc2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFsTmFt
ZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nKGdfc3Ry
ZHVwX3ByaW50ZigiQWNjZXNzaWJpbGl0eSBvYmplY3QgZW1pdHRlZCBcIiVzXCIgLyBOYW1lOiBc
IiVzXCIgLyBSb2xlOiAlZFxuIiwgc2lnbmFsTmFtZUFuZFZhbHVlLmdldCgpLCBvYmplY3ROYW1l
LCBvYmplY3RSb2xlKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91dHB1dFRleHQo
U3RyaW5nOjpmcm9tVVRGOChhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcuZ2V0KCkpKTsKIH0KIApA
QCAtODMsMzcgKzgzLDM3IEBAIGdib29sZWFuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihHU2lnbmFs
SW52b2NhdGlvbkhpbnQqIHNpZ25hbEhpbnQsIHVuc2lnbmVkIG51bVBhCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5OwotICAgIEdPd25QdHI8Y2hh
cj4gc2lnbmFsTmFtZTsKLSAgICBHT3duUHRyPGNoYXI+IHNpZ25hbFZhbHVlOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gc2lnbmFsTmFtZTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpZ25hbFZhbHVl
OwogICAgIGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUgPSBudWxscHRyOwogCiAgICAgZ19z
aWduYWxfcXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsUXVlcnkpOwogCiAgICAg
aWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkg
ewotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTol
cyIsIGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgICAgIHNpZ25h
bFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFy
YW1WYWx1ZXNbMl0pKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBfcHJpbnRm
KCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkp
OworICAgICAgICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1
ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMl0pKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAw
KGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pLCAiY2hlY2tlZCIpKQogICAgICAg
ICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJDaGVja2VkU3RhdGVDaGFuZ2VkIjsKICAgICAgICAg
ZWxzZSBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSwg
ImludmFsaWQtZW50cnkiKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhJbnZh
bGlkU3RhdHVzQ2hhbmdlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5
LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1
cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7Cisg
ICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOworICAgICAg
ICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9v
bGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFu
KCZwYXJhbVZhbHVlc1sxXSkpCiAgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQiOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxR
dWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgewogICAgICAgICBjb25zdCBn
Y2hhciogY2hpbGRyZW5DaGFuZ2VkRGV0YWlsID0gZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGlu
dC0+ZGV0YWlsKTsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJjaGls
ZHJlbi1jaGFuZ2VkOiVzIiwgY2hpbGRyZW5DaGFuZ2VkRGV0YWlsKSk7Ci0gICAgICAgIHNpZ25h
bFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1W
YWx1ZXNbMV0pKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCJj
aGlsZHJlbi1jaGFuZ2VkOiVzIiwgY2hpbGRyZW5DaGFuZ2VkRGV0YWlsKSk7CisgICAgICAgIHNp
Z25hbFZhbHVlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50KCZw
YXJhbVZhbHVlc1sxXSkpKTsKICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICFnX3N0cmNtcDAo
Y2hpbGRyZW5DaGFuZ2VkRGV0YWlsLCAiYWRkIikgPyAiQVhDaGlsZHJlbkFkZGVkIiA6ICJBWENo
aWxkcmVuUmVtb3ZlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNp
Z25hbF9uYW1lLCAicHJvcGVydHktY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhz
aWduYWxIaW50LT5kZXRhaWwpKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBf
cHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50
LT5kZXRhaWwpKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKGdfcXVhcmtfdG9fc3RyaW5nKHNp
Z25hbEhpbnQtPmRldGFpbCksICJhY2Nlc3NpYmxlLXZhbHVlIikpCiAgICAgICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJsb2FkLWNvbXBsZXRlIikpCiAgICAgICAgIG5v
dGlmaWNhdGlvbk5hbWUgPSAiQVhMb2FkQ29tcGxldGUiOwogICAgIGVsc2UKLSAgICAgICAgc2ln
bmFsTmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKKyAgICAgICAg
c2lnbmFsTmFtZS5yZXNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSkpOwogCiAg
ICAgaWYgKGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzKQogICAgICAgICBwcmludEFjY2Vzc2li
aWxpdHlFdmVudChhY2Nlc3NpYmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWduYWxWYWx1ZS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDVl
NTA3NmMuLjg4YWNhNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVl
SlNTdHJpbmcuaD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTcsNyArOTcsNyBA
QCBjb25zdCBjaGFyKiBsYW5kbWFya1N0cmluZ1NlYXJjaCA9ICJBWExhbmRtYXJrU2VhcmNoIjsK
IFN0cmluZyBqc1N0cmluZ1RvV1RGU3RyaW5nKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIHsKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShh
dHRyaWJ1dGUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+
KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYnVmZmVyKHN0
YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGF0dHJpYnV0ZSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CkBAIC0xODEsNyArMTgxLDcg
QEAgU3RyaW5nIGdldEF0a0F0dHJpYnV0ZVNldEFzU3RyaW5nKEF0a09iamVjdCogYWNjZXNzaWJs
ZSwgQXRrQXR0cmlidXRlVHlwZSB0eXBlKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmli
dXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAgQXRrQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5k
YXRhKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChh
dHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOworICAgICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFt
ZSwgIjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGF0dHJpYnV0ZURhdGEuZ2V0KCkpOwogICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4dCkKICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wg
Y2hlY2tFbGVtZW50U3RhdGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgQXRrU3RhdGVUeXBl
IHN0YXRlVHlwZSkKIAogSlNTdHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1VSUVs
ZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHJh
bmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcmFu
Z2VTdHJpbmcoZ19zdHJkdXAoInswLCAwfSIpKTsKIAogICAgIGlmICghQVRLX0lTX09CSkVDVChl
bGVtZW50LmdldCgpKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBKU1N0cmluZ1JlZiBp
bmRleFJhbmdlSW5UYWJsZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBib29sIGlzUm93UmFu
Z2UpCiAgICAgICAgICAgICBiYXNlID0gY29sdW1uOwogICAgICAgICAgICAgbGVuZ3RoID0gYXRr
X3RhYmxlX2dldF9jb2x1bW5fZXh0ZW50X2F0KEFUS19UQUJMRShheFRhYmxlKSwgcm93LCBjb2x1
bW4pOwogICAgICAgICB9Ci0gICAgICAgIHJhbmdlU3RyaW5nLnNldChnX3N0cmR1cF9wcmludGYo
InslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CisgICAgICAgIHJhbmdlU3RyaW5nLnJlc2V0KGdf
c3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBiYXNlLCBsZW5ndGgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOwpA
QCAtODc1LDcgKzg3NSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpyb2xlKCkKICAgICBpZiAoIWF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVD
VChtX2VsZW1lbnQuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHJvbGVTdHJpbmdXaXRoUHJlZml4
KGdfc3RyZHVwX3ByaW50ZigiQVhSb2xlOiAlcyIsIHJvbGVUb1N0cmluZyhBVEtfT0JKRUNUKG1f
ZWxlbWVudC5nZXQoKSkpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByb2xlU3RyaW5nV2l0aFBy
ZWZpeChnX3N0cmR1cF9wcmludGYoIkFYUm9sZTogJXMiLCByb2xlVG9TdHJpbmcoQVRLX09CSkVD
VChtX2VsZW1lbnQuZ2V0KCkpKSkpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhyb2xlU3RyaW5nV2l0aFByZWZpeC5nZXQoKSk7CiB9CiAKQEAgLTg5Nyw3ICs4OTcs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0
bGUoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsK
IAogICAgIGNvbnN0IGdjaGFyKiBuYW1lID0gYXRrX29iamVjdF9nZXRfbmFtZShBVEtfT0JKRUNU
KG1fZWxlbWVudC5nZXQoKSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGF4VGl0bGUoZ19zdHJkdXBf
cHJpbnRmKCJBWFRpdGxlOiAlcyIsIG5hbWUgPyBuYW1lIDogIiIpKTsKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRsZTogJXMiLCBuYW1lID8gbmFt
ZSA6ICIiKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhU
aXRsZS5nZXQoKSk7CiB9CkBAIC05MTEsNyArOTExLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKICAgICBpZiAoIWRlc2Ny
aXB0aW9uKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAw
KTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGF4RGVzYyhnX3N0cmR1cF9wcmludGYoIkFYRGVzY3Jp
cHRpb246ICVzIiwgZGVzY3JpcHRpb24pKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBheERlc2Mo
Z19zdHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0aW9uOiAlcyIsIGRlc2NyaXB0aW9uKSk7CiAKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhEZXNjLmdldCgpKTsKIH0K
QEAgLTkzOCw5ICs5MzgsOSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQogICAgIGlmICghQVRLX0lTX1RFWFQobV9lbGVtZW50
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhU
KG1fZWxlbWVudC5nZXQoKSksIDAsIC0xKSk7Ci0gICAgR093blB0cjxnY2hhcj4gdGV4dFdpdGhS
ZXBsYWNlZENoYXJhY3RlcnMocmVwbGFjZUNoYXJhY3RlcnNGb3JSZXN1bHRzKHRleHQuZ2V0KCkp
KTsKLSAgICBHT3duUHRyPGdjaGFyPiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhWYWx1ZTog
JXMiLCB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVycy5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50LmdldCgpKSwg
MCwgLTEpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVy
cyhyZXBsYWNlQ2hhcmFjdGVyc0ZvclJlc3VsdHModGV4dC5nZXQoKSkpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRmKCJBWFZhbHVlOiAlcyIsIHRleHRXaXRo
UmVwbGFjZWRDaGFyYWN0ZXJzLmdldCgpKSk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYXhWYWx1ZS5nZXQoKSk7CiB9CkBAIC05NTQsNyArOTU0LDcgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkK
ICAgICBpZiAoIWxvY2FsZSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRm
KCJBWExhbmd1YWdlOiAlcyIsIGxvY2FsZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXhWYWx1
ZShnX3N0cmR1cF9wcmludGYoIkFYTGFuZ3VhZ2U6ICVzIiwgbG9jYWxlKSk7CiAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VmFsdWUuZ2V0KCkpOwogfQogCkBAIC0x
MTkzLDcgKzExOTMsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4
KGludCBpbmRleCkKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gYXRrX3RleHRfZ2V0X2No
YXJhY3Rlcl9jb3VudChBVEtfVEVYVChtX2VsZW1lbnQuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJu
IC0xOwogCi0gICAgR093blB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVY
VChtX2VsZW1lbnQuZ2V0KCkpLCAwLCBpbmRleCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRl
eHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50LmdldCgpKSwgMCwgaW5kZXgp
KTsKICAgICBpbnQgbGluZU5vID0gMDsKICAgICBmb3IgKGdjaGFyKiBvZmZzZXQgPSB0ZXh0Lmdl
dCgpOyAqb2Zmc2V0OyArK29mZnNldCkgewogICAgICAgICBpZiAoKm9mZnNldCA9PSAnXG4nKQpA
QCAtMTM2NCw3ICsxMzY0LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKICAgICBnaW50IHN0YXJ0LCBlbmQ7CiAg
ICAgZ19mcmVlKGF0a190ZXh0X2dldF9zZWxlY3Rpb24oQVRLX1RFWFQobV9lbGVtZW50LmdldCgp
KSwgMCwgJnN0YXJ0LCAmZW5kKSk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBzZWxlY3Rpb24oZ19z
dHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHNlbGVjdGlvbihnX3N0cmR1cF9wcmludGYoInslZCwgJWR9Iiwgc3RhcnQs
IGVuZCAtIHN0YXJ0KSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHNlbGVjdGlvbi5nZXQoKSk7CiB9CiAKQEAgLTE0NDEsNyArMTQ0MSw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIEF0a0h5cGVybGlu
ayogaHlwZXJsaW5rID0gYXRrX2h5cGVybGlua19pbXBsX2dldF9oeXBlcmxpbmsoQVRLX0hZUEVS
TElOS19JTVBMKG1fZWxlbWVudC5nZXQoKSkpOwotICAgIEdPd25QdHI8Y2hhcj4gaHlwZXJsaW5r
VVJJKGF0a19oeXBlcmxpbmtfZ2V0X3VyaShoeXBlcmxpbmssIDApKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGh5cGVybGlua1VSSShhdGtfaHlwZXJsaW5rX2dldF91cmkoaHlwZXJsaW5rLCAwKSk7
CiAKICAgICAvLyBCdWlsZCB0aGUgcmVzdWx0IHN0cmluZywgc3RyaXBwaW5nIHRoZSBhYnNvbHV0
ZSBVUkwgcGF0aHMgaWYgcHJlc2VudC4KICAgICBjaGFyKiBsb2NhbFVSSSA9IGdfc3Ryc3RyX2xl
bihoeXBlcmxpbmtVUkkuZ2V0KCksIC0xLCAiTGF5b3V0VGVzdHMiKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVG
b250c0d0ay5jcHAKaW5kZXggMWFjNWEzYS4uN2M5ZGFiNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250c0d0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250
c0d0ay5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVV0aWxp
dGllcy5oIgogI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR2xpYlV0aWxpdGllcy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTYxLDE5ICs2MSwxOSBAQCBDU3RyaW5nIGdl
dE91dHB1dERpcigpCiAgICAgICAgIHJldHVybiB3ZWJraXRPdXRwdXREaXI7CiAKICAgICBDU3Ry
aW5nIHRvcExldmVsUGF0aCA9IFdUUjo6dG9wTGV2ZWxQYXRoKCk7Ci0gICAgR093blB0cjxjaGFy
PiBvdXRwdXREaXIoZ19idWlsZF9maWxlbmFtZSh0b3BMZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0
QnVpbGQiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXREaXIoZ19idWlsZF9m
aWxlbmFtZSh0b3BMZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0QnVpbGQiLCBudWxscHRyKSk7CiAg
ICAgcmV0dXJuIG91dHB1dERpci5nZXQoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0Rm9udHNQ
YXRoKCkKIHsKICAgICBDU3RyaW5nIHdlYmtpdE91dHB1dERpciA9IGdldE91dHB1dERpcigpOwot
ICAgIEdPd25QdHI8Y2hhcj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0
RGlyLmRhdGEoKSwgIkRlcGVuZGVuY2llcyIsICJSb290IiwgIndlYmtpdGd0ay10ZXN0LWZvbnRz
IiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5h
bWUod2Via2l0T3V0cHV0RGlyLmRhdGEoKSwgIkRlcGVuZGVuY2llcyIsICJSb290IiwgIndlYmtp
dGd0ay10ZXN0LWZvbnRzIiwgbnVsbHB0cikpOwogICAgIGlmIChnX2ZpbGVfdGVzdChmb250c1Bh
dGguZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19G
SUxFX1RFU1RfSVNfRElSKSkpCiAgICAgICAgIHJldHVybiBmb250c1BhdGguZ2V0KCk7CiAKICAg
ICAvLyBUcnkgYWx0ZXJuYXRpdmUgZm9udHMgcGF0aC4KLSAgICBmb250c1BhdGguc2V0KGdfYnVp
bGRfZmlsZW5hbWUod2Via2l0T3V0cHV0RGlyLmRhdGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRz
IiwgTlVMTCkpOworICAgIGZvbnRzUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91
dHB1dERpci5kYXRhKCksICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKICAgICBpZiAo
Z19maWxlX3Rlc3QoZm9udHNQYXRoLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklM
RV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX0RJUikpKQogICAgICAgICByZXR1cm4gZm9u
dHNQYXRoLmdldCgpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgaW5pdGlhbGl6ZUZvbnRDb25m
aWdTZXR0aW5nKCkKICAgICAvLyBMb2FkIG91ciBjb25maWd1cmF0aW9uIGZpbGUsIHdoaWNoIHNl
dHMgdXAgcHJvcGVyIGFsaWFzZXMgZm9yIGZhbWlseQogICAgIC8vIG5hbWVzIGxpa2Ugc2Fucywg
c2VyaWYgYW5kIG1vbm9zcGFjZS4KICAgICBGY0NvbmZpZyogY29uZmlnID0gRmNDb25maWdDcmVh
dGUoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBmb250Q29uZmlnRmlsZW5hbWUoZ19idWlsZF9maWxl
bmFtZShGT05UU19DT05GX0RJUiwgImZvbnRzLmNvbmYiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZm9udENvbmZpZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9E
SVIsICJmb250cy5jb25mIiwgbnVsbHB0cikpOwogICAgIGlmICghZ19maWxlX3Rlc3QoZm9udENv
bmZpZ0ZpbGVuYW1lLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkKICAgICAgICAgZ19l
cnJvcigiQ2Fubm90IGZpbmQgZm9udHMuY29uZiBhdCAlc1xuIiwgZm9udENvbmZpZ0ZpbGVuYW1l
LmdldCgpKTsKICAgICBpZiAoIUZjQ29uZmlnUGFyc2VBbmRMb2FkKGNvbmZpZywgcmVpbnRlcnBy
ZXRfY2FzdDxGY0NoYXI4Kj4oZm9udENvbmZpZ0ZpbGVuYW1lLmdldCgpKSwgdHJ1ZSkpCkBAIC0x
MDcsMTcgKzEwNywxNyBAQCB2b2lkIGluaXRpYWxpemVGb250Q29uZmlnU2V0dGluZygpCiAgICAg
aWYgKGZvbnRzUGF0aC5pc051bGwoKSkKICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvY2F0
ZSB0ZXN0IGZvbnRzIGF0ICVzLiBJcyBXRUJLSVRfVE9QX0xFVkVMIHNldD8iLCBmb250c1BhdGgu
ZGF0YSgpKTsKIAotICAgIEdPd25QdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihm
b250c1BhdGguZGF0YSgpLCAwLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxHRGlyPiBmb250c0RpcmVj
dG9yeShnX2Rpcl9vcGVuKGZvbnRzUGF0aC5kYXRhKCksIDAsIG51bGxwdHIpKTsKICAgICB3aGls
ZSAoY29uc3QgY2hhciogZGlyZWN0b3J5RW50cnkgPSBnX2Rpcl9yZWFkX25hbWUoZm9udHNEaXJl
Y3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIGlmICghZ19zdHJfaGFzX3N1ZmZpeChkaXJlY3RvcnlF
bnRyeSwgIi50dGYiKSAmJiAhZ19zdHJfaGFzX3N1ZmZpeChkaXJlY3RvcnlFbnRyeSwgIi5vdGYi
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBmb250UGF0
aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9yeUVudHJ5LCBOVUxM
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRQYXRoKGdfYnVpbGRfZmlsZW5hbWUo
Zm9udHNQYXRoLmRhdGEoKSwgZGlyZWN0b3J5RW50cnksIG51bGxwdHIpKTsKICAgICAgICAgaWYg
KCFGY0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBG
Y0NoYXI4Kj4oZm9udFBhdGguZ2V0KCkpKSkKICAgICAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5v
dCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9udFBhdGguZ2V0KCkpOwogICAgIH0KIAogICAgIC8vIEFo
ZW0gaXMgdXNlZCBieSBtYW55IGxheW91dCB0ZXN0cy4KLSAgICBHT3duUHRyPGdjaGFyPiBhaGVt
Rm9udEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJBSEVNX19fXy5U
VEYiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYWhlbUZvbnRGaWxlbmFtZShnX2J1
aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiQUhFTV9fX18uVFRGIiwgbnVsbHB0cikpOwog
ICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8
RmNDaGFyOCo+KGFoZW1Gb250RmlsZW5hbWUuZ2V0KCkpKSkKICAgICAgICAgZ19lcnJvcigiQ291
bGQgbm90IGxvYWQgZm9udCBhdCAlcyEiLCBhaGVtRm9udEZpbGVuYW1lLmdldCgpKTsgCiAKQEAg
LTEzNSwxMyArMTM1LDEzIEBAIHZvaWQgaW5pdGlhbGl6ZUZvbnRDb25maWdTZXR0aW5nKCkKICAg
ICB9OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGZvbnRGaWxlbmFtZXNbaV07ICsraSkgewot
ICAgICAgICBHT3duUHRyPGdjaGFyPiBmb250RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05U
U19DT05GX0RJUiwgIi4uIiwgIi4uIiwgImZvbnRzIiwgZm9udEZpbGVuYW1lc1tpXSwgTlVMTCkp
OworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250RmlsZW5hbWUoZ19idWlsZF9maWxlbmFt
ZShGT05UU19DT05GX0RJUiwgIi4uIiwgIi4uIiwgImZvbnRzIiwgZm9udEZpbGVuYW1lc1tpXSwg
bnVsbHB0cikpOwogICAgICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFkZEZpbGUoY29uZmlnLCBy
ZWludGVycHJldF9jYXN0PEZjQ2hhcjgqPihmb250RmlsZW5hbWUuZ2V0KCkpKSkKICAgICAgICAg
ICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9udEZpbGVuYW1lLmdl
dCgpKTsgCiAgICAgfQogCiAgICAgLy8gQSBmb250IHdpdGggbm8gdmFsaWQgRm9udGNvbmZpZyBl
bmNvZGluZyB0byB0ZXN0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NzQ1MgotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnRXaXRoTm9WYWxpZEVuY29kaW5nRmlsZW5hbWUo
Z19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJUiwgIkZvbnRXaXRoTm9WYWxpZEVuY29kaW5n
LmZvbiIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250V2l0aE5vVmFsaWRFbmNv
ZGluZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJGb250V2l0aE5v
VmFsaWRFbmNvZGluZy5mb24iLCBudWxscHRyKSk7CiAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRB
ZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxGY0NoYXI4Kj4oZm9udFdpdGhOb1ZhbGlk
RW5jb2RpbmdGaWxlbmFtZS5nZXQoKSkpKQogICAgICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9h
ZCBmb250IGF0ICVzISIsIGZvbnRXaXRoTm9WYWxpZEVuY29kaW5nRmlsZW5hbWUuZ2V0KCkpOyAK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
SW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3BwCmluZGV4IDFmNTM5YmEu
LmZlYmRhYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0luamVjdGVkQnVuZGxlVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZVV0aWxpdGllcy5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVV0aWxpdGllcy5oIgogCiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R2xpYlV0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTQzLDkgKzQzLDkgQEAgQ1N0
cmluZyB0b3BMZXZlbFBhdGgoKQogICAgIC8vIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB3
YXNuJ3QgcHJvdmlkZWQgdGhlbiBhc3N1bWUgd2Ugd2VyZSBidWlsdCBpbnRvCiAgICAgLy8gV2Vi
S2l0QnVpbGQvRGVidWcgb3IgV2ViS2l0QnVpbGQvUmVsZWFzZS4gT2J2aW91c2x5IHRoaXMgd2ls
bCBmYWlsIGlmIHRoZSBidWlsZAogICAgIC8vIGRpcmVjdG9yeSBpcyBub24tc3RhbmRhcmQsIGJ1
dCB3ZSBjYW4ndCBkbyBtdWNoIG1vcmUgYWJvdXQgdGhpcy4KLSAgICBHT3duUHRyPGNoYXI+IHBh
cmVudFBhdGgoZ19wYXRoX2dldF9kaXJuYW1lKGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpLmRh
dGEoKSkpOwotICAgIEdPd25QdHI8Y2hhcj4gbGF5b3V0VGVzdHNQYXRoKGdfYnVpbGRfZmlsZW5h
bWUocGFyZW50UGF0aC5nZXQoKSwgIi4uIiwgIi4uIiwgIi4uIiwgTlVMTCkpOwotICAgIEdPd25Q
dHI8Y2hhcj4gYWJzb2x1dGVUb3BMZXZlbFBhdGgocmVhbHBhdGgobGF5b3V0VGVzdHNQYXRoLmdl
dCgpLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXJlbnRQYXRoKGdfcGF0aF9nZXRfZGly
bmFtZShnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGxheW91dFRlc3RzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHBhcmVudFBhdGguZ2V0KCks
ICIuLiIsICIuLiIsICIuLiIsIG51bGxwdHIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGFic29s
dXRlVG9wTGV2ZWxQYXRoKHJlYWxwYXRoKGxheW91dFRlc3RzUGF0aC5nZXQoKSwgMCkpOwogICAg
IHJldHVybiBhYnNvbHV0ZVRvcExldmVsUGF0aC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcAppbmRleCBkZjQwNDNhLi4yNTQzNzQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
IAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTY2LDE1ICs2NiwxNSBAQCB2b2lkIFRlc3RSdW5uZXI6
OmluaXRpYWxpemVXYWl0VG9EdW1wV2F0Y2hkb2dUaW1lcklmTmVlZGVkKCkKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTU3RyaW5nUmVm
IHVybCkKIHsKICAgICBzaXplX3QgdXJsU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZSh1cmwpOwotICAgIEdPd25QdHI8Z2NoYXI+IHVybFN0cmluZyhzdGF0aWNfY2FzdDxn
Y2hhcio+KGdfbWFsbG9jKHVybFNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3Ry
aW5nKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2ModXJsU2l6ZSkpKTsKICAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKHVybCwgdXJsU3RyaW5nLmdldCgpLCB1cmxTaXplKTsKIAogICAgIGlm
ICghZ19zdHJfaGFzX3ByZWZpeCh1cmxTdHJpbmcuZ2V0KCksICJmaWxlOi8vL3RtcC9MYXlvdXRU
ZXN0cy8iKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7CiAKICAgICBjb25z
dCBnY2hhciogbGF5b3V0VGVzdHNTdWZmaXggPSB1cmxTdHJpbmcuZ2V0KCkgKyBzdHJsZW4oImZp
bGU6Ly8vdG1wLyIpOwotICAgIEdPd25QdHI8Z2NoYXI+IHRlc3RQYXRoKGdfYnVpbGRfZmlsZW5h
bWUoV1RSOjp0b3BMZXZlbFBhdGgoKS5kYXRhKCksIGxheW91dFRlc3RzU3VmZml4LCBOVUxMKSk7
Ci0gICAgR093blB0cjxnY2hhcj4gdGVzdFVSSShnX2ZpbGVuYW1lX3RvX3VyaSh0ZXN0UGF0aC5n
ZXQoKSwgMCwgMCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RQYXRoKGdfYnVpbGRfZmls
ZW5hbWUoV1RSOjp0b3BMZXZlbFBhdGgoKS5kYXRhKCksIGxheW91dFRlc3RzU3VmZml4LCBudWxs
cHRyKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVzdFVSSShnX2ZpbGVuYW1lX3RvX3VyaSh0
ZXN0UGF0aC5nZXQoKSwgMCwgMCkpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyh0ZXN0VVJJLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGUyNDA1NDUuLmQ4ZmI5ZjcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV1RSIHsKQEAgLTg4LDEzICs4OCwxMyBAQCBzdGF0aWMgY2hhciogZ2V0RW52
aXJvbm1lbnRWYXJpYWJsZUFzVVRGOFN0cmluZyhjb25zdCBjaGFyKiB2YXJpYWJsZU5hbWUpCiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBhdGgoKQogewot
ICAgIEdPd25QdHI8Y2hhcj4gdXRmOEJ1bmRsZVBhdGgoZ2V0RW52aXJvbm1lbnRWYXJpYWJsZUFz
VVRGOFN0cmluZygiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIikpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gdXRmOEJ1bmRsZVBhdGgoZ2V0RW52aXJvbm1lbnRWYXJpYWJsZUFz
VVRGOFN0cmluZygiVEVTVF9SVU5ORVJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIikpOwogICAg
IG1faW5qZWN0ZWRCdW5kbGVQYXRoLmFkb3B0KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHV0ZjhCdW5kbGVQYXRoLmdldCgpKSk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRp
YWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHRlc3RQbHVn
aW5QYXRoKGdldEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoIlRFU1RfUlVOTkVSX1RF
U1RfUExVR0lOX1BBVEgiKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXN0UGx1Z2luUGF0aChn
ZXRFbnZpcm9ubWVudFZhcmlhYmxlQXNVVEY4U3RyaW5nKCJURVNUX1JVTk5FUl9URVNUX1BMVUdJ
Tl9QQVRIIikpOwogICAgIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5hZG9wdChXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh0ZXN0UGx1Z2luUGF0aC5nZXQoKSkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221876</attachid>
            <date>2014-01-22 11:01:17 -0800</date>
            <delta_ts>2014-01-22 17:28:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk-g-unique-ptr3.diff</filename>
            <type>text/plain</type>
            <size>280517</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMmE3YjFmLi43ZmZiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1
IEBACisyMDE0LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR0xJQl0gVXNlIEdVbmlxdWVQdHIgaW5zdGVhZCBvZiBHT3duUHRyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHVW5pcXVlUHRy
IGlzIGEgdGVtcGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRyIHdpdGggYSBjdXN0b20KKyAg
ICAgICAgZGVsZXRlciB0aGF0IHJlcGxhY2VzIEdPd25QdHIuIEdPd25QdHIgaXMgc3RpbGwgdXNl
ZCBmb3IgdGhlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBvdXRwdXQgcG9pbnRlciBpcyBuZWVk
ZWQsIGJ1dCBpdCB3aWxsIGFsc28gYmUgcmVwbGFjZWQgc29vbi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwOgorICAgICAgICAo
Z2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAgICAgIChhY2Nlc3Np
YmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKHRleHRFeHRlbnRzKToKKyAgICAgICAgKHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcik6CisgICAgICAgIChudW1iZXJPZlJlcGxhY2VkRWxl
bWVudHNCZWZvcmVPZmZzZXQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAod2ViS2l0V2ViQXVkaW9TcmNDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRX
ZWJBdWRpb1NyY0xvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKHdlYktpdE1lZGlhU3JjQWRkU3JjKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50Ojp3YXNCbG9ja2VkKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5n
Q2xpZW50OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRoZW1l
SWNvbkZpbGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjppdGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVmVjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ29udGV4dE1l
bnVJdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBsYXRmb3JtTWVudUl0ZW1E
ZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9G
aWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVuYW1lRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNoYXJlZFJlc291cmNlc1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
ZGlyZWN0b3J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
R093blB0ckd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0dPd25QdHJH
dGsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR1VuaXF1ZVB0ckd0ay5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZHNHdGs6OkdhbWVwYWRzR3RrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvR3RrQ2xpY2tDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okd0a0NsaWNrQ291bnRl
cjo6c2hvdWxkUHJvY2Vzc0J1dHRvbkV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3Rr
SW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3RrSW5wdXRNZXRob2RG
aWx0ZXI6OnNlbmRDb21wb3NpdGlvbkFuZFByZWVkaXRXaXRoRmFrZUtleUV2ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
dGtQb3B1cE1lbnU6OnBvcFVwKToKKyAgICAgICAgKFdlYkNvcmU6Okd0a1BvcHVwTWVudTo6dHlw
ZUFoZWFkRmluZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEhlbHBlcjo6Z2V0Q2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Qb3B1cE1lbnVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51R3RrOjpjcmVh
dGVHdGtBY3Rpb25Gb3JNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVHdGs6
OnNob3cpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbldpZGdl
dC5jcHA6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNhdGlvbldpZGdldEluaXRpYWxpemUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViQ29yZTo6
Y29va2llc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UmF3Q29va2llcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZh
aWxpbmdVUkkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZU1l
bWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVz
c2FnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VT
b3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNvdXBVUklUb0tVUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNsZWFy
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFu
c2ZlclBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc1Bs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGx1Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6CisKIDIwMTQtMDEtMjIgIFJvYmVydCBTaXBr
YSAgPHNpcGthQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbY3VybF0gSW1wcm92ZSBkZXRl
Y3RpbmcgYW5kIGhhbmRsaW5nIG9mIFNTTCBjbGllbnQgY2VydGlmaWNhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDllMmM5OGUuLmM4ZTc3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNjI0NCwxMCArNjI0NCw5IEBAIHBsYXRmb3JtZ3RrX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSWNvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXZlbnRMb29wR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR093blB0ckd0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3du
UHRyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0dVbmlxdWVQdHIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtDbGlja0NvdW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lu
cHV0TWV0aG9kRmlsdGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDAxNDhi
MzYuLmRmZTM4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xOTYsNyArMTk2LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwCiAgICAg
cGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCi0gICAgcGxhdGZvcm0vZ3RrL0dPd25QdHJH
dGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0dSZWZQdHJHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3Rr
L0d0a0NsaWNrQ291bnRlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxw
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9i
amVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2Jq
ZWN0Q2FjaGVBdGsuY3BwCmluZGV4IDYxNTUyZmUuLjIxOTFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKaW5kZXggNDhmNmEyNC4uODQyMmQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKICNpbmNs
dWRlICJodG1sZWRpdGluZy5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg3LDE4ICs4NywxOCBAQCBz
dGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KGNvbnN0IEFjY2Vzc2liaWxpdAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9ICZyZW5kZXJl
ci0+c3R5bGUoKTsKIAogICAgIEF0a0F0dHJpYnV0ZVNldCogcmVzdWx0ID0gMDsKLSAgICBHT3du
UHRyPGdjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIHN0eWxlLT5mb250U2l6ZSgp
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYnVmZmVyKGdfc3RyZHVwX3ByaW50ZigiJWkiLCBz
dHlsZS0+Zm9udFNpemUoKSkpOwogICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJl
c3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfU0laRSksIGJ1
ZmZlci5nZXQoKSk7CiAKICAgICBDb2xvciBiZ0NvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgaWYgKGJnQ29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIs
IGJnQ29sb3IucmVkKCksIGJnQ29sb3IuZ3JlZW4oKSwgYmdDb2xvci5ibHVlKCkpKTsKKyAgICAg
ICAgYnVmZmVyLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBiZ0NvbG9yLnJlZCgp
LCBiZ0NvbG9yLmdyZWVuKCksIGJnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFk
ZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFU
S19URVhUX0FUVFJfQkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIENvbG9y
IGZnQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
OwogICAgIGlmIChmZ0NvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBidWZmZXIuc2V0KGdfc3Ry
ZHVwX3ByaW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJlZCgpLCBmZ0NvbG9yLmdyZWVuKCksIGZn
Q29sb3IuYmx1ZSgpKSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVp
LCVpLCVpIiwgZmdDb2xvci5yZWQoKSwgZmdDb2xvci5ncmVlbigpLCBmZ0NvbG9yLmJsdWUoKSkp
OwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0
X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX0ZHX0NPTE9SKSwgYnVmZmVyLmdldCgp
KTsKICAgICB9CiAKQEAgLTEyMCwxMyArMTIwLDEzIEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVTZXQq
IGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGl0
CiAgICAgfQogCiAgICAgaWYgKGluY2x1ZGVSaXNlKSB7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19z
dHJkdXBfcHJpbnRmKCIlaSIsIGJhc2VsaW5lUG9zaXRpb24pKTsKKyAgICAgICAgYnVmZmVyLnJl
c2V0KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBiYXNlbGluZVBvc2l0aW9uKSk7CiAgICAgICAgIHJl
c3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dl
dF9uYW1lKEFUS19URVhUX0FUVFJfUklTRSksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCiAgICAg
aWYgKCFzdHlsZS0+dGV4dEluZGVudCgpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgaW50IGlu
ZGVudGF0aW9uID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgb2JqZWN0LT5z
aXplKCkud2lkdGgoKSwgJnJlbmRlcmVyLT52aWV3KCkpOwotICAgICAgICBidWZmZXIuc2V0KGdf
c3RyZHVwX3ByaW50ZigiJWkiLCBpbmRlbnRhdGlvbikpOworICAgICAgICBidWZmZXIucmVzZXQo
Z19zdHJkdXBfcHJpbnRmKCIlaSIsIGluZGVudGF0aW9uKSk7CiAgICAgICAgIHJlc3VsdCA9IGFk
ZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFU
S19URVhUX0FUVFJfSU5ERU5UKSwgYnVmZmVyLmdldCgpKTsKICAgICB9CiAKQEAgLTE2Niw3ICsx
NjYsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1dGVTZXRGb3JBY2Nlc3Np
YmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdAogICAgICAgICBmb250V2VpZ2h0ID0gOTAw
OwogICAgIH0KICAgICBpZiAoZm9udFdlaWdodCA+IDApIHsKLSAgICAgICAgYnVmZmVyLnNldChn
X3N0cmR1cF9wcmludGYoIiVpIiwgZm9udFdlaWdodCkpOworICAgICAgICBidWZmZXIucmVzZXQo
Z19zdHJkdXBfcHJpbnRmKCIlaSIsIGZvbnRXZWlnaHQpKTsKICAgICAgICAgcmVzdWx0ID0gYWRk
VG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRL
X1RFWFRfQVRUUl9XRUlHSFQpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIApAQCAtMjYxLDcgKzI2
MSw3IEBAIHN0YXRpYyBndWludCBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamVjdCkKICAgICAvLyB3ZWxsIGtub3duIEFQSSB0byBhbHdheXMg
Z2V0IHRoZSB0ZXh0IGluIGEgY29uc2lzdGVudCB3YXkKICAgICBBdGtPYmplY3QqIGF0a09iaiA9
IEFUS19PQkpFQ1Qob2JqZWN0LT53cmFwcGVyKCkpOwogICAgIGlmIChBVEtfSVNfVEVYVChhdGtP
YmopKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQod2Via2l0QWNjZXNzaWJsZVRleHRH
ZXRUZXh0KEFUS19URVhUKGF0a09iaiksIDAsIC0xKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHRleHQod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KEFUS19URVhUKGF0a09iaiksIDAs
IC0xKSk7CiAgICAgICAgIHJldHVybiBnX3V0Zjhfc3RybGVuKHRleHQuZ2V0KCksIC0xKTsKICAg
ICB9CiAKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRSdW5B
dHRyaWJ1dGVzRnJvbUFjY2VzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaQogCiBzdGF0
aWMgSW50UmVjdCB0ZXh0RXh0ZW50cyhBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0T2Zmc2V0LCBn
aW50IGxlbmd0aCwgQXRrQ29vcmRUeXBlIGNvb3JkcykKIHsKLSAgICBHT3duUHRyPGNoYXI+IHRl
eHRDb250ZW50KHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCBzdGFydE9mZnNldCwg
LTEpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRleHRDb250ZW50KHdlYmtpdEFjY2Vzc2libGVU
ZXh0R2V0VGV4dCh0ZXh0LCBzdGFydE9mZnNldCwgLTEpKTsKICAgICBnaW50IHRleHRMZW5ndGgg
PSBnX3V0Zjhfc3RybGVuKHRleHRDb250ZW50LmdldCgpLCAtMSk7CiAKICAgICAvLyBUaGUgZmly
c3QgY2FzZSAoZW5kT2Zmc2V0IG9mIC0xKSBzaG91bGQgd29yaywgYnV0IHNlZW1zIGJyb2tlbiBm
b3IgYWxsIEd0aysgYXBwcy4KQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0aWMgY2hhciogd2Via2l0
QWNjZXNzaWJsZVRleHRHZXRDaGFyKEF0a1RleHQqIHRleHQsIGludCBvZmZzZXQsIEdldFRleHRS
ZWxhdAogICAgIGVsc2UgaWYgKHRleHRQb3NpdGlvbiA9PSBHZXRUZXh0UG9zaXRpb25BZnRlcikK
ICAgICAgICAgYWN0dWFsT2Zmc2V0Kys7CiAKLSAgICBHT3duUHRyPGNoYXI+IHRleHREYXRhKHdl
YmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAwLCAtMSkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gdGV4dERhdGEod2Via2l0QWNjZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIDAsIC0xKSk7
CiAgICAgaW50IHRleHRMZW5ndGggPSBnX3V0Zjhfc3RybGVuKHRleHREYXRhLmdldCgpLCAtMSk7
CiAKICAgICAqc3RhcnRPZmZzZXQgPSBzdGQ6Om1heCgwLCBhY3R1YWxPZmZzZXQpOwpAQCAtNjM3
LDcgKzYzNyw3IEBAIHN0YXRpYyBWaXNpYmxlU2VsZWN0aW9uIHdvcmRBdFBvc2l0aW9uRm9yQXRr
Qm91bmRhcnkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCoKIAogc3RhdGljIGludCBudW1iZXJP
ZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZzZXQoQXRrVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zm
c2V0KQogewotICAgIEdPd25QdHI8Y2hhcj4gdGV4dEZvck9iamVjdCh3ZWJraXRBY2Nlc3NpYmxl
VGV4dEdldFRleHQodGV4dCwgMCwgb2Zmc2V0KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXh0
Rm9yT2JqZWN0KHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAwLCBvZmZzZXQpKTsK
ICAgICBTdHJpbmcgdGV4dEJlZm9yZU9mZnNldCA9IFN0cmluZzo6ZnJvbVVURjgodGV4dEZvck9i
amVjdC5nZXQoKSk7CiAKICAgICBpbnQgY291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDZkNWNmNzQuLjA0YTA2ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTcxLDEw
ICs3MSw2IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KICNpbmNs
dWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAKLSNpZiBQTEFURk9STShHVEspCi0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXVEY7
CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaAppbmRleCAxMDZjODMwLi44YzU5NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkK
LSNpbmNsdWRlICJHT3duUHRyU291cC5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgog
CiAjaWYgVVNFKFNPVVApCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFNvdXBCdWZmZXIqKTsK
LSAgICBHT3duUHRyPFNvdXBCdWZmZXI+IG1fc291cEJ1ZmZlcjsKKyAgICBHVW5pcXVlUHRyPFNv
dXBCdWZmZXI+IG1fc291cEJ1ZmZlcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYjJiYjg4Mi4uZmY2NzJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0yNCwx
MSArMjQsMTEgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9JT0Nh
bGxiYWNrLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkdS
ZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNs
dWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlv
U3JjQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIC8vIEZvciBlYWNoIGNoYW5uZWwg
b2YgdGhlIGJ1cyBjcmVhdGUgYSBuZXcgdXBzdHJlYW0gYnJhbmNoIGZvciBpbnRlcmxlYXZlLCBs
aWtlOgogICAgIC8vIHF1ZXVlICEgY2Fwc2ZpbHRlciAhIGF1ZGlvY29udmVydC4gd2hpY2ggaXMg
cGx1Z2dlZCB0byBhIG5ldyBpbnRlcmxlYXZlIHJlcXVlc3Qgc2lua3BhZC4KICAgICBmb3IgKHVu
c2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IHByaXYtPmJ1cy0+bnVtYmVy
T2ZDaGFubmVscygpOyBjaGFubmVsSW5kZXgrKykgewotICAgICAgICBHT3duUHRyPGdjaGFyPiBx
dWV1ZU5hbWUoZ19zdHJkdXBfcHJpbnRmKCJ3ZWJhdWRpb1F1ZXVlJXUiLCBjaGFubmVsSW5kZXgp
KTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcXVldWVOYW1lKGdfc3RyZHVwX3ByaW50Zigi
d2ViYXVkaW9RdWV1ZSV1IiwgY2hhbm5lbEluZGV4KSk7CiAgICAgICAgIEdzdEVsZW1lbnQqIHF1
ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJxdWV1ZSIsIHF1ZXVlTmFtZS5nZXQoKSk7
CiAgICAgICAgIEdzdEVsZW1lbnQqIGNhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoImNhcHNmaWx0ZXIiLCAwKTsKICAgICAgICAgR3N0RWxlbWVudCogYXVkaW9jb252ZXJ0ID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb2NvbnZlcnQiLCAwKTsKQEAgLTM1Niw4ICsz
NTYsOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJBdWRpb1NyY0xvb3AoV2ViS2l0V2ViQXVkaW9T
cmMqIHNyYykKICAgICAgICAgaWYgKHByaXYtPm5ld1N0cmVhbUV2ZW50UGVuZGluZykgewogICAg
ICAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBxdWV1ZSA9IGFkb3B0R1JlZihnc3RfcGFkX2dl
dF9wYXJlbnRfZWxlbWVudChwYWQpKTsKICAgICAgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5r
UGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHF1ZXVlLmdldCgpLCAi
c2luayIpKTsKLSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IHF1ZXVlTmFtZShnc3RfZWxlbWVu
dF9nZXRfbmFtZShxdWV1ZS5nZXQoKSkpOwotICAgICAgICAgICAgR093blB0cjxnY2hhcj4gc3Ry
ZWFtSWQoZ19zdHJkdXBfcHJpbnRmKCJ3ZWJhdWRpby8lcyIsIHF1ZXVlTmFtZS5nZXQoKSkpOwor
ICAgICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcXVldWVOYW1lKGdzdF9lbGVtZW50X2dldF9u
YW1lKHF1ZXVlLmdldCgpKSk7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHJlYW1J
ZChnX3N0cmR1cF9wcmludGYoIndlYmF1ZGlvLyVzIiwgcXVldWVOYW1lLmdldCgpKSk7CiAgICAg
ICAgICAgICBHc3RFdmVudCogc3RyZWFtU3RhcnRFdmVudCA9IGdzdF9ldmVudF9uZXdfc3RyZWFt
X3N0YXJ0KHN0cmVhbUlkLmdldCgpKTsKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyLCAwKQog
ICAgICAgICAgICAgZ3N0X2V2ZW50X3NldF9ncm91cF9pZChzdHJlYW1TdGFydEV2ZW50LCBncm91
cElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRp
b0J1c0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNH
dGsuY3BwCmluZGV4IDk2YjI3NTMuLjJhZGVlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcApAQCAtMjQsMjMgKzI0LDIxIEBACiAK
ICNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgotCiAjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlx
dWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUGFzc1JlZlB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCiB7Ci0gICAgR093blB0cjxn
Y2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy53YXYiLCBuYW1lKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy53YXYiLCBuYW1lKSk7
CiAgICAgY29uc3QgY2hhciogZW52aXJvbm1lbnRQYXRoID0gZ2V0ZW52KCJBVURJT19SRVNPVVJD
RVNfUEFUSCIpOwotICAgIEdPd25QdHI8Z2NoYXI+IGFic29sdXRlRmlsZW5hbWU7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gYWJzb2x1dGVGaWxlbmFtZTsKICAgICBpZiAoZW52aXJvbm1lbnRQYXRo
KQotICAgICAgICBhYnNvbHV0ZUZpbGVuYW1lLnNldChnX2J1aWxkX2ZpbGVuYW1lKGVudmlyb25t
ZW50UGF0aCwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICAgICAgYWJzb2x1dGVGaWxlbmFt
ZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGVudmlyb25tZW50UGF0aCwgZmlsZW5hbWUuZ2V0KCks
IE5VTEwpKTsKICAgICBlbHNlCi0gICAgICAgIGFic29sdXRlRmlsZW5hbWUuc2V0KGdfYnVpbGRf
ZmlsZW5hbWUoc2hhcmVkUmVzb3VyY2VzUGF0aCgpLmRhdGEoKSwgInJlc291cmNlcyIsICJhdWRp
byIsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgICAgIGFic29sdXRlRmlsZW5hbWUucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShzaGFyZWRSZXNvdXJjZXNQYXRoKCkuZGF0YSgpLCAicmVzb3Vy
Y2VzIiwgImF1ZGlvIiwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKICAgICByZXR1cm4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShhYnNvbHV0ZUZpbGVuYW1lLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlb2NsdWUvR2Vv
bG9jYXRpb25Qcm92aWRlckdlb2NsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vv
Y2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAKaW5kZXggZTUzNzYwNC4uYjJhNTcw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlv
blByb3ZpZGVyR2VvY2x1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VvY2x1
ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZS5jcHAKQEAgLTI4LDggKzI4LDYgQEAKIAogI2lm
IEVOQUJMRShHRU9MT0NBVElPTikKIAotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyB2b2lkIGdldFBvc2l0aW9uQ2Fs
bGJhY2soR2VvY2x1ZVBvc2l0aW9uKiBwb3NpdGlvbiwgR2VvY2x1ZVBvc2l0aW9uRmllbGRzIGZp
ZWxkcywgaW50IHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWx0aXR1ZGUsIEdlb2NsdWVBY2N1cmFjeSogYWNjdXJhY3ksIEdFcnJvciogZXJyb3Is
IEdlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlKiBwcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdT
dHJlYW1lckNhaXJvLmNwcAppbmRleCAwOTA5MjA3Li5iMjFhY2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAKICNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+Ci0KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3ZDVjM2Y5Li5j
NGEwZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1
Z2lucy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTE5MCw3ICsxOTEs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0QXVkaW9TdHJlYW1Qcm9w
ZXJ0aWVzKEdPYmplY3QqIG9iamVjdCkKICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdz
dF9zdHJ1Y3R1cmVfbmV3KCJzdHJlYW0tcHJvcGVydGllcyIsICJtZWRpYS5yb2xlIiwgR19UWVBF
X1NUUklORywgcm9sZSwgTlVMTCk7CiAgICAgZ19vYmplY3Rfc2V0KG9iamVjdCwgInN0cmVhbS1w
cm9wZXJ0aWVzIiwgc3RydWN0dXJlLCBOVUxMKTsKICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUoc3Ry
dWN0dXJlKTsKLSAgICBHT3duUHRyPGdjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRf
bmFtZShHU1RfRUxFTUVOVChvYmplY3QpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZWxlbWVu
dE5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25hbWUoR1NUX0VMRU1FTlQob2JqZWN0KSkpOwogICAgIExP
R19NRURJQV9NRVNTQUdFKCJTZXQgbWVkaWEucm9sZSBhcyAlcyBhdCAlcyIsIHJvbGUsIGVsZW1l
bnROYW1lLmdldCgpKTsKIH0KIApAQCAtMTAzNyw3ICsxMDM4LDcgQEAgZ2Jvb2xlYW4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3JlcXVlc3Rfc3RhdGUobWVzc2FnZSwgJnJlcXVl
c3RlZFN0YXRlKTsKICAgICAgICAgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlKG1fcGxheUJpbi5nZXQo
KSwgJmN1cnJlbnRTdGF0ZSwgTlVMTCwgMjUwKTsKICAgICAgICAgaWYgKHJlcXVlc3RlZFN0YXRl
IDwgY3VycmVudFN0YXRlKSB7Ci0gICAgICAgICAgICBHT3duUHRyPGdjaGFyPiBlbGVtZW50TmFt
ZShnc3RfZWxlbWVudF9nZXRfbmFtZShHU1RfRUxFTUVOVChtZXNzYWdlKSkpOworICAgICAgICAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZWxlbWVudE5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25hbWUoR1NU
X0VMRU1FTlQobWVzc2FnZSkpKTsKICAgICAgICAgICAgIElORk9fTUVESUFfTUVTU0FHRSgiRWxl
bWVudCAlcyByZXF1ZXN0ZWQgc3RhdGUgY2hhbmdlIHRvICVzIiwgZWxlbWVudE5hbWUuZ2V0KCks
CiAgICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUocmVxdWVzdGVkU3Rh
dGUpKTsKICAgICAgICAgICAgIG1fcmVxdWVzdGVkU3RhdGUgPSByZXF1ZXN0ZWRTdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDU1ZGNl
OTUuLjgzYjEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+
CiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1
Z2lucy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB0
eXBlZGVmIHN0cnVjdCBfU291cmNlIHsKQEAgLTE0MSw3ICsxNDEsNiBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYVNyY0FkZFNyYyhXZWJLaXRNZWRpYVNyYyogc3JjLCBHc3RFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIEdzdFBhZCogZ2hvc3RQYWQ7CiAgICAgV2ViS2l0TWVkaWFTcmNQcml2YXRl
KiBwcml2ID0gc3JjLT5wcml2OwotICAgIEdPd25QdHI8Z2NoYXI+IG5hbWU7CiAKICAgICBpZiAo
IWdzdF9iaW5fYWRkKEdTVF9CSU4oc3JjKSwgZWxlbWVudCkpIHsKICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJTcmMgZWxlbWVudCBub3QgYWRkZWQiKTsKQEAgLTE1NCw3ICsxNTMsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0FkZFNyYyhXZWJLaXRNZWRpYVNyYyogc3JjLCBH
c3RFbGVtZW50KiBlbGVtZW50KQogICAgIH0KIAogICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVf
d2l0aF9wYXJlbnQoZWxlbWVudCk7Ci0gICAgbmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJzcmNf
JXUiLCBwcml2LT5uYlNvdXJjZSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5hbWUoZ19zdHJk
dXBfcHJpbnRmKCJzcmNfJXUiLCBwcml2LT5uYlNvdXJjZSkpOwogICAgIGdob3N0UGFkID0gV2Vi
Q29yZTo6d2Via2l0R3N0R2hvc3RQYWRGcm9tU3RhdGljVGVtcGxhdGUoJnNyY1RlbXBsYXRlLCBu
YW1lLmdldCgpLCB0YXJnZXRzcmMuZ2V0KCkpOwogICAgIGdzdF9wYWRfc2V0X2FjdGl2ZShnaG9z
dFBhZCwgVFJVRSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKaW5kZXggM2FlZTQ4Yy4uNTI0ZDQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRlIDxnc3QvcGJ1dGls
cy9taXNzaW5nLXBsdWdpbnMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HTXV0ZXhMb2NrZXIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTAyLDkgKzUwMiw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKICAgICAgICAgcmVxdWVz
dC5zZXRIVFRQVXNlckFnZW50KCJRdWlja3RpbWUvNy42LjYiKTsKIAogICAgIGlmIChwcml2LT5y
ZXF1ZXN0ZWRPZmZzZXQpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdmFsOwotCi0gICAgICAg
IHZhbC5zZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwg
cHJpdi0+cmVxdWVzdGVkT2Zmc2V0KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHZhbChn
X3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2LT5yZXF1
ZXN0ZWRPZmZzZXQpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlJhbmdl
IiwgdmFsLmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+b2Zmc2V0ID0gcHJpdi0+cmVxdWVzdGVk
T2Zmc2V0OwpAQCAtMTE1MCwxMiArMTE0OCwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvcgog
dm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6d2FzQmxvY2tlZChSZXNvdXJjZUhh
bmRsZSopCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5n
ZXQoKSk7Ci0gICAgR093blB0cjxnY2hhcj4gdXJpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVy
aTsKIAogICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiUmVxdWVzdCB3YXMgYmxvY2tlZCIpOwog
CiAgICAgR011dGV4TG9ja2VyIGxvY2tlcihHU1RfT0JKRUNUX0dFVF9MT0NLKHNyYykpOwotICAg
IHVyaS5zZXQoZ19zdHJkdXAoc3JjLT5wcml2LT51cmkpKTsKKyAgICB1cmkucmVzZXQoZ19zdHJk
dXAoc3JjLT5wcml2LT51cmkpKTsKICAgICBsb2NrZXIudW5sb2NrKCk7CiAKICAgICBHU1RfRUxF
TUVOVF9FUlJPUihzcmMsIFJFU09VUkNFLCBPUEVOX1JFQUQsICgiQWNjZXNzIHRvIFwiJXNcIiB3
YXMgYmxvY2tlZCIsIHVyaS5nZXQoKSksICgwKSk7CkBAIC0xMTY0LDEyICsxMTYyLDEyIEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6Ondhc0Jsb2NrZWQoUmVzb3VyY2VIYW5k
bGUqKQogdm9pZCBSZXNvdXJjZUhhbmRsZVN0cmVhbWluZ0NsaWVudDo6Y2Fubm90U2hvd1VSTChS
ZXNvdXJjZUhhbmRsZSopCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhtX3NyYy5nZXQoKSk7Ci0gICAgR093blB0cjxnY2hhcj4gdXJpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHVyaTsKIAogICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiQ2Fubm90IHNob3cgVVJM
Iik7CiAKICAgICBHTXV0ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7
Ci0gICAgdXJpLnNldChnX3N0cmR1cChzcmMtPnByaXYtPnVyaSkpOworICAgIHVyaS5yZXNldChn
X3N0cmR1cChzcmMtPnByaXYtPnVyaSkpOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIEdT
VF9FTEVNRU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwgKCJDYW4ndCBzaG93IFwi
JXNcIiIsIHVyaS5nZXQoKSksICgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAppbmRleCA5YjY5M2UzLi43NjZm
NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1h
Z2VCdWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTIxLDExICsyMSwxMSBAQAogCiAjaW5jbHVkZSAiQ2Fp
cm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8Z3Rr
L2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02NSwxMiArNjUsMTIgQEAgc3RhdGljIGJvb2wgZW5j
b2RlSW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdAogICAgIGlmICghcGl4YnVmKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBH
RXJyb3IqIGVycm9yID0gMDsKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKHR5
cGUgPT0gImpwZWciICYmIHF1YWxpdHkgJiYgKnF1YWxpdHkgPj0gMC4wICYmICpxdWFsaXR5IDw9
IDEuMCkgewogICAgICAgICBTdHJpbmcgcXVhbGl0eVN0cmluZyA9IFN0cmluZzo6Zm9ybWF0KCIl
ZCIsIHN0YXRpY19jYXN0PGludD4oKnF1YWxpdHkgKiAxMDAuMCArIDAuNSkpOwotICAgICAgICBn
ZGtfcGl4YnVmX3NhdmVfdG9fYnVmZmVyKHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwg
JmJ1ZmZlclNpemUsIHR5cGUudXRmOCgpLmRhdGEoKSwgJmVycm9yLCAicXVhbGl0eSIsIHF1YWxp
dHlTdHJpbmcudXRmOCgpLmRhdGEoKSwgTlVMTCk7CisgICAgICAgIGdka19waXhidWZfc2F2ZV90
b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwgdHlw
ZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksICJxdWFsaXR5IiwgcXVhbGl0eVN0cmlu
Zy51dGY4KCkuZGF0YSgpLCBOVUxMKTsKICAgICB9IGVsc2UKLSAgICAgICAgZ2RrX3BpeGJ1Zl9z
YXZlX3RvX2J1ZmZlcihwaXhidWYuZ2V0KCksICZidWZmZXIub3V0UHRyKCksICZidWZmZXJTaXpl
LCB0eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvciwgTlVMTCk7CisgICAgICAgIGdka19waXhidWZf
c2F2ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6
ZSwgdHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3Iub3V0UHRyKCksIE5VTEwpOwogCiAgICAgcmV0
dXJuICFlcnJvcjsKIH0KQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28K
IHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
Rm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcigwKTsK
KyAgICBHT3duUHRyPGdjaGFyPiBidWZmZXI7CiAgICAgZ3NpemUgYnVmZmVyU2l6ZTsKICAgICBp
ZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1pbWVUeXBlLCBxdWFsaXR5
LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gImRhdGE6LCI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCA4
MGFiNjZmLi4yZTdjNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpbmNsdWRlICJCaXRt
YXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRy
R3RrLmgiCiAjaW5jbHVkZSAiR2RrQ2Fpcm9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHT3duUHRy
R3RrLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxndGsv
Z3RrLmg+CkBAIC01NCw3ICs1Niw3IEBAIHN0YXRpYyBDU3RyaW5nIGdldFRoZW1lSWNvbkZpbGVO
YW1lKGNvbnN0IGNoYXIqIG5hbWUsIGludCBzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19JQ09OX0xPT0tV
UF9OT19TVkcpOwogICAgIGlmIChpY29uSW5mbykgewotICAgICAgICBHT3duUHRyPEd0a0ljb25J
bmZvPiBpbmZvKGljb25JbmZvKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxHdGtJY29uSW5mbz4gaW5m
byhpY29uSW5mbyk7CiAgICAgICAgIHJldHVybiBDU3RyaW5nKGd0a19pY29uX2luZm9fZ2V0X2Zp
bGVuYW1lKGluZm8uZ2V0KCkpKTsKICAgICB9CiAKQEAgLTkzLDggKzk1LDggQEAgUGFzc1JlZlB0
cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUpCiAg
ICAgaWYgKCFzdHJjbXAoIm1pc3NpbmdJbWFnZSIsIG5hbWUpKQogICAgICAgICBmaWxlTmFtZSA9
IGdldFRoZW1lSWNvbkZpbGVOYW1lKEdUS19TVE9DS19NSVNTSU5HX0lNQUdFLCAxNik7CiAgICAg
aWYgKGZpbGVOYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGltYWdlTmFt
ZShnX3N0cmR1cF9wcmludGYoIiVzLnBuZyIsIG5hbWUpKTsKLSAgICAgICAgR093blB0cjxnY2hh
cj4gZ2xpYkZpbGVOYW1lKGdldFBhdGhUb0ltYWdlUmVzb3VyY2UoaW1hZ2VOYW1lLmdldCgpKSk7
CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGltYWdlTmFtZShnX3N0cmR1cF9wcmludGYoIiVz
LnBuZyIsIG5hbWUpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZ2xpYkZpbGVOYW1lKGdl
dFBhdGhUb0ltYWdlUmVzb3VyY2UoaW1hZ2VOYW1lLmdldCgpKSk7CiAgICAgICAgIGZpbGVOYW1l
ID0gZ2xpYkZpbGVOYW1lLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Db250ZXh0TWVudUd0ay5jcHAKaW5kZXggOGMwMDJjNC4uOTZjZDI2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVHdGsuY3BwCkBAIC0yNCw4
ICsyNCw4IEBACiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC04Nyw3ICs4Nyw3IEBAIHVuc2lnbmVkIENvbnRleHRNZW51
OjppdGVtQ291bnQoKSBjb25zdAogewogICAgIEFTU0VSVChtX3BsYXRmb3JtRGVzY3JpcHRpb24p
OwogCi0gICAgR093blB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRy
ZW4oR1RLX0NPTlRBSU5FUihtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSk7CisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5F
UihtX3BsYXRmb3JtRGVzY3JpcHRpb24pKSk7CiAgICAgcmV0dXJuIGdfbGlzdF9sZW5ndGgoY2hp
bGRyZW4uZ2V0KCkpOwogfQogCkBAIC05NSw3ICs5NSw3IEBAIFZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+IGNvbnRleHRNZW51SXRlbVZlY3Rvcihjb25zdCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBt
ZW51CiB7CiAgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbWVudUl0ZW1WZWN0b3I7CiAKLSAg
ICBHT3duUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtf
Q09OVEFJTkVSKG1lbnUpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3RrX2Nv
bnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51KSkpOwogICAgIGludCBpdGVt
Q291bnQgPSBnX2xpc3RfbGVuZ3RoKGNoaWxkcmVuLmdldCgpKTsKICAgICBtZW51SXRlbVZlY3Rv
ci5yZXNlcnZlQ2FwYWNpdHkoaXRlbUNvdW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0NvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcAppbmRleCBkNzBiNWJlLi5iNmFkNjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVt
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVt
R3RrLmNwcApAQCAtMjUsOSArMjUsOSBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgog
CiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPGd0ay9ndGsu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2RlZmlu
ZSBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTiAid2Via2l0LWNvbnRleHQtbWVudSIKQEAgLTEy
NCw3ICsxMjQsNyBAQCBzdGF0aWMgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIGNyZWF0ZVBs
YXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbihDb250ZXh0TWVudQogICAgIGlmICh0eXBlID09IFNl
cGFyYXRvclR5cGUpCiAgICAgICAgIHJldHVybiBHVEtfTUVOVV9JVEVNKGd0a19zZXBhcmF0b3Jf
bWVudV9pdGVtX25ldygpKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gYWN0aW9uTmFtZShnX3N0cmR1
cF9wcmludGYoImNvbnRleHQtbWVudS1hY3Rpb24tJWQiLCBhY3Rpb24pKTsKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJkdXBfcHJpbnRmKCJjb250ZXh0LW1lbnUtYWN0aW9u
LSVkIiwgYWN0aW9uKSk7CiAgICAgR1JlZlB0cjxHdGtBY3Rpb24+IHBsYXRmb3JtQWN0aW9uOwog
CiAgICAgaWYgKHR5cGUgPT0gQ2hlY2thYmxlQWN0aW9uVHlwZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmluZGV4IDE3NzlkNTIuLjc3MTU1MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6
OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgICAgICBHT3duUHRy
PGdjaGFyPiBmaWxlbmFtZShnX2ZpbGVuYW1lX2Zyb21fdXJpKGxpbmUudXRmOCgpLmRhdGEoKSwg
MCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxl
bmFtZShnX2ZpbGVuYW1lX2Zyb21fdXJpKGxpbmUudXRmOCgpLmRhdGEoKSwgMCwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgICAgICAgICBpZiAoIWVycm9yICYmIGZpbGVuYW1lKQogICAgICAgICAg
ICAgICAgIG1fZmlsZW5hbWVzLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lLmdldCgp
KSk7CiAgICAgICAgIH0KQEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNl
dFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICBtYXJrdXAuYXBw
ZW5kKCI8YSBocmVmPVwiIik7CiAgICAgbWFya3VwLmFwcGVuZCh1cmwuc3RyaW5nKCkpOwogICAg
IG1hcmt1cC5hcHBlbmQoIlwiPiIpOwotICAgIEdPd25QdHI8Z2NoYXI+IGVzY2FwZWQoZ19tYXJr
dXBfZXNjYXBlX3RleHQoYWN0dWFsTGFiZWwudXRmOCgpLmRhdGEoKSwgLTEpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBlc2NhcGVkKGdfbWFya3VwX2VzY2FwZV90ZXh0KGFjdHVhbExhYmVsLnV0
ZjgoKS5kYXRhKCksIC0xKSk7CiAgICAgbWFya3VwLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGVz
Y2FwZWQuZ2V0KCkpKTsKICAgICBtYXJrdXAuYXBwZW5kKCI8L2E+Iik7CiAgICAgc2V0TWFya3Vw
KG1hcmt1cC50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxl
U3lzdGVtR3RrLmNwcAppbmRleCAyN2M0YWIwLi43ZmM0OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNDgsNyArNDksNyBAQCBTdHJpbmcgZmlsZW5hbWVUb1N0cmluZyhjb25zdCBjaGFyKiBm
aWxlbmFtZSkKICNpZiBPUyhXSU5ET1dTKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGZp
bGVuYW1lKTsKICNlbHNlCi0gICAgR093blB0cjxnY2hhcj4gZXNjYXBlZFN0cmluZyhnX3VyaV9l
c2NhcGVfc3RyaW5nKGZpbGVuYW1lLCAiLzoiLCBmYWxzZSkpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGVzY2FwZWRTdHJpbmcoZ191cmlfZXNjYXBlX3N0cmluZyhmaWxlbmFtZSwgIi86IiwgZmFs
c2UpKTsKICAgICByZXR1cm4gZXNjYXBlZFN0cmluZy5nZXQoKTsKICNlbmRpZgogfQpAQCAtNTgs
NyArNTksNyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgpCiAjaWYgT1MoV0lORE9XUykKICAgICByZXR1cm4gcGF0aC51dGY4KCk7CiAjZWxzZQot
ICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfdXJpX3VuZXNjYXBlX3N0cmluZyhwYXRoLnV0
ZjgoKS5kYXRhKCksIDApKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3VyaV91
bmVzY2FwZV9zdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpLCAwKSk7CiAgICAgcmV0dXJuIGZpbGVu
YW1lLmdldCgpOwogI2VuZGlmCiB9CkBAIC03MCw3ICs3MSw3IEBAIFN0cmluZyBmaWxlbmFtZUZv
ckRpc3BsYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0cmluZzsKICNlbHNl
CiAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdHJpbmcp
OwotICAgIEdPd25QdHI8Z2NoYXI+IGRpc3BsYXkoZ19maWxlbmFtZV90b191dGY4KGZpbGVuYW1l
LmRhdGEoKSwgMCwgMCwgMCwgMCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpc3BsYXkoZ19m
aWxlbmFtZV90b191dGY4KGZpbGVuYW1lLmRhdGEoKSwgMCwgMCwgMCwgMCkpOwogICAgIGlmICgh
ZGlzcGxheSkKICAgICAgICAgcmV0dXJuIHN0cmluZzsKIApAQCAtMTkwLDcgKzE5MSw3IEBAIFN0
cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkKICAgICAgICAgcmV0
dXJuIHBhdGhOYW1lOwogCiAgICAgQ1N0cmluZyB0bXBGaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoTmFtZSk7Ci0gICAgR093blB0cjxnY2hhcj4gYmFzZU5hbWUoZ19wYXRo
X2dldF9iYXNlbmFtZSh0bXBGaWxlbmFtZS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFy
PiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHRtcEZpbGVuYW1lLmRhdGEoKSkpOwogICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJhc2VOYW1lLmdldCgpKTsKIH0KIApAQCAtMjAxLDEx
ICsyMDIsMTEgQEAgQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBhdGgoKQogICAgICAgICBy
ZXR1cm4gcGF0aDsKIAogICAgIC8vIElmIHRoZSBhYm92ZSBmYWlscywgY2hlY2sgdGhlIFBBVEgg
ZW52IHZhcmlhYmxlLgotICAgIEdPd25QdHI8Y2hhcj4gY3VycmVudEV4ZVBhdGgoZ19maW5kX3By
b2dyYW1faW5fcGF0aChnX2dldF9wcmduYW1lKCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGN1
cnJlbnRFeGVQYXRoKGdfZmluZF9wcm9ncmFtX2luX3BhdGgoZ19nZXRfcHJnbmFtZSgpKSk7CiAg
ICAgaWYgKCFjdXJyZW50RXhlUGF0aC5nZXQoKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
IAotICAgIEdPd25QdHI8Y2hhcj4gZGlybmFtZShnX3BhdGhfZ2V0X2Rpcm5hbWUoY3VycmVudEV4
ZVBhdGguZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9k
aXJuYW1lKGN1cnJlbnRFeGVQYXRoLmdldCgpKSk7CiAgICAgcmV0dXJuIGRpcm5hbWUuZ2V0KCk7
CiB9CiAKQEAgLTIxOSwxMCArMjIwLDEwIEBAIENTdHJpbmcgc2hhcmVkUmVzb3VyY2VzUGF0aCgp
CiAgICAgSE1PRFVMRSBobW9kdWxlID0gMDsKICAgICBHZXRNb2R1bGVIYW5kbGVFeEEoR0VUX01P
RFVMRV9IQU5ETEVfRVhfRkxBR19GUk9NX0FERFJFU1MsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHNoYXJlZFJlc291cmNlc1BhdGgpLCAmaG1vZHVsZSk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBy
dW50aW1lRGlyKGdfd2luMzJfZ2V0X3BhY2thZ2VfaW5zdGFsbGF0aW9uX2RpcmVjdG9yeV9vZl9t
b2R1bGUoaG1vZHVsZSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGRhdGFQYXRoKGdfYnVpbGRfZmls
ZW5hbWUocnVudGltZURpci5nZXQoKSwgInNoYXJlIiwgIndlYmtpdGd0ay0iIFdFQktJVEdUS19B
UElfVkVSU0lPTl9TVFJJTkcsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBydW50aW1l
RGlyKGdfd2luMzJfZ2V0X3BhY2thZ2VfaW5zdGFsbGF0aW9uX2RpcmVjdG9yeV9vZl9tb2R1bGUo
aG1vZHVsZSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFQYXRoKGdfYnVpbGRfZmlsZW5h
bWUocnVudGltZURpci5nZXQoKSwgInNoYXJlIiwgIndlYmtpdGd0ay0iIFdFQktJVEdUS19BUElf
VkVSU0lPTl9TVFJJTkcsIE5VTEwpKTsKICNlbHNlCi0gICAgR093blB0cjxnY2hhcj4gZGF0YVBh
dGgoZ19idWlsZF9maWxlbmFtZShEQVRBX0RJUiwgIndlYmtpdGd0ay0iIFdFQktJVEdUS19BUElf
VkVSU0lPTl9TVFJJTkcsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhUGF0aChn
X2J1aWxkX2ZpbGVuYW1lKERBVEFfRElSLCAid2Via2l0Z3RrLSIgV0VCS0lUR1RLX0FQSV9WRVJT
SU9OX1NUUklORywgTlVMTCkpOwogI2VuZGlmCiAKICAgICBjYWNoZWRQYXRoID0gZGF0YVBhdGgu
Z2V0KCk7CkBAIC0yNDIsNyArMjQzLDcgQEAgdWludDY0X3QgZ2V0Vm9sdW1lRnJlZVNpemVGb3JQ
YXRoKGNvbnN0IGNoYXIqIHBhdGgpCiBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgLyogTm8gbnVsbCBjaGVja2luZyBuZWVkZWQgKi8KLSAgICBHT3duUHRy
PGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dldF9kaXJuYW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRpcm5hbWUoZ19wYXRoX2dl
dF9kaXJuYW1lKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgpKTsKIH0KIApAQCAtMjUxLDI4ICsy
NTIsMjYgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CiAKICAg
ICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAg
IEdEaXIqIGRpciA9IGdfZGlyX29wZW4oZmlsZW5hbWUuZGF0YSgpLCAwLCAwKTsKKyAgICBHVW5p
cXVlUHRyPEdEaXI+IGRpcihnX2Rpcl9vcGVuKGZpbGVuYW1lLmRhdGEoKSwgMCwgbnVsbHB0cikp
OwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm4gZW50cmllczsKIAotICAgIEdQYXR0ZXJu
U3BlYyAqcHNwZWMgPSBnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRlci51dGY4KCkpLmRhdGEoKSk7
Ci0gICAgd2hpbGUgKGNvbnN0IGNoYXIqIG5hbWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyKSkgewot
ICAgICAgICBpZiAoIWdfcGF0dGVybl9tYXRjaF9zdHJpbmcocHNwZWMsIG5hbWUpKQorICAgIEdV
bmlxdWVQdHI8R1BhdHRlcm5TcGVjPiBwc3BlYyhnX3BhdHRlcm5fc3BlY19uZXcoKGZpbHRlci51
dGY4KCkpLmRhdGEoKSkpOworICAgIHdoaWxlIChjb25zdCBjaGFyKiBuYW1lID0gZ19kaXJfcmVh
ZF9uYW1lKGRpci5nZXQoKSkpIHsKKyAgICAgICAgaWYgKCFnX3BhdHRlcm5fbWF0Y2hfc3RyaW5n
KHBzcGVjLmdldCgpLCBuYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEdP
d25QdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUuZGF0YSgpLCBuYW1l
LCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGVudHJ5KGdfYnVpbGRfZmlsZW5h
bWUoZmlsZW5hbWUuZGF0YSgpLCBuYW1lLCBOVUxMKSk7CiAgICAgICAgIGVudHJpZXMuYXBwZW5k
KGZpbGVuYW1lVG9TdHJpbmcoZW50cnkuZ2V0KCkpKTsKICAgICB9Ci0gICAgZ19wYXR0ZXJuX3Nw
ZWNfZnJlZShwc3BlYyk7Ci0gICAgZ19kaXJfY2xvc2UoZGlyKTsKIAogICAgIHJldHVybiBlbnRy
aWVzOwogfQogCiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewotICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVu
YW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdPd25QdHI8Z2NoYXI+
IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQo
KSwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50
ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwogICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1w
UGF0aC5nZXQoKSkpOwogCiAgICAgaGFuZGxlID0gZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HT3duUHRyR3RrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI2
OTNmNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0
ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKLQotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVk
R1B0cjxHZGtFdmVudD4oR2RrRXZlbnQqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAgICAgICBn
ZGtfZXZlbnRfZnJlZShwdHIpOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8
R3RrSWNvbkluZm8+KEd0a0ljb25JbmZvKiBpbmZvKQotewotICAgIGlmIChpbmZvKQotICAgICAg
ICBndGtfaWNvbl9pbmZvX2ZyZWUoaW5mbyk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR093blB0ckd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDVlODM3
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEdPd25QdHJHdGtfaAotI2RlZmluZSBH
T3duUHRyR3RrX2gKLQotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHZGtFdmVudD4oR2Rr
RXZlbnQqKTsKLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHdGtJY29uSW5mbz4oR3Rr
SWNvbkluZm8qKTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HVW5pcXVlUHRyR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R1VuaXF1ZVB0ckd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3Yzdj
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR1VuaXF1
ZVB0ckd0ay5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgR1VuaXF1ZVB0ckd0a19oCisjZGVmaW5lIEdV
bmlxdWVQdHJHdGtfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dURl9ERUZJTkVfR1BUUl9E
RUxFVEVSKEdka0V2ZW50LCBnZGtfZXZlbnRfZnJlZSkKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVS
KEd0a0ljb25JbmZvLCBndGtfaWNvbl9pbmZvX2ZyZWUpCisKK30gLy8gbmFtZXNwYWNlIFdURgor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFk
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCmlu
ZGV4IGFmOTYwOWQuLjQ0MmJiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HYW1lcGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dh
bWVwYWRzR3RrLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIApAQCAtMTIzLDcgKzEyNCw3IEBAIEdhbWVwYWRzR3RrOjpHYW1lcGFkc0d0ayh1bnNpZ25l
ZCBsZW5ndGgpCiAgICAgbV9ndWRldkNsaWVudCA9IGFkb3B0R1JlZihnX3VkZXZfY2xpZW50X25l
dyhzdWJzeXN0ZW1zKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2d1ZGV2Q2xpZW50LmdldCgp
LCAidWV2ZW50IiwgR19DQUxMQkFDSyhvblVFdmVudENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBH
T3duUHRyPEdMaXN0PiBkZXZpY2VzTGlzdChnX3VkZXZfY2xpZW50X3F1ZXJ5X2J5X3N1YnN5c3Rl
bShtX2d1ZGV2Q2xpZW50LmdldCgpLCBzdWJzeXN0ZW1zWzBdKSk7CisgICAgR1VuaXF1ZVB0cjxH
TGlzdD4gZGV2aWNlc0xpc3QoZ191ZGV2X2NsaWVudF9xdWVyeV9ieV9zdWJzeXN0ZW0obV9ndWRl
dkNsaWVudC5nZXQoKSwgc3Vic3lzdGVtc1swXSkpOwogICAgIGZvciAoR0xpc3QqIGxpc3RJdGVt
ID0gZGV2aWNlc0xpc3QuZ2V0KCk7IGxpc3RJdGVtOyBsaXN0SXRlbSA9IGdfbGlzdF9uZXh0KGxp
c3RJdGVtKSkgewogICAgICAgICBHVWRldkRldmljZSogZGV2aWNlID0gR19VREVWX0RFVklDRShs
aXN0SXRlbS0+ZGF0YSk7CiAgICAgICAgIFN0cmluZyBkZXZpY2VGaWxlID0gU3RyaW5nOjpmcm9t
VVRGOChnX3VkZXZfZGV2aWNlX2dldF9kZXZpY2VfZmlsZShkZXZpY2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHAKaW5kZXggYWNjOGEzMi4u
YmFhODkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNr
Q291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291
bnRlci5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJHdGtDbGlja0NvdW50ZXIuaCIKIAotI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKKyNpbmNsdWRl
ICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00Niw3ICs0Niw3IEBAIGJvb2wgR3RrQ2xpY2tDb3VudGVyOjpzaG91bGRQcm9j
ZXNzQnV0dG9uRXZlbnQoR2RrRXZlbnRCdXR0b24qIGJ1dHRvbkV2ZW50KQogICAgIC8vIGNvbWlu
ZyB1cCwgaWdub3JlIHRoaXMgZXZlbnQgYXMgaXQgY2VydGFpbmx5IGdlbmVyYXRlZCB0aGUgZG91
YmxlIG9yIHRyaXBsZQogICAgIC8vIGNsaWNrLiBUaGUgY29uc2VxdWVuY2Ugb2Ygbm90IGVhdGlu
ZyB0aGlzIGV2ZW50IGlzIHR3byBET00gYnV0dG9uIHByZXNzIGV2ZW50cwogICAgIC8vIGFyZSBn
ZW5lcmF0ZWQuCi0gICAgR093blB0cjxHZGtFdmVudD4gbmV4dEV2ZW50KGdka19ldmVudF9wZWVr
KCkpOworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG5leHRFdmVudChnZGtfZXZlbnRfcGVlaygp
KTsKICAgICBpZiAoIW5leHRFdmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG5l
eHRFdmVudC0+YW55LnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgbmV4dEV2ZW50LT5hbnku
dHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IGI5OTgwYjUuLjBhMDI2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9k
RmlsdGVyLmNwcApAQCAtMTksMTEgKzE5LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR3RrSW5wdXRNZXRob2RGaWx0ZXIuaCIKIAotI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIK
KyNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
CiAvLyBUaGUgV2luZG93cyBjb21wb3NpdGlvbiBrZXkgZXZlbnQgY29kZSBpcyAyOTkgb3IgVktf
UFJPQ0VTU0tFWS4gV2UgbmVlZCB0bwogLy8gZW1pdCB0aGlzIGNvZGUgZm9yIHdlYiBjb21wYXRp
YmlsaXR5IHJlYXNvbnMgd2hlbiBrZXkgZXZlbnRzIHRyaWdnZXIKQEAgLTI3MCw3ICsyNzEsNyBA
QCB2b2lkIEd0a0lucHV0TWV0aG9kRmlsdGVyOjp1cGRhdGVQcmVlZGl0KCkKIAogdm9pZCBHdGtJ
bnB1dE1ldGhvZEZpbHRlcjo6c2VuZENvbXBvc2l0aW9uQW5kUHJlZWRpdFdpdGhGYWtlS2V5RXZl
bnRzKFJlc3VsdHNUb1NlbmQgcmVzdWx0c1RvU2VuZCkKIHsKLSAgICBHT3duUHRyPEdka0V2ZW50
PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKKyAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKICAgICBldmVudC0+
a2V5LnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwogICAgIGV2ZW50LT5rZXkua2V5dmFsID0gZ0Nv
bXBvc2l0aW9uRXZlbnRLZXlDb2RlOwogICAgIHNlbmRLZXlFdmVudFdpdGhDb21wb3NpdGlvblJl
c3VsdHMoJmV2ZW50LT5rZXksIHJlc3VsdHNUb1NlbmQsIEV2ZW50RmFrZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BvcHVwTWVudS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmNwcAppbmRleCA0NThhZjRkLi5lNTJj
ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmNwcApA
QCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkd0a1BvcHVw
TWVudS5oIgogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgIkd0
a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtODksNyArODksNyBAQCB2b2lkIEd0a1BvcHVwTWVudTo6cG9wVXAo
Y29uc3QgSW50U2l6ZSYgbWVudVNpemUsIGNvbnN0IEludFBvaW50JiBtZW51UG9zaXRpb24sCiAg
ICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0KG1fcG9wdXAuZ2V0KCksIHN0ZDo6bWF4KG1l
bnVTaXplLndpZHRoKCksIHJlcXVpc2l0aW9uLndpZHRoKSwgLTEpOwogCiAgICAgaWYgKGl0ZW1D
b3VudCkgewotICAgICAgICBHT3duUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dl
dF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1fcG9wdXAuZ2V0KCkpKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05U
QUlORVIobV9wb3B1cC5nZXQoKSkpKTsKICAgICAgICAgaW50IGk7CiAgICAgICAgIEdMaXN0KiBj
aGlsZDsKICAgICAgICAgZm9yIChpID0gMCwgY2hpbGQgPSBjaGlsZHJlbi5nZXQoKTsgaSA8IGl0
ZW1Db3VudDsgaSsrLCBjaGlsZCA9IGdfbGlzdF9uZXh0KGNoaWxkKSkgewpAQCAtMTU5LDcgKzE1
OSw3IEBAIGJvb2wgR3RrUG9wdXBNZW51Ojp0eXBlQWhlYWRGaW5kKEdka0V2ZW50S2V5KiBldmVu
dCkKICAgICB9CiAKICAgICBnbG9uZyBjaGFyYWN0ZXJzV3JpdHRlbjsKLSAgICBHT3duUHRyPGd1
bmljaGFyMj4gdXRmMTZTdHJpbmcoZ191Y3M0X3RvX3V0ZjE2KCZ1bmljb2RlQ2hhcmFjdGVyLCAx
LCAwLCAmY2hhcmFjdGVyc1dyaXR0ZW4sIDApKTsKKyAgICBHVW5pcXVlUHRyPGd1bmljaGFyMj4g
dXRmMTZTdHJpbmcoZ191Y3M0X3RvX3V0ZjE2KCZ1bmljb2RlQ2hhcmFjdGVyLCAxLCAwLCAmY2hh
cmFjdGVyc1dyaXR0ZW4sIDApKTsKICAgICBpZiAoIXV0ZjE2U3RyaW5nKSB7CiAgICAgICAgIHJl
c2V0VHlwZUFoZWFkRmluZFN0YXRlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3OSw3
ICsxNzksNyBAQCBib29sIEd0a1BvcHVwTWVudTo6dHlwZUFoZWFkRmluZChHZGtFdmVudEtleSog
ZXZlbnQpCiAKICAgICAvLyBMaWtlIHRoZSBDaHJvbWl1bSBwb3J0LCB3ZSBjYXNlIGZvbGQgYmVm
b3JlIHNlYXJjaGluZywgYmVjYXVzZSAKICAgICAvLyBzdHJuY21wIGRvZXMgbm90IGhhbmRsZSBu
b24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICBHT3duUHRyPGdjaGFyPiBzZWFyY2hTdHJpbmdXaXRo
Q2FzZUZvbGRlZChnX3V0ZjhfY2FzZWZvbGQobV9jdXJyZW50U2VhcmNoU3RyaW5nLnV0ZjgoKS5k
YXRhKCksIC0xKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2VhcmNoU3RyaW5nV2l0aENhc2VG
b2xkZWQoZ191dGY4X2Nhc2Vmb2xkKG1fY3VycmVudFNlYXJjaFN0cmluZy51dGY4KCkuZGF0YSgp
LCAtMSkpOwogICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4oc2VhcmNoU3RyaW5nV2l0
aENhc2VGb2xkZWQuZ2V0KCkpOwogCiAgICAgR0xpc3QqIGNoaWxkcmVuID0gZ3RrX2NvbnRhaW5l
cl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtX3BvcHVwLmdldCgpKSk7CkBAIC0yMTAsNyAr
MjEwLDcgQEAgYm9vbCBHdGtQb3B1cE1lbnU6OnR5cGVBaGVhZEZpbmQoR2RrRXZlbnRLZXkqIGV2
ZW50KQogICAgICAgICBpZiAoIWN1cnJlbnRDaGlsZCkKICAgICAgICAgICAgIGN1cnJlbnRDaGls
ZCA9IGNoaWxkcmVuOwogCi0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGl0ZW1UZXh0KGdfdXRmOF9j
YXNlZm9sZChndGtfbWVudV9pdGVtX2dldF9sYWJlbChHVEtfTUVOVV9JVEVNKGN1cnJlbnRDaGls
ZC0+ZGF0YSkpLCAtMSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBpdGVtVGV4dChnX3V0
ZjhfY2FzZWZvbGQoZ3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoR1RLX01FTlVfSVRFTShjdXJyZW50
Q2hpbGQtPmRhdGEpKSwgLTEpKTsKICAgICAgICAgaWYgKCFzdHJuY21wKHNlYXJjaFN0cmluZ1dp
dGhDYXNlRm9sZGVkLmdldCgpLCBpdGVtVGV4dC5nZXQoKSwgcHJlZml4TGVuZ3RoKSkgewogICAg
ICAgICAgICAgZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2l0ZW0oR1RLX01FTlVfU0hFTEwobV9wb3B1
cC5nZXQoKSksIEdUS19XSURHRVQoY3VycmVudENoaWxkLT5kYXRhKSk7CiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCmluZGV4
IDM3YTcxZTUuLjU4ZDNhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9MYW5ndWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1
YWdlR3RrLmNwcApAQCAtMjAsOCArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkxhbmd1YWdlLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdl
KCkKICAgICBpZiAoIWxvY2FsZURlZmF1bHQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoImMiKTsK
IAotICAgIEdPd25QdHI8Z2NoYXI+IG5vcm1hbGl6ZWREZWZhdWx0KGdfYXNjaWlfc3RyZG93bihs
b2NhbGVEZWZhdWx0LCAtMSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG5vcm1hbGl6ZWREZWZh
dWx0KGdfYXNjaWlfc3RyZG93bihsb2NhbGVEZWZhdWx0LCAtMSkpOwogICAgIGNoYXIqIHB0ciA9
IHN0cmNocihub3JtYWxpemVkRGVmYXVsdC5nZXQoKSwgJ18nKTsKIAogICAgIGlmIChwdHIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5j
cHAKaW5kZXggOTQ3MWQ5ZC4uMzBkN2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcApAQCAtMjksMTggKzI5LDE3IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKwogI2luY2x1ZGUgIkludFNpemUu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBndGtTdG9ja0xhYmVsKGNvbnN0IGNoYXIqIHN0b2Nr
SUQpCkBAIC01NDQsOSArNTQzLDggQEAgU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQogCiBT
dHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYoQ18oIlRp
dGxlIHN0cmluZyBmb3IgaW1hZ2VzIiwgIiVzICAoJWR4JWQgcGl4ZWxzKSIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9w
cmludGYoQ18oIlRpdGxlIHN0cmluZyBmb3IgaW1hZ2VzIiwgIiVzICAoJWR4JWQgcGl4ZWxzKSIp
LAorICAgICAgICBmaWxlbmFtZS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpKTsKIAogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHN0cmluZy5nZXQoKSk7CiB9
CkBAIC02NjgsMjEgKzY2NiwyMSBAQCBTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRp
b24oZmxvYXQgdGltZSkKICAgICBzZWNvbmRzICU9IDYwOwogCiAgICAgaWYgKGRheXMpIHsKLSAg
ICAgICAgR093blB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgZGF5cyAlZCBo
b3VycyAlZCBtaW51dGVzICVkIHNlY29uZHMiLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25k
cykpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIl
ZCBkYXlzICVkIGhvdXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIGRheXMsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHN0cmluZy5n
ZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKGhvdXJzKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+
IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVkIGhvdXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIs
IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0
cmluZyhnX3N0cmR1cF9wcmludGYoIiVkIGhvdXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIGhv
dXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHN0cmluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1pbnV0ZXMpIHsKLSAgICAgICAgR093
blB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgbWludXRlcyAlZCBzZWNvbmRz
IiwgbWludXRlcywgc2Vjb25kcykpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHJpbmco
Z19zdHJkdXBfcHJpbnRmKCIlZCBtaW51dGVzICVkIHNlY29uZHMiLCBtaW51dGVzLCBzZWNvbmRz
KSk7CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHN0cmluZy5nZXQoKSk7CiAgICAg
fQogCi0gICAgR093blB0cjxnY2hhcj4gc3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgc2Vjb25k
cyIsIHNlY29uZHMpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJp
bnRmKCIlZCBzZWNvbmRzIiwgc2Vjb25kcykpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KHN0cmluZy5nZXQoKSk7CiB9CiAjZW5kaWYgIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCBmYTdiYzdi
Li41NTczNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTExNyw3ICsxMTgsNyBAQCBHdGtUYXJnZXRMaXN0KiBQYXN0ZWJvYXJk
SGVscGVyOjp0YXJnZXRMaXN0KCkgY29uc3QKIHN0YXRpYyBTdHJpbmcgc2VsZWN0aW9uRGF0YVRv
VVRGOFN0cmluZyhHdGtTZWxlY3Rpb25EYXRhKiBkYXRhKQogewogICAgIC8vIGdfc3RybmR1cCBn
dWFyZHMgYWdhaW5zdCBzZWxlY3Rpb24gZGF0YSB0aGF0IGlzIG5vdCBudWxsLXRlcm1pbmF0ZWQu
Ci0gICAgR093blB0cjxnY2hhcj4gbWFya3VwU3RyaW5nKGdfc3RybmR1cChyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGEoZGF0YSkpLCBndGtf
c2VsZWN0aW9uX2RhdGFfZ2V0X2xlbmd0aChkYXRhKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IG1hcmt1cFN0cmluZyhnX3N0cm5kdXAocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ3Rr
X3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhKGRhdGEpKSwgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9s
ZW5ndGgoZGF0YSkpKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChtYXJrdXBTdHJpbmcu
Z2V0KCkpOwogfQogCkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpn
ZXRDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCkKICAgICBBU1NFUlQo
ZGF0YU9iamVjdCk7CiAKICAgICBpZiAoZ3RrX2NsaXBib2FyZF93YWl0X2lzX3RleHRfYXZhaWxh
YmxlKGNsaXBib2FyZCkpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdGV4dERhdGEoZ3RrX2Ns
aXBib2FyZF93YWl0X2Zvcl90ZXh0KGNsaXBib2FyZCkpOworICAgICAgICBHVW5pcXVlUHRyPGdj
aGFyPiB0ZXh0RGF0YShndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQoY2xpcGJvYXJkKSk7CiAg
ICAgICAgIGlmICh0ZXh0RGF0YSkKICAgICAgICAgICAgIGRhdGFPYmplY3QtPnNldFRleHQoU3Ry
aW5nOjpmcm9tVVRGOCh0ZXh0RGF0YS5nZXQoKSkpOwogICAgIH0KQEAgLTE3Niw3ICsxNzcsNyBA
QCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodXJsKTsKIAotICAgICAgICBHT3duUHRyPGdjaGFyPiByZXN1bHREYXRhKGdfc3Ry
ZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJl
c3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBuZXRzY2FwZVVSTEF0b20sIDgsCiAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KHJlc3VsdERhdGEuZ2V0KCkp
LCBzdHJsZW4ocmVzdWx0RGF0YS5nZXQoKSkpOwogCkBAIC0xOTMsMTIgKzE5NCwxMiBAQCB2b2lk
IFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqIHNl
bGVjdGlvbkRhdGEsIGd1aW50CiAgICAgICAgIGF1dG8gdHlwZXMgPSBkYXRhT2JqZWN0LT51bmtu
b3duVHlwZXMoKTsKICAgICAgICAgYXV0byBlbmQgPSB0eXBlcy5lbmQoKTsKICAgICAgICAgZm9y
IChhdXRvIGl0ID0gdHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAg
ICBHT3duUHRyPGdjaGFyPiBkaWN0SXRlbShnX3N0cmR1cF9wcmludGYoInsnJXMnLCAnJXMnfSIs
IGl0LT5rZXkudXRmOCgpLmRhdGEoKSwgaXQtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAg
ICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRpY3RJdGVtKGdfc3RyZHVwX3ByaW50Zigieyclcycs
ICclcyd9IiwgaXQtPmtleS51dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUudXRmOCgpLmRhdGEoKSkp
OwogICAgICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkX3BhcnNlZCgmYnVpbGRlciwgZGlj
dEl0ZW0uZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFy
aWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcik7Ci0gICAgICAgIEdPd25QdHI8
Z2NoYXI+IHNlcmlhbGl6ZWRWYXJpYW50KGdfdmFyaWFudF9wcmludCh2YXJpYW50LmdldCgpLCBU
UlVFKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNlcmlhbGl6ZWRWYXJpYW50KGdfdmFy
aWFudF9wcmludCh2YXJpYW50LmdldCgpLCBUUlVFKSk7CiAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgdW5rbm93bkF0b20sIDEsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZ3VjaGFyKj4oc2VyaWFsaXplZFZhcmlhbnQuZ2V0KCkpLCBzdHJsZW4oc2VyaWFsaXpl
ZFZhcmlhbnQuZ2V0KCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Qb3B1cE1lbnVHdGsuY3BwCmluZGV4IGUwZmIxZmQuLjU0MDNjYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwCkBAIC0yOCwxMSArMjgsMTAgQEAK
ICNpbmNsdWRlICJQb3B1cE1lbnVHdGsuaCIKIAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2lu
Y2x1ZGUgIkdPd25QdHJHdGsuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVk
ZSAiR3RrVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw3ICs1MSw3IEBA
IFBvcHVwTWVudUd0azo6flBvcHVwTWVudUd0aygpCiAKIEd0a0FjdGlvbiogUG9wdXBNZW51R3Rr
OjpjcmVhdGVHdGtBY3Rpb25Gb3JNZW51SXRlbShpbnQgaXRlbUluZGV4KQogewotICAgIEdPd25Q
dHI8Y2hhcj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoInBvcHVwLW1lbnUtYWN0aW9uLSVk
IiwgaXRlbUluZGV4KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhY3Rpb25OYW1lKGdfc3RyZHVw
X3ByaW50ZigicG9wdXAtbWVudS1hY3Rpb24tJWQiLCBpdGVtSW5kZXgpKTsKICAgICBHdGtBY3Rp
b24qIGFjdGlvbiA9IGd0a19hY3Rpb25fbmV3KGFjdGlvbk5hbWUuZ2V0KCksIGNsaWVudCgpLT5p
dGVtVGV4dChpdGVtSW5kZXgpLnV0ZjgoKS5kYXRhKCksIGNsaWVudCgpLT5pdGVtVG9vbFRpcChp
dGVtSW5kZXgpLnV0ZjgoKS5kYXRhKCksIDApOwogICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKGFjdGlvbiksICJwb3B1cC1tZW51LWFjdGlvbi1pbmRleCIsIEdJTlRfVE9fUE9JTlRFUihp
dGVtSW5kZXgpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGFjdGlvbiwgImFjdGl2YXRlIiwgR19D
QUxMQkFDSyhtZW51SXRlbUFjdGl2YXRlZCksIHRoaXMpOwpAQCAtODYsNyArODUsNyBAQCB2b2lk
IFBvcHVwTWVudUd0azo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcs
IGludCBpbmRleCkKICAgICBJbnRQb2ludCBtZW51UG9zaXRpb24gPSBjb252ZXJ0V2lkZ2V0UG9p
bnRUb1NjcmVlblBvaW50KEdUS19XSURHRVQodmlldy0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBh
Z2VDbGllbnQoKSksIHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKSk7CiAg
ICAgbWVudVBvc2l0aW9uLm1vdmUoMCwgcmVjdC5oZWlnaHQoKSk7CiAKLSAgICBHT3duUHRyPEdk
a0V2ZW50PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkpOworICAgIEdVbmlx
dWVQdHI8R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRfZXZlbnQoKSk7CiAg
ICAgbV9wb3B1cC0+cG9wVXAocmVjdC5zaXplKCksIG1lbnVQb3NpdGlvbiwgc2l6ZSwgaW5kZXgs
IGN1cnJlbnRFdmVudC5nZXQoKSk7CiAKICAgICAvLyBHVEsgY2FuIHJlZnVzZSB0byBhY3R1YWxs
eSBvcGVuIHRoZSBtZW51IHdoZW4gbW91c2UgZ3JhYnMgZmFpbHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25XaWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uV2lkZ2V0LmNw
cAppbmRleCBlNDdkNTk5Li43NzgwNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25XaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbldpZGdldC5jcHAKQEAgLTIzLDcg
KzIzLDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAi
R3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9u
V2lkZ2V0SW5pdGlhbGl6ZShXZWJLaXRBdXRoZW50aWNhdGlvbldpZGdldCogYXV0CiAgICAgZ3Rr
X3dpZGdldF9zaG93KGljb24pOwogCiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25XaWRnZXRQcml2
YXRlKiBwcml2ID0gYXV0aFdpZGdldC0+cHJpdjsKLSAgICBHT3duUHRyPGNoYXI+IHByb21wdChn
X3N0cmR1cF9wcmludGYoCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm9tcHQoZ19zdHJkdXBfcHJp
bnRmKAogICAgICAgICBfKCJUaGUgc2l0ZSAlczolaSByZXF1ZXN0cyBhIHVzZXJuYW1lIGFuZCBw
YXNzd29yZCIpLAogICAgICAgICBwcml2LT5jaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaG9z
dCgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIHByaXYtPmNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKS5wb3J0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggZjE5ZDA0ZC4uN2RjNDNlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUludGVybmFsLmgKQEAgLTQ5LDggKzQ5LDggQEAKICNlbmRpZgogCiAjaWYgVVNFKFNPVVAp
CisjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgogY2xhc3MgRnJhbWU7CiAjZW5kaWYKQEAgLTE5Nyw3ICsxOTcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxh
YmxlOwogICAgICAgICBHUmVmUHRyPEdBc3luY1Jlc3VsdD4gbV9kZWZlcnJlZFJlc3VsdDsKICAg
ICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3RpbWVvdXRTb3VyY2U7Ci0gICAgICAgIEdPd25QdHI8
U291cEJ1ZmZlcj4gbV9zb3VwQnVmZmVyOworICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+
IG1fc291cEJ1ZmZlcjsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAg
ICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBTb3VwU2Vzc2lvbiogc291
cFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Z3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNWYxZTRjNS4uMTQx
MjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3Jl
ZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ndGsvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlIDxsaWJzZWNyZXQvc2VjcmV0Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAt
NzcsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBjcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFk
eUNhbGxiYWNrKFNlY3JldFNlcnZpY2UqIHNlcnZpY2UsIEdBcwogICAgIGRlbGV0ZSBjYWxsYmFj
a0RhdGE7CiAKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR093blB0cjxHTGlzdD4g
ZWxlbWVudHMoc2VjcmV0X3NlcnZpY2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3Vs
dCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gZWxlbWVudHMoc2Vj
cmV0X3NlcnZpY2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91
dFB0cigpKSk7CiAgICAgaWYgKGVycm9yIHx8ICFlbGVtZW50cyB8fCAhZWxlbWVudHMtPmRhdGEp
IHsKICAgICAgICAgY2FsbGJhY2soQ3JlZGVudGlhbCgpLCBkYXRhKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZUphclNvdXAuY3BwCmluZGV4IDE1ZmQ3YzUuLjgxMDFlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKQEAgLTIy
LDcgKzIyLDcgQEAKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCiAKICNpbmNsdWRlICJDb29r
aWUuaCIKLSNpbmNsdWRlICJHT3duUHRyU291cC5oIgorI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3Vw
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgpAQCAtODgsOCArODgsOCBAQCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcgogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3du
UHRyPFNvdXBVUkk+IG9yaWdpbihzb3VwX3VyaV9uZXcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKLSAgICBHT3duUHRyPFNvdXBVUkk+IGZpcnN0UGFydHlVUkkoc291cF91cmlfbmV3KGZp
cnN0UGFydHkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8U291cFVS
ST4gb3JpZ2luKHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAg
IEdVbmlxdWVQdHI8U291cFVSST4gZmlyc3RQYXJ0eVVSSShzb3VwX3VyaV9uZXcoZmlyc3RQYXJ0
eS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAKICAgICAvLyBHZXQgZXhpc3RpbmcgY29va2ll
cyBmb3IgdGhpcyBvcmlnaW4uCiAgICAgR1NMaXN0KiBleGlzdGluZ0Nvb2tpZXMgPSBzb3VwX2Nv
b2tpZV9qYXJfZ2V0X2Nvb2tpZV9saXN0KGphciwgb3JpZ2luLmdldCgpLCBUUlVFKTsKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICB2YWx1ZS5zcGxpdCgnXG4n
LCBjb29raWVzKTsKICAgICBjb25zdCBzaXplX3QgY29va2llc0NvdW50ID0gY29va2llcy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb29raWVzQ291bnQ7ICsraSkgewotICAg
ICAgICBHT3duUHRyPFNvdXBDb29raWU+IGNvb2tpZShzb3VwX2Nvb2tpZV9wYXJzZShjb29raWVz
W2ldLnV0ZjgoKS5kYXRhKCksIG9yaWdpbi5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPFNv
dXBDb29raWU+IGNvb2tpZShzb3VwX2Nvb2tpZV9wYXJzZShjb29raWVzW2ldLnV0ZjgoKS5kYXRh
KCksIG9yaWdpbi5nZXQoKSkpOwogICAgICAgICBpZiAoIWNvb2tpZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCkBAIC0xMjIsOCArMTIyLDggQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYKICAg
ICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgR093blB0cjxTb3Vw
VVJJPiB1cmkoc291cF91cmlfbmV3KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAg
R093blB0cjxjaGFyPiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llcyhqYXIsIHVy
aS5nZXQoKSwgZm9ySFRUUEhlYWRlcikpOworICAgIEdVbmlxdWVQdHI8U291cFVSST4gdXJpKHNv
dXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZXMoamFyLCB1cmkuZ2V0KCks
IGZvckhUVFBIZWFkZXIpKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVzLmdl
dCgpKTsKIH0KIApAQCAtMTQ5LDggKzE0OSw4IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5CiAg
ICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdPd25QdHI8U291cFVS
ST4gdXJpKHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIEdP
d25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xpc3QoamFy
LCB1cmkuZ2V0KCksIFRSVUUpKTsKKyAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHVyaShzb3VwX3Vy
aV9uZXcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPEdTTGlz
dD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZV9saXN0KGphciwgdXJpLmdldCgp
LCBUUlVFKSk7CiAgICAgaWYgKCFjb29raWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE3MSw4ICsxNzEsOCBAQCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogICAgIGlmICghamFyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXco
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBHT3duUHRyPEdTTGlzdD4gY29va2ll
cyhzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZV9saXN0KGphciwgdXJpLmdldCgpLCBUUlVFKSk7
CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291cF91cmlfbmV3KHVybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2dldF9jb29raWVfbGlzdChqYXIsIHVyaS5nZXQoKSwgVFJVRSkpOwogICAgIGlmICgh
Y29va2llcykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3QKIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsK
ICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Np
b24pOwotICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29v
a2llcyhjb29raWVKYXIpKTsKKyAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nv
b2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0g
PSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAg
ICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5k
YXRhKTsKICAgICAgICAgaWYgKGNvb2tpZS0+ZG9tYWluKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgU3RyaW5nCiB7CiAgICAgQ1N0cmluZyBob3N0TmFtZVN0cmluZyA9IGhv
c3RuYW1lLnV0ZjgoKTsKICAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJG
b3JTZXNzaW9uKHNlc3Npb24pOwotICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29v
a2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKKyAgICBHVW5pcXVlUHRyPEdTTGlzdD4g
Y29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9y
IChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0
KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0PFNvdXBD
b29raWUqPihpdGVtLT5kYXRhKTsKICAgICAgICAgaWYgKHNvdXBfY29va2llX2RvbWFpbl9tYXRj
aGVzKGNvb2tpZSwgaG9zdE5hbWVTdHJpbmcuZGF0YSgpKSkKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFN0cmluZwogdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwotICAgIEdPd25QdHI8R1NMaXN0PiBj
b29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKKyAgICBHVW5p
cXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2ll
SmFyKSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVt
ID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0
YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKICAgICAgICAgc291cF9jb29raWVf
amFyX2RlbGV0ZV9jb29raWUoY29va2llSmFyLCBjb29raWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IDJlYWI5YTMuLjZmNjMw
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJETlNS
ZXNvbHZlUXVldWUuaCIKIAotI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiU291
cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGFmMmY3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHVW5pcXVl
UHRyU291cF9oCisjZGVmaW5lIEdVbmlxdWVQdHJTb3VwX2gKKworI2luY2x1ZGUgPGxpYnNvdXAv
c291cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK1dURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUp
CitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQor
V1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19mcmVlKQorV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cEJ1ZmZlciwgc291cF9i
dWZmZXJfZnJlZSkKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291
cC5jcHAKaW5kZXggYmE4NjU3Yi4uYmI3MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8
bGlic291cC9zb3VwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBVUkkqIHNvdXBVUkkpCiB7CiAg
ICAgQVNTRVJUKHNvdXBVUkkpOwotICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0
cmluZyhzb3VwVVJJLCBGQUxTRSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpKHNvdXBfdXJp
X3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwogICAgIHJldHVybiB1cmkuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggNGM3MDc0OS4uN2E2Nzc2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgpAQCAtMjg2LDkgKzI4Nyw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmVuc3VyZVJlYWRC
dWZmZXIoKQogICAgIHNpemVfdCBidWZmZXJTaXplOwogICAgIGNoYXIqIGJ1ZmZlckZyb21DbGll
bnQgPSBjbGllbnQoKS0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKGdEZWZhdWx0UmVhZEJ1ZmZlclNp
emUsIGJ1ZmZlclNpemUpOwogICAgIGlmIChidWZmZXJGcm9tQ2xpZW50KQotICAgICAgICBkLT5t
X3NvdXBCdWZmZXIuc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ1
ZmZlckZyb21DbGllbnQsIGJ1ZmZlclNpemUpKTsKKyAgICAgICAgZC0+bV9zb3VwQnVmZmVyLnJl
c2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ1ZmZlckZyb21DbGll
bnQsIGJ1ZmZlclNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGQtPm1fc291cEJ1ZmZlci5zZXQo
c291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZX1RBS0UsIHN0YXRpY19jYXN0PGNoYXIqPihnX21h
bGxvYyhnRGVmYXVsdFJlYWRCdWZmZXJTaXplKSksIGdEZWZhdWx0UmVhZEJ1ZmZlclNpemUpKTsK
KyAgICAgICAgZC0+bV9zb3VwQnVmZmVyLnJlc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9S
WV9UQUtFLCBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoZ0RlZmF1bHRSZWFkQnVmZmVyU2l6
ZSkpLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplKSk7CiAKICAgICBBU1NFUlQoZC0+bV9zb3VwQnVm
ZmVyKTsKIH0KQEAgLTU0Nyw3ICs1NDgsNyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVl
c3RPcGVyYXRpb24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbgogICAg
IGQtPm1faW5wdXRTdHJlYW0uY2xlYXIoKTsKICAgICBkLT5tX211bHRpcGFydElucHV0U3RyZWFt
LmNsZWFyKCk7CiAgICAgZC0+bV9jYW5jZWxsYWJsZS5jbGVhcigpOwotICAgIGQtPm1fc291cEJ1
ZmZlci5jbGVhcigpOworICAgIGQtPm1fc291cEJ1ZmZlci5yZXNldCgpOwogCiAgICAgaWYgKGQt
Pm1fc291cE1lc3NhZ2UpIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9t
YXRjaGVkKGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsCkBAIC05
OTIsNyArOTkzLDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9y
SGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKIAogICAgIEdPd25QdHI8R0Vy
cm9yPiBlcnJvcjsKIAotICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSShyZXF1ZXN0LnNvdXBV
UkkoKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJKHJlcXVlc3Quc291cFVSSSgp
KTsKICAgICBpZiAoIXNvdXBVUkkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdFNvdXAuY3BwCmluZGV4IDQ3ODg0ODcuLjIzNTlmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291
cC5jcHAKQEAgLTIwLDExICsyMCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogCi0jaW5jbHVkZSAiR093blB0clNvdXAuaCIKKyNpbmNsdWRl
ICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
TUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNvdXBVUklVdGlscy5oIgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM1LDcgQEAgdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlTWVtYmVycyhTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UpIGNvbnN0CiAKICAgICBTdHJpbmcgZmlyc3RQYXJ0eVN0cmluZyA9IGZpcnN0UGFy
dHlGb3JDb29raWVzKCkuc3RyaW5nKCk7CiAgICAgaWYgKCFmaXJzdFBhcnR5U3RyaW5nLmlzRW1w
dHkoKSkgewotICAgICAgICBHT3duUHRyPFNvdXBVUkk+IGZpcnN0UGFydHkoc291cF91cmlfbmV3
KGZpcnN0UGFydHlTdHJpbmcudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPFNv
dXBVUkk+IGZpcnN0UGFydHkoc291cF91cmlfbmV3KGZpcnN0UGFydHlTdHJpbmcudXRmOCgpLmRh
dGEoKSkpOwogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X2ZpcnN0X3BhcnR5KHNvdXBNZXNzYWdl
LCBmaXJzdFBhcnR5LmdldCgpKTsKICAgICB9CiAKQEAgLTcxLDcgKzcwLDcgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkg
Y29uc3QKIHsKICAgICBnX29iamVjdF9zZXQoc291cE1lc3NhZ2UsIFNPVVBfTUVTU0FHRV9NRVRI
T0QsIGh0dHBNZXRob2QoKS51dGY4KCkuZGF0YSgpLCBOVUxMKTsKIAotICAgIEdPd25QdHI8U291
cFVSST4gdXJpKHNvdXBVUkkoKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkoc291cFVS
SSgpKTsKICAgICBzb3VwX21lc3NhZ2Vfc2V0X3VyaShzb3VwTWVzc2FnZSwgdXJpLmdldCgpKTsK
IAogICAgIHVwZGF0ZVNvdXBNZXNzYWdlTWVtYmVycyhzb3VwTWVzc2FnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcAppbmRleCA1NDE2ZGJiLi5lMzYyZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
U291cC5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiU291cFVSSVV0aWxzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCmluZGV4IDU1M2JhZDkuLmVhODkw
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
VVJJVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwVVJJVXRpbHMuY3BwCkBAIC0xOSw4ICsxOSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU291cFVSSVV0aWxzLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gbm90IHdhbnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRo
IHByZXZpb3VzIGltcGxlbWVudGF0aW9ucwogVVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSogc291
cFVSSSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3RyaW5n
KHNvdXBVUkksIEZBTFNFKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBf
dXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwogICAgIFVSTCB1cmwoVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7CiAKICAgICBpZiAoIXNvdXBVUkktPnBhc3N3
b3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZm
ZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291
cC5jcHAKaW5kZXggZmI1NTczOC4uNzQ1NzkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC0yNiw5ICsyNiw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoU291cEJ1ZmZlciog
c291cEJ1ZmZlcikKICAgICA6IG1fc2l6ZSgwKQorICAgICwgbV9zb3VwQnVmZmVyKHNvdXBCdWZm
ZXIpCiB7CiAgICAgQVNTRVJUKHNvdXBCdWZmZXIpOwotICAgIG1fc291cEJ1ZmZlci5zZXQoc291
cEJ1ZmZlcik7CiB9CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Ondy
YXBTb3VwQnVmZmVyKFNvdXBCdWZmZXIqIHNvdXBCdWZmZXIpCkBAIC0zOCw3ICszOCw3IEBAIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVyKFNvdXBC
dWZmZXIqIHNvdXBCdWZmZXIpCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhclBsYXRmb3JtRGF0
YSgpCiB7Ci0gICAgbV9zb3VwQnVmZmVyLmNsZWFyKCk7CisgICAgbV9zb3VwQnVmZmVyLnJlc2V0
KCk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyOjp0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZv
cm1CdWZmZXIoU2hhcmVkQnVmZmVyKiBuZXdDb250ZW50cykKQEAgLTU1LDcgKzU1LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6Om1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKQogCiAgICAgLy8gSGFu
ZyBvbiB0byB0aGUgbV9zb3VwQnVmZmVyIHBvaW50ZXIgaW4gYSBsb2NhbCBwb2ludGVyIGFzIGFw
cGVuZCgpIHdpbGwgcmUtZW50ZXIgbWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCiAgICAgLy8g
YW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGVhcmx5IHJldHVybiB3aGVuIGl0IGRvZXMuCi0g
ICAgR093blB0cjxTb3VwQnVmZmVyPiBzb3VwQnVmZmVyOworICAgIEdVbmlxdWVQdHI8U291cEJ1
ZmZlcj4gc291cEJ1ZmZlcjsKICAgICBzb3VwQnVmZmVyLnN3YXAobV9zb3VwQnVmZmVyKTsKIAog
ICAgIGFwcGVuZChzb3VwQnVmZmVyLT5kYXRhLCBzb3VwQnVmZmVyLT5sZW5ndGgpOwpAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgp
CiAKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3NvdXBCdWZmZXI7CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci5nZXQoKTsKIH0KIAog
Y29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcAppbmRleCA5MjZhN2Q5
Li5hODFmNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5Q
YWNrYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNr
YWdlR3RrLmNwcApAQCAtMjksMTMgKzI5LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUGFja2FnZS5oIgogCi0jaW5jbHVkZSAiR093blB0ckd0ay5oIgogI2luY2x1
ZGUgIkdSZWZQdHJHdGsuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1
ZGUgIlBsdWdpbkRlYnVnLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8oKQogCiAgICAgZ2NoYXIqKiBtaW1lRGVzY3MgPSBnX3N0cnNwbGl0KHR5cGVzLCAi
OyIsIC0xKTsKICAgICBmb3IgKGludCBpID0gMDsgbWltZURlc2NzW2ldICYmIG1pbWVEZXNjc1tp
XVswXTsgaSsrKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gbWltZShnX3V0Zjhfc3RyZG93biht
aW1lRGVzY3NbaV0sIC0xKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWltZShnX3V0Zjhf
c3RyZG93bihtaW1lRGVzY3NbaV0sIC0xKSk7CiAgICAgICAgIGdjaGFyKiogbWltZURhdGEgPSBn
X3N0cnNwbGl0KG1pbWUuZ2V0KCksICI6IiwgMyk7CiAgICAgICAgIGlmIChnX3N0cnZfbGVuZ3Ro
KG1pbWVEYXRhKSA8IDMpIHsKICAgICAgICAgICAgIGdfc3RyZnJlZXYobWltZURhdGEpOwpAQCAt
MTI5LDIyICsxMjksMjIgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpsb2FkKCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgR093blB0cjxnY2hhcj4gZmluYWxQYXRoKGdfc3RyZHVw
KG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmluYWxQYXRo
KGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7CiAgICAgd2hpbGUgKGdfZmlsZV90ZXN0
KGZpbmFsUGF0aC5nZXQoKSwgR19GSUxFX1RFU1RfSVNfU1lNTElOSykpIHsKICAgICAgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbmFsUGF0
aC5nZXQoKSkpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkaXIgPSBhZG9wdEdSZWYoZ19maWxl
X2dldF9wYXJlbnQoZmlsZS5nZXQoKSkpOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBsaW5rUGF0
aChnX2ZpbGVfcmVhZF9saW5rKGZpbmFsUGF0aC5nZXQoKSwgMCkpOworICAgICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBsaW5rUGF0aChnX2ZpbGVfcmVhZF9saW5rKGZpbmFsUGF0aC5nZXQoKSwgMCkp
OwogICAgICAgICBHUmVmUHRyPEdGaWxlPiByZXNvbHZlZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X3Jlc29sdmVfcmVsYXRpdmVfcGF0aChkaXIuZ2V0KCksIGxpbmtQYXRoLmdldCgpKSk7Ci0gICAg
ICAgIGZpbmFsUGF0aC5zZXQoZ19maWxlX2dldF9wYXRoKHJlc29sdmVkRmlsZS5nZXQoKSkpOwor
ICAgICAgICBmaW5hbFBhdGgucmVzZXQoZ19maWxlX2dldF9wYXRoKHJlc29sdmVkRmlsZS5nZXQo
KSkpOwogICAgIH0KIAogICAgIC8vIE5vIGpva2UuIElmIHRoZXJlIGlzIGEgbmV0c2NhcGUgY29t
cG9uZW50IGluIHRoZSBwYXRoLCBnbyBiYWNrCiAgICAgLy8gdG8gdGhlIHN5bWxpbmssIGFzIGZs
YXNoIGJyZWFrcyBvdGhlcndpc2UuCiAgICAgLy8gU2VlIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3Jn
L3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL3dlYmtpdC9nbHVlL3BsdWdpbnMvcGx1Z2luX2xpc3Rf
cG9zaXguY2MKLSAgICBHT3duUHRyPGdjaGFyPiBiYXNlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1l
KGZpbmFsUGF0aC5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJhc2VOYW1lKGdfcGF0
aF9nZXRfYmFzZW5hbWUoZmluYWxQYXRoLmdldCgpKSk7CiAgICAgaWYgKCFnX3N0cmNtcDAoYmFz
ZU5hbWUuZ2V0KCksICJsaWJmbGFzaHBsYXllci5zbyIpCiAgICAgICAgICYmIGdfc3Ryc3RyX2xl
bihmaW5hbFBhdGguZ2V0KCksIC0xLCAiL25ldHNjYXBlLyIpKQotICAgICAgICBmaW5hbFBhdGgu
c2V0KGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGZpbmFsUGF0aC5y
ZXNldChnX3N0cmR1cChtX3BhdGgudXRmOCgpLmRhdGEoKSkpOwogCiAgICAgbV9tb2R1bGUgPSBn
X21vZHVsZV9vcGVuKGZpbmFsUGF0aC5nZXQoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCBkYjk3YWVhLi43YTEwZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMTQtMDEtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHTElCXSBVc2UgR1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdP
d25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NzQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdV
bmlxdWVQdHIgaXMgYSB0ZW1wbGF0ZSBhbGlhcyBvZiBzdGQ6OnVuaXF1ZV9wdHIgd2l0aCBhIGN1
c3RvbQorICAgICAgICBkZWxldGVyIHRoYXQgcmVwbGFjZXMgR093blB0ci4gR093blB0ciBpcyBz
dGlsbCB1c2VkIGZvciB0aGUgY2FzZXMKKyAgICAgICAgd2hlcmUgdGhlIG91dHB1dCBwb2ludGVy
IGlzIG5lZWRlZCwgYnV0IGl0IHdpbGwgYWxzbyBiZSByZXBsYWNlZCBzb29uLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpnZXRVbmljb2RlTWVudUl0ZW1Qb3NpdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0
RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2Vy
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6YXNzaWduSWRlbnRp
ZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aCk6CisgICAgICAgIChX
ZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2Fk
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX3NldF9wYXRoKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0ZmlsZWNo
b29zZXJyZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6Cisg
ICAgICAgICh3ZWJraXRJbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0aGl0dGVzdHJlc3Vs
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdGlj
b25kYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRfaWNvbl9kYXRhYmFzZV9zZXRfcGF0aCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHNwZWxsY2hlY2tlcmVuY2hhbnQuY3BwOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwOgorICAgICAgICAod2Via2l0X3dlYl9wbHVn
aW5fZ2V0X3BhdGgpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmg6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdz
X2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19mb3J3YXJkX2NvbnRleHRfbWVudV9ldmVudCk6CisgICAgICAgIChmaWxl
Q2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2RyYWdfZW5kKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDoKKwog
MjAxNC0wMS0xOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBQYWdlIHNob3VsZCB1c2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBJbnNwZWN0b3JD
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKaW5kZXggOWViNzVkZS4uYWI1ZjUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51
Q2xpZW50R3RrLmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBpbnB1dE1l
dGhvZHNNZW51SXRlbSAoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogc3RhdGljIGludCBnZXRV
bmljb2RlTWVudUl0ZW1Qb3NpdGlvbihHdGtNZW51KiBtZW51KQogewotICAgIEdPd25QdHI8R0xp
c3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkp
KTsKKyAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJl
bihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAgICAgaW50IHVuaWNvZGVNZW51SXRlbVBvc2l0aW9u
ID0gLTE7CiAgICAgR0xpc3QqIGl0ZXI7CiAgICAgaW50IGkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAppbmRleCAwOTA1NWVi
Li4xMTExN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcApAQCAtMjgsOCArMjgsOCBAQAogI2luY2x1ZGUgIkRyYWdDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVk
ZSAiR093blB0ckd0ay5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKKyNpbmNsdWRlICJHVW5p
cXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgpAQCAtODEsNyArODEsNyBAQCB2
b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFBv
aW50JiBkcmFnSW1hZ2VPcmlnaW4sCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KGtpdCgmZnJhbWUpKTsKICAgICBSZWZQdHI8RGF0YU9i
amVjdEd0az4gZGF0YU9iamVjdCA9IGNsaXBib2FyZC5wYXN0ZWJvYXJkKCkuZGF0YU9iamVjdCgp
OwogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IGFkb3B0R1JlZihQYXN0
ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0Rm9yRGF0
YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7Ci0gICAgR093blB0cjxHZGtFdmVudD4gY3VycmVu
dEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50
PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkpOwogCiAgICAgR2RrRHJhZ0Nv
bnRleHQqIGNvbnRleHQgPSBndGtfZHJhZ19iZWdpbihHVEtfV0lER0VUKG1fd2ViVmlldyksIHRh
cmdldExpc3QuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKGNsaXBib2FyZC5z
b3VyY2VPcGVyYXRpb24oKSksIDEsIGN1cnJlbnRFdmVudC5nZXQoKSk7CiAgICAgd2ViVmlldy0+
cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuc3RhcnRlZERyYWcoY29udGV4dCwgZGF0YU9iamVjdC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCA4YzllNzYyLi5hZmE2YTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHZhbHVlKTsKLSAgICBHT3duUHRyPGdj
aGFyPiB2YWx1ZUJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUp
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdmFsdWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIq
PihnX21hbGxvYyhidWZmZXJTaXplKSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodmFs
dWUsIHZhbHVlQnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBpbnB1dEVsZW1lbnQtPnNl
dFZhbHVlRm9yVXNlcihTdHJpbmc6OmZyb21VVEY4KHZhbHVlQnVmZmVyLmdldCgpKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5o
CmluZGV4IDVmNTFjZmMuLmI0ODdiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVk
ZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoU1BFTExDSEVDSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAppbmRleCBhMTAxODE1Li4yYTI0NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CkBAIC05Nyw2ICs5Nyw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtMTIzLDcg
KzEyNCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhn
ZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsKLSAgICBHT3duUHRyPGdjaGFyPiB1c2VyQWdlbnRT
dHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoc2V0dGluZ3MsIHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXNlckFnZW50U3Ry
aW5nKHdlYmtpdFdlYlNldHRpbmdzVXNlckFnZW50Rm9yVVJJKHNldHRpbmdzLCB1cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHVzZXJBZ2Vu
dFN0cmluZy5nZXQoKSk7CiB9CiAKQEAgLTIwNCw3ICsyMDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpEb2N1bQogICAgIGlmIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVl
TW9kZUVuYWJsZWQoKSkgewogICAgICAgICBDU3RyaW5nIHVzZXJuYW1lOwogICAgICAgICBDU3Ry
aW5nIHBhc3N3b3JkOwotICAgICAgICBHT3duUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRv
U3RyaW5nKGlkZW50aWZpZXIpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gaWRlbnRpZmll
clN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CiAgICAgICAgIFdlYktpdFdlYlJlc291cmNl
KiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2UodmlldywgaWRlbnRp
ZmllclN0cmluZy5nZXQoKSk7CiAgICAgICAgIGlmICghRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpzX2F1dGhlbnRpY2F0aW9uQ2FsbGJhY2sgfHwgIUR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c19hdXRoZW50aWNhdGlvbkNhbGxiYWNrKHVzZXJuYW1lLCBwYXNzd29yZCwgd2ViUmVzb3VyY2Up
KSB7CiAgICAgICAgICAgICBjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQoKS0+cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CkBAIC0yNDQs
NyArMjQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICAgICAgbmV0d29ya1Jlc3Bv
bnNlID0gYWRvcHRHUmVmKGtpdE5ldyhyZWRpcmVjdFJlc3BvbnNlKSk7CiAKICAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKTsKLSAgICBHT3duUHRy
PGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5nKGlkZW50aWZpZXIpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBpZGVudGlmaWVyU3RyaW5nKHRvU3RyaW5nKGlkZW50aWZpZXIpKTsKICAg
ICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Jl
c291cmNlKHdlYlZpZXcsIGlkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOwogICAgIEdSZWZQdHI8V2Vi
S2l0TmV0d29ya1JlcXVlc3Q+IG5ldHdvcmtSZXF1ZXN0KGFkb3B0R1JlZihraXROZXcocmVxdWVz
dCkpKTsKIApAQCAtMjcwLDcgKzI3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEdPd25QdHI8Z2NoYXI+IGlk
ZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOwogCiAgICAgV2ViS2l0
V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0gV0VCS0lUX1dFQl9SRVNPVVJDRShnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfV0VCX1JFU09VUkNFLCAidXJpIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCAwKSk7CiAKQEAgLTMwMCw3ICszMDEsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciogbG9hZAogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwotICAgIEdPd25QdHI8Z2No
YXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRlbnRpZmllcikpOwogICAgIFdl
YktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfcmVzb3Vy
Y2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiAgICAgR1JlZlB0cjxXZWJLaXRO
ZXR3b3JrUmVzcG9uc2U+IG5ldHdvcmtSZXNwb25zZShhZG9wdEdSZWYoa2l0TmV3KHJlc3BvbnNl
KSkpOwogCkBAIC05NDIsNyArOTQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXIKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVu
Z3RoKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRl
bnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJp
bmcoaWRlbnRpZmllcikpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdl
YmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQo
KSk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2ViUmVzb3VyY2UsICJjb250ZW50LWxl
bmd0aC1yZWNlaXZlZCIsIGRhdGFMZW5ndGgpOwpAQCAtOTU1LDcgKzk1Niw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciogbG9hZGVyCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpEb2N1bWVudExvYWRlcio+
KGxvYWRlciktPmRlY3JlYXNlTG9hZENvdW50KGlkZW50aWZpZXIpOwogCiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSk7Ci0gICAgR093blB0cjxn
Y2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gaWRlbnRpZmllclN0cmluZyh0b1N0cmluZyhpZGVudGlmaWVyKSk7CiAgICAg
V2ViS2l0V2ViUmVzb3VyY2UqIHdlYlJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9yZXNv
dXJjZSh3ZWJWaWV3LCBpZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIAogICAgIC8vIEEgTlVMTCBX
ZWJSZXNvdXJjZSBtZWFucyB0aGUgbG9hZCBoYXMgYmVlbiBpbnRlcnJ1cHRlZCwgYW5kCkBAIC05
ODgsNyArOTg5LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLAogICAgIHN0YXRpY19jYXN0PFdl
YktpdDo6RG9jdW1lbnRMb2FkZXIqPihsb2FkZXIpLT5kZWNyZWFzZUxvYWRDb3VudChpZGVudGlm
aWVyKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1f
ZnJhbWUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJpbmcoaWRl
bnRpZmllcikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlkZW50aWZpZXJTdHJpbmcodG9TdHJp
bmcoaWRlbnRpZmllcikpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSA9IHdl
YmtpdF93ZWJfdmlld19nZXRfcmVzb3VyY2Uod2ViVmlldywgaWRlbnRpZmllclN0cmluZy5nZXQo
KSk7CiAKICAgICAvLyBBIE5VTEwgV2ViUmVzb3VyY2UgbWVhbnMgdGhlIGxvYWQgaGFzIGJlZW4g
aW50ZXJydXB0ZWQsIGFuZApAQCAtOTk2LDkgKzk5Nyw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwKICAgICBpZiAoIXdlYlJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRy
PEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5n
KGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJv
cihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSksCisgICAgICAgIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZSh3ZWJSZXNvdXJjZSwgImxvYWQtZmFpbGVkIiwgd2ViRXJyb3IuZ2V0KCkpOwogICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX2ZyYW1lLCAicmVzb3VyY2UtbG9hZC1mYWlsZWQiLCB3ZWJS
ZXNvdXJjZSwgd2ViRXJyb3IuZ2V0KCkpOwpAQCAtMTAyNiw3ICsxMDI2LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBub3RpZnlTdGF0dXMobV9mcmFtZSwgV0VCS0lUX0xPQURfRkFJTEVEKTsKIAog
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOwot
ICAgIEdPd25QdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKAorICAgIEdV
bmlxdWVQdHI8R0Vycm9yPiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKAogICAgICAgICBn
X3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAg
ICBlcnJvci5lcnJvckNvZGUoKSwKICAgICAgICAgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KS51dGY4KCkuZGF0YSgpKSk7CkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIG1fbG9hZGluZ0Vycm9yUGFnZSA9IHRydWU7CiAKICAgICBTdHJpbmcgY29udGVudDsKLSAg
ICBHT3duUHRyPGdjaGFyPiBlcnJvclBhdGgoZ19idWlsZF9maWxlbmFtZShzaGFyZWRSZXNvdXJj
ZXNQYXRoKCkuZGF0YSgpLCAicmVzb3VyY2VzIiwgImVycm9yLmh0bWwiLCBOVUxMKSk7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZXJyb3JQYXRoKGdfYnVpbGRfZmlsZW5hbWUoc2hhcmVkUmVzb3Vy
Y2VzUGF0aCgpLmRhdGEoKSwgInJlc291cmNlcyIsICJlcnJvci5odG1sIiwgTlVMTCkpOwogICAg
IEdSZWZQdHI8R0ZpbGU+IGVycm9yRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KGVycm9yUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKCFlcnJvckZpbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4
IDcxNDFjZmYuLmI5MmE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVk
ZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhZ2U7CkBAIC03MSw3
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3
OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAgIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwotICAgIEdPd25QdHI8Z2NoYXI+IG1faW5zcGVj
dG9yRmlsZXNQYXRoOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1faW5zcGVjdG9yRmlsZXNQYXRo
OwogfTsKIAogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCmluZGV4IDBlMmNlNmMuLjFkOTYwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJh
c2UuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAvKioKQEAgLTE4OCw3ICsxODgsNyBAQCB0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8UGVuZGluZ0ljb25SZXF1ZXN0PiA+IFBlbmRpbmdJY29uUmVxdWVzdFZlY3Rv
cjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBlbmRpbmdJY29uUmVxdWVzdFZlY3Rvcio+IFBl
bmRpbmdJY29uUmVxdWVzdE1hcDsKIAogc3RydWN0IF9XZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2
YXRlIHsKLSAgICBHT3duUHRyPGdjaGFyPiBwYXRoOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBh
dGg7CiAgICAgSWNvbkRhdGFiYXNlQ2xpZW50R3RrIGljb25EYXRhYmFzZUNsaWVudDsKICAgICBQ
ZW5kaW5nSWNvblJlcXVlc3RNYXAgcGVuZGluZ0ljb25SZXF1ZXN0czsKICAgICBib29sIGltcG9y
dEZpbmlzaGVkOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJh
c2Vfc2V0X3BhdGgoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgZ2NoCiAK
ICAgICBkYXRhYmFzZS0+cHJpdi0+aW1wb3J0RmluaXNoZWQgPSBmYWxzZTsKICAgICBpZiAoIXBh
dGggfHwgIXBhdGhbMF0pIHsKLSAgICAgICAgZGF0YWJhc2UtPnByaXYtPnBhdGguc2V0KDApOwor
ICAgICAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldCgpOwogICAgICAgICBpY29uRGF0YWJh
c2UoKS5zZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1OCw3
ICszNTgsNyBAQCB2b2lkIHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX3NldF9wYXRoKFdlYktpdEZh
dmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IGdjaAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgZGF0YWJhc2UtPnByaXYtPnBhdGguc2V0KGdfc3RyZHVwKHBhdGgpKTsKKyAgICBk
YXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldChnX3N0cmR1cChwYXRoKSk7CiB9CiAKIC8qKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZpbGVjaG9vc2VycmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0
LmNwcAppbmRleCBjMTM3M2VkLi4xYTIyODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0LmNwcApAQCAtMjUsNyArMjUsNiBA
QAogI2luY2x1ZGUgIndlYmtpdGZpbGVjaG9vc2VycmVxdWVzdHByaXZhdGUuaCIKICNpbmNsdWRl
ICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAppbmRleCBmNjFjOGUyLi5hZmYyNzYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwCkBAIC01Myw4ICs1Myw4
IEBACiAjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogc3RhdGljIFdlYktpdENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCA9IFdFQktJVF9DQUNIRV9NT0RFTF9ERUZBVUxUOwogCkBAIC01NTAsMTUgKzU1
MCwxNSBAQCB2b2lkIHdlYmtpdEluaXQoKQogICAgIC8vIHRoYXQgbWF5IG9ubHkgYmUgZG9uZSBi
eSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYXRvbWljQ2Fub25pY2FsVGV4dEVuY29kaW5nTmFtZSgi
VVRGLTgiKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0IiwgImRhdGFiYXNlcyIsIE5V
TEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdCIsICJkYXRhYmFzZXMiLCBOVUxM
KSk7CiAgICAgd2Via2l0X3NldF93ZWJfZGF0YWJhc2VfZGlyZWN0b3J5X3BhdGgoZGF0YWJhc2VE
aXJlY3RvcnkuZ2V0KCkpOwogCi0gICAgR093blB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgImFwcGxp
Y2F0aW9ucyIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCAiYXBw
bGljYXRpb25zIiwgTlVMTCkpOwogICAgIFdlYkNvcmU6OmNhY2hlU3RvcmFnZSgpLnNldENhY2hl
RGlyZWN0b3J5KGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKIAogICAgIFBhZ2VHcm91cDo6c2V0U2hv
dWxkVHJhY2tWaXNpdGVkTGlua3ModHJ1ZSk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBpY29uRGF0
YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0
IiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBpY29uRGF0
YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0
IiwgImljb25kYXRhYmFzZSIsIE5VTEwpKTsKICAgICB3ZWJraXRfaWNvbl9kYXRhYmFzZV9zZXRf
cGF0aCh3ZWJraXRfZ2V0X2ljb25fZGF0YWJhc2UoKSwgaWNvbkRhdGFiYXNlUGF0aC5nZXQoKSk7
CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0SWdub3JlU1NMRXJyb3JzKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1
bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3Bw
CmluZGV4IGNiNDFlZGQuLjA5NjM1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTMwLDggKzMwLDggQEAKICNpbmNsdWRlICJ3
ZWJraXRnbG9iYWxzLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogLyoqCkBAIC0y
ODMsMjYgKzI4MywyNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYktpdEhpdFRlc3RSZXN1bHQq
IGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZ3VpbnQg
Y29udGV4dCA9IFdFQktJVF9ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9ET0NVTUVOVDsKLSAgICBH
T3duUHRyPGNoYXI+IGxpbmtVUkkoMCk7Ci0gICAgR093blB0cjxjaGFyPiBpbWFnZVVSSSgwKTsK
LSAgICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJKDApOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbGlu
a1VSSTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGltYWdlVVJJOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gbWVkaWFVUkk7CiAgICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IDA7CiAgICAgV2ViQ29yZTo6
RnJhbWUqIGlubmVyTm9kZUZyYW1lOwogICAgIFdlYkNvcmU6OkludFBvaW50IHBvaW50OwogCiAg
ICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNv
bnRleHQgfD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0xJTks7Ci0gICAgICAgIGxp
bmtVUkkuc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKSk7CisgICAgICAgIGxpbmtVUkkucmVzZXQoZ19zdHJkdXAocmVzdWx0LmFic29s
dXRlTGlua1VSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAKICAgICBpZiAo
IXJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnRleHQg
fD0gV0VCS0lUX0hJVF9URVNUX1JFU1VMVF9DT05URVhUX0lNQUdFOwotICAgICAgICBpbWFnZVVS
SS5zZXQoZ19zdHJkdXAocmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKSk7CisgICAgICAgIGltYWdlVVJJLnJlc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0
ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KIAogICAgIGlmICgh
cmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgY29udGV4dCB8
PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfTUVESUE7Ci0gICAgICAgIG1lZGlhVVJJ
LnNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpKTsKKyAgICAgICAgbWVkaWFVUkkucmVzZXQoZ19zdHJkdXAocmVzdWx0LmFic29sdXRl
TWVkaWFVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHJl
c3VsdC5pc1NlbGVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0aWNvbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRp
Y29uZGF0YWJhc2UuY3BwCmluZGV4IDcwYjUxMTQuLjQxMmQyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRpY29uZGF0YWJhc2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAjaW5jbHVkZSAid2Via2l0c2VjdXJpdHlvcmlnaW5wcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAvKioKQEAgLTgwLDcgKzgwLDcgQEAg
c3RhdGljIGd1aW50IHdlYmtpdF9pY29uX2RhdGFiYXNlX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0g
eyAwLCB9OwogR19ERUZJTkVfVFlQRShXZWJLaXRJY29uRGF0YWJhc2UsIHdlYmtpdF9pY29uX2Rh
dGFiYXNlLCBHX1RZUEVfT0JKRUNUKTsKIAogc3RydWN0IF9XZWJLaXRJY29uRGF0YWJhc2VQcml2
YXRlIHsKLSAgICBHT3duUHRyPGdjaGFyPiBwYXRoOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBh
dGg7CiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfaWNvbl9kYXRhYmFzZV9maW5hbGl6ZShHT2Jq
ZWN0KiBvYmplY3QpCkBAIC0yMzQsMTIgKzIzNCwxMiBAQCB2b2lkIHdlYmtpdF9pY29uX2RhdGFi
YXNlX3NldF9wYXRoKFdlYktpdEljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IGdjaGFyKiBw
YQogICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5jbG9zZSgpOwogCiAgICAgaWYgKCEo
cGF0aCAmJiBwYXRoWzBdKSkgewotICAgICAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5zZXQoMCk7
CisgICAgICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KCk7CiAgICAgICAgIFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgZGF0YWJhc2UtPnByaXYtPnBhdGguc2V0KGdfc3RyZHVwKHBhdGgpKTsKKyAgICBk
YXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldChnX3N0cmR1cChwYXRoKSk7CiAKICAgICBXZWJDb3Jl
OjppY29uRGF0YWJhc2UoKS5zZXRFbmFibGVkKHRydWUpOwogICAgIFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLm9wZW4oV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZS0+cHJpdi0+cGF0
aC5nZXQoKSksIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxjaGVj
a2VyZW5jaGFudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0c3BlbGxjaGVj
a2VyZW5jaGFudC5jcHAKaW5kZXggZTQ2MTQwOC4uMGM0ZDcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHNwZWxsY2hlY2tlcmVuY2hhbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRzcGVsbGNoZWNrZXJlbmNoYW50LmNwcApAQCAt
MjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIndlYmtpdHNwZWxsY2hlY2tlci5oIgogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVn
aW4uY3BwCmluZGV4IDczYjQyZWUuLmNlYzYxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAid2Vi
a2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+CiAKIC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJwbHVnaW4KQEAgLTE5MiwxNCArMTkz
LDE0IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF93ZWJfcGx1Z2luX2dldF9wYXRoKFdlYktpdFdlYlBs
dWdpbiogcGx1Z2luKQogICAgICAgICByZXR1cm4gcHJpdi0+cGF0aC5nZXQoKTsKIAogICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBwcml2LT5wYXRoLnNldChnX2ZpbGVuYW1lX2Zyb21f
dXRmOChwcml2LT5jb3JlUGx1Z2luLT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsICZl
cnJvci5vdXRQdHIoKSkpOworICAgIHByaXYtPnBhdGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0
ZjgocHJpdi0+Y29yZVBsdWdpbi0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmZXJy
b3Iub3V0UHRyKCkpKTsKIAogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybiBwcml2LT5w
YXRoLmdldCgpOwogCiAgICAgLy8gSW4gdGhlIHVubGlrZWx5IGNhc2UgdGhlIGNvbnZlcnRpb24g
ZmFpbHMsIHJlcG9ydCB0aGUgZXJyb3IgYW5kIG1ha2Ugc3VyZSB3ZSBmcmVlCiAgICAgLy8gYW55
IHBhcnRpYWwgY29udmVydGlvbiB0aGF0IGVuZGVkIHVwIGluIHRoZSB2YXJpYWJsZS4KLSAgICBw
cml2LT5wYXRoLmNsZWFyKCk7CisgICAgcHJpdi0+cGF0aC5yZXNldCgpOwogCiAgICAgZ193YXJu
aW5nKCJGYWlsZWQgdG8gY29udmVydCAnJXMnIHRvIHN5c3RlbSBmaWxlbmFtZSBlbmNvZGluZzog
JXMiLCBwcml2LT5jb3JlUGx1Z2luLT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3Nh
Z2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicGx1
Z2lucHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbnBy
aXZhdGUuaAppbmRleCA1MDdmNzJlLi5lZDIxNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2VicGx1Z2lucHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJwbHVnaW5wcml2YXRlLmgKQEAgLTIxLDcgKzIxLDcgQEAKIAog
I2luY2x1ZGUgIndlYmtpdHdlYnBsdWdpbi5oIgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJQbHVnaW5Qcml2YXRl
IHsKICAgICBSZWZQdHI8V2ViQ29yZTo6UGx1Z2luUGFja2FnZT4gY29yZVBsdWdpbjsKICAgICBD
U3RyaW5nIG5hbWU7CiAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbjsKLSAgICBHT3duUHRyPGNoYXI+
IHBhdGg7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwYXRoOwogICAgIEdTTGlzdCogbWltZVR5cGVz
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5j
cHAKaW5kZXggMDlhY2NmOC4uM2FjZWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAid2Vi
a2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR2ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAid2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUu
aD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgpAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzKiBrbGFzcykKICAgICAqCiAgICAgKiBTaW5jZTogMS41LjIKICAgICAqLwotICAgIEdPd25Q
dHI8Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Rh
dGFfZGlyKCksICJ3ZWJraXQiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3ZWJraXQiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOwogICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBST1BfSFRNTDVfTE9DQUxfU1RPUkFHRV9EQVRBQkFTRV9QQVRILAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygiaHRt
bDUtbG9jYWwtc3RvcmFnZS1kYXRhYmFzZS1wYXRoIiwKQEAgLTE0ODAsOSArMTQ4MCw5IEBAIFdl
YktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpCiBXZWJLaXRXZWJTZXR0
aW5ncyogd2Via2l0X3dlYl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNldHRpbmdzKiBvcmlnaW5h
bCkKIHsKICAgICB1bnNpZ25lZCBudW1iZXJPZlByb3BlcnRpZXMgPSAwOwotICAgIEdPd25QdHI8
R1BhcmFtU3BlYyo+IHByb3BlcnRpZXMoZ19vYmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKAor
ICAgIEdVbmlxdWVQdHI8R1BhcmFtU3BlYyo+IHByb3BlcnRpZXMoZ19vYmplY3RfY2xhc3NfbGlz
dF9wcm9wZXJ0aWVzKAogICAgICAgICBHX09CSkVDVF9DTEFTUyhXRUJLSVRfV0VCX1NFVFRJTkdT
X0dFVF9DTEFTUyhvcmlnaW5hbCkpLCAmbnVtYmVyT2ZQcm9wZXJ0aWVzKSk7Ci0gICAgR093blB0
cjxHUGFyYW1ldGVyPiBwYXJhbWV0ZXJzKGdfbmV3MChHUGFyYW1ldGVyLCBudW1iZXJPZlByb3Bl
cnRpZXMpKTsKKyAgICBHVW5pcXVlUHRyPEdQYXJhbWV0ZXI+IHBhcmFtZXRlcnMoZ19uZXcwKEdQ
YXJhbWV0ZXIsIG51bWJlck9mUHJvcGVydGllcykpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZlByb3BlcnRpZXM7IGkrKykgewogICAgICAgICBHUGFyYW1TcGVjKiBwcm9w
ZXJ0eSA9IHByb3BlcnRpZXMuZ2V0KClbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggYjRmOWE5Yy4uMzVkOGQ0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkdPd25QdHJHdGsuaCIKKyNpbmNsdWRl
ICJHVW5pcXVlUHRyR3RrLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25DbGllbnRHdGsuaCIKICNp
bmNsdWRlICJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKQEAgLTQxOSw3ICs0MTksNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2ZvcndhcmRfY29udGV4dF9tZW51X2V2ZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZQogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbUE9QVUxBVEVfUE9Q
VVBdLCAwLCBkZWZhdWx0TWVudSk7CiAKICAgICAvLyBJZiB0aGUgY29udGV4dCBtZW51IGlzIG5v
dyBlbXB0eSwgZG9uJ3Qgc2hvdyBpdC4KLSAgICBHT3duUHRyPEdMaXN0PiBpdGVtcyhndGtfY29u
dGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKGRlZmF1bHRNZW51KSkpOworICAgIEdV
bmlxdWVQdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05U
QUlORVIoZGVmYXVsdE1lbnUpKSk7CiAgICAgaWYgKCFpdGVtcykKICAgICAgICAgcmV0dXJuIEZB
TFNFOwogCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxv
Z1Jlc3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogewog
ICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiBhZG9wdGVkUmVxdWVzdCA9IGFk
b3B0R1JlZihyZXF1ZXN0KTsKICAgICBpZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfQUND
RVBUKSB7Ci0gICAgICAgIEdPd25QdHI8R1NMaXN0PiBmaWxlc0xpc3QoZ3RrX2ZpbGVfY2hvb3Nl
cl9nZXRfZmlsZW5hbWVzKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSkpOworICAgICAgICBHVW5p
cXVlUHRyPEdTTGlzdD4gZmlsZXNMaXN0KGd0a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lcyhH
VEtfRklMRV9DSE9PU0VSKGRpYWxvZykpKTsKICAgICAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGZp
bGVzQXJyYXkgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3KCkpOwogICAgICAgICBmb3IgKEdT
TGlzdCogZmlsZSA9IGZpbGVzTGlzdC5nZXQoKTsgZmlsZTsgZmlsZSA9IGdfc2xpc3RfbmV4dChm
aWxlKSkKICAgICAgICAgICAgIGdfcHRyX2FycmF5X2FkZChmaWxlc0FycmF5LmdldCgpLCBmaWxl
LT5kYXRhKTsKQEAgLTE1MTIsNyArMTUxMiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19kcmFnX2VuZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiAg
ICAgRnJhbWUmIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAKICAgICAvLyBTeW50aGVzaXplIGEgYnV0dG9uIHJlbGVhc2UgZXZl
bnQgdG8gc2VuZCB3aXRoIHRoZSBkcmFnIGVuZCBhY3Rpb24uCi0gICAgR093blB0cjxHZGtFdmVu
dD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1JFTEVBU0UpKTsKKyAgICBHVW5pcXVl
UHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUkVMRUFTRSkpOwog
ICAgIGludCB4LCB5LCB4Um9vdCwgeVJvb3Q7CiAgICAgR2RrTW9kaWZpZXJUeXBlIG1vZGlmaWVy
cyA9IHN0YXRpY19jYXN0PEdka01vZGlmaWVyVHlwZT4oMCk7CiAjaWZkZWYgR1RLX0FQSV9WRVJT
SU9OXzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRl
LmgKaW5kZXggYWVlZmJkMC4uYjVlNjk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJX
ZWJWaWV3SW5wdXRNZXRob2RGaWx0ZXIuaCIKICNpbmNsdWRlICJXaWRnZXRCYWNraW5nU3RvcmUu
aCIKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVkZSAiVXNl
ck1lZGlhQ2xpZW50R3RrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDM1Y2JiYy4uYWJhZWY2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDg2IEBACiAyMDE0LTAxLTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR0xJQl0gVXNlIEdVbmlxdWVQdHIgaW5z
dGVhZCBvZiBHT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBHVW5pcXVlUHRyIGlzIGEgdGVtcGxhdGUgYWxpYXMgb2Ygc3RkOjp1bmlxdWVfcHRy
IHdpdGggYSBjdXN0b20KKyAgICAgICAgZGVsZXRlciB0aGF0IHJlcGxhY2VzIEdPd25QdHIuIEdP
d25QdHIgaXMgc3RpbGwgdXNlZCBmb3IgdGhlIGNhc2VzCisgICAgICAgIHdoZXJlIHRoZSBvdXRw
dXQgcG9pbnRlciBpcyBuZWVkZWQsIGJ1dCBpdCB3aWxsIGFsc28gYmUgcmVwbGFjZWQgc29vbi4K
KworICAgICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBTaGFyZWQvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oOgorICAgICAgICAqIFNoYXJlZC9O
YXRpdmVXZWJNb3VzZUV2ZW50Lmg6CisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZl
bnQuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAg
ICAgKElQQzo6ZW5jb2RlR0tleUZpbGUpOgorICAgICAgICAoSVBDOjpkZWNvZGVHS2V5RmlsZSk6
CisgICAgICAgIChJUEM6OmVuY29kZSk6CisgICAgICAgIChJUEM6OmRlY29kZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAg
KHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1lbnVGcm9tR3RrTWVudSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwOgorICAgICAgICAod2Via2l0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbik6CisgICAgICAgICh3ZWJraXREb3dubG9hZE5vdGlmeVBy
b2dyZXNzKToKKyAgICAgICAgKHdlYmtpdERvd25sb2FkRmFpbGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAod2Vi
a2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9maWxlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoZGlk
UmVjZWl2ZVdlYlZpZXdNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKGdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKGRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJh
dGlvbi5jcHA6CisgICAgICAgIChkcmF3UGFnZXNGb3JQcmludGluZ0NvbXBsZXRlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHA6CisgICAgICAgICh3
ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUpOgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVf
cmVxdWVzdF9nZXRfcGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgIChpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0xvYWRGYWlsKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDcmVhdGVKYXZhU2Ny
aXB0RGlhbG9nKToKKyAgICAgICAgKGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0xvYWRGYWlsZWRXaXRoVExTRXJyb3JzKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdQb3B1
bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2
ZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29ubmVjdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6cGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdERhdGFiYXNlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNl
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
RGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJD
b250ZXh0TWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udGV4dE1lbnVJdGVt
VmlzaWJpbGl0eUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9y
UHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBvcHVw
TWVudVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlHdGs6
OmNyZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1J
bml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0
ay5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZCk6CisKKzIw
MTQtMDEtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAg
ICAgICAgIFJFR1JFU1NJT04ocjE2MjQ0MSk6IFtHVEtdIFJlc291cmNlTG9hZGVyIGlzIGJyb2tl
biB3aGVuIHRoZXJlIGFyZW4ndCB1c2VyIGV4dGVuc2lvbnMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmluZGV4IDI4YjFk
Y2QuLjg2Y2RjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMv
c291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8Z2lv
L2dpby5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTk0
LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBtX2Rlc3RpbmF0aW9uVVJJID0gbV9kb3dubG9h
ZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5h
bWUsIG92ZXJ3cml0ZSk7CiAgICAgICAgIGlmIChtX2Rlc3RpbmF0aW9uVVJJLmlzRW1wdHkoKSkg
ewogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgICAgIEdPd25QdHI8Y2hhcj4gYnVmZmVyKGdf
c3RyZHVwX3ByaW50ZihfKCJDYW5ub3QgZGV0ZXJtaW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93
bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgJXMiKSwgc3VnZ2VzdGVkRmlsZW5hbWUudXRm
OCgpLmRhdGEoKSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidWZmZXIoZ19zdHJk
dXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1pbmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9h
ZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAlcyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCku
ZGF0YSgpKSk7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9t
VVRGOChidWZmZXIuZ2V0KCkpOwogI2Vsc2UKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJDYW5ub3QgZGV0ZXJtaW5lIGRlc3RpbmF0aW9uIFVSSSBmb3IgZG93
bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgKaW5kZXggYzE3
YjM0Mi4uZGZjODNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YktleWJvYXJkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogT0JKQ19DTEFTUyBOU1ZpZXc7CiAjZWxpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSA8R093
blB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29tcG9zaXRpb25SZXN1bHRzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtJbnB1
dE1ldGhvZEZpbHRlci5oPgogdHlwZWRlZiB1bmlvbiBfR2RrRXZlbnQgR2RrRXZlbnQ7CiAjZWxp
ZiBQTEFURk9STShFRkwpCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUEtJ
VCkKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JN
KEdUSykKLSAgICBHT3duUHRyPEdka0V2ZW50PiBtX25hdGl2ZUV2ZW50OworICAgIEdVbmlxdWVQ
dHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAgICAgV2ViQ29yZTo6Q29tcG9zaXRpb25SZXN1
bHRzIG1fY29tcG9zaXRpb25SZXN1bHRzOwogICAgIGJvb2wgbV9mYWtlRXZlbnRGb3JDb21wb3Np
dGlvbjsKICNlbGlmIFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViTW91c2VFdmVudC5oCmluZGV4IGUxZDRkMmEuLjJiNzdmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJNb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYk1vdXNlRXZlbnQuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIE9CSkNfQ0xBU1MgTlNWaWV3OwogI2VsaWYgUExBVEZPUk0o
R1RLKQotI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQ
dHJHdGsuaD4KIHR5cGVkZWYgdW5pb24gX0dka0V2ZW50IEdka0V2ZW50OwogI2VsaWYgUExBVEZP
Uk0oRUZMKQogI2luY2x1ZGUgPEV2YXMuaD4KQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICNp
ZiBVU0UoQVBQS0lUKQogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2Vs
aWYgUExBVEZPUk0oR1RLKQotICAgIEdPd25QdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7Cisg
ICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEVG
TCkKICAgICBjb25zdCB2b2lkKiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCAxOWRlYmFhLi5hZWQzMDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKQEAgLTMyLDcg
KzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBPQkpDX0NMQVNTIE5TVmlldzsK
ICNlbGlmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiB0eXBlZGVmIHVuaW9uIF9HZGtFdmVudCBHZGtFdmVu
dDsKICNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxFdmFzLmg+CkBAIC02Niw3ICs2Niw3
IEBAIHByaXZhdGU6CiAjaWYgVVNFKEFQUEtJVCkKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9u
YXRpdmVFdmVudDsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICBHT3duUHRyPEdka0V2ZW50PiBt
X25hdGl2ZUV2ZW50OworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAj
ZWxpZiBQTEFURk9STShFRkwpCiAgICAgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogbV9u
YXRpdmVFdmVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAppbmRleCAxMTJlNzk4Li40MmMzYWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWly
by5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKQEAgLTIzNywxMSArMjM3LDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxE
cmFnRGF0YT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFn
RGF0CiBzdGF0aWMgdm9pZCBlbmNvZGVHS2V5RmlsZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IEdLZXlGaWxlKiBrZXlGaWxlKQogewogICAgIGdzaXplIGRhdGFTaXplOwotICAgIEdPd25QdHI8
Y2hhcj4gZGF0YShnX2tleV9maWxlX3RvX2RhdGEoa2V5RmlsZSwgJmRhdGFTaXplLCAwKSk7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBkYXRhKGdfa2V5X2ZpbGVfdG9fZGF0YShrZXlGaWxlLCAmZGF0
YVNpemUsIDApKTsKICAgICBlbmNvZGVyIDw8IERhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YS5nZXQoKSksIGRhdGFTaXplKTsKIH0KIAotc3RhdGljIGJvb2wgZGVj
b2RlR0tleUZpbGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBHT3duUHRyPEdLZXlGaWxlPiYg
a2V5RmlsZSkKK3N0YXRpYyBib29sIGRlY29kZUdLZXlGaWxlKEFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgR1VuaXF1ZVB0cjxHS2V5RmlsZT4mIGtleUZpbGUpCiB7CiAgICAgRGF0YVJlZmVyZW5j
ZSBkYXRhUmVmZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkp
CkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIGJvb2wgZGVjb2RlR0tleUZpbGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBHT3duUHRyPEdLZXlGaWxlPiYga2V5RmlsZSkKICAgICBpZiAoIWRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGtleUZpbGUu
c2V0KGdfa2V5X2ZpbGVfbmV3KCkpOworICAgIGtleUZpbGUucmVzZXQoZ19rZXlfZmlsZV9uZXco
KSk7CiAgICAgaWYgKCFnX2tleV9maWxlX2xvYWRfZnJvbV9kYXRhKGtleUZpbGUuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpLCBHX0tFWV9GSUxFX05PTkUsIDApKSB7Ci0gICAgICAgIGtleUZpbGUu
Y2xlYXIoKTsKKyAgICAgICAga2V5RmlsZS5yZXNldCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0yNjEsMTQgKzI2MSwxNCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVHS2V5Rmls
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEdPd25QdHI8R0tleUZpbGU+JiBrZXlGaWxlKQog
CiB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIEd0a1ByaW50U2V0dGluZ3Mq
IHByaW50U2V0dGluZ3MpCiB7Ci0gICAgR093blB0cjxHS2V5RmlsZT4ga2V5RmlsZShnX2tleV9m
aWxlX25ldygpKTsKKyAgICBHVW5pcXVlUHRyPEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5X2ZpbGVf
bmV3KCkpOwogICAgIGd0a19wcmludF9zZXR0aW5nc190b19rZXlfZmlsZShwcmludFNldHRpbmdz
LCBrZXlGaWxlLmdldCgpLCAiUHJpbnQgU2V0dGluZ3MiKTsKICAgICBlbmNvZGVHS2V5RmlsZShl
bmNvZGVyLCBrZXlGaWxlLmdldCgpKTsKIH0KIAogYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+JiBwcmludFNldHRpbmdzKQogewot
ICAgIEdPd25QdHI8R0tleUZpbGU+IGtleUZpbGU7CisgICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4g
a2V5RmlsZTsKICAgICBpZiAoIWRlY29kZUdLZXlGaWxlKGRlY29kZXIsIGtleUZpbGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI4NCwxNCArMjg0LDE0IEBAIGJvb2wgZGVjb2RlKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgR1JlZlB0cjxHdGtQcmludFNldHRpbmdzPiYgcHJpbnRT
ZXR0aW5ncykKIAogdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBHdGtQYWdl
U2V0dXAqIHBhZ2VTZXR1cCkKIHsKLSAgICBHT3duUHRyPEdLZXlGaWxlPiBrZXlGaWxlKGdfa2V5
X2ZpbGVfbmV3KCkpOworICAgIEdVbmlxdWVQdHI8R0tleUZpbGU+IGtleUZpbGUoZ19rZXlfZmls
ZV9uZXcoKSk7CiAgICAgZ3RrX3BhZ2Vfc2V0dXBfdG9fa2V5X2ZpbGUocGFnZVNldHVwLCBrZXlG
aWxlLmdldCgpLCAiUGFnZSBTZXR1cCIpOwogICAgIGVuY29kZUdLZXlGaWxlKGVuY29kZXIsIGtl
eUZpbGUuZ2V0KCkpOwogfQogCiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IEdSZWZQdHI8R3RrUGFnZVNldHVwPiYgcGFnZVNldHVwKQogewotICAgIEdPd25QdHI8R0tleUZp
bGU+IGtleUZpbGU7CisgICAgR1VuaXF1ZVB0cjxHS2V5RmlsZT4ga2V5RmlsZTsKICAgICBpZiAo
IWRlY29kZUdLZXlGaWxlKGRlY29kZXIsIGtleUZpbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IGU3NTJiNmEuLmM1ZTQ1NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmNwcApAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMTIzLDcgKzEyMyw3IEBAIHZv
aWQgd2Via2l0Q29udGV4dE1lbnVJdGVtU2V0U3ViTWVudUZyb21HdGtNZW51KFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSwgR3RrCiAgICAgaWYgKCFzdWJNZW51KQogICAgICAgICByZXR1cm47
CiAKLSAgICBHT3duUHRyPEdMaXN0PiBjaGlsZHJlbihndGtfY29udGFpbmVyX2dldF9jaGlsZHJl
bihHVEtfQ09OVEFJTkVSKHN1Yk1lbnUpKSk7CisgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRy
ZW4oZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihzdWJNZW51KSkpOwog
ICAgIGlmICghZ19saXN0X2xlbmd0aChjaGlsZHJlbi5nZXQoKSkpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxv
YWQuY3BwCmluZGV4IGZmNmQyYzQuLmU5NWU0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKQEAgLTI4LDggKzI4LDggQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTgwLDcgKzgwLDcgQEAgc3RydWN0IF9X
ZWJLaXREb3dubG9hZFByaXZhdGUgewogICAgIENTdHJpbmcgZGVzdGluYXRpb25VUkk7CiAgICAg
Z3VpbnQ2NCBjdXJyZW50U2l6ZTsKICAgICBib29sIGlzQ2FuY2VsbGVkOwotICAgIEdPd25QdHI8
R1RpbWVyPiB0aW1lcjsKKyAgICBHVW5pcXVlUHRyPEdUaW1lcj4gdGltZXI7CiAgICAgZ2RvdWJs
ZSBsYXN0UHJvZ3Jlc3M7CiAgICAgZ2RvdWJsZSBsYXN0RWxhcHNlZDsKIH07CkBAIC0xMTMsMTQg
KzExMywxNCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bihXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0CiAgICAgaWYgKCFkb3dubG9hZC0+cHJp
di0+ZGVzdGluYXRpb25VUkkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAg
IEdPd25QdHI8Y2hhcj4gZmlsZW5hbWUoZ19zdHJkZWxpbWl0KGdfc3RyZHVwKHN1Z2dlc3RlZEZp
bGVuYW1lKSwgR19ESVJfU0VQQVJBVE9SX1MsICdfJykpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZmlsZW5hbWUoZ19zdHJkZWxpbWl0KGdfc3RyZHVwKHN1Z2dlc3RlZEZpbGVuYW1lKSwgR19ESVJf
U0VQQVJBVE9SX1MsICdfJykpOwogICAgIGNvbnN0IGdjaGFyICpkb3dubG9hZHNEaXIgPSBnX2dl
dF91c2VyX3NwZWNpYWxfZGlyKEdfVVNFUl9ESVJFQ1RPUllfRE9XTkxPQUQpOwogICAgIGlmICgh
ZG93bmxvYWRzRGlyKSB7CiAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgWERHIHVzZXIgZGly
cyBpbmZvLCBzZXQganVzdCB0byBIT01FLgogICAgICAgICBkb3dubG9hZHNEaXIgPSBnX2dldF9o
b21lX2RpcigpOwogICAgIH0KLSAgICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRf
ZmlsZW5hbWUoZG93bmxvYWRzRGlyLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOwotICAgIEdPd25Q
dHI8Y2hhcj4gZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0
KCksIDAsIDApKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmls
ZW5hbWUoZG93bmxvYWRzRGlyLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0
KCksIDAsIDApKTsKICAgICBkb3dubG9hZC0+cHJpdi0+ZGVzdGluYXRpb25VUkkgPSBkZXN0aW5h
dGlvblVSSS5nZXQoKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoZG93bmxvYWQpLCAi
ZGVzdGluYXRpb24iKTsKICAgICByZXR1cm4gVFJVRTsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lk
IHdlYmtpdERvd25sb2FkTm90aWZ5UHJvZ3Jlc3MoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBn
dWludDY0IGJ5dGVzUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWRvd25sb2Fk
LT5wcml2LT50aW1lcikKLSAgICAgICAgZG93bmxvYWQtPnByaXYtPnRpbWVyLnNldChnX3RpbWVy
X25ldygpKTsKKyAgICAgICAgZG93bmxvYWQtPnByaXYtPnRpbWVyLnJlc2V0KGdfdGltZXJfbmV3
KCkpOwogCiAgICAgcHJpdi0+Y3VycmVudFNpemUgKz0gYnl0ZXNSZWNlaXZlZDsKICAgICBnX3Np
Z25hbF9lbWl0KGRvd25sb2FkLCBzaWduYWxzW1JFQ0VJVkVEX0RBVEFdLCAwLCBieXRlc1JlY2Vp
dmVkKTsKQEAgLTMzOSw5ICszMzksOCBAQCB2b2lkIHdlYmtpdERvd25sb2FkTm90aWZ5UHJvZ3Jl
c3MoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBndWludDY0IGJ5dGVzUmVjZWl2ZQogCiB2b2lk
IHdlYmtpdERvd25sb2FkRmFpbGVkKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBHT3duUHRyPEdFcnJvcj4gd2ViRXJy
b3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8R0Vycm9y
PiB3ZWJFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3Vy
Y2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgcmVzb3VyY2VFcnJvci5l
cnJvckNvZGUoKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCkpKTsKICAgICBpZiAoZG93bmxvYWQtPnByaXYtPnRpbWVyKQogICAgICAgICBnX3RpbWVy
X3N0b3AoZG93bmxvYWQtPnByaXYtPnRpbWVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dC5jcHAKaW5kZXggN2UzYzI2Yi4uMDg1NWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3Bw
CkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPGdsaWIv
Z2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X3NlbGVjdF9maWxlcyhXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsCiAgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgZmlsZSBwYXRoIGlzIHByZXNlbnRlZCBhcyBhbiBVUkkgKGVzY2Fw
ZWQKICAgICAgICAgLy8gc3RyaW5nLCB3aXRoIHRoZSAnZmlsZTovLycgcHJlZml4KSB0byBXZWJD
b3JlIG90aGVyd2lzZSB0aGUKICAgICAgICAgLy8gRmlsZUNob29zZXIgd29uJ3QgYWN0dWFsbHkg
Y2hvb3NlIGl0LgotICAgICAgICBHT3duUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxl
bmFtZS5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3Vy
aShmaWxlbmFtZS5nZXQoKSkpOwogICAgICAgICBjaG9vc2VuRmlsZXMuYXBwZW5kKEFQSTo6VVJM
OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOCh1cmkuZ2V0KCkpKSk7CiAKICAgICAgICAgLy8gRG8g
bm90IHVzZSB0aGUgVVJJIGhlcmUgYmVjYXVzZSB0aGlzIHdvbid0IHJlYWNoIFdlYkNvcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggZjI3MTIyMi4uMWI3N2I2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViUmVzb3VyY2VQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04
Niw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3TWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjCiAKICAgICAgICAgQVBJOjpFcnJv
ciogd2ViRXJyb3IgPSBzdGF0aWNfY2FzdDxBUEk6OkVycm9yKj4obWVzc2FnZS5nZXQoU3RyaW5n
Ojpmcm9tVVRGOCgiRXJyb3IiKSkpOwogICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwbGF0
Zm9ybUVycm9yID0gd2ViRXJyb3ItPnBsYXRmb3JtRXJyb3IoKTsKLSAgICAgICAgR093blB0cjxH
RXJyb3I+IHJlc291cmNlRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3Ry
aW5nKHBsYXRmb3JtRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgIEdVbmlx
dWVQdHI8R0Vycm9yPiByZXNvdXJjZUVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19m
cm9tX3N0cmluZyhwbGF0Zm9ybUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAgICAg
ICAgICAgcGxhdGZvcm1FcnJvci5lcnJvckNvZGUoKSwgcGxhdGZvcm1FcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgICAgICB3ZWJraXRXZWJSZXNvdXJj
ZUZhaWxlZChyZXNvdXJjZS5nZXQoKSwgcmVzb3VyY2VFcnJvci5nZXQoKSk7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWcKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKICAgICBHUmVmUHRyPEdWYXJpYW50PiBkYXRhID0gd2Via2l0V2Vi
Q29udGV4dEluaXRpYWxpemVXZWJFeHRlbnNpb25zKFdFQktJVF9XRUJfQ09OVEVYVChjbGllbnRJ
bmZvKSk7Ci0gICAgR093blB0cjxnY2hhcj4gZGF0YVN0cmluZyhnX3ZhcmlhbnRfcHJpbnQoZGF0
YS5nZXQoKSwgVFJVRSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFTdHJpbmcoZ192YXJp
YW50X3ByaW50KGRhdGEuZ2V0KCksIFRSVUUpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0tU
eXBlUmVmPihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhkYXRhU3RyaW5nLmdldCgpKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dExvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRMb2FkZXJDbGllbnQuY3BwCmluZGV4IDZlNGQyZjkuLjRiMmU1OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNw
cApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dFdlYlZpZXdQcml2YXRlLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC01Myw5ICs1Myw4IEBAIHN0YXRp
YyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlc291cmNl
RXJyb3ImIHJlc291cmNlRXJyb3IgPSB0b0ltcGwoZXJyb3IpLT5wbGF0Zm9ybUVycm9yKCk7Ci0g
ICAgR093blB0cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19m
cm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3Iu
ZXJyb3JDb2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkp
KTsKKyAgICBHVW5pcXVlUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChn
X3F1YXJrX2Zyb21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSks
CisgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgaWYgKHJlc291cmNlRXJyb3Iu
dGxzRXJyb3JzKCkpIHsKICAgICAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWRXaXRoVExTRXJy
b3JzKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJM
KCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3IuZ2V0KCksCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHVGxzQ2VydGlmaWNhdGVGbGFncz4ocmVzb3VyY2VFcnJvci50bHNFcnJvcnMoKSksIHJlc291
cmNlRXJyb3IuY2VydGlmaWNhdGUoKSk7CkBAIC04NSw5ICs4NCw4IEBAIHN0YXRpYyB2b2lkIGRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLRXJyCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHJl
c291cmNlRXJyb3IgPSB0b0ltcGwoZXJyb3IpLT5wbGF0Zm9ybUVycm9yKCk7Ci0gICAgR093blB0
cjxHRXJyb3I+IHdlYkVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmlu
ZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlRXJyb3IuZXJyb3JDb2Rl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBH
VW5pcXVlUHRyPEdFcnJvcj4gd2ViRXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zy
b21fc3RyaW5nKHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAg
IHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV0VC
S0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfTE9BRF9DT01NSVRURUQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRh
dGEoKSwgd2ViRXJyb3IuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24uY3BwCmluZGV4IDM1NTEzYzIu
LmVlOTcyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFByaW50T3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcmludE9wZXJhdGlvbi5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKQEAgLTI2NCw5ICsyNjQsOCBAQCBzdGF0
aWMgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZ0NvbXBsZXRlZChXS0Vycm9yUmVmIHdrUHJpbnRF
cnJvciwgV0tFcnJvclJlZiwgdgogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
cmVzb3VyY2VFcnJvciA9IHdrUHJpbnRFcnJvciA/IHRvSW1wbCh3a1ByaW50RXJyb3IpLT5wbGF0
Zm9ybUVycm9yKCkgOiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCk7CiAgICAgaWYgKCFyZXNvdXJj
ZUVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIEdPd25QdHI8R0Vycm9yPiBwcmludEVycm9yKGdf
ZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFp
bigpLnV0ZjgoKS5kYXRhKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRy
PEdFcnJvcj4gcHJpbnRFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJp
bmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgICAgIHJl
c291cmNlRXJyb3IuZXJyb3JDb2RlKCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGdfc2lnbmFsX2VtaXQocHJpbnRPcGVyYXRp
b24uZ2V0KCksIHNpZ25hbHNbRkFJTEVEXSwgMCwgcHJpbnRFcnJvci5nZXQoKSk7CiAgICAgfQog
ICAgIGdfc2lnbmFsX2VtaXQocHJpbnRPcGVyYXRpb24uZ2V0KCksIHNpZ25hbHNbRklOSVNIRURd
LCAwLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VVJJUmVxdWVzdC5jcHAKaW5kZXggMzg0YmQzNy4uMmM1OWNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAK
QEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRVUklSZXF1ZXN0UHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0clNv
dXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ4LDcg
KzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdHJ1Y3QgX1dlYktpdFVSSVJlcXVl
c3RQcml2YXRlIHsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0
OwogICAgIENTdHJpbmcgdXJpOwotICAgIEdPd25QdHI8U291cE1lc3NhZ2VIZWFkZXJzPiBodHRw
SGVhZGVyczsKKyAgICBHVW5pcXVlUHRyPFNvdXBNZXNzYWdlSGVhZGVycz4gaHR0cEhlYWRlcnM7
CiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVxdWVzdCwgd2Via2l0X3VyaV9y
ZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQpAQCAtMTY2LDcgKzE2Niw3IEBAIFNvdXBNZXNzYWdlSGVh
ZGVycyogd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnMoV2ViS2l0VVJJUmVxdWVz
dCogcmVxdWVzCiAgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJlcXVl
c3QtPnByaXYtPmh0dHBIZWFkZXJzLnNldChzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcoU09VUF9N
RVNTQUdFX0hFQURFUlNfUkVRVUVTVCkpOworICAgIHJlcXVlc3QtPnByaXYtPmh0dHBIZWFkZXJz
LnJlc2V0KHNvdXBfbWVzc2FnZV9oZWFkZXJzX25ldyhTT1VQX01FU1NBR0VfSEVBREVSU19SRVFV
RVNUKSk7CiAgICAgcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNz
YWdlSGVhZGVycyhyZXF1ZXN0LT5wcml2LT5odHRwSGVhZGVycy5nZXQoKSk7CiAgICAgcmV0dXJu
IHJlcXVlc3QtPnByaXYtPmh0dHBIZWFkZXJzLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAppbmRleCBkMDEzNmNkLi5lMWU0MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMjYs
OSArMjYsMTAgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0dPd25QdHJTb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRy
U291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkBAIC01OCw3ICs1OSw3IEBAIHN0cnVjdCBfV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUg
ewogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdlOwogICAgIHVpbnQ2NF90
IHJlcXVlc3RJRDsKICAgICBDU3RyaW5nIHVyaTsKLSAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBV
Ukk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJOwogCiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IHN0cmVhbTsKICAgICB1aW50NjRfdCBzdHJlYW1MZW5ndGg7CkBAIC0xMDksNyAr
MTEwLDcgQEAgY29uc3QgY2hhciogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1l
KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfVVJJX1NDSEVNRV9SRVFVRVNUKHJlcXVlc3QpLCAwKTsKIAogICAgIGlmICgh
cmVxdWVzdC0+cHJpdi0+c291cFVSSSkKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+c291cFVSSS5z
ZXQoc291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKKyAgICAgICAgcmVx
dWVzdC0+cHJpdi0+c291cFVSSS5yZXNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJpdi0+dXJp
LmRhdGEoKSkpOwogICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLT5zY2hlbWU7CiB9
CiAKQEAgLTE0MSw3ICsxNDIsNyBAQCBjb25zdCBjaGFyKiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF9wYXRoKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7
CiAKICAgICBpZiAoIXJlcXVlc3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnBy
aXYtPnNvdXBVUkkuc2V0KHNvdXBfdXJpX25ldyhyZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgpKSk7
CisgICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkucmVzZXQoc291cF91cmlfbmV3KHJlcXVl
c3QtPnByaXYtPnVyaS5kYXRhKCkpKTsKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+c291cFVS
SS0+cGF0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBkNTZmNWU1Li4wYTdhYWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cApAQCAtNTAsOCArNTAsOCBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjE2LDcgKzIxNiw3IEBA
IHN0YXRpYyBDU3RyaW5nIGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkKIAogc3RhdGljIENTdHJp
bmcgaW5qZWN0ZWRCdW5kbGVGaWxlbmFtZSgpCiB7Ci0gICAgR093blB0cjxjaGFyPiBidW5kbGVG
aWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCkuZGF0YSgp
LCAibGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIiwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURp
cmVjdG9yeSgpLmRhdGEoKSwgImxpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIsIE5VTEwp
KTsKICAgICByZXR1cm4gYnVuZGxlRmlsZW5hbWUuZ2V0KCk7CiB9CiAKQEAgLTQ0Myw5ICs0NDMs
OCBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rv
cnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICA6IGRpcmVjdG9yeVBhdGgudXRm
OCgpOwogCiAgICAgLy8gQnVpbGQgdGhlIGZ1bGwgcGF0aCB0byB0aGUgaWNvbiBkYXRhYmFzZSBm
aWxlIG9uIGRpc2suCi0gICAgR093blB0cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNv
cmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4KCkuZGF0YSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCisgICAg
ICAgIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4
KCkuZGF0YSgpLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdpbGwgY2F1
c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgogICAgIHByaXYtPmNvbnRleHQtPnNl
dEljb25EYXRhYmFzZVBhdGgoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhmYXZpY29uRGF0YWJh
c2VQYXRoLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDIzODg2MTQuLjdlZTBjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC02MSw4
ICs2MSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSWNvbi5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093
blB0clNvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8Z2xpYi9n
aTE4bi1saWIuaD4KQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0xvYWRGYWlsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCwgYwog
ICAgICAgICB8fCBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QTFVHSU5fRVJST1IsIFdF
QktJVF9QTFVHSU5fRVJST1JfV0lMTF9IQU5ETEVfTE9BRCkpCiAgICAgICAgIHJldHVybiBGQUxT
RTsKIAotICAgIEdPd25QdHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1s
Pjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gaHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5PiVzPC9ib2R5
PjwvaHRtbD4iLCBlcnJvci0+bWVzc2FnZSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2Fs
dGVybmF0ZV9odG1sKHdlYlZpZXcsIGh0bWxTdHJpbmcuZ2V0KCksIGZhaWxpbmdVUkksIDApOwog
CiAgICAgcmV0dXJuIFRSVUU7CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIEd0a1dpZGdldCog
d2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2coV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR3QKICAgICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdU
S19XSURHRVQod2ViVmlldykpOwogICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2Vf
ZGlhbG9nX25ldyh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cocGFyZW50KSA/IEdUS19X
SU5ET1cocGFyZW50KSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwgdHlwZSwgYnV0dG9ucywg
IiVzIiwgbWVzc2FnZSk7Ci0gICAgR093blB0cjxjaGFyPiB0aXRsZShnX3N0cmR1cF9wcmludGYo
IkphdmFTY3JpcHQgLSAlcyIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKSk7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiB0aXRsZShnX3N0cmR1cF9wcmludGYoIkphdmFTY3JpcHQgLSAl
cyIsIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKSk7CiAgICAgZ3RrX3dpbmRvd19z
ZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCB0aXRsZS5nZXQoKSk7CiAgICAgZ3RrX2RpYWxv
Z19zZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyksIGRlZmF1bHRSZXNwb25z
ZSk7CiAKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jl
c3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogewogICAg
IEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiBhZG9wdGVkUmVxdWVzdCA9IGFkb3B0
R1JlZihyZXF1ZXN0KTsKICAgICBpZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfQUNDRVBU
KSB7Ci0gICAgICAgIEdPd25QdHI8R1NMaXN0PiBmaWxlc0xpc3QoZ3RrX2ZpbGVfY2hvb3Nlcl9n
ZXRfZmlsZW5hbWVzKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSkpOworICAgICAgICBHVW5pcXVl
UHRyPEdTTGlzdD4gZmlsZXNMaXN0KGd0a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lcyhHVEtf
RklMRV9DSE9PU0VSKGRpYWxvZykpKTsKICAgICAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGZpbGVz
QXJyYXkgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3KCkpOwogICAgICAgICBmb3IgKEdTTGlz
dCogZmlsZSA9IGZpbGVzTGlzdC5nZXQoKTsgZmlsZTsgZmlsZSA9IGdfc2xpc3RfbmV4dChmaWxl
KSkKICAgICAgICAgICAgIGdfcHRyX2FycmF5X2FkZChmaWxlc0FycmF5LmdldCgpLCBmaWxlLT5k
YXRhKTsKQEAgLTE1MTcsNyArMTUxNyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2Vk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQpCiAgICAg
ICAgIHByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYg
KGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9DT01NSVRURUQpIHsKICAgICAgICAgV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9k
YXRhYmFzZShwcml2LT5jb250ZXh0KTsKLSAgICAgICAgR093blB0cjxjaGFyPiBmYXZpY29uVVJJ
KHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwgcHJpdi0+
YWN0aXZlVVJJLmRhdGEoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZhdmljb25VUkko
d2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBwcml2LT5h
Y3RpdmVVUkkuZGF0YSgpKSk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVGYXZpY29uVVJJ
KHdlYlZpZXcsIGZhdmljb25VUkkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghcHJpdi0+bWFpblJl
c291cmNlKSB7CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFp
bGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYQog
CiAgICAgV2ViS2l0VExTRXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CiAg
ICAgaWYgKHRsc0Vycm9yc1BvbGljeSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCkg
ewotICAgICAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkkoc291cF91cmlfbmV3KGZhaWxpbmdV
UkkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBzb3VwVVJJKHNvdXBfdXJpX25ldyhm
YWlsaW5nVVJJKSk7CiAgICAgICAgIFdlYktpdENlcnRpZmljYXRlSW5mbyBpbmZvKGNlcnRpZmlj
YXRlLCB0bHNFcnJvcnMpOwogICAgICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICAgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEX1dJVEhfVExTX0VSUk9S
U10sIDAsICZpbmZvLCBzb3VwVVJJLT5ob3N0LCAmcmV0dXJuVmFsdWUpOwpAQCAtMTgxNSw3ICsx
ODE1LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVudShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBBUEk6OkFycmF5KiBwcm9wb3MKICAgICAgICAgd2Via2l0V2ViVmlld0Ny
ZWF0ZUFuZEFwcGVuZElucHV0TWV0aG9kc01lbnVJdGVtKHdlYlZpZXcsIGNvbnRleHRNZW51Lmdl
dCgpKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3VsdCA9
IGFkb3B0R1JlZih3ZWJraXRIaXRUZXN0UmVzdWx0Q3JlYXRlKHdlYkhpdFRlc3RSZXN1bHQpKTsK
LSAgICBHT3duUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50KHdlYmtpdFdlYlZpZXdCYXNl
VGFrZUNvbnRleHRNZW51RXZlbnQod2ViVmlld0Jhc2UpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2
ZW50PiBjb250ZXh0TWVudUV2ZW50KHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZl
bnQod2ViVmlld0Jhc2UpKTsKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tDT05URVhUX01FTlVdLCAwLCBjb250ZXh0TWVudS5n
ZXQoKSwgY29udGV4dE1lbnVFdmVudC5nZXQoKSwgaGl0VGVzdFJlc3VsdC5nZXQoKSwgJnJldHVy
blZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA5NTU5Mjc5Li4wMDdkMjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0ljb24u
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dV
bmlxdWVQdHJHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrRHJhZ0FuZERyb3BIZWxwZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1V0aWxpdGllcy5oPgpAQCAtNjUsNyArNjUsNiBAQAogI2luY2x1ZGUgPGdkay9nZGt4Lmg+
CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xMDgsNyArMTA3LDcgQEAgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUgewogICAgIEd0a1dpZGdldCogaW5zcGVjdG9yVmlldzsKICAgICBB
dHRhY2htZW50U2lkZSBpbnNwZWN0b3JBdHRhY2htZW50U2lkZTsKICAgICB1bnNpZ25lZCBpbnNw
ZWN0b3JWaWV3U2l6ZTsKLSAgICBHT3duUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50Owor
ICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGNvbnRleHRNZW51RXZlbnQ7CiAgICAgV2ViQ29udGV4
dE1lbnVQcm94eUd0ayogYWN0aXZlQ29udGV4dE1lbnVQcm94eTsKICAgICBXZWJWaWV3QmFzZUlu
cHV0TWV0aG9kRmlsdGVyIGlucHV0TWV0aG9kRmlsdGVyOwogCkBAIC02NjcsNyArNjY2LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJlc3NFdmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRCdXQKIAogICAgIC8vIElmIGl0J3MgYSByaWdodCBjbGljayBl
dmVudCBzYXZlIGl0IGFzIGEgcG9zc2libGUgY29udGV4dCBtZW51IGV2ZW50LgogICAgIGlmIChi
dXR0b25FdmVudC0+YnV0dG9uID09IDMpCi0gICAgICAgIHByaXYtPmNvbnRleHRNZW51RXZlbnQu
c2V0KGdka19ldmVudF9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVu
dCkpKTsKKyAgICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudC5yZXNldChnZGtfZXZlbnRfY29w
eShyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQpKSk7CiAgICAgcHJpdi0+
cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQocmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2xpY2tDb3VudGVyLmNsaWNrQ291
bnRGb3JHZGtCdXR0b25FdmVudCh3aWRnZXQsIGJ1dHRvbkV2ZW50KSkpOwogICAgIHJldHVybiBU
UlVFOwpAQCAtOTk0LDcgKzk5Myw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWco
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBEcmFnRGF0YSYKIAogICAgIFJl
ZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0ID0gYWRvcHRSZWYoZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCkpOwogICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IGFkb3B0
R1JlZihQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRM
aXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7Ci0gICAgR093blB0cjxHZGtFdmVu
dD4gY3VycmVudEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKKyAgICBHVW5pcXVlUHRy
PEdka0V2ZW50PiBjdXJyZW50RXZlbnQoZ3RrX2dldF9jdXJyZW50X2V2ZW50KCkpOwogICAgIEdk
a0RyYWdDb250ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVCh3ZWJWaWV3
QmFzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXRMaXN0LmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrKCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5j
cHAKaW5kZXggYjgzNmMxMS4uYjA2ZmE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0
b3JTZXJ2ZXJHdGsuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8Z2lvL2dpby5oPgog
I2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KQEAgLTc4LDcgKzc5LDcgQEAgYm9vbCBXZWJJbnNw
ZWN0b3JTZXJ2ZXI6OnBsYXRmb3JtUmVzb3VyY2VGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwg
VmVjdG9yPGNoYXIKICAgICBpZiAoIWdfaW5wdXRfc3RyZWFtX3JlYWRfYWxsKEdfSU5QVVRfU1RS
RUFNKGlucHV0U3RyZWFtLmdldCgpKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAwLCAwLCAw
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29udGVudFR5cGUgPSBHT3duUHRyPGdj
aGFyPihnX2ZpbGVfaW5mb19nZXRfYXR0cmlidXRlX2FzX3N0cmluZyhmaWxlSW5mby5nZXQoKSwg
R19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9GQVNUX0NPTlRFTlRfVFlQRSkpLmdldCgpOworICAg
IGNvbnRlbnRUeXBlID0gR1VuaXF1ZVB0cjxnY2hhcj4oZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0
ZV9hc19zdHJpbmcoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfRkFT
VF9DT05URU5UX1RZUEUpKS5nZXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tl
dFNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCmluZGV4IDI4ZjRmMjEuLmYzYWQxM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9X
ZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gY29ubmVjdGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiAvKnNlcnZpY2UqLywg
R1NvY2tldENvbm5lY3RpbwogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBHUmVmUHRyPEdTb2Nr
ZXRBZGRyZXNzPiBzb2NrZXRBZGRyZXNzID0gYWRvcHRHUmVmKGdfc29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3JlbW90ZV9hZGRyZXNzKGNvbm5lY3Rpb24sIDApKTsKLSAgICBHT3duUHRyPGdjaGFyPiBh
ZGRyZXNzU3RyaW5nKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0X2FkZHJl
c3NfZ2V0X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkp
KSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGFkZHJlc3NTdHJpbmcoZ19pbmV0X2FkZHJlc3Nf
dG9fc3RyaW5nKGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfYWRkcmVzcyhHX0lORVRfU09DS0VU
X0FERFJFU1Moc29ja2V0QWRkcmVzcy5nZXQoKSkpKSk7CiAgICAgTE9HKEluc3BlY3RvclNlcnZl
ciwgIk5ldyBDb25uZWN0aW9uIGZyb20gJXM6JWQuIiwgYWRkcmVzc1N0cmluZy5nZXQoKSwgZ19p
bmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhzb2NrZXRB
ZGRyZXNzLmdldCgpKSkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAppbmRleCBh
YmU4MjA0Li40ZmI1YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xpYlV0aWxp
dGllcy5oPgogCiAjaWYgT1MoVU5JWCkKQEAgLTk1LDcgKzk2LDcgQEAgdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIH0KIAogICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7Ci0gICAgR093blB0cjxn
Y2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7CisgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gc29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBzb2NrZXRzWzBdKSk7
CiAKICAgICB1bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNpemUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9y
IGdfc3Bhd25fYXN5bmMoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b250ZXh0R3RrLmNwcAppbmRleCA4YWNlZjNjLi40NGZhNTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgaW5pdEluc3BlY3RvclNlcnZl
cigpCiAKIFdURjo6U3RyaW5nIFdlYkNvbnRleHQ6OnBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdAogewotICAgIEdPd25QdHI8Z2NoYXI+IGNhY2hlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIs
ICJhcHBsaWNhdGlvbnMiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3Rr
IiwgImFwcGxpY2F0aW9ucyIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5h
bWVUb1N0cmluZyhjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKQEAgLTEyNSwyNSArMTI1LDI1
IEBAIHZvaWQgV2ViQ29udGV4dDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpCiAKIFN0cmlu
ZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7
Ci0gICAgR093blB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiZGF0YWJhc2VzIiwgTlVMTCkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImRhdGFiYXNlcyIsIG51bGxwdHIp
KTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0
YWJhc2VQYXRoKCkgY29uc3QKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJp
Y29uZGF0YWJhc2UiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsi
LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFt
ZVRvU3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7Ci0gICAg
R093blB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJsb2NhbHN0b3JhZ2UiLCBOVUxMKSk7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0
X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7
CiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoc3RvcmFnZURpcmVjdG9yeS5n
ZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJDb250ZXh0OjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVE
aXJlY3RvcnkoKSBjb25zdAogewotICAgIEdPd25QdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5
KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgZ19nZXRfcHJnbmFtZSgp
LCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBnX2dldF9wcmduYW1lKCksIG51bGxw
dHIpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkaXNrQ2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcAppbmRleCBmMzUyYzNhLi5jYzI1ZTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1l
bnVQcm94eUd0ay5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIHZvaWQgY29udGV4dE1lbnVJ
dGVtVmlzaWJpbGl0eUNoYW5nZWQoR3RrQWN0aW9uKiBhY3Rpb24sIEdQYXJhbVNwZWMqLCBXZWIK
ICAgICBpZiAoIW1lbnUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdPd25QdHI8R0xpc3Q+IGl0
ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAg
ICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihHVEtf
Q09OVEFJTkVSKG1lbnUpKSk7CiAgICAgYm9vbCBwcmV2aW91c1Zpc2libGVJdGVtSXNOb3RBU2Vw
YXJhdG9yID0gZmFsc2U7CiAgICAgR3RrV2lkZ2V0KiBsYXN0SXRlbVZpc2libGVTZXBhcmF0b3Ig
PSAwOwogICAgIGZvciAoR0xpc3QqIGl0ZXIgPSBpdGVtcy5nZXQoKTsgaXRlcjsgaXRlciA9IGdf
bGlzdF9uZXh0KGl0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4IDk1MjJhMGEuLmY4MjIwODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlH
dGsuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKQog
CiAgICAgaWYgKCFtX2luc3BlY3RvcldpbmRvdykKICAgICAgICAgcmV0dXJuOwotICAgIEdPd25Q
dHI8Z2NoYXI+IHRpdGxlKGdfc3RyZHVwX3ByaW50ZigiJXMgLSAlcyIsIF8oIldlYiBJbnNwZWN0
b3IiKSwgdXJsLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0aXRsZShn
X3N0cmR1cF9wcmludGYoIiVzIC0gJXMiLCBfKCJXZWIgSW5zcGVjdG9yIiksIHVybC51dGY4KCku
ZGF0YSgpKSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhtX2luc3BlY3Rv
cldpbmRvdyksIHRpdGxlLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcAppbmRleCBhNDE4MzlhLi43ODI3
MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVu
dVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVw
TWVudVByb3h5R3RrLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIldlYlBvcHVwSXRl
bS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU0LDcgKzU0LDcgQEAgV2ViUG9wdXBNZW51UHJveHlH
dGs6On5XZWJQb3B1cE1lbnVQcm94eUd0aygpCiAKIEd0a0FjdGlvbiogV2ViUG9wdXBNZW51UHJv
eHlHdGs6OmNyZWF0ZUd0a0FjdGlvbkZvck1lbnVJdGVtKGNvbnN0IFdlYlBvcHVwSXRlbSYgaXRl
bSwgaW50IGl0ZW1JbmRleCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IGFjdGlvbk5hbWUoZ19zdHJk
dXBfcHJpbnRmKCJwb3B1cC1tZW51LWFjdGlvbi0lZCIsIGl0ZW1JbmRleCkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYWN0aW9uTmFtZShnX3N0cmR1cF9wcmludGYoInBvcHVwLW1lbnUtYWN0aW9u
LSVkIiwgaXRlbUluZGV4KSk7CiAgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSBndGtfYWN0aW9uX25l
dyhhY3Rpb25OYW1lLmdldCgpLCBpdGVtLm1fdGV4dC51dGY4KCkuZGF0YSgpLCBpdGVtLm1fdG9v
bFRpcC51dGY4KCkuZGF0YSgpLCAwKTsKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChh
Y3Rpb24pLCAicG9wdXAtbWVudS1hY3Rpb24taW5kZXgiLCBHSU5UX1RPX1BPSU5URVIoaXRlbUlu
ZGV4KSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChhY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJB
Q0sobWVudUl0ZW1BY3RpdmF0ZWQpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yR3RrLmNwcAppbmRleCBlNzdl
NGJlLi41YTBlZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYkluc3BlY3Rvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJJbnNwZWN0b3JHdGsuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IGJmMTFmNDEuLmFkYzBiMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEhl
bHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0
aWFsaXplKCkKICAgICAvLyBwcm9jZXNzIHRvIGNvbm5lY3QgdGhlIHR3byB3b3JsZHMgdGhyb3Vn
aCB0aGUgYWNjZXNzaWJpbGl0eQogICAgIC8vIG9iamVjdCB0aGVyZSBzcGVjaWZpY2FsbHkgcGxh
Y2VkIGZvciB0aGF0IHB1cnBvc2UgKHRoZSBzb2NrZXQpLgogICAgIG1fYWNjZXNzaWJpbGl0eU9i
amVjdCA9IGFkb3B0R1JlZih3ZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdE5ldyh0aGlzKSk7Ci0g
ICAgR093blB0cjxnY2hhcj4gcGx1Z0lEKGF0a19wbHVnX2dldF9pZChBVEtfUExVRyhtX2FjY2Vz
c2liaWxpdHlPYmplY3QuZ2V0KCkpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGx1Z0lEKGF0
a19wbHVnX2dldF9pZChBVEtfUExVRyhtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCkpKSk7CiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCaW5kQWNjZXNzaWJpbGl0eVRyZWUoU3Ry
aW5nKHBsdWdJRC5nZXQoKSkpKTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggYjFlYjE1NS4uY2I0Njg4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNpZmRlZiBIQVZFX0dU
S19VTklYX1BSSU5USU5HCiAjaW5jbHVkZSAiUHJpbnRlckxpc3RHdGsuaCIKQEAgLTc1LDcgKzc2
LDcgQEAgcHVibGljOgogCiAgICAgICAgIHN0YXRpYyBpbnQgam9iTnVtYmVyID0gMDsKICAgICAg
ICAgY29uc3QgY2hhciogYXBwbGljYXRpb25OYW1lID0gZ19nZXRfYXBwbGljYXRpb25fbmFtZSgp
OwotICAgICAgICBHT3duUHRyPGNoYXI+am9iTmFtZShnX3N0cmR1cF9wcmludGYoIiVzIGpvYiAj
JWQiLCBhcHBsaWNhdGlvbk5hbWUgPyBhcHBsaWNhdGlvbk5hbWUgOiAiV2ViS2l0IiwgKytqb2JO
dW1iZXIpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPmpvYk5hbWUoZ19zdHJkdXBfcHJpbnRm
KCIlcyBqb2IgIyVkIiwgYXBwbGljYXRpb25OYW1lID8gYXBwbGljYXRpb25OYW1lIDogIldlYktp
dCIsICsram9iTnVtYmVyKSk7CiAgICAgICAgIG1fcHJpbnRKb2IgPSBhZG9wdEdSZWYoZ3RrX3By
aW50X2pvYl9uZXcoam9iTmFtZS5nZXQoKSwgcHJpbnRlciwgbV9wcmludFNldHRpbmdzLmdldCgp
LCBtX3BhZ2VTZXR1cC5nZXQoKSkpOwogCiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWlu
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3Rr
LmNwcAppbmRleCBlMTVmNjAyLi41N2Q0YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5jcHAKaW5kZXggNzBmY2FkNS4uODE4ZWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6c2VuZChHVGFzayogdGFzaykKIHsKICAgICBXZWJLaXRTb3VwUmVx
dWVzdEdlbmVyaWMqIHJlcXVlc3QgPSBXRUJLSVRfU09VUF9SRVFVRVNUX0dFTkVSSUMoZ190YXNr
X2dldF9zb3VyY2Vfb2JqZWN0KHRhc2spKTsKICAgICBTb3VwUmVxdWVzdCogc291cFJlcXVlc3Qg
PSBTT1VQX1JFUVVFU1QocmVxdWVzdCk7Ci0gICAgR093blB0cjxjaGFyPiB1cmlTdHJpbmcoc291
cF91cmlfdG9fc3RyaW5nKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHNvdXBSZXF1ZXN0KSwgRkFMU0Up
KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291
cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpLCBGQUxTRSkpOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVzdElEKCk7CiAgICAgbV9yZXF1ZXN0TWFwLnNl
dChyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSh0YXNrLCBy
ZXF1ZXN0KSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDdmNjg2OGUuLmM3NzdjNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOTYgQEAKIDIwMTQtMDEtMjIgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHTElCXSBVc2Ug
R1VuaXF1ZVB0ciBpbnN0ZWFkIG9mIEdPd25QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdVbmlxdWVQdHIgaXMgYSB0ZW1wbGF0ZSBhbGlhcyBvZiBz
dGQ6OnVuaXF1ZV9wdHIgd2l0aCBhIGN1c3RvbQorICAgICAgICBkZWxldGVyIHRoYXQgcmVwbGFj
ZXMgR093blB0ci4gR093blB0ciBpcyBzdGlsbCB1c2VkIGZvciB0aGUgY2FzZXMKKyAgICAgICAg
d2hlcmUgdGhlIG91dHB1dCBwb2ludGVyIGlzIG5lZWRlZCwgYnV0IGl0IHdpbGwgYWxzbyBiZSBy
ZXBsYWNlZCBzb29uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxp
dHlDYWxsYmFja3NBdGsuY3BwOgorICAgICAgICAocHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQpOgor
ICAgICAgICAoYXhPYmplY3RFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChpbmRleFJhbmdl
SW5UYWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0cmluZ1ZhbHVlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1
YWdlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleCk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckVmbC5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGdldE91
dHB1dERpcik6CisgICAgICAgIChnZXRGb250c1BhdGgpOgorICAgICAgICAoaW5pdGlhbGl6ZUZv
bnRzKToKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAoY29tcGFyZUhpc3Rv
cnlJdGVtcyk6CisgICAgICAgIChkdW1wSGlzdG9yeUl0ZW0pOgorICAgICAgICAoc291cFVSSVRv
U3RyaW5nUHJlc2VydmluZ1Bhc3N3b3JkKToKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNp
c3RlbnRWYWx1ZXMpOgorICAgICAgICAodGVtcG9yYXJ5RGF0YWJhc2VEaXJlY3RvcnkpOgorICAg
ICAgICAod2ViVmlld1RpdGxlQ2hhbmdlZCk6CisgICAgICAgICh3ZWJGcmFtZUxvYWRTdGF0dXNO
b3RpZmllZCk6CisgICAgICAgIChwYXRoRnJvbVNvdXBVUkkpOgorICAgICAgICAoY29udmVydFdl
YlJlc291cmNlVG9VUkxQYXRoKToKKyAgICAgICAgKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6
CisgICAgICAgIChkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgICh3
aWxsU2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChmcmFtZUxvYWRFdmVudENhbGxiYWNr
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRWRpdGluZ0NhbGxiYWNrcy5jcHA6Cisg
ICAgICAgIChkdW1wTm9kZVBhdGgpOgorICAgICAgICAoZHVtcFJhbmdlKToKKyAgICAgICAgKHNo
b3VsZEFwcGx5U3R5bGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHA6CisgICAgICAgIChjb250ZXh0Q2xpY2tDYWxsYmFjayk6CisgICAgICAgIChiZWdpbkRy
YWdXaXRoRmlsZXNDYWxsYmFjayk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RS
dW5uZXJHdGsuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6
CisgICAgICAgIChUZXN0UnVubmVyOjpxdWV1ZUxvYWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
ZmluZFN0cmluZyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVy
ZW5jZSk6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFRl
eHREaXJlY3Rpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1hcmtlZFRleHRDYWxsYmFjayk6CisgICAgICAgIChp
bnNlcnRUZXh0Q2FsbGJhY2spOgorICAgICAgICAoZG9Db21tYW5kQ2FsbGJhY2spOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcDoKKyAgICAgICAgKExv
YWRIVE1MU3RyaW5nSXRlbTo6aW52b2tlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9E
T01Ob2RlVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6dGVzdFRhZ05hbWVz
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdEJhY2tGb3J3
YXJkTGlzdC5jcHA6CisgICAgICAgICh0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVu
dS5jcHA6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnMpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMu
Y3BwOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlKToKKyAgICAgICAgKHRlc3REb3du
bG9hZExvY2FsRmlsZUVycm9yKToKKyAgICAgICAgKGFkZENvbnRlbnREaXNwb3NpdGlvbkhUVFBI
ZWFkZXJUb1Jlc3BvbnNlKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRl
c3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwOgorICAgICAgICAoc3RhcnRUZXN0
U2VydmVyKToKKyAgICAgICAgKHRlc3RJbnNwZWN0b3JTZXJ2ZXJQYWdlTGlzdCk6CisgICAgICAg
IChvcGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAgICAgICh0ZXN0UHJpbnRPcGVy
YXRpb25QcmludCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAoYWRkQ2FjaGVIVFRQSGVhZGVyc1RvUmVzcG9uc2Up
OgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0U1NMLmNwcDoKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2sp
OgorICAgICAgICAoaHR0cFNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3
SmF2YVNjcmlwdERpYWxvZ3MpOgorICAgICAgICAodGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVz
KToKKyAgICAgICAgKHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAodGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAgICAgICAodGVz
dFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgIChzdGFy
dFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tBdHNwaUFjY2Vzc2libGUpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RDbGVhckRhdGFi
YXNlKToKKyAgICAgICAgKHRlc3RHZXRGYXZpY29uVVJJKToKKyAgICAgICAgKHdlYmtpdEZhdmlj
b25EYXRhYmFzZUZpbmFsaXplZENhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdl
YkNvbnRleHRHZXRQbHVnaW5zKToKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRl
c3RXZWJWaWV3TW9kZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdH
cm91cC5jcHA6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9y
LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUp
OgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZSk6CisgICAg
ICAgICh0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRl
c3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKHNlbmRS
ZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAobWV0aG9kQ2FsbENhbGxiYWNrKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpkb0tleVN0cm9rZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkb01vdXNlQnV0
dG9uRXZlbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11
bGF0ZU1vdXNlTW92ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9M
b2FkVHJhY2tpbmdUZXN0LmNwcDoKKyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAg
ICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkVVJJKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rl
c3Q6OmxvYWRIdG1sKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRQbGFpblRleHQp
OgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoTG9h
ZFRyYWNraW5nVGVzdDo6cmVsb2FkKToKKyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFj
ayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uY3BwOgorICAgICAgICAocmVn
aXN0ZXJHUmVzb3VyY2UpOgorICAgICAgICAocmVtb3ZlTm9uRW1wdHlEaXJlY3RvcnkpOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9UZXN0
TWFpbi5oOgorICAgICAgICAoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0Rpcik6CisgICAg
ICAgIChUZXN0OjpnZXRSZXNvdXJjZXNEaXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3Rr
L1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpy
dW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNl
cnZlci5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0U2VydmVyOjpXZWJLaXRUZXN0U2VydmVyKToK
KyAgICAgICAgKFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAocmVzb3VyY2VH
ZXREYXRhQ2FsbGJhY2spOgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEp
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjprZXlTdHJva2UpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmRvTW91c2VCdXR0b25FdmVu
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmFjY2Vzc2libGVFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0
bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250c0d0ay5jcHA6CisgICAgICAgIChX
VFI6OmdldE91dHB1dERpcik6CisgICAgICAgIChXVFI6OmdldEZvbnRzUGF0aCk6CisgICAgICAg
IChXVFI6OmluaXRpYWxpemVGb250Q29uZmlnU2V0dGluZyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV1RSOjp0b3BMZXZlbFBhdGgpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmluaXRpYWxpemVUZXN0UGx1Z2luRGlyZWN0b3J5KToKKworMjAxNC0wMS0yMiAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKIAogICAgICAgICBbR1RL
XSBBZGQgR1VuaXF1ZVB0cgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3MTcwCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eUNhbGxiYWNrc0F0ay5jcHAKaW5kZXggZTkyM2YzZi4uYTkwODI0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlDYWxsYmFja3NBdGsu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tz
QXRrLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAj
aW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIu
aD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuaCIKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRB
Y2Nlc3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBnY2hhciogc2ln
bmFsTmEKICAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5hbWUgPT0gJ1wwJykKICAgICAg
ICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOwogCi0gICAgR093blB0cjxnY2hhcj4gc2lnbmFs
TmFtZUFuZFZhbHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJpbnRmKCIlcyA9ICVzIiwgc2ln
bmFsTmFtZSwgc2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFsTmFtZSkpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3By
aW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25h
bE5hbWUpKTsKICAgICBwcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wi
IC8gTmFtZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwg
b2JqZWN0TmFtZSwgb2JqZWN0Um9sZSk7CiB9CiAKQEAgLTk0LDM3ICs5NCwzNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2ln
bmFsSGludCwgZ3VpbnQgbgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEdTaWduYWxRdWVy
eSBzaWduYWxRdWVyeTsKLSAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxOYW1lOwotICAgIEdPd25Q
dHI8Z2NoYXI+IHNpZ25hbFZhbHVlOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNpZ25hbE5hbWU7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2lnbmFsVmFsdWU7CiAgICAgU3RyaW5nIG5vdGlmaWNh
dGlvbk5hbWU7CiAKICAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZz
aWduYWxRdWVyeSk7CiAKICAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFt
ZSwgInN0YXRlLWNoYW5nZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3By
aW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sx
XSkpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3Zh
bHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5y
ZXNldChnX3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdfdmFsdWVfZ2V0X3N0cmlu
ZygmcGFyYW1WYWx1ZXNbMV0pKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnJlc2V0KGdfc3RyZHVw
X3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKICAg
ICAgICAgaWYgKCFnX3N0cmNtcDAoZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSks
ICJjaGVja2VkIikpCiAgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkNoZWNrZWRTdGF0
ZUNoYW5nZWQiOwogICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKGdfdmFsdWVfZ2V0X3N0cmlu
ZygmcGFyYW1WYWx1ZXNbMV0pLCAiaW52YWxpZC1lbnRyeSIpKQogICAgICAgICAgICAgbm90aWZp
Y2F0aW9uTmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKICAgICB9IGVsc2UgaWYgKCFn
X3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIpKSB7Ci0gICAg
ICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKLSAgICAgICAgc2ln
bmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZw
YXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNldChnX3N0cmR1cCgiZm9j
dXMtZXZlbnQiKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
JWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1sxXSkpKTsKICAgICAgICAgaWYg
KGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkKICAgICAgICAgICAgIG5vdGlm
aWNhdGlvbk5hbWUgPSAiQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCI7CiAgICAgfSBlbHNlIGlm
ICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdlZCIp
KSB7CiAgICAgICAgIGNvbnN0IGdjaGFyKiBjaGlsZHJlbkNoYW5nZWREZXRhaWwgPSBnX3F1YXJr
X3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRhaWwpOwotICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cF9wcmludGYoImNoaWxkcmVuLWNoYW5nZWQ6JXMiLCBjaGlsZHJlbkNoYW5nZWREZXRh
aWwpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3Zh
bHVlX2dldF91aW50KCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5yZXNl
dChnX3N0cmR1cF9wcmludGYoImNoaWxkcmVuLWNoYW5nZWQ6JXMiLCBjaGlsZHJlbkNoYW5nZWRE
ZXRhaWwpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIs
IGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOwogICAgICAgICBub3RpZmljYXRp
b25OYW1lID0gIWdfc3RyY21wMChjaGlsZHJlbkNoYW5nZWREZXRhaWwsICJhZGQiKSA/ICJBWENo
aWxkcmVuQWRkZWQiIDogIkFYQ2hpbGRyZW5SZW1vdmVkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0
cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJwcm9wZXJ0eS1jaGFuZ2UiKSkgewotICAg
ICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIs
IGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKKyAgICAgICAgc2lnbmFs
TmFtZS5yZXNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVhcmtf
dG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAo
Z19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSwgImFjY2Vzc2libGUtdmFsdWUi
KSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOwogICAg
IH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImxvYWQtY29t
cGxldGUiKSkKICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWExvYWRDb21wbGV0ZSI7CiAg
ICAgZWxzZQotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWdu
YWxfbmFtZSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5
LnNpZ25hbF9uYW1lKSk7CiAKICAgICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCiAg
ICAgICAgIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0
KCksIHNpZ25hbFZhbHVlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA5NmUzZTA3Li5hZGM4NGRi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvT3BhcXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTMs
NyArOTMsNyBAQCBjb25zdCBjaGFyKiBsYW5kbWFya1N0cmluZ1NlYXJjaCA9ICJBWExhbmRtYXJr
U2VhcmNoIjsKIFN0cmluZyBqc1N0cmluZ1RvV1RGU3RyaW5nKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShhdHRyaWJ1dGUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGJ1ZmZlcihzdGF0aWNfY2Fz
dDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
YnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGF0dHJpYnV0ZSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXpl
KTsKIAogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CkBAIC0xNzcs
NyArMTc3LDcgQEAgU3RyaW5nIGdldEF0a0F0dHJpYnV0ZVNldEFzU3RyaW5nKEF0a09iamVjdCog
YWNjZXNzaWJsZSwgQXRrQXR0cmlidXRlVHlwZSB0eXBlKQogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKICAgICBmb3IgKEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNl
dDsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKICAgICAgICAg
QXRrQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRy
aWJ1dGVzLT5kYXRhKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0
cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOwor
ICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJp
YnV0ZS0+bmFtZSwgIjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGF0dHJpYnV0ZURhdGEuZ2V0KCkpOwogICAgICAgICBpZiAoYXR0cmlidXRlcy0+
bmV4dCkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwpAQCAtNDg5LDcgKzQ4OSw3
IEBAIHN0YXRpYyBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZ2V0VmlzaWJsZUNlbGxz
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsCiAKIEpTU3RyaW5nUmVmIGluZGV4UmFuZ2VJblRh
YmxlKFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIGJvb2wgaXNSb3dSYW5nZSkKIHsKLSAgICBH
T3duUHRyPGdjaGFyPiByYW5nZVN0cmluZyhnX3N0cmR1cCgiezAsIDB9IikpOworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7CiAKICAgICBpZiAo
IUFUS19JU19PQkpFQ1QoZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CkBAIC01MTksNyArNTE5LDcgQEAgSlNT
dHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9v
bCBpc1Jvd1JhbmdlKQogICAgICAgICAgICAgYmFzZSA9IGNvbHVtbjsKICAgICAgICAgICAgIGxl
bmd0aCA9IGF0a190YWJsZV9nZXRfY29sdW1uX2V4dGVudF9hdChBVEtfVEFCTEUoYXhUYWJsZSks
IHJvdywgY29sdW1uKTsKICAgICAgICAgfQotICAgICAgICByYW5nZVN0cmluZy5zZXQoZ19zdHJk
dXBfcHJpbnRmKCJ7JWQsICVkfSIsIGJhc2UsIGxlbmd0aCkpOworICAgICAgICByYW5nZVN0cmlu
Zy5yZXNldChnX3N0cmR1cF9wcmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5n
LmdldCgpKTsKQEAgLTczNyw3ICs3MzcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb2xlKCkKICAgICBpZiAoIWF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVCht
X2VsZW1lbnQpKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHJvbGVTdHJpbmdXaXRoUHJlZml4KGdfc3RyZHVw
X3ByaW50ZigiQVhSb2xlOiAlcyIsIHJvbGVUb1N0cmluZyhBVEtfT0JKRUNUKG1fZWxlbWVudCkp
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByb2xlU3RyaW5nV2l0aFByZWZpeChnX3N0cmR1cF9w
cmludGYoIkFYUm9sZTogJXMiLCByb2xlVG9TdHJpbmcoQVRLX09CSkVDVChtX2VsZW1lbnQpKSkp
OwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyb2xlU3RyaW5nV2l0
aFByZWZpeC5nZXQoKSk7CiB9CiAKQEAgLTc1Nyw3ICs3NTcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBhdGtfb2Jq
ZWN0X2dldF9uYW1lKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7Ci0gICAgR093blB0cjxnY2hhcj4g
YXhUaXRsZShnX3N0cmR1cF9wcmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSA/IG5hbWUgOiAiIikp
OworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGF4VGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJBWFRpdGxl
OiAlcyIsIG5hbWUgPyBuYW1lIDogIiIpKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhheFRpdGxlLmdldCgpKTsKIH0KQEAgLTc3MSw3ICs3NzEsNyBAQCBKU1N0
cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiAgICAgaWYgKCFk
ZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBheERlc2MoZ19zdHJkdXBfcHJpbnRmKCJBWERl
c2NyaXB0aW9uOiAlcyIsIGRlc2NyaXB0aW9uKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhE
ZXNjKGdfc3RyZHVwX3ByaW50ZigiQVhEZXNjcmlwdGlvbjogJXMiLCBkZXNjcmlwdGlvbikpOwog
CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4RGVzYy5nZXQoKSk7
CiB9CkBAIC03ODEsOSArNzgxLDkgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RyaW5nVmFsdWUoKQogICAgIGlmICghQVRLX0lTX1RFWFQobV9lbGVtZW50KSkKICAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3du
UHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKG1fZWxlbWVudCksIDAs
IC0xKSk7Ci0gICAgR093blB0cjxnY2hhcj4gdGV4dFdpdGhSZXBsYWNlZENoYXJhY3RlcnMocmVw
bGFjZUNoYXJhY3RlcnNGb3JSZXN1bHRzKHRleHQuZ2V0KCkpKTsKLSAgICBHT3duUHRyPGdjaGFy
PiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhWYWx1ZTogJXMiLCB0ZXh0V2l0aFJlcGxhY2Vk
Q2hhcmFjdGVycy5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRf
Z2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50KSwgMCwgLTEpKTsKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVycyhyZXBsYWNlQ2hhcmFjdGVyc0ZvclJlc3Vs
dHModGV4dC5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGF4VmFsdWUoZ19zdHJkdXBf
cHJpbnRmKCJBWFZhbHVlOiAlcyIsIHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJzLmdldCgpKSk7
CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhWYWx1ZS5nZXQo
KSk7CiB9CkBAIC03OTcsNyArNzk3LDcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGFuZ3VhZ2UoKQogICAgIGlmICghbG9jYWxlKQogICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAotICAgIEdPd25QdHI8Y2hhcj4gYXhWYWx1
ZShnX3N0cmR1cF9wcmludGYoIkFYTGFuZ3VhZ2U6ICVzIiwgbG9jYWxlKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhMYW5ndWFnZTogJXMiLCBsb2Nh
bGUpKTsKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhWYWx1ZS5n
ZXQoKSk7CiB9CiAKQEAgLTExMjcsNyArMTEyNyw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXgg
PiBhdGtfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFUS19URVhUKG1fZWxlbWVudCkpKQogICAg
ICAgICByZXR1cm4gLTE7CiAKLSAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90
ZXh0KEFUS19URVhUKG1fZWxlbWVudCksIDAsIGluZGV4KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChtX2VsZW1lbnQpLCAwLCBpbmRleCkp
OwogICAgIGludCBsaW5lTm8gPSAwOwogICAgIGZvciAoZ2NoYXIqIG9mZnNldCA9IHRleHQuZ2V0
KCk7ICpvZmZzZXQ7ICsrb2Zmc2V0KSB7CiAgICAgICAgIGlmICgqb2Zmc2V0ID09ICdcbicpCkBA
IC0xMTk1LDcgKzExOTUsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZWxlY3RlZFRleHRSYW5nZSgpCiAgICAgZ2ludCBzdGFydCwgZW5kOwogICAgIGdfZnJlZShhdGtf
dGV4dF9nZXRfc2VsZWN0aW9uKEFUS19URVhUKG1fZWxlbWVudCksIDAsICZzdGFydCwgJmVuZCkp
OwogCi0gICAgR093blB0cjxnY2hhcj4gc2VsZWN0aW9uKGdfc3RyZHVwX3ByaW50ZigieyVkLCAl
ZH0iLCBzdGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzZWxlY3Rp
b24oZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOwogICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzZWxlY3Rpb24uZ2V0KCkpOwog
fQogCkBAIC0xMzg3LDcgKzEzODcsNyBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp1cmwoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKIAogICAgIEF0a0h5cGVybGluayogaHlwZXJsaW5rID0gYXRrX2h5cGVybGlua19pbXBs
X2dldF9oeXBlcmxpbmsoQVRLX0hZUEVSTElOS19JTVBMKG1fZWxlbWVudCkpOwotICAgIEdPd25Q
dHI8Y2hhcj4gaHlwZXJsaW5rVVJJKGF0a19oeXBlcmxpbmtfZ2V0X3VyaShoeXBlcmxpbmssIDAp
KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGh5cGVybGlua1VSSShhdGtfaHlwZXJsaW5rX2dldF91
cmkoaHlwZXJsaW5rLCAwKSk7CiAKICAgICAvLyBCdWlsZCB0aGUgcmVzdWx0IHN0cmluZywgc3Ry
aXBwaW5nIHRoZSBhYnNvbHV0ZSBVUkwgcGF0aHMgaWYgcHJlc2VudC4KICAgICBjaGFyKiBsb2Nh
bFVSSSA9IGdfc3Ryc3RyX2xlbihoeXBlcmxpbmtVUkkuZ2V0KCksIC0xLCAiTGF5b3V0VGVzdHMi
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJFZmwuY3BwCmluZGV4IDgwMTJkYTYuLjY4M2U2NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckVmbC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyRWZsLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5oIgogCiAjaW5jbHVkZSA8YXRrL2F0ay5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVt
ZW50KCkKIHsKQEAgLTY0LDcgKzY0LDcgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKEpTU3RyaW5nUmUKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShpZCk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRCdWZmZXIoc3RhdGlj
X2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGlkQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsK
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGlkLCBpZEJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6
ZSk7CiAKICAgICBBdGtPYmplY3QqIHJlc3VsdCA9IGNoaWxkRWxlbWVudEJ5SWQocm9vdCwgaWRC
dWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKaW5kZXggZDg5YThkMi4uODY4YWM3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJHdGsuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8YXRrL2F0ay5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
IAogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNl
ZEVsZW1lbnQoKQogewpAQCAtNjIsNyArNjIsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGlkKTsKLSAgICBHT3duUHRyPGdjaGFyPiBpZEJ1ZmZlcihz
dGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gaWRCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXpl
KSkpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaWQsIGlkQnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKIAogICAgIEF0a09iamVjdCogcmVzdWx0ID0gY2hpbGRFbGVtZW50QnlJZChyb290
LCBpZEJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
RHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJU
cmVlLmNwcAppbmRleCAxNWYyZjYxLi42NGFmNjY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJXb3Jr
UXVldWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0dPd25QdHJTb3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvR1VuaXF1ZVB0clNvdXAuaD4KICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRs
aWI+CiAjaW5jbHVkZSA8Y3N0cmluZz4KQEAgLTIwMywxOSArMjAzLDE5IEBAIENTdHJpbmcgZ2V0
T3V0cHV0RGlyKCkKICAgICAgICAgcmV0dXJuIHdlYmtpdE91dHB1dERpcjsKIAogICAgIENTdHJp
bmcgdG9wTGV2ZWxQYXRoID0gZ2V0VG9wTGV2ZWxQYXRoKCk7Ci0gICAgR093blB0cjxjaGFyPiBv
dXRwdXREaXIoZ19idWlsZF9maWxlbmFtZSh0b3BMZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0QnVp
bGQiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBvdXRwdXREaXIoZ19idWlsZF9maWxl
bmFtZSh0b3BMZXZlbFBhdGguZGF0YSgpLCAiV2ViS2l0QnVpbGQiLCBOVUxMKSk7CiAgICAgcmV0
dXJuIG91dHB1dERpci5nZXQoKTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0Rm9udHNQYXRoKCkK
IHsKICAgICBDU3RyaW5nIHdlYmtpdE91dHB1dERpciA9IGdldE91dHB1dERpcigpOwotICAgIEdP
d25QdHI8Y2hhcj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0RGlyLmRh
dGEoKSwgIkRlcGVuZGVuY2llcyIsICJSb290IiwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVM
TCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZm9udHNQYXRoKGdfYnVpbGRfZmlsZW5hbWUod2Vi
a2l0T3V0cHV0RGlyLmRhdGEoKSwgIkRlcGVuZGVuY2llcyIsICJSb290IiwgIndlYmtpdGd0ay10
ZXN0LWZvbnRzIiwgTlVMTCkpOwogICAgIGlmIChnX2ZpbGVfdGVzdChmb250c1BhdGguZ2V0KCks
IHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJU1RTIHwgR19GSUxFX1RFU1Rf
SVNfRElSKSkpCiAgICAgICAgIHJldHVybiBmb250c1BhdGguZ2V0KCk7CiAKICAgICAvLyBUcnkg
YWx0ZXJuYXRpdmUgZm9udHMgcGF0aC4KLSAgICBmb250c1BhdGguc2V0KGdfYnVpbGRfZmlsZW5h
bWUod2Via2l0T3V0cHV0RGlyLmRhdGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVMTCkp
OworICAgIGZvbnRzUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5k
YXRhKCksICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKICAgICBpZiAoZ19maWxlX3Rl
c3QoZm9udHNQYXRoLmdldCgpLCBzdGF0aWNfY2FzdDxHRmlsZVRlc3Q+KEdfRklMRV9URVNUX0VY
SVNUUyB8IEdfRklMRV9URVNUX0lTX0RJUikpKQogICAgICAgICByZXR1cm4gZm9udHNQYXRoLmdl
dCgpOwogCkBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUZvbnRzKGNv
bnN0IGNoYXIqIHRlc3RVUkwgPSAwKQogICAgIC8vIExvYWQgb3VyIGNvbmZpZ3VyYXRpb24gZmls
ZSwgd2hpY2ggc2V0cyB1cCBwcm9wZXIgYWxpYXNlcyBmb3IgZmFtaWx5CiAgICAgLy8gbmFtZXMg
bGlrZSBzYW5zLCBzZXJpZiBhbmQgbW9ub3NwYWNlLgogICAgIEZjQ29uZmlnKiBjb25maWcgPSBG
Y0NvbmZpZ0NyZWF0ZSgpOwotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnRDb25maWdGaWxlbmFtZShn
X2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiZm9udHMuY29uZiIsIE5VTEwpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBmb250Q29uZmlnRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShG
T05UU19DT05GX0RJUiwgImZvbnRzLmNvbmYiLCBudWxscHRyKSk7CiAgICAgaWYgKCFGY0NvbmZp
Z1BhcnNlQW5kTG9hZChjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGZvbnRDb25m
aWdGaWxlbmFtZS5nZXQoKSksIHRydWUpKQogICAgICAgICBnX2Vycm9yKCJDb3VsZG4ndCBsb2Fk
IGZvbnQgY29uZmlndXJhdGlvbiBmaWxlIGZyb206ICVzIiwgZm9udENvbmZpZ0ZpbGVuYW1lLmdl
dCgpKTsKIApAQCAtMjQ3LDMwICsyNDcsMzAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUZvbnRz
KGNvbnN0IGNoYXIqIHRlc3RVUkwgPSAwKQogICAgIGlmIChmb250c1BhdGguaXNOdWxsKCkpCiAg
ICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2NhdGUgdGVzdCBmb250cyBhdCAlcy4gSXMgV0VC
S0lUX1RPUF9MRVZFTCBzZXQ/IiwgZm9udHNQYXRoLmRhdGEoKSk7CiAKLSAgICBHT3duUHRyPEdE
aXI+IGZvbnRzRGlyZWN0b3J5KGdfZGlyX29wZW4oZm9udHNQYXRoLmRhdGEoKSwgMCwgMCkpOwor
ICAgIEdVbmlxdWVQdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihmb250c1BhdGgu
ZGF0YSgpLCAwLCBudWxscHRyKSk7CiAgICAgd2hpbGUgKGNvbnN0IGNoYXIqIGRpcmVjdG9yeUVu
dHJ5ID0gZ19kaXJfcmVhZF9uYW1lKGZvbnRzRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICBp
ZiAoIWdfc3RyX2hhc19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIudHRmIikgJiYgIWdfc3RyX2hh
c19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIub3RmIikpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgR093blB0cjxnY2hhcj4gZm9udFBhdGgoZ19idWlsZF9maWxlbmFtZShmb250c1Bh
dGguZGF0YSgpLCBkaXJlY3RvcnlFbnRyeSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmb250UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9y
eUVudHJ5LCBudWxscHRyKSk7CiAgICAgICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShj
b25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRQYXRoLmdldCgpKSkp
CiAgICAgICAgICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9hZCBmb250IGF0ICVzISIsIGZvbnRQ
YXRoLmdldCgpKTsKIAogICAgIH0KIAogICAgIC8vIEFoZW0gaXMgdXNlZCBieSBtYW55IGxheW91
dCB0ZXN0cy4KLSAgICBHT3duUHRyPGdjaGFyPiBhaGVtRm9udEZpbGVuYW1lKGdfYnVpbGRfZmls
ZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJBSEVNX19fXy5UVEYiLCBOVUxMKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gYWhlbUZvbnRGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZf
RElSLCAiQUhFTV9fX18uVFRGIiwgbnVsbHB0cikpOwogICAgIGlmICghRmNDb25maWdBcHBGb250
QWRkRmlsZShjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGFoZW1Gb250RmlsZW5h
bWUuZ2V0KCkpKSkKICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvYWQgZm9udCBhdCAlcyEi
LCBhaGVtRm9udEZpbGVuYW1lLmdldCgpKTsgCiAKICAgICBmb3IgKGludCBpID0gMTsgaSA8PSA5
OyBpKyspIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gZm9udEZpbGVuYW1lKGdfc3RyZHVwX3By
aW50ZigiV2ViS2l0V2VpZ2h0V2F0Y2hlciVpMDAudHRmIiwgaSkpOwotICAgICAgICBHT3duUHRy
PGdjaGFyPiBmb250UGF0aChnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiLi4iLCAi
Li4iLCAiZm9udHMiLCBmb250RmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZm9udEZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiV2ViS2l0V2VpZ2h0V2F0
Y2hlciVpMDAudHRmIiwgaSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmb250UGF0aChn
X2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiLi4iLCAiLi4iLCAiZm9udHMiLCBmb250
RmlsZW5hbWUuZ2V0KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFGY0NvbmZpZ0FwcEZvbnRB
ZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxGY0NoYXI4Kj4oZm9udFBhdGguZ2V0KCkp
KSkKICAgICAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9u
dFBhdGguZ2V0KCkpOyAKICAgICB9CiAKICAgICAvLyBBIGZvbnQgd2l0aCBubyB2YWxpZCBGb250
Y29uZmlnIGVuY29kaW5nIHRvIHRlc3QgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3NDUyCi0gICAgR093blB0cjxnY2hhcj4gZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdG
aWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiRm9udFdpdGhOb1ZhbGlk
RW5jb2RpbmcuZm9uIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRXaXRoTm9W
YWxpZEVuY29kaW5nRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJUiwgIkZv
bnRXaXRoTm9WYWxpZEVuY29kaW5nLmZvbiIsIG51bGxwdHIpKTsKICAgICBpZiAoIUZjQ29uZmln
QXBwRm9udEFkZEZpbGUoY29uZmlnLCByZWludGVycHJldF9jYXN0PEZjQ2hhcjgqPihmb250V2l0
aE5vVmFsaWRFbmNvZGluZ0ZpbGVuYW1lLmdldCgpKSkpCiAgICAgICAgIGdfZXJyb3IoIkNvdWxk
IG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwgZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZS5n
ZXQoKSk7IAogCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIGdjaGFyKiBkdW1wRnJhbWVzQXNU
ZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpKSB7CiAgICAgICAgIEdTTGlzdCogY2hpbGRyZW4gPSBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OmdldEZyYW1lQ2hpbGRyZW4oZnJhbWUpOwogICAgICAgICBmb3IgKEdT
TGlzdCogY2hpbGQgPSBjaGlsZHJlbjsgY2hpbGQ7IGNoaWxkID0gZ19zbGlzdF9uZXh0KGNoaWxk
KSkgewotICAgICAgICAgICAgR093blB0cjxnY2hhcj4gY2hpbGREYXRhKGR1bXBGcmFtZXNBc1Rl
eHQoc3RhdGljX2Nhc3Q8V2ViS2l0V2ViRnJhbWUqPihjaGlsZC0+ZGF0YSkpKTsKKyAgICAgICAg
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNoaWxkRGF0YShkdW1wRnJhbWVzQXNUZXh0KHN0YXRpY19j
YXN0PFdlYktpdFdlYkZyYW1lKj4oY2hpbGQtPmRhdGEpKSk7CiAgICAgICAgICAgICBhcHBlbmRT
dHJpbmcocmVzdWx0LCBjaGlsZERhdGEuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGdfc2xp
c3RfZnJlZShjaGlsZHJlbik7CkBAIC0zMTAsOCArMzEwLDggQEAgc3RhdGljIGdjaGFyKiBkdW1w
RnJhbWVzQXNUZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIAogc3RhdGljIGdpbnQgY29tcGFy
ZUhpc3RvcnlJdGVtcyhncG9pbnRlciogaXRlbTEsIGdwb2ludGVyKiBpdGVtMikKIHsKLSAgICBH
T3duUHRyPGdjaGFyPiBmaXJzdEl0ZW1UYXJnZXQod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0
X3RhcmdldChXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShpdGVtMSkpKTsKLSAgICBHT3duUHRyPGdj
aGFyPiBzZWNvbmRJdGVtVGFyZ2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQo
V0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oaXRlbTIpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
Zmlyc3RJdGVtVGFyZ2V0KHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90YXJnZXQoV0VCS0lU
X1dFQl9ISVNUT1JZX0lURU0oaXRlbTEpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2Vjb25k
SXRlbVRhcmdldCh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdGFyZ2V0KFdFQktJVF9XRUJf
SElTVE9SWV9JVEVNKGl0ZW0yKSkpOwogICAgIHJldHVybiBnX2FzY2lpX3N0cmNhc2VjbXAoZmly
c3RJdGVtVGFyZ2V0LmdldCgpLCBzZWNvbmRJdGVtVGFyZ2V0LmdldCgpKTsKIH0KIApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBIaXN0b3J5SXRlbShXZWJLaXRXZWJIaXN0b3J5
SXRlbSogaXRlbSwgaW50IGluZGVudCwgYm9vbCBjdXJyZW50CiAKICAgICBnX2ZyZWUodXJpU2No
ZW1lKTsKIAotICAgIEdPd25QdHI8Z2NoYXI+IHRhcmdldCh3ZWJraXRfd2ViX2hpc3RvcnlfaXRl
bV9nZXRfdGFyZ2V0KGl0ZW0pKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0YXJnZXQod2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RhcmdldChpdGVtKSk7CiAgICAgaWYgKHRhcmdldC5nZXQo
KSAmJiBzdHJsZW4odGFyZ2V0LmdldCgpKSA+IDApCiAgICAgICAgIHByaW50ZigiIChpbiBmcmFt
ZSBcIiVzXCIpIiwgdGFyZ2V0LmdldCgpKTsKICAgICBpZiAod2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1faXNfdGFyZ2V0X2l0ZW0oaXRlbSkpCkBAIC00MjksMTkgKzQyOSwxOSBAQCBib29sIHNob3Vs
ZFNldFdhaXRUb0R1bXBXYXRjaGRvZygpCiBDU3RyaW5nIHNvdXBVUklUb1N0cmluZ1ByZXNlcnZp
bmdQYXNzd29yZChTb3VwVVJJKiBzb3VwVVJJKQogewogICAgIGlmICghc291cFVSSS0+cGFzc3dv
cmQpIHsKLSAgICAgICAgR093blB0cjxjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5n
KHNvdXBVUkksIEZBTFNFKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNv
dXBfdXJpX3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwogICAgICAgICByZXR1cm4gdXJpU3Ry
aW5nLmdldCgpOwogICAgIH0KIAogICAgIC8vIHNvdXBfdXJpX3RvX3N0cmluZyBkb2VzIG5vdCBp
bnNlcnQgdGhlIHBhc3N3b3JkIGludG8gdGhlIHN0cmluZywgc28gd2UgbmVlZCB0byBjcmVhdGUg
dGhlCiAgICAgLy8gVVJJIHN0cmluZyBhbmQgdGhlbiByZWluc2VydCBhbnkgY3JlZGVudGlhbHMg
dGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIFNvdXBVUkkuIEFsbCB0ZXN0cyB0aGF0CiAgICAgLy8g
dXNlIFVSTC1lbWJlZGRlZCBjcmVkZW50aWFscyB1c2UgSFRUUCwgc28gaXQncyBzYWZlIGhlcmUu
Ci0gICAgR093blB0cjxjaGFyPiBwYXNzd29yZChzb3VwVVJJLT5wYXNzd29yZCk7Ci0gICAgR093
blB0cjxjaGFyPiB1c2VyKHNvdXBVUkktPnVzZXIpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGFz
c3dvcmQoc291cFVSSS0+cGFzc3dvcmQpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXNlcihzb3Vw
VVJJLT51c2VyKTsKICAgICBzb3VwVVJJLT5wYXNzd29yZCA9IDA7CiAgICAgc291cFVSSS0+dXNl
ciA9IDA7CiAKLSAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmco
c291cFVSSSwgRkFMU0UpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3Vy
aV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKICAgICBTdHJpbmcgYWJzb2x1dGVVUklXaXRo
b3V0Q3JlZGVudGlhbFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKTsK
ICAgICBTdHJpbmcgcHJvdG9jb2xBbmRDcmVkZW50aWFsID0gU3RyaW5nOjpmb3JtYXQoImh0dHA6
Ly8lczolc0AiLCB1c2VyID8gdXNlci5nZXQoKSA6ICIiLCBwYXNzd29yZC5nZXQoKSk7CiAgICAg
cmV0dXJuIGFic29sdXRlVVJJV2l0aG91dENyZWRlbnRpYWxTdHJpbmcucmVwbGFjZSgiaHR0cDov
LyIsIHByb3RvY29sQW5kQ3JlZGVudGlhbCkudXRmOCgpOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0
YXRpYyB2b2lkIGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiBzdGF0
aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBXZWJLaXRX
ZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZp
ZXcpOwotICAgIEdPd25QdHI8Z2NoYXI+IGxvY2FsU3RvcmFnZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJEdW1wUmVuZGVyVHJlZUd0ayIsICJkYXRhYmFzZXMi
LCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbG9jYWxTdG9yYWdlUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIkR1bXBSZW5kZXJUcmVlR3RrIiwgImRh
dGFiYXNlcyIsIG51bGxwdHIpKTsKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3Mp
LAogICAgICAgICAiZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIiwgRkFMU0UsCiAgICAg
ICAgICJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIsIEZBTFNFLApAQCAtNjc5LDcgKzY3OSw3IEBA
IHN0YXRpYyBDU3RyaW5nIHRlbXBvcmFyeURhdGFiYXNlRGlyZWN0b3J5KCkKICAgICBjb25zdCBj
aGFyKiBkaXJlY3RvcnlGcm9tRW52aXJvbm1lbnQgPSBnX2dldGVudigiRFVNUFJFTkRFUlRSRUVf
VEVNUCIpOwogICAgIGlmIChkaXJlY3RvcnlGcm9tRW52aXJvbm1lbnQpCiAgICAgICAgIHJldHVy
biBkaXJlY3RvcnlGcm9tRW52aXJvbm1lbnQ7Ci0gICAgR093blB0cjxjaGFyPiBmYWxsYmFjayhn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgImd0a3dlYmtpdGRydCIsICJk
YXRhYmFzZXMiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmYWxsYmFjayhnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgImd0a3dlYmtpdGRydCIsICJkYXRhYmFz
ZXMiLCBOVUxMKSk7CiAgICAgcmV0dXJuIGZhbGxiYWNrLmdldCgpOwogfQogCkBAIC05ODQsNyAr
OTg0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdTY3JpcHRDb25maXJtKFdlYktpdFdlYlZp
ZXcqIHZpZXcsIFdlYktpdFdlYkZyYW1lKiBmcmFtZSwKIHN0YXRpYyB2b2lkIHdlYlZpZXdUaXRs
ZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogdmlldywgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBnY2hhciogdGl0bGUsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAgaWYgKGdUZXN0UnVubmVyLT5k
dW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgJiYgIWRvbmUpIHsKLSAgICAgICAgR093blB0cjxjaGFy
PiBmcmFtZU5hbWUoZ2V0RnJhbWVOYW1lU3VpdGFibGVGb3JUZXN0UmVzdWx0KHZpZXcsIGZyYW1l
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZyYW1lTmFtZVN1aXRh
YmxlRm9yVGVzdFJlc3VsdCh2aWV3LCBmcmFtZSkpOwogICAgICAgICBwcmludGYoIiVzIC0gZGlk
UmVjZWl2ZVRpdGxlOiAlc1xuIiwgZnJhbWVOYW1lLmdldCgpLCB0aXRsZSA/IHRpdGxlIDogIiIp
OwogICAgIH0KIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgc3RhdGljIHZvaWQgd2ViRnJhbWVMb2Fk
U3RhdHVzTm90aWZpZWQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBncG9pbnRlciB1c2VyX2RhdGEK
ICAgICBXZWJLaXRMb2FkU3RhdHVzIGxvYWRTdGF0dXMgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF9s
b2FkX3N0YXR1cyhmcmFtZSk7CiAKICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRD
YWxsYmFja3MoKSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFtZU5h
bWVTdWl0YWJsZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJh
bWUpLCBmcmFtZSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRGcmFt
ZU5hbWVTdWl0YWJsZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXco
ZnJhbWUpLCBmcmFtZSkpOwogCiAgICAgICAgIHN3aXRjaCAobG9hZFN0YXR1cykgewogICAgICAg
ICBjYXNlIFdFQktJVF9MT0FEX1BST1ZJU0lPTkFMOgpAQCAtMTE3NiwxMCArMTE3NiwxMCBAQCBz
dGF0aWMgU3RyaW5nIHBhdGhGcm9tU291cFVSSShTb3VwVVJJKiB1cmkpCiAgICAgICAgIHJldHVy
biBzb3VwVVJJVG9TdHJpbmdQcmVzZXJ2aW5nUGFzc3dvcmQodXJpKS5kYXRhKCk7CiAKICAgICBT
dHJpbmcgcGF0aFN0cmluZyA9IHVyaS0+cGF0aDsKLSAgICBHT3duUHRyPGdjaGFyPiBwYXRoQmFz
ZW5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZShwYXRoU3RyaW5nLnV0ZjgoKS5kYXRhKCkpKTsKKyAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBwYXRoQmFzZW5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZShwYXRo
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIFdlYktpdFdlYkZyYW1lKiBtYWluRnJhbWUg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUod2ViVmlldyk7Ci0gICAgR093blB0cjxT
b3VwVVJJPiBtYWluRnJhbWVVcmkoc291cF91cmlfbmV3KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Vy
aShtYWluRnJhbWUpKSk7CisgICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBtYWluRnJhbWVVcmkoc291
cF91cmlfbmV3KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShtYWluRnJhbWUpKSk7CiAKICAgICBT
dHJpbmcgbWFpbkZyYW1lVXJpUGF0aFN0cmluZyA9IG1haW5GcmFtZVVyaS5nZXQoKS0+cGF0aDsK
ICAgICBTdHJpbmcgYmFzZVBhdGggPSBtYWluRnJhbWVVcmlQYXRoU3RyaW5nLnN1YnN0cmluZygw
LCBtYWluRnJhbWVVcmlQYXRoU3RyaW5nLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKQEAgLTEyMDYs
NyArMTIwNiw3IEBAIHN0YXRpYyBDU3RyaW5nIGNvbnZlcnROZXR3b3JrUmVxdWVzdFRvVVJMUGF0
aChXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKIAogc3RhdGljIENTdHJpbmcgY29udmVy
dFdlYlJlc291cmNlVG9VUkxQYXRoKFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNvdXJjZSkKIHsK
LSAgICBHT3duUHRyPFNvdXBVUkk+IHVyaShzb3VwX3VyaV9uZXcod2Via2l0X3dlYl9yZXNvdXJj
ZV9nZXRfdXJpKHdlYlJlc291cmNlKSkpOworICAgIEdVbmlxdWVQdHI8U291cFVSST4gdXJpKHNv
dXBfdXJpX25ldyh3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVzb3VyY2UpKSk7CiAg
ICAgcmV0dXJuIHBhdGhGcm9tU291cFVSSSh1cmkuZ2V0KCkpLnV0ZjgoKTsKIH0KIApAQCAtMTIx
NSw3ICsxMjE1LDcgQEAgc3RhdGljIENTdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKICAgICBpZiAoIWdfc3RyX2hhc19wcmVmaXgodXJpU3RyaW5n
LCAiZmlsZTovLyIpKQogICAgICAgICByZXR1cm4gQ1N0cmluZyh1cmlTdHJpbmcpOwogCi0gICAg
R093blB0cjxnY2hhcj4gYmFzZW5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmlTdHJpbmcpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiBiYXNlbmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHVyaVN0
cmluZykpOwogICAgIHJldHVybiBDU3RyaW5nKGJhc2VuYW1lLmdldCgpKTsKIH0KIApAQCAtMTIy
NCw3ICsxMjI0LDcgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoU291cFVSSSogdXJpKQogICAgIGlmICghdXJpKQogICAgICAgICByZXR1cm4gQ1N0cmlu
ZygiKG51bGwpIik7CiAKLSAgICBHT3duUHRyPGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19z
dHJpbmcodXJpLCBmYWxzZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpU3RyaW5nKHNvdXBf
dXJpX3RvX3N0cmluZyh1cmksIGZhbHNlKSk7CiAgICAgcmV0dXJuIHVybFN1aXRhYmxlRm9yVGVz
dFJlc3VsdCh1cmlTdHJpbmcuZ2V0KCkpOwogfQogCkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBzdGF0
aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChHRXJyb3IqIGVycm9y
LCBXZWJLaXRXZWJSZXNvdXJjZQogICAgICAgICBlcnJvckRvbWFpbiA9ICJXZWJLaXRFcnJvckRv
bWFpbiI7CiAKICAgICAvLyBUT0RPOiB0aGUgb3RoZXIgcG9ydHMgZ2V0IHRoZSBmYWlsaW5nVVJM
IGZyb20gdGhlIFJlc291cmNlRXJyb3IKLSAgICBHT3duUHRyPGNoYXI+IGVycm9yU3RyaW5nKGdf
c3RyZHVwX3ByaW50ZigiPE5TRXJyb3IgZG9tYWluICVzLCBjb2RlICVkLCBmYWlsaW5nIFVSTCBc
IiVzXCI+IiwKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGVycm9yU3RyaW5nKGdfc3RyZHVwX3ByaW50
ZigiPE5TRXJyb3IgZG9tYWluICVzLCBjb2RlICVkLCBmYWlsaW5nIFVSTCBcIiVzXCI+IiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRvbWFpbiwg
ZXJyb3ItPmNvZGUsIHJlc291cmNlVVJJU3RyaW5nLmRhdGEoKSkpOwogICAgIHJldHVybiBDU3Ry
aW5nKGVycm9yU3RyaW5nLmdldCgpKTsKIH0KQEAgLTEyNTUsNyArMTI1NSw3IEBAIHN0YXRpYyBD
U3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYktpdE5ldHdvcmtSZXF1
ZXN0KiByZXF1ZXN0KQogICAgIFNvdXBVUkkqIG1haW5Eb2N1bWVudFVSSSA9IHNvdXBfbWVzc2Fn
ZV9nZXRfZmlyc3RfcGFydHkoc291cE1lc3NhZ2UpOwogICAgIENTdHJpbmcgbWFpbkRvY3VtZW50
VVJJU3RyaW5nKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1haW5Eb2N1bWVudFVS
SSkpOwogICAgIENTdHJpbmcgcGF0aChjb252ZXJ0TmV0d29ya1JlcXVlc3RUb1VSTFBhdGgocmVx
dWVzdCkpOwotICAgIEdPd25QdHI8Y2hhcj4gZGVzY3JpcHRpb24oZ19zdHJkdXBfcHJpbnRmKCI8
TlNVUkxSZXF1ZXN0IFVSTCAlcywgbWFpbiBkb2N1bWVudCBVUkwgJXMsIGh0dHAgbWV0aG9kICVz
PiIsCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXNjcmlwdGlvbihnX3N0cmR1cF9wcmludGYoIjxO
U1VSTFJlcXVlc3QgVVJMICVzLCBtYWluIGRvY3VtZW50IFVSTCAlcywgaHR0cCBtZXRob2QgJXM+
IiwKICAgICAgICAgcGF0aC5kYXRhKCksIG1haW5Eb2N1bWVudFVSSVN0cmluZy5kYXRhKCksIHNv
dXBNZXNzYWdlLT5tZXRob2QpKTsKICAgICByZXR1cm4gQ1N0cmluZyhkZXNjcmlwdGlvbi5nZXQo
KSk7CiB9CkBAIC0xMjc2LDcgKzEyNzYsNyBAQCBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChXZWJLaXROZXR3b3JrUmVzcG9uc2UqIHJlc3BvbnNlKQogICAg
IH0gZWxzZQogICAgICAgICBwYXRoID0gQ1N0cmluZygiKG51bGwpIik7CiAKLSAgICBHT3duUHRy
PGNoYXI+IGRlc2NyaXB0aW9uKGdfc3RyZHVwX3ByaW50ZigiPE5TVVJMUmVzcG9uc2UgJXMsIGh0
dHAgc3RhdHVzIGNvZGUgJWQ+IiwgcGF0aC5kYXRhKCksIHN0YXR1c0NvZGUpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IGRlc2NyaXB0aW9uKGdfc3RyZHVwX3ByaW50ZigiPE5TVVJMUmVzcG9uc2Ug
JXMsIGh0dHAgc3RhdHVzIGNvZGUgJWQ+IiwgcGF0aC5kYXRhKCksIHN0YXR1c0NvZGUpKTsKICAg
ICByZXR1cm4gQ1N0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CiB9CiAKQEAgLTEzMDAsNyArMTMw
MCw3IEBAIHN0YXRpYyB2b2lkIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdFdlYkZyYW1lKiB3ZWJGCiAgICAgU291cFVSSSogdXJpID0gc291cF91
cmlfbmV3KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CiAKICAgICBp
ZiAoU09VUF9VUklfSVNfVkFMSUQodXJpKSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHVyaVN0
cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOworICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOwogCiAgICAg
ICAgIGlmIChTT1VQX1VSSV9WQUxJRF9GT1JfSFRUUCh1cmkpICYmIGdfc3RyY21wMCh1cmktPmhv
c3QsICIxMjcuMC4wLjEiKQogICAgICAgICAgICAgJiYgZ19zdHJjbXAwKHVyaS0+aG9zdCwgIjI1
NS4yNTUuMjU1LjI1NSIpCkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBzdGF0aWMgdm9pZCBmcmFtZUxv
YWRFdmVudENhbGxiYWNrKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RwogICAgIGlmIChkb25lIHx8ICFnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNr
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHT3duUHRyPGNoYXI+IGZyYW1lTmFtZShnZXRG
cmFtZU5hbWVTdWl0YWJsZUZvclRlc3RSZXN1bHQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcoZnJhbWUpLCBmcmFtZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZnJhbWVOYW1lKGdldEZy
YW1lTmFtZVN1aXRhYmxlRm9yVGVzdFJlc3VsdCh3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmll
dyhmcmFtZSksIGZyYW1lKSk7CiAgICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6CiAgICAg
ICAgIEFTU0VSVCh1cmwpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0Vk
aXRpbmdDYWxsYmFja3MuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0VkaXRpbmdDYWxs
YmFja3MuY3BwCmluZGV4IGVmNWE5NjkuLjNjMDhmODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9FZGl0aW5nQ2FsbGJhY2tzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvRWRpdGluZ0NhbGxiYWNrcy5jcHAKQEAgLTMzLDI0ICszMywyNCBAQAogI2luY2x1
ZGUgIlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0
L3dlYmtpdC5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBzdGF0aWMgQ1N0cmluZyBkdW1wTm9kZVBhdGgoV2ViS2l0RE9NTm9kZSogbm9kZSkKIHsKLSAg
ICBHT3duUHRyPGdjaGFyPiBub2RlTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFtZShu
b2RlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbm9kZU5hbWUod2Via2l0X2RvbV9ub2RlX2dl
dF9ub2RlX25hbWUobm9kZSkpOwogICAgIEdTdHJpbmcqIHBhdGggPSBnX3N0cmluZ19uZXcobm9k
ZU5hbWUuZ2V0KCkpOwogCiAgICAgV2ViS2l0RE9NTm9kZSogcGFyZW50ID0gd2Via2l0X2RvbV9u
b2RlX2dldF9wYXJlbnRfbm9kZShub2RlKTsKICAgICB3aGlsZSAocGFyZW50KSB7Ci0gICAgICAg
IEdPd25QdHI8Z2NoYXI+IHBhcmVudE5hbWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25hbWUo
cGFyZW50KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhcmVudE5hbWUod2Via2l0X2Rv
bV9ub2RlX2dldF9ub2RlX25hbWUocGFyZW50KSk7CiAKICAgICAgICAgZ19zdHJpbmdfYXBwZW5k
KHBhdGgsICIgPiAiKTsKICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKHBhdGgsIHBhcmVudE5hbWUu
Z2V0KCkpOwogICAgICAgICBwYXJlbnQgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X3BhcmVudF9ub2Rl
KHBhcmVudCk7CiAgICAgfQogCi0gICAgR093blB0cjxnY2hhcj4gcGF0aEJ1ZmZlcihnX3N0cmlu
Z19mcmVlKHBhdGgsIEZBTFNFKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gcGF0aEJ1ZmZlcihn
X3N0cmluZ19mcmVlKHBhdGgsIEZBTFNFKSk7CiAgICAgcmV0dXJuIHBhdGhCdWZmZXIuZ2V0KCk7
CiB9CiAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIENTdHJpbmcgZHVtcFJhbmdlKFdlYktpdERP
TVJhbmdlKiByYW5nZSkKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gIihudWxsKSI7
CiAKLSAgICBHT3duUHRyPGdjaGFyPiBkdW1wKGdfc3RyZHVwX3ByaW50ZigicmFuZ2UgZnJvbSAl
bGkgb2YgJXMgdG8gJWxpIG9mICVzIiwKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBkdW1wKGdfc3Ry
ZHVwX3ByaW50ZigicmFuZ2UgZnJvbSAlbGkgb2YgJXMgdG8gJWxpIG9mICVzIiwKICAgICAgICAg
d2Via2l0X2RvbV9yYW5nZV9nZXRfc3RhcnRfb2Zmc2V0KHJhbmdlLCAwKSwKICAgICAgICAgZHVt
cE5vZGVQYXRoKHdlYmtpdF9kb21fcmFuZ2VfZ2V0X3N0YXJ0X2NvbnRhaW5lcihyYW5nZSwgMCkp
LmRhdGEoKSwKICAgICAgICAgd2Via2l0X2RvbV9yYW5nZV9nZXRfZW5kX29mZnNldChyYW5nZSwg
MCksCkBAIC0xNTEsNyArMTUxLDcgQEAgZ2Jvb2xlYW4gc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5n
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRET01SYW5nZSogZnJvbVIKIGdib29sZWFu
IHNob3VsZEFwcGx5U3R5bGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUsIFdlYktpdERPTVJhbmdlKiByYW5nZSkKIHsKICAgICBpZiAo
IWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAg
R093blB0cjxnY2hhcj4gc3R5bGVUZXh0KHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9u
X2dldF9jc3NfdGV4dChzdHlsZSkpOworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdHlsZVRl
eHQod2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X2Nzc190ZXh0KHN0eWxlKSk7
CiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHlsZTolcyB0
b0VsZW1lbnRzSW5ET01SYW5nZTolc1xuIiwKICAgICAgICAgICAgICAgIHN0eWxlVGV4dC5nZXQo
KSwgZHVtcFJhbmdlKHJhbmdlKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDNjNjM2NDguLjU4MjYwMjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcApAQCAtMzUsNyArMzUsNiBAQAogCiAjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNsdWRlICJXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaCIKLSNpbmNsdWRlIDxHT3duUHRyR3RrLmg+CiAjaW5jbHVkZSA8R1Jl
ZlB0ckd0ay5oPgogI2luY2x1ZGUgPEd0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU09iamVjdFJlZi5oPgpAQCAtNDgsNiArNDcsOCBAQAogI2luY2x1ZGUgPHdlYmtp
dC93ZWJraXR3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogZXh0ZXJuICJDIiB7CkBAIC0yMjAsNyArMjIxLDcgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgY29udGV4dENsaWNrQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW8KICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRf
d2ViX3ZpZXcobWFpbkZyYW1lKTsKICAgICBHdGtNZW51KiBndGtNZW51ID0gd2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0X21lbnUodmlldyk7CiAgICAgaWYgKGd0a01lbnUpIHsKLSAgICAgICAg
R093blB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRB
SU5FUihndGtNZW51KSkpOworICAgICAgICBHVW5pcXVlUHRyPEdMaXN0PiBpdGVtcyhndGtfY29u
dGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKGd0a01lbnUpKSk7CiAgICAgICAgIEpT
VmFsdWVSZWYgYXJyYXlWYWx1ZXNbZ19saXN0X2xlbmd0aChpdGVtcy5nZXQoKSldOwogICAgICAg
ICBpbnQgaW5kZXggPSAwOwogICAgICAgICBmb3IgKEdMaXN0KiBpdGVtID0gZ19saXN0X2ZpcnN0
KGl0ZW1zLmdldCgpKTsgaXRlbTsgaXRlbSA9IGdfbGlzdF9uZXh0KGl0ZW0pKSB7CkBAIC01NDIs
OSArNTQzLDkgQEAgc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGYKICAgICAvLyBJZiB0aGlzIGlzIGFu
IEhUVFAgdGVzdCwgd2Ugc3RpbGwgbmVlZCB0byBwYXNzIGEgbG9jYWwgZmlsZSBwYXRoCiAgICAg
Ly8gdG8gV2ViQ29yZS4gRXZlbiB0aG91Z2ggdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgdGhpcyBz
aG91bGQgYmUgZmluZQogICAgIC8vIGZvciBtb3N0IHRlc3RzLgotICAgIEdPd25QdHI8Z2NoYXI+
IHNjaGVtZShnX2ZpbGVfZ2V0X3VyaV9zY2hlbWUocGFyZW50RGlyZWN0b3J5LmdldCgpKSk7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gc2NoZW1lKGdfZmlsZV9nZXRfdXJpX3NjaGVtZShwYXJlbnRE
aXJlY3RvcnkuZ2V0KCkpKTsKICAgICBpZiAoZ19zdHJfZXF1YWwoc2NoZW1lLmdldCgpLCAiaHR0
cCIpIHx8IGdfc3RyX2VxdWFsKHNjaGVtZS5nZXQoKSwgImh0dHBzIikpIHsKLSAgICAgICAgR093
blB0cjxnY2hhcj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2RpcigpKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gY3VycmVudERpcmVjdG9yeShnX2dldF9jdXJyZW50X2Rpcigp
KTsKICAgICAgICAgcGFyZW50RGlyZWN0b3J5ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3Bh
dGgoY3VycmVudERpcmVjdG9yeS5nZXQoKSkpOwogICAgIH0KIApAQCAtNTU3LDcgKzU1OCw3IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmCiAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGVuYW1lU3Ry
aW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dCwgZmlsZXNBcnJheSwgaSwgMCksIDApOwogICAgICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlbmFtZVN0cmlu
Zyk7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lQnVmZmVyKHN0YXRpY19jYXN0PGdj
aGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZmlsZW5hbWVCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkp
OwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGVuYW1lU3RyaW5nLCBmaWxlbmFt
ZUJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmaWxl
bmFtZVN0cmluZyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0
UnVubmVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNw
cAppbmRleCBlYTU3ZDIzLi5hN2MzOTdlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rl
c3RSdW5uZXJHdGsuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBleHRlcm4gIkMiIHsK
QEAgLTEzMiwxOSArMTMyLDE5IEBAIHZvaWQgVGVzdFJ1bm5lcjo6bm90aWZ5RG9uZSgpCiAKIEpT
U3RyaW5nUmVmIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTU3RyaW5nUmVmIHVybCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHVybENTdHJpbmco
SlNTdHJpbmdDb3B5VVRGOENTdHJpbmcodXJsKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmxD
U3RyaW5nKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHVybCkpOwogICAgIGlmICghZ19zdHJfaGFz
X3ByZWZpeCh1cmxDU3RyaW5nLmdldCgpLCAiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvIikpCiAg
ICAgICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOwogCiAgICAgY29uc3QgY2hhciogbGF5
b3V0VGVzdHNTdWZmaXggPSB1cmxDU3RyaW5nLmdldCgpICsgc3RybGVuKCJmaWxlOi8vL3RtcC8i
KTsKLSAgICBHT3duUHRyPGNoYXI+IHRlc3RQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ2V0VG9wTGV2
ZWxQYXRoKCkuZGF0YSgpLCBsYXlvdXRUZXN0c1N1ZmZpeCwgTlVMTCkpOwotICAgIEdPd25QdHI8
Y2hhcj4gdGVzdFVSSShnX2ZpbGVuYW1lX3RvX3VyaSh0ZXN0UGF0aC5nZXQoKSwgMCwgMCkpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFBhdGgoZ19idWlsZF9maWxlbmFtZShnZXRUb3BMZXZl
bFBhdGgoKS5kYXRhKCksIGxheW91dFRlc3RzU3VmZml4LCBudWxscHRyKSk7CisgICAgR1VuaXF1
ZVB0cjxjaGFyPiB0ZXN0VVJJKGdfZmlsZW5hbWVfdG9fdXJpKHRlc3RQYXRoLmdldCgpLCAwLCAw
KSk7CiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRlc3RVUkkuZ2V0
KCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpT
U3RyaW5nUmVmIHRhcmdldCkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiByZWxhdGl2ZVVSTChKU1N0
cmluZ0NvcHlVVEY4Q1N0cmluZyh1cmwpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZWxhdGl2
ZVVSTChKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyh1cmwpKTsKICAgICBTb3VwVVJJKiBiYXNlVVJJ
ID0gc291cF91cmlfbmV3KHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShtYWluRnJhbWUpKTsKICAg
ICBTb3VwVVJJKiBhYnNvbHV0ZVVSSSA9IHNvdXBfdXJpX25ld193aXRoX2Jhc2UoYmFzZVVSSSwg
cmVsYXRpdmVVUkwuZ2V0KCkpOwogICAgIHNvdXBfdXJpX2ZyZWUoYmFzZVVSSSk7CkBAIC0yMTks
OSArMjE5LDkgQEAgdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW4KIAogdm9pZCBUZXN0UnVubmVyOjpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4s
IEpTU3RyaW5nUmVmIHByb3RvY29sLCBKU1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVTdWJk
b21haW5zKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHNvdXJjZU9yaWdpbkdDaGFyKEpTU3RyaW5n
Q29weVVURjhDU3RyaW5nKHNvdXJjZU9yaWdpbikpOwotICAgIEdPd25QdHI8Z2NoYXI+IHByb3Rv
Y29sR0NoYXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcocHJvdG9jb2wpKTsKLSAgICBHT3duUHRy
PGdjaGFyPiBob3N0R0NoYXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoaG9zdCkpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IHNvdXJjZU9yaWdpbkdDaGFyKEpTU3RyaW5nQ29weVVURjhDU3RyaW5n
KHNvdXJjZU9yaWdpbikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHByb3RvY29sR0NoYXIoSlNT
dHJpbmdDb3B5VVRGOENTdHJpbmcocHJvdG9jb2wpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBo
b3N0R0NoYXIoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoaG9zdCkpOwogICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6cmVtb3ZlV2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihzb3VyY2VPcmln
aW5HQ2hhci5nZXQoKSwgcHJvdG9jb2xHQ2hhci5nZXQoKSwgaG9zdEdDaGFyLmdldCgpLCBpbmNs
dWRlU3ViZG9tYWlucyk7CiB9CiAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBt
ZXNzYWdlKQogICAgICAgICB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFp
bkZyYW1lKTsKICAgICBBU1NFUlQodmlldyk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBjTWVzc2Fn
ZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gY01lc3NhZ2UoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobWVzc2FnZSkpOwogICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKHZpZXcsIGNNZXNzYWdlLmdldCgpKTsKIH0KIApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAg
ICAgV2ViS2l0SWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF9nZXRfaWNvbl9kYXRhYmFz
ZSgpOwogICAgIGlmIChlbmFibGVkKSB7Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IGljb25EYXRh
YmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksICJEdW1wUmVuZGVyVHJl
ZSIsICJpY29uZGF0YWJhc2UiLCBOVUxMKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGlj
b25EYXRhYmFzZVBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksICJEdW1wUmVu
ZGVyVHJlZSIsICJpY29uZGF0YWJhc2UiLCBudWxscHRyKSk7CiAgICAgICAgIHdlYmtpdF9pY29u
X2RhdGFiYXNlX3NldF9wYXRoKGRhdGFiYXNlLCBpY29uRGF0YWJhc2VQYXRoLmdldCgpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgd2Via2l0X2ljb25fZGF0YWJhc2Vfc2V0X3BhdGgoZGF0YWJhc2Us
IDApOwpAQCAtNDk4LDcgKzQ5OCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdGFyZ2V0LCBKU09iamVjdFJlCiAgICAgaWYg
KCFKU1ZhbHVlSXNOdW1iZXIoY29udGV4dCwgbGVuZ3RoVmFsdWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBHT3duUHRyPGdjaGFyPiB0YXJnZXRTdHJpbmcoSlNTdHJpbmdDb3B5VVRG
OENTdHJpbmcodGFyZ2V0KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGFyZ2V0U3RyaW5nKEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKHRhcmdldCkpOwogCiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0
YXRpY19jYXN0PHNpemVfdD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGxlbmd0aFZhbHVlLCAw
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtNjMxLDcg
KzYzMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3luY0xvY2FsU3RvcmFnZSgpCiAKIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZv
cmJpZGRlbiwgSlNTdHJpbmdSZWYgc2NoZW1lKQogewotICAgIEdPd25QdHI8Z2NoYXI+IHVybFNj
aGVtZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhzY2hlbWUpKTsKKyAgICBHVW5pcXVlUHRyPGdj
aGFyPiB1cmxTY2hlbWUoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc2NoZW1lKSk7CiAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJM
U2NoZW1lKGZvcmJpZGRlbiwgdXJsU2NoZW1lLmdldCgpKTsKIH0KIApAQCAtNjU5LDggKzY1OSw4
IEBAIHN0YXRpYyBnYm9vbGVhbiBib29sZWFuRnJvbVZhbHVlKGdjaGFyKiB2YWx1ZSkKIAogdm9p
ZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmlu
Z1JlZiB2YWx1ZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiBvcmlnaW5hbE5hbWUoSlNTdHJpbmdD
b3B5VVRGOENTdHJpbmcoa2V5KSk7Ci0gICAgR093blB0cjxnY2hhcj4gdmFsdWVBc1N0cmluZyhK
U1N0cmluZ0NvcHlVVEY4Q1N0cmluZyh2YWx1ZSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG9y
aWdpbmFsTmFtZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhrZXkpKTsKKyAgICBHVW5pcXVlUHRy
PGdjaGFyPiB2YWx1ZUFzU3RyaW5nKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKHZhbHVlKSk7CiAK
ICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXco
bWFpbkZyYW1lKTsKICAgICBBU1NFUlQodmlldyk7CkBAIC03MzQsMTMgKzczNCwxMyBAQCB2b2lk
IFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5n
UmVmIHZhbHVlKQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZFVzZXJTY3JpcHQoSlNTdHJpbmdSZWYg
c291cmNlLCBib29sIHJ1bkF0U3RhcnQsIGJvb2wgYWxsRnJhbWVzKQogewotICAgIEdPd25QdHI8
Z2NoYXI+IHNvdXJjZUNvZGUoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoc291cmNlKSk7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gc291cmNlQ29kZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhzb3Vy
Y2UpKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmFkZFVzZXJTY3JpcHQobWFpbkZy
YW1lLCBzb3VyY2VDb2RlLmdldCgpLCBydW5BdFN0YXJ0LCBhbGxGcmFtZXMpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OmFkZFVzZXJTdHlsZVNoZWV0KEpTU3RyaW5nUmVmIHNvdXJjZSwgYm9vbCBh
bGxGcmFtZXMpCiB7Ci0gICAgR093blB0cjxnY2hhcj4gc291cmNlQ29kZShKU1N0cmluZ0NvcHlV
VEY4Q1N0cmluZyhzb3VyY2UpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzb3VyY2VDb2RlKEpT
U3RyaW5nQ29weVVURjhDU3RyaW5nKHNvdXJjZSkpOwogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6YWRkVXNlclN0eWxlU2hlZXQobWFpbkZyYW1lLCBzb3VyY2VDb2RlLmdldCgpLCBhbGxG
cmFtZXMpOwogICAgIC8vIEZJWE1FOiBuZWVkcyBtb3JlIGludmVzdGlnYXRpb24gd2h5IHVzZXJz
Y3JpcHRzL3VzZXItc3R5bGUtdG9wLWZyYW1lLW9ubHkuaHRtbCBmYWlscyB3aGVuIGFsbEZyYW1l
cyBpcyBmYWxzZS4KIApAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2Vy
aWFsaXplSFRUUExvYWRzKGJvb2wgc2VyaWFsaXplKQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFRl
eHREaXJlY3Rpb24oSlNTdHJpbmdSZWYgZGlyZWN0aW9uKQogewotICAgIEdPd25QdHI8Z2NoYXI+
IHdyaXRpbmdEaXJlY3Rpb24oSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcoZGlyZWN0aW9uKSk7Cisg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gd3JpdGluZ0RpcmVjdGlvbihKU1N0cmluZ0NvcHlVVEY4Q1N0
cmluZyhkaXJlY3Rpb24pKTsKIAogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwogICAgIEFTU0VSVCh2aWV3KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcAppbmRleCBl
ZWQzYmJlLi5hZWU1NTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGV4
dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1RleHRJ
bnB1dENvbnRyb2xsZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJEdW1wUmVu
ZGVyVHJlZS5oIgogI2luY2x1ZGUgIldlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oIgotI2luY2x1ZGUgPEdPd25QdHJHdGsuaD4KKyNpbmNsdWRlIDxHVW5pcXVlUHRyR3Rr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
U3RyaW5nUmVmLmg+CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1hcmtl
ZFRleHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpCiAg
ICAgQVNTRVJUKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBH
T3duUHRyPGdjaGFyPiBzdHJpbmdCdWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhi
dWZmZXJTaXplKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNf
Y2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4
Q1N0cmluZyhzdHJpbmcsIHN0cmluZ0J1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgSlNT
dHJpbmdSZWxlYXNlKHN0cmluZyk7CiAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgaW5zZXJ0VGV4dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwKICAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbik7CiAKICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJp
bmcpOwotICAgIEdPd25QdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+
KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RyaW5nQnVm
ZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkpKTsKICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyaW5nQnVmZmVyLmdldCgpLCBidWZmZXJTaXpl
KTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKIApAQCAtMTczLDcgKzE3Myw3IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGRvQ29tbWFuZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwKICAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlv
bik7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShzdHJpbmcpOwotICAgIEdPd25QdHI8Z2NoYXI+IHN0cmluZ0J1ZmZlcihzdGF0aWNf
Y2FzdDxnY2hhcio+KGdfbWFsbG9jKGJ1ZmZlclNpemUpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gc3RyaW5nQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVmZmVyU2l6ZSkp
KTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyaW5nQnVmZmVyLmdldCgp
LCBidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwCmluZGV4IDIzZWNhN2IuLjk1
NDYxMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVt
R3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvV29ya1F1ZXVlSXRlbUd0ay5j
cHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
Zi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KLSNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogCiAvLyBSZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkIFVURi04IGNoYXJhY3Rl
ciBidWZmZXIgd2hpY2ggbXVzdCBiZSBmcmVlZCB3aXRoIGdfZnJlZSgpCiBnY2hhciogSlNTdHJp
bmdDb3B5VVRGOENTdHJpbmcoSlNTdHJpbmdSZWYganNTdHJpbmcpCkBAIC01OSwxMSArNTksMTEg
QEAgYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKIAogYm9vbCBMb2FkSFRNTFN0cmluZ0l0
ZW06Omludm9rZSgpIGNvbnN0CiB7Ci0gICAgR093blB0cjxnY2hhcj4gY29udGVudChKU1N0cmlu
Z0NvcHlVVEY4Q1N0cmluZyhtX2NvbnRlbnQuZ2V0KCkpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBi
YXNlVVJMKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1fYmFzZVVSTC5nZXQoKSkpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGNvbnRlbnQoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV9jb250ZW50
LmdldCgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYmFzZVVSTChKU1N0cmluZ0NvcHlVVEY4
Q1N0cmluZyhtX2Jhc2VVUkwuZ2V0KCkpKTsKIAogICAgIGlmIChtX3VucmVhY2hhYmxlVVJMKSB7
Ci0gICAgICAgIEdPd25QdHI8Z2NoYXI+IHVucmVhY2hhYmxlVVJMKEpTU3RyaW5nQ29weVVURjhD
U3RyaW5nKG1fdW5yZWFjaGFibGVVUkwuZ2V0KCkpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gdW5yZWFjaGFibGVVUkwoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobV91bnJlYWNoYWJsZVVS
TC5nZXQoKSkpOwogICAgICAgICB3ZWJraXRfd2ViX2ZyYW1lX2xvYWRfYWx0ZXJuYXRlX3N0cmlu
ZyhtYWluRnJhbWUsIGNvbnRlbnQuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVhY2hhYmxlVVJM
LmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2UKaW5kZXggOTE2YTkzOS4uMTkwYjFmZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zMyw3ICszMyw2IEBAIHNldCh3ZWJraXQyX2FwaV9oYXJu
ZXNzX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9ndGsvUGxhdGZvcm1VdGlsaXRp
ZXNHdGsuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vZ3RrL1BsYXRmb3JtV2ViVmlld0d0
ay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNw
cAotICAgIC4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcAog
KQogCiBsaXN0KEFQUEVORCB0ZXN0X3d0Zl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9ET01Ob2RlVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRE9NTm9kZVRlc3QuY3BwCmluZGV4IGUxNzU0Y2Yu
LmQxODdjNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9ET01Ob2RlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL0RPTU5vZGVUZXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NUZXN0LmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
LXdlYi1leHRlbnNpb24uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiBjbGFzcyBXZWJLaXRET01Ob2RlVGVz
dCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6CkBAIC0xODUsNyArMTg1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVDb3VudDsgaSsr
KSB7CiAgICAgICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xp
c3RfaXRlbShsaXN0LCBpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9E
RShub2RlKSk7Ci0gICAgICAgICAgICBHT3duUHRyPGNoYXI+IHRhZ05hbWUod2Via2l0X2RvbV9u
b2RlX2dldF9ub2RlX25hbWUobm9kZSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0
YWdOYW1lKHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKTsKICAgICAgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cih0YWdOYW1lLmdldCgpLCA9PSwgZXhwZWN0ZWRUYWdOYW1lc1tpXSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGI0NzkzNjYuLjY1YzNk
MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0QmFja0ZvcndhcmRMaXN0TmF2aWdhdGlvbihCYWNrRm9yd2FyZExpc3RUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludAogc3RhdGljIHZvaWQgdGVzdEJhY2tGb3J3YXJkTGlzdExpbWl0QW5k
Q2FjaGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGtCYWNrRm9yd2FyZExpc3RMaW1pdDsgaSsrKSB7Ci0gICAgICAg
IEdPd25QdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBpKSk7CisgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBpKSk7
CiAgICAgICAgIHRlc3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3Vy
cmVudEl0ZW0gfCBCYWNrRm9yd2FyZExpc3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgICAgIHRlc3Qt
PmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoLmdldCgpKS5kYXRhKCkpOwogICAg
ICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTI1NCw5ICsyNTQsOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZShCYWNrRm9yd2FyZExp
c3RUZXN0KiB0ZXN0LCBnY29uc3RwbwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwga0JhY2tGb3J3YXJk
TGlzdExpbWl0KTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtUGFnZUZpcnN0
ID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbSh0ZXN0LT5tX2xpc3QsIC0o
a0JhY2tGb3J3YXJkTGlzdExpbWl0IC0gMSkpOwotICAgIEdPd25QdHI8R0xpc3Q+IHJlbW92ZWRJ
dGVtcyhnX2xpc3RfcHJlcGVuZCgwLCBpdGVtUGFnZUZpcnN0KSk7CisgICAgR1VuaXF1ZVB0cjxH
TGlzdD4gcmVtb3ZlZEl0ZW1zKGdfbGlzdF9wcmVwZW5kKDAsIGl0ZW1QYWdlRmlyc3QpKTsKIAot
ICAgIEdPd25QdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmludGYoIi9QYWdlJWQiLCBrQmFja0Zv
cndhcmRMaXN0TGltaXQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGgoZ19zdHJkdXBfcHJp
bnRmKCIvUGFnZSVkIiwga0JhY2tGb3J3YXJkTGlzdExpbWl0KSk7CiAgICAgdGVzdC0+bV9jaGFu
Z2VkRmxhZ3MgPSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8IEJhY2tGb3J3YXJk
TGlzdFRlc3Q6OkFkZGVkSXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OlJlbW92ZWRJdGVtczsK
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aC5nZXQoKSkuZGF0
YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWRBbmRDaGVja1JlbW92ZWRJdGVt
cyhyZW1vdmVkSXRlbXMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCBhMjMyOWI5Li5hOTFl
Nzg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICBH
dGtNZW51KiBnZXRQb3B1cE1lbnUoKQogICAgIHsKLSAgICAgICAgR093blB0cjxHTGlzdD4gdG9w
bGV2ZWxzKGd0a193aW5kb3dfbGlzdF90b3BsZXZlbHMoKSk7CisgICAgICAgIEdVbmlxdWVQdHI8
R0xpc3Q+IHRvcGxldmVscyhndGtfd2luZG93X2xpc3RfdG9wbGV2ZWxzKCkpOwogICAgICAgICBm
b3IgKEdMaXN0KiBpdGVyID0gdG9wbGV2ZWxzLmdldCgpOyBpdGVyOyBpdGVyID0gZ19saXN0X25l
eHQoaXRlcikpIHsKICAgICAgICAgICAgIGlmICghR1RLX0lTX1dJTkRPVyhpdGVyLT5kYXRhKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQzMiw3ICs0MzIsNyBAQCBwdWJsaWM6CiAK
ICAgICBHdGtNZW51SXRlbSogZ2V0TWVudUl0ZW0oR3RrTWVudSogbWVudSwgY29uc3QgZ2NoYXIq
IGl0ZW1MYWJlbCkKICAgICB7Ci0gICAgICAgIEdPd25QdHI8R0xpc3Q+IGl0ZW1zKGd0a19jb250
YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxHTGlzdD4gaXRlbXMoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5F
UihtZW51KSkpOwogICAgICAgICBmb3IgKEdMaXN0KiBpdGVyID0gaXRlbXMuZ2V0KCk7IGl0ZXI7
IGl0ZXIgPSBnX2xpc3RfbmV4dChpdGVyKSkgewogICAgICAgICAgICAgR3RrTWVudUl0ZW0qIGNo
aWxkID0gR1RLX01FTlVfSVRFTShpdGVyLT5kYXRhKTsKICAgICAgICAgICAgIGlmIChnX3N0cl9l
cXVhbChpdGVtTGFiZWwsIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKGNoaWxkKSkpCkBAIC03ODUs
NyArNzg1LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0b3JzKENv
bnRleHRNZW51U21hcnRTZXBhcmF0b3JzVGVzdCogdGVzdCwKICAgICBnX2Fzc2VydChtZW51KTsK
IAogICAgIC8vIExlYWRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIG5vdCBhZGRlZCB0
byB0aGUgY29udGV4dCBtZW51LgotICAgIEdPd25QdHI8R0xpc3Q+IG1lbnVJdGVtcyhndGtfY29u
dGFpbmVyX2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgR1VuaXF1ZVB0
cjxHTGlzdD4gbWVudUl0ZW1zKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlO
RVIobWVudSkpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgobWVudUl0ZW1z
LmdldCgpKSwgPT0sIDYpOwogICAgIEd0a1dpZGdldCogaXRlbSA9IEdUS19XSURHRVQoZ19saXN0
X250aF9kYXRhKG1lbnVJdGVtcy5nZXQoKSwgMCkpOwogICAgIGdfYXNzZXJ0KCFHVEtfSVNfU0VQ
QVJBVE9SX01FTlVfSVRFTShpdGVtKSAmJiBndGtfd2lkZ2V0X2dldF92aXNpYmxlKGl0ZW0pKTsK
QEAgLTgwMyw3ICs4MDMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFy
YXRvcnMoQ29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnNUZXN0KiB0ZXN0LAogICAgIC8vIEhpZGlu
ZyBhIG1lbnUgaXRlbSBiZXR3ZWVuIHR3byBzZXBhcmF0b3JzIGhpZGVzIHRoZSBmb2xsb3dpbmcg
c2VwYXJhdG9yLgogICAgIEd0a0FjdGlvbiogYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9y
ZWxhdGVkX2FjdGlvbihHVEtfQUNUSVZBVEFCTEUoZ19saXN0X250aF9kYXRhKG1lbnVJdGVtcy5n
ZXQoKSwgMykpKTsKICAgICBndGtfYWN0aW9uX3NldF92aXNpYmxlKGFjdGlvbiwgRkFMU0UpOwot
ICAgIG1lbnVJdGVtcy5zZXQoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5F
UihtZW51KSkpOworICAgIG1lbnVJdGVtcy5yZXNldChndGtfY29udGFpbmVyX2dldF9jaGlsZHJl
bihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVu
Z3RoKG1lbnVJdGVtcy5nZXQoKSksID09LCA2KTsKICAgICBpdGVtID0gR1RLX1dJREdFVChnX2xp
c3RfbnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAwKSk7CiAgICAgZ19hc3NlcnQoIUdUS19JU19T
RVBBUkFUT1JfTUVOVV9JVEVNKGl0ZW0pICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUoaXRlbSkp
OwpAQCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudVNtYXJ0U2Vw
YXJhdG9ycyhDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9yc1Rlc3QqIHRlc3QsCiAgICAgLy8gVHJh
aWxpbmcgc2VwYXJhdG9ycyBhcmUgaGlkZGVuIHRvby4KICAgICBhY3Rpb24gPSBndGtfYWN0aXZh
dGFibGVfZ2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShnX2xpc3RfbnRoX2RhdGEo
bWVudUl0ZW1zLmdldCgpLCA1KSkpOwogICAgIGd0a19hY3Rpb25fc2V0X3Zpc2libGUoYWN0aW9u
LCBGQUxTRSk7Ci0gICAgbWVudUl0ZW1zLnNldChndGtfY29udGFpbmVyX2dldF9jaGlsZHJlbihH
VEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgbWVudUl0ZW1zLnJlc2V0KGd0a19jb250YWluZXJf
Z2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBpdGVtID0gR1RLX1dJREdF
VChnX2xpc3RfbnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAwKSk7CiAgICAgZ19hc3NlcnQoIUdU
S19JU19TRVBBUkFUT1JfTUVOVV9JVEVNKGl0ZW0pICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUo
aXRlbSkpOwogICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMu
Z2V0KCksIDEpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGFkYzZiNWIuLmJmMzUxZTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2ll
TWFuYWdlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RDb29raWVNYW5hZ2VyLmNwcApAQCAtNzIsMTIgKzcyLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
c3dpdGNoIChzdG9yYWdlKSB7CiAgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5U
X1NUT1JBR0VfVEVYVDoKICAgICAgICAgICAgIGlmICghbV9jb29raWVzVGV4dEZpbGUpCi0gICAg
ICAgICAgICAgICAgbV9jb29raWVzVGV4dEZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBE
aXJlY3RvcnksICJjb29raWVzLnR4dCIsIE5VTEwpKTsKKyAgICAgICAgICAgICAgICBtX2Nvb2tp
ZXNUZXh0RmlsZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2ll
cy50eHQiLCBOVUxMKSk7CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1fY29va2llc1RleHRGaWxl
LmdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9Q
RVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFOgogICAgICAgICAgICAgaWYgKCFtX2Nvb2tpZXNTUUxp
dGVGaWxlKQotICAgICAgICAgICAgICAgIG1fY29va2llc1NRTGl0ZUZpbGUuc2V0KGdfYnVpbGRf
ZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVzLmRiIiwgTlVMTCkpOworICAgICAgICAg
ICAgICAgIG1fY29va2llc1NRTGl0ZUZpbGUucmVzZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERp
cmVjdG9yeSwgImNvb2tpZXMuZGIiLCBOVUxMKSk7CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1f
Y29va2llc1NRTGl0ZUZpbGUuZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKQEAgLTE2Niw4ICsxNjYsOCBAQCBwdWJsaWM6CiAgICAgY2hhcioqIG1fZG9tYWluczsK
ICAgICBib29sIG1fY29va2llc0NoYW5nZWQ7CiAgICAgYm9vbCBtX2ZpbmlzaExvb3BXaGVuQ29v
a2llc0NoYW5nZTsKLSAgICBHT3duUHRyPGNoYXI+IG1fY29va2llc1RleHRGaWxlOwotICAgIEdP
d25QdHI8Y2hhcj4gbV9jb29raWVzU1FMaXRlRmlsZTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1f
Y29va2llc1RleHRGaWxlOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV9jb29raWVzU1FMaXRlRmls
ZTsKIH07CiAKIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tp
ZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3REb3dubG9hZHMuY3BwCmluZGV4IGI3Y2E3
M2EuLmE0ZDI3YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlIDxz
dHJpbmcuaD4KICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBzdGF0aWMgY2hhcioga1RlbXBEaXJlY3Rv
cnk7CkBAIC0xNDQsOCArMTQ0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgZ2NoYXIqIHN1Z2dl
c3RlZEZpbGVuYW1lKQogICAgIHsKLSAgICAgICAgR093blB0cjxjaGFyPiBkZXN0aW5hdGlvbihn
X2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCBzdWdnZXN0ZWRGaWxlbmFtZSwgTlVMTCkp
OwotICAgICAgICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJp
KGRlc3RpbmF0aW9uLmdldCgpLCAwLCAwKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVz
dGluYXRpb24oZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgc3VnZ2VzdGVkRmlsZW5h
bWUsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvblVSSShnX2Zp
bGVuYW1lX3RvX3VyaShkZXN0aW5hdGlvbi5nZXQoKSwgMCwgMCkpOwogICAgICAgICB3ZWJraXRf
ZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvblVSSS5nZXQoKSk7
CiAgICAgfQogCkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXdlYmtp
dF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkZXN0RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl91cmkod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCkpKTsKLSAg
ICAgICAgR093blB0cjxjaGFyPiBkZXN0QmFzZW5hbWUoZ19maWxlX2dldF9iYXNlbmFtZShkZXN0
RmlsZS5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RCYXNlbmFtZShnX2Zp
bGVfZ2V0X2Jhc2VuYW1lKGRlc3RGaWxlLmdldCgpKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cihkZXN0QmFzZW5hbWUuZ2V0KCksID09LCBleHBlY3RlZE5hbWUpOwogCiAgICAgICAgIGdfZmls
ZV9kZWxldGUoZGVzdEZpbGUuZ2V0KCksIDAsIDApOwpAQCAtMTgyLDEwICsxODIsMTAgQEAgcHVi
bGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGUoRG93bmxvYWRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIEdPd25QdHI8Y2hhcj4gc291cmNlUGF0aChnX2J1
aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJ0
ZXN0LnBkZiIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVBhdGgoZ19idWls
ZF9maWxlbmFtZShUZXN0OjpnZXRXZWJLaXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCAidGVz
dC5wZGYiLCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gc291cmNlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlUGF0aC5nZXQoKSkpOwogICAgIEdSZWZQdHI8R0ZpbGVJ
bmZvPiBzb3VyY2VJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKHNvdXJjZS5nZXQo
KSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBzdGF0aWNfY2FzdDxHRmlsZVF1ZXJ5
SW5mb0ZsYWdzPigwKSwgMCwgMCkpOwotICAgIEdPd25QdHI8Y2hhcj4gc291cmNlVVJJKGdfZmls
ZV9nZXRfdXJpKHNvdXJjZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gc291cmNlVVJJ
KGdfZmlsZV9nZXRfdXJpKHNvdXJjZS5nZXQoKSkpOwogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmlu
aXNoZXMoc291cmNlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9n
ZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIApAQCAtMjYyLDkgKzI2Miw5IEBAIHN0YXRp
YyB2b2lkIHRlc3REb3dubG9hZExvY2FsRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9n
ZXRfZXN0aW1hdGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAKICAgICB0ZXN0
LT5tX2V4cGVjdGVkRXJyb3IgPSBXRUJLSVRfRE9XTkxPQURfRVJST1JfREVTVElOQVRJT047Ci0g
ICAgR093blB0cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRl
c3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgInRlc3QucGRmIiwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gcGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVzb3Vj
ZXNEaXIoKS5kYXRhKCksICJ0ZXN0LnBkZiIsIE5VTEwpKTsKICAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5nZXQoKSkpOwotICAgIEdP
d25QdHI8Y2hhcj4gdXJpKGdfZmlsZV9nZXRfdXJpKGZpbGUuZ2V0KCkpKTsKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlLmdldCgpKSk7CiAgICAgZG93bmxvYWQg
PSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyh1cmkuZ2V0
KCkpKTsKICAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9h
ZC5nZXQoKSkpOwogCkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGtTZXJ2
ZXJTdWdnZXN0ZWRGaWxlbmFtZSA9ICJ3ZWJraXQtZG93bmxvYWRlZC1maWxlIjsKIAogc3RhdGlj
IHZvaWQgYWRkQ29udGVudERpc3Bvc2l0aW9uSFRUUEhlYWRlclRvUmVzcG9uc2UoU291cE1lc3Nh
Z2UqIG1lc3NhZ2UpCiB7Ci0gICAgR093blB0cjxjaGFyPiBjb250ZW50RGlzcG9zaXRpb24oZ19z
dHJkdXBfcHJpbnRmKCJmaWxlbmFtZT0lcyIsIGtTZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZSkpOwor
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudERpc3Bvc2l0aW9uKGdfc3RyZHVwX3ByaW50Zigi
ZmlsZW5hbWU9JXMiLCBrU2VydmVyU3VnZ2VzdGVkRmlsZW5hbWUpKTsKICAgICBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkNvbnRlbnQtRGlz
cG9zaXRpb24iLCBjb250ZW50RGlzcG9zaXRpb24uZ2V0KCkpOwogfQogCkBAIC0zMjksNyArMzI5
LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3Vw
TWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEdPd25QdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRXZWJL
aXQxVGVzdFJlc291Y2VzRGlyKCkuZGF0YSgpLCBwYXRoLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBmaWxlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktpdDFUZXN0UmVz
b3VjZXNEaXIoKS5kYXRhKCksIHBhdGgsIE5VTEwpKTsKICAgICBjaGFyKiBjb250ZW50czsKICAg
ICBnc2l6ZSBjb250ZW50c0xlbmd0aDsKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmls
ZVBhdGguZ2V0KCksICZjb250ZW50cywgJmNvbnRlbnRzTGVuZ3RoLCAwKSkgewpAQCAtNDA5LDcg
KzQwOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9h
ZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBldmVudHMuY2xlYXIoKTsKICAg
ICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfZG93bmxvYWRfZ2V0X2VzdGltYXRlZF9wcm9ncmVz
cyhkb3dubG9hZC5nZXQoKSksIDwsIDEpOwogICAgIC8vIENoZWNrIHRoZSBpbnRlcm1lZGlhdGUg
ZmlsZSBpcyBkZWxldGVkIHdoZW4gdGhlIGRvd25sb2FkIGlzIGNhbmNlbGxlZC4KLSAgICBHT3du
UHRyPGNoYXI+IGludGVybWVkaWF0ZVVSSShnX3N0cmR1cF9wcmludGYoIiVzLndrZG93bmxvYWQi
LCB3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSkpOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gaW50ZXJtZWRpYXRlVVJJKGdfc3RyZHVwX3ByaW50ZigiJXMud2tk
b3dubG9hZCIsIHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQuZ2V0KCkp
KSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gaW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl91cmkoaW50ZXJtZWRpYXRlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIWdf
ZmlsZV9xdWVyeV9leGlzdHMoaW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0cikpOwogfQpA
QCAtNDQ0LDggKzQ0NCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBkb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ2FsbGJhY2soV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25z
dCBnY2hhciogc3VnZ2VzdGVkRmlsZW5hbWUsIFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCiAg
ICAgewotICAgICAgICBHT3duUHRyPGNoYXI+IGRlc3RpbmF0aW9uKGdfYnVpbGRfZmlsZW5hbWUo
a1RlbXBEaXJlY3RvcnksIHN1Z2dlc3RlZEZpbGVuYW1lLCBOVUxMKSk7Ci0gICAgICAgIEdPd25Q
dHI8Y2hhcj4gZGVzdGluYXRpb25VUkkoZ19maWxlbmFtZV90b191cmkoZGVzdGluYXRpb24uZ2V0
KCksIDAsIDApKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkZXN0aW5hdGlvbihnX2J1aWxk
X2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCBzdWdnZXN0ZWRGaWxlbmFtZSwgTlVMTCkpOworICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGRlc3RpbmF0aW9uVVJJKGdfZmlsZW5hbWVfdG9fdXJpKGRl
c3RpbmF0aW9uLmdldCgpLCAwLCAwKSk7CiAgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRfZGVz
dGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uVVJJLmdldCgpKTsKICAgICAgICAgcmV0dXJu
IFRSVUU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IGZiYjYyY2UuLmE2ODc4
MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
SW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZv
aWQgc3RhcnRUZXN0U2VydmVyTW9uaXRvcigpCiBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIo
KQogewogICAgIC8vIFByZXBhcmUgYXJndltdIGZvciBzcGF3bmluZyB0aGUgc2VydmVyIHByb2Nl
c3MuCi0gICAgR093blB0cjxjaGFyPiB0ZXN0U2VydmVyUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdF
QktJVF9FWEVDX1BBVEgsICJUZXN0V2ViS2l0QVBJIiwgIldlYktpdDJHdGsiLCBnVGVzdFNlcnZl
ckFwcE5hbWUsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRlc3RTZXJ2ZXJQYXRoKGdf
YnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRlc3RXZWJLaXRBUEkiLCAiV2ViS2l0
Mkd0ayIsIGdUZXN0U2VydmVyQXBwTmFtZSwgTlVMTCkpOwogCiAgICAgLy8gV2UgaW5zdGFsbCBh
IGhhbmRsZXIgdG8gZW5zdXJlIHRoYXQgd2Uga2lsbCB0aGUgY2hpbGQgcHJvY2VzcwogICAgIC8v
IGlmIHRoZSBwYXJlbnQgZGllcyBiZWNhdXNlIG9mIHdoYXRldmVyIHRoZSByZWFzb24gaXMuCkBA
IC0xNzMsMTcgKzE3MywxNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxp
c3QoSW5zcGVjdG9yU2VydmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIGdfYXNzZXJ0
KCFlcnJvci5nZXQoKSk7CiAgICAgaW50IHBhZ2VJZCA9IFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHZh
bHVlU3RyaW5nOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmc7CiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGFn
ZXNbMF0udXJsOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJl
c3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9D
U3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJp
bmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToyOTk5LyIpOwogCiAgICAgamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGFnZXNb
MF0uaW5zcGVjdG9yVXJsOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmlu
Zy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJl
c3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBTdHJpbmcgdmFsaWRJbnNwZWN0
b3JVUkwgPSBTdHJpbmcoIi9NYWluLmh0bWw/cGFnZT0iKSArIFN0cmluZzo6bnVtYmVyKHBhZ2VJ
ZCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgdmFsaWRJ
bnNwZWN0b3JVUkwudXRmOCgpKTsKIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBv
cGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbihJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0
KCFlcnJvci5nZXQoKSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHRpdGxlKFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBHVW5pcXVl
UHRyPGNoYXI+IHRpdGxlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGl0bGUuZ2V0KCksID09LCAi
aHR0cDovLzEyNy4wLjAuMToyOTk5LyIpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFByaW50aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UHJpbnRpbmcuY3BwCmluZGV4IDA1MjQwNzIuLjk5
ZWZhN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0UHJpbnRpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0UHJpbnRpbmcuY3BwCkBAIC0xMzQsOSArMTM0LDkgQEAgc3RhdGljIHZvaWQgdGVzdFBy
aW50T3BlcmF0aW9uUHJpbnQoUHJpbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgR093blB0cjxjaGFyPiBvdXRwdXRGaWxlbmFtZShnX2J1
aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAid2Via2l0LXByaW50LnBkZiIsIE5VTEwpKTsK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IG91dHB1dEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoa1Rl
bXBEaXJlY3RvcnksICJ3ZWJraXQtcHJpbnQucGRmIiwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0Zp
bGU+IG91dHB1dEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChvdXRwdXRGaWxl
bmFtZS5nZXQoKSkpOwotICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJp
KG91dHB1dEZpbGUuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG91dHB1dFVSSShnX2Zp
bGVfZ2V0X3VyaShvdXRwdXRGaWxlLmdldCgpKSk7CiAKICAgICBHUmVmUHRyPEd0a1ByaW50U2V0
dGluZ3M+IHByaW50U2V0dGluZ3MgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X3NldHRpbmdzX25ldygp
KTsKICAgICBndGtfcHJpbnRfc2V0dGluZ3Nfc2V0X3ByaW50ZXIocHJpbnRTZXR0aW5ncy5nZXQo
KSwgZ3RrX3ByaW50ZXJfZ2V0X25hbWUocHJpbnRlci5nZXQoKSkpOwpAQCAtMjQ3LDkgKzI0Nyw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEdP
d25QdHI8Y2hhcj4gb3V0cHV0RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9y
eSwgIndlYmtpdC1jbG9zZS1hZnRlci1wcmludC5wZGYiLCBOVUxMKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gb3V0cHV0RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9y
eSwgIndlYmtpdC1jbG9zZS1hZnRlci1wcmludC5wZGYiLCBOVUxMKSk7CiAgICAgICAgIG1fb3V0
cHV0RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKG91dHB1dEZpbGVuYW1lLmdl
dCgpKSk7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0VVJJKGdfZmlsZV9nZXRfdXJpKG1f
b3V0cHV0RmlsZS5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG91dHB1dFVSSShn
X2ZpbGVfZ2V0X3VyaShtX291dHB1dEZpbGUuZ2V0KCkpKTsKIAogICAgICAgICBHUmVmUHRyPEd0
a1ByaW50U2V0dGluZ3M+IHByaW50U2V0dGluZ3MgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X3NldHRp
bmdzX25ldygpKTsKICAgICAgICAgZ3RrX3ByaW50X3NldHRpbmdzX3NldF9wcmludGVyKHByaW50
U2V0dGluZ3MuZ2V0KCksIGd0a19wcmludGVyX2dldF9uYW1lKHByaW50ZXIuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3Vy
Y2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3Vy
Y2VzLmNwcAppbmRleCAwYzIxYzcxLi4zYTQ1OWEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC0xNjgsNyAr
MTY4LDcgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZGF0YVNpemUsID4sIDAp
OwogCiAgICAgICAgIFJlc291cmNlc1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZXNU
ZXN0Kj4odXNlckRhdGEpOwotICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5zZXQocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5y
ZXNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7CiAgICAgICAgIHRlc3QtPm1fcmVz
b3VyY2VEYXRhU2l6ZSA9IGRhdGFTaXplOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3Qt
Pm1fbWFpbkxvb3ApOwogICAgIH0KQEAgLTE5MSwxMiArMTkxLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrSmF2YXNjcmlw
dCwgbV9yZXNvdXJjZURhdGFTaXplKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZ19h
c3NlcnRfbm90X3JlYWNoZWQoKTsKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuY2xlYXIoKTsKKyAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9yZXNv
dXJjZXNMb2FkZWQ7CiAgICAgc2l6ZV90IG1fcmVzb3VyY2VzVG9Mb2FkOwotICAgIEdPd25QdHI8
Y2hhcj4gbV9yZXNvdXJjZURhdGE7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtX3Jlc291cmNlRGF0
YTsKICAgICBzaXplX3QgbV9yZXNvdXJjZURhdGFTaXplOwogICAgIEdMaXN0KiBtX3N1YnJlc291
cmNlczsKIH07CkBAIC02NzEsMTIgKzY3MSwxMiBAQCBzdGF0aWMgdm9pZCBhZGRDYWNoZUhUVFBI
ZWFkZXJzVG9SZXNwb25zZShTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICAvLyBUaGUgYWN0
dWFsIGRhdGUgZG9lc24ndCByZWFsbHkgbWF0dGVyLgogICAgIFNvdXBEYXRlKiBzb3VwRGF0ZSA9
IHNvdXBfZGF0ZV9uZXdfZnJvbV9ub3coMCk7Ci0gICAgR093blB0cjxjaGFyPiBkYXRlKHNvdXBf
ZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQKSk7CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBkYXRlKHNvdXBfZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQ
KSk7CiAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hl
YWRlcnMsICJMYXN0LU1vZGlmaWVkIiwgZGF0ZS5nZXQoKSk7CiAgICAgc291cF9kYXRlX2ZyZWUo
c291cERhdGUpOwogICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9oZWFkZXJzLCAiQ2FjaGUtY29udHJvbCIsICJwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAi
KTsKICAgICBzb3VwRGF0ZSA9IHNvdXBfZGF0ZV9uZXdfZnJvbV9ub3coMzYwMCk7Ci0gICAgZGF0
ZS5zZXQoc291cF9kYXRlX3RvX3N0cmluZyhzb3VwRGF0ZSwgU09VUF9EQVRFX0hUVFApKTsKKyAg
ICBkYXRlLnJlc2V0KHNvdXBfZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQ
KSk7CiAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hl
YWRlcnMsICJFeHBpcmVzIiwgZGF0ZS5nZXQoKSk7CiAgICAgc291cF9kYXRlX2ZyZWUoc291cERh
dGUpOwogfQpAQCAtNzM0LDcgKzczNCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqYXZhc2NyaXB0UmVsYXRpdmVIVE1MID0gIjxodG1sPjxo
ZWFkPjxzY3JpcHQgbGFuZ3VhZ2U9J2phdmFzY3JpcHQnIHNyYz0nL3JlZGlyZWN0ZWQtdG8tY2Fu
Y2VsLmpzJz48L3NjcmlwdD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOwogICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1P
UllfU1RBVElDLCBqYXZhc2NyaXB0UmVsYXRpdmVIVE1MLCBzdHJsZW4oamF2YXNjcmlwdFJlbGF0
aXZlSFRNTCkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9ibGFuay5pY28i
KSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVz
dDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgcGF0aCwgTlVMTCkpOworICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0
V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgcGF0aCwgTlVMTCkpOwogICAgICAgICBj
aGFyKiBjb250ZW50czsKICAgICAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7CiAgICAgICAgIGdf
ZmlsZV9nZXRfY29udGVudHMoZmlsZVBhdGguZ2V0KCksICZjb250ZW50cywgJmNvbnRlbnRzTGVu
Z3RoLCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0
U1NMLmNwcAppbmRleCBlMzE4MGM1Li41YzYwZGExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAgICAgICB3ZWJraXRf
Y2VydGlmaWNhdGVfaW5mb19mcmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKICAgICAgICAgbV9jZXJ0
aWZpY2F0ZUluZm8gPSB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5KGluZm8pOwotICAgICAg
ICBtX2hvc3Quc2V0KGdfc3RyZHVwKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0LnJlc2V0KGdfc3Ry
ZHVwKGhvc3QpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKICAgICB9
CiAKQEAgLTE4Miw3ICsxODIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0Q2Vy
dGlmaWNhdGVJbmZvKiBtX2NlcnRpZmljYXRlSW5mbzsKLSAgICBHT3duUHRyPGNoYXI+IG1faG9z
dDsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1faG9zdDsKIH07CiAKIHN0YXRpYyB2b2lkIHRlc3RM
b2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QKICAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZ
X1NUQVRJQywgaW5kZXhIVE1MLCBzdHJsZW4oaW5kZXhIVE1MKSk7CiAgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbnNlY3VyZS1jb250ZW50LyIpKSB7Ci0gICAgICAgIEdP
d25QdHI8Y2hhcj4gcmVzcG9uc2VIVE1MKGdfc3RyZHVwX3ByaW50ZihpbnNlY3VyZUNvbnRlbnRI
VE1MLCBrSHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qtc2NyaXB0IikuZGF0YSgpLCBr
SHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtaW1hZ2UiKS5kYXRhKCkpKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNwb25zZUhUTUwoZ19zdHJkdXBfcHJpbnRmKGluc2VjdXJl
Q29udGVudEhUTUwsIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1zY3JpcHQiKS5k
YXRhKCksIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1pbWFnZSIpLmRhdGEoKSkp
OwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJsZW4ocmVzcG9uc2VI
VE1MLmdldCgpKSk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2Fn
ZS0+cmVzcG9uc2VfYm9keSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIHZvaWQgaHR0cFNl
cnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGMKICAgICB9CiAKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LXNjcmlwdCIp
KSB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRl
c3Q6OmdldFJlc291cmNlc0RpcigpLmRhdGEoKSwgImxpbmstdGl0bGUuanMiLCBOVUxMKSk7Cisg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6
OmdldFJlc291cmNlc0RpcigpLmRhdGEoKSwgImxpbmstdGl0bGUuanMiLCBOVUxMKSk7CiAgICAg
ICAgIGNoYXIqIGNvbnRlbnRzOwogICAgICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgICAgIGdfZmls
ZV9nZXRfY29udGVudHMocGF0aFRvRmlsZS5nZXQoKSwgJmNvbnRlbnRzLCAmbGVuZ3RoLCAwKTsK
QEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBodHRwU2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgYwogICAgICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwogICAgIH0g
ZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LWltYWdlIikpIHsKLSAgICAgICAgR093
blB0cjxjaGFyPiBwYXRoVG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRl
c3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIE5VTEwpKTsKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBwYXRoVG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0
MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIE5VTEwpKTsKICAgICAgICAg
Y2hhciogY29udGVudHM7CiAgICAgICAgIGdzaXplIGxlbmd0aDsKICAgICAgICAgZ19maWxlX2dl
dF9jb250ZW50cyhwYXRoVG9GaWxlLmdldCgpLCAmY29udGVudHMsICZsZW5ndGgsIDApOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVu
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50
LmNwcAppbmRleCBiYzMwZDZkLi5kMjRlZGM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApAQCAtMzc3LDIwICszNzcs
MjAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyhVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzUHJvbXB0
Rm9ybWF0ID0gImFsZXJ0KHByb21wdCgnJXMnLCAnZGVmYXVsdCcpKTsiOwogCiAgICAgdGVzdC0+
bV9zY3JpcHREaWFsb2dUeXBlID0gV0VCS0lUX1NDUklQVF9ESUFMT0dfQUxFUlQ7Ci0gICAgR093
blB0cjxjaGFyPiBhbGVydERpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQWxlcnRGb3Jt
YXQsIGtBbGVydERpYWxvZ01lc3NhZ2UpKTsKLSAgICBHT3duUHRyPGNoYXI+IGFsZXJ0SFRNTChn
X3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgYWxlcnREaWFsb2dNZXNzYWdlLmdldCgp
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhbGVydERpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJp
bnRmKGpzQWxlcnRGb3JtYXQsIGtBbGVydERpYWxvZ01lc3NhZ2UpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGFsZXJ0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgYWxlcnRE
aWFsb2dNZXNzYWdlLmdldCgpKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoYWxlcnRIVE1MLmdldCgp
LCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiAKICAgICB0ZXN0
LT5tX3NjcmlwdERpYWxvZ1R5cGUgPSBXRUJLSVRfU0NSSVBUX0RJQUxPR19DT05GSVJNOwotICAg
IEdPd25QdHI8Y2hhcj4gY29uZmlybURpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRmKGpzQ29u
ZmlybUZvcm1hdCwga0NvbmZpcm1EaWFsb2dNZXNzYWdlKSk7Ci0gICAgR093blB0cjxjaGFyPiBj
b25maXJtSFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgY29uZmlybURpYWxv
Z01lc3NhZ2UuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGNvbmZpcm1EaWFsb2dNZXNz
YWdlKGdfc3RyZHVwX3ByaW50Zihqc0NvbmZpcm1Gb3JtYXQsIGtDb25maXJtRGlhbG9nTWVzc2Fn
ZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29uZmlybUhUTUwoZ19zdHJkdXBfcHJpbnRmKGh0
bWxPbkxvYWRGb3JtYXQsIGNvbmZpcm1EaWFsb2dNZXNzYWdlLmdldCgpKSk7CiAgICAgdGVzdC0+
bG9hZEh0bWwoY29uZmlybUhUTUwuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5M
b29wRmluaXNoZXMoKTsKIAogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nVHlwZSA9IFdFQktJVF9T
Q1JJUFRfRElBTE9HX1BST01QVDsKLSAgICBHT3duUHRyPGNoYXI+IHByb21wdERpYWxvZ01lc3Nh
Z2UoZ19zdHJkdXBfcHJpbnRmKGpzUHJvbXB0Rm9ybWF0LCBrUHJvbXB0RGlhbG9nTWVzc2FnZSkp
OwotICAgIEdPd25QdHI8Y2hhcj4gcHJvbXB0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9h
ZEZvcm1hdCwgcHJvbXB0RGlhbG9nTWVzc2FnZS5nZXQoKSkpOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gcHJvbXB0RGlhbG9nTWVzc2FnZShnX3N0cmR1cF9wcmludGYoanNQcm9tcHRGb3JtYXQsIGtQ
cm9tcHREaWFsb2dNZXNzYWdlKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm9tcHRIVE1MKGdf
c3RyZHVwX3ByaW50ZihodG1sT25Mb2FkRm9ybWF0LCBwcm9tcHREaWFsb2dNZXNzYWdlLmdldCgp
KSk7CiAgICAgdGVzdC0+bG9hZEh0bWwocHJvbXB0SFRNTC5nZXQoKSwgMCk7CiAgICAgdGVzdC0+
d2FpdFVudGlsTWFpbkxvb3BGaW5pc2hlcygpOwogfQpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5ID0geyAxMDAsIDE1MCwgNDAw
LCA0MDAgfTsKICAgICB0ZXN0LT5zZXRFeHBlY3RlZFdpbmRvd1Byb3BlcnRpZXMoVUlDbGllbnRU
ZXN0OjpXaW5kb3dQcm9wZXJ0aWVzKCZnZW9tZXRyeSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkpOwogCi0gICAgR093blB0cjxjaGFyPiBodG1sU3RyaW5n
KGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+PGJvZHkgb25Mb2FkPVwid2luZG93Lm9wZW4oJycsICcn
LCAnJXMnKS5jbG9zZSgpO1wiPjwvYm9keT48L2h0bWw+Iiwgd2luZG93UHJvcnBlcnRpZXNTdHJp
bmcpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGh0bWxTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCI8
aHRtbD48Ym9keSBvbkxvYWQ9XCJ3aW5kb3cub3BlbignJywgJycsICclcycpLmNsb3NlKCk7XCI+
PC9ib2R5PjwvaHRtbD4iLCB3aW5kb3dQcm9ycGVydGllc1N0cmluZykpOwogICAgIHRlc3QtPmxv
YWRIdG1sKGh0bWxTdHJpbmcuZ2V0KCksIDApOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29w
RmluaXNoZXMoKTsKIApAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogZmlsZUNob29zZXJIVE1MRm9ybWF0ID0gIjxodG1sPjxi
b2R5PjxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjow
O3BhZGRpbmc6MCcgdHlwZT0nZmlsZScgJXMvPjwvYm9keT48L2h0bWw+IjsKIAogICAgIC8vIE11
bHRpcGxlIHNlbGVjdGlvbnMgbm90IGFsbG93ZWQsIG5vIE1JTUUgZmlsdGVyaW5nLgotICAgIEdP
d25QdHI8Y2hhcj4gc2ltcGxlRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJpbnRmKGZpbGVDaG9v
c2VySFRNTEZvcm1hdCwgIiIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpbXBsZUZpbGVVcGxv
YWRIVE1MKGdfc3RyZHVwX3ByaW50ZihmaWxlQ2hvb3NlckhUTUxGb3JtYXQsICIiKSk7CiAgICAg
dGVzdC0+bG9hZEh0bWwoc2ltcGxlRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDApOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCog
ZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JGaWxl
Q2hvb3NlclJlcXVlc3QoNSwgNSk7CkBAIC02MDEsNyArNjAxLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29z
ZXJSZXF1ZXN0KTsKIAogICAgIC8vIE11bHRpcGxlIHNlbGVjdGlvbnMgYWxsb3dlZCwgbm8gTUlN
RSBmaWx0ZXJpbmcsIHNvbWUgcHJlLXNlbGVjdGVkIGZpbGVzLgotICAgIEdPd25QdHI8Y2hhcj4g
bXVsdGlwbGVTZWxlY3Rpb25GaWxlVXBsb2FkSFRNTChnX3N0cmR1cF9wcmludGYoZmlsZUNob29z
ZXJIVE1MRm9ybWF0LCAibXVsdGlwbGUiKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBtdWx0aXBs
ZVNlbGVjdGlvbkZpbGVVcGxvYWRIVE1MKGdfc3RyZHVwX3ByaW50ZihmaWxlQ2hvb3NlckhUTUxG
b3JtYXQsICJtdWx0aXBsZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChtdWx0aXBsZVNlbGVjdGlv
bkZpbGVVcGxvYWRIVE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKICAgICBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5k
V2FpdEZvckZpbGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNl
bChmaWxlQ2hvb3NlclJlcXVlc3QpOwogCiAgICAgLy8gTXVsdGlwbGUgc2VsZWN0aW9ucyBub3Qg
YWxsb3dlZCwgb25seSBhY2NlcHQgaW1hZ2VzLCBhdWRpbyBhbmQgdmlkZW8gZmlsZXMuLgotICAg
IEdPd25QdHI8Y2hhcj4gbWltZUZpbHRlcmVkRmlsZVVwbG9hZEhUTUwoZ19zdHJkdXBfcHJpbnRm
KGZpbGVDaG9vc2VySFRNTEZvcm1hdCwgImFjY2VwdD0nYXVkaW8vKix2aWRlby8qLGltYWdlLyon
IikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWltZUZpbHRlcmVkRmlsZVVwbG9hZEhUTUwoZ19z
dHJkdXBfcHJpbnRmKGZpbGVDaG9vc2VySFRNTEZvcm1hdCwgImFjY2VwdD0nYXVkaW8vKix2aWRl
by8qLGltYWdlLyonIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKG1pbWVGaWx0ZXJlZEZpbGVVcGxv
YWRIVE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAg
ICBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckZp
bGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IGU5ZWYxOTIu
LjlhMTBlMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJFeHRlbnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93
LmVjaG8oJ0ZvbycpOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICBHT3duUHRyPGNoYXI+
IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiB9CiAKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwg
MCk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgR093blB0cjxjaGFyPiB2
YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2Ny
aXB0UmVzdWx0KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIkZvbyIpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGlzb2xhdGVkV29ybGRTY3JpcHQgPQpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIENoZWNrIHRoYXQgJ3RvcC5mb28nIGRlZmluZWQgaW4g
bWFpbiB3b3JsZCBpcyBub3QgdmlzaWJsZSBpbiBpc29sYXRlZCB3b3JsZC4KICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIsIDApOwogICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVT
dHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0s
ICJ1bmRlZmluZWQiKTsKIAogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5t
X3dlYlZpZXcsIHNjcmlwdERpYWxvZ0lEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3Bw
CmluZGV4IDA0N2NjMzEuLmE1ZDhkZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNw
cApAQCAtMzMsOCArMzMsOCBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlIDxzaWduYWwuaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogCiAvLyBOYW1lIG9mIHRoZSB0
ZXN0IHNlcnZlciBhcHBsaWNhdGlvbiBjcmVhdGluZyB0aGUgd2ViVmlldyBvYmplY3QuCiBzdGF0
aWMgY29uc3QgY2hhcioga1Rlc3RTZXJ2ZXJBcHBOYW1lID0gIkFjY2Vzc2liaWxpdHlUZXN0U2Vy
dmVyIjsKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRUZXN0U2VydmVyTW9uaXRv
cigpCiBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIoKQogewogICAgIC8vIFByZXBhcmUgYXJn
dltdIGZvciBzcGF3bmluZyB0aGUgc2VydmVyIHByb2Nlc3MuCi0gICAgR093blB0cjxjaGFyPiB0
ZXN0U2VydmVyUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9FWEVDX1BBVEgsICJUZXN0V2Vi
S2l0QVBJIiwgIldlYktpdDJHdGsiLCBrVGVzdFNlcnZlckFwcE5hbWUsIE5VTEwpKTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IHRlc3RTZXJ2ZXJQYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VY
RUNfUEFUSCwgIlRlc3RXZWJLaXRBUEkiLCAiV2ViS2l0Mkd0ayIsIGtUZXN0U2VydmVyQXBwTmFt
ZSwgbnVsbHB0cikpOwogCiAgICAgY2hhciogdGVzdFNlcnZlckFyZ3ZbMl07CiAgICAgdGVzdFNl
cnZlckFyZ3ZbMF0gPSB0ZXN0U2VydmVyUGF0aC5nZXQoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja0F0c3BpQWNjZXNzaWJsZShBdHNwaUFjY2Vzc2libGUqIGFjY2Vzc2li
bGUsIGNvbnN0IGNoYXIqIHRhcmdldAogewogICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lC
TEUoYWNjZXNzaWJsZSkpOwogCi0gICAgR093blB0cjxjaGFyPiBuYW1lKGF0c3BpX2FjY2Vzc2li
bGVfZ2V0X25hbWUoYWNjZXNzaWJsZSwgMCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShh
dHNwaV9hY2Nlc3NpYmxlX2dldF9uYW1lKGFjY2Vzc2libGUsIDApKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIodGFyZ2V0TmFtZSwgPT0sIG5hbWUuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGludCh0
YXJnZXRSb2xlLCA9PSwgYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9sZShhY2Nlc3NpYmxlLCAwKSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMWEwNmY3NC4uOTVi
NWMwMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjQsNiArMjQs
NyBAQAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dVbmlxdWVQdHIuaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiBzdGF0
aWMgY2hhcioga1RlbXBEaXJlY3Rvcnk7CkBAIC0xMTgsNyArMTE5LDcgQEAgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2gKICAgICBjaGFyKiBjb250ZW50czsKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAg
aWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvaWNvbi9mYXZpY29uLmljbyIpKSB7Ci0gICAgICAgIEdP
d25QdHI8Y2hhcj4gcGF0aFRvRmF2aWNvbihnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFdlYktp
dDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBOVUxMKSk7CisgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcj4gcGF0aFRvRmF2aWNvbihnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6Omdl
dFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBOVUxMKSk7CiAg
ICAgICAgIGdfZmlsZV9nZXRfY29udGVudHMocGF0aFRvRmF2aWNvbi5nZXQoKSwgJmNvbnRlbnRz
LCAmbGVuZ3RoLCAwKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBsZW5ndGgpOwogICAg
IH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9ub2Zhdmljb24iKSkgewpAQCAtMTUzLDcg
KzE1NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDbGVhckRhdGFiYXNlKEZhdmljb25EYXRhYmFzZVRl
c3QqIHRlc3QpCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSA9IHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfZmF2aWNvbl9kYXRhYmFzZSh0ZXN0LT5tX3dlYkNvbnRleHQpOwogICAg
IHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2NsZWFyKGRhdGFiYXNlKTsKIAotICAgIEdPd25QdHI8
Y2hhcj4gaWNvblVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0
YWJhc2UsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IGljb25VUkkod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25f
dXJpKGRhdGFiYXNlLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgpKSk7CiAg
ICAgZ19hc3NlcnQoIWljb25VUkkpOwogfQogCkBAIC0yMDMsNyArMjA0LDcgQEAgc3RhdGljIHZv
aWQgdGVzdEdldEZhdmljb25VUkkoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICBXZWJL
aXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9mYXZp
Y29uX2RhdGFiYXNlKHRlc3QtPm1fd2ViQ29udGV4dCk7CiAKICAgICBDU3RyaW5nIGJhc2VVUkkg
PSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIik7Ci0gICAgR093blB0cjxjaGFyPiBpY29u
VVJJKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFzZSwgYmFz
ZVVSSS5kYXRhKCkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGljb25VUkkod2Via2l0X2Zhdmlj
b25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKGRhdGFiYXNlLCBiYXNlVVJJLmRhdGEoKSkpOwog
ICAgIEFTU0VSVF9DTVBfQ1NUUklORyhpY29uVVJJLmdldCgpLCA9PSwga1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL2ljb24vZmF2aWNvbi5pY28iKSk7CiB9CiAKQEAgLTI1Nyw3ICsyNTgsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VGaW5hbGl6ZWRDYWxsYmFjayhncG9pbnRl
ciwgR09iamVjdCopCiAgICAgaWYgKCFnX2ZpbGVfdGVzdChrVGVtcERpcmVjdG9yeSwgR19GSUxF
X1RFU1RfSVNfRElSKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR093blB0cjxjaGFyPiBmaWxl
bmFtZShnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiV2VicGFnZUljb25zLmRiIiwg
TlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShr
VGVtcERpcmVjdG9yeSwgIldlYnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKICAgICBnX3VubGlu
ayhmaWxlbmFtZS5nZXQoKSk7CiAKICAgICBnX3JtZGlyKGtUZW1wRGlyZWN0b3J5KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2Vi
Q29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGE0MTQ4NTMuLjMxOWVlYzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMjQsOCArMjQsOCBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7
CkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQ
bHVnaW5zVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB9CiAgICAgZ19hc3NlcnQoV0VC
S0lUX0lTX1BMVUdJTih0ZXN0UGx1Z2luLmdldCgpKSk7CiAKLSAgICBHT3duUHRyPGNoYXI+IHBs
dWdpblBhdGgoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfVEVTVF9QTFVHSU5fRElSLCAibGliVGVz
dE5ldHNjYXBlUGx1Z2luLnNvIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGx1Z2lu
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9URVNUX1BMVUdJTl9ESVIsICJsaWJUZXN0TmV0
c2NhcGVQbHVnaW4uc28iLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9w
bHVnaW5fZ2V0X3BhdGgodGVzdFBsdWdpbi5nZXQoKSksID09LCBwbHVnaW5QYXRoLmdldCgpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfZGVzY3JpcHRpb24odGVzdFBs
dWdpbi5nZXQoKSksID09LCAiU2ltcGxlIE5ldHNjYXBlwq4gcGx1Zy1pbiB0aGF0IGhhbmRsZXMg
dGVzdCBjb250ZW50IGZvciBXZWJLaXQiKTsKICAgICBHTGlzdCogbWltZUluZm9MaXN0ID0gd2Vi
a2l0X3BsdWdpbl9nZXRfbWltZV9pbmZvX2xpc3QodGVzdFBsdWdpbi5nZXQoKSk7CkBAIC0xNTYs
NyArMTU2LDcgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX2hhbmRsZXJzTWFw
LmNvbnRhaW5zKFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSkpOwogCiAgICAgICAgIGlmICghZ19z
dHJjbXAwKHNjaGVtZSwgImVycm9yIikpIHsKLSAgICAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4p
LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgR1VuaXF1ZVB0cjxHRXJy
b3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRv
bWFpbiksIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgICB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIHRlc3QtPnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZWNobyIsIGtFY2hvSFRN
TEZvcm1hdCwgLTEsICJ0ZXh0L2h0bWwiKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJlY2hvOmhlbGxv
IHdvcmxkIik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgR093blB0
cjxjaGFyPiBlY2hvSFRNTChnX3N0cmR1cF9wcmludGYoa0VjaG9IVE1MRm9ybWF0LCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9wYXRoKHRlc3QtPm1fdXJpU2NoZW1lUmVxdWVzdC5nZXQo
KSkpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGVjaG9IVE1MKGdfc3RyZHVwX3ByaW50ZihrRWNo
b0hUTUxGb3JtYXQsIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgodGVzdC0+bV91
cmlTY2hlbWVSZXF1ZXN0LmdldCgpKSkpOwogICAgIG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsK
ICAgICBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9
PSwgc3RybGVuKGVjaG9IVE1MLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBhNDli
Mzc2Li43MzQyYjYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTkwLDE5ICs5MCwxOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJmVycm9yLm91dFB0cigp
KTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3Iu
Z2V0KCkpOwotICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmco
amF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQo
KSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
LSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsu
b3JnLyIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRM
aW5rJykudGV4dENvbnRlbnQiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgdmFsdWVTdHJp
bmcuc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRS
ZXN1bHQpKTsKKyAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZh
bHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgV2Vic2l0ZSIpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9
IDI1OyIsICZlcnJvci5vdXRQdHIoKSk7CkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJj
ZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvb3JnL3dlYmtpdC93ZWJraXQyZ3RrL3Rlc3RzL2xpbmst
dGl0bGUuanMiLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgdmFsdWVTdHJpbmcuc2V0KFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsK
KyAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5n
LmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIv
d3JvbmcvcGF0aC90by9yZXNvdXJjZS5qcyIsICZlcnJvci5vdXRQdHIoKSk7CkBAIC0zNzEsMTQg
KzM3MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNhdmVBbmRXYWl0Rm9yRmlsZSgpCiAgICAg
ewotICAgICAgICBtX3NhdmVEZXN0aW5hdGlvbkZpbGVQYXRoLnNldChnX2J1aWxkX2ZpbGVuYW1l
KG1fdGVtcERpcmVjdG9yeS5nZXQoKSwgInRlc3RXZWJWaWV3U2F2ZVJlc3VsdC5taHQiLCBOVUxM
KSk7CisgICAgICAgIG1fc2F2ZURlc3RpbmF0aW9uRmlsZVBhdGgucmVzZXQoZ19idWlsZF9maWxl
bmFtZShtX3RlbXBEaXJlY3RvcnkuZ2V0KCksICJ0ZXN0V2ViVmlld1NhdmVSZXN1bHQubWh0Iiwg
TlVMTCkpOwogICAgICAgICBtX2ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCht
X3NhdmVEZXN0aW5hdGlvbkZpbGVQYXRoLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zYXZlX3RvX2ZpbGUobV93ZWJWaWV3LCBtX2ZpbGUuZ2V0KCksIFdFQktJVF9TQVZFX01PREVf
TUhUTUwsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2ViVmlld1Nh
dmVkVG9GaWxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOwogICAgIH0KIAotICAgIEdPd25QdHI8Y2hhcj4gbV90ZW1wRGlyZWN0b3J5OwotICAg
IEdPd25QdHI8Y2hhcj4gbV9zYXZlRGVzdGluYXRpb25GaWxlUGF0aDsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IG1fdGVtcERpcmVjdG9yeTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fc2F2ZURlc3Rp
bmF0aW9uRmlsZVBhdGg7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1faW5wdXRTdHJlYW07
CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9maWxlOwogfTsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgdGVzdC0+bG9hZEh0bWwoaW5kZXhIVE1MLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9j
dW1lbnQuYm9keS50ZXh0Q29udGVudDsiLCAwKTsKLSAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3Ry
aW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiVGVzdCBXZWIgVmlldyBNb2RlIik7CiAKICAg
ICAvLyBTb3VyY2UgbW9kZS4KQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9h
ZEh0bWwoaW5kZXhIVE1MLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
ICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudDsiLCAwKTsKLSAgICB2YWx1
ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCBpbmRleEhUTUwpOwogfQogCkBAIC00NjIsNyArNDYy
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1
bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIEdPd25Q
dHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmco
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJoaWRkZW4iKTsK
IAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwpAQCAtNDc3LDcg
KzQ3Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRl
OyIsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZh
bHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ID09LCAidmlzaWJsZSIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZlcnJvci5vdXRQ
dHIoKSk7CkBAIC00OTIsNyArNDkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlz
aWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVu
dC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKICAgICBnX2Fzc2VydChqYXZh
c2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIHZhbHVlU3Ry
aW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJoaWRkZW4iKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRl
bjsiLCAmZXJyb3Iub3V0UHRyKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCmluZGV4
IDQwMTY1NWYuLjc0MDA4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKQEAgLTEw
OCw3ICsxMDgsNyBAQCBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aAogICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAKLSAgICBHT3duUHRy
PGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmlu
ZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmco
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OwogICAgIHJldHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1N0eWxlU2hlZXRU
ZXN0U2NyaXB0UmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggMWVhMmFjZC4u
N2YwYTA2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZShFZGl0b3JUZXN0
KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlD
bGlwYm9hcmQoKTsKLSAgICBHT3duUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2Fy
ZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBi
b2FyZCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIm1h
a2UgSmFjayBhIGR1bGwiKTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlCiAgICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQo
KTsKLSAgICBHT3duUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zv
cl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9h
cmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFu
ZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LiIpOwogfQogCkBAIC0xNDcsMTQgKzE0Nywx
NCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVk
aXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1
dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKIAog
ICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHT3duUHRyPGNoYXI+IGNsaXBib2FyZFRl
eHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAg
R1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4
dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwogCiAgICAgLy8gSW5pdGlhbGx5IG9ubHkgdGhlIHN1YnNw
YW4gaXMgc2VsZWN0ZWQuCiAgICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCks
ID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVf
ZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9T
RUxFQ1RfQUxMKTsKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7Ci0gICAgY2xpcGJvYXJkVGV4
dC5zZXQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Cisg
ICAgY2xpcGJvYXJkVGV4dC5yZXNldChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+
bV9jbGlwYm9hcmQpKTsKIAogICAgIC8vIFRoZSBtYWluc3BhbiBzaG91bGQgYmUgc2VsZWN0ZWQg
YWZ0ZXIgY2FsbGluZyBTRUxFQ1RfQUxMLgogICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRU
ZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95
LiIpOwpAQCAtMTc2LDE0ICsxNzYsMTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JT
ZWxlY3RBbGxFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01N
QU5EX1NFTEVDVF9BTEwpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHT3du
UHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3Qt
Pm1fY2xpcGJvYXJkKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19j
bGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwogCiAgICAgLy8gSW5p
dGlhbGx5IG9ubHkgdGhlIHN1YnNwYW4gaXMgc2VsZWN0ZWQuCiAgICAgZ19hc3NlcnRfY21wc3Ry
KGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogCiAgICAgd2Vi
a2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKTsKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJk
KCk7Ci0gICAgY2xpcGJvYXJkVGV4dC5zZXQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRl
c3QtPm1fY2xpcGJvYXJkKSk7CisgICAgY2xpcGJvYXJkVGV4dC5yZXNldChndGtfY2xpcGJvYXJk
X3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKIAogICAgIC8vIFRoZSBtYWluc3Bh
biBzaG91bGQgYmUgc2VsZWN0ZWQgYWZ0ZXIgY2FsbGluZyBTRUxFQ1RfQUxMLgogICAgIGdfYXNz
ZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5
IG1ha2UgSmFjayBhIGR1bGwgYm95LiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGU4YTJiOWYu
LjJlODAzNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogc3RhdGljIGNvbnN0
IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KQEAgLTEzMSw4ICsxMzIsOCBAQCBzdGF0aWMgZ2Jv
b2xlYW4gc2VuZFJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiwgV2ViS2l0VVJJUmVxdWVz
dCogcmVxdWVzdCwgVwogICAgIGdfYXNzZXJ0KHJlcXVlc3RVUkkpOwogCiAgICAgaWYgKGNvbnN0
IGNoYXIqIHN1ZmZpeCA9IGdfc3RycnN0cihyZXF1ZXN0VVJJLCAiL3JlbW92ZS10aGlzL2phdmFz
Y3JpcHQuanMiKSkgewotICAgICAgICBHT3duUHRyPGNoYXI+IHByZWZpeChnX3N0cm5kdXAocmVx
dWVzdFVSSSwgc3RybGVuKHJlcXVlc3RVUkkpIC0gc3RybGVuKHN1ZmZpeCkpKTsKLSAgICAgICAg
R093blB0cjxjaGFyPiBuZXdVUkkoZ19zdHJkdXBfcHJpbnRmKCIlcy9qYXZhc2NyaXB0LmpzIiwg
cHJlZml4LmdldCgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJlZml4KGdfc3RybmR1
cChyZXF1ZXN0VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBzdHJsZW4oc3VmZml4KSkpOworICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IG5ld1VSSShnX3N0cmR1cF9wcmludGYoIiVzL2phdmFzY3Jp
cHQuanMiLCBwcmVmaXguZ2V0KCkpKTsKICAgICAgICAgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91
cmkocmVxdWVzdCwgbmV3VVJJLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZm
aXgocmVxdWVzdFVSSSwgIi9hZGQtZG8tbm90LXRyYWNrLWhlYWRlciIpKSB7CiAgICAgICAgIFNv
dXBNZXNzYWdlSGVhZGVycyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9o
ZWFkZXJzKHJlcXVlc3QpOwpAQCAtMTk5LDcgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIG1ldGhvZENh
bGxDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRl
ciwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9j
dW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAg
R093blB0cjxjaGFyPiB0aXRsZSh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF90aXRsZShkb2N1bWVu
dCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9kb21fZG9jdW1lbnRf
Z2V0X3RpdGxlKGRvY3VtZW50KSk7CiAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9y
ZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwgdGl0bGUuZ2V0KCkp
KTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlJ1bkphdmFTY3JpcHRJ
bklzb2xhdGVkV29ybGQiKSkgewogICAgICAgICB1aW50NjRfdCBwYWdlSUQ7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAKaW5kZXggNmZkMDVm
NS4uZWU2NWRjYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1V
dGlsaXRpZXNHdGsuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRp
bGl0aWVzR3RrLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVz
cGFjZSBVdGlsIHsKQEAgLTY3LDE4ICs2NywxOCBAQCBzdGF0aWMgY2hhciogZ2V0RmlsZW5hbWVG
cm9tRW52aXJvbm1lbnRWYXJpYWJsZUFzVVRGOChjb25zdCBjaGFyKiB2YXJpYWJsZU5hbWUpCiAK
IFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgR093blB0cjxj
aGFyPiBpbmplY3RlZEJ1bmRsZVBhdGgoZ2V0RmlsZW5hbWVGcm9tRW52aXJvbm1lbnRWYXJpYWJs
ZUFzVVRGOCgiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX1BBVEgiKSk7
Ci0gICAgR093blB0cjxjaGFyPiBpbmplY3RlZEJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5h
bWUoaW5qZWN0ZWRCdW5kbGVQYXRoLmdldCgpLCAibGliVGVzdFdlYktpdEFQSUluamVjdGVkQnVu
ZGxlLmxhIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5qZWN0ZWRCdW5kbGVQYXRo
KGdldEZpbGVuYW1lRnJvbUVudmlyb25tZW50VmFyaWFibGVBc1VURjgoIlRFU1RfV0VCS0lUX0FQ
SV9XRUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9QQVRIIikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aW5qZWN0ZWRCdW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlUGF0
aC5nZXQoKSwgImxpYlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5sYSIsIG51bGxwdHIpKTsK
ICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoaW5qZWN0ZWRCdW5kbGVG
aWxlbmFtZS5nZXQoKSk7CiB9CiAKIFdLVVJMUmVmIGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0
IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNpb24pCiB7Ci0gICAgR093blB0cjxj
aGFyPiB0ZXN0UmVzb3VyY2VzUGF0aChnZXRGaWxlbmFtZUZyb21FbnZpcm9ubWVudFZhcmlhYmxl
QXNVVEY4KCJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9SRVNPVVJDRVNfUEFUSCIpKTsKLSAgICBH
T3duUHRyPGNoYXI+IHJlc291cmNlQmFzZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy4lcyIsIHJl
c291cmNlLCBleHRlbnNpb24pKTsKLSAgICBHT3duUHRyPGNoYXI+IHJlc291cmNlRmlsZW5hbWUo
Z19idWlsZF9maWxlbmFtZSh0ZXN0UmVzb3VyY2VzUGF0aC5nZXQoKSwgcmVzb3VyY2VCYXNlbmFt
ZS5nZXQoKSwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVzdFJlc291cmNlc1BhdGgo
Z2V0RmlsZW5hbWVGcm9tRW52aXJvbm1lbnRWYXJpYWJsZUFzVVRGOCgiVEVTVF9XRUJLSVRfQVBJ
X1dFQktJVDJfUkVTT1VSQ0VTX1BBVEgiKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJj
ZUJhc2VuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKSk7
CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUo
dGVzdFJlc291cmNlc1BhdGguZ2V0KCksIHJlc291cmNlQmFzZW5hbWUuZ2V0KCksIG51bGxwdHIp
KTsKICAgICBHUmVmUHRyPEdGaWxlPiByZXNvdXJjZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChyZXNvdXJjZUZpbGVuYW1lLmdldCgpKSk7Ci0gICAgR093blB0cjxjaGFyPiBy
ZXNvdXJjZVVSSShnX2ZpbGVfZ2V0X3VyaShyZXNvdXJjZUZpbGUuZ2V0KCkpKTsKKyAgICBHVW5p
cXVlUHRyPGNoYXI+IHJlc291cmNlVVJJKGdfZmlsZV9nZXRfdXJpKHJlc291cmNlRmlsZS5nZXQo
KSkpOwogICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZXNvdXJjZVVSSS5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3Jt
V2ViVmlld0d0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdH
dGsuY3BwCmluZGV4IGJhNmZhYjAuLjEyZWVlZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgogCi0jaW5jbHVkZSA8V2Vi
Q29yZS9HT3duUHRyR3RrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+CiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KIApA
QCAtNTgsNyArNTgsNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8odW5zaWduZWQg
d2lkdGgsIHVuc2lnbmVkIGhlaWdodCkKIAogc3RhdGljIHZvaWQgZG9LZXlTdHJva2UoR3RrV2lk
Z2V0KiB2aWV3V2lkZ2V0LCB1bnNpZ25lZCBpbnQga2V5VmFsKQogewotICAgIEdPd25QdHI8R2Rr
RXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOworICAgIEdVbmlxdWVQ
dHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOwogICAgIGV2
ZW50LT5rZXkua2V5dmFsID0ga2V5VmFsOwogICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJS
RU5UX1RJTUU7CiAgICAgZXZlbnQtPmtleS5zdGF0ZSA9IDA7CkBAIC05NSw3ICs5NSw3IEBAIHZv
aWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXNzKCkKIAogc3RhdGljIHZvaWQg
ZG9Nb3VzZUJ1dHRvbkV2ZW50KEd0a1dpZGdldCogdmlld1dpZGdldCwgR2RrRXZlbnRUeXBlIGV2
ZW50VHlwZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCBpbnQgYnV0dG9uKQogewotICAgIEdPd25Q
dHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoZXZlbnRUeXBlKSk7CisgICAgR1VuaXF1
ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKICAgICBldmVu
dC0+YnV0dG9uLnggPSB4OwogICAgIGV2ZW50LT5idXR0b24ueSA9IHk7CiAgICAgZXZlbnQtPmJ1
dHRvbi5idXR0b24gPSBidXR0b247CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBQbGF0Zm9ybVdl
YlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KQogCiB2b2lk
IFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUodW5zaWduZWQgeCwgdW5zaWduZWQg
eSkKIHsKLSAgICBHT3duUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19NT1RJ
T05fTk9USUZZKSk7CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25l
dyhHREtfTU9USU9OX05PVElGWSkpOwogICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7CiAgICAgZXZl
bnQtPm1vdGlvbi55ID0geTsKICAgICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9U
SU1FOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2Fk
VHJhY2tpbmdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9h
ZFRyYWNraW5nVGVzdC5jcHAKaW5kZXggZGYzNDIwNC4uMjExZmE4YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVuCiBzdGF0aWMgdm9pZCBs
b2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50
IGxvYWRFdmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRy
YWNraW5nVGVzdCogdGVzdCkKIHsKICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQgPSB0cnVlOwotICAg
IHRlc3QtPm1fZXJyb3Iuc2V0KGdfZXJyb3JfY29weShlcnJvcikpOworICAgIHRlc3QtPm1fZXJy
b3IucmVzZXQoZ19lcnJvcl9jb3B5KGVycm9yKSk7CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkg
ewogICAgIGNhc2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lk
IExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRVUkkoY29uc3QgY2hhciogdXJpKQogewogICAgIG1fbG9h
ZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJy
b3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6OmxvYWRV
UkkodXJpKTsKIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6
bG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSkKIHsKICAgICBt
X2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBt
X2Vycm9yLmNsZWFyKCk7CisgICAgbV9lcnJvci5yZXNldCgpOwogICAgIFdlYlZpZXdUZXN0Ojps
b2FkSHRtbChodG1sLCBiYXNlVVJJKTsKIH0KIApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgTG9h
ZFRyYWNraW5nVGVzdDo6bG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpCiB7CiAg
ICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0g
ICAgbV9lcnJvci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVz
dDo6bG9hZFBsYWluVGV4dChwbGFpblRleHQpOwogfQogCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0
KQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3Mg
PSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2Vi
Vmlld1Rlc3Q6OmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwogfQogCkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBMb2FkVHJhY2tpbmdUZXN0OjpyZWxvYWQoKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVh
cigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsK
KyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZChtX3dlYlZp
ZXcpOwogfQogCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBMb2FkVHJhY2tpbmdUZXN0Ojpnb0Jh
Y2soKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jl
c3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAg
V2ViVmlld1Rlc3Q6OmdvQmFjaygpOwogfQogCkBAIC0yMDIsNiArMjAyLDYgQEAgdm9pZCBMb2Fk
VHJhY2tpbmdUZXN0Ojpnb0ZvcndhcmQoKQogewogICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOwog
ICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAgIG1fZXJyb3IuY2xlYXIoKTsKKyAgICBt
X2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6OmdvRm9yd2FyZCgpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3Qu
aAppbmRleCBhM2NmNzg0Li5kMGVkMWU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgfTsKICAgICBib29sIG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbjsKICAgICBi
b29sIG1fbG9hZEZhaWxlZDsKLSAgICBHT3duUHRyPEdFcnJvcj4gbV9lcnJvcjsKKyAgICBHVW5p
cXVlUHRyPEdFcnJvcj4gbV9lcnJvcjsKICAgICBWZWN0b3I8TG9hZEV2ZW50cz4gbV9sb2FkRXZl
bnRzOwogICAgIGZsb2F0IG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAgICAgQ1N0cmluZyBtX3JlZGly
ZWN0VVJJOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9U
ZXN0TWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWlu
LmNwcAppbmRleCBkMjFmZmQ3Li44MDQzNTU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmNwcApAQCAtMjMsMTQgKzIzLDE0IEBACiAjaW5jbHVk
ZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi93ZWJraXQyLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogdm9pZCBiZWZvcmVBbGwoKTsKIHZvaWQgYWZ0
ZXJBbGwoKTsKIAogc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uodm9pZCkKIHsKLSAgICBH
T3duUHRyPGNoYXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfRVhFQ19Q
QVRILCAiVGVzdFdlYktpdEFQSSIsICJXZWJLaXQyR3RrIiwgInJlc291cmNlcyIsICJ3ZWJraXQy
Z3RrLXRlc3RzLXJlc291cmNlcy5ncmVzb3VyY2UiLCBOVUxMKSk7CisgICAgR1VuaXF1ZVB0cjxj
aGFyPiByZXNvdXJjZXNQYXRoKGdfYnVpbGRfZmlsZW5hbWUoV0VCS0lUX0VYRUNfUEFUSCwgIlRl
c3RXZWJLaXRBUEkiLCAiV2ViS2l0Mkd0ayIsICJyZXNvdXJjZXMiLCAid2Via2l0Mmd0ay10ZXN0
cy1yZXNvdXJjZXMuZ3Jlc291cmNlIiwgbnVsbHB0cikpOwogICAgIEdSZXNvdXJjZSogcmVzb3Vy
Y2UgPSBnX3Jlc291cmNlX2xvYWQocmVzb3VyY2VzUGF0aC5nZXQoKSwgMCk7CiAgICAgZ19hc3Nl
cnQocmVzb3VyY2UpOwogCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZU5vbkVt
cHR5RGlyZWN0b3J5KGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgpCiAgICAgZ19hc3NlcnQoZGly
ZWN0b3J5KTsKICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZTsKICAgICB3aGlsZSAoKGZpbGVOYW1l
ID0gZ19kaXJfcmVhZF9uYW1lKGRpcmVjdG9yeSkpKSB7Ci0gICAgICAgIEdPd25QdHI8Y2hhcj4g
ZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSwgTlVMTCkp
OworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZGly
ZWN0b3J5UGF0aCwgZmlsZU5hbWUsIG51bGxwdHIpKTsKICAgICAgICAgZ191bmxpbmsoZmlsZVBh
dGguZ2V0KCkpOwogICAgIH0KICAgICBnX2Rpcl9jbG9zZShkaXJlY3RvcnkpOwpAQCAtNjQsNyAr
NjQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAKICAgICByZWdpc3RlckdS
ZXNvdXJjZSgpOwogCi0gICAgR093blB0cjxjaGFyPiBkaXNrQ2FjaGVUZW1wRGlyZWN0b3J5KGdf
ZGlyX21ha2VfdG1wKCJXZWJLaXQyVGVzdHNEaXNrQ2FjaGUtWFhYWFhYIiwgMCkpOworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlVGVtcERpcmVjdG9yeShnX2Rpcl9tYWtlX3RtcCgiV2Vi
S2l0MlRlc3RzRGlza0NhY2hlLVhYWFhYWCIsIDApKTsKICAgICBnX2Fzc2VydChkaXNrQ2FjaGVU
ZW1wRGlyZWN0b3J5LmdldCgpKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCBkaXNrQ2FjaGVU
ZW1wRGlyZWN0b3J5LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
dGsvV2ViS2l0Mkd0ay9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0
Mkd0ay9UZXN0TWFpbi5oCmluZGV4IDBlMTFkNDAuLmQ1Y2VhZTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvVGVzdE1haW4uaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1Rlc3RNYWluLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNkZWZpbmUgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShDbGFzc05hbWUpIFwKQEAgLTM3LDcgKzM4LDcgQEAKICAgICB9IFwKICAg
ICBzdGF0aWMgdm9pZCBhZGQoY29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0
TmFtZSwgdm9pZCAoKnRlc3RGdW5jKShDbGFzc05hbWUqLCBjb25zdCB2b2lkKikpIFwKICAgICB7
IFwKLSAgICAgICAgR093blB0cjxnY2hhcj4gdGVzdFBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvd2Vi
a2l0Mi8lcy8lcyIsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsgXAorICAgICAgICBHVW5pcXVlUHRy
PGdjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVO
YW1lLCB0ZXN0TmFtZSkpOyBcCiAgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENs
YXNzTmFtZSwgMCwgQ2xhc3NOYW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRv
d24pOyBcCiAgICAgfQogCkBAIC04MywxMyArODQsMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IENTdHJpbmcgZ2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpCiAgICAgewotICAgICAgICBHT3du
UHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9TUkNfRElSLCAi
VG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0cyIsICJXZWJLaXRHdGsiLCAicmVzb3VyY2Vz
IiwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1aWxk
X2ZpbGVuYW1lKFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJUZXN0
cyIsICJXZWJLaXRHdGsiLCAicmVzb3VyY2VzIiwgbnVsbHB0cikpOwogICAgICAgICByZXR1cm4g
cmVzb3VyY2VzRGlyLmdldCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBDU3RyaW5nIGdldFJlc291
cmNlc0RpcigpCiAgICAgewotICAgICAgICBHT3duUHRyPGNoYXI+IHJlc291cmNlc0RpcihnX2J1
aWxkX2ZpbGVuYW1lKFdFQktJVF9TUkNfRElSLCAiVG9vbHMiLCAiVGVzdFdlYktpdEFQSSIsICJU
ZXN0cyIsICJXZWJLaXQyR3RrIiwgInJlc291cmNlcyIsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiByZXNvdXJjZXNEaXIoZ19idWlsZF9maWxlbmFtZShXRUJLSVRfU1JDX0RJUiwg
IlRvb2xzIiwgIlRlc3RXZWJLaXRBUEkiLCAiVGVzdHMiLCAiV2ViS2l0Mkd0ayIsICJyZXNvdXJj
ZXMiLCBudWxscHRyKSk7CiAgICAgICAgIHJldHVybiByZXNvdXJjZXNEaXIuZ2V0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktp
dFRlc3RCdXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRU
ZXN0QnVzLmNwcAppbmRleCA4YzJkM2Y2Li5kMGRmYWU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbmNsdWRlICJXZWJLaXRUZXN0QnVzLmgiCiAKICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBXZWJLaXRUZXN0QnVzOjpXZWJLaXRUZXN0QnVz
KCkKQEAgLTMxLDcgKzMyLDcgQEAgV2ViS2l0VGVzdEJ1czo6V2ViS2l0VGVzdEJ1cygpCiBib29s
IFdlYktpdFRlc3RCdXM6OnJ1bigpCiB7CiAgICAgLy8gRklYTUU6IFVzZSBHVGVzdERCdXMgd2hl
biB3ZSBidW1wIGdsaWIgdG8gMi4zNC4KLSAgICBHT3duUHRyPGNoYXI+IGRidXNMYXVuY2goZ19m
aW5kX3Byb2dyYW1faW5fcGF0aCgiZGJ1cy1sYXVuY2giKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFy
PiBkYnVzTGF1bmNoKGdfZmluZF9wcm9ncmFtX2luX3BhdGgoImRidXMtbGF1bmNoIikpOwogICAg
IGlmICghZGJ1c0xhdW5jaCkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERC
VVMgZGFlbW9uOiBkYnVzLWxhdW5jaCBub3QgZm91bmQgaW4gcGF0aCIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3Rr
L1dlYktpdFRlc3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0
ay9XZWJLaXRUZXN0U2VydmVyLmNwcAppbmRleCAwYWE4NmJjLi44NzM2NzcxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RTZXJ2ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZl
ci5jcHAKQEAgLTIxLDE2ICsyMSwxNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIK
IAogI2luY2x1ZGUgIlRlc3RNYWluLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogV2ViS2l0VGVzdFNlcnZl
cjo6V2ViS2l0VGVzdFNlcnZlcihTZXJ2ZXJUeXBlIHR5cGUpCiB7Ci0gICAgR093blB0cjxjaGFy
PiBzc2xDZXJ0aWZpY2F0ZUZpbGU7Ci0gICAgR093blB0cjxjaGFyPiBzc2xLZXlGaWxlOworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc3NsQ2VydGlmaWNhdGVGaWxlOworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gc3NsS2V5RmlsZTsKICAgICBpZiAodHlwZSA9PSBTZXJ2ZXJIVFRQUykgewogICAgICAgICBD
U3RyaW5nIHJlc291cmNlc0RpciA9IFRlc3Q6OmdldFJlc291cmNlc0RpcigpOwotICAgICAgICBz
c2xDZXJ0aWZpY2F0ZUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUocmVzb3VyY2VzRGlyLmRhdGEo
KSwgInRlc3QtY2VydC5wZW0iLCBOVUxMKSk7Ci0gICAgICAgIHNzbEtleUZpbGUuc2V0KGdfYnVp
bGRfZmlsZW5hbWUocmVzb3VyY2VzRGlyLmRhdGEoKSwgInRlc3Qta2V5LnBlbSIsIE5VTEwpKTsK
KyAgICAgICAgc3NsQ2VydGlmaWNhdGVGaWxlLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocmVzb3Vy
Y2VzRGlyLmRhdGEoKSwgInRlc3QtY2VydC5wZW0iLCBOVUxMKSk7CisgICAgICAgIHNzbEtleUZp
bGUucmVzZXQoZ19idWlsZF9maWxlbmFtZShyZXNvdXJjZXNEaXIuZGF0YSgpLCAidGVzdC1rZXku
cGVtIiwgTlVMTCkpOwogICAgIH0KIAogICAgIEdSZWZQdHI8U291cEFkZHJlc3M+IGFkZHJlc3Mg
PSBhZG9wdEdSZWYoc291cF9hZGRyZXNzX25ldygiMTI3LjAuMC4xIiwgU09VUF9BRERSRVNTX0FO
WV9QT1JUKSk7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNv
dXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZl
cjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKQogewogICAgIFNvdXBVUkkqIHVyaSA9
IHNvdXBfdXJpX25ld193aXRoX2Jhc2UobV9iYXNlVVJJLCBwYXRoKTsKLSAgICBHT3duUHRyPGdj
aGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpKTsKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiB1cmlTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpKTsK
ICAgICBzb3VwX3VyaV9mcmVlKHVyaSk7CiAgICAgcmV0dXJuIHVyaVN0cmluZy5nZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViUHJvY2Vz
c1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQ
cm9jZXNzVGVzdFJ1bm5lci5jcHAKaW5kZXggNGEzY2Q5Ni4uOTlhOWRkYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVz
dFJ1bm5lci5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzVGVzdFJ1bm5lci5oIgogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KIAogV2ViUHJvY2Vz
c1Rlc3RSdW5uZXI6OldlYlByb2Nlc3NUZXN0UnVubmVyKCkKICAgICA6IG1fbWFpbkxvb3AoZ19t
YWluX2xvb3BfbmV3KDAsIFRSVUUpKQpAQCAtOTMsNyArOTMsNyBAQCBib29sIFdlYlByb2Nlc3NU
ZXN0UnVubmVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVz
dE5hbWUsCiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogCiAgICAgbV90ZXN0UmVz
dWx0ID0gZmFsc2U7Ci0gICAgR093blB0cjxjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYo
IiVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVz
dFBhdGgoZ19zdHJkdXBfcHJpbnRmKCIlcy8lcyIsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsKICAg
ICBnX2RidXNfcHJveHlfY2FsbCgKICAgICAgICAgcHJveHkoKSwKICAgICAgICAgIlJ1blRlc3Qi
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0
LmNwcAppbmRleCA4ZDZkZjU1Li5lYjdiMGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR093blB0ckd0ay5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvR1VuaXF1ZVB0ckd0ay5oPgogCiBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQogICAgIDog
bV93ZWJWaWV3KFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9yZWZfc2luayh3ZWJraXRfd2ViX3Zp
ZXdfbmV3KCkpKSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERh
dGFDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbgog
ICAgIGdfYXNzZXJ0KGRhdGEpOwogCiAgICAgV2ViVmlld1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2Fz
dDxXZWJWaWV3VGVzdCo+KHVzZXJEYXRhKTsKLSAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5zZXQo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgIHRlc3QtPm1fcmVzb3VyY2VEYXRh
LnJlc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpKTsKICAgICB0ZXN0LT5tX3Jlc291
cmNlRGF0YVNpemUgPSBkYXRhU2l6ZTsKICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOwogfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0
YUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2luCiBj
b25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNv
dXJjZURhdGFTaXplKQogewogICAgIG1fcmVzb3VyY2VEYXRhU2l6ZSA9IDA7Ci0gICAgbV9yZXNv
dXJjZURhdGEuY2xlYXIoKTsKKyAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIFdlYktp
dFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJj
ZShtX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKIApAQCAtMjQ4LDcgKzI0OCw3
IEBAIHZvaWQgV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQg
bW91c2VNb2RpZmllcnMpCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVCht
X3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKIAotICAgIEdPd25QdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX01P
VElPTl9OT1RJRlkpKTsKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRf
bmV3KEdES19NT1RJT05fTk9USUZZKSk7CiAgICAgZXZlbnQtPm1vdGlvbi54ID0geDsKICAgICBl
dmVudC0+bW90aW9uLnkgPSB5OwogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBXZWJWaWV3VGVz
dDo6a2V5U3Ryb2tlKHVuc2lnbmVkIGtleVZhbCwgdW5zaWduZWQga2V5TW9kaWZpZXJzKQogICAg
IEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKICAgICBnX2Fz
c2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CiAKLSAgICBHT3duUHRy
PEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKKyAgICBHVW5p
cXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKICAg
ICBldmVudC0+a2V5LmtleXZhbCA9IGtleVZhbDsKIAogICAgIGV2ZW50LT5rZXkudGltZSA9IEdE
S19DVVJSRU5UX1RJTUU7CkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6ZG9N
b3VzZUJ1dHRvbkV2ZW50KEdka0V2ZW50VHlwZSBldmVudFR5cGUsIGludCB4LCBpbnQgeSwgdW5z
aWcKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7CiAg
ICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwogCi0gICAg
R093blB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKKyAgICBH
VW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSkpOwogICAg
IGV2ZW50LT5idXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQp
OwogICAgIGdfb2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViVmlld1Rlc3QuaAppbmRleCBhZWViMDYy
Li5mNDVlMTI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3Rr
L1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9X
ZWJWaWV3VGVzdC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nIG1fZXhw
ZWN0ZWRUaXRsZTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBtX2phdmFzY3JpcHRSZXN1
bHQ7CiAgICAgR0Vycm9yKiogbV9qYXZhc2NyaXB0RXJyb3I7Ci0gICAgR093blB0cjxjaGFyPiBt
X3Jlc291cmNlRGF0YTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fcmVzb3VyY2VEYXRhOwogICAg
IHNpemVfdCBtX3Jlc291cmNlRGF0YVNpemU7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZh
Y2U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAppbmRl
eCA0ZTExMTUwLi4zNTczYTJhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXJBdGsuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZVBhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5oPgogI2luY2x1ZGUgPGNzdGRpbz4K
LSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdUUiB7CkBAIC0xMDQsNyArMTA0LDcgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShpZCk7Ci0gICAgR093blB0cjxnY2hhcj4gaWRC
dWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOworICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGlkQnVmZmVyKHN0YXRpY19jYXN0PGdjaGFyKj4oZ19tYWxsb2MoYnVm
ZmVyU2l6ZSkpKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGlkLCBpZEJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAKICAgICBBdGtPYmplY3QqIHJlc3VsdCA9IGNoaWxkRWxlbWVudEJ5
SWQocm9vdCwgaWRCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJB
dGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwCmluZGV4IDkxNTU1OTguLmI1MjEwNzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
UGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTY3LDggKzY3LDgg
QEAgdm9pZCBwcmludEFjY2Vzc2liaWxpdHlFdmVudChBdGtPYmplY3QqIGFjY2Vzc2libGUsIGNv
bnN0IGNoYXIqIHNpZ25hbE5hbWUsIGNvbnMKICAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVj
dE5hbWUgPT0gJ1wwJykKICAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOwogCi0gICAg
R093blB0cjxjaGFyPiBzaWduYWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9w
cmludGYoIiVzID0gJXMiLCBzaWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWdu
YWxOYW1lKSk7Ci0gICAgR093blB0cjxjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19z
dHJkdXBfcHJpbnRmKCJBY2Nlc3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6
IFwiJXNcIiAvIFJvbGU6ICVkXG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5h
bWUsIG9iamVjdFJvbGUpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpZ25hbE5hbWVBbmRWYWx1
ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNp
Z25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZyhnX3N0cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkg
b2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFtZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25h
bE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0TmFtZSwgb2JqZWN0Um9sZSkpOwogICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRwdXRUZXh0KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJp
bGl0eUV2ZW50U3RyaW5nLmdldCgpKSk7CiB9CiAKQEAgLTgzLDM3ICs4MywzNyBAQCBnYm9vbGVh
biBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50KiBzaWduYWxIaW50
LCB1bnNpZ25lZCBudW1QYQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEdTaWduYWxRdWVy
eSBzaWduYWxRdWVyeTsKLSAgICBHT3duUHRyPGNoYXI+IHNpZ25hbE5hbWU7Ci0gICAgR093blB0
cjxjaGFyPiBzaWduYWxWYWx1ZTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHNpZ25hbE5hbWU7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBzaWduYWxWYWx1ZTsKICAgICBjb25zdCBjaGFyKiBub3RpZmlj
YXRpb25OYW1lID0gbnVsbHB0cjsKIAogICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNp
Z25hbF9pZCwgJnNpZ25hbFF1ZXJ5KTsKIAogICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5
LnNpZ25hbF9uYW1lLCAic3RhdGUtY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBh
cmFtVmFsdWVzWzFdKSkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOworICAgICAgICBz
aWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1
ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVz
ZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVz
WzJdKSkpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFt
VmFsdWVzWzFdKSwgImNoZWNrZWQiKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAi
Q2hlY2tlZFN0YXRlQ2hhbmdlZCI7CiAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAoZ192YWx1
ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5IikpCiAgICAgICAg
ICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwogICAgIH0g
ZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50
IikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwot
ICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0
X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdf
c3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJk
dXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwog
ICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKQogICAgICAg
ICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIjsKICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJl
bi1jaGFuZ2VkIikpIHsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNoaWxkcmVuQ2hhbmdlZERldGFp
bCA9IGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCk7Ci0gICAgICAgIHNpZ25h
bE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxkcmVu
Q2hhbmdlZERldGFpbCkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWdu
YWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxk
cmVuQ2hhbmdlZERldGFpbCkpOworICAgICAgICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9w
cmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7CiAgICAgICAg
IG5vdGlmaWNhdGlvbk5hbWUgPSAhZ19zdHJjbXAwKGNoaWxkcmVuQ2hhbmdlZERldGFpbCwgImFk
ZCIpID8gIkFYQ2hpbGRyZW5BZGRlZCIgOiAiQVhDaGlsZHJlblJlbW92ZWQiOwogICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5n
ZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHkt
Y2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOworICAg
ICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVz
IiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOwogICAgICAgICBpZiAo
IWdfc3RyY21wMChnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRhaWwpLCAiYWNjZXNz
aWJsZS12YWx1ZSIpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWFZhbHVlQ2hh
bmdlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1l
LCAibG9hZC1jb21wbGV0ZSIpKQogICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYTG9hZENv
bXBsZXRlIjsKICAgICBlbHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25h
bFF1ZXJ5LnNpZ25hbF9uYW1lKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXAo
c2lnbmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKIAogICAgIGlmIChsb2dnaW5nQWNjZXNzaWJpbGl0
eUV2ZW50cykKICAgICAgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNzaWJsZSwgc2ln
bmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA1ZTUwNzZjLi44OGFjYTVhIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMzcsOCArMzcsOCBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAjaW5jbHVkZSA8YXRr
L2F0ay5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTk3LDcgKzk3LDcgQEAgY29uc3QgY2hhciogbGFuZG1hcmtTdHJp
bmdTZWFyY2ggPSAiQVhMYW5kbWFya1NlYXJjaCI7CiBTdHJpbmcganNTdHJpbmdUb1dURlN0cmlu
ZyhKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoYXR0cmlidXRlKTsKLSAgICBHT3duUHRyPGdj
aGFyPiBidWZmZXIoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyhidWZmZXJTaXplKSkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGJ1ZmZlcihzdGF0aWNfY2FzdDxnY2hhcio+KGdfbWFsbG9j
KGJ1ZmZlclNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhhdHRyaWJ1dGUsIGJ1
ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXIuZ2V0KCkpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIFN0cmluZyBnZXRBdGtBdHRyaWJ1dGVT
ZXRBc1N0cmluZyhBdGtPYmplY3QqIGFjY2Vzc2libGUsIEF0a0F0dHJpYnV0ZVR5cGUgdHlwZSkK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChBdGtBdHRyaWJ1dGVTZXQqIGF0
dHJpYnV0ZXMgPSBhdHRyaWJ1dGVTZXQ7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1
dGVzLT5uZXh0KSB7CiAgICAgICAgIEF0a0F0dHJpYnV0ZSogYXR0cmlidXRlID0gc3RhdGljX2Nh
c3Q8QXRrQXR0cmlidXRlKj4oYXR0cmlidXRlcy0+ZGF0YSk7Ci0gICAgICAgIEdPd25QdHI8Z2No
YXI+IGF0dHJpYnV0ZURhdGEoZ19zdHJjb25jYXQoYXR0cmlidXRlLT5uYW1lLCAiOiIsIGF0dHJp
YnV0ZS0+dmFsdWUsIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXR0cmlidXRl
RGF0YShnX3N0cmNvbmNhdChhdHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwg
TlVMTCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhdHRyaWJ1dGVEYXRhLmdldCgpKTsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMtPm5leHQpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
LCAiKTsKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIGNoZWNrRWxlbWVudFN0YXRlKFBsYXRmb3Jt
VUlFbGVtZW50IGVsZW1lbnQsIEF0a1N0YXRlVHlwZSBzdGF0ZVR5cGUpCiAKIEpTU3RyaW5nUmVm
IGluZGV4UmFuZ2VJblRhYmxlKFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIGJvb2wgaXNSb3dS
YW5nZSkKIHsKLSAgICBHT3duUHRyPGdjaGFyPiByYW5nZVN0cmluZyhnX3N0cmR1cCgiezAsIDB9
IikpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0i
KSk7CiAKICAgICBpZiAoIUFUS19JU19PQkpFQ1QoZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7CkBA
IC0yMzIsNyArMjMyLDcgQEAgSlNTdHJpbmdSZWYgaW5kZXhSYW5nZUluVGFibGUoUGxhdGZvcm1V
SUVsZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQogICAgICAgICAgICAgYmFzZSA9IGNv
bHVtbjsKICAgICAgICAgICAgIGxlbmd0aCA9IGF0a190YWJsZV9nZXRfY29sdW1uX2V4dGVudF9h
dChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywgY29sdW1uKTsKICAgICAgICAgfQotICAgICAgICBy
YW5nZVN0cmluZy5zZXQoZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIGJhc2UsIGxlbmd0aCkp
OworICAgICAgICByYW5nZVN0cmluZy5yZXNldChnX3N0cmR1cF9wcmludGYoInslZCwgJWR9Iiwg
YmFzZSwgbGVuZ3RoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiAgICAgaWYg
KCFhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpCiAgICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093
blB0cjxjaGFyPiByb2xlU3RyaW5nV2l0aFByZWZpeChnX3N0cmR1cF9wcmludGYoIkFYUm9sZTog
JXMiLCByb2xlVG9TdHJpbmcoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKSkpOworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gcm9sZVN0cmluZ1dpdGhQcmVmaXgoZ19zdHJkdXBfcHJpbnRmKCJBWFJv
bGU6ICVzIiwgcm9sZVRvU3RyaW5nKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkpKTsKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocm9sZVN0cmluZ1dpdGhQcmVm
aXguZ2V0KCkpOwogfQogCkBAIC04OTcsNyArODk3LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKICAgICAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKICAgICBjb25zdCBnY2hhciogbmFtZSA9
IGF0a19vYmplY3RfZ2V0X25hbWUoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKTsKLSAgICBH
T3duUHRyPGdjaGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRsZTogJXMiLCBuYW1l
ID8gbmFtZSA6ICIiKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhUaXRsZShnX3N0cmR1cF9w
cmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSA/IG5hbWUgOiAiIikpOwogCiAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VGl0bGUuZ2V0KCkpOwogfQpAQCAtOTExLDcg
KzkxMSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZXNjcmlwdGlvbigpCiAgICAgaWYgKCFkZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CiAKLSAgICBHT3duUHRyPGdjaGFyPiBh
eERlc2MoZ19zdHJkdXBfcHJpbnRmKCJBWERlc2NyaXB0aW9uOiAlcyIsIGRlc2NyaXB0aW9uKSk7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gYXhEZXNjKGdfc3RyZHVwX3ByaW50ZigiQVhEZXNjcmlw
dGlvbjogJXMiLCBkZXNjcmlwdGlvbikpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGF4RGVzYy5nZXQoKSk7CiB9CkBAIC05MzgsOSArOTM4LDkgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkK
ICAgICBpZiAoIUFUS19JU19URVhUKG1fZWxlbWVudC5nZXQoKSkpCiAgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0cjxnY2hhcj4g
dGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChtX2VsZW1lbnQuZ2V0KCkpLCAwLCAtMSkp
OwotICAgIEdPd25QdHI8Z2NoYXI+IHRleHRXaXRoUmVwbGFjZWRDaGFyYWN0ZXJzKHJlcGxhY2VD
aGFyYWN0ZXJzRm9yUmVzdWx0cyh0ZXh0LmdldCgpKSk7Ci0gICAgR093blB0cjxnY2hhcj4gYXhW
YWx1ZShnX3N0cmR1cF9wcmludGYoIkFYVmFsdWU6ICVzIiwgdGV4dFdpdGhSZXBsYWNlZENoYXJh
Y3RlcnMuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90
ZXh0KEFUS19URVhUKG1fZWxlbWVudC5nZXQoKSksIDAsIC0xKSk7CisgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdGV4dFdpdGhSZXBsYWNlZENoYXJhY3RlcnMocmVwbGFjZUNoYXJhY3RlcnNGb3JSZXN1
bHRzKHRleHQuZ2V0KCkpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBheFZhbHVlKGdfc3RyZHVw
X3ByaW50ZigiQVhWYWx1ZTogJXMiLCB0ZXh0V2l0aFJlcGxhY2VkQ2hhcmFjdGVycy5nZXQoKSkp
OwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VmFsdWUuZ2V0
KCkpOwogfQpAQCAtOTU0LDcgKzk1NCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAgICAgaWYgKCFsb2NhbGUpCiAgICAgICAg
IHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCi0gICAgR093blB0
cjxjaGFyPiBheFZhbHVlKGdfc3RyZHVwX3ByaW50ZigiQVhMYW5ndWFnZTogJXMiLCBsb2NhbGUp
KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGF4VmFsdWUoZ19zdHJkdXBfcHJpbnRmKCJBWExhbmd1
YWdlOiAlcyIsIGxvY2FsZSkpOwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhheFZhbHVlLmdldCgpKTsKIH0KIApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVGb3JJbmRleChpbnQgaW5kZXgpCiAgICAgaWYgKGluZGV4
IDwgMCB8fCBpbmRleCA+IGF0a190ZXh0X2dldF9jaGFyYWN0ZXJfY291bnQoQVRLX1RFWFQobV9l
bGVtZW50LmdldCgpKSkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIEdPd25QdHI8Z2NoYXI+
IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQobV9lbGVtZW50LmdldCgpKSwgMCwgaW5k
ZXgpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKG1fZWxlbWVudC5nZXQoKSksIDAsIGluZGV4KSk7CiAgICAgaW50IGxpbmVObyA9IDA7CiAg
ICAgZm9yIChnY2hhciogb2Zmc2V0ID0gdGV4dC5nZXQoKTsgKm9mZnNldDsgKytvZmZzZXQpIHsK
ICAgICAgICAgaWYgKCpvZmZzZXQgPT0gJ1xuJykKQEAgLTEzNjQsNyArMTM2NCw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSgpCiAgICAgZ2ludCBzdGFydCwgZW5kOwogICAgIGdfZnJlZShhdGtfdGV4dF9nZXRfc2Vs
ZWN0aW9uKEFUS19URVhUKG1fZWxlbWVudC5nZXQoKSksIDAsICZzdGFydCwgJmVuZCkpOwogCi0g
ICAgR093blB0cjxnY2hhcj4gc2VsZWN0aW9uKGdfc3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBz
dGFydCwgZW5kIC0gc3RhcnQpKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzZWxlY3Rpb24oZ19z
dHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIHN0YXJ0LCBlbmQgLSBzdGFydCkpOwogICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhzZWxlY3Rpb24uZ2V0KCkpOwogfQogCkBA
IC0xNDQxLDcgKzE0NDEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dXJsKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7CiAKICAgICBBdGtIeXBlcmxpbmsqIGh5cGVybGluayA9IGF0a19oeXBlcmxp
bmtfaW1wbF9nZXRfaHlwZXJsaW5rKEFUS19IWVBFUkxJTktfSU1QTChtX2VsZW1lbnQuZ2V0KCkp
KTsKLSAgICBHT3duUHRyPGNoYXI+IGh5cGVybGlua1VSSShhdGtfaHlwZXJsaW5rX2dldF91cmko
aHlwZXJsaW5rLCAwKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBoeXBlcmxpbmtVUkkoYXRrX2h5
cGVybGlua19nZXRfdXJpKGh5cGVybGluaywgMCkpOwogCiAgICAgLy8gQnVpbGQgdGhlIHJlc3Vs
dCBzdHJpbmcsIHN0cmlwcGluZyB0aGUgYWJzb2x1dGUgVVJMIHBhdGhzIGlmIHByZXNlbnQuCiAg
ICAgY2hhciogbG9jYWxVUkkgPSBnX3N0cnN0cl9sZW4oaHlwZXJsaW5rVVJJLmdldCgpLCAtMSwg
IkxheW91dFRlc3RzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2d0ay9BY3RpdmF0ZUZvbnRzR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCmluZGV4IDFhYzVhM2Eu
LjdjOWRhYjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwCkBAIC0zNCw4ICszNCw4IEBA
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxmb250Y29u
ZmlnL2ZvbnRjb25maWcuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMu
aD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXVFIgewog
CkBAIC02MSwxOSArNjEsMTkgQEAgQ1N0cmluZyBnZXRPdXRwdXREaXIoKQogICAgICAgICByZXR1
cm4gd2Via2l0T3V0cHV0RGlyOwogCiAgICAgQ1N0cmluZyB0b3BMZXZlbFBhdGggPSBXVFI6OnRv
cExldmVsUGF0aCgpOwotICAgIEdPd25QdHI8Y2hhcj4gb3V0cHV0RGlyKGdfYnVpbGRfZmlsZW5h
bWUodG9wTGV2ZWxQYXRoLmRhdGEoKSwgIldlYktpdEJ1aWxkIiwgTlVMTCkpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gb3V0cHV0RGlyKGdfYnVpbGRfZmlsZW5hbWUodG9wTGV2ZWxQYXRoLmRhdGEo
KSwgIldlYktpdEJ1aWxkIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBvdXRwdXREaXIuZ2V0KCk7
CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldEZvbnRzUGF0aCgpCiB7CiAgICAgQ1N0cmluZyB3ZWJr
aXRPdXRwdXREaXIgPSBnZXRPdXRwdXREaXIoKTsKLSAgICBHT3duUHRyPGNoYXI+IGZvbnRzUGF0
aChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCksICJEZXBlbmRlbmNpZXMi
LCAiUm9vdCIsICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGZvbnRzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERpci5kYXRhKCks
ICJEZXBlbmRlbmNpZXMiLCAiUm9vdCIsICJ3ZWJraXRndGstdGVzdC1mb250cyIsIG51bGxwdHIp
KTsKICAgICBpZiAoZ19maWxlX3Rlc3QoZm9udHNQYXRoLmdldCgpLCBzdGF0aWNfY2FzdDxHRmls
ZVRlc3Q+KEdfRklMRV9URVNUX0VYSVNUUyB8IEdfRklMRV9URVNUX0lTX0RJUikpKQogICAgICAg
ICByZXR1cm4gZm9udHNQYXRoLmdldCgpOwogCiAgICAgLy8gVHJ5IGFsdGVybmF0aXZlIGZvbnRz
IHBhdGguCi0gICAgZm9udHNQYXRoLnNldChnX2J1aWxkX2ZpbGVuYW1lKHdlYmtpdE91dHB1dERp
ci5kYXRhKCksICJ3ZWJraXRndGstdGVzdC1mb250cyIsIE5VTEwpKTsKKyAgICBmb250c1BhdGgu
cmVzZXQoZ19idWlsZF9maWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAid2Via2l0Z3Rr
LXRlc3QtZm9udHMiLCBOVUxMKSk7CiAgICAgaWYgKGdfZmlsZV90ZXN0KGZvbnRzUGF0aC5nZXQo
KSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVT
VF9JU19ESVIpKSkKICAgICAgICAgcmV0dXJuIGZvbnRzUGF0aC5nZXQoKTsKIApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIGluaXRpYWxpemVGb250Q29uZmlnU2V0dGluZygpCiAgICAgLy8gTG9hZCBv
dXIgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBzZXRzIHVwIHByb3BlciBhbGlhc2VzIGZvciBm
YW1pbHkKICAgICAvLyBuYW1lcyBsaWtlIHNhbnMsIHNlcmlmIGFuZCBtb25vc3BhY2UuCiAgICAg
RmNDb25maWcqIGNvbmZpZyA9IEZjQ29uZmlnQ3JlYXRlKCk7Ci0gICAgR093blB0cjxnY2hhcj4g
Zm9udENvbmZpZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICJmb250
cy5jb25mIiwgTlVMTCkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZvbnRDb25maWdGaWxlbmFt
ZShnX2J1aWxkX2ZpbGVuYW1lKEZPTlRTX0NPTkZfRElSLCAiZm9udHMuY29uZiIsIG51bGxwdHIp
KTsKICAgICBpZiAoIWdfZmlsZV90ZXN0KGZvbnRDb25maWdGaWxlbmFtZS5nZXQoKSwgR19GSUxF
X1RFU1RfSVNfUkVHVUxBUikpCiAgICAgICAgIGdfZXJyb3IoIkNhbm5vdCBmaW5kIGZvbnRzLmNv
bmYgYXQgJXNcbiIsIGZvbnRDb25maWdGaWxlbmFtZS5nZXQoKSk7CiAgICAgaWYgKCFGY0NvbmZp
Z1BhcnNlQW5kTG9hZChjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RmNDaGFyOCo+KGZvbnRDb25m
aWdGaWxlbmFtZS5nZXQoKSksIHRydWUpKQpAQCAtMTA3LDE3ICsxMDcsMTcgQEAgdm9pZCBpbml0
aWFsaXplRm9udENvbmZpZ1NldHRpbmcoKQogICAgIGlmIChmb250c1BhdGguaXNOdWxsKCkpCiAg
ICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2NhdGUgdGVzdCBmb250cyBhdCAlcy4gSXMgV0VC
S0lUX1RPUF9MRVZFTCBzZXQ/IiwgZm9udHNQYXRoLmRhdGEoKSk7CiAKLSAgICBHT3duUHRyPEdE
aXI+IGZvbnRzRGlyZWN0b3J5KGdfZGlyX29wZW4oZm9udHNQYXRoLmRhdGEoKSwgMCwgMCkpOwor
ICAgIEdVbmlxdWVQdHI8R0Rpcj4gZm9udHNEaXJlY3RvcnkoZ19kaXJfb3Blbihmb250c1BhdGgu
ZGF0YSgpLCAwLCBudWxscHRyKSk7CiAgICAgd2hpbGUgKGNvbnN0IGNoYXIqIGRpcmVjdG9yeUVu
dHJ5ID0gZ19kaXJfcmVhZF9uYW1lKGZvbnRzRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICBp
ZiAoIWdfc3RyX2hhc19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIudHRmIikgJiYgIWdfc3RyX2hh
c19zdWZmaXgoZGlyZWN0b3J5RW50cnksICIub3RmIikpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgR093blB0cjxnY2hhcj4gZm9udFBhdGgoZ19idWlsZF9maWxlbmFtZShmb250c1Bh
dGguZGF0YSgpLCBkaXJlY3RvcnlFbnRyeSwgTlVMTCkpOworICAgICAgICBHVW5pcXVlUHRyPGdj
aGFyPiBmb250UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGZvbnRzUGF0aC5kYXRhKCksIGRpcmVjdG9y
eUVudHJ5LCBudWxscHRyKSk7CiAgICAgICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShj
b25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZvbnRQYXRoLmdldCgpKSkp
CiAgICAgICAgICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9hZCBmb250IGF0ICVzISIsIGZvbnRQ
YXRoLmdldCgpKTsKICAgICB9CiAKICAgICAvLyBBaGVtIGlzIHVzZWQgYnkgbWFueSBsYXlvdXQg
dGVzdHMuCi0gICAgR093blB0cjxnY2hhcj4gYWhlbUZvbnRGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKEZPTlRTX0NPTkZfRElSLCAiQUhFTV9fX18uVFRGIiwgTlVMTCkpOworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGFoZW1Gb250RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShGT05UU19DT05GX0RJ
UiwgIkFIRU1fX19fLlRURiIsIG51bGxwdHIpKTsKICAgICBpZiAoIUZjQ29uZmlnQXBwRm9udEFk
ZEZpbGUoY29uZmlnLCByZWludGVycHJldF9jYXN0PEZjQ2hhcjgqPihhaGVtRm9udEZpbGVuYW1l
LmdldCgpKSkpCiAgICAgICAgIGdfZXJyb3IoIkNvdWxkIG5vdCBsb2FkIGZvbnQgYXQgJXMhIiwg
YWhlbUZvbnRGaWxlbmFtZS5nZXQoKSk7IAogCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCB2b2lkIGlu
aXRpYWxpemVGb250Q29uZmlnU2V0dGluZygpCiAgICAgfTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBmb250RmlsZW5hbWVzW2ldOyArK2kpIHsKLSAgICAgICAgR093blB0cjxnY2hhcj4gZm9u
dEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICIuLiIsICIuLiIsICJm
b250cyIsIGZvbnRGaWxlbmFtZXNbaV0sIE5VTEwpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZm9udEZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09ORl9ESVIsICIuLiIsICIu
LiIsICJmb250cyIsIGZvbnRGaWxlbmFtZXNbaV0sIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFG
Y0NvbmZpZ0FwcEZvbnRBZGRGaWxlKGNvbmZpZywgcmVpbnRlcnByZXRfY2FzdDxGY0NoYXI4Kj4o
Zm9udEZpbGVuYW1lLmdldCgpKSkpCiAgICAgICAgICAgICBnX2Vycm9yKCJDb3VsZCBub3QgbG9h
ZCBmb250IGF0ICVzISIsIGZvbnRGaWxlbmFtZS5nZXQoKSk7IAogICAgIH0KIAogICAgIC8vIEEg
Zm9udCB3aXRoIG5vIHZhbGlkIEZvbnRjb25maWcgZW5jb2RpbmcgdG8gdGVzdCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0NTIKLSAgICBHT3duUHRyPGdjaGFyPiBm
b250V2l0aE5vVmFsaWRFbmNvZGluZ0ZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoRk9OVFNfQ09O
Rl9ESVIsICJGb250V2l0aE5vVmFsaWRFbmNvZGluZy5mb24iLCBOVUxMKSk7CisgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZm9udFdpdGhOb1ZhbGlkRW5jb2RpbmdGaWxlbmFtZShnX2J1aWxkX2ZpbGVu
YW1lKEZPTlRTX0NPTkZfRElSLCAiRm9udFdpdGhOb1ZhbGlkRW5jb2RpbmcuZm9uIiwgbnVsbHB0
cikpOwogICAgIGlmICghRmNDb25maWdBcHBGb250QWRkRmlsZShjb25maWcsIHJlaW50ZXJwcmV0
X2Nhc3Q8RmNDaGFyOCo+KGZvbnRXaXRoTm9WYWxpZEVuY29kaW5nRmlsZW5hbWUuZ2V0KCkpKSkK
ICAgICAgICAgZ19lcnJvcigiQ291bGQgbm90IGxvYWQgZm9udCBhdCAlcyEiLCBmb250V2l0aE5v
VmFsaWRFbmNvZGluZ0ZpbGVuYW1lLmdldCgpKTsgCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlVXRpbGl0aWVzLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVu
ZGxlVXRpbGl0aWVzLmNwcAppbmRleCAxZjUzOWJhLi5mZWJkYWFkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZVV0aWxp
dGllcy5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
SW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaD4KIAogbmFtZXNw
YWNlIFdUUiB7CkBAIC00Myw5ICs0Myw5IEBAIENTdHJpbmcgdG9wTGV2ZWxQYXRoKCkKICAgICAv
LyBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgd2Fzbid0IHByb3ZpZGVkIHRoZW4gYXNzdW1l
IHdlIHdlcmUgYnVpbHQgaW50bwogICAgIC8vIFdlYktpdEJ1aWxkL0RlYnVnIG9yIFdlYktpdEJ1
aWxkL1JlbGVhc2UuIE9idmlvdXNseSB0aGlzIHdpbGwgZmFpbCBpZiB0aGUgYnVpbGQKICAgICAv
LyBkaXJlY3RvcnkgaXMgbm9uLXN0YW5kYXJkLCBidXQgd2UgY2FuJ3QgZG8gbXVjaCBtb3JlIGFi
b3V0IHRoaXMuCi0gICAgR093blB0cjxjaGFyPiBwYXJlbnRQYXRoKGdfcGF0aF9nZXRfZGlybmFt
ZShnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKS5kYXRhKCkpKTsKLSAgICBHT3duUHRyPGNoYXI+
IGxheW91dFRlc3RzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHBhcmVudFBhdGguZ2V0KCksICIuLiIs
ICIuLiIsICIuLiIsIE5VTEwpKTsKLSAgICBHT3duUHRyPGNoYXI+IGFic29sdXRlVG9wTGV2ZWxQ
YXRoKHJlYWxwYXRoKGxheW91dFRlc3RzUGF0aC5nZXQoKSwgMCkpOworICAgIEdVbmlxdWVQdHI8
Y2hhcj4gcGFyZW50UGF0aChnX3BhdGhfZ2V0X2Rpcm5hbWUoZ2V0Q3VycmVudEV4ZWN1dGFibGVQ
YXRoKCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBsYXlvdXRUZXN0c1BhdGgoZ19i
dWlsZF9maWxlbmFtZShwYXJlbnRQYXRoLmdldCgpLCAiLi4iLCAiLi4iLCAiLi4iLCBudWxscHRy
KSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBhYnNvbHV0ZVRvcExldmVsUGF0aChyZWFscGF0aChs
YXlvdXRUZXN0c1BhdGguZ2V0KCksIDApKTsKICAgICByZXR1cm4gYWJzb2x1dGVUb3BMZXZlbFBh
dGguZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggZGY0MDQzYS4uMjU0Mzc0
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsv
VGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCkBAIC02
NiwxNSArNjYsMTUgQEAgdm9pZCBUZXN0UnVubmVyOjppbml0aWFsaXplV2FpdFRvRHVtcFdhdGNo
ZG9nVGltZXJJZk5lZWRlZCgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6
cGF0aFRvTG9jYWxSZXNvdXJjZShKU1N0cmluZ1JlZiB1cmwpCiB7CiAgICAgc2l6ZV90IHVybFNp
emUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodXJsKTsKLSAgICBHT3duUHRy
PGdjaGFyPiB1cmxTdHJpbmcoc3RhdGljX2Nhc3Q8Z2NoYXIqPihnX21hbGxvYyh1cmxTaXplKSkp
OworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVybFN0cmluZyhzdGF0aWNfY2FzdDxnY2hhcio+KGdf
bWFsbG9jKHVybFNpemUpKSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh1cmwsIHVybFN0
cmluZy5nZXQoKSwgdXJsU2l6ZSk7CiAKICAgICBpZiAoIWdfc3RyX2hhc19wcmVmaXgodXJsU3Ry
aW5nLmdldCgpLCAiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvIikpCiAgICAgICAgIHJldHVybiBK
U1N0cmluZ1JldGFpbih1cmwpOwogCiAgICAgY29uc3QgZ2NoYXIqIGxheW91dFRlc3RzU3VmZml4
ID0gdXJsU3RyaW5nLmdldCgpICsgc3RybGVuKCJmaWxlOi8vL3RtcC8iKTsKLSAgICBHT3duUHRy
PGdjaGFyPiB0ZXN0UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdUUjo6dG9wTGV2ZWxQYXRoKCkuZGF0
YSgpLCBsYXlvdXRUZXN0c1N1ZmZpeCwgTlVMTCkpOwotICAgIEdPd25QdHI8Z2NoYXI+IHRlc3RV
UkkoZ19maWxlbmFtZV90b191cmkodGVzdFBhdGguZ2V0KCksIDAsIDApKTsKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiB0ZXN0UGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdUUjo6dG9wTGV2ZWxQYXRoKCku
ZGF0YSgpLCBsYXlvdXRUZXN0c1N1ZmZpeCwgbnVsbHB0cikpOworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHRlc3RVUkkoZ19maWxlbmFtZV90b191cmkodGVzdFBhdGguZ2V0KCksIDAsIDApKTsKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGVzdFVSSS5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVy
R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1Rlc3RDb250cm9sbGVyR3RrLmNw
cAppbmRleCBlMjQwNTQ1Li5kOGZiOWY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8d3RmL2dv
YmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdUUiB7CkBAIC04OCwx
MyArODgsMTMgQEAgc3RhdGljIGNoYXIqIGdldEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJp
bmcoY29uc3QgY2hhciogdmFyaWFibGVOYW1lKQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHV0ZjhCdW5k
bGVQYXRoKGdldEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoIlRFU1RfUlVOTkVSX0lO
SkVDVEVEX0JVTkRMRV9GSUxFTkFNRSIpKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHV0ZjhCdW5k
bGVQYXRoKGdldEVudmlyb25tZW50VmFyaWFibGVBc1VURjhTdHJpbmcoIlRFU1RfUlVOTkVSX0lO
SkVDVEVEX0JVTkRMRV9GSUxFTkFNRSIpKTsKICAgICBtX2luamVjdGVkQnVuZGxlUGF0aC5hZG9w
dChXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1dGY4QnVuZGxlUGF0aC5nZXQoKSkpOwog
fQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplVGVzdFBsdWdpbkRpcmVjdG9yeSgp
CiB7Ci0gICAgR093blB0cjxjaGFyPiB0ZXN0UGx1Z2luUGF0aChnZXRFbnZpcm9ubWVudFZhcmlh
YmxlQXNVVEY4U3RyaW5nKCJURVNUX1JVTk5FUl9URVNUX1BMVUdJTl9QQVRIIikpOworICAgIEdV
bmlxdWVQdHI8Y2hhcj4gdGVzdFBsdWdpblBhdGgoZ2V0RW52aXJvbm1lbnRWYXJpYWJsZUFzVVRG
OFN0cmluZygiVEVTVF9SVU5ORVJfVEVTVF9QTFVHSU5fUEFUSCIpKTsKICAgICBtX3Rlc3RQbHVn
aW5EaXJlY3RvcnkuYWRvcHQoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGVzdFBsdWdp
blBhdGguZ2V0KCkpKTsKIH0KIAo=
</data>
<flag name="review"
          id="245853"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>