<?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>195757</bug_id>
          
          <creation_ts>2019-03-14 13:24:39 -0700</creation_ts>
          <short_desc>CacheStorageConnection callbacks should be completed on network connection close</short_desc>
          <delta_ts>2019-05-23 22:30:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>198134</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516609</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-14 13:24:39 -0700</bug_when>
    <thetext>CacheStorageConnection callbacks should be completed on network connection close.
Otherwise, on network cache, we will be hanging forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516611</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-03-14 13:34:53 -0700</bug_when>
    <thetext>Another approach is to rely on AsyncReply</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538424</commentid>
    <comment_count>2</comment_count>
      <attachid>370455</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-22 15:41:31 -0700</bug_when>
    <thetext>Created attachment 370455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538523</commentid>
    <comment_count>3</comment_count>
      <attachid>370480</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-22 20:26:36 -0700</bug_when>
    <thetext>Created attachment 370480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538675</commentid>
    <comment_count>4</comment_count>
      <attachid>370480</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-23 10:08:08 -0700</bug_when>
    <thetext>Comment on attachment 370480
Patch

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

rs=me when this builds.

&gt; Source/WebKit/ChangeLog:48
&gt; +        * WebProcess/Cache/WebCacheStorageConnection.h:

It looks like you need to remove the declaration of WebCacheStorageConnection::didReceiveMessage and see what breaks and fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538699</commentid>
    <comment_count>5</comment_count>
      <attachid>370509</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-23 10:58:30 -0700</bug_when>
    <thetext>Created attachment 370509
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538782</commentid>
    <comment_count>6</comment_count>
      <attachid>370509</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-23 14:15:40 -0700</bug_when>
    <thetext>Comment on attachment 370509
Patch for landing

Clearing flags on attachment: 370509

Committed r245715: &lt;https://trac.webkit.org/changeset/245715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538783</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-23 14:15:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538784</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-23 14:16:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/51082080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538837</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-05-23 16:39:36 -0700</bug_when>
    <thetext>This change broke a webkitpy test:

[5/1902] webkit.messages_unittest.ReceiverImplementationTest.test_receiver_implementations failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 393, in test_receiver_implementations
      _expected_superclass_receiver_implementation_file_name)
    File &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 373, in assertImplementationEqual
      self.assertGeneratedFileContentsEqual(actual_file_contents, expected_file_name)
    File &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 360, in assertGeneratedFileContentsEqual
      self.assertEquals(actual_line, expected_line_list[index])
  AssertionError: &apos;        completionHandler(IPC::AsyncReplyError&lt;uint64_t&gt;::create());&apos; != &apos;        return;&apos;
  
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/4289/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538941</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-23 22:30:06 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #9)
&gt; This change broke a webkitpy test:
&gt; 
&gt; [5/1902]
&gt; webkit.messages_unittest.ReceiverImplementationTest.
&gt; test_receiver_implementations failed:
&gt;   Traceback (most recent call last):
&gt;     File
&gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; webkit/messages_unittest.py&quot;, line 393, in test_receiver_implementations
&gt;       _expected_superclass_receiver_implementation_file_name)
&gt;     File
&gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; webkit/messages_unittest.py&quot;, line 373, in assertImplementationEqual
&gt;       self.assertGeneratedFileContentsEqual(actual_file_contents,
&gt; expected_file_name)
&gt;     File
&gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; webkit/messages_unittest.py&quot;, line 360, in assertGeneratedFileContentsEqual
&gt;       self.assertEquals(actual_line, expected_line_list[index])
&gt;   AssertionError: &apos;       
&gt; completionHandler(IPC::AsyncReplyError&lt;uint64_t&gt;::create());&apos; != &apos;       
&gt; return;&apos;
&gt;   
&gt; https://build.webkit.org/builders/
&gt; Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/4289/steps/webkitpy-test/
&gt; logs/stdio

Filed bug 198214.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370455</attachid>
            <date>2019-05-22 15:41:31 -0700</date>
            <delta_ts>2019-05-22 20:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195757-20190522154130.patch</filename>
            <type>text/plain</type>
            <size>82462</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JkNWQ0YTQ5NGMwMzhh
NzJmMzNmNGExOTZlYzIwNzkwY2U4MWU2Ny4uZTE5MjJlMTAxZDcyOTA2YzQ5NzE3NjZhZTdiY2Jm
YmFjNWQ0MzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA1LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uIGNhbGxiYWNrcyBzaG91bGQgYmUgY29tcGxldGVkIG9uIG5ldHdvcmsgY29ubmVjdGlv
biBjbG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk1NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBIYXNoTWFwLWJhc2VkIGNhbGxiYWNrcyB0byBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLgorICAgICAgICBNYWtlIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZGVmYXVsdCBBUEkgdG8g
aW1wbGVtZW50IHVzZSBjYWxsYmFja3MuCisgICAgICAgIFRoaXMgaXMgdXNlZCBieSBXZWJLaXQg
bGF5ZXIgdG8gZG8gQXN5bmNSZXBseSBJUEMuCisKKyAgICAgICAgTW92ZSBET01DYWNoZUVuZ2lu
ZSBjYWxsYmFja3MgdG8gQ29tcGxldGlvbkhhbmRsZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29y
ZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9t
UmVjb3Jkc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jk
c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpv
cGVuT3JSZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzQ29tcGxldGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRy
aWV2ZVJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpwdXRSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkZXJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhclBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAg
ICogcGFnZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlUHJvdmlkZXI6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorCiAyMDE5LTA1
LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNdWx0aXBs
ZSB2aWRlb3MgKHdpdGggYXVkaW9zKSB3aXRoIGF1dG9wbGF5ICYgcGxheWlubGluZSBub3Qgd29y
a2luZy4gT25seSBvbmUgdmlkZW8gcGxheSBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlN2JiOTJh
Njc3M2M2NDQ5NjVkMTIzMzc5Mjc5ODIyYzc1YzdmNDcuLjY4Nzg4MWYxOGRkZDE1MTQ1ZTk5ODBl
YTFmODQxNGIzZmNmMTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMDUtMjIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gY2FsbGJhY2tzIHNob3VsZCBiZSBjb21wbGV0ZWQgb24gbmV0d29yayBjb25u
ZWN0aW9uIGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgYWNjb3JkaW5nIG5ldyBXZWJDb3JlIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
aW50ZXJmYWNlLgorICAgICAgICBVc2UgQXN5bmMgSVBDIHJlcGxpZXMgc28gdGhhdCB0aGUgY29t
cGxldGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkIG9uIG5ldHdvcmsgY3Jhc2guCisKKyAgICAgICAg
QWxsb3cgdG8gaGF2ZSBzcGVjaWZpYyBlcnJvciBoYW5kbGluZyBpbiBjYXNlIG9mIGNhbmNlbGxl
ZCByZXBseSBvciBiYWRseSBkZWNvZGVkIG1lc3NhZ2UuCisgICAgICAgIFRoaXMgYWxsb3dzIHRv
IHJlamVjdCB0aGUgY29ycmVzcG9uZGluZyBKUyBwcm9taXNlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0ZVJlY29yZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRj
aGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvcj46OmNyZWF0ZSk6
CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkSWRlbnRpZmllcnNPckVycm9yPjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6QXN5bmNS
ZXBseUVycm9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zT3JFcnJvcj46OmNy
ZWF0ZSk6CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3Jkc09yRXJyb3I+OjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6QXN5bmNSZXBseUVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAxOS0wNS0yMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1vZGVybiBhc3luYyBJUEMg
Zm9yIEVuZ2luZVJlcHJlc2VudGF0aW9uQ29tcGxldGVkIGFuZCBDbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uQ29tcGxldGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBlMzk0ZTU2YThmOGMzOGFmY2Q4Yzk2
ZDkxNDI3MTYzMmY4YTJhNjAwLi40YWNiOGFhYmQ4NjdkOGRlMjIwOTM3OWIyNjBjNjFmZmZmZWI0
OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDY1ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU7CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nUmVxdWVzdHMoKQotewotICAgIGF1dG8g
b3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX29wZW5BbmRSZW1v
dmVDYWNoZVBlbmRpbmdSZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG9wZW5B
bmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7Ci0KLSAgICBh
dXRvIHJldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX3JldHJpZXZlQ2Fj
aGVzUGVuZGluZ1JlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmV0cmlldmVD
YWNoZXNQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOwotCi0gICAgYXV0byByZXRy
aWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMgPSBXVEZNb3ZlKG1fcmV0cmlldmVSZWNvcmRzUGVu
ZGluZ1JlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmV0cmlldmVSZWNvcmRz
UGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsKLQotICAgIGF1dG8gYmF0Y2hEZWxl
dGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMgPSBXVEZNb3ZlKG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5k
aW5nUmVxdWVzdHMpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBiYXRjaERlbGV0ZUFuZFB1
dFBlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0g
ICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVy
OwotICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgZG9PcGVuKHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4sIGNhY2hlTmFtZSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKLXsKLSAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7Ci0gICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVx
dWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBk
b1JlbW92ZShyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCi17Ci0gICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwotICAgIG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb1JldHJpZXZlQ2Fj
aGVzKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpOwotfQotCi12b2lk
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsK
LSAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZp
ZXI7Ci0gICAgbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpOwotfQotCi12b2lkIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7Ci0g
ICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25z
KSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgY29tcHV0ZVJlYWxCb2R5U2l6ZShjb25z
dCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHVpbnQ2NF90IHJl
c3VsdCA9IDA7CkBAIC0xMjMsNDIgKzY0LDQgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlY29yZEJvZHlTaXplKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3AKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3Jk
PiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAg
ICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7
Ci0gICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGRvQmF0Y2hQdXRPcGVyYXRpb24ocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSk7Ci19Ci0K
LXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1
bHQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KQotewot
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy50
YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQp
KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLnRha2Uo
cmVxdWVzdElkZW50aWZpZXIpKQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwot
fQotCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVy
cm9yPiYmIHJlc3VsdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVB
bmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNh
bGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRXhwZWN0
ZWQ8VmVjdG9yPHVpbnQ2NF90PiwgRXJyb3I+JiYgcmVzdWx0KQotewotICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA5YWE0MDhkMzVhNGUwZTI1ZmFhNzE2
YWYyMDNmNjYwMzRhMGEzMzUxLi44N2VhYjcxODYyNmM2MDI3NDE0ODlkYmMyYmZhNzdlODY1NjVh
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtMzcsNTYgKzM3LDI3IEBAIGNsYXNzIEZldGNoUmVzcG9uc2U7
CiAKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOyB9CiAgICAgdmlydHVhbCB+Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgb3Blbihjb25zdCBDbGllbnRPcmlnaW4m
LCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmV0
cmlldmVDYWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b3Blbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0cmlldmVDYWNo
ZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSA9IDA7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIERPTUNhY2hlRW5naW5l
OjpSZWNvcmRzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlP
cHRpb25zJiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwot
ICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7Ci0gICAgdWludDY0X3QgY29tcHV0ZVJlY29yZEJvZHlTaXplKGNv
bnN0IEZldGNoUmVzcG9uc2UmLCBjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5Jik7
CisgICAgdmlydHVhbCB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJlZmVyZW5jZSh1aW50NjRf
dCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZlcmVu
Y2UodWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVmZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyB9
CisgICAgdWludDY0X3QgY29tcHV0ZVJlY29yZEJvZHlTaXplKGNvbnN0IEZldGNoUmVzcG9uc2Um
LCBjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5Jik7CiAKICAgICAvLyBVc2VkIG9u
bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgRE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGVuZ2luZVJlcHJlc2VudGF0aW9u
KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFj
ayhTdHJpbmcgeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmdpbmVSZXByZXNlbnRhdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IGNhbGxi
YWNrKFN0cmluZyB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNw
YWNlVXNhZ2UoY29uc3QgQ2xpZW50T3JpZ2luJikgeyB9CiAKLSAgICB2b2lkIGNsZWFyUGVuZGlu
Z1JlcXVlc3RzKCk7Ci0KIHByb3RlY3RlZDoKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkg
PSAgZGVmYXVsdDsKLQotICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVy
LCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSB7
IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCByZXN1bHQpOyB9Ci0gICAgdm9pZCBy
ZW1vdmVDb21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQo
aWRlbnRpZmllciwgcmVzdWx0KTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ2Fj
aGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
c09yRXJyb3ImJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzT3JFcnJvciYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09y
RXJyb3ImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmll
cnNPckVycm9yJiYpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
LyogY2FjaGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50
ZXIgKi8pIHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1cmwgKi8pIHsg
dXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hl
UXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5PclJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRl
bnRpZmllck9yRXJyb3ImKTsKLQotICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5l
OjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVx
dWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3ND
YWxsYmFjaz4gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jk
c1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVuZ2luZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjaz4gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1
ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9vcGFxdWVSZXNwb25zZVRv
U2l6ZVdpdGhQYWRkaW5nTWFwOwotCi0gICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZp
ZXIgeyAwIH07CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IGI3OWRkMTJmNmU1ZDQ1ZDE5MTM5
NjEzNGFlZmFlZTlmNTkzM2E2ZWQuLmVmYjA0Mjk5YjkwZWU4NTUxMzNiN2MxNGMxZDliODY0NTcy
MTNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTk5LDE5ICsxMDAsMTkgQEAgc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlv
blJlc3VsdCB7CiB9OwogCiB1c2luZyBDYWNoZUlkZW50aWZpZXJPckVycm9yID0gRXhwZWN0ZWQ8
Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0LCBFcnJvcj47Ci11c2luZyBDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBDYWNoZUlkZW50aWZpZXJP
ckVycm9yJik+OwordXNpbmcgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImKT47CiAKIHVzaW5nIFJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciA9IEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPjsK
LXVzaW5nIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVj
b3JkSWRlbnRpZmllcnNPckVycm9yJiYpPjsKK3VzaW5nIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKT47
CiAKIAogdXNpbmcgQ2FjaGVJbmZvc09yRXJyb3IgPSBFeHBlY3RlZDxDYWNoZUluZm9zLCBFcnJv
cj47Ci11c2luZyBDYWNoZUluZm9zQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVJ
bmZvc09yRXJyb3ImJik+OwordXNpbmcgQ2FjaGVJbmZvc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChDYWNoZUluZm9zT3JFcnJvciYmKT47CiAKIHVzaW5nIFJlY29yZHNPckVycm9y
ID0gRXhwZWN0ZWQ8VmVjdG9yPFJlY29yZD4sIEVycm9yPjsKLXVzaW5nIFJlY29yZHNDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWNvcmRzT3JFcnJvciYmKT47Cit1c2luZyBSZWNvcmRz
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlY29yZHNPckVycm9yJiYpPjsKIAot
dXNpbmcgQ29tcGxldGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEVy
cm9yPiYmKT47Cit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEVycm9yPiYmKT47CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGlu
ZSB2b2lkIENhY2hlSW5mb3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMWViZGQ1ZGU0OGE3ZTdlMWM5NmEwMWM3OGZlZDdk
YTViYzRmYjg4OC4uMjA2YzI0MThlOTg3ZmVkZmRhMjEwMWU2ZWJhNWY1YTViYTBhZjNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC04OCw2ICs4OCwzMSBAQCBzdGF0aWMgUmVjb3Jk
IGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoQ3Jvc3NUaHJlYWRSZWNvcmREYXRhJiYgZGF0YSkK
ICAgICB9OwogfQogCitzdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+
IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCit7
CisgICAgcmV0dXJuIFdURjo6bWFwKHJlY29yZHMsIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsK
K30KKworc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRh
PiwgRXJyb3I+IHJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKGNvbnN0IFJlY29yZHNPckVy
cm9yJiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CisKKyAgICByZXR1cm4gcmVjb3Jk
c0RhdGFGcm9tUmVjb3JkcyhyZXN1bHQudmFsdWUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVj
dG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNv
cmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIHJldHVybiBXVEY6Om1hcChXVEZNb3ZlKHJl
Y29yZHNEYXRhKSwgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoRXhwZWN0ZWQ8
VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiYmIHJlY29yZHNEYXRhKQorewor
ICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKKyAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNv
cmRzRGF0YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsKK30KKwogUmVmPFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0
ZShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0byBjb25uZWN0aW9uID0gYWRv
cHRSZWYoKm5ldyBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHNjb3BlKSk7CkBAIC0xMDks
MzEgKzEzNCw0NiBAQCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp+V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRD
b25uZWN0aW9uID0gV1RGTW92ZShtX21haW5UaHJlYWRDb25uZWN0aW9uKV0oKSBtdXRhYmxlIHsg
fSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAgIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX29wZW5BbmRS
ZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VS
ZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFk
Q29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENv
cHkoKSwgY2FjaGVOYW1lID0gY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFt3
b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSAo
Y29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50
aWZpZXIsIHJlc3VsdF0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KS5vcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOworICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpLm9wZW5PclJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsK
ICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
bW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJy
b3ImIHJlc3VsdCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fb3BlbkFuZFJlbW92ZUNh
Y2hlUGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
bW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJl
cXVlc3RJZGVudGlmaWVyOworICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3Rz
LmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCiAgICAgY2FsbE9u
TWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFp
blRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRp
ZmllciwgY2FjaGVJZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENv
bm5lY3Rpb24tPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3Zl
KHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdIChjb25z
dCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjYWNoZUlkZW50aWZpZXIsICFyZXN1bHQuaGFzX3ZhbHVlKCkgfHwgIXJl
c3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgfHwgcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciA9PSBj
YWNoZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0XSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29w
ZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5vcGVuT3JSZW1vdmVDb21wbGV0ZWQo
cmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVz
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNo
ZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9yZXRyaWV2ZUNhY2hlc1Bl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50
aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwg
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKSwgdXBkYXRl
Q291bnRlcl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRy
aWV2ZUNhY2hlcyhvcmlnaW4sIHVwZGF0ZUNvdW50ZXIsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3Zl
KHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSAoQ2FjaGVJbmZvc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVJbmZvc09yRXJyb3IgaXNvbGF0ZWRS
ZXN1bHQ7CkBAIC0xNDMsNjQgKzE4Myw0MyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAg
ICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1bHQudmFsdWUoKS5pc29sYXRlZENvcHko
KTsKIAogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShpc29sYXRlZFJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkudXBkYXRlQ2FjaGVzKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJl
dHJpZXZlQ2FjaGVzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
ZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCi17Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBjYWNoZUlk
ZW50aWZpZXJdKCkgewotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVmZXJlbmNlKGNh
Y2hlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCBjYWNoZUlkZW50aWZpZXJdKCkgewotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bi0+ZGVyZWZlcmVuY2UoY2FjaGVJZGVudGlmaWVyKTsKLSAgICB9KTsKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRl
bnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVj
b3Jkcyhjb25zdCBWZWN0b3I8UmVjb3JkPiYgcmVjb3JkcykKK3ZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJldHVy
biBXVEY6Om1hcChyZWNvcmRzLCB0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YSk7Ci19CisgICAgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAg
IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShjYWxsYmFjaykpOwogCi1zdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMo
Y29uc3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLQot
ICAgIHJldHVybiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlc3VsdC52YWx1ZSgpKTsKLX0KLQot
c3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZlY3Rv
cjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVjb3Jkc0RhdGEpCi17Ci0gICAgcmV0dXJuIFdU
Rjo6bWFwKFdURk1vdmUocmVjb3Jkc0RhdGEpLCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsK
LX0KLQotc3RhdGljIGlubGluZSBSZWNvcmRzT3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNv
cmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+JiYg
cmVjb3Jkc0RhdGEpCi17Ci0gICAgaWYgKCFyZWNvcmRzRGF0YS5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlY29yZHNEYXRhLmVycm9yKCkpOwotICAgIHJldHVy
biByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEudmFsdWUoKSkpOwot
fQotCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsKQotewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1h
a2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhy
ZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVj
dGlvbi0+cmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgdXJsLCBbd29ya2VyVGhyZWFk
ID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtyZXN1bHQgPSByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3Jk
cyhyZXN1bHQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKS51cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRz
T3JFcnJvckZyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlc3VsdCkpKTsKKyAgICAgICAgICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oKS5yZXRyaWV2ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlY29yZHNP
ckVycm9yRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVzdWx0KSkpOwogICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQog
Ci12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlv
bnMpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3Jkc09yRXJyb3ImJiByZXN1
bHQpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXN1bHQpKTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRj
aERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fYmF0Y2hEZWxldGVBbmRQ
dXRQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2Nv
cGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rp
b24sIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0
Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmJhdGNoRGVsZXRlT3BlcmF0aW9u
KGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSwgW3dvcmtlclRocmVh
ZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50
aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CkBAIC0yMTAsOCArMjI5
LDE3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9w
ZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYm
IHJlY29yZHMpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1
aW50NjRfdD4sIEVycm9yPiYmIHJlc3VsdCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
YmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikp
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiByZWNvcmRzLCBET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAgIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAg
ICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworCiAgICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhy
ZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBt
X21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVy
LCByZWNvcmRzRGF0YSA9IHJlY29yZHNEYXRhRnJvbVJlY29yZHMocmVjb3JkcyldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNo
ZUlkZW50aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkp
LCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmll
cl0gKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVu
dGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CkBAIC0yMjEsNCArMjQ5LDQzIEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRXhwZWN0ZWQ8VmVjdG9yPHVpbnQ2NF90Piwg
RXJyb3I+JiYgcmVzdWx0KQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9iYXRjaERlbGV0
ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQoreworICAgIGNh
bGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVj
dGlvbiwgY2FjaGVJZGVudGlmaWVyXSgpIHsKKyAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24t
PnJlZmVyZW5jZShjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFp
blRocmVhZENvbm5lY3Rpb24sIGNhY2hlSWRlbnRpZmllcl0oKSB7CisgICAgICAgIG1haW5UaHJl
YWRDb25uZWN0aW9uLT5kZXJlZmVyZW5jZShjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyUGVuZGluZ1JlcXVlc3Rz
KCkKK3sKKyAgICBhdXRvIG9wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cyA9IFdURk1v
dmUobV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBvcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisg
ICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3Rv
cHBlZCkpOworCisgICAgYXV0byByZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyA9IFdURk1v
dmUobV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IHJldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQorICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsK
KworICAgIGF1dG8gcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX3Jl
dHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IHJldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7CisKKyAg
ICBhdXRvIGJhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX2JhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
YmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDdhYTA1
YWRiY2JkMGIzYTQ1NzgzNTI5YzRmZGNkOTY2ZGNmNjk4YmEuLjExOWQ0Y2M2MTIwODNkYTcyODVm
NGY3OWMyMmRlNTljOWIwYzRiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zOCwyNSAr
MzgsNDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7CiAgICAgfldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQgY2xlYXJQZW5kaW5nUmVxdWVzdHMoKTsKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdvcmtlckds
b2JhbFNjb3BlJik7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLgot
ICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwor
ICAgIHZvaWQgb3Blbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMo
Y29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
LCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCByZWZlcmVuY2UodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7CiAKLSAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikg
ZmluYWw7Ci0gICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpOworICAg
IHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcik7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsK
KyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpOworICAgIHZvaWQgZG9CYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYmKTsKKyAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+JiYpOworCisgICAgdm9pZCBvcGVuT3JSZW1vdmVDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpDYWNoZUlk
ZW50aWZpZXJPckVycm9yJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NPckVycm9y
JiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3ImJik7CisgICAgdm9pZCBk
ZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOworICAgIHZvaWQgcHV0UmVjb3Jk
c0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Nj
b3BlOwogCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fbWFpblRocmVhZENv
bm5lY3Rpb247CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2s+IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2s+
IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjaz4gbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5n
UmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2s+IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHM7CisK
KyAgICB1aW50NjRfdCBtX2xhc3RSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaAppbmRleCBlMWZjYzJiOWMyODYwNTVmZjUyOGM2MDlkZDI5MzhlYzI1MzI1ZjkwLi42MzZm
M2QwYTExOWI3YzY3ZmJiZGU3ZjYxZjFmN2QwZjBjNTliZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhY2hlU3RvcmFnZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oCkBAIC0zMyw4ICszMywyMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBEdW1teUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPER1bW15Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIG9wZW4o
Y29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJlbW92ZSh1aW50
NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpIGZpbmFsIHsgfQorICAg
ICAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCwgY29uc3QgVVJMJiwgRE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBiYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJikg
ZmluYWwgeyB9CisgICAgICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QsIFZlY3Rv
cjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCByZWZlcmVuY2UodWludDY0
X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90KSBmaW5hbCB7
IH0KKyAgICB9OworCiAgICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZVN0b3JhZ2VQcm92aWRlcik7IH0KLSAgICB2
aXJ0dWFsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklEKSB7IHJldHVybiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
cmVhdGUoKTsgfQorICAgIHZpcnR1YWwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpIHsgcmV0dXJuIER1bW15Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIH5DYWNoZVN0b3Jh
Z2VQcm92aWRlcigpIHsgfTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggOTM0
MDEzODU4NTlkNzkwOGQ5NGIzN2RmNjY4YTY5ZGIyNzEyZjU3MC4uYjhlMDhjMWZiNDJiMTdiNDY3
OTJmZGJiOTZiODE3MjAxMjE3NTlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNjMsOCArMTYz
LDYgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotCiAgICAg
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5t
ZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA3ZDBiZTMxOWViMTM1YzZhMTYxYzZhMjIyNTJjZGQ2YzRkM2M2N2M4
Li40MjZiODY3NWRmNGI0MzBiNGYzY2VhNmY4NTcwZTRhMjBjNmIxMmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTExNyw3ICsxMTcs
NiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJDb25uZWN0aW9uTWVzc2FnZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDZiYTBjOWZkOWE1YTFiYTdhOGYxN2Y2NjY2MTViZTAzODZkZTQzZDUuLmMxMWIz
ZjhlYmVlZDQyZGUwNDFiM2RkNGM5ZDUxMmFmZDRlZDY3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTE1MCw3ICsxNTAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCiAgICAgV2ViQXV0b21hdGlvblNlc3Np
b24gXAogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAotICAgIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIg
XAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggNGNj
NjdmODJjYTg0ZTMyZWVkODhiMjJkZTE4NTY5ZmUyYzU4YWZhNy4uODBhYWI2OGQzNmM0NjhhNGIw
Y2I5MDhmNmNmZjY1MGMyYWY1MzFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNjAwLDcgKzYw
MCw3IEBAIHZvaWQgRW5naW5lOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3Vu
ZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvCiAKIHZvaWQgRW5naW5lOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0g
ICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKENhY2hlc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICByZWFkQ2FjaGVzRnJvbURpc2sob3Jp
Z2luLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMDhiOTRiNDdlNjQwNGFhNmQ5OGQxYjA0Y2M4
MzEwYzhhMDFmODU3My4uNWE3YmUyN2ZhNGEwMzVmYWIzZWNlYTJiNjY2MmVjODRmNTBjZTE3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQg
Q2FjaGVzOjpyZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNvbXBsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3F1b3Rh
TWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSB7CisgICAgbV9xdW90YU1hbmFnZXItPnJlcXVlc3RT
cGFjZShzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueToKICAgICAg
ICAgICAgIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKQEAgLTU0MCw3ICs1NDAsNyBA
QCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9zdG9yYWdlLT5zdG9yZShDYWNoZTo6ZW5jb2RlKHJlY29yZEluZm9ybWF0aW9uLCByZWNvcmQp
LCB7IH0sIFtwcm90ZWN0ZWRTdG9yYWdlID0gbWFrZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9yKSB7CisgICAgbV9zdG9yYWdlLT5zdG9yZShD
YWNoZTo6ZW5jb2RlKHJlY29yZEluZm9ybWF0aW9uLCByZWNvcmQpLCB7IH0sIFtwcm90ZWN0ZWRT
dG9yYWdlID0gbWFrZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6OndyaXRlUmVjb3JkIGZh
aWxlZCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwogICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6
OldyaXRlRGlzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBk
ZDJiMTJlYmUyNGRjNjM1N2M1YzhjOWM0NGRhZDk1N2YwNTZiNDU4Li42MjgwOThlMTRjMWQwNWNj
OWZhMjU3ZGQ4YTEwMmU3MjZmZjI3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KIApAQCAtNDEs
MTEgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2U7CiAjZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiJXAgLSBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjoiIGZtdCwgJm1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCksICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FM
TEJBQ0soZnVuY3Rpb25OYW1lLCBmbXQsIHJlc3VsdEdldHRlcikgXAogICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKVwKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoc2Vzc2lvbklELmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBDYWNoZVN0b3JhZ2UsICIlcCAtIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OiVzICglIiBQUkl1NjQgIikgLSBmYWlsZWQgLSBlcnJvciAlZCIs
IGNvbm5lY3Rpb24ucHRyKCksIGZ1bmN0aW9uTmFtZSwgcmVxdWVzdElkZW50aWZpZXIsIChpbnQp
cmVzdWx0LmVycm9yKCkpOyBcCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHNlc3Npb25J
RC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6JXMgLSBmYWlsZWQgLSBlcnJvciAlZCIsIGZ1bmN0aW9uTmFtZSwg
KGludClyZXN1bHQuZXJyb3IoKSk7IFwKICAgICBlbHNlIHtcCiAgICAgICAgIGF1dG8gdmFsdWUg
PSByZXN1bHRHZXR0ZXIocmVzdWx0LnZhbHVlKCkpOyBcCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7IFwKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBDYWNoZVN0b3JhZ2UsICIlcCAtIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OiVzICglIiBQUkl1NjQgIikgLSBzdWNjZWVkZWQgLSAiIGZtdCwgY29ubmVjdGlvbi5w
dHIoKSwgZnVuY3Rpb25OYW1lLCByZXF1ZXN0SWRlbnRpZmllciwgdmFsdWUpOyBcCisgICAgICAg
IFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2Fj
aGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6JXMgLSBzdWNjZWVkZWQg
LSAiIGZtdCwgZnVuY3Rpb25OYW1lLCB2YWx1ZSk7IFwKICAgICB9CiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCkBAIC02Myw1NyArNjIsNTcgQEAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3Ry
aW5nJiYgY2FjaGVOYW1lKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVu
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBTdHJpbmcmJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgib3BlbiAoJSIgUFJJdTY0ICIpIiwgcmVx
dWVzdElkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6b3BlbihtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY2FjaGVOYW1lKSwg
W2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9u
SUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1
bHQpIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJvcGVuIGNhY2hlIik7CisgICAgRW5n
aW5lOjpvcGVuKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIFdURk1v
dmUob3JpZ2luKSwgV1RGTW92ZShjYWNoZU5hbWUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgc2Vzc2lvbklEXShhdXRvJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSRUxFQVNF
X0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJvcGVuIiwgImNhY2hlIGlkZW50
aWZpZXIgaXMgJSIgUFJJdTY0LCBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
aWRlbnRpZmllcjsgfSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3Zl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJlbW92ZSAoJSIgUFJJdTY0ICIpIGNhY2hlICUiIFBSSXU2NCwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpyZW1vdmUobV9j
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBb
Y29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25J
RCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3Vs
dCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZSBjYWNoZSAlIiBQUkl1NjQs
IGNhY2hlSWRlbnRpZmllcik7CisgICAgRW5naW5lOjpyZW1vdmUobV9jb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEXShhdXRvJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJyZW1vdmUiLCAi
cmVtb3ZlZCBjYWNoZSAlIiBQUkl1NjQsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5pZGVudGlmaWVyOyB9KTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAgICBjYWxsYmFjayhy
ZXN1bHQpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FjaGVzICglIiBQUkl1NjQgIikiLCByZXF1ZXN0SWRlbnRp
Zmllcik7Ci0gICAgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIFtjb25u
ZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCBv
cmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhY2hlcyIpOworICAgIEVuZ2luZTo6cmV0cmll
dmVDYWNoZXMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgV1RGTW92
ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2Vzc2lvbklELCBvcmlnaW5dKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSRUxF
QVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJjYWNoZXMiLCAiY2FjaGVz
IHNpemUgaXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmluZm9z
LnNpemUoKTsgfSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpy
ZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwpCit2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsLCBSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZVJlY29yZHMgKCUiIFBSSXU2NCAiKSBpbiBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKG1f
Y29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwg
V1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVz
dWx0KSB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVSZWNvcmRzIGluIGNh
Y2hlICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBFbmdpbmU6OnJldHJpZXZlUmVj
b3JkcyhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklELCBjYWNoZUlkZW50
aWZpZXIsIFdURk1vdmUodXJsKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Np
b25JRF0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNU
SU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soInJldHJpZXZlUmVjb3JkcyIsICJyZWNvcmRzIHNp
emUgaXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsg
fSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Np
b25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zKQordm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyAoJSIgUFJJdTY0ICIp
IGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7
Ci0gICAgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJz
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRlbGV0ZU1h
dGNoaW5nUmVjb3JkcyBpbiBjYWNoZSAlIiBQUkl1NjQsIGNhY2hlSWRlbnRpZmllcik7CisgICAg
RW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNz
KCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxM
T1dFRF9JTl9DQUxMQkFDSygiZGVsZXRlTWF0Y2hpbmdSZWNvcmRzIiwgImRlbGV0ZWQgJWx1IHJl
Y29yZHMiLCAgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7
Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCks
IHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0
KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0
UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3JkcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4m
JiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHV0UmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hl
ICUiIFBSSXU2NCAiLCAlbHUgcmVjb3JkcyIsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50
aWZpZXIsIHJlY29yZHMuc2l6ZSgpKTsKLSAgICBFbmdpbmU6OnB1dFJlY29yZHMobV9jb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlY29yZHMpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJv
ciYmIHJlc3VsdCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInB1dFJlY29yZHMgaW4g
Y2FjaGUgJSIgUFJJdTY0ICIsICVsdSByZWNvcmRzIiwgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRz
LnNpemUoKSk7CisgICAgRW5naW5lOjpwdXRSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRF0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJB
Q0soInB1dFJlY29yZHMiLCAicHV0ICVsdSByZWNvcmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVl
KSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpQdXRSZWNvcmRzQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IDc5YTUzNzFiODA2ZTBlY2JjYjU1NzEyN2E5YjBiNDBk
ZDM2ODMyMzIuLmQ5NGVjNmY3NmQ3MjEzNzhkZTZjNzQwODI5OTk0ODViZGM0Y2YyNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC0yNywxNCArMjcsMjcgQEAKIAogI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgi
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERlY29kZXI7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVy
T3JFcnJvcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyT3JFcnJvciBjcmVhdGUoKSB7IHJldHVybiBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKTsgfTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzT3JFcnJvcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNPckVycm9yIGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpOyB9OworfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
c09yRXJyb3I+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
b3NPckVycm9yIGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpOyB9OworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFz
eW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3I+IHsK
KyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNPckVycm9yIGNyZWF0
ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJv
cjo6SW50ZXJuYWwpOyB9OworfTsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUwLDEz
ICs2MywxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIHZv
aWQgb3BlbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgY2FjaGVOYW1lKTsKLSAgICB2b2lkIHJl
bW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOworICAgIHZvaWQgb3BlbihQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVt
b3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNhY2hl
cyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7
CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYpOwotICAgIHZv
aWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7Ci0gICAgdm9pZCBwdXRSZWNv
cmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4m
Jik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2Fs
bGJhY2smJik7CisgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ5OTc1ZDRjZDgzNzI1MmQ0ODI4Yzlh
MjA2MDY2ZWRhNjE0ZGJhZDYuLmY4ZmY3NmU0YTJkNGM5ZWVkZGFiNTFlOGU4N2I3ZmRjN2ExYTAw
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTIxLDE3ICsyMSwxNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKLSAgICBSZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIERlcmVmZXJlbmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBS
ZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCisgICAgRGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpCiAKLSAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luLCBTdHJpbmcgY2FjaGVOYW1lKTsKLSAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKLSAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIpOworICAgIE9wZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSkgLT4gKFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJlc3VsdCkgQXN5
bmMKKyAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpIC0+IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JF
cnJvciByZXN1bHQpIEFzeW5jCisgICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIpIC0+IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc09yRXJyb3IgcmVzdWx0
KSBBc3luYworCisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNPckVycm9yIHJlc3VsdCkgQXN5bmMKKyAgICBEZWxldGVNYXRjaGluZ1Jl
Y29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMgb3B0aW9ucykgLT4gKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJ
ZGVudGlmaWVyc09yRXJyb3IgcmVzdWx0KSBBc3luYworICAgIFB1dFJlY29yZHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQpIC0+IChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCkgQXN5bmMKIAogICAgIENsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpFcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoU3RyaW5nIHJlcHJlc2VudGF0aW9uKSBBc3luYwot
Ci0gICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMIHVybCk7Ci0g
ICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyBvcHRpb25zKTsKLSAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBlMDY3MWU3NjY3NmNkOTM3
OWM2NWY3MWMxMjQ1ODY0NDM1Y2ZlZDIzLi5lZmEyZGI1NGIxMGM1YWJlNmI4Zjc3ODc3YWFjYWQ4
MmI0ODM1NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3
dGYvVW5leHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAzNmJkOTEy
ZTBiY2U0YWE4Y2IxOGFkOTAxYmJiM2ZlOTBhNzNjODAzLi5jNGZiMDBiMDgzYzQxMTJhMjJjODFl
YzQ1ZjA4OGRhMDljYjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCkBAIC04Myw2ICs4MywxMCBAQCBlbnVtIGNsYXNzIFdhaXRGb3JPcHRpb24gewogICAgIH0g
XAogd2hpbGUgKDApCiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFzeW5jUmVwbHlSZXN1bHQ+IHN0cnVj
dCBBc3luY1JlcGx5RXJyb3IgeworICAgIHN0YXRpYyBBc3luY1JlcGx5UmVzdWx0IGNyZWF0ZSgp
IHsgcmV0dXJuIHsgfTsgfTsKK307CisKIGNsYXNzIE1hY2hNZXNzYWdlOwogY2xhc3MgVW5peE1l
c3NhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGEz
NzczYjE0MTJmZTM2NWE0YTEyN2U4NmFjYTljYTY2Y2U2ZjIwN2MuLjUyNTE0OTAyYWJiZTFjYzcx
NDZiNDNiZTdjZDhjNDZiYWI0OTA1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtNTk0LDEzICs1OTQsMTUgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFu
ZGxlcihmaWxlKToKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwl
cz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGRlY29kZXIgPj4gJXM7XG4nICUgeC5uYW1lKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbicgJSB4Lm5hbWUpCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuICAgICAgICBjb21wbGV0aW9uSGFuZGxlcignICUgeC5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQQzo6QXN5bmNSZXBs
eUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xuICAg
ICAgICByZXR1cm47XG4gICAgfVxuJykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgY29tcGxldGlvbkhhbmRsZXIoJykKICAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWyd7IH0nIGZvciB4IGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsn
SVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHgudHlwZSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnKTtcbn1cblxuJykKIAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc2MjQ1NjRkYWYxOThkMDRmYzg0YWYy
ODY0MTI2NjdiM2U1OGUyOGMuLmRkYjNhMzAwMGNhZWY3MjM1YzI2NDZjZDBmNDA0OGNiY2ViNTYw
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTY5LDcgKzk2OSw2IEBACiAJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTUxN0E1MzBGMUY0N0E4NjIwMERDREMwQSAv
KiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMEUxRjQ3QTg0MzAwRENEQzBB
IC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUx
N0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMEQx
RjQ3QTg0MzAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07
Ci0JCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5
NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZD
MDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFNDE2
M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpA
QCAtMzA5OSw3ICszMDk4LDYgQEAKIAkJNDE1MUU1QzMxRkJCOTBBOTAwRTQ3RTJEIC8qIEZvcm1E
YXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRh
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTc4NTMwMjEyNzZC
NkYwMEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVy
cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2ViY29udGVudC1yZXNvdXJjZXMtdG8tcHJpdmF0
ZS1oZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0U0QUYyMEUy
RUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJvd3NlcnBsdWdpbi5zYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2I7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNDMUY0
MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjg5
LDcgKzMyODcsNiBAQAogCQk1MTdBNTMwQzFGNDc5RTk3MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
QTUzMEQxRjQ3QTg0MzAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUx
N0E1MzBFMUY0N0E4NDMwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDbGll
bnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBEIC8q
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3
Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CkBAIC02NTE2LDcgKzY1MTMsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDE4OTdFQ0Ux
RjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAogCQkJ
CTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgg
Ki8sCi0JCQkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdl
YkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLywKIAkJCQk0MUQxMjlEOTFGM0QxMDE0MDBEMTVF
NDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLywKIAkJCSk7CkBAIC04Njc2LDcgKzg2
NzIsNiBAQAogCQkJCTFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQzBBMTk1MjFDOEZGREZCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUMw
QTE5NUIxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRT
b3VyY2UuaCAqLywKLQkJCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEQgLyogV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUExRkVDMUExNjI3QjQ1
NjAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFB
MUZFQzFCMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJ
CQkzMzA5MzQ0MzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCkBAIC0xMTI1OCw3ICsxMTI1Myw2IEBACiAJCQkJNTdEQ0VENzAyMTQyRUU2
ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMEExOTU3MUM5MDA2OEYwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzBBMTk1MzFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdDRjBFMzE2M0E0ODZDMDBD
Mjk1MEQgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ0NzEzMTVCOTIy
MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMzA5MzQ0OTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDFiZDIwNjBjZDYxYWVhYjNmZGE3MTMxNDEwNWVkODE1ZGM5MzhhMGMuLjIxM2Vj
ODZjZWQ0YWI2NTZkMTM0MGIyYTc5OGVkYjBjMzViMjFiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTU2LDM0ICs1NiwzNCBAQCBJUEM6OkNvbm5lY3Rpb24mIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbm5lY3Rpb24oKQogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAK
LXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1l
LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6T3BlbihtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgY2FjaGVO
YW1lKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6T3BlbihtX3Nlc3Npb25JRCwgb3JpZ2luLCBj
YWNoZU5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3Zl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJlbW92ZShtX3Nlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJl
bW92ZShtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKSwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNo
ZXMobV9zZXNzaW9uSUQsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIERPTUNhY2hl
RW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNv
cmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwp
LCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIGNh
Y2hlSWRlbnRpZmllciwgdXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
dGlvbnMpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyksIDApOworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRz
KQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgRE9NQ2FjaGVF
bmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UHV0
UmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwg
cmVjb3JkcyksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlB1dFJlY29yZHMobV9zZXNzaW9uSUQs
IGNhY2hlSWRlbnRpZmllciwgcmVjb3JkcyksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9p
ZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKQpAQCAtOTYsNDIgKzk2LDEyIEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpEZXJlZmVyZW5j
ZShtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQotewotICAgIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7
Ci19Ci0KLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiBy
ZXN1bHQpCi17Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwotfQotCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJbmZv
c09yRXJyb3ImJiByZXN1bHQpCi17Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRl
Q2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotfQotCi12b2lkIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIFJlY29yZHNPckVycm9yJiYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0
KSk7Ci19Ci0KLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3JkSWRlbnRpZmllcnNPckVy
cm9yJiYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KLXZv
aWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KQot
ewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KIHZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbiB7IG1fc2Vzc2lvbklELCBv
cmlnaW4gfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZW5n
aW5lUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpFbmdpbmVSZXByZXNlbnRhdGlvbiB7
IG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CmluZGV4IGMxNmYzMTBlZGYzODAyMzUxYzg3MzFkNzI2Njk4MmVkOGUzM2I1MTguLjRlNThhZmMx
ODMxOWM1NTM4YjhjNTRiMTliZDhkNGYxN2Q4N2NlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApA
QCAtNTIsMjkgKzUyLDIxIEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKCk7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uCi0gICAgdm9p
ZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIGRvUmVt
b3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIp
IGZpbmFsOwotICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRl
cikgZmluYWw7CisgICAgdm9pZCBvcGVuKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNv
bnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBjb25zdCBVUkwmKSBmaW5hbDsKLSAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikg
ZmluYWw7Ci0gICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmRzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlv
bih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgYmF0Y2hQdXRP
cGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIHJlZmVyZW5jZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVyZWZlcmVuY2UodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRp
b24oV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGVuZ2luZVJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZShjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKSBmaW5hbDsKIAotICAgIHZvaWQgb3BlbkNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKLSAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKLSAgICB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NP
ckVycm9yJiYpOwotCi0gICAgdm9pZCB1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3ImJik7Ci0gICAg
dm9pZCBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOwotICAg
IHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKLQogICAg
IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX3Byb3ZpZGVyOwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNjdlYzkxNDc1M2RlZmYwMWZiOTI3Y2Yx
YzhhODViNmM0YTQ0MmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gewotICAgIE9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJl
c3VsdCk7Ci0gICAgUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciByZXN1bHQpOwot
ICAgIFVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NPckVycm9yIHJlc3VsdCk7Ci0KLSAgICBVcGRhdGVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3Jkc09yRXJyb3IgcmVzdWx0KTsKLSAgICBEZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNPckVycm9yIHJlc3VsdCk7Ci0gICAgUHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzT3JFcnJvciByZXN1bHQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NTdlZGQ5Mjc1YmQ2MDU5NjA0NDg3NGY0MDEwMWU0ZTg0MGZhMTg4My4uYWUzODgzZDg2YjY4OWU2
NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCi0j
aW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAt
MTIxLDEwICsxMTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlk
ZXIoKS5wcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMzVkOWFjMTliNTc4MDQ2MjQyZmY2OGE5
MWY3Zjg0MWUxOTg2MDcuLjc1ODFlNWVlNzQ3NWZkOTMyMmJkZmIyN2NlNjJhMjQyZmFiYjYyMjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiBjYWxsYmFja3Mg
c2hvdWxkIGJlIGNvbXBsZXRlZCBvbiBuZXR3b3JrIGNvbm5lY3Rpb24gY2xvc2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvY2FjaGUt
c3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5l
dHdvcmtwcm9jZXNzLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA1LTIyICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNdWx0aXBsZSB2aWRlb3MgKHdpdGgg
YXVkaW9zKSB3aXRoIGF1dG9wbGF5ICYgcGxheWlubGluZSBub3Qgd29ya2luZy4gT25seSBvbmUg
dmlkZW8gcGxheSBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9j
YWNoZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nlc3MtY3Jhc2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5l
dHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWQ5NjMyY2MwNjU3
NDI2N2VhYTBlN2Y2M2M5Y2E5ODY3MDAxZjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNy
YXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogQ2FjaGUg
QVBJIG9wZXJhdGlvbiBmYWlsZWQ6IEludGVybmFsIGVycm9yCitDT05TT0xFIE1FU1NBR0U6IENh
Y2hlIEFQSSBvcGVyYXRpb24gZmFpbGVkOiBJbnRlcm5hbCBlcnJvcgorQ09OU09MRSBNRVNTQUdF
OiBDYWNoZSBBUEkgb3BlcmF0aW9uIGZhaWxlZDogSW50ZXJuYWwgZXJyb3IKK0NPTlNPTEUgTUVT
U0FHRTogQ2FjaGUgQVBJIG9wZXJhdGlvbiBmYWlsZWQ6IEludGVybmFsIGVycm9yCitDT05TT0xF
IE1FU1NBR0U6IENhY2hlIEFQSSBvcGVyYXRpb24gZmFpbGVkOiBJbnRlcm5hbCBlcnJvcgorCitQ
QVNTIFBlbmRpbmcgY2FjaGUgb3BlcmF0aW9uIG9uIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9y
YWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDc0ZGQxNDM0NGQ3ZGE1ZWU2NzM3NGQzNTUzNmJiOTdjMzJjZDQyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdl
LW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhY2hlIFN0b3JhZ2U6IG5ldHdvcmsgcHJvY2Vz
cyBjcmFzaDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMg
dGVzdCA9PiB7CisgICAgY29uc3QgY2FjaGUgPSBhd2FpdCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0
MSIpOworICAgIGNvbnN0IHJlc3BvbnNlMU1vID0gbmV3IFJlc3BvbnNlKG5ldyBBcnJheUJ1ZmZl
cigxMDI0ICogMTAyNCkpOworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCgiUmVxdWlyZXMgaW50ZXJuYWxzIEFQSSIpOworICAgIHRlc3RS
dW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IsIFByb21pc2UuYWxsKFsKKyAgICAgICAgY2FjaGUucHV0
KCIxTW8xIiwgcmVzcG9uc2UxTW8uY2xvbmUoKSksCisgICAgICAgIGNhY2hlLnB1dCgiMU1vMiIs
IHJlc3BvbnNlMU1vLmNsb25lKCkpLAorICAgICAgICBjYWNoZS5wdXQoIjFNbzMiLCByZXNwb25z
ZTFNby5jbG9uZSgpKSwKKyAgICAgICAgY2FjaGUucHV0KCIxTW80IiwgcmVzcG9uc2UxTW8uY2xv
bmUoKSksCisgICAgICAgIGNhY2hlLnB1dCgiMU1vNSIsIHJlc3BvbnNlMU1vLmNsb25lKCkpLAor
ICAgIF0pKTsKK30sICJQZW5kaW5nIGNhY2hlIG9wZXJhdGlvbiBvbiBuZXR3b3JrIHByb2Nlc3Mg
Y3Jhc2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370480</attachid>
            <date>2019-05-22 20:26:36 -0700</date>
            <delta_ts>2019-05-23 10:58:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195757-20190522202635.patch</filename>
            <type>text/plain</type>
            <size>82462</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JkNWQ0YTQ5NGMwMzhh
NzJmMzNmNGExOTZlYzIwNzkwY2U4MWU2Ny4uZTE5MjJlMTAxZDcyOTA2YzQ5NzE3NjZhZTdiY2Jm
YmFjNWQ0MzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA1LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uIGNhbGxiYWNrcyBzaG91bGQgYmUgY29tcGxldGVkIG9uIG5ldHdvcmsgY29ubmVjdGlv
biBjbG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk1NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSBIYXNoTWFwLWJhc2VkIGNhbGxiYWNrcyB0byBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLgorICAgICAgICBNYWtlIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gZGVmYXVsdCBBUEkgdG8g
aW1wbGVtZW50IHVzZSBjYWxsYmFja3MuCisgICAgICAgIFRoaXMgaXMgdXNlZCBieSBXZWJLaXQg
bGF5ZXIgdG8gZG8gQXN5bmNSZXBseSBJUEMuCisKKyAgICAgICAgTW92ZSBET01DYWNoZUVuZ2lu
ZSBjYWxsYmFja3MgdG8gQ29tcGxldGlvbkhhbmRsZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwK
KworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZWNvcmRzRGF0YUZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29y
ZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNGcm9t
UmVjb3Jkc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jk
c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpv
cGVuT3JSZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzQ29tcGxldGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jk
cyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRy
aWV2ZVJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpwdXRSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OnJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkZXJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhclBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAg
ICogcGFnZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlUHJvdmlkZXI6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24pOgorCiAyMDE5LTA1
LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNdWx0aXBs
ZSB2aWRlb3MgKHdpdGggYXVkaW9zKSB3aXRoIGF1dG9wbGF5ICYgcGxheWlubGluZSBub3Qgd29y
a2luZy4gT25seSBvbmUgdmlkZW8gcGxheSBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlN2JiOTJh
Njc3M2M2NDQ5NjVkMTIzMzc5Mjc5ODIyYzc1YzdmNDcuLjY4Nzg4MWYxOGRkZDE1MTQ1ZTk5ODBl
YTFmODQxNGIzZmNmMTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMDUtMjIg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gY2FsbGJhY2tzIHNob3VsZCBiZSBjb21wbGV0ZWQgb24gbmV0d29yayBjb25u
ZWN0aW9uIGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgYWNjb3JkaW5nIG5ldyBXZWJDb3JlIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24g
aW50ZXJmYWNlLgorICAgICAgICBVc2UgQXN5bmMgSVBDIHJlcGxpZXMgc28gdGhhdCB0aGUgY29t
cGxldGlvbiBoYW5kbGVycyBhcmUgY2FsbGVkIG9uIG5ldHdvcmsgY3Jhc2guCisKKyAgICAgICAg
QWxsb3cgdG8gaGF2ZSBzcGVjaWZpYyBlcnJvciBoYW5kbGluZyBpbiBjYXNlIG9mIGNhbmNlbGxl
ZCByZXBseSBvciBiYWRseSBkZWNvZGVkIG1lc3NhZ2UuCisgICAgICAgIFRoaXMgYWxsb3dzIHRv
IHJlamVjdCB0aGUgY29ycmVzcG9uZGluZyBKUyBwcm9taXNlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlcXVlc3RTcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjp3cml0ZVJlY29yZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRj
aGluZ1JlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpwdXRSZWNvcmRzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvcj46OmNyZWF0ZSk6
CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkSWRlbnRpZmllcnNPckVycm9yPjo6Y3JlYXRlKToKKyAgICAgICAgKElQQzo6QXN5bmNS
ZXBseUVycm9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zT3JFcnJvcj46OmNy
ZWF0ZSk6CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3Jkc09yRXJyb3I+OjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6QXN5bmNSZXBseUVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKwogMjAxOS0wNS0yMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1vZGVybiBhc3luYyBJUEMg
Zm9yIEVuZ2luZVJlcHJlc2VudGF0aW9uQ29tcGxldGVkIGFuZCBDbGVhck1lbW9yeVJlcHJlc2Vu
dGF0aW9uQ29tcGxldGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCBlMzk0ZTU2YThmOGMzOGFmY2Q4Yzk2
ZDkxNDI3MTYzMmY4YTJhNjAwLi40YWNiOGFhYmQ4NjdkOGRlMjIwOTM3OWIyNjBjNjFmZmZmZWI0
OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTMzLDY1ICszMyw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU7CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nUmVxdWVzdHMoKQotewotICAgIGF1dG8g
b3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX29wZW5BbmRSZW1v
dmVDYWNoZVBlbmRpbmdSZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG9wZW5B
bmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2so
bWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7Ci0KLSAgICBh
dXRvIHJldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX3JldHJpZXZlQ2Fj
aGVzUGVuZGluZ1JlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmV0cmlldmVD
YWNoZXNQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOwotCi0gICAgYXV0byByZXRy
aWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMgPSBXVEZNb3ZlKG1fcmV0cmlldmVSZWNvcmRzUGVu
ZGluZ1JlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmV0cmlldmVSZWNvcmRz
UGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsKLQotICAgIGF1dG8gYmF0Y2hEZWxl
dGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMgPSBXVEZNb3ZlKG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5k
aW5nUmVxdWVzdHMpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBiYXRjaERlbGV0ZUFuZFB1
dFBlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0g
ICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVy
OwotICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgZG9PcGVuKHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4sIGNhY2hlTmFtZSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKLXsKLSAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7Ci0gICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVx
dWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBk
b1JlbW92ZShyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCi17Ci0gICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVl
c3RJZGVudGlmaWVyOwotICAgIG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb1JldHJpZXZlQ2Fj
aGVzKHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpOwotfQotCi12b2lk
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsK
LSAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZp
ZXI7Ci0gICAgbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb1JldHJpZXZlUmVjb3JkcyhyZXF1
ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwpOwotfQotCi12b2lkIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
IG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7Ci0g
ICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25z
KSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgY29tcHV0ZVJlYWxCb2R5U2l6ZShjb25z
dCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHVpbnQ2NF90IHJl
c3VsdCA9IDA7CkBAIC0xMjMsNDIgKzY0LDQgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6Y29tcHV0ZVJlY29yZEJvZHlTaXplKGNvbnN0IEZldGNoUmVzcG9uc2UmIHJlc3AKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3Jk
PiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAg
ICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7
Ci0gICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGRvQmF0Y2hQdXRPcGVyYXRpb24ocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSk7Ci19Ci0K
LXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1
bHQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRp
bmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KQotewot
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy50
YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQp
KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLnRha2Uo
cmVxdWVzdElkZW50aWZpZXIpKQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwot
fQotCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVy
cm9yPiYmIHJlc3VsdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVB
bmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNh
bGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRXhwZWN0
ZWQ8VmVjdG9yPHVpbnQ2NF90PiwgRXJyb3I+JiYgcmVzdWx0KQotewotICAgIGlmIChhdXRvIGNh
bGxiYWNrID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJ
ZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA5YWE0MDhkMzVhNGUwZTI1ZmFhNzE2
YWYyMDNmNjYwMzRhMGEzMzUxLi44N2VhYjcxODYyNmM2MDI3NDE0ODlkYmMyYmZhNzdlODY1NjVh
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaApAQCAtMzcsNTYgKzM3LDI3IEBAIGNsYXNzIEZldGNoUmVzcG9uc2U7
CiAKIGNsYXNzIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkpOyB9CiAgICAgdmlydHVhbCB+Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgb3Blbihjb25zdCBDbGllbnRPcmlnaW4m
LCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmV0
cmlldmVDYWNoZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwg
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b3Blbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2Fj
aGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0cmlldmVDYWNo
ZXMoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSA9IDA7CiAKLSAgICB2b2lkIHJldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIERPTUNhY2hlRW5naW5l
OjpSZWNvcmRzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlP
cHRpb25zJiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwot
ICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJik7Ci0gICAgdWludDY0X3QgY29tcHV0ZVJlY29yZEJvZHlTaXplKGNv
bnN0IEZldGNoUmVzcG9uc2UmLCBjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5Jik7
CisgICAgdmlydHVhbCB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJlZmVyZW5jZSh1aW50NjRf
dCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZlcmVu
Y2UodWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVmZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyB9
CisgICAgdWludDY0X3QgY29tcHV0ZVJlY29yZEJvZHlTaXplKGNvbnN0IEZldGNoUmVzcG9uc2Um
LCBjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5Jik7CiAKICAgICAvLyBVc2VkIG9u
bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMuCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyTWVtb3J5UmVw
cmVzZW50YXRpb24oY29uc3QgQ2xpZW50T3JpZ2luJiwgRE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGVuZ2luZVJlcHJlc2VudGF0aW9u
KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFj
ayhTdHJpbmcgeyB9KTsgfQorICAgIHZpcnR1YWwgdm9pZCBlbmdpbmVSZXByZXNlbnRhdGlvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKSB7IGNhbGxi
YWNrKFN0cmluZyB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNw
YWNlVXNhZ2UoY29uc3QgQ2xpZW50T3JpZ2luJikgeyB9CiAKLSAgICB2b2lkIGNsZWFyUGVuZGlu
Z1JlcXVlc3RzKCk7Ci0KIHByb3RlY3RlZDoKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkg
PSAgZGVmYXVsdDsKLQotICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVy
LCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSB7
IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCByZXN1bHQpOyB9Ci0gICAgdm9pZCBy
ZW1vdmVDb21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQo
aWRlbnRpZmllciwgcmVzdWx0KTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ2Fj
aGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
c09yRXJyb3ImJik7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzT3JFcnJvciYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09y
RXJyb3ImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmll
cnNPckVycm9yJiYpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
LyogY2FjaGVOYW1lICovKSB7IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IC8qIHVwZGF0ZUNvdW50
ZXIgKi8pIHsgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCB7IH0pOyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgVVJMJiAvKiB1cmwgKi8pIHsg
dXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hl
UXVlcnlPcHRpb25zJiYpIHsgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVjdG9yPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZCkpOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5PclJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRl
bnRpZmllck9yRXJyb3ImKTsKLQotICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5l
OjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVx
dWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3ND
YWxsYmFjaz4gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jk
c1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVuZ2luZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjaz4gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1
ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9vcGFxdWVSZXNwb25zZVRv
U2l6ZVdpdGhQYWRkaW5nTWFwOwotCi0gICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZp
ZXIgeyAwIH07CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IGI3OWRkMTJmNmU1ZDQ1ZDE5MTM5
NjEzNGFlZmFlZTlmNTkzM2E2ZWQuLmVmYjA0Mjk5YjkwZWU4NTUxMzNiN2MxNGMxZDliODY0NTcy
MTNkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTk5LDE5ICsxMDAsMTkgQEAgc3RydWN0IENhY2hlSWRlbnRpZmllck9wZXJhdGlv
blJlc3VsdCB7CiB9OwogCiB1c2luZyBDYWNoZUlkZW50aWZpZXJPckVycm9yID0gRXhwZWN0ZWQ8
Q2FjaGVJZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0LCBFcnJvcj47Ci11c2luZyBDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBDYWNoZUlkZW50aWZpZXJP
ckVycm9yJik+OwordXNpbmcgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImKT47CiAKIHVzaW5nIFJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciA9IEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPjsK
LXVzaW5nIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVj
b3JkSWRlbnRpZmllcnNPckVycm9yJiYpPjsKK3VzaW5nIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKT47
CiAKIAogdXNpbmcgQ2FjaGVJbmZvc09yRXJyb3IgPSBFeHBlY3RlZDxDYWNoZUluZm9zLCBFcnJv
cj47Ci11c2luZyBDYWNoZUluZm9zQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVJ
bmZvc09yRXJyb3ImJik+OwordXNpbmcgQ2FjaGVJbmZvc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChDYWNoZUluZm9zT3JFcnJvciYmKT47CiAKIHVzaW5nIFJlY29yZHNPckVycm9y
ID0gRXhwZWN0ZWQ8VmVjdG9yPFJlY29yZD4sIEVycm9yPjsKLXVzaW5nIFJlY29yZHNDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChSZWNvcmRzT3JFcnJvciYmKT47Cit1c2luZyBSZWNvcmRz
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlY29yZHNPckVycm9yJiYpPjsKIAot
dXNpbmcgQ29tcGxldGlvbkNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEVy
cm9yPiYmKT47Cit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPEVycm9yPiYmKT47CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGlu
ZSB2b2lkIENhY2hlSW5mb3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMWViZGQ1ZGU0OGE3ZTdlMWM5NmEwMWM3OGZlZDdk
YTViYzRmYjg4OC4uMjA2YzI0MThlOTg3ZmVkZmRhMjEwMWU2ZWJhNWY1YTViYTBhZjNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC04OCw2ICs4OCwzMSBAQCBzdGF0aWMgUmVjb3Jk
IGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoQ3Jvc3NUaHJlYWRSZWNvcmREYXRhJiYgZGF0YSkK
ICAgICB9OwogfQogCitzdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+
IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCit7
CisgICAgcmV0dXJuIFdURjo6bWFwKHJlY29yZHMsIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsK
K30KKworc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRh
PiwgRXJyb3I+IHJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRzKGNvbnN0IFJlY29yZHNPckVy
cm9yJiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CisKKyAgICByZXR1cm4gcmVjb3Jk
c0RhdGFGcm9tUmVjb3JkcyhyZXN1bHQudmFsdWUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVj
dG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNv
cmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIHJldHVybiBXVEY6Om1hcChXVEZNb3ZlKHJl
Y29yZHNEYXRhKSwgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoRXhwZWN0ZWQ8
VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiYmIHJlY29yZHNEYXRhKQorewor
ICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKKyAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNv
cmRzRGF0YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsKK30KKwogUmVmPFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24+IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0
ZShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0byBjb25uZWN0aW9uID0gYWRv
cHRSZWYoKm5ldyBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKHNjb3BlKSk7CkBAIC0xMDks
MzEgKzEzNCw0NiBAQCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp+V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbigpCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRD
b25uZWN0aW9uID0gV1RGTW92ZShtX21haW5UaHJlYWRDb25uZWN0aW9uKV0oKSBtdXRhYmxlIHsg
fSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAgIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX29wZW5BbmRS
ZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUo
Y2FsbGJhY2spKTsKKwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VS
ZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFk
Q29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENv
cHkoKSwgY2FjaGVOYW1lID0gY2FjaGVOYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFt3
b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSAo
Y29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50
aWZpZXIsIHJlc3VsdF0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KS5vcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOworICAgICAgICAgICAg
ICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVj
dGlvbigpLm9wZW5PclJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsK
ICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
bW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJy
b3ImIHJlc3VsdCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fb3BlbkFuZFJlbW92ZUNh
Y2hlUGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQorICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOworfQorCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
bW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJl
cXVlc3RJZGVudGlmaWVyOworICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3Rz
LmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCiAgICAgY2FsbE9u
TWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFp
blRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRp
ZmllciwgY2FjaGVJZGVudGlmaWVyXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENv
bm5lY3Rpb24tPnJlbW92ZShjYWNoZUlkZW50aWZpZXIsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3Zl
KHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdIChjb25z
dCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjYWNoZUlkZW50aWZpZXIsICFyZXN1bHQuaGFzX3ZhbHVlKCkgfHwgIXJl
c3VsdC52YWx1ZSgpLmlkZW50aWZpZXIgfHwgcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciA9PSBj
YWNoZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0XSAoYXV0byYgc2NvcGUpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29w
ZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRp
ZmllciwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5vcGVuT3JSZW1vdmVDb21wbGV0ZWQo
cmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29w
OjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVz
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBDYWNo
ZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9yZXRyaWV2ZUNhY2hlc1Bl
bmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsK
KwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50
aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwg
cmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiA9IG9yaWdpbi5pc29sYXRlZENvcHkoKSwgdXBkYXRl
Q291bnRlcl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRy
aWV2ZUNhY2hlcyhvcmlnaW4sIHVwZGF0ZUNvdW50ZXIsIFt3b3JrZXJUaHJlYWQgPSBXVEZNb3Zl
KHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXSAoQ2FjaGVJbmZvc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVJbmZvc09yRXJyb3IgaXNvbGF0ZWRS
ZXN1bHQ7CkBAIC0xNDMsNjQgKzE4Myw0MyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAg
ICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSByZXN1bHQudmFsdWUoKS5pc29sYXRlZENvcHko
KTsKIAogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShpc29sYXRlZFJlc3VsdCldIChh
dXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xv
YmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkudXBkYXRlQ2FjaGVzKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnJl
dHJpZXZlQ2FjaGVzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkp
OwogICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
ZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCi17Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25uZWN0aW9uLCBjYWNoZUlk
ZW50aWZpZXJdKCkgewotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVmZXJlbmNlKGNh
Y2hlSWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQordm9pZCBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCBjYWNoZUlkZW50aWZpZXJdKCkgewotICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlv
bi0+ZGVyZWZlcmVuY2UoY2FjaGVJZGVudGlmaWVyKTsKLSAgICB9KTsKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRl
bnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVj
b3Jkcyhjb25zdCBWZWN0b3I8UmVjb3JkPiYgcmVjb3JkcykKK3ZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgVVJMJiB1cmwsIFJlY29yZHNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJldHVy
biBXVEY6Om1hcChyZWNvcmRzLCB0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YSk7Ci19CisgICAgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAg
IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShjYWxsYmFjaykpOwogCi1zdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMo
Y29uc3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdC5oYXNfdmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigpKTsKLQot
ICAgIHJldHVybiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlc3VsdC52YWx1ZSgpKTsKLX0KLQot
c3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZlY3Rv
cjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVjb3Jkc0RhdGEpCi17Ci0gICAgcmV0dXJuIFdU
Rjo6bWFwKFdURk1vdmUocmVjb3Jkc0RhdGEpLCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKTsK
LX0KLQotc3RhdGljIGlubGluZSBSZWNvcmRzT3JFcnJvciByZWNvcmRzT3JFcnJvckZyb21SZWNv
cmRzRGF0YShFeHBlY3RlZDxWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+JiYg
cmVjb3Jkc0RhdGEpCi17Ci0gICAgaWYgKCFyZWNvcmRzRGF0YS5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlY29yZHNEYXRhLmVycm9yKCkpOwotICAgIHJldHVy
biByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEudmFsdWUoKSkpOwot
fQotCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsKQotewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1h
a2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhy
ZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVj
dGlvbi0+cmV0cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgdXJsLCBbd29ya2VyVGhyZWFk
ID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJy
b3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFtyZXN1bHQgPSByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3Jk
cyhyZXN1bHQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKS51cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRz
T3JFcnJvckZyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlc3VsdCkpKTsKKyAgICAgICAgICAgICAg
ICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24oKS5yZXRyaWV2ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlY29yZHNP
ckVycm9yRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVzdWx0KSkpOwogICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQog
Ci12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlv
bnMpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3Jkc09yRXJyb3ImJiByZXN1
bHQpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgY2FsbGJhY2soV1RGTW92
ZShyZXN1bHQpKTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRj
aERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fYmF0Y2hEZWxldGVBbmRQ
dXRQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2Nv
cGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rp
b24sIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QgPSByZXF1ZXN0
Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPmJhdGNoRGVsZXRlT3BlcmF0aW9u
KGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSwgW3dvcmtlclRocmVh
ZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50
aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICB3b3JrZXJUaHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CkBAIC0yMTAsOCArMjI5
LDE3IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9w
ZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpCiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2Vy
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYm
IHJlY29yZHMpCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1
aW50NjRfdD4sIEVycm9yPiYmIHJlc3VsdCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
YmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikp
CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiByZWNvcmRzLCBET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAgIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAg
ICBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworCiAgICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhy
ZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBt
X21haW5UaHJlYWRDb25uZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVy
LCByZWNvcmRzRGF0YSA9IHJlY29yZHNEYXRhRnJvbVJlY29yZHMocmVjb3JkcyldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihjYWNo
ZUlkZW50aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkp
LCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmll
cl0gKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVu
dGlmaWVyLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CkBAIC0yMjEsNCArMjQ5LDQzIEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAgICAgfSk7CiB9
CiAKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRXhwZWN0ZWQ8VmVjdG9yPHVpbnQ2NF90Piwg
RXJyb3I+JiYgcmVzdWx0KQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9iYXRjaERlbGV0
ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQoreworICAgIGNh
bGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVj
dGlvbiwgY2FjaGVJZGVudGlmaWVyXSgpIHsKKyAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24t
PnJlZmVyZW5jZShjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFp
blRocmVhZENvbm5lY3Rpb24sIGNhY2hlSWRlbnRpZmllcl0oKSB7CisgICAgICAgIG1haW5UaHJl
YWRDb25uZWN0aW9uLT5kZXJlZmVyZW5jZShjYWNoZUlkZW50aWZpZXIpOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyUGVuZGluZ1JlcXVlc3Rz
KCkKK3sKKyAgICBhdXRvIG9wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cyA9IFdURk1v
dmUobV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBvcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisg
ICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3Rv
cHBlZCkpOworCisgICAgYXV0byByZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyA9IFdURk1v
dmUobV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IHJldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQorICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsK
KworICAgIGF1dG8gcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX3Jl
dHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IHJldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7CisKKyAg
ICBhdXRvIGJhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX2JhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDog
YmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDdhYTA1
YWRiY2JkMGIzYTQ1NzgzNTI5YzRmZGNkOTY2ZGNmNjk4YmEuLjExOWQ0Y2M2MTIwODNkYTcyODVm
NGY3OWMyMmRlNTljOWIwYzRiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0zOCwyNSAr
MzgsNDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJik7CiAgICAgfldvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQgY2xlYXJQZW5kaW5nUmVxdWVzdHMoKTsKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFdvcmtlckds
b2JhbFNjb3BlJik7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLgot
ICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBkb1JlbW92
ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBm
aW5hbDsKLSAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpIGZpbmFsOwor
ICAgIHZvaWQgb3Blbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMo
Y29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgVVJMJikgZmluYWw7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYm
LCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCByZWZlcmVuY2UodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikgZmluYWw7CiAKLSAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikg
ZmluYWw7Ci0gICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpOworICAg
IHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcik7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsK
KyAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYpOworICAgIHZvaWQgZG9CYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNo
ZVF1ZXJ5T3B0aW9ucyYmKTsKKyAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+JiYpOworCisgICAgdm9pZCBvcGVuT3JSZW1vdmVDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpDYWNoZUlk
ZW50aWZpZXJPckVycm9yJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NPckVycm9y
JiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3ImJik7CisgICAgdm9pZCBk
ZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNo
ZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOworICAgIHZvaWQgcHV0UmVjb3Jk
c0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Nj
b3BlOwogCiAgICAgUmVmUHRyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fbWFpblRocmVhZENv
bm5lY3Rpb247CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2s+IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2s+
IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjaz4gbV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5n
UmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2s+IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHM7CisK
KyAgICB1aW50NjRfdCBtX2xhc3RSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuaAppbmRleCBlMWZjYzJiOWMyODYwNTVmZjUyOGM2MDlkZDI5MzhlYzI1MzI1ZjkwLi42MzZm
M2QwYTExOWI3YzY3ZmJiZGU3ZjYxZjFmN2QwZjBjNTliZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhY2hlU3RvcmFnZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oCkBAIC0zMyw4ICszMywyMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBEdW1teUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbiB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmPER1bW15Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24pOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIG9wZW4o
Y29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIHJlbW92ZSh1aW50
NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsIHsg
fQorICAgICAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2
NF90LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpIGZpbmFsIHsgfQorICAg
ICAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCwgY29uc3QgVVJMJiwgRE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNDYWxsYmFjayYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBiYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVy
eU9wdGlvbnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJikg
ZmluYWwgeyB9CisgICAgICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QsIFZlY3Rv
cjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRp
ZmllcnNDYWxsYmFjayYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCByZWZlcmVuY2UodWludDY0
X3QpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90KSBmaW5hbCB7
IH0KKyAgICB9OworCiAgICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWNoZVN0b3JhZ2VQcm92aWRlcik7IH0KLSAgICB2
aXJ0dWFsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKFBBTDo6U2Vzc2lvbklEKSB7IHJldHVybiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
cmVhdGUoKTsgfQorICAgIHZpcnR1YWwgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0
ZUNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQpIHsgcmV0dXJuIER1bW15Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y3JlYXRlKCk7IH0KICAgICB2aXJ0dWFsIH5DYWNoZVN0b3Jh
Z2VQcm92aWRlcigpIHsgfTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggOTM0
MDEzODU4NTlkNzkwOGQ5NGIzN2RmNjY4YTY5ZGIyNzEyZjU3MC4uYjhlMDhjMWZiNDJiMTdiNDY3
OTJmZGJiOTZiODE3MjAxMjE3NTlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xNjMsOCArMTYz
LDYgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogCiAgICAgV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgotCiAgICAg
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5t
ZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA3ZDBiZTMxOWViMTM1YzZhMTYxYzZhMjIyNTJjZGQ2YzRkM2M2N2M4
Li40MjZiODY3NWRmNGI0MzBiNGYzY2VhNmY4NTcwZTRhMjBjNmIxMmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTExNyw3ICsxMTcs
NiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZS5oCi0k
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJDb25uZWN0aW9uTWVzc2FnZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDZiYTBjOWZkOWE1YTFiYTdhOGYxN2Y2NjY2MTViZTAzODZkZTQzZDUuLmMxMWIz
ZjhlYmVlZDQyZGUwNDFiM2RkNGM5ZDUxMmFmZDRlZDY3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTE1MCw3ICsxNTAsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSBcCiAgICAgV2ViQXV0b21hdGlvblNlc3Np
b24gXAogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgXAotICAgIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gXAogICAgIFdlYkNvbm5lY3Rpb24gXAogICAgIFdlYkNvb2tpZU1hbmFnZXIg
XAogICAgIFdlYkNvb2tpZU1hbmFnZXJQcm94eSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggNGNj
NjdmODJjYTg0ZTMyZWVkODhiMjJkZTE4NTY5ZmUyYzU4YWZhNy4uODBhYWI2OGQzNmM0NjhhNGIw
Y2I5MDhmNmNmZjY1MGMyYWY1MzFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNjAwLDcgKzYw
MCw3IEBAIHZvaWQgRW5naW5lOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseU9uQmFja2dyb3Vu
ZFRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIENvCiAKIHZvaWQgRW5naW5lOjpjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBXZWJD
b3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0g
ICAgcmVhZENhY2hlc0Zyb21EaXNrKG9yaWdpbiwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKENhY2hlc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICByZWFkQ2FjaGVzRnJvbURpc2sob3Jp
Z2luLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oQ2FjaGVzT3JFcnJvciYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMDhiOTRiNDdlNjQwNGFhNmQ5OGQxYjA0Y2M4
MzEwYzhhMDFmODU3My4uNWE3YmUyN2ZhNGEwMzVmYWIzZWNlYTJiNjY2MmVjODRmNTBjZTE3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQg
Q2FjaGVzOjpyZXF1ZXN0U3BhY2UodWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNvbXBsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3F1b3Rh
TWFuYWdlci0+cmVxdWVzdFNwYWNlKHNwYWNlUmVxdWlyZWQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShhdXRvIGRlY2lzaW9uKSB7CisgICAgbV9xdW90YU1hbmFnZXItPnJlcXVlc3RT
cGFjZShzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBk
ZWNpc2lvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueToKICAgICAg
ICAgICAgIGNhbGxiYWNrKEVycm9yOjpRdW90YUV4Y2VlZGVkKTsKQEAgLTU0MCw3ICs1NDAsNyBA
QCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9zdG9yYWdlLT5zdG9yZShDYWNoZTo6ZW5jb2RlKHJlY29yZEluZm9ybWF0aW9uLCByZWNvcmQp
LCB7IH0sIFtwcm90ZWN0ZWRTdG9yYWdlID0gbWFrZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oaW50IGVycm9yKSB7CisgICAgbV9zdG9yYWdlLT5zdG9yZShD
YWNoZTo6ZW5jb2RlKHJlY29yZEluZm9ybWF0aW9uLCByZWNvcmQpLCB7IH0sIFtwcm90ZWN0ZWRT
dG9yYWdlID0gbWFrZVJlZigqbV9zdG9yYWdlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oaW50IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6OndyaXRlUmVjb3JkIGZh
aWxlZCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwogICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6
OldyaXRlRGlzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAppbmRleCBk
ZDJiMTJlYmUyNGRjNjM1N2M1YzhjOWM0NGRhZDk1N2YwNTZiNDU4Li42MjgwOThlMTRjMWQwNWNj
OWZhMjU3ZGQ4YTEwMmU3MjZmZjI3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVRdWVyeU9wdGlvbnMuaD4KIApAQCAtNDEs
MTEgKzQwLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2U7CiAjZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiJXAgLSBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uOjoiIGZtdCwgJm1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCksICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FM
TEJBQ0soZnVuY3Rpb25OYW1lLCBmbXQsIHJlc3VsdEdldHRlcikgXAogICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKVwKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoc2Vzc2lvbklELmlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBDYWNoZVN0b3JhZ2UsICIlcCAtIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OiVzICglIiBQUkl1NjQgIikgLSBmYWlsZWQgLSBlcnJvciAlZCIs
IGNvbm5lY3Rpb24ucHRyKCksIGZ1bmN0aW9uTmFtZSwgcmVxdWVzdElkZW50aWZpZXIsIChpbnQp
cmVzdWx0LmVycm9yKCkpOyBcCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHNlc3Npb25J
RC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6JXMgLSBmYWlsZWQgLSBlcnJvciAlZCIsIGZ1bmN0aW9uTmFtZSwg
KGludClyZXN1bHQuZXJyb3IoKSk7IFwKICAgICBlbHNlIHtcCiAgICAgICAgIGF1dG8gdmFsdWUg
PSByZXN1bHRHZXR0ZXIocmVzdWx0LnZhbHVlKCkpOyBcCiAgICAgICAgIFVOVVNFRF9QQVJBTSh2
YWx1ZSk7IFwKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBDYWNoZVN0b3JhZ2UsICIlcCAtIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OiVzICglIiBQUkl1NjQgIikgLSBzdWNjZWVkZWQgLSAiIGZtdCwgY29ubmVjdGlvbi5w
dHIoKSwgZnVuY3Rpb25OYW1lLCByZXF1ZXN0SWRlbnRpZmllciwgdmFsdWUpOyBcCisgICAgICAg
IFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2Fj
aGVTdG9yYWdlLCAiQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6JXMgLSBzdWNjZWVkZWQg
LSAiIGZtdCwgZnVuY3Rpb25OYW1lLCB2YWx1ZSk7IFwKICAgICB9CiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCkBAIC02Myw1NyArNjIsNTcgQEAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6fkNh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oKQogICAgIH0KIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgU3Ry
aW5nJiYgY2FjaGVOYW1lKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVu
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2lu
LCBTdHJpbmcmJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgib3BlbiAoJSIgUFJJdTY0ICIpIiwgcmVx
dWVzdElkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6b3BlbihtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY2FjaGVOYW1lKSwg
W2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNzaW9u
SUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1
bHQpIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJvcGVuIGNhY2hlIik7CisgICAgRW5n
aW5lOjpvcGVuKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIFdURk1v
dmUob3JpZ2luKSwgV1RGTW92ZShjYWNoZU5hbWUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgc2Vzc2lvbklEXShhdXRvJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSRUxFQVNF
X0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJvcGVuIiwgImNhY2hlIGlkZW50
aWZpZXIgaXMgJSIgUFJJdTY0LCBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
aWRlbnRpZmllcjsgfSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3Zl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJlbW92ZSAoJSIgUFJJdTY0ICIpIGNhY2hlICUiIFBSSXU2NCwgcmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Ci0gICAgRW5naW5lOjpyZW1vdmUobV9j
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBb
Y29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25J
RCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3Vs
dCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZSBjYWNoZSAlIiBQUkl1NjQs
IGNhY2hlSWRlbnRpZmllcik7CisgICAgRW5naW5lOjpyZW1vdmUobV9jb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEXShhdXRvJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJyZW1vdmUiLCAi
cmVtb3ZlZCBjYWNoZSAlIiBQUkl1NjQsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5pZGVudGlmaWVyOyB9KTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAgICBjYWxsYmFjayhy
ZXN1bHQpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmNhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmNhY2hlcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9yaWdpbiwgdWludDY0X3Qg
dXBkYXRlQ291bnRlciwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FjaGVzICglIiBQUkl1NjQgIikiLCByZXF1ZXN0SWRlbnRp
Zmllcik7Ci0gICAgRW5naW5lOjpyZXRyaWV2ZUNhY2hlcyhtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklELCBXVEZNb3ZlKG9yaWdpbiksIHVwZGF0ZUNvdW50ZXIsIFtjb25u
ZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vzc2lvbklELCBv
cmlnaW4sIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhY2hlcyIpOworICAgIEVuZ2luZTo6cmV0cmll
dmVDYWNoZXMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgV1RGTW92
ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
c2Vzc2lvbklELCBvcmlnaW5dKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSRUxF
QVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJjYWNoZXMiLCAiY2FjaGVz
IHNpemUgaXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmluZm9z
LnNpemUoKTsgfSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpKTsKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpy
ZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwmJiB1cmwpCit2b2lkIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsLCBSZWNvcmRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZVJlY29yZHMgKCUiIFBSSXU2NCAiKSBpbiBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVu
dGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6cmV0cmlldmVSZWNvcmRzKG1f
Y29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwg
V1RGTW92ZSh1cmwpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rp
b24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVz
dWx0KSB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVSZWNvcmRzIGluIGNh
Y2hlICUiIFBSSXU2NCwgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBFbmdpbmU6OnJldHJpZXZlUmVj
b3JkcyhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklELCBjYWNoZUlkZW50
aWZpZXIsIFdURk1vdmUodXJsKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Np
b25JRF0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNU
SU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJBQ0soInJldHJpZXZlUmVjb3JkcyIsICJyZWNvcmRzIHNp
emUgaXMgJWx1IiwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsg
fSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Np
b25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiAg
ICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0
Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zKQordm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYg
b3B0aW9ucywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyAoJSIgUFJJdTY0ICIp
IGluIGNhY2hlICUiIFBSSXU2NCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7
Ci0gICAgRW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJz
T3JFcnJvciYmIHJlc3VsdCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRlbGV0ZU1h
dGNoaW5nUmVjb3JkcyBpbiBjYWNoZSAlIiBQUkl1NjQsIGNhY2hlSWRlbnRpZmllcik7CisgICAg
RW5naW5lOjpkZWxldGVNYXRjaGluZ1JlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNz
KCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KG9wdGlvbnMpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vzc2lvbklEXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxM
T1dFRF9JTl9DQUxMQkFDSygiZGVsZXRlTWF0Y2hpbmdSZWNvcmRzIiwgImRlbGV0ZWQgJWx1IHJl
Y29yZHMiLCAgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnNpemUoKTsgfSk7
Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCks
IHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0
KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0
UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cHV0UmVjb3JkcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4m
JiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicHV0UmVjb3JkcyAoJSIgUFJJdTY0ICIpIGluIGNhY2hl
ICUiIFBSSXU2NCAiLCAlbHUgcmVjb3JkcyIsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50
aWZpZXIsIHJlY29yZHMuc2l6ZSgpKTsKLSAgICBFbmdpbmU6OnB1dFJlY29yZHMobV9jb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlY29yZHMpLCBbY29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24o
KSksIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJv
ciYmIHJlc3VsdCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInB1dFJlY29yZHMgaW4g
Y2FjaGUgJSIgUFJJdTY0ICIsICVsdSByZWNvcmRzIiwgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRz
LnNpemUoKSk7CisgICAgRW5naW5lOjpwdXRSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRF0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lGX0FMTE9XRURfSU5fQ0FMTEJB
Q0soInB1dFJlY29yZHMiLCAicHV0ICVsdSByZWNvcmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVl
KSB7IHJldHVybiB2YWx1ZS5zaXplKCk7IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpQdXRSZWNvcmRzQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IDc5YTUzNzFiODA2ZTBlY2JjYjU1NzEyN2E5YjBiNDBk
ZDM2ODMyMzIuLmQ5NGVjNmY3NmQ3MjEzNzhkZTZjNzQwODI5OTk0ODViZGM0Y2YyNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC0yNywxNCArMjcsMjcgQEAKIAogI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgi
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgQ29ubmVjdGlvbjsKLWNsYXNzIERlY29kZXI7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVy
T3JFcnJvcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyT3JFcnJvciBjcmVhdGUoKSB7IHJldHVybiBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKTsgfTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzT3JFcnJvcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
SWRlbnRpZmllcnNPckVycm9yIGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpOyB9OworfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFzeW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZv
c09yRXJyb3I+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5m
b3NPckVycm9yIGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpFcnJvcjo6SW50ZXJuYWwpOyB9OworfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFz
eW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3I+IHsK
KyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNPckVycm9yIGNyZWF0
ZSgpIHsgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpFcnJv
cjo6SW50ZXJuYWwpOyB9OworfTsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTUwLDEz
ICs2MywxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlU3RvcmFnZUVu
Z2luZUNvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKIAotICAgIHZv
aWQgb3BlbihQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgb3BlblJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiwgU3RyaW5nJiYgY2FjaGVOYW1lKTsKLSAgICB2b2lkIHJl
bW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVtb3ZlUmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjYWNoZXMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHJldHJpZXZlQ2FjaGVzSWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIpOworICAgIHZvaWQgb3BlbihQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIGNhY2hlTmFtZSwgV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVt
b3ZlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNhY2hl
cyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIHVpbnQ2NF90IHVwZGF0
ZUNvdW50ZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7
CiAKLSAgICB2b2lkIHJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYpOwotICAgIHZv
aWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7Ci0gICAgdm9pZCBwdXRSZWNv
cmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4m
Jik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVVJMJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2Fs
bGJhY2smJik7CisgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHMoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcHV0UmVjb3JkcyhQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZp
ZXJzQ2FsbGJhY2smJik7CiAKICAgICB2b2lkIHJlZmVyZW5jZShQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRlcmVmZXJlbmNlKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQ5OTc1ZDRjZDgzNzI1MmQ0ODI4Yzlh
MjA2MDY2ZWRhNjE0ZGJhZDYuLmY4ZmY3NmU0YTJkNGM5ZWVkZGFiNTFlOGU4N2I3ZmRjN2ExYTAw
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTIxLDE3ICsyMSwxNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uIHsKLSAgICBSZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIERlcmVmZXJlbmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKKyAgICBS
ZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCisgICAgRGVyZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpCiAKLSAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3Jp
Z2luLCBTdHJpbmcgY2FjaGVOYW1lKTsKLSAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
KTsKLSAgICBDYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90
IHVwZGF0ZUNvdW50ZXIpOworICAgIE9wZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSkgLT4gKFdl
YkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJlc3VsdCkgQXN5
bmMKKyAgICBSZW1vdmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIpIC0+IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JF
cnJvciByZXN1bHQpIEFzeW5jCisgICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIpIC0+IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc09yRXJyb3IgcmVzdWx0
KSBBc3luYworCisgICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZHNPckVycm9yIHJlc3VsdCkgQXN5bmMKKyAgICBEZWxldGVNYXRjaGluZ1Jl
Y29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMgb3B0aW9ucykgLT4gKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJ
ZGVudGlmaWVyc09yRXJyb3IgcmVzdWx0KSBBc3luYworICAgIFB1dFJlY29yZHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQpIC0+IChXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCkgQXN5bmMKIAogICAgIENsZWFy
TWVtb3J5UmVwcmVzZW50YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbikgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpFcnJvcj4gZXJyb3IpIEFzeW5jCiAgICAgRW5naW5lUmVwcmVzZW50YXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoU3RyaW5nIHJlcHJlc2VudGF0aW9uKSBBc3luYwot
Ci0gICAgUmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMIHVybCk7Ci0g
ICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyBvcHRpb25zKTsKLSAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCBlMDY3MWU3NjY3NmNkOTM3
OWM2NWY3MWMxMjQ1ODY0NDM1Y2ZlZDIzLi5lZmEyZGI1NGIxMGM1YWJlNmI4Zjc3ODc3YWFjYWQ4
MmI0ODM1NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3
dGYvVW5leHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAzNmJkOTEy
ZTBiY2U0YWE4Y2IxOGFkOTAxYmJiM2ZlOTBhNzNjODAzLi5jNGZiMDBiMDgzYzQxMTJhMjJjODFl
YzQ1ZjA4OGRhMDljYjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCkBAIC04Myw2ICs4MywxMCBAQCBlbnVtIGNsYXNzIFdhaXRGb3JPcHRpb24gewogICAgIH0g
XAogd2hpbGUgKDApCiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFzeW5jUmVwbHlSZXN1bHQ+IHN0cnVj
dCBBc3luY1JlcGx5RXJyb3IgeworICAgIHN0YXRpYyBBc3luY1JlcGx5UmVzdWx0IGNyZWF0ZSgp
IHsgcmV0dXJuIHsgfTsgfTsKK307CisKIGNsYXNzIE1hY2hNZXNzYWdlOwogY2xhc3MgVW5peE1l
c3NhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGEz
NzczYjE0MTJmZTM2NWE0YTEyN2U4NmFjYTljYTY2Y2U2ZjIwN2MuLjUyNTE0OTAyYWJiZTFjYzcx
NDZiNDNiZTdjZDhjNDZiYWI0OTA1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtNTk0LDEzICs1OTQsMTUgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFu
ZGxlcihmaWxlKToKICAgICAgICAgICAgICAgICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwl
cz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGRlY29kZXIgPj4gJXM7XG4nICUgeC5uYW1lKQotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbicgJSB4Lm5hbWUpCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuICAgICAgICBjb21wbGV0aW9uSGFuZGxlcignICUgeC5uYW1lKQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9pbihbJ0lQQzo6QXN5bmNSZXBs
eUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xuICAg
ICAgICByZXR1cm47XG4gICAgfVxuJykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgY29tcGxldGlvbkhhbmRsZXIoJykKICAgICAgICAgICAgICAgICBpZiBsZW4obWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RG
TW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgqJy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xu
fVxuXG4nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJl
cGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xu
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBtb3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWyd7IH0nIGZvciB4IGluIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsn
SVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHgudHlwZSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4g
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnKTtcbn1cblxuJykKIAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2Vu
ZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc2MjQ1NjRkYWYxOThkMDRmYzg0YWYy
ODY0MTI2NjdiM2U1OGUyOGMuLmRkYjNhMzAwMGNhZWY3MjM1YzI2NDZjZDBmNDA0OGNiY2ViNTYw
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtOTY5LDcgKzk2OSw2IEBACiAJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTUxN0E1MzBGMUY0N0E4NjIwMERDREMwQSAv
KiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMEUxRjQ3QTg0MzAwRENEQzBB
IC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUx
N0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMEQx
RjQ3QTg0MzAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07
Ci0JCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5
NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZD
MDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFNDE2
M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpA
QCAtMzA5OSw3ICszMDk4LDYgQEAKIAkJNDE1MUU1QzMxRkJCOTBBOTAwRTQ3RTJEIC8qIEZvcm1E
YXRhUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRh
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTc4NTMwMjEyNzZC
NkYwMEREMzgwMCAvKiBjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXByaXZhdGUtaGVhZGVy
cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnNoOyBwYXRoID0gImNvcHktd2ViY29udGVudC1yZXNvdXJjZXMtdG8tcHJpdmF0
ZS1oZWFkZXJzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE1N0U0QUYyMEUy
RUM5ODAwQTZDMEQ3IC8qIGNvbS5nb29nbGUubzFkYnJvd3NlcnBsdWdpbi5zYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2I7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNDMUY0
MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4OTdFQ0UxRjQxNUQ1QzAwMTZGQTQyIC8qIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjg5
LDcgKzMyODcsNiBAQAogCQk1MTdBNTMwQzFGNDc5RTk3MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
QTUzMEQxRjQ3QTg0MzAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNXQ2xpZW50Q29ubmVjdGlvbk1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUx
N0E1MzBFMUY0N0E4NDMwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDbGll
bnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBEIC8q
IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3
Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CkBAIC02NTE2LDcgKzY1MTMsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDE4OTdFQ0Ux
RjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovLAogCQkJ
CTQxODk3RUNEMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgg
Ki8sCi0JCQkJNDE4OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE4OTdFQ0MxRjQxNUQ1QzAwMTZGQTQyIC8qIFdl
YkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLywKIAkJCQk0MUQxMjlEOTFGM0QxMDE0MDBEMTVF
NDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLywKIAkJCSk7CkBAIC04Njc2LDcgKzg2
NzIsNiBAQAogCQkJCTFDMEExOTUxMUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQzBBMTk1MjFDOEZGREZCMDBG
RTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJMUMw
QTE5NUIxQzkxNkUxQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRT
b3VyY2UuaCAqLywKLQkJCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEQgLyogV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUExRkVDMUExNjI3QjQ1
NjAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFB
MUZFQzFCMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKIAkJ
CQkzMzA5MzQ0MzEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCkBAIC0xMTI1OCw3ICsxMTI1Myw2IEBACiAJCQkJNTdEQ0VENzAyMTQyRUU2
ODAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMEExOTU3MUM5MDA2OEYwMEZFMEVCQiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQzBBMTk1MzFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdDRjBFMzE2M0E0ODZDMDBD
Mjk1MEQgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ0NzEzMTVCOTIy
MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMzA5MzQ0OTEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDFiZDIwNjBjZDYxYWVhYjNmZGE3MTMxNDEwNWVkODE1ZGM5MzhhMGMuLjIxM2Vj
ODZjZWQ0YWI2NTZkMTM0MGIyYTc5OGVkYjBjMzViMjFiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTU2LDM0ICs1NiwzNCBAQCBJUEM6OkNvbm5lY3Rpb24mIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbm5lY3Rpb24oKQogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7CiB9CiAK
LXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBjYWNoZU5hbWUpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1l
LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
LSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbjo6T3BlbihtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgY2FjaGVO
YW1lKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6T3BlbihtX3Nlc3Npb25JRCwgb3JpZ2luLCBj
YWNoZU5hbWUpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3Zl
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJlbW92ZShtX3Nlc3Npb25JRCwgcmVxdWVz
dElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJl
bW92ZShtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKSwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3QgdXBkYXRlQ291bnRlciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNoZXMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlm
aWVyLCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpDYWNo
ZXMobV9zZXNzaW9uSUQsIG9yaWdpbiwgdXBkYXRlQ291bnRlciksIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jk
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBj
b25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIERPTUNhY2hl
RW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNv
cmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCB1cmwp
LCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZXRyaWV2ZVJlY29yZHMobV9zZXNzaW9uSUQsIGNh
Y2hlSWRlbnRpZmllciwgdXJsKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
dGlvbnMpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyksIDApOworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRz
KQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgRE9NQ2FjaGVF
bmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UHV0
UmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwg
cmVjb3JkcyksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlB1dFJlY29yZHMobV9zZXNzaW9uSUQs
IGNhY2hlSWRlbnRpZmllciwgcmVjb3JkcyksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9p
ZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKQpAQCAtOTYsNDIgKzk2LDEyIEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZGVyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpEZXJlZmVyZW5j
ZShtX3Nlc3Npb25JRCwgY2FjaGVJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQotewotICAgIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7
Ci19Ci0KLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiBy
ZXN1bHQpCi17Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwotfQotCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJbmZv
c09yRXJyb3ImJiByZXN1bHQpCi17Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRl
Q2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotfQotCi12b2lkIFdl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIFJlY29yZHNPckVycm9yJiYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0
KSk7Ci19Ci0KLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3JkSWRlbnRpZmllcnNPckVy
cm9yJiYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KLXZv
aWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KQot
ewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7Ci19Ci0KIHZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6Q2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbiB7IG1fc2Vzc2lvbklELCBv
cmlnaW4gfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZW5n
aW5lUmVwcmVzZW50YXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjYWxsYmFjaykKIHsKICAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpFbmdpbmVSZXByZXNlbnRhdGlvbiB7
IG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
CmluZGV4IGMxNmYzMTBlZGYzODAyMzUxYzg3MzFkNzI2Njk4MmVkOGUzM2I1MTguLjRlNThhZmMx
ODMxOWM1NTM4YjhjNTRiMTliZDhkNGYxN2Q4N2NlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApA
QCAtNTIsMjkgKzUyLDIxIEBAIHByaXZhdGU6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKCk7CiAKICAgICAvLyBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uCi0gICAgdm9p
ZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIGRvUmVt
b3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIp
IGZpbmFsOwotICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRl
cikgZmluYWw7CisgICAgdm9pZCBvcGVuKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNv
bnN0IFN0cmluZyYgY2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVu
dGlmaWVyQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2lu
ZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdm9pZCBkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBjb25zdCBVUkwmKSBmaW5hbDsKLSAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikg
ZmluYWw7Ci0gICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmRzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlv
bih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgYmF0Y2hQdXRP
cGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIHJlZmVyZW5jZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGVyZWZlcmVuY2UodWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgZW5naW5lUmVwcmVzZW50YXRp
b24oV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGVuZ2luZVJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlUXVvdGFCYXNlZE9uU3BhY2VVc2FnZShjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mKSBmaW5hbDsKIAotICAgIHZvaWQgb3BlbkNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKLSAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKLSAgICB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NP
ckVycm9yJiYpOwotCi0gICAgdm9pZCB1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJyb3ImJik7Ci0gICAg
dm9pZCBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOwotICAg
IHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKLQogICAg
IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBtX3Byb3ZpZGVyOwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNjdlYzkxNDc1M2RlZmYwMWZiOTI3Y2Yx
YzhhODViNmM0YTQ0MmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24gewotICAgIE9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJl
c3VsdCk7Ci0gICAgUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciByZXN1bHQpOwot
ICAgIFVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NPckVycm9yIHJlc3VsdCk7Ci0KLSAgICBVcGRhdGVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3Jkc09yRXJyb3IgcmVzdWx0KTsKLSAgICBEZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNPckVycm9yIHJlc3VsdCk7Ci0gICAgUHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzT3JFcnJvciByZXN1bHQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
NTdlZGQ5Mjc1YmQ2MDU5NjA0NDg3NGY0MDEwMWU0ZTg0MGZhMTg4My4uYWUzODgzZDg2YjY4OWU2
NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
TWFwTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCi0j
aW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAt
MTIxLDEwICsxMTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlk
ZXIoKS5wcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMzVkOWFjMTliNTc4MDQ2MjQyZmY2OGE5
MWY3Zjg0MWUxOTg2MDcuLjc1ODFlNWVlNzQ3NWZkOTMyMmJkZmIyN2NlNjJhMjQyZmFiYjYyMjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0yMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiBjYWxsYmFja3Mg
c2hvdWxkIGJlIGNvbXBsZXRlZCBvbiBuZXR3b3JrIGNvbm5lY3Rpb24gY2xvc2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvY2FjaGUt
c3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5l
dHdvcmtwcm9jZXNzLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA1LTIyICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNdWx0aXBsZSB2aWRlb3MgKHdpdGgg
YXVkaW9zKSB3aXRoIGF1dG9wbGF5ICYgcGxheWlubGluZSBub3Qgd29ya2luZy4gT25seSBvbmUg
dmlkZW8gcGxheSBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9j
YWNoZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nlc3MtY3Jhc2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5l
dHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWQ5NjMyY2MwNjU3
NDI2N2VhYTBlN2Y2M2M5Y2E5ODY3MDAxZjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNy
YXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogQ2FjaGUg
QVBJIG9wZXJhdGlvbiBmYWlsZWQ6IEludGVybmFsIGVycm9yCitDT05TT0xFIE1FU1NBR0U6IENh
Y2hlIEFQSSBvcGVyYXRpb24gZmFpbGVkOiBJbnRlcm5hbCBlcnJvcgorQ09OU09MRSBNRVNTQUdF
OiBDYWNoZSBBUEkgb3BlcmF0aW9uIGZhaWxlZDogSW50ZXJuYWwgZXJyb3IKK0NPTlNPTEUgTUVT
U0FHRTogQ2FjaGUgQVBJIG9wZXJhdGlvbiBmYWlsZWQ6IEludGVybmFsIGVycm9yCitDT05TT0xF
IE1FU1NBR0U6IENhY2hlIEFQSSBvcGVyYXRpb24gZmFpbGVkOiBJbnRlcm5hbCBlcnJvcgorCitQ
QVNTIFBlbmRpbmcgY2FjaGUgb3BlcmF0aW9uIG9uIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9y
YWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZDc0ZGQxNDM0NGQ3ZGE1ZWU2NzM3NGQzNTUzNmJiOTdjMzJjZDQyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdl
LW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhY2hlIFN0b3JhZ2U6IG5ldHdvcmsgcHJvY2Vz
cyBjcmFzaDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMg
dGVzdCA9PiB7CisgICAgY29uc3QgY2FjaGUgPSBhd2FpdCBzZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0
MSIpOworICAgIGNvbnN0IHJlc3BvbnNlMU1vID0gbmV3IFJlc3BvbnNlKG5ldyBBcnJheUJ1ZmZl
cigxMDI0ICogMTAyNCkpOworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJl
dHVybiBQcm9taXNlLnJlamVjdCgiUmVxdWlyZXMgaW50ZXJuYWxzIEFQSSIpOworICAgIHRlc3RS
dW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICByZXR1cm4gcHJvbWlzZV9yZWpl
Y3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IsIFByb21pc2UuYWxsKFsKKyAgICAgICAgY2FjaGUucHV0
KCIxTW8xIiwgcmVzcG9uc2UxTW8uY2xvbmUoKSksCisgICAgICAgIGNhY2hlLnB1dCgiMU1vMiIs
IHJlc3BvbnNlMU1vLmNsb25lKCkpLAorICAgICAgICBjYWNoZS5wdXQoIjFNbzMiLCByZXNwb25z
ZTFNby5jbG9uZSgpKSwKKyAgICAgICAgY2FjaGUucHV0KCIxTW80IiwgcmVzcG9uc2UxTW8uY2xv
bmUoKSksCisgICAgICAgIGNhY2hlLnB1dCgiMU1vNSIsIHJlc3BvbnNlMU1vLmNsb25lKCkpLAor
ICAgIF0pKTsKK30sICJQZW5kaW5nIGNhY2hlIG9wZXJhdGlvbiBvbiBuZXR3b3JrIHByb2Nlc3Mg
Y3Jhc2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370509</attachid>
            <date>2019-05-23 10:58:30 -0700</date>
            <delta_ts>2019-05-23 14:15:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-195757-20190523105830.patch</filename>
            <type>text/plain</type>
            <size>83794</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JkNWQ0YTQ5NGMwMzhh
NzJmMzNmNGExOTZlYzIwNzkwY2U4MWU2Ny4uNjE0ODAyNDEyOTc4Y2Q5ZGMzMjE4ZGRkZjI1ZWJm
ZTgxNzIxZmViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA1LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uIGNhbGxiYWNrcyBzaG91bGQgYmUgY29tcGxldGVkIG9uIG5ldHdvcmsgY29ubmVjdGlv
biBjbG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk1NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBNb3ZlIEhhc2hNYXAtYmFzZWQgY2FsbGJhY2tzIHRvIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uCisgICAgICAgIE1ha2UgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiBkZWZhdWx0IEFQSSB0
byBpbXBsZW1lbnQgdXNlIGNhbGxiYWNrcy4KKyAgICAgICAgVGhpcyBpcyB1c2VkIGJ5IFdlYktp
dCBsYXllciB0byBkbyBBc3luY1JlcGx5IElQQy4KKworICAgICAgICBNb3ZlIERPTUNhY2hlRW5n
aW5lIGNhbGxiYWNrcyB0byBDb21wbGV0aW9uSGFuZGxlci4KKworICAgICAgICBUZXN0OiBodHRw
L3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nlc3MtY3Jhc2guaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmVuZ2luZVJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlY29yZHNEYXRhRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVj
b3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Zy
b21SZWNvcmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzT3JFcnJvckZyb21SZWNv
cmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
Om9wZW5PclJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXNDb21wbGV0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNv
cmRzKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
dHJpZXZlUmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OnB1dFJlY29yZHNDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyUGVuZGluZ1JlcXVlc3RzKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBwYWdlL0NhY2hlU3RvcmFnZVByb3ZpZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbik6CisKIDIwMTkt
MDUtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE11bHRp
cGxlIHZpZGVvcyAod2l0aCBhdWRpb3MpIHdpdGggYXV0b3BsYXkgJiBwbGF5aW5saW5lIG5vdCB3
b3JraW5nLiBPbmx5IG9uZSB2aWRlbyBwbGF5IGF0IGEgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMWU3YmI5
MmE2NzczYzY0NDk2NWQxMjMzNzkyNzk4MjJjNzVjN2Y0Ny4uNGFhNDMzZTBkMWJjZjE2MDQ1Mzg1
OTM2YTJmZWVjNzk0NTljNjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxOS0wNS0y
MiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbiBjYWxsYmFja3Mgc2hvdWxkIGJlIGNvbXBsZXRlZCBvbiBuZXR3b3JrIGNv
bm5lY3Rpb24gY2xvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisK
KyAgICAgICAgVXBkYXRlIGFjY29yZGluZyBuZXcgV2ViQ29yZSBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uIGludGVyZmFjZS4KKyAgICAgICAgVXNlIEFzeW5jIElQQyByZXBsaWVzIHNvIHRoYXQgdGhl
IGNvbXBsZXRpb24gaGFuZGxlcnMgYXJlIGNhbGxlZCBvbiBuZXR3b3JrIGNyYXNoLgorCisgICAg
ICAgIEFsbG93IHRvIGhhdmUgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgaW4gY2FzZSBvZiBjYW5j
ZWxsZWQgcmVwbHkgb3IgYmFkbHkgZGVjb2RlZCBtZXNzYWdlLgorICAgICAgICBUaGlzIGFsbG93
cyB0byByZWplY3QgdGhlIGNvcnJlc3BvbmRpbmcgSlMgcHJvbWlzZS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpFbmdpbmU6OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXF1ZXN0U3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6d3JpdGVSZWNvcmQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpvcGVuKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3ZlKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Y2FjaGVzKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRz
KToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRl
TWF0Y2hpbmdSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6cHV0UmVjb3Jkcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpBc3luY1JlcGx5RXJy
b3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3I+OjpjcmVh
dGUpOgorICAgICAgICAoSVBDOjpBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvcj46OmNyZWF0ZSk6CisgICAgICAgIChJUEM6OkFz
eW5jUmVwbHlFcnJvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc09yRXJyb3I+
OjpjcmVhdGUpOgorICAgICAgICAoSVBDOjpBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZHNPckVycm9yPjo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkFzeW5jUmVwbHlFcnJvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZW5naW5lUmVwcmVzZW50
YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisKIDIwMTktMDUtMjIgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb2Rlcm4gYXN5bmMg
SVBDIGZvciBFbmdpbmVSZXByZXNlbnRhdGlvbkNvbXBsZXRlZCBhbmQgQ2xlYXJNZW1vcnlSZXBy
ZXNlbnRhdGlvbkNvbXBsZXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggZTM5NGU1NmE4ZjhjMzhhZmNk
OGM5NmQ5MTQyNzE2MzJmOGEyYTYwMC4uNGFjYjhhYWJkODY3ZDhkZTIyMDkzNzliMjYwYzYxZmZm
ZmViNDkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0zMyw2NSArMzMsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOwogCi12b2lk
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNsZWFyUGVuZGluZ1JlcXVlc3RzKCkKLXsKLSAgICBh
dXRvIG9wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cyA9IFdURk1vdmUobV9vcGVuQW5k
UmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBv
cGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIGNhbGxi
YWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOwotCi0g
ICAgYXV0byByZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyA9IFdURk1vdmUobV9yZXRyaWV2
ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJldHJp
ZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjayhtYWtl
VW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsKLQotICAgIGF1dG8g
cmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX3JldHJpZXZlUmVjb3Jk
c1BlbmRpbmdSZXF1ZXN0cyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJldHJpZXZlUmVj
b3Jkc1BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKLSAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhw
ZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVkKSk7Ci0KLSAgICBhdXRvIGJhdGNo
RGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzID0gV1RGTW92ZShtX2JhdGNoRGVsZXRlQW5kUHV0
UGVuZGluZ1JlcXVlc3RzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogYmF0Y2hEZWxldGVB
bmRQdXRQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCi0gICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4
cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOwotfQotCi12b2lkIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQot
ewotICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRp
ZmllcjsKLSAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAgIGRvT3BlbihyZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luLCBjYWNoZU5hbWUpOwotfQotCi12b2lkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSAr
K21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwotICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGlu
Z1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0g
ICAgZG9SZW1vdmUocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7Ci19Ci0KLXZv
aWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYm
IGNhbGxiYWNrKQotewotICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RS
ZXF1ZXN0SWRlbnRpZmllcjsKLSAgICBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgZG9SZXRyaWV2
ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgb3JpZ2luLCB1cGRhdGVDb3VudGVyKTsKLX0KLQot
dm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgUmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Ci17Ci0gICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVu
dGlmaWVyOwotICAgIG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgZG9SZXRyaWV2ZVJlY29yZHMo
cmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgdXJsKTsKLX0KLQotdm9pZCBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiBvcHRpb25zLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0g
ICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVy
OwotICAgIG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb0JhdGNoRGVsZXRlT3BlcmF0aW9u
KHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0
aW9ucykpOwotfQotCiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGNvbXB1dGVSZWFsQm9keVNpemUo
Y29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICB1aW50NjRf
dCByZXN1bHQgPSAwOwpAQCAtMTIzLDQyICs2NCw0IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmNvbXB1dGVSZWNvcmRCb2R5U2l6ZShjb25zdCBGZXRjaFJlc3BvbnNlJiByZXNw
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJl
Y29yZD4mJiByZWNvcmRzLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCi17
Ci0gICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlm
aWVyOwotICAgIG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0KLSAgICBkb0JhdGNoUHV0T3BlcmF0aW9u
KHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcykpOwot
fQotCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5PclJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYg
cmVzdWx0KQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQ
ZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNr
KHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkK
LXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVz
dWx0KSk7Ci19Ci0KLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpCi17Ci0g
ICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy50
YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQp
KTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBFeHBlY3RlZDxWZWN0b3I8dWludDY0X3Q+
LCBFcnJvcj4mJiByZXN1bHQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2JhdGNoRGVs
ZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQotICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwotfQotCi12b2lkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4
cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPiYmIHJlc3VsdCkKLXsKLSAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1
ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggOWFhNDA4ZDM1YTRlMGUyNWZh
YTcxNmFmMjAzZjY2MDM0YTBhMzM1MS4uODdlYWI3MTg2MjZjNjAyNzQxNDg5ZGJjMmJmYTc3ZTg2
NTY1YWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTM3LDU2ICszNywyNyBAQCBjbGFzcyBGZXRjaFJlc3Bv
bnNlOwogCiBjbGFzcyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpKTsgfQogICAgIHZpcnR1YWwgfkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIG9wZW4oY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lk
IHJldHJpZXZlQ2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50
ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CisgICAgdmlydHVhbCB2
b2lkIG9wZW4oY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERP
TUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJldHJpZXZl
Q2FjaGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNh
Y2hlRW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdm9pZCByZXRyaWV2
ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBET01DYWNoZUVu
Z2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24o
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1
ZXJ5T3B0aW9ucyYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYm
KTsKLSAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJ
ZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotICAgIHVpbnQ2NF90IGNvbXB1dGVSZWNvcmRCb2R5U2l6
ZShjb25zdCBGZXRjaFJlc3BvbnNlJiwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9k
eSYpOworICAgIHZpcnR1YWwgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBjb25zdCBVUkwmLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVj
dG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZWZlcmVuY2UodWlu
dDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlcmVm
ZXJlbmNlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgPSAwOwogCi0gICAgdmlydHVh
bCB2b2lkIHJlZmVyZW5jZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8p
IHsgfQorICAgIHVpbnQ2NF90IGNvbXB1dGVSZWNvcmRCb2R5U2l6ZShjb25zdCBGZXRjaFJlc3Bv
bnNlJiwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSYpOwogCiAgICAgLy8gVXNl
ZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lbW9y
eVJlcHJlc2VudGF0aW9uKGNvbnN0IENsaWVudE9yaWdpbiYsIERPTUNhY2hlRW5naW5lOjpDb21w
bGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBjYWxsYmFjayhET01DYWNoZUVuZ2luZTo6RXJy
b3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCBlbmdpbmVSZXByZXNlbnRh
dGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY2FsbGJhY2spIHsgY2Fs
bGJhY2soU3RyaW5nIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZW5naW5lUmVwcmVzZW50YXRp
b24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykgeyBj
YWxsYmFjayhTdHJpbmcgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVRdW90YUJhc2Vk
T25TcGFjZVVzYWdlKGNvbnN0IENsaWVudE9yaWdpbiYpIHsgfQogCi0gICAgdm9pZCBjbGVhclBl
bmRpbmdSZXF1ZXN0cygpOwotCiBwcm90ZWN0ZWQ6Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bigpID0gIGRlZmF1bHQ7Ci0KLSAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRp
ZmllciwgY29uc3QgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3Vs
dCkgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRlbnRpZmllciwgcmVzdWx0KTsgfQotICAgIHZv
aWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IERPTUNhY2hlRW5n
aW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsgb3Blbk9yUmVtb3ZlQ29tcGxl
dGVkKGlkZW50aWZpZXIsIHJlc3VsdCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mb3NPckVycm9yJiYpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWNvcmRz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3Jkc09yRXJy
b3ImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmll
cnNPckVycm9yJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50
aWZpZXJzT3JFcnJvciYmKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9PcGVuKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJp
bmcmIC8qIGNhY2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBt
YWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElk
ZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVt
ZW50ZWQpKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCAvKiB1cGRhdGVD
b3VudGVyICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFVSTCYgLyogdXJsICov
KSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50
aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVtZW50
ZWQpKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKSB7IHB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElk
ZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6Tm90SW1wbGVt
ZW50ZWQpKTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuT3JSZW1vdmVDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpDYWNo
ZUlkZW50aWZpZXJPckVycm9yJik7Ci0KLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVu
Z2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2s+IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGlu
Z1JlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlu
Zm9zQ2FsbGJhY2s+IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNDYWxsYmFjaz4gbV9yZXRyaWV2ZVJl
Y29yZHNQZW5kaW5nUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdp
bmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2s+IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5n
UmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgdWludDY0X3Q+IG1fb3BhcXVlUmVzcG9u
c2VUb1NpemVXaXRoUGFkZGluZ01hcDsKLQotICAgIHVpbnQ2NF90IG1fbGFzdFJlcXVlc3RJZGVu
dGlmaWVyIHsgMCB9OwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCBiNzlkZDEyZjZlNWQ0NWQx
OTEzOTYxMzRhZWZhZWU5ZjU5MzNhNmVkLi5lZmIwNDI5OWI5MGVlODU1MTMzYjdjMTRjMWQ5Yjg2
NDU3MjEzZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC05OSwxOSArMTAwLDE5IEBAIHN0cnVjdCBDYWNoZUlkZW50aWZpZXJPcGVy
YXRpb25SZXN1bHQgewogfTsKIAogdXNpbmcgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciA9IEV4cGVj
dGVkPENhY2hlSWRlbnRpZmllck9wZXJhdGlvblJlc3VsdCwgRXJyb3I+OwotdXNpbmcgQ2FjaGVJ
ZGVudGlmaWVyQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgQ2FjaGVJZGVudGlm
aWVyT3JFcnJvciYpPjsKK3VzaW5nIENhY2hlSWRlbnRpZmllckNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJik+OwogCiB1c2luZyBS
ZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8dWludDY0X3Q+LCBFcnJv
cj47Ci11c2luZyBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lk
KFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKT47Cit1c2luZyBSZWNvcmRJZGVudGlmaWVyc0Nh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWNvcmRJZGVudGlmaWVyc09yRXJyb3Im
Jik+OwogCiAKIHVzaW5nIENhY2hlSW5mb3NPckVycm9yID0gRXhwZWN0ZWQ8Q2FjaGVJbmZvcywg
RXJyb3I+OwotdXNpbmcgQ2FjaGVJbmZvc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENh
Y2hlSW5mb3NPckVycm9yJiYpPjsKK3VzaW5nIENhY2hlSW5mb3NDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQ2FjaGVJbmZvc09yRXJyb3ImJik+OwogCiB1c2luZyBSZWNvcmRzT3JF
cnJvciA9IEV4cGVjdGVkPFZlY3RvcjxSZWNvcmQ+LCBFcnJvcj47Ci11c2luZyBSZWNvcmRzQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVjb3Jkc09yRXJyb3ImJik+OwordXNpbmcgUmVj
b3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWNvcmRzT3JFcnJvciYmKT47
CiAKLXVzaW5nIENvbXBsZXRpb25DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChPcHRpb25h
bDxFcnJvcj4mJik+OwordXNpbmcgQ29tcGxldGlvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxFcnJvcj4mJik+OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBp
bmxpbmUgdm9pZCBDYWNoZUluZm9zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDFlYmRkNWRlNDhhN2U3ZTFjOTZhMDFjNzhm
ZWQ3ZGE1YmM0ZmI4ODguLjIwNmMyNDE4ZTk4N2ZlZGZkYTIxMDFlNmViYTVmNWE1YmEwYWYzZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtODgsNiArODgsMzEgQEAgc3RhdGljIFJl
Y29yZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRh
dGEpCiAgICAgfTsKIH0KIAorc3RhdGljIGlubGluZSBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmRE
YXRhPiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRz
KQoreworICAgIHJldHVybiBXVEY6Om1hcChyZWNvcmRzLCB0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0
YSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3Jk
RGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9yRXJyb3JGcm9tUmVjb3Jkcyhjb25zdCBSZWNvcmRz
T3JFcnJvciYgcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocmVzdWx0LmVycm9yKCkpOworCisgICAgcmV0dXJuIHJl
Y29yZHNEYXRhRnJvbVJlY29yZHMocmVzdWx0LnZhbHVlKCkpOworfQorCitzdGF0aWMgaW5saW5l
IFZlY3RvcjxSZWNvcmQ+IHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoVmVjdG9yPENyb3NzVGhyZWFk
UmVjb3JkRGF0YT4mJiByZWNvcmRzRGF0YSkKK3sKKyAgICByZXR1cm4gV1RGOjptYXAoV1RGTW92
ZShyZWNvcmRzRGF0YSksIGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEpOworfQorCitzdGF0aWMg
aW5saW5lIFJlY29yZHNPckVycm9yIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKEV4cGVj
dGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4mJiByZWNvcmRzRGF0YSkK
K3sKKyAgICBpZiAoIXJlY29yZHNEYXRhLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQocmVjb3Jkc0RhdGEuZXJyb3IoKSk7CisgICAgcmV0dXJuIHJlY29yZHNGcm9t
UmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YS52YWx1ZSgpKSk7Cit9CisKIFJlZjxXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
cmVhdGUoV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQogewogICAgIGF1dG8gY29ubmVjdGlvbiA9
IGFkb3B0UmVmKCpuZXcgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihzY29wZSkpOwpAQCAt
MTA5LDMxICsxMzQsNDYgQEAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6fldvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhy
ZWFkQ29ubmVjdGlvbiA9IFdURk1vdmUobV9tYWluVGhyZWFkQ29ubmVjdGlvbildKCkgbXV0YWJs
ZSB7IH0pOwogfQogCi12b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgY2FjaGVOYW1lKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFt
ZSwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKKyAgICB1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9vcGVu
QW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBt
YWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRo
cmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0
ZWRDb3B5KCksIGNhY2hlTmFtZSA9IGNhY2hlTmFtZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgY2FjaGVOYW1l
LCBbd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmll
cl0gKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJ
ZGVudGlmaWVyLCByZXN1bHRdIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCkub3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24oKS5vcGVuT3JSZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3Vs
dCk7CiAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllcikKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJP
ckVycm9yJiByZXN1bHQpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1v
dmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKK30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFj
ayYmIGNhbGxiYWNrKQogeworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xh
c3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKwogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3dvcmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSks
IG1haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElk
ZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcl0gKCkgbXV0YWJsZSB7CiAgICAgICAgIG1haW5UaHJl
YWRDb25uZWN0aW9uLT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbd29ya2VyVGhyZWFkID0gV1RG
TW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSAo
Y29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY2FjaGVJZGVudGlmaWVyLCAhcmVzdWx0Lmhhc192YWx1ZSgpIHx8
ICFyZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyIHx8IHJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIg
PT0gY2FjaGVJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdF0gKGF1dG8mIHNjb3Bl
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
c2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKS5yZW1vdmVDb21wbGV0ZWQocmVxdWVzdElk
ZW50aWZpZXIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkub3Blbk9yUmVtb3ZlQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwogICAgICAgICAgICAgfSwgV29ya2VyUnVu
TG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCB1cGRh
dGVDb3VudGVyKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNh
Y2hlcyhjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwg
Q2FjaGVJbmZvc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fcmV0cmlldmVDYWNo
ZXNQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2Nv
cGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENvbm5lY3Rp
b24sIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4gPSBvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIHVw
ZGF0ZUNvdW50ZXJdICgpIG11dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+
cmV0cmlldmVDYWNoZXMob3JpZ2luLCB1cGRhdGVDb3VudGVyLCBbd29ya2VyVGhyZWFkID0gV1RG
TW92ZSh3b3JrZXJUaHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0gKENhY2hlSW5mb3NPckVycm9y
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlSW5mb3NPckVycm9yIGlzb2xh
dGVkUmVzdWx0OwpAQCAtMTQzLDY0ICsxODMsNDMgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLAog
ICAgICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0gcmVzdWx0LnZhbHVlKCkuaXNvbGF0ZWRD
b3B5KCk7CiAKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9y
TW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoaXNvbGF0ZWRSZXN1bHQp
XSAoYXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihzY29wZSkuY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpLnVwZGF0ZUNhY2hl
cyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24o
KS5yZXRyaWV2ZUNhY2hlc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1
bHQpKTsKICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpyZWZlcmVuY2UodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQotewotICAgIGNhbGxPbk1haW5U
aHJlYWQoW21haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgY2Fj
aGVJZGVudGlmaWVyXSgpIHsKLSAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24tPnJlZmVyZW5j
ZShjYWNoZUlkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFdvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3ZvaWQg
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXNDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KQogewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW21haW5UaHJlYWRDb25uZWN0aW9uID0gbV9tYWluVGhyZWFk
Q29ubmVjdGlvbiwgY2FjaGVJZGVudGlmaWVyXSgpIHsKLSAgICAgICAgbWFpblRocmVhZENvbm5l
Y3Rpb24tPmRlcmVmZXJlbmNlKGNhY2hlSWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVz
dElkZW50aWZpZXIpKQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi1z
dGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJv
bVJlY29yZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCit2b2lkIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYgdXJsLCBSZWNvcmRzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBy
ZXR1cm4gV1RGOjptYXAocmVjb3JkcywgdG9Dcm9zc1RocmVhZFJlY29yZERhdGEpOwotfQorICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
KyAgICBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8
Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiwgRXJyb3I+IHJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNv
cmRzKGNvbnN0IFJlY29yZHNPckVycm9yJiByZXN1bHQpCi17Ci0gICAgaWYgKCFyZXN1bHQuaGFz
X3ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7
Ci0KLSAgICByZXR1cm4gcmVjb3Jkc0RhdGFGcm9tUmVjb3JkcyhyZXN1bHQudmFsdWUoKSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShW
ZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiYmIHJlY29yZHNEYXRhKQotewotICAgIHJldHVy
biBXVEY6Om1hcChXVEZNb3ZlKHJlY29yZHNEYXRhKSwgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0
YSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9t
UmVjb3Jkc0RhdGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9y
PiYmIHJlY29yZHNEYXRhKQotewotICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzX3ZhbHVlKCkpCi0g
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKLSAgICBy
ZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkp
KTsKLX0KLQotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCkKLXsKICAgICBjYWxsT25NYWluVGhyZWFkKFt3b3JrZXJUaHJlYWQg
PSBtYWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBtYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFp
blRocmVhZENvbm5lY3Rpb24sIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIHVy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgbWFpblRocmVhZENv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIHVybCwgW3dvcmtlclRo
cmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZHNP
ckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVu
TG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVzdWx0ID0gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJl
Y29yZHMocmVzdWx0KSwgcmVxdWVzdElkZW50aWZpZXJdIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5jYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCkudXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVj
b3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZXN1bHQpKSk7CisgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5jYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCkucmV0cmlldmVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZWNv
cmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlc3VsdCkpKTsKICAgICAgICAgICAg
IH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KIAotdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3Bl
cmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBv
cHRpb25zKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29y
ZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29yZHNPckVycm9yJiYg
cmVzdWx0KQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZVJlY29yZHNQZW5k
aW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
YmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIENhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgUmVjb3Jk
SWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAgIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX2JhdGNoRGVsZXRl
QW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxs
YmFjaykpOworCiAgICAgY2FsbE9uTWFpblRocmVhZChbd29ya2VyVGhyZWFkID0gbWFrZVJlZiht
X3Njb3BlLnRocmVhZCgpKSwgbWFpblRocmVhZENvbm5lY3Rpb24gPSBtX21haW5UaHJlYWRDb25u
ZWN0aW9uLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0ID0gcmVx
dWVzdC5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJh
dGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt3b3JrZXJU
aHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJ
ZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgd29ya2Vy
VGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgewpAQCAtMjEwLDgg
KzIyOSwxNyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxl
dGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aQogICAgIH0pOwogfQogCi12b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29y
ZD4mJiByZWNvcmRzKQordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVS
ZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBFeHBlY3RlZDxWZWN0
b3I8dWludDY0X3Q+LCBFcnJvcj4mJiByZXN1bHQpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZp
ZXIpKQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworfQorCit2b2lkIFdvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgVmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYgcmVjb3JkcywgRE9N
Q2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKKyAg
ICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7
CisgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3dvcmtl
clRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIG1haW5UaHJlYWRDb25uZWN0aW9u
ID0gbV9tYWluVGhyZWFkQ29ubmVjdGlvbiwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRp
ZmllciwgcmVjb3Jkc0RhdGEgPSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpXSgpIG11
dGFibGUgewogICAgICAgICBtYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24o
Y2FjaGVJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0Rh
dGEpKSwgW3dvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgcmVxdWVzdElkZW50
aWZpZXJdIChSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIG11dGFibGUgewogICAg
ICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0
SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFi
bGUgewpAQCAtMjIxLDQgKzI0OSw0MyBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZQogICAgIH0p
OwogfQogCit2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRf
dD4sIEVycm9yPiYmIHJlc3VsdCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hE
ZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCisgICAg
ICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7Cit9CisKK3ZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKK3sKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFttYWluVGhyZWFkQ29ubmVjdGlvbiA9IG1fbWFpblRocmVhZENv
bm5lY3Rpb24sIGNhY2hlSWRlbnRpZmllcl0oKSB7CisgICAgICAgIG1haW5UaHJlYWRDb25uZWN0
aW9uLT5yZWZlcmVuY2UoY2FjaGVJZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZXJlZmVyZW5jZSh1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbWFpblRocmVhZENvbm5lY3Rpb24gPSBt
X21haW5UaHJlYWRDb25uZWN0aW9uLCBjYWNoZUlkZW50aWZpZXJdKCkgeworICAgICAgICBtYWlu
VGhyZWFkQ29ubmVjdGlvbi0+ZGVyZWZlcmVuY2UoY2FjaGVJZGVudGlmaWVyKTsKKyAgICB9KTsK
K30KKwordm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjbGVhclBlbmRpbmdSZXF1
ZXN0cygpCit7CisgICAgYXV0byBvcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMgPSBX
VEZNb3ZlKG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzKTsKKyAgICBmb3IgKGF1
dG8mIGNhbGxiYWNrIDogb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLnZhbHVlcygp
KQorICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6
OlN0b3BwZWQpKTsKKworICAgIGF1dG8gcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMgPSBX
VEZNb3ZlKG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiByZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy52YWx1ZXMoKSkKKyAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpTdG9wcGVk
KSk7CisKKyAgICBhdXRvIHJldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0cyA9IFdURk1vdmUo
bV9yZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2FsbGJh
Y2sgOiByZXRyaWV2ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlRW5naW5lOjpFcnJvcjo6U3RvcHBlZCkpOwor
CisgICAgYXV0byBiYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cyA9IFdURk1vdmUobV9i
YXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFj
ayA6IGJhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLnZhbHVlcygpKQorICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChET01DYWNoZUVuZ2luZTo6RXJyb3I6OlN0b3BwZWQpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA3
YWEwNWFkYmNiZDBiM2E0NTc4MzUyOWM0ZmRjZDk2NmRjZjY5OGJhLi4xMTlkNGNjNjEyMDgzZGE3
Mjg1ZjRmNzljMjJkZTU5YzliMGM0YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtMzgs
MjUgKzM4LDQ2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdvcmtlckNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uKCk7CiAKKyAgICB2b2lkIGNsZWFyUGVuZGluZ1JlcXVlc3RzKCk7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3Jr
ZXJHbG9iYWxTY29wZSYpOwogCiAgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi4KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xp
ZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikgZmluYWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKSBmaW5h
bDsKKyAgICB2b2lkIG9wZW4oY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBjYWNo
ZU5hbWUsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlRW5naW5l
OjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJldHJpZXZlQ2Fj
aGVzKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hl
RW5naW5lOjpDYWNoZUluZm9zQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICB2b2lkIGRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIsIGNvbnN0IFVSTCYpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZHND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmLCBET01DYWNoZUVuZ2luZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgcmVmZXJlbmNlKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpIGZpbmFsOwogCi0gICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9u
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25z
JiYpIGZpbmFsOwotICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD4mJikgZmluYWw7CisgICAgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lKTsK
KyAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpOworICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRl
cik7CisgICAgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmKTsKKyAgICB2b2lkIGRvQmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6
Q2FjaGVRdWVyeU9wdGlvbnMmJik7CisgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPiYmKTsKKworICAgIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYpOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXNDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zT3JF
cnJvciYmKTsKKyAgICB2b2lkIHJldHJpZXZlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNPckVycm9yJiYpOworICAgIHZv
aWQgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9N
Q2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKKyAgICB2b2lkIHB1dFJl
Y29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlRW5naW5l
OjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7CiAKICAgICBXb3JrZXJHbG9iYWxTY29wZSYg
bV9zY29wZTsKIAogICAgIFJlZlB0cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX21haW5UaHJl
YWRDb25uZWN0aW9uOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrPiBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxi
YWNrPiBtX3JldHJpZXZlQ2FjaGVzUGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0
X3QsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2s+IG1fcmV0cmlldmVSZWNvcmRzUGVu
ZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlRW5naW5lOjpSZWNv
cmRJZGVudGlmaWVyc0NhbGxiYWNrPiBtX2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3Rz
OworCisgICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
Y2hlU3RvcmFnZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhY2hlU3RvcmFnZVBy
b3ZpZGVyLmgKaW5kZXggZTFmY2MyYjljMjg2MDU1ZmY1MjhjNjA5ZGQyOTM4ZWMyNTMyNWY5MC4u
NjM2ZjNkMGExMTliN2M2N2ZiYmRlN2Y2MWYxZjdkMGYwYzU5YmYxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYWNoZVN0b3JhZ2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaApAQCAtMzMsOCArMzMsMjMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZVN0b3JhZ2VQcm92aWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPENhY2hlU3RvcmFnZVByb3ZpZGVyPiB7CiBwdWJsaWM6CisgICAgY2xhc3MgRHVtbXlD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZjxEdW1teUNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBv
cGVuKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYsIERPTUNhY2hlRW5naW5lOjpD
YWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCByZW1vdmUo
dWludDY0X3QsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKSBmaW5h
bCB7IH0KKyAgICAgICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBDbGllbnRPcmlnaW4mLCB1
aW50NjRfdCwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSBmaW5hbCB7IH0K
KyAgICAgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QsIGNvbnN0IFVSTCYsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRzQ2FsbGJhY2smJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgYmF0
Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hl
UXVlcnlPcHRpb25zJiYsIERPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNr
JiYpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90LCBW
ZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4mJiwgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZElk
ZW50aWZpZXJzQ2FsbGJhY2smJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgcmVmZXJlbmNlKHVp
bnQ2NF90KSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBkZXJlZmVyZW5jZSh1aW50NjRfdCkgZmlu
YWwgeyB9CisgICAgfTsKKwogICAgIHN0YXRpYyBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVTdG9yYWdlUHJvdmlkZXIpOyB9Ci0g
ICAgdmlydHVhbCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCkgeyByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6Y3JlYXRlKCk7IH0KKyAgICB2aXJ0dWFsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBj
cmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEKSB7IHJldHVybiBEdW1t
eUNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCB+Q2FjaGVT
dG9yYWdlUHJvdmlkZXIoKSB7IH07CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDkzNDAxMzg1ODU5ZDc5MDhkOTRiMzdkZjY2OGE2OWRiMjcxMmY1NzAuLmI4ZTA4YzFmYjQyYjE3
YjQ2NzkyZmRiYjk2YjgxNzIwMTIxNzU5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTYzLDgg
KzE2Myw2IEBAIHNldChXZWJLaXRfTUVTU0FHRVNfSU5fRklMRVMKIAogICAgIFdlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAKLSAgICBX
ZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KLQog
ICAgIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIubWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVu
TWFuYWdlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggN2QwYmUzMTllYjEzNWM2YTE2MWM2YTIyMjUyY2RkNmM0ZDNj
NjdjOC4uNDI2Yjg2NzVkZjRiNDMwYjRmM2NlYTZmODU3MGU0YTIwYzZiMTJiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xMTcsNyAr
MTE3LDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
QXV0b21hdGlvblNlc3Npb25NZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2Uu
aAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCA2YmEwYzlmZDlhNWExYmE3YThmMTdmNjY2NjE1YmUwMzg2ZGU0M2Q1Li5j
MTFiM2Y4ZWJlZWQ0MmRlMDQxYjNkZDRjOWQ1MTJhZmQ0ZWQ2N2IwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xNTAsNyArMTUwLDYgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAg
ICAgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgXAogICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uIFwKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IFwKLSAgICBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uIFwKICAgICBXZWJDb25uZWN0aW9uIFwKICAgICBXZWJDb29raWVNYW5h
Z2VyIFwKICAgICBXZWJDb29raWVNYW5hZ2VyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4
IDRjYzY3ZjgyY2E4NGUzMmVlZDg4YjIyZGUxODU2OWZlMmM1OGFmYTcuLjgwYWFiNjhkMzZjNDY4
YTRiMGNiOTA4ZjZjZmY2NTBjMmFmNTMxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTYwMCw3
ICs2MDAsNyBAQCB2b2lkIEVuZ2luZTo6ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHlPbkJhY2tn
cm91bmRUaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBDbwogCiB2b2lkIEVuZ2luZTo6Y2xlYXJN
ZW1vcnlSZXByZXNlbnRhdGlvbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
ewotICAgIHJlYWRDYWNoZXNGcm9tRGlzayhvcmlnaW4sIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShDYWNoZXNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgcmVhZENhY2hlc0Zyb21EaXNr
KG9yaWdpbiwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhY2hlc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkgewogICAg
ICAgICAgICAgY2FsbGJhY2socmVzdWx0LmVycm9yKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IDA4Yjk0YjQ3ZTY0MDRhYTZkOThkMWIw
NGNjODMxMGM4YTAxZjg1NzMuLjVhN2JlMjdmYTRhMDM1ZmFiM2VjZWEyYjY2NjJlYzg0ZjUwY2Ux
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAgLTUxNSw3ICs1MTUsNyBAQCB2
b2lkIENhY2hlczo6cmVxdWVzdFNwYWNlKHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDb21wbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9x
dW90YU1hbmFnZXItPnJlcXVlc3RTcGFjZShzcGFjZVJlcXVpcmVkLCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYXV0byBkZWNpc2lvbikgeworICAgIG1fcXVvdGFNYW5hZ2VyLT5yZXF1
ZXN0U3BhY2Uoc3BhY2VSZXF1aXJlZCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1
dG8gZGVjaXNpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnk6CiAg
ICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6UXVvdGFFeGNlZWRlZCk7CkBAIC01NDAsNyArNTQw
LDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlUmVjb3JkKGNvbnN0IENhY2hlJiBjYWNoZSwgY29uc3Qg
UmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fc3RvcmFnZS0+c3RvcmUoQ2FjaGU6OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwgcmVj
b3JkKSwgeyB9LCBbcHJvdGVjdGVkU3RvcmFnZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGludCBlcnJvcikgeworICAgIG1fc3RvcmFnZS0+c3Rv
cmUoQ2FjaGU6OmVuY29kZShyZWNvcmRJbmZvcm1hdGlvbiwgcmVjb3JkKSwgeyB9LCBbcHJvdGVj
dGVkU3RvcmFnZSA9IG1ha2VSZWYoKm1fc3RvcmFnZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGludCBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVzOjp3cml0ZVJlY29y
ZCBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGVycm9yKTsKICAgICAgICAgICAgIGNhbGxiYWNrKEVy
cm9yOjpXcml0ZURpc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZGQyYjEyZWJlMjRkYzYzNTdjNWM4YzljNDRkYWQ5NTdmMDU2YjQ1OC4uNjI4MDk4ZTE0YzFk
MDVjYzlmYTI1N2RkOGExMDJlNzI2ZmYyNzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlUXVlcnlPcHRpb25zLmg+CiAKQEAg
LTQxLDExICs0MCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlOwogI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIENhY2hlU3RvcmFnZSwgIiVwIC0gQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbjo6IiBmbXQsICZtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCAj
I19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lO
X0NBTExCQUNLKGZ1bmN0aW9uTmFtZSwgZm10LCByZXN1bHRHZXR0ZXIpIFwKICAgICBpZiAoIXJl
c3VsdC5oYXNfdmFsdWUoKSlcCi0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKHNlc3Npb25J
RC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiJXAgLSBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjolcyAoJSIgUFJJdTY0ICIpIC0gZmFpbGVkIC0gZXJyb3Ig
JWQiLCBjb25uZWN0aW9uLnB0cigpLCBmdW5jdGlvbk5hbWUsIHJlcXVlc3RJZGVudGlmaWVyLCAo
aW50KXJlc3VsdC5lcnJvcigpKTsgXAorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIENhY2hlU3RvcmFnZSwgIkNhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb246OiVzIC0gZmFpbGVkIC0gZXJyb3IgJWQiLCBmdW5jdGlvbk5h
bWUsIChpbnQpcmVzdWx0LmVycm9yKCkpOyBcCiAgICAgZWxzZSB7XAogICAgICAgICBhdXRvIHZh
bHVlID0gcmVzdWx0R2V0dGVyKHJlc3VsdC52YWx1ZSgpKTsgXAogICAgICAgICBVTlVTRURfUEFS
QU0odmFsdWUpOyBcCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgQ2FjaGVTdG9yYWdlLCAiJXAgLSBDYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uOjolcyAoJSIgUFJJdTY0ICIpIC0gc3VjY2VlZGVkIC0gIiBmbXQsIGNvbm5lY3Rp
b24ucHRyKCksIGZ1bmN0aW9uTmFtZSwgcmVxdWVzdElkZW50aWZpZXIsIHZhbHVlKTsgXAorICAg
ICAgICBSRUxFQVNFX0xPR19JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IENhY2hlU3RvcmFnZSwgIkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OiVzIC0gc3VjY2Vl
ZGVkIC0gIiBmbXQsIGZ1bmN0aW9uTmFtZSwgdmFsdWUpOyBcCiAgICAgfQogQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbjo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKICAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uKQpAQCAtNjMsNTcgKzYyLDU3IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
On5DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4s
IFN0cmluZyYmIGNhY2hlTmFtZSkKK3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIG9y
aWdpbiwgU3RyaW5nJiYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIm9wZW4gKCUiIFBSSXU2NCAiKSIs
IHJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6Om9wZW4obV9jb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNhY2hlTmFt
ZSksIFtjb25uZWN0aW9uID0gbWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgc2Vz
c2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYg
cmVzdWx0KSB7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgib3BlbiBjYWNoZSIpOworICAg
IEVuZ2luZTo6b3BlbihtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklELCBX
VEZNb3ZlKG9yaWdpbiksIFdURk1vdmUoY2FjaGVOYW1lKSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHNlc3Npb25JRF0oYXV0byYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygib3BlbiIsICJjYWNoZSBp
ZGVudGlmaWVyIGlzICUiIFBSSXU2NCwgW10oY29uc3QgYXV0byYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmlkZW50aWZpZXI7IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpPcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJl
bW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OnJlbW92ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmUgKCUiIFBSSXU2NCAiKSBjYWNoZSAlIiBQUkl1NjQs
IHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpOwotICAgIEVuZ2luZTo6cmVtb3Zl
KG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmll
ciwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCBzZXNz
aW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiBy
ZXN1bHQpIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmUgY2FjaGUgJSIgUFJJ
dTY0LCBjYWNoZUlkZW50aWZpZXIpOworICAgIEVuZ2luZTo6cmVtb3ZlKG1fY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRF0oYXV0byYgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygicmVtb3Zl
IiwgInJlbW92ZWQgY2FjaGUgJSIgUFJJdTY0LCBbXShjb25zdCBhdXRvJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUuaWRlbnRpZmllcjsgfSk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKICAgICB9KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpjYWNoZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyKQordm9pZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpjYWNoZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBvcmlnaW4sIHVpbnQ2
NF90IHVwZGF0ZUNvdW50ZXIsIENhY2hlSW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhY2hlcyAoJSIgUFJJdTY0ICIpIiwgcmVxdWVzdElk
ZW50aWZpZXIpOwotICAgIEVuZ2luZTo6cmV0cmlldmVDYWNoZXMobV9jb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCwgV1RGTW92ZShvcmlnaW4pLCB1cGRhdGVDb3VudGVyLCBb
Y29ubmVjdGlvbiA9IG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHNlc3Npb25J
RCwgb3JpZ2luLCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQp
IHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYWNoZXMiKTsKKyAgICBFbmdpbmU6OnJl
dHJpZXZlQ2FjaGVzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIFdU
Rk1vdmUob3JpZ2luKSwgdXBkYXRlQ291bnRlciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHNlc3Npb25JRCwgb3JpZ2luXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAg
UkVMRUFTRV9MT0dfRlVOQ1RJT05fSUZfQUxMT1dFRF9JTl9DQUxMQkFDSygiY2FjaGVzIiwgImNh
Y2hlcyBzaXplIGlzICVsdSIsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5p
bmZvcy5zaXplKCk7IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpVcGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
cmVzdWx0KSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bjo6cmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMJiYgdXJsKQordm9p
ZCBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpyZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmIHVybCwgUmVj
b3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVSZWNvcmRzICglIiBQUkl1NjQgIikgaW4gY2FjaGUgJSIgUFJJdTY0LCByZXF1ZXN0
SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBFbmdpbmU6OnJldHJpZXZlUmVjb3Jk
cyhtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklELCBjYWNoZUlkZW50aWZp
ZXIsIFdURk1vdmUodXJsKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRzT3JFcnJvciYm
IHJlc3VsdCkgeworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlUmVjb3JkcyBp
biBjYWNoZSAlIiBQUkl1NjQsIGNhY2hlSWRlbnRpZmllcik7CisgICAgRW5naW5lOjpyZXRyaWV2
ZVJlY29yZHMobV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCwgY2FjaGVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHVybCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBz
ZXNzaW9uSURdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19G
VU5DVElPTl9JRl9BTExPV0VEX0lOX0NBTExCQUNLKCJyZXRyaWV2ZVJlY29yZHMiLCAicmVjb3Jk
cyBzaXplIGlzICVsdSIsIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXpl
KCk7IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpVcGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBz
ZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkp
OwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0
ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucykK
K3ZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkZWxldGVNYXRjaGluZ1JlY29yZHMgKCUiIFBSSXU2
NCAiKSBpbiBjYWNoZSAlIiBQUkl1NjQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXIpOwotICAgIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3
b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShvcHRpb25zKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlm
aWVyc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkZWxl
dGVNYXRjaGluZ1JlY29yZHMgaW4gY2FjaGUgJSIgUFJJdTY0LCBjYWNoZUlkZW50aWZpZXIpOwor
ICAgIEVuZ2luZTo6ZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKG1fY29ubmVjdGlvbi5uZXR3b3JrUHJv
Y2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShvcHRpb25zKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlc3Npb25JRF0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0ZVTkNUSU9OX0lG
X0FMTE9XRURfSU5fQ0FMTEJBQ0soImRlbGV0ZU1hdGNoaW5nUmVjb3JkcyIsICJkZWxldGVkICVs
dSByZWNvcmRzIiwgIFtdKGNvbnN0IGF1dG8mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5zaXplKCk7
IH0pOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpEZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1
bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29y
ZHMpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNv
cmQ+JiYgcmVjb3JkcywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInB1dFJlY29yZHMgKCUiIFBSSXU2NCAiKSBpbiBj
YWNoZSAlIiBQUkl1NjQgIiwgJWx1IHJlY29yZHMiLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJ
ZGVudGlmaWVyLCByZWNvcmRzLnNpemUoKSk7Ci0gICAgRW5naW5lOjpwdXRSZWNvcmRzKG1fY29u
bmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwgV1RG
TW92ZShyZWNvcmRzKSwgW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09y
RXJyb3ImJiByZXN1bHQpIHsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJwdXRSZWNvcmRz
IGluIGNhY2hlICUiIFBSSXU2NCAiLCAlbHUgcmVjb3JkcyIsIGNhY2hlSWRlbnRpZmllciwgcmVj
b3Jkcy5zaXplKCkpOworICAgIEVuZ2luZTo6cHV0UmVjb3JkcyhtX2Nvbm5lY3Rpb24ubmV0d29y
a1Byb2Nlc3MoKSwgc2Vzc2lvbklELCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3Jkcyks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzZXNzaW9uSURdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19GVU5DVElPTl9JRl9BTExPV0VEX0lOX0NB
TExCQUNLKCJwdXRSZWNvcmRzIiwgInB1dCAlbHUgcmVjb3JkcyIsICBbXShjb25zdCBhdXRvJiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUuc2l6ZSgpOyB9KTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UHV0UmVjb3Jkc0NvbXBsZXRl
ZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KSwgc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb24uaAppbmRleCA3OWE1MzcxYjgwNmUwZWNiY2I1NTcxMjdhOWIw
YjQwZGQzNjgzMjMyLi5kOTRlYzZmNzZkNzIxMzc4ZGU2Yzc0MDgyOTk5NDg1YmRjNGNmMjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaApAQCAtMjcsMTQgKzI3LDI3IEBACiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2lu
ZS5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIENvbm5lY3Rpb247Ci1jbGFzcyBEZWNvZGVyOworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRp
Zmllck9yRXJyb3I+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllck9yRXJyb3IgY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoV2ViQ29y
ZTo6RE9NQ2FjaGVFbmdpbmU6OkVycm9yOjpJbnRlcm5hbCk7IH07Cit9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXN5bmNSZXBseUVycm9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVu
dGlmaWVyc09yRXJyb3I+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciBjcmVhdGUoKSB7IHJldHVybiBtYWtlVW5leHBlY3RlZChX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKTsgfTsKK307Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SW5mb3NPckVycm9yPiB7CisgICAgc3RhdGljIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNo
ZUluZm9zT3JFcnJvciBjcmVhdGUoKSB7IHJldHVybiBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpE
T01DYWNoZUVuZ2luZTo6RXJyb3I6OkludGVybmFsKTsgfTsKK307Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBBc3luY1JlcGx5RXJyb3I8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNPckVycm9y
PiB7CisgICAgc3RhdGljIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRzT3JFcnJvciBj
cmVhdGUoKSB7IHJldHVybiBtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
RXJyb3I6OkludGVybmFsKTsgfTsKK307CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
MCwxMyArNjMsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CiAKLSAg
ICB2b2lkIG9wZW4oUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IG9wZW5SZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYsIFN0cmluZyYmIGNhY2hlTmFtZSk7Ci0gICAgdm9p
ZCByZW1vdmUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlbW92ZVJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwotICAgIHZvaWQgY2FjaGVzKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCByZXRyaWV2ZUNhY2hlc0lkZW50aWZpZXIsIFdlYkNvcmU6OkNsaWVudE9y
aWdpbiYmLCB1aW50NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICB2b2lkIG9wZW4oUEFMOjpTZXNz
aW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCBTdHJpbmcmJiBjYWNoZU5hbWUsIFdlYkNv
cmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJlbW92ZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBj
YWNoZXMoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmLCB1aW50NjRfdCB1
cGRhdGVDb3VudGVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJbmZvc0NhbGxiYWNr
JiYpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmKTsKLSAg
ICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpOwotICAgIHZvaWQgcHV0
UmVjb3JkcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+JiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3Jk
c0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYpOwogCiAgICAgdm9pZCByZWZlcmVuY2UoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkZXJlZmVyZW5jZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBkOTk3NWQ0Y2Q4MzcyNTJkNDgy
OGM5YTIwNjA2NmVkYTYxNGRiYWQ2Li5mOGZmNzZlNGEyZDRjOWVlZGRhYjUxZThlODdiN2ZkYzdh
MWEwMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yMSwxNyArMjEsMTcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4g
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7Ci0gICAgUmVmZXJlbmNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKTsKLSAgICBEZXJlZmVyZW5j
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7Cisg
ICAgUmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyKQorICAgIERlcmVmZXJlbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKQogCi0gICAgT3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
IG9yaWdpbiwgU3RyaW5nIGNhY2hlTmFtZSk7Ci0gICAgUmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
Zmllcik7Ci0gICAgQ2FjaGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50
NjRfdCB1cGRhdGVDb3VudGVyKTsKKyAgICBPcGVuKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIFN0cmluZyBjYWNoZU5hbWUpIC0+
IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciByZXN1bHQp
IEFzeW5jCisgICAgUmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyKSAtPiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmll
ck9yRXJyb3IgcmVzdWx0KSBBc3luYworICAgIENhY2hlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCB1cGRhdGVD
b3VudGVyKSAtPiAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSW5mb3NPckVycm9yIHJl
c3VsdCkgQXN5bmMKKworICAgIFJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVVJMIHVybCkgLT4gKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpSZWNvcmRzT3JFcnJvciByZXN1bHQpIEFzeW5jCisgICAgRGVsZXRlTWF0Y2hp
bmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkNh
Y2hlUXVlcnlPcHRpb25zIG9wdGlvbnMpIC0+IChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVj
b3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCkgQXN5bmMKKyAgICBQdXRSZWNvcmRzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2Vi
Q29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gcmVjb3JkKSAtPiAoV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpIEFzeW5jCiAKICAgICBD
bGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4pIC0+IChPcHRpb25hbDxXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6RXJyb3I+IGVycm9yKSBBc3luYwogICAgIEVuZ2luZVJlcHJlc2VudGF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFN0cmluZyByZXByZXNlbnRhdGlvbikgQXN5
bmMKLQotICAgIFJldHJpZXZlUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFVSTCB1cmwp
OwotICAgIERlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMgb3B0aW9ucyk7Ci0gICAgUHV0UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTA2NzFlNzY2NzZj
ZDkzNzljNjVmNzFjMTI0NTg2NDQzNWNmZWQyMy4uZWZhMmRiNTRiMTBjNWFiZTZiOGY3Nzg3N2Fh
Y2FkODJiNDgzNTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVk
ZSA8d3RmL1VuZXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNw
YWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMzZi
ZDkxMmUwYmNlNGFhOGNiMThhZDkwMWJiYjNmZTkwYTczYzgwMy4uYzRmYjAwYjA4M2M0MTEyYTIy
YzgxZWM0NWYwODhkYTA5Y2I4NjllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaApAQCAtODMsNiArODMsMTAgQEAgZW51bSBjbGFzcyBXYWl0Rm9yT3B0aW9uIHsKICAg
ICB9IFwKIHdoaWxlICgwKQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBBc3luY1JlcGx5UmVzdWx0PiBz
dHJ1Y3QgQXN5bmNSZXBseUVycm9yIHsKKyAgICBzdGF0aWMgQXN5bmNSZXBseVJlc3VsdCBjcmVh
dGUoKSB7IHJldHVybiB7IH07IH07Cit9OworCiBjbGFzcyBNYWNoTWVzc2FnZTsKIGNsYXNzIFVu
aXhNZXNzYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCBhMzc3M2IxNDEyZmUzNjVhNGExMjdlODZhY2E5Y2E2NmNlNmYyMDdjLi41MjUxNDkwMmFiYmUx
Y2M3MTQ2YjQzYmU3Y2Q4YzQ2YmFiNDkwNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTU5NCwxMyArNTk0LDE1IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICAgICAgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9w
YXJhbWV0ZXJzOgogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgT3B0aW9u
YWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVzO1xuJyAlIHgubmFtZSkKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTtcbiAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoJyAlIHgubmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5j
UmVwbHlFcnJvcjwnICsgeC50eXBlICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNzYWdlLnJl
cGx5X3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtc
biAgICAgICAgcmV0dXJuO1xuICAgIH1cbicpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGNvbXBsZXRpb25IYW5kbGVyKCcpCiAgICAgICAgICAgICAgICAgaWYgbGVuKG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J1dURk1vdmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9pbih4Lm5hbWUgZm9yIHggaW4gbWVz
c2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
KTtcbn1cblxuJykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpjYW5j
ZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilc
bntcbiAgICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9wYXJhbWV0ZXJzKQotICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsneyB9JyBmb3IgeCBpbiBtZXNzYWdlLnJl
cGx5X3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9p
bihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyk7XG59XG5cbicpCiAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6
OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NjI0NTY0ZGFmMTk4ZDA0ZmM4
NGFmMjg2NDEyNjY3YjNlNThlMjhjLi5kZGIzYTMwMDBjYWVmNzIzNWMyNjQ2Y2QwZjQwNDhjYmNl
YjU2MGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk2OSw3ICs5NjksNiBAQAogCQk1MTdBNTJEOTFGNDNBOURBMDBEQ0RDMEEgLyog
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk1MTdBNTMwRjFGNDdBODYyMDBEQ0RD
MEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzBFMUY0N0E4NDMwMERD
REMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MTdBNTMxMDFGNDdBODYyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1
MzBEMUY0N0E4NDMwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oICov
OyB9OwotCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEQgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEQgLyogV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEUzMTYzQTQ4NkMw
MEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNB
NDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi87IH07CiAJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0Yw
RTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMjE2
M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsg
fTsKQEAgLTMwOTksNyArMzA5OCw2IEBACiAJCTQxNTFFNUMzMUZCQjkwQTkwMEU0N0UyRCAvKiBG
b3JtRGF0YVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3Jt
RGF0YVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTU3ODUzMDIx
Mjc2QjZGMDBERDM4MDAgLyogY29weS13ZWJjb250ZW50LXJlc291cmNlcy10by1wcml2YXRlLWhl
YWRlcnMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJjb3B5LXdlYmNvbnRlbnQtcmVzb3VyY2VzLXRvLXBy
aXZhdGUtaGVhZGVycy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNTdFNEFG
MjBFMkVDOTgwMEE2QzBENyAvKiBjb20uZ29vZ2xlLm8xZGJyb3dzZXJwbHVnaW4uc2IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gY29tLmdvb2dsZS5vMWRicm93c2VycGx1Z2luLnNiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTg5N0VDQjFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg5N0VD
QzFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTg5N0VDRDFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAv
KiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzI4OSw3ICszMjg3LDYgQEAKIAkJNTE3QTUzMEMxRjQ3OUU5NzAwRENEQzBBIC8qIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTV0Ns
aWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxN0E1MzBEMUY0N0E4NDMwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTV0NsaWVudENvbm5lY3Rp
b25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTV0NsaWVudENv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk1MTdBNTMwRTFGNDdBODQzMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNX
Q2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUw
RCAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwpAQCAtNjUxNiw3ICs2NTEzLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxODk3
RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLywK
IAkJCQk0MTg5N0VDRDFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5oICovLAotCQkJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovLAogCQkJCTQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAv
KiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi8sCiAJCQkJNDFEMTI5RDkxRjNEMTAxNDAw
RDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8sCiAJCQkpOwpAQCAtODY3Niw3
ICs4NjcyLDYgQEAKIAkJCQkxQzBBMTk1MTFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUMwQTE5NTIxQzhGRkRG
QjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oICovLAogCQkJ
CTFDMEExOTVCMUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2Ny
aXB0U291cmNlLmggKi8sCi0JCQkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBEIC8qIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFBMUZFQzFBMTYy
N0I0NTYwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQTFGRUMxQjE2MjdCNDU3MDA3MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8s
CiAJCQkJMzMwOTM0NDMxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLApAQCAtMTEyNTgsNyArMTEyNTMsNiBAQAogCQkJCTU3RENFRDcwMjE0
MkVFNjgwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzBBMTk1NzFDOTAwNjhGMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUMwQTE5NTMxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE3Q0YwRTMxNjNBNDg2
QzAwQzI5NTBEIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRkVDMUMxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMwOTM0NDcxMzE1
QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzMwOTM0NDkxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcAppbmRleCAxYmQyMDYwY2Q2MWFlYWIzZmRhNzEzMTQxMDVlZDgxNWRjOTM4YTBjLi4y
MTNlYzg2Y2VkNGFiNjU2ZDEzNDBiMmE3OThlZGIwYzM1YjIxYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwCkBAIC01NiwzNCArNTYsMzQgQEAgSVBDOjpDb25uZWN0aW9uJiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpjb25uZWN0aW9uKCkKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwog
fQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgY2FjaGVOYW1lKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVu
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hl
TmFtZSwgRE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246Ok9wZW4obV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBvcmlnaW4sIGNh
Y2hlTmFtZSksIDApOworICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246Ok9wZW4obV9zZXNzaW9uSUQsIG9yaWdp
biwgY2FjaGVOYW1lKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
bW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUlkZW50
aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpSZW1vdmUobV9zZXNzaW9uSUQsIHJl
cXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIpLCAwKTsKKyAgICBjb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
OjpSZW1vdmUobV9zZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciksIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
IG9yaWdpbiwgdWludDY0X3QgdXBkYXRlQ291bnRlcikKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IHVwZGF0ZUNvdW50ZXIsIERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6Q2FjaGVzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRl
bnRpZmllciwgb3JpZ2luLCB1cGRhdGVDb3VudGVyKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
Q2FjaGVzKG1fc2Vzc2lvbklELCBvcmlnaW4sIHVwZGF0ZUNvdW50ZXIpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBET01D
YWNoZUVuZ2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OlJldHJpZXZl
UmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwg
dXJsKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6UmV0cmlldmVSZWNvcmRzKG1fc2Vzc2lvbklE
LCBjYWNoZUlkZW50aWZpZXIsIHVybCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBX
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMm
JiBvcHRpb25zKQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9w
ZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBE
T01DYWNoZUVuZ2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpEZWxldGVNYXRjaGluZ1JlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpLCAwKTsKKyAgICBjb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uOjpEZWxldGVNYXRjaGluZ1JlY29yZHMobV9zZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciwg
cmVxdWVzdCwgb3B0aW9ucyksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVj
b3JkcykKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24o
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIERPTUNh
Y2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OlB1dFJlY29yZHMobV9zZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXIsIHJlY29yZHMpLCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpQdXRSZWNvcmRzKG1fc2Vzc2lv
bklELCBjYWNoZUlkZW50aWZpZXIsIHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllcikKQEAgLTk2LDQyICs5NiwxMiBAQCB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRlcmVmZXJlbmNlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6RGVyZWZl
cmVuY2UobV9zZXNzaW9uSUQsIGNhY2hlSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIFdlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkKLXsKLSAgICBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1
bHQpOwotfQotCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJv
ciYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRl
ZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKLX0KLQotdm9pZCBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjp1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hl
SW5mb3NPckVycm9yJiYgcmVzdWx0KQotewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVw
ZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLX0KLQotdm9p
ZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkKLXsKLSAgICBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VsdCkpOwotfQotCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29y
ZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29yZElkZW50aWZpZXJz
T3JFcnJvciYmIHJlc3VsdCkKLXsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVS
ZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotfQot
Ci12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3Vs
dCkKLXsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwotfQotCiB2b2lkIFdlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkNhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OkNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24geyBtX3Nlc3Npb25J
RCwgb3JpZ2luIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjplbmdpbmVSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmVuZ2luZVJlcHJlc2VudGF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY2FsbGJhY2spCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6RW5naW5lUmVwcmVzZW50YXRp
b24geyBtX3Nlc3Npb25JRCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaAppbmRleCBjMTZmMzEwZWRmMzgwMjM1MWM4NzMxZDcyNjY5ODJlZDhlMzNiNTE4Li40ZTU4
YWZjMTgzMTljNTUzOGI4YzU0YjE5YmQ4ZDRmMTdkODdjZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmgKQEAgLTUyLDI5ICs1MiwyMSBAQCBwcml2YXRlOgogICAgIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpOwogCiAgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbgotICAg
IHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7Ci0gICAgdm9pZCBk
b1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKSBmaW5hbDsKLSAgICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHVwZGF0ZUNv
dW50ZXIpIGZpbmFsOworICAgIHZvaWQgb3Blbihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hl
SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdXBkYXRlQ291bnRlciwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSW5mb3NDYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHZvaWQgZG9SZXRyaWV2
ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgY29uc3QgVVJMJikgZmluYWw7Ci0gICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9u
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25z
JiYpIGZpbmFsOwotICAgIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OlJlY29yZD4mJikgZmluYWw7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMo
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3Jkc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVy
YXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXZWJDb3JlOjpET01DYWNoZUVu
Z2luZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGJhdGNo
UHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJ
ZGVudGlmaWVyc0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCByZWZlcmVuY2UodWludDY0
X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlcmVmZXJlbmNlKHVpbnQ2NF90
IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5UmVwcmVzZW50
YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OkNvbXBsZXRpb25DYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIGVuZ2luZVJlcHJlc2Vu
dGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CisgICAg
dm9pZCBlbmdpbmVSZXByZXNlbnRhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2Uo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJikgZmluYWw7CiAKLSAgICB2b2lkIG9wZW5Db21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yJik7Ci0gICAgdm9pZCByZW1vdmVDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpDYWNoZUlkZW50aWZpZXJPckVycm9yJik7Ci0gICAgdm9pZCB1cGRhdGVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDYWNoZUlu
Zm9zT3JFcnJvciYmKTsKLQotICAgIHZvaWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZHNPckVycm9yJiYpOwot
ICAgIHZvaWQgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsK
LSAgICB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7Ci0K
ICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9wcm92aWRlcjsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTY3ZWM5MTQ3NTNkZWZmMDFmYjky
N2NmMWM4YTg1YjZjNGE0NDJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uIHsKLSAgICBPcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJv
ciByZXN1bHQpOwotICAgIFJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3IgcmVzdWx0
KTsKLSAgICBVcGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDYWNoZUluZm9zT3JFcnJvciByZXN1bHQpOwotCi0gICAgVXBkYXRl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZHNPckVycm9yIHJlc3VsdCk7Ci0gICAgRGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpOwotICAgIFB1dFJlY29yZHNDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmRJ
ZGVudGlmaWVyc09yRXJyb3IgcmVzdWx0KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwCmluZGV4IGIw
YWI1ZGZmZDgwZTM1NzE0NTIzMWY2MWZmYjc0NjRjZmYxYmM4NDYuLjlhYjBlMGY2YTUzZjRlZjBi
YTRmZjgzZGJjYzVkOWQxNzkyNWE1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcApAQCAtNDksMTAg
KzQ5LDQgQEAgUmVmPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOjpjcmVhdGVDYWNoZVN0b3JhZ2UKICAgICByZXR1cm4gKm1fZGVmYXVsdENv
bm5lY3Rpb247CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OnByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
aWYgKGF1dG8qIGNhY2hlQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkKLSAgICAgICAgY2FjaGVDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaAppbmRleCA1ZGE4
NTAzZWNiNTYyZDQwZTQ1YmZjM2FmMTY4NjBiYWUwMjlhMDBlLi5jYjE2ZDMyZTc3OTYyNzZmNmM5
ZTVlMDg2N2ZjYmQwMDZlNWNmOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaApAQCAtNDMsOCArNDMsNiBA
QCBwdWJsaWM6CiAKICAgICBSZWY8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gY3Jl
YXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCkgZmluYWw7CiAKLSAgICB2
b2lkIHByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0KIHByaXZhdGU6
CiAgICAgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDU3ZWRkOTI3NWJkNjA1OTYwNDQ4NzRmNDAxMDFlNGU4NDBmYTE4
ODMuLmFlMzg4M2Q4NmI2ODllNjY2ZjE2YWNlZjkwMTY3Mjk0ZTVkMjc4N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNp
bmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb25NZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyTWVzc2FnZXMuaCIKQEAgLTEyMSwxMCArMTE5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkucHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzYTM1ZDlh
YzE5YjU3ODA0NjI0MmZmNjhhOTFmN2Y4NDFlMTk4NjA3Li42MjI3OGE1NjZkMWQ4ZjJhMWM1ZmNm
NTcwMDQ3ZjY1ODk1ZTk4ZGE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb24gY2FsbGJhY2tzIHNob3VsZCBiZSBjb21wbGV0ZWQgb24gbmV0d29yayBjb25uZWN0
aW9uIGNsb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTU3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgICogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNz
LWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAy
MDE5LTA1LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
dWx0aXBsZSB2aWRlb3MgKHdpdGggYXVkaW9zKSB3aXRoIGF1dG9wbGF5ICYgcGxheWlubGluZSBu
b3Qgd29ya2luZy4gT25seSBvbmUgdmlkZW8gcGxheSBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3By
b2Nlc3MtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3Rv
cmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zNWQ5NjMyY2MwNjU3NDI2N2VhYTBlN2Y2M2M5Y2E5ODY3MDAxZjNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1zdG9y
YWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NP
TlNPTEUgTUVTU0FHRTogQ2FjaGUgQVBJIG9wZXJhdGlvbiBmYWlsZWQ6IEludGVybmFsIGVycm9y
CitDT05TT0xFIE1FU1NBR0U6IENhY2hlIEFQSSBvcGVyYXRpb24gZmFpbGVkOiBJbnRlcm5hbCBl
cnJvcgorQ09OU09MRSBNRVNTQUdFOiBDYWNoZSBBUEkgb3BlcmF0aW9uIGZhaWxlZDogSW50ZXJu
YWwgZXJyb3IKK0NPTlNPTEUgTUVTU0FHRTogQ2FjaGUgQVBJIG9wZXJhdGlvbiBmYWlsZWQ6IElu
dGVybmFsIGVycm9yCitDT05TT0xFIE1FU1NBR0U6IENhY2hlIEFQSSBvcGVyYXRpb24gZmFpbGVk
OiBJbnRlcm5hbCBlcnJvcgorCitQQVNTIFBlbmRpbmcgY2FjaGUgb3BlcmF0aW9uIG9uIG5ldHdv
cmsgcHJvY2VzcyBjcmFzaCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2Fj
aGUtc3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXN0b3JhZ2UtbmV0d29ya3Byb2Nl
c3MtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDc0ZGQxNDM0NGQ3ZGE1ZWU2NzM3NGQzNTUzNmJi
OTdjMzJjZDQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUt
c3RvcmFnZS9jYWNoZS1zdG9yYWdlLW5ldHdvcmtwcm9jZXNzLWNyYXNoLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNhY2hlIFN0
b3JhZ2U6IG5ldHdvcmsgcHJvY2VzcyBjcmFzaDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
Citwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7CisgICAgY29uc3QgY2FjaGUgPSBhd2FpdCBz
ZWxmLmNhY2hlcy5vcGVuKCJ0ZXN0MSIpOworICAgIGNvbnN0IHJlc3BvbnNlMU1vID0gbmV3IFJl
c3BvbnNlKG5ldyBBcnJheUJ1ZmZlcigxMDI0ICogMTAyNCkpOworICAgIGlmICghd2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgiUmVxdWlyZXMgaW50ZXJu
YWxzIEFQSSIpOworICAgIHRlc3RSdW5uZXIudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAg
ICByZXR1cm4gcHJvbWlzZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IsIFByb21pc2UuYWxs
KFsKKyAgICAgICAgY2FjaGUucHV0KCIxTW8xIiwgcmVzcG9uc2UxTW8uY2xvbmUoKSksCisgICAg
ICAgIGNhY2hlLnB1dCgiMU1vMiIsIHJlc3BvbnNlMU1vLmNsb25lKCkpLAorICAgICAgICBjYWNo
ZS5wdXQoIjFNbzMiLCByZXNwb25zZTFNby5jbG9uZSgpKSwKKyAgICAgICAgY2FjaGUucHV0KCIx
TW80IiwgcmVzcG9uc2UxTW8uY2xvbmUoKSksCisgICAgICAgIGNhY2hlLnB1dCgiMU1vNSIsIHJl
c3BvbnNlMU1vLmNsb25lKCkpLAorICAgIF0pKTsKK30sICJQZW5kaW5nIGNhY2hlIG9wZXJhdGlv
biBvbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2giKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>