<?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>222293</bug_id>
          
          <creation_ts>2021-02-22 15:59:46 -0800</creation_ts>
          <short_desc>[GPUP] Use a WeakPtr of GPUConnectionToWebProcess instead of a reference in some media related objects</short_desc>
          <delta_ts>2021-02-24 22:45:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732354</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 15:59:46 -0800</bug_when>
    <thetext>[GPUP] Use a WeakPtr of GPUConnectionToWebProcess instead of a reference in some media related objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732362</commentid>
    <comment_count>1</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 16:09:52 -0800</bug_when>
    <thetext>&lt;rdar://74560577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732365</commentid>
    <comment_count>2</comment_count>
      <attachid>421258</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 16:10:34 -0800</bug_when>
    <thetext>Created attachment 421258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732622</commentid>
    <comment_count>3</comment_count>
      <attachid>421258</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-23 11:10:55 -0800</bug_when>
    <thetext>Comment on attachment 421258
Patch

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

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:204
&gt;  const Logger&amp; RemoteMediaPlayerManagerProxy::logger() const
&gt;  {
&gt; -    return m_gpuConnectionToWebProcess.logger();
&gt; +    ASSERT(m_gpuConnectionToWebProcess);
&gt; +    return m_gpuConnectionToWebProcess-&gt;logger();
&gt;  }

This won&apos;t go well if the connection to the web process goes away. 

You should probably change it to `RemoteMediaPlayerManagerProxy::loggerPtr()`, and change the log sites that called this to use `*_LOG_IF(loggerPtr(), ...`

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:140
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());
&gt; +    m_mediaSourceProxy = adoptRef(*new RemoteMediaSourceProxy(*m_manager.gpuConnectionToWebProcess(), mediaSourceIdentifier, webMParserEnabled, *this));

This will crash in a release build, so you should rearrange the code so you can return a configuration that signals an error if the web process is gone.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:255
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

This will also crash and needs to be restructured.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:381
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:415
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:486
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:508
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:530
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:622
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:820
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:851
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:859
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:867
&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:55
&gt; +    ASSERT(m_connectionToWebProcess);

Ditto

&gt; Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:63
&gt; +    m_connectionToWebProcess-&gt;messageReceiverMap().removeMessageReceiver(Messages::RemoteSourceBufferProxy::messageReceiverName(), m_identifier.toUInt64());

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733073</commentid>
    <comment_count>4</comment_count>
      <attachid>421258</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-24 14:08:07 -0800</bug_when>
    <thetext>Comment on attachment 421258
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:204
&gt;&gt;  }
&gt; 
&gt; This won&apos;t go well if the connection to the web process goes away. 
&gt; 
&gt; You should probably change it to `RemoteMediaPlayerManagerProxy::loggerPtr()`, and change the log sites that called this to use `*_LOG_IF(loggerPtr(), ...`

Based on a discussion with Eric, I changed the implementation to create a logger in RemoteMediaPlayerManagerProxy instead of using the logger created by GPUConnectionToWebProcess.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:140
&gt;&gt; +    m_mediaSourceProxy = adoptRef(*new RemoteMediaSourceProxy(*m_manager.gpuConnectionToWebProcess(), mediaSourceIdentifier, webMParserEnabled, *this));
&gt; 
&gt; This will crash in a release build, so you should rearrange the code so you can return a configuration that signals an error if the web process is gone.

Right. In addition, we will need to check whether &quot;m_manager&quot; is destroyed or not. Because m_manager (RemoteMediaPlayerManagerProxy) is owned by GPUConnectionToWebProcess. When the GPUConnectionToWebProcess instance is destroyed, the &quot;m_manager&quot; will be destroyed as well.

We have to keep a WeakPtr of RemoteMediaPlayerManagerProxy in RemoteMediaPlayerProxy to implement that.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:255
&gt;&gt; +    ASSERT(m_manager.gpuConnectionToWebProcess());
&gt; 
&gt; This will also crash and needs to be restructured.

Right. Fixed as described by the above comment.
And the same for following comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733104</commentid>
    <comment_count>5</comment_count>
      <attachid>421465</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-24 15:13:36 -0800</bug_when>
    <thetext>Created attachment 421465
Revise the patch based on Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733220</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-24 22:31:13 -0800</bug_when>
    <thetext>commit-queue failed to commit attachment 421465 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733225</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-24 22:45:32 -0800</bug_when>
    <thetext>Committed r273473: &lt;https://commits.webkit.org/r273473&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421465.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421258</attachid>
            <date>2021-02-22 16:10:34 -0800</date>
            <delta_ts>2021-02-23 11:10:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222293-20210222161033.patch</filename>
            <type>text/plain</type>
            <size>74601</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ0Yjg3ODU3ZjQ5MWYxMjA1
MDUyYmQ0MmE1OTU5ZTgxNzVmOTdmYWUuLmE4NDM4ZDJmYmE3OTU2NGFhMjhmOGEyMDU0OThkZjBm
NGMzNmRmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDIxLTAyLTIyICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFVzZSBhIFdlYWtQdHIg
b2YgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlIGluIHNv
bWUgbWVkaWEgcmVsYXRlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgb2JqZWN0IG1heSBi
ZSBkZXN0cm95ZWQgd2hlbiB3ZSBjbG9zZSBhIHBhZ2UsIHRoZW4gY3Jhc2ggd2lsbCBoYXBwZW4K
KyAgICAgICAgaW4gY2FsbGJhY2tzIGFjY2Vzc2luZyB0aGUgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBvYmplY3QuIEZvciBleGFtcGxlLCBpbgorICAgICAgICBgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoKWAuIFRoaXMg
cGF0Y2gKKyAgICAgICAgcmVwbGFjZXMgdGhlIHJlZmVyZW5jZXMgdG8gYSBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIHdpdGggV2Vha1B0cihzKSBpbiBwbGFjZXMgd2hlcmUgdGhlCisgICAgICAg
IGlzc3VlIG1heSBoYXBwZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBGaXggc29tZSB0ZXN0
IGNyYXNoZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQ
cm94eTo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5OjphdWRpb0hhcmR3YXJlRGlkQmVjb21lSW5h
Y3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94
eTo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlc3Npb25JZENoYW5nZWQpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6ZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6flJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6YWRkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1Qcm94eTo6Y2RtTWVkaWFQbGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZEVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eTo6UmVtb3RlTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeVByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRNZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmFkZFJlbW90ZUF1ZGlvVHJhY2tQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmFkZFJlbW90ZVZpZGVvVHJhY2tQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmFkZFJlbW90
ZVRleHRUcmFja1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldExlZ2FjeUNETVNlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVtcHRUb0Rl
Y3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFTb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJv
eHk6OlJlbW90ZU1lZGlhU291cmNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVNvdXJjZVByb3h5Ojp+UmVtb3RlTWVkaWFTb3VyY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNlZWtUb1RpbWUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVNvdXJjZVByb3h5OjphZGRTb3VyY2VCdWZmZXIpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eTo6UmVtb3RlUmVtb3RlQ29t
bWFuZExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXJQcm94eTo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp+UmVt
b3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcENoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0
ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZVJl
cG9ydEV4dHJhTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1
ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
UmVtb3RlVGV4dFRyYWNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQ
cm94eTo6Y29uZmlndXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0
VHJhY2tQcm94eTo6YWRkRGF0YUN1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFj
a1Byb3h5Ojp1cGRhdGVEYXRhQ3VlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNr
UHJveHk6OnJlbW92ZURhdGFDdWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQ
cm94eTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRUcmFja1By
b3h5Ojp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNr
UHJveHk6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6cGFyc2VXZWJWVFRGaWxlSGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
VGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3VlRGF0YSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVmlk
ZW9UcmFja1Byb3h5OjpSZW1vdGVWaWRlb1RyYWNrUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oOgorCiAyMDIxLTAyLTIyICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09V
UF0gQWRkIHN1cHBvcnQgZm9yIGxpYnNvdXAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZGFmMDM4MTQ1Mzg5
ZDQ2NzY4MmQ0Yzk0YjYwMDg1N2RkMWUzMWE2MS4uMzRmOGM3N2JhZTczOTQ0NmUzOGRmMjU4Yzc0
OTY3MTk3MGZlZjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGVnYWN5Q2Rt
RmFjdG9yeVByb3h5KCkKIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94
eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeVByb3h5KCkKIHsKICAgICBpZiAoIW1fbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eVByb3h5KQotICAgICAgICBtX21lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSA9
IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5Pigq
dGhpcyk7CisgICAgICAgIG1fbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5ID0g
bWFrZVVuaXF1ZTxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk+KCk7
CiAgICAgcmV0dXJuICptX21lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eTsKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggOTJkMTgyNDU0ZTM4MGQxMzI5YWUxZjI0MzM5ZDFlYmIxZmYx
MWE4NC4uODRjY2FlMGU5MWM1MTI5NWZjMTJjNDgwZTQ0N2MxMWYzNGQ0Y2YzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIgotCiAjaW5jbHVkZSA8
V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5
aW5nTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3
YXJlTGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuY3BwCmluZGV4IDg1N2Y2OWZjNWY2MmNjZDI2
YTliMmZlNmVlMDBjOWRjMzRmNjEzNDQuLjNmYzdkMzg4NTBkZTBiZGI0MzIxYmZkYTU5ODg3NmZh
NTQ1MDA4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmNwcApAQCAtMzQs
NyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJJ
ZGVudGlmaWVyJiYgaWRlbnRpZmllcikKLSAgICA6IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0
aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb24pKQog
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikpCiAgICAgLCBtX2xpc3RlbmVy
KFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzKSkKIHsKQEAgLTQ0
LDE4ICs0NCwyNyBAQCBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6flJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZUF1ZGlv
SGFyZHdhcmVMaXN0ZW5lclByb3h5OjphdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkKIHsK
LSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUFjdGl2ZSgpLCBtX2lk
ZW50aWZpZXIpOworICAgIGlmICghbV9ncHVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2dwdUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXI6OkF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6
YXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCkKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6
QXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCksIG1faWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2dwdUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1Q29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5l
cjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCksIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk6OmF1ZGlvT3V0cHV0RGV2aWNl
Q2hhbmdlZCgpCiB7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsK
KwogICAgIGF1dG8gc3VwcG9ydGVkQnVmZmVyU2l6ZXMgPSBtX2xpc3RlbmVyLT5zdXBwb3J0ZWRC
dWZmZXJTaXplcygpOwotICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpBdWRpb091dHB1dERldmljZUNoYW5n
ZWQoc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWluaW11bSwgc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWF4
aW11bSksIG1faWRlbnRpZmllcik7CisgICAgbV9ncHVDb25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpBdWRpb091dHB1dERl
dmljZUNoYW5nZWQoc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWluaW11bSwgc3VwcG9ydGVkQnVmZmVy
U2l6ZXMubWF4aW11bSksIG1faWRlbnRpZmllcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVM
aXN0ZW5lclByb3h5LmgKaW5kZXggMGQ5NzUyYWY4MDUwMmY0NzIyNDgyOWQ0NThlNDNmZWQyNTVj
MGNhMy4uODM2M2I4NzE3NTBmNTFkNTZhMDQzZDNkMDhlM2E5ZDcyODZkZmJmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0
aW9uOwpAQCAtNTIsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXVkaW9IYXJkd2FyZURp
ZEJlY29tZUluYWN0aXZlKCkgZmluYWw7CiAgICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5n
ZWQoKSBmaW5hbDsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVj
dGlvbjsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVj
dGlvbjsKICAgICBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBSZWY8V2ViQ29yZTo6QXVkaW9IYXJkd2FyZUxpc3RlbmVyPiBtX2xpc3RlbmVy
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5kZXggNzI1NjI4YTk2NGZkODFjOWZlZGQ1NTA4YzVmMzRh
ZDNkNWY3YTM0NC4uYzI1ZWRkODk3YWFiNGU4MWM0ODIwYzdiYWZhYmY4OGVhM2FkMDVkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OlJlbW90ZUF1
ZGlvVHJhY2tQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEF1ZGlvVHJh
Y2tQcml2YXRlJiB0cmFja1ByaXZhdGUsIE1lZGlhUGxheWVySWRlbnRpZmllciBtZWRpYVBsYXll
cklkZW50aWZpZXIpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihj
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ICAgICwgbV90cmFja1ByaXZhdGUodHJhY2tQcml2YXRlKQogICAgICwgbV9tZWRpYVBsYXllcklk
ZW50aWZpZXIobWVkaWFQbGF5ZXJJZGVudGlmaWVyKQogewogICAgIG1fdHJhY2tQcml2YXRlLT5z
ZXRDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZFJlbW90ZUF1ZGlv
VHJhY2sobV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRp
Zmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRSZW1vdGVBdWRpb1RyYWNrKG1f
aWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwog
fQogCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6On5SZW1vdGVBdWRpb1RyYWNrUHJveHkoKQpAQCAt
NzAsNyArNzAsMTAgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlQXVk
aW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIAogdm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJv
eHk6OmNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
UmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKG1faWRlbnRpZmllciwgY29uZmln
dXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OlJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChtX2lkZW50aWZpZXIs
IGNvbmZpZ3VyYXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBS
ZW1vdGVBdWRpb1RyYWNrUHJveHk6OndpbGxSZW1vdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5oCmluZGV4IDU5MDQy
NDlhZWFkNTY1NGYxYjEwODI3NTUzZmYxYjliMzE0YmVkODEuLjVlMjA4ODVmNTA2YjlmZjI3OTcz
OGFkMGJiZTZiM2RkNzUyNGU5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTc0LDcgKzc1
LDcgQEAgcHJpdmF0ZToKICAgICBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKCk7CiAgICAgdm9pZCBjb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogCi0gICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFdl
YWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJl
ZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7CiAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5LmNwcAppbmRleCA3ZTFhZmFhNDQ0ZTg2ZjRiODk0NmMyMzM3NTA0MDJhOTNmY2FmMDNiLi41
OTYzMDUxODA2ZmY1ZGNmMGVhMWVkYmUxNDNmMTdkYWU5Nzc0NzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUNETUZhY3RvcnlQcm94eShH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQotICAgIDogbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlvbikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaAppbmRleCAy
N2I4YTI4ZjRjM2Y0ZGQzNzcyODIzY2E3MDUxY2QzNjZkMWRjZjQ1Li4yNmNhMzkzNzAyZTI1MDMy
OGQwMDA0N2IxMjViMGViYTUxZDBmODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1J
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyLmgiCkBA
IC0zNyw3ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTsKIGNsYXNzIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OwogY2xhc3MgUmVtb3RlQ0RNUHJveHk7CkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNlc3Npb24oY29uc3QgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eT4mJik7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uKGNvbnN0IFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOwpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90
ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKT4mJik7CiAgICAgdm9p
ZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgSGFzaE1hcDxSZW1v
dGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBtX3Byb3hp
ZXM7CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CiAgICAgSGFzaE1hcDxS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmlu
ZGV4IDE0OThkM2NhMzFiYzA4N2UxMmUyNGU4MzgxNjg3ZTk3MjkwZTQ2YzMuLmJkODM1YzUxYThj
YWVkZDY5NWUwMGMyNWIwZDIzOWU3MGZkNzlkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTY2
LDggKzY2LDE1IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFtX2NkbSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgp
KQotICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlOjpVbnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKHR5cGUsIFdURk1vdmUoaW5pdERhdGEpKSwgbV9pZGVudGlmaWVy
KTsKKyAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKTsKKyAgICBpZiAoIWZhY3Rv
cnkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgaWYgKCFncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2U6OlVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQodHlwZSwgV1RGTW92
ZShpbml0RGF0YSkpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNl
UHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMgYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSBh
bGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUp
PiYmIGNvbXBsZXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCA0OWVm
NDhkYmZlNmQ1NTI5MjIwYzcwZjNhMTE5NzVmOWZlYjg2YmRkLi44MjQ2ZDljNzU2ZWYzYjcxZDBm
ODhiY2RjYTQ4NjhjZjFiYjg3YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAK
QEAgLTEzOCwxNyArMTM4LDMwIEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgaWYgKCFt
X2NkbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+
ZmFjdG9yeSgpKQotICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBk
YXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOworICAg
IGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgpOworICAgIGlmICghZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IGZh
Y3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICBpZiAoIWdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewog
ICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBmYWN0b3J5ID0gbV9j
ZG0tPmZhY3RvcnkoKTsKKyAgICBpZiAoIWZhY3RvcnkpCisgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKSkKLSAgICAgICAgZmFjdG9yeS0+
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdlKHR5cGUsIFdURk1vdmUobWVzc2Fn
ZSkpLCBtX2lkZW50aWZpZXIpOworICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgaWYgKCFncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklk
Q2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKQEAgLTE1Niw4ICsxNjksMTUgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoYXV0byogZmFjdG9yeSA9IG1fY2RtLT5mYWN0b3J5KCkpCi0gICAgICAgIGZhY3Rvcnkt
PmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uSWRDaGFuZ2VkKHNlc3Npb25JZCksIG1f
aWRlbnRpZmllcik7CisgICAgYXV0byogZmFjdG9yeSA9IG1fY2RtLT5mYWN0b3J5KCk7CisgICAg
aWYgKCFmYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAg
IGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hhbmdlZChzZXNzaW9uSWQpLCBtX2lk
ZW50aWZpZXIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCA3NTRhMWUw
M2MyMmFjMzZmZGUwNmI2MTgwMzk2MzA5ZWIyOWVjNzEyLi4zNDQ2MjM5MWIyODhiM2RiYWQzMGZh
NzU0NjlmNzJkODkwNzNmM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgOiBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1f
Y29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KSkKIHsKIH0KIApAQCAtNzQsMTEgKzc0LDExIEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmRlbGV0ZURlY29kZXIoY29uc3QgSW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlCiAK
IHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmVuY29kZWREYXRhU3RhdHVzQ2hhbmdl
ZChjb25zdCBJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIGlmICgh
bV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQorICAgIGlmICghbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzIHx8ICFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFnZURlY29k
ZXJzLmdldChpZGVudGlmaWVyKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OkVuY29k
ZWREYXRhU3RhdHVzQ2hhbmdlZChpZGVudGlmaWVyLCBpbWFnZURlY29kZXItPmZyYW1lQ291bnQo
KSwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSksIDApOwor
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OkVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChp
ZGVudGlmaWVyLCBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKSwgaW1hZ2VEZWNvZGVyLT5zaXpl
KCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSksIDApOwogfQogCiB2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGNvbnN0IEltYWdlRGVjb2Rl
cklkZW50aWZpZXImIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaAppbmRleCAwYzBiOThiYjJlZDA1NGM2ZGM1YzgwZDUwNTM2Y2Yz
ZGY1OGIwYWJiLi45MDMyZWVhNWFmYTEyZmFkZDVhYTA2MGI2YTAxYzkxZWY2OWFjZjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CkBAIC01Nyw3ICs1OCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChjb25zdCBX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vha1B0cjxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgSGFzaE1h
cDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4+IG1faW1hZ2VEZWNvZGVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5jcHAKaW5kZXggNTM3ZTkwYWZjNjRlZDQ2ZmY0YTA5NDViZTE4YmM5Y2VhNmRjZjI1ZS4u
Mzc4ZmEzNGRlODdiNzBjODk4MmEyMjZmYjk5MGMxNWU3MDAzZDE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eS5jcHAKQEAgLTQxLDE3ICs0MSwyMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uKQotICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCisg
ICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlvbikp
CiB7CiB9CiAKIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6flJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eSgpCiB7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGZvciAoYXV0byBjb25zdCYgc2Vzc2lvbiA6IG1fc2Vzc2lv
bnMpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBzZXNzaW9uLmtleS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBzZXNzaW9uLmtleS50b1VJbnQ2NCgpKTsKIAog
ICAgIGZvciAoYXV0byBjb25zdCYgcHJveHkgOiBtX3Byb3hpZXMpCi0gICAgICAgIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHByb3h5LmtleS50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHByb3h5Lmtl
eS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmNy
ZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyPiYmIG9wdGlvbmFsUGxheWVySWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
TGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uKQpAQCAtMTA2LDcgKzEwOSwxMCBA
QCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3RpbwogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+JiYgcHJveHkpCiB7Ci0gICAgZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqcHJveHkpOworICAgIGlmICghbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAqcHJveHkpOwogCiAgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFp
bnMoaWRlbnRpZmllcikpOwogICAgIG1fcHJveGllcy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShw
cm94eSkpOwpAQCAtMTE0LDcgKzEyMCwxMCBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZGVudGlmaWVyLAogCiB2
b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJl
Y2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lD
RE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CiAgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9wcm94
aWVzLnJlbW92ZShpZGVudGlmaWVyKTsKQEAgLTEyMiw3ICsxMzEsMTAgQEAgdm9pZCBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZp
ZXIgaWRlbnRpZmkKIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFNlc3Np
b24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQogewotICAgIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCksICpzZXNzaW9uKTsKKyAgICBpZiAo
IW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCksICpzZXNzaW9uKTsKIAogICAgIEFT
U0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgbV9zZXNzaW9ucy5z
ZXQoaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CkBAIC0xMzAsNyArMTQyLDEwIEBAIHZv
aWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyIGlkCiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiB7Ci0gICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm1lc3NhZ2VSZWNlaXZlck1h
cCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgaWYgKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIEFT
U0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBtX3Nlc3Npb25zLnJl
bW92ZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAppbmRleCA2YjU3MmI0YzQy
MTdhMThhNGRlMDRjOTUxNDYzNDJjZTNmOTJhM2ExLi41YjcyZTdlMzg5YTFkNmI2NGU4ZDkyNzdl
OTkzZWViNDY0ZmM0MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyLmgiCkBAIC0zNyw3ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5OwogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHk7CiBzdHJ1Y3QgUmVt
b3RlTGVnYWN5Q0RNQ29uZmlndXJhdGlvbjsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CiAg
ICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KiBnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyJikgY29uc3Q7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0
ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5
ZXJJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXImJik+JiYpOwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5Pj4g
bV9wcm94aWVzOwogICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIs
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25z
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuY3BwCmluZGV4IDgwYzkzNzRlOTcwNTllZTEzOTU1NWViMDY1MjE5NDgy
OTYyMDFkOTMuLmM3NDVmNzE3ZjIzMzQ2YmRmZmYwNWVkMjQzN2Y2YTFjNTUyMTE0NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAotI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHku
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKQEAgLTg3LDcgKzg2LDExIEBAIFJlZlB0cjxNZWRp
YVBsYXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2Fj
eUNETSopIGNvbnN0CiAgICAgaWYgKCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIo
bV9wbGF5ZXJJZCk7CisgICAgYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZmFj
dG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIGlmICghZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5t
ZWRpYVBsYXllcihtX3BsYXllcklkKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cAppbmRleCAyYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4YjgyNWM2ZTQ1YjUzLi5iMjkwODk4
MWU0Nzc3M2E1N2MyODZjYjYzNWJkOTJjY2YzMGY3NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcApAQCAtMTI4LDIyICsxMjgsMzYgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW4KICAg
ICBpZiAoIW1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mYWN0b3J5LT5ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVy
ZW5jZShtZXNzYWdlKSwgZGVzdGluYXRpb25VUkwpLCBtX2lkZW50aWZpZXIpOworICAgIGF1dG8q
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKTsKKyAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAg
IHJldHVybjsKKworICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0
VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCiB7Ci0g
ICAgaWYgKG1fZmFjdG9yeSkKLSAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworICAg
IGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzID0gbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7
CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisK
KyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZEVycm9yKGVycm9yQ29kZSwgc3lzdGVtQ29k
ZSksIG1faWRlbnRpZmllcik7CiB9CiAKIFN0cmluZyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewotICAgIGlmIChtX2ZhY3Rv
cnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
Ci19CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
CisgICAgYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZmFjdG9yeS0+Z3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cykKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworfQogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5jcHAK
aW5kZXggYTY4NDA4YTA4MjNlMmE4MzI1MjhlMDFiOTA2OWEyZjU2MjI4OGZiYS4uMzk4NTA4NzY1
MmRmMjVlNjI1YzNjMzg0Y2JhMTQ5YzY4YjlhZTljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5jcHAKQEAgLTM5LDggKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZW1vdGVNZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk6OlJlbW90ZU1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
KQotICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCitSZW1vdGVN
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk6OlJlbW90ZU1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaAppbmRleCA1NDZkNzg4YjcxNmM2ZGUxNzEyNTA4
MWI2Zjk5ODkxYzA1YWY3YzE3Li41YmRkNmNiOWVmY2RlN2RiMzRmNzkwOGU5MmE2M2U5Yzg1YWY4
ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94
eS5oCkBAIC0zNSwxOCArMzUsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIGNsYXNzIFJlbW90ZU1lZGlhRW5naW5lQ29uZmln
dXJhdGlvbkZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5UHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBS
ZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYpOworICAgIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQ
cm94eSgpOwogICAgIHZpcnR1YWwgflJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlQcm94eSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9Ci0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCkBA
IC01NSw4ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMKICAgICB2b2lkIGNyZWF0
ZURlY29kaW5nQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
biYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ2FwYWJpbGl0aWVzRGVj
b2RpbmdJbmZvJiYpPiYmKTsKICAgICB2b2lkIGNyZWF0ZUVuY29kaW5nQ29uZmlndXJhdGlvbihX
ZWJDb3JlOjpNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6Ok1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmKTsKLQotICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhMjRhMmFhYmUy
NDViOTAzYTg5NzgwMzE1OWM1ZjNmZmE5MzdmZGQuLmMwZmQ2NWJjMGUxOGEzZDJhY2IwMWE5ZWNj
ZjE3OWNjNGJmMmFhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtNDgs
NyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKLSAgICA6IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgICwgbV9sb2dJZGVudGlmaWVyKFdURjo6TG9nZ2VySGVscGVyOjp1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKQEAgLTYyLDEzICs2MiwxNCBAQCBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6flJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhUGxheWVyKE1lZGlhUGxh
eWVySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlk
ZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3Vy
YXRpb24mJiBwcm94eUNvbmZpZ3VyYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKTsKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm94aWVzTG9jayk7
CiAgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCiAgICAgUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb247CiAKLSAgICBh
dXRvIHByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllclByb3h5PigqdGhpcywgaWRl
bnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgZW5naW5l
SWRlbnRpZmllciwgV1RGTW92ZShwcm94eUNvbmZpZ3VyYXRpb24pKTsKKyAgICBhdXRvIHByb3h5
ID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVBsYXllclByb3h5PigqdGhpcywgaWRlbnRpZmllciwg
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCksIGVuZ2luZUlkZW50aWZp
ZXIsIFdURk1vdmUocHJveHlDb25maWd1cmF0aW9uKSk7CiAgICAgcHJveHktPmdldENvbmZpZ3Vy
YXRpb24ocGxheWVyQ29uZmlndXJhdGlvbik7CiAgICAgbV9wcm94aWVzLmFkZChpZGVudGlmaWVy
LCBXVEZNb3ZlKHByb3h5KSk7CiAKQEAgLTE5OCw3ICsxOTksOCBAQCBSZWZQdHI8TWVkaWFQbGF5
ZXI+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihjb25zdCBNZWRp
YVBsYXllcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmxvZ2dlcigpOworICAgIEFTU0VSVChtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpOworICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmxvZ2dlcigpOwogfQogCiBXVEZMb2dDaGFubmVsJiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6bG9nQ2hhbm5lbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmlu
ZGV4IDIzN2FmOWI2ODAxMGM2MjQyOTY4ZWZkMGU0MGI1NGQ0OGQwZjQ1MDkuLjQzMTZjMmNiZjc2
NGZhYjRjMDNkN2YxZDE3YjViNzQyYjEyNGM4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgpAQCAtMzgsNyAr
MzksNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3QgUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25m
aWd1cmF0aW9uOwpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwogICAg
IH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOwogCi0gICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsgfQorICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7IH0KQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIExvY2sgbV9wcm94aWVz
TG9jazsKICAgICBIYXNoTWFwPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+PiBtX3Byb3hpZXM7Ci0gICAgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFdl
YWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qgdm9pZCogbV9sb2dJ
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGUxNTRmY2FhYTc4MGFlMGMzMzZiYmRl
MzNlYjdkYjU2OGMyODcxNDkuLmRlYTU1OGUzZTM0MDZmYTZkYWUzYjlhODk1N2ZlNTZlMzAxZTEz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEzNiw3ICsxMzYsOCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+JgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OmxvYWRNZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRl
bnRUeXBlJiBjb250ZW50VHlwZSwgYm9vbCB3ZWJNUGFyc2VyRW5hYmxlZCwgUmVtb3RlTWVkaWFT
b3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgbV9tZWRpYVNvdXJjZVByb3h5ID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVNZWRp
YVNvdXJjZVByb3h5KG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIG1lZGlh
U291cmNlSWRlbnRpZmllciwgd2ViTVBhcnNlckVuYWJsZWQsICp0aGlzKSk7CisgICAgQVNTRVJU
KG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOworICAgIG1fbWVkaWFTb3Vy
Y2VQcm94eSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFTb3VyY2VQcm94eSgqbV9tYW5hZ2Vy
LmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCB3ZWJN
UGFyc2VyRW5hYmxlZCwgKnRoaXMpKTsKICAgICBtX3BsYXllci0+bG9hZCh1cmwsIGNvbnRlbnRU
eXBlLCBtX21lZGlhU291cmNlUHJveHkuZ2V0KCkpOwogCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CkBAIC0yNTEsNyArMjUyLDggQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpzZXRSYXRlKGRvdWJsZSByYXRlKQogCiBSZWY8UGxhdGZvcm1N
ZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2Fk
T3B0aW9ucyBvcHRpb25zKQogewotICAgIGF1dG8mIHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5yZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcigpOworICAgIEFTU0VSVChtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpKTsKKyAgICBhdXRvJiByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciA9IG1fbWFuYWdl
ci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPnJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
KCk7CiAgICAgYXV0byByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgIGF1dG8gcmVtb3RlTWVkaWFSZXNv
dXJjZSA9IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmNyZWF0ZShyZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlciwgKnRoaXMsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICByZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5hZGRNZWRpYVJlc291cmNlKHJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyLCByZW1vdGVNZWRpYVJlc291cmNlKTsKQEAgLTM3Niw3ICszNzgsOCBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCkg
Y29uc3QKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIFN0cmluZyBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdAogewotICAgIHJldHVybiBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBBU1NFUlQobV9tYW5hZ2VyLmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisgICAgcmV0dXJuIG1fbWFuYWdlci5ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCktPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRp
ZgogCkBAIC00MDksNyArNDEyLDggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6Ok0KIAogY29uc3Qg
U3RyaW5nJiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJl
Y3RvcnkoKSBjb25zdAogewotICAgIHJldHVybiBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBBU1NFUlQobV9tYW5hZ2VyLmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisgICAgcmV0dXJuIG1fbWFuYWdlci5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCktPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIH0KIAogY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvbnRlbnRUeXBlPiYgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdApAQCAtNDc5LDgg
KzQ4Myw5IEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6YWRkUmVtb3RlQXVkaW9UcmFja1Byb3h5KFdlCiAgICAgdHJhY2suc2V0TG9nZ2VyKG1l
ZGlhUGxheWVyTG9nZ2VyKCksIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKTsKICNlbmRpZgog
CisgICAgQVNTRVJUKG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOwogICAg
IGF1dG8gaWRlbnRpZmllciA9IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7Ci0gICAgbV9hdWRpb1RyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6
OmNyZWF0ZShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBpZGVudGlmaWVy
LCB0cmFjaywgbV9pZCkpOworICAgIG1fYXVkaW9UcmFja3Muc2V0KCZ0cmFjaywgUmVtb3RlQXVk
aW9UcmFja1Byb3h5OjpjcmVhdGUoKm1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCksIGlkZW50aWZpZXIsIHRyYWNrLCBtX2lkKSk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9
CiAKQEAgLTUwMCw4ICs1MDUsOSBAQCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmFkZFJlbW90ZVZpZGVvVHJhY2tQcm94eShXZQogICAgIHRyYWNr
LnNldExvZ2dlcihtZWRpYVBsYXllckxvZ2dlcigpLCBtZWRpYVBsYXllckxvZ0lkZW50aWZpZXIo
KSk7CiAjZW5kaWYKIAorICAgIEFTU0VSVChtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpKTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwotICAgIG1fdmlkZW9UcmFja3Muc2V0KCZ0cmFjaywgUmVtb3RlVmlk
ZW9UcmFja1Byb3h5OjpjcmVhdGUobV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSwgaWRlbnRpZmllciwgdHJhY2ssIG1faWQpKTsKKyAgICBtX3ZpZGVvVHJhY2tzLnNldCgmdHJh
Y2ssIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6Y3JlYXRlKCptX21hbmFnZXIuZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLCBpZGVudGlmaWVyLCB0cmFjaywgbV9pZCkpOwogICAgIHJldHVybiBp
ZGVudGlmaWVyOwogfQogCkBAIC01MjEsOCArNTI3LDkgQEAgVHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphZGRSZW1vdGVUZXh0VHJhY2tQcm94eShX
ZWIKICAgICB0cmFjay5zZXRMb2dnZXIobWVkaWFQbGF5ZXJMb2dnZXIoKSwgbWVkaWFQbGF5ZXJM
b2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCiAKKyAgICBBU1NFUlQobV9tYW5hZ2VyLmdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKSk7CiAgICAgYXV0byBpZGVudGlmaWVyID0gVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3RleHRUcmFja3Muc2V0KCZ0cmFj
aywgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmNyZWF0ZShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLCBpZGVudGlmaWVyLCB0cmFjaywgbV9pZCkpOworICAgIG1fdGV4dFRyYWNr
cy5zZXQoJnRyYWNrLCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y3JlYXRlKCptX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBpZGVudGlmaWVyLCB0cmFjaywgbV9pZCkpOwogICAg
IHJldHVybiBpZGVudGlmaWVyOwogfQogCkBAIC02MTIsNyArNjE5LDkgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25z
dCBTdHJpbmcmIGtleUlkKSBjb25zdAogewotICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21h
bmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgp
LmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkKKyAgICBBU1NFUlQobV9tYW5hZ2VyLmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisKKyAgICBpZiAoYXV0byBjZG1TZXNzaW9uID0gbV9t
YW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+bGVnYWN5Q2RtRmFjdG9yeVByb3h5
KCkuZ2V0U2Vzc2lvbihtX2xlZ2FjeVNlc3Npb24pKQogICAgICAgICByZXR1cm4gY2RtU2Vzc2lv
bi0+Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpOwogICAgIHJldHVybiBudWxscHRyOwogfQpA
QCAtODA4LDExICs4MTcsMTMgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZW5kQ2Fj
aGVkU3RhdGUoKQogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKIHsKKyAgICBBU1NFUlQobV9tYW5hZ2VyLmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisKICAgICBpZiAobV9sZWdhY3lTZXNzaW9uID09
IGluc3RhbmNlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2xlZ2FjeVNlc3Npb24p
IHsKLSAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2Fj
eVNlc3Npb24pKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFnZXIuZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLT5sZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNz
aW9uKG1fbGVnYWN5U2Vzc2lvbikpIHsKICAgICAgICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNz
aW9uKG51bGxwdHIpOwogICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0UGxheWVyKG51bGxwdHIp
OwogICAgICAgICB9CkBAIC04MjEsNyArODMyLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWUK
ICAgICBtX2xlZ2FjeVNlc3Npb24gPSBpbnN0YW5jZUlkOwogCiAgICAgaWYgKG1fbGVnYWN5U2Vz
c2lvbikgewotICAgICAgICBpZiAoYXV0byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1f
bGVnYWN5U2Vzc2lvbikpIHsKKyAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdl
ci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmdl
dFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkgewogICAgICAgICAgICAgbV9wbGF5ZXItPnNldENE
TVNlc3Npb24oY2RtU2Vzc2lvbi0+c2Vzc2lvbigpKTsKICAgICAgICAgICAgIGNkbVNlc3Npb24t
PnNldFBsYXllcihtYWtlV2Vha1B0cih0aGlzKSk7CiAgICAgICAgIH0KQEAgLTgzNywxOSArODQ4
LDI1IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNkbUluc3Rh
bmNlQXR0YWNoZWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKIHsK
LSAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCisg
ICAgQVNTRVJUKG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOworCisgICAg
aWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLT5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKICAgICAg
ICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQoaW5zdGFuY2VQcm94eS0+aW5zdGFuY2Uo
KSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hl
ZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQogewotICAgIGlmIChh
dXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKKyAgICBBU1NFUlQo
bV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisKKyAgICBpZiAoYXV0byog
aW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPmNk
bUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQogICAgICAgICBtX3BsYXll
ci0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNl
KFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCiB7Ci0gICAgaWYgKGF1
dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
LmNkbUZhY3RvcnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgIEFTU0VSVCht
X21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpKTsKKworICAgIGlmIChhdXRvKiBp
bnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+Y2Rt
RmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFuY2VJZCkpCiAgICAgICAgIG1fcGxheWVy
LT5hdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGluc3RhbmNlUHJveHktPmluc3RhbmNlKCkp
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggMjI4NDRlYTg4ODY4MWQ4MDhjMDIw
NTZkZDk0MGUzMjc1MDY2OGYzYS4uZDZmNDAwZDNmZDBhMDkwNDllYTg1ODE5M2MwYTQyNDVhZjRj
YWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtNDIsMTcgKzQyLDE5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZU1lZGlhU291cmNlUHJv
eHk6OlJlbW90ZU1lZGlhU291cmNlUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgd2ViTVBhcnNlckVuYWJsZWQsIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHJlbW90
ZU1lZGlhUGxheWVyUHJveHkpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVj
dGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vh
a1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQogICAgICwgbV93ZWJNUGFyc2VyRW5hYmxlZCh3ZWJNUGFyc2VyRW5hYmxlZCkKICAgICAs
IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eShtYWtlV2Vha1B0cihyZW1vdGVNZWRpYVBsYXllclBy
b3h5KSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eTo6flJlbW90ZU1lZGlhU291cmNlUHJveHkoKQogewotICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU1lZGlhU291
cmNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OwogfQogCiB2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFByaXZhdGVBbmRPcGVuKFJl
ZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYgbWVkaWFTb3VyY2VQcml2YXRlKQpAQCAtNzQsNyArNzYs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eTo6YnVmZmVyZWQoKSBjb25zdAogCiB2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6
OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogewotICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFTb3VyY2VQcml2YXRl
UmVtb3RlOjpTZWVrVG9UaW1lKHRpbWUpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OlNlZWtUb1RpbWUodGltZSksIG1faWRlbnRpZmllcik7CiB9CiAKICNpZiBVU0Uo
R1NUUkVBTUVSKQpAQCAtOTgsNyArMTAzLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5
OjpmYWlsZWRUb0NyZWF0ZVJlbmRlcmVyKFJlbmRlcmVyVHlwZSkKIAogdm9pZCBSZW1vdGVNZWRp
YVNvdXJjZVByb3h5OjphZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUm
IGNvbnRlbnRUeXBlLCBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQorICAgIGlmICghbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5IHx8ICFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlOwpA
QCAtMTA3LDcgKzExMiw3IEBAIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50CiAgICAgT3B0aW9uYWw8
UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4gcmVtb3RlU291cmNlSWRlbnRpZmllcjsKICAg
ICBpZiAoc3RhdHVzID09IE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzOjpPaykgewogICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwotICAgICAgICBhdXRvIHJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5ID0gUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlkZW50aWZp
ZXIsIHNvdXJjZUJ1ZmZlclByaXZhdGUucmVsZWFzZU5vbk51bGwoKSwgKm1fcmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSk7CisgICAgICAgIGF1dG8gcmVtb3RlU291cmNlQnVmZmVyUHJveHkgPSBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6Y3JlYXRlKCptX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGlk
ZW50aWZpZXIsIHNvdXJjZUJ1ZmZlclByaXZhdGUucmVsZWFzZU5vbk51bGwoKSwgKm1fcmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eSk7CiAgICAgICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92
ZShyZW1vdGVTb3VyY2VCdWZmZXJQcm94eSkpOwogICAgICAgICByZW1vdGVTb3VyY2VJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA0MDZmMGJiNWQ5Njg0
OGIzNDkwMjNjZmYwZWVlMzBiYzcwMGQxOWExLi5kOTUwMGNiMjQ1MTgxMjJhYjQxMDEwMDNlYWMz
NzUyNjY4NGZiOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNlZWtDb21wbGV0ZWQoKTsKICAgICB2b2lkIHNldFRpbWVGdWRnZUZhY3Rvcihj
b25zdCBNZWRpYVRpbWUmKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29u
bmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M+IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW1vdGVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV93ZWJNUGFyc2VyRW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZT4gbV9wcml2YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5jcHAKaW5kZXggZDFlMmIxMmI1YmEzNDcx
OGE1ZDQ2NmFjNTQ4MzUyODdkMWI5M2ZiNS4uMmVjNzlhNjQyY2NhM2ZmYjI3YzRjOTA3YjAxOGFj
YmJkNDcyNjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5OjpSZW1vdGVSZW1vdGVDb21tYW5k
TGlzdGVuZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBS
ZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKLSAgICA6
IG1fZ3B1Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKG1h
a2VXZWFrUHRyKGdwdUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRl
bnRpZmllcikpCiAgICAgLCBtX2xpc3RlbmVyKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzKSkKIHsKQEAgLTQ2LDcgKzQ2LDEwIEBAIFJlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lclByb3h5Ojp+UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHk6OmRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVD
b21tYW5kQXJndW1lbnQmIGFyZ3VtZW50KQogewotICAgIG1fZ3B1Q29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpEaWRSZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQpLCBtX2lkZW50aWZpZXIp
OworICAgIGlmICghbV9ncHVDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dw
dUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OkRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChjb21tYW5kLCBhcmd1
bWVudCksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVyUHJveHk6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKGJvb2wgc3VwcG9ydHNTZWVraW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuaAppbmRleCBjYTY4ZjFiYjZlZGE3M2MzMGZh
MDNiNjUxYWVmM2RkZjI1ZGU1OGVjLi45ZWE3ZGVhOTEyYzQ4MDU2ZTU0NGFjMGM3MzhhYTA1ZWYx
MGM1NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
UmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSVBD
IHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgLy8g
TWVzc2FnZXMKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKGJvb2wgc3VwcG9ydHNT
ZWVraW5nKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlv
bjsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlv
bjsKICAgICBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBt
X2xpc3RlbmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDdkZmIwNWZjNDg2ZjU0Mzg2
MGVmYzQwNDdiNDE3MmFkNzkxYTFjMWYuLmU0MGI5YzhlODM1ZmEzNGNiMzI5ZWJiOTA0YjU5ODQ0
ZDAwZGIxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtNDcsMTIgKzQ3LDEyIEBAIFJlZjxS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmNyZWF0ZShH
UFVDb25uZWN0aW9uVG9XZWJQCiB9CiAKIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxT
b3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHkmIHJlbW90ZU1lZGlhUGxheWVyUHJveHkpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zb3VyY2VCdWZmZXJQcml2YXRlKFdURk1vdmUo
c291cmNlQnVmZmVyUHJpdmF0ZSkpCiAgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkobWFr
ZVdlYWtQdHIocmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
Pm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksICp0aGlzKTsKICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldENsaWVudCh0
aGlzKTsKICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldElzQXR0YWNoZWQodHJ1ZSk7CiB9
CkBAIC02MCw3ICs2MCw3IEBAIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uCiBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KCkKIHsKICAgICBtX3NvdXJjZUJ1
ZmZlclByaXZhdGUtPnNldElzQXR0YWNoZWQoZmFsc2UpOwotICAgIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3Nh
Z2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21l
bnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMDIsNjIgKzEwMiwxMDAgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQKICAgICAg
ICAgbV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKnRleHRUcmFja0luZm8uZGVz
Y3JpcHRpb24pOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChz
ZWdtZW50SW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2lkZW50aWZpZXIpOwor
ICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KHNlZ21lbnRJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpCiB7Ci0gICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2Rl
RXJyb3IoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNl
QnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCksIG1faWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGRlY29kZUVycm9yKSwgbV9pZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZEVycm9yKGRlY29kZUVycm9yKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1l
c3RhbXBDaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgdGltZXN0YW1wKQogewotICAgIG1fY29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1l
c3RhbXBDaGFuZ2VkKHRpbWVzdGFtcCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1w
Q2hhbmdlZCh0aW1lc3RhbXApLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VC
dWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdl
ZChkdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVy
YXRpb24pCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRl
RGlkUGFyc2VTYW1wbGUoc2FtcGxlRHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOworICAgIGlmICgh
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxl
RHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpCiB7Ci0gICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpLCBtX2lkZW50
aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlk
RHJvcFNhbXBsZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKIHsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShhcHBlbmRSZXN1
bHQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVSZW5kZXJpbmdFcnJvcihpbnQ2NF90IGVycm9yQ29kZSkKIHsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3Io
ZXJyb3JDb2RlKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJv
Y2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihlcnJvckNvZGUpLCBtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZm
ZXJQcml2YXRlUmVwb3J0RXh0cmFNZW1vcnlDb3N0KHVpbnQ2NF90IGV4dHJhTWVtb3J5KQogewot
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZVJlcG9ydEV4dHJh
TWVtb3J5Q29zdChleHRyYU1lbW9yeSksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZXBvcnRFeHRyYU1lbW9yeUNvc3QoZXh0cmFN
ZW1vcnkpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogewot
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGly
dHlDaGFuZ2VkKGZsYWcpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjpTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyksIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2VzKSwgbV9pZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hh
bmdlZCh0aW1lUmFuZ2VzKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKaW5kZXggNzQ4NDU0NDcyOWFjMDE2NTEyYzM1NmE5ZGEyZTAzMDc5OTNjNzA1OC4u
MTVjODQ3M2YzNGY2Mzg5ZjBiMWRjMWQzM2M3MGI0MjgyNzQyZjQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVHJhY2tJZHMo
VmVjdG9yPHN0ZDo6cGFpcjxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyPj4mJik7CiAgICAgdm9pZCBidWZmZXJlZFNhbXBsZXNGb3JUcmFj
a0lkKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlPiBtX3NvdXJjZUJ1ZmZlclByaXZhdGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBs
YXllclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCA1
MWQ2MzllNDgwZGY3NjJlNGYzMmFmMWJjM2ViZmFjN2M5OTk5OGU3Li4xY2I4NTE2ZTdlNmQwMjY0
MzFjYjk5ZDRhYWIyNDI5NzEzZDY4MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTQ0LDEzICs0NCwx
MyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6UmVtb3RlVGV4dFRyYWNrUHJveHkoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcywgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUsIE1l
ZGlhUGxheWVySWRlbnRpZmllciBtZWRpYVBsYXllcklkZW50aWZpZXIpCi0gICAgOiBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVj
dGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90cmFja1ByaXZhdGUodHJhY2tQ
cml2YXRlKQogICAgICwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIobWVkaWFQbGF5ZXJJZGVudGlm
aWVyKQogewogICAgIG1fdHJhY2tQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7Ci0gICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OkFkZFJlbW90ZVRleHRUcmFjayhtX2lkZW50aWZpZXIsIGNvbmZpZ3Vy
YXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OkFkZFJlbW90ZVRleHRUcmFjayhtX2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSks
IG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogUmVtb3RlVGV4dFRyYWNrUHJveHk6On5S
ZW1vdGVUZXh0VHJhY2tQcm94eSgpCkBAIC04Miw3ICs4MiwxMCBAQCBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24o
KQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uQ2hhbmdlZCgpCiB7
Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW90ZVRleHRUcmFja0NvbmZpZ3VyYXRpb25D
aGFuZ2VkKG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50
aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW90ZVRleHRUcmFja0NvbmZpZ3Vy
YXRpb25DaGFuZ2VkKG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXll
cklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5Ojp3aWxsUmVtb3Zl
KCkKQEAgLTEwNyw1NCArMTEwLDg0IEBAIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6Omxhbmd1
YWdlQ2hhbmdlZChjb25zdCBBdG9tU3RyaW5nJikKIAogdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94
eTo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
KSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFk
ZERhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxh
eWVySWRlbnRpZmllcik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIHZvaWQgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIGN1ZURh
dGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRk
RGF0YUN1ZVdpdGhUeXBlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgY3VlRGF0YS0+ZW5jb2Rh
YmxlVmFsdWUoKSwgdHlwZSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
Y29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlV2l0aFR5cGUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5k
LCBjdWVEYXRhLT5lbmNvZGFibGVWYWx1ZSgpLCB0eXBlKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5Ojp1cGRhdGVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlJiBjdWVEYXRhKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpVcGRhdGVE
YXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgY3VlRGF0YS5lbmNvZGFibGVWYWx1ZSgp
KSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlVw
ZGF0ZURhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5kLCBjdWVEYXRhLmVuY29kYWJsZVZh
bHVlKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dFRy
YWNrUHJveHk6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmIGN1ZURhdGEpCiB7Ci0gICAg
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW92ZURhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwg
ZW5kLCBjdWVEYXRhLmVuY29kYWJsZVZhbHVlKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UmVtb3ZlRGF0YUN1ZShtX2lkZW50aWZpZXIsIHN0
YXJ0LCBlbmQsIGN1ZURhdGEuZW5jb2RhYmxlVmFsdWUoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlm
aWVyKTsKIH0KICNlbmRpZgogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjphZGRHZW5lcmlj
Q3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
QWRkR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX21lZGlhUGxheWVy
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkR2VuZXJpY0N1ZShtX2lk
ZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnVwZGF0ZUdlbmVyaWNDdWUoSW5iYW5kR2VuZXJp
Y0N1ZSYgY3VlKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpVcGRhdGVHZW5lcmljQ3Vl
KG1faWRlbnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpVcGRhdGVHZW5lcmljQ3VlKG1faWRlbnRpZmllciwg
Y3VlLmN1ZURhdGEoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBjdWUp
CiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW92ZUdlbmVyaWNDdWUobV9pZGVudGlm
aWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICgh
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OlJlbW92ZUdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0
YSgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFj
a1Byb3h5OjpwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogewotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEZpbGVIZWFkZXIobV9pZGVudGlmaWVyLCBo
ZWFkZXIpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6UGFyc2VXZWJWVFRGaWxlSGVhZGVyKG1faWRlbnRpZmllciwgaGVhZGVyKSwgbV9tZWRpYVBs
YXllcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJzZVdlYlZUVEN1ZURhdGEobV9pZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6UGFyc2VXZWJWVFRDdWVEYXRhKG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBs
YXllcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpwYXJzZVdl
YlZUVEN1ZURhdGEoSVNPV2ViVlRUQ3VlJiYgY3VlRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6UGFyc2VXZWJWVFRDdWVEYXRhU3RydWN0KG1faWRlbnRpZmllciwgY3VlRGF0YSks
IG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJv
Y2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpQYXJz
ZVdlYlZUVEN1ZURhdGFTdHJ1Y3QobV9pZGVudGlmaWVyLCBjdWVEYXRhKSwgbV9tZWRpYVBsYXll
cklkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXgg
M2Q5ZjRlZjIzMzYzNzIxYTVjNDE3ZDk3MWIxNDVjZTY4ODM1Y2YxOC4uYjc0ZTg4MmIxNDBjNjZh
Yzg5M2NiYjI5ODllMTA5OGI1MDBlZDE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTg4LDcg
Kzg5LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbigpOwogICAgIHZvaWQgY29uZmlndXJhdGlvbkNoYW5nZWQoKTsKIAot
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsK
KyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKICAgICBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBSZWY8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1fbWVkaWFQbGF5ZXJJZGVudGlm
aWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9UcmFja1Byb3h5LmNwcAppbmRleCBjZTU3NDUxZjNiZjc5N2Y0YzE4YzEwZWRjODNkODdm
MDZhMzc2ZjIzLi5hOTU1NjUwNjBjOTQ2NTcyNTdlN2VhMzQ5MzE1YWRiNzY3ODkyODljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9U
cmFja1Byb3h5LmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6UmVtb3RlVmlk
ZW9UcmFja1Byb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgVmlkZW9UcmFj
a1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSwgTWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1lZGlhUGxheWVy
SWRlbnRpZmllcikKLSAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKQorICAgIDogbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAg
ICAgLCBtX3RyYWNrUHJpdmF0ZSh0cmFja1ByaXZhdGUpCiAgICAgLCBtX21lZGlhUGxheWVySWRl
bnRpZmllcihtZWRpYVBsYXllcklkZW50aWZpZXIpCiB7CiAgICAgbV90cmFja1ByaXZhdGUtPnNl
dENsaWVudCh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkUmVtb3RlVmlkZW9U
cmFjayhtX2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlm
aWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZFJlbW90ZVZpZGVvVHJhY2sobV9p
ZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9
CiAKIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6flJlbW90ZVZpZGVvVHJhY2tQcm94eSgpCkBAIC03
MCw3ICs3MCwxMCBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBSZW1vdGVWaWRl
b1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogCiB2b2lkIFJlbW90ZVZpZGVvVHJhY2tQcm94
eTo6Y29uZmlndXJhdGlvbkNoYW5nZWQoKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpS
ZW1vdGVWaWRlb1RyYWNrQ29uZmlndXJhdGlvbkNoYW5nZWQobV9pZGVudGlmaWVyLCBjb25maWd1
cmF0aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6UmVtb3RlVmlkZW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2VkKG1faWRlbnRpZmllciwg
Y29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZVZpZGVvVHJhY2tQcm94eTo6d2lsbFJlbW92ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmgKaW5kZXggZjUxNTUw
MDg1MjA2MWE4Y2M5ZjQ5NWYzZWFhM2JhOWU2YjUyM2UzNS4uMDUzNmJiYzM4NWMzMDQ4OGNlN2I1
ZWEyOThhYWQxMzkwM2EwZTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuaApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WaWRlb1RyYWNr
UHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC03NCw3ICs3NSw3IEBA
IHByaXZhdGU6CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbigpOwogICAgIHZvaWQgY29uZmlndXJhdGlvbkNoYW5nZWQoKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBXZWFrUHRy
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAg
ICBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8V2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogICAgIFdlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllciBtX21lZGlhUGxheWVySWRlbnRpZmllcjsK
</data>
<flag name="review"
          id="440058"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421465</attachid>
            <date>2021-02-24 15:13:36 -0800</date>
            <delta_ts>2021-02-24 22:45:33 -0800</delta_ts>
            <desc>Revise the patch based on Eric&apos;s comments</desc>
            <filename>bug-222293-20210224151335.patch</filename>
            <type>text/plain</type>
            <size>81412</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI5NWE3ZWI3ODM5ZjAwZDYw
YTM5MWE3NDJiZjM2ZjlkNjE0ZDg5NWYuLjZjMjE4ZGVhNzM4ODVhYjFjNjkyMDk5MWVkY2Q0YjQ3
MTc0MDQ4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMwIEBACisyMDIxLTAyLTI0ICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIFVzZSBhIFdlYWtQdHIg
b2YgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlIGluIHNv
bWUgbWVkaWEgcmVsYXRlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxz
b24uCisKKyAgICAgICAgQSBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIG9iamVjdCBtYXkgYmUg
ZGVzdHJveWVkIHdoZW4gd2UgY2xvc2UgYSBwYWdlLCB0aGVuIGNyYXNoIHdpbGwgaGFwcGVuCisg
ICAgICAgIGluIGNhbGxiYWNrcyBhY2Nlc3NpbmcgdGhlIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3Mgb2JqZWN0LiBGb3IgZXhhbXBsZSwgaW4KKyAgICAgICAgYFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKClgLiBUaGlzIHBh
dGNoCisgICAgICAgIHJlcGxhY2VzIHRoZSByZWZlcmVuY2VzIHRvIGEgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyB3aXRoIFdlYWtQdHIocykgaW4gcGxhY2VzIHdoZXJlIHRoZQorICAgICAgICBp
c3N1ZSBtYXkgaGFwcGVuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRml4IHNvbWUgdGVzdCBj
cmFzaGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6bWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5KToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHk6OlJlbW90
ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVk
aW9IYXJkd2FyZUxpc3RlbmVyUHJveHk6OmF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eTo6YXVkaW9I
YXJkd2FyZURpZEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9I
YXJkd2FyZUxpc3RlbmVyUHJveHk6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5OjpSZW1vdGVBdWRpb1RyYWNrUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRp
b25DaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVByb3h5OjpSZW1vdGVDRE1G
YWN0b3J5UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9y
eVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXNzaW9u
SWRDaGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OmVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyIGNvbnN0KToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZE1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
bmRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk6
OlJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2dnZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
bG9nQ2hhbm5lbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRNZWRpYVNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnJlcXVlc3RS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlh
UGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmFkZFJlbW90
ZUF1ZGlvVHJhY2tQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OmFkZFJlbW90ZVZpZGVvVHJhY2tQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmFkZFJlbW90ZVRleHRUcmFja1Byb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldExlZ2Fj
eUNETVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6Y2RtSW5zdGFuY2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OlJlbW90ZU1lZGlhU291cmNlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5Ojp+UmVtb3RlTWVkaWFTb3VyY2VQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNlZWtUb1RpbWUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjphZGRTb3VyY2VCdWZm
ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQ
cm94eTo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eTo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1h
bmRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcENo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZERyb3BTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVu
ZGVyaW5nRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZVJlcG9ydEV4dHJhTWVtb3J5Q29zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRE
aXJ0eUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6UmVtb3RlVGV4dFRyYWNrUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkRGF0YUN1ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5Ojp1cGRhdGVEYXRhQ3VlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZURhdGFDdWUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5Ojp1cGRhdGVHZW5lcmljQ3VlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZUdlbmVyaWNDdWUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRGaWxlSGVhZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OnBhcnNlV2ViVlRUQ3VlRGF0YSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVmlkZW9UcmFja1Byb3h5OjpSZW1vdGVWaWRlb1RyYWNrUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94
eS5oOgorCiAyMDIxLTAyLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzMwNC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBmNDJjYTI4ODRjZTJiYTcxMzk4YzJjNzAzYzkzNjk3OGJmOWFiNzYwLi5jZTYwMmIxNmQw
NzUwMDZjYTMyNjA1MmQ5YTAxOWZmMjczYzE0NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0yMzYsNiAr
MjM2LDExIEBAIExvZ2dlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bG9nZ2VyKCkKICAg
ICByZXR1cm4gKm1fbG9nZ2VyOwogfQogCitib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vzc2lv
bklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpOworfQorCiB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7CiAgICAgUkVMRUFTRV9M
T0dfRkFVTFQoSVBDLCAiUmVjZWl2ZWQgYW4gaW52YWxpZCBtZXNzYWdlICclIiBQVUJMSUNfTE9H
X1NUUklORyAiJyBmcm9tIFdlYkNvbnRlbnQgcHJvY2VzcyAlIiBQUkl1NjQgIiwgcmVxdWVzdGlu
ZyBmb3IgaXQgdG8gYmUgdGVybWluYXRlZC4iLCBkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSksIG1f
d2ViUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSk7CkBAIC00MDAsNyArNDA1LDcgQEAgUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdh
Y3lDZG1GYWN0b3J5UHJveHkoKQogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5UHJveHkoKQogewogICAgIGlmICghbV9tZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5UHJveHkpCi0gICAgICAgIG1fbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVBy
b3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJv
eHk+KCp0aGlzKTsKKyAgICAgICAgbV9tZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJv
eHkgPSBtYWtlVW5pcXVlPFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94
eT4oKTsKICAgICByZXR1cm4gKm1fbWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5
OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBmODg2OWIwYzJkMWMzMmMwOGVkZDgwZDQ4MzQ3N2Yy
ZmQ5MTE4ODU3Li43YjgxYzEzMzViNzU1ZTZhM2VmNTI4MWQ3M2VmYzU0ZmQ0ZGQ4Mjk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlz
dGVuZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCi0KICNpbmNs
dWRlIDxXZWJDb3JlL0xpYldlYlJUQ0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
d1BsYXlpbmdNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgpAQCAtOTAsNiArODksNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXImIHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCk7CiAKICAgICBMb2dnZXImIGxvZ2dlcigp
OworICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7CiAKICAgICBjb25z
dCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJveHkuY3BwCmlu
ZGV4IDg1N2Y2OWZjNWY2MmNjZDI2YTliMmZlNmVlMDBjOWRjMzRmNjEzNDQuLjNmYzdkMzg4NTBk
ZTBiZGI0MzIxYmZkYTU5ODg3NmZhNTQ1MDA4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0
ZW5lclByb3h5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5OjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uLCBSZW1vdGVB
dWRpb0hhcmR3YXJlTGlzdGVuZXJJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKLSAgICA6IG1fZ3B1
Q29ubmVjdGlvbihncHVDb25uZWN0aW9uKQorICAgIDogbV9ncHVDb25uZWN0aW9uKG1ha2VXZWFr
UHRyKGdwdUNvbm5lY3Rpb24pKQogICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmll
cikpCiAgICAgLCBtX2xpc3RlbmVyKFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6Y3Jl
YXRlKCp0aGlzKSkKIHsKQEAgLTQ0LDE4ICs0NCwyNyBAQCBSZW1vdGVBdWRpb0hhcmR3YXJlTGlz
dGVuZXJQcm94eTo6flJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5KCkgPSBkZWZhdWx0
OwogCiB2b2lkIFJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5OjphdWRpb0hhcmR3YXJl
RGlkQmVjb21lQWN0aXZlKCkKIHsKLSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZURp
ZEJlY29tZUFjdGl2ZSgpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghbV9ncHVDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2dwdUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXI6OkF1ZGlvSGFyZHdhcmVE
aWRCZWNvbWVBY3RpdmUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb0hh
cmR3YXJlTGlzdGVuZXJQcm94eTo6YXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCkKIHsK
LSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCksIG1f
aWRlbnRpZmllcik7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZ3B1Q29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lcjo6QXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyUHJv
eHk6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiB7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8gc3VwcG9ydGVkQnVmZmVyU2l6ZXMgPSBt
X2xpc3RlbmVyLT5zdXBwb3J0ZWRCdWZmZXJTaXplcygpOwotICAgIG1fZ3B1Q29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9IYXJkd2FyZUxpc3RlbmVyOjpB
dWRpb091dHB1dERldmljZUNoYW5nZWQoc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWluaW11bSwgc3Vw
cG9ydGVkQnVmZmVyU2l6ZXMubWF4aW11bSksIG1faWRlbnRpZmllcik7CisgICAgbV9ncHVDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVkaW9IYXJkd2FyZUxp
c3RlbmVyOjpBdWRpb091dHB1dERldmljZUNoYW5nZWQoc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWlu
aW11bSwgc3VwcG9ydGVkQnVmZmVyU2l6ZXMubWF4aW11bSksIG1faWRlbnRpZmllcik7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b0hhcmR3YXJlTGlzdGVuZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgKaW5kZXggMGQ5NzUyYWY4MDUwMmY0
NzIyNDgyOWQ0NThlNDNmZWQyNTVjMGNhMy4uODM2M2I4NzE3NTBmNTFkNTZhMDQzZDNkMDhlM2E5
ZDcyODZkZmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvSGFyZHdhcmVMaXN0ZW5lclByb3h5LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVuZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0hhcmR3YXJlTGlzdGVuZXIuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpAQCAtNTIsNyArNTMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXVkaW9IYXJkd2FyZURpZEJlY29tZUluYWN0aXZlKCkgZmluYWw7CiAgICAgdm9pZCBh
dWRpb091dHB1dERldmljZUNoYW5nZWQoKSBmaW5hbDsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvbjsKICAgICBSZW1vdGVBdWRpb0hhcmR3YXJlTGlzdGVu
ZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8V2ViQ29yZTo6QXVkaW9IYXJkd2Fy
ZUxpc3RlbmVyPiBtX2xpc3RlbmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5kZXggNzI1NjI4YTk2
NGZkODFjOWZlZGQ1NTA4YzVmMzRhZDNkNWY3YTM0NC4uYzI1ZWRkODk3YWFiNGU4MWM0ODIwYzdi
YWZhYmY4OGVhM2FkMDVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVBdWRp
b1RyYWNrUHJveHk6OlJlbW90ZUF1ZGlvVHJhY2tQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEF1ZGlvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUsIE1lZGlhUGxheWVy
SWRlbnRpZmllciBtZWRpYVBsYXllcklkZW50aWZpZXIpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90cmFja1ByaXZhdGUodHJhY2tQcml2YXRlKQog
ICAgICwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIobWVkaWFQbGF5ZXJJZGVudGlmaWVyKQogewog
ICAgIG1fdHJhY2tQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OkFkZFJlbW90ZUF1ZGlvVHJhY2sobV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkp
LCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpB
ZGRSZW1vdGVBdWRpb1RyYWNrKG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRp
YVBsYXllcklkZW50aWZpZXIpOwogfQogCiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6On5SZW1vdGVB
dWRpb1RyYWNrUHJveHkoKQpAQCAtNzAsNyArNzAsMTAgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbiYgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIAogdm9p
ZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkKIHsKLSAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6UmVtb3RlQXVkaW9UcmFja0NvbmZpZ3VyYXRpb25DaGFuZ2Vk
KG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIp
OworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW90ZUF1ZGlvVHJhY2tDb25maWd1cmF0aW9u
Q2hhbmdlZChtX2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OndpbGxSZW1vdmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJh
Y2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJh
Y2tQcm94eS5oCmluZGV4IDU5MDQyNDlhZWFkNTY1NGYxYjEwODI3NTUzZmYxYjliMzE0YmVkODEu
LjVlMjA4ODVmNTA2YjlmZjI3OTczOGFkMGJiZTZiM2RkNzUyNGU5MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVySWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29u
bmVjdGlvbjsKQEAgLTc0LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCk7CiAgICAgdm9pZCBjb25maWd1cmF0aW9u
Q2hhbmdlZCgpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzOworICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZT4gbV90cmFj
a1ByaXZhdGU7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1fbWVkaWFQbGF5
ZXJJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCA3ZTFhZmFhNDQ0ZTg2ZjRiODk0NmMy
MzM3NTA0MDJhOTNmY2FmMDNiLi41OTYzMDUxODA2ZmY1ZGNmMGVhMWVkYmUxNDNmMTdkYWU5Nzc0
NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OlJl
bW90ZUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
KQotICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCisgICAgOiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlvbikpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5UHJveHkuaAppbmRleCAyN2I4YTI4ZjRjM2Y0ZGQzNzcyODIzY2E3MDUxY2QzNjZkMWRj
ZjQ1Li4yNmNhMzkzNzAyZTI1MDMyOGQwMDA0N2IxMjViMGViYTUxZDBmODdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVDRE1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5z
dGFuY2VJZGVudGlmaWVyLmgiCkBAIC0zNyw3ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTsKIGNsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OwogY2xhc3Mg
UmVtb3RlQ0RNUHJveHk7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFNl
c3Npb24oY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4mJik7CiAgICAgdm9pZCByZW1v
dmVTZXNzaW9uKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKTsKIAot
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKyAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1
cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwpAQCAtODAsNyArODAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUNETUlkZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJh
dGlvbiYmKT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0
YW5jZXM7CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDE0OThkM2NhMzFiYzA4N2UxMmUyNGU4MzgxNjg3ZTk3
MjkwZTQ2YzMuLmJkODM1YzUxYThjYWVkZDY5NWUwMGMyNWIwZDIzOWU3MGZkNzlkMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5jcHAKQEAgLTY2LDggKzY2LDE1IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIGZhY3Rv
cnkgPSBtX2NkbS0+ZmFjdG9yeSgpKQotICAgICAgICBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
OjpVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKHR5cGUsIFdURk1vdmUoaW5p
dERhdGEpKSwgbV9pZGVudGlmaWVyKTsKKyAgICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rv
cnkoKTsKKyAgICBpZiAoIWZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCk7CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2U6OlVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQodHlwZSwgV1RGTW92ZShpbml0RGF0YSkpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBB
bGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMgYWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBB
bGxvd1BlcnNpc3RlbnRTdGF0ZSBhbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmIGNvbXBsZXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcAppbmRleCA0OWVmNDhkYmZlNmQ1NTI5MjIwYzcwZjNhMTE5NzVmOWZlYjg2YmRk
Li44MjQ2ZDljNzU2ZWYzYjcxZDBmODhiY2RjYTQ4NjhjZjFiYjg3YzI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTEzOCwxNyArMTM4LDMwIEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1
dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgpKQotICAgICAgICBmYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykp
LCBtX2lkZW50aWZpZXIpOworICAgIGF1dG8qIGZhY3RvcnkgPSBtX2NkbS0+ZmFjdG9yeSgpOwor
ICAgIGlmICghZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcyA9IGZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsK
KyAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5
U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKKyAg
ICBhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3RvcnkoKTsKKyAgICBpZiAoIWZhY3RvcnkpCisg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiBmYWN0b3J5ID0gbV9jZG0tPmZhY3Rvcnko
KSkKLSAgICAgICAgZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlNlbmRNZXNzYWdl
KHR5cGUsIFdURk1vdmUobWVzc2FnZSkpLCBtX2lkZW50aWZpZXIpOworICAgIGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBmYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCk7CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47
CisKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZW5kTWVzc2FnZSh0eXBlLCBXVEZNb3Zl
KG1lc3NhZ2UpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKQEAg
LTE1Niw4ICsxNjksMTUgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vz
c2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKICAgICBpZiAoIW1fY2RtKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byogZmFjdG9yeSA9IG1fY2RtLT5mYWN0b3J5
KCkpCi0gICAgICAgIGZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uSWRD
aGFuZ2VkKHNlc3Npb25JZCksIG1faWRlbnRpZmllcik7CisgICAgYXV0byogZmFjdG9yeSA9IG1f
Y2RtLT5mYWN0b3J5KCk7CisgICAgaWYgKCFmYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gZmFjdG9yeS0+Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpOworICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbklkQ2hh
bmdlZChzZXNzaW9uSWQpLCBtX2lkZW50aWZpZXIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5LmNwcAppbmRleCA3NTRhMWUwM2MyMmFjMzZmZGUwNmI2MTgwMzk2MzA5ZWIyOWVjNzEyLi4z
NDQ2MjM5MWIyODhiM2RiYWQzMGZhNzU0NjlmNzJkODkwNzNmM2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCi0gICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRv
V2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihj
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKIHsKIH0KIApAQCAtNzQsMTEgKzc0LDExIEBAIHZvaWQg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmRlbGV0ZURlY29kZXIoY29uc3QgSW1hZ2VEZWNv
ZGVySWRlbnRpZmllciYgaWRlCiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZChjb25zdCBJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogewotICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KQorICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzIHx8ICFtX2ltYWdlRGVjb2RlcnMu
Y29udGFpbnMoaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VE
ZWNvZGVyID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXI6OkVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChpZGVudGlmaWVyLCBpbWFn
ZURlY29kZXItPmZyYW1lQ291bnQoKSwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rl
ci0+aGFzVHJhY2soKSksIDApOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OkVuY29k
ZWREYXRhU3RhdHVzQ2hhbmdlZChpZGVudGlmaWVyLCBpbWFnZURlY29kZXItPmZyYW1lQ291bnQo
KSwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSksIDApOwog
fQogCiB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRFeHBlY3RlZENvbnRlbnRT
aXplKGNvbnN0IEltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAppbmRleCAwYzBiOThiYjJl
ZDA1NGM2ZGM1YzgwZDUwNTM2Y2YzZGY1OGIwYWJiLi45MDMyZWVhNWFmYTEyZmFkZDVhYTA2MGI2
YTAxYzkxZWY2OWFjZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CkBAIC01Nyw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVuY29kZWREYXRh
U3RhdHVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJik7CiAK
LSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQz4+IG1faW1hZ2VEZWNvZGVyczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKaW5kZXggNTM3ZTkwYWZjNjRlZDQ2ZmY0YTA5
NDViZTE4YmM5Y2VhNmRjZjI1ZS4uMzc4ZmEzNGRlODdiNzBjODk4MmEyMjZmYjk5MGMxNWU3MDAz
ZDE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTQxLDE3ICs0MSwyMCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQotICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFr
ZVdlYWtQdHIoY29ubmVjdGlvbikpCiB7CiB9CiAKIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6flJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSgpCiB7CisgICAgaWYgKCFtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoYXV0byBjb25z
dCYgc2Vzc2lvbiA6IG1fc2Vzc2lvbnMpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBzZXNz
aW9uLmtleS50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBzZXNzaW9u
LmtleS50b1VJbnQ2NCgpKTsKIAogICAgIGZvciAoYXV0byBjb25zdCYgcHJveHkgOiBtX3Byb3hp
ZXMpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHByb3h5LmtleS50b1VJbnQ2NCgpKTsKKyAgICAgICAg
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIHByb3h5LmtleS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0
aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmIG9wdGlvbmFsUGxheWVySWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9u
KQpAQCAtMTA2LDcgKzEwOSwxMCBAQCB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3RpbwogCiB2b2lkIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+JiYg
cHJveHkpCiB7Ci0gICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqcHJveHkpOwor
ICAgIGlmICghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCAqcHJveHkpOwogCiAgICAgQVNT
RVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIG1fcHJveGllcy5zZXQo
aWRlbnRpZmllciwgV1RGTW92ZShwcm94eSkpOwpAQCAtMTE0LDcgKzEyMCwxMCBAQCB2b2lkIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRp
ZmllciBpZGVudGlmaWVyLAogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVt
b3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIGlkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiAgICAgbV9wcm94aWVzLnJlbW92ZShpZGVudGlmaWVyKTsKQEAgLTEyMiw3ICsx
MzEsMTAgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJl
bW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWRlbnRpZmkKIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk6OmFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIg
aWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4m
JiBzZXNzaW9uKQogewotICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCks
ICpzZXNzaW9uKTsKKyAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyLnRvVUludDY0KCks
ICpzZXNzaW9uKTsKIAogICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZGVudGlmaWVy
KSk7CiAgICAgbV9zZXNzaW9ucy5zZXQoaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CkBA
IC0xMzAsNyArMTQyLDEwIEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRT
ZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkCiAKIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVz
c2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKICAgICBtX3Nlc3Npb25zLnJlbW92ZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaAppbmRleCA2YjU3MmI0YzQyMTdhMThhNGRlMDRjOTUxNDYzNDJjZTNmOTJhM2ExLi41Yjcy
ZTdlMzg5YTFkNmI2NGU4ZDkyNzdlOTkzZWViNDY0ZmM0MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCkBAIC0zNyw3ICszOCw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OwogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OwogY2xhc3MgUmVtb3RlTGVnYWN5
Q0RNUHJveHk7CiBzdHJ1Y3QgUmVtb3RlTGVnYWN5Q0RNQ29uZmlndXJhdGlvbjsKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllcik7CiAgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KiBnZXRT
ZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJikgY29uc3Q7CiAK
LSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIHsgcmV0
dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKQEAgLTc0LDcgKzc0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOwogICAgIHZvaWQgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFdlYWtQdHI8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
ICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxlZ2FjeUNETVByb3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk+PiBtX3Nlc3Npb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCmluZGV4IDgwYzkzNzRlOTcw
NTllZTEzOTU1NWViMDY1MjE5NDgyOTYyMDFkOTMuLmM3NDVmNzE3ZjIzMzQ2YmRmZmYwNWVkMjQz
N2Y2YTFjNTUyMTE0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAot
I2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKQEAgLTg3LDcg
Kzg2LDExIEBAIFJlZlB0cjxNZWRpYVBsYXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1l
ZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0CiAgICAgaWYgKCFtX3BsYXllcklkIHx8
ICFtX2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG1fZmFj
dG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5KCkubWVkaWFQbGF5ZXIobV9wbGF5ZXJJZCk7CisgICAgYXV0byogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcyA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwor
ICAgIGlmICghZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtX3BsYXllcklkKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCAyYzVlN2RlN2QyZTc1Njk2MGEzZjNlYzg3NmM4
YjgyNWM2ZTQ1YjUzLi5iMjkwODk4MWU0Nzc3M2E1N2MyODZjYjYzNWJkOTJjY2YzMGY3NTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMTI4LDIyICsxMjgsMzYgQEAgdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3Nh
Z2UsIFN0cmluZyBkZXN0aW4KICAgICBpZiAoIW1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZl
cnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShtZXNzYWdlKSwgZGVzdGluYXRpb25VUkwpLCBtX2lk
ZW50aWZpZXIpOworICAgIGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2ZhY3Rv
cnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICBpZiAoIWdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpTZW5kTWVzc2FnZShjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRl
c3RpbmF0aW9uVVJMKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQz
Ml90IHN5c3RlbUNvZGUpCiB7Ci0gICAgaWYgKG1fZmFjdG9yeSkKLSAgICAgICAgbV9mYWN0b3J5
LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUp
LCBtX2lkZW50aWZpZXIpOworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9mYWN0b3J5LT5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCk7CisgICAgaWYgKCFncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KQorICAgICAgICByZXR1cm47CisKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZEVycm9y
KGVycm9yQ29kZSwgc3lzdGVtQ29kZSksIG1faWRlbnRpZmllcik7CiB9CiAKIFN0cmluZyBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dAogewotICAgIGlmIChtX2ZhY3RvcnkpCi0gICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci0gICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCisgICAgYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgIGlmICghZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICByZXR1cm4gZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlQcm94eS5jcHAKaW5kZXggYTY4NDA4YTA4MjNlMmE4MzI1MjhlMDFiOTA2OWEy
ZjU2MjI4OGZiYS4uMzk4NTA4NzY1MmRmMjVlNjI1YzNjMzg0Y2JhMTQ5YzY4YjlhZTljYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eS5jcHAK
QEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk6OlJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uKQotICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KGNvbm5lY3Rpb24pCitSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk6
OlJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHkuaAppbmRleCA1
NDZkNzg4YjcxNmM2ZGUxNzEyNTA4MWI2Zjk5ODkxYzA1YWY3YzE3Li41YmRkNmNiOWVmY2RlN2Ri
MzRmNzkwOGU5MmE2M2U5Yzg1YWY4ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnlQcm94eS5oCkBAIC0zNSwxOCArMzUsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIGNsYXNzIFJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5UHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIFJlbW90ZU1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwogICAgIHZpcnR1YWwgflJlbW90ZU1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3RvcnlQcm94eSgpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9
CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9Ci0KIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCkBAIC01NSw4ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgLy8gTWVz
c2FnZXMKICAgICB2b2lkIGNyZWF0ZURlY29kaW5nQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNZWRp
YURlY29kaW5nQ29uZmlndXJhdGlvbiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
Ok1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvJiYpPiYmKTsKICAgICB2b2lkIGNyZWF0ZUVu
Y29kaW5nQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbiYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhQ2FwYWJpbGl0aWVzRW5jb2Rp
bmdJbmZvJiYpPiYmKTsKLQotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IGZhMjRhMmFhYmUyNDViOTAzYTg5NzgwMzE1OWM1ZjNmZmE5MzdmZGQuLjRkODRm
NWNjMDk2NGFjYmE5Y2ZjYmRhZmMwYjdkOGZiODYyZjFhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KICNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTQ4LDEw
ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uKQotICAgIDogbV9ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb24pCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgLCBtX2xvZ0lkZW50aWZpZXIoV1RGOjpMb2dnZXJIZWxwZXI6OnVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKLSNlbmRpZgorICAgIDogbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1h
a2VXZWFrUHRyKGNvbm5lY3Rpb24pKQogewogfQogCkBAIC02MiwxMyArNjAsMTQgQEAgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgp
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVBsYXllcihN
ZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyIGVuZ2luZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUGxheWVyUHJveHlD
b25maWd1cmF0aW9uJiYgcHJveHlDb25maWd1cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcyk7CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJveGll
c0xvY2spOwogICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAog
ICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uOwog
Ci0gICAgYXV0byBwcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4oKnRo
aXMsIGlkZW50aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCks
IGVuZ2luZUlkZW50aWZpZXIsIFdURk1vdmUocHJveHlDb25maWd1cmF0aW9uKSk7CisgICAgYXV0
byBwcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4oKnRoaXMsIGlkZW50
aWZpZXIsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLCBlbmdpbmVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHByb3h5Q29uZmlndXJhdGlvbikpOwogICAgIHByb3h5LT5nZXRD
b25maWd1cmF0aW9uKHBsYXllckNvbmZpZ3VyYXRpb24pOwogICAgIG1fcHJveGllcy5hZGQoaWRl
bnRpZmllciwgV1RGTW92ZShwcm94eSkpOwogCkBAIC0xOTYsMTQgKzE5NSwxNCBAQCBSZWZQdHI8
TWVkaWFQbGF5ZXI+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZWRpYVBsYXllcihj
b25zdCBNZWRpYVBsYXllcgogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1jb25zdCBM
b2dnZXImIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2dnZXIoKSBjb25zdAorTG9n
Z2VyJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkKIHsKLSAgICByZXR1
cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmxvZ2dlcigpOwotfQorICAgIGlmICghbV9s
b2dnZXIpIHsKKyAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAg
ICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID8gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSA6IGZhbHNlKTsKKyAgICB9CiAKLVdURkxvZ0NoYW5uZWwmIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Ojpsb2dDaGFubmVsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViS2l0MkxvZ01l
ZGlhOworICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaAppbmRleCAyMzdhZjliNjgwMTBjNjI0Mjk2OGVmZDBlNDBiNTRkNDhkMGY0NTA5
Li5mY2Q2NWIxZjU3NjZiZmE2NzA2NjljMTk1MzNlOWVjYzNjZTEzZjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaApAQCAtMjgsNDcgKzI4LDQzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWVySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Ci0jaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3Qg
UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uOwogc3RydWN0IFJlbW90ZU1lZGlhUGxheWVy
UHJveHlDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eQotICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKLSNlbmRpZgorICAgIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PgorICAgICwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKICAgICB+UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkoKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
IH0KKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOyB9CiAgICAg
dm9pZCBjbGVhcigpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgTG9nZ2VyJiBs
b2dnZXIoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9j
ZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7
IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVu
Y29kZXIpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGxheWVyTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgTG9nZ2Vy
JiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IjsgfQotICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5h
bDsKLSNlbmRpZgotCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXll
cihjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXImKTsKIAogcHJpdmF0ZToKQEAg
LTg5LDEwICs4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX3Byb3hpZXNMb2NrOwogICAg
IEhhc2hNYXA8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4+IG1fcHJveGllczsKLSAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vha1B0cjxHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CisgICAgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAppbmRleCBlMTU0ZmNhYWE3ODBhZTBjMzM2YmJkZTMzZWI3ZGI1NjhjMjg3MTQ5Li5iNGQx
ZWFmMmNkYjE5YjA4MmYyZWUwY2IyNmNkZDA3ZTcyNTFkMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3Bw
CkBAIC03MywxMiArNzMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXllclByb3h5KFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5JiBtYW5hZ2VyLCBNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIgZW5naW5lSWRlbnRpZmllciwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9pZChpZGVudGlmaWVyKQogICAg
ICwgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9t
YW5hZ2VyKG1hbmFnZXIpCisgICAgLCBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCiAg
ICAgLCBtX2VuZ2luZUlkZW50aWZpZXIoZW5naW5lSWRlbnRpZmllcikKICAgICAsIG1fdXBkYXRl
Q2FjaGVkU3RhdGVNZXNzYWdlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6dGltZXJGaXJlZCkKICAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgbV9sb2dnZXIobV9tYW5h
Z2VyLmxvZ2dlcigpKQorICAgICwgbV9sb2dnZXIobWFuYWdlci5sb2dnZXIoKSkKICNlbmRpZgog
ewogICAgIG1fdHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQgPSBtX2NvbmZpZ3VyYXRpb24u
bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBvcnQ7CkBAIC0xMzYsMTAgKzEz
NiwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JgogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRNZWRpYVNvdXJjZShVUkwmJiB1cmws
IGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgYm9vbCB3ZWJNUGFyc2Vy
RW5hYmxlZCwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9tZWRpYVNvdXJjZVByb3h5ID0gYWRv
cHRSZWYoKm5ldyBSZW1vdGVNZWRpYVNvdXJjZVByb3h5KG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCksIG1lZGlhU291cmNlSWRlbnRpZmllciwgd2ViTVBhcnNlckVuYWJsZWQs
ICp0aGlzKSk7Ci0gICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwgbV9tZWRpYVNv
dXJjZVByb3h5LmdldCgpKTsKKyAgICBBU1NFUlQobV9tYW5hZ2VyICYmIG1fbWFuYWdlci0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpKTsKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXIt
PmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fbWVkaWFTb3VyY2VQcm94eSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFTb3VyY2VQcm94
eSgqbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIG1lZGlhU291cmNlSWRl
bnRpZmllciwgd2ViTVBhcnNlckVuYWJsZWQsICp0aGlzKSk7CisgICAgbV9wbGF5ZXItPmxvYWQo
dXJsLCBjb250ZW50VHlwZSwgbV9tZWRpYVNvdXJjZVByb3h5LmdldCgpKTsKICAgICBnZXRDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29uZmlndXJhdGlvbikpOwogfQpAQCAtMjQ5LDkgKzI1NSwxMyBAQCB2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldFJhdGUoZG91YmxlIHJhdGUpCiAgICAgbV9wbGF5ZXItPnNldFJhdGUo
cmF0ZSk7CiB9CiAKLVJlZjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpyZXF1ZXN0UmVzb3VyY2Uo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9ucyBvcHRpb25zKQogewotICAgIGF1dG8mIHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5yZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcigpOworICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5hZ2VyLT5ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFn
ZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvJiByZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciA9IG1fbWFuYWdlci0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLT5yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpOwog
ICAgIGF1dG8gcmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICBhdXRvIHJlbW90ZU1lZGlhUmVzb3VyY2Ug
PSBSZW1vdGVNZWRpYVJlc291cmNlOjpjcmVhdGUocmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIs
ICp0aGlzLCByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgcmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuYWRkTWVkaWFSZXNvdXJjZShyZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllciwgcmVtb3RlTWVkaWFSZXNvdXJjZSk7CkBAIC0zNzYsNyArMzg2LDExIEBAIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJFbmdpbmVGYWlsZWRUb0xvYWQoKSBjb25z
dAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogU3RyaW5nIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5h
Z2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8
ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCktPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRpZgogCkBA
IC00MDksNyArNDIzLDExIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJHZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpNCiAKIGNvbnN0IFN0cmlu
ZyYgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgQVNTRVJUKG1fbWFuYWdlciAmJiBtX21h
bmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSk7CisgICAgaWYgKCFtX21hbmFnZXIg
fHwgIW1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpKQorICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS0+bWVkaWFDYWNoZURpcmVjdG9yeSgpOwogfQogCiBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29udGVudFR5cGU+JiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYUNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CkBAIC00NzksOCArNDk3LDEy
IEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
YWRkUmVtb3RlQXVkaW9UcmFja1Byb3h5KFdlCiAgICAgdHJhY2suc2V0TG9nZ2VyKG1lZGlhUGxh
eWVyTG9nZ2VyKCksIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKTsKICNlbmRpZgogCisgICAg
QVNTRVJUKG1fbWFuYWdlciAmJiBtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSk7CisgICAgaWYgKCFtX21hbmFnZXIgfHwgIW1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgYXV0byBpZGVudGlmaWVyID0g
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX2F1ZGlvVHJh
Y2tzLnNldCgmdHJhY2ssIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6Y3JlYXRlKG1fbWFuYWdlci5n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIGlkZW50aWZpZXIsIHRyYWNrLCBtX2lkKSk7Cisg
ICAgbV9hdWRpb1RyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNyZWF0
ZSgqbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIGlkZW50aWZpZXIsIHRy
YWNrLCBtX2lkKSk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTUwMCw4ICs1MjIs
MTMgQEAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjphZGRSZW1vdGVWaWRlb1RyYWNrUHJveHkoV2UKICAgICB0cmFjay5zZXRMb2dnZXIobWVkaWFQ
bGF5ZXJMb2dnZXIoKSwgbWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCiAKKyAg
ICBBU1NFUlQobV9tYW5hZ2VyKTsKKyAgICBBU1NFUlQobV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXItPmdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwogICAgIGF1dG8g
aWRlbnRpZmllciA9IFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0g
ICAgbV92aWRlb1RyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNyZWF0
ZShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBpZGVudGlmaWVyLCB0cmFj
aywgbV9pZCkpOworICAgIG1fdmlkZW9UcmFja3Muc2V0KCZ0cmFjaywgUmVtb3RlVmlkZW9UcmFj
a1Byb3h5OjpjcmVhdGUoKm1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBp
ZGVudGlmaWVyLCB0cmFjaywgbV9pZCkpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBA
IC01MjEsOCArNTQ4LDEyIEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6YWRkUmVtb3RlVGV4dFRyYWNrUHJveHkoV2ViCiAgICAgdHJhY2suc2V0
TG9nZ2VyKG1lZGlhUGxheWVyTG9nZ2VyKCksIG1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKTsK
ICNlbmRpZgogCisgICAgQVNTRVJUKG1fbWFuYWdlciAmJiBtX21hbmFnZXItPmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKSk7CisgICAgaWYgKCFtX21hbmFnZXIgfHwgIW1fbWFuYWdlci0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgYXV0
byBpZGVudGlmaWVyID0gVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
LSAgICBtX3RleHRUcmFja3Muc2V0KCZ0cmFjaywgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmNyZWF0
ZShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBpZGVudGlmaWVyLCB0cmFj
aywgbV9pZCkpOworICAgIG1fdGV4dFRyYWNrcy5zZXQoJnRyYWNrLCBSZW1vdGVUZXh0VHJhY2tQ
cm94eTo6Y3JlYXRlKCptX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgaWRl
bnRpZmllciwgdHJhY2ssIG1faWQpKTsKICAgICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApAQCAt
NjEyLDcgKzY0MywxMSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQogUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRp
YVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0CiB7Ci0g
ICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2FjeVNlc3Npb24p
KQorICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkpOworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoYXV0
byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPmxl
Z2FjeUNkbUZhY3RvcnlQcm94eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkKICAgICAg
ICAgcmV0dXJuIGNkbVNlc3Npb24tPmdldENhY2hlZEtleUZvcktleUlkKGtleUlkKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTgwOCwxMSArODQzLDE1IEBAIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6c2VuZENhY2hlZFN0YXRlKCkKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lv
bihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCiB7CisgICAg
QVNTRVJUKG1fbWFuYWdlciAmJiBtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSk7CisgICAgaWYgKCFtX21hbmFnZXIgfHwgIW1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAobV9sZWdhY3lTZXNzaW9uID09
IGluc3RhbmNlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2xlZ2FjeVNlc3Npb24p
IHsKLSAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2Fj
eVNlc3Npb24pKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFnZXItPmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vz
c2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7CiAgICAgICAgICAgICBtX3BsYXllci0+c2V0Q0RNU2Vz
c2lvbihudWxscHRyKTsKICAgICAgICAgICAgIGNkbVNlc3Npb24tPnNldFBsYXllcihudWxscHRy
KTsKICAgICAgICAgfQpAQCAtODIxLDcgKzg2MCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
CiAgICAgbV9sZWdhY3lTZXNzaW9uID0gaW5zdGFuY2VJZDsKIAogICAgIGlmIChtX2xlZ2FjeVNl
c3Npb24pIHsKLSAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbiht
X2xlZ2FjeVNlc3Npb24pKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFn
ZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS0+bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCku
Z2V0U2Vzc2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7CiAgICAgICAgICAgICBtX3BsYXllci0+c2V0
Q0RNU2Vzc2lvbihjZG1TZXNzaW9uLT5zZXNzaW9uKCkpOwogICAgICAgICAgICAgY2RtU2Vzc2lv
bi0+c2V0UGxheWVyKG1ha2VXZWFrUHRyKHRoaXMpKTsKICAgICAgICAgfQpAQCAtODM3LDE5ICs4
NzYsMzEgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRlZCgpCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6Y2RtSW5z
dGFuY2VBdHRhY2hlZChSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXImJiBpbnN0YW5jZUlkKQog
ewotICAgIGlmIChhdXRvKiBpbnN0YW5jZVByb3h5ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkK
KyAgICBBU1NFUlQobV9tYW5hZ2VyICYmIG1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpKTsKKyAgICBpZiAoIW1fbWFuYWdlciB8fCAhbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBpbnN0YW5j
ZVByb3h5ID0gbV9tYW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCktPmNkbUZhY3Rv
cnlQcm94eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQogICAgICAgICBtX3BsYXllci0+Y2Rt
SW5zdGFuY2VBdHRhY2hlZChpbnN0YW5jZVByb3h5LT5pbnN0YW5jZSgpKTsKIH0KIAogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjpjZG1JbnN0YW5jZURldGFjaGVkKFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCiB7Ci0gICAgaWYgKGF1dG8qIGluc3RhbmNlUHJv
eHkgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNkbUZhY3RvcnlQcm94
eSgpLmdldEluc3RhbmNlKGluc3RhbmNlSWQpKQorICAgIEFTU0VSVChtX21hbmFnZXIgJiYgbV9t
YW5hZ2VyLT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkpOworICAgIGlmICghbV9tYW5hZ2Vy
IHx8ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGF1dG8qIGluc3RhbmNlUHJveHkgPSBtX21hbmFnZXItPmdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKS0+Y2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5zdGFu
Y2VJZCkpCiAgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZURldGFjaGVkKGluc3RhbmNlUHJv
eHktPmluc3RhbmNlKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmF0dGVt
cHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyJiYgaW5z
dGFuY2VJZCkKIHsKLSAgICBpZiAoYXV0byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci5ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuY2RtRmFjdG9yeVByb3h5KCkuZ2V0SW5zdGFuY2UoaW5z
dGFuY2VJZCkpCisgICAgQVNTRVJUKG1fbWFuYWdlciAmJiBtX21hbmFnZXItPmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKSk7CisgICAgaWYgKCFtX21hbmFnZXIgfHwgIW1fbWFuYWdlci0+Z3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0
byogaW5zdGFuY2VQcm94eSA9IG1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
LT5jZG1GYWN0b3J5UHJveHkoKS5nZXRJbnN0YW5jZShpbnN0YW5jZUlkKSkKICAgICAgICAgbV9w
bGF5ZXItPmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoaW5zdGFuY2VQcm94eS0+aW5zdGFu
Y2UoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE1NDMwZTg5ZTMyMGM0NTA3ODg4
NTAwZGM3YjNkZWI3OTEyNjI3ZDkuLjYyYzU1MGM0YTg3MDJjMDU1YmRiNmE1NzE1YjhlZmNkMDdj
ZTRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdvdWxkVGFpbnRPcmlnaW4oc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+JiYpOwogICAgIHZvaWQgc2V0
U2hvdWxkVXBkYXRlUGxheWJhY2tNZXRyaWNzKGJvb2wpOwogCi0gICAgUmVmPFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25z
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVz
b3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoUmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PExheWVySG9zdGluZ0NvbnRleHQ+IG1fZnVsbHNjcmVlbkxheWVySG9zdGluZ0NvbnRleHQ7CiAj
ZW5kaWYKLSAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgbV9tYW5hZ2VyOworICAg
IFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fbWFuYWdlcjsKICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgbV9lbmdpbmVJ
ZGVudGlmaWVyOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4gbV90eXBlc1JlcXVp
cmluZ0hhcmR3YXJlU3VwcG9ydDsKICAgICBSdW5Mb29wOjpUaW1lcjxSZW1vdGVNZWRpYVBsYXll
clByb3h5PiBtX3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3Bw
CmluZGV4IDIyODQ0ZWE4ODg2ODFkODA4YzAyMDU2ZGQ5NDBlMzI3NTA2NjhmM2EuLmQ2ZjQwMGQz
ZmQwYTA5MDQ5ZWE4NTgxOTNjMGE0MjQ1YWY0Y2FmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKQEAg
LTQyLDE3ICs0MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5KEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbW90ZU1l
ZGlhU291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdlYk1QYXJzZXJFbmFibGVkLCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5JiByZW1vdGVNZWRpYVBsYXllclByb3h5KQotICAgIDogbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlvblRvV2ViUHJvY2Vzcykp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fd2ViTVBhcnNlckVuYWJs
ZWQod2ViTVBhcnNlckVuYWJsZWQpCiAgICAgLCBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkobWFr
ZVdlYWtQdHIocmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVNvdXJjZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFJlbW90ZU1lZGlhU291cmNlUHJveHk6On5SZW1vdGVNZWRp
YVNvdXJjZVByb3h5KCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJl
Y2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNv
dXJjZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKTsKKworICAgIG1fY29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVNvdXJj
ZVByb3h5OjpzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlh
U291cmNlUHJpdmF0ZSkKQEAgLTc0LDcgKzc2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmJ1ZmZlcmVkKCkgY29uc3QKIAog
dm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYg
dGltZSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6U2Vla1RvVGltZSh0aW1lKSwgbV9p
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpTZWVrVG9UaW1lKHRpbWUpLCBt
X2lkZW50aWZpZXIpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKQEAgLTk4LDcgKzEwMyw3IEBA
IHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZmFpbGVkVG9DcmVhdGVSZW5kZXJlcihSZW5k
ZXJlclR5cGUpCiAKIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgQWRkU291cmNlQnVmZmVy
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSkKKyAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eSB8fCAhbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZT4gc291cmNlQnVmZmVyUHJpdmF0ZTsKQEAgLTEwNyw3ICsxMTIsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhU291cmNlUHJveHk6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50
VHlwZSYgY29udGVudAogICAgIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+
IHJlbW90ZVNvdXJjZUlkZW50aWZpZXI7CiAgICAgaWYgKHN0YXR1cyA9PSBNZWRpYVNvdXJjZVBy
aXZhdGU6OkFkZFN0YXR1czo6T2spIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICAgICAgYXV0byByZW1vdGVT
b3VyY2VCdWZmZXJQcm94eSA9IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpjcmVhdGUobV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBzb3VyY2VCdWZmZXJQcml2YXRlLnJlbGVh
c2VOb25OdWxsKCksICptX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpOworICAgICAgICBhdXRvIHJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5ID0gUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmNyZWF0ZSgq
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBpZGVudGlmaWVyLCBzb3VyY2VCdWZmZXJQcml2YXRl
LnJlbGVhc2VOb25OdWxsKCksICptX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpOwogICAgICAgICBt
X3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUocmVtb3RlU291cmNlQnVmZmVyUHJveHkpKTsK
ICAgICAgICAgcmVtb3RlU291cmNlSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmgKaW5kZXggNDA2ZjBiYjVkOTY4NDhiMzQ5MDIzY2ZmMGVlZTMwYmM3MDBkMTlhMS4u
ZDk1MDBjYjI0NTE4MTIyYWI0MTAxMDAzZWFjMzc1MjY2ODRmYjliOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5o
CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWVrQ29tcGxldGVkKCk7CiAg
ICAgdm9pZCBzZXRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CiAgICAgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBib29s
IG1fd2ViTVBhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJv
eHkuY3BwCmluZGV4IGQxZTJiMTJiNWJhMzQ3MThhNWQ0NjZhYzU0ODM1Mjg3ZDFiOTNmYjUuLjJl
Yzc5YTY0MmNjYTNmZmIyN2M0YzkwN2IwMThhY2JiZDQ3MjY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lclByb3h5LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVu
ZXJQcm94eTo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyUHJveHkoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvbiwgUmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRl
bnRpZmllciYmIGlkZW50aWZpZXIpCi0gICAgOiBtX2dwdUNvbm5lY3Rpb24oZ3B1Q29ubmVjdGlv
bikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvbihtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uKSkKICAg
ICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQogICAgICwgbV9saXN0ZW5lcihX
ZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcykpCiB7CkBAIC00Niw3
ICs0NiwxMCBAQCBSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eTo6flJlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lclByb3h5KCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbW90ZVJlbW90ZUNv
bW1hbmRMaXN0ZW5lclByb3h5OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kLCBjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50JiBhcmd1bWVudCkKIHsK
LSAgICBtX2dwdUNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bW90ZUNvbW1hbmRMaXN0ZW5lcjo6RGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1h
bmQsIGFyZ3VtZW50KSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpEaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIFJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5Ojp1cGRhdGVTdXBwb3J0ZWRDb21t
YW5kcyhib29sIHN1cHBvcnRzU2Vla2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5
LmgKaW5kZXggY2E2OGYxYmI2ZWRhNzNjMzBmYTAzYjY1MWFlZjNkZGYyNWRlNThlYy4uOWVhN2Rl
YTkxMmM0ODA1NmU1NDRhYzBjNzM4YWEwNWVmMTBjNTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVJlbW90ZUNvbW1hbmRM
aXN0ZW5lclByb3h5LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZW1vdGVD
b21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVDb21t
YW5kTGlzdGVuZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwpAQCAtNTgs
NyArNTksNyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzCiAgICAgdm9pZCB1cGRhdGVTdXBw
b3J0ZWRDb21tYW5kcyhib29sIHN1cHBvcnRzU2Vla2luZyk7CiAKLSAgICBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb247CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb247CiAgICAgUmVtb3RlUmVtb3RlQ29tbWFuZExp
c3RlbmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gbV9saXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmNwcAppbmRleCA3ZGZiMDVmYzQ4NmY1NDM4NjBlZmM0MDQ3YjQxNzJhZDc5MWExYzFmLi5lNDBi
OWM4ZTgzNWZhMzRjYjMyOWViYjkwNGI1OTg0NGQwMGRiMWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHAKQEAgLTQ3LDEyICs0NywxMiBAQCBSZWY8UmVtb3RlU291cmNlQnVmZmVyUHJveHk+IFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5OjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUAogfQogCiBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VC
dWZmZXJQcml2YXRlLCBSZW1vdGVNZWRpYVBsYXllclByb3h5JiByZW1vdGVNZWRpYVBsYXllclBy
b3h5KQotICAgIDogbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlv
blRvV2ViUHJvY2VzcykpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1f
c291cmNlQnVmZmVyUHJpdmF0ZShXVEZNb3ZlKHNvdXJjZUJ1ZmZlclByaXZhdGUpKQogICAgICwg
bV9yZW1vdGVNZWRpYVBsYXllclByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZU1lZGlhUGxheWVyUHJv
eHkpKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5zZXRJc0F0dGFjaGVkKHRydWUpOwogfQpAQCAtNjAsNyArNjAsNyBAQCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubgogUmVtb3RlU291cmNlQnVmZmVyUHJveHk6On5SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eSgpCiB7CiAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5zZXRJc0F0dGFjaGVkKGZh
bHNlKTsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFwKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTAyLDYyICsxMDIsMTAwIEBAIHZv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50CiAgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlk
ZW50aWZpZXIsICp0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBtX2Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudEluZm8pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJv
Y2VzcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50SW5mbyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRo
RGVjb2RlRXJyb3IoKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVy
UHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCksIG1faWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhE
ZWNvZGVFcnJvcigpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikK
IHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRF
cnJvcihkZWNvZGVFcnJvciksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihkZWNvZGVFcnJvciksIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
IHRpbWVzdGFtcCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wQ2hhbmdlZCh0aW1lc3RhbXApLCBtX2lk
ZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRl
SGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcENoYW5nZWQodGltZXN0YW1wKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChk
dXJhdGlvbiksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQogewotICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKHNhbXBsZUR1cmF0aW9u
KSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVy
UHJpdmF0ZURpZFBhcnNlU2FtcGxlKHNhbXBsZUR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZERy
b3BTYW1wbGUoKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJp
dmF0ZURpZERyb3BTYW1wbGUoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
blRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSwgbV9pZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBl
bmRSZXN1bHQpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2
YXRlQXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVu
ZFJlc3VsdCksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50NjRfdCBl
cnJvckNvZGUpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGVycm9yQ29kZSksIG1faWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVu
ZGVyaW5nRXJyb3IoZXJyb3JDb2RlKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZVJlcG9ydEV4dHJhTWVtb3J5Q29z
dCh1aW50NjRfdCBleHRyYU1lbW9yeSkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZXBvcnRFeHRyYU1lbW9yeUNvc3QoZXh0cmFNZW1vcnkpLCBtX2lk
ZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRl
UmVwb3J0RXh0cmFNZW1vcnlDb3N0KGV4dHJhTWVtb3J5KSwgbV9pZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVk
RGlydHlDaGFuZ2VkKGJvb2wgZmxhZykKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9pZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVk
RGlydHlDaGFuZ2VkKGZsYWcpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNv
bnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKIHsKLSAgICBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQodGltZVJh
bmdlcyksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IDc0ODQ1NDQ3MjlhYzAx
NjUxMmMzNTZhOWRhMmUwMzA3OTkzYzcwNTguLjE1Yzg0NzNmMzRmNjM4OWYwYjFkYzFkMzNjNzBi
NDI4Mjc0MmY0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVRyYWNrSWRzKFZlY3RvcjxzdGQ6OnBhaXI8VHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4+JiYpOwogICAg
IHZvaWQgYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJZChUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAotICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAg
ICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4gbV9zb3VyY2VCdWZmZXJQcml2YXRl
OwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXll
clByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggNTFkNjM5ZTQ4MGRmNzYyZTRmMzJhZjFiYzNlYmZh
YzdjOTk5OThlNy4uMWNiODUxNmU3ZTZkMDI2NDMxY2I5OWQ0YWFiMjQyOTcxM2Q2ODAyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRy
YWNrUHJveHkuY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlVGV4dFRyYWNrUHJveHk6OlJlbW90ZVRleHRU
cmFja1Byb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlLCBNZWRpYVBsYXllcklkZW50aWZpZXIgbWVkaWFQbGF5
ZXJJZGVudGlmaWVyKQotICAgIDogbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MpCisgICAgOiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIo
Y29ubmVjdGlvblRvV2ViUHJvY2VzcykpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAsIG1fdHJhY2tQcml2YXRlKHRyYWNrUHJpdmF0ZSkKICAgICAsIG1fbWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyKG1lZGlhUGxheWVySWRlbnRpZmllcikKIHsKICAgICBtX3RyYWNrUHJpdmF0ZS0+
c2V0Q2xpZW50KHRoaXMpOwotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRSZW1vdGVUZXh0
VHJhY2sobV9pZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRp
Zmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGRSZW1vdGVUZXh0VHJhY2sobV9p
ZGVudGlmaWVyLCBjb25maWd1cmF0aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9
CiAKIFJlbW90ZVRleHRUcmFja1Byb3h5Ojp+UmVtb3RlVGV4dFRyYWNrUHJveHkoKQpAQCAtODIs
NyArODIsMTAgQEAgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZVRl
eHRUcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIAogdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94
eTo6Y29uZmlndXJhdGlvbkNoYW5nZWQoKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpS
ZW1vdGVUZXh0VHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChtX2lkZW50aWZpZXIsIGNvbmZpZ3Vy
YXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlv
blRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpSZW1vdGVUZXh0VHJhY2tDb25maWd1cmF0aW9uQ2hhbmdlZChtX2lkZW50aWZpZXIsIGNv
bmZpZ3VyYXRpb24oKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6d2lsbFJlbW92ZSgpCkBAIC0xMDcsNTQgKzExMCw4NCBAQCB2b2lk
IFJlbW90ZVRleHRUcmFja1Byb3h5OjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYp
CiAKIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkRGF0YUN1ZShtX2lkZW50
aWZpZXIsIHN0YXJ0LCBlbmQsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQs
IGVuZCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiAjaWYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZT4mJiBjdWVEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0g
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZERhdGFDdWVXaXRoVHlwZShtX2lkZW50aWZpZXIs
IHN0YXJ0LCBlbmQsIGN1ZURhdGEtPmVuY29kYWJsZVZhbHVlKCksIHR5cGUpLCBtX21lZGlhUGxh
eWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkRGF0YUN1ZVdpdGhU
eXBlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgY3VlRGF0YS0+ZW5jb2RhYmxlVmFsdWUoKSwg
dHlwZSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0VHJh
Y2tQcm94eTo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYgY3VlRGF0YSkKIHsKLSAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6VXBkYXRlRGF0YUN1ZShtX2lkZW50aWZpZXIsIHN0YXJ0LCBl
bmQsIGN1ZURhdGEuZW5jb2RhYmxlVmFsdWUoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpVcGRhdGVEYXRhQ3VlKG1faWRlbnRpZmllciwgc3Rh
cnQsIGVuZCwgY3VlRGF0YS5lbmNvZGFibGVWYWx1ZSgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlJiBjdWVEYXRhKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZW1vdmVE
YXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgY3VlRGF0YS5lbmNvZGFibGVWYWx1ZSgp
KSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJl
bW92ZURhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5kLCBjdWVEYXRhLmVuY29kYWJsZVZh
bHVlKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9CiAjZW5kaWYKIAogdm9pZCBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6YWRkR2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJiBjdWUpCiB7
Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZEdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBj
dWUuY3VlRGF0YSgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OkFkZEdlbmVyaWNDdWUobV9pZGVudGlmaWVyLCBjdWUuY3VlRGF0YSgpKSwgbV9t
ZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5Ojp1
cGRhdGVHZW5lcmljQ3VlKEluYmFuZEdlbmVyaWNDdWUmIGN1ZSkKIHsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6VXBkYXRlR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkp
LCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6VXBk
YXRlR2VuZXJpY0N1ZShtX2lkZW50aWZpZXIsIGN1ZS5jdWVEYXRhKCkpLCBtX21lZGlhUGxheWVy
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZUdlbmVy
aWNDdWUoSW5iYW5kR2VuZXJpY0N1ZSYgY3VlKQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpSZW1vdmVHZW5lcmljQ3VlKG1faWRlbnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fbWVkaWFQ
bGF5ZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpSZW1vdmVHZW5lcmlj
Q3VlKG1faWRlbnRpZmllciwgY3VlLmN1ZURhdGEoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRGaWxlSGVhZGVy
KFN0cmluZyYmIGhlYWRlcikKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJW
VFRGaWxlSGVhZGVyKG1faWRlbnRpZmllciwgaGVhZGVyKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRURmlsZUhlYWRlcihtX2lk
ZW50aWZpZXIsIGhlYWRlciksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJW
VFRDdWVEYXRhKG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0YShtX2lkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6cGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmIGN1
ZURhdGEpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlBhcnNlV2ViVlRUQ3VlRGF0YVN0
cnVjdChtX2lkZW50aWZpZXIsIGN1ZURhdGEpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UGFyc2VXZWJWVFRDdWVEYXRhU3RydWN0KG1faWRlbnRp
ZmllciwgY3VlRGF0YSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IDNkOWY0ZWYyMzM2MzcyMWE1YzQxN2Q5NzFiMTQ1
Y2U2ODgzNWNmMTguLmI3NGU4ODJiMTQwYzY2YWM4OTNjYmIyOTg5ZTEwOThiNTAwZWQxOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
cklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYWNrQmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsK
IGNsYXNzIENvbm5lY3Rpb247CkBAIC04OCw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKTsKICAgICB2b2lk
IGNvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFdlYkNvcmU6OkluYmFuZFRleHRU
cmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRlOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllciBtX21lZGlhUGxheWVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKaW5kZXggY2U1
NzQ1MWYzYmY3OTdmNGMxOGMxMGVkYzgzZDg3ZjA2YTM3NmYyMy4uYTk1NTY1MDYwYzk0NjU3MjU3
ZTdlYTM0OTMxNWFkYjc2Nzg5Mjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKQEAgLTQwLDEzICs0MCwx
MyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1v
dGVWaWRlb1RyYWNrUHJveHk6OlJlbW90ZVZpZGVvVHJhY2tQcm94eShHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFZpZGVvVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUsIE1lZGlh
UGxheWVySWRlbnRpZmllciBtZWRpYVBsYXllcklkZW50aWZpZXIpCi0gICAgOiBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvblRvV2ViUHJvY2VzcykKKyAgICA6IG1fY29ubmVjdGlv
blRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAs
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90cmFja1ByaXZhdGUodHJhY2tQcml2
YXRlKQogICAgICwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIobWVkaWFQbGF5ZXJJZGVudGlmaWVy
KQogewogICAgIG1fdHJhY2tQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7Ci0gICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OkFkZFJlbW90ZVZpZGVvVHJhY2sobV9pZGVudGlmaWVyLCBjb25maWd1cmF0
aW9uKCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpBZGRSZW1vdGVWaWRlb1RyYWNrKG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwg
bV9tZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiBSZW1vdGVWaWRlb1RyYWNrUHJveHk6On5S
ZW1vdGVWaWRlb1RyYWNrUHJveHkoKQpAQCAtNzAsNyArNzAsMTAgQEAgVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlVmlkZW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkK
IAogdm9pZCBSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb25DaGFuZ2VkKCkKIHsK
LSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UmVtb3RlVmlkZW9UcmFja0NvbmZpZ3VyYXRpb25D
aGFuZ2VkKG1faWRlbnRpZmllciwgY29uZmlndXJhdGlvbigpKSwgbV9tZWRpYVBsYXllcklkZW50
aWZpZXIpOworICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlJlbW90ZVZpZGVvVHJhY2tDb25maWd1
cmF0aW9uQ2hhbmdlZChtX2lkZW50aWZpZXIsIGNvbmZpZ3VyYXRpb24oKSksIG1fbWVkaWFQbGF5
ZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVWaWRlb1RyYWNrUHJveHk6OndpbGxSZW1v
dmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5oCmluZGV4IGY1MTU1MDA4NTIwNjFhOGNjOWY0OTVmM2VhYTNiYTllNmI1
MjNlMzUuLjA1MzZiYmMzODVjMzA0ODhjZTdiNWVhMjk4YWFkMTM5MDNhMGU3YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1By
b3h5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RyYWNrQmFzZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9UcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBD
b25uZWN0aW9uOwpAQCAtNzQsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKTsKICAgICB2b2lkIGNvbmZpZ3VyYXRp
b25DaGFuZ2VkKCk7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CisgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlPiBtX3Ry
YWNrUHJpdmF0ZTsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgbV9tZWRpYVBs
YXllcklkZW50aWZpZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>