<?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>105890</bug_id>
          
          <creation_ts>2012-12-31 20:22:14 -0800</creation_ts>
          <short_desc>Convert more classes to be WebContextSupplements</short_desc>
          <delta_ts>2013-01-02 01:19:04 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105909</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>798402</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-31 20:22:14 -0800</bug_when>
    <thetext>Convert more classes to be WebContextSupplements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798403</commentid>
    <comment_count>1</comment_count>
      <attachid>180982</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-31 20:37:54 -0800</bug_when>
    <thetext>Created attachment 180982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798404</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-31 20:41:40 -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>798405</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-31 20:42:04 -0800</bug_when>
    <thetext>Attachment 180982 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/WKContext.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 26 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>798406</commentid>
    <comment_count>4</comment_count>
      <attachid>180982</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-31 20:46:56 -0800</bug_when>
    <thetext>Comment on attachment 180982
Patch

Attachment 180982 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15603645</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798407</commentid>
    <comment_count>5</comment_count>
      <attachid>180982</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-31 20:56:20 -0800</bug_when>
    <thetext>Comment on attachment 180982
Patch

Attachment 180982 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15592988</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798408</commentid>
    <comment_count>6</comment_count>
      <attachid>180983</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-31 21:09:27 -0800</bug_when>
    <thetext>Created attachment 180983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798409</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-31 21:12:15 -0800</bug_when>
    <thetext>Attachment 180983 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/WKContext.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 27 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>798528</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-01 20:20:36 -0800</bug_when>
    <thetext>Committed r138607: &lt;http://trac.webkit.org/changeset/138607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798554</commentid>
    <comment_count>9</comment_count>
      <attachid>180983</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-02 01:00:44 -0800</bug_when>
    <thetext>Comment on attachment 180983
Patch

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

&gt; Source/WebKit2/UIProcess/WebContext.cpp:178
&gt; +    addSupplement&lt;WebNotificationManagerProxy&gt;();

Missing addSupplement&lt;WebIconDatabase&gt;(); ?

It is a lot causing crashes on EFL port:
20:33:03.001 19851 worker/1 http/tests/css/border-image-loading.html crashed, (stderr lines):
20:33:03.002 19851   1   0x7f88965a05e8
20:33:03.002 19851   2   0x7f8893ccb4a0
20:33:03.002 19851   3   0x7f8895d7d690 WebKit::WebIconDatabase::isOpen()
20:33:03.002 19851   4   0x7f8895d7d6d3 WebKit::WebIconDatabase::setDatabasePath(WTF::String const&amp;)
20:33:03.002 19851   5   0x410c0e WTR::TestController::initialize(int, char const**)
20:33:03.002 19851   6   0x411a86 WTR::TestController::TestController(int, char const**)
20:33:03.002 19851   7   0x40bf44 main
20:33:03.002 19851   8   0x7f8893cb676d __libc_start_main
20:33:03.002 19851   9   0x40bf91</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798556</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-02 01:04:52 -0800</bug_when>
    <thetext>I filed Bug 105909 to track the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798562</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-01-02 01:17:09 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Committed r138607: &lt;http://trac.webkit.org/changeset/138607&gt;

It broke all layout test crash on WK2:
- Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Amazon%20EC2%29/builds/12187
- EFL: http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/2232
- GTK: http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20WK2%20%28Tests%29/builds/3797
- Apple Mac WK2 bots are still out of order:
  - http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK2%20%28Tests%29?numbuilds=200 - everything fails long time ago
  - http://build.webkit.org/builders/Apple%20Lion%20Release%20WK2%20%28Tests%29 - offline long time ago
  - http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20%28Tests%29 - went offline after this patch
  - http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29 - offline long time ago</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798564</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-02 01:19:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; Committed r138607: &lt;http://trac.webkit.org/changeset/138607&gt;
&gt; 
&gt; It broke all layout test crash on WK2:
&gt; - Qt: http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Amazon%20EC2%29/builds/12187
&gt; - EFL: http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/2232
&gt; - GTK: http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20WK2%20%28Tests%29/builds/3797
&gt; - Apple Mac WK2 bots are still out of order:
&gt;   - http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK2%20%28Tests%29?numbuilds=200 - everything fails long time ago
&gt;   - http://build.webkit.org/builders/Apple%20Lion%20Release%20WK2%20%28Tests%29 - offline long time ago
&gt;   - http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK2%20%28Tests%29 - went offline after this patch
&gt;   - http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29 - offline long time ago

Yes, I filed Bug 105909. I may have a fix but I&apos;m still building it to test it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180982</attachid>
            <date>2012-12-31 20:37:54 -0800</date>
            <delta_ts>2012-12-31 21:09:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105890-20121231233504.patch</filename>
            <type>text/plain</type>
            <size>80113</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODYwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAxMi0xMi0zMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnZlcnQgbW9yZSBjbGFzc2VzIHRv
IGJlIFdlYkNvbnRleHRTdXBwbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0RGF0
YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdLQ29udGV4dEdldEdlb2xvY2F0aW9uTWFuYWdlcik6
CisgICAgICAgIChXS0NvbnRleHRHZXRLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAg
KFdLQ29udGV4dEdldE1lZGlhQ2FjaGVNYW5hZ2VyKToKKyAgICAgICAgKFdLQ29udGV4dEdldE5v
dGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1h
bmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAg
ICAgICAgKEV3a0NvbnRleHQ6OmNvb2tpZU1hbmFnZXIpOgorICAgICAgICAoRXdrQ29udGV4dDo6
Y2xlYXJSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0
YWJhc2VfbWFuYWdlcl9wcml2YXRlLmg6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlcl9w
cml2YXRlLmg6CisgICAgICAgIChFd2tTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKGNyZWF0
ZURlZmF1bHRXZWJDb250ZXh0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9j
YWNoZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2VyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXpl
UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
Q2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6On5XZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVt
b3ZlTmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzaG91bGRU
ZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aWNv
bkRhdGFiYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRTdXBwbGVtZW50
Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFN1cHBsZW1l
bnQ6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRTdXBwbGVtZW50OjpzaG91bGRUZXJtaW5hdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0U3VwcGxlbWVudDo6cmVmKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dFN1cHBsZW1lbnQ6OmRlcmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OldlYkNvb2tpZU1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91bGRUZXJt
aW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJDb29raWVN
YW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpzdXBwbGVt
ZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlc0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9y
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdl
clByb3h5OjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6c2V0UXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50
TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vz
c0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFu
Z2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OldlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3Rv
cmFnZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJD
b250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eTo6Z2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6
CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHk6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkZXJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQ
cm94eTo6Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5OjpjbGVhckNhY2hlRm9ySG9zdG5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpjbGVhckNhY2hlRm9yQWxsSG9zdG5h
bWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAoV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd05v
dGlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Y29udGV4
dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eTo6Z2V0Q2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eTo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAo
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorCiAyMDEyLTEyLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIHN1cHBsZW1lbnRhYmlsaXR5IGZvciBXZWJDb250ZXh0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMzg1OTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwyNyAr
MTYwLDI2IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2MKICNpZiBF
TkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgbV9iYXR0ZXJ5TWFuYWdlclByb3h5ID0gV2ViQmF0
dGVyeU1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0gICAgbV9jb29raWVNYW5h
Z2VyUHJveHkgPSBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKLSNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VNYW5hZ2VyUHJveHkgPSBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwotI2VuZGlmCi0gICAgbV9nZW9sb2NhdGlvbk1h
bmFnZXJQcm94eSA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7Ci0g
ICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKLSAgICBt
X2tleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSA9IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y3JlYXRlKHRoaXMpOwotICAgIG1fbWVkaWFDYWNoZU1hbmFnZXJQcm94eSA9IFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBFTkFCTEUoTkVUV09SS19J
TkZPKQogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHkgPSBXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkgPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdlciA9
IFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSA9
IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBVU0UoU09V
UCkKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5ID0gV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgogCiAgICAgYWRkU3VwcGxlbWVudDxXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5PigpOworICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlclByb3h5PigpOworICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk+KCk7CisgICAgYWRkU3VwcGxlbWVudDxXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJv
eHk+KCk7CisgICAgYWRkU3VwcGxlbWVudDxXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5PigpOwor
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpOworICAgIGFk
ZFN1cHBsZW1lbnQ8V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4oKTsKKyNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk+
KCk7CisjZW5kaWYKIAogICAgIGNvbnRleHRzKCkuYXBwZW5kKHRoaXMpOwogCkBAIC0yMjMsNDIg
KzIyMiwxOSBAQCBXZWJDb250ZXh0Ojp+V2ViQ29udGV4dCgpCiAgICAgbV9iYXR0ZXJ5TWFuYWdl
clByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJv
eHktPmludmFsaWRhdGUoKTsKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eS0+Y2xlYXJDb250ZXh0
KCk7Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VNYW5hZ2VyUHJv
eHktPmludmFsaWRhdGUoKTsKLSAgICBtX2RhdGFiYXNlTWFuYWdlclByb3h5LT5jbGVhckNvbnRl
eHQoKTsKLSNlbmRpZgotICAgIAotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHktPmludmFs
aWRhdGUoKTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsK
LQogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2Ut
PmNsZWFyQ29udGV4dCgpOwogICAgIAotICAgIG1fa2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHktPmNsZWFy
Q29udGV4dCgpOwotCi0gICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7
Ci0gICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKLQogI2lmIEVO
QUJMRShORVRXT1JLX0lORk8pCiAgICAgbV9uZXR3b3JrSW5mb01hbmFnZXJQcm94eS0+aW52YWxp
ZGF0ZSgpOwogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHktPmNsZWFyQ29udGV4dCgpOwog
I2VuZGlmCi0gICAgCi0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPmludmFsaWRhdGUo
KTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS0+Y2xlYXJDb250ZXh0KCk7CiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdl
ci0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGx1Z2luU2l0ZURhdGFNYW5hZ2VyLT5jbGVhckNvbnRl
eHQoKTsKICNlbmRpZgogCi0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlk
YXRlKCk7Ci0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsK
LQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRh
dGUoKTsKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKQEAg
LTQxMCwxMCArMzg2LDEzIEBAIHZvaWQgV2ViQ29udGV4dDo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQ
cm8KIHsKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CiAgICAgQVNTRVJUKG5ldHdvcmtQ
cm9jZXNzUHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7Ci0gICAgCi0gICAgbV9uZXR3
b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eS0+aW52YWxp
ZGF0ZSgpOworICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnByb2Nlc3NEaWRDbG9zZShuZXR3b3JrUHJv
Y2Vzc1Byb3h5KTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCiB2b2lk
IFdlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiByZXBseSkKQEAgLTUzMCw3ICs1MDksOCBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNv
bnRleHQ6OmNyZWF0ZU5ld1dlCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbCA9IFdlYlVSTFJlcXVlc3Q6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0g
ICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CisgICAgLy8g
RklYTUU6IFRoZXJlIHNob3VsZCBiZSBhIGdlbmVyaWMgd2F5IGZvciBzdXBwbGVtZW50cyB0byBh
ZGQgdG8gdGhlIGludGlhbGl6YXRpb24gcGFyYW1ldGVycy4KKyAgICBzdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJt
aXNzaW9ucyhwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTYwNCwyMiArNTg0LDEwIEBAIGJvb2wgV2Vi
Q29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdlYlByb2MKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fY29va2llTWFuYWdlclByb3h5LT5zaG91bGRUZXJtaW5h
dGUocHJvY2VzcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIGlmICghbV9kYXRhYmFzZU1hbmFnZXJQcm94eS0+c2hvdWxkVGVybWluYXRlKHBy
b2Nlc3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICBpZiAoIW1fa2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5LT5zaG91bGRUZXJtaW5hdGUocHJvY2VzcykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fbWVkaWFDYWNoZU1hbmFnZXJQcm94eS0+c2hvdWxk
VGVybWluYXRlKHByb2Nlc3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKCFtX3BsdWdpblNpdGVEYXRhTWFuYWdlci0+c2hv
dWxkVGVybWluYXRlKHByb2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAg
ICBpZiAoIW1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS0+c2hvdWxkVGVybWluYXRlKHByb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTY2
OSwxOCArNjM3LDkgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcgog
I2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBtX2JhdHRlcnlNYW5hZ2VyUHJveHktPmlu
dmFsaWRhdGUoKTsKICNlbmRpZgotICAgIG1fY29va2llTWFuYWdlclByb3h5LT5pbnZhbGlkYXRl
KCk7Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBtX2RhdGFiYXNlTWFuYWdlclByb3h5
LT5pbnZhbGlkYXRlKCk7Ci0jZW5kaWYKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlclByb3h5LT5p
bnZhbGlkYXRlKCk7Ci0gICAgbV9rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHktPmludmFsaWRh
dGUoKTsKLSAgICBtX21lZGlhQ2FjaGVNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHktPmludmFs
aWRhdGUoKTsKICNlbmRpZgotICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlclByb3h5LT5pbnZhbGlk
YXRlKCk7Ci0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7CiAj
aWYgVVNFKFNPVVApCiAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+aW52YWxpZGF0ZSgp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlz
aW9uIDEzODU5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDE2ICs1OSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBEb3dubG9hZFByb3h5OwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7Ci1jbGFzcyBXZWJD
b29raWVNYW5hZ2VyUHJveHk7Ci1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTsKLWNsYXNz
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwotY2xh
c3MgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OwotY2xhc3MgV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eTsKLWNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdl
YlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKICAgICAKQEAgLTIxNiwyMiArMjA5LDEzIEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSogYmF0
dGVyeU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fYmF0dGVyeU1hbmFnZXJQcm94eS5n
ZXQoKTsgfQogI2VuZGlmCi0gICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2Vy
UHJveHkoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZU1hbmFnZXJQcm94eS5nZXQoKTsgfQotI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFi
YXNlTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU1hbmFnZXJQcm94eS5n
ZXQoKTsgfQotI2VuZGlmCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqIGdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5nZXQoKTsgfQogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUHJveHkqIGtleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmdldCgpOyB9Ci0gICAgV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eSogbWVkaWFDYWNoZU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVk
aWFDYWNoZU1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAg
ICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrSW5mb01hbmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlm
Ci0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBub3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5nZXQoKTsgfQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFdlYlBsdWdpblNpdGVEYXRhTWFu
YWdlciogcGx1Z2luU2l0ZURhdGFNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5TaXRl
RGF0YU1hbmFnZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHkqIHJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHkuZ2V0KCk7IH0KICNpZiBVU0UoU09VUCkKICAgICBXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmdldCgpOyB9CiAjZW5kaWYKQEAgLTQzNSwy
MiArNDE5LDEzIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIFJl
ZlB0cjxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PiBtX2JhdHRlcnlNYW5hZ2VyUHJveHk7CiAjZW5k
aWYKLSAgICBSZWZQdHI8V2ViQ29va2llTWFuYWdlclByb3h5PiBtX2Nvb2tpZU1hbmFnZXJQcm94
eTsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFJlZlB0cjxXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eT4gbV9kYXRhYmFzZU1hbmFnZXJQcm94eTsKLSNlbmRpZgotICAgIFJlZlB0cjxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gbV9nZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKICAgICBS
ZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKLSAgICBSZWZQdHI8V2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5PiBtX2tleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTsK
LSAgICBSZWZQdHI8V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eT4gbV9tZWRpYUNhY2hlTWFuYWdl
clByb3h5OwogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgUmVmUHRyPFdlYk5ldHdvcmtJ
bmZvTWFuYWdlclByb3h5PiBtX25ldHdvcmtJbmZvTWFuYWdlclByb3h5OwogI2VuZGlmCi0gICAg
UmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gbV9ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUmVmUHRyPFdlYlBs
dWdpblNpdGVEYXRhTWFuYWdlcj4gbV9wbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiAjZW5kaWYKLSAg
ICBSZWZQdHI8V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4gbV9yZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5OwogI2lmIFVTRShTT1VQKQogICAgIFJlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eT4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgJKHJldmlzaW9u
IDEzODU5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNz
IFdlYlByb2Nlc3NQcm94eTsKIApAQCAtNDIsMTYgKzQzLDI5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCByZWYoKSB7IHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCk7IH0KLSAg
ICB2b2lkIGRlcmVmKCkgeyBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgeworICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJt
aW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgV2ViQ29udGV4
dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHZvaWQgY2xlYXJD
b250ZXh0KCkgeyBtX2NvbnRleHQgPSAwOyB9CiAKKyAgICB2b2lkIHJlZigpIHsgcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMjUgKzM0LDUwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjb25zdCBBdG9taWNTdHJp
bmcmIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIldlYkNvb2tpZU1hbmFnZXJQcm94
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKwogUGFzc1JlZlB0cjxXZWJDb29raWVNYW5hZ2VyUHJveHk+IFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJDb29raWVNYW5hZ2VyUHJveHkoY29udGV4dCkpOwogfQogCiBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OldlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQot
ICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChj
b250ZXh0KQogI2lmIFVTRShTT1VQKQogICAgICwgbV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUoU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlKQogI2VuZGlmCiB7Ci0gICAgbV93
ZWJDb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxl
bWVudDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogV2ViQ29va2ll
TWFuYWdlclByb3h5Ojp+V2ViQ29va2llTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCisvLyBXZWJDb250ZXh0
U3VwcGxlbWVudAorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3ll
ZCgpCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworICAg
IGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3Mp
OworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSopCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFj
a3MpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFja3MpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewogICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X2FycmF5Q2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2ll
QWNjZXB0UG9saWN5Q2FsbGJhY2tzKTsKQEAgLTYwLDE1ICs4NSwyMiBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4g
bV93ZWJDb250ZXh0LT5wcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzCisgICAgcmV0dXJuIGNvbnRleHQoKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcwogICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNr
cy5pc0VtcHR5KCkgJiYgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHko
KSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50KGNv
bnN0IFdLQ29va2llTWFuYWdlckNsaWVudCogY2xpZW50KQordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHsKLSAgICBtX2NsaWVudC5pbml0aWFs
aXplKGNsaWVudCk7CisgICAgQVBJT2JqZWN0OjpyZWYoKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVj
dDo6ZGVyZWYoKTsKIH0KIAorLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBkaWRSZWNlaXZlV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOwpAQCAtODAsNyArMTEy
LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lcwogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fYXJyYXlDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKLSAgICBtX3dlYkNv
bnRleHQtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY2FsbGJhY2tJ
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjYWxsYmFja0lEKSk7CiB9CiAgICAgCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1l
TGlzdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTEwMiwyMiArMTM0LDIyIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmEKIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoaG9zdG5hbWUpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzKCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQWxsQ29va2llcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6RGVsZXRlQWxsQ29va2llcygpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiB7Ci0gICAgbV93ZWJDb250ZXh0LT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpKTsKKyAgICBjb250
ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkpOwog
fQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoKQogewotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
Ojpjb29raWVzRGlkQ2hhbmdlKCkKQEAgLTEzMSwxMCArMTYzLDEwIEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2kKICAgICBwZXJzaXN0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3kpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgbV93ZWJDb250ZXh0LT5z
ZXRJbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOworICAgIGNvbnRleHQoKS0+
c2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKICNlbmRpZgogCi0gICAg
bV93ZWJDb250ZXh0LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
cG9saWN5KSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBhc3NSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGlj
eUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKQEAgLTE0NCw3ICsxNzYsNyBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJh
Y2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgbV93ZWJDb250
ZXh0LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJ
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJy
YXkuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTIsMTYgKzUzLDE1IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBD
b29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsKIAotY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5
IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
Y2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFdl
YkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb29raWVNYW5hZ2Vy
OwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKKwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNv
bnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJDb29raWVNYW5hZ2VyUHJveHkoKTsKIAotICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX3dlYkNvbnRleHQg
PSAwOyB9Ci0KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2Vy
Q2xpZW50Kik7CiAgICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQYXNzUmVm
UHRyPEFycmF5Q2FsbGJhY2s+KTsKQEAgLTc5LDcgKzc5LDggQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qm
IHN0b3JhZ2VUeXBlKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRUZXJtaW5hdGUo
V2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpyZWY7CisgICAg
dXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2Vy
UHJveHkoV2ViQ29udGV4dCopOwpAQCAtOTAsNyArOTEsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZSgpOwotICAgIAorCisgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vz
c1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3
b3JrUHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1p
bmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVz
c2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
JikgT1ZFUlJJREU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29va2llTWFuYWdlclByb3h5TWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOwpAQCAtOTksNyArMTA4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBl
cnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogI2Vu
ZGlmCiAKLSAgICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiA+IG1faHR0
cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
Mzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbmFtZTsK
K30KKwogU3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpvcmlnaW5LZXkoKQogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksIChBU0NJSUxpdGVyYWwoIldlYkRhdGFi
YXNlTWFuYWdlck9yaWdpbktleSIpKSk7CkBAIC05MywxNiArOTksMjggQEAgUGFzc1JlZlB0cjxX
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eT4gV2ViRAogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eTo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICA6
IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQod2Vi
Q29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7
CisgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCB0aGlzKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6On5XZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eSgpCiB7CiB9CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmludmFsaWRh
dGUoKQordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25z
dCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50LmluaXRp
YWxpemUoY2xpZW50KTsKK30KKworLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKwordm9pZCBXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0
ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKIHsKICAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcyk7CiB9CkBAIC0xMTIsOSArMTMwLDIx
IEBAIGJvb2wgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNob3VsZFRlcm0KICAgICByZXR1cm4g
bV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCk7CiB9CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNs
aWVudCkKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKIHsKLSAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CisgICAgQVBJT2JqZWN0
OjpyZWYoKTsKK30KKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit7
CisgICAgZGlkUmVjZWl2ZVdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
OjpnZXREYXRhYmFzZXNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+IHBycENhbGxi
YWNrKQpAQCAtMTI0LDcgKzE1NCw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Omdl
dERhdGFiYXMKICAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5y
ZWxlYXNlKCkpOwogCiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3By
b2JsZW0vMTIyMzk3NjU+IERhdGFiYXNlcyBzaG91bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIg
cHJvY2Vzcy4KLSAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkdldERhdGFiYXNl
c0J5T3JpZ2luKGNhbGxiYWNrSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nl
c1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6
OkdldERhdGFiYXNlc0J5T3JpZ2luKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4oY29uc3QgVmVjdG9yPE9yaWdp
bkFuZERhdGFiYXNlcz4mIG9yaWdpbkFuZERhdGFiYXNlc1ZlY3RvciwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKQEAgLTE3Nyw3ICsyMDcsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpn
ZXREYXRhYmFzCiAgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2su
cmVsZWFzZSgpKTsKIAogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9w
cm9ibGVtLzEyMjM5NzY1PiBEYXRhYmFzZXMgc2hvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgd2Vi
IHByb2Nlc3MuCi0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGlu
Z1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpHZXREYXRhYmFz
ZU9yaWdpbnMoY2FsbGJhY2tJRCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2Vz
UmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6
R2V0RGF0YWJhc2VPcmlnaW5zKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cmlnaW5JZGVudGlmaWVycywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTIwMCwyNSArMjMwLDI1
IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGEKIHZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vNzg1NTY5
Nj4gRGF0YWJhc2VzIHNob3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgotICAg
IG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2VXaXRoTmFtZUZv
ck9yaWdpbihkYXRhYmFzZUlkZW50aWZpZXIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
KTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlV2l0aE5h
bWVGb3JPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpKSk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURhdGFiYXNl
c0Zvck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIC8vIEZJWE1FIChN
dWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzc4NTU2OTY+IERhdGFiYXNlcyBzaG91
bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBtX3dlYkNvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJE
YXRhYmFzZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpKSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5j
aGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpEZWxldGVE
YXRhYmFzZXNGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogfQogCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVBbGxEYXRhYmFzZXMoKQogewogICAg
IC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzc4NTU2OTY+IERh
dGFiYXNlcyBzaG91bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBtX3dl
YkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZUFsbERhdGFiYXNlcygpKTsKKyAgICBj
b250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZUFsbERhdGFiYXNlcygpKTsKIH0KIAog
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6c2V0UXVvdGFGb3JPcmlnaW4oV2ViU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiB7CiAgICAgLy8gRklYTUUgKE11bHRp
LVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vNzg1NTY5Nj4gRGF0YWJhc2VzIHNob3VsZG4n
dCBiZSBzdG9yZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRv
QWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkRhdGFi
YXNlTWFuYWdlcjo6U2V0UXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KSwgcXVvdGEpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OlNldFF1b3RhRm9y
T3JpZ2luKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHF1b3RhKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZE1vZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpCkBAIC0yMzMsMTEgKzI2Myw2IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6OmRpZE1vZGlmeUQKICAgICBtX2NsaWVudC5kaWRNb2RpZnlEYXRhYmFzZSh0aGlz
LCBvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGRpZFJlY2VpdmVXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgJ
KHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiT3JpZ2luQW5kRGF0YWJhc2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ1LDE2
ICs0NiwxNSBAQCBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8V0tBcnJheVJlZj4gQXJyYXlDYWxsYmFjazsKIAotY2xhc3MgV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3Qs
IHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlRGF0
YWJhc2VNYW5hZ2VyOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVu
dE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlTWFuYWdlclBy
b3h5KCk7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lkIGNsZWFyQ29udGV4dCgp
IHsgbV93ZWJDb250ZXh0ID0gMDsgfQotCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CiAKICAgICB2b2lkIGdldERhdGFiYXNlc0J5T3Jp
Z2luKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwpAQCAtNzMsMTMgKzczLDIxIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkoKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0N1cnJlbnRVc2FnZUtleSgpOwogCi0g
ICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNp
bmcgQVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eShXZWJDb250ZXh0Kik7CiAK
ICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAorICAg
IC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nl
c3NQcm94eSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2Vi
UHJvY2Vzc1Byb3h5KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNv
bnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJS
SURFOwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwpAQCAtOTAsOSArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTW9kaWZ5
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRNb2Rp
ZnlEYXRhYmFzZShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VJZGVudGlmaWVyKTsKIAotICAgIFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJh
Y2tzOwotCiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQgbV9jbGllbnQ7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDUxICszMiw3NiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3QgQXRvbWlj
U3RyaW5nJiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBuYW1lOworfQorCiBQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShjb250ZXh0KSk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9pc1VwZGF0aW5n
KGZhbHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3VwcGxl
bWVudChjb250ZXh0KQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQogewotICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVu
dDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6fldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkKIHsKIH0K
IAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tHZW9s
b2NhdGlvblByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUo
cHJvdmlkZXIpOworfQorCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBzdG9wVXBkYXRp
bmcoKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVBy
b3ZpZGVyKGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikK
IHsKLSAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOworICAgIHN0b3BVcGRhdGlu
ZygpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENo
YW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogewotICAg
IGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1cm47CisgICAgQVBJT2JqZWN0OjpyZWYoKTsK
K30KIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQoreworICAgIEFQSU9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKKy8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBkaWRSZWNlaXZlV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9z
aXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7Ci0gICAgaWYgKCFtX2Nv
bnRleHQpCisgICAgaWYgKCFjb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOworICAgIGNvbnRleHQo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQogewotICAgIGRpZFJlY2VpdmVXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2UoY29u
bmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JN
ZXNzYWdlKSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBk
YXRpbmcoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzYsMjYgKzM3LDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViQ29udGV4dDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiAKLWNsYXNzIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJT2JqZWN0LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29y
ZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBB
UElUeXBlID0gVHlwZUdlb2xvY2F0aW9uTWFuYWdlcjsKIAorICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKICAgICB2aXJ0dWFs
IH5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7
Ci0gICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KLQogICAgIHZvaWQg
aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlciopOwogCiAgICAg
dm9pZCBwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsK
ICAgICB2b2lkIHByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoKSk7CiAKKyAgICB1c2luZyBBUElPYmplY3Q6OnJlZjsK
KyAgICB1c2luZyBBUElPYmplY3Q6OmRlcmVmOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCisgICAgLy8gV2ViQ29udGV4dFN1
cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsK
KwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwogCkBAIC02Nyw3ICs3Niw2IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1faXNVcGRhdGluZzsKIAotICAgIFdlYkNvbnRleHQqIG1fY29u
dGV4dDsKICAgICBXZWJHZW9sb2NhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDIyICszNCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnRO
YW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKIFBhc3NSZWZQdHI8V2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5PiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KGNvbnRleHQpKTsKIH0KIAogV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoV2ViQ29u
dGV4dCogY29udGV4dCkKLSAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29u
dGV4dFN1cHBsZW1lbnQoY29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHRoaXMpOworICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpjb250ZXh0
KCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUHJveHk6On5XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoKQogewog
fQogCi12b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisv
LyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
YXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94
eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCiB7CiAgICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOwogfQpAQCAtNTksNiArNzIsMTggQEAgYm9vbCBX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OnNobwogICAgIHJldHVybiBtX2FycmF5Q2Fs
bGJhY2tzLmlzRW1wdHkoKTsKIH0KIAordm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJv
eHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOwor
fQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKwogdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIGRpZFJlY2VpdmVXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CkBAIC03MSw3ICs5Niw3IEBAIHZvaWQg
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpnZXQKICAgICBtX2FycmF5Q2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgLy8gRklYTUUgKE11
bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFNob3VsZCBrZXktdmFs
dWUgc3RvcmFnZSBiZSBoYW5kbGVkIGluIHRoZSB3ZWIgcHJvY2Vzcz8KLSAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNh
bGxiYWNrSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpHZXRL
ZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNhbGxiYWNrSUQpKTsKIH0KICAgICAKIHZvaWQgV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNv
bnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKQEAgLTg4LDEzICsxMTMsMTMgQEAgdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUHJveHk6OmRlbAogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0ID0gb3JpZ2luLT5wb3J0
KCk7CiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8x
MjIzOTc2NT4gU2hvdWxkIGtleS12YWx1ZSBzdG9yYWdlIGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBw
cm9jZXNzPwotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdU
aGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OkRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW5EYXRhKSk7CisgICAgY29udGV4dCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdpbihzZWN1cml0eU9y
aWdpbkRhdGEpKTsKIH0KIAogdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OmRl
bGV0ZUFsbEVudHJpZXMoKQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJk
YXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTaG91bGQga2V5LXZhbHVlIHN0b3JhZ2UgYmUgaGFuZGxl
ZCBpbiB0aGUgd2ViIHByb2Nlc3M/Ci0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNz
ZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFBy
b2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyOjpEZWxldGVBbGxFbnRyaWVzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC00MywyMSArNDQsMjEgQEAgY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwg
cHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjsKIAorICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CisKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250
ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KCk7CiAK
LSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lkIGNsZWFyQ29udGV4dCgpIHsgbV93ZWJD
b250ZXh0ID0gMDsgfQotICAgIAogICAgIHZvaWQgZ2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhQ
YXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmln
aW4oV2ViU2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAot
ICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0OworICAgIHVz
aW5nIEFQSU9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQSU9iamVjdDo6ZGVyZWY7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KFdlYkNvbnRl
eHQqKTsKQEAgLTY2LDExICs2NywxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHZXRLZXlW
YWx1ZVN0b3JhZ2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAKKyAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisKICAg
ICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKLSAgICBXZWJDb250
ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAJKHJldmlz
aW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjIgKzMzLDM1IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjb25zdCBBdG9taWNTdHJpbmcmIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbmFtZSwgKCJXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBuYW1lOworfQorCiBQYXNzUmVm
UHRyPFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6
OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eShjb250ZXh0KSk7CiB9CiAKIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHk6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4
dCkKLSAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1l
bnQoY29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0
aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgdGhpcyk7CiB9CiAKIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6On5XZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5OjppbnZhbGlkYXRlKCkKKy8vIFdlYkNvbnRleHRTdXBwbGVtZW50CisKK3ZvaWQgV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0
ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewogICAgIGlu
dmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzKTsKIH0KQEAgLTU4LDYgKzcxLDE4
IEBAIGJvb2wgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6c2hvdWxkVGUKICAgICByZXR1cm4g
bV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCk7CiB9CiAKK3ZvaWQgV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6cmVm
KCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKwogdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBkaWRSZWNlaXZlV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBkZWNvZGVyKTsKQEAgLTcwLDcgKzk1LDcgQEAgdm9pZCBXZWJNZWRpYUNh
Y2hlTWFuYWdlclByb3h5OjpnZXRIb3N0bgogICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJv
Y2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gV2hlbiB3ZSdyZSBzZW5kaW5nIHRoaXMg
dG8gbXVsdGlwbGUgcHJvY2Vzc2VzLCB3ZSBuZWVkIHRvIGFnZ3JlZ2F0ZSB0aGUgY2FsbGJhY2sg
ZGF0YSB3aGVuIGl0IGNvbWVzIGJhY2suCi0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9j
ZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViTWVkaWFDYWNoZU1h
bmFnZXI6OkdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKGNhbGxiYWNrSUQpKTsKKyAgICBjb250
ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoY2Fs
bGJhY2tJRCkpOwogfQogICAgIAogdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRH
ZXRIb3N0bmFtZXNXaXRoTWVkaWFDYWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVM
aXN0LCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtOTIsMTIgKzExNywxMiBAQCB2b2lkIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldEhvCiAKIHZvaWQgV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eTo6Y2xlYXJDYWNoZUZvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
Ci0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViTWVkaWFDYWNoZU1hbmFnZXI6OkNsZWFyQ2FjaGVGb3JIb3N0
bmFtZShob3N0bmFtZSkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVu
Y2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyOjpDbGVh
ckNhY2hlRm9ySG9zdG5hbWUoaG9zdG5hbWUpKTsKIH0KIAogdm9pZCBXZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5OjpjbGVhckNhY2hlRm9yQWxsSG9zdG5hbWVzKCkKIHsKLSAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvckFsbEhvc3RuYW1lcygpKTsKKyAg
ICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvckFsbEhvc3RuYW1l
cygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgJKHJldmlzaW9u
IDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsMjEgKzQyLDIxIEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94
eTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlDYWxsYmFjazsK
IAotY2xhc3MgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHBy
aXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQs
IHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgVHlwZSBBUElUeXBlID0gVHlwZU1lZGlhQ2FjaGVNYW5hZ2VyOwogCisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CiAg
ICAgdmlydHVhbCB+V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSgpOwotCi0gICAgdm9pZCBpbnZh
bGlkYXRlKCk7Ci0gICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fd2ViQ29udGV4dCA9IDA7IH0K
ICAgICAKICAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKFBhc3NSZWZQdHI8QXJy
YXlDYWxsYmFjaz4pOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckFsbEhvc3RuYW1lcygpOwogCi0gICAgYm9vbCBz
aG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNpbmcgQVBJT2Jq
ZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKQEAgLTY0LDEx
ICs2NSwxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoTWVkaWFD
YWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vz
c1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQ
cm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJ
REU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAotICAgIFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJhY2tzOwogfTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zODk1LDcgKzM4OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdE5vdGlmaWNhdGlvblBlCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBT
dHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKQogewotICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIs
IG9yaWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOworICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgp
LT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCB0
aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgbm90aWZp
Y2F0aW9uSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6OmhlYWRlckhlaWdodChXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDEzODU5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDM1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJQcm94eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKwogUGFzc1JlZlB0cjxXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5PiBX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogd2ViQ29udGV4
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHkod2ViQ29udGV4dCkpOwogfQogCiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCi0gICAgOiBt
X3dlYkNvbnRleHQod2ViQ29udGV4dCkKKyAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHdlYkNv
bnRleHQpCiB7Ci0gICAgbV93ZWJDb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhp
cyk7CisgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Ojp+V2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSgpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2
b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQoKQorewor
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5KikKIHsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcyk7CiB9
CkBAIC02Myw2ICs3NiwyMyBAQCBib29sIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnNo
b3VsCiAgICAgcmV0dXJuIG1fYXJyYXlDYWxsYmFja3MuaXNFbXB0eSgpOwogfQogCit2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sK
KyAgICBBUElPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6ZGVy
ZWYoKTsKK30KKworLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisKK3ZvaWQgV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Z2V0Q2FjaGVPcmlnaW5zKFBhc3NS
ZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CkBAIC03MCw3ICsxMDAsNyBAQCB2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmdldENhCiAgICAgbV9hcnJheUNhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKIAogICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBXaGVuIG11bHRpLXByb2Nl
c3MgaXMgZW5hYmxlZCwgd2UgbmVlZCB0byBhZ2dyZWdhdGUgdGhlIGNhbGxiYWNrIGRhdGEgZnJv
bSBhbGwgcHJvY2Vzc2VzLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVs
YXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
OjpHZXRDYWNoZU9yaWdpbnMoY2FsbGJhY2tJRCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxs
UHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyOjpHZXRDYWNoZU9yaWdpbnMoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldENhY2hlT3JpZ2lucyhjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAg
LTg3LDE4ICsxMTcsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpjbGVh
cgogICAgIHNlY3VyaXR5T3JpZ2luLnBvcnQgPSBvcmlnaW4tPnBvcnQoKTsKIAogICAgIC8vIEZJ
WE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBUaGVyZSBp
cyBubyBuZWVkIHRvIHJlbGF1bmNoIGFsbCBwcm9jZXNzZXMuIE9uZSBwcm9jZXNzIHRvIHRha2Ug
Y2FyZSBvZiBwZXJzaXN0ZW50IGNhY2hlIGlzIGVub3VnaC4KLSAgICBtX3dlYkNvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvck9yaWdpbihzZWN1cml0eU9yaWdpbiwg
Y2FjaGVzVG9DbGVhcikpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVu
Y2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpD
bGVhckNhY2hlRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luLCBjYWNoZXNUb0NsZWFyKSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZUZvckFsbE9yaWdp
bnMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7CiAgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFRoZXJlIGlzIG5v
IG5lZWQgdG8gcmVsYXVuY2ggYWxsIHByb2Nlc3Nlcy4gT25lIHByb2Nlc3MgdG8gdGFrZSBjYXJl
IG9mIHBlcnNpc3RlbnQgY2FjaGUgaXMgZW5vdWdoLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRv
QWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyOjpDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhjYWNoZXNUb0NsZWFyKSk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1l
c3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgZGlkUmVj
ZWl2ZVdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgZGVjb2Rlcik7CisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5j
aGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OkNs
ZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKGNhY2hlc1RvQ2xlYXIpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNDMsMjcgKzQ0
LDM0IEBAIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxXS0FycmF5UmVmPiBBcnJheUNhbGxiYWNrOwogCi1jbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElP
YmplY3QsIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBU
eXBlQ2FjaGVNYW5hZ2VyOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxl
bWVudE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXJQcm94eSgpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9pZCBj
bGVhckNvbnRleHQoKSB7IG1fd2ViQ29udGV4dCA9IDA7IH0KLQogICAgIHZvaWQgZ2V0Q2FjaGVP
cmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwogICAgIHZvaWQgY2xlYXJDYWNoZUZv
ck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiosIFJlc291cmNlQ2FjaGVzVG9DbGVhcik7CiAgICAg
dm9pZCBjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpOwogCi0g
ICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNp
bmcgQVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQq
KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
CisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0
ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVm
V2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
T1ZFUlJJREU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTcxLDcgKzc5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkR2V0Q2FjaGVPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5JZGVudGlmaWVycywgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAKLSAgICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAxMzg1OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIldLQ29udGV4
dFByaXZhdGUuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0z
Niw2ICszNSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisvLyBTdXBwbGVtZW50cworI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUg
IldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCisjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKyNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGV4dGVybiAiQyIgewpAQCAtMTg0LDcg
KzE5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGQKIAogV0tD
b29raWVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+Y29va2ll
TWFuYWdlclByb3h5KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcihXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKQEAgLTIwNCw3ICsyMTUsNyBAQCBXS0JhdHRlcnlNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldEJhdHRlcnlNCiBXS0RhdGFiYXNlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRE
YXRhYmFzZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5kYXRhYmFz
ZU1hbmFnZXJQcm94eSgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5z
dXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlclByb3h5PigpKTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTIxMiw3ICsyMjMsNyBAQCBXS0RhdGFiYXNlTWFuYWdlclJlZiBXS0Nv
bnRleHRHZXREYXRhYmFzCiAKIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldEdl
b2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4g
dG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5nZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKTsKKyAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tDb250
ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQpAQCAtMjMx
LDE3ICsyNDIsMTcgQEAgV0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYQog
CiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdl
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9J
bXBsKGNvbnRleHRSZWYpLT5rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoKSk7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUHJveHk+KCkpOwogfQogCiBXS01lZGlhQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4
dEdldE1lZGlhQ2FjaGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewotICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPm1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdL
Q29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+bm90aWZpY2F0aW9uTWFuYWdl
clByb3h5KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tQbHVnaW5TaXRlRGF0
YU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmKQpAQCAtMjU1LDcgKzI2Niw3IEBAIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldFAKIAogV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICBy
ZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4oKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U3RhcnRN
ZW1vcnlTYW1wbGVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RvdWJsZVJlZiBpbnRlcnZh
bCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCkBAIC0x
MzUsNyArMTM2LDcgQEAgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpkZWZhdQog
RXdrQ29va2llTWFuYWdlciogRXdrQ29udGV4dDo6Y29va2llTWFuYWdlcigpCiB7CiAgICAgaWYg
KCFtX2Nvb2tpZU1hbmFnZXIpCi0gICAgICAgIG1fY29va2llTWFuYWdlciA9IEV3a0Nvb2tpZU1h
bmFnZXI6OmNyZWF0ZShtX2NvbnRleHQtPmNvb2tpZU1hbmFnZXJQcm94eSgpKTsKKyAgICAgICAg
bV9jb29raWVNYW5hZ2VyID0gRXdrQ29va2llTWFuYWdlcjo6Y3JlYXRlKG1fY29udGV4dC0+c3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkpOwogCiAgICAgcmV0dXJuIG1fY29va2ll
TWFuYWdlci5nZXQoKTsKIH0KQEAgLTIxMSw3ICsyMTIsNyBAQCB2b2lkIEV3a0NvbnRleHQ6OnNl
dEFkZGl0aW9uYWxQbHVnaW5QYXRoCiAKIHZvaWQgRXdrQ29udGV4dDo6Y2xlYXJSZXNvdXJjZUNh
Y2hlKCkKIHsKLSAgICBtX2NvbnRleHQtPnJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKS0+Y2xl
YXJDYWNoZUZvckFsbE9yaWdpbnMoQWxsUmVzb3VyY2VDYWNoZXMpOworICAgIG1fY29udGV4dC0+
c3VwcGxlbWVudDxXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5PigpLT5jbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhBbGxSZXNvdXJjZUNhY2hlcyk7CiB9CiAKIEV3a19Db29raWVfTWFuYWdlciog
ZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250
ZXh0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNl
X21hbmFnZXJfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyX3ByaXZhdGUuaAkocmV2aXNpb24gMTM4NTk4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFn
ZXJfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxFd2tEYXRhYmFzZU1hbmFnZXI+IGNyZWF0ZShQYXNzUmVmUHRy
PFdlYkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrRGF0YWJhc2VNYW5hZ2VyKGNvbnRleHQtPmRh
dGFiYXNlTWFuYWdlclByb3h5KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tE
YXRhYmFzZU1hbmFnZXIoY29udGV4dC0+c3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eT4oKSkpOwogICAgIH0KIAogICAgIEVpbmFfTGlzdCogY3JlYXRlT3JpZ2luTGlzdChXS0FycmF5
UmVmIHdrTGlzdCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaAkocmV2
aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0
b3JhZ2VfbWFuYWdlcl9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUo
UGFzc1JlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQpOwotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a1N0b3JhZ2VNYW5hZ2VyKGNv
bnRleHQtPmtleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSgpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRXdrU3RvcmFnZU1hbmFnZXIoY29udGV4dC0+c3VwcGxlbWVudDxXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+KCkpKTsKICAgICB9CiAKICAgICBFaW5hX0xpc3QqIGNy
ZWF0ZU9yaWdpbkxpc3QoV0tBcnJheVJlZiB3a0xpc3QpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVk
ZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQ
cml2YXRlLmgiCkBAIC0xNzgsNyArMTgwLDcgQEAgc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1
bHRXZWJDb250ZXh0KAogICAgIGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdl
YkNvbnRleHQuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIHByaXYtPmdl
b2xvY2F0aW9uUHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpjcmVhdGUocHJp
di0+Y29udGV4dC0+Z2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSk7CisgICAgcHJpdi0+Z2VvbG9j
YXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6OmNyZWF0ZShwcml2LT5j
b250ZXh0LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShTUEVMTENIRUNLKQogICAgIHByaXYtPnRleHRDaGVja2VyID0gV2ViS2l0
VGV4dENoZWNrZXI6OmNyZWF0ZSgpOwpAQCAtMjg2LDcgKzI4OCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0
LT5yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KCktPmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKEFs
bFJlc291cmNlQ2FjaGVzKTsKKyAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5zdXBwbGVtZW50
PFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk+KCktPmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5z
KEFsbFJlc291cmNlQ2FjaGVzKTsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPERvd25sb2FkUHJveHkq
LCBHUmVmUHRyPFdlYktpdERvd25sb2FkPiA+IERvd25sb2Fkc01hcDsKQEAgLTMzMiw3ICszMzQs
NyBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRfd2ViX2NvbnRleHRfCiAKICAgICBXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgaWYgKCFwcml2
LT5jb29raWVNYW5hZ2VyKQotICAgICAgICBwcml2LT5jb29raWVNYW5hZ2VyID0gYWRvcHRHUmVm
KHdlYmtpdENvb2tpZU1hbmFnZXJDcmVhdGUocHJpdi0+Y29udGV4dC0+Y29va2llTWFuYWdlclBy
b3h5KCkpKTsKKyAgICAgICAgcHJpdi0+Y29va2llTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRD
b29raWVNYW5hZ2VyQ3JlYXRlKHByaXYtPmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlclByb3h5PigpKSk7CiAKICAgICByZXR1cm4gcHJpdi0+Y29va2llTWFuYWdlci5nZXQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAkocmV2
aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjYg
KzQwLDU2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBs
ZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKIFBhc3NSZWZQdHI8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5KGNvbnRleHQpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4
dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
Y29udGV4dCkKK3sKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgpLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyICpw
cm92aWRlcikKIHsKLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMp
OworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7CisgICAgbV9wcm92aWRlci5h
ZGROb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAg
bV9wcm92aWRlci5yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQogCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXIgKnByb3ZpZGVyKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIG1fcHJvdmlk
ZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7Ci0gICAgbV9wcm92aWRlci5hZGROb3RpZmljYXRpb25N
YW5hZ2VyKHRoaXMpOworICAgIG1fcHJvdmlkZXIucmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0
aGlzKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRl
eHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCit7Cisg
ICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
Kwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJlY2VpdmVX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0
ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYgcGVy
bWlzc2lvbnMpCkBAIC03MywxMSArMTAzLDYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnBvcHVsYQogICAgIH0KIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIGRpZFJlY2VpdmVXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Ci19Ci0KIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0
cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYg
KCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQpAQCAtMTIyLDI0ICsxNDcs
MjQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTgogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewotICAgIGlmICghbV9jb250ZXh0KQorICAgIGlmICgh
Y29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9jb250ZXh0LT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlv
bihub3RpZmljYXRpb25JRCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkK
IHsKLSAgICBpZiAoIW1fY29udGV4dCkKKyAgICBpZiAoIWNvbnRleHQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb25J
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwog
fQogCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogbm90aWZpY2F0aW9uSURzKQogewotICAgIGlm
ICghbV9jb250ZXh0KQorICAgIGlmICghY29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgc2l6ZV90IHNpemUgPSBub3RpZmljYXRpb25JRHMtPnNpemUoKTsKQEAgLTE1MywyMCAr
MTc4LDIwIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWQKICAgICB9
CiAgICAgCiAgICAgaWYgKHZlY3Rvck5vdGlmaWNhdGlvbklEcy5zaXplKCkpCi0gICAgICAgIG1f
Y29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnModmVjdG9yTm90aWZpY2F0aW9uSURzKSk7CisgICAg
ICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnModmVjdG9yTm90aWZpY2F0aW9uSURzKSk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29s
IGFsbG93ZWQpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCisgICAgaWYgKCFjb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lv
bihvcmlnaW4tPnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkVXBkYXRlTm90
aWZpY2F0aW9uRGVjaXNpb24ob3JpZ2luLT50b1N0cmluZygpLCBhbGxvd2VkKSk7CiB9CiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNh
dGlvblBvbGljaWVzKEltbXV0YWJsZUFycmF5KiBvcmlnaW5zKQogewotICAgIGlmICghbV9jb250
ZXh0KQorICAgIGlmICghY29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3Qg
c2l6ZSA9IG9yaWdpbnMtPnNpemUoKTsKQEAgLTE3OSw3ICsyMDQsNyBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIG9yaWdpblN0cmluZ3MuYXBwZW5kKG9yaWdpbnMtPmF0PFdlYlNl
Y3VyaXR5T3JpZ2luPihpKS0+dG9TdHJpbmcoKSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgY29udGV4dCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJl
bW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRp
b25DbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDIsMTQgKzQzLDEzIEBA
IGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKIAotY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQ
SU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFdlYkNvbnRl
eHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVOb3RpZmljYXRpb25NYW5hZ2Vy
OwotICAgIAorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUo
KTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4g
Y3JlYXRlKFdlYkNvbnRleHQqKTsKLSAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2
b2lkIGNsZWFyQ29udGV4dCgpIHsgbV9jb250ZXh0ID0gMDsgfQogCiAgICAgdm9pZCBpbml0aWFs
aXplUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciopOwogICAgIHZvaWQgcG9w
dWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4m
KTsKQEAgLTYxLDEyICs2MSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lk
IHByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IFdlYlNlY3VyaXR5T3Jp
Z2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0
aW9uUG9saWNpZXMoSW1tdXRhYmxlQXJyYXkqIG9yaWdpbnMpOwotICAgIAorCisgICAgdXNpbmcg
QVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOwog
ICAgIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
CisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBPVkVSUklERTsKKwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKQEAgLTc4LDcgKzg3LDYgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gPiBXZWJOb3RpZmljYXRpb25NYXA7
CiAgICAgCi0gICAgV2ViQ29udGV4dCogbV9jb250ZXh0OwogICAgIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyIG1fcHJvdmlkZXI7CiAgICAgV2ViTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9u
czsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIGluaXRpYWxpemVJbnNw
ZWN0b3JTZXJ2ZXIoKTsKIAogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQgPSBt
X3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5yZWdpc3RlcmVkVVJJU2NoZW1lcygpOwotICAgIG1f
Y29va2llTWFuYWdlclByb3h5LT5nZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJz
LmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50
U3RvcmFnZVR5cGUpOworICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5n
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgIHBh
cmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBv
bGljeTsKICAgICBwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3Jz
OwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRH
dGsuY3BwCShyZXZpc2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbnRleHRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICBpbml0SW5zcGVjdG9yU2Vy
dmVyKCk7CiAKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0gbV9zb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS0+cmVnaXN0ZXJlZFVSSVNjaGVtZXMoKTsKLSAgICBtX2Nvb2tpZU1h
bmFnZXJQcm94eS0+Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVBhdGgsIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlKTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2ll
UGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgs
IHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKICAgICBwYXJhbWV0ZXJz
LmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAg
ICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCShyZXZp
c2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDE2IEBACiAjaW5jbHVkZSAiUXREZWZh
dWx0RGF0YUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V0tTaGFyZWRBUElDYXN0LmgiCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJRdC5oIgotI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURpcj4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KIAorI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
KyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uUHJvdmlkZXJRdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgUVN0cmluZyBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeTsKQEAgLTcyLDggKzc0LDgg
QEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogewogICAgIHFSZWdp
c3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMi
KTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgc3RhdGljIFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXJRdCogbG9jYXRpb24gPSBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OmNyZWF0ZSh0b0FQ
SShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSk7Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJT
ZXRQcm92aWRlcih0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSwgV2ViR2VvbG9jYXRp
b25Qcm92aWRlclF0Ojpwcm92aWRlcihsb2NhdGlvbikpOworICAgIHN0YXRpYyBXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVh
dGUodG9BUEkoc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkpOworICAg
IFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoc3VwcGxlbWVudDxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4oKSksIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlk
ZXIobG9jYXRpb24pKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180983</attachid>
            <date>2012-12-31 21:09:27 -0800</date>
            <delta_ts>2013-01-02 01:00:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105890-20130101000638.patch</filename>
            <type>text/plain</type>
            <size>80995</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODYwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAxMi0xMi0zMSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENvbnZlcnQgbW9yZSBjbGFzc2VzIHRv
IGJlIFdlYkNvbnRleHRTdXBwbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1ODkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0RGF0
YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdLQ29udGV4dEdldEdlb2xvY2F0aW9uTWFuYWdlcik6
CisgICAgICAgIChXS0NvbnRleHRHZXRLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKToKKyAgICAgICAg
KFdLQ29udGV4dEdldE1lZGlhQ2FjaGVNYW5hZ2VyKToKKyAgICAgICAgKFdLQ29udGV4dEdldE5v
dGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAoV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1h
bmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAg
ICAgICAgKEV3a0NvbnRleHQ6OmNvb2tpZU1hbmFnZXIpOgorICAgICAgICAoRXdrQ29udGV4dDo6
Y2xlYXJSZXNvdXJjZUNhY2hlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZGF0
YWJhc2VfbWFuYWdlcl9wcml2YXRlLmg6CisgICAgICAgIChFd2tEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlcl9w
cml2YXRlLmg6CisgICAgICAgIChFd2tTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKGNyZWF0
ZURlZmF1bHRXZWJDb250ZXh0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9jbGVhcl9j
YWNoZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2VyKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXpl
UHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
Q2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyk6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6On5XZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVt
b3ZlTmV0d29ya1Byb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzaG91bGRU
ZXJtaW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aWNv
bkRhdGFiYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dFN1cHBsZW1lbnQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRTdXBwbGVtZW50
Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dFN1cHBsZW1l
bnQ6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRTdXBwbGVtZW50OjpzaG91bGRUZXJtaW5hdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0U3VwcGxlbWVudDo6cmVmKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dFN1cHBsZW1lbnQ6OmRlcmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFu
YWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OldlYkNvb2tpZU1hbmFnZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3ll
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzaG91bGRUZXJt
aW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJDb29raWVN
YW5hZ2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpzdXBwbGVt
ZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3Vw
cGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZXJl
ZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlc0J5T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmdldERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVEYXRhYmFzZVdpdGhOYW1lRm9y
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlTWFuYWdl
clByb3h5OjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6c2V0UXVvdGFGb3JPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50
TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvY2Vz
c0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFu
Z2VQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFu
YWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OldlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3Rv
cmFnZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJD
b250ZXh0U3VwcGxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eTo6Z2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6
CisgICAgICAgIChXZWJLaXQ6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsRW50cmllcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAoV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHk6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkZXJlZldlYkNv
bnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQ
cm94eTo6Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5OjpjbGVhckNhY2hlRm9ySG9zdG5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpjbGVhckNhY2hlRm9yQWxsSG9zdG5h
bWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAoV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd05v
dGlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Y29udGV4
dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eTo6Z2V0Q2FjaGVPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXJQcm94eTo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAo
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorCiAyMDEyLTEyLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIHN1cHBsZW1lbnRhYmlsaXR5IGZvciBXZWJDb250ZXh0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMzg1OTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwyNyAr
MTYwLDI2IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2MKICNpZiBF
TkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgbV9iYXR0ZXJ5TWFuYWdlclByb3h5ID0gV2ViQmF0
dGVyeU1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0gICAgbV9jb29raWVNYW5h
Z2VyUHJveHkgPSBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKLSNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VNYW5hZ2VyUHJveHkgPSBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwotI2VuZGlmCi0gICAgbV9nZW9sb2NhdGlvbk1h
bmFnZXJQcm94eSA9IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUodGhpcyk7Ci0g
ICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKLSAgICBt
X2tleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSA9IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y3JlYXRlKHRoaXMpOwotICAgIG1fbWVkaWFDYWNoZU1hbmFnZXJQcm94eSA9IFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBFTkFCTEUoTkVUV09SS19J
TkZPKQogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHkgPSBXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkgPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdlciA9
IFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIG1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSA9
IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBVU0UoU09V
UCkKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5ID0gV2ViU291cFJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmNyZWF0ZSh0aGlzKTsKICNlbmRpZgogCiAgICAgYWRkU3VwcGxlbWVudDxXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5PigpOworICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2ll
TWFuYWdlclByb3h5PigpOworICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk+KCk7CisgICAgYWRkU3VwcGxlbWVudDxXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJv
eHk+KCk7CisgICAgYWRkU3VwcGxlbWVudDxXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5PigpOwor
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpOworICAgIGFk
ZFN1cHBsZW1lbnQ8V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4oKTsKKyNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQorICAgIGFkZFN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk+
KCk7CisjZW5kaWYKIAogICAgIGNvbnRleHRzKCkuYXBwZW5kKHRoaXMpOwogCkBAIC0yMjMsNDIg
KzIyMiwxOSBAQCBXZWJDb250ZXh0Ojp+V2ViQ29udGV4dCgpCiAgICAgbV9iYXR0ZXJ5TWFuYWdl
clByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJv
eHktPmludmFsaWRhdGUoKTsKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eS0+Y2xlYXJDb250ZXh0
KCk7Ci0KLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIG1fZGF0YWJhc2VNYW5hZ2VyUHJv
eHktPmludmFsaWRhdGUoKTsKLSAgICBtX2RhdGFiYXNlTWFuYWdlclByb3h5LT5jbGVhckNvbnRl
eHQoKTsKLSNlbmRpZgotICAgIAotICAgIG1fZ2VvbG9jYXRpb25NYW5hZ2VyUHJveHktPmludmFs
aWRhdGUoKTsKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsK
LQogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2Ut
PmNsZWFyQ29udGV4dCgpOwogICAgIAotICAgIG1fa2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHktPmNsZWFy
Q29udGV4dCgpOwotCi0gICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7
Ci0gICAgbV9tZWRpYUNhY2hlTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKLQogI2lmIEVO
QUJMRShORVRXT1JLX0lORk8pCiAgICAgbV9uZXR3b3JrSW5mb01hbmFnZXJQcm94eS0+aW52YWxp
ZGF0ZSgpOwogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHktPmNsZWFyQ29udGV4dCgpOwog
I2VuZGlmCi0gICAgCi0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPmludmFsaWRhdGUo
KTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS0+Y2xlYXJDb250ZXh0KCk7CiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdl
ci0+aW52YWxpZGF0ZSgpOwogICAgIG1fcGx1Z2luU2l0ZURhdGFNYW5hZ2VyLT5jbGVhckNvbnRl
eHQoKTsKICNlbmRpZgogCi0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlk
YXRlKCk7Ci0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsK
LQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRh
dGUoKTsKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKQEAg
LTQxMCwxMCArMzg2LDEzIEBAIHZvaWQgV2ViQ29udGV4dDo6cmVtb3ZlTmV0d29ya1Byb2Nlc3NQ
cm8KIHsKICAgICBBU1NFUlQobV9uZXR3b3JrUHJvY2Vzcyk7CiAgICAgQVNTRVJUKG5ldHdvcmtQ
cm9jZXNzUHJveHkgPT0gbV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSk7Ci0gICAgCi0gICAgbV9uZXR3
b3JrUHJvY2VzcyA9IG51bGxwdHI7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eS0+aW52YWxp
ZGF0ZSgpOworICAgIFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc3VwcGxlbWVudHMuYmVnaW4oKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9zdXBwbGVtZW50cy5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnByb2Nlc3NEaWRDbG9zZShuZXR3b3JrUHJv
Y2Vzc1Byb3h5KTsKKworICAgIG1fbmV0d29ya1Byb2Nlc3MgPSBudWxscHRyOwogfQogCiB2b2lk
IFdlYkNvbnRleHQ6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5PiByZXBseSkKQEAgLTUzMCw3ICs1MDksOCBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNv
bnRleHQ6OmNyZWF0ZU5ld1dlCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbCA9IFdlYlVSTFJlcXVlc3Q6OmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoKTsKIAogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCi0g
ICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyUHJveHktPnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMocGFyYW1ldGVycy5ub3RpZmljYXRpb25QZXJtaXNzaW9ucyk7CisgICAgLy8g
RklYTUU6IFRoZXJlIHNob3VsZCBiZSBhIGdlbmVyaWMgd2F5IGZvciBzdXBwbGVtZW50cyB0byBh
ZGQgdG8gdGhlIGludGlhbGl6YXRpb24gcGFyYW1ldGVycy4KKyAgICBzdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJt
aXNzaW9ucyhwYXJhbWV0ZXJzLm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTYwNCwyMiArNTg0LDEwIEBAIGJvb2wgV2Vi
Q29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdlYlByb2MKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAoIW1fY29va2llTWFuYWdlclByb3h5LT5zaG91bGRUZXJtaW5h
dGUocHJvY2VzcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIGlmICghbV9kYXRhYmFzZU1hbmFnZXJQcm94eS0+c2hvdWxkVGVybWluYXRlKHBy
b2Nlc3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICBpZiAoIW1fa2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5LT5zaG91bGRUZXJtaW5hdGUocHJvY2VzcykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW1fbWVkaWFDYWNoZU1hbmFnZXJQcm94eS0+c2hvdWxk
VGVybWluYXRlKHByb2Nlc3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgaWYgKCFtX3BsdWdpblNpdGVEYXRhTWFuYWdlci0+c2hv
dWxkVGVybWluYXRlKHByb2Nlc3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKLSAg
ICBpZiAoIW1fcmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS0+c2hvdWxkVGVybWluYXRlKHByb2Nl
c3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTY2
OSwxOCArNjM3LDkgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcgog
I2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBtX2JhdHRlcnlNYW5hZ2VyUHJveHktPmlu
dmFsaWRhdGUoKTsKICNlbmRpZgotICAgIG1fY29va2llTWFuYWdlclByb3h5LT5pbnZhbGlkYXRl
KCk7Ci0jaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKLSAgICBtX2RhdGFiYXNlTWFuYWdlclByb3h5
LT5pbnZhbGlkYXRlKCk7Ci0jZW5kaWYKLSAgICBtX2dlb2xvY2F0aW9uTWFuYWdlclByb3h5LT5p
bnZhbGlkYXRlKCk7Ci0gICAgbV9rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHktPmludmFsaWRh
dGUoKTsKLSAgICBtX21lZGlhQ2FjaGVNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQogICAgIG1fbmV0d29ya0luZm9NYW5hZ2VyUHJveHktPmludmFs
aWRhdGUoKTsKICNlbmRpZgotICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlclByb3h5LT5pbnZhbGlk
YXRlKCk7Ci0gICAgbV9yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LT5pbnZhbGlkYXRlKCk7CiAj
aWYgVVNFKFNPVVApCiAgICAgbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+aW52YWxpZGF0ZSgp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlz
aW9uIDEzODU5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDE2ICs1OSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBEb3dubG9hZFByb3h5OwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7Ci1jbGFzcyBXZWJD
b29raWVNYW5hZ2VyUHJveHk7Ci1jbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTsKLWNsYXNz
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwotY2xh
c3MgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OwotY2xhc3MgV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eTsKLWNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTsKIGNsYXNzIFdl
YlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKLWNsYXNzIFdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHk7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKICAgICAKQEAgLTIxNiwyMiArMjA5LDEzIEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgV2ViQmF0dGVyeU1hbmFnZXJQcm94eSogYmF0
dGVyeU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fYmF0dGVyeU1hbmFnZXJQcm94eS5n
ZXQoKTsgfQogI2VuZGlmCi0gICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2Vy
UHJveHkoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZU1hbmFnZXJQcm94eS5nZXQoKTsgfQotI2lm
IEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkqIGRhdGFi
YXNlTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU1hbmFnZXJQcm94eS5n
ZXQoKTsgfQotI2VuZGlmCi0gICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkqIGdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5nZXQoKTsgfQogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KLSAgICBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUHJveHkqIGtleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmdldCgpOyB9Ci0gICAgV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eSogbWVkaWFDYWNoZU1hbmFnZXJQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVk
aWFDYWNoZU1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAg
ICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrSW5mb01hbmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlm
Ci0gICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBub3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5nZXQoKTsgfQog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFdlYlBsdWdpblNpdGVEYXRhTWFu
YWdlciogcGx1Z2luU2l0ZURhdGFNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5TaXRl
RGF0YU1hbmFnZXIuZ2V0KCk7IH0KICNlbmRpZgotICAgIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHkqIHJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlQ2FjaGVNYW5hZ2VyUHJveHkuZ2V0KCk7IH0KICNpZiBVU0UoU09VUCkKICAgICBXZWJTb3Vw
UmVxdWVzdE1hbmFnZXJQcm94eSogc291cFJlcXVlc3RNYW5hZ2VyUHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmdldCgpOyB9CiAjZW5kaWYKQEAgLTQzNSwy
MiArNDE5LDEzIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIFJl
ZlB0cjxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PiBtX2JhdHRlcnlNYW5hZ2VyUHJveHk7CiAjZW5k
aWYKLSAgICBSZWZQdHI8V2ViQ29va2llTWFuYWdlclByb3h5PiBtX2Nvb2tpZU1hbmFnZXJQcm94
eTsKLSNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIFJlZlB0cjxXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eT4gbV9kYXRhYmFzZU1hbmFnZXJQcm94eTsKLSNlbmRpZgotICAgIFJlZlB0cjxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gbV9nZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKICAgICBS
ZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKLSAgICBSZWZQdHI8V2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5PiBtX2tleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTsK
LSAgICBSZWZQdHI8V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eT4gbV9tZWRpYUNhY2hlTWFuYWdl
clByb3h5OwogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgUmVmUHRyPFdlYk5ldHdvcmtJ
bmZvTWFuYWdlclByb3h5PiBtX25ldHdvcmtJbmZvTWFuYWdlclByb3h5OwogI2VuZGlmCi0gICAg
UmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gbV9ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUmVmUHRyPFdlYlBs
dWdpblNpdGVEYXRhTWFuYWdlcj4gbV9wbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiAjZW5kaWYKLSAg
ICBSZWZQdHI8V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4gbV9yZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5OwogI2lmIFVTRShTT1VQKQogICAgIFJlZlB0cjxXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eT4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRTdXBwbGVtZW50LmgJKHJldmlzaW9u
IDEzODU5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0U3VwcGxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNz
IFdlYlByb2Nlc3NQcm94eTsKIApAQCAtNDIsMTYgKzQzLDI5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCByZWYoKSB7IHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCk7IH0KLSAg
ICB2b2lkIGRlcmVmKCkgeyBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpCisgICAgeworICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJt
aW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3b3JrUHJvY2Vzc1Byb3h5KikKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgV2ViQ29udGV4
dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogICAgIHZvaWQgY2xlYXJD
b250ZXh0KCkgeyBtX2NvbnRleHQgPSAwOyB9CiAKKyAgICB2b2lkIHJlZigpIHsgcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKTsgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMjUgKzM0LDUwIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjb25zdCBBdG9taWNTdHJp
bmcmIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIldlYkNvb2tpZU1hbmFnZXJQcm94
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbmFt
ZTsKK30KKwogUGFzc1JlZlB0cjxXZWJDb29raWVNYW5hZ2VyUHJveHk+IFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJDb29raWVNYW5hZ2VyUHJveHkoY29udGV4dCkpOwogfQogCiBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OldlYkNvb2tpZU1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQot
ICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChj
b250ZXh0KQogI2lmIFVTRShTT1VQKQogICAgICwgbV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUoU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlKQogI2VuZGlmCiB7Ci0gICAgbV93
ZWJDb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxl
bWVudDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogV2ViQ29va2ll
TWFuYWdlclByb3h5Ojp+V2ViQ29va2llTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2VyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOworfQorCisvLyBXZWJDb250ZXh0
U3VwcGxlbWVudAorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3ll
ZCgpCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworICAg
IGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFja3Mp
OworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSopCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFj
a3MpOworICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lD
YWxsYmFja3MpOworfQorCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKQogewogICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X2FycmF5Q2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9odHRwQ29va2ll
QWNjZXB0UG9saWN5Q2FsbGJhY2tzKTsKQEAgLTYwLDE1ICs4NSwyMiBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAKIGJvb2wgV2ViQ29va2llTWFuYWdlclByb3h5
OjpzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKIHsKLSAgICByZXR1cm4g
bV93ZWJDb250ZXh0LT5wcm9jZXNzTW9kZWwoKSAhPSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRh
cnlQcm9jZXNzCisgICAgcmV0dXJuIGNvbnRleHQoKS0+cHJvY2Vzc01vZGVsKCkgIT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcwogICAgICAgICB8fCAobV9hcnJheUNhbGxiYWNr
cy5pc0VtcHR5KCkgJiYgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2tzLmlzRW1wdHko
KSk7CiB9CiAKLXZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojppbml0aWFsaXplQ2xpZW50KGNv
bnN0IFdLQ29va2llTWFuYWdlckNsaWVudCogY2xpZW50KQordm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHsKLSAgICBtX2NsaWVudC5pbml0aWFs
aXplKGNsaWVudCk7CisgICAgQVBJT2JqZWN0OjpyZWYoKTsKK30KKwordm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVj
dDo6ZGVyZWYoKTsKIH0KIAorLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBkaWRSZWNlaXZlV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOwpAQCAtODAsNyArMTEy
LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lcwogICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fYXJyYXlDYWxs
YmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKLSAgICBtX3dlYkNv
bnRleHQtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY2FsbGJhY2tJ
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjYWxsYmFja0lEKSk7CiB9CiAgICAgCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6
ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1l
TGlzdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTEwMiwyMiArMTM0LDIyIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkaWRHZXRIb3N0bmEKIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoaG9zdG5hbWUpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpkZWxldGVBbGxDb29raWVzKCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2ll
TWFuYWdlcjo6RGVsZXRlQWxsQ29va2llcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdv
cmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6RGVsZXRlQWxsQ29va2llcygpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiB7Ci0gICAgbV93ZWJDb250ZXh0LT5z
ZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpKTsKKyAgICBjb250
ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkpOwog
fQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5n
ZXMoKQogewotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
Ojpjb29raWVzRGlkQ2hhbmdlKCkKQEAgLTEzMSwxMCArMTYzLDEwIEBAIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2kKICAgICBwZXJzaXN0SFRUUENvb2tpZUFjY2VwdFBv
bGljeShwb2xpY3kpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCi0gICAgbV93ZWJDb250ZXh0LT5z
ZXRJbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpOworICAgIGNvbnRleHQoKS0+
c2V0SW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KTsKICNlbmRpZgogCi0gICAg
bV93ZWJDb250ZXh0LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
cG9saWN5KSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kocG9saWN5KSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBhc3NSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGlj
eUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKQEAgLTE0NCw3ICsxNzYsNyBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9odHRwQ29va2llQWNjZXB0UG9saWN5Q2FsbGJh
Y2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgbV93ZWJDb250
ZXh0LT5zZW5kVG9OZXR3b3JraW5nUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2FsbGJhY2tJ
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRp
ZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBjYWxs
YmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJy
YXkuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0
U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTIsMTYgKzUzLDE1IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxXS0hUVFBDb29raWVBY2NlcHRQb2xpY3ksIEhUVFBDb29raWVBY2NlcHRQb2xpY3k+IEhUVFBD
b29raWVBY2NlcHRQb2xpY3lDYWxsYmFjazsKIAotY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5
IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
Y2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFdl
YkNvbnRleHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb29raWVNYW5hZ2Vy
OwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKKwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNv
bnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJDb29raWVNYW5hZ2VyUHJveHkoKTsKIAotICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX3dlYkNvbnRleHQg
PSAwOyB9Ci0KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29raWVNYW5hZ2Vy
Q2xpZW50Kik7CiAgICAgCiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQYXNzUmVm
UHRyPEFycmF5Q2FsbGJhY2s+KTsKQEAgLTc5LDcgKzc5LDggQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qm
IHN0b3JhZ2VUeXBlKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBzaG91bGRUZXJtaW5hdGUo
V2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpyZWY7CisgICAg
dXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBXZWJDb29raWVNYW5hZ2Vy
UHJveHkoV2ViQ29udGV4dCopOwpAQCAtOTAsNyArOTEsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kodWludDMyX3QgcG9saWN5LCB1aW50NjRfdCBj
YWxsYmFja0lEKTsKIAogICAgIHZvaWQgY29va2llc0RpZENoYW5nZSgpOwotICAgIAorCisgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vz
c1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDbG9zZShOZXR3
b3JrUHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1p
bmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVz
c2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVy
JikgT1ZFUlJJREU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29va2llTWFuYWdlclByb3h5TWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOwpAQCAtOTksNyArMTA4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBl
cnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogI2Vu
ZGlmCiAKLSAgICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8SFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrPiA+IG1faHR0
cENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrczsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAx
Mzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gbmFtZTsK
K30KKwogU3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpvcmlnaW5LZXkoKQogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksIChBU0NJSUxpdGVyYWwoIldlYkRhdGFi
YXNlTWFuYWdlck9yaWdpbktleSIpKSk7CkBAIC05MywxNiArOTksMjggQEAgUGFzc1JlZlB0cjxX
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eT4gV2ViRAogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eTo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogd2ViQ29udGV4dCkKLSAgICA6
IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQod2Vi
Q29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7
CisgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCB0aGlzKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6On5XZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eSgpCiB7CiB9CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmludmFsaWRh
dGUoKQordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZUNsaWVudChjb25z
dCBXS0RhdGFiYXNlTWFuYWdlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50LmluaXRp
YWxpemUoY2xpZW50KTsKK30KKworLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKwordm9pZCBXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0
ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKIHsKICAgICBpbnZh
bGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcyk7CiB9CkBAIC0xMTIsOSArMTMwLDIx
IEBAIGJvb2wgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnNob3VsZFRlcm0KICAgICByZXR1cm4g
bV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCk7CiB9CiAKLXZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
UHJveHk6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tEYXRhYmFzZU1hbmFnZXJDbGllbnQqIGNs
aWVudCkKK3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKIHsKLSAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CisgICAgQVBJT2JqZWN0
OjpyZWYoKTsKK30KKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKwordm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit7
CisgICAgZGlkUmVjZWl2ZVdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
OjpnZXREYXRhYmFzZXNCeU9yaWdpbihQYXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+IHBycENhbGxi
YWNrKQpAQCAtMTI0LDcgKzE1NCw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Omdl
dERhdGFiYXMKICAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5y
ZWxlYXNlKCkpOwogCiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3By
b2JsZW0vMTIyMzk3NjU+IERhdGFiYXNlcyBzaG91bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIg
cHJvY2Vzcy4KLSAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkdldERhdGFiYXNl
c0J5T3JpZ2luKGNhbGxiYWNrSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nl
c1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6
OkdldERhdGFiYXNlc0J5T3JpZ2luKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VzQnlPcmlnaW4oY29uc3QgVmVjdG9yPE9yaWdp
bkFuZERhdGFiYXNlcz4mIG9yaWdpbkFuZERhdGFiYXNlc1ZlY3RvciwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKQEAgLTE3Nyw3ICsyMDcsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpn
ZXREYXRhYmFzCiAgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2su
cmVsZWFzZSgpKTsKIAogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9w
cm9ibGVtLzEyMjM5NzY1PiBEYXRhYmFzZXMgc2hvdWxkbid0IGJlIHN0b3JlZCBpbiB0aGUgd2Vi
IHByb2Nlc3MuCi0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGlu
Z1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpHZXREYXRhYmFz
ZU9yaWdpbnMoY2FsbGJhY2tJRCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2Vz
UmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6
R2V0RGF0YWJhc2VPcmlnaW5zKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6ZGlkR2V0RGF0YWJhc2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBv
cmlnaW5JZGVudGlmaWVycywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTIwMCwyNSArMjMwLDI1
IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGEKIHZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7
CiAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vNzg1NTY5
Nj4gRGF0YWJhc2VzIHNob3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgotICAg
IG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYkRhdGFiYXNlTWFuYWdlcjo6RGVsZXRlRGF0YWJhc2VXaXRoTmFtZUZv
ck9yaWdpbihkYXRhYmFzZUlkZW50aWZpZXIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkp
KTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlV2l0aE5h
bWVGb3JPcmlnaW4oZGF0YWJhc2VJZGVudGlmaWVyLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpKSk7CiB9CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURhdGFiYXNl
c0Zvck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIC8vIEZJWE1FIChN
dWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzc4NTU2OTY+IERhdGFiYXNlcyBzaG91
bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBtX3dlYkNvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJE
YXRhYmFzZU1hbmFnZXI6OkRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpKSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5j
aGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpEZWxldGVE
YXRhYmFzZXNGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogfQogCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkZWxldGVBbGxEYXRhYmFzZXMoKQogewogICAg
IC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzc4NTU2OTY+IERh
dGFiYXNlcyBzaG91bGRuJ3QgYmUgc3RvcmVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBtX3dl
YkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZUFsbERhdGFiYXNlcygpKTsKKyAgICBj
b250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OkRlbGV0ZUFsbERhdGFiYXNlcygpKTsKIH0KIAog
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6c2V0UXVvdGFGb3JPcmlnaW4oV2ViU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgdWludDY0X3QgcXVvdGEpCiB7CiAgICAgLy8gRklYTUUgKE11bHRp
LVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vNzg1NTY5Nj4gRGF0YWJhc2VzIHNob3VsZG4n
dCBiZSBzdG9yZWQgaW4gdGhlIHdlYiBwcm9jZXNzLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRv
QWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYkRhdGFi
YXNlTWFuYWdlcjo6U2V0UXVvdGFGb3JPcmlnaW4ob3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIo
KSwgcXVvdGEpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJEYXRhYmFzZU1hbmFnZXI6OlNldFF1b3RhRm9y
T3JpZ2luKG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHF1b3RhKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZE1vZGlmeU9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpCkBAIC0yMzMsMTEgKzI2Myw2IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6OmRpZE1vZGlmeUQKICAgICBtX2NsaWVudC5kaWRNb2RpZnlEYXRhYmFzZSh0aGlz
LCBvcmlnaW4uZ2V0KCksIGRhdGFiYXNlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGRpZFJlY2VpdmVXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmgJ
KHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiT3JpZ2luQW5kRGF0YWJhc2VzLmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1l
bnQuaCIKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ1LDE2
ICs0NiwxNSBAQCBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8V0tBcnJheVJlZj4gQXJyYXlDYWxsYmFjazsKIAotY2xhc3MgV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CitjbGFzcyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3Qs
IHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlRGF0
YWJhc2VNYW5hZ2VyOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVu
dE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViQ29udGV4dCopOwogICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlTWFuYWdlclBy
b3h5KCk7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lkIGNsZWFyQ29udGV4dCgp
IHsgbV93ZWJDb250ZXh0ID0gMDsgfQotCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Kik7CiAKICAgICB2b2lkIGdldERhdGFiYXNlc0J5T3Jp
Z2luKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwpAQCAtNzMsMTMgKzczLDIxIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkoKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlRGV0YWlsc0N1cnJlbnRVc2FnZUtleSgpOwogCi0g
ICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNp
bmcgQVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eShXZWJDb250ZXh0Kik7CiAK
ICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAorICAg
IC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nl
c3NQcm94eSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2Vi
UHJvY2Vzc1Byb3h5KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNv
bnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJS
SURFOwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwpAQCAtOTAsOSArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTW9kaWZ5
T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRNb2Rp
ZnlEYXRhYmFzZShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VJZGVudGlmaWVyKTsKIAotICAgIFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJh
Y2tzOwotCiAgICAgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQgbV9jbGllbnQ7CiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDUxICszMiw3NiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3QgQXRvbWlj
U3RyaW5nJiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c3VwcGxlbWVudE5hbWUoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoIldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBuYW1lOworfQorCiBQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShjb250ZXh0KSk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9pc1VwZGF0aW5n
KGZhbHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgOiBXZWJDb250ZXh0U3VwcGxl
bWVudChjb250ZXh0KQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQogewotICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVu
dDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6fldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KCkKIHsKIH0K
IAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tHZW9s
b2NhdGlvblByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUo
cHJvdmlkZXIpOworfQorCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lkIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBzdG9wVXBkYXRp
bmcoKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVBy
b3ZpZGVyKGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCit2b2lkIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikK
IHsKLSAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOworICAgIHN0b3BVcGRhdGlu
ZygpOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENo
YW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9uKQordm9pZCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogewotICAg
IGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1cm47CisgICAgQVBJT2JqZWN0OjpyZWYoKTsK
K30KIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9s
b2NhdGlvbk1hbmFnZXI6OkRpZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsKK3Zv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQoreworICAgIEFQSU9iamVjdDo6ZGVyZWYoKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRGYWlsVG9EZXRlcm1pbmVQb3NpdGlvbihjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKKy8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorCit2b2lkIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBkaWRSZWNlaXZlV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9
CisKK3ZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlUG9z
aXRpb24oV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7Ci0gICAgaWYgKCFtX2Nv
bnRleHQpCisgICAgaWYgKCFjb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29u
dGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6
OkRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGVycm9yTWVzc2FnZSkpOworICAgIGNvbnRleHQo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXI6OkRp
ZENoYW5nZVBvc2l0aW9uKHBvc2l0aW9uLT5kYXRhKCkpKTsKIH0KIAotdm9pZCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZEZhaWxUb0RldGVybWluZVBvc2l0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQogewotICAgIGRpZFJlY2VpdmVXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2UoY29u
bmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKKyAgICBpZiAoIWNvbnRleHQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYkdlb2xvY2F0aW9uTWFuYWdlcjo6RGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oZXJyb3JN
ZXNzYWdlKSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnN0YXJ0VXBk
YXRpbmcoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzYsMjYgKzM3LDM0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViQ29udGV4dDsKIGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiAKLWNsYXNzIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkgOiBw
dWJsaWMgQVBJT2JqZWN0LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQsIHByaXZhdGUgQ29y
ZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBB
UElUeXBlID0gVHlwZUdlb2xvY2F0aW9uTWFuYWdlcjsKIAorICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKICAgICB2aXJ0dWFs
IH5XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7
Ci0gICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KLQogICAgIHZvaWQg
aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlciopOwogCiAgICAg
dm9pZCBwcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24qKTsK
ICAgICB2b2lkIHByb3ZpZGVyRGlkRmFpbFRvRGV0ZXJtaW5lUG9zaXRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoKSk7CiAKKyAgICB1c2luZyBBUElPYmplY3Q6OnJlZjsK
KyAgICB1c2luZyBBUElPYmplY3Q6OmRlcmVmOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQogCisgICAgLy8gV2ViQ29udGV4dFN1
cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsK
KwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwogCkBAIC02Nyw3ICs3Niw2IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1faXNVcGRhdGluZzsKIAotICAgIFdlYkNvbnRleHQqIG1fY29u
dGV4dDsKICAgICBXZWJHZW9sb2NhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDIyICszNCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3Qg
QXRvbWljU3RyaW5nJiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnRO
YW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKIFBhc3NSZWZQdHI8V2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5PiBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OmNy
ZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KGNvbnRleHQpKTsKIH0KIAogV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoV2ViQ29u
dGV4dCogY29udGV4dCkKLSAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29u
dGV4dFN1cHBsZW1lbnQoY29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIHRoaXMpOworICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpjb250ZXh0
KCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyUHJveHk6On5XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoKQogewog
fQogCi12b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisv
LyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
YXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94
eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCiB7CiAgICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOwogfQpAQCAtNTksNiArNzIsMTggQEAgYm9vbCBX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OnNobwogICAgIHJldHVybiBtX2FycmF5Q2Fs
bGJhY2tzLmlzRW1wdHkoKTsKIH0KIAordm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJv
eHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOwor
fQorCit2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKwogdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIGRpZFJlY2VpdmVXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CkBAIC03MSw3ICs5Niw3IEBAIHZvaWQg
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpnZXQKICAgICBtX2FycmF5Q2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgLy8gRklYTUUgKE11
bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFNob3VsZCBrZXktdmFs
dWUgc3RvcmFnZSBiZSBoYW5kbGVkIGluIHRoZSB3ZWIgcHJvY2Vzcz8KLSAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNh
bGxiYWNrSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyOjpHZXRL
ZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNhbGxiYWNrSUQpKTsKIH0KICAgICAKIHZvaWQgV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OjpkaWRHZXRLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5zKGNv
bnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5EYXRhcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKQEAgLTg4LDEzICsxMTMsMTMgQEAgdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUHJveHk6OmRlbAogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0ID0gb3JpZ2luLT5wb3J0
KCk7CiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8x
MjIzOTc2NT4gU2hvdWxkIGtleS12YWx1ZSBzdG9yYWdlIGJlIGhhbmRsZWQgaW4gdGhlIHdlYiBw
cm9jZXNzPwotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdU
aGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OkRlbGV0
ZUVudHJpZXNGb3JPcmlnaW4oc2VjdXJpdHlPcmlnaW5EYXRhKSk7CisgICAgY29udGV4dCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdpbihzZWN1cml0eU9y
aWdpbkRhdGEpKTsKIH0KIAogdm9pZCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk6OmRl
bGV0ZUFsbEVudHJpZXMoKQogewogICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJk
YXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTaG91bGQga2V5LXZhbHVlIHN0b3JhZ2UgYmUgaGFuZGxl
ZCBpbiB0aGUgd2ViIHByb2Nlc3M/Ci0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNz
ZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcygpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFBy
b2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyOjpEZWxldGVBbGxFbnRyaWVzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
S2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5o
IgogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC00MywyMSArNDQsMjEgQEAgY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPFdLQXJyYXlSZWY+IEFycmF5Q2FsbGJhY2s7CiAKLWNsYXNzIFdl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYktleVZhbHVlU3RvcmFnZU1hbmFn
ZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwg
cHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlS2V5VmFsdWVTdG9yYWdlTWFuYWdlcjsKIAorICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1cHBsZW1lbnROYW1lKCk7CisKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250
ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KCk7CiAK
LSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lkIGNsZWFyQ29udGV4dCgpIHsgbV93ZWJD
b250ZXh0ID0gMDsgfQotICAgIAogICAgIHZvaWQgZ2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyhQ
YXNzUmVmUHRyPEFycmF5Q2FsbGJhY2s+KTsKICAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmln
aW4oV2ViU2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoKTsKIAot
ICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0OworICAgIHVz
aW5nIEFQSU9iamVjdDo6cmVmOworICAgIHVzaW5nIEFQSU9iamVjdDo6ZGVyZWY7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KFdlYkNvbnRl
eHQqKTsKQEAgLTY2LDExICs2NywxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHZXRLZXlW
YWx1ZVN0b3JhZ2VPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAKKyAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgT1ZFUlJJREU7CisKICAg
ICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKLSAgICBXZWJDb250
ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAJKHJldmlz
aW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjIgKzMzLDM1IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjb25zdCBBdG9taWNTdHJpbmcmIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHk6OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbmFtZSwgKCJXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBuYW1lOworfQorCiBQYXNzUmVm
UHRyPFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+IFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6
OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eShjb250ZXh0KSk7CiB9CiAKIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHk6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4
dCkKLSAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1l
bnQoY29udGV4dCkKIHsKLSAgICBtX3dlYkNvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0
aGlzKTsKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgpLT5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgdGhpcyk7CiB9CiAKIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6On5XZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5KCkKIHsKIH0KIAotdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclBy
b3h5OjppbnZhbGlkYXRlKCkKKy8vIFdlYkNvbnRleHRTdXBwbGVtZW50CisKK3ZvaWQgV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgaW52YWxpZGF0
ZUNhbGxiYWNrTWFwKG1fYXJyYXlDYWxsYmFja3MpOworfQorCit2b2lkIFdlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewogICAgIGlu
dmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzKTsKIH0KQEAgLTU4LDYgKzcxLDE4
IEBAIGJvb2wgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6c2hvdWxkVGUKICAgICByZXR1cm4g
bV9hcnJheUNhbGxiYWNrcy5pc0VtcHR5KCk7CiB9CiAKK3ZvaWQgV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eTo6cmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6cmVm
KCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpCit7CisgICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKwogdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpN
ZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBkaWRSZWNlaXZlV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBkZWNvZGVyKTsKQEAgLTcwLDcgKzk1LDcgQEAgdm9pZCBXZWJNZWRpYUNh
Y2hlTWFuYWdlclByb3h5OjpnZXRIb3N0bgogICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxi
YWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJv
Y2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gV2hlbiB3ZSdyZSBzZW5kaW5nIHRoaXMg
dG8gbXVsdGlwbGUgcHJvY2Vzc2VzLCB3ZSBuZWVkIHRvIGFnZ3JlZ2F0ZSB0aGUgY2FsbGJhY2sg
ZGF0YSB3aGVuIGl0IGNvbWVzIGJhY2suCi0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9j
ZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViTWVkaWFDYWNoZU1h
bmFnZXI6OkdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKGNhbGxiYWNrSUQpKTsKKyAgICBjb250
ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6R2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoY2Fs
bGJhY2tJRCkpOwogfQogICAgIAogdm9pZCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OjpkaWRH
ZXRIb3N0bmFtZXNXaXRoTWVkaWFDYWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVM
aXN0LCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtOTIsMTIgKzExNywxMiBAQCB2b2lkIFdlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldEhvCiAKIHZvaWQgV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eTo6Y2xlYXJDYWNoZUZvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
Ci0gICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5l
Y2Vzc2FyeShNZXNzYWdlczo6V2ViTWVkaWFDYWNoZU1hbmFnZXI6OkNsZWFyQ2FjaGVGb3JIb3N0
bmFtZShob3N0bmFtZSkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVu
Y2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyOjpDbGVh
ckNhY2hlRm9ySG9zdG5hbWUoaG9zdG5hbWUpKTsKIH0KIAogdm9pZCBXZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5OjpjbGVhckNhY2hlRm9yQWxsSG9zdG5hbWVzKCkKIHsKLSAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvckFsbEhvc3RuYW1lcygpKTsKKyAg
ICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJNZWRpYUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvckFsbEhvc3RuYW1l
cygpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgJKHJldmlzaW9u
IDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsMjEgKzQyLDIxIEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94
eTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tBcnJheVJlZj4gQXJyYXlDYWxsYmFjazsK
IAotY2xhc3MgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHBy
aXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBsZW1lbnQs
IHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgVHlwZSBBUElUeXBlID0gVHlwZU1lZGlhQ2FjaGVNYW5hZ2VyOwogCisgICAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CiAg
ICAgdmlydHVhbCB+V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSgpOwotCi0gICAgdm9pZCBpbnZh
bGlkYXRlKCk7Ci0gICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fd2ViQ29udGV4dCA9IDA7IH0K
ICAgICAKICAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKFBhc3NSZWZQdHI8QXJy
YXlDYWxsYmFjaz4pOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckhvc3RuYW1lKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgY2xlYXJDYWNoZUZvckFsbEhvc3RuYW1lcygpOwogCi0gICAgYm9vbCBz
aG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNpbmcgQVBJT2Jq
ZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKQEAgLTY0LDEx
ICs2NSwxNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHZXRIb3N0bmFtZXNXaXRoTWVkaWFD
YWNoZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCisgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vz
c1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQ
cm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgT1ZFUlJJ
REU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKIAotICAgIFdlYkNvbnRleHQqIG1fd2ViQ29udGV4dDsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gPiBtX2FycmF5Q2FsbGJhY2tzOwogfTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zODk1LDcgKzM4OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdE5vdGlmaWNhdGlvblBlCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBT
dHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKQogewotICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5ub3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIs
IG9yaWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOworICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgp
LT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCB0
aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgbm90aWZp
Y2F0aW9uSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6OmhlYWRlckhlaWdodChXZWJGcmFt
ZVByb3h5KiBmcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDEzODU5OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDM1IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJQcm94eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gbmFtZTsKK30KKwogUGFzc1JlZlB0cjxXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5PiBX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogd2ViQ29udGV4
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHkod2ViQ29udGV4dCkpOwogfQogCiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCi0gICAgOiBt
X3dlYkNvbnRleHQod2ViQ29udGV4dCkKKyAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHdlYkNv
bnRleHQpCiB7Ci0gICAgbV93ZWJDb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhp
cyk7CisgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Ojp+V2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSgpCiB7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2
b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQoKQorewor
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5KikKIHsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcyk7CiB9
CkBAIC02Myw2ICs3NiwyMyBAQCBib29sIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnNo
b3VsCiAgICAgcmV0dXJuIG1fYXJyYXlDYWxsYmFja3MuaXNFbXB0eSgpOwogfQogCit2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKK3sK
KyAgICBBUElPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQoreworICAgIEFQSU9iamVjdDo6ZGVy
ZWYoKTsKK30KKworLy8gQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyCisKK3ZvaWQgV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIpCit7CisgICAgZGlkUmVjZWl2ZVdlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Cit9CisK
IHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Z2V0Q2FjaGVPcmlnaW5zKFBhc3NS
ZWZQdHI8QXJyYXlDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7CiAgICAgUmVmUHRyPEFycmF5Q2Fs
bGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CkBAIC03MCw3ICsxMDAsNyBAQCB2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmdldENhCiAgICAgbV9hcnJheUNhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKIAogICAgIC8vIEZJWE1FIChNdWx0
aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBXaGVuIG11bHRpLXByb2Nl
c3MgaXMgZW5hYmxlZCwgd2UgbmVlZCB0byBhZ2dyZWdhdGUgdGhlIGNhbGxiYWNrIGRhdGEgZnJv
bSBhbGwgcHJvY2Vzc2VzLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVs
YXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
OjpHZXRDYWNoZU9yaWdpbnMoY2FsbGJhY2tJRCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxs
UHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyOjpHZXRDYWNoZU9yaWdpbnMoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldENhY2hlT3JpZ2lucyhjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAg
LTg3LDE4ICsxMTcsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5OjpjbGVh
cgogICAgIHNlY3VyaXR5T3JpZ2luLnBvcnQgPSBvcmlnaW4tPnBvcnQoKTsKIAogICAgIC8vIEZJ
WE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBUaGVyZSBp
cyBubyBuZWVkIHRvIHJlbGF1bmNoIGFsbCBwcm9jZXNzZXMuIE9uZSBwcm9jZXNzIHRvIHRha2Ug
Y2FyZSBvZiBwZXJzaXN0ZW50IGNhY2hlIGlzIGVub3VnaC4KLSAgICBtX3dlYkNvbnRleHQtPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlcjo6Q2xlYXJDYWNoZUZvck9yaWdpbihzZWN1cml0eU9yaWdpbiwg
Y2FjaGVzVG9DbGVhcikpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVu
Y2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpD
bGVhckNhY2hlRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luLCBjYWNoZXNUb0NsZWFyKSk7CiB9CiAK
IHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6Y2xlYXJDYWNoZUZvckFsbE9yaWdp
bnMoUmVzb3VyY2VDYWNoZXNUb0NsZWFyIGNhY2hlc1RvQ2xlYXIpCiB7CiAgICAgLy8gRklYTUUg
KE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+IFRoZXJlIGlzIG5v
IG5lZWQgdG8gcmVsYXVuY2ggYWxsIHByb2Nlc3Nlcy4gT25lIHByb2Nlc3MgdG8gdGFrZSBjYXJl
IG9mIHBlcnNpc3RlbnQgY2FjaGUgaXMgZW5vdWdoLgotICAgIG1fd2ViQ29udGV4dC0+c2VuZFRv
QWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYlJlc291
cmNlQ2FjaGVNYW5hZ2VyOjpDbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhjYWNoZXNUb0NsZWFyKSk7
Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1l
c3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCi17Ci0gICAgZGlkUmVj
ZWl2ZVdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgZGVjb2Rlcik7CisgICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5j
aGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OkNs
ZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKGNhY2hlc1RvQ2xlYXIpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1Rv
Q2xlYXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNDMsMjcgKzQ0
LDM0IEBAIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxXS0FycmF5UmVmPiBBcnJheUNhbGxiYWNrOwogCi1jbGFzcyBXZWJSZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElP
YmplY3QsIHB1YmxpYyBXZWJDb250ZXh0U3VwcGxlbWVudCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBU
eXBlQ2FjaGVNYW5hZ2VyOwogCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxl
bWVudE5hbWUoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXJQcm94eSgpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9pZCBj
bGVhckNvbnRleHQoKSB7IG1fd2ViQ29udGV4dCA9IDA7IH0KLQogICAgIHZvaWQgZ2V0Q2FjaGVP
cmlnaW5zKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFjaz4pOwogICAgIHZvaWQgY2xlYXJDYWNoZUZv
ck9yaWdpbihXZWJTZWN1cml0eU9yaWdpbiosIFJlc291cmNlQ2FjaGVzVG9DbGVhcik7CiAgICAg
dm9pZCBjbGVhckNhY2hlRm9yQWxsT3JpZ2lucyhSZXNvdXJjZUNhY2hlc1RvQ2xlYXIpOwogCi0g
ICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CisgICAgdXNp
bmcgQVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KFdlYkNvbnRleHQq
KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
CisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0
ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVm
V2ViQ29udGV4dFN1cHBsZW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpIE9WRVJSSURFOworCiAgICAgLy8gQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
T1ZFUlJJREU7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTcxLDcgKzc5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkR2V0Q2FjaGVPcmlnaW5zKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5JZGVudGlmaWVycywgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAKLSAgICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPEFycmF5Q2FsbGJhY2s+ID4gbV9hcnJheUNhbGxiYWNrczsKIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAxMzg1OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIldLQ29udGV4
dFByaXZhdGUuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0z
Niw2ICszNSwxOCBAQAogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisvLyBTdXBwbGVtZW50cworI2luY2x1ZGUgIldlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJv
eHkuaCIKKyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUg
IldlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk1lZGlhQ2Fj
aGVNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCisjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKKyNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGV4dGVybiAiQyIgewpAQCAtMTg0LDcg
KzE5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGQKIAogV0tD
b29raWVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+Y29va2ll
TWFuYWdlclByb3h5KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRBcHBsaWNhdGlvbkNhY2hlTWFuYWdlcihXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKQEAgLTIwNCw3ICsyMTUsNyBAQCBXS0JhdHRlcnlNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldEJhdHRlcnlNCiBXS0RhdGFiYXNlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRE
YXRhYmFzZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAjaWYgRU5BQkxFKFNR
TF9EQVRBQkFTRSkKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5kYXRhYmFz
ZU1hbmFnZXJQcm94eSgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5z
dXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlclByb3h5PigpKTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTIxMiw3ICsyMjMsNyBAQCBXS0RhdGFiYXNlTWFuYWdlclJlZiBXS0Nv
bnRleHRHZXREYXRhYmFzCiAKIFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldEdl
b2xvY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4g
dG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5nZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKTsKKyAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tDb250
ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQpAQCAtMjMx
LDE3ICsyNDIsMTcgQEAgV0tJY29uRGF0YWJhc2VSZWYgV0tDb250ZXh0R2V0SWNvbkRhdGFiYQog
CiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0S2V5VmFsdWVTdG9yYWdl
TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9J
bXBsKGNvbnRleHRSZWYpLT5rZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkoKSk7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUHJveHk+KCkpOwogfQogCiBXS01lZGlhQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4
dEdldE1lZGlhQ2FjaGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewotICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPm1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+c3VwcGxlbWVudDxXZWJNZWRp
YUNhY2hlTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdL
Q29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+bm90aWZpY2F0aW9uTWFuYWdl
clByb3h5KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpKTsKIH0KIAogV0tQbHVnaW5TaXRlRGF0
YU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmKQpAQCAtMjU1LDcgKzI2Niw3IEBAIFdLUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
UmVmIFdLQ29udGV4dEdldFAKIAogV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKLSAgICBy
ZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5
KCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eT4oKSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U3RhcnRN
ZW1vcnlTYW1wbGVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS0RvdWJsZVJlZiBpbnRlcnZh
bCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCkBAIC0x
MzUsNyArMTM2LDcgQEAgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBFd2tDb250ZXh0OjpkZWZhdQog
RXdrQ29va2llTWFuYWdlciogRXdrQ29udGV4dDo6Y29va2llTWFuYWdlcigpCiB7CiAgICAgaWYg
KCFtX2Nvb2tpZU1hbmFnZXIpCi0gICAgICAgIG1fY29va2llTWFuYWdlciA9IEV3a0Nvb2tpZU1h
bmFnZXI6OmNyZWF0ZShtX2NvbnRleHQtPmNvb2tpZU1hbmFnZXJQcm94eSgpKTsKKyAgICAgICAg
bV9jb29raWVNYW5hZ2VyID0gRXdrQ29va2llTWFuYWdlcjo6Y3JlYXRlKG1fY29udGV4dC0+c3Vw
cGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCkpOwogCiAgICAgcmV0dXJuIG1fY29va2ll
TWFuYWdlci5nZXQoKTsKIH0KQEAgLTIxMSw3ICsyMTIsNyBAQCB2b2lkIEV3a0NvbnRleHQ6OnNl
dEFkZGl0aW9uYWxQbHVnaW5QYXRoCiAKIHZvaWQgRXdrQ29udGV4dDo6Y2xlYXJSZXNvdXJjZUNh
Y2hlKCkKIHsKLSAgICBtX2NvbnRleHQtPnJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKS0+Y2xl
YXJDYWNoZUZvckFsbE9yaWdpbnMoQWxsUmVzb3VyY2VDYWNoZXMpOworICAgIG1fY29udGV4dC0+
c3VwcGxlbWVudDxXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5PigpLT5jbGVhckNhY2hlRm9y
QWxsT3JpZ2lucyhBbGxSZXNvdXJjZUNhY2hlcyk7CiB9CiAKIEV3a19Db29raWVfTWFuYWdlciog
ZXdrX2NvbnRleHRfY29va2llX21hbmFnZXJfZ2V0KGNvbnN0IEV3a19Db250ZXh0KiBld2tDb250
ZXh0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNl
X21hbmFnZXJfcHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyX3ByaXZhdGUuaAkocmV2aXNpb24gMTM4NTk4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2RhdGFiYXNlX21hbmFn
ZXJfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxFd2tEYXRhYmFzZU1hbmFnZXI+IGNyZWF0ZShQYXNzUmVmUHRy
PFdlYkNvbnRleHQ+IGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXdrRGF0YWJhc2VNYW5hZ2VyKGNvbnRleHQtPmRh
dGFiYXNlTWFuYWdlclByb3h5KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFd2tE
YXRhYmFzZU1hbmFnZXIoY29udGV4dC0+c3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXJQcm94
eT4oKSkpOwogICAgIH0KIAogICAgIEVpbmFfTGlzdCogY3JlYXRlT3JpZ2luTGlzdChXS0FycmF5
UmVmIHdrTGlzdCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFnZV9tYW5hZ2VyX3ByaXZhdGUuaAkocmV2
aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0
b3JhZ2VfbWFuYWdlcl9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEV3a1N0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUo
UGFzc1JlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQpOwotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a1N0b3JhZ2VNYW5hZ2VyKGNv
bnRleHQtPmtleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSgpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgRXdrU3RvcmFnZU1hbmFnZXIoY29udGV4dC0+c3VwcGxlbWVudDxXZWJLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHk+KCkpKTsKICAgICB9CiAKICAgICBFaW5hX0xpc3QqIGNy
ZWF0ZU9yaWdpbkxpc3QoV0tBcnJheVJlZiB3a0xpc3QpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAJ
KHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVk
ZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxvYWRQ
cml2YXRlLmgiCkBAIC0xNzgsNyArMTgwLDcgQEAgc3RhdGljIGdwb2ludGVyIGNyZWF0ZURlZmF1
bHRXZWJDb250ZXh0KAogICAgIGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdl
YkNvbnRleHQuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotICAgIHByaXYtPmdl
b2xvY2F0aW9uUHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpjcmVhdGUocHJp
di0+Y29udGV4dC0+Z2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoKSk7CisgICAgcHJpdi0+Z2VvbG9j
YXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6OmNyZWF0ZShwcml2LT5j
b250ZXh0LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShTUEVMTENIRUNLKQogICAgIHByaXYtPnRleHRDaGVja2VyID0gV2ViS2l0
VGV4dENoZWNrZXI6OmNyZWF0ZSgpOwpAQCAtMjg2LDcgKzI4OCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X2NsZWFyX2NhY2hlKFdlYksKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0
LT5yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KCktPmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKEFs
bFJlc291cmNlQ2FjaGVzKTsKKyAgICBjb250ZXh0LT5wcml2LT5jb250ZXh0LT5zdXBwbGVtZW50
PFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHk+KCktPmNsZWFyQ2FjaGVGb3JBbGxPcmlnaW5z
KEFsbFJlc291cmNlQ2FjaGVzKTsKIH0KIAogdHlwZWRlZiBIYXNoTWFwPERvd25sb2FkUHJveHkq
LCBHUmVmUHRyPFdlYktpdERvd25sb2FkPiA+IERvd25sb2Fkc01hcDsKQEAgLTMzMiw3ICszMzQs
NyBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRfd2ViX2NvbnRleHRfCiAKICAgICBXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgaWYgKCFwcml2
LT5jb29raWVNYW5hZ2VyKQotICAgICAgICBwcml2LT5jb29raWVNYW5hZ2VyID0gYWRvcHRHUmVm
KHdlYmtpdENvb2tpZU1hbmFnZXJDcmVhdGUocHJpdi0+Y29udGV4dC0+Y29va2llTWFuYWdlclBy
b3h5KCkpKTsKKyAgICAgICAgcHJpdi0+Y29va2llTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRD
b29raWVNYW5hZ2VyQ3JlYXRlKHByaXYtPmNvbnRleHQtPnN1cHBsZW1lbnQ8V2ViQ29va2llTWFu
YWdlclByb3h5PigpKSk7CiAKICAgICByZXR1cm4gcHJpdi0+Y29va2llTWFuYWdlci5nZXQoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAkocmV2
aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjYg
KzQwLDU2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY29uc3QgQXRvbWljU3RyaW5nJiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBs
ZW1lbnROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKIFBhc3NSZWZQdHI8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5KGNvbnRleHQpKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4
dCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
Y29udGV4dCkKK3sKKyAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6Y29udGV4dCgpLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyICpw
cm92aWRlcikKIHsKLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMp
OworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7CisgICAgbV9wcm92aWRlci5h
ZGROb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCisvLyBXZWJDb250ZXh0U3VwcGxlbWVudAorCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAg
bV9wcm92aWRlci5yZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpOwogfQogCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXIgKnByb3ZpZGVyKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkqKQogewotICAgIG1fcHJvdmlk
ZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7Ci0gICAgbV9wcm92aWRlci5hZGROb3RpZmljYXRpb25N
YW5hZ2VyKHRoaXMpOworICAgIG1fcHJvdmlkZXIucmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0
aGlzKTsKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnJlZldlYkNvbnRl
eHRTdXBwbGVtZW50KCkKK3sKKyAgICBBUElPYmplY3Q6OnJlZigpOworfQorCit2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCit7Cisg
ICAgQVBJT2JqZWN0OjpkZXJlZigpOworfQorCisvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
Kwordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGRpZFJlY2VpdmVX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwg
ZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwb3B1bGF0
ZUNvcHlPZk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKEhhc2hNYXA8U3RyaW5nLCBib29sPiYgcGVy
bWlzc2lvbnMpCkBAIC03MywxMSArMTAzLDYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnBvcHVsYQogICAgIH0KIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIGRpZFJlY2VpdmVXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7Ci19Ci0KIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0
cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYg
KCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQpAQCAtMTIyLDI0ICsxNDcs
MjQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTgogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewotICAgIGlmICghbV9jb250ZXh0KQorICAgIGlmICgh
Y29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9jb250ZXh0LT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlv
bihub3RpZmljYXRpb25JRCkpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkK
IHsKLSAgICBpZiAoIW1fY29udGV4dCkKKyAgICBpZiAoIWNvbnRleHQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb25J
RCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwog
fQogCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogbm90aWZpY2F0aW9uSURzKQogewotICAgIGlm
ICghbV9jb250ZXh0KQorICAgIGlmICghY29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgc2l6ZV90IHNpemUgPSBub3RpZmljYXRpb25JRHMtPnNpemUoKTsKQEAgLTE1MywyMCAr
MTc4LDIwIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWQKICAgICB9
CiAgICAgCiAgICAgaWYgKHZlY3Rvck5vdGlmaWNhdGlvbklEcy5zaXplKCkpCi0gICAgICAgIG1f
Y29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnModmVjdG9yTm90aWZpY2F0aW9uSURzKSk7CisgICAg
ICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnModmVjdG9yTm90aWZpY2F0aW9uSURzKSk7
CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29s
IGFsbG93ZWQpCiB7Ci0gICAgaWYgKCFtX2NvbnRleHQpCisgICAgaWYgKCFjb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lv
bihvcmlnaW4tPnRvU3RyaW5nKCksIGFsbG93ZWQpKTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkVXBkYXRlTm90
aWZpY2F0aW9uRGVjaXNpb24ob3JpZ2luLT50b1N0cmluZygpLCBhbGxvd2VkKSk7CiB9CiAKIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNh
dGlvblBvbGljaWVzKEltbXV0YWJsZUFycmF5KiBvcmlnaW5zKQogewotICAgIGlmICghbV9jb250
ZXh0KQorICAgIGlmICghY29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzaXplX3Qg
c2l6ZSA9IG9yaWdpbnMtPnNpemUoKTsKQEAgLTE3OSw3ICsyMDQsNyBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIG9yaWdpblN0cmluZ3MuYXBwZW5kKG9yaWdpbnMtPmF0PFdlYlNl
Y3VyaXR5T3JpZ2luPihpKS0+dG9TdHJpbmcoKSk7CiAgICAgCi0gICAgbV9jb250ZXh0LT5zZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92
ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CisgICAgY29udGV4dCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJl
bW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmgJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRp
b25DbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDIsMTQgKzQzLDEzIEBA
IGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKIAotY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQ
SU9iamVjdCwgcHJpdmF0ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFdlYkNvbnRl
eHRTdXBwbGVtZW50LCBwcml2YXRlIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVOb3RpZmljYXRpb25NYW5hZ2Vy
OwotICAgIAorCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3VwcGxlbWVudE5hbWUo
KTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4g
Y3JlYXRlKFdlYkNvbnRleHQqKTsKLSAgICAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2
b2lkIGNsZWFyQ29udGV4dCgpIHsgbV9jb250ZXh0ID0gMDsgfQogCiAgICAgdm9pZCBpbml0aWFs
aXplUHJvdmlkZXIoY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlciopOwogICAgIHZvaWQgcG9w
dWxhdGVDb3B5T2ZOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhIYXNoTWFwPFN0cmluZywgYm9vbD4m
KTsKQEAgLTYxLDEyICs2MSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSogbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lk
IHByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IFdlYlNlY3VyaXR5T3Jp
Z2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0
aW9uUG9saWNpZXMoSW1tdXRhYmxlQXJyYXkqIG9yaWdpbnMpOwotICAgIAorCisgICAgdXNpbmcg
QVBJT2JqZWN0OjpyZWY7CisgICAgdXNpbmcgQVBJT2JqZWN0OjpkZXJlZjsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOwog
ICAgIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
CisgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2Vi
UHJvY2Vzc1Byb3h5KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBPVkVSUklERTsKKwogICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpIE9WRVJSSURFOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKQEAgLTc4LDcgKzg3LDYgQEAgcHJpdmF0ZToKIAogICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4gPiBXZWJOb3RpZmljYXRpb25NYXA7
CiAgICAgCi0gICAgV2ViQ29udGV4dCogbV9jb250ZXh0OwogICAgIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyIG1fcHJvdmlkZXI7CiAgICAgV2ViTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9u
czsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAJKHJldmlzaW9uIDEzODU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViQ29udGV4dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIGluaXRpYWxpemVJbnNw
ZWN0b3JTZXJ2ZXIoKTsKIAogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQgPSBt
X3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5yZWdpc3RlcmVkVVJJU2NoZW1lcygpOwotICAgIG1f
Y29va2llTWFuYWdlclByb3h5LT5nZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJz
LmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50
U3RvcmFnZVR5cGUpOworICAgIHN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpLT5n
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShwYXJhbWV0ZXJzLmNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aCwgcGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogICAgIHBh
cmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBv
bGljeTsKICAgICBwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3Jz
OwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb250ZXh0R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRH
dGsuY3BwCShyZXZpc2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbnRleHRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICBpbml0SW5zcGVjdG9yU2Vy
dmVyKCk7CiAKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0gbV9zb3VwUmVx
dWVzdE1hbmFnZXJQcm94eS0+cmVnaXN0ZXJlZFVSSVNjaGVtZXMoKTsKLSAgICBtX2Nvb2tpZU1h
bmFnZXJQcm94eS0+Z2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVBhdGgsIHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlKTsKKyAgICBzdXBwbGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKS0+Z2V0Q29va2ll
UGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5jb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgs
IHBhcmFtZXRlcnMuY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKICAgICBwYXJhbWV0ZXJz
LmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAg
ICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwCShyZXZp
c2lvbiAxMzg1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDE2IEBACiAjaW5jbHVkZSAiUXREZWZh
dWx0RGF0YUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V0tTaGFyZWRBUElDYXN0LmgiCi0jaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQotI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uUHJvdmlkZXJRdC5oIgotI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURpcj4KICNpbmNsdWRlIDxRUHJvY2Vzcz4KIAorI2lmIEVOQUJMRShHRU9MT0NBVElPTikK
KyNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkdl
b2xvY2F0aW9uUHJvdmlkZXJRdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgUVN0cmluZyBzX2RlZmF1bHREYXRhYmFzZURpcmVjdG9yeTsKQEAgLTcyLDggKzc0LDgg
QEAgdm9pZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogewogICAgIHFSZWdp
c3Rlck1ldGFUeXBlPFFQcm9jZXNzOjpFeGl0U3RhdHVzPigiUVByb2Nlc3M6OkV4aXRTdGF0dXMi
KTsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgc3RhdGljIFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXJRdCogbG9jYXRpb24gPSBXZWJHZW9sb2NhdGlvblByb3ZpZGVyUXQ6OmNyZWF0ZSh0b0FQ
SShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSk7Ci0gICAgV0tHZW9sb2NhdGlvbk1hbmFnZXJT
ZXRQcm92aWRlcih0b0FQSShnZW9sb2NhdGlvbk1hbmFnZXJQcm94eSgpKSwgV2ViR2VvbG9jYXRp
b25Qcm92aWRlclF0Ojpwcm92aWRlcihsb2NhdGlvbikpOworICAgIHN0YXRpYyBXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyUXQqIGxvY2F0aW9uID0gV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0OjpjcmVh
dGUodG9BUEkoc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkpOworICAg
IFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIodG9BUEkoc3VwcGxlbWVudDxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4oKSksIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdDo6cHJvdmlk
ZXIobG9jYXRpb24pKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcAko
cmV2aXNpb24gMTM4NTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29v
a2llTWFuYWdlclByb3h5U291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBz
dG9yYWdlVHlwZSkKIHsKLSAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1
bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZShzdG9yYWdlUGF0aCwgc3RvcmFnZVR5cGUpKTsKKyAgICBjb250
ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShzdG9yYWdl
UGF0aCwgc3RvcmFnZVR5cGUpKTsKIAogICAgIG1fY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRo
ID0gc3RvcmFnZVBhdGg7CiAgICAgbV9jb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgPSBzdGF0
aWNfY2FzdDxTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlPihzdG9yYWdlVHlwZSk7Cg==
</data>
<flag name="review"
          id="198434"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>