<?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>222992</bug_id>
          
          <creation_ts>2021-03-09 14:25:40 -0800</creation_ts>
          <short_desc>Use UniqueRef&lt;&gt; instead of std::unique_ptr&lt;&gt; when passing IPC::Encoder to sendMessage()</short_desc>
          <delta_ts>2021-04-09 10:34:22 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224377</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737760</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 14:25:40 -0800</bug_when>
    <thetext>Use UniqueRef&lt;&gt; instead of std::unique_ptr&lt;&gt; when passing IPC::Encoder to sendMessage(), to make it clear it cannot be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737769</commentid>
    <comment_count>1</comment_count>
      <attachid>422761</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 14:40:07 -0800</bug_when>
    <thetext>Created attachment 422761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737821</commentid>
    <comment_count>2</comment_count>
      <attachid>422771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 15:52:07 -0800</bug_when>
    <thetext>Created attachment 422771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737829</commentid>
    <comment_count>3</comment_count>
      <attachid>422774</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 16:02:09 -0800</bug_when>
    <thetext>Created attachment 422774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737860</commentid>
    <comment_count>4</comment_count>
      <attachid>422774</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-09 16:55:55 -0800</bug_when>
    <thetext>Comment on attachment 422774
Patch

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

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:-637
&gt; -        replyEncoder.reset();

There are two of these.  Why don&apos;t you remove both of them?

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h:75
&gt; +    bool didReceiveSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, UniqueRef&lt;IPC::Encoder&gt;&amp; replyEncoder);

We should probably use UniqueRef&lt;&gt;&amp;&amp; and move the ownership.
It would be worth putting in the change log that we need to return a boolean because we are not checking the null status of the unique_ptr any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737863</commentid>
    <comment_count>5</comment_count>
      <attachid>422774</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 17:01:13 -0800</bug_when>
    <thetext>Comment on attachment 422774
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:-637
&gt;&gt; -        replyEncoder.reset();
&gt; 
&gt; There are two of these.  Why don&apos;t you remove both of them?

Those of these? I don&apos;t see any other replyEncoder.reset() in this function. If there was, I don&apos;t think it would build because UniqueRef::reset() is not a think AFAIK.
I must be misunderstanding your comment?

&gt;&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManagerSet.h:75
&gt;&gt; +    bool didReceiveSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, UniqueRef&lt;IPC::Encoder&gt;&amp; replyEncoder);
&gt; 
&gt; We should probably use UniqueRef&lt;&gt;&amp;&amp; and move the ownership.
&gt; It would be worth putting in the change log that we need to return a boolean because we are not checking the null status of the unique_ptr any more.

I will clarify the ChangeLog.

The result I used a reference instead of a rvalue-reference is that the call site would look really scary with a r-value reference:
if (didReceiveSyncMessage(connection, decoder, WTFMove(encoder))
    return;
// Use encoder here.

I get that it would work since WTFMove() is just a cast. But it looks scary so I am not sure I want to make that change. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737864</commentid>
    <comment_count>6</comment_count>
      <attachid>422774</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-09 17:03:44 -0800</bug_when>
    <thetext>Comment on attachment 422774
Patch

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

&gt;&gt;&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:-637
&gt;&gt;&gt; -        replyEncoder.reset();
&gt;&gt; 
&gt;&gt; There are two of these.  Why don&apos;t you remove both of them?
&gt; 
&gt; Those of these? I don&apos;t see any other replyEncoder.reset() in this function. If there was, I don&apos;t think it would build because UniqueRef::reset() is not a think AFAIK.
&gt; I must be misunderstanding your comment?

The Messages::RemoteGraphicsContextGL::messageReceiverName code for decoders does something like this too.  Never mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737866</commentid>
    <comment_count>7</comment_count>
      <attachid>422780</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 17:06:17 -0800</bug_when>
    <thetext>Created attachment 422780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737868</commentid>
    <comment_count>8</comment_count>
      <attachid>422781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 17:08:13 -0800</bug_when>
    <thetext>Created attachment 422781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737883</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-09 18:21:49 -0800</bug_when>
    <thetext>Committed r274189: &lt;https://commits.webkit.org/r274189&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422781.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737884</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-09 18:22:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/75244991&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422761</attachid>
            <date>2021-03-09 14:40:07 -0800</date>
            <delta_ts>2021-03-09 15:52:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222992-20210309144006.patch</filename>
            <type>text/plain</type>
            <size>43632</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmOTBhZDExOWEyYmI1ZmIz
Y2QxNjQ0OTJjNDc5MTFhZjRlMzFlZjYuLmYwMDRjMTM4MTQ5NzViMGFmMjNlYmQyZjQ1NDkyMzRh
MzRmYjBmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDMtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVW5pcXVlUmVmPD4gaW5zdGVh
ZCBvZiBzdGQ6OnVuaXF1ZV9wdHI8PiB3aGVuIHBhc3NpbmcgSVBDOjpFbmNvZGVyIHRvIHNlbmRN
ZXNzYWdlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBVbmlxdWVSZWY8PiBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0cjw+IHdoZW4gcGFzc2lu
ZyBJUEM6OkVuY29kZXIgdG8gc2VuZE1lc3NhZ2UoKSwgdG8KKyAgICAgICAgbWFrZSBpdCBjbGVh
ciBpdCBjYW5ub3QgYmUgbnVsbC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdv
aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhB
c3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6d3Jh
cEZvclRlc3RpbmcpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
V2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAg
ICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VT
ZW5kZXI6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6c2VuZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBD
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpz
ZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXI6OmZsdXNoKToKKwogMjAyMS0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtJUEMgSGFyZGVuaW5nXSBQcm90ZWN0IGFnYWluc3QgYmFkIGlu
cHV0IGluIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoKSBh
bmQgTWVzc2FnZVJlY2VpdmVyTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDg2ZWNkZGQ3ZjZlM2IxYWQ3Y2M3YjFkMGJhZGI0M2JkZmMyMzIzYmIuLjU5
Mzg4NTA5NjRjYTZjYzk1M2VhZTFhYjczYmFmODRjYzA4NjQ1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiBt
ZXNzYWdlUmVjZWl2ZXIKICAgICBBU1NFUlQoZGVjb2Rlci0+aXNWYWxpZCgpKTsKIAogICAgIGlm
IChyZXBseUVuY29kZXIpCi0gICAgICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29k
ZXIpKTsKKyAgICAgICAgc2VuZFN5bmNSZXBseShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlx
dWVQdHIoV1RGTW92ZShyZXBseUVuY29kZXIpKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6c2V0
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhEaWRDbG9zZU9uQ29ubmVjdGlv
bldvcmtRdWV1ZUNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtNDE1LDE4ICs0MTUsMTggQEAgdm9pZCBD
b25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogICAg
IG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1
ZXN0SUQpCitVbmlxdWVSZWY8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VF
bmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1
aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKIAog
ICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgogICAgIHN5bmNSZXF1ZXN0SUQgPSAr
K21fc3luY1JlcXVlc3RJRDsKLSAgICAqZW5jb2RlciA8PCBzeW5jUmVxdWVzdElEOworICAgIGVu
Y29kZXIuZ2V0KCkgPDwgc3luY1JlcXVlc3RJRDsKIAogICAgIHJldHVybiBlbmNvZGVyOwogfQog
Ci1ib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBl
bmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCitib29sIENvbm5lY3Rp
b246OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE1l
c3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0
CiAgICAgICAgIGJvb2wgaGFzRGVhZE9ic2VydmVycyA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1
dG8mIG9ic2VydmVyV2Vha1B0ciA6IG1fbWVzc2FnZU9ic2VydmVycykgewogICAgICAgICAgICAg
aWYgKGF1dG8qIG9ic2VydmVyID0gb2JzZXJ2ZXJXZWFrUHRyLmdldCgpKQotICAgICAgICAgICAg
ICAgIG9ic2VydmVyLT53aWxsU2VuZE1lc3NhZ2UoKmVuY29kZXIsIHNlbmRPcHRpb25zKTsKKyAg
ICAgICAgICAgICAgICBvYnNlcnZlci0+d2lsbFNlbmRNZXNzYWdlKGVuY29kZXIuZ2V0KCksIHNl
bmRPcHRpb25zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBoYXNEZWFkT2Jz
ZXJ2ZXJzID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBAIGJvb2wgQ29ubmVj
dGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlv
blNldDxTZW5kT3B0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29ubmVj
dGlvbjo6c2VuZFN5bmNSZXBseShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewogICAg
IHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogfQpAQCAtNTY0LDcg
KzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2Uo
dWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIs
IFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdl
KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIFRp
bWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODc5LDEwICs4NzksMTEg
QEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAg
ICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgbWVzc2FnZSA9IG1fb3V0Z29pbmdNZXNzYWdlcy50YWtlRmlyc3Qo
KTsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdvaW5nTWVzc2FnZXMudGFrZUZpcnN0KCku
bW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
Ci0gICAgICAgIGlmICghc2VuZE91dGdvaW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKSkKKyAg
ICAgICAgaWYgKCFzZW5kT3V0Z29pbmdNZXNzYWdlKG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVu
aXF1ZVB0cihXVEZNb3ZlKG1lc3NhZ2UpKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9
CkBAIC05MjMsNyArOTI0LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdl
KERlY29kZXImIGRlY29kZXIpCiAjZW5kaWYKIAogICAgIGlmIChyZXBseUVuY29kZXIpCi0gICAg
ICAgIHNlbmRTeW5jUmVwbHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKKyAgICAgICAgc2VuZFN5
bmNSZXBseShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoV1RGTW92ZShyZXBseUVu
Y29kZXIpKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKaW5kZXggMGQ4NWQ4ZDdjZThmNGQxNzVkNGEwNDM0Mjc5YzE1YjBlMzhm
YzFmNy4uNGY2YjE4NGZmNDBkOTkyODhlYjYwNjBhN2M1ODg2YjM3MzZjNGI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
QEAgLTI3MywxMCArMjc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmRE
aXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwg
d2FpdEZvck9wdGlvbnMpOwogICAgIH0KIAotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5
bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgVGltZW91dCwgT3B0aW9uU2V0
PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMpOwotICAgIGJvb2wgc2VuZFN5bmNSZXBs
eShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7CisgICAg
VW5pcXVlUmVmPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgVW5pcXVlUmVmPEVuY29kZXI+JiYsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zKTsKKyAgICBib29sIHNlbmRTeW5jUmVwbHkoVW5pcXVlUmVm
PEVuY29kZXI+JiYpOwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CiAKQEAgLTMzMiw3ICsz
MzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25z
dDsKICAgICBib29sIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsKICAg
ICB2b2lkIHNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7Ci0gICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNz
YWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNz
YWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgp
OwogICAgIAogICAgIC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgpAQCAtNDAxLDcg
KzQwMiw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBPdXRnb2luZyBtZXNzYWdlcy4KICAgICBMb2Nr
IG1fb3V0Z29pbmdNZXNzYWdlc011dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxFbmNv
ZGVyPj4gbV9vdXRnb2luZ01lc3NhZ2VzOworICAgIERlcXVlPFVuaXF1ZVJlZjxFbmNvZGVyPj4g
bV9vdXRnb2luZ01lc3NhZ2VzOwogICAgIAogICAgIENvbmRpdGlvbiBtX3dhaXRGb3JNZXNzYWdl
Q29uZGl0aW9uOwogICAgIExvY2sgbV93YWl0Rm9yTWVzc2FnZU11dGV4OwpAQCAtNTAyLDggKzUw
Myw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICplbmNvZGVy
IDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJl
ZjxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXIuZ2V0KCkg
PDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RG
TW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogfQpAQCAtNTE3LDcgKzUxOCw3IEBAIHVpbnQ2
NF90IENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBs
ZXRpb25IYW5kbGVyLCB1aW50CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWVSZWY8RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBhZGRBc3luY1Jl
cGx5SGFuZGxlcigqdGhpcywgbGlzdGVuZXJJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNv
ZGVyKik+KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
RGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNvZGVyICYmIGRlY29k
ZXItPmlzVmFsaWQoKSkKQEAgLTUyNSw4ICs1MjYsOCBAQCB1aW50NjRfdCBDb25uZWN0aW9uOjpz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWlu
dAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBUOjpjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgfSwgQ29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWlu
VGhyZWFkKSk7Ci0gICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAqZW5jb2RlciA8PCBt
ZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKKyAg
ICBlbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2Uo
V1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIHJldHVybiBsaXN0ZW5lcklEOwog
fQpAQCAtNTU2LDcgKzU1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlCiAgICAgUkVMRUFT
RV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJ
RCA9IDA7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMu
Y29udGFpbnMoU2VuZFN5bmNPcHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGlu
ZykpIHsKICAgICAgICAgZW5jb2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5n
KCk7CkBAIC01NjQsNyArNTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6
U2VuZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICB9CiAK
ICAgICAvLyBFbmNvZGUgdGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICAqZW5j
b2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2Fn
ZS5hcmd1bWVudHMoKTsKIAogICAgIC8vIE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZv
ciBhIHJlcGx5LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseURlY29kZXIgPSBz
ZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5k
ZXggOTY3MzBkZWJkMTdiYmZhMWJiNWEyNTc5N2Y5MGZlNjNhNjZlZWZkNC4uZWM5ZThjZmJlNTc1
Mjc3OTQ4MjViZmZkNGY0YWRmYWQ0YjUyNGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxzeXMvbW1h
bi5oPgpAQCAtMTIyLDcgKzEyMyw3IEBAIHZvaWQgRW5jb2Rlcjo6c2V0RnVsbHlTeW5jaHJvbm91
c01vZGVGb3JUZXN0aW5nKCkKICAgICBtZXNzYWdlRmxhZ3MoKS5hZGQoTWVzc2FnZUZsYWdzOjpV
c2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcpOwogfQogCi12b2lkIEVuY29kZXI6Ondy
YXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKK3ZvaWQgRW5j
b2Rlcjo6d3JhcEZvclRlc3RpbmcoVW5pcXVlUmVmPEVuY29kZXI+JiYgb3JpZ2luYWwpCiB7CiAg
ICAgQVNTRVJUKGlzU3luY01lc3NhZ2UoKSk7CiAgICAgQVNTRVJUKCFvcmlnaW5hbC0+aXNTeW5j
TWVzc2FnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCA3MmViMzNk
OTAxNjA2ZDI4OWM3MGQ4YzEzYmRjNDM3ZWZhM2E2ZTcxLi41YWFkZWNjNzI3MWU2NTFlN2RiMDIz
MTlhZjc1MTM0NjFiMDdjNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3Ry
aW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgd3JhcEZvclRl
c3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKKyAgICB2b2lkIHdyYXBGb3JUZXN0aW5n
KFVuaXF1ZVJlZjxFbmNvZGVyPiYmKTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mjk2M2UyMWUxZDcx
N2Y2NGE4MjE5YzUyODliYWYwNTNmMDk5NDg0Li40NzkwMTY4MGVkYzExOGFiZjEyNWZlMzkyZTJj
MjlkMDhiNDRjMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oCkBAIC0xNDMsNyArMTQzLDggQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9u
SGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rp
b24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAg
IEFTU0VSVChyZXBseUVuY29kZXIpOworICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21w
bGV0aW9uSGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxV
bmlxdWVQdHIoV1RGTW92ZShyZXBseUVuY29kZXIpKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29u
bmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIFQ6OnNlbmQoV1RG
TW92ZShyZXBseUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9
OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CkBAIC0xNTksNyArMTYwLDggQEAg
dm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgRGVjb2RlciYgZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNv
ZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0
aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICBBU1NFUlQocmVwbHlFbmNvZGVy
KTsKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVw
bHlFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKFdURk1vdmUocmVw
bHlFbmNvZGVyKSksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4u
IGFyZ3MpIG11dGFibGUgewogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwg
V1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKICAgICBjYWxsTWVtYmVyRnVu
Y3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwpAQCAtMjA1LDcgKzIwNyw3IEBAIHZvaWQgaGFu
ZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIs
IEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0g
bWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5h
bWUoKSwgbGlzdGVuZXJJRCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8
RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOwogICAgICAg
ICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4p
OwogICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFkIH07CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdU
Rk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1
bmN0aW9uKTsKQEAgLTIyMiw3ICsyMjQsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRz
Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLAogICAg
IH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlz
dGVuZXJJRCA9IGRlY29kZXIuZGVzdGluYXRpb25JRCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlz
dGVuZXJJRCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4o
VDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOwogICAgICAgICBUOjpzZW5k
KFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07
CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKaW5kZXggYjFhODNiYjQ0OTI0
MmY5YTY3Y2JhYjBlMWNkNWI1OTJmZGMxMzY4OC4uZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFh
M2YxMmFkNzVjOWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIElQQyB7CiAKIE1lc3NhZ2VTZW5k
ZXI6On5NZXNzYWdlU2VuZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIE1lc3NhZ2VTZW5kZXI6OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9v
bCBNZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVy
LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5j
UmVwbHlJbmZvKQogewogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpOwogICAgIEFTU0VSVChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBmMGFiYTUxNDFhYmY4Y2Y4NGZiMjU5MDU2NDI1YmY3
ZTdiYTI2ODllLi5iZDcyODJiZDVmMTFmNmFlYWQ1ODg1N2Y3NzI2YzE1OTUxNjk4ZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC00
Myw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6Omlz
U3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgICAgICplbmNv
ZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWVSZWY8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgZW5j
b2Rlci5nZXQoKSA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKICAgICB9CkBA
IC05MCwxMCArOTEsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQo
IVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oVDo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6
bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJ
RDsKLSAgICAgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICAgICAgZW5j
b2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IG1lc3Nh
Z2UuYXJndW1lbnRzKCk7CiAgICAgICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNl
bmRPcHRpb25zLCB7eyBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKElQQzo6RGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
ZGVjb2RlciAmJiBkZWNvZGVyLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMDMsNyArMTA0
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdGVuZXJJRDsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5k
T3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
ZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgPSBXVEY6Om51bGxvcHQpOwogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgQ29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmgKaW5kZXggNDk1YWZmZDAzYzZmNTRkNzI4OWZjMTAxZDZkNmRkODg2ZTNiNzcwZC4uMWRk
YWVjNDYyZWJkY2YyYTY4NTViOTRhOWJmNjcxYWQ0YmZjNWEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMTAwLDgg
KzEwMCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIHZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwg
QXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2Vu
ZGluZyB0byBidWZmZXIuCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29k
ZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwot
ICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VS
ZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKGVuY29kZXIuZ2V0KCkgPDwgLi4uIDw8IGFyZ3Vt
ZW50cyk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0
aW9uQ29jb2EubW0KaW5kZXggMDU5ZTgyOTM5NmE1MjQ5ZjA4NTMzNDdlYmMwYjNlYmJlZDM0NjQ4
Ni4uOGQ5Y2RlMDhmNDY3MTQxYTkwZDhlYWY5ZGQ3ODViNzkwMzhkNThlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAt
MjE5LDggKzIxOSw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25u
ZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBt
ZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNl
LgotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1l
OjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7Ci0gICAgICAgICplbmNvZGVyIDw8IE1hY2hQb3J0
KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNv
bm5lY3Rpb24sIDApOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IE1hY2hQb3J0KG1fcmVjZWl2
ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKIAogICAgICAgICBpbml0aWFsaXplU2Vu
ZFNvdXJjZSgpOwogCkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9y
bUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gIW1fcGVuZGluZ091
dGdvaW5nTWFjaE1lc3NhZ2UgJiYgIW1faXNJbml0aWFsaXppbmdTZW5kU291cmNlOwogfQogCi1i
b29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+IGVuY29kZXIpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVl
UmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ091dGdvaW5n
TWFjaE1lc3NhZ2UgJiYgIW1faXNJbml0aWFsaXppbmdTZW5kU291cmNlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA3
YjA0YzA1NDNhOWEwODNjMDBiNDFlNTY3NmU5ZTAyNTI5ODU5NWQ4Li5lZmNkNjYzZjg0MTY0ZTJm
OTZhNjliM2ZiY2FhZDg1ODFlY2Q3Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDI0LDExICs0MjQsMTEgQEAgYm9v
bCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAg
ICByZXR1cm4gIW1fcGVuZGluZ091dHB1dE1lc3NhZ2U7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6
c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jv
b2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBl
bmNvZGVyKQogewogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRh
Y2htZW50TWF4QW1vdW50ICogc2l6ZW9mKHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFj
aG1lbnRzRml0VG9NZXNzYWdlSW5saW5lKTsKIAotICAgIFVuaXhNZXNzYWdlIG91dHB1dE1lc3Nh
Z2UoKmVuY29kZXIpOworICAgIFVuaXhNZXNzYWdlIG91dHB1dE1lc3NhZ2UoZW5jb2Rlci5nZXQo
KSk7CiAgICAgaWYgKG91dHB1dE1lc3NhZ2UuYXR0YWNobWVudHMoKS5zaXplKCkgPiAoYXR0YWNo
bWVudE1heEFtb3VudCAtIDEpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4v
Q29ubmVjdGlvbldpbi5jcHAKaW5kZXggMTlmYzQyZWVhMWM1NjdhZDFjMWIxZDZmZWJlN2Y1Mzg3
ZTI1ZTAxZi4uMDRhZjhkYWI5NjdjMGY0NTI2YjA3NWM0NGFmMGVjODgwODZmYzM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAt
MjcyLDcgKzI3Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdN
ZXNzYWdlcygpIGNvbnN0CiAgICAgcmV0dXJuICFtX3BlbmRpbmdXcml0ZUVuY29kZXI7CiB9CiAK
LWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlx
dWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVF
bmNvZGVyKTsKIApAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdv
aW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgKmVu
Y29kZXIgPDwgMDsKKyAgICBlbmNvZGVyLmdldCgpIDw8IDA7CiAKICAgICAvLyBXcml0ZSB0aGUg
b3V0Z29pbmcgbWVzc2FnZS4KIApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKIAog
ICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xkIG9udG8gdGhlIGVuY29k
ZXIgc28gdGhhdCBpdCB3b24ndCBiZSBkZXN0cm95ZWQKICAgICAvLyBiZWZvcmUgdGhlIHdyaXRl
IGNvbXBsZXRlcy4KLSAgICBtX3BlbmRpbmdXcml0ZUVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIp
OworICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXIubW92ZVRvVW5pcXVlUHRyKCk7
CiAKICAgICAvLyBXZSBjYW4gb25seSBzZW5kIG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBh
IHRpbWUgKHNlZSBjb21tZW50IGluIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CmluZGV4IDE3NDgwYWI2MmU3MjFlNmFhODA0MjYyYTNjNzc5YWI5YWY5YzE3MTIuLjY4OGFlYzYy
ZDc1ZWYzZWQxY2FiYWYwMmQ2NjEyMzAxZGRkYjBkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjEyLDcgKzIxMiw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0
cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNr
VGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRo
cmVhZDtcbicpCiAgICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5k
IG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6
OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29tcGxldGlvbl9oYW5kbGVyX3Bh
cmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xuJykKQEAgLTkwNSwxMSAr
OTA1LDExIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8
JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1c
blxuJykKIAotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQg
JXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCiAgICAgICAgICAgICBpZiBsZW4oc2Vu
ZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpXG57XG4nKQotICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAg
ICplbmNvZGVyIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAgZW5jb2Rlci5nZXQoKSA8PCAlcztc
bicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKaW5kZXggODE0MzA2ZDM3YWE4N2QzMDBmMDFjZWQyNzc1
ODdhY2IzNzk4OWQzNS4uZWMzNDAxNTQyNDI0MzIwNjk4N2UzYjk5ZGZjNjBhYjQwMTM5ZDRhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6Ondhc1Rl
cm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBPcHRp
b25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNS
ZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQorYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZv
LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NU
aHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBpZiAoYXN5bmNSZXBseUluZm8gJiYgY2FuU2VuZE1l
c3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9PSBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7CiAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVwbHlJbmZvLT5maXJzdCwgbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CmluZGV4IDk3MWVjZGFlYWVhNmI0M2JjNDM5MWJmOTE5MjRlZTNhYzY0M2IzMDMuLjkyMzRkNTkz
MjZjYmNmNjFiMGZiZDM0ZTJhYmM2MDk0MzI0OWVmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE2LDcgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3NMYXVuY2hlciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpIDog
MDsgfQogCiAgICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkg
IT0gU3RhdGU6OlRlcm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhy
b3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVz
KTsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlv
blNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdU
Rjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKIAogICAgIHZvaWQgc2h1dERvd25Q
cm9jZXNzKCk7CiAKQEAgLTEzOCw3ICsxMzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlv
bnMmKSB7IH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ01lc3NhZ2UgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOworICAgICAgICBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyOwogICAgICAgICBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5k
T3B0aW9uczsKICAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+IGFzeW5jUmVwbHlJbmZvOwogICAgIH07CkBA
IC0xNjIsOCArMTYzLDggQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxF
X0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklE
KTsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQp
OworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKIAogICAgIHJldHVy
biBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC0xODYs
MTAgKzE4NywxMCBAQCB1aW50NjRfdCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5
bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYQogewogICAgIENPTVBJTEVfQVNT
RVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3lu
Y1JlcGx5SGFuZGxlcklEKCk7Ci0gICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAqZW5j
b2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVu
ZXJJRDsKKyAgICBlbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2Vu
ZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIHt7IFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEZWNvZGVyKiBkZWNvZGVy
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgZGVjb2Rlci0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCmlu
ZGV4IGQ4ZmE1MzgxNGQzYzJkMTUwM2M0NmQ1NWNlNzQwOTg4YWViYTA5OGEuLmRlYzlmMWM4YmFh
YThlMjk4NzI3MmMyZGY1YTIzYWMzZGUyOTdjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC04NSw3ICs4NSw3IEBAIElQQzo6Q29ubmVjdGlv
biogRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogICAg
IHJldHVybiBwcm9jZXNzKCkuY29ubmVjdGlvbigpOwogfQogCi1ib29sIERyYXdpbmdBcmVhUHJv
eHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3lu
Y1JlcGx5SW5mbykKK2Jvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
ZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCiB7CiAgICAgcmV0dXJuIHBy
b2Nlc3MoKS5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92
ZShhc3luY1JlcGx5SW5mbykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCmluZGV4IDU5Y2RmZGFmYWIxZDg1ZWEzYTVhZWNiM2NkMjI5M2U2ZGZiMWViOGQu
LjA4MmIwYzAxMWQxZTM4YTc5MTU1NDBkZTEwYzEzYzcxMThjZThhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2
YXRlOgogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0KCk7IH0KLSAgICBib29sIHNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2Uo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9w
dGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwg
dWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgLy8g
RklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggZTc5NGEzM2ZhODNkMmFh
ODg2OTA1ZGE5YmM1OWZmYzBkNTMwM2E0MS4uYWE4MjI4MjFlNDJkN2MzODhmOTU5MTFiNzgwYWNj
MmQ2NDg5NDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHVpbnQ2NF90IFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
d2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9w
dGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIC8vIFNlbmQgbWVz
c2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0aGUgSVBDOjpDb25uZWN0
aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRzIHF1ZXVlaW5nIG9mIG1l
c3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNoaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjQ5
MzhlMmFiNzU1NTcxNzMwNjUxOGYxNjYwYjE3YmQ5NDc0OTg0Zi4uMzVkNTY1ODA2ODM2NDBmZDA5
MmEyMzRiMGU2OTJmNGZjMWRmZTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+JiYpIGZpbmFsOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLAogICAgICAgICBPcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA0NjBjYjhkNTM5N2Zm
ZDMyZTYxZGE3Y2E4ZGVmMjdlMjE5ZTM1YmUwLi41ZThkODczMDcyZWI4MWI4Y2RmOGI0YjgxMmJh
NmE3ZDNjYTRjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB1aW50NjRfdCBTdXNwZW5kZWRQYWdlUHJv
eHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQ
YWdlSUQudG9VSW50NjQoKTsKIH0KIAotYm9vbCBTdXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNz
YWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykK
K2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBP
cHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4s
IHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICAvLyBTZW5kIG1lc3NhZ2VzIHZp
YSB0aGUgV2ViUHJvY2Vzc1Byb3h5IGluc3RlYWQgb2YgdGhlIElQQzo6Q29ubmVjdGlvbiBzaW5j
ZSBBdXhpbGlhcnlQcm9jZXNzUHJveHkgaW1wbGVtZW50cyBxdWV1ZWluZyBvZiBtZXNzYWdlcwog
ICAgIC8vIHdoaWxlIHRoZSBwcm9jZXNzIGlzIHN0aWxsIGxhdW5jaGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggNzdkN2Y3ZGE4MzY2YjRl
MWViMWUwZTY0NDUyN2VlYmZhOWM3MmFkYS4uZTIwZmZjYTBmYzYwYTcyZTA1MTYxZjJlNWMzNWZk
OTQ2OTYxYWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmgKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qg
ZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBm
aW5hbDsKLSAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAg
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94
eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGJiNzlkN2QwMmZkMjE0
ODIzNDZjNGU0NGUzNmVjYWVkNDJmOGE1Ni4uYTIzM2Y4ZWUwOWFmNWE3YWYwZTI2MTY0ZmE2Y2Nm
NWM1OTBkZWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC02NDg0LDcgKzY0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX2ZpbmRDbGllbnQtPmRpZEZhaWxUb0ZpbmRT
dHJpbmcodGhpcywgc3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jv
b2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVu
Y29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICByZXR1cm4gbV9wcm9jZXNzLT5zZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5SW5mbykp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4N2Q2NDczZWVh
OWZkOWJhNjVjNDhhYjkxZTBkMzY2ZmFmZDliY2Q4Li5mNWI2MjU3ZGMxMGRhNzExZTcwOTRiZmU1
ZGY4MDk4NThjYTk5NWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTkwNiw3ICsxOTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJp
bmcmJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICBib29sIHNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYpIG92ZXJyaWRlOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFs
PHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0
X3Q+PiYmKSBvdmVycmlkZTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkOTU0ZmMyNjk4MzQ1MGEzNjU0
ZjBhZGZmZTg0ZWU0NTJhNmNhYTM4Li41MmE2ZDQ5NjkxYWY5MTc5ZDUzZGE5MDk3NzEyYzk1ZjYx
MWY4YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcApAQCAtNjQ0LDE0ICs2NDQsMTQgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6c2Vu
ZE1lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0
aGkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAg
YXV0byBtZXNzYWdlTmFtZSA9IHN0YXRpY19jYXN0PElQQzo6TWVzc2FnZU5hbWU+KCptZXNzYWdl
SUQpOwotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihtZXNzYWdl
TmFtZSwgKmRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPihtZXNzYWdlTmFtZSwgKmRlc3RpbmF0aW9uSUQpOwogCiAgICAgSlNWYWx1
ZVJlZiByZXR1cm5WYWx1ZSA9IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAg
Ym9vbCBoYXNSZXBseSA9ICEhbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMobWVzc2Fn
ZU5hbWUpOwogICAgIGlmIChoYXNSZXBseSkgewogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gSVBDOjpuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwotICAgICAgICAqZW5jb2RlciA8PCBs
aXN0ZW5lcklEOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IGxpc3RlbmVySUQ7CiAKICAgICAg
ICAgSlNPYmplY3RSZWYgcmVzb2x2ZTsKICAgICAgICAgSlNPYmplY3RSZWYgcmVqZWN0OwpAQCAt
Njg3LDcgKzY4Nyw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgfQog
CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAzKSB7Ci0gICAgICAgIGlmICghZW5jb2RlQXJndW1l
bnQoKmVuY29kZXIsICpqc0lQQywgY29udGV4dCwgYXJndW1lbnRzWzNdLCBleGNlcHRpb24pKQor
ICAgICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KGVuY29kZXIuZ2V0KCksICpqc0lQQywgY29udGV4
dCwgYXJndW1lbnRzWzNdLCBleGNlcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogICAgIH0KIApAQCAtNzQyLDcgKzc0Miw3IEBAIEpTVmFs
dWVSZWYgSlNJUEM6OnNlbmRTeW5jTWVzc2FnZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYsIEpTT2JqZWN0UmVmCiAgICAgYXV0byBlbmNvZGVyID0gY29ubmVjdGlvbi0+Y3JlYXRl
U3luY01lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VOYW1lLCAqZGVzdGluYXRpb25JRCwgc3luY1JlcXVl
c3RJRCk7CiAKICAgICBpZiAoYXJndW1lbnRDb3VudCA+IDQpIHsKLSAgICAgICAgaWYgKCFlbmNv
ZGVBcmd1bWVudCgqZW5jb2RlciwgKmpzSVBDLCBjb250ZXh0LCBhcmd1bWVudHNbNF0sIGV4Y2Vw
dGlvbikpCisgICAgICAgIGlmICghZW5jb2RlQXJndW1lbnQoZW5jb2Rlci5nZXQoKSwgKmpzSVBD
LCBjb250ZXh0LCBhcmd1bWVudHNbNF0sIGV4Y2VwdGlvbikpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDZiY2Y0NDQ2ODVj
YjhmZDQwMjc5OTA4ZTkyZTg3Nzg1OTRkOGIxNzAuLjA2MWYyNjY5OGQ4ZmFjY2ExMzcxNzA0NGVk
YTI2MDg2MWM2ODhhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCkBAIC0xMjYsMTMgKzEyNiwxMyBAQCBwcml2YXRlOgogCiAgICAg
Y2xhc3MgQmFja2luZ1N0b3JlRmx1c2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxC
YWNraW5nU3RvcmVGbHVzaGVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEJh
Y2tpbmdTdG9yZUZsdXNoZXI+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4pOworICAgICAgICBzdGF0aWMgUmVmPEJhY2tpbmdTdG9y
ZUZsdXNoZXI+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXI+Pik7CiAKICAgICAgICAgdm9pZCBmbHVzaCgpOwogICAgICAgICBib29sIGhhc0Zs
dXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZsdXNoZWQ7IH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFk
U2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+KTsKKyAgICAgICAgQmFja2luZ1N0b3JlRmx1c2hlcihJ
UEM6OkNvbm5lY3Rpb24qLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+Pik7CiAKICAg
ICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2NvbW1pdEVuY29kZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggNWFiZTk5
ZjlmYjRlYmE3NWE5NWExZDFjODRmODFiY2EyNzBjZGE3NC4uOTk5Mjg3MWIxYzAwZTgyMTBjYjY2
ZGViZDI4ZWU2YjA4ZGIxMjRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzg1LDggKzM4NSw4IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShs
YXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVy
VHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29k
ZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7Ci0gICAgKmNvbW1pdEVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAg
ICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgY29tbWl0RW5jb2Rlci5nZXQoKSA8
PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogCiAgICAgLy8gRklYTUU6IE1vdmUgYWxsIGJhY2tpbmcg
c3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24uCiAgICAgYm9vbCBoYWRBbnlDaGFuZ2VkQmFja2luZ1N0b3JlID0gZmFsc2U7CkBAIC00
NTcsMTQgKzQ1NywxNCBAQCBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjptYXJrTGF5
ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKQogICAgIHJldHVybiBtX3JlbW90ZUxh
eWVyVHJlZUNvbnRleHQtPmJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKS5tYXJrQWxsQmFja2luZ1N0
b3JlVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2libGUoKTsKIH0KIAotUmVmPFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gZmx1
c2hlcnMpCitSZWY8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNo
ZXI+IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVh
dGUoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
IGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyKGNvbm5lY3Rpb24s
IFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoZmx1c2hlcnMpKSk7CiB9CiAKLVJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVy
KElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4gZW5jb2RlciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyPj4gZmx1c2hlcnMpCitSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
QmFja2luZ1N0b3JlRmx1c2hlcjo6QmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gZmx1
c2hlcnMpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKLSAgICAsIG1fY29tbWl0RW5j
b2RlcihXVEZNb3ZlKGVuY29kZXIpKQorICAgICwgbV9jb21taXRFbmNvZGVyKGVuY29kZXIubW92
ZVRvVW5pcXVlUHRyKCkpCiAgICAgLCBtX2ZsdXNoZXJzKFdURk1vdmUoZmx1c2hlcnMpKQogICAg
ICwgbV9oYXNGbHVzaGVkKGZhbHNlKQogewpAQCAtNDgwLDcgKzQ4MCw4IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKCkKICAgICAg
ICAgZmx1c2hlci0+Zmx1c2goKTsKICAgICBtX2hhc0ZsdXNoZWQgPSB0cnVlOwogCi0gICAgbV9j
b25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKG1fY29tbWl0RW5jb2RlciksIHsgfSk7Cisg
ICAgQVNTRVJUKG1fY29tbWl0RW5jb2Rlcik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kTWVzc2Fn
ZShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIoV1RGTW92ZShtX2NvbW1pdEVuY29k
ZXIpKSwgeyB9KTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6YWN0aXZp
dHlTdGF0ZURpZENoYW5nZShPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4s
IEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422771</attachid>
            <date>2021-03-09 15:52:07 -0800</date>
            <delta_ts>2021-03-09 16:10:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222992-20210309155206.patch</filename>
            <type>text/plain</type>
            <size>171176</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmOTBhZDExOWEyYmI1ZmIz
Y2QxNjQ0OTJjNDc5MTFhZjRlMzFlZjYuLmYwMDRjMTM4MTQ5NzViMGFmMjNlYmQyZjQ1NDkyMzRh
MzRmYjBmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDMtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVW5pcXVlUmVmPD4gaW5zdGVh
ZCBvZiBzdGQ6OnVuaXF1ZV9wdHI8PiB3aGVuIHBhc3NpbmcgSVBDOjpFbmNvZGVyIHRvIHNlbmRN
ZXNzYWdlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBVbmlxdWVSZWY8PiBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0cjw+IHdoZW4gcGFzc2lu
ZyBJUEM6OkVuY29kZXIgdG8gc2VuZE1lc3NhZ2UoKSwgdG8KKyAgICAgICAgbWFrZSBpdCBjbGVh
ciBpdCBjYW5ub3QgYmUgbnVsbC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdv
aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhB
c3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6d3Jh
cEZvclRlc3RpbmcpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
V2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAg
ICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VT
ZW5kZXI6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6c2VuZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBD
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpz
ZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXI6OmZsdXNoKToKKwogMjAyMS0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtJUEMgSGFyZGVuaW5nXSBQcm90ZWN0IGFnYWluc3QgYmFkIGlu
cHV0IGluIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoKSBh
bmQgTWVzc2FnZVJlY2VpdmVyTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNGFkYjEwM2NiNWZmNmIzNDI3
OGRhYzBiYjNhNTNkZmEzZGRkYzRjNC4uN2Y4YjMzMTgxZjI0YzE2MTczZTNlNGQzMDIzMjI5ZDYz
NDBlMTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIGJvb2wgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQorYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogI2lmIEVOQUJMRShXRUJf
QVVESU8pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CkBAIC02MzIsMTEgKzYzMiw4IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewotICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQg
cmVjZWl2ZXJzLgotICAgICAgICByZXBseUVuY29kZXIucmVzZXQoKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
ICNlbmRpZgogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBl
OTc0ZDhhZTlmZGQ0NjM4MmY4OTY1YjdjNjIzMWE4MzEwZTJkNzk2Li45MWNjNzE5ODBlNTZiYjdm
MDRhYzU2MmI5ZWJmMzg4ZWNkNTVjMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE5MiwxMCArMTkyLDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8gTm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDE0NTliNDBjNjI2NThmYWUzMjY4ZDJhZWU0OWU0OTBhZGNl
YzU1NDEuLjM5NDNkNTIxZDM2OTNmYmQyY2VmMzZiNDdkMzQ5NmIxYzJkZjM2NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4
IDQ4MzAwNjkxYzc5YzY0MmVlMzY0MzJlMWEyOWY5Zjg4Y2IzYzYzM2UuLmY4NGQ2ZjhlM2Y1Y2M1
NzdkZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CkBAIC01MywxMiArNTMsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAgICB+UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IHJldHVybiBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAogcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWlu
dDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBJUEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgKaW5kZXggYmQ0NmI1ODE4OTJmZjQ5NmFhYTEz
Nzg3ZWRlNzdiNTE2ZTU0MmRhYS4uODM4NzdlNTIyZWNlZjFjMTAyYzUzZGZjNTY4N2EyMDc2MzFi
YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgVW5pcXVlUmVmPFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5PiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5PihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwCmluZGV4IDU5NjMwNTE4MDZmZjVkY2YwZWExZWRiZTE0M2YxN2RhZTk3NzQ3MjEuLjE1
NWViYWZmYjlhOTRkYmJmZDg3MjU1MmFmMmRjMmJlYWE2MjdkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC05OSwyMiArOTksMjUgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2Vp
dmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICAgICAgc2Vz
c2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxS
ZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAg
ICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFr
ZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGluc3Rh
bmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgZW5jb2RlcikKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50
aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkpCi0gICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShj
b25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNUHJveHk+JiYgcHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKaW5kZXggOTI4YjM5OTM5NDk0ODc4YTlm
ZWM4OWQxZjk3ODRjZGI1ZDAyMTdmMC4uYzRlODZjMzcyNTgwYzM5MTY5ZDhjNDNlMjI0Mzk2YWFi
M2E4YzllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtNTAsMTMgKzUwLDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5UHJveHkoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsg
fQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUlu
c3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5j
ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY0NETU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZv
aWQgYWRkUHJveHkoY29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1Qcm94eT4mJik7CiAgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1J
ZGVudGlmaWVyJik7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdl
cwogICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA5MjRlYWRkNTM3MmNhMjVhMTIxYjI1ZmRhODY2
YTJhY2ViYjQ3ZTVjLi5iNGNlNzQ5NGExN2JmYzU2ZTRjZjg2ZWM1NmZkOWE0M2Y5N2MzMjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CiAKICAgICB1c2luZyBTdWNjZXNzVmFsdWUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vz
c1ZhbHVlOwogICAgIHVzaW5nIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyA9IFdlYkNvcmU6
OkNETUluc3RhbmNlOjpBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDVkZDMwZjg5NjZk
YTM0MWUwYjAzN2RjY2U5ZjJlZjU1NjMxMDZiYjMuLjg2NjBhZGM3YjA5MGI1YmM2ZDM5ODhhYjMw
YjAwNmM1OGI2YTNmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFs
OwogCiAgICAgLy8gTWVzc2FnZXMKICAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBXZWJDb3JlOjpDRE1Qcml2YXRl
OjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZhdGU6OlN1cHBvcnRlZENvbmZp
Z3VyYXRpb25DYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXggNGExMGVhMzg1
M2YyZjExNTAzMTUyNDM1ZmEyMjU4ZGZkOWQ1MDBkNi4uNDY5ZDYzMTY3MDdhYTdjNTc4Yzk5YzM2
NWM2ZmQ4ZDQwZWJiM2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZURl
Y29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IDM3OGZhMzRk
ZTg3YjcwYzg5ODJhMjI2ZmI5OTBjMTVlNzAwM2QxNWQuLmJhNzJmYjc4NjI4NTJlNjY4Zjk0NTdl
NzViY2VlNTUwMTQzYWExZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC05NSwx
NiArOTUsMTggQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGMKICAgICAgICAgc2Vzc2lvbi0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKLSAgICAgICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIHNlc3Np
b24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsK
KyAgICAgICAgcmV0dXJuIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJiBwcm94
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAppbmRleCA2ZmM2YTk5ZWE1NDZjMjAzMzdiOTY0Y2M5
OTZmNDJiMDcxNzNjMGY0Li41ZmQ4ZmE1NDZhMDk3YmY4ZDQ0YTcyM2ZjZWJkN2ZlNWU5ZGI4MmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC00OSwxMSArNDksMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
cmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNU2Vzc2lvbk1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBhZGRQcm94eShS
ZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
UHJveHk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
cik7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0K
LSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHZv
aWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDVjMzNjYTM3NDQ4NGI0NjAy
ODFlOGVkYzEyNWNjOTAxODZjNjY3YjQuLjQyZDA5NDE1ODZiNThiMTRhMzAyMmRjYzBjYTY1YmVl
MjBlNzYwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMKICAgICB1c2luZyBTdXBwb3J0c01JTUVUeXBlQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAppbmRleCA4YzdiYzMwZDU0ZWVjYWM5Y2EyNWRiZDMyNmE3NzEzOGZhMDlmNGZhLi5jOTBm
NWRhMTMyMTAwMTc1NWY0MGFhZTQ1NmQ5N2RmYTg1YzBiZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAg
Ly8gTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJh
eSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAppbmRleCBhOGQxZWY1MWFkN2Y4NGZmZmNhNDYxYzcyZjMyMDI2ZWIxY2UyZWIwLi5l
YmJmYTcwMzM1MDQ1YzZhNDIyMGFiMmExNTZiNGI1OGJlZDg4ZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5jcHAKQEAgLTE2NiwxMSArMTY2LDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29uCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiti
b29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGllcy5nZXQobWFrZU9i
amVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKLSAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgICAgIHJldHVybiBwbGF5ZXItPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIC8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGIzMjI1ZGI4N2E3ZmIwODQzNjA4ZGUwNjgz
ZTc2ZjVjNDRiMzIxZTEuLjhhY2RkNDk3YTkxY2YyNGUyMzA2OGJmZWZhMzgxMTcwMDllNTYwYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02MCwxNiArNjAsMTYgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
IH0KKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUGxheWVyTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbGF5
ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxh
eWVyKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYpOwogCiBwcml2YXRlOgog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JikgZmluYWw7CiAKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaAppbmRleCA1ZjkyNzU3MmFmMzNkN2U3YmIyMWI3MGU5YjJhYjA1MDY5NjRm
YjE0Li5iZDZjNzY5ZjUwZmFkZDAyYWY5ZmVkMDUzNjAxYTM1ZGNlZDM0Mjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCBkOTUwMGNiMjQ1MTgx
MjJhYjQxMDEwMDNlYWMzNzUyNjY4NGZiOWI5Li5hNDJiODEyYTZkYjYyMTMyYWYyOTdhOTkyM2Nm
OTdhODgxOWJlZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdXNpbmcgQWRkU291cmNlQnVmZmVyQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6
QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPik+OwogICAg
IHZvaWQgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgQWRkU291
cmNlQnVmZmVyQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDE1Yzg0NzNmMzRmNjM4
OWYwYjFkYzFkMzNjNzBiNDI4Mjc0MmY0MzUuLmMwZThkYmNiMDY2NzYxNTM3ZDAyZWJjZGI2MTFl
NzIyYzI3YzJjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgLy8gdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAvLyBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAg
dm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCA4NGM5MTNhZDFjMGE5MTRmZjZkNGE5N2U2OWIxNTJjNGVi
YmM2ODA4Li40ZjU4ODVlOGY3NGYzMjllYmQzZWViZGZlYWE5NjdmMmM3YTZmNGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjg1LDIxICsyODUsMTkgQEAgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbiYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNhY2hlU3Rv
cmFnZUNvbm5lY3QKICAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHkpCitib29sIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBy
ZXBseSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucywgTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzIElQQyBpcyBvbmx5IHN1cHBvc2VkIHRvIGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzLgog
ICAgIEFTU0VSVChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAhPSBNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGlmIChtX3N3Q29ubmVjdGlvbikKLSAgICAg
ICAgICAgIG1fc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHkpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbV9z
d0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzEwLDYg
KzMwOCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAKICAgICBXVEZMb2dBbHdheXMoIlVu
aGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVR
dW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0OGQxYzE4ZTkzNDVlNWJmYmRiOGZmODBj
Y2M5YjgyY2FjNTA3MDY4Li5kYTA2ZjczOWVmYTVkNTM0MGU5YTYxODIzODViZTViMDY3M2UyM2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBwcml2YXRl
OgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
NzM4NTU2N2Q0YTA1YTZhNDBjOGQyYTA4ZDIyZjMyY2EwOWY0OTgzMS4uNDg4OTY1NTZjMjI3YzFm
MGUxNTEzMjhiZjhiYWZjYmY3MTQzODUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI0NCwxOSArMjQ0LDE5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpID09
ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29u
bmVjdGlvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVzc2FnZSAnJXMnIGJl
Y2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAoZGVzdGluYXRpb249JSIg
UFJJdTY0ICIpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWQ0ZTMyN2FhYjQyN2IxN2Jl
MzAyZDc3ZTczN2ViMzA0YWE5MTZkYi4uZmE0MjMzNGVjMGNhMWFkMDUwMjNlY2JmNzhkMTMxZDAx
YjNlZjM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtNDAyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudApAQCAtNDEzLDcgKzQxMyw3IEBAIHByaXZhdGU6
CiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQ
Qzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCmluZGV4IDUxMGQ1YWM4OTg1NWEzYTM0ZDRhMTczZjgwYzYzZGMyMzM3
MjM1NDUuLjBkNmU3YWVkZmY2ODIyN2JmN2RjOGFiNzE4NGFiYzZmZDMzMjFjNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU3RvcmFn
ZU5hbWVzcGFjZXMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2Rlcik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2Rlcik7CiAgICAgCiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKiBsb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCBlMjg1
MWVlZWRlNmE3MTU4MjliYjdhYzQ0N2JkNWU0MTg0YzY3ZmE4Li5mMGNlYWE4ODYyYjZhMjI5YjA4
OWEwMzRmMWY1NTI4ODM1NDczN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5hbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwogCiBwcml2YXRl
OgogICAgIFN0b3JhZ2VNYW5hZ2VyU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDg2ZWNkZGQ3ZjZlM2IxYWQ3Y2M3YjFkMGJhZGI0M2JkZmMyMzIz
YmIuLjk1MjRlYWJiNzhlZGY0MTUwYzJlMDg2NDdlYjI0ZDU5N2U1NTM2YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0zNzIsMTUgKzM3MiwxNSBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVj
ZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VV
bmlxdWVSZWY8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1
ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0
byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgotICAgIG1lc3NhZ2VSZWNlaXZlci5k
aWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAg
IGJvb2wgd2FzSGFuZGxlZCA9IG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
KnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgLy8gRklYTUU6IElmIHRoZSBt
ZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJv
ci4KICAgICBBU1NFUlQoZGVjb2Rlci0+aXNWYWxpZCgpKTsKIAotICAgIGlmIChyZXBseUVuY29k
ZXIpCisgICAgaWYgKCF3YXNIYW5kbGVkKQogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUo
cmVwbHlFbmNvZGVyKSk7CiB9CiAKQEAgLTQxNSwxOCArNDE1LDE4IEBAIHZvaWQgQ29ubmVjdGlv
bjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKICAgICBtX2RpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQor
VW5pcXVlUmVmPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNS
ZXF1ZXN0SUQ7Ci0gICAgKmVuY29kZXIgPDwgc3luY1JlcXVlc3RJRDsKKyAgICBlbmNvZGVyLmdl
dCgpIDw8IHN5bmNSZXF1ZXN0SUQ7CiAKICAgICByZXR1cm4gZW5jb2RlcjsKIH0KIAotYm9vbCBD
b25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2Rlciwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQorYm9vbCBDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdAogICAgICAg
ICBib29sIGhhc0RlYWRPYnNlcnZlcnMgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvYnNl
cnZlcldlYWtQdHIgOiBtX21lc3NhZ2VPYnNlcnZlcnMpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBvYnNlcnZlciA9IG9ic2VydmVyV2Vha1B0ci5nZXQoKSkKLSAgICAgICAgICAgICAgICBvYnNl
cnZlci0+d2lsbFNlbmRNZXNzYWdlKCplbmNvZGVyLCBzZW5kT3B0aW9ucyk7CisgICAgICAgICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxTZW5kTWVzc2FnZShlbmNvZGVyLmdldCgpLCBzZW5kT3B0aW9u
cyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFzRGVhZE9ic2VydmVycyA9
IHRydWU7CiAgICAgICAgIH0KQEAgLTQ3NSw3ICs0NzUsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2Vu
ZE9wdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIpCitib29sIENvbm5lY3Rpb246OnNl
bmRTeW5jUmVwbHkoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIHsKICAgICByZXR1cm4g
c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKIH0KQEAgLTU2NCw3ICs1NjQsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBUaW1lb3V0
IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBUaW1lb3V0IHRp
bWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTg3OSwxMCArODc5LDExIEBAIHZvaWQg
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMoKQogICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX291dGdvaW5nTWVzc2FnZXNNdXRleCk7CiAgICAgICAgICAgICBpZiAo
bV9vdXRnb2luZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdvaW5nTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAg
ICAgICAgICBtZXNzYWdlID0gbV9vdXRnb2luZ01lc3NhZ2VzLnRha2VGaXJzdCgpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChtZXNzYWdlKTsKIAotICAgICAg
ICBpZiAoIXNlbmRPdXRnb2luZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkpCisgICAgICAgIGlm
ICghc2VuZE91dGdvaW5nTWVzc2FnZShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIo
V1RGTW92ZShtZXNzYWdlKSkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtODk4
LDggKzg5OSw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBz
eW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5j
b2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCisg
ICAgYm9vbCB3YXNIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwpAQCAtOTEyLDcgKzkxNCw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5kaXNwYXRjaE1lc3NhZ2VzKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2Rl
ciB0byB0aGUgY2xpZW50LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
KnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHdhc0hhbmRsZWQgPSBtX2Ns
aWVudC5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBz
aG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJvci4KQEAgLTkyMiw3ICs5MjQsNyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBBU1NFUlQoZGVjb2Rlci5pc1ZhbGlkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAocmVwbHlFbmNv
ZGVyKQorICAgIGlmICghd2FzSGFuZGxlZCkKICAgICAgICAgc2VuZFN5bmNSZXBseShXVEZNb3Zl
KHJlcGx5RW5jb2RlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMGQ4NWQ4ZDdjZThmNGQxNzVkNGEwNDM0Mjc5YzE1YjBlMzhmYzFmNy4uNGY2YjE4
NGZmNDBkOTkyODhlYjYwNjBhN2M1ODg2YjM3MzZjNGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTI3MywxMCAr
Mjc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlv
bnMpOwogICAgIH0KIAotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQs
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpOwotICAgIGJvb2wgc2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4pOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+
JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7CisgICAgVW5pcXVlUmVmPEVu
Y29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgVW5pcXVl
UmVmPEVuY29kZXI+JiYsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zKTsKKyAgICBib29sIHNlbmRTeW5jUmVwbHkoVW5pcXVlUmVmPEVuY29kZXI+JiYp
OwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CiAKQEAgLTMzMiw3ICszMzMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsKICAgICBib29s
IHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsKICAgICB2b2lkIHNlbmRP
dXRnb2luZ01lc3NhZ2VzKCk7Ci0gICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJl
ZjxFbmNvZGVyPiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIAogICAg
IC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgpAQCAtNDAxLDcgKzQwMiw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBPdXRnb2luZyBtZXNzYWdlcy4KICAgICBMb2NrIG1fb3V0Z29pbmdN
ZXNzYWdlc011dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPj4gbV9vdXRn
b2luZ01lc3NhZ2VzOworICAgIERlcXVlPFVuaXF1ZVJlZjxFbmNvZGVyPj4gbV9vdXRnb2luZ01l
c3NhZ2VzOwogICAgIAogICAgIENvbmRpdGlvbiBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uOwog
ICAgIExvY2sgbV93YWl0Rm9yTWVzc2FnZU11dGV4OwpAQCAtNTAyLDggKzUwMyw4IEBAIGJvb2wg
Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2Uu
YXJndW1lbnRzKCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5h
cmd1bWVudHMoKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgc2VuZE9wdGlvbnMpOwogfQpAQCAtNTE3LDcgKzUxOCw3IEBAIHVpbnQ2NF90IENvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVy
LCB1aW50CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5j
b2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBhZGRBc3luY1JlcGx5SGFuZGxlcigq
dGhpcywgbGlzdGVuZXJJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+KFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoRGVjb2RlciogZGVj
b2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNvZGVyICYmIGRlY29kZXItPmlzVmFsaWQo
KSkKQEAgLTUyNSw4ICs1MjYsOCBAQCB1aW50NjRfdCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBUOjpjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfSwgQ29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkKSk7Ci0g
ICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3Vt
ZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKKyAgICBlbmNvZGVyLmdl
dCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNv
ZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIHJldHVybiBsaXN0ZW5lcklEOwogfQpAQCAtNTU2LDcg
KzU1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlCiAgICAgUkVMRUFTRV9BU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklE
LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2Vu
ZFN5bmNPcHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsKICAgICAg
ICAgZW5jb2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CkBAIC01NjQs
NyArNTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICB9CiAKICAgICAvLyBFbmNv
ZGUgdGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICAqZW5jb2RlciA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMo
KTsKIAogICAgIC8vIE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5Lgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3Nh
Z2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggOTY3MzBkZWJk
MTdiYmZhMWJiNWEyNTc5N2Y5MGZlNjNhNjZlZWZkNC4uZWM5ZThjZmJlNTc1Mjc3OTQ4MjViZmZk
NGY0YWRmYWQ0YjUyNGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KIAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMTIy
LDcgKzEyMyw3IEBAIHZvaWQgRW5jb2Rlcjo6c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkKICAgICBtZXNzYWdlRmxhZ3MoKS5hZGQoTWVzc2FnZUZsYWdzOjpVc2VGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcpOwogfQogCi12b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5n
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKK3ZvaWQgRW5jb2Rlcjo6d3JhcEZv
clRlc3RpbmcoVW5pcXVlUmVmPEVuY29kZXI+JiYgb3JpZ2luYWwpCiB7CiAgICAgQVNTRVJUKGlz
U3luY01lc3NhZ2UoKSk7CiAgICAgQVNTRVJUKCFvcmlnaW5hbC0+aXNTeW5jTWVzc2FnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCA3MmViMzNkOTAxNjA2ZDI4OWM3
MGQ4YzEzYmRjNDM3ZWZhM2E2ZTcxLi41YWFkZWNjNzI3MWU2NTFlN2RiMDIzMTlhZjc1MTM0NjFi
MDdjNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgd3JhcEZvclRlc3Rpbmcoc3RkOjp1
bmlxdWVfcHRyPEVuY29kZXI+KTsKKyAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKFVuaXF1ZVJlZjxF
bmNvZGVyPiYmKTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUy
ODliYWYwNTNmMDk5NDg0Li43NTE1OTM4ZDQyZGUzNjU1NDUwZGIwNGQyZmUyMDlmNWRlZjAxYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xMzQs
MzUgKzEzNCwzNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KLXZvaWQgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQor
Ym9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVj
dCwgTUYgZnVuY3Rpb24pCiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBl
bmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1
bWVudHM7CiAgICAgaWYgKCFhcmd1bWVudHMpIHsKICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNv
ZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0
aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgVDo6c2VuZChXVEZNb3Zl
KHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CiAg
ICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
ciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK2Jvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
V2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQogewogICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1l
bnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlm
ICghYXJndW1lbnRzKSB7CiAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIHR5cGVuYW1l
IFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZN
b3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0
byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNv
ZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKICAgICBjYWxsTWVt
YmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOworICAgIHJldHVybiB0cnVlOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KQEAgLTIwNSw3
ICsyMDcsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVu
ZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBs
aXN0ZW5lcklEKTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNv
bm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9LCBUOjpjYWxsYmFja1RocmVhZCB9OwogICAgIGNh
bGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CkBAIC0yMjIsNyArMjI0LDcgQEAgdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2xpc3RlbmVySUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgY29u
bmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6YXN5bmNNZXNz
YWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBsaXN0ZW5lcklE
KTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
LCBhcmdzLi4uKTsKICAgICB9OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBX
VEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBm
dW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5o
CmluZGV4IDJiYTIwODE5MmExZjQ2YWRkOTY4MDJjOGUxMDQ3YjAyMWQ2NTNlOWUuLjRlMjFiODUw
OTYzNjJiZjhhODVjYmZhODg2MDFiMmE4MGEyN2UwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiYpCisgICAgdmlydHVhbCBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25u
ZWN0aW9uJiwgRGVjb2RlciYsIFVuaXF1ZVJlZjxFbmNvZGVyPiYpCiAgICAgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcAppbmRleCA4ODBmMzZhNDFlZTllYjkxYWZkOWMw
ZDkxOTRiMzcwYWRjNjVmY2JlLi5kODgwZTkwYzViYzUyNzU2MDM4NTExNGY2OTcxMjcyYTlkZmFm
ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2
ZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZl
ck1hcC5jcHAKQEAgLTEzMywxOSArMTMzLDE1IEBAIGJvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpk
aXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hT
eW5jTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgTWVzc2FnZVJlY2VpdmVy
TWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGlmIChh
dXRvIG1lc3NhZ2VSZWNlaXZlciA9IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CiAgICAgICAgIEFTU0VSVCghZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpOwotCi0gICAgICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICB9CiAKLSAgICBp
ZiAoYXV0byBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFr
ZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9u
SUQoKSkpKSB7Ci0gICAgICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KKyAgICBpZiAoYXV0byBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZl
cnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyLT5k
aWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVJlY2VpdmVyTWFwLmgKaW5kZXggNWExM2RlMmMxZTdhMThhZGE5YjI4NDkwZjU1Mjg3
NWQ3YTRmYzYxNy4uNjg3NWIzNDFjZjgwMmQ5ZGRhN2NhZTEwOTZhNGUwZTE4YmIwZWRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgYm9v
bCBkaXNwYXRjaE1lc3NhZ2UoQ29ubmVjdGlvbiYsIERlY29kZXImKTsKLSAgICBib29sIGRpc3Bh
dGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYsIERlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYsIERlY29k
ZXImLCBVbmlxdWVSZWY8RW5jb2Rlcj4mKTsKIAogcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIHJl
Y2VpdmVycyB0aGF0IGRvbid0IHJlcXVpcmUgYSBkZXN0aW5hdGlvbiBJRC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKaW5kZXggYjFhODNiYjQ0OTI0MmY5
YTY3Y2JhYjBlMWNkNWI1OTJmZGMxMzY4OC4uZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFhM2Yx
MmFkNzVjOWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIElQQyB7CiAKIE1lc3NhZ2VTZW5kZXI6
On5NZXNzYWdlU2VuZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIE1lc3NhZ2VTZW5kZXI6OnNlbmRN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBN
ZXNzYWdlU2VuZGVyOjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBP
cHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvKQogewogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpOwogICAgIEFTU0VSVChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaAppbmRleCBmMGFiYTUxNDFhYmY4Y2Y4NGZiMjU5MDU2NDI1YmY3ZTdi
YTI2ODllLi5iZDcyODJiZDVmMTFmNmFlYWQ1ODg1N2Y3NzI2YzE1OTUxNjk4ZGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC00Myw4
ICs0NCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3lu
YywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgICAgICplbmNvZGVy
IDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWVSZWY8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgZW5jb2Rl
ci5nZXQoKSA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKICAgICB9CkBAIC05
MCwxMCArOTEsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAg
ICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4
dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsK
LSAgICAgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICAgICAgZW5jb2Rl
ci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2Uu
YXJndW1lbnRzKCk7CiAgICAgICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zLCB7eyBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKElQQzo6RGVjb2RlciogZGVjb2RlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZGVj
b2RlciAmJiBkZWNvZGVyLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgVDo6Y2FsbFJlcGx5
KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMDMsNyArMTA0LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGlzdGVuZXJJRDsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYgPSBXVEY6Om51bGxvcHQpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgQ29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmgKaW5kZXggNDk1YWZmZDAzYzZmNTRkNzI4OWZjMTAxZDZkNmRkODg2ZTNiNzcwZC4uMWRkYWVj
NDYyZWJkY2YyYTY4NTViOTRhOWJmNjcxYWQ0YmZjNWEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMTAwLDggKzEw
MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIHZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZGlu
ZyB0byBidWZmZXIuCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+
KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwotICAg
ICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7CisgICAgKGVuY29kZXIuZ2V0KCkgPDwgLi4uIDw8IGFyZ3VtZW50
cyk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9u
Q29jb2EubW0KaW5kZXggMDU5ZTgyOTM5NmE1MjQ5ZjA4NTMzNDdlYmMwYjNlYmJlZDM0NjQ4Ni4u
OGQ5Y2RlMDhmNDY3MTQxYTkwZDhlYWY5ZGQ3ODViNzkwMzhkNThlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMjE5
LDggKzIxOSw4IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0
ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNz
YWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgot
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJ
bml0aWFsaXplQ29ubmVjdGlvbiwgMCk7Ci0gICAgICAgICplbmNvZGVyIDw8IE1hY2hQb3J0KG1f
cmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKKyAgICAgICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5l
Y3Rpb24sIDApOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNv
dXJjZSgpOwogCkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNh
blNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gIW1fcGVuZGluZ091dGdv
aW5nTWFjaE1lc3NhZ2UgJiYgIW1faXNJbml0aWFsaXppbmdTZW5kU291cmNlOwogfQogCi1ib29s
IENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+
IGVuY29kZXIpCitib29sIENvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVm
PEVuY29kZXI+JiYgZW5jb2RlcikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ091dGdvaW5nTWFj
aE1lc3NhZ2UgJiYgIW1faXNJbml0aWFsaXppbmdTZW5kU291cmNlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA3YjA0
YzA1NDNhOWEwODNjMDBiNDFlNTY3NmU5ZTAyNTI5ODU5NWQ4Li5lZmNkNjYzZjg0MTY0ZTJmOTZh
NjliM2ZiY2FhZDg1ODFlY2Q3Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtNDI0LDExICs0MjQsMTEgQEAgYm9vbCBD
b25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICBy
ZXR1cm4gIW1fcGVuZGluZ091dHB1dE1lc3NhZ2U7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wg
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNv
ZGVyKQogewogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRhY2ht
ZW50TWF4QW1vdW50ICogc2l6ZW9mKHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFjaG1l
bnRzRml0VG9NZXNzYWdlSW5saW5lKTsKIAotICAgIFVuaXhNZXNzYWdlIG91dHB1dE1lc3NhZ2Uo
KmVuY29kZXIpOworICAgIFVuaXhNZXNzYWdlIG91dHB1dE1lc3NhZ2UoZW5jb2Rlci5nZXQoKSk7
CiAgICAgaWYgKG91dHB1dE1lc3NhZ2UuYXR0YWNobWVudHMoKS5zaXplKCkgPiAoYXR0YWNobWVu
dE1heEFtb3VudCAtIDEpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93
aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKaW5kZXggMTlmYzQyZWVhMWM1NjdhZDFjMWIxZDZmZWJlN2Y1Mzg3ZTI1
ZTAxZi4uMDRhZjhkYWI5NjdjMGY0NTI2YjA3NWM0NGFmMGVjODgwODZmYzM3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMjcy
LDcgKzI3Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNz
YWdlcygpIGNvbnN0CiAgICAgcmV0dXJuICFtX3BlbmRpbmdXcml0ZUVuY29kZXI7CiB9CiAKLWJv
b2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rl
cj4gZW5jb2RlcikKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVS
ZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNv
ZGVyKTsKIApAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5n
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgKmVuY29k
ZXIgPDwgMDsKKyAgICBlbmNvZGVyLmdldCgpIDw8IDA7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0
Z29pbmcgbWVzc2FnZS4KIApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKIAogICAg
IC8vIFRoZSBtZXNzYWdlIHdpbGwgYmUgc2VudCBzb29uLiBIb2xkIG9udG8gdGhlIGVuY29kZXIg
c28gdGhhdCBpdCB3b24ndCBiZSBkZXN0cm95ZWQKICAgICAvLyBiZWZvcmUgdGhlIHdyaXRlIGNv
bXBsZXRlcy4KLSAgICBtX3BlbmRpbmdXcml0ZUVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIpOwor
ICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IGVuY29kZXIubW92ZVRvVW5pcXVlUHRyKCk7CiAK
ICAgICAvLyBXZSBjYW4gb25seSBzZW5kIG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRp
bWUgKHNlZSBjb21tZW50IGluIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaAppbmRleCBjN2E3MDUzY2JkMjZkMjA0NTRjMDQyYzZhY2UxNmNi
NTI1MzBmNDNkLi4zY2Y1ZTFmOTdiODdhNGJkOTJhMzY2YTRjYzg5MDI1MTczNDAxOGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3koKTsKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZVBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jUGx1Z2lu
Q29udHJvbGxlclByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDY3OTIyY2Q2ZTIzNGU3NzFkMjExZGVkZmEzNzkxZGYyZWY5
MmNjOWMuLmNiZjMzZjgyMDJiMjdlNGVmOGNmODQ3Y2ZiNjFkNjBiNGU3ZmY5NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMTQ1LDI4ICsxNDUsMjQgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICBwbHVn
aW5Db250cm9sbGVyUHJveHktPmRpZFJlY2VpdmVQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCitib29sIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgU2V0Rm9yU2NvcGU8SVBDOjpD
b25uZWN0aW9uKj4gY3VycmVudENvbm5lY3Rpb25DaGFuZ2UoY3VycmVudENvbm5lY3Rpb24sICZj
b25uZWN0aW9uKTsKIAogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSBkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKTsKIAotICAgIGlmICghZGVzdGluYXRpb25JRCkgewotICAgICAgICBkaWRSZWNl
aXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghZGVzdGluYXRp
b25JRCkKKyAgICAgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgbV9ucFJlbW90ZU9iamVj
dE1hcC0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAK
ICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1
Z2luQ29udHJvbGxlcnMuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICBpZiAoIXBs
dWdpbkNvbnRyb2xsZXJQcm94eSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciBw
cm90ZWN0b3IocGx1Z2luQ29udHJvbGxlclByb3h5LT5hc1BsdWdpbkNvbnRyb2xsZXIoKSk7Ci0g
ICAgcGx1Z2luQ29udHJvbGxlclByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1
cm4gcGx1Z2luQ29udHJvbGxlclByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggMmViNzZhNjkxYmViZTE3Y2Q4YjA2NzQ4ZGE0Yzc1NzFmOTdlOTc0ZC4uZDE3NjZmZDRhMTI1
M2FkYTFkNWQyMjdmMmE3OTc1YmJhMGJmNTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBw
cml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lk
IGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2
b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycyYpOwogICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlE
LCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSwgTWVzc2FnZXM6OldlYlByb2Nl
c3NDb25uZWN0aW9uOjpEZXN0cm95UGx1Z2luRGVsYXllZFJlcGx5JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMTc0ODBhYjYyZTcyMWU2YWE4MDQyNjJh
M2M3NzlhYjlhZjljMTcxMi4uMDMzNWIyYmQ1NWYwMTNjZjNmMzM5YzI0NjJlNWE0ZThlMjY4NzQ0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTIsNyAr
MjEyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNz
YWdlKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
Q2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkO1xuJykKICAgICAgICAgaWYgKG1lc3NhZ2Uu
aGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RS
RUFNX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
JykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAgICAgICAgaWYg
bGVuKHNlbmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAl
cycgJSBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyk7XG4nKQpAQCAtNTU1LDEwICs1NTUsOCBAQCBkZWYgYXN5bmNfbWVzc2FnZV9zdGF0
ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb25f
YXJncy5pbnNlcnQoMCwgJ2Nvbm5lY3Rpb24nKQogCiAgICAgcmVzdWx0ID0gW10KLSAgICByZXN1
bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6
OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAl
IChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpv
aW4oZGlzcGF0Y2hfZnVuY3Rpb25fYXJncykpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuO1xuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpu
YW1lKCkpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUg
KGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9p
bihkaXNwYXRjaF9mdW5jdGlvbl9hcmdzKSkpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRp
dGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQogCiAKQEAgLTU3OSwxMCAr
NTc3LDggQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgog
ICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVz
dWx0ID0gW10KLSAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVz
c2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6
OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9u
LCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nv
bm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihy
ZWNlaXZlciwgbWVzc2FnZSkpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xu
JykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpXG4n
ICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICByZXR1cm4gSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywgdGhpcywg
JiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFt
ZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXliZV9yZXBs
eV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAgcmV0
dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0
aW9uKQogCiAKQEAgLTkwNSwxMSArOTAxLDExIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsn
SVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUo
KScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBl
bmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCiAg
ICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcsICVzJyAlICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9w
YXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpXG57XG4nKQotICAgICAg
ICAgICAgcmVzdWx0ICs9IFsnICAgICplbmNvZGVyIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBp
biBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAg
ZW5jb2Rlci5nZXQoKSA8PCAlcztcbicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9w
YXJhbWV0ZXJzXQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCd9XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQpAQCAtOTY4LDE4ICs5
NjQsMTkgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAKICAgICBp
ZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNf
bWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdF
X0FUVFJJQlVURSkpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5u
YW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkg
ZWxzZSAnJykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OmRpZFJlY2VpdmVTeW5j
JXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZl
ci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JF
Q0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicp
CiAgICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JF
Q0VJVkVSX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQogICAgICAgICByZXN1bHQgKz0gW3N5
bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5
bmNfbWVzc2FnZXNdCiAgICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGlmIChkaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cikpXG4nKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpO1xuJykKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBmYWxzZTtcbicpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ31cbicpCiAKICAgICByZXN1bHQuYXBwZW5kKCdcbn0gLy8gbmFtZXNwYWNlIFdlYktp
dFxuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhJZk1lc3NhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXgg
OTYyMzIwODM3MGQ0YjAyZjcxNTRkZjE0NGU2MThhYzE5ZTNkZWYyMy4uMWZlM2FiMDNjZjVkNDgw
ZWEwODNhODk1MzQwZmZkZTYwYzM4MzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1l
c3NhZ2VSZWNlaXZlci5jcHAKQEAgLTQxLDE2ICs0MSwxMiBAQCB2b2lkIFRlc3RXaXRoSWZNZXNz
YWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjbwogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElm
TWVzc2FnZTo6TG9hZFVSTDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoSWZNZXNzYWdlOjpsb2FkVVJMKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVz
c2FnZTo6TG9hZFVSTDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aElmTWVzc2FnZTo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRV
Ukw6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aElmTWVz
c2FnZTo6bG9hZFVSTCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aEltYWdlRGF0YU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2Fn
ZVJlY2VpdmVyLmNwcAppbmRleCBhODZjNDE1ZmZjMzIxZWQ4MGZhMjdiZmVjNGZhOTRmYzcwZjEy
MzY2Li5hNDk2MjlkMzM0ZDJkMWFmNTE4NTNlYTI3ZmFmN2NiNDA0NjNhNmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVz
c2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzgsMjYgKzM4LDIzIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJ
bWFnZURhdGE6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhJbWFnZURhdGE6OnNlbmRJbWFnZURhdGEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRh
OjpTZW5kSW1hZ2VEYXRhOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhJbWFnZURhdGE6OnNlbmRJbWFnZURhdGEpOwogICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVGVzdFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVz
dFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
IHJlcGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElt
YWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE+KGRl
Y29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aEltYWdlRGF0YTo6cmVjZWl2ZUlt
YWdlRGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE6
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE+KGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aEltYWdlRGF0YTo6cmVjZWl2ZUltYWdlRGF0YSk7CiAgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVT
RURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggMWM4YmZhZDVlZTNm
ZmNiODJhY2YwMWUzMzljNWNiMDQwMzdkNTZlZi4uNmViNDY0NTcyMTU5ZGY4ODc3MmEwODA4ODhl
MjdjZTE2OTgwZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
IAogbmFtZXNwYWNlIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgewogCi12b2lkIEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5j
b2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246
OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKK3ZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9u
SGFuZGxlKQogewotICAgICplbmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7CisgICAgZW5jb2Rl
ci5nZXQoKSA8PCBjb25uZWN0aW9uSGFuZGxlOwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBs
eShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIAotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQordm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0K
QEAgLTgzLDEyMiArODMsNzkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFVS
TDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKQorICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6bG9hZFNvbWV0aGluZyk7CiAjZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
KE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9O
KSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50PihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dG91Y2hFdmVudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VG91Y2hFdmVudDo6bmFtZSgpKQorICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dG91
Y2hFdmVudCk7CiAjZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpBZGRFdmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6QWRkRXZlbnQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6QWRkRXZlbnQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjphZGRFdmVudCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29t
ZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRT
b21ldGhpbmdFbHNlKTsKICNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xv
c2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpjbG9zZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERv
dWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2Vu
ZERvdWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5k
SW50czo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RQYXJhbWV0ZXJB
dHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVzdFBh
cmFtZXRlckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRl
bXBsYXRlVGVzdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVv
TGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNldFZpZGVv
TGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpjbG9zZSk7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UHJlZmVyZW5jZXNE
aWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpwcmVmZXJl
bmNlc0RpZENoYW5nZSk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpCisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OnNlbmREb3VibGVBbmRGbG9hdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZEludHM6Om5h
bWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpzZW5kSW50cyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlbXBsYXRlVGVzdD4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnRlbXBsYXRlVGVzdCk7Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVvTGF5
ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNldFZpZGVvTGF5
ZXJJRCk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVh
dGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQ
cm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKICNlbmRpZgogI2lmIEVOQUJMRShERVBS
RUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OkRlcHJlY2F0ZWRPcGVyYXRpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVj
YXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRl
cHJlY2F0ZWRPcGVyYXRpb24pOwogI2VuZGlmCiAjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFU
VVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhw
ZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhwZXJpbWVu
dGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZXhw
ZXJpbWVudGFsT3BlcmF0aW9uKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5j
b2RlcikKK2Jvb2wgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikK
IHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpD
cmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5
RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNyZWF0ZVBsdWdpbik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6Okdl
dFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpnZXRQbHVnaW5zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpH
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dh
bnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRp
cGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OmNyZWF0ZVBsdWdpbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFs
ZXJ0OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnJ1bkphdmFTY3JpcHRB
bGVydCk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2luczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVn
aW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6Z2V0UGx1Z2lucyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5h
bWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOworICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5
UmVjZWl2ZXI6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6aW50ZXJwcmV0S2V5RXZlbnQpOwogI2VuZGlmCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgKaW5kZXggM2JlMGEwYjBlOWM3OGE0Mjk0Y2U2
ZjI5YjY2ZDJhMjVmYmRkMDkzNi4uYWNhYzI4MzVjNmM0MDViNDI2NmQ4OGM1NjcwMDY3ZDA5ZWE5
NGM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oCkBAIC0zNTcsNyAr
MzU3LDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNh
bGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVj
dGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
JiBjb25uZWN0aW9uSGFuZGxlKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFu
ZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBD
OjpDb25uZWN0aW9uOjpIYW5kbGUmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGU+OwogICAgIGV4cGxpY2l0IEdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKQEAgLTM4Myw3ICszODMs
NyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1Ro
cmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJl
YWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0
dXBsZTw+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9y
ZU1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggNzIxMDNjNDc0NDlkNmNjNTA3MWUwMWIwMjRhZGQ1
MWRkMmI0OTU1OC4uMDY0NmZlOTliNmYyMzViMGM1MDdkOTQ3YWEyMWEzMTY4MTNiNzU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFw
aG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1LDI2ICsz
NSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3Jl
OjpTZW5kU2VtYXBob3JlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU2VtYXBob3JlOjpzZW5kU2VtYXBob3JlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNl
bWFwaG9yZTo6U2VuZFNlbWFwaG9yZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoU2VtYXBob3JlOjpzZW5kU2VtYXBob3JlKTsKICAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiti
b29sIFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBo
b3JlPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1hcGhvcmU6OnJl
Y2VpdmVTZW1hcGhvcmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2Vt
YXBob3JlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOwogICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAg
ICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggYzljOTI0MGE0
ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NC4uZTQ5MjM4MDllNDFmYjNjNmFmMjZjNjkz
MDViMDJmYjZmY2E2MzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKQEAgLTM1LDEwICszNSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9p
ZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
QnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1C
dWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVy
OjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOwog
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwCmluZGV4IDgzOTg4NTVhZDU2ZTk1MTk5N2M5ZDJhYjNmODg4MDk0Yzg4OTIzMjYu
LmUwMDdlYzRkNjhlYmNmZTQ0N2Q4NDc3MDEwOTI1MWU0NTI5OWY1NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVj
ZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0zNSwxNCArMzUsMTAgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdl
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25p
emVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6
ZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpCisgICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpT
ZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOwor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25p
emVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6
ZWQpOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJj
bGFzc01lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggOTg5ZTFkNDEwM2MwZDYwNDJkNDQ4YTk0OGYy
ZWE0ZmEzZjcyNzFhZS4uMTUxMDQ3ZWFhNmUyZWRkMDc2YWFiYjQ3MDZhOTI2ZTlhMWQ3NTg1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1
cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNTks
OSArNTksOSBAQCB2b2lkIFRlc3RBc3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QmJik+JiYgY29tcGxldAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOwogfQogCi12b2lkIFRl
c3RBc3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNv
ZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKK3ZvaWQg
VGVzdEFzeW5jTWVzc2FnZTo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIs
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQogewotICAgICpl
bmNvZGVyIDw8IHJlc3VsdDsKKyAgICBlbmNvZGVyLmdldCgpIDw8IHJlc3VsdDsKICAgICBjb25u
ZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxSZXBseShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY28KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
fQogCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAt
MTEyLDEwICsxMTIsMTAgQEAgdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGIKICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNS
ZXBseUVycm9yPHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOwogfQogCi12b2lkIFRlc3RBc3luY01lc3Nh
Z2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWlu
dDY0X3QgdmFsdWUpCit2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6
OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCiB7Ci0gICAgKmVuY29kZXIg
PDwgZmxhZzsKLSAgICAqZW5jb2RlciA8PCB2YWx1ZTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IGZs
YWc7CisgICAgZW5jb2Rlci5nZXQoKSA8PCB2YWx1ZTsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5j
UmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKQEAgLTE0MCwyMyArMTQwLDIzIEBAIHZvaWQg
VGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wmJik+CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5
RXJyb3I8Ym9vbD46OmNyZWF0ZSgpKTsKIH0KIAotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENv
bm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZykKK3ZvaWQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhDb25uZWN0aW9uOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGZsYWcpCiB7Ci0gICAgKmVuY29k
ZXIgPDwgZmxhZzsKKyAgICBlbmNvZGVyLmdldCgpIDw8IGZsYWc7CiAgICAgY29ubmVjdGlvbi5z
ZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCiAjZW5kaWYKIAotdm9pZCBUZXN0
U3luY01lc3NhZ2U6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVy
LCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCit2b2lkIFRlc3RT
eW5jTWVzc2FnZTo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKIHsKLSAgICAqZW5jb2RlciA8
PCByZXBseTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IHJlcGx5OwogICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIAotdm9pZCBUZXN0U3luY2hyb25vdXNN
ZXNzYWdlOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFz
c05hbWU+JiBvcHRpb25hbFJlcGx5KQordm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5k
KFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJl
cGx5KQogewotICAgICplbmNvZGVyIDw8IG9wdGlvbmFsUmVwbHk7CisgICAgZW5jb2Rlci5nZXQo
KSA8PCBvcHRpb25hbFJlcGx5OwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTsKIH0KIApAQCAtMTY5LDUyICsxNjksMzkgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFRlc3RXaXRoU3VwZXJjbGFzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6Okxv
YWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OmxvYWRVUkwpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTDo6bmFtZSgpKQorICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRV
Ukw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OmxvYWRVUkwpOwogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFz
czo6VGVzdEFzeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
U3VwZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNs
YXNzOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNz
YWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0
QXN5bmNNZXNzYWdlKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpU
ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5j
TWVzc2FnZVdpdGhOb0FyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoU3VwZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpu
YW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6
VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNz
YWdlV2l0aE5vQXJndW1lbnRzKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNs
YXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFz
czo6VGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNN
ZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VBc3luY1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0
QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25u
ZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRo
Q29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFz
czo6dGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKTsKICNlbmRpZgogICAgIFdlYlBhZ2VC
YXNlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBU
ZXN0V2l0aFN1cGVyY2xhc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVzdFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01lc3Nh
Z2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNz
YWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNN
ZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01l
c3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxN
ZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6
OnRlc3RTeW5jaHJvbm91c01lc3NhZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6
VGVzdFN5bmNNZXNzYWdlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3Nh
Z2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01lc3Nh
Z2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3Vw
ZXJjbGFzczo6dGVzdFN5bmNNZXNzYWdlKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1l
c3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6
dGVzdFN5bmNocm9ub3VzTWVzc2FnZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwog
ICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVy
KTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCmluZGV4IGJj
NzNjOThjMzA4NjUwZjc2NjFhZjc4MDE3ZWI2Njc4ODE0MDdmNDQuLmMxYWU4ZDVmYTMxOGQ0NTYz
ZTkxMDg2Y2NhNTNlYTBmY2YzM2VmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgK
QEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFz
eW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk7IH0KICAgICB1c2luZyBBc3luY1JlcGx5
ID0gVGVzdEFzeW5jTWVzc2FnZUFzeW5jUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5U
aHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQpOworICAgIHN0YXRpYyB2b2lk
IHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcmVzdWx0KTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKICAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Q+OwogICAgIGV4cGxp
Y2l0IFRlc3RBc3luY01lc3NhZ2UoV2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51
bSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5h
bWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseTsgfQog
ICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5
bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwotICAgIHN0
YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25u
ZWN0aW9uJik7CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKICAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKICAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQ
Qzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aE11
bHRpcGxlQXJndW1lbnRzUmVwbHk7IH0KICAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5j
TWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50c0FzeW5jUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJl
YWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWludDY0
X3QgdmFsdWUpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk7CiAgICAgdXNp
bmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmLCB1aW50NjRfdCY+OwogICAgIHVzaW5nIFJlcGx5
QXJndW1lbnRzID0gc3RkOjp0dXBsZTxib29sLCB1aW50NjRfdD47CiAgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdApAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJ
UEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhD
b25uZWN0aW9uUmVwbHk7IH0KICAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhDb25uZWN0aW9uQXN5bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2Fs
bGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0
aW9uVGhyZWFkOwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnKTsKKyAgICBzdGF0aWMgdm9pZCBz
ZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxh
Zyk7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGJvb2wmPjsKICAgICB1c2luZyBSZXBs
eUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Ym9vbD47CiAgICAgZXhwbGljaXQgVGVzdEFzeW5jTWVz
c2FnZVdpdGhDb25uZWN0aW9uKGNvbnN0IGludCYgdmFsdWUpCkBAIC0xOTAsNyArMTkwLDcgQEAg
cHVibGljOgogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXll
ZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3Rh
dGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5l
Y3Rpb24mLCB1aW50OF90IHJlcGx5KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOwogICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50OF90Jj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPHVpbnQ4X3Q+OwogICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1
aW50MzJfdCBwYXJhbSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBE
ZWxheWVkUmVwbHkgPSBUZXN0U3luY2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBP
cHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KTsKKyAgICBzdGF0
aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOwog
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05h
bWU+Jj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4+OwogICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3Nh
Z2UoYm9vbCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCA3YmU0MTJmYzk5OWY1NzI0Mjg3NDJlZjE4ZjJkM2M5NTIwMmU1NTVl
Li4zODU2ZDM2OTM4YTI1MDE3YjY2M2I2ZTQ0MjFmNWJhMWRiNThmOTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01l
c3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC02MywxMyArNjMs
MTMgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFRlc3RXaXRob3V0QXR0cmli
dXRlcyB7CiAKLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQordm9p
ZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25u
ZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCiB7Ci0gICAgKmVuY29kZXIgPDwgY29u
bmVjdGlvbkhhbmRsZTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IGNvbm5lY3Rpb25IYW5kbGU7CiAg
ICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lk
IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1Jl
cGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAtODMsMTIyICs4Myw3OSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHZvaWQgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw6
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkVVJM
OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0
QXR0cmlidXRlczo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCisgICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9h
ZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNv
bWV0aGluZyk7CiAjZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9N
RVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VG91Y2hFdmVudD4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dG91Y2hFdmVudCk7CiAjZW5k
aWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElP
TiAmJiBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50Ojpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpBZGRFdmVu
dDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjphZGRFdmVudCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGlu
Z0Vsc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmxvYWRTb21ldGhp
bmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmdF
bHNlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmxvYWRTb21ldGhpbmdFbHNlKTsKICNlbmRpZgotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmli
dXRlczo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVm
ZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cHJlZmVyZW5jZXNEaWRDaGFuZ2Up
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2VuZERvdWJsZUFuZEZsb2F0Ojpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlNlbmREb3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6c2VuZERvdWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlNlbmRJbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6VGVtcGxhdGVUZXN0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdD4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpT
ZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNl
dFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpDbG9zZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3Nl
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpjbG9zZSk7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlk
Q2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpwcmVmZXJlbmNl
c0RpZENoYW5nZSk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkKKyAgICAg
ICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpTZW5kRG91YmxlQW5kRmxvYXQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OnNlbmREb3VibGVBbmRGbG9hdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kSW50czo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpzZW5kSW50cyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZW1w
bGF0ZVRlc3Q6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlbXBsYXRlVGVzdCk7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZXRWaWRl
b0xheWVySUQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNldFZpZGVvTGF5ZXJJRCk7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmli
dXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9u
OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKTsKICNlbmRpZgogI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRlcHJlY2F0ZWRPcGVyYXRpb24+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRlcHJlY2F0ZWRPcGVyYXRp
b24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlv
bjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwogI2VuZGlmCiAj
aWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3Bl
cmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgp
KQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKICNlbmRpZgogICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCitib29sIFRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0
QXR0cmlidXRlczo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpSdW5KYXZhU2NyaXB0QWxlcnQ+
KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnJ1
bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQ
bHVnaW5zOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRob3V0QXR0cmlidXRlczo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdpbjo6
bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6Y3JlYXRlUGx1Z2luKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1
bkphdmFTY3JpcHRBbGVydDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4o
ZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVu
SmF2YVNjcmlwdEFsZXJ0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpbnM6Om5hbWUoKSkKKyAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpnZXRQbHVnaW5zKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91
czxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJp
YnV0ZXMpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50Ojpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkludGVycHJldEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjppbnRlcnByZXRLZXlFdmVudCk7CiAjZW5kaWYKICAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAg
IFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRl
c01lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
b3V0QXR0cmlidXRlc01lc3NhZ2VzLmgKaW5kZXggNzY2MjMyYjgwZWZlMTYyOTg5MzM1OTY3OTMw
MmQwYTYxNGVmNjk1YS4uNjc2ZjZjYzA1NWRiMWRhZjNkNDE3N2U3YmIxY2Q4MjBkNjM0MWRiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91
dEF0dHJpYnV0ZXNNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMuaApAQCAtMzU3LDcgKzM1Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1Ro
cmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJl
YWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVj
dGlvbkhhbmRsZSk7CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29u
bmVjdGlvbkhhbmRsZSk7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVj
dGlvbjo6SGFuZGxlJj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQ
Qzo6Q29ubmVjdGlvbjo6SGFuZGxlPjsKICAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCkBAIC0zODMsNyArMzgzLDcgQEAgcHVi
bGljOgogCiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0Rl
bGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwotICAg
IHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpD
b25uZWN0aW9uJik7CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsK
ICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8PjsKICAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA5MjUxMjlk
MGM5YzczM2U3OTA0OTFlOWIwZjQzOGFhM2FiNTQ0YjViLi4yY2QzOWQ3NTQwNmUyNDNjYjIwNTk4
NTFkYjhmZGJjYWU0MWMwMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRl
OworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKaW5kZXggMDdlOGJiYzliNWM5YzNjNmM5
ZDhkNmMzYjk0NWU1MzkzMjdiODc1YS4uYmYyNWU4MGVhN2Y0MjE1ZGMzYTc1YmZiYzQxMzg3NGNh
MTk4M2FhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVj
dE1lc3NhZ2VSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIoTlBSZW1vdGVPYmplY3RNYXAqLCBQbHVnaW4qLCB1aW50NjRf
dCBucE9iamVjdElELCBOUE9iamVjdCopOwogICAgIH5OUE9iamVjdE1lc3NhZ2VSZWNlaXZlcigp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mKTsKIAogICAgIFBsdWdpbiogcGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW47IH0KICAgICBOUE9iamVjdCogbnBPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX25wT2JqZWN0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RN
YXAuY3BwCmluZGV4IGQ0YjUyNGM4MjllYzY2NzIxZGYxYTcwZDJkNTEzYWU0ZWIzZjNkMmIuLjI3
MWUxN2Y1OGFjNjFhM2RjNGE4ZjU4NmQ3YmQ0MmJlNDg4NmZjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCkBAIC0yMTcsMTMg
KzIxNywxMyBAQCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpwbHVnaW5EZXN0cm95ZWQoUGx1Z2lu
KiBwbHVnaW4pCiAgICAgfQogfQogCi12b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29s
IE5QUmVtb3RlT2JqZWN0TWFwOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIqIG1lc3Nh
Z2VSZWNlaXZlciA9IG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpOwogICAgIGlmICghbWVzc2FnZVJlY2VpdmVyKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNO
UE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKKyAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY05QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29k
ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaAppbmRleCBlZDEwNWE3M2NkM2VlNGYzMjJk
NDlkY2M3ODA0NDI4MjNhNTVkZmJmLi44NmNkMmYzODUzMGYyYWI0MzJlZTc0MmFkNWRmNTA5Yjc3
MzRiYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3Rl
T2JqZWN0TWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGx1Z2luRGVz
dHJveWVkKFBsdWdpbiopOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE5QUmVtb3RlT2JqZWN0TWFwKElQQzo6Q29ubmVjdGlvbiopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKaW5kZXggODE0MzA2
ZDM3YWE4N2QzMDBmMDFjZWQyNzc1ODdhY2IzNzk4OWQzNS4uMDkyMjRhNDk5NzAzM2QzZTVhYzEy
NDU4NTIyZTc5Y2UyNjIyZTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6Ondhc1Rlcm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywg
T3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+
LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxl
ckFjdGl2aXR5IHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQorYm9vbCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYg
ZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFs
PHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0
X3Q+PiYmIGFzeW5jUmVwbHlJbmZvLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0
eSBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBpZiAoYXN5bmNS
ZXBseUluZm8gJiYgY2FuU2VuZE1lc3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRs
ZXJBY3Rpdml0eSA9PSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7
CiAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVw
bHlJbmZvLT5maXJzdCwgbnVsbHB0cik7CkBAIC0yMjEsNyArMjIxLDcgQEAgYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGUKICAgICByZXR1cm4gbV9tZXNzYWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94
eTo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5j
b2RlcikKK2Jvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIHJldHVybiBtX21lc3NhZ2VS
ZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nl
c3NQcm94eS5oCmluZGV4IDk3MWVjZGFlYWVhNmI0M2JjNDM5MWJmOTE5MjRlZTNhYzY0M2IzMDMu
LjQxZjZhMjMxOTA1MDkyM2U4MzhkZDk5ZjIxYWExM2UwMTZiMjk1ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFj
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE2LDcgKzExNyw3
IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Byb2Nlc3NMYXVuY2hlciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpIDogMDsgfQogCiAgICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRlKCkgIT0gU3RhdGU6OlRlcm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBP
cHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4s
IHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQ
cm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rp
dml0eTo6WWVzKTsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
PSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKIAogICAgIHZvaWQg
c2h1dERvd25Qcm9jZXNzKCk7CiAKQEAgLTEyOSw3ICsxMzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOworICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBs
b2dJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAg
ICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKQEAgLTEzOCw3
ICsxMzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtR2V0TGF1bmNo
T3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSB7IH07CiAKICAgICBzdHJ1
Y3QgUGVuZGluZ01lc3NhZ2UgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiBlbmNvZGVyOworICAgICAgICBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOwogICAg
ICAgICBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9uczsKICAgICAgICAgT3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+IGFzeW5jUmVwbHlJbmZvOwogICAgIH07CkBAIC0xNjIsOCArMTYzLDggQEAgYm9v
bCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQ
Qzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICAqZW5jb2RlciA8PCBt
ZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXIuZ2V0KCkg
PDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3Zl
KGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC0xODYsMTAgKzE4NywxMCBAQCB1aW50NjRf
dCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwg
QyYmIGNvbXBsZXRpb25IYQogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5j
TWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpF
bmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1h
a2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0g
ICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3Vt
ZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKKyAgICBlbmNvZGVyLmdl
dCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNv
ZGVyKSwgc2VuZE9wdGlvbnMsIHt7IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoSVBDOjpEZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGRlY29kZXIgJiYgZGVjb2Rlci0+aXNWYWxpZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCA4OTUyMDhj
M2JjMjI2ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhkNjM3Li40YjllMTJjNDA1MTdmYjg0Y2IyM2Qy
ZGUzZTJhZGFhNjZjNjlkYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIFdlYlBhZ2VQcm94eSogb3JpZ2lu
YXRpbmdQYWdlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKaW5kZXggZDhmYTUzODE0ZDNjMmQxNTAzYzQ2ZDU1Y2U3NDA5ODhhZWJhMDk4
YS4uZGVjOWYxYzhiYWFhOGUyOTg3MjcyYzJkZjVhMjNhYzNkZTI5N2M0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
SVBDOjpDb25uZWN0aW9uKiBEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIHByb2Nlc3MoKS5jb25uZWN0aW9uKCk7CiB9CiAKLWJvb2wg
RHJhd2luZ0FyZWFQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlv
bmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWlu
dDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVz
c2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsK
ICAgICByZXR1cm4gcHJvY2VzcygpLnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggNTljZGZkYWZhYjFkODVlYTNhNWFlY2IzY2Qy
MjkzZTZkZmIxZWI4ZC4uMDgyYjBjMDExZDFlMzhhNzkxNTU0MGRlMTBjMTNjNzExOGNlOGE2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9VSW50NjQoKTsg
fQotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9w
dGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CisgICAgYm9v
bCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDc4MGM5MzE4ZjQyYTU1YmY0Y2I3MWJkNTE5MTFhYzFkNzIwZmQ2MWYuLjEw
NjJiYWNkNTgzMzNiYTU0ZTA5ZTZlOTMwZTU4MWNlYTE3MTBhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMzY5LDEyICszNjksMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGUKICAgICBkaWRSZWNl
aXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIp
CiB7CiAgICAgaWYgKGRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU3ZWJkZWVmZDQ3NWVmMWU5ZWIxZDgzMzBiNDJkNTA1YjRiZTM0N2EuLjEz
NWZjNTNiYzBmM2ZlZTZlNmUxNWVlNzcyMmI4NzU3NjMwZTUzMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
ODIsMTAgKzI4MiwxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2
ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggYTE5MTM0OTVlNDNmMmFmZjc3YmZkNzEyODhhY2VhYTIwMDVhYTg4
NC4uN2U0ODA2YzAxNzgzZWIyMGQwNzJiYmVmMDU0NmI0ZTM3NDVmOGUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBA
IC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xp
ZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5h
bWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IGU3OTRhMzNmYTgzZDJhYTg4NjkwNWRhOWJjNTlmZmMwZDUzMDNh
NDEuLjQ0MzJlYmZjYzU0YWM1MzUwNjJmYzgwNTQ0NWM0OTNmM2RjM2UwZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTUyMywx
OSArNTIzLDE1IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpECiAgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIlVuaGFuZGxlZCBtZXNzYWdlICVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRl
c2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCitib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEdvVG9JdGVtOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXM8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbT4oY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkR29Ub0l0ZW0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRH
b1RvSXRlbTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hy
b25vdXM8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbT4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmJhY2tGb3J3YXJkR29Ub0l0ZW0pOwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOwogCi0gICAgbV9wYWdlLmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwor
ICAgIHJldHVybiBtX3BhZ2UuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9uYWxQYWdl
UHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTU0OCw3ICs1NDQsNyBA
QCB1aW50NjRfdCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywg
T3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+
LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKIHsKICAgICAvLyBTZW5kIG1lc3NhZ2VzIHZpYSB0aGUgV2ViUHJvY2Vzc1Byb3h5IGlu
c3RlYWQgb2YgdGhlIElQQzo6Q29ubmVjdGlvbiBzaW5jZSBBdXhpbGlhcnlQcm9jZXNzUHJveHkg
aW1wbGVtZW50cyBxdWV1ZWluZyBvZiBtZXNzYWdlcwogICAgIC8vIHdoaWxlIHRoZSBwcm9jZXNz
IGlzIHN0aWxsIGxhdW5jaGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCmluZGV4IDI0OTM4ZTJhYjc1NTU3MTczMDY1MThmMTY2MGIxN2JkOTQ3
NDk4NGYuLmVlOWRkM2FkNzg3NDgwZDU5MTFiMzQxZjIwMGE4OWNjMDRlMmUyNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTA2LDEy
ICsxMDYsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6
cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYm
KSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywKICAgICAgICAgT3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggNDYwY2I4ZDUzOTdmZmQzMmU2
MWRhN2NhOGRlZjI3ZTIxOWUzNWJlMC4uNDY0ZmI3NTdkMjJhNmY4ZGJkNjJmNzk0OTY5Y2NjNDE1
OTk0ZjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCkBAIC0yNTksOCArMjU5LDkgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2QKICNlbmRp
ZgogfQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JikKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKQog
eworICAgIHJldHVybiBmYWxzZTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBTdXNwZW5kZWRQYWdl
UHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTI3Myw3ICsyNzQsNyBA
QCB1aW50NjRfdCBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJQYWdlSUQudG9VSW50NjQoKTsKIH0KIAotYm9vbCBT
dXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykK
IHsKICAgICAvLyBTZW5kIG1lc3NhZ2VzIHZpYSB0aGUgV2ViUHJvY2Vzc1Byb3h5IGluc3RlYWQg
b2YgdGhlIElQQzo6Q29ubmVjdGlvbiBzaW5jZSBBdXhpbGlhcnlQcm9jZXNzUHJveHkgaW1wbGVt
ZW50cyBxdWV1ZWluZyBvZiBtZXNzYWdlcwogICAgIC8vIHdoaWxlIHRoZSBwcm9jZXNzIGlzIHN0
aWxsIGxhdW5jaGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmgKaW5kZXggNzdkN2Y3ZGE4MzY2YjRlMWViMWUwZTY0NDUyN2VlYmZhOWM3MmFkYS4uNjVk
NjcxOWI3ZDQ5MTRlZDI4YTEzZDVjYjQ5NDI1MGI2NWNjNDhiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTkyLDEyICs5MiwxMiBAQCBwcml2
YXRlOgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CisgICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMzUy
N2RkMWFlMTVlZDQ4OGY3MGI2OTdlMTZlMjk1MmNkNWQyZjQ1NC4uZWM5Zjg2NmI3YjZkYTIwOTM3
YzhiYTUxYWI1ZWMwM2VhMjVjNzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2FsbENsb3NlQ29tcGxldGlvbkhhbmRsZXJzKCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94
eSYgbV9wYWdlOwogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIG1fY2xpZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGJiNzlkN2Qw
MmZkMjE0ODIzNDZjNGU0NGUzNmVjYWVkNDJmOGE1Ni4uYTIzM2Y4ZWUwOWFmNWE3YWYwZTI2MTY0
ZmE2Y2NmNWM1OTBkZWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC02NDg0LDcgKzY0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBtX2ZpbmRDbGllbnQtPmRpZEZhaWxU
b0ZpbmRTdHJpbmcodGhpcywgc3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6OnNlbmRN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5m
bykKK2Jvb2wgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICByZXR1cm4gbV9wcm9jZXNzLT5zZW5k
TWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5
SW5mbykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4N2Q2
NDczZWVhOWZkOWJhNjVjNDhhYjkxZTBkMzY2ZmFmZDliY2Q4Li45N2I2ZDEyOTYwNjliMWExMDQz
ZDk3NDU0YTFhYzMwNDE1MGM1MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTczNiw3ICsxNzM2LDcgQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CiAKQEAgLTE5MDYsNyArMTkwNiw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBvdmVycmlkZTsKKyAgICBi
b29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgb3ZlcnJpZGU7CiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggODJkN2ZjYmE3
YzkyZGU0ZmExZjQ2NDZkZThiYWJmNmQ2NzVhNDA4YS4uMzE4NmJkOTUxMThjMGU1ODA0OTJhYmUz
ZTNlODU2OGVkYmU2YWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBXZWJQcm9j
ZXNzUHJveHlMaXN0ID0gSGFzaFNldDxXZWJQcm9jZXNzUHJveHkqPjsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBi
b29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUHJvY2Vzc1By
b3h5KiB3ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTA5
MjYwNmJmYjJjZWQ5MWJmMWNmMDM0YmRkMmJiZTBiZWYwNzllYi4uZTEzMjZhZjg2Y2I4NjY5Njcw
MzA1MDNmNzFmNjgwZGM0MDI4N2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtMTQzMSw3ICsxNDMxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6
ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JgogICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmRpc3BhdGNoU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlBy
b2Nlc3NQb29sOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQogewogICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAzMzZiMjVjOWM2NWJjNjc0NTAzMzU5
ODlkNjUwYWU2YTM3MGY0ODYzLi5hYWIwOGE4YzBiYWQwNGQxYzljODVkYzA0YzNmYWE1YWI5MGM5
ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE3NCw3
ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lk
IGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSopOwogICAgIHZvaWQg
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+JiYpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nl
c3NQb29sTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+dXNlc1NpbmdsZVdlYlByb2Nlc3MoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNTVm
NzdmYjVjNTNlYzVmMjE5NWM2OTc4Njc3N2RiNTZhY2I0ZmQ1Li41YTY2MjAyMjkxMzA0YmJkNzM3
ZTExNmI4ODdhYzRmOTk2M2FmMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTgzMCwyMCArODMwLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlCiAgICAgLy8gRklYTUU6IEFkZCB1bmhhbmRsZWQgbWVzc2FnZSBsb2dnaW5nLgogfQogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBp
ZiAoZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fcHJv
Y2Vzc1Bvb2wtPmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkK
KyAgICAgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgLy8gRklYTUU6IEFkZCB1bmhh
bmRsZWQgbWVzc2FnZSBsb2dnaW5nLgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGQ0MTdhMzA0YzNmOTcwZmNjMTJjNGRhYmYx
YTFkMDFhYWRmYTcyMGUuLjJhNjlhYmY2MjJjNjY4Nzc4ZmY3MzYwMzZmMDI5MzlkNDExYzE5YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00ODYsNyAr
NDg2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZy
aWVuZCBjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKQEAgLTQ5OSw3
ICs0OTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
YlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIGJvb2wg
Y2FuVGVybWluYXRlQXV4aWxpYXJ5UHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaAppbmRleCA5M2MwNmJlM2UzMGE4YmMzMmJkYjI2
MDU1ZTc4MGI0M2M3MjNlNDZmLi44MWU0MjFjNmFjOTQwMTk0YjcxYjFjOWI5NzgzMGEzODUzZTNh
ODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0
ZW1SZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VjSXRlbVJl
c3BvbnNlRGF0YT4mJik+JiYpOwogICAgIHZvaWQgc2VjSXRlbVJlcXVlc3RTeW5jKGNvbnN0IFNl
Y0l0ZW1SZXF1ZXN0RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VjSXRl
bVJlc3BvbnNlRGF0YT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA0Nzg1ZTdmZjQ1N2RiMjlhYTYz
NzUzYzNhYTRmNjU1ZWIyYzRiOThjLi40MTlmZjZiNTJhNTQzMmNmNWZlMmJlMTRjYzFmOTM4MzA5
YTFiYWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIGJvb2wgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQorYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICByZXR1cm4gbWVzc2FnZVJlY2Vp
dmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oCmluZGV4IDE5YTYyZWQzM2U4ZjFiNjJmZDhjOGZlZWM2Y2MzZjY3ODdi
NDczOTcuLjk3MTgyNGEzMTY2N2MyZjRlMjkxODM5NDZmNThkNDI0OTU1ZTI1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgK
QEAgLTEwNiwxMSArMTA2LDExIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAg
ICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9v
bCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb21t
YW5kKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5
cGUsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJn
dW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNWU1NjY3Y2JjMjNjOWNj
NTNlM2IwODQxNzNjNWQwODUzZjk2ZDI1OC4uYjU1NzhjYTg4NWRkMTdmZGFlM2NlMjJlOWRhMGE2
MTUxOGNiNjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xNzQsMjYgKzE3NCwy
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikK
IHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24mPigqY29udGV4dE1hbmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4o
KmNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbikuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5h
dG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFn
ZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICAgICAg
d2ViUGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR1cm4gd2ViUGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCktPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBiOTc5NDY1
OWVhYmQxODRiMzg5YzA2ZDEzMmY4YzQyZjgwNTIzY2MyLi4wYWI3OTE1YjdmYWNlMzk1ZWRmYmEz
N2QzOTkyZWVkOTdmM2I4YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtOTMsNyArOTMs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGM4YjZiNmU5NmFhY2RiY2JkYWU1OGNhOGQ5
Njc5YTdkZjE1MTJmMy4uYmM4OTFlOWRiZTdiNDJhOWE2NDE3MWQ2ZDlkY2M0Y2Y5NjdlYjU0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtOTcsMjUgKzk3LDIxIEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDCiAgICAgcGx1Z2luUHJveHktPmRpZFJlY2VpdmVQbHVnaW5Qcm94eU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKK2Jvb2wgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgbV9ucFJlbW90ZU9iamVjdE1h
cC0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAg
ICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAKLSAg
ICBpZiAoIWRlc3RpbmF0aW9uSUQpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWRlc3RpbmF0aW9uSUQpCisgICAgICAg
IHJldHVybiBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgUGx1Z2luUHJveHkqIHBsdWdp
blByb3h5ID0gbV9wbHVnaW5zLmdldChkZXN0aW5hdGlvbklEKTsKICAgICBpZiAoIXBsdWdpblBy
b3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBsdWdp
blByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpblByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOworICAgIHJldHVybiBwbHVnaW5Qcm94eS0+ZGlkUmVjZWl2ZVN5
bmNQbHVnaW5Qcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
IH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDlhNzgxMzM1NDFlYzAzZDE4YjQwNWYxN2M5
OGVhNzIyMmQ2MDliNmIuLjE5NDdjZWRmMzdmZGY5N2U4NmE2YzE2NTNjMTJkOTg4NTc4Mjc3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjQsMTIgKzY0LDEyIEBAIHByaXZhdGU6CiAKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBhNjNkNzQ4MDViZmU4
NmEzMzRiNjFlYjRkZjRmNWE1NjY0NzlhMjRkLi4wMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEy
ZTU2MTJjNmZkZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGx1Z2luUHJv
Y2Vzc0NyYXNoZWQoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
UGx1Z2luUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY1BsdWdp
blByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGQ5NTRmYzI2OTgzNDUwYTM2NTRm
MGFkZmZlODRlZTQ1MmE2Y2FhMzguLjUyYTZkNDk2OTFhZjkxNzlkNTNkYTkwOTc3MTJjOTVmNjEx
ZjhhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rl
c3RpbmdBUEkuY3BwCkBAIC02NDQsMTQgKzY0NCwxNCBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpzZW5k
TWVzc2FnZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRo
aQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBh
dXRvIG1lc3NhZ2VOYW1lID0gc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4oKm1lc3NhZ2VJ
RCk7Ci0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KG1lc3NhZ2VO
YW1lLCAqZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+KG1lc3NhZ2VOYW1lLCAqZGVzdGluYXRpb25JRCk7CiAKICAgICBKU1ZhbHVl
UmVmIHJldHVyblZhbHVlID0gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBi
b29sIGhhc1JlcGx5ID0gISFtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhtZXNzYWdl
TmFtZSk7CiAgICAgaWYgKGhhc1JlcGx5KSB7CiAgICAgICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0gICAgICAgICplbmNvZGVyIDw8IGxp
c3RlbmVySUQ7CisgICAgICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKIAogICAgICAg
ICBKU09iamVjdFJlZiByZXNvbHZlOwogICAgICAgICBKU09iamVjdFJlZiByZWplY3Q7CkBAIC02
ODcsNyArNjg3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICB9CiAK
ICAgICBpZiAoYXJndW1lbnRDb3VudCA+IDMpIHsKLSAgICAgICAgaWYgKCFlbmNvZGVBcmd1bWVu
dCgqZW5jb2RlciwgKmpzSVBDLCBjb250ZXh0LCBhcmd1bWVudHNbM10sIGV4Y2VwdGlvbikpCisg
ICAgICAgIGlmICghZW5jb2RlQXJndW1lbnQoZW5jb2Rlci5nZXQoKSwgKmpzSVBDLCBjb250ZXh0
LCBhcmd1bWVudHNbM10sIGV4Y2VwdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiAgICAgfQogCkBAIC03NDIsNyArNzQyLDcgQEAgSlNWYWx1
ZVJlZiBKU0lQQzo6c2VuZFN5bmNNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYKICAgICBhdXRvIGVuY29kZXIgPSBjb25uZWN0aW9uLT5jcmVhdGVT
eW5jTWVzc2FnZUVuY29kZXIobWVzc2FnZU5hbWUsICpkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVz
dElEKTsKIAogICAgIGlmIChhcmd1bWVudENvdW50ID4gNCkgewotICAgICAgICBpZiAoIWVuY29k
ZUFyZ3VtZW50KCplbmNvZGVyLCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50c1s0XSwgZXhjZXB0
aW9uKSkKKyAgICAgICAgaWYgKCFlbmNvZGVBcmd1bWVudChlbmNvZGVyLmdldCgpLCAqanNJUEMs
IGNvbnRleHQsIGFyZ3VtZW50c1s0XSwgZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNmJjZjQ0NDY4NWNi
OGZkNDAyNzk5MDhlOTJlODc3ODU5NGQ4YjE3MC4uMDYxZjI2Njk4ZDhmYWNjYTEzNzE3MDQ0ZWRh
MjYwODYxYzY4OGFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKQEAgLTEyNiwxMyArMTI2LDEzIEBAIHByaXZhdGU6CiAKICAgICBj
bGFzcyBCYWNraW5nU3RvcmVGbHVzaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJh
Y2tpbmdTdG9yZUZsdXNoZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8QmFj
a2luZ1N0b3JlRmx1c2hlcj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiosIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNh
ZmVJbWFnZUJ1ZmZlckZsdXNoZXI+Pik7CisgICAgICAgIHN0YXRpYyBSZWY8QmFja2luZ1N0b3Jl
Rmx1c2hlcj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiosIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVy
Rmx1c2hlcj4+KTsKIAogICAgICAgICB2b2lkIGZsdXNoKCk7CiAgICAgICAgIGJvb2wgaGFzRmx1
c2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmx1c2hlZDsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgQmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5lY3Rpb24qLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4pOworICAgICAgICBCYWNraW5nU3RvcmVGbHVzaGVyKElQ
Qzo6Q29ubmVjdGlvbiosIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+KTsKIAogICAg
ICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fY29tbWl0RW5jb2RlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA1YWJlOTlm
OWZiNGViYTc1YTk1YTFkMWM4NGY4MWJjYTI3MGNkYTc0Li45OTkyODcxYjFjMDBlODIxMGNiNjZk
ZWJkMjhlZTZiMDhkYjEyNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zODUsOCArMzg1LDggQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5nKCkKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxh
eWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJU
cmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2Rl
ciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKLSAgICAqY29tbWl0RW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAg
IGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBjb21taXRFbmNvZGVyLmdldCgpIDw8
IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBz
dG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVj
dGlvbi4KICAgICBib29sIGhhZEFueUNoYW5nZWRCYWNraW5nU3RvcmUgPSBmYWxzZTsKQEAgLTQ1
NywxNCArNDU3LDE0IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Om1hcmtMYXll
cnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpCiAgICAgcmV0dXJuIG1fcmVtb3RlTGF5
ZXJUcmVlQ29udGV4dC0+YmFja2luZ1N0b3JlQ29sbGVjdGlvbigpLm1hcmtBbGxCYWNraW5nU3Rv
cmVWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpOwogfQogCi1SZWY8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI+IFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBmbHVz
aGVycykKK1JlZjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hl
cj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0
ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYg
ZW5jb2RlciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VC
dWZmZXJGbHVzaGVyPj4gZmx1c2hlcnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXIoY29ubmVjdGlvbiwg
V1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShmbHVzaGVycykpKTsKIH0KIAotUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNoZXIo
SVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiBlbmNvZGVyLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFn
ZUJ1ZmZlckZsdXNoZXI+PiBmbHVzaGVycykKK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpC
YWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBmbHVz
aGVycykKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQotICAgICwgbV9jb21taXRFbmNv
ZGVyKFdURk1vdmUoZW5jb2RlcikpCisgICAgLCBtX2NvbW1pdEVuY29kZXIoZW5jb2Rlci5tb3Zl
VG9VbmlxdWVQdHIoKSkKICAgICAsIG1fZmx1c2hlcnMoV1RGTW92ZShmbHVzaGVycykpCiAgICAg
LCBtX2hhc0ZsdXNoZWQoZmFsc2UpCiB7CkBAIC00ODAsNyArNDgwLDggQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2goKQogICAgICAg
ICBmbHVzaGVyLT5mbHVzaCgpOwogICAgIG1faGFzRmx1c2hlZCA9IHRydWU7CiAKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKKyAg
ICBBU1NFUlQobV9jb21taXRFbmNvZGVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
KG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVsbFVuaXF1ZVB0cihXVEZNb3ZlKG1fY29tbWl0RW5jb2Rl
cikpLCB7IH0pOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwg
QWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA0Mzk0Y2M1NzYyZjk1YmViODBmMDM3MGMzZjE4NjAwZDY3
ZGQ1NThkLi45MjExNzc0MDNjNWMyYWRlZmM4MTJhMzRiYTFjMjU0YTFhMWQwMmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDg4Niw5ICs0
ODg2LDkgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2QKICAgICBkaWRSZWNlaXZlV2ViUGFnZU1l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9v
bCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBs
eUVuY29kZXIpCiB7ICAgCi0gICAgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIHJldHVybiBkaWRSZWNlaXZlU3luY1dl
YlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGYyMThlOTBkNzI3Y2M3ZDBjYTYzZWFjZTgwNjcxMDIyNzMyOTM3
Y2UuLjg0YzVjNDlkNzJkODMyNjNmOGZiZGE0NGRmODM4ZjFjNTI3ZWU4YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ4MSw3ICs0ODEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihSZWY8V2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+JiYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyAtLSBJbmplY3RlZEJ1bmRsZSBtZXRo
b2RzCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0xNDQwLDcgKzE0NDAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2VuZFRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShXZWJD
b3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNXZWJQ
YWdlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMTlhMDIzZjc4N2Q1Mzk2NzQ5YmJiY2YzMjc1NDg0OGFi
MWFkNzk0Li45NmIxYWQ0N2NjMGFjMzk1ODNjZGYxYzk0MDI1NTMwMDA1MjkzMjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MDEsMTAgKzgwMSwxMSBAQCB2
b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6dGVybWlu
YXRlKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBXZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAg
ICAgaWYgKG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOGE3OWY4YTIy
OTQxYjNjZjY5ZDVlYzVmYzMyNTAwODcxYTUwMzI3Li40YmU1NWRiZTFjMGFhOGZhNDcxMmZhYTRj
Y2Y5ZmQ1NTRkOTJiOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTUxNiw3ICs1MTYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQg
ZGlkUmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwo=
</data>
<flag name="commit-queue"
          id="441937"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422774</attachid>
            <date>2021-03-09 16:02:09 -0800</date>
            <delta_ts>2021-03-09 17:06:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222992-20210309160208.patch</filename>
            <type>text/plain</type>
            <size>171212</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmOTBhZDExOWEyYmI1ZmIz
Y2QxNjQ0OTJjNDc5MTFhZjRlMzFlZjYuLmYwMDRjMTM4MTQ5NzViMGFmMjNlYmQyZjQ1NDkyMzRh
MzRmYjBmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjEtMDMtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVW5pcXVlUmVmPD4gaW5zdGVh
ZCBvZiBzdGQ6OnVuaXF1ZV9wdHI8PiB3aGVuIHBhc3NpbmcgSVBDOjpFbmNvZGVyIHRvIHNlbmRN
ZXNzYWdlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBVbmlxdWVSZWY8PiBpbnN0ZWFkIG9mIHN0ZDo6dW5pcXVlX3B0cjw+IHdoZW4gcGFzc2lu
ZyBJUEM6OkVuY29kZXIgdG8gc2VuZE1lc3NhZ2UoKSwgdG8KKyAgICAgICAgbWFrZSBpdCBjbGVh
ciBpdCBjYW5ub3QgYmUgbnVsbC4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNv
ZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6c2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dGdv
aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFdpdGhB
c3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6d3Jh
cEZvclRlc3RpbmcpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmg6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
V2FudHNDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAg
ICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VT
ZW5kZXI6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE91dGdvaW5nTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdl
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojpz
ZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6c2VuZE1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBD
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjpz
ZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVy
aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXI6OmZsdXNoKToKKwogMjAyMS0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFtJUEMgSGFyZGVuaW5nXSBQcm90ZWN0IGFnYWluc3QgYmFkIGlu
cHV0IGluIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoKSBh
bmQgTWVzc2FnZVJlY2VpdmVyTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNGFkYjEwM2NiNWZmNmIzNDI3
OGRhYzBiYjNhNTNkZmEzZGRkYzRjNC4uN2Y4YjMzMTgxZjI0YzE2MTczZTNlNGQzMDIzMjI5ZDYz
NDBlMTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIGJvb2wgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlF
bmNvZGVyKQorYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogI2lmIEVOQUJMRShXRUJf
QVVESU8pCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CkBAIC02MzIsMTEgKzYzMiw4IEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewotICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQg
cmVjZWl2ZXJzLgotICAgICAgICByZXBseUVuY29kZXIucmVzZXQoKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
ICNlbmRpZgogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBl
OTc0ZDhhZTlmZGQ0NjM4MmY4OTY1YjdjNjIzMWE4MzEwZTJkNzk2Li45MWNjNzE5ODBlNTZiYjdm
MDRhYzU2MmI5ZWJmMzg4ZWNkNTVjMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE5MiwxMCArMTkyLDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VOYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8gTm93UGxheWluZ01hbmFnZXI6OkNsaWVu
dAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDE0NTliNDBjNjI2NThmYWUzMjY4ZDJhZWU0OWU0OTBhZGNl
YzU1NDEuLjM5NDNkNTIxZDM2OTNmYmQyY2VmMzZiNDdkMzQ5NmIxYzJkZjM2NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCiAgICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCmluZGV4
IDQ4MzAwNjkxYzc5YzY0MmVlMzY0MzJlMWEyOWY5Zjg4Y2IzYzYzM2UuLmY4NGQ2ZjhlM2Y1Y2M1
NzdkZThmYTAxYjRjYzBhZjlhYzNjZmVjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CkBAIC01MywxMiArNTMsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAgICB+UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdl
YlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNv
ZGVyKSB7IHJldHVybiBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
ZW5jb2Rlcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KIAogcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWlu
dDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFy
ZHdhcmVTYW1wbGVSYXRlLCBJUEM6OlNlbWFwaG9yZSYmIHJlbmRlclNlbWFwaG9yZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgKaW5kZXggYmQ0NmI1ODE4OTJmZjQ5NmFhYTEz
Nzg3ZWRlNzdiNTE2ZTU0MmRhYS4uODM4NzdlNTIyZWNlZjFjMTAyYzUzZGZjNTY4N2EyMDc2MzFi
YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvU2Vzc2lvblByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgVW5pcXVlUmVmPFJlbW90ZUF1ZGlvU2Vz
c2lvblByb3h5PiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlbW90
ZUF1ZGlvU2Vzc2lvblByb3h5PihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJv
eHkuY3BwCmluZGV4IDU5NjMwNTE4MDZmZjVkY2YwZWExZWRiZTE0M2YxN2RhZTk3NzQ3MjEuLjE1
NWViYWZmYjlhOTRkYmJmZDg3MjU1MmFmMmRjMmJlYWE2MjdkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3Bw
CkBAIC05OSwyMiArOTksMjUgQEAgdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2Vp
dmVDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICAgICAgc2Vz
c2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxS
ZW1vdGVDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAg
ICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNv
ZGVyKTsKKyAgICAgICAgcmV0dXJuIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJl
bW90ZUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJv
eHk6OmRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byogaW5zdGFuY2UgPSBtX2luc3RhbmNlcy5nZXQobWFr
ZU9iamVjdElkZW50aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rl
ci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAgICAgaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGluc3Rh
bmNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6ZGlk
UmVjZWl2ZVN5bmNDRE1JbnN0YW5jZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgZW5jb2RlcikKK2Jvb2wgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQog
ewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50
aWZpZXI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkpCi0gICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHNlc3Npb24tPmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShj
b25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNUHJveHk+JiYgcHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKaW5kZXggOTI4YjM5OTM5NDk0ODc4YTlm
ZWM4OWQxZjk3ODRjZGI1ZDAyMTdmMC4uYzRlODZjMzcyNTgwYzM5MTY5ZDhjNDNlMjI0Mzk2YWFi
M2E4YzllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtNTAsMTMgKzUwLDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5SZW1vdGVDRE1GYWN0b3J5UHJveHkoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsg
fQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2
b2lkIGRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDRE1JbnN0YW5jZVNlc3Npb25N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETUlu
c3RhbmNlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5j
ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY0NETU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CisgICAg
Ym9vbCBkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZv
aWQgYWRkUHJveHkoY29uc3QgUmVtb3RlQ0RNSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVDRE1Qcm94eT4mJik7CiAgICAgdm9pZCByZW1vdmVQcm94eShjb25zdCBSZW1vdGVDRE1J
ZGVudGlmaWVyJik7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdl
cwogICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA5MjRlYWRkNTM3MmNhMjVhMTIxYjI1ZmRhODY2
YTJhY2ViYjQ3ZTVjLi5iNGNlNzQ5NGExN2JmYzU2ZTRjZjg2ZWM1NmZkOWE0M2Y5N2MzMjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CiAKICAgICB1c2luZyBTdWNjZXNzVmFsdWUgPSBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vz
c1ZhbHVlOwogICAgIHVzaW5nIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyA9IFdlYkNvcmU6
OkNETUluc3RhbmNlOjpBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDVkZDMwZjg5NjZk
YTM0MWUwYjAzN2RjY2U5ZjJlZjU1NjMxMDZiYjMuLjg2NjBhZGM3YjA5MGI1YmM2ZDM5ODhhYjMw
YjAwNmM1OGI2YTNmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFs
OwogCiAgICAgLy8gTWVzc2FnZXMKICAgICB2b2lkIGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmLCBXZWJDb3JlOjpDRE1Qcml2YXRl
OjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNETVByaXZhdGU6OlN1cHBvcnRlZENvbmZp
Z3VyYXRpb25DYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKaW5kZXggNGExMGVhMzg1
M2YyZjExNTAzMTUyNDM1ZmEyMjU4ZGZkOWQ1MDBkNi4uNDY5ZDYzMTY3MDdhYTdjNTc4Yzk5YzM2
NWM2ZmQ4ZDQwZWJiM2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZURl
Y29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyPiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IDM3OGZhMzRk
ZTg3YjcwYzg5ODJhMjI2ZmI5OTBjMTVlNzAwM2QxNWQuLmJhNzJmYjc4NjI4NTJlNjY4Zjk0NTdl
NzViY2VlNTUwMTQzYWExZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC05NSwx
NiArOTUsMTggQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVD
RE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGMKICAgICAgICAgc2Vzc2lvbi0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7
CiAgICAgaWYgKGF1dG8qIHByb3h5ID0gbV9wcm94aWVzLmdldChtYWtlT2JqZWN0SWRlbnRpZmll
cjxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKLSAgICAgICAgcHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIHNlc3Np
b24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsK
KyAgICAgICAgcmV0dXJuIHNlc3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRQcm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJiBwcm94
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAppbmRleCA2ZmM2YTk5ZWE1NDZjMjAzMzdiOTY0Y2M5
OTZmNDJiMDcxNzNjMGY0Li41ZmQ4ZmE1NDZhMDk3YmY4ZDQ0YTcyM2ZjZWJkN2ZlNWU5ZGI4MmUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC00OSwxMSArNDksMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
cmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNU2Vzc2lvbk1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBhZGRQcm94eShS
ZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
UHJveHk+JiYpOwogICAgIHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
cik7CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0K
LSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHZv
aWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IDVjMzNjYTM3NDQ4NGI0NjAy
ODFlOGVkYzEyNWNjOTAxODZjNjY3YjQuLjQyZDA5NDE1ODZiNThiMTRhMzAyMmRjYzBjYTY1YmVl
MjBlNzYwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZXMKICAgICB1c2luZyBTdXBwb3J0c01JTUVUeXBlQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAppbmRleCA4YzdiYzMwZDU0ZWVjYWM5Y2EyNWRiZDMyNmE3NzEzOGZhMDlmNGZhLi5jOTBm
NWRhMTMyMTAwMTc1NWY0MGFhZTQ1NmQ5N2RmYTg1YzBiZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAg
Ly8gTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJh
eSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcAppbmRleCBhOGQxZWY1MWFkN2Y4NGZmZmNhNDYxYzcyZjMyMDI2ZWIxY2UyZWIwLi5l
YmJmYTcwMzM1MDQ1YzZhNDIyMGFiMmExNTZiNGI1OGJlZDg4ZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5jcHAKQEAgLTE2NiwxMSArMTY2LDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29uCiAgICAgICAgIHBsYXllci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiti
b29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgaWYgKGF1dG8qIHBsYXllciA9IG1fcHJveGllcy5nZXQobWFrZU9i
amVjdElkZW50aWZpZXI8TWVkaWFQbGF5ZXJJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKLSAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7CisgICAgICAgIHJldHVybiBwbGF5ZXItPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIC8vIE1heSBnZXQgY2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGIzMjI1ZGI4N2E3ZmIwODQzNjA4ZGUwNjgz
ZTc2ZjVjNDRiMzIxZTEuLjhhY2RkNDk3YTkxY2YyNGUyMzA2OGJmZWZhMzgxMTcwMDllNTYwYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02MCwxNiArNjAsMTYgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2Rl
cikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
IH0KKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYgZW5jb2RlcikgeyByZXR1cm4gZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUGxheWVyTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbGF5
ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxh
eWVyKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciYpOwogCiBwcml2YXRlOgog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JikgZmluYWw7CiAKICAgICB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlh
UGxheWVySWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJ
ZGVudGlmaWVyLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZU1lZGlhUGxheWVyKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaAppbmRleCA1ZjkyNzU3MmFmMzNkN2U3YmIyMWI3MGU5YjJhYjA1MDY5NjRm
YjE0Li5iZDZjNzY5ZjUwZmFkZDAyYWY5ZmVkMDUzNjAxYTM1ZGNlZDM0Mjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCBkOTUwMGNiMjQ1MTgx
MjJhYjQxMDEwMDNlYWMzNzUyNjY4NGZiOWI5Li5hNDJiODEyYTZkYjYyMTMyYWYyOTdhOTkyM2Nm
OTdhODgxOWJlZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdXNpbmcgQWRkU291cmNlQnVmZmVyQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6
QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPik+OwogICAg
IHZvaWQgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgQWRkU291
cmNlQnVmZmVyQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDE1Yzg0NzNmMzRmNjM4
OWYwYjFkYzFkMzNjNzBiNDI4Mjc0MmY0MzUuLmMwZThkYmNiMDY2NzYxNTM3ZDAyZWJjZGI2MTFl
NzIyYzI3YzJjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgLy8gdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAvLyBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAg
dm9pZCBzZXRNb2RlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAppbmRleCA4NGM5MTNhZDFjMGE5MTRmZjZkNGE5N2U2OWIxNTJjNGVi
YmM2ODA4Li40ZjU4ODVlOGY3NGYzMjllYmQzZWViZGZlYWE5NjdmMmM3YTZmNGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjg1LDIxICsyODUsMTkgQEAgQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbiYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNhY2hlU3Rv
cmFnZUNvbm5lY3QKICAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHkpCitib29sIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBy
ZXBseSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucywgTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzIElQQyBpcyBvbmx5IHN1cHBvc2VkIHRvIGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzLgog
ICAgIEFTU0VSVChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSAhPSBNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJl
cGx5KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIGlmIChtX3N3Q29ubmVjdGlvbikKLSAgICAg
ICAgICAgIG1fc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHkpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gbV9z
d0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzEwLDYg
KzMwOCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAKICAgICBXVEZMb2dBbHdheXMoIlVu
aGFuZGxlZCBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAnJXMnIiwgZGVzY3JpcHRpb24oZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpKSk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1cGRhdGVR
dW90YUJhc2VkT25TcGFjZVVzYWdlRm9yVGVzdGluZyhjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0OGQxYzE4ZTkzNDVlNWJmYmRiOGZmODBj
Y2M5YjgyY2FjNTA3MDY4Li5kYTA2ZjczOWVmYTVkNTM0MGU5YTYxODIzODViZTViMDY3M2UyM2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBwcml2YXRl
OgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVz
c2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
NzM4NTU2N2Q0YTA1YTZhNDBjOGQyYTA4ZDIyZjMyY2EwOWY0OTgzMS4uNDg4OTY1NTZjMjI3YzFm
MGUxNTEzMjhiZjhiYWZjYmY3MTQzODUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI0NCwxOSArMjQ0LDE5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBO
ZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQogewogICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpID09
ICZjb25uZWN0aW9uKTsKICAgICBpZiAocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSAhPSAmY29u
bmVjdGlvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIklnbm9yZWQgbWVzc2FnZSAnJXMnIGJl
Y2F1c2UgaXQgZGlkIG5vdCBjb21lIGZyb20gdGhlIFVJUHJvY2VzcyAoZGVzdGluYXRpb249JSIg
UFJJdTY0ICIpIiwgZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSwgZGVjb2Rlci5k
ZXN0aW5hdGlvbklEKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKG1lc3NhZ2VS
ZWNlaXZlck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWQ0ZTMyN2FhYjQyN2IxN2Jl
MzAyZDc3ZTczN2ViMzA0YWE5MTZkYi4uZmE0MjMzNGVjMGNhMWFkMDUwMjNlY2JmNzhkMTMxZDAx
YjNlZjM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtNDAyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBEb3dubG9hZE1hbmFnZXI6OkNsaWVudApAQCAtNDEzLDcgKzQxMyw3IEBAIHByaXZhdGU6
CiAgICAgQXV0aGVudGljYXRpb25NYW5hZ2VyJiBkb3dubG9hZHNBdXRoZW50aWNhdGlvbk1hbmFn
ZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQ
Qzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCmluZGV4IDUxMGQ1YWM4OTg1NWEzYTM0ZDRhMTczZjgwYzYzZGMyMzM3
MjM1NDUuLjBkNmU3YWVkZmY2ODIyN2JmN2RjOGFiNzE4NGFiYzZmZDMzMjFjNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TWFuYWdlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU3RvcmFn
ZU5hbWVzcGFjZXMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2Rlcik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2Rlcik7CiAgICAgCiAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyKiBsb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCBlMjg1
MWVlZWRlNmE3MTU4MjliYjdhYzQ0N2JkNWU0MTg0YzY3ZmE4Li5mMGNlYWE4ODYyYjZhMjI5YjA4
OWEwMzRmMWY1NTI4ODM1NDczN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5hbWVPcmlnaW4oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpOwogCiBwcml2YXRl
OgogICAgIFN0b3JhZ2VNYW5hZ2VyU2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDg2ZWNkZGQ3ZjZlM2IxYWQ3Y2M3YjFkMGJhZGI0M2JkZmMyMzIz
YmIuLjk1MjRlYWJiNzhlZGY0MTUwYzJlMDg2NDdlYjI0ZDU5N2U1NTM2YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0zNzIsMTUgKzM3MiwxNSBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVj
ZWl2ZXImIG1lc3NhZ2VSZWNlaXZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VV
bmlxdWVSZWY8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1
ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0
byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgotICAgIG1lc3NhZ2VSZWNlaXZlci5k
aWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAg
IGJvb2wgd2FzSGFuZGxlZCA9IG1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
KnRoaXMsICpkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgLy8gRklYTUU6IElmIHRoZSBt
ZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBzaG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJv
ci4KICAgICBBU1NFUlQoZGVjb2Rlci0+aXNWYWxpZCgpKTsKIAotICAgIGlmIChyZXBseUVuY29k
ZXIpCisgICAgaWYgKCF3YXNIYW5kbGVkKQogICAgICAgICBzZW5kU3luY1JlcGx5KFdURk1vdmUo
cmVwbHlFbmNvZGVyKSk7CiB9CiAKQEAgLTQxNSwxOCArNDE1LDE4IEBAIHZvaWQgQ29ubmVjdGlv
bjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKICAgICBtX2RpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZSA9IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQor
VW5pcXVlUmVmPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3Qm
IHN5bmNSZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAKICAgICAvLyBF
bmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KICAgICBzeW5jUmVxdWVzdElEID0gKyttX3N5bmNS
ZXF1ZXN0SUQ7Ci0gICAgKmVuY29kZXIgPDwgc3luY1JlcXVlc3RJRDsKKyAgICBlbmNvZGVyLmdl
dCgpIDw8IHN5bmNSZXF1ZXN0SUQ7CiAKICAgICByZXR1cm4gZW5jb2RlcjsKIH0KIAotYm9vbCBD
b25uZWN0aW9uOjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2Rlciwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQorYm9vbCBDb25uZWN0aW9uOjpzZW5k
TWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdAogICAgICAg
ICBib29sIGhhc0RlYWRPYnNlcnZlcnMgPSBmYWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvYnNl
cnZlcldlYWtQdHIgOiBtX21lc3NhZ2VPYnNlcnZlcnMpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBvYnNlcnZlciA9IG9ic2VydmVyV2Vha1B0ci5nZXQoKSkKLSAgICAgICAgICAgICAgICBvYnNl
cnZlci0+d2lsbFNlbmRNZXNzYWdlKCplbmNvZGVyLCBzZW5kT3B0aW9ucyk7CisgICAgICAgICAg
ICAgICAgb2JzZXJ2ZXItPndpbGxTZW5kTWVzc2FnZShlbmNvZGVyLmdldCgpLCBzZW5kT3B0aW9u
cyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaGFzRGVhZE9ic2VydmVycyA9
IHRydWU7CiAgICAgICAgIH0KQEAgLTQ3NSw3ICs0NzUsNyBAQCBib29sIENvbm5lY3Rpb246OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2Vu
ZE9wdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRTeW5jUmVw
bHkoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIpCitib29sIENvbm5lY3Rpb246OnNl
bmRTeW5jUmVwbHkoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikKIHsKICAgICByZXR1cm4g
c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgeyB9KTsKIH0KQEAgLTU2NCw3ICs1NjQsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UoTWVz
c2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBUaW1lb3V0
IHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQorc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRf
dCBzeW5jUmVxdWVzdElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBUaW1lb3V0IHRp
bWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTg3OSwxMCArODc5LDExIEBAIHZvaWQg
Q29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZXMoKQogICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX291dGdvaW5nTWVzc2FnZXNNdXRleCk7CiAgICAgICAgICAgICBpZiAo
bV9vdXRnb2luZ01lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdvaW5nTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAg
ICAgICAgICBtZXNzYWdlID0gbV9vdXRnb2luZ01lc3NhZ2VzLnRha2VGaXJzdCgpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChtZXNzYWdlKTsKIAotICAgICAg
ICBpZiAoIXNlbmRPdXRnb2luZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSkpCisgICAgICAgIGlm
ICghc2VuZE91dGdvaW5nTWVzc2FnZShtYWtlVW5pcXVlUmVmRnJvbU5vbk51bGxVbmlxdWVQdHIo
V1RGTW92ZShtZXNzYWdlKSkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtODk4
LDggKzg5OSw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBz
eW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5j
b2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwogCisg
ICAgYm9vbCB3YXNIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewogICAg
ICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOwpAQCAtOTEyLDcgKzkxNCw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5nbGV0b24oKS5kaXNwYXRjaE1lc3NhZ2VzKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2Rl
ciB0byB0aGUgY2xpZW50LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
KnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHdhc0hhbmRsZWQgPSBtX2Ns
aWVudC5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CiAgICAgfQogCiAgICAgLy8gRklYTUU6IElmIHRoZSBtZXNzYWdlIHdhcyBpbnZhbGlkLCB3ZSBz
aG91bGQgc2VuZCBiYWNrIGEgU3luY01lc3NhZ2VFcnJvci4KQEAgLTkyMiw3ICs5MjQsNyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBBU1NFUlQoZGVjb2Rlci5pc1ZhbGlkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAocmVwbHlFbmNv
ZGVyKQorICAgIGlmICghd2FzSGFuZGxlZCkKICAgICAgICAgc2VuZFN5bmNSZXBseShXVEZNb3Zl
KHJlcGx5RW5jb2RlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMGQ4NWQ4ZDdjZThmNGQxNzVkNGEwNDM0Mjc5YzE1YjBlMzhmYzFmNy4uNGY2YjE4
NGZmNDBkOTkyODhlYjYwNjBhN2M1ODg2YjM3MzZjNGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9PYmpl
Y3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9X
b3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTI3MywxMCAr
Mjc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlv
bnMpOwogICAgIH0KIAotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQs
IHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpOwotICAgIGJvb2wgc2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4pOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+
JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7CisgICAgVW5pcXVlUmVmPEVu
Y29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdlTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgVW5pcXVl
UmVmPEVuY29kZXI+JiYsIFRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zKTsKKyAgICBib29sIHNlbmRTeW5jUmVwbHkoVW5pcXVlUmVmPEVuY29kZXI+JiYp
OwogCiAgICAgdm9pZCB3YWtlVXBSdW5Mb29wKCk7CiAKQEAgLTMzMiw3ICszMzMsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgY2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsKICAgICBib29s
IHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdDsKICAgICB2b2lkIHNlbmRP
dXRnb2luZ01lc3NhZ2VzKCk7Ci0gICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPik7CisgICAgYm9vbCBzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJl
ZjxFbmNvZGVyPiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAgIAogICAg
IC8vIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdGhyZWFkLgpAQCAtNDAxLDcgKzQwMiw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBPdXRnb2luZyBtZXNzYWdlcy4KICAgICBMb2NrIG1fb3V0Z29pbmdN
ZXNzYWdlc011dGV4OwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPj4gbV9vdXRn
b2luZ01lc3NhZ2VzOworICAgIERlcXVlPFVuaXF1ZVJlZjxFbmNvZGVyPj4gbV9vdXRnb2luZ01l
c3NhZ2VzOwogICAgIAogICAgIENvbmRpdGlvbiBtX3dhaXRGb3JNZXNzYWdlQ29uZGl0aW9uOwog
ICAgIExvY2sgbV93YWl0Rm9yTWVzc2FnZU11dGV4OwpAQCAtNTAyLDggKzUwMyw4IEBAIGJvb2wg
Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2Uu
YXJndW1lbnRzKCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5h
cmd1bWVudHMoKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgc2VuZE9wdGlvbnMpOwogfQpAQCAtNTE3LDcgKzUxOCw3IEBAIHVpbnQ2NF90IENvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVy
LCB1aW50CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5j
b2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBhZGRBc3luY1JlcGx5SGFuZGxlcigq
dGhpcywgbGlzdGVuZXJJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEZWNvZGVyKik+KFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoRGVjb2RlciogZGVj
b2RlcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChkZWNvZGVyICYmIGRlY29kZXItPmlzVmFsaWQo
KSkKQEAgLTUyNSw4ICs1MjYsOCBAQCB1aW50NjRfdCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBUOjpjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgfSwgQ29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkKSk7Ci0g
ICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3Vt
ZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKKyAgICBlbmNvZGVyLmdl
dCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNv
ZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIHJldHVybiBsaXN0ZW5lcklEOwogfQpAQCAtNTU2LDcg
KzU1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlCiAgICAgUkVMRUFTRV9BU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCiAgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklE
LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChzZW5kU3luY09wdGlvbnMuY29udGFpbnMoU2Vu
ZFN5bmNPcHRpb246OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZykpIHsKICAgICAg
ICAgZW5jb2Rlci0+c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7CkBAIC01NjQs
NyArNTY1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICB9CiAKICAgICAvLyBFbmNv
ZGUgdGhlIHJlc3Qgb2YgdGhlIGlucHV0IGFyZ3VtZW50cy4KLSAgICAqZW5jb2RlciA8PCBtZXNz
YWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMo
KTsKIAogICAgIC8vIE5vdyBzZW5kIHRoZSBtZXNzYWdlIGFuZCB3YWl0IGZvciBhIHJlcGx5Lgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiByZXBseURlY29kZXIgPSBzZW5kU3luY01lc3Nh
Z2Uoc3luY1JlcXVlc3RJRCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggOTY3MzBkZWJk
MTdiYmZhMWJiNWEyNTc5N2Y5MGZlNjNhNjZlZWZkNC4uZWM5ZThjZmJlNTc1Mjc3OTQ4MjViZmZk
NGY0YWRmYWQ0YjUyNGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KIAogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMTIy
LDcgKzEyMyw3IEBAIHZvaWQgRW5jb2Rlcjo6c2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nKCkKICAgICBtZXNzYWdlRmxhZ3MoKS5hZGQoTWVzc2FnZUZsYWdzOjpVc2VGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcpOwogfQogCi12b2lkIEVuY29kZXI6OndyYXBGb3JUZXN0aW5n
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBvcmlnaW5hbCkKK3ZvaWQgRW5jb2Rlcjo6d3JhcEZv
clRlc3RpbmcoVW5pcXVlUmVmPEVuY29kZXI+JiYgb3JpZ2luYWwpCiB7CiAgICAgQVNTRVJUKGlz
U3luY01lc3NhZ2UoKSk7CiAgICAgQVNTRVJUKCFvcmlnaW5hbC0+aXNTeW5jTWVzc2FnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCA3MmViMzNkOTAxNjA2ZDI4OWM3
MGQ4YzEzYmRjNDM3ZWZhM2E2ZTcxLi41YWFkZWNjNzI3MWU2NTFlN2RiMDIzMTlhZjc1MTM0NjFi
MDdjNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTU2LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgd3JhcEZvclRlc3Rpbmcoc3RkOjp1
bmlxdWVfcHRyPEVuY29kZXI+KTsKKyAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKFVuaXF1ZVJlZjxF
bmNvZGVyPiYmKTsKIAogICAgIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA5Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUy
ODliYWYwNTNmMDk5NDg0Li43NTE1OTM4ZDQyZGUzNjU1NDUwZGIwNGQyZmUyMDlmNWRlZjAxYTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xMzQs
MzUgKzEzNCwzNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdAogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KLXZvaWQgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQor
Ym9vbCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVj
dCwgTUYgZnVuY3Rpb24pCiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBl
bmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1
bWVudHM7CiAgICAgaWYgKCFhcmd1bWVudHMpIHsKICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxp
ZCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbcmVwbHlFbmNv
ZGVyID0gV1RGTW92ZShyZXBseUVuY29kZXIpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0
aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKICAgICAgICAgVDo6c2VuZChXVEZNb3Zl
KHJlcGx5RW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CiAg
ICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Ci12b2lkIGhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
ciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK2Jvb2wgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3Vz
V2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIs
IFVuaXF1ZVJlZjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQogewogICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1l
bnRzPjo6VHlwZT4gYXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOwogICAgIGlm
ICghYXJndW1lbnRzKSB7CiAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIHR5cGVuYW1l
IFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtyZXBseUVuY29kZXIgPSBXVEZN
b3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0
byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBUOjpzZW5kKFdURk1vdmUocmVwbHlFbmNv
ZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKICAgICBjYWxsTWVt
YmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOworICAgIHJldHVybiB0cnVlOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KQEAgLTIwNSw3
ICsyMDcsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IHsgW2xpc3RlbmVySUQgPSAqbGlzdGVu
ZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBs
aXN0ZW5lcklEKTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNv
bm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9LCBUOjpjYWxsYmFja1RocmVhZCB9OwogICAgIGNh
bGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CkBAIC0yMjIsNyArMjI0LDcgQEAgdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2xpc3RlbmVySUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSwgY29u
bmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6YXN5bmNNZXNz
YWdlUmVwbHlOYW1lKCksIGxpc3RlbmVySUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlUmVmPEVuY29kZXI+KFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCBsaXN0ZW5lcklE
KTsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24p
LCBhcmdzLi4uKTsKICAgICB9OwogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBX
VEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBm
dW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
UmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5o
CmluZGV4IDJiYTIwODE5MmExZjQ2YWRkOTY4MDJjOGUxMDQ3YjAyMWQ2NTNlOWUuLmI4MmZlZjIz
YTEwMmQ5MzI0Mjg2NmY0MmQ2ZWY2MTljZDA1NjhhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCkBAIC00Niw5ICs0NiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYsIERlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4mKQorICAgIHZpcnR1YWwgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29u
bmVjdGlvbiYsIERlY29kZXImLCBVbmlxdWVSZWY8RW5jb2Rlcj4mKQogICAgIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZXJNYXAuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
TWFwLmNwcAppbmRleCA4ODBmMzZhNDFlZTllYjkxYWZkOWMwZDkxOTRiMzcwYWRjNjVmY2JlLi5k
ODgwZTkwYzViYzUyNzU2MDM4NTExNGY2OTcxMjcyYTlkZmFmZTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAKQEAgLTEzMywxOSAr
MTMzLDE1IEBAIGJvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaE1lc3NhZ2UoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIE1lc3NhZ2VSZWNlaXZlck1hcDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4m
IHJlcGx5RW5jb2RlcikKK2Jvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGlmIChhdXRvIG1lc3NhZ2VSZWNlaXZlciA9
IG1fZ2xvYmFsTWVzc2FnZVJlY2VpdmVycy5nZXQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpKSB7CiAgICAgICAgIEFTU0VSVCghZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwotCi0gICAg
ICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBtZXNzYWdlUmVjZWl2
ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKSB7Ci0gICAgICAgIG1l
c3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBpZiAoYXV0
byBtZXNzYWdlUmVjZWl2ZXIgPSBtX21lc3NhZ2VSZWNlaXZlcnMuZ2V0KHN0ZDo6bWFrZV9wYWly
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQorICAgICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZl
ck1hcC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgK
aW5kZXggNWExM2RlMmMxZTdhMThhZGE5YjI4NDkwZjU1Mjg3NWQ3YTRmYzYxNy4uNjg3NWIzNDFj
ZjgwMmQ5ZGRhN2NhZTEwOTZhNGUwZTE4YmIwZWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoQ29u
bmVjdGlvbiYsIERlY29kZXImKTsKLSAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoQ29ubmVj
dGlvbiYsIERlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4mKTsKKyAgICBib29sIGRp
c3BhdGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYsIERlY29kZXImLCBVbmlxdWVSZWY8RW5jb2Rl
cj4mKTsKIAogcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIHJlY2VpdmVycyB0aGF0IGRvbid0IHJl
cXVpcmUgYSBkZXN0aW5hdGlvbiBJRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVNlbmRlci5jcHAKaW5kZXggYjFhODNiYjQ0OTI0MmY5YTY3Y2JhYjBlMWNkNWI1OTJmZGMx
MzY4OC4uZGMzZDQ5YzQ2OGE5OThlYmZmZGJhYzA2OTFhM2YxMmFkNzVjOWNjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAgbmFtZXNwYWNlIElQQyB7CiAKIE1lc3NhZ2VTZW5kZXI6On5NZXNzYWdlU2VuZGVyKCkgPSBk
ZWZhdWx0OwogCi1ib29sIE1lc3NhZ2VTZW5kZXI6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9w
dGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwg
dWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBNZXNzYWdlU2VuZGVyOjpzZW5kTWVz
c2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIGF1dG8q
IGNvbm5lY3Rpb24gPSBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpOwogICAgIEFTU0VSVChjb25u
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRl
eCBmMGFiYTUxNDFhYmY4Y2Y4NGZiMjU5MDU2NDI1YmY3ZTdiYTI2ODllLi5iZDcyODJiZDVmMTFm
NmFlYWQ1ODg1N2Y3NzI2YzE1OTUxNjk4ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVNlbmRlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogCkBAIC00Myw4ICs0NCw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEi
KTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7Ci0gICAgICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRz
KCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVTo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgZW5jb2Rlci5nZXQoKSA8PCBtZXNzYWdlLmFy
Z3VtZW50cygpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUo
ZW5jb2RlciksIHNlbmRPcHRpb25zKTsKICAgICB9CkBAIC05MCwxMCArOTEsMTAgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdl
RXhwZWN0ZWQpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNv
ZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBt
YWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAg
ICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQo
KTsKLSAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKLSAgICAgICAgKmVuY29kZXIgPDwg
bWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICAgICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklE
OworICAgICAgICBlbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgICAg
IHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2RlciogZGVj
b2RlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZGVjb2RlciAmJiBkZWNvZGVyLT5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMDMsNyArMTA0LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbGlzdGVuZXJJRDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4sIE9wdGlvbmFs
PHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0
X3Q+PiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2UoVW5p
cXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpw
YWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYg
PSBXVEY6Om51bGxvcHQpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgQ29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggNDk1YWZmZDAzYzZm
NTRkNzI4OWZjMTAxZDZkNmRkODg2ZTNiNzcwZC4uMWRkYWVjNDYyZWJkY2YyYTY4NTViOTRhOWJm
NjcxYWQ0YmZjNWEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMTAwLDggKzEwMCw4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCi0gICAgYXV0
byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5
bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOwotICAgICgqZW5jb2RlciA8PCAuLi4gPDwg
YXJndW1lbnRzKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7Cisg
ICAgKGVuY29kZXIuZ2V0KCkgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CiAgICAgbV9jb25uZWN0aW9u
LT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggMDU5ZTgy
OTM5NmE1MjQ5ZjA4NTMzNDdlYmMwYjNlYmJlZDM0NjQ4Ni4uOGQ5Y2RlMDhmNDY3MTQxYTkwZDhl
YWY5ZGQ3ODViNzkwMzhkNThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMjE5LDggKzIxOSw4IEBAIGJvb2wgQ29u
bmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAK
ICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBh
IHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwg
MCk7Ci0gICAgICAgICplbmNvZGVyIDw8IE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTUFLRV9TRU5EKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxF
bmNvZGVyPihNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb24sIDApOworICAgICAgICBl
bmNvZGVyLmdldCgpIDw8IE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFL
RV9TRU5EKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwogCkBAIC0yOTAsNyAr
MjkwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2Vz
KCkgY29uc3QKICAgICByZXR1cm4gIW1fcGVuZGluZ091dGdvaW5nTWFjaE1lc3NhZ2UgJiYgIW1f
aXNJbml0aWFsaXppbmdTZW5kU291cmNlOwogfQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRPdXRn
b2luZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIpCitib29sIENvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYgZW5jb2RlcikK
IHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ091dGdvaW5nTWFjaE1lc3NhZ2UgJiYgIW1faXNJbml0
aWFsaXppbmdTZW5kU291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA3YjA0YzA1NDNhOWEwODNjMDBiNDFlNTY3
NmU5ZTAyNTI5ODU5NWQ4Li5lZmNkNjYzZjg0MTY0ZTJmOTZhNjliM2ZiY2FhZDg1ODFlY2Q3Yzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtNDI0LDExICs0MjQsMTEgQEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNh
blNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29uc3QKICAgICByZXR1cm4gIW1fcGVuZGluZ091dHB1
dE1lc3NhZ2U7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdv
aW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewogICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihNZXNzYWdlSW5mbykgKyBhdHRhY2htZW50TWF4QW1vdW50ICogc2l6ZW9m
KHNpemVfdCkgPD0gbWVzc2FnZU1heFNpemUsIEF0dGFjaG1lbnRzRml0VG9NZXNzYWdlSW5saW5l
KTsKIAotICAgIFVuaXhNZXNzYWdlIG91dHB1dE1lc3NhZ2UoKmVuY29kZXIpOworICAgIFVuaXhN
ZXNzYWdlIG91dHB1dE1lc3NhZ2UoZW5jb2Rlci5nZXQoKSk7CiAgICAgaWYgKG91dHB1dE1lc3Nh
Z2UuYXR0YWNobWVudHMoKS5zaXplKCkgPiAoYXR0YWNobWVudE1heEFtb3VudCAtIDEpKSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXgg
MTlmYzQyZWVhMWM1NjdhZDFjMWIxZDZmZWJlN2Y1Mzg3ZTI1ZTAxZi4uMDRhZjhkYWI5NjdjMGY0
NTI2YjA3NWM0NGFmMGVjODgwODZmYzM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6cGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0CiAgICAgcmV0
dXJuICFtX3BlbmRpbmdXcml0ZUVuY29kZXI7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6c2VuZE91
dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVy
KQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKIApAQCAtMjgxLDcgKzI4
MSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8RW5jb2Rlcj4gZW5jb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2Ug
cHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCi0gICAgKmVuY29kZXIgPDwgMDsKKyAgICBlbmNvZGVy
LmdldCgpIDw8IDA7CiAKICAgICAvLyBXcml0ZSB0aGUgb3V0Z29pbmcgbWVzc2FnZS4KIApAQCAt
MzA1LDcgKzMwNSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKIAogICAgIC8vIFRoZSBtZXNzYWdlIHdpbGwg
YmUgc2VudCBzb29uLiBIb2xkIG9udG8gdGhlIGVuY29kZXIgc28gdGhhdCBpdCB3b24ndCBiZSBk
ZXN0cm95ZWQKICAgICAvLyBiZWZvcmUgdGhlIHdyaXRlIGNvbXBsZXRlcy4KLSAgICBtX3BlbmRp
bmdXcml0ZUVuY29kZXIgPSBXVEZNb3ZlKGVuY29kZXIpOworICAgIG1fcGVuZGluZ1dyaXRlRW5j
b2RlciA9IGVuY29kZXIubW92ZVRvVW5pcXVlUHRyKCk7CiAKICAgICAvLyBXZSBjYW4gb25seSBz
ZW5kIG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNlZSBjb21tZW50IGluIHBs
YXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApp
bmRleCBjN2E3MDUzY2JkMjZkMjA0NTRjMDQyYzZhY2UxNmNiNTI1MzBmNDNkLi4zY2Y1ZTFmOTdi
ODdhNGJkOTJhMzY2YTRjYzg5MDI1MTczNDAxOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3koKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdp
bkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpOwogCiAgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDY3OTIyY2Q2ZTIzNGU3NzFkMjExZGVkZmEzNzkxZGYyZWY5MmNjOWMuLmNiZjMzZjgyMDJiMjdl
NGVmOGNmODQ3Y2ZiNjFkNjBiNGU3ZmY5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTQ1LDI4ICsxNDUsMjQg
QEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICBwbHVnaW5Db250cm9sbGVyUHJveHktPmRp
ZFJlY2VpdmVQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBs
eUVuY29kZXIpCiB7CiAgICAgU2V0Rm9yU2NvcGU8SVBDOjpDb25uZWN0aW9uKj4gY3VycmVudENv
bm5lY3Rpb25DaGFuZ2UoY3VycmVudENvbm5lY3Rpb24sICZjb25uZWN0aW9uKTsKIAogICAgIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKTsKIAotICAgIGlm
ICghZGVzdGluYXRpb25JRCkgewotICAgICAgICBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGlmICghZGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJu
IGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKLSAgICAgICAgbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAg
ICAgICByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICBQbHVnaW5Db250cm9sbGVy
UHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1Z2luQ29udHJvbGxlcnMuZ2V0KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKTsKICAgICBpZiAoIXBsdWdpbkNvbnRyb2xsZXJQcm94eSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQbHVnaW5Db250
cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciBwcm90ZWN0b3IocGx1Z2luQ29udHJv
bGxlclByb3h5LT5hc1BsdWdpbkNvbnRyb2xsZXIoKSk7Ci0gICAgcGx1Z2luQ29udHJvbGxlclBy
b3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1cm4gcGx1Z2luQ29udHJvbGxlclBy
b3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggMmViNzZhNjkxYmViZTE3Y2Q4
YjA2NzQ4ZGE0Yzc1NzFmOTdlOTc0ZC4uZDE3NjZmZDRhMTI1M2FkYTFkNWQyMjdmMmE3OTc1YmJh
MGJmNTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nl
c3NDb25uZWN0aW9uLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4K
ICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5j
aHJvbm91c2x5KGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGVz
dHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0Ny
ZWF0aW9uSW5jb21wbGV0ZSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95
UGx1Z2luRGVsYXllZFJlcGx5JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggMTc0ODBhYjYyZTcyMWU2YWE4MDQyNjJhM2M3NzlhYjlhZjljMTcxMi4uMDMz
NWIyYmQ1NWYwMTNjZjNmMzM5YzI0NjJlNWE0ZThlMjY4NzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTIsNyArMjEyLDcgQEAgZGVmIG1lc3NhZ2Vf
dG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2Fs
bGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0
aW9uVGhyZWFkO1xuJykKICAgICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJP
Tk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUp
KSBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYs
IElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSBjb21wbGV0aW9uX2hhbmRs
ZXJfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQpAQCAtNTU1
LDEwICs1NTUsOCBAQCBkZWYgYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
Z2UpOgogICAgICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb25fYXJncy5pbnNlcnQoMCwgJ2Nvbm5l
Y3Rpb24nKQogCiAgICAgcmVzdWx0ID0gW10KLSAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAo
cmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAg
IElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwg
cmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVuY3Rpb25f
YXJncykpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKLSAgICByZXN1
bHQuYXBwZW5kKCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpXG4nICUgKHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4g
SVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCBy
ZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihkaXNwYXRjaF9mdW5jdGlvbl9h
cmdzKSkpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCks
IG1lc3NhZ2UuY29uZGl0aW9uKQogCiAKQEAgLTU3OSwxMCArNTc3LDggQEAgZGVmIHN5bmNfbWVz
c2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICBtYXliZV9yZXBseV9l
bmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10KLSAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVz
OjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1
bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMs
IHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNz
YWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5
YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQot
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKLSAgICByZXN1bHQuYXBwZW5k
KCcgICAgfVxuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpXG4nICUgKHJlY2VpdmVyLm5hbWUsIG1l
c3NhZ2UubmFtZSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gSVBDOjolczxN
ZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hf
ZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYg
d2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXliZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1
bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRp
dGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQogCiAKQEAgLTkwNSwxMSAr
OTAxLDExIEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8
JyArIHJlcGx5X3R5cGUoeC50eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzXSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1c
blxuJykKIAotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbicgJSAobWVzc2FnZS5uYW1lKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQg
JXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFtZSkpCiAgICAgICAgICAgICBpZiBsZW4oc2Vu
ZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlICcs
ICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkpCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpXG57XG4nKQotICAgICAgICAgICAgcmVzdWx0ICs9IFsnICAg
ICplbmNvZGVyIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdCisgICAgICAgICAgICByZXN1bHQgKz0gWycgICAgZW5jb2Rlci5nZXQoKSA8PCAlcztc
bicgJSB4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnXG4nKQpAQCAtOTY4LDE4ICs5NjQsMTkgQEAgZGVmIGdlbmVyYXRl
X21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAKICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpOgogICAgICAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRp
ZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ2Jvb2wgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1l
IGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxz
ZSAnJykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgIGlmIG5vdCByZWNl
aXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6CiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7XG4nKQogICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQo
cmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCiAgICAgICAg
IGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRjaFN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpXG4nKQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gdHJ1ZTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHJldHVybiBmYWxzZTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKICAgICBy
ZXN1bHQuYXBwZW5kKCdcbn0gLy8gbmFtZXNwYWNlIFdlYktpdFxuJykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdl
UmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggOTYyMzIwODM3MGQ0YjAyZjcxNTRk
ZjE0NGU2MThhYzE5ZTNkZWYyMy4uMWZlM2FiMDNjZjVkNDgwZWEwODNhODk1MzQwZmZkZTYwYzM4
MzI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAg
LTQxLDE2ICs0MSwxMiBAQCB2b2lkIFRlc3RXaXRoSWZNZXNzYWdlOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjbwogewogICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpM
b2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNz
YWdlOjpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6bmFt
ZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjps
b2FkVVJMKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3Nh
Z2U6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aElmTWVzc2FnZTo6bG9hZFVSTCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6Om5hbWUoKSkKKyAgICAgICAg
cmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6Okxv
YWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aElmTWVzc2FnZTo6bG9hZFVSTCk7CiAjZW5k
aWYKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29k
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aEltYWdlRGF0YU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBh
ODZjNDE1ZmZjMzIxZWQ4MGZhMjdiZmVjNGZhOTRmYzcwZjEyMzY2Li5hNDk2MjlkMzM0ZDJkMWFm
NTE4NTNlYTI3ZmFmN2NiNDA0NjNhNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVz
c2FnZVJlY2VpdmVyLmNwcApAQCAtMzgsMjYgKzM4LDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJbWFnZURhdGE6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpT
ZW5kSW1hZ2VEYXRhPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJbWFnZURhdGE6OnNlbmRJbWFn
ZURhdGEpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhOjpuYW1l
KCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
SW1hZ2VEYXRhOjpTZW5kSW1hZ2VEYXRhPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJbWFnZURh
dGE6OnNlbmRJbWFnZURhdGEpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgVGVzdFdpdGhJbWFnZURhdGE6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVzdFdpdGhJbWFnZURhdGE6OmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAg
ICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdl
RGF0YTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE+KGRlY29kZXIsICpyZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aEltYWdlRGF0YTo6cmVjZWl2ZUltYWdlRGF0YSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhJbWFnZURhdGE6OlJlY2VpdmVJbWFnZURhdGE6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlJlY2Vp
dmVJbWFnZURhdGE+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aEltYWdl
RGF0YTo6cmVjZWl2ZUltYWdlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwog
ICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVy
KTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1l
c3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggMWM4YmZhZDVlZTNmZmNiODJhY2YwMWUzMzljNWNiMDQw
MzdkNTZlZi4uNmViNDY0NTcyMTU5ZGY4ODc3MmEwODA4ODhlMjdjZTE2OTgwZTAzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC02
MywxMyArNjMsMTMgQEAgbmFtZXNwYWNlIE1lc3NhZ2VzIHsKIAogbmFtZXNwYWNlIFRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXIgewogCi12b2lkIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhh
bmRsZSkKK3ZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQogewotICAgICplbmNv
ZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBjb25uZWN0aW9u
SGFuZGxlOwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsK
IH0KIAotdm9pZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQordm9p
ZCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYg
ZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIGNvbm5lY3Rpb24u
c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KQEAgLTgzLDEyMiArODMsNzkgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2Vp
dmVUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJM
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFVSTCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFVSTDo6bmFtZSgpKQorICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFVS
TCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nOjpu
YW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6TG9hZFNvbWV0aGluZzo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZyk7CiAj
ZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJ
VElPTiB8fCBTT01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2
ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6VG91Y2hFdmVudDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50PihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dG91Y2hFdmVudCk7CiAjZW5kaWYKICNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudDo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjphZGRFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6QWRkRXZlbnQ6
Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjphZGRFdmVudCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRo
aW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRTb21l
dGhpbmdFbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRo
aW5nRWxzZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmxvYWRTb21ldGhpbmdFbHNlKTsKICNlbmRp
ZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpDbG9zZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpjbG9zZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlByZWZlcmVuY2Vz
RGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6cHJlZmVy
ZW5jZXNEaWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNlbmRE
b3VibGVBbmRGbG9hdDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2VuZERvdWJsZUFuZEZsb2F0KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50czo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZW5kSW50
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJp
YnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlbXBsYXRlVGVzdDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZXRW
aWRlb0xheWVySUQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhp
cywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6Q2xvc2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpjbG9zZSk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UHJlZmVyZW5jZXNEaWRDaGFu
Z2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNlbmREb3VibGVB
bmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNlbmREb3Vi
bGVBbmRGbG9hdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2VuZEludHM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2Vu
ZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZW5kSW50cyk7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0
OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OnRlbXBsYXRlVGVzdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2V0VmlkZW9MYXll
cklEOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnNldFZpZGVvTGF5ZXJJRCk7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKTsKICNlbmRpZgogI2lmIEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVjYXRlZE9wZXJh
dGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRlcHJlY2F0ZWRP
cGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRlcHJlY2F0ZWRP
cGVyYXRpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEVYUEVSSU1FTlRBTF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZXhwZXJpbWVudGFsT3BlcmF0
aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpFeHBlcmltZW50YWxPcGVy
YXRpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsK
ICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
ZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVN5bmNUZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkg
ewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OkNyZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OmNyZWF0ZVBsdWdpbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5KYXZhU2Ny
aXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpydW5KYXZhU2NyaXB0QWxlcnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OkdldFBsdWdpbnM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpbnM+KGRlY29kZXIsICpy
ZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVnaW5zKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmlidXRlcz4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNyZWF0ZVBsdWdpbj4oZGVj
b2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNyZWF0
ZVBsdWdpbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhMZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnJ1bkphdmFTY3JpcHRBbGVydCk7CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0
UGx1Z2luczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5zPihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Z2V0UGx1Z2lucyk7CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Z2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24pOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25u
ZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJl
dEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lS
ZWNlaXZlcjo6aW50ZXJwcmV0S2V5RXZlbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkludGVycHJldEtl
eUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6aW50ZXJwcmV0S2V5RXZlbnQpOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVw
bHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVzc2FnZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1l
c3NhZ2VzLmgKaW5kZXggM2JlMGEwYjBlOWM3OGE0Mjk0Y2U2ZjI5YjY2ZDJhMjVmYmRkMDkzNi4u
YWNhYzI4MzVjNmM0MDViNDI2NmQ4OGM1NjcwMDY3ZDA5ZWE5NGM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2FjeVJlY2VpdmVyTWVz
c2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVk
UmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0
aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVj
dGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKTsK
KyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxl
KTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUm
PjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9u
OjpIYW5kbGU+OwogICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCkKQEAgLTM4Myw3ICszODMsNyBAQCBwdWJsaWM6CiAKICAgICB1
c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
KyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwogICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAK
aW5kZXggNzIxMDNjNDc0NDlkNmNjNTA3MWUwMWIwMjRhZGQ1MWRkMmI0OTU1OC4uMDY0NmZlOTli
NmYyMzViMGM1MDdkOTQ3YWEyMWEzMTY4MTNiNzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFw
aG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1LDI2ICszNSwyMyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFw
aG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU2VtYXBob3JlOjpz
ZW5kU2VtYXBob3JlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9y
ZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9yZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
U2VtYXBob3JlOjpzZW5kU2VtYXBob3JlKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFRlc3RXaXRoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFRlc3RXaXRoU2VtYXBob3Jl
OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIp
CiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2Vp
dmVTZW1hcGhvcmU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlF
bmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpuYW1lKCkpCisgICAg
ICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3Jl
OjpSZWNlaXZlU2VtYXBob3JlPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5VU0VEX1BBUkFNKHJlcGx5
RW5jb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VSZWNlaXZlci5jcHAKaW5kZXggYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEy
NzMxOTg3ZjA1NC4uZTQ5MjM4MDllNDFmYjNjNmFmMjZjNjkzMDViMDJmYjZmY2E2MzhmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1
LDEwICszNSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUoKSkgewotICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVm
ZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZm
ZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpu
YW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOwogICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCmluZGV4IDgzOTg4
NTVhZDU2ZTk1MTk5N2M5ZDJhYjNmODg4MDk0Yzg4OTIzMjYuLmUwMDdlYzRkNjhlYmNmZTQ0N2Q4
NDc3MDEwOTI1MWU0NTI5OWY1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwCkBAIC0zNSwxNCArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgVGVz
dFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2Vu
ZFN0cmluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVh
bTo6c2VuZFN0cmluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5j
aHJvbml6ZWQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25p
emVkOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOwogICAgIFVOVVNFRF9QQVJB
TShkZWNvZGVyKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VSZWNlaXZlci5j
cHAKaW5kZXggOTg5ZTFkNDEwM2MwZDYwNDJkNDQ4YTk0OGYyZWE0ZmEzZjcyNzFhZS4uMTUxMDQ3
ZWFhNmUyZWRkMDc2YWFiYjQ3MDZhOTI2ZTlhMWQ3NTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtNTksOSArNTksOSBAQCB2b2lkIFRlc3RB
c3luY01lc3NhZ2U6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3Qm
Jik+JiYgY29tcGxldAogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXN5bmNSZXBseUVycm9y
PHVpbnQ2NF90Pjo6Y3JlYXRlKCkpOwogfQogCi12b2lkIFRlc3RBc3luY01lc3NhZ2U6OnNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlc3VsdCkKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6c2Vu
ZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQogewotICAgICplbmNvZGVyIDw8IHJlc3VsdDsKKyAg
ICBlbmNvZGVyLmdldCgpIDw8IHJlc3VsdDsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHko
V1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY28KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHM6OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNv
ZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgY29ubmVjdGlvbi5zZW5k
U3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9p
ZCBUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzOjpjYW5jZWxSZXBseShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGIKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVw
bHlFcnJvcjxib29sPjo6Y3JlYXRlKCksIElQQzo6QXN5bmNSZXBseUVycm9yPHVpbnQ2NF90Pjo6
Y3JlYXRlKCkpOwogfQogCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVu
dHM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpCit2b2lkIFRl
c3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OnNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxh
ZywgdWludDY0X3QgdmFsdWUpCiB7Ci0gICAgKmVuY29kZXIgPDwgZmxhZzsKLSAgICAqZW5jb2Rl
ciA8PCB2YWx1ZTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IGZsYWc7CisgICAgZW5jb2Rlci5nZXQo
KSA8PCB2YWx1ZTsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVy
KSk7CiB9CiAKQEAgLTE0MCwyMyArMTQwLDIzIEBAIHZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhD
b25uZWN0aW9uOjpjYW5jZWxSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wmJik+CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3luY1JlcGx5RXJyb3I8Ym9vbD46OmNyZWF0ZSgp
KTsKIH0KIAotdm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246OnNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIGJvb2wgZmxhZykKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOjpz
ZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBib29sIGZsYWcpCiB7Ci0gICAgKmVuY29kZXIgPDwgZmxhZzsKKyAgICBlbmNv
ZGVyLmdldCgpIDw8IGZsYWc7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUo
ZW5jb2RlcikpOwogfQogCiAjZW5kaWYKIAotdm9pZCBUZXN0U3luY01lc3NhZ2U6OnNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIHVpbnQ4X3QgcmVwbHkpCit2b2lkIFRlc3RTeW5jTWVzc2FnZTo6c2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgdWludDhfdCByZXBseSkKIHsKLSAgICAqZW5jb2RlciA8PCByZXBseTsKKyAgICBlbmNvZGVy
LmdldCgpIDw8IHJlcGx5OwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKIH0KIAotdm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5
KQordm9pZCBUZXN0U3luY2hyb25vdXNNZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBPcHRpb25h
bDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KQogewotICAgICplbmNvZGVy
IDw8IG9wdGlvbmFsUmVwbHk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBvcHRpb25hbFJlcGx5Owog
ICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIApAQCAt
MTY5LDUyICsxNjksMzkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFRlc3RXaXRoU3VwZXJj
bGFzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhTdXBlcmNsYXNzOjpMb2FkVVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aFN1cGVyY2xhc3M6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJj
bGFzczo6TG9hZFVSTDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aFN1cGVyY2xhc3M6OmxvYWRVUkwpOwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNs
YXNzOjpUZXN0QXN5bmNNZXNzYWdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmM8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5jTWVzc2FnZT4o
Y29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdEFzeW5j
TWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdl
OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdl
czo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNzYWdlKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5v
QXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmM8TWVz
c2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50
cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdEFz
eW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNz
OjpUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzOjpuYW1lKCkpCisgICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpU
ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdl
V2l0aE11bHRpcGxlQXJndW1lbnRzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmM8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5jTWVzc2FnZVdp
dGhNdWx0aXBsZUFyZ3VtZW50cz4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
U3VwZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50cyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJn
dW1lbnRzOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luYzxN
ZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxl
QXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNz
Ojp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzKTsKICNlbmRpZgogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlv
bjxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5l
Y3Rpb24+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRl
c3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNs
YXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbj4oY29ubmVjdGlv
biwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdp
dGhDb25uZWN0aW9uKTsKICNlbmRpZgogICAgIFdlYlBhZ2VCYXNlOjpkaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBUZXN0V2l0aFN1cGVyY2xhc3M6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
cikKK2Jvb2wgVGVzdFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAg
ICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNs
YXNzOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlciwg
dGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhTdXBl
cmNsYXNzOjpUZXN0U3luY2hyb25vdXNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RTeW5jaHJvbm91c01lc3Nh
Z2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNNZXNzYWdlOjpuYW1l
KCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdl
czo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNNZXNz
YWdlKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVy
Y2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNocm9ub3VzTWVzc2Fn
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNv
ZGVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN1
cGVyY2xhc3NNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCmluZGV4IGJjNzNjOThjMzA4NjUwZjc2NjFhZjc4
MDE3ZWI2Njc4ODE0MDdmNDQuLmMxYWU4ZDVmYTMxOGQ0NTYzZTkxMDg2Y2NhNTNlYTBmY2YzM2Vm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdXBlcmNsYXNzTWVzc2FnZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlUmVwbHk7IH0KICAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZUFz
eW5jUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQ7Ci0gICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
LCB1aW50NjRfdCByZXN1bHQpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcmVzdWx0KTsKICAgICB1c2lu
ZyBSZXBseSA9IHN0ZDo6dHVwbGU8dWludDY0X3QmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8dWludDY0X3Q+OwogICAgIGV4cGxpY2l0IFRlc3RBc3luY01lc3NhZ2Uo
V2ViS2l0OjpUZXN0VHdvU3RhdGVFbnVtIHR3b1N0YXRlRW51bSkKQEAgLTExMSw3ICsxMTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlO
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNSZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkg
PSBUZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzQXN5bmNSZXBseTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgc3RhdGlj
IHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
ICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8PjsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzUmVwbHk7
IH0KICAgICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFy
Z3VtZW50c0FzeW5jUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhy
ZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVh
ZDsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYs
IElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZywgdWludDY0X3QgdmFsdWUpOworICAgIHN0YXRp
YyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwg
Ym9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxl
PGJvb2wmLCB1aW50NjRfdCY+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxib29sLCB1aW50NjRfdD47CiAgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25z
dApAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uUmVwbHk7IH0KICAg
ICB1c2luZyBBc3luY1JlcGx5ID0gVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uQXN5bmNS
ZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwotICAgIHN0YXRp
YyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0
aW9uJiwgYm9vbCBmbGFnKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGJvb2wgZmxhZyk7CiAgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPGJvb2wmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Ym9vbD47CiAgICAgZXhwbGljaXQgVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKGNv
bnN0IGludCYgdmFsdWUpCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcg
RGVsYXllZFJlcGx5ID0gVGVzdFN5bmNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
VGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50OF90IHJlcGx5
KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIHVpbnQ4X3QgcmVwbHkpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTx1aW50OF90Jj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPHVpbnQ4
X3Q+OwogICAgIGV4cGxpY2l0IFRlc3RTeW5jTWVzc2FnZSh1aW50MzJfdCBwYXJhbSkKQEAgLTIx
Niw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3lu
Y2hyb25vdXNNZXNzYWdlRGVsYXllZFJlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
YWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1
Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBPcHRpb25hbDxXZWJLaXQ6OlRlc3RD
bGFzc05hbWU+JiBvcHRpb25hbFJlcGx5KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdlYktp
dDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOwogICAgIHVzaW5nIFJlcGx5ID0gc3Rk
Ojp0dXBsZTxPcHRpb25hbDxXZWJLaXQ6OlRlc3RDbGFzc05hbWU+Jj47CiAgICAgdXNpbmcgUmVw
bHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4+
OwogICAgIGV4cGxpY2l0IFRlc3RTeW5jaHJvbm91c01lc3NhZ2UoYm9vbCB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCA3YmU0
MTJmYzk5OWY1NzI0Mjg3NDJlZjE4ZjJkM2M5NTIwMmU1NTVlLi4zODU2ZDM2OTM4YTI1MDE3YjY2
M2I2ZTQ0MjFmNWJhMWRiNThmOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VSZWNlaXZlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0
ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKIAogbmFtZXNwYWNlIFRlc3RXaXRob3V0QXR0cmlidXRlcyB7CiAKLXZvaWQgR2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVj
dGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxlKQordm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpCiB7Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKKyAgICBl
bmNvZGVyLmdldCgpIDw8IGNvbm5lY3Rpb25IYW5kbGU7CiAgICAgY29ubmVjdGlvbi5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0
ZXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQo
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQpAQCAtODMsMTIyICs4Myw3OSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFVS
TD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFVSTCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkVVJMOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFVSTCk7
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmc6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6TG9hZFNvbWV0aGluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6bG9hZFNvbWV0aGluZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpM
b2FkU29tZXRoaW5nOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZz4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZyk7CiAjZW5kaWYKICNp
ZiAoRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBT
T01FX09USEVSX01FU1NBR0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRvdWNoRXZlbnQ6Om5hbWUo
KSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRl
czo6dG91Y2hFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2
ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VG91Y2hFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6dG91Y2hFdmVudCk7CiAjZW5kaWYKICNpZiAoRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiAmJiBTT01FX09USEVSX01FU1NB
R0VfQ09ORElUSU9OKSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjphZGRFdmVudCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpBZGRFdmVudDo6bmFtZSgpKQorICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkFkZEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjphZGRFdmVu
dCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0
aGluZ0Vsc2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmxvYWRTb21ldGhpbmdFbHNlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6TG9hZFNvbWV0aGluZ0Vsc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmxvYWRTb21ldGhpbmdFbHNlKTsKICNlbmRpZgotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3NlOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpjbG9zZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmREb3Vi
bGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2VuZERv
dWJsZUFuZEZsb2F0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRz
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpzZW5kSW50cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0
UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRl
cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVtcGxhdGVUZXN0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0
QXR0cmlidXRlczo6dGVtcGxhdGVUZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZXRWaWRlb0xheWVySUQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNldFZpZGVvTGF5ZXJJRCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb246Om5h
bWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik7CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpDbG9zZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNsb3NlPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpjbG9zZSk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpQcmVmZXJlbmNlc0RpZENoYW5n
ZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxl
TWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kRG91YmxlQW5kRmxv
YXQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmREb3VibGVBbmRG
bG9hdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpTZW5kSW50czo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpzZW5kSW50cyk7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZW1wbGF0ZVRlc3Q6Om5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OnRlbXBsYXRlVGVzdCk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpTZXRWaWRlb0xheWVySUQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OnNldFZpZGVvTGF5ZXJJRCk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlk
Q3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKTsKICNlbmRpZgogI2lm
IEVOQUJMRShERVBSRUNBVEVEX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEZXByZWNhdGVkT3BlcmF0aW9u
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICBy
ZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkRlcHJlY2F0ZWRPcGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmRlcHJlY2F0ZWRPcGVyYXRpb24pOwogI2VuZGlmCiAjaWYgRU5BQkxFKEVYUEVSSU1FTlRB
TF9GRUFUVVJFKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRob3V0QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkV4cGVyaW1lbnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmli
dXRlczo6ZXhwZXJpbWVudGFsT3BlcmF0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkV4cGVyaW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkV4cGVyaW1l
bnRhbE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZXhw
ZXJpbWVudGFsT3BlcmF0aW9uKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFRlc3RXaXRob3V0
QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwot
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdpbj4oZGVjb2Rl
ciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6Y3JlYXRlUGx1
Z2luKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVy
dDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpSdW5KYXZhU2NyaXB0QWxlcnQ+KGRlY29kZXIsICpyZXBseUVuY29k
ZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5zOjpuYW1lKCkpIHsKLSAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OkdldFBsdWdpbnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OmdldFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50
c0Nvbm5lY3Rpb248TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVzdE11bHRpcGxl
QXR0cmlidXRlcz4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNyZWF0ZVBsdWdpbjo6bmFtZSgpKQorICAgICAgICByZXR1
cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkNy
ZWF0ZVBsdWdpbj4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0
cmlidXRlczo6Y3JlYXRlUGx1Z2luKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydDo6bmFt
ZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2Rl
ciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkdldFBsdWdpbnM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5zPihkZWNvZGVy
LCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVnaW5z
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdlczo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpnZXRQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzOjpu
YW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRz
Q29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUZXN0TXVsdGlwbGVB
dHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkludGVycHJl
dEtleUV2ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2
ZW50PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjppbnRlcnByZXRLZXlFdmVudCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZXBseUVu
Y29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2VzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2Vz
LmgKaW5kZXggNzY2MjMyYjgwZWZlMTYyOTg5MzM1OTY3OTMwMmQwYTYxNGVmNjk1YS4uNjc2ZjZj
YzA1NWRiMWRhZjNkNDE3N2U3YmIxY2Q4MjBkNjM0MWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzTWVzc2FnZXMuaApAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IERlbGF5ZWRSZXBseSA9IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CisgICAgc3Rh
dGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
LCBjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsZSYgY29ubmVjdGlvbkhhbmRsZSk7CiAgICAg
dXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJj47CiAgICAg
dXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPElQQzo6Q29ubmVjdGlvbjo6SGFuZGxl
PjsKICAgICBleHBsaWNpdCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgpCkBAIC0zODMsNyArMzgzLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgRGVs
YXllZFJlcGx5ID0gVGVzdE11bHRpcGxlQXR0cmlidXRlc0RlbGF5ZWRSZXBseTsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
Q2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkOwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgc3Rh
dGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
KTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8PjsKICAgICB1c2luZyBSZXBseUFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8PjsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA5MjUxMjlkMGM5YzczM2U3OTA0OTFlOWIwZjQz
OGFhM2FiNTQ0YjViLi4yY2QzOWQ3NTQwNmUyNDNjYjIwNTk4NTFkYjhmZGJjYWU0MWMwMzg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLmgKaW5kZXggMDdlOGJiYzliNWM5YzNjNmM5ZDhkNmMzYjk0NWU1MzkzMjdiODc1
YS4uYmYyNWU4MGVhN2Y0MjE1ZGMzYTc1YmZiYzQxMzg3NGNhMTk4M2FhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIu
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIo
TlBSZW1vdGVPYmplY3RNYXAqLCBQbHVnaW4qLCB1aW50NjRfdCBucE9iamVjdElELCBOUE9iamVj
dCopOwogICAgIH5OUE9iamVjdE1lc3NhZ2VSZWNlaXZlcigpOwogCi0gICAgdm9pZCBkaWRSZWNl
aXZlU3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIFBs
dWdpbiogcGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW47IH0KICAgICBOUE9iamVjdCog
bnBPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX25wT2JqZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCmluZGV4IGQ0YjUyNGM4
MjllYzY2NzIxZGYxYTcwZDJkNTEzYWU0ZWIzZjNkMmIuLjI3MWUxN2Y1OGFjNjFhM2RjNGE4ZjU4
NmQ3YmQ0MmJlNDg4NmZjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCkBAIC0yMTcsMTMgKzIxNywxMyBAQCB2b2lkIE5QUmVt
b3RlT2JqZWN0TWFwOjpwbHVnaW5EZXN0cm95ZWQoUGx1Z2luKiBwbHVnaW4pCiAgICAgfQogfQog
Ci12b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIE5QUmVtb3RlT2JqZWN0TWFwOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7
CiAgICAgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlciA9IG1fcmVnaXN0
ZXJlZE5QT2JqZWN0cy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgIGlmICghbWVz
c2FnZVJlY2VpdmVyKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1cm4g
bWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBS
ZW1vdGVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVP
YmplY3RNYXAuaAppbmRleCBlZDEwNWE3M2NkM2VlNGYzMjJkNDlkY2M3ODA0NDI4MjNhNTVkZmJm
Li44NmNkMmYzODUzMGYyYWI0MzJlZTc0MmFkNWRmNTA5Yjc3MzRiYWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5oCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGx1Z2luRGVzdHJveWVkKFBsdWdpbiopOwogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5QUmVtb3RlT2JqZWN0
TWFwKElQQzo6Q29ubmVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5jcHAKaW5kZXggODE0MzA2ZDM3YWE4N2QzMDBmMDFjZWQyNzc1
ODdhY2IzNzk4OWQzNS4uMDkyMjRhNDk5NzAzM2QzZTVhYzEyNDU4NTIyZTc5Y2UyNjIyZTU1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6Ondhc1Rl
cm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBPcHRp
b25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNS
ZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQorYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZv
LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NU
aHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBpZiAoYXN5bmNSZXBseUluZm8gJiYgY2FuU2VuZE1l
c3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9PSBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7CiAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVwbHlJbmZvLT5maXJzdCwgbnVsbHB0
cik7CkBAIC0yMjEsNyArMjIxLDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpc3Bh
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGUKICAgICByZXR1
cm4gbV9tZXNzYWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyKQogewogICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk3MWVj
ZGFlYWVhNmI0M2JjNDM5MWJmOTE5MjRlZTNhYzY0M2IzMDMuLjQxZjZhMjMxOTA1MDkyM2U4Mzhk
ZDk5ZjIxYWExM2UwMTZiMjk1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTE2LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBQcm9j
ZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hl
ciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpIDogMDsgfQogCiAgICAg
Ym9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6OlRl
cm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1Jl
cGx5SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKKyAgICBib29s
IHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCwg
U2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NU
aHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKIAogICAgIHZvaWQgc2h1dERvd25Qcm9jZXNzKCk7CiAK
QEAgLTEyOSw3ICsxMzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wg
ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBsb2dJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKTsKICAgICB2aXJ0dWFsIEFTQ0lJTGl0ZXJh
bCBwcm9jZXNzTmFtZSgpIGNvbnN0ID0gMDsKQEAgLTEzOCw3ICsxMzksNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNo
ZXI6OkxhdW5jaE9wdGlvbnMmKSB7IH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ01lc3NhZ2Ugewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOworICAgICAgICBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiBlbmNvZGVyOwogICAgICAgICBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9uczsKICAgICAgICAgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+IGFzeW5jUmVwbHlJ
bmZvOwogICAgIH07CkBAIC0xNjIsOCArMTYzLDggQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwK
IHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7
CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMo
KTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CiB9CkBAIC0xODYsMTAgKzE4NywxMCBAQCB1aW50NjRfdCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYQogewog
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAot
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBJUEM6Om5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7Ci0gICAgKmVuY29kZXIgPDwgbGlzdGVu
ZXJJRDsKLSAgICAqZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGVuY29kZXIu
Z2V0KCkgPDwgbGlzdGVuZXJJRDsKKyAgICBlbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1l
bnRzKCk7CiAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIHt7
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpE
ZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgZGVjb2Rl
ci0+aXNWYWxpZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCA4OTUyMDhjM2JjMjI2ZDZmYjEyODYxZGE0Mzdj
ZGEzODFmNDhkNjM3Li40YjllMTJjNDA1MTdmYjg0Y2IyM2QyZGUzZTJhZGFhNjZjNjlkYTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKCk7
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVEb3dubG9hZFByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jRG93bmxvYWRQcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKTsKIAogICAgIFdlYlBhZ2VQcm94eSogb3JpZ2luYXRpbmdQYWdlKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggZDhm
YTUzODE0ZDNjMmQxNTAzYzQ2ZDU1Y2U3NDA5ODhhZWJhMDk4YS4uZGVjOWYxYzhiYWFhOGUyOTg3
MjcyYzJkZjVhMjNhYzNkZTI5N2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBEcmF3
aW5nQXJlYVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJu
IHByb2Nlc3MoKS5jb25uZWN0aW9uKCk7CiB9CiAKLWJvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2Vu
ZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJ
bmZvKQorYm9vbCBEcmF3aW5nQXJlYVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25z
LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIq
KT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICByZXR1cm4gcHJvY2Vzcygp
LnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCBXVEZNb3ZlKGFzeW5j
UmVwbHlJbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKaW5kZXggNTljZGZkYWZhYjFkODVlYTNhNWFlY2IzY2QyMjkzZTZkZmIxZWI4ZC4uMDgyYjBj
MDExZDFlMzhhNzkxNTU0MGRlMTBjMTNjNzExOGNlOGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAK
ICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9VSW50NjQoKTsgfQotICAgIGJvb2wgc2VuZE1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRp
b24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29k
ZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+JiYpIGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICAvLyBGSVhNRTog
VGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDc4MGM5MzE4
ZjQyYTU1YmY0Y2I3MWJkNTE5MTFhYzFkNzIwZmQ2MWYuLjEwNjJiYWNkNTgzMzNiYTU0ZTA5ZTZl
OTMwZTU4MWNlYTE3MTBhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzY5LDEyICszNjksMTIgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGUKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVw
bHlFbmNvZGVyKQorYm9vbCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKGRpc3BhdGNo
U3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGRpZFJlY2VpdmVTeW5jTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
KyAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGU3ZWJkZWVm
ZDQ3NWVmMWU5ZWIxZDgzMzBiNDJkNTA1YjRiZTM0N2EuLjEzNWZjNTNiYzBmM2ZlZTZlNmUxNWVl
NzcyMmI4NzU3NjMwZTUzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yODIsMTAgKzI4MiwxMCBAQCBwcml2
YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTE5
MTM0OTVlNDNmMmFmZjc3YmZkNzEyODhhY2VhYTIwMDVhYTg4NC4uN2U0ODA2YzAxNzgzZWIyMGQw
NzJiYmVmMDU0NmI0ZTM3NDVmOGUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGU3
OTRhMzNmYTgzZDJhYTg4NjkwNWRhOWJjNTlmZmMwZDUzMDNhNDEuLjQ0MzJlYmZjYzU0YWM1MzUw
NjJmYzgwNTQ0NWM0OTNmM2RjM2UwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTUyMywxOSArNTIzLDE1IEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpECiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIlVuaGFuZGxlZCBtZXNz
YWdlICVzIGZyb20gcHJvdmlzaW9uYWwgcHJvY2VzcyIsIGRlc2NyaXB0aW9uKGRlY29kZXIubWVz
c2FnZU5hbWUoKSkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29s
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpuYW1lKCkpIHsK
LSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNv
ZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbTo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyLCB0aGlzLCAmUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0p
OwogCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMpOwogCi0gICAgbV9wYWdlLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIHJldHVybiBtX3BhZ2UuZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9
CiAKIElQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9uYWxQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKQEAgLTU0OCw3ICs1NDQsNyBAQCB1aW50NjRfdCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVy
biBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBPcHRp
b25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNS
ZXBseUluZm8pCitib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNl
bmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICAvLyBTZW5k
IG1lc3NhZ2VzIHZpYSB0aGUgV2ViUHJvY2Vzc1Byb3h5IGluc3RlYWQgb2YgdGhlIElQQzo6Q29u
bmVjdGlvbiBzaW5jZSBBdXhpbGlhcnlQcm9jZXNzUHJveHkgaW1wbGVtZW50cyBxdWV1ZWluZyBv
ZiBtZXNzYWdlcwogICAgIC8vIHdoaWxlIHRoZSBwcm9jZXNzIGlzIHN0aWxsIGxhdW5jaGluZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4
IDI0OTM4ZTJhYjc1NTU3MTczMDY1MThmMTY2MGIxN2JkOTQ3NDk4NGYuLmVlOWRkM2FkNzg3NDgw
ZDU5MTFiMzQxZjIwMGE4OWNjMDRlMmUyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMTA2LDEyICsxMDYsMTIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAg
SVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwog
ICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0g
ICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRP
cHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRl
Y29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGlu
Z0ZyYW1lSW5mbywKICAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAKaW5kZXggNDYwY2I4ZDUzOTdmZmQzMmU2MWRhN2NhOGRlZjI3ZTIxOWUzNWJl
MC4uNDY0ZmI3NTdkMjJhNmY4ZGJkNjJmNzk0OTY5Y2NjNDE1OTk0ZjBhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC0yNTksOCArMjU5
LDkgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2QKICNlbmRpZgogfQogCi12b2lkIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikKK2Jvb2wgU3VzcGVuZGVk
UGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKQogeworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogSVBDOjpDb25uZWN0aW9uKiBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKQEAgLTI3Myw3ICsyNzQsNyBAQCB1aW50NjRfdCBTdXNwZW5kZWRQ
YWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4g
bV93ZWJQYWdlSUQudG9VSW50NjQoKTsKIH0KIAotYm9vbCBTdXNwZW5kZWRQYWdlUHJveHk6OnNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKK2Jvb2wgU3VzcGVuZGVkUGFnZVByb3h5OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRp
b25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29k
ZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKIHsKICAgICAvLyBTZW5kIG1lc3Nh
Z2VzIHZpYSB0aGUgV2ViUHJvY2Vzc1Byb3h5IGluc3RlYWQgb2YgdGhlIElQQzo6Q29ubmVjdGlv
biBzaW5jZSBBdXhpbGlhcnlQcm9jZXNzUHJveHkgaW1wbGVtZW50cyBxdWV1ZWluZyBvZiBtZXNz
YWdlcwogICAgIC8vIHdoaWxlIHRoZSBwcm9jZXNzIGlzIHN0aWxsIGxhdW5jaGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggNzdkN2Y3ZGE4
MzY2YjRlMWViMWUwZTY0NDUyN2VlYmZhOWM3MmFkYS4uNjVkNjcxOWI3ZDQ5MTRlZDI4YTEzZDVj
YjQ5NDI1MGI2NWNjNDhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmgKQEAgLTkyLDEyICs5MiwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBP
cHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4s
IHVpbnQ2NF90Pj4mJikgZmluYWw7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpw
YWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYp
IGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV93ZWJQYWdlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggMzUyN2RkMWFlMTVlZDQ4OGY3MGI2OTdl
MTZlMjk1MmNkNWQyZjQ1NC4uZWM5Zjg2NmI3YjZkYTIwOTM3YzhiYTUxYWI1ZWMwM2VhMjVjNzc5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuaApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FsbENsb3Nl
Q29tcGxldGlvbkhhbmRsZXJzKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGJiNzlkN2QwMmZkMjE0ODIzNDZjNGU0NGUzNmVj
YWVkNDJmOGE1Ni4uYTIzM2Y4ZWUwOWFmNWE3YWYwZTI2MTY0ZmE2Y2NmNWM1OTBkZWFhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02NDg0LDcgKzY0ODQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICBtX2ZpbmRDbGllbnQtPmRpZEZhaWxUb0ZpbmRTdHJpbmcodGhpcywgc3Ry
aW5nKTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRP
cHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRl
Y29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgV2ViUGFnZVByb3h5
OjpzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbykKIHsKICAgICByZXR1cm4gbV9wcm9jZXNzLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucywgV1RGTW92ZShhc3luY1JlcGx5SW5mbykpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4N2Q2NDczZWVhOWZkOWJhNjVjNDhhYjkx
ZTBkMzY2ZmFmZDliY2Q4Li45N2I2ZDEyOTYwNjliMWExMDQzZDk3NDU0YTFhYzMwNDE1MGM1MjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTczNiw3ICsxNzM2
LDcgQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLy8gSW1wbGVt
ZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VTcGFjZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhw
ZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAK
QEAgLTE5MDYsNyArMTkwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3Ry
aW5nJiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgYm9vbCBzZW5kTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rl
ciopPiwgdWludDY0X3Q+PiYmKSBvdmVycmlkZTsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJikgb3ZlcnJpZGU7CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggODJkN2ZjYmE3YzkyZGU0ZmExZjQ2NDZkZThiYWJm
NmQ2NzVhNDA4YS4uMzE4NmJkOTUxMThjMGU1ODA0OTJhYmUzZTNlODU2OGVkYmU2YWRiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBXZWJQcm9jZXNzUHJveHlMaXN0ID0gSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHkqPjsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHlG
b3JDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOTA5MjYwNmJmYjJjZWQ5MWJmMWNmMDM0
YmRkMmJiZTBiZWYwNzllYi4uZTEzMjZhZjg2Y2I4NjY5NjcwMzA1MDNmNzFmNjgwZGM0MDI4N2Nm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQz
MSw3ICsxNDMxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJgogICAgIHJldHVybiBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAK
LWJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3NQb29sOjpkaXNwYXRjaFN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIHJldHVy
biBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCAzMzZiMjVjOWM2NWJjNjc0NTAzMzU5ODlkNjUwYWU2YTM3MGY0ODYzLi5h
YWIwOGE4YzBiYWQwNGQxYzljODVkYzA0YzNmYWE1YWI5MGM5ZTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9v
bCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29u
c3QgV0tDb250ZXh0Q2xpZW50QmFzZSopOwogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYpOwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NQb29sTWVzc2FnZVJlY2VpdmVy
LmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCB1c2VzU2luZ2xlV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmln
dXJhdGlvbi0+dXNlc1NpbmdsZVdlYlByb2Nlc3MoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNTVmNzdmYjVjNTNlYzVmMjE5NWM2OTc4
Njc3N2RiNTZhY2I0ZmQ1Li41YTY2MjAyMjkxMzA0YmJkNzM3ZTExNmI4ODdhYzRmOTk2M2FmMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgz
MCwyMCArODMwLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlCiAgICAgLy8gRklYTUU6IEFk
ZCB1bmhhbmRsZWQgbWVzc2FnZSBsb2dnaW5nLgogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQorYm9vbCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBpZiAoZGlzcGF0Y2hTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPmRpc3BhdGNoU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzUHJveHlNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGRpZFJl
Y2VpdmVTeW5jV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOwogCiAgICAgLy8gRklYTUU6IEFkZCB1bmhhbmRsZWQgbWVzc2FnZSBsb2dnaW5n
LgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IGQ0MTdhMzA0YzNmOTcwZmNjMTJjNGRhYmYxYTFkMDFhYWRmYTcyMGUuLjJhNjlh
YmY2MjJjNjY4Nzc4ZmY3MzYwMzZmMDI5MzlkNDExYzE5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00ODYsNyArNDg2LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBXZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKQEAgLTQ5OSw3ICs0OTksNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNX
ZWJQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY1dl
YlByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIGJvb2wgY2FuVGVybWluYXRlQXV4aWxpYXJ5
UHJvY2VzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2Vj
SXRlbVNoaW1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGlt
UHJveHkuaAppbmRleCA5M2MwNmJlM2UzMGE4YmMzMmJkYjI2MDU1ZTc4MGI0M2M3MjNlNDZmLi44
MWU0MjFjNmFjOTQwMTk0YjcxYjFjOWI5NzgzMGEzODUzZTNhODI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0KGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYpOwog
ICAgIHZvaWQgc2VjSXRlbVJlcXVlc3RTeW5jKGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4mJik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCA0Nzg1ZTdmZjQ1N2RiMjlhYTYzNzUzYzNhYTRmNjU1ZWIyYzRiOThj
Li40MTlmZjZiNTJhNTQzMmNmNWZlMmJlMTRjYzFmOTM4MzA5YTFiYWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMjI4LDcgKzIyOCw3IEBAIGJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKIHsKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4
IDE5YTYyZWQzM2U4ZjFiNjJmZDhjOGZlZWM2Y2MzZjY3ODdiNDczOTcuLjk3MTgyNGEzMTY2N2My
ZjRlMjkxODM5NDZmNThkNDI0OTU1ZTI1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTEwNiwxMSArMTA2LDExIEBA
IHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkaXNw
YXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBk
aXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb21tYW5kKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggNWU1NjY3Y2JjMjNjOWNjNTNlM2IwODQxNzNjNWQwODUzZjk2
ZDI1OC4uYjU1NzhjYTg4NWRkMTdmZGFlM2NlMjJlOWRhMGE2MTUxOGNiNjdkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xNzQsMjYgKzE3NCwyNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUAogICAgIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQorYm9vbCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
KSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQotICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1hbmFnZXJD
b25uZWN0aW9uKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJj4oKmNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbikuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICAgICAgd2ViUGFnZS0+cGF5bWVudENvb3Jk
aW5hdG9yKCktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1cm4gd2ViUGFnZS0+
cGF5bWVudENvb3JkaW5hdG9yKCktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2Vu
ZGlmCiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBiOTc5NDY1OWVhYmQxODRiMzg5YzA2ZDEzMmY4
YzQyZjgwNTIzY2MyLi4wYWI3OTE1YjdmYWNlMzk1ZWRmYmEzN2QzOTkyZWVkOTdmM2I4YjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggOGM4YjZiNmU5NmFhY2RiY2JkYWU1OGNhOGQ5Njc5YTdkZjE1MTJmMy4uYmM4OTFl
OWRiZTdiNDJhOWE2NDE3MWQ2ZDlkY2M0Y2Y5NjdlYjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtOTcsMjUgKzk3LDIxIEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgcGx1
Z2luUHJveHktPmRpZFJlY2VpdmVQbHVnaW5Qcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKLSAgICAgICAgbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAg
ICByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gZGVjb2Rlci5kZXN0aW5hdGlvbklEKCk7CiAKLSAgICBpZiAoIWRlc3RpbmF0aW9uSUQp
IHsKLSAgICAgICAgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoIWRlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiBkaWRSZWNlaXZlU3lu
Y1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOwogCiAgICAgUGx1Z2luUHJveHkqIHBsdWdpblByb3h5ID0gbV9wbHVnaW5zLmdl
dChkZXN0aW5hdGlvbklEKTsKICAgICBpZiAoIXBsdWdpblByb3h5KQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHBsdWdpblByb3h5LT5kaWRSZWNlaXZlU3lu
Y1BsdWdpblByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwor
ICAgIHJldHVybiBwbHVnaW5Qcm94eS0+ZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94eU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAogdm9pZCBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDlhNzgxMzM1NDFlYzAzZDE4YjQwNWYxN2M5OGVhNzIyMmQ2MDliNmIuLjE5NDdj
ZWRmMzdmZGY5N2U4NmE2YzE2NTNjMTJkOTg4NTc4Mjc3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24u
aApAQCAtNjQsMTIgKzY0LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBi
b29sIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAgICAg
dm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogbV9wbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaAppbmRleCBhNjNkNzQ4MDViZmU4NmEzMzRiNjFlYjRkZjRmNWE1NjY0
NzlhMjRkLi4wMDhjMjAyMTZkZTViN2ExOTdmMWYyNDI0YTEyZTU2MTJjNmZkZTQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKTsKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY1BsdWdpblByb3h5TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFBsdWdpblByb3h5KHVpbnQ2NF90IHBsdWdpblByb2Nlc3NU
b2tlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwCmluZGV4IGQ5NTRmYzI2OTgzNDUwYTM2NTRmMGFkZmZlODRlZTQ1MmE2Y2FhMzgu
LjUyYTZkNDk2OTFhZjkxNzlkNTNkYTkwOTc3MTJjOTVmNjExZjhhMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC02NDQs
MTQgKzY0NCwxNCBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpzZW5kTWVzc2FnZShKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaQogICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBhdXRvIG1lc3NhZ2VOYW1lID0gc3Rh
dGljX2Nhc3Q8SVBDOjpNZXNzYWdlTmFtZT4oKm1lc3NhZ2VJRCk7Ci0gICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KG1lc3NhZ2VOYW1lLCAqZGVzdGluYXRpb25JRCk7
CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KG1lc3NhZ2VO
YW1lLCAqZGVzdGluYXRpb25JRCk7CiAKICAgICBKU1ZhbHVlUmVmIHJldHVyblZhbHVlID0gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKICAgICBib29sIGhhc1JlcGx5ID0gISFtZXNz
YWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhtZXNzYWdlTmFtZSk7CiAgICAgaWYgKGhhc1Jl
cGx5KSB7CiAgICAgICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRBc3luY1JlcGx5
SGFuZGxlcklEKCk7Ci0gICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CisgICAgICAgIGVu
Y29kZXIuZ2V0KCkgPDwgbGlzdGVuZXJJRDsKIAogICAgICAgICBKU09iamVjdFJlZiByZXNvbHZl
OwogICAgICAgICBKU09iamVjdFJlZiByZWplY3Q7CkBAIC02ODcsNyArNjg3LDcgQEAgQUxMT1df
TkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICB9CiAKICAgICBpZiAoYXJndW1lbnRDb3Vu
dCA+IDMpIHsKLSAgICAgICAgaWYgKCFlbmNvZGVBcmd1bWVudCgqZW5jb2RlciwgKmpzSVBDLCBj
b250ZXh0LCBhcmd1bWVudHNbM10sIGV4Y2VwdGlvbikpCisgICAgICAgIGlmICghZW5jb2RlQXJn
dW1lbnQoZW5jb2Rlci5nZXQoKSwgKmpzSVBDLCBjb250ZXh0LCBhcmd1bWVudHNbM10sIGV4Y2Vw
dGlvbikpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiAgICAgfQogCkBAIC03NDIsNyArNzQyLDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6c2VuZFN5bmNN
ZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYKICAg
ICBhdXRvIGVuY29kZXIgPSBjb25uZWN0aW9uLT5jcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIobWVz
c2FnZU5hbWUsICpkZXN0aW5hdGlvbklELCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChhcmd1
bWVudENvdW50ID4gNCkgewotICAgICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KCplbmNvZGVyLCAq
anNJUEMsIGNvbnRleHQsIGFyZ3VtZW50c1s0XSwgZXhjZXB0aW9uKSkKKyAgICAgICAgaWYgKCFl
bmNvZGVBcmd1bWVudChlbmNvZGVyLmdldCgpLCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50c1s0
XSwgZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNmJjZjQ0NDY4NWNiOGZkNDAyNzk5MDhlOTJlODc3ODU5
NGQ4YjE3MC4uMDYxZjI2Njk4ZDhmYWNjYTEzNzE3MDQ0ZWRhMjYwODYxYzY4OGFkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAg
LTEyNiwxMyArMTI2LDEzIEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBCYWNraW5nU3RvcmVGbHVz
aGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJhY2tpbmdTdG9yZUZsdXNoZXI+IHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8QmFja2luZ1N0b3JlRmx1c2hlcj4gY3Jl
YXRlKElQQzo6Q29ubmVjdGlvbiosIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+
Pik7CisgICAgICAgIHN0YXRpYyBSZWY8QmFja2luZ1N0b3JlRmx1c2hlcj4gY3JlYXRlKElQQzo6
Q29ubmVjdGlvbiosIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+KTsKIAogICAgICAg
ICB2b2lkIGZsdXNoKCk7CiAgICAgICAgIGJvb2wgaGFzRmx1c2hlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRmx1c2hlZDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQmFja2luZ1N0b3JlRmx1
c2hlcihJUEM6OkNvbm5lY3Rpb24qLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVy
Pj4pOworICAgICAgICBCYWNraW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiosIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhy
ZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+KTsKIAogICAgICAgICBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+IG1fY29tbWl0RW5jb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA1YWJlOTlmOWZiNGViYTc1YTk1YTFkMWM4NGY4
MWJjYTI3MGNkYTc0Li45OTkyODcxYjFjMDBlODIxMGNiNjZkZWJkMjhlZTZiMDhkYjEyNGQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC0zODUsOCArMzg1LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
dXBkYXRlUmVuZGVyaW5nKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNh
Y3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5n
VHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpF
bmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0
TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICAqY29tbWl0
RW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9
IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBjb21taXRFbmNvZGVyLmdldCgpIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7
CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2Vt
ZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KICAgICBib29sIGhhZEFu
eUNoYW5nZWRCYWNraW5nU3RvcmUgPSBmYWxzZTsKQEAgLTQ1NywxNCArNDU3LDE0IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Om1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5
SWZQb3NzaWJsZSgpCiAgICAgcmV0dXJuIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC0+YmFja2lu
Z1N0b3JlQ29sbGVjdGlvbigpLm1hcmtBbGxCYWNraW5nU3RvcmVWb2xhdGlsZUltbWVkaWF0ZWx5
SWZQb3NzaWJsZSgpOwogfQogCi1SZWY8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI+IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVG
bHVzaGVyOjpjcmVhdGUoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBmbHVzaGVycykKK1JlZjxSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcj4gUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gZmx1c2hl
cnMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXIoY29ubmVjdGlvbiwgV1RGTW92ZShlbmNvZGVyKSwgV1RG
TW92ZShmbHVzaGVycykpKTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tp
bmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBmbHVz
aGVycykKK1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpC
YWNraW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBmbHVzaGVycykKICAgICA6IG1fY29ubmVj
dGlvbihjb25uZWN0aW9uKQotICAgICwgbV9jb21taXRFbmNvZGVyKFdURk1vdmUoZW5jb2Rlcikp
CisgICAgLCBtX2NvbW1pdEVuY29kZXIoZW5jb2Rlci5tb3ZlVG9VbmlxdWVQdHIoKSkKICAgICAs
IG1fZmx1c2hlcnMoV1RGTW92ZShmbHVzaGVycykpCiAgICAgLCBtX2hhc0ZsdXNoZWQoZmFsc2Up
CiB7CkBAIC00ODAsNyArNDgwLDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2goKQogICAgICAgICBmbHVzaGVyLT5mbHVzaCgpOwog
ICAgIG1faGFzRmx1c2hlZCA9IHRydWU7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdl
KFdURk1vdmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKKyAgICBBU1NFUlQobV9jb21taXRFbmNv
ZGVyKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKG1ha2VVbmlxdWVSZWZGcm9tTm9u
TnVsbFVuaXF1ZVB0cihXVEZNb3ZlKG1fY29tbWl0RW5jb2RlcikpLCB7IH0pOwogfQogCiB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKE9wdGlv
blNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlE
IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA0Mzk0Y2M1NzYyZjk1YmViODBmMDM3MGMzZjE4NjAwZDY3ZGQ1NThkLi45MjExNzc0MDNjNWMy
YWRlZmM4MTJhMzRiYTFjMjU0YTFhMWQwMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDg4Niw5ICs0ODg2LDkgQEAgdm9pZCBXZWJQYWdl
OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2QKICAgICBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBXZWJQYWdlOjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7ICAgCi0gICAg
ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOworICAgIHJldHVybiBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGYy
MThlOTBkNzI3Y2M3ZDBjYTYzZWFjZTgwNjcxMDIyNzMyOTM3Y2UuLjg0YzVjNDlkNzJkODMyNjNm
OGZiZGE0NGRmODM4ZjFjNTI3ZWU4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
Y3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihSZWY8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXI+JiYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICAvLyAtLSBJbmplY3RlZEJ1bmRsZSBtZXRob2RzCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkBAIC0xNDQwLDcgKzE0NDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFRv
dWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZFVwZGF0ZShXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVt
ZW50Jik7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCBhMTlhMDIzZjc4N2Q1Mzk2NzQ5YmJiY2YzMjc1NDg0OGFiMWFkNzk0Li45NmIxYWQ0N2NjMGFj
Mzk1ODNjZGYxYzk0MDI1NTMwMDA1MjkzMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC04MDEsMTAgKzgwMSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1p
bmF0ZSgpCiAgICAgQXV4aWxpYXJ5UHJvY2Vzczo6dGVybWluYXRlKCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQorYm9vbCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNv
ZGVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlOGE3OWY4YTIyOTQxYjNjZjY5ZDVlYzVmYzMyNTAw
ODcxYTUwMzI3Li40YmU1NWRiZTFjMGFhOGZhNDcxMmZhYTRjY2Y5ZmQ1NTRkOTJiOWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTUxNiw3ICs1MTYsNyBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNzIFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQ
cm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422780</attachid>
            <date>2021-03-09 17:06:17 -0800</date>
            <delta_ts>2021-03-09 17:08:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222992-20210309170615.patch</filename>
            <type>text/plain</type>
            <size>171451</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmOTBhZDExOWEyYmI1ZmIz
Y2QxNjQ0OTJjNDc5MTFhZjRlMzFlZjYuLmYyMTJkY2IwM2YzNDg3YzkxZTViYzRjMDAzMzEwYWVi
MTI4MTU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDMtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVW5pcXVlUmVmPD4gaW5zdGVh
ZCBvZiBzdGQ6OnVuaXF1ZV9wdHI8PiB3aGVuIHBhc3NpbmcgSVBDOjpFbmNvZGVyIHRvIHNlbmRN
ZXNzYWdlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgVXNlIFVuaXF1ZVJlZjw+IGluc3RlYWQgb2Ygc3RkOjp1bmlxdWVfcHRyPD4gd2hlbiBwYXNz
aW5nIElQQzo6RW5jb2RlciB0byBzZW5kTWVzc2FnZSgpLCB0bworICAgICAgICBtYWtlIGl0IGNs
ZWFyIGl0IGNhbm5vdCBiZSBudWxsLgorCisgICAgICAgIEkgaGFkIHRvIHVwZGF0ZSBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoKSB0byByZXR1cm4gYSBib29sZWFuIHNpbmNlIHdlIGNhbiBubyBsb25n
ZXIgcmVseQorICAgICAgICBvbiB0aGUgZnVuY3Rpb24gbnVsbGluZyBvdXQgdGhlIGVuY29kZXIg
aXQgaXMgZ2l2ZW4gKHNpbmNlIEkgbW9kaWZpZWQgdGhlIHR5cGUgZnJvbQorICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHIgdG8gV1RGOjpVbmlxdWVSZWYpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3lu
Yyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpF
bmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdl
QXN5bmMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24p
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcDoKKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVNlbmRlcjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRn
b2luZ01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3lu
Y1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNJUEM6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQ
STo6SlNJUEM6OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1
cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9y
ZUZsdXNoZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2gpOgorCiAyMDIxLTAzLTA5ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQyBIYXJkZW5pbmddIFByb3RlY3QgYWdh
aW5zdCBiYWQgaW5wdXQgaW4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcigpIGFuZCBNZXNzYWdlUmVjZWl2ZXJNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0YWRiMTAz
Y2I1ZmY2YjM0Mjc4ZGFjMGJiM2E1M2RmYTNkZGRjNGM0Li43ZjhiMzMxODFmMjRjMTYxNzNlM2U0
ZDMwMjMyMjlkNjM0MGUxNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NzYsNyArNTc2LDcgQEAgYm9v
bCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlz
cGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi1ib29sIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCitib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTYzMiwxMSArNjMyLDggQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwK
ICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIC8vIFNraXAgbWVzc2FnZXMgZm9yIGFscmVh
ZHkgcmVtb3ZlZCByZWNlaXZlcnMuCi0gICAgICAgIHJlcGx5RW5jb2Rlci5yZXNldCgpOworICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGU5NzRkOGFlOWZkZDQ2MzgyZjg5NjViN2M2MjMxYTgzMTBlMmQ3OTYuLjkxY2M3
MTk4MGU1NmJiN2YwNGFjNTYyYjllYmYzODhlY2Q1NWMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTkyLDEw
ICsxOTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpIGZpbmFsOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBOb3dQbGF5aW5nTWFu
YWdlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMTQ1OWI0MGM2MjY1OGZhZTMyNjhkMmFl
ZTQ5ZTQ5MGFkY2VjNTU0MS4uMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
ICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmgKaW5kZXggNDgzMDA2OTFjNzljNjQyZWUzNjQzMmUxYTI5ZjlmODhjYjNjNjMzZS4uZjg0
ZDZmOGUzZjVjYzU3N2RlOGZhMDFiNGNjMGFmOWFjM2NmZWNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmgKQEAgLTUzLDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIH5SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9Cisg
ICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mIGVuY29kZXIpIHsgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29s
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
LCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBo
b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaAppbmRleCBiZDQ2YjU4MTg5
MmZmNDk2YWFhMTM3ODdlZGU3N2I1MTZlNTQyZGFhLi44Mzg3N2U1MjJlY2VmMWMxMDJjNTNkZmM1
Njg3YTIwNzYzMWJjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBVbmlxdWVSZWY8UmVt
b3RlQXVkaW9TZXNzaW9uUHJveHk+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnlQcm94eS5jcHAKaW5kZXggNTk2MzA1MTgwNmZmNWRjZjBlYTFlZGJlMTQzZjE3ZGFl
OTc3NDcyMS4uMTU1ZWJhZmZiOWE5NGRiYmZkODcyNTUyYWYyZGMyYmVhYTYyN2Q5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAKQEAgLTk5LDIyICs5OSwyNSBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgog
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
IH0KIAotdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5j
b2RlcikKIHsKICAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQotICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4gcHJveHktPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQogewogICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFu
Y2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBpbnN0YW5jZS0+ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICBy
ZXR1cm4gaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4g
c2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29k
ZXIpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAppbmRleCA5MjhiMzk5
Mzk0OTQ4NzhhOWZlYzg5ZDFmOTc4NGNkYjVkMDIxN2YwLi5jNGU4NmMzNzI1ODBjMzkxNjlkOGM0
M2UyMjQzOTZhYWIzYThjOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC01MCwxMyArNTAsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQcm94eSgpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
cmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
OwogCiAgICAgdm9pZCBhZGRQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmKTsKICAgICB2b2lkIHJlbW92ZVByb3h5KGNvbnN0
IFJlbW90ZUNETUlkZW50aWZpZXImKTsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAg
IC8vIE1lc3NhZ2VzCiAgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDkyNGVhZGQ1MzcyY2EyNWEx
MjFiMjVmZGE4NjZhMmFjZWJiNDdlNWMuLmI0Y2U3NDk0YTE3YmZjNTZlNGNmODZlYzU2ZmQ5YTQz
Zjk3YzMyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKSBmaW5hbDsKIAogICAgIHVzaW5nIFN1Y2Nlc3NWYWx1ZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpTdWNjZXNzVmFsdWU7CiAgICAgdXNpbmcgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
ID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXgg
NWRkMzBmODk2NmRhMzQxZTBiMDM3ZGNjZTlmMmVmNTU2MzEwNmJiMy4uODY2MGFkYzdiMDkwYjVi
YzZkMzk4OGFiMzBiMDA2YzU4YjZhM2YwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIFdlYkNvcmU6
OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAppbmRl
eCA0YTEwZWEzODUzZjJmMTE1MDMxNTI0MzVmYTIyNThkZmQ5ZDUwMGQ2Li40NjlkNjMxNjcwN2Fh
N2M1NzhjOTljMzY1YzZmZDhkNDBlYmIzYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAg
ICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKaW5k
ZXggMzc4ZmEzNGRlODdiNzBjODk4MmEyMjZmYjk5MGMxNWU3MDAzZDE1ZC4uYmE3MmZiNzg2Mjg1
MmU2NjhmOTQ1N2U3NWJjZWU1NTAxNDNhYTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5j
cHAKQEAgLTk1LDE2ICs5NSwxOCBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgYwogICAgICAgICBz
ZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQotICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4gcHJveHktPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZl
U3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAg
ICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IGVuY29kZXIpOworICAgICAgICByZXR1cm4gc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAog
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUxlZ2FjeUNE
TUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PiYmIHByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDZmYzZhOTllYTU0NmMy
MDMzN2I5NjRjYzk5NmY0MmIwNzE3M2MwZjQuLjVmZDhmYTU0NmEwOTdiZjhkNDRhNzIzZmNlYmQ3
ZmU1ZTlkYjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTQ5LDExICs0OSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KCk7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZy
b21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICBib29s
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikgeyByZXR1cm4gZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lk
IGFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1Qcm94eT4mJik7CiAgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2VzCiAgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNWMzM2Nh
Mzc0NDg0YjQ2MDI4MWU4ZWRjMTI1Y2M5MDE4NmM2NjdiNC4uNDJkMDk0MTU4NmI1OGIxNGEzMDIy
ZGNjMGNhNjViZWUyMGU3NjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHVzaW5nIFN1cHBvcnRz
TUlNRVR5cGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCmluZGV4IDhjN2JjMzBkNTRlZWNhYzljYTI1ZGJkMzI2YTc3MTM4ZmEw
OWY0ZmEuLmM5MGY1ZGExMzIxMDAxNzU1ZjQwYWFlNDU2ZDk3ZGZhODVjMGJlOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CiAKICAgICAvLyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGE4ZDFlZjUxYWQ3Zjg0ZmZmY2E0NjFjNzJmMzIwMjZl
YjFjZTJlYjAuLmViYmZhNzAzMzUwNDVjNmE0MjIwYWIyYTE1NmI0YjU4YmVkODhlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMTY2LDExICsxNjYsMTIgQEAgdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb24KICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVz
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHBsYXll
ci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5k
IHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggYjMyMjVkYjg3YTdmYjA4
NDM2MDhkZTA2ODNlNzZmNWM0NGIzMjFlMS4uOGFjZGQ0OTdhOTFjZjI0ZTIzMDY4YmZlZmEzODEx
NzAwOWU1NjBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTYwLDE2ICs2MCwx
NiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2b2lkIGRpZFJlY2Vp
dmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY1BsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXll
cj4gbWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJik7CiAK
IHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9u
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDVmOTI3NTcyYWYzM2Q3ZTdiYjIxYjcwZTli
MmFiMDUwNjk2NGZiMTQuLmJkNmM3NjlmNTBmYWRkMDJhZjlmZWQwNTM2MDFhMzVkY2VkMzQyOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24o
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IGQ5
NTAwY2IyNDUxODEyMmFiNDEwMTAwM2VhYzM3NTI2Njg0ZmI5YjkuLmE0MmI4MTJhNmRiNjIxMzJh
ZjI5N2E5OTIzY2Y5N2E4ODE5YmVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApAQCAtNzgsNyArNzgsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB1c2luZyBBZGRTb3VyY2VC
dWZmZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXI+KT47CiAgICAgdm9pZCBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5
cGUmLCBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggMTVj
ODQ3M2YzNGY2Mzg5ZjBiMWRjMWQzM2M3MGI0MjgyNzQyZjQzNS4uYzBlOGRiY2IwNjY3NjE1Mzdk
MDJlYmNkYjYxMWU3MjJjMjdjMmNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTgxLDcgKzgxLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAg
ICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIC8vIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB2b2lkIHNldEFjdGl2ZShi
b29sKTsKICAgICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDg0YzkxM2FkMWMwYTkxNGZmNmQ0YTk3
ZTY5YjE1MmM0ZWJiYzY4MDguLjRmNTg4NWU4Zjc0ZjMyOWViZDNlZWJkZmVhYTk2N2YyYzdhNmY0
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yODUsMjEgKzI4NSwxOSBAQCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2FjaGVTdG9yYWdlQ29ubmVjdAogICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseSkKK2Jvb2wgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mIHJlcGx5KQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCBNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3MgSVBDIGlzIG9ubHkgc3VwcG9zZWQgdG8gY29tZSBmcm9tIHRoZSBV
SVByb2Nlc3MuCiAgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpICE9IE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBkaWRS
ZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gZGlkUmVj
ZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQotICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHJldHVybiBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgog
CkBAIC0zMTAsNiArMzA4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogICAgIFdURkxv
Z0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlw
dGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDQ4ZDFjMThlOTM0NWU1
YmZiZGI4ZmY4MGNjYzliODJjYWM1MDcwNjguLmRhMDZmNzM5ZWZhNWQ1MzQwZTlhNjE4MjM4NWJl
NWIwNjczZTIzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE5MywxMyArMTkzLDEz
IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAg
ICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHBlcmZvcm1TeW5jaHJv
bm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3Mzg1NTY3ZDRhMDVhNmE0MGM4ZDJhMDhkMjJmMzJjYTA5ZjQ5ODMxLi40ODg5
NjU1NmMyMjdjMWYwZTE1MTMyOGJmOGJhZmNiZjcxNDM4NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjQ0LDE5ICsyNDQsMTkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCitib29sIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpICE9ICZjb25uZWN0aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNz
YWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0
aW5hdGlvbj0lIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
LCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAobWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNOZXR3
b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxZDRlMzI3
YWFiNDI3YjE3YmUzMDJkNzdlNzM3ZWIzMDRhYTkxNmRiLi5mYTQyMzM0ZWMwY2ExYWQwNTAyM2Vj
YmY3OGQxMzFkMDFiM2VmMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC00MDIsNyArNDAyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKIAogICAgIC8vIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50CkBAIC00MTMsNyArNDEzLDcg
QEAgcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRp
Y2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBi
b29sIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNTEwZDVhYzg5ODU1YTNhMzRkNGExNzNm
ODBjNjNkYzIzMzcyMzU0NS4uMGQ2ZTdhZWRmZjY4MjI3YmY3ZGM4YWI3MTg0YWJjNmZkMzMyMWM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKTsKICAgICAKICAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIqIGxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmdldCgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
CmluZGV4IGUyODUxZWVlZGU2YTcxNTgyOWJiN2FjNDQ3YmQ1ZTQxODRjNjdmYTguLmYwY2VhYTg4
NjJiNmEyMjliMDg5YTAzNGYxZjU1Mjg4MzU0NzM3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZU9yaWdpbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2Rlcik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcik7
CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZU1hbmFnZXJTZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggODZlY2RkZDdmNmUzYjFhZDdjYzdiMWQwYmFk
YjQzYmRmYzIzMjNiYi4uOTUyNGVhYmI3OGVkZjQxNTBjMmUwODY0N2ViMjRkNTk3ZTU1MzZjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM3MiwxNSAr
MzcyLDE1IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5h
bWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNv
ZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFu
ZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCi0gICAgbWVzc2Fn
ZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgYm9vbCB3YXNIYW5kbGVkID0gbWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhN
RTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5j
TWVzc2FnZUVycm9yLgogICAgIEFTU0VSVChkZWNvZGVyLT5pc1ZhbGlkKCkpOwogCi0gICAgaWYg
KHJlcGx5RW5jb2RlcikKKyAgICBpZiAoIXdhc0hhbmRsZWQpCiAgICAgICAgIHNlbmRTeW5jUmVw
bHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIApAQCAtNDE1LDE4ICs0MTUsMTggQEAgdm9p
ZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQog
ICAgIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNS
ZXF1ZXN0SUQpCitVbmlxdWVSZWY8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3Nh
Z2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsK
IAogICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgogICAgIHN5bmNSZXF1ZXN0SUQg
PSArK21fc3luY1JlcXVlc3RJRDsKLSAgICAqZW5jb2RlciA8PCBzeW5jUmVxdWVzdElEOworICAg
IGVuY29kZXIuZ2V0KCkgPDwgc3luY1JlcXVlc3RJRDsKIAogICAgIHJldHVybiBlbmNvZGVyOwog
fQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5k
T3B0CiAgICAgICAgIGJvb2wgaGFzRGVhZE9ic2VydmVycyA9IGZhbHNlOwogICAgICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyV2Vha1B0ciA6IG1fbWVzc2FnZU9ic2VydmVycykgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIG9ic2VydmVyID0gb2JzZXJ2ZXJXZWFrUHRyLmdldCgpKQotICAgICAgICAg
ICAgICAgIG9ic2VydmVyLT53aWxsU2VuZE1lc3NhZ2UoKmVuY29kZXIsIHNlbmRPcHRpb25zKTsK
KyAgICAgICAgICAgICAgICBvYnNlcnZlci0+d2lsbFNlbmRNZXNzYWdlKGVuY29kZXIuZ2V0KCks
IHNlbmRPcHRpb25zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBoYXNEZWFk
T2JzZXJ2ZXJzID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9w
dGlvblNldDxTZW5kT3B0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6
c2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29u
bmVjdGlvbjo6c2VuZFN5bmNSZXBseShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewog
ICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogfQpAQCAtNTY0
LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9y
TWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3Nh
Z2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29k
ZXIsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNz
YWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIs
IFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODc5LDEwICs4Nzks
MTEgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAg
ICAgICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgbWVzc2FnZSA9IG1fb3V0Z29pbmdNZXNzYWdlcy50YWtlRmly
c3QoKTsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdvaW5nTWVzc2FnZXMudGFrZUZpcnN0
KCkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lc3NhZ2Up
OwogCi0gICAgICAgIGlmICghc2VuZE91dGdvaW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKSkK
KyAgICAgICAgaWYgKCFzZW5kT3V0Z29pbmdNZXNzYWdlKG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cihXVEZNb3ZlKG1lc3NhZ2UpKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9
CiB9CkBAIC04OTgsOCArODk5LDkgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVl
c3RJRCk7CiAKKyAgICBib29sIHdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGlu
ZykgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0
aW5nKSB7CiAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CkBAIC05MTIsNyArOTE0
LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2Fn
ZXMoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVy
IGFuZCBlbmNvZGVyIHRvIHRoZSBjbGllbnQuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgd2FzSGFu
ZGxlZCA9IG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGlu
dmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgpAQCAtOTIyLDcg
KzkyNCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIEFTU0VSVChkZWNvZGVyLmlzVmFsaWQoKSk7CiAjZW5kaWYKIAotICAgIGlm
IChyZXBseUVuY29kZXIpCisgICAgaWYgKCF3YXNIYW5kbGVkKQogICAgICAgICBzZW5kU3luY1Jl
cGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCAwZDg1ZDhkN2NlOGY0ZDE3NWQ0YTA0MzQyNzljMTViMGUzOGZj
MWY3Li40ZjZiMTg0ZmY0MGQ5OTI4OGViNjA2MGE3YzU4ODZiMzczNmM0YjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApA
QCAtMjczLDEwICsyNzQsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gd2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCB3
YWl0Rm9yT3B0aW9ucyk7CiAgICAgfQogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBUaW1lb3V0LCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7Ci0gICAgYm9vbCBzZW5kU3luY1JlcGx5
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKKyAgICBV
bmlxdWVSZWY8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpOworICAgIGJvb2wgc2VuZFN5bmNSZXBseShVbmlxdWVSZWY8
RW5jb2Rlcj4mJik7CiAKICAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKIApAQCAtMzMyLDcgKzMz
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0
OwogICAgIGJvb2wgcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0OwogICAg
IHZvaWQgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKLSAgICBib29sIHNlbmRPdXRnb2luZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKKyAgICBib29sIHNlbmRPdXRnb2luZ01lc3Nh
Z2UoVW5pcXVlUmVmPEVuY29kZXI+JiYpOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7
CiAgICAgCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCkBAIC00MDEsNyAr
NDAyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgogICAgIExvY2sg
bV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7Ci0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+PiBtX291dGdvaW5nTWVzc2FnZXM7CisgICAgRGVxdWU8VW5pcXVlUmVmPEVuY29kZXI+PiBt
X291dGdvaW5nTWVzc2FnZXM7CiAgICAgCiAgICAgQ29uZGl0aW9uIG1fd2FpdEZvck1lc3NhZ2VD
b25kaXRpb247CiAgICAgTG9jayBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7CkBAIC01MDIsOCArNTAz
LDggQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6
aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgKmVuY29kZXIg
PDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVm
PEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci5nZXQoKSA8
PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZN
b3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC01MTcsNyArNTE4LDcgQEAgdWludDY0
X3QgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxl
dGlvbkhhbmRsZXIsIHVpbnQKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3lu
Y01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGFkZEFzeW5jUmVw
bHlIYW5kbGVyKCp0aGlzLCBsaXN0ZW5lcklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29k
ZXIqKT4oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChE
ZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgZGVjb2Rl
ci0+aXNWYWxpZCgpKQpAQCAtNTI1LDggKzUyNiw4IEBAIHVpbnQ2NF90IENvbm5lY3Rpb246OnNl
bmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5U
aHJlYWQpKTsKLSAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwotICAgICplbmNvZGVyIDw8IG1l
c3NhZ2UuYXJndW1lbnRzKCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAg
IGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgcmV0dXJuIGxpc3RlbmVySUQ7CiB9
CkBAIC01NTYsNyArNTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2Vu
ZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElE
ID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5j
b250YWlucyhTZW5kU3luY09wdGlvbjo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5n
KSkgewogICAgICAgICBlbmNvZGVyLT5zZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3Rpbmco
KTsKQEAgLTU2NCw3ICs1NjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpT
ZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZQogICAgIH0KIAog
ICAgIC8vIEVuY29kZSB0aGUgcmVzdCBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLgotICAgICplbmNv
ZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpOwogCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9y
IGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNl
bmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRl
eCA5NjczMGRlYmQxN2JiZmExYmI1YTI1Nzk3ZjkwZmU2M2E2NmVlZmQ0Li5lYzllOGNmYmU1NzUy
Nzc5NDgyNWJmZmQ0ZjRhZGZhZDRiNTI0ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBFbmNvZGVyOjpzZXRGdWxseVN5bmNocm9ub3Vz
TW9kZUZvclRlc3RpbmcoKQogICAgIG1lc3NhZ2VGbGFncygpLmFkZChNZXNzYWdlRmxhZ3M6OlVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6d3Jh
cEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQordm9pZCBFbmNv
ZGVyOjp3cmFwRm9yVGVzdGluZyhVbmlxdWVSZWY8RW5jb2Rlcj4mJiBvcmlnaW5hbCkKIHsKICAg
ICBBU1NFUlQoaXNTeW5jTWVzc2FnZSgpKTsKICAgICBBU1NFUlQoIW9yaWdpbmFsLT5pc1N5bmNN
ZXNzYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDcyZWIzM2Q5
MDE2MDZkMjg5YzcwZDhjMTNiZGM0MzdlZmEzYTZlNzEuLjVhYWRlY2M3MjcxZTY1MWU3ZGIwMjMx
OWFmNzUxMzQ2MWIwN2M1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJp
bmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCB3cmFwRm9yVGVz
dGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOworICAgIHZvaWQgd3JhcEZvclRlc3Rpbmco
VW5pcXVlUmVmPEVuY29kZXI+JiYpOwogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkyOTYzZTIxZTFkNzE3
ZjY0YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQuLjc1MTU5MzhkNDJkZTM2NTU0NTBkYjA0ZDJmZTIw
OWY1ZGVmMDFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTEzNCwzNSArMTM0LDM3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVjdCwgTUYg
ZnVuY3Rpb24pCitib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
ciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2Rp
bmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNv
ZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoIWFyZ3VtZW50cykgewogICAgICAgICBkZWNvZGVy
Lm1hcmtJbnZhbGlkKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtl
UmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBUOjpz
ZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7
CiAgICAgfTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOworICAgIHJldHVybiB0
cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4K
LXZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQorYm9vbCBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFt
ZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVu
dHM7CiAgICAgaWYgKCFhcmd1bWVudHMpIHsKICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAg
ICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5j
b2RlciA9IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92
ZShyZXBseUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9Owog
ICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
PgpAQCAtMjA1LDcgKzIwNyw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAg
ICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJ
RCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8m
Ji4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CisgICAgICAg
IGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVw
bHlOYW1lKCksIGxpc3RlbmVySUQpOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2Rlciks
IFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFk
IH07CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKQEAgLTIyMiw3ICsyMjQsNyBA
QCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5j
UmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9IGRlY29kZXIuZGVzdGluYXRp
b25JRCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdz
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihU
Ojphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCks
IGxpc3RlbmVySUQpOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUo
Y29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNv
bm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBvYmplY3QsIGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyLmgKaW5kZXggMmJhMjA4MTkyYTFmNDZhZGQ5NjgwMmM4ZTEwNDdiMDIxZDY1M2U5
ZS4uYjgyZmVmMjNhMTAyZDkzMjQyODY2ZjQyZDZlZjYxOWNkMDU2OGE0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKQEAgLTQ2LDkgKzQ2LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYpCisgICAgdmlydHVhbCBib29sIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIFVuaXF1ZVJlZjxFbmNvZGVyPiYpCiAgICAg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCmluZGV4IDg4MGYzNmE0MWVlOWViOTFhZmQ5YzBkOTE5NGIzNzBh
ZGM2NWZjYmUuLmQ4ODBlOTBjNWJjNTI3NTYwMzg1MTE0ZjY5NzEyNzJhOWRmYWZlNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcApA
QCAtMTMzLDE5ICsxMzMsMTUgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVz
c2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3Bh
dGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwg
VW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8gbWVzc2Fn
ZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmdldChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkpIHsKICAgICAgICAgQVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSk7Ci0KLSAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgIH0KIAotICAgIGlmIChhdXRvIG1l
c3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3RkOjptYWtlX3BhaXIoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsK
LSAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQor
ICAgIGlmIChhdXRvIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3Rk
OjptYWtlX3BhaXIoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlY29kZXIuZGVzdGlu
YXRpb25JRCgpKSkpCisgICAgICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZXJNYXAuaAppbmRleCA1YTEzZGUyYzFlN2ExOGFkYTliMjg0OTBmNTUyODc1ZDdhNGZjNjE3
Li42ODc1YjM0MWNmODAyZDlkZGE3Y2FlMTA5NmE0ZTBlMThiYjBlZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICBib29sIGRpc3BhdGNo
TWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVz
c2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYpOwor
ICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIFVuaXF1
ZVJlZjxFbmNvZGVyPiYpOwogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzIHRo
YXQgZG9uJ3QgcmVxdWlyZSBhIGRlc3RpbmF0aW9uIElELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAppbmRleCBiMWE4M2JiNDQ5MjQyZjlhNjdjYmFiMGUx
Y2Q1YjU5MmZkYzEzNjg4Li5kYzNkNDljNDY4YTk5OGViZmZkYmFjMDY5MWEzZjEyYWQ3NWM5Y2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcApAQCAt
MzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIAogTWVzc2FnZVNlbmRlcjo6fk1lc3NhZ2VT
ZW5kZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTWVzc2FnZVNlbmRlcjo6c2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
ZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIE1lc3NhZ2VTZW5k
ZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCiB7
CiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CiAgICAg
QVNTRVJUKGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oCmluZGV4IGYwYWJhNTE0MWFiZjhjZjg0ZmIyNTkwNTY0MjViZjdlN2JhMjY4OWUuLmJk
NzI4MmJkNWYxMWY2YWVhZDU4ODU3Zjc3MjZjMTU5NTE2OThkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKQEAgLTQzLDggKzQ0LDggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2Fn
ZSBpcyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbWVzc2Fn
ZS5hcmd1bWVudHMoKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNv
ZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8
IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KQEAgLTkwLDEwICs5MSwx
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOwogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBs
eUhhbmRsZXJJRCgpOwotICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwotICAgICAgICAq
ZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8
IGxpc3RlbmVySUQ7CisgICAgICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMo
KTsKICAgICAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIHt7
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpE
ZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChkZWNvZGVyICYmIGRl
Y29kZXItPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29kZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTEwMyw3ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBsaXN0ZW5lcklEOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBz
ZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZpcnR1YWwgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+LCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiA9IFdURjo6bnVsbG9wdCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCA0
OTVhZmZkMDNjNmY1NGQ3Mjg5ZmMxMDFkNmQ2ZGQ4ODZlM2I3NzBkLi4xZGRhZWM0NjJlYmRjZjJh
Njg1NWI5NGE5YmY2NzFhZDRiZmM1YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0xMDAsOCArMTAwLDggQEAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZl
ci4KLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7Ci0gICAgKCplbmNvZGVy
IDw8IC4uLiA8PCBhcmd1bWVudHMpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPihJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVx
dWVzdElEKTsKKyAgICAoZW5jb2Rlci5nZXQoKSA8PCAuLi4gPDwgYXJndW1lbnRzKTsKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpp
bmRleCAwNTllODI5Mzk2YTUyNDlmMDg1MzM0N2ViYzBiM2ViYmVkMzQ2NDg2Li44ZDljZGUwOGY0
NjcxNDFhOTBkOGVhZjlkZDc4NWI3OTAzOGQ1OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yMTksOCArMjE5LDgg
QEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7
CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNo
IGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1
dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uLCAwKTsKLSAgICAgICAgKmVuY29kZXIgPDwgTWFjaFBvcnQobV9yZWNlaXZlUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7
CisgICAgICAgIGVuY29kZXIuZ2V0KCkgPDwgTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CiAK
QEAgLTI5MCw3ICsyOTAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdv
aW5nTWVzc2FnZXMoKSBjb25zdAogICAgIHJldHVybiAhbV9wZW5kaW5nT3V0Z29pbmdNYWNoTWVz
c2FnZSAmJiAhbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2U7CiB9CiAKLWJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikK
K2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4m
JiBlbmNvZGVyKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nT3V0Z29pbmdNYWNoTWVzc2FnZSAm
JiAhbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDdiMDRjMDU0M2E5YTA4
M2MwMGI0MWU1Njc2ZTllMDI1Mjk4NTk1ZDguLmVmY2Q2NjNmODQxNjRlMmY5NmE2OWIzZmJjYWFk
ODU4MWVjZDdjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCkBAIC00MjQsMTEgKzQyNCwxMSBAQCBib29sIENvbm5lY3Rpb246
OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdAogICAgIHJldHVybiAhbV9w
ZW5kaW5nT3V0cHV0TWVzc2FnZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQorYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIpCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91
bnQgKiBzaXplb2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01l
c3NhZ2VJbmxpbmUpOwogCi0gICAgVW5peE1lc3NhZ2Ugb3V0cHV0TWVzc2FnZSgqZW5jb2Rlcik7
CisgICAgVW5peE1lc3NhZ2Ugb3V0cHV0TWVzc2FnZShlbmNvZGVyLmdldCgpKTsKICAgICBpZiAo
b3V0cHV0TWVzc2FnZS5hdHRhY2htZW50cygpLnNpemUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50
IC0gMSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAppbmRleCAxOWZjNDJlZWExYzU2N2FkMWMxYjFkNmZlYmU3ZjUzODdlMjVlMDFmLi4wNGFm
OGRhYjk2N2MwZjQ1MjZiMDc1YzQ0YWYwZWM4ODA4NmZjMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0yNzIsNyArMjcyLDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gIW1fcGVuZGluZ1dyaXRlRW5jb2RlcjsKIH0KIAotYm9vbCBDb25uZWN0
aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVy
KQorYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmIGVuY29kZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdXcml0ZUVuY29kZXIpOwogCkBA
IC0yODEsNyArMjgxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBXZSBwdXQgdGhlIG1lc3NhZ2UgSUQgbGFzdC4KLSAgICAqZW5jb2RlciA8PCAwOwor
ICAgIGVuY29kZXIuZ2V0KCkgPDwgMDsKIAogICAgIC8vIFdyaXRlIHRoZSBvdXRnb2luZyBtZXNz
YWdlLgogCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogCiAgICAgLy8gVGhlIG1l
c3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBzbyB0aGF0IGl0
IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29tcGxldGVzLgot
ICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IFdURk1vdmUoZW5jb2Rlcik7CisgICAgbV9wZW5k
aW5nV3JpdGVFbmNvZGVyID0gZW5jb2Rlci5tb3ZlVG9VbmlxdWVQdHIoKTsKIAogICAgIC8vIFdl
IGNhbiBvbmx5IHNlbmQgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGltZSAoc2VlIGNv
bW1lbnQgaW4gcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcykuCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IGM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2Qu
LjNjZjVlMWY5N2I4N2E0YmQ5MmEzNjZhNGNjODkwMjUxNzM0MDE4YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveSgpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Db250cm9sbGVy
UHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jik7CiAKICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggNjc5MjJjZDZlMjM0ZTc3MWQyMTFkZWRmYTM3OTFkZjJlZjkyY2M5Yy4uY2Jm
MzNmODIwMmIyN2U0ZWY4Y2Y4NDdjZmI2MWQ2MGI0ZTdmZjk1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xNDUs
MjggKzE0NSwyNCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogICAgIHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS0+ZGlkUmVjZWl2ZVBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBTZXRGb3JTY29wZTxJUEM6OkNvbm5lY3Rpb24q
PiBjdXJyZW50Q29ubmVjdGlvbkNoYW5nZShjdXJyZW50Q29ubmVjdGlvbiwgJmNvbm5lY3Rpb24p
OwogCiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IGRlY29kZXIuZGVzdGluYXRpb25JRCgp
OwogCi0gICAgaWYgKCFkZXN0aW5hdGlvbklEKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFkZXN0aW5hdGlvbklEKQorICAg
ICAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpCisgICAgICAgIHJldHVybiBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9s
bGVycy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgIGlmICghcGx1Z2luQ29udHJv
bGxlclByb3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHByb3RlY3Rvcihw
bHVnaW5Db250cm9sbGVyUHJveHktPmFzUGx1Z2luQ29udHJvbGxlcigpKTsKLSAgICBwbHVnaW5D
b250cm9sbGVyUHJveHktPmRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIHJldHVybiBwbHVnaW5D
b250cm9sbGVyUHJveHktPmRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyZWI3NmE2
OTFiZWJlMTdjZDhiMDY3NDhkYTRjNzU3MWY5N2U5NzRkLi5kMTc2NmZkNGExMjUzYWRhMWQ1ZDIy
N2YyYTc5NzViYmEwYmY1NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgY3JlYXRlUGx1
Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRl
UGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgdm9pZCBkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5
bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlc3Ryb3lQbHVnaW5EZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCAxNzQ4MGFiNjJlNzIxZTZhYTgwNDI2MmEzYzc3OWFiOWFm
OWMxNzEyLi4wMzM1YjJiZDU1ZjAxM2NmM2YzMzljMjQ2MmU1YTRlOGUyNjg3NDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxMiw3ICsyMTIsNyBAQCBk
ZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFk
OjpDb25zdHJ1Y3Rpb25UaHJlYWQ7XG4nKQogICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmli
dXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9w
YXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBs
ZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtc
bicpCkBAIC01NTUsMTAgKzU1NSw4IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2Vy
dCgwLCAnY29ubmVjdGlvbicpCiAKICAgICByZXN1bHQgPSBbXQotICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUo
KSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRpc3BhdGNo
X2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihkaXNwYXRj
aF9mdW5jdGlvbl9hcmdzKSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4n
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicg
JSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hf
ZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNo
X2Z1bmN0aW9uX2FyZ3MpKSkKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpv
aW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApAQCAtNTc5LDEwICs1NzcsOCBAQCBk
ZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIG1h
eWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXInCiAKICAgICByZXN1bHQgPSBbXQot
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPigl
c2RlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBl
bHNlICcnLCBtYXliZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBt
ZXNzYWdlKSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQotICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAl
IChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVj
dGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIs
IGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICByZXR1cm4gc3Vycm91
bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApA
QCAtOTA1LDExICs5MDEsMTEgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZl
cik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5j
UmVwbHlFcnJvcjwnICsgcmVwbHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBp
biBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcpO1xufVxuXG4nKQogCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgndm9pZCAlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKICAgICAgICAgICAg
IGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNd
KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCi0gICAgICAgICAgICByZXN1
bHQgKz0gWycgICAgKmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyc10KKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICBlbmNvZGVyLmdl
dCgpIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCkBAIC05NjgsMTggKzk2NCwxOSBAQCBk
ZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKIAogICAgIGlmIG5vdCByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRU
UklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKICAgICAgICAg
aWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAgICAgICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdl
X3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdl
c10KICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSlcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7XG4nKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgcmV0dXJuIGZhbHNlO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKIAogICAgIHJlc3VsdC5hcHBlbmQoJ1xufSAvLyBuYW1lc3BhY2UgV2ViS2l0XG4nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVz
c2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCA5NjIzMjA4Mzcw
ZDRiMDJmNzE1NGRmMTQ0ZTYxOGFjMTllM2RlZjIzLi4xZmUzYWIwM2NmNWQ0ODBlYTA4M2E4OTUz
NDBmZmRlNjBjMzgzMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2Vp
dmVyLmNwcApAQCAtNDEsMTYgKzQxLDEyIEBAIHZvaWQgVGVzdFdpdGhJZk1lc3NhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvCiB7CiAg
ICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJ
Zk1lc3NhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhJZk1lc3NhZ2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpM
b2FkVVJMOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJ
Zk1lc3NhZ2U6OmxvYWRVUkwpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2Fk
VVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdl
Ojpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6bmFtZSgp
KQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElm
TWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjpsb2Fk
VVJMKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlUmVjZWl2ZXIu
Y3BwCmluZGV4IGE4NmM0MTVmZmMzMjFlZDgwZmEyN2JmZWM0ZmE5NGZjNzBmMTIzNjYuLmE0OTYy
OWQzMzRkMmQxYWY1MTg1M2VhMjdmYWY3Y2I0MDQ2M2E2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlUmVjZWl2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJ
bWFnZURhdGFNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0zOCwyNiArMzgsMjMgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB2b2lkIFRlc3RXaXRoSW1hZ2VEYXRhOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6U2VuZEltYWdlRGF0YTo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJ
bWFnZURhdGE6OlNlbmRJbWFnZURhdGE+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aEltYWdlRGF0
YTo6c2VuZEltYWdlRGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJbWFn
ZURhdGE6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJbWFnZURhdGE+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aEltYWdlRGF0YTo6c2VuZEltYWdlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBUZXN0V2l0aEltYWdl
RGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpS
ZWNlaXZlSW1hZ2VEYXRhOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YT4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoSW1hZ2VEYXRhOjpyZWNlaXZlSW1hZ2VEYXRhKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YTo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdl
RGF0YTo6UmVjZWl2ZUltYWdlRGF0YT4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRoSW1hZ2VEYXRhOjpyZWNlaXZlSW1hZ2VEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShy
ZXBseUVuY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCAxYzhiZmFkNWVlM2ZmY2I4MmFjZjAx
ZTMzOWM1Y2IwNDAzN2Q1NmVmLi42ZWI0NjQ1NzIxNTlkZjg4NzcyYTA4MDg4OGUyN2NlMTY5ODBl
MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKQEAgLTYzLDEzICs2MywxMyBAQCBuYW1lc3BhY2UgTWVzc2FnZXMgewogCiBuYW1lc3Bh
Y2UgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciB7CiAKLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBj
b25uZWN0aW9uSGFuZGxlKQordm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCiB7
Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKKyAgICBlbmNvZGVyLmdldCgpIDw8
IGNvbm5lY3Rpb25IYW5kbGU7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUo
ZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAg
Y29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAtODMsMTIy
ICs4Myw3OSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6ZGlkUmVjZWl2ZVRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRVUkw6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2Fk
VVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMOjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpsb2FkVVJMKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRT
b21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRT
b21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29t
ZXRoaW5nKTsKICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZl
bnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3VjaEV2ZW50KTsK
ICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkFkZEV2
ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpBZGRFdmVudDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmFkZEV2ZW50KTsKICNlbmRpZgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmdFbHNl
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZ0Vs
c2UpOwogI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDbG9zZT4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNsb3NlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kRG91YmxlQW5kRmxv
YXQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZW5kRG91YmxlQW5k
RmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNlbmRJbnRzOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0UGFy
YW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0
cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2V0VmlkZW9MYXllcklEPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2V0VmlkZW9MYXllcklEKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpDbG9zZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDbG9zZT4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNsb3NlKTsKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJl
bmNlc0RpZENoYW5nZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnByZWZlcmVuY2VzRGlkQ2hh
bmdlKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6c2VuZERvdWJsZUFuZEZsb2F0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50czo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OnNlbmRJbnRzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpU
ZW1wbGF0ZVRlc3Q6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVtcGxhdGVUZXN0KTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpT
ZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2V0VmlkZW9MYXllcklEPihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2V0VmlkZW9MYXllcklEKTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEZXBy
ZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEZXByZWNhdGVkT3BlcmF0
aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGVwcmVjYXRlZE9w
ZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpFeHBlcmltZW50YWxP
cGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpleHBlcmlt
ZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpFeHBlcmltZW50YWxPcGVyYXRp
b24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpleHBlcmltZW50YWxP
cGVyYXRpb24pOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9v
bCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNyZWF0ZVBsdWdp
bjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2lucz4o
ZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6Omdl
dFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3lu
Y2hyb25vdXM8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0
aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRl
UGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6Y3JlYXRlUGx1Z2luKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpHZXRQbHVnaW5zOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpbnM+KGRlY29k
ZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVn
aW5zKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RN
dWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjppbnRlcnByZXRLZXlFdmVudCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNF
RF9QQVJBTShyZXBseUVuY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNz
YWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyTWVzc2FnZXMuaAppbmRleCAzYmUwYTBiMGU5Yzc4YTQyOTRjZTZmMjliNjZkMmEy
NWZiZGQwOTM2Li5hY2FjMjgzNWM2YzQwNWI0MjY2ZDg4YzU2NzAwNjdkMDllYTk0YzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgKQEAgLTM1Nyw3ICszNTcsNyBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwg
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rp
b25IYW5kbGUpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSY+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZT47CiAgICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CiAg
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCA3MjEwM2M0NzQ0OWQ2Y2M1MDcxZTAxYjAyNGFkZDUxZGQyYjQ5NTU4
Li4wNjQ2ZmU5OWI2ZjIzNWIwYzUwN2Q5NDdhYTIxYTMxNjgxM2I3NTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzUsMjYgKzM1LDIzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdm9pZCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1h
cGhvcmU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhT
ZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpT
ZW5kU2VtYXBob3JlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVzdFdp
dGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFw
aG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29k
ZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFw
aG9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6Om5h
bWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURf
UEFSQU0ocmVwbHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBjOWM5MjQwYTRlYjFhYjU1NzQw
OTYwMjI5MWRjMTI3MzE5ODdmMDU0Li5lNDkyMzgwOWU0MWZiM2M2YWYyNmM2OTMwNWIwMmZiNmZj
YTYzOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVy
LmNwcApAQCAtMzUsMTAgKzM1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFRlc3RXaXRo
U3RyZWFtQnVmZmVyOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNl
bmRTdHJlYW1CdWZmZXI+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2Vu
ZFN0cmVhbUJ1ZmZlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJl
YW1CdWZmZXI6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVhbUJ1ZmZlcik7CiAgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAK
aW5kZXggODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNi4uZTAwN2VjNGQ2
OGViY2ZlNDQ3ZDg0NzcwMTA5MjUxZTQ1Mjk5ZjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1l
c3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1LDE0ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
U3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2Vu
ZFN0cmluZ1N5bmNocm9uaXplZDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7CiAgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcAppbmRleCA5ODllMWQ0MTAzYzBkNjA0MmQ0NDhhOTQ4ZjJlYTRmYTNmNzI3
MWFlLi4xNTEwNDdlYWE2ZTJlZGQwNzZhYWJiNDcwNmE5MjZlOWExZDc1ODUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC01OSw5ICs1OSw5IEBA
IHZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3lu
Y1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7CiB9CiAKLXZvaWQgVGVzdEFzeW5jTWVz
c2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQordm9pZCBUZXN0QXN5bmNN
ZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCiB7Ci0gICAgKmVuY29kZXIgPDwg
cmVzdWx0OworICAgIGVuY29kZXIuZ2V0KCkgPDwgcmVzdWx0OwogICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIApAQCAtNzksNyArNzksNyBAQCB2b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQg
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBjb25u
ZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CkBAIC0xMTIsMTAgKzEx
MiwxMCBAQCB2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYgogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXN5bmNSZXBseUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBDOjpBc3luY1JlcGx5RXJyb3I8
dWludDY0X3Q+OjpjcmVhdGUoKSk7CiB9CiAKLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1
ZSkKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAgICAqZW5jb2RlciA8PCBmbGFnOwot
ICAgICplbmNvZGVyIDw8IHZhbHVlOworICAgIGVuY29kZXIuZ2V0KCkgPDwgZmxhZzsKKyAgICBl
bmNvZGVyLmdldCgpIDw8IHZhbHVlOwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKIH0KIApAQCAtMTQwLDIzICsxNDAsMjMgQEAgdm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb246OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCYmKT4KICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29s
Pjo6Y3JlYXRlKCkpOwogfQogCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnKQordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENv
bm5lY3Rpb246OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZykKIHsKLSAgICAqZW5jb2RlciA8PCBmbGFn
OworICAgIGVuY29kZXIuZ2V0KCkgPDwgZmxhZzsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVw
bHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKICNlbmRpZgogCi12b2lkIFRlc3RTeW5jTWVzc2Fn
ZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKK3ZvaWQgVGVzdFN5bmNNZXNzYWdl
OjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50OF90IHJlcGx5KQogewotICAgICplbmNvZGVyIDw8IHJlcGx5Owor
ICAgIGVuY29kZXIuZ2V0KCkgPDwgcmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCiB7Ci0g
ICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IG9wdGlv
bmFsUmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCkBAIC0xNjksNTIgKzE2OSwzOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVz
dFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTdXBlcmNsYXNzOjpMb2FkVVJMOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5
bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNz
Ojp0ZXN0QXN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RB
c3luY01lc3NhZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFz
eW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3Nh
Z2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNs
YXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1
cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRo
Q29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2Fu
dHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3Nh
Z2VXaXRoQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Vw
ZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb248TWVz
c2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9u
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5
bmNNZXNzYWdlV2l0aENvbm5lY3Rpb24pOwogI2VuZGlmCiAgICAgV2ViUGFnZUJhc2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIFRlc3RXaXRoU3Vw
ZXJjbGFzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQorYm9vbCBUZXN0V2l0aFN1cGVyY2xhc3M6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0U3luY01lc3NhZ2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNo
cm9ub3VzTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01l
c3NhZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0
ZXN0U3luY01lc3NhZ2UpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OlRl
c3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0U3luY2hy
b25vdXNNZXNzYWdlKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKaW5kZXggYmM3M2M5OGMzMDg2
NTBmNzY2MWFmNzgwMTdlYjY2Nzg4MTQwN2Y0NC4uYzFhZThkNWZhMzE4ZDQ1NjNlOTEwODZjY2E1
M2VhMGZjZjMzZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaApAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdl
UmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5
bmNNZXNzYWdlQXN5bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tU
aHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZDsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQp
OwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OwogICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CiAgICAgZXhwbGljaXQgVGVzdEFz
eW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQpAQCAtMTEx
LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01l
c3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OyB9CiAgICAgdXNpbmcg
QXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
KyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwogICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNSZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3Ry
dWN0aW9uVGhyZWFkOwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk7
CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKICAgICB1c2luZyBSZXBseSA9
IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25S
ZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5l
Y3Rpb25Bc3luY1JlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVh
ZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnKTsKICAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxib29sPjsKICAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlV2l0aENv
bm5lY3Rpb24oY29uc3QgaW50JiB2YWx1ZSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9u
SGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ4X3QgcmVwbHkpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCByZXBseSk7CiAgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8dWludDhfdD47CiAgICAgZXhwbGljaXQgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBh
cmFtKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBs
eSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJl
YWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAgIHN0YXRpYyB2b2lkIHNl
bmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0
aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CiAgICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKICAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPj47CiAgICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3Bw
CmluZGV4IDdiZTQxMmZjOTk5ZjU3MjQyODc0MmVmMThmMmQzYzk1MjAyZTU1NWUuLjM4NTZkMzY5
MzhhMjUwMTdiNjYzYjZlNDQyMWY1YmExZGI1OGY5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJlY2Vp
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
b3V0QXR0cmlidXRlc01lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTYzLDEzICs2MywxMyBAQCBuYW1l
c3BhY2UgTWVzc2FnZXMgewogCiBuYW1lc3BhY2UgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIHsKIAot
dm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCit2b2lkIEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246Okhh
bmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFu
ZGxlOworICAgIGVuY29kZXIuZ2V0KCkgPDwgY29ubmVjdGlvbkhhbmRsZTsKICAgICBjb25uZWN0
aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKLXZvaWQgVGVzdE11bHRp
cGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmli
dXRlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShlbmNvZGVyKSk7CiB9CkBAIC04MywxMjIgKzgzLDc5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dm9pZCBUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFVSTDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpsb2Fk
VVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw6Om5hbWUoKSkK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
Ojpsb2FkVVJMKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0
aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5n
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpsb2FkU29tZXRoaW5nKTsK
ICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VG91Y2hF
dmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlRvdWNoRXZlbnQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKICNlbmRpZgogI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6QWRkRXZlbnQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmFkZEV2
ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50OjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmFkZEV2ZW50KTsKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOwogI2VuZGlmCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q2xvc2U6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OmNsb3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlk
Q2hhbmdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5
ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2V0VmlkZW9MYXll
cklEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkNsb3NlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q2xvc2U+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmNsb3NlKTsKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVu
Y2VzRGlkQ2hhbmdlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnByZWZlcmVuY2VzRGlkQ2hhbmdl
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKQorICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRE
b3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2Vu
ZERvdWJsZUFuZEZsb2F0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmRJbnRz
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdDo6
bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6dGVtcGxhdGVUZXN0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJRDo6
bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6c2V0VmlkZW9MYXllcklEKTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0
cmlidXRlczo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwog
I2VuZGlmCiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRlcHJlY2F0
ZWRPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wg
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1
Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2Rlciwg
KnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVuSmF2YVNjcmlw
dEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpbnM6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRob3V0QXR0cmlidXRlczo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5j
aHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpCisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpjcmVhdGVQbHVnaW4pOworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlw
dEFsZXJ0OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAq
cmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpydW5KYXZhU2NyaXB0
QWxlcnQpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6R2V0UGx1Z2luczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdp
bnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OmdldFBsdWdpbnMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6SW50
ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OmludGVycHJldEtleUV2ZW50KTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5VU0VEX1BB
UkFNKHJlcGx5RW5jb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzTWVzc2FnZXMuaAppbmRleCA3NjYyMzJiODBlZmUxNjI5ODkzMzU5Njc5MzAyZDBhNjE0ZWY2
OTVhLi42NzZmNmNjMDU1ZGIxZGFmM2Q0MTc3ZTdiYjFjZDgyMGQ2MzQxZGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRl
c01lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxl
KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFu
ZGxlKTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0
aW9uOjpIYW5kbGU+OwogICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKQEAgLTM4Myw3ICszODMsNyBAQCBwdWJsaWM6CiAKICAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwogICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDkyNTEyOWQwYzljNzMzZTc5
MDQ5MWU5YjBmNDM4YWEzYWI1NDRiNWIuLjJjZDM5ZDc1NDA2ZTI0M2NiMjA1OTg1MWRiOGZkYmNh
ZTQxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAwN2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNiOTQ1
ZTUzOTMyN2I4NzVhLi5iZjI1ZTgwZWE3ZjQyMTVkYzNhNzViZmJjNDEzODc0Y2ExOTgzYWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBOUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlcihOUFJlbW90ZU9iamVjdE1hcCosIFBsdWdpbiosIHVpbnQ2NF90IG5wT2JqZWN0
SUQsIE5QT2JqZWN0Kik7CiAgICAgfk5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKCk7CiAKLSAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
OwogCiAgICAgUGx1Z2luKiBwbHVnaW4oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbjsgfQogICAg
IE5QT2JqZWN0KiBucE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbnBPYmplY3Q7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5k
ZXggZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2QyYi4uMjcxZTE3ZjU4YWM2
MWEzZGM0YThmNTg2ZDdiZDQyYmU0ODg2ZmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTIxNywxMyArMjE3LDEzIEBA
IHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OnBsdWdpbkRlc3Ryb3llZChQbHVnaW4qIHBsdWdpbikK
ICAgICB9CiB9CiAKLXZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgTlBSZW1vdGVP
YmplY3RNYXA6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKIHsKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9yZWdpc3RlcmVkTlBPYmplY3RzLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAg
ICAgaWYgKCFtZXNzYWdlUmVjZWl2ZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwor
ICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OUFJlbW90ZU9iamVjdE1hcC5oCmluZGV4IGVkMTA1YTczY2QzZWU0ZjMyMmQ0OWRjYzc4MDQ0
MjgyM2E1NWRmYmYuLjg2Y2QyZjM4NTMwZjJhYjQzMmVlNzQyYWQ1ZGY1MDliNzczNGJhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwbHVnaW5EZXN0cm95ZWQoUGx1
Z2luKik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTlBS
ZW1vdGVPYmplY3RNYXAoSVBDOjpDb25uZWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MTQzMDZkMzdhYTg3ZDMw
MGYwMWNlZDI3NzU4N2FjYjM3OTg5ZDM1Li4wOTIyNGE0OTk3MDMzZDNlNWFjMTI0NTg1MjJlNzlj
ZTI2MjJlNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6d2FzVGVybWluYXRlZCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVu
Y29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
c2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCitib29sIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5
bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQogewogICAgIGlmIChhc3luY1JlcGx5SW5mbyAm
JiBjYW5TZW5kTWVzc2FnZSgpICYmIHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
ID09IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpIHsKICAgICAgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoYXN5bmNSZXBseUluZm8tPmZp
cnN0LCBudWxscHRyKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZQogICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiB9CiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaXNwYXRj
aFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9v
bCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFw
LmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgK
aW5kZXggOTcxZWNkYWVhZWE2YjQzYmM0MzkxYmY5MTkyNGVlM2FjNjQzYjMwMy4uNDFmNmEyMzE5
MDUwOTIzZTgzOGRkOTlmMjFhYTEzZTAxNmIyOTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkgOiAw
OyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSAh
PSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJv
dHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMp
OworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RG
OjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwogCiAgICAgdm9pZCBzaHV0RG93blBy
b2Nlc3MoKTsKIApAQCAtMTI5LDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGxvZ0ludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpOwogICAgIHZpcnR1YWwg
QVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgPSAwOwpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFBy
b2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpIHsgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5n
TWVzc2FnZSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXI7
CisgICAgICAgIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+IGVuY29kZXI7CiAgICAgICAgIE9wdGlv
blNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zOwogICAgICAgICBPcHRpb25hbDxzdGQ6
OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4g
YXN5bmNSZXBseUluZm87CiAgICAgfTsKQEAgLTE2Miw4ICsxNjMsOCBAQCBib29sIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2Fn
ZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVy
PihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJn
dW1lbnRzKCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKIH0KQEAgLTE4NiwxMCArMTg3LDEwIEBAIHVpbnQ2NF90IEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxl
dGlvbkhhCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAqZW5jb2Rl
ciA8PCBsaXN0ZW5lcklEOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7Cisg
ICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVz
c2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5k
T3B0aW9ucywge3sgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFibGUgewogICAgICAgICBpZiAoZGVjb2Rl
ciAmJiBkZWNvZGVyLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29k
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDg5NTIwOGMzYmMyMjZkNmZi
MTI4NjFkYTQzN2NkYTM4MWY0OGQ2MzcuLjRiOWUxMmM0MDUxN2ZiODRjYjIzZDJkZTNlMmFkYWE2
NmM2OWRhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNz
RGlkQ2xvc2UoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURvd25sb2FkUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNE
b3dubG9hZFByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNEb3du
bG9hZFByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2Uo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNw
cAppbmRleCBkOGZhNTM4MTRkM2MyZDE1MDNjNDZkNTVjZTc0MDk4OGFlYmEwOThhLi5kZWM5ZjFj
OGJhYWE4ZTI5ODcyNzJjMmRmNWEyM2FjM2RlMjk3YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCBJUEM6OkNvbm5l
Y3Rpb24qIERyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gcHJvY2VzcygpLmNvbm5lY3Rpb24oKTsKIH0KIAotYm9vbCBEcmF3aW5nQXJl
YVByb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVy
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpw
YWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYg
YXN5bmNSZXBseUluZm8pCitib29sIERyYXdpbmdBcmVhUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIHJldHVy
biBwcm9jZXNzKCkuc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIFdU
Rk1vdmUoYXN5bmNSZXBseUluZm8pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaAppbmRleCA1OWNkZmRhZmFiMWQ4NWVhM2E1YWVjYjNjZDIyOTNlNmRmYjFl
YjhkLi4wODJiMGMwMTFkMWUzOGE3OTE1NTQwZGUxMGMxM2M3MTE4Y2U4YTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0xNDAsNyArMTQwLDcgQEAg
cHJpdmF0ZToKIAogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllci50b1VJbnQ2NCgpOyB9Ci0gICAgYm9v
bCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIq
KT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggNzgwYzkzMThmNDJhNTViZjRjYjcxYmQ1MTkxMWFjMWQ3MjBmZDYxZi4uMTA2MmJhY2Q1ODMz
M2JhNTRlMDllNmU5MzBlNTgxY2VhMTcxMGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNjksMTIg
KzM2OSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZQogICAgIGRpZFJlY2VpdmVOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCitib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBp
ZiAoZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZGlkUmVjZWl2
ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgIHJldHVybiBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggZTdlYmRlZWZkNDc1ZWYxZTllYjFkODMzMGI0MmQ1MDViNGJlMzQ3YS4uMTM1ZmM1M2JjMGYz
ZmVlNmU2ZTE1ZWU3NzIyYjg3NTc2MzBlNTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI4MiwxMCArMjgy
LDEwIEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsK
KyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7
CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAppbmRleCBhMTkxMzQ5NWU0M2YyYWZmNzdiZmQ3MTI4OGFjZWFhMjAwNWFhODg0Li43ZTQ4MDZj
MDE3ODNlYjIwZDA3MmJiZWYwNTQ2YjRlMzc0NWY4ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKaW5kZXggZTc5NGEzM2ZhODNkMmFhODg2OTA1ZGE5YmM1OWZmYzBkNTMwM2E0MS4uNDQzMmVi
ZmNjNTRhYzUzNTA2MmZjODA1NDQ1YzQ5M2YzZGMzZTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTIzLDE5ICs1MjMsMTUg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5o
YW5kbGVkIG1lc3NhZ2UgJXMgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5j
b2RlcikKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpu
YW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0Zvcndh
cmRHb1RvSXRlbSk7CiAKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6bmFtZSgpKQorICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk7CiAKLSAgICBtX3BhZ2UuZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJu
IG1fcGFnZS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApAQCAtNTQ4LDcgKzU0NCw3IEBAIHVpbnQ2NF90
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fd2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVu
Y29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewog
ICAgIC8vIFNlbmQgbWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0
aGUgSVBDOjpDb25uZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRz
IHF1ZXVlaW5nIG9mIG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwg
bGF1bmNoaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKaW5kZXggMjQ5MzhlMmFiNzU1NTcxNzMwNjUxOGYxNjYwYjE3YmQ5NDc0OTg0Zi4uZWU5
ZGQzYWQ3ODc0ODBkNTkxMWIzNDFmMjAwYTg5Y2MwNGUyZTI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xMDYsMTIgKzEwNiwxMiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLAogICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA0NjBjYjhkNTM5N2ZmZDMyZTYxZGE3Y2E4ZGVm
MjdlMjE5ZTM1YmUwLi40NjRmYjc1N2QyMmE2ZjhkYmQ2MmY3OTQ5NjljY2M0MTU5OTRmMGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAg
LTI1OSw4ICsyNTksOSBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZAogI2VuZGlmCiB9CiAKLXZv
aWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKQorYm9v
bCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpCiB7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApAQCAtMjczLDcgKzI3NCw3IEBAIHVpbnQ2NF90
IFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
ICAgIHJldHVybiBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29sIFN1c3BlbmRlZFBh
Z2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6
cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYm
IGFzeW5jUmVwbHlJbmZvKQorYm9vbCBTdXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIC8v
IFNlbmQgbWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0aGUgSVBD
OjpDb25uZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRzIHF1ZXVl
aW5nIG9mIG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNo
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRl
eCA3N2Q3ZjdkYTgzNjZiNGUxZWIxZTBlNjQ0NTI3ZWViZmE5YzcyYWRhLi42NWQ2NzE5YjdkNDkx
NGVkMjhhMTNkNWNiNDk0MjUwYjY1Y2M0OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtOTIsMTIgKzkyLDEyIEBAIHByaXZhdGU6CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAzNTI3ZGQxYWUxNWVk
NDg4ZjcwYjY5N2UxNmUyOTUyY2Q1ZDJmNDU0Li5lYzlmODY2YjdiNmRhMjA5MzdjOGJhNTFhYjVl
YzAzZWEyNWM3NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjYWxsQ2xvc2VDb21wbGV0aW9uSGFuZGxlcnMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgbV9jbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YmI3OWQ3ZDAyZmQyMTQ4MjM0
NmM0ZTQ0ZTM2ZWNhZWQ0MmY4YTU2Li5hMjMzZjhlZTA5YWY1YTdhZjBlMjYxNjRmYTZjY2Y1YzU5
MGRlYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY0
ODQsNyArNjQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9GaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIG1fZmluZENsaWVudC0+ZGlkRmFpbFRvRmluZFN0cmlu
Zyh0aGlzLCBzdHJpbmcpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6
cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYm
IGFzeW5jUmVwbHlJbmZvKQogewogICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmRNZXNzYWdlKFdU
Rk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3ZDY0NzNlZWE5ZmQ5
YmE2NWM0OGFiOTFlMGQzNjZmYWZkOWJjZDguLjk3YjZkMTI5NjA2OWIxYTEwNDNkOTc0NTRhMWFj
MzA0MTUwYzUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NzM2LDcgKzE3MzYsNyBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50
NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
aW50NjRfdCBleHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmKTsKIApAQCAtMTkwNiw3ICsxOTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVz
ZXJBZ2VudChTdHJpbmcmJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICBib29s
IHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIG92ZXJyaWRlOworICAgIGJvb2wgc2VuZE1l
c3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rl
ciopPiwgdWludDY0X3Q+PiYmKSBvdmVycmlkZTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCA4MmQ3ZmNiYTdjOTJkZTRmYTFm
NDY0NmRlOGJhYmY2ZDY3NWE0MDhhLi4zMTg2YmQ5NTExOGMwZTU4MDQ5MmFiZTNlM2U4NTY4ZWRi
ZTZhZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFdlYlByb2Nlc3NQcm94eUxp
c3QgPSBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlBy
b2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5MDkyNjA2YmZiMmNl
ZDkxYmYxY2YwMzRiZGQyYmJlMGJlZjA3OWViLi5lMTMyNmFmODZjYjg2Njk2NzAzMDUwM2Y3MWY2
ODBkYzQwMjg3Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC0xNDMxLDcgKzE0MzEsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjpkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImCiAgICAgcmV0
dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUG9vbDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6
OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7
CiAgICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDMzNmIyNWM5YzY1YmM2NzQ1MDMzNTk4OWQ2NTBhZTZh
MzcwZjQ4NjMuLmFhYjA4YThjMGJhZDA0ZDFjOWM4NWRjMDRjM2ZhYTVhYjkwYzllM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTc0LDcgKzE3NCw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKLSAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKKyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKik7CiAgICAgdm9pZCBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4m
Jik7CkBAIC01NDQsNyArNTQ0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHVzZXNTaW5nbGVXZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9jb25maWd1cmF0aW9uLT51c2VzU2luZ2xlV2ViUHJvY2VzcygpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ1NWY3N2ZiNWM1M2Vj
NWYyMTk1YzY5Nzg2Nzc3ZGI1NmFjYjRmZDUuLjVhNjYyMDIyOTEzMDRiYmQ3MzdlMTE2Yjg4N2Fj
NGY5OTYzYWYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtODMwLDIwICs4MzAsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAv
LyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGlmIChkaXNwYXRj
aFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbC0+
ZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICBy
ZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNz
YWdlIGxvZ2dpbmcuCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggZDQxN2EzMDRjM2Y5NzBmY2MxMmM0ZGFiZjFhMWQwMWFhZGZh
NzIwZS4uMmE2OWFiZjYyMmM2Njg3NzhmZjczNjAzNmYwMjkzOWQ0MTFjMTlhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQ4Niw3ICs0ODYsNyBAQCBw
cml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNz
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIApAQCAtNDk5LDcgKzQ5OSw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NQcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgYm9vbCBjYW5UZXJtaW5h
dGVBdXhpbGlhcnlQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oCmluZGV4IDkzYzA2YmUzZTMwYThiYzMyYmRiMjYwNTVlNzgwYjQz
YzcyM2U0NmYuLjgxZTQyMWM2YWM5NDAxOTRiNzFiMWM5Yjk3ODMwYTM4NTNlM2E4MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2VjSXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJlcXVlc3RE
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRh
PiYmKT4mJik7CiAgICAgdm9pZCBzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVl
c3REYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VE
YXRhPiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3ODVlN2ZmNDU3ZGIyOWFhNjM3NTNjM2FhNGY2
NTVlYjJjNGI5OGMuLjQxOWZmNmI1MmE1NDMyY2Y1ZmUyYmUxNGNjMWY5MzgzMDlhMWJhYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29s
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5k
aXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMTlhNjJlZDMzZThmMWI2MmZkOGM4ZmVlYzZjYzNmNjc4N2I0NzM5Ny4uOTcx
ODI0YTMxNjY3YzJmNGUyOTE4Mzk0NmY1OGQ0MjQ5NTVlMjVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMTA2LDEx
ICsxMDYsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
LSAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1ZTU2NjdjYmMyM2M5Y2M1M2UzYjA4NDE3
M2M1ZDA4NTNmOTZkMjU4Li5iNTU3OGNhODg1ZGQxN2ZkYWUzY2UyMmU5ZGEwYTYxNTE4Y2I2N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE3NCwyNiArMTc0LDI3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCitib29sIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgQVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgICAgICB3ZWJQYWdlLT5w
YXltZW50Q29vcmRpbmF0b3IoKS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB3ZWJQYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGI5Nzk0NjU5ZWFiZDE4NGIz
ODljMDZkMTMyZjhjNDJmODA1MjNjYzIuLjBhYjc5MTViN2ZhY2UzOTVlZGZiYTM3ZDM5OTJlZWQ5
N2YzYjhiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC05Myw3ICs5Myw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCA4YzhiNmI2ZTk2YWFjZGJjYmRhZTU4Y2E4ZDk2NzlhN2RmMTUx
MmYzLi5iYzg5MWU5ZGJlN2I0MmE5YTY0MTcxZDZkOWRjYzRjZjk2N2ViNTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC05NywyNSArOTcsMjEgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICBwbHVnaW5Qcm94eS0+ZGlkUmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQor
Ym9vbCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpCisgICAgICAgIHJldHVybiBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKTsKIAotICAgIGlmICghZGVz
dGluYXRpb25JRCkgewotICAgICAgICBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmICghZGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuIGRp
ZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICBQbHVnaW5Qcm94eSogcGx1Z2luUHJveHkgPSBt
X3BsdWdpbnMuZ2V0KGRlc3RpbmF0aW9uSUQpOwogICAgIGlmICghcGx1Z2luUHJveHkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcGx1Z2luUHJveHktPmRp
ZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CisgICAgcmV0dXJuIHBsdWdpblByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpblBy
b3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lk
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmgKaW5kZXggOWE3ODEzMzU0MWVjMDNkMThiNDA1ZjE3Yzk4ZWE3MjIyZDYw
OWI2Yi4uMTk0N2NlZGYzN2ZkZjk3ZTg2YTZjMTY1M2MxMmQ5ODg1NzgyNzc3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC02NCwxMiArNjQsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGE2M2Q3NDgwNWJmZTg2YTMzNGI2MWVi
NGRmNGY1YTU2NjQ3OWEyNGQuLjAwOGMyMDIxNmRlNWI3YTE5N2YxZjI0MjRhMTJlNTYxMmM2ZmRl
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hl
ZCgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGx1Z2luUHJveHkodWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZDk1NGZjMjY5ODM0NTBhMzY1NGYwYWRmZmU4NGVl
NDUyYTZjYWEzOC4uNTJhNmQ0OTY5MWFmOTE3OWQ1M2RhOTA5NzcxMmM5NWY2MTFmOGEyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKQEAgLTY0NCwxNCArNjQ0LDE0IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnNlbmRNZXNzYWdlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGF1dG8gbWVzc2Fn
ZU5hbWUgPSBzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPigqbWVzc2FnZUlEKTsKLSAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4obWVzc2FnZU5hbWUsICpkZXN0
aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4obWVzc2FnZU5hbWUsICpkZXN0aW5hdGlvbklEKTsKIAogICAgIEpTVmFsdWVSZWYgcmV0dXJu
VmFsdWUgPSBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGJvb2wgaGFzUmVw
bHkgPSAhIW1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKG1lc3NhZ2VOYW1lKTsKICAg
ICBpZiAoaGFzUmVwbHkpIHsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4
dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsK
KyAgICAgICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOwogCiAgICAgICAgIEpTT2JqZWN0
UmVmIHJlc29sdmU7CiAgICAgICAgIEpTT2JqZWN0UmVmIHJlamVjdDsKQEAgLTY4Nyw3ICs2ODcs
NyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgIH0KIAogICAgIGlmIChh
cmd1bWVudENvdW50ID4gMykgewotICAgICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KCplbmNvZGVy
LCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKSkKKyAgICAgICAgaWYg
KCFlbmNvZGVBcmd1bWVudChlbmNvZGVyLmdldCgpLCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50
c1szXSwgZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKICAgICB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCBKU1ZhbHVlUmVmIEpTSVBD
OjpzZW5kU3luY01lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09i
amVjdFJlZgogICAgIGF1dG8gZW5jb2RlciA9IGNvbm5lY3Rpb24tPmNyZWF0ZVN5bmNNZXNzYWdl
RW5jb2RlcihtZXNzYWdlTmFtZSwgKmRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPiA0KSB7Ci0gICAgICAgIGlmICghZW5jb2RlQXJndW1lbnQo
KmVuY29kZXIsICpqc0lQQywgY29udGV4dCwgYXJndW1lbnRzWzRdLCBleGNlcHRpb24pKQorICAg
ICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KGVuY29kZXIuZ2V0KCksICpqc0lQQywgY29udGV4dCwg
YXJndW1lbnRzWzRdLCBleGNlcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA2YmNmNDQ0Njg1Y2I4ZmQ0MDI3OTkw
OGU5MmU4Nzc4NTk0ZDhiMTcwLi4wNjFmMjY2OThkOGZhY2NhMTM3MTcwNDRlZGEyNjA4NjFjNjg4
YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaApAQCAtMTI2LDEzICsxMjYsMTMgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEJhY2tp
bmdTdG9yZUZsdXNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmFja2luZ1N0b3Jl
Rmx1c2hlcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxCYWNraW5nU3RvcmVG
bHVzaGVyPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uKiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlcj4+KTsKKyAgICAgICAgc3RhdGljIFJlZjxCYWNraW5nU3RvcmVGbHVzaGVyPiBj
cmVhdGUoSVBDOjpDb25uZWN0aW9uKiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4p
OwogCiAgICAgICAgIHZvaWQgZmx1c2goKTsKICAgICAgICAgYm9vbCBoYXNGbHVzaGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNGbHVzaGVkOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBCYWNr
aW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiosIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1
ZmZlckZsdXNoZXI+Pik7CisgICAgICAgIEJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0
aW9uKiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4pOwogCiAgICAgICAgIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4gbV9jb21taXRFbmNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVhYmU5OWY5ZmI0ZWJhNzVh
OTVhMWQxYzg0ZjgxYmNhMjcwY2RhNzQuLjk5OTI4NzFiMWMwMGU4MjEwY2I2NmRlYmQyOGVlNmIw
OGRiMTI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTM4NSw4ICszODUsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2Fj
dGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9u
LCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwot
ICAgICpjb21taXRFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgYXV0byBjb21t
aXRFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbW1pdEVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5h
cmd1bWVudHMoKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNo
aW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgogICAg
IGJvb2wgaGFkQW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IGZhbHNlOwpAQCAtNDU3LDE0ICs0NTcs
MTQgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6bWFya0xheWVyc1ZvbGF0aWxl
SW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkKICAgICByZXR1cm4gbV9yZW1vdGVMYXllclRyZWVDb250
ZXh0LT5iYWNraW5nU3RvcmVDb2xsZWN0aW9uKCkubWFya0FsbEJhY2tpbmdTdG9yZVZvbGF0aWxl
SW1tZWRpYXRlbHlJZlBvc3NpYmxlKCk7CiB9CiAKLVJlZjxSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJh
Y2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQorUmVm
PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+PiBmbHVzaGVycykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcihjb25uZWN0aW9uLCBXVEZNb3ZlKGVu
Y29kZXIpLCBXVEZNb3ZlKGZsdXNoZXJzKSkpOwogfQogCi1SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6QmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4+IGZsdXNoZXJzKQorUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQogICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2NvbW1pdEVuY29kZXIoV1RGTW92
ZShlbmNvZGVyKSkKKyAgICAsIG1fY29tbWl0RW5jb2RlcihlbmNvZGVyLm1vdmVUb1VuaXF1ZVB0
cigpKQogICAgICwgbV9mbHVzaGVycyhXVEZNb3ZlKGZsdXNoZXJzKSkKICAgICAsIG1faGFzRmx1
c2hlZChmYWxzZSkKIHsKQEAgLTQ4MCw3ICs0ODAsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgICAgIGZsdXNoZXIt
PmZsdXNoKCk7CiAgICAgbV9oYXNGbHVzaGVkID0gdHJ1ZTsKIAotICAgIG1fY29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOworICAgIEFTU0VSVCht
X2NvbW1pdEVuY29kZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWFrZVVuaXF1
ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSksIHsgfSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDQzOTRjYzU3NjJmOTViZWI4MGYwMzcwYzNmMTg2MDBkNjdkZDU1OGQuLjky
MTE3NzQwM2M1YzJhZGVmYzgxMmEzNGJhMWMyNTRhMWExZDAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00ODg2LDkgKzQ4ODYsOSBAQCB2
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZAogICAgIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlBhZ2U6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikK
IHsgICAKLSAgICBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggZjIxOGU5MGQ3MjdjYzdkMGNhNjNlYWNlODA2NzEwMjI3MzI5MzdjZS4uODRjNWM0
OWQ3MmQ4MzI2M2Y4ZmJkYTQ0ZGY4MzhmMWM1MjdlZThiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFJlZjxXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcj4mJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKSBvdmVycmlkZTsKIAogICAgIC8vIC0tIEluamVjdGVkQnVuZGxlIG1ldGhvZHMKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxN
ZW51SXRlbUVsZW1lbnQmKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGExOWEwMjNmNzg3ZDUzOTY3NDliYmJjZjMyNzU0ODQ4YWIxYWQ3OTQuLjk2
YjFhZDQ3Y2MwYWMzOTU4M2NkZjFjOTQwMjU1MzAwMDUyOTMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTgwMSwxMCArODAxLDExIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dGVybWluYXRlKCkKICAgICBBdXhpbGlhcnlQcm9jZXNzOjp0ZXJtaW5hdGUoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBpZiAobWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU4YTc5ZjhhMjI5NDFiM2NmNjlk
NWVjNWZjMzI1MDA4NzFhNTAzMjcuLjRiZTU1ZGJlMWMwYWE4ZmE0NzEyZmFhNGNjZjlmZDU1NGQ5
MmI5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNTE2LDcgKzUx
Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICBmcmll
bmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2Vu
ZXJhdGVkIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZl
V2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422781</attachid>
            <date>2021-03-09 17:08:13 -0800</date>
            <delta_ts>2021-03-09 18:21:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222992-20210309170812.patch</filename>
            <type>text/plain</type>
            <size>171451</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlmOTBhZDExOWEyYmI1ZmIz
Y2QxNjQ0OTJjNDc5MTFhZjRlMzFlZjYuLmYyMTJkY2IwM2YzNDg3YzkxZTViYzRjMDAzMzEwYWVi
MTI4MTU1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDMtMDkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVW5pcXVlUmVmPD4gaW5zdGVh
ZCBvZiBzdGQ6OnVuaXF1ZV9wdHI8PiB3aGVuIHBhc3NpbmcgSVBDOjpFbmNvZGVyIHRvIHNlbmRN
ZXNzYWdlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgVXNlIFVuaXF1ZVJlZjw+IGluc3RlYWQgb2Ygc3RkOjp1bmlxdWVfcHRyPD4gd2hlbiBwYXNz
aW5nIElQQzo6RW5jb2RlciB0byBzZW5kTWVzc2FnZSgpLCB0bworICAgICAgICBtYWtlIGl0IGNs
ZWFyIGl0IGNhbm5vdCBiZSBudWxsLgorCisgICAgICAgIEkgaGFkIHRvIHVwZGF0ZSBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoKSB0byByZXR1cm4gYSBib29sZWFuIHNpbmNlIHdlIGNhbiBubyBsb25n
ZXIgcmVseQorICAgICAgICBvbiB0aGUgZnVuY3Rpb24gbnVsbGluZyBvdXQgdGhlIGVuY29kZXIg
aXQgaXMgZ2l2ZW4gKHNpbmNlIEkgbW9kaWZpZWQgdGhlIHR5cGUgZnJvbQorICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHIgdG8gV1RGOjpVbmlxdWVSZWYpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5j
TWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kU3luY01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kU3lu
Yyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpF
bmNvZGVyOjp3cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0VuY29kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdl
QXN5bmMpOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb24p
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcDoKKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVNlbmRlcjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2Eu
bW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRn
b2luZ01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZCk6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3lu
Y1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGlu
Z0FQSTo6SlNJUEM6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQ
STo6SlNJUEM6OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1
cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9y
ZUZsdXNoZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2gpOgorCiAyMDIxLTAzLTA5ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQyBIYXJkZW5pbmddIFByb3RlY3QgYWdh
aW5zdCBiYWQgaW5wdXQgaW4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcigpIGFuZCBNZXNzYWdlUmVjZWl2ZXJNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA0YWRiMTAz
Y2I1ZmY2YjM0Mjc4ZGFjMGJiM2E1M2RmYTNkZGRjNGM0Li44NWRlMTEwOTUyNWZlYWI1Njg3YjQx
MTE1ZDYyMjIyZjFjYmE4Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NzYsNyArNTc2LDcgQEAgYm9v
bCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEMKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlz
cGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi1ib29sIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCitib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKQEAgLTYzMiwxMSArNjMyLDkgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwK
ICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKQogICAgICAgICAvLyBTa2lwIG1lc3NhZ2VzIGZvciBhbHJlYWR5IHJlbW92ZWQgcmVj
ZWl2ZXJzLgotICAgICAgICByZXBseUVuY29kZXIucmVzZXQoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCmluZGV4IGU5NzRkOGFlOWZkZDQ2MzgyZjg5NjViN2M2MjMxYTgzMTBlMmQ3OTYuLjkxY2M3
MTk4MGU1NmJiN2YwNGFjNTYyYjllYmYzODhlY2Q1NWMwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTkyLDEw
ICsxOTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZU5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpIGZpbmFsOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICAvLyBOb3dQbGF5aW5nTWFu
YWdlcjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMTQ1OWI0MGM2MjY1OGZhZTMyNjhkMmFl
ZTQ5ZTQ5MGFkY2VjNTU0MS4uMzk0M2Q1MjFkMzY5M2ZiZDJjZWYzNmI0N2QzNDk2YjFjMmRmMzY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
ICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmgKaW5kZXggNDgzMDA2OTFjNzljNjQyZWUzNjQzMmUxYTI5ZjlmODhjYjNjNjMzZS4uZjg0
ZDZmOGUzZjVjYzU3N2RlOGZhMDFiNGNjMGFmOWFjM2NmZWNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmgKQEAgLTUzLDEyICs1MywxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAgIH5SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9Cisg
ICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mIGVuY29kZXIpIHsgcmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCBlbmNvZGVyKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQogCiBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29s
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRl
LCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIElQQzo6U2VtYXBob3JlJiYgcmVuZGVyU2VtYXBo
b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaAppbmRleCBiZDQ2YjU4MTg5
MmZmNDk2YWFhMTM3ODdlZGU3N2I1MTZlNTQyZGFhLi44Mzg3N2U1MjJlY2VmMWMxMDJjNTNkZmM1
Njg3YTIwNzYzMWJjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBVbmlxdWVSZWY8UmVt
b3RlQXVkaW9TZXNzaW9uUHJveHk+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUZhY3RvcnlQcm94eS5jcHAKaW5kZXggNTk2MzA1MTgwNmZmNWRjZjBlYTFlZGJlMTQzZjE3ZGFl
OTc3NDcyMS4uMTU1ZWJhZmZiOWE5NGRiYmZkODcyNTUyYWYyZGMyYmVhYTYyN2Q5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3Rv
cnlQcm94eS5jcHAKQEAgLTk5LDIyICs5OSwyNSBAQCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6ZGlkUmVjZWl2ZUNETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgog
ICAgICAgICBzZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
IH0KIAotdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5j
b2RlcikKIHsKICAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFJlbW90ZUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSkpKQotICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4gcHJveHktPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUNE
TUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiBlbmNvZGVyKQogewogICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IG1faW5zdGFu
Y2VzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBpbnN0YW5jZS0+ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICBy
ZXR1cm4gaW5zdGFuY2UtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCBlbmNvZGVyKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNRmFjdG9y
eVByb3h5OjpkaWRSZWNlaXZlU3luY0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQorYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtl
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4g
c2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29k
ZXIpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6
OmFkZFByb3h5KGNvbnN0IFJlbW90ZUNETUlkZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAppbmRleCA5MjhiMzk5
Mzk0OTQ4NzhhOWZlYzg5ZDFmOTc4NGNkYjVkMDIxN2YwLi5jNGU4NmMzNzI1ODBjMzkxNjlkOGM0
M2UyMjQzOTZhYWIzYThjOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC01MCwxMyArNTAsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflJlbW90ZUNETUZhY3RvcnlQcm94eSgpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOyB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOyB9CisgICAgYm9vbCBkaWRSZWNlaXZl
U3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpIHsg
cmV0dXJuIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNETUluc3Rh
bmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNSW5zdGFuY2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETUluc3RhbmNlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNDRE1JbnN0YW5jZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jQ0RNSW5zdGFuY2VTZXNzaW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
OwogCiAgICAgdm9pZCBhZGRQcm94eShjb25zdCBSZW1vdGVDRE1JZGVudGlmaWVyJiwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiYmKTsKICAgICB2b2lkIHJlbW92ZVByb3h5KGNvbnN0
IFJlbW90ZUNETUlkZW50aWZpZXImKTsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAg
IC8vIE1lc3NhZ2VzCiAgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDkyNGVhZGQ1MzcyY2EyNWEx
MjFiMjVmZGE4NjZhMmFjZWJiNDdlNWMuLmI0Y2U3NDk0YTE3YmZjNTZlNGNmODZlYzU2ZmQ5YTQz
Zjk3YzMyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKSBmaW5hbDsKIAogICAgIHVzaW5nIFN1Y2Nlc3NWYWx1ZSA9IFdlYkNvcmU6OkNETUluc3Rh
bmNlOjpTdWNjZXNzVmFsdWU7CiAgICAgdXNpbmcgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
ID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXgg
NWRkMzBmODk2NmRhMzQxZTBiMDM3ZGNjZTlmMmVmNTU2MzEwNmJiMy4uODY2MGFkYzdiMDkwYjVi
YzZkMzk4OGFiMzBiMDA2YzU4YjZhM2YwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYsIFdlYkNvcmU6
OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAppbmRl
eCA0YTEwZWEzODUzZjJmMTE1MDMxNTI0MzVmYTIyNThkZmQ5ZDUwMGQ2Li40NjlkNjMxNjcwN2Fh
N2M1NzhjOTljMzY1YzZmZDhkNDBlYmIzYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAg
ICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlRGVjb2Rlcihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXI+JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKaW5k
ZXggMzc4ZmEzNGRlODdiNzBjODk4MmEyMjZmYjk5MGMxNWU3MDAzZDE1ZC4uYmE3MmZiNzg2Mjg1
MmU2NjhmOTQ1N2U3NWJjZWU1NTAxNDNhYTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5j
cHAKQEAgLTk1LDE2ICs5NSwxOCBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgYwogICAgICAgICBz
ZXNzaW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCitib29sIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQotICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgICAgICByZXR1cm4gcHJveHktPmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZl
U3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAg
ICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IGVuY29kZXIpOworICAgICAgICByZXR1cm4gc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAog
dm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUxlZ2FjeUNE
TUlkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PiYmIHByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDZmYzZhOTllYTU0NmMy
MDMzN2I5NjRjYzk5NmY0MmIwNzE3M2MwZjQuLjVmZDhmYTU0NmEwOTdiZjhkNDRhNzIzZmNlYmQ3
ZmU1ZTlkYjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTQ5LDExICs0OSwxMSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KCk7CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZy
b21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICBib29s
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikgeyByZXR1cm4gZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lk
IGFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1Qcm94eT4mJik7CiAgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2VzCiAgICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggNWMzM2Nh
Mzc0NDg0YjQ2MDI4MWU4ZWRjMTI1Y2M5MDE4NmM2NjdiNC4uNDJkMDk0MTU4NmI1OGIxNGEzMDIy
ZGNjMGNhNjViZWUyMGU3NjBlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlcwogICAgIHVzaW5nIFN1cHBvcnRz
TUlNRVR5cGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCmluZGV4IDhjN2JjMzBkNTRlZWNhYzljYTI1ZGJkMzI2YTc3MTM4ZmEw
OWY0ZmEuLmM5MGY1ZGExMzIxMDAxNzU1ZjQwYWFlNDU2ZDk3ZGZhODVjMGJlOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CiAKICAgICAvLyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGE4ZDFlZjUxYWQ3Zjg0ZmZmY2E0NjFjNzJmMzIwMjZl
YjFjZTJlYjAuLmViYmZhNzAzMzUwNDVjNmE0MjIwYWIyYTE1NmI0YjU4YmVkODhlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMTY2LDExICsxNjYsMTIgQEAgdm9pZCBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVBsYXllck1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb24KICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK2Jvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVT
eW5jUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoYXV0byogcGxheWVyID0gbV9wcm94aWVz
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxNZWRpYVBsYXllcklkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHBsYXll
ci0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogLy8gTWF5IGdldCBjYWxsZWQgb24gYSBiYWNrZ3JvdW5k
IHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggYjMyMjVkYjg3YTdmYjA4
NDM2MDhkZTA2ODNlNzZmNWM0NGIzMjFlMS4uOGFjZGQ0OTdhOTFjZjI0ZTIzMDY4YmZlZmEzODEx
NzAwOWU1NjBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTYwLDE2ICs2MCwx
NiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2Vi
UHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQotICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCBlbmNvZGVyKTsgfQorICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKSB7IHJldHVybiBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KICAgICB2b2lkIGRpZFJlY2Vp
dmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY1BsYXllck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5p
cXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXll
cj4gbWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJik7CiAK
IHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9u
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDVmOTI3NTcyYWYzM2Q3ZTdiYjIxYjcwZTli
MmFiMDUwNjk2NGZiMTQuLmJkNmM3NjlmNTBmYWRkMDJhZjlmZWQwNTM2MDFhMzVkY2VkMzQyOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGdldENvbmZpZ3VyYXRpb24o
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IGQ5
NTAwY2IyNDUxODEyMmFiNDEwMTAwM2VhYzM3NTI2Njg0ZmI5YjkuLmE0MmI4MTJhNmRiNjIxMzJh
ZjI5N2E5OTIzY2Y5N2E4ODE5YmVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApAQCAtNzgsNyArNzgsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB1c2luZyBBZGRTb3VyY2VC
dWZmZXJDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXI+KT47CiAgICAgdm9pZCBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5
cGUmLCBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggMTVj
ODQ3M2YzNGY2Mzg5ZjBiMWRjMWQzM2M3MGI0MjgyNzQyZjQzNS4uYzBlOGRiY2IwNjY3NjE1Mzdk
MDJlYmNkYjYxMWU3MjJjMjdjMmNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAgLTgxLDcgKzgxLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAg
ICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIC8vIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB2b2lkIHNldEFjdGl2ZShi
b29sKTsKICAgICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6U291cmNlQnVmZmVyQXBwZW5kTW9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDg0YzkxM2FkMWMwYTkxNGZmNmQ0YTk3
ZTY5YjE1MmM0ZWJiYzY4MDguLjRmNTg4NWU4Zjc0ZjMyOWViZDNlZWJkZmVhYTk2N2YyYzdhNmY0
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yODUsMjEgKzI4NSwxOSBAQCBD
YWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2FjaGVTdG9yYWdlQ29ubmVjdAogICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseSkKK2Jvb2wgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mIHJlcGx5KQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCBNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3MgSVBDIGlzIG9ubHkgc3VwcG9zZWQgdG8gY29tZSBmcm9tIHRoZSBV
SVByb2Nlc3MuCiAgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpICE9IE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBkaWRS
ZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICByZXR1cm4gZGlkUmVj
ZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlciwgcmVwbHkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgaWYgKG1fc3dDb25uZWN0
aW9uKQotICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLCByZXBseSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHJldHVybiBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIsIHJlcGx5KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgog
CkBAIC0zMTAsNiArMzA4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKIAogICAgIFdURkxv
Z0Fsd2F5cygiVW5oYW5kbGVkIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlICclcyciLCBkZXNjcmlw
dGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVwZGF0ZVF1b3RhQmFzZWRPblNwYWNlVXNhZ2VGb3JUZXN0aW5nKGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDQ4ZDFjMThlOTM0NWU1
YmZiZGI4ZmY4MGNjYzliODJjYWM1MDcwNjguLmRhMDZmNzM5ZWZhNWQ1MzQwZTlhNjE4MjM4NWJl
NWIwNjczZTIzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE5MywxMyArMTkzLDEz
IEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAg
ICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIHBlcmZvcm1TeW5jaHJv
bm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCA3Mzg1NTY3ZDRhMDVhNmE0MGM4ZDJhMDhkMjJmMzJjYTA5ZjQ5ODMxLi40ODg5
NjU1NmMyMjdjMWYwZTE1MTMyOGJmOGJhZmNiZjcxNDM4NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjQ0LDE5ICsyNDQsMTkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpCitib29sIE5ldHdvcmtQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pOwogICAgIGlmIChwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpICE9ICZjb25uZWN0aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiSWdub3JlZCBtZXNz
YWdlICclcycgYmVjYXVzZSBpdCBkaWQgbm90IGNvbWUgZnJvbSB0aGUgVUlQcm9jZXNzIChkZXN0
aW5hdGlvbj0lIiBQUkl1NjQgIikiLCBkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
LCBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAobWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNOZXR3
b3JrUHJvY2Vzc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxZDRlMzI3
YWFiNDI3YjE3YmUzMDJkNzdlNzM3ZWIzMDRhYTkxNmRiLi5mYTQyMzM0ZWMwY2ExYWQwNTAyM2Vj
YmY3OGQxMzFkMDFiM2VmMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC00MDIsNyArNDAyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKIAogICAgIC8vIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50CkBAIC00MTMsNyArNDEzLDcg
QEAgcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbk1hbmFnZXImIGRvd25sb2Fkc0F1dGhlbnRp
Y2F0aW9uTWFuYWdlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBi
b29sIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggNTEwZDVhYzg5ODU1YTNhMzRkNGExNzNm
ODBjNjNkYzIzMzcyMzU0NS4uMGQ2ZTdhZWRmZjY4MjI3YmY3ZGM4YWI3MTg0YWJjNmZkMzMyMWM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJTdG9yYWdlTmFtZXNwYWNlcygpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKTsKICAgICAKICAgICBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIqIGxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmdldCgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
CmluZGV4IGUyODUxZWVlZGU2YTcxNTgyOWJiN2FjNDQ3YmQ1ZTQxODRjNjdmYTguLmYwY2VhYTg4
NjJiNmEyMjliMDg5YTAzNGYxZjU1Mjg4MzU0NzM3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZU9yaWdpbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2Rlcik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcik7
CiAKIHByaXZhdGU6CiAgICAgU3RvcmFnZU1hbmFnZXJTZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggODZlY2RkZDdmNmUzYjFhZDdjYzdiMWQwYmFk
YjQzYmRmYzIzMjNiYi4uOTUyNGVhYmI3OGVkZjQxNTBjMmUwODY0N2ViMjRkNTk3ZTU1MzZjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM3MiwxNSAr
MzcyLDE1IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KE1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5h
bWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNv
ZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFu
ZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCi0gICAgbWVzc2Fn
ZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CisgICAgYm9vbCB3YXNIYW5kbGVkID0gbWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSgqdGhpcywgKmRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhN
RTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGludmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5j
TWVzc2FnZUVycm9yLgogICAgIEFTU0VSVChkZWNvZGVyLT5pc1ZhbGlkKCkpOwogCi0gICAgaWYg
KHJlcGx5RW5jb2RlcikKKyAgICBpZiAoIXdhc0hhbmRsZWQpCiAgICAgICAgIHNlbmRTeW5jUmVw
bHkoV1RGTW92ZShyZXBseUVuY29kZXIpKTsKIH0KIApAQCAtNDE1LDE4ICs0MTUsMTggQEAgdm9p
ZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQog
ICAgIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlID0gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNS
ZXF1ZXN0SUQpCitVbmlxdWVSZWY8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3Nh
Z2VFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlUmVmPEVuY29kZXI+KG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsK
IAogICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgogICAgIHN5bmNSZXF1ZXN0SUQg
PSArK21fc3luY1JlcXVlc3RJRDsKLSAgICAqZW5jb2RlciA8PCBzeW5jUmVxdWVzdElEOworICAg
IGVuY29kZXIuZ2V0KCkgPDwgc3luY1JlcXVlc3RJRDsKIAogICAgIHJldHVybiBlbmNvZGVyOwog
fQogCi1ib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCitib29sIENvbm5l
Y3Rpb246OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNl
dDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5k
T3B0CiAgICAgICAgIGJvb2wgaGFzRGVhZE9ic2VydmVycyA9IGZhbHNlOwogICAgICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVyV2Vha1B0ciA6IG1fbWVzc2FnZU9ic2VydmVycykgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIG9ic2VydmVyID0gb2JzZXJ2ZXJXZWFrUHRyLmdldCgpKQotICAgICAgICAg
ICAgICAgIG9ic2VydmVyLT53aWxsU2VuZE1lc3NhZ2UoKmVuY29kZXIsIHNlbmRPcHRpb25zKTsK
KyAgICAgICAgICAgICAgICBvYnNlcnZlci0+d2lsbFNlbmRNZXNzYWdlKGVuY29kZXIuZ2V0KCks
IHNlbmRPcHRpb25zKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBoYXNEZWFk
T2JzZXJ2ZXJzID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDc1LDcgKzQ3NSw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9w
dGlvblNldDxTZW5kT3B0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29ubmVjdGlvbjo6
c2VuZFN5bmNSZXBseShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikKK2Jvb2wgQ29u
bmVjdGlvbjo6c2VuZFN5bmNSZXBseShVbmlxdWVSZWY8RW5jb2Rlcj4mJiBlbmNvZGVyKQogewog
ICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCB7IH0pOwogfQpAQCAtNTY0
LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9y
TWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWluCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3luY01lc3Nh
Z2UodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29k
ZXIsIFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09w
dGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29ubmVjdGlvbjo6c2VuZFN5bmNNZXNz
YWdlKHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIs
IFRpbWVvdXQgdGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODc5LDEwICs4Nzks
MTEgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlcygpCiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAg
ICAgICAgIGlmIChtX291dGdvaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgbWVzc2FnZSA9IG1fb3V0Z29pbmdNZXNzYWdlcy50YWtlRmly
c3QoKTsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdvaW5nTWVzc2FnZXMudGFrZUZpcnN0
KCkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lc3NhZ2Up
OwogCi0gICAgICAgIGlmICghc2VuZE91dGdvaW5nTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKSkK
KyAgICAgICAgaWYgKCFzZW5kT3V0Z29pbmdNZXNzYWdlKG1ha2VVbmlxdWVSZWZGcm9tTm9uTnVs
bFVuaXF1ZVB0cihXVEZNb3ZlKG1lc3NhZ2UpKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9
CiB9CkBAIC04OTgsOCArODk5LDkgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVl
c3RJRCk7CiAKKyAgICBib29sIHdhc0hhbmRsZWQgPSBmYWxzZTsKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGlu
ZykgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0
aW5nKSB7CiAgICAgICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CkBAIC05MTIsNyArOTE0
LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIFN5bmNNZXNzYWdlU3RhdGU6OnNpbmdsZXRvbigpLmRpc3BhdGNoTWVzc2Fn
ZXMoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVy
IGFuZCBlbmNvZGVyIHRvIHRoZSBjbGllbnQuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgd2FzSGFu
ZGxlZCA9IG1fY2xpZW50LmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVw
bHlFbmNvZGVyKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSWYgdGhlIG1lc3NhZ2Ugd2FzIGlu
dmFsaWQsIHdlIHNob3VsZCBzZW5kIGJhY2sgYSBTeW5jTWVzc2FnZUVycm9yLgpAQCAtOTIyLDcg
KzkyNCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIEFTU0VSVChkZWNvZGVyLmlzVmFsaWQoKSk7CiAjZW5kaWYKIAotICAgIGlm
IChyZXBseUVuY29kZXIpCisgICAgaWYgKCF3YXNIYW5kbGVkKQogICAgICAgICBzZW5kU3luY1Jl
cGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaAppbmRleCAwZDg1ZDhkN2NlOGY0ZDE3NWQ0YTA0MzQyNzljMTViMGUzOGZj
MWY3Li40ZjZiMTg0ZmY0MGQ5OTI4OGViNjA2MGE3YzU4ODZiMzczNmM0YjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApA
QCAtMjczLDEwICsyNzQsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gd2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8VD4oZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCB3
YWl0Rm9yT3B0aW9ucyk7CiAgICAgfQogCi0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihNZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBzZW5kU3luY01lc3NhZ2UodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBUaW1lb3V0LCBPcHRpb25TZXQ8
U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7Ci0gICAgYm9vbCBzZW5kU3luY1JlcGx5
KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKKyAgICBV
bmlxdWVSZWY8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IHNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVz
dElELCBVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgVGltZW91dCwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0
aW9uPiBzZW5kU3luY09wdGlvbnMpOworICAgIGJvb2wgc2VuZFN5bmNSZXBseShVbmlxdWVSZWY8
RW5jb2Rlcj4mJik7CiAKICAgICB2b2lkIHdha2VVcFJ1bkxvb3AoKTsKIApAQCAtMzMyLDcgKzMz
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0
OwogICAgIGJvb2wgcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcygpIGNvbnN0OwogICAg
IHZvaWQgc2VuZE91dGdvaW5nTWVzc2FnZXMoKTsKLSAgICBib29sIHNlbmRPdXRnb2luZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+KTsKKyAgICBib29sIHNlbmRPdXRnb2luZ01lc3Nh
Z2UoVW5pcXVlUmVmPEVuY29kZXI+JiYpOwogICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7
CiAgICAgCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCkBAIC00MDEsNyAr
NDAyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE91dGdvaW5nIG1lc3NhZ2VzLgogICAgIExvY2sg
bV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7Ci0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEVuY29k
ZXI+PiBtX291dGdvaW5nTWVzc2FnZXM7CisgICAgRGVxdWU8VW5pcXVlUmVmPEVuY29kZXI+PiBt
X291dGdvaW5nTWVzc2FnZXM7CiAgICAgCiAgICAgQ29uZGl0aW9uIG1fd2FpdEZvck1lc3NhZ2VD
b25kaXRpb247CiAgICAgTG9jayBtX3dhaXRGb3JNZXNzYWdlTXV0ZXg7CkBAIC01MDIsOCArNTAz
LDggQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6
aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgKmVuY29kZXIg
PDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVm
PEVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci5nZXQoKSA8
PCBtZXNzYWdlLmFyZ3VtZW50cygpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZN
b3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiB9CkBAIC01MTcsNyArNTE4LDcgQEAgdWludDY0
X3QgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxl
dGlvbkhhbmRsZXIsIHVpbnQKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3lu
Y01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZVJlZjxFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGFkZEFzeW5jUmVw
bHlIYW5kbGVyKCp0aGlzLCBsaXN0ZW5lcklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERlY29k
ZXIqKT4oW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChE
ZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgZGVjb2Rl
ci0+aXNWYWxpZCgpKQpAQCAtNTI1LDggKzUyNiw4IEBAIHVpbnQ2NF90IENvbm5lY3Rpb246OnNl
bmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICB9LCBDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5U
aHJlYWQpKTsKLSAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwotICAgICplbmNvZGVyIDw8IG1l
c3NhZ2UuYXJndW1lbnRzKCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAg
IGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgcmV0dXJuIGxpc3RlbmVySUQ7CiB9
CkBAIC01NTYsNyArNTU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ29ubmVjdGlvbjo6U2Vu
ZFN5bmNSZXN1bHQgQ29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UKICAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElE
ID0gMDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlciA9IGNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IGNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKHNlbmRTeW5jT3B0aW9ucy5j
b250YWlucyhTZW5kU3luY09wdGlvbjo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5n
KSkgewogICAgICAgICBlbmNvZGVyLT5zZXRGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3Rpbmco
KTsKQEAgLTU2NCw3ICs1NjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDb25uZWN0aW9uOjpT
ZW5kU3luY1Jlc3VsdCBDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZQogICAgIH0KIAog
ICAgIC8vIEVuY29kZSB0aGUgcmVzdCBvZiB0aGUgaW5wdXQgYXJndW1lbnRzLgotICAgICplbmNv
ZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpOwogCiAgICAgLy8gTm93IHNlbmQgdGhlIG1lc3NhZ2UgYW5kIHdhaXQgZm9y
IGEgcmVwbHkuCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNl
bmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElELCBXVEZNb3ZlKGVuY29kZXIpLCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAppbmRl
eCA5NjczMGRlYmQxN2JiZmExYmI1YTI1Nzk3ZjkwZmU2M2E2NmVlZmQ0Li5lYzllOGNmYmU1NzUy
Nzc5NDgyNWJmZmQ0ZjRhZGZhZDRiNTI0ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9F
bmNvZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CkBAIC0xMjIsNyArMTIzLDcgQEAgdm9pZCBFbmNvZGVyOjpzZXRGdWxseVN5bmNocm9ub3Vz
TW9kZUZvclRlc3RpbmcoKQogICAgIG1lc3NhZ2VGbGFncygpLmFkZChNZXNzYWdlRmxhZ3M6OlVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6d3Jh
cEZvclRlc3Rpbmcoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG9yaWdpbmFsKQordm9pZCBFbmNv
ZGVyOjp3cmFwRm9yVGVzdGluZyhVbmlxdWVSZWY8RW5jb2Rlcj4mJiBvcmlnaW5hbCkKIHsKICAg
ICBBU1NFUlQoaXNTeW5jTWVzc2FnZSgpKTsKICAgICBBU1NFUlQoIW9yaWdpbmFsLT5pc1N5bmNN
ZXNzYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IDcyZWIzM2Q5
MDE2MDZkMjg5YzcwZDhjMTNiZGM0MzdlZmEzYTZlNzEuLjVhYWRlY2M3MjcxZTY1MWU3ZGIwMjMx
OWFmNzUxMzQ2MWIwN2M1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJTdHJp
bmdSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNTYsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCB3cmFwRm9yVGVz
dGluZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4pOworICAgIHZvaWQgd3JhcEZvclRlc3Rpbmco
VW5pcXVlUmVmPEVuY29kZXI+JiYpOwogCiAgICAgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90LCBzaXplX3QgYWxpZ25tZW50KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDkyOTYzZTIxZTFkNzE3
ZjY0YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQuLjc1MTU5MzhkNDJkZTM2NTU0NTBkYjA0ZDJmZTIw
OWY1ZGVmMDFhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKQEAgLTEzNCwzNSArMTM0LDM3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVjdCwgTUYg
ZnVuY3Rpb24pCitib29sIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8RW5jb2Rlcj4mIHJlcGx5RW5jb2Rl
ciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKICAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2Rp
bmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKICAgICBkZWNv
ZGVyID4+IGFyZ3VtZW50czsKICAgICBpZiAoIWFyZ3VtZW50cykgewogICAgICAgICBkZWNvZGVy
Lm1hcmtJbnZhbGlkKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtyZXBseUVuY29kZXIgPSBXVEZNb3ZlKHJlcGx5RW5jb2RlciksIGNvbm5lY3Rpb24gPSBtYWtl
UmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewogICAgICAgICBUOjpz
ZW5kKFdURk1vdmUocmVwbHlFbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7
CiAgICAgfTsKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOworICAgIHJldHVybiB0
cnVlOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4K
LXZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQorYm9vbCBoYW5kbGVNZXNzYWdl
U3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2Rl
ciYgZGVjb2RlciwgVW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIsIEMqIG9iamVjdCwg
TUYgZnVuY3Rpb24pCiB7CiAgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFt
ZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBhcmd1bWVu
dHM7CiAgICAgaWYgKCFhcmd1bWVudHMpIHsKICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAg
ICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3JlcGx5RW5j
b2RlciA9IFdURk1vdmUocmVwbHlFbmNvZGVyKSwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92
ZShyZXBseUVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9Owog
ICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
PgpAQCAtMjA1LDcgKzIwNyw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAg
ICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0geyBbbGlzdGVuZXJJ
RCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8m
Ji4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPihUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CisgICAgICAg
IGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVw
bHlOYW1lKCksIGxpc3RlbmVySUQpOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2Rlciks
IFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH0sIFQ6OmNhbGxiYWNrVGhyZWFk
IH07CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKQEAgLTIyMiw3ICsyMjQsNyBA
QCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luY1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5j
UmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9IGRlY29kZXIuZGVzdGluYXRp
b25JRCgpLCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdz
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihU
Ojphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgbGlzdGVuZXJJRCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWVSZWY8RW5jb2Rlcj4oVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCks
IGxpc3RlbmVySUQpOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUo
Y29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNv
bm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBvYmplY3QsIGZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyLmgKaW5kZXggMmJhMjA4MTkyYTFmNDZhZGQ5NjgwMmM4ZTEwNDdiMDIxZDY1M2U5
ZS4uYjgyZmVmMjNhMTAyZDkzMjQyODY2ZjQyZDZlZjYxOWNkMDU2OGE0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKQEAgLTQ2LDkgKzQ2LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYpCisgICAgdmlydHVhbCBib29sIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIFVuaXF1ZVJlZjxFbmNvZGVyPiYpCiAgICAg
ewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlUmVjZWl2ZXJNYXAuY3BwCmluZGV4IDg4MGYzNmE0MWVlOWViOTFhZmQ5YzBkOTE5NGIzNzBh
ZGM2NWZjYmUuLmQ4ODBlOTBjNWJjNTI3NTYwMzg1MTE0ZjY5NzEyNzJhOWRmYWZlNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcApA
QCAtMTMzLDE5ICsxMzMsMTUgQEAgYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3BhdGNoTWVz
c2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgTWVzc2FnZVJlY2VpdmVyTWFwOjpkaXNwYXRjaFN5bmNNZXNzYWdl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBNZXNzYWdlUmVjZWl2ZXJNYXA6OmRpc3Bh
dGNoU3luY01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwg
VW5pcXVlUmVmPEVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgaWYgKGF1dG8gbWVzc2Fn
ZVJlY2VpdmVyID0gbV9nbG9iYWxNZXNzYWdlUmVjZWl2ZXJzLmdldChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkpIHsKICAgICAgICAgQVNTRVJUKCFkZWNvZGVyLmRlc3RpbmF0aW9uSUQo
KSk7Ci0KLSAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgIH0KIAotICAgIGlmIChhdXRvIG1l
c3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3RkOjptYWtlX3BhaXIoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpIHsK
LSAgICAgICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQor
ICAgIGlmIChhdXRvIG1lc3NhZ2VSZWNlaXZlciA9IG1fbWVzc2FnZVJlY2VpdmVycy5nZXQoc3Rk
OjptYWtlX3BhaXIoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGRlY29kZXIuZGVzdGlu
YXRpb25JRCgpKSkpCisgICAgICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogCiAgICAgcmV0
dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZXJNYXAuaAppbmRleCA1YTEzZGUyYzFlN2ExOGFkYTliMjg0OTBmNTUyODc1ZDdhNGZjNjE3
Li42ODc1YjM0MWNmODAyZDlkZGE3Y2FlMTA5NmE0ZTBlMThiYjBlZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICBib29sIGRpc3BhdGNo
TWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYpOwotICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVz
c2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiYpOwor
ICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShDb25uZWN0aW9uJiwgRGVjb2RlciYsIFVuaXF1
ZVJlZjxFbmNvZGVyPiYpOwogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgcmVjZWl2ZXJzIHRo
YXQgZG9uJ3QgcmVxdWlyZSBhIGRlc3RpbmF0aW9uIElELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcAppbmRleCBiMWE4M2JiNDQ5MjQyZjlhNjdjYmFiMGUx
Y2Q1YjU5MmZkYzEzNjg4Li5kYzNkNDljNDY4YTk5OGViZmZkYmFjMDY5MWEzZjEyYWQ3NWM5Y2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcApAQCAt
MzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIAogTWVzc2FnZVNlbmRlcjo6fk1lc3NhZ2VT
ZW5kZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgTWVzc2FnZVNlbmRlcjo6c2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpE
ZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIE1lc3NhZ2VTZW5k
ZXI6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIsIE9wdGlvblNldDxT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCiB7
CiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CiAgICAg
QVNTRVJUKGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oCmluZGV4IGYwYWJhNTE0MWFiZjhjZjg0ZmIyNTkwNTY0MjViZjdlN2JhMjY4OWUuLmJk
NzI4MmJkNWYxMWY2YWVhZDU4ODU3Zjc3MjZjMTU5NTE2OThkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CiAKQEAgLTQzLDggKzQ0LDggQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2Fn
ZSBpcyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbWVzc2Fn
ZS5hcmd1bWVudHMoKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxFbmNv
ZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8
IG1lc3NhZ2UuYXJndW1lbnRzKCk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KQEAgLTkwLDEwICs5MSwx
MCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPihUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOwogICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpuZXh0QXN5bmNSZXBs
eUhhbmRsZXJJRCgpOwotICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwotICAgICAgICAq
ZW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpOworICAgICAgICBlbmNvZGVyLmdldCgpIDw8
IGxpc3RlbmVySUQ7CisgICAgICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5hcmd1bWVudHMo
KTsKICAgICAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIHt7
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpE
ZWNvZGVyKiBkZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChkZWNvZGVyICYmIGRl
Y29kZXItPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29kZXIs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTEwMyw3ICsxMDQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBsaXN0ZW5lcklEOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBz
ZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIE9wdGlvblNldDxTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZpcnR1YWwgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+LCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJiA9IFdURjo6bnVsbG9wdCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCA0
OTVhZmZkMDNjNmY1NGQ3Mjg5ZmMxMDFkNmQ2ZGQ4ODZlM2I3NzBkLi4xZGRhZWM0NjJlYmRjZjJh
Njg1NWI5NGE5YmY2NzFhZDRiZmM1YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0xMDAsOCArMTAwLDggQEAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZl
ci4KLSAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7Ci0gICAgKCplbmNvZGVy
IDw8IC4uLiA8PCBhcmd1bWVudHMpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPihJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVx
dWVzdElEKTsKKyAgICAoZW5jb2Rlci5nZXQoKSA8PCAuLi4gPDwgYXJndW1lbnRzKTsKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpp
bmRleCAwNTllODI5Mzk2YTUyNDlmMDg1MzM0N2ViYzBiM2ViYmVkMzQ2NDg2Li44ZDljZGUwOGY0
NjcxNDFhOTBkOGVhZjlkZDc4NWI3OTAzOGQ1OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yMTksOCArMjE5LDgg
QEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7
CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNo
IGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1
dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZU5hbWU6OkluaXRpYWxpemVD
b25uZWN0aW9uLCAwKTsKLSAgICAgICAgKmVuY29kZXIgPDwgTWFjaFBvcnQobV9yZWNlaXZlUG9y
dCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlUmVmPEVuY29kZXI+KE1lc3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbiwgMCk7
CisgICAgICAgIGVuY29kZXIuZ2V0KCkgPDwgTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9N
U0dfVFlQRV9NQUtFX1NFTkQpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CiAK
QEAgLTI5MCw3ICsyOTAsNyBAQCBib29sIENvbm5lY3Rpb246OnBsYXRmb3JtQ2FuU2VuZE91dGdv
aW5nTWVzc2FnZXMoKSBjb25zdAogICAgIHJldHVybiAhbV9wZW5kaW5nT3V0Z29pbmdNYWNoTWVz
c2FnZSAmJiAhbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2U7CiB9CiAKLWJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dGdvaW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gZW5jb2RlcikK
K2Jvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4m
JiBlbmNvZGVyKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nT3V0Z29pbmdNYWNoTWVzc2FnZSAm
JiAhbV9pc0luaXRpYWxpemluZ1NlbmRTb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDdiMDRjMDU0M2E5YTA4
M2MwMGI0MWU1Njc2ZTllMDI1Mjk4NTk1ZDguLmVmY2Q2NjNmODQxNjRlMmY5NmE2OWIzZmJjYWFk
ODU4MWVjZDdjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCkBAIC00MjQsMTEgKzQyNCwxMSBAQCBib29sIENvbm5lY3Rpb246
OnBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMoKSBjb25zdAogICAgIHJldHVybiAhbV9w
ZW5kaW5nT3V0cHV0TWVzc2FnZTsKIH0KIAotYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQorYm9vbCBDb25uZWN0aW9u
OjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmIGVuY29kZXIpCiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE1lc3NhZ2VJbmZvKSArIGF0dGFjaG1lbnRNYXhBbW91
bnQgKiBzaXplb2Yoc2l6ZV90KSA8PSBtZXNzYWdlTWF4U2l6ZSwgQXR0YWNobWVudHNGaXRUb01l
c3NhZ2VJbmxpbmUpOwogCi0gICAgVW5peE1lc3NhZ2Ugb3V0cHV0TWVzc2FnZSgqZW5jb2Rlcik7
CisgICAgVW5peE1lc3NhZ2Ugb3V0cHV0TWVzc2FnZShlbmNvZGVyLmdldCgpKTsKICAgICBpZiAo
b3V0cHV0TWVzc2FnZS5hdHRhY2htZW50cygpLnNpemUoKSA+IChhdHRhY2htZW50TWF4QW1vdW50
IC0gMSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAppbmRleCAxOWZjNDJlZWExYzU2N2FkMWMxYjFkNmZlYmU3ZjUzODdlMjVlMDFmLi4wNGFm
OGRhYjk2N2MwZjQ1MjZiMDc1YzQ0YWYwZWM4ODA4NmZjMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0yNzIsNyArMjcyLDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01lc3NhZ2VzKCkgY29u
c3QKICAgICByZXR1cm4gIW1fcGVuZGluZ1dyaXRlRW5jb2RlcjsKIH0KIAotYm9vbCBDb25uZWN0
aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVy
KQorYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVy
PiYmIGVuY29kZXIpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdXcml0ZUVuY29kZXIpOwogCkBA
IC0yODEsNyArMjgxLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBXZSBwdXQgdGhlIG1lc3NhZ2UgSUQgbGFzdC4KLSAgICAqZW5jb2RlciA8PCAwOwor
ICAgIGVuY29kZXIuZ2V0KCkgPDwgMDsKIAogICAgIC8vIFdyaXRlIHRoZSBvdXRnb2luZyBtZXNz
YWdlLgogCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyKQogCiAgICAgLy8gVGhlIG1l
c3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBzbyB0aGF0IGl0
IHdvbid0IGJlIGRlc3Ryb3llZAogICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29tcGxldGVzLgot
ICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IFdURk1vdmUoZW5jb2Rlcik7CisgICAgbV9wZW5k
aW5nV3JpdGVFbmNvZGVyID0gZW5jb2Rlci5tb3ZlVG9VbmlxdWVQdHIoKTsKIAogICAgIC8vIFdl
IGNhbiBvbmx5IHNlbmQgb25lIGFzeW5jaHJvbm91cyBtZXNzYWdlIGF0IGEgdGltZSAoc2VlIGNv
bW1lbnQgaW4gcGxhdGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcykuCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IGM3YTcwNTNjYmQyNmQyMDQ1NGMwNDJjNmFjZTE2Y2I1MjUzMGY0M2Qu
LjNjZjVlMWY5N2I4N2E0YmQ5MmEzNjZhNGNjODkwMjUxNzM0MDE4YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveSgpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Db250cm9sbGVy
UHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jik7CiAKICAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKaW5kZXggNjc5MjJjZDZlMjM0ZTc3MWQyMTFkZWRmYTM3OTFkZjJlZjkyY2M5Yy4uY2Jm
MzNmODIwMmIyN2U0ZWY4Y2Y4NDdjZmI2MWQ2MGI0ZTdmZjk1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xNDUs
MjggKzE0NSwyNCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RAogICAgIHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS0+ZGlkUmVjZWl2ZVBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBTZXRGb3JTY29wZTxJUEM6OkNvbm5lY3Rpb24q
PiBjdXJyZW50Q29ubmVjdGlvbkNoYW5nZShjdXJyZW50Q29ubmVjdGlvbiwgJmNvbm5lY3Rpb24p
OwogCiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IGRlY29kZXIuZGVzdGluYXRpb25JRCgp
OwogCi0gICAgaWYgKCFkZXN0aW5hdGlvbklEKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVTeW5jV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFkZXN0aW5hdGlvbklEKQorICAg
ICAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpCisgICAgICAgIHJldHVybiBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9s
bGVycy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpOwogICAgIGlmICghcGx1Z2luQ29udHJv
bGxlclByb3h5KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHByb3RlY3Rvcihw
bHVnaW5Db250cm9sbGVyUHJveHktPmFzUGx1Z2luQ29udHJvbGxlcigpKTsKLSAgICBwbHVnaW5D
b250cm9sbGVyUHJveHktPmRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgIHJldHVybiBwbHVnaW5D
b250cm9sbGVyUHJveHktPmRpZFJlY2VpdmVTeW5jUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAyZWI3NmE2
OTFiZWJlMTdjZDhiMDY3NDhkYTRjNzU3MWY5N2U5NzRkLi5kMTc2NmZkNGExMjUzYWRhMWQ1ZDIy
N2YyYTc5NzViYmEwYmY1NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZhdGU6CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0
aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNl
aXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgY3JlYXRlUGx1
Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgY3JlYXRl
UGx1Z2luQXN5bmNocm9ub3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgdm9pZCBkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5
bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OkRlc3Ryb3lQbHVnaW5EZWxheWVkUmVwbHkmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCAxNzQ4MGFiNjJlNzIxZTZhYTgwNDI2MmEzYzc3OWFiOWFm
OWMxNzEyLi4wMzM1YjJiZDU1ZjAxM2NmM2YzMzljMjQ2MmU1YTRlOGUyNjg3NDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxMiw3ICsyMTIsNyBAQCBk
ZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFk
OjpDb25zdHJ1Y3Rpb25UaHJlYWQ7XG4nKQogICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmli
dXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9w
YXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBs
ZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtc
bicpCkBAIC01NTUsMTAgKzU1NSw4IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNl
aXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbl9hcmdzLmluc2Vy
dCgwLCAnY29ubmVjdGlvbicpCiAKICAgICByZXN1bHQgPSBbXQotICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUo
KSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRpc3BhdGNo
X2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihkaXNwYXRj
aF9mdW5jdGlvbl9hcmdzKSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4n
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicg
JSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybiBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hf
ZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNo
X2Z1bmN0aW9uX2FyZ3MpKSkKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpv
aW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApAQCAtNTc5LDEwICs1NzcsOCBAQCBk
ZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIG1h
eWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXInCiAKICAgICByZXN1bHQgPSBbXQot
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUp
KQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPigl
c2RlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBl
bHNlICcnLCBtYXliZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBt
ZXNzYWdlKSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQotICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB9XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSlcbicgJSAocmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAl
IChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVj
dGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIs
IGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICByZXR1cm4gc3Vycm91
bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKIApA
QCAtOTA1LDExICs5MDEsMTEgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZl
cik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5j
UmVwbHlFcnJvcjwnICsgcmVwbHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBp
biBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcpO1xufVxuXG4nKQogCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgndm9pZCAlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5uYW1lKSkKICAgICAgICAgICAg
IGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JywgJXMnICUgJywgJy5qb2luKFsnICcuam9pbih4KSBmb3IgeCBpbiBzZW5kX3BhcmFtZXRlcnNd
KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJylcbntcbicpCi0gICAgICAgICAgICByZXN1
bHQgKz0gWycgICAgKmVuY29kZXIgPDwgJXM7XG4nICUgeC5uYW1lIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyc10KKyAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICBlbmNvZGVyLmdl
dCgpIDw8ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNd
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCkBAIC05NjgsMTggKzk2NCwxOSBAQCBk
ZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKIAogICAgIGlmIG5vdCByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnYm9vbCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRU
UklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKICAgICAgICAg
aWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAgICAgICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdl
X3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdl
c10KICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3Bh
dGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKSlcbicpCi0g
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiB0cnVlO1xuJykKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHJlcGx5RW5jb2Rlcik7XG4nKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgcmV0dXJuIGZhbHNlO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKIAogICAgIHJlc3VsdC5hcHBlbmQoJ1xufSAvLyBuYW1lc3BhY2UgV2ViS2l0XG4nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aElmTWVz
c2FnZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCA5NjIzMjA4Mzcw
ZDRiMDJmNzE1NGRmMTQ0ZTYxOGFjMTllM2RlZjIzLi4xZmUzYWIwM2NmNWQ0ODBlYTA4M2E4OTUz
NDBmZmRlNjBjMzgzMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoSWZNZXNzYWdlTWVzc2FnZVJlY2Vp
dmVyLmNwcApAQCAtNDEsMTYgKzQxLDEyIEBAIHZvaWQgVGVzdFdpdGhJZk1lc3NhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvCiB7CiAg
ICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJ
Zk1lc3NhZ2U6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhJZk1lc3NhZ2U6OmxvYWRVUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpM
b2FkVVJMOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhJ
Zk1lc3NhZ2U6OmxvYWRVUkwpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSWZNZXNzYWdlOjpMb2Fk
VVJMOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aElmTWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdl
Ojpsb2FkVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6bmFtZSgp
KQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aElm
TWVzc2FnZTo6TG9hZFVSTD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoSWZNZXNzYWdlOjpsb2Fk
VVJMKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoSW1hZ2VEYXRhTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlUmVjZWl2ZXIu
Y3BwCmluZGV4IGE4NmM0MTVmZmMzMjFlZDgwZmEyN2JmZWM0ZmE5NGZjNzBmMTIzNjYuLmE0OTYy
OWQzMzRkMmQxYWY1MTg1M2VhMjdmYWY3Y2I0MDQ2M2E2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJbWFnZURhdGFNZXNzYWdlUmVjZWl2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhJ
bWFnZURhdGFNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0zOCwyNiArMzgsMjMgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB2b2lkIFRlc3RXaXRoSW1hZ2VEYXRhOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6U2VuZEltYWdlRGF0YTo6
bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhJ
bWFnZURhdGE6OlNlbmRJbWFnZURhdGE+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aEltYWdlRGF0
YTo6c2VuZEltYWdlRGF0YSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJbWFn
ZURhdGE6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhJbWFnZURhdGE6OlNlbmRJbWFnZURhdGE+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aEltYWdlRGF0YTo6c2VuZEltYWdlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBUZXN0V2l0aEltYWdlRGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9vbCBUZXN0V2l0aEltYWdl
RGF0YTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoSW1hZ2VEYXRhOjpS
ZWNlaXZlSW1hZ2VEYXRhOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YT4oZGVjb2RlciwgKnJl
cGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoSW1hZ2VEYXRhOjpyZWNlaXZlSW1hZ2VEYXRhKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdlRGF0YTo6UmVjZWl2ZUltYWdlRGF0YTo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aEltYWdl
RGF0YTo6UmVjZWl2ZUltYWdlRGF0YT4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRoSW1hZ2VEYXRhOjpyZWNlaXZlSW1hZ2VEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShy
ZXBseUVuY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCAxYzhiZmFkNWVlM2ZmY2I4MmFjZjAx
ZTMzOWM1Y2IwNDAzN2Q1NmVmLi42ZWI0NjQ1NzIxNTlkZjg4NzcyYTA4MDg4OGUyN2NlMTY5ODBl
MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKQEAgLTYzLDEzICs2MywxMyBAQCBuYW1lc3BhY2UgTWVzc2FnZXMgewogCiBuYW1lc3Bh
Y2UgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciB7CiAKLXZvaWQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb246OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBj
b25uZWN0aW9uSGFuZGxlKQordm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCiB7
Ci0gICAgKmVuY29kZXIgPDwgY29ubmVjdGlvbkhhbmRsZTsKKyAgICBlbmNvZGVyLmdldCgpIDw8
IGNvbm5lY3Rpb25IYW5kbGU7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUo
ZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCit2b2lkIFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OnNlbmQoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAg
Y29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOwogfQpAQCAtODMsMTIy
ICs4Myw3OSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6ZGlkUmVjZWl2ZVRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRVUkw6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2Fk
VVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpMb2FkVVJMOjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OkxvYWRVUkw+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpsb2FkVVJMKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRT
b21ldGhpbmc6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpMb2FkU29tZXRoaW5nOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRT
b21ldGhpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpsb2FkU29t
ZXRoaW5nKTsKICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01F
U1NBR0VfQ09ORElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OlRvdWNoRXZlbnQ6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZlbnQ+KGRlY29kZXIsIHRoaXMs
ICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpUb3VjaEV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRvdWNoRXZl
bnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0b3VjaEV2ZW50KTsK
ICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OICYmIFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkFkZEV2
ZW50OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI6OmFkZEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
OjpBZGRFdmVudDo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpBZGRFdmVudD4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmFkZEV2ZW50KTsKICNlbmRpZgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OkxvYWRTb21ldGhpbmdFbHNlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6bG9hZFNvbWV0aGluZ0Vsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OkxvYWRTb21ldGhpbmdFbHNlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkxvYWRTb21ldGhpbmdFbHNl
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6bG9hZFNvbWV0aGluZ0Vs
c2UpOwogI2VuZGlmCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uOjpuYW1lKCkp
IHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNsb3NlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDbG9zZT4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNsb3NlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJlbmNlc0RpZENoYW5nZTo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6U2VuZERvdWJsZUFuZEZsb2F0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kRG91YmxlQW5kRmxv
YXQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpzZW5kRG91YmxlQW5k
RmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlNlbmRJbnRzOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2
ZXI6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0UGFy
YW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjp0ZXN0UGFyYW1ldGVyQXR0
cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0
OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpUZW1wbGF0ZVRlc3Q+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXI6OlNldFZpZGVvTGF5ZXJJRDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2V0VmlkZW9MYXllcklEPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2V0VmlkZW9MYXllcklEKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b246Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjpDbG9zZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpDbG9zZT4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OmNsb3NlKTsKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJl
bmNlc0RpZENoYW5nZTo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpQcmVmZXJlbmNlc0RpZENoYW5nZT4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnByZWZlcmVuY2VzRGlkQ2hh
bmdlKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6c2VuZERvdWJsZUFuZEZsb2F0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09
IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpTZW5kSW50czo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpTZW5kSW50cz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OnNlbmRJbnRzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlczo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyOjpUZXN0UGFyYW1ldGVyQXR0cmlidXRlcz4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpU
ZW1wbGF0ZVRlc3Q6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6dGVtcGxhdGVUZXN0KTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpT
ZXRWaWRlb0xheWVySUQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6U2V0VmlkZW9MYXllcklEPihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6c2V0VmlkZW9MYXllcklEKTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVB
VFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEZXBy
ZWNhdGVkT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
RGVwcmVjYXRlZE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpEZXByZWNhdGVkT3BlcmF0
aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6ZGVwcmVjYXRlZE9w
ZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpFeHBlcmltZW50YWxP
cGVyYXRpb24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpleHBlcmlt
ZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkV4cGVy
aW1lbnRhbE9wZXJhdGlvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpFeHBlcmltZW50YWxPcGVyYXRp
b24+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpleHBlcmltZW50YWxP
cGVyYXRpb24pOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9v
bCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpkaWRSZWNlaXZlU3luY1Rlc3RXaXRoTGVnYWN5UmVj
ZWl2ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkNyZWF0ZVBsdWdp
bjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Y3JlYXRlUGx1Z2luKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUoKSkgewotICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6
OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OnJ1bkphdmFTY3JpcHRBbGVydCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2luczo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6R2V0UGx1Z2lucz4o
ZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6Omdl
dFBsdWdpbnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3lu
Y2hyb25vdXM8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZU
ZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmlidXRlczo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0
aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyOjp0ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6Q3JlYXRl
UGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcjo6Y3JlYXRlUGx1Z2luKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpSdW5KYXZhU2NyaXB0QWxlcnQ6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhM
ZWdhY3lSZWNlaXZlcjo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAqcmVwbHlFbmNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6cnVuSmF2YVNjcmlwdEFsZXJ0KTsKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyOjpHZXRQbHVnaW5zOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpbnM+KGRlY29k
ZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpnZXRQbHVn
aW5zKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKQorICAg
ICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OlRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXI6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9u
LCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25v
dXNXYW50c0Nvbm5lY3Rpb248TWVzc2FnZXM6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OlRlc3RN
dWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhp
cywgJlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXI6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyOjpJbnRlcnByZXRLZXlFdmVudDo6bmFtZSgpKSB7Ci0g
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cjo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyOjppbnRlcnByZXRLZXlFdmVudCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdp
dGhMZWdhY3lSZWNlaXZlcjo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkKKyAgICAgICAgcmV0
dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjo6
SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0
aExlZ2FjeVJlY2VpdmVyOjppbnRlcnByZXRLZXlFdmVudCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNF
RF9QQVJBTShyZXBseUVuY29kZXIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNz
YWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyTWVzc2FnZXMuaAppbmRleCAzYmUwYTBiMGU5Yzc4YTQyOTRjZTZmMjliNjZkMmEy
NWZiZGQwOTM2Li5hY2FjMjgzNWM2YzQwNWI0MjY2ZDg4YzU2NzAwNjdkMDllYTk0YzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTGVnYWN5
UmVjZWl2ZXJNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgKQEAgLTM1Nyw3ICszNTcsNyBAQCBw
dWJsaWM6CiAKICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbkRlbGF5ZWRSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
OwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwg
SVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rp
b25IYW5kbGUpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgSVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5l
Y3Rpb25IYW5kbGUpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxJUEM6OkNvbm5lY3Rp
b246OkhhbmRsZSY+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxJUEM6
OkNvbm5lY3Rpb246OkhhbmRsZT47CiAgICAgZXhwbGljaXQgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBseSA9IFRlc3RNdWx0aXBsZUF0dHJpYnV0ZXNEZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPD47CiAg
ICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPD47CiAgICAgY29uc3QgQXJndW1l
bnRzJiBhcmd1bWVudHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFNlbWFwaG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2FnZVJl
Y2VpdmVyLmNwcAppbmRleCA3MjEwM2M0NzQ0OWQ2Y2M1MDcxZTAxYjAyNGFkZDUxZGQyYjQ5NTU4
Li4wNjQ2ZmU5OWI2ZjIzNWIwYzUwN2Q5NDdhYTIxYTMxNjgxM2I3NTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU2VtYXBob3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMzUsMjYgKzM1LDIzIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdm9pZCBUZXN0V2l0aFNlbWFwaG9yZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlNlbmRTZW1h
cGhvcmU6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhT
ZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpT
ZW5kU2VtYXBob3JlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTZW1hcGhvcmU6OnNlbmRTZW1hcGhvcmUpOwogICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgVGVzdFdpdGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgVGVzdFdp
dGhTZW1hcGhvcmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJl
cGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsK
LSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFNlbWFw
aG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29k
ZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFw
aG9yZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU6Om5h
bWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdp
dGhTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aFNlbWFwaG9yZTo6cmVjZWl2ZVNlbWFwaG9yZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBVTlVTRURf
UEFSQU0ocmVwbHlFbmNvZGVyKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcAppbmRleCBjOWM5MjQwYTRlYjFhYjU1NzQw
OTYwMjI5MWRjMTI3MzE5ODdmMDU0Li5lNDkyMzgwOWU0MWZiM2M2YWYyNmM2OTMwNWIwMmZiNmZj
YTYzOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVy
LmNwcApAQCAtMzUsMTAgKzM1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFRlc3RXaXRo
U3RyZWFtQnVmZmVyOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKSB7Ci0gICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNl
bmRTdHJlYW1CdWZmZXI+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2Vu
ZFN0cmVhbUJ1ZmZlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJl
YW1CdWZmZXI6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVhbUJ1ZmZlcik7CiAgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAK
aW5kZXggODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNi4uZTAwN2VjNGQ2
OGViY2ZlNDQ3ZDg0NzcwMTA5MjUxZTQ1Mjk5ZjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1l
c3NhZ2VSZWNlaXZlci5jcHAKQEAgLTM1LDE0ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
U3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2Vu
ZFN0cmluZ1N5bmNocm9uaXplZDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJu
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+
KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7CiAgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2Fn
ZVJlY2VpdmVyLmNwcAppbmRleCA5ODllMWQ0MTAzYzBkNjA0MmQ0NDhhOTQ4ZjJlYTRmYTNmNzI3
MWFlLi4xNTEwNDdlYWE2ZTJlZGQwNzZhYWJiNDcwNmE5MjZlOWExZDc1ODUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01l
c3NhZ2VSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC01OSw5ICs1OSw5IEBA
IHZvaWQgVGVzdEFzeW5jTWVzc2FnZTo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCYmKT4mJiBjb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBc3lu
Y1JlcGx5RXJyb3I8dWludDY0X3Q+OjpjcmVhdGUoKSk7CiB9CiAKLXZvaWQgVGVzdEFzeW5jTWVz
c2FnZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVzdWx0KQordm9pZCBUZXN0QXN5bmNN
ZXNzYWdlOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXN1bHQpCiB7Ci0gICAgKmVuY29kZXIgPDwg
cmVzdWx0OworICAgIGVuY29kZXIuZ2V0KCkgPDwgcmVzdWx0OwogICAgIGNvbm5lY3Rpb24uc2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKIH0KIApAQCAtNzksNyArNzksNyBAQCB2b2lk
IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQg
VGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50czo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBjb25u
ZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CkBAIC0xMTIsMTAgKzEx
MiwxMCBAQCB2b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6OmNhbmNl
bFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYgogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6QXN5bmNSZXBseUVycm9yPGJvb2w+OjpjcmVhdGUoKSwgSVBDOjpBc3luY1JlcGx5RXJyb3I8
dWludDY0X3Q+OjpjcmVhdGUoKSk7CiB9CiAKLXZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0
aXBsZUFyZ3VtZW50czo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1
ZSkKK3ZvaWQgVGVzdEFzeW5jTWVzc2FnZVdpdGhNdWx0aXBsZUFyZ3VtZW50czo6c2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSkKIHsKLSAgICAqZW5jb2RlciA8PCBmbGFnOwot
ICAgICplbmNvZGVyIDw8IHZhbHVlOworICAgIGVuY29kZXIuZ2V0KCkgPDwgZmxhZzsKKyAgICBl
bmNvZGVyLmdldCgpIDw8IHZhbHVlOwogICAgIGNvbm5lY3Rpb24uc2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKIH0KIApAQCAtMTQwLDIzICsxNDAsMjMgQEAgdm9pZCBUZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb246OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCYmKT4KICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkFzeW5jUmVwbHlFcnJvcjxib29s
Pjo6Y3JlYXRlKCkpOwogfQogCi12b2lkIFRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjo6
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgYm9vbCBmbGFnKQordm9pZCBUZXN0QXN5bmNNZXNzYWdlV2l0aENv
bm5lY3Rpb246OnNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZmxhZykKIHsKLSAgICAqZW5jb2RlciA8PCBmbGFn
OworICAgIGVuY29kZXIuZ2V0KCkgPDwgZmxhZzsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVw
bHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKICNlbmRpZgogCi12b2lkIFRlc3RTeW5jTWVzc2Fn
ZTo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDhfdCByZXBseSkKK3ZvaWQgVGVzdFN5bmNNZXNzYWdl
OjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1aW50OF90IHJlcGx5KQogewotICAgICplbmNvZGVyIDw8IHJlcGx5Owor
ICAgIGVuY29kZXIuZ2V0KCkgPDwgcmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOwogfQogCi12b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNl
bmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9w
dGlvbmFsUmVwbHkpCit2b2lkIFRlc3RTeW5jaHJvbm91c01lc3NhZ2U6OnNlbmQoVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpCiB7Ci0g
ICAgKmVuY29kZXIgPDwgb3B0aW9uYWxSZXBseTsKKyAgICBlbmNvZGVyLmdldCgpIDw8IG9wdGlv
bmFsUmVwbHk7CiAgICAgY29ubmVjdGlvbi5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rlcikp
OwogfQogCkBAIC0xNjksNTIgKzE2OSwzOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgVGVz
dFdpdGhTdXBlcmNsYXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OkxvYWRVUkw6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTdXBlcmNsYXNzOjpMb2FkVVJMOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6TG9hZFVSTD4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6bG9hZFVSTCk7CiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5
bmNNZXNzYWdlPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNz
Ojp0ZXN0QXN5bmNNZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RB
c3luY01lc3NhZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFz
eW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2U+KGNvbm5l
Y3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3Nh
Z2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01l
c3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5bmNNZXNzYWdlV2l0
aE5vQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNs
YXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE5vQXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM6Om5hbWUoKSkKKyAg
ICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1
cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2VXaXRoTm9B
cmd1bWVudHMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RB
c3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2VBc3luYzxNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0QXN5
bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1lbnRzPihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5bmNNZXNzYWdlV2l0aE11bHRpcGxlQXJndW1l
bnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRo
TXVsdGlwbGVBcmd1bWVudHM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVz
c2FnZUFzeW5jPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VX
aXRoTXVsdGlwbGVBcmd1bWVudHM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aFN1cGVyY2xhc3M6OnRlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1bWVudHMpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRo
Q29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jV2Fu
dHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3Nh
Z2VXaXRoQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Vw
ZXJjbGFzczo6dGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvbjo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmNXYW50c0Nvbm5lY3Rpb248TWVz
c2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9u
Pihjb25uZWN0aW9uLCBkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0QXN5
bmNNZXNzYWdlV2l0aENvbm5lY3Rpb24pOwogI2VuZGlmCiAgICAgV2ViUGFnZUJhc2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQogCi12b2lkIFRlc3RXaXRoU3Vw
ZXJjbGFzczo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKQorYm9vbCBUZXN0V2l0aFN1cGVyY2xhc3M6OmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZTo6bmFtZSgp
KSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0
V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVjb2RlciwgcmVw
bHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0U3luY01lc3NhZ2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFt
ZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jaHJvbm91c01lc3NhZ2U+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRoU3VwZXJjbGFzczo6dGVzdFN5bmNo
cm9ub3VzTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdXBlcmNsYXNzOjpUZXN0U3luY01l
c3NhZ2U6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9u
b3VzPE1lc3NhZ2VzOjpUZXN0V2l0aFN1cGVyY2xhc3M6OlRlc3RTeW5jTWVzc2FnZT4oY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0
ZXN0U3luY01lc3NhZ2UpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZTo6bmFtZSgpKQor
ICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OlRl
c3RXaXRoU3VwZXJjbGFzczo6VGVzdFN5bmNocm9ub3VzTWVzc2FnZT4oY29ubmVjdGlvbiwgZGVj
b2RlciwgcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdXBlcmNsYXNzOjp0ZXN0U3luY2hy
b25vdXNNZXNzYWdlKTsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAgICAgVU5VU0VE
X1BBUkFNKGRlY29kZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZXBseUVuY29kZXIpOwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3VwZXJjbGFzc01lc3NhZ2VzLmgKaW5kZXggYmM3M2M5OGMzMDg2
NTBmNzY2MWFmNzgwMTdlYjY2Nzg4MTQwN2Y0NC4uYzFhZThkNWZhMzE4ZDQ1NjNlOTEwODZjY2E1
M2VhMGZjZjMzZWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN1cGVyY2xhc3NNZXNzYWdlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaApAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdl
UmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5
bmNNZXNzYWdlQXN5bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tU
aHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZDsKLSAg
ICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlc3VsdCk7CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXN1bHQp
OwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTx1aW50NjRfdCY+OwogICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTx1aW50NjRfdD47CiAgICAgZXhwbGljaXQgVGVzdEFz
eW5jTWVzc2FnZShXZWJLaXQ6OlRlc3RUd29TdGF0ZUVudW0gdHdvU3RhdGVFbnVtKQpAQCAtMTEx
LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01l
c3NhZ2VSZXBseU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhOb0FyZ3VtZW50c1JlcGx5OyB9CiAgICAgdXNpbmcg
QXN5bmNSZXBseSA9IFRlc3RBc3luY01lc3NhZ2VXaXRoTm9Bcmd1bWVudHNBc3luY1JlcGx5Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZvaWQg
c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mKTsK
KyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwogICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoTXVsdGlwbGVBcmd1
bWVudHNSZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0
aE11bHRpcGxlQXJndW1lbnRzQXN5bmNSZXBseTsKICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
Y2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3Ry
dWN0aW9uVGhyZWFkOwotICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnLCB1aW50NjRfdCB2YWx1ZSk7
CisgICAgc3RhdGljIHZvaWQgc2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNv
bm5lY3Rpb24mLCBib29sIGZsYWcsIHVpbnQ2NF90IHZhbHVlKTsKICAgICB1c2luZyBSZXBseSA9
IHN0ZDo6dHVwbGU8Ym9vbCYsIHVpbnQ2NF90Jj47CiAgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGJvb2wsIHVpbnQ2NF90PjsKICAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3Vt
ZW50cygpIGNvbnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBJUEM6
Ok1lc3NhZ2VOYW1lIGFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25S
ZXBseTsgfQogICAgIHVzaW5nIEFzeW5jUmVwbHkgPSBUZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5l
Y3Rpb25Bc3luY1JlcGx5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVh
ZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJ
UEM6OkNvbm5lY3Rpb24mLCBib29sIGZsYWcpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgYm9vbCBmbGFnKTsKICAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8Ym9vbCY+OwogICAgIHVzaW5nIFJlcGx5QXJndW1lbnRz
ID0gc3RkOjp0dXBsZTxib29sPjsKICAgICBleHBsaWNpdCBUZXN0QXN5bmNNZXNzYWdlV2l0aENv
bm5lY3Rpb24oY29uc3QgaW50JiB2YWx1ZSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAK
ICAgICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0U3luY01lc3NhZ2VEZWxheWVkUmVwbHk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9u
SGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBz
ZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ4X3QgcmVwbHkpOworICAgIHN0YXRpYyB2b2lkIHNlbmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgdWludDhfdCByZXBseSk7CiAgICAgdXNpbmcgUmVwbHkg
PSBzdGQ6OnR1cGxlPHVpbnQ4X3QmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8dWludDhfdD47CiAgICAgZXhwbGljaXQgVGVzdFN5bmNNZXNzYWdlKHVpbnQzMl90IHBh
cmFtKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIERlbGF5ZWRSZXBs
eSA9IFRlc3RTeW5jaHJvbm91c01lc3NhZ2VEZWxheWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJl
YWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IE9wdGlvbmFsPFdl
YktpdDo6VGVzdENsYXNzTmFtZT4mIG9wdGlvbmFsUmVwbHkpOworICAgIHN0YXRpYyB2b2lkIHNl
bmQoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgT3B0
aW9uYWw8V2ViS2l0OjpUZXN0Q2xhc3NOYW1lPiYgb3B0aW9uYWxSZXBseSk7CiAgICAgdXNpbmcg
UmVwbHkgPSBzdGQ6OnR1cGxlPE9wdGlvbmFsPFdlYktpdDo6VGVzdENsYXNzTmFtZT4mPjsKICAg
ICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8T3B0aW9uYWw8V2ViS2l0OjpUZXN0
Q2xhc3NOYW1lPj47CiAgICAgZXhwbGljaXQgVGVzdFN5bmNocm9ub3VzTWVzc2FnZShib29sIHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlUmVjZWl2ZXIuY3Bw
CmluZGV4IDdiZTQxMmZjOTk5ZjU3MjQyODc0MmVmMThmMmQzYzk1MjAyZTU1NWUuLjM4NTZkMzY5
MzhhMjUwMTdiNjYzYjZlNDQyMWY1YmExZGI1OGY5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZVJlY2Vp
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
b3V0QXR0cmlidXRlc01lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTYzLDEzICs2MywxMyBAQCBuYW1l
c3BhY2UgTWVzc2FnZXMgewogCiBuYW1lc3BhY2UgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzIHsKIAot
dm9pZCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
SVBDOjpDb25uZWN0aW9uOjpIYW5kbGUmIGNvbm5lY3Rpb25IYW5kbGUpCit2b2lkIEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJUEM6OkNvbm5lY3Rpb246Okhh
bmRsZSYgY29ubmVjdGlvbkhhbmRsZSkKIHsKLSAgICAqZW5jb2RlciA8PCBjb25uZWN0aW9uSGFu
ZGxlOworICAgIGVuY29kZXIuZ2V0KCkgPDwgY29ubmVjdGlvbkhhbmRsZTsKICAgICBjb25uZWN0
aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7CiB9CiAKLXZvaWQgVGVzdE11bHRp
cGxlQXR0cmlidXRlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmIGVuY29k
ZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKK3ZvaWQgVGVzdE11bHRpcGxlQXR0cmli
dXRlczo6c2VuZChVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBjb25uZWN0aW9uLnNlbmRTeW5jUmVwbHkoV1RGTW92
ZShlbmNvZGVyKSk7CiB9CkBAIC04MywxMjIgKzgzLDc5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dm9pZCBUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOwotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFVSTDo6bmFtZSgpKSB7
Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpsb2Fk
VVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkxvYWRVUkw6Om5hbWUoKSkK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpMb2FkVVJMPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
Ojpsb2FkVVJMKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0
aGluZzo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpsb2FkU29tZXRoaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM6OkxvYWRTb21ldGhpbmc6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFu
ZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5n
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpsb2FkU29tZXRoaW5nKTsK
ICNlbmRpZgogI2lmIChFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09O
RElUSU9OIHx8IFNPTUVfT1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VG91Y2hF
dmVudDo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OlRvdWNoRXZlbnQ6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpUb3VjaEV2ZW50PihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0b3VjaEV2ZW50KTsKICNlbmRpZgogI2lmIChF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAoTkVTVEVEX01FU1NBR0VfQ09ORElUSU9OICYmIFNPTUVf
T1RIRVJfTUVTU0FHRV9DT05ESVRJT04pKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6QWRkRXZlbnQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmFkZEV2
ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkFkZEV2ZW50OjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6QWRkRXZlbnQ+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmFkZEV2ZW50KTsKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpMb2FkU29tZXRoaW5nRWxzZTo6bmFtZSgpKSB7Ci0gICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6TG9hZFNvbWV0aGluZ0Vsc2U6Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhv
dXRBdHRyaWJ1dGVzOjpMb2FkU29tZXRoaW5nRWxzZT4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6bG9hZFNvbWV0aGluZ0Vsc2UpOwogI2VuZGlmCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3Nh
Z2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q2xvc2U6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6Q2xvc2U+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OmNsb3NlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlk
Q2hhbmdlOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVuY2VzRGlkQ2hhbmdlPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpTZW5kRG91YmxlQW5kRmxvYXQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6U2VuZERvdWJsZUFuZEZsb2F0PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOjpzZW5kRG91YmxlQW5kRmxvYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6U2VuZEludHM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmRJbnRzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0
ZXJBdHRyaWJ1dGVzPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZXN0
UGFyYW1ldGVyQXR0cmlidXRlcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZW1wbGF0ZVRlc3Q6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6VGVtcGxhdGVUZXN0PihkZWNvZGVyLCB0aGlzLCAm
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjp0ZW1wbGF0ZVRlc3QpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6U2V0VmlkZW9MYXllcklEOjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpo
YW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5
ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2V0VmlkZW9MYXll
cklEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbjo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbj4oZGVj
b2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkNsb3NlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q2xvc2U+KGRlY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmNsb3NlKTsKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlByZWZlcmVu
Y2VzRGlkQ2hhbmdlOjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UHJlZmVyZW5jZXNEaWRDaGFuZ2U+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnByZWZlcmVuY2VzRGlkQ2hhbmdl
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlNlbmREb3VibGVBbmRGbG9hdDo6bmFtZSgpKQorICAgICAgICByZXR1cm4g
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRE
b3VibGVBbmRGbG9hdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6c2Vu
ZERvdWJsZUFuZEZsb2F0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNlbmRJbnRzOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
U2VuZEludHM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnNlbmRJbnRz
KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OlRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOjpuYW1lKCkpCisgICAgICAgIHJl
dHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6
VGVzdFBhcmFtZXRlckF0dHJpYnV0ZXM+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OnRlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdDo6
bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OlRlbXBsYXRlVGVzdD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6dGVtcGxhdGVUZXN0KTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJRDo6
bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OlNldFZpZGVvTGF5ZXJJRD4oZGVjb2RlciwgdGhpcywgJlRlc3RX
aXRob3V0QXR0cmlidXRlczo6c2V0VmlkZW9MYXllcklEKTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEaWRD
cmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0
cmlidXRlczo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUoKSkK
KyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbj4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOwog
I2VuZGlmCiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkRlcHJlY2F0
ZWRPcGVyYXRpb246Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpEZXByZWNhdGVkT3BlcmF0aW9uOjpuYW1lKCkp
CisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6RGVwcmVjYXRlZE9wZXJhdGlvbj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRo
b3V0QXR0cmlidXRlczo6ZGVwcmVjYXRlZE9wZXJhdGlvbik7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RVhQRVJJTUVOVEFMX0ZFQVRVUkUpCi0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpFeHBlcmltZW50YWxPcGVyYXRpb246Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6RXhwZXJpbWVudGFsT3BlcmF0aW9uOjpuYW1lKCkpCisgICAgICAg
IHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6RXhwZXJpbWVudGFsT3BlcmF0aW9uPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOjpleHBlcmltZW50YWxPcGVyYXRpb24pOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFN
KGNvbm5lY3Rpb24pOwogICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wg
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpDcmVhdGVQbHVnaW46Om5hbWUoKSkgewotICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1
Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OjpjcmVhdGVQbHVnaW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2
YVNjcmlwdEFsZXJ0OjpuYW1lKCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3Nh
Z2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlJ1bkphdmFTY3JpcHRBbGVydD4oZGVjb2Rlciwg
KnJlcGx5RW5jb2RlciwgdGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6cnVuSmF2YVNjcmlw
dEFsZXJ0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpbnM6Om5h
bWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0
QXR0cmlidXRlczo6R2V0UGx1Z2lucz4oZGVjb2RlciwgKnJlcGx5RW5jb2RlciwgdGhpcywgJlRl
c3RXaXRob3V0QXR0cmlidXRlczo6Z2V0UGx1Z2lucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhvdXRB
dHRyaWJ1dGVzOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6bmFtZSgpKSB7Ci0gICAgICAg
IElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25uZWN0aW9uLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OmdldFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RNdWx0
aXBsZUF0dHJpYnV0ZXM6Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5j
aHJvbm91c1dhbnRzQ29ubmVjdGlvbjxNZXNzYWdlczo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpU
ZXN0TXVsdGlwbGVBdHRyaWJ1dGVzPihjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIs
IHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OnRlc3RNdWx0aXBsZUF0dHJpYnV0ZXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6Q3JlYXRlUGx1Z2luOjpuYW1lKCkpCisg
ICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0
cmlidXRlczo6Q3JlYXRlUGx1Z2luPihkZWNvZGVyLCAqcmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOjpjcmVhdGVQbHVnaW4pOworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlw
dEFsZXJ0OjpuYW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6UnVuSmF2YVNjcmlwdEFsZXJ0PihkZWNvZGVyLCAq
cmVwbHlFbmNvZGVyLCB0aGlzLCAmVGVzdFdpdGhvdXRBdHRyaWJ1dGVzOjpydW5KYXZhU2NyaXB0
QWxlcnQpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRob3V0QXR0cmlidXRlczo6R2V0UGx1Z2luczo6bmFtZSgpKQorICAgICAgICByZXR1cm4gSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdp
bnM+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0ZXM6
OmdldFBsdWdpbnMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OlRlc3RXaXRob3V0QXR0cmlidXRlczo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246Om5hbWUo
KSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzPE1lc3NhZ2Vz
OjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPihjb25u
ZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91dEF0dHJpYnV0
ZXM6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRlc3RNdWx0aXBsZUF0
dHJpYnV0ZXM6Om5hbWUoKSkKKyAgICAgICAgcmV0dXJuIElQQzo6aGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzV2FudHNDb25uZWN0aW9uPE1lc3NhZ2VzOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM6OlRl
c3RNdWx0aXBsZUF0dHJpYnV0ZXM+KGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlciwg
dGhpcywgJlRlc3RXaXRob3V0QXR0cmlidXRlczo6dGVzdE11bHRpcGxlQXR0cmlidXRlcyk7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6SW50ZXJwcmV0S2V5RXZlbnQ6Om5hbWUoKSkgewot
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRl
czo6SW50ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0
V2l0aG91dEF0dHJpYnV0ZXM6OmludGVycHJldEtleUV2ZW50KTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM6OkludGVycHJldEtleUV2ZW50OjpuYW1lKCkpCisgICAgICAgIHJldHVy
biBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRob3V0QXR0cmlidXRlczo6SW50
ZXJwcmV0S2V5RXZlbnQ+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRoaXMsICZUZXN0V2l0aG91
dEF0dHJpYnV0ZXM6OmludGVycHJldEtleUV2ZW50KTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CiAgICAgVU5VU0VEX1BB
UkFNKHJlcGx5RW5jb2Rlcik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1dGVzTWVzc2FnZXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzTWVzc2FnZXMuaAppbmRleCA3NjYyMzJiODBlZmUxNjI5ODkzMzU5Njc5MzAyZDBhNjE0ZWY2
OTVhLi42NzZmNmNjMDU1ZGIxZGFmM2Q0MTc3ZTdiYjFjZDgyMGQ2MzQxZGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRob3V0QXR0cmlidXRl
c01lc3NhZ2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oCkBAIC0zNTcsNyArMzU3LDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25EZWxh
eWVkUmVwbHk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDsKLSAgICBz
dGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFuZGxl
KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IElQQzo6Q29ubmVjdGlvbjo6SGFuZGxlJiBjb25uZWN0aW9uSGFu
ZGxlKTsKICAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0aW9uOjpIYW5k
bGUmPjsKICAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8SVBDOjpDb25uZWN0
aW9uOjpIYW5kbGU+OwogICAgIGV4cGxpY2l0IEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKQEAgLTM4Myw3ICszODMsNyBAQCBwdWJsaWM6CiAKICAg
ICB1c2luZyBEZWxheWVkUmVwbHkgPSBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVzRGVsYXllZFJlcGx5
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7Ci0gICAgc3RhdGljIHZv
aWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24m
KTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIElQQzo6
Q29ubmVjdGlvbiYpOwogICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTw+OwogICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OwogICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDkyNTEyOWQwYzljNzMzZTc5
MDQ5MWU5YjBmNDM4YWEzYWI1NDRiNWIuLjJjZDM5ZDc1NDA2ZTI0M2NiMjA1OTg1MWRiOGZkYmNh
ZTQxYzAzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAwN2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNiOTQ1
ZTUzOTMyN2I4NzVhLi5iZjI1ZTgwZWE3ZjQyMTVkYzNhNzViZmJjNDEzODc0Y2ExOTgzYWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBOUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlcihOUFJlbW90ZU9iamVjdE1hcCosIFBsdWdpbiosIHVpbnQ2NF90IG5wT2JqZWN0
SUQsIE5QT2JqZWN0Kik7CiAgICAgfk5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKCk7CiAKLSAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
OwogCiAgICAgUGx1Z2luKiBwbHVnaW4oKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbjsgfQogICAg
IE5QT2JqZWN0KiBucE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbnBPYmplY3Q7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5k
ZXggZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2QyYi4uMjcxZTE3ZjU4YWM2
MWEzZGM0YThmNTg2ZDdiZDQyYmU0ODg2ZmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTIxNywxMyArMjE3LDEzIEBA
IHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OnBsdWdpbkRlc3Ryb3llZChQbHVnaW4qIHBsdWdpbikK
ICAgICB9CiB9CiAKLXZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgTlBSZW1vdGVP
YmplY3RNYXA6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcikKIHsKICAgICBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVy
ID0gbV9yZWdpc3RlcmVkTlBPYmplY3RzLmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSk7CiAg
ICAgaWYgKCFtZXNzYWdlUmVjZWl2ZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwor
ICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXItPmRpZFJlY2VpdmVTeW5jTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OUFJlbW90ZU9iamVjdE1hcC5oCmluZGV4IGVkMTA1YTczY2QzZWU0ZjMyMmQ0OWRjYzc4MDQ0
MjgyM2E1NWRmYmYuLjg2Y2QyZjM4NTMwZjJhYjQzMmVlNzQyYWQ1ZGY1MDliNzczNGJhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwbHVnaW5EZXN0cm95ZWQoUGx1
Z2luKik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTlBS
ZW1vdGVPYmplY3RNYXAoSVBDOjpDb25uZWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MTQzMDZkMzdhYTg3ZDMw
MGYwMWNlZDI3NzU4N2FjYjM3OTg5ZDM1Li4wOTIyNGE0OTk3MDMzZDNlNWFjMTI0NTg1MjJlNzlj
ZTI2MjJlNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6d2FzVGVybWluYXRlZCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVu
Y29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
c2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCitib29sIEF1eGlsaWFyeVByb2Nl
c3NQcm94eTo6c2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5
bmNSZXBseUluZm8sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQogewogICAgIGlmIChhc3luY1JlcGx5SW5mbyAm
JiBjYW5TZW5kTWVzc2FnZSgpICYmIHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5
ID09IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpIHsKICAgICAgICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UoYXN5bmNSZXBseUluZm8tPmZp
cnN0LCBudWxscHRyKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQ
cm94eTo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZQogICAgIHJldHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CiB9CiAKLWJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpkaXNwYXRj
aFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQorYm9v
bCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCiB7CiAgICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFw
LmRpc3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgK
aW5kZXggOTcxZWNkYWVhZWE2YjQzYmM0MzkxYmY5MTkyNGVlM2FjNjQzYjMwMy4uNDFmNmEyMzE5
MDUwOTIzZTgzOGRkOTlmMjFhYTEzZTAxNmIyOTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMTYsNyArMTE3LDcgQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkgOiAw
OyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSAh
PSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJv
dHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMp
OworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RG
OjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwogCiAgICAgdm9pZCBzaHV0RG93blBy
b2Nlc3MoKTsKIApAQCAtMTI5LDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZEZp
bmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7CiAKICAgICB2b2lkIGxvZ0ludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZU5hbWUpOwogICAgIHZpcnR1YWwg
QVNDSUlMaXRlcmFsIHByb2Nlc3NOYW1lKCkgY29uc3QgPSAwOwpAQCAtMTM4LDcgKzEzOSw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFBy
b2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYpIHsgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5n
TWVzc2FnZSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXI7
CisgICAgICAgIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+IGVuY29kZXI7CiAgICAgICAgIE9wdGlv
blNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zOwogICAgICAgICBPcHRpb25hbDxzdGQ6
OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4g
YXN5bmNSZXBseUluZm87CiAgICAgfTsKQEAgLTE2Miw4ICsxNjMsOCBAQCBib29sIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2Fn
ZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVy
PihUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJn
dW1lbnRzKCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgZW5jb2Rlci5nZXQoKSA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKIH0KQEAgLTE4NiwxMCArMTg3LDEwIEBAIHVpbnQ2NF90IEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxl
dGlvbkhhCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+KFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IElQQzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAqZW5jb2Rl
ciA8PCBsaXN0ZW5lcklEOwotICAgICplbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7Cisg
ICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOworICAgIGVuY29kZXIuZ2V0KCkgPDwgbWVz
c2FnZS5hcmd1bWVudHMoKTsKICAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5k
T3B0aW9ucywge3sgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFibGUgewogICAgICAgICBpZiAoZGVjb2Rl
ciAmJiBkZWNvZGVyLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29k
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDg5NTIwOGMzYmMyMjZkNmZi
MTI4NjFkYTQzN2NkYTM4MWY0OGQ2MzcuLjRiOWUxMmM0MDUxN2ZiODRjYjIzZDJkZTNlMmFkYWE2
NmM2OWRhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcm9jZXNz
RGlkQ2xvc2UoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURvd25sb2FkUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNE
b3dubG9hZFByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNEb3du
bG9hZFByb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2Uo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNw
cAppbmRleCBkOGZhNTM4MTRkM2MyZDE1MDNjNDZkNTVjZTc0MDk4OGFlYmEwOThhLi5kZWM5ZjFj
OGJhYWE4ZTI5ODcyNzJjMmRmNWEyM2FjM2RlMjk3YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtODUsNyArODUsNyBAQCBJUEM6OkNvbm5l
Y3Rpb24qIERyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gcHJvY2VzcygpLmNvbm5lY3Rpb24oKTsKIH0KIAotYm9vbCBEcmF3aW5nQXJl
YVByb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVy
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0aW9uYWw8c3RkOjpw
YWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYg
YXN5bmNSZXBseUluZm8pCitib29sIERyYXdpbmdBcmVhUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIHJldHVy
biBwcm9jZXNzKCkuc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMsIFdU
Rk1vdmUoYXN5bmNSZXBseUluZm8pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuaAppbmRleCA1OWNkZmRhZmFiMWQ4NWVhM2E1YWVjYjNjZDIyOTNlNmRmYjFl
YjhkLi4wODJiMGMwMTFkMWUzOGE3OTE1NTQwZGUxMGMxM2M3MTE4Y2U4YTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0xNDAsNyArMTQwLDcgQEAg
cHJpdmF0ZToKIAogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllci50b1VJbnQ2NCgpOyB9Ci0gICAgYm9v
bCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIq
KT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggNzgwYzkzMThmNDJhNTViZjRjYjcxYmQ1MTkxMWFjMWQ3MjBmZDYxZi4uMTA2MmJhY2Q1ODMz
M2JhNTRlMDllNmU5MzBlNTgxY2VhMTcxMGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNjksMTIg
KzM2OSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZQogICAgIGRpZFJlY2VpdmVOZXR3b3Jr
UHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpCitib29sIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBp
ZiAoZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgZGlkUmVjZWl2
ZVN5bmNOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBs
eUVuY29kZXIpOworICAgIHJldHVybiBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggZTdlYmRlZWZkNDc1ZWYxZTllYjFkODMzMGI0MmQ1MDViNGJlMzQ3YS4uMTM1ZmM1M2JjMGYz
ZmVlNmU2ZTE1ZWU3NzIyYjg3NTc2MzBlNTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI4MiwxMCArMjgy
LDEwIEBAIHByaXZhdGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsK
KyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jik7
CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
aAppbmRleCBhMTkxMzQ5NWU0M2YyYWZmNzdiZmQ3MTI4OGFjZWFhMjAwNWFhODg0Li43ZTQ4MDZj
MDE3ODNlYjIwZDA3MmJiZWYwNTQ2YjRlMzc0NWY4ZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKaW5kZXggZTc5NGEzM2ZhODNkMmFhODg2OTA1ZGE5YmM1OWZmYzBkNTMwM2E0MS4uNDQzMmVi
ZmNjNTRhYzUzNTA2MmZjODA1NDQ1YzQ5M2YzZGMzZTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNTIzLDE5ICs1MjMsMTUg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkQKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiVW5o
YW5kbGVkIG1lc3NhZ2UgJXMgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzIiwgZGVzY3JpcHRpb24o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5j
b2RlcikKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlciwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKLSAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06
Om5hbWUoKSkgewotICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtPihjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpu
YW1lKCkpCisgICAgICAgIHJldHVybiBJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91czxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtPihjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIsIHRoaXMsICZQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0Zvcndh
cmRHb1RvSXRlbSk7CiAKLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpuYW1l
KCkpIHsKLSAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM+KGNvbm5lY3Rp
b24sIGRlY29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6bmFtZSgpKQorICAgICAg
ICByZXR1cm4gSVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXM8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM+KGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2RlciwgdGhpcywgJlByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyk7CiAKLSAgICBtX3BhZ2UuZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJu
IG1fcGFnZS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKIH0KIAogSVBDOjpDb25uZWN0aW9uKiBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApAQCAtNTQ4LDcgKzU0NCw3IEBAIHVpbnQ2NF90
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fd2ViUGFnZUlELnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVu
Y29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbykKK2Jvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewog
ICAgIC8vIFNlbmQgbWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0
aGUgSVBDOjpDb25uZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRz
IHF1ZXVlaW5nIG9mIG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwg
bGF1bmNoaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKaW5kZXggMjQ5MzhlMmFiNzU1NTcxNzMwNjUxOGYxNjYwYjE3YmQ5NDc0OTg0Zi4uZWU5
ZGQzYWQ3ODc0ODBkNTkxMWIzNDFmMjAwYTg5Y2MwNGUyZTI1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0xMDYsMTIgKzEwNiwxMiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJv
b2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwor
ICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLAogICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCA0NjBjYjhkNTM5N2ZmZDMyZTYxZGE3Y2E4ZGVm
MjdlMjE5ZTM1YmUwLi40NjRmYjc1N2QyMmE2ZjhkYmQ2MmY3OTQ5NjljY2M0MTU5OTRmMGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAg
LTI1OSw4ICsyNTksOSBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNvZAogI2VuZGlmCiB9CiAKLXZv
aWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKQorYm9v
bCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpCiB7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdApAQCAtMjczLDcgKzI3NCw3IEBAIHVpbnQ2NF90
IFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
ICAgIHJldHVybiBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpOwogfQogCi1ib29sIFN1c3BlbmRlZFBh
Z2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6
cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYm
IGFzeW5jUmVwbHlJbmZvKQorYm9vbCBTdXNwZW5kZWRQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQogewogICAgIC8v
IFNlbmQgbWVzc2FnZXMgdmlhIHRoZSBXZWJQcm9jZXNzUHJveHkgaW5zdGVhZCBvZiB0aGUgSVBD
OjpDb25uZWN0aW9uIHNpbmNlIEF1eGlsaWFyeVByb2Nlc3NQcm94eSBpbXBsZW1lbnRzIHF1ZXVl
aW5nIG9mIG1lc3NhZ2VzCiAgICAgLy8gd2hpbGUgdGhlIHByb2Nlc3MgaXMgc3RpbGwgbGF1bmNo
aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRl
eCA3N2Q3ZjdkYTgzNjZiNGUxZWIxZTBlNjQ0NTI3ZWViZmE5YzcyYWRhLi42NWQ2NzE5YjdkNDkx
NGVkMjhhMTNkNWNiNDk0MjUwYjY1Y2M0OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtOTIsMTIgKzkyLDEyIEBAIHByaXZhdGU6CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2Vu
ZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKKyAgICBib29sIHNlbmRNZXNzYWdlKFVu
aXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRp
b25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVp
bnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCAzNTI3ZGQxYWUxNWVk
NDg4ZjcwYjY5N2UxNmUyOTUyY2Q1ZDJmNDU0Li5lYzlmODY2YjdiNmRhMjA5MzdjOGJhNTFhYjVl
YzAzZWEyNWM3NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjYWxsQ2xvc2VDb21wbGV0aW9uSGFuZGxlcnMoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgbV9jbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YmI3OWQ3ZDAyZmQyMTQ4MjM0
NmM0ZTQ0ZTM2ZWNhZWQ0MmY4YTU2Li5hMjMzZjhlZTA5YWY1YTdhZjBlMjYxNjRmYTZjY2Y1YzU5
MGRlYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY0
ODQsNyArNjQ4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9GaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIG1fZmluZENsaWVudC0+ZGlkRmFpbFRvRmluZFN0cmlu
Zyh0aGlzLCBzdHJpbmcpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBX
ZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYgZW5jb2Rl
ciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6
cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYm
IGFzeW5jUmVwbHlJbmZvKQogewogICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmRNZXNzYWdlKFdU
Rk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCBXVEZNb3ZlKGFzeW5jUmVwbHlJbmZvKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3ZDY0NzNlZWE5ZmQ5
YmE2NWM0OGFiOTFlMGQzNjZmYWZkOWJjZDguLjk3YjZkMTI5NjA2OWIxYTEwNDNkOTc0NTRhMWFj
MzA0MTUwYzUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NzM2LDcgKzE3MzYsNyBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50
NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
aW50NjRfdCBleHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmKTsKIApAQCAtMTkwNiw3ICsxOTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVz
ZXJBZ2VudChTdHJpbmcmJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICBib29s
IHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIG92ZXJyaWRlOworICAgIGJvb2wgc2VuZE1l
c3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rl
ciopPiwgdWludDY0X3Q+PiYmKSBvdmVycmlkZTsKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAppbmRleCA4MmQ3ZmNiYTdjOTJkZTRmYTFm
NDY0NmRlOGJhYmY2ZDY3NWE0MDhhLi4zMTg2YmQ5NTExOGMwZTU4MDQ5MmFiZTNlM2U4NTY4ZWRi
ZTZhZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
aApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFdlYlByb2Nlc3NQcm94eUxp
c3QgPSBIYXNoU2V0PFdlYlByb2Nlc3NQcm94eSo+OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJl
ZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHdlYlBy
b2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5MDkyNjA2YmZiMmNl
ZDkxYmYxY2YwMzRiZGQyYmJlMGJlZjA3OWViLi5lMTMyNmFmODZjYjg2Njk2NzAzMDUwM2Y3MWY2
ODBkYzQwMjg3Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC0xNDMxLDcgKzE0MzEsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjpkaXNwYXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImCiAgICAgcmV0
dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUG9vbDo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6
OmRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCiB7
CiAgICAgcmV0dXJuIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmRpc3BhdGNoU3luY01lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDMzNmIyNWM5YzY1YmM2NzQ1MDMzNTk4OWQ2NTBhZTZh
MzcwZjQ4NjMuLmFhYjA4YThjMGJhZDA0ZDFjOWM4NWRjMDRjM2ZhYTVhYjkwYzllM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTc0LDcgKzE3NCw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKLSAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKKyAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKik7CiAgICAgdm9pZCBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4m
Jik7CkBAIC01NDQsNyArNTQ0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHVzZXNTaW5nbGVXZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9jb25maWd1cmF0aW9uLT51c2VzU2luZ2xlV2ViUHJvY2VzcygpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ1NWY3N2ZiNWM1M2Vj
NWYyMTk1YzY5Nzg2Nzc3ZGI1NmFjYjRmZDUuLjVhNjYyMDIyOTEzMDRiYmQ3MzdlMTE2Yjg4N2Fj
NGY5OTYzYWYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtODMwLDIwICs4MzAsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGUKICAgICAv
LyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNzYWdlIGxvZ2dpbmcuCiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIGlmIChkaXNwYXRj
aFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2RlcikpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbC0+
ZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKQorICAgICAgICBy
ZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICAvLyBGSVhNRTogQWRkIHVuaGFuZGxlZCBtZXNz
YWdlIGxvZ2dpbmcuCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggZDQxN2EzMDRjM2Y5NzBmY2MxMmM0ZGFiZjFhMWQwMWFhZGZh
NzIwZS4uMmE2OWFiZjYyMmM2Njg3NzhmZjczNjAzNmYwMjkzOWQ0MTFjMTlhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQ4Niw3ICs0ODYsNyBAQCBw
cml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNz
IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIApAQCAtNDk5LDcgKzQ5OSw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NQcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU3luY1dlYlByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogCiAgICAgYm9vbCBjYW5UZXJtaW5h
dGVBdXhpbGlhcnlQcm9jZXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oCmluZGV4IDkzYzA2YmUzZTMwYThiYzMyYmRiMjYwNTVlNzgwYjQz
YzcyM2U0NmYuLjgxZTQyMWM2YWM5NDAxOTRiNzFiMWM5Yjk3ODMwYTM4NTNlM2E4MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgc2VjSXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJlcXVlc3RE
YXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VEYXRh
PiYmKT4mJik7CiAgICAgdm9pZCBzZWNJdGVtUmVxdWVzdFN5bmMoY29uc3QgU2VjSXRlbVJlcXVl
c3REYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTZWNJdGVtUmVzcG9uc2VE
YXRhPiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDQ3ODVlN2ZmNDU3ZGIyOWFhNjM3NTNjM2FhNGY2
NTVlYjJjNGI5OGMuLjQxOWZmNmI1MmE1NDMyY2Y1ZmUyYmUxNGNjMWY5MzgzMDlhMWJhYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWMKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29s
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKQogewogICAgIHJldHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5k
aXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMTlhNjJlZDMzZThmMWI2MmZkOGM4ZmVlYzZjYzNmNjc4N2I0NzM5Ny4uOTcx
ODI0YTMxNjY3YzJmNGUyOTE4Mzk0NmY1OGQ0MjQ5NTVlMjVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtMTA2LDEx
ICsxMDYsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAg
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIGJvb2wgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
LSAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNo
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQ
Qzo6RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbW1hbmQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1ZTU2NjdjYmMyM2M5Y2M1M2UzYjA4NDE3
M2M1ZDA4NTNmOTZkMjU4Li5iNTU3OGNhODg1ZGQxN2ZkYWUzY2UyMmU5ZGEwYTYxNTE4Y2I2N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTE3NCwyNiArMTc0LDI3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAgICAgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiByZXBseUVuY29kZXIpCitib29sIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgQVNTRVJUKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiY+KCpjb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24pLmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mPigqY29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKS5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
ciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgICAgICB3ZWJQYWdlLT5w
YXltZW50Q29vcmRpbmF0b3IoKS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVy
biB3ZWJQYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAjZW5kaWYKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6
Q29ubmVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGI5Nzk0NjU5ZWFiZDE4NGIz
ODljMDZkMTMyZjhjNDJmODA1MjNjYzIuLjBhYjc5MTViN2ZhY2UzOTVlZGZiYTM3ZDM5OTJlZWQ5
N2YzYjhiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC05Myw3ICs5Myw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlx
dWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNwcAppbmRleCA4YzhiNmI2ZTk2YWFjZGJjYmRhZTU4Y2E4ZDk2NzlhN2RmMTUx
MmYzLi5iYzg5MWU5ZGJlN2I0MmE5YTY0MTcxZDZkOWRjYzRjZjk2N2ViNTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC05NywyNSArOTcsMjEgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICBwbHVnaW5Qcm94eS0+ZGlkUmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQor
Ym9vbCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKQogewotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6Ok5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpCisgICAgICAgIHJldHVybiBtX25wUmVtb3RlT2JqZWN0TWFwLT5kaWRSZWNlaXZlU3luY01l
c3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIAogICAgIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQgPSBkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKTsKIAotICAgIGlmICghZGVz
dGluYXRpb25JRCkgewotICAgICAgICBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmICghZGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuIGRp
ZFJlY2VpdmVTeW5jUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CiAKICAgICBQbHVnaW5Qcm94eSogcGx1Z2luUHJveHkgPSBt
X3BsdWdpbnMuZ2V0KGRlc3RpbmF0aW9uSUQpOwogICAgIGlmICghcGx1Z2luUHJveHkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcGx1Z2luUHJveHktPmRp
ZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5
RW5jb2Rlcik7CisgICAgcmV0dXJuIHBsdWdpblByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpblBy
b3h5TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogfQogCiB2b2lk
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uLmgKaW5kZXggOWE3ODEzMzU0MWVjMDNkMThiNDA1ZjE3Yzk4ZWE3MjIyZDYw
OWI2Yi4uMTk0N2NlZGYzN2ZkZjk3ZTg2YTZjMTY1M2MxMmQ5ODg1NzgyNzc3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC02NCwxMiArNjQsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIElQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0g
ICAgdm9pZCBkaWRSZWNlaXZlU3luY1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKTsKICAgICB2b2lkIHNldEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBt
X3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGE2M2Q3NDgwNWJmZTg2YTMzNGI2MWVi
NGRmNGY1YTU2NjQ3OWEyNGQuLjAwOGMyMDIxNmRlNWI3YTE5N2YxZjI0MjRhMTJlNTYxMmM2ZmRl
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hl
ZCgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJveHlNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94
eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKTsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGx1Z2luUHJveHkodWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZDk1NGZjMjY5ODM0NTBhMzY1NGYwYWRmZmU4NGVl
NDUyYTZjYWEzOC4uNTJhNmQ0OTY5MWFmOTE3OWQ1M2RhOTA5NzcxMmM5NWY2MTFmOGEyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5j
cHAKQEAgLTY0NCwxNCArNjQ0LDE0IEBAIEpTVmFsdWVSZWYgSlNJUEM6OnNlbmRNZXNzYWdlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGF1dG8gbWVzc2Fn
ZU5hbWUgPSBzdGF0aWNfY2FzdDxJUEM6Ok1lc3NhZ2VOYW1lPigqbWVzc2FnZUlEKTsKLSAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4obWVzc2FnZU5hbWUsICpkZXN0
aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4obWVzc2FnZU5hbWUsICpkZXN0aW5hdGlvbklEKTsKIAogICAgIEpTVmFsdWVSZWYgcmV0dXJu
VmFsdWUgPSBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAogICAgIGJvb2wgaGFzUmVw
bHkgPSAhIW1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKG1lc3NhZ2VOYW1lKTsKICAg
ICBpZiAoaGFzUmVwbHkpIHsKICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQQzo6bmV4
dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKLSAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsK
KyAgICAgICAgZW5jb2Rlci5nZXQoKSA8PCBsaXN0ZW5lcklEOwogCiAgICAgICAgIEpTT2JqZWN0
UmVmIHJlc29sdmU7CiAgICAgICAgIEpTT2JqZWN0UmVmIHJlamVjdDsKQEAgLTY4Nyw3ICs2ODcs
NyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgIH0KIAogICAgIGlmIChh
cmd1bWVudENvdW50ID4gMykgewotICAgICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KCplbmNvZGVy
LCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKSkKKyAgICAgICAgaWYg
KCFlbmNvZGVBcmd1bWVudChlbmNvZGVyLmdldCgpLCAqanNJUEMsIGNvbnRleHQsIGFyZ3VtZW50
c1szXSwgZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKICAgICB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCBKU1ZhbHVlUmVmIEpTSVBD
OjpzZW5kU3luY01lc3NhZ2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09i
amVjdFJlZgogICAgIGF1dG8gZW5jb2RlciA9IGNvbm5lY3Rpb24tPmNyZWF0ZVN5bmNNZXNzYWdl
RW5jb2RlcihtZXNzYWdlTmFtZSwgKmRlc3RpbmF0aW9uSUQsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPiA0KSB7Ci0gICAgICAgIGlmICghZW5jb2RlQXJndW1lbnQo
KmVuY29kZXIsICpqc0lQQywgY29udGV4dCwgYXJndW1lbnRzWzRdLCBleGNlcHRpb24pKQorICAg
ICAgICBpZiAoIWVuY29kZUFyZ3VtZW50KGVuY29kZXIuZ2V0KCksICpqc0lQQywgY29udGV4dCwg
YXJndW1lbnRzWzRdLCBleGNlcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA2YmNmNDQ0Njg1Y2I4ZmQ0MDI3OTkw
OGU5MmU4Nzc4NTk0ZDhiMTcwLi4wNjFmMjY2OThkOGZhY2NhMTM3MTcwNDRlZGEyNjA4NjFjNjg4
YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaApAQCAtMTI2LDEzICsxMjYsMTMgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEJhY2tp
bmdTdG9yZUZsdXNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QmFja2luZ1N0b3Jl
Rmx1c2hlcj4gewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxCYWNraW5nU3RvcmVG
bHVzaGVyPiBjcmVhdGUoSVBDOjpDb25uZWN0aW9uKiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlcj4+KTsKKyAgICAgICAgc3RhdGljIFJlZjxCYWNraW5nU3RvcmVGbHVzaGVyPiBj
cmVhdGUoSVBDOjpDb25uZWN0aW9uKiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4p
OwogCiAgICAgICAgIHZvaWQgZmx1c2goKTsKICAgICAgICAgYm9vbCBoYXNGbHVzaGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNGbHVzaGVkOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBCYWNr
aW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiosIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1
ZmZlckZsdXNoZXI+Pik7CisgICAgICAgIEJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0
aW9uKiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4pOwogCiAgICAgICAgIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4gbV9jb21taXRFbmNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVhYmU5OWY5ZmI0ZWJhNzVh
OTVhMWQxYzg0ZjgxYmNhMjcwY2RhNzQuLjk5OTI4NzFiMWMwMGU4MjEwY2I2NmRlYmQyOGVlNmIw
OGRiMTI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTM4NSw4ICszODUsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2Fj
dGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9u
LCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwot
ICAgICpjb21taXRFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCk7CisgICAgYXV0byBjb21t
aXRFbmNvZGVyID0gbWFrZVVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGNvbW1pdEVuY29kZXIuZ2V0KCkgPDwgbWVzc2FnZS5h
cmd1bWVudHMoKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNo
aW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgogICAg
IGJvb2wgaGFkQW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IGZhbHNlOwpAQCAtNDU3LDE0ICs0NTcs
MTQgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6bWFya0xheWVyc1ZvbGF0aWxl
SW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkKICAgICByZXR1cm4gbV9yZW1vdGVMYXllclRyZWVDb250
ZXh0LT5iYWNraW5nU3RvcmVDb2xsZWN0aW9uKCkubWFya0FsbEJhY2tpbmdTdG9yZVZvbGF0aWxl
SW1tZWRpYXRlbHlJZlBvc3NpYmxlKCk7CiB9CiAKLVJlZjxSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJh
Y2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQorUmVm
PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiBlbmNvZGVyLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+PiBmbHVzaGVycykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcihjb25uZWN0aW9uLCBXVEZNb3ZlKGVu
Y29kZXIpLCBXVEZNb3ZlKGZsdXNoZXJzKSkpOwogfQogCi1SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6QmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4+IGZsdXNoZXJzKQorUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmIGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQogICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCi0gICAgLCBtX2NvbW1pdEVuY29kZXIoV1RGTW92
ZShlbmNvZGVyKSkKKyAgICAsIG1fY29tbWl0RW5jb2RlcihlbmNvZGVyLm1vdmVUb1VuaXF1ZVB0
cigpKQogICAgICwgbV9mbHVzaGVycyhXVEZNb3ZlKGZsdXNoZXJzKSkKICAgICAsIG1faGFzRmx1
c2hlZChmYWxzZSkKIHsKQEAgLTQ4MCw3ICs0ODAsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCgpCiAgICAgICAgIGZsdXNoZXIt
PmZsdXNoKCk7CiAgICAgbV9oYXNGbHVzaGVkID0gdHJ1ZTsKIAotICAgIG1fY29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOworICAgIEFTU0VSVCht
X2NvbW1pdEVuY29kZXIpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UobWFrZVVuaXF1
ZVJlZkZyb21Ob25OdWxsVW5pcXVlUHRyKFdURk1vdmUobV9jb21taXRFbmNvZGVyKSksIHsgfSk7
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+LCBBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDQzOTRjYzU3NjJmOTViZWI4MGYwMzcwYzNmMTg2MDBkNjdkZDU1OGQuLjky
MTE3NzQwM2M1YzJhZGVmYzgxMmEzNGJhMWMyNTRhMWExZDAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00ODg2LDkgKzQ4ODYsOSBAQCB2
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZAogICAgIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlBhZ2U6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikK
IHsgICAKLSAgICBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggZjIxOGU5MGQ3MjdjYzdkMGNhNjNlYWNlODA2NzEwMjI3MzI5MzdjZS4uODRjNWM0
OWQ3MmQ4MzI2M2Y4ZmJkYTQ0ZGY4MzhmMWM1MjdlZThiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDgxLDcgKzQ4MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFJlZjxXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcj4mJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rl
cj4mKSBvdmVycmlkZTsKIAogICAgIC8vIC0tIEluamVjdGVkQnVuZGxlIG1ldGhvZHMKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kVG91Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkVXBkYXRlKFdlYkNvcmU6OkhUTUxN
ZW51SXRlbUVsZW1lbnQmKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+Jik7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
Jik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IGExOWEwMjNmNzg3ZDUzOTY3NDliYmJjZjMyNzU0ODQ4YWIxYWQ3OTQuLjk2
YjFhZDQ3Y2MwYWMzOTU4M2NkZjFjOTQwMjU1MzAwMDUyOTMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTgwMSwxMCArODAxLDExIEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dGVybWluYXRlKCkKICAgICBBdXhpbGlhcnlQcm9jZXNzOjp0ZXJtaW5hdGUoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JiByZXBseUVuY29kZXIpCitib29sIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcikKIHsKICAgICBpZiAobWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGU4YTc5ZjhhMjI5NDFiM2NmNjlk
NWVjNWZjMzI1MDA4NzFhNTAzMjcuLjRiZTU1ZGJlMWMwYWE4ZmE0NzEyZmFhNGNjZjlmZDU1NGQ5
MmI5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNTE2LDcgKzUx
Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICBmcmll
bmQgY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICBib29sIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2Vu
ZXJhdGVkIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZl
V2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>