<?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>149657</bug_id>
          
          <creation_ts>2015-09-30 03:10:12 -0700</creation_ts>
          <short_desc>Replace 0 and NULL with nullptr in WebCore/loader.</short_desc>
          <delta_ts>2015-10-20 19:13:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hunseop Jeong">hs85.jeong</reporter>
          <assigned_to name="Hunseop Jeong">hs85.jeong</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129540</commentid>
    <comment_count>0</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-09-30 03:10:12 -0700</bug_when>
    <thetext>Use the &apos;nullptr&apos; instead of &apos;0&apos; and &apos;NULL&apos; in WebCore/loader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129547</commentid>
    <comment_count>1</comment_count>
      <attachid>262151</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-09-30 04:00:15 -0700</bug_when>
    <thetext>Created attachment 262151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129548</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 04:03:03 -0700</bug_when>
    <thetext>Attachment 262151 did not pass style-queue:


ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:70:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/loader/FTPDirectoryParser.cpp:1620:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 50 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129549</commentid>
    <comment_count>3</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-09-30 04:07:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 262151 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp:70: 
&gt; Should be indented on a separate line, with the colon or comma first on that
&gt; line.  [whitespace/indent] [4]
It doesn&apos;t look weird.
&gt; ERROR: Source/WebCore/loader/FTPDirectoryParser.cpp:1620:  Weird number of
&gt; spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent]
&gt; [3]
FTPDirectoryParser.cpp used the 2-space indent.
&gt; Total errors found: 2 in 50 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135097</commentid>
    <comment_count>4</comment_count>
      <attachid>262151</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-20 19:13:14 -0700</bug_when>
    <thetext>Comment on attachment 262151
Patch

Clearing flags on attachment: 262151

Committed r191369: &lt;http://trac.webkit.org/changeset/191369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135098</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-20 19:13:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262151</attachid>
            <date>2015-09-30 04:00:15 -0700</date>
            <delta_ts>2015-10-20 19:13:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149657-20150930195948.patch</filename>
            <type>text/plain</type>
            <size>77251</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDM0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MSBAQAorMjAxNS0wOS0zMCAgSHVuc2Vv
cCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmVwbGFjZSAwIGFu
ZCBOVUxMIHdpdGggbnVsbHB0ciBpbiBXZWJDb3JlL2xvYWRlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTY1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZyYW1l
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9y
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2
ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWlu
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNl
TG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnNldERlZmVyc0xvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpjbGVhclJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlT25lRlRQTGluZSk6CisgICAgICAgICogbG9hZGVyL0ZUUERpcmVj
dG9yeVBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGlzdFJlc3VsdDo6Y2xlYXIpOgorICAg
ICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6Y2xvc2VBbmRSZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZGV0YWNoRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNo
Vmlld3NBbmREb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICog
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpJ
bWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXNvdXJjZUxvYWRTY2hlZHVsZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6VGV4dFJlc291cmNlRGVjb2Rlcik6
CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmRvbmUp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZhbGxiYWNrVVJMTG9uZ2VyVGhhbik6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGU6OnJlc291cmNlRm9yUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGU6OmZhbGxiYWNrVVJMcyk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmFpbGVkTG9hZGluZ01h
aW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6Om1h
bmlmZXN0Tm90Rm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpjaGVja0lmTG9hZElzQ29tcGxldGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6QXBwbGljYXRpb25DYWNoZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OnNldEFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OmNhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cCk6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VJREpvdXJuYWw6OlJlY29yZDo6UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VJREpvdXJuYWw6OlJlY29yZDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXApOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZv
clVSTCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVH
cm91cERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpkaXNjb25u
ZWN0RnJhbWVGb3JQYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25D
YWNoZTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OmFwcGxpY2F0aW9uQ2FjaGVIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFyY2hpdmVGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZUZhY3Rv
cnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVSZXNvdXJjZUZvclVSTCk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6cmF3RGF0YVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNSFRNTEFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6
cGFyc2VBcmNoaXZlV2l0aEhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZUNsaWVudDo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZElt
YWdlQ2xpZW50OjpuZXdJbWFnZUFuaW1hdGlvbkZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJhd1Jlc291cmNlQ2xpZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZl
cik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjo6bmV4dCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTo6Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOiBSZXR1cm4gdmFsdWUgaXMgYm9vbC4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJEb2N1bWVudExvYWRlcik6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZSk6CisgICAgICAgICogbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hlUmVzcG9uc2UpOiBS
ZXR1cm4gdmFsdWUgaXMgYm9vbC4KKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQ
YWdlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRp
dmVJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnNldElj
b25EYXRhRm9ySWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9y
Q3JlYXRlUGFnZVVSTFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmNs
ZWFudXBTeW5jVGhyZWFkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2U6Om9wZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6aWNvbkRhdGFiYXNlKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpFbnVtQ2FsbGJhY2s6OnBlcmZvcm1DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpFbnVtQ2FsbGJhY2s6OmludmFsaWRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6T2JqZWN0Q2FsbGJhY2s6OnBlcmZvcm1DYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpPYmplY3RDYWxsYmFjazo6aW52YWxpZGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2ljb24vUGFnZVVSTFJlY29yZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVVJMUmVjb3Jk
Ojp+UGFnZVVSTFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVVJMUmVjb3JkOjpzZXRJ
Y29uUmVjb3JkKToKKyAgICAgICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAg
ICAgICAgKiBsb2FkZXIvc291cC9DYWNoZWRSYXdSZXNvdXJjZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmdldE9yQ3JlYXRlUmVhZEJ1ZmZlcik6CisKIDIw
MTUtMDktMzAgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gU3VwcG9ydCBIaURQSSBQcm9wZXJseSBpbiBXZWJLaXRHdGsrIHdpdGggdGhlIFRleHR1
cmVNYXBwZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCShyZXZpc2lvbiAx
OTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTAgKzQwLDEwIEBAIHN0YXRpYyBOZXR3b3JraW5nQ29udGV4dCogbmV0d29y
a2luZ0NvbnQKIHsKICAgICAvLyBGSVhNRTogUmV0dXJuaW5nIDAgbWVhbnMgZmFsbGluZyBiYWNr
IHRvIGRlZmF1bHQgY29udGV4dC4gVGhhdCdzIG5vdCBhIGNob2ljZSB0aGF0IGlzIGFwcHJvcHJp
YXRlIHRvIGRvIGF0IHJ1bnRpbWUKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQt
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5uZXR3b3JraW5nQ29u
dGV4dCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGJvb2wgYXJl
QWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdAogCiBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQotICAg
ICwgbV9mcmFtZSgwKQorICAgICwgbV9mcmFtZShudWxscHRyKQogICAgICwgbV9jYWNoZWRSZXNv
dXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV93
cml0ZXIobV9mcmFtZSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcSkKQEAgLTE1Myw3ICsx
NTMsNyBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzCiBGcmFtZUxv
YWRlciogRG9jdW1lbnRMb2FkZXI6OmZyYW1lTG9hZGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gJm1fZnJhbWUtPmxvYWRlcigpOwogfQogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UoCiAKIFBhc3NSZWZQdHI8QXJjaGl2
ZT4gRG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVBcmNo
aXZlKGZyYW1lTmFtZSwgdXJsKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CisgICAgcmV0dXJu
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bi0+cG9wU3ViZnJhbWVBcmNoaXZlKGZyYW1lTmFtZSwgdXJsKSA6IFBhc3NSZWZQdHI8QXJjaGl2
ZT4obnVsbHB0cik7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291
cmNlcygpCkBAIC0xNTA1LDcgKzE1MDUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1h
aW5SZXNvdXJjZSgpCiAgICAgbV9jb250ZW50RmlsdGVyID0gbnVsbHB0cjsKICNlbmRpZgogCi0g
ICAgbV9tYWluUmVzb3VyY2UgPSAwOworICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VMb2FkZXJGaW5pc2hlZExvYWRpbmdP
bmVQYXJ0KFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMzQz
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6Y2FuY2VsKCkKICAgICAgICAgZGlkRmFpbChtX3Jlc291cmNlLT5pZGVudGlmaWVy
KCksIGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJSZXNvdXJjZSgpOwotICAgIG1fY2xpZW50ID0g
MDsKKyAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgdmFsdWUpCkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzbwogICAgIC8vIHRoaXMgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLiBTYXZlIG9mZiBhIGNvcHkgb2YgbV9yZXNvdXJjZSBhbmQg
Y2xlYXIgaXQgdG8KICAgICAvLyBwcmV2ZW50IHRoZSByZWVudHJhbmN5LgogICAgIGlmIChDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcmVzb3VyY2UgPSBtX3Jlc291cmNl
KSB7Ci0gICAgICAgIG1fcmVzb3VyY2UgPSAwOworICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0
cjsKICAgICAgICAgcmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMTkwMzQzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJlY3JlYXRl
UGx1CiAKIFBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEZyYW1l
TmV0d29ya2luZ0NvbnRleHQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWRFbGVtZW50Q2hhbmdlZChFbGVtZW50Kikgb3ZlcnJpZGUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUqKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1
YWwgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNv
bnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhZ2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNob3coKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yOTEsNyArMjkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBvdmVycmlkZSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcykgb3ZlcnJpZGUg
eyB9CiAKLSAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgb3ZlcnJpZGUg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWVQb2xp
Y3lGdW5jdGlvbikgb3ZlcnJpZGUgeyB9CkBAIC0zODQsNyArMzg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCkgb3ZlcnJpZGUg
eyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVm
IGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25z
ZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVzcG9u
c2U7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKQEAgLTQ5
MiwxMSArNDkyLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBOU1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwqKSBvdmVycmlkZSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdt
ZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+PiYpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH07CisgICAgdmlydHVh
bCBOU1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwqKSBvdmVycmlkZSB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50
RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+PiYpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH07CiAgICAgdmly
dHVhbCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUg
eyB9OwotICAgIHZpcnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIE5TVVJMICpjYW5vbmljYWxpemVVUkxTdHJpbmco
TlNTdHJpbmcqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU1VSTCAqY2Fu
b25pY2FsaXplVVJMKE5TVVJMKikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0cmluZyopIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTU0OSw3ICs1
NDksNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCiAg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoc3Rk
Ojp1bmlxdWVfcHRyPENvbnRleHRNZW51Pikgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZpcnR1YWwg
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29u
dGV4dE1lbnUqKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbiBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSop
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXh0TWVu
dSopIG92ZXJyaWRlIHsgfQogCkBAIC01OTUsNyArNTk1LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAg
ICB2aXJ0dWFsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChJ
bnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
SW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNv
bnRyb2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lk
IGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0KCkgb3ZlcnJpZGUgeyB9CkBAIC02MTEsMTQgKzYxMSwxNCBAQCBwdWJsaWM6CiBj
bGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNv
bnRyb2xsZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIERldmljZU1vdGlvbkRhdGEqIGxh
c3RNb3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBEZXZp
Y2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0
cjsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkg
b3ZlcnJpZGUgeyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU9yaWVudGF0aW9uQ2xpZW50IDog
cHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZSB7
IH0KLSAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRp
b25EYXRhKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlIHsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERp
cmVjdG9yeVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeVBhcnNlci5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUyLDcg
KzExNTIsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIqCiAgICAg
ICAgCiAgICAgICAgICAgaWYgKCFzdGF0ZS5ub3cpCiAgICAgICAgICAgewotICAgICAgICAgICAg
dGltZV90IG5vdyA9IHRpbWUoTlVMTCk7CisgICAgICAgICAgICB0aW1lX3Qgbm93ID0gdGltZShu
dWxscHRyKTsKICAgICAgICAgICAgIHN0YXRlLm5vdyA9IG5vdyAqIDEwMDAwMDAuMDsKIAogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcKQEAgLTE2
MTcsNyArMTYxNyw3IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hhcioK
ICAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2kocCszKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLm5vdykKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKKyAgICAgICAgICAgICAgICAg
IHRpbWVfdCBub3cgPSB0aW1lKG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgc3RhdGUubm93
ID0gbm93ICogMTAwMDAwMC4wOwogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBjb2RlIGhhcyB0aGUgeWVhciAyMDM4IGJ1ZwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaAkocmV2aXNpb24gMTkwMzQzKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjcsOSArMTI3LDkgQEAgc3RydWN0IExpc3RSZXN1bHQKICAgICB7CiAgICAgICAg
IHZhbGlkID0gZmFsc2U7CiAgICAgICAgIHR5cGUgPSBGVFBKdW5rRW50cnk7Ci0gICAgICAgIGZp
bGVuYW1lID0gMDsKKyAgICAgICAgZmlsZW5hbWUgPSBudWxscHRyOwogICAgICAgICBmaWxlbmFt
ZUxlbmd0aCA9IDA7Ci0gICAgICAgIGxpbmtuYW1lID0gMDsKKyAgICAgICAgbGlua25hbWUgPSBu
dWxscHRyOwogICAgICAgICBsaW5rbmFtZUxlbmd0aCA9IDA7CiAgICAgICAgIGZpbGVTaXplLnRy
dW5jYXRlKDApOwogICAgICAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1OCw3ICsxNTgsNyBAQCBSZWY8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVh
CiB7CiAgICAgQVNTRVJUKGZvcm0pOwogCi0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogc3Vi
bWl0QnV0dG9uID0gMDsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBzdWJtaXRCdXR0b24g
PSBudWxscHRyOwogICAgIGlmIChldmVudCAmJiBldmVudC0+dGFyZ2V0KCkpIHsKICAgICAgICAg
Zm9yIChOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KCpub2RlKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvYwogCiAgICAgLy8gRG8gbm90IGRyb3AgdGhlIGRvY3Vt
ZW50IGJlZm9yZSB0aGUgU2NyaXB0Q29udHJvbGxlciBhbmQgdmlldyBhcmUgY2xlYXJlZAogICAg
IC8vIGFzIHNvbWUgZGVzdHJ1Y3RvcnMgbWlnaHQgc3RpbGwgdHJ5IHRvIGFjY2VzcyB0aGUgZG9j
dW1lbnQuCi0gICAgbV9mcmFtZS5zZXREb2N1bWVudCgwKTsKKyAgICBtX2ZyYW1lLnNldERvY3Vt
ZW50KG51bGxwdHIpOwogCiAgICAgc3ViZnJhbWVMb2FkZXIoKS5jbGVhcigpOwogCkBAIC0xNjIw
LDcgKzE2MjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByCiAg
ICAgLy8gSWYgbm8gbmV3IGxvYWQgaXMgaW4gcHJvZ3Jlc3MsIHdlIHNob3VsZCBjbGVhciB0aGUg
cHJvdmlzaW9uYWwgaXRlbSBmcm9tIGhpc3RvcnkKICAgICAvLyBiZWZvcmUgd2UgY2FsbCBzdG9w
TG9hZGluZy4KICAgICBpZiAoY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgPT0gU2hvdWxkQ2xl
YXJQcm92aXNpb25hbEl0ZW0pCi0gICAgICAgIGhpc3RvcnkoKS5zZXRQcm92aXNpb25hbEl0ZW0o
MCk7CisgICAgICAgIGhpc3RvcnkoKS5zZXRQcm92aXNpb25hbEl0ZW0obnVsbHB0cik7CiAKICAg
ICBmb3IgKFJlZlB0cjxGcmFtZT4gY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hp
bGQtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KTsK
QEAgLTE2MjksNyArMTYyOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENs
ZWFyUHIKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbV9kb2N1bWVudExvYWRl
ci0+c3RvcExvYWRpbmcoKTsKIAotICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoMCk7
CisgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihudWxscHRyKTsKIAogICAgIG1fY2hl
Y2tUaW1lci5zdG9wKCk7CiAKQEAgLTE3NDIsNyArMTc0Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnNldFN0YXRlKEZyYW1lU3RhdGUgbmUKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNp
b25hbExvYWQoKQogewotICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoMCk7CisgICAg
c2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBtX3Byb2dyZXNzVHJh
Y2tlci0+cHJvZ3Jlc3NDb21wbGV0ZWQoKTsKICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlQ29tcGxl
dGUpOwogfQpAQCAtMTkwNiw3ICsxOTA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkKAogICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5zdG9wTG9hZGluZ1BsdWdJ
bnMoKTsKIAogICAgIHNldERvY3VtZW50TG9hZGVyKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
ci5nZXQoKSk7Ci0gICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigwKTsKKyAgICBzZXRQ
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKG51bGxwdHIpOwogCiAgICAgaWYgKHBkbCAhPSBtX2Rv
Y3VtZW50TG9hZGVyKSB7CiAgICAgICAgIEFTU0VSVChtX3N0YXRlID09IEZyYW1lU3RhdGVDb21w
bGV0ZSk7CkBAIC0yNDMyLDcgKzI0MzIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZUFuZFJl
bW92ZUNoaWxkKEZyCiB7CiAgICAgY2hpbGQtPnRyZWUoKS5kZXRhY2hGcm9tUGFyZW50KCk7CiAK
LSAgICBjaGlsZC0+c2V0VmlldygwKTsKKyAgICBjaGlsZC0+c2V0VmlldyhudWxscHRyKTsKICAg
ICBpZiAoY2hpbGQtPm93bmVyRWxlbWVudCgpICYmIGNoaWxkLT5wYWdlKCkpCiAgICAgICAgIGNo
aWxkLT5wYWdlKCktPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKICAgICBjaGlsZC0+d2lsbERl
dGFjaFBhZ2UoKTsKQEAgLTI1MTUsNyArMjUxNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFj
aEZyb21QYXJlbnQoKQogICAgICAgICBwYXJlbnQtPmxvYWRlcigpLmNsb3NlQW5kUmVtb3ZlQ2hp
bGQoJm1fZnJhbWUpOwogICAgICAgICBwYXJlbnQtPmxvYWRlcigpLnNjaGVkdWxlQ2hlY2tDb21w
bGV0ZWQoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ZyYW1lLnNldFZpZXcoMCk7CisgICAg
ICAgIG1fZnJhbWUuc2V0VmlldyhudWxscHRyKTsKICAgICAgICAgbV9mcmFtZS53aWxsRGV0YWNo
UGFnZSgpOwogICAgICAgICBtX2ZyYW1lLmRldGFjaEZyb21QYWdlKCk7CiAgICAgfQpAQCAtMjUy
NCw3ICsyNTI0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoRnJvbVBhcmVudCgpCiB2b2lk
IEZyYW1lTG9hZGVyOjpkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVyKCkKIHsKICAgICBtX2Ns
aWVudC5kZXRhY2hlZEZyb21QYXJlbnQyKCk7Ci0gICAgc2V0RG9jdW1lbnRMb2FkZXIoMCk7Cisg
ICAgc2V0RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAgICAgbV9jbGllbnQuZGV0YWNoZWRGcm9t
UGFyZW50MygpOwogfQogICAgIApAQCAtMjc4Niw3ICsyNzg2LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29udGludWVGcmFnbWVudFNjcm9sbAogICAgIC8vIElmIHdlIGhhdmUgYSBwcm92aXNpb25h
bCByZXF1ZXN0IGZvciBhIGRpZmZlcmVudCBkb2N1bWVudCwgYSBmcmFnbWVudCBzY3JvbGwgc2hv
dWxkIGNhbmNlbCBpdC4KICAgICBpZiAobV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyICYmICFl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
ci0+cmVxdWVzdCgpLnVybCgpLCByZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBtX3Byb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXItPnN0b3BMb2FkaW5nKCk7Ci0gICAgICAgIHNldFByb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXIoMCk7CisgICAgICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIo
bnVsbHB0cik7CiAgICAgfQogCiAgICAgYm9vbCBpc1JlZGlyZWN0ID0gbV9xdWlja1JlZGlyZWN0
Q29taW5nIHx8IHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDsKQEAgLTI5NTQsNyArMjk1NCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWcKICAgICAgICAgaWYgKG1fcXVp
Y2tSZWRpcmVjdENvbWluZykKICAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JG
aW5pc2hlZChmYWxzZSk7CiAKLSAgICAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIoMCk7Cisg
ICAgICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG51bGxwdHIpOwogCiAgICAgICAgIC8vIElm
IHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QgY2FtZSBmcm9tIHRoZSBiYWNrL2ZvcndhcmQgbWVudSwg
YW5kIHdlIHB1bnQgb24gaXQsIHdlIGhhdmUgdGhlIAogICAgICAgICAvLyBwcm9ibGVtIHRoYXQg
d2UgaGF2ZSBvcHRpbWlzdGljYWxseSBtb3ZlZCB0aGUgYi9mIGN1cnNvciBhbHJlYWR5LCBzbyBt
b3ZlIGl0IGJhY2suICBGb3Igc2FuaXR5LCAKQEAgLTI5ODMsNyArMjk4Myw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWcKICAgICBtX2xvYWRUeXBlID0gdHlwZTsK
ICAgICBzZXRTdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpOwogCi0gICAgc2V0UG9saWN5RG9j
dW1lbnRMb2FkZXIoMCk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAK
ICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpKSB7CiAgICAgICAgIGF1dG8mIGRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbV9mcmFtZS5tYWluRnJhbWUoKS5kaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlz
aW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAgcHVibGljOgogCiAgICAgRnJhbWVMb2FkZXJT
dGF0ZU1hY2hpbmUmIHN0YXRlTWFjaGluZSgpIHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZSogZmluZEZyYW1lRm9yTmF2aWdhdGlvbihjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IDApOworICAgIFdF
QkNPUkVfRVhQT1JUIEZyYW1lKiBmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgRG9jdW1lbnQqIGFjdGl2ZURvY3VtZW50ID0gbnVsbHB0cik7CiAKICAgICB2
b2lkIGFwcGx5VXNlckFnZW50KFJlc291cmNlUmVxdWVzdCYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDE5MDM0
MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgRnJhbWVOZXR3b3JraW5nQ29udGV4
dCA6IHB1YmxpYyBOZQogcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgewotICAg
ICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qo
KSBjb25zdCBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNyArODczLDcgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhcwogICAgICAgICBtX2N1cnJl
bnRJdGVtLT5zZXRVUkxTdHJpbmcodXJsU3RyaW5nKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRU
aXRsZSh0aXRsZSk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmpl
Y3QpOwotICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1EYXRhKDApOworICAgIG1fY3VycmVudEl0
ZW0tPnNldEZvcm1EYXRhKG51bGxwdHIpOwogICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1Db250
ZW50VHlwZShTdHJpbmcoKSk7CiAKICAgICBpZiAobV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBhZ2VJ
c0JlaW5nRGlzbWlzc2VkKAogCiBJbWFnZUxvYWRlcjo6SW1hZ2VMb2FkZXIoRWxlbWVudCYgZWxl
bWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9pbWFnZSgwKQorICAgICwg
bV9pbWFnZShudWxscHRyKQogICAgICwgbV9kZXJlZkVsZW1lbnRUaW1lcigqdGhpcywgJkltYWdl
TG9hZGVyOjp0aW1lckZpcmVkKQogICAgICwgbV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KGZh
bHNlKQogICAgICwgbV9oYXNQZW5kaW5nTG9hZEV2ZW50KGZhbHNlKQpAQCAtMTcwLDcgKzE3MCw3
IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogICAgIC8vIERvIG5v
dCBsb2FkIGFueSBpbWFnZSBpZiB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgaWYg
aXQgaXMKICAgICAvLyBhbiBlbXB0eSBzdHJpbmcuCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkSW1hZ2U+IG5ld0ltYWdlID0gMDsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRJbWFnZT4gbmV3SW1hZ2UgPSBudWxscHRyOwogICAgIGlmICghYXR0ci5pc051bGwoKSAmJiAh
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpLmlzRW1wdHkoKSkgewogICAg
ICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgICAgIG9wdGlvbnMuc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbihlbGVtZW50KCkuaXNJblVzZXJBZ2VudFNoYWRv
d1RyZWUoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVj
ayA6IENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2spOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3
IEBAIGJvb2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmlzRG9uZSgKIAogdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiB7Ci0gICAgbV9jbGll
bnQgPSAwOworICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKICAgICBSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkTm90aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKiA9IDApOworICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciog
PSBudWxscHRyKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5p
c2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3Vi
bGUgZmluaXNoVGltZSk7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFNjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb24qIAogUmVzb3VyY2VMb2FkU2NoZWR1bGVy
KiByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgc3RhdGljIFJlc291cmNlTG9hZFNjaGVkdWxlciogZ2xvYmFsU2NoZWR1bGVyID0gMDsK
KyAgICBzdGF0aWMgUmVzb3VyY2VMb2FkU2NoZWR1bGVyKiBnbG9iYWxTY2hlZHVsZXIgPSBudWxs
cHRyOwogICAgIAogICAgIGlmICghZ2xvYmFsU2NoZWR1bGVyKSB7CiAgICAgICAgIHN0YXRpYyBi
b29sIGlzQ2FsbGluZ091dFRvU3RyYXRlZ3kgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJj
ZXMKICAgICBpZiAobV9zdGF0ZSAhPSBVbmluaXRpYWxpemVkKQogI2VuZGlmCiAgICAgICAgIG1f
cmVzb3VyY2UtPmNsZWFyTG9hZGVyKCk7Ci0gICAgbV9yZXNvdXJjZSA9IDA7CisgICAgbV9yZXNv
dXJjZSA9IG51bGxwdHI7CiAgICAgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVy
LmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDcgQEAgVGV4dFJl
c291cmNlRGVjb2Rlcjo6VGV4dFJlc291cmNlRGVjb2RlcgogICAgIDogbV9jb250ZW50VHlwZShk
ZXRlcm1pbmVDb250ZW50VHlwZShtaW1lVHlwZSkpCiAgICAgLCBtX2VuY29kaW5nKGRlZmF1bHRF
bmNvZGluZyhtX2NvbnRlbnRUeXBlLCBzcGVjaWZpZWREZWZhdWx0RW5jb2RpbmcpKQogICAgICwg
bV9zb3VyY2UoRGVmYXVsdEVuY29kaW5nKQotICAgICwgbV9oaW50RW5jb2RpbmcoMCkKKyAgICAs
IG1faGludEVuY29kaW5nKG51bGxwdHIpCiAgICAgLCBtX2NoZWNrZWRGb3JCT00oZmFsc2UpCiAg
ICAgLCBtX2NoZWNrZWRGb3JDU1NDaGFyc2V0KGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9ySGVh
ZENoYXJzZXQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAkocmV2aXNpb24gMTkwMzQzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDbGllbnQo
KQogICAgIHsKICAgICAgICAgbV9kb25lID0gdHJ1ZTsKLSAgICAgICAgbV9jbGllbnQgPSAwOwor
ICAgICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgYm9vbCBkb25lKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZS5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCAr
NDMsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZmFsbGJhY2tVUkxMb25nZXJUaGFuCiB9CiAKIEFw
cGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGUoKQotICAgIDogbV9ncm91cCgwKQotICAg
ICwgbV9tYW5pZmVzdCgwKQorICAgIDogbV9ncm91cChudWxscHRyKQorICAgICwgbV9tYW5pZmVz
dChudWxscHRyKQogICAgICwgbV9lc3RpbWF0ZWRTaXplSW5TdG9yYWdlKDApCiAgICAgLCBtX3N0
b3JhZ2VJRCgwKQogewpAQCAtMTM2LDcgKzEzNiw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogQXBwbGljYXRpb25DYWMKIHsKICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgSFRUUC9IVFRQ
UyBHRVQgcmVxdWVzdHMuCiAgICAgaWYgKCFyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChyZXF1ZXN0
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVVJM
IHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5oCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RmFsbGJhY2tVUkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVj
dG9yJik7CiAgICAgY29uc3QgRmFsbGJhY2tVUkxWZWN0b3ImIGZhbGxiYWNrVVJMcygpIGNvbnN0
IHsgcmV0dXJuIG1fZmFsbGJhY2tVUkxzOyB9Ci0gICAgYm9vbCB1cmxNYXRjaGVzRmFsbGJhY2tO
YW1lc3BhY2UoY29uc3QgVVJMJiwgVVJMKiBmYWxsYmFja1VSTCA9IDApOworICAgIGJvb2wgdXJs
TWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYsIFVSTCogZmFsbGJhY2tVUkwgPSBu
dWxscHRyKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlRwogICAg
ICwgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCgwKQogICAg
ICwgbV9wcm9ncmVzc1RvdGFsKDApCiAgICAgLCBtX3Byb2dyZXNzRG9uZSgwKQotICAgICwgbV9m
cmFtZSgwKQorICAgICwgbV9mcmFtZShudWxscHRyKQogICAgICwgbV9zdG9yYWdlSUQoMCkKICAg
ICAsIG1faXNPYnNvbGV0ZShmYWxzZSkKICAgICAsIG1fY29tcGxldGlvblR5cGUoTm9uZSkKQEAg
LTEwNCw3ICsxMDQsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
CiBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVG
b3JNYWluUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlcikKIHsKICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVl
c3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBVUkwgdXJsKHJlcXVlc3QudXJsKCkpOwogICAgIGlmICh1
cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCkBAIC0xMjEsNyArMTIxLDcgQEAgQXBwbGljYXRp
b25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOgogICAgICAgICByZXR1cm4gZ3JvdXAtPm5l
d2VzdENhY2hlKCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VVJMKQpAQCAtMjUwLDcgKzI1MCw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWQKICAgICAgICAgLy8gQ2Fj
aGUgdXBkYXRlIGhhcyBiZWVuIGEgZmFpbHVyZSwgc28gdGhlcmUgaXMgbm8gcmVhc29uIHRvIGtl
ZXAgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5jb21wbGV0ZSBjYWNoZQogICAg
ICAgICAvLyAoaXRzIG1haW4gcmVzb3VyY2Ugd2FzIG5vdCBjYWNoZWQgeWV0LCBzbyBpdCBpcyBs
aWtlbHkgdGhhdCB0aGUgYXBwbGljYXRpb24gY2hhbmdlZCBzaWduaWZpY2FudGx5IHNlcnZlci1z
aWRlKS4KICAgICAgICAgQVNTRVJUKCFtX2NhY2hlQmVpbmdVcGRhdGVkKTsgLy8gQWxyZWFkeSBj
bGVhcmVkIG91dCBieSBzdG9wTG9hZGluZygpLgotICAgICAgICBsb2FkZXItPmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCktPnNldEFwcGxpY2F0aW9uQ2FjaGUoMCk7IC8vIFdpbGwgdW5zZXQgY2FuZGlk
YXRlLCB0b28uCisgICAgICAgIGxvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+c2V0QXBw
bGljYXRpb25DYWNoZShudWxscHRyKTsgLy8gV2lsbCB1bnNldCBjYW5kaWRhdGUsIHRvby4KICAg
ICAgICAgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLnJlbW92ZShsb2FkZXIpOwogICAgICAg
ICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVOVCwgbG9h
ZGVyKTsKICAgICAgICAgYnJlYWs7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmZhaWxlZExvYWRpbgogICAgICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1Vw
ZGF0ZWQpOyAvLyBBbHJlYWR5IGNsZWFyZWQgb3V0IGJ5IHN0b3BMb2FkaW5nKCkuCiAgICAgICAg
IEFTU0VSVCghbG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hl
KCkgfHwgbG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hlKCkt
Pmdyb3VwKCkgPT0gdGhpcyk7CiAKLSAgICAgICAgbG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLT5zZXRBcHBsaWNhdGlvbkNhY2hlKDApOyAvLyBXaWxsIHVuc2V0IGNhbmRpZGF0ZSwgdG9v
LgorICAgICAgICBsb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPnNldEFwcGxpY2F0aW9u
Q2FjaGUobnVsbHB0cik7IC8vIFdpbGwgdW5zZXQgY2FuZGlkYXRlLCB0b28uCiAgICAgICAgIG1f
YXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5yZW1vdmUobG9hZGVyKTsKICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZFTlQsIGxvYWRlcik7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpmYWlsZWRMb2FkaW4KICAgICAgICAgQVNTRVJUKGxvYWRlci0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpID09IG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwogICAg
ICAgICBBU1NFUlQoIWxvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+Y2FuZGlkYXRlQXBw
bGljYXRpb25DYWNoZUdyb3VwKCkpOwogICAgICAgICBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRl
cnMucmVtb3ZlKGxvYWRlcik7Ci0gICAgICAgIGxvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS0+c2V0QXBwbGljYXRpb25DYWNoZSgwKTsKKyAgICAgICAgbG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5zZXRBcHBsaWNhdGlvbkNhY2hlKG51bGxwdHIpOwogCiAgICAgICAgIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBsb2FkZXIpOwog
CkBAIC04MTYsMTMgKzgxNiwxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bWFuaWZl
c3ROb3RGCiAgICAgICAgIAogICAgICAgICBBU1NFUlQoKCppdCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPmNhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cCgpID09IHRoaXMpOwogICAgICAg
ICBBU1NFUlQoISgqaXQpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hl
KCkpOwotICAgICAgICAoKml0KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+c2V0Q2FuZGlkYXRl
QXBwbGljYXRpb25DYWNoZUdyb3VwKDApOworICAgICAgICAoKml0KS0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS0+c2V0Q2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKG51bGxwdHIpOwogICAg
ICAgICBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMucmVtb3ZlKGl0KTsKICAgICB9CiAK
ICAgICBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50ID0gMDsK
ICAgICBzZXRVcGRhdGVTdGF0dXMoSWRsZSk7ICAgIAotICAgIG1fZnJhbWUgPSAwOworICAgIG1f
ZnJhbWUgPSBudWxscHRyOwogICAgIAogICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgQVNTRVJUKG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycy5pc0VtcHR5KCkpOwpAQCAt
OTU5LDcgKzk1OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZEkK
ICAgICBtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuY2xlYXIoKTsKICAgICBtX2NvbXBs
ZXRpb25UeXBlID0gTm9uZTsKICAgICBzZXRVcGRhdGVTdGF0dXMoSWRsZSk7Ci0gICAgbV9mcmFt
ZSA9IDA7CisgICAgbV9mcmFtZSA9IG51bGxwdHI7CiAgICAgbV9hdmFpbGFibGVTcGFjZUluUXVv
dGEgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6dW5rbm93blF1b3RhKCk7CiAgICAgbV9jYWxs
ZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplID0gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJ
KHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0NiwxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6QXBwbGljYXRpb25D
YWNoZUhvc3QoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQotICAgIDogbV9kb21BcHBs
aWNhdGlvbkNhY2hlKDApCisgICAgOiBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUobnVsbHB0cikKICAg
ICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX2RlZmVyc0V2ZW50
cyh0cnVlKQotICAgICwgbV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoMCkKKyAgICAs
IG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKG51bGxwdHIpCiB7CiB9CiAKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRBcHBsaWNhdGlvCiB7
CiAgICAgaWYgKG1fY2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKSB7CiAgICAgICAgIEFT
U0VSVCghbV9hcHBsaWNhdGlvbkNhY2hlKTsKLSAgICAgICAgbV9jYW5kaWRhdGVBcHBsaWNhdGlv
bkNhY2hlR3JvdXAgPSAwOworICAgICAgICBtX2NhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91
cCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlID0gYXBwbGljYXRp
b25DYWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FjaGVJ
bmZvIGFwcGxpY2F0aW9uQ2FjaGVJbmZvKCk7CiAKICAgICAgICAgYm9vbCBzaG91bGRMb2FkUmVz
b3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UqJik7Ci0gICAgICAgIGJvb2wgZ2V0QXBwbGljYXRpb25DYWNoZUZh
bGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiYsIEFwcGxpY2F0aW9uQ2FjaGUqID0gMCk7CisgICAgICAgIGJvb2wgZ2V0QXBwbGlj
YXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiYsIEFwcGxpY2F0aW9uQ2FjaGUqID0gbnVsbHB0cik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBib29sIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsKQEAg
LTE3Myw3ICsxNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTsKIAotICAgICAgICBib29sIHNjaGVkdWxlTG9hZEZhbGxiYWNrUmVzb3Vy
Y2VGcm9tQXBwbGljYXRpb25DYWNoZShSZXNvdXJjZUxvYWRlciosIEFwcGxpY2F0aW9uQ2FjaGUq
ID0gMCk7CisgICAgICAgIGJvb2wgc2NoZWR1bGVMb2FkRmFsbGJhY2tSZXNvdXJjZUZyb21BcHBs
aWNhdGlvbkNhY2hlKFJlc291cmNlTG9hZGVyKiwgQXBwbGljYXRpb25DYWNoZSogPSBudWxscHRy
KTsKICAgICAgICAgdm9pZCBzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBncm91cCk7CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
Y2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9jYW5kaWRh
dGVBcHBsaWNhdGlvbkNhY2hlR3JvdXA7IH0KICAgICAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNh
Y2hlKFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gYXBwbGljYXRpb25DYWNoZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOiAgCiBwcml2YXRlOgogICAgIGNsYXNzIFJlY29y
ZCB7CiAgICAgcHVibGljOgotICAgICAgICBSZWNvcmQoKSA6IG1fcmVzb3VyY2UoMCksIG1fc3Rv
cmFnZUlEKDApIHsgfQorICAgICAgICBSZWNvcmQoKSA6IG1fcmVzb3VyY2UobnVsbHB0ciksIG1f
c3RvcmFnZUlEKDApIHsgfQogICAgICAgICBSZWNvcmQoVCogcmVzb3VyY2UsIHVuc2lnbmVkIHN0
b3JhZ2VJRCkgOiBtX3Jlc291cmNlKHJlc291cmNlKSwgbV9zdG9yYWdlSUQoc3RvcmFnZUlEKSB7
IH0KIAogICAgICAgICB2b2lkIHJlc3RvcmUoKQpAQCAtMTAyLDI4ICsxMDIsMjggQEAgQXBwbGlj
YXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogCiAgICAgb3BlbkRhdGFiYXNlKGZh
bHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgIlNFTEVDVCBpZCwgbWFuaWZlc3RVUkwsIG5ld2VzdENhY2hlIEZST00gQ2Fj
aGVHcm91cHMgV0hFUkUgbmV3ZXN0Q2FjaGUgSVMgTk9UIE5VTEwgQU5EIG1hbmlmZXN0VVJMPT8i
KTsKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBzdGF0ZW1lbnQuYmlu
ZFRleHQoMSwgbWFuaWZlc3RVUkwpOwogICAgCiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5z
dGVwKCk7CiAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRF
X1JPVykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIGdyb3VwLCBl
cnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBu
ZXdlc3RDYWNoZVN0b3JhZ2VJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50NjQoMikpOwogCiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0g
bG9hZENhY2hlKG5ld2VzdENhY2hlU3RvcmFnZUlEKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAogICAgIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBuZXcgQXBwbGljYXRpb25DYWNoZUdyb3VwKCp0aGlz
LCBtYW5pZmVzdFVSTCk7CiAgICAgICAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgCiAgICAgLy8gSGFzaCB0aGUgaG9zdCBu
YW1lIGFuZCBzZWUgaWYgdGhlcmUncyBhIG1hbmlmZXN0IHdpdGggdGhlIHNhbWUgaG9zdC4KICAg
ICBpZiAoIW1fY2FjaGVIb3N0U2V0LmNvbnRhaW5zKHVybEhvc3RIYXNoKHVybCkpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBDaGVjayBpZiBh
IGNhY2hlIGFscmVhZHkgZXhpc3RzIGluIG1lbW9yeS4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGdy
b3VwIDogbV9jYWNoZXNJbk1lbW9yeS52YWx1ZXMoKSkgewpAQCAtMjE3LDE0ICsyMTcsMTQgQEAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIH0KICAgICAKICAg
ICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCiAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNz
QXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCiAgICAgLy8gQ2hlY2sgdGhlIGRhdGFi
YXNlLiBMb29rIGZvciBhbGwgY2FjaGUgZ3JvdXBzIHdpdGggYSBuZXdlc3QgY2FjaGUuCiAgICAg
U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGlkLCBtYW5pZmVz
dFVSTCwgbmV3ZXN0Q2FjaGUgRlJPTSBDYWNoZUdyb3VwcyBXSEVSRSBuZXdlc3RDYWNoZSBJUyBO
T1QgTlVMTCIpOwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGludCBy
ZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVf
Uk9XKSB7CkBAIC0yNjIsNyArMjYyLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlUwogICAgIGlmIChyZXN1bHQgIT0gU1FMSVRFX0RPTkUpCiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGxvYWQgY2FjaGUgZ3JvdXAsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwogICAgIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCkBAIC0yODgsMTIgKzI4
OCwxMiBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTCiAgICAgfQog
ICAgIAogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICAvLyBDaGVjayB0aGUgZGF0YWJh
c2UuIExvb2sgZm9yIGFsbCBjYWNoZSBncm91cHMgd2l0aCBhIG5ld2VzdCBjYWNoZS4KICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaWQsIG1hbmlmZXN0
VVJMLCBuZXdlc3RDYWNoZSBGUk9NIENhY2hlR3JvdXBzIFdIRVJFIG5ld2VzdENhY2hlIElTIE5P
VCBOVUxMIik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgaW50IHJl
c3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9S
T1cpIHsKQEAgLTMzMiw3ICszMzIsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0
aW9uQ2FjaGVTCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxJVEVfRE9ORSkKICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBncm91cCwgZXJyb3IgXCIlc1wiIiwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95
ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKQEAgLTExMjIsNyArMTEyMiw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb24KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIklOTkVSIEpPSU4gQ2FjaGVSZXNvdXJjZURhdGEgT04gQ2FjaGVS
ZXNvdXJjZURhdGEuaWQ9Q2FjaGVSZXNvdXJjZXMuZGF0YSBXSEVSRSBDYWNoZUVudHJpZXMuY2Fj
aGU9PyIpOwogICAgIGlmIChjYWNoZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHByZXBhcmUgY2FjaGUgc3RhdGVtZW50LCBl
cnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBjYWNoZVN0YXRl
bWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKQEAgLTExODEsNyArMTE4MSw3IEBAIFBhc3NS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb24KICAgICAvLyBMb2FkIHRoZSBvbmxp
bmUgd2hpdGVsaXN0CiAgICAgU1FMaXRlU3RhdGVtZW50IHdoaXRlbGlzdFN0YXRlbWVudChtX2Rh
dGFiYXNlLCAiU0VMRUNUIHVybCBGUk9NIENhY2hlV2hpdGVsaXN0VVJMcyBXSEVSRSBjYWNoZT0/
Iik7CiAgICAgaWYgKHdoaXRlbGlzdFN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgd2hpdGVsaXN0
U3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBzdG9yYWdlSUQpOwogICAgIAogICAgIFZlY3RvcjxVUkw+
IHdoaXRlbGlzdDsKQEAgLTExOTYsNyArMTE5Niw3IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25D
YWNoZT4gQXBwbGljYXRpb24KICAgICAvLyBMb2FkIG9ubGluZSB3aGl0ZWxpc3Qgd2lsZGNhcmQg
ZmxhZy4KICAgICBTUUxpdGVTdGF0ZW1lbnQgd2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgIlNFTEVDVCB3aWxkY2FyZCBGUk9NIENhY2hlQWxsb3dzQWxsTmV0d29ya1JlcXVl
c3RzIFdIRVJFIGNhY2hlPT8iKTsKICAgICBpZiAod2hpdGVsaXN0V2lsZGNhcmRTdGF0ZW1lbnQu
cHJlcGFyZSgpICE9IFNRTElURV9PSykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBz
dG9yYWdlSUQpOwogICAgIAogICAgIHJlc3VsdCA9IHdoaXRlbGlzdFdpbGRjYXJkU3RhdGVtZW50
LnN0ZXAoKTsKQEAgLTEyMTEsNyArMTIxMSw3IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb24KICAgICAvLyBMb2FkIGZhbGxiYWNrIFVSTHMuCiAgICAgU1FMaXRlU3Rh
dGVtZW50IGZhbGxiYWNrU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgbmFtZXNwYWNlLCBm
YWxsYmFja1VSTCBGUk9NIEZhbGxiYWNrVVJMcyBXSEVSRSBjYWNoZT0/Iik7CiAgICAgaWYgKGZh
bGxiYWNrU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBmYWxsYmFja1N0YXRlbWVudC5iaW5kSW50
NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VS
THM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgRE9NQXBwbGljYXRpb25DYWNoZTo6RE9NQXBwbGljYXRpb25DYWNo
ZQogdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpkaXNjb25uZWN0RnJhbWVGb3JQYWdlQ2FjaGUo
KQogewogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0gYXBwbGljYXRp
b25DYWNoZUhvc3QoKSkKLSAgICAgICAgY2FjaGVIb3N0LT5zZXRET01BcHBsaWNhdGlvbkNhY2hl
KDApOworICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUobnVsbHB0cik7
CiAgICAgRE9NV2luZG93UHJvcGVydHk6OmRpc2Nvbm5lY3RGcmFtZUZvclBhZ2VDYWNoZSgpOwog
fQogCkBAIC02MywxNCArNjMsMTQgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpyZWNvbm5l
Y3RGcmFtZQogdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjp3aWxsRGVzdHJveUdsb2JhbE9iamVj
dEluRnJhbWUoKQogewogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlSG9zdCogY2FjaGVIb3N0ID0g
YXBwbGljYXRpb25DYWNoZUhvc3QoKSkKLSAgICAgICAgY2FjaGVIb3N0LT5zZXRET01BcHBsaWNh
dGlvbkNhY2hlKDApOworICAgICAgICBjYWNoZUhvc3QtPnNldERPTUFwcGxpY2F0aW9uQ2FjaGUo
bnVsbHB0cik7CiAgICAgRE9NV2luZG93UHJvcGVydHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0
SW5GcmFtZSgpOwogfQogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdCogRE9NQXBwbGljYXRpb25DYWNo
ZTo6YXBwbGljYXRpb25DYWNoZUhvc3QoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSB8fCAh
bV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwogfQogCkBAIC0xMDcsNyArMTA3
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRE9NQXBwbGljYXRpb25DYQogewogICAgIGlm
IChtX2ZyYW1lKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJ
RCBpZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBA
QCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNaW1lVHlwZShjCiBQYXNzUmVmUHRyPEFy
Y2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiogZnVuY3Rpb24gPSBtaW1lVHlwZS5pc0VtcHR5KCkgPyAwIDogYXJjaGl2ZU1JTUVU
eXBlcygpLmdldChtaW1lVHlwZSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uID8gZnVuY3Rpb24odXJs
LCBkYXRhKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uID8g
ZnVuY3Rpb24odXJsLCBkYXRhKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4obnVsbHB0cik7CiB9CiAK
IHZvaWQgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3RpCiB7CiAgICAgQXJjaGl2ZVJlc291cmNlKiByZXNvdXJjZSA9IG1fc3VicmVzb3Vy
Y2VzLmdldCh1cmwpOwogICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2gKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNo
aXZlUmVzb3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVzb3VyY2UgVVJMIGlzIGludmFs
aWQgLSByZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyBGcmFtZU5hbWUgc2hvdWxk
IGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMsIGJ1dCBhbHdheXMgaW5jbHVk
ZWQgZm9yIG1haW4gcmVzb3VyY2VzCkBAIC0xMjksNyArMTI5LDcgQEAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaAogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IG1haW5SZXNvdXJjZURpY3QgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihhcmNo
aXZlLT5tYWluUmVzb3VyY2UoKSwgTWFpblJlc291cmNlKTsKICAgICBBU1NFUlQobWFpblJlc291
cmNlRGljdCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5LCBtYWluUmVzb3Vy
Y2VEaWN0LmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gc3VicmVz
b3VyY2VzQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIGFyY2hpdmUtPnN1
YnJlc291cmNlcygpLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMTc1LDM2
ICsxNzUsMzYgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyYwogewog
ICAgIEFTU0VSVChkaWN0aW9uYXJ5KTsKICAgICBpZiAoIWRpY3Rpb25hcnkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCiAgICAgQ0ZEYXRhUmVm
IHJlc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSkpOwogICAgIGlm
IChyZXNvdXJjZURhdGEgJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VEYXRhKSAhPSBDRkRhdGFHZXRU
eXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVz
b3VyY2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCBy
ZXNvdXJjZSIpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIAogICAgIENGU3RyaW5nUmVmIGZyYW1lTmFtZSA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VGcmFtZU5hbWVLZXkpKTsKICAgICBpZiAoZnJhbWVOYW1lICYmIENGR2V0VHlwZUlE
KGZyYW1lTmFtZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gRnJhbWUgbmFtZSBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgQ0ZTdHJpbmdSZWYgbWlt
ZVR5cGUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXkpKTsKICAgICBpZiAo
bWltZVR5cGUgJiYgQ0ZHZXRUeXBlSUQobWltZVR5cGUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkp
IHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE1JTUUgdHlwZSBp
cyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
CiAgICAgQ0ZTdHJpbmdSZWYgdXJsID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSkp
OwogICAgIGlmICh1cmwgJiYgQ0ZHZXRUeXBlSUQodXJsKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgp
KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBVUkwgaXMgbm90
IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAogICAg
IENGU3RyaW5nUmVmIHRleHRFbmNvZGluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0
RW5jb2RpbmdOYW1lS2V5KSk7CiAgICAgaWYgKHRleHRFbmNvZGluZyAmJiBDRkdldFR5cGVJRCh0
ZXh0RW5jb2RpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFRleHQgZW5jb2RpbmcgaXMgbm90IG9mIHR5cGUgQ0ZT
dHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKQEAgLTIxMywxMyArMjEzLDEzIEBAIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBMZWdhY3lXZWJBcmMKICAgICBpZiAocmVzb3VyY2VSZXNwb25zZURhdGEpIHsKICAgICAg
ICAgaWYgKENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBl
SUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJl
c291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRl
IGludmFsaWQgcmVzb3VyY2UiKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIENGU3RyaW5nUmVm
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYg
Q0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlE
KCkpIHsKICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNv
dXJjZSByZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3Jl
YXRlIGludmFsaWQgcmVzb3VyY2UiKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJlc3BvbnNl
ID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVz
cG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CkBAIC0yMzcsNyArMjM3LDcgQEAg
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcgogewogICAgIEFTU0VSVCht
YWluUmVzb3VyY2UpOwogICAgIGlmICghbWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICBhcmNoaXZlLT5zZXRNYWluUmVzb3VyY2UobWFp
blJlc291cmNlKTsKQEAgLTI2NCwxMyArMjY0LDEzIEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXIKICAgICAgICAgCiAgICAgQVNTRVJUKGRhdGEpOwogICAgIGlmICgh
ZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLT5jcmVhdGVDRkRhdGEo
KTsKICAgICBpZiAoIWNmRGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAKLSAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKKyAgICBDRkVycm9y
UmVmIGVycm9yID0gbnVsbHB0cjsKICAgICAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5
TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRh
YmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewpAQCAtMjgxLDE2ICsyODEsMTYg
QEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcgogI2VuZGlmCiAgICAg
ICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIENGUmVsZWFzZShlcnJvcik7Ci0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgaWYgKENG
R2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBs
aXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICAKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYXJj
aGl2ZS5yZWxlYXNlKCk7CiB9CkBAIC0zODEsNyArMzgxLDcgQEAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gTGVnYWN5V2ViQXJjaGl2ZTo6cgogICAgIEFTU0VSVChwcm9wZXJ0eUxpc3QpOwogICAgIGlm
ICghcHJvcGVydHlMaXN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBGYWlsZWQgdG8gY3JlYXRlIHByb3BlcnR5IGxpc3QgZm9yIGFyY2hpdmUsIHJldHVybmlu
ZyBubyBkYXRhIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZXcml0ZVN0cmVhbVJlZj4gc3RyZWFtID0gYWRvcHRD
RihDRldyaXRlU3RyZWFtQ3JlYXRlV2l0aEFsbG9jYXRlZEJ1ZmZlcnMoMCwgMCkpOwpAQCAtMzk2
LDcgKzM5Niw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OnIKIAog
ICAgIGlmICghcGxpc3REYXRhKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBGYWlsZWQgdG8gY29udmVydCBwcm9wZXJ0eSBsaXN0IGludG8gcmF3IGRhdGEsIHJl
dHVybmluZyBubyBkYXRhIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKICAgICByZXR1cm4gcGxpc3REYXRhOwpAQCAtNDE1LDcgKzQxNSw3IEBA
IFJlc291cmNlUmVzcG9uc2UgTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXQKIFJldGFpblB0cjxDRkRh
dGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9u
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIC8vIEZJWE1FOiBXcml0
ZSBvdXQgdGhlICJuZXciIGZvcm1hdCBkZXNjcmliZWQgaW4gY3JlYXRlUmVzb3VyY2VSZXNwb25z
ZUZyb21Qcm9wZXJ0eUxpc3REYXRhIG9uY2Ugd2UgaW52ZW50IGl0LgotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiAjZW5kaWYKQEAgLTQ1NSw3ICs0NTUsNyBAQCBQYXNz
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyCiAgICAgRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAKICAg
ICBpZiAoIWRvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIAogICAgIFZlY3RvcjxSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+
IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVNYWMubW0JKHJldmlzaW9uIDE5
MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgUmV0YWluUHRyPENGRGF0
YVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6YwogICAgIE5TVVJMUmVzcG9uc2UgKm5zUmVzcG9uc2Ug
PSByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgQVNTRVJUKG5zUmVzcG9uc2UpOwogICAg
IGlmICghbnNSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQ0ZNdXRhYmxlRGF0YVJlZiByZXNwb25zZURhdGEgPSBDRkRhdGFDcmVhdGVN
dXRhYmxlKDAsIDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDE5MDM0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSwxMiArMTExLDEyIEBAIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRN
TEFyY2hpdmU6OmMKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQg
TUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICghU2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIE1IVE1MUGFyc2VyIHBhcnNlcihk
YXRhKTsKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBtYWluQXJjaGl2ZSA9IHBhcnNlci5wYXJz
ZUFyY2hpdmUoKTsKICAgICBpZiAoIW1haW5BcmNoaXZlKQotICAgICAgICByZXR1cm4gMDsgLy8g
SW52YWxpZCBNSFRNTCBmaWxlLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gSW52YWxpZCBN
SFRNTCBmaWxlLgogCiAgICAgLy8gU2luY2UgTUhUTUwgaXMgYSBmbGF0IGZvcm1hdCwgd2UgbmVl
ZCB0byBtYWtlIGFsbCBmcmFtZXMgYXdhcmUgb2YgYWxsIHJlc291cmNlcy4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHBhcnNlci5mcmFtZUNvdW50KCk7ICsraSkgewpAQCAtMTgyLDcgKzE4
Miw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmcKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoIkNvbnRlbnQtVHlwZTogIik7CiAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHJlc291cmNlLm1pbWVUeXBlKTsKIAotICAgICAgICBjb25zdCBjaGFyKiBj
b250ZW50RW5jb2RpbmcgPSAwOworICAgICAgICBjb25zdCBjaGFyKiBjb250ZW50RW5jb2Rpbmcg
PSBudWxscHRyOwogICAgICAgICBpZiAodXNlQmluYXJ5RW5jb2RpbmcpCiAgICAgICAgICAgICBj
b250ZW50RW5jb2RpbmcgPSBiaW5hcnk7CiAgICAgICAgIGVsc2UgaWYgKE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKHJlc291cmNlLm1pbWVUeXBlKSB8fCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUocmVzb3VyY2UubWlt
ZVR5cGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBAIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTFBhcnNlcjo6cGEKIHsK
ICAgICBpZiAoIWhlYWRlcikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwYXJzZSBN
SFRNTCBwYXJ0OiBubyBoZWFkZXIuIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBhcmNoaXZlID0g
TUhUTUxBcmNoaXZlOjpjcmVhdGUoKTsKQEAgLTc2LDcgKzc2LDcgQEAgUGFzc1JlZlB0cjxNSFRN
TEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYQogICAgICAgICBib29sIGVuZE9mQXJjaGl2ZVJlYWNo
ZWQgPSBmYWxzZTsKICAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBw
YXJzZU5leHRQYXJ0KCpoZWFkZXIsIFN0cmluZygpLCBTdHJpbmcoKSwgZW5kT2ZBcmNoaXZlUmVh
Y2hlZCk7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBhcmNoaXZlLT5zZXRNYWluUmVzb3Vy
Y2UocmVzb3VyY2UpOwogICAgICAgICByZXR1cm4gYXJjaGl2ZTsKICAgICB9CkBAIC04OSwxNCAr
ODksMTQgQEAgUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MUGFyc2VyOjpwYQogICAgICAg
ICBSZWZQdHI8TUlNRUhlYWRlcj4gcmVzb3VyY2VIZWFkZXIgPSBNSU1FSGVhZGVyOjpwYXJzZUhl
YWRlcigmbV9saW5lUmVhZGVyKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZUhlYWRlcikgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcGFyc2UgTUhUTUwsIGludmFsaWQgTUlNRSBo
ZWFkZXIuIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUhlYWRlci0+Y29udGVudFR5cGUo
KSA9PSAibXVsdGlwYXJ0L2FsdGVybmF0aXZlIikgewogICAgICAgICAgICAgLy8gSWdub3JlIElF
IG5lc3Rpbmcgd2hpY2ggbWFrZXMgbGl0dGxlIHNlbnNlIChJRSBzZWVtcyB0byBuZXN0IG9ubHkg
c29tZSBvZiB0aGUgZnJhbWVzKS4KICAgICAgICAgICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHN1
YmZyYW1lQXJjaGl2ZSA9IHBhcnNlQXJjaGl2ZVdpdGhIZWFkZXIocmVzb3VyY2VIZWFkZXIuZ2V0
KCkpOwogICAgICAgICAgICAgaWYgKCFzdWJmcmFtZUFyY2hpdmUpIHsKICAgICAgICAgICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBwYXJzZSBNSFRNTCBzdWJmcmFtZS4iKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IHNraXBMaW5lc1Vu
dGlsQm91bmRhcnlGb3VuZChtX2xpbmVSZWFkZXIsIGhlYWRlci0+ZW5kT2ZQYXJ0Qm91bmRhcnko
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVuZE9mUGFydFJlYWNoZWQsIGVuZE9mUGFy
dFJlYWNoZWQpOwpAQCAtMTEwLDcgKzExMCw3IEBAIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBN
SFRNTFBhcnNlcjo6cGEKICAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBwYXJzZU5leHRQYXJ0KCpyZXNvdXJjZUhlYWRlciwgaGVhZGVyLT5lbmRPZlBhcnRCb3VuZGFy
eSgpLCBoZWFkZXItPmVuZE9mRG9jdW1lbnRCb3VuZGFyeSgpLCBlbmRPZkFyY2hpdmUpOwogICAg
ICAgICBpZiAoIXJlc291cmNlKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBw
YXJzZSBNSFRNTCBwYXJ0LiIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBhZGRSZXNvdXJjZVRvQXJjaGl2ZShy
ZXNvdXJjZS5nZXQoKSwgYXJjaGl2ZS5nZXQoKSk7CiAgICAgfQpAQCAtMTQ4LDMxICsxNDgsMzEg
QEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOgogICAgIGlmIChtaW1l
SGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7
CiAgICAgICAgIGlmICghY2hlY2tCb3VuZGFyeSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJC
aW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKLSAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgbV9s
aW5lUmVhZGVyLnNldFNlcGFyYXRvcihlbmRPZlBhcnRCb3VuZGFyeS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgVmVjdG9yPGNoYXI+IHBhcnQ7CiAgICAgICAgIGlmICghbV9saW5lUmVhZGVyLm5l
eHRDaHVuayhwYXJ0KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMg
cmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
fQotICAgICAgICAgY29udGVudC0+YXBwZW5kKHBhcnQpOwotICAgICAgICAgbV9saW5lUmVhZGVy
LnNldFNlcGFyYXRvcigiXHJcbiIpOwotICAgICAgICAgVmVjdG9yPGNoYXI+IG5leHRDaGFyczsK
LSAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKLSAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgc2VwZXJhdG9yLiIpOwotICAgICAgICAgICAg
IHJldHVybiAwOwotICAgICAgICAgfQotICAgICAgICAgZW5kT2ZQYXJ0UmVhY2hlZCA9IHRydWU7
Ci0gICAgICAgICBBU1NFUlQobmV4dENoYXJzLnNpemUoKSA9PSAyKTsKLSAgICAgICAgIGVuZE9m
QXJjaGl2ZVJlYWNoZWQgPSAobmV4dENoYXJzWzBdID09ICctJyAmJiBuZXh0Q2hhcnNbMV0gPT0g
Jy0nKTsKLSAgICAgICAgIGlmICghZW5kT2ZBcmNoaXZlUmVhY2hlZCkgewotICAgICAgICAgICAg
IFN0cmluZyBsaW5lID0gbV9saW5lUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRp
bjFGYWxsYmFjaygpOwotICAgICAgICAgICAgIGlmICghbGluZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJObyBDUkxGIGF0IGVuZCBvZiBiaW5hcnkgc2VjdGlvbi4i
KTsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgfQotICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgY29udGVu
dC0+YXBwZW5kKHBhcnQpOworICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxu
Iik7CisgICAgICAgIFZlY3RvcjxjaGFyPiBuZXh0Q2hhcnM7CisgICAgICAgIGlmIChtX2xpbmVS
ZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKKyAgICAgICAgICAgIExPR19FUlJPUigi
SW52YWxpZCBzZXBlcmF0b3IuIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICBlbmRPZlBhcnRSZWFjaGVkID0gdHJ1ZTsKKyAgICAgICAgQVNTRVJUKG5l
eHRDaGFycy5zaXplKCkgPT0gMik7CisgICAgICAgIGVuZE9mQXJjaGl2ZVJlYWNoZWQgPSAobmV4
dENoYXJzWzBdID09ICctJyAmJiBuZXh0Q2hhcnNbMV0gPT0gJy0nKTsKKyAgICAgICAgaWYgKCFl
bmRPZkFyY2hpdmVSZWFjaGVkKSB7CisgICAgICAgICAgICBTdHJpbmcgbGluZSA9IG1fbGluZVJl
YWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKKyAgICAgICAg
ICAgIGlmICghbGluZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIk5v
IENSTEYgYXQgZW5kIG9mIGJpbmFyeSBzZWN0aW9uLiIpOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgU3RyaW5nIGxpbmU7CiAgICAgICAgIHdoaWxlICghKGxpbmUgPSBtX2xpbmVSZWFkZXIubmV4
dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCkpLmlzTnVsbCgpKSB7CkBAIC0x
OTEsNyArMTkxLDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOgog
ICAgIH0KICAgICBpZiAoIWVuZE9mUGFydFJlYWNoZWQgJiYgY2hlY2tCb3VuZGFyeSkgewogICAg
ICAgICBMT0dfRVJST1IoIk5vIGJvdW5kYXkgZm91bmQgZm9yIE1IVE1MIHBhcnQuIik7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBWZWN0
b3I8Y2hhcj4gZGF0YTsKQEAgLTE5OSw3ICsxOTksNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6CiAgICAgICAg
IGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpLCBkYXRh
KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBN
SFRNTCBwYXJ0LiIpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6
OlF1b3RlZFByaW50YWJsZToKQEAgLTIxMSw3ICsyMTEsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjb250ZW50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3Rvcihk
YXRhKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUg
cmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkSW1hZ2U6
OkNhY2hlZEltYWdlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBJ
bWFnZVJlc291cmNlLCBzZXNzaW9uSUQpCi0gICAgLCBtX2ltYWdlKDApCisgICAgLCBtX2ltYWdl
KG51bGxwdHIpCiAgICAgLCBtX2lzTWFudWFsbHlDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3Nob3Vs
ZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgYSBm
cmFtZSBvZiBhbiBpbWFnZSBjaGFuZ2VzIGJlY2F1c2Ugd2UgZ290IG1vcmUgZGF0YSBmcm9tIHRo
ZSBuZXR3b3JrLgogICAgIC8vIElmIG5vdCBudWxsLCB0aGUgSW50UmVjdCBpcyB0aGUgY2hhbmdl
ZCByZWN0IG9mIHRoZSBpbWFnZS4KLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hl
ZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSAwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VD
aGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSB7IH0KIAogICAg
IC8vIENhbGxlZCB3aGVuIEdJRiBhbmltYXRpb24gcHJvZ3Jlc3Nlcy4KICAgICB2aXJ0dWFsIHZv
aWQgbmV3SW1hZ2VBbmltYXRpb25GcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UpIHsg
aW1hZ2VDaGFuZ2VkKCZpbWFnZSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksNyArNDksNyBAQCBjb25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2Fs
Y3VsYXRlCiB7CiAgICAgaW5jcmVtZW50YWxEYXRhTGVuZ3RoID0gMDsKICAgICBpZiAoIWRhdGEp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHVuc2ln
bmVkIHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgQVNTRVJUKGRhdGEt
PnNpemUoKSA+PSBwcmV2aW91c0RhdGFMZW5ndGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgJKHJldmlzaW9u
IDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hhciogLyog
ZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9CiAjaWYgVVNFKFNPVVApCi0gICAgdmlydHVhbCBjaGFyKiBnZXRPckNy
ZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLyogcmVxdWVzdGVkU2l6ZSAq
Lywgc2l6ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBj
aGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoQ2FjaGVkUmVzb3VyY2UqLCBzaXplX3QgLyogcmVx
dWVzdGVkU2l6ZSAqLywgc2l6ZV90JiAvKiBhY3R1YWxTaXplICovKSB7IHJldHVybiBudWxscHRy
OyB9CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDkg
KzEzNSw5IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBSZXMKICAgICAs
IG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fbHJ1SW5kZXgoMCkKICNlbmRpZgotICAgICwgbV9v
d25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKQotICAgICwgbV9yZXNvdXJjZVRvUmV2YWxpZGF0
ZSgwKQotICAgICwgbV9wcm94eVJlc291cmNlKDApCisgICAgLCBtX293bmluZ0NhY2hlZFJlc291
cmNlTG9hZGVyKG51bGxwdHIpCisgICAgLCBtX3Jlc291cmNlVG9SZXZhbGlkYXRlKG51bGxwdHIp
CisgICAgLCBtX3Byb3h5UmVzb3VyY2UobnVsbHB0cikKIHsKICAgICBBU1NFUlQobV90eXBlID09
IHVuc2lnbmVkKHR5cGUpKTsgLy8gbV90eXBlIGlzIGEgYml0ZmllbGQsIHNvIHRoaXMgdGVzdHMg
Y2FyZWxlc3MgdXBkYXRlcyBvZiB0aGUgZW51bS4KICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7CkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2xlYXJSZXNv
dXJjZVRvUmV2YQogICAgIG1fcmVzb3VyY2VUb1JldmFsaWRhdGUtPmRlbGV0ZUlmUG9zc2libGUo
KTsKIAogICAgIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5jbGVhcigpOwotICAgIG1fcmVzb3VyY2VU
b1JldmFsaWRhdGUgPSAwOworICAgIG1fcmVzb3VyY2VUb1JldmFsaWRhdGUgPSBudWxscHRyOwog
ICAgIGRlbGV0ZUlmUG9zc2libGUoKTsKIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oCShy
ZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiBwcml2YXRlOgogICAgIGNvbnN0IEhh
c2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4mIG1fY2xpZW50U2V0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlSGFuZGxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTo6Q2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKCkKLSAgICA6IG1fcmVzb3VyY2UoMCkKKyAgICA6IG1fcmVzb3Vy
Y2UobnVsbHB0cikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNy
ZWF0ZVJlc291cmNlKENhCiAjZW5kaWYKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIENhY2hlZFJlc291cmNl
TG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIpCi0gICAgOiBtX2RvY3VtZW50KDApCisgICAgOiBtX2RvY3VtZW50KG51bGxwdHIpCiAgICAg
LCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQogICAgICwgbV9yZXF1ZXN0Q291bnQo
MCkKICAgICAsIG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKCp0aGlzLCAm
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMpCkBA
IC0xMzQsOCArMTM0LDggQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9h
ZAogCiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkKIHsKLSAg
ICBtX2RvY3VtZW50TG9hZGVyID0gMDsKLSAgICBtX2RvY3VtZW50ID0gMDsKKyAgICBtX2RvY3Vt
ZW50TG9hZGVyID0gbnVsbHB0cjsKKyAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKIAogICAgIGNs
ZWFyUHJlbG9hZHMoKTsKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogbV9kb2N1bWVudFJlc291
cmNlcy52YWx1ZXMoKSkKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpjYW5SZXF1ZXN0KENhCiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKICAgICAgICAgICAg
IEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUoKSwgdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIHdhcyBub3QgYWxsb3dl
ZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGJvb2wgc2tpcENvbnRlbnRTZWN1cml0
eVBvbGljeUNoZWNrID0gb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uKCkg
PT0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrOwpAQCAt
NTI0LDcgKzUyNCw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMK
ICAgICBpZiAobWVtb3J5Q2FjaGUuZGlzYWJsZWQoKSkgewogICAgICAgICBEb2N1bWVudFJlc291
cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZmluZCh1cmwuc3RyaW5n
KCkpOwogICAgICAgICBpZiAoaXQgIT0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKSkgewotICAg
ICAgICAgICAgaXQtPnZhbHVlLT5zZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKTsKKyAg
ICAgICAgICAgIGl0LT52YWx1ZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIobnVsbHB0
cik7CiAgICAgICAgICAgICBtX2RvY3VtZW50UmVzb3VyY2VzLnJlbW92ZShpdCk7CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIGZyYW1lKCkgY29uc3Q7IC8vIENhbiBi
ZSBudWxsCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dDsgfSAvLyBDYW4gYmUgbnVsbAogICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsgfQotICAgIHZvaWQgY2xlYXJEb2N1bWVudExv
YWRlcigpIHsgbV9kb2N1bWVudExvYWRlciA9IDA7IH0KKyAgICB2b2lkIGNsZWFyRG9jdW1lbnRM
b2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSBudWxscHRyOyB9CiAgICAgU2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIDogbV91cmwodXJsKQotICAgICwgbV9kb2N1bWVudCgw
KQorICAgICwgbV9kb2N1bWVudChudWxscHRyKQogICAgICwgbV9sb2FkUmVxdWVzdGVkKGZhbHNl
KQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1Jlc291cmNlTG9hZGVyQ0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9SZXNvdXJjZUxv
YWRlckNGTmV0LmNwcAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZENhY2hl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJl
c3BvbnNlKQogewogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05v
dFNlbmRDYWxsYmFja3MpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlID0gQ0ZDYWNoZWRVUkxSZXNwb25zZUdl
dFdyYXBwZWRSZXNwb25zZShjYWNoZWRSZXNwb25zZSk7CiAgICAgQ0ZEYXRhUmVmIGRhdGEgPSBD
RkNhY2hlZFVSTFJlc3BvbnNlR2V0UmVjZWl2ZXJEYXRhKGNhY2hlZFJlc3BvbnNlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24g
MTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI1LDcgKzIyNSw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OnN5
bmNocm9ub3VzSWNvbkZvclAKICAgICAvLyBXZSBzaG91bGQgZ28gb3VyIG9mIG91ciB3YXkgdG8g
b25seSBjb3B5IGl0IGlmIHdlIGhhdmUgdG8gc3RvcmUgaXQKICAgICAKICAgICBpZiAoIWlzT3Bl
bigpIHx8ICFkb2N1bWVudENhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5hbCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdXJsQW5kSWNvbkxvY2spOwogCkBAIC0yNTAsNyArMjUwLDcgQEAgSW1hZ2UqIEljb25EYXRh
YmFzZTo6c3luY2hyb25vdXNJY29uRm9yUAogICAgICAgICBpZiAoIW1faWNvblVSTEltcG9ydENv
bXBsZXRlKQogICAgICAgICAgICAgbV9wYWdlVVJMc0ludGVyZXN0ZWRJbkljb25zLmFkZChwYWdl
VVJMQ29weSk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgSWNvblJlY29yZCogaWNvblJlY29yZCA9IHBhZ2VSZWNvcmQt
Pmljb25SZWNvcmQoKTsKQEAgLTI1OSwxNCArMjU5LDE0IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6
OnN5bmNocm9ub3VzSWNvbkZvclAKICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBwYWdlVVJMIGlz
IGFscmVhZHkgaW4gdGhlIHNldCB0byBhbGVydCB0aGUgY2xpZW50IHdoZW4gdGhlIGljb25VUkwg
bWFwcGluZyBpcyBjb21wbGV0ZSBzbwogICAgIC8vIHdlIGNhbiBqdXN0IGJhaWwgbm93CiAgICAg
aWYgKCFtX2ljb25VUkxJbXBvcnRDb21wbGV0ZSAmJiAhaWNvblJlY29yZCkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQXNzdW1pbmcgd2UncmUg
ZG9uZSBpbml0aWFsaXppbmcgYW5kIGNsZWFudXAgaXMgYWxsb3dlZCwKICAgICAvLyB0aGUgb25s
eSB3YXkgd2Ugc2hvdWxkICpub3QqIGhhdmUgYW4gaWNvbiByZWNvcmQgaXMgaWYgdGhpcyBwYWdl
VVJMIGlzIHJldGFpbmVkIGJ1dCBoYXMgbm8gaWNvbiB5ZXQuCiAgICAgQVNTRVJUKGljb25SZWNv
cmQgfHwgZGF0YWJhc2VDbGVhbnVwQ291bnRlciB8fCBtX3JldGFpbmVkUGFnZVVSTHMuY29udGFp
bnMocGFnZVVSTE9yaWdpbmFsKSk7CiAgICAgCiAgICAgaWYgKCFpY29uUmVjb3JkKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAogICAgIC8vIElm
IGl0J3MgYSBuZXcgSWNvblJlY29yZCBvYmplY3QgdGhhdCBkb2Vzbid0IGhhdmUgaXRzIGltYWdl
RGF0YSBzZXQgeWV0LAogICAgIC8vIG1hcmsgaXQgdG8gYmUgcmVhZCBieSB0aGUgYmFja2dyb3Vu
ZCB0aHJlYWQKQEAgLTI3OCwxMyArMjc4LDEzIEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OnN5bmNo
cm9ub3VzSWNvbkZvclAKICAgICAgICAgbV9wYWdlVVJMc0ludGVyZXN0ZWRJbkljb25zLmFkZChw
YWdlVVJMQ29weSk7CiAgICAgICAgIG1faWNvbnNQZW5kaW5nUmVhZGluZy5hZGQoaWNvblJlY29y
ZCk7CiAgICAgICAgIHdha2VTeW5jVGhyZWFkKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCiAgICAgLy8gSWYgdGhlIHNpemUgcGFyYW1l
dGVyIHdhcyAoMCwgMCkgdGhhdCBtZWFucyB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIGp1c3Qg
d2FudGVkIHRoZSByZWFkIGZyb20gZGlzayB0byBiZSBraWNrZWQgb2ZmCiAgICAgLy8gYW5kIGlz
bid0IGFjdHVhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGltYWdlIHJldHVybiB2YWx1ZQogICAgIGlm
IChzaXplID09IEludFNpemUoMCwgMCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgCiAgICAgLy8gUEFSQU5PSUQgRElTQ1VTU0lPTjogVGhpcyBt
ZXRob2QgbWFrZXMgc29tZSBhc3N1bXB0aW9ucy4gIEl0IHJldHVybnMgYSBXZWJDb3JlOjppbWFn
ZSB3aGljaCB0aGUgaWNvbiBkYXRhYmFzZSBtaWdodCBkaXNwb3NlIG9mIGF0IGFueXRpbWUgaW4g
dGhlIGZ1dHVyZSwKICAgICAvLyBhbmQgSW1hZ2VzIGFyZW4ndCByZWYgY291bnRlZC4gIFNvIHRo
ZXJlIGlzIG5vIHdheSBmb3IgdGhlIGNsaWVudCB0byBndWFyYW50ZWUgY29udGludWVkIGV4aXN0
ZW5jZSBvZiB0aGUgaW1hZ2UuCkBAIC0zMDMsNyArMzAzLDcgQEAgUGFzc05hdGl2ZUltYWdlUHRy
IEljb25EYXRhYmFzZTo6c3luY2hybwogewogICAgIEltYWdlKiBpY29uID0gc3luY2hyb25vdXNJ
Y29uRm9yUGFnZVVSTChwYWdlVVJMT3JpZ2luYWwsIHNpemUpOwogICAgIGlmICghaWNvbikKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgcmV0dXJuIGljb24tPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OnNldEljb25EYXRhRm9ySWNvblVSTAogICAgIGlmICghaXNPcGVuKCkgfHwgaWNvblVSTE9yaWdp
bmFsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEgPSBkYXRhT3JpZ2luYWwgPyBkYXRhT3JpZ2luYWwtPmNvcHkoKSA6IFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPigwKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0g
ZGF0YU9yaWdpbmFsID8gZGF0YU9yaWdpbmFsLT5jb3B5KCkgOiBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4obnVsbHB0cik7CiAgICAgU3RyaW5nIGljb25VUkwgPSBpY29uVVJMT3JpZ2luYWwuaXNv
bGF0ZWRDb3B5KCk7CiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gcGFnZVVSTHM7CkBAIC05MDUs
NyArOTA1LDcgQEAgUGFnZVVSTFJlY29yZCogSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZQogICAg
IEFTU0VSVCghbV91cmxBbmRJY29uTG9jay50cnlMb2NrKCkpOwogCiAgICAgaWYgKCFkb2N1bWVu
dENhbkhhdmVJY29uKHBhZ2VVUkwpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBQYWdlVVJMUmVjb3JkKiBwYWdlUmVjb3JkID0gbV9wYWdlVVJMVG9S
ZWNvcmRNYXAuZ2V0KHBhZ2VVUkwpOwogICAgIApAQCAtOTIyLDcgKzkyMiw3IEBAIFBhZ2VVUkxS
ZWNvcmQqIEljb25EYXRhYmFzZTo6Z2V0T3JDcmVhdGUKICAgICAgICAgLy8gTWFyayB0aGUgVVJM
IGFzICJpbnRlcmVzdGVkIGluIHRoZSByZXN1bHQgb2YgdGhlIGltcG9ydCIgdGhlbiBiYWlsCiAg
ICAgICAgIGlmICghcGFnZVJlY29yZC0+aWNvblJlY29yZCgpKSB7CiAgICAgICAgICAgICBtX3Bh
Z2VVUkxzUGVuZGluZ0ltcG9ydC5hZGQocGFnZVVSTCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNzk0
LDcgKzE3OTQsNyBAQCB2b2lkKiBJY29uRGF0YWJhc2U6OmNsZWFudXBTeW5jVGhyZWFkKCkKICNl
bmRpZgogICAgIAogICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSBmYWxzZTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gcmVhZHlTUUxpdGVTdGF0ZW1lbnQoKSBo
YW5kbGVzIHR3byB0aGluZ3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZUJhc2UuY3BwCShyZXZpc2lvbiAxOTAzNDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBib29sIEljb25EYXRhYmFzZUJhc2U6Om9wZW4oY29uc3QgU3RyaW5nCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgSWNvbkRhdGFiYXNlQmFzZSogdm1iYXNlID0gMDsK
K3N0YXRpYyBJY29uRGF0YWJhc2VCYXNlKiB2bWJhc2UgPSBudWxscHRyOwogCiAvLyBGdW5jdGlv
bnMgdG8gZ2V0L3NldCB0aGUgZ2xvYmFsIGljb24gZGF0YWJhc2UuCiBJY29uRGF0YWJhc2VCYXNl
JiBpY29uRGF0YWJhc2UoKQpAQCAtNTUsNyArNTUsNyBAQCBJY29uRGF0YWJhc2VCYXNlJiBpY29u
RGF0YWJhc2UoKQogICAgIGlmICh2bWJhc2UpCiAgICAgICAgIHJldHVybiAqdm1iYXNlOwogCi0g
ICAgc3RhdGljIEljb25EYXRhYmFzZUJhc2UqIGRlZmF1bHREYXRhYmFzZSA9IDA7ICAgICAgICAK
KyAgICBzdGF0aWMgSWNvbkRhdGFiYXNlQmFzZSogZGVmYXVsdERhdGFiYXNlID0gbnVsbHB0cjsK
ICAgICBpZiAoIWRlZmF1bHREYXRhYmFzZSkKICAgICAgICAgZGVmYXVsdERhdGFiYXNlID0gbmV3
IEljb25EYXRhYmFzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZUJhc2UuaAkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQs
MTIgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1fY2FsbGJhY2socmVzdWx0LCBjb250ZXh0KCkpOwotICAgICAgICBtX2Nh
bGxiYWNrID0gMDsKKyAgICAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrID0gMDsKKyAg
ICAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMzLDEy
ICsxMzMsMTIgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1fY2FsbGJhY2socmVzdWx0LCBjb250ZXh0KCkpOwotICAgICAg
ICBtX2NhbGxiYWNrID0gMDsKKyAgICAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrID0g
MDsKKyAgICAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTc4LDggKzE3OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzeW5jaHJvbm91c0lj
b25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJv
bm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9u
Rm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIEljb25M
b2FkTm87IH0KLSAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBQ
YXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgSW1hZ2Uq
IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5j
aHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUm
KSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgd2Ugc2hv
dWxkIHVzZSB0byByZXBsYWNlIHRoZSBhYm92ZSB3aGVuIHN1cHBvcnRlZC4KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE5
MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2Ugc2hvdWxkIHRyeSB0byByZW1vdmUgdGhl
c2UgZGVwZW5kZW5jaWVzIGZyb20gdGhlIEljb25EYXRhYmFzZUJhc2UgY2xhc3MuCiAgICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIEltYWdlKiBkZWZh
dWx0SWNvbihjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgSW1hZ2Uq
IGRlZmF1bHRJY29uKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2
aXJ0dWFsIHNpemVfdCBwYWdlVVJMTWFwcGluZ0NvdW50KCkgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgc2l6ZV90IHJldGFpbmVkUGFnZVVSTENvdW50KCkgeyByZXR1cm4gMDsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vUGFnZVVSTFJlY29yZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vUGFnZVVSTFJlY29yZC5jcHAJKHJldmlzaW9u
IDE5MDM0MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFBhZ2VVUkxSZWNvcmQ6OlBhZ2VVUkxS
ZWNvcmQoY29uc3QgU3RyaW4KIAogUGFnZVVSTFJlY29yZDo6flBhZ2VVUkxSZWNvcmQoKQogewot
ICAgIHNldEljb25SZWNvcmQoMCk7CisgICAgc2V0SWNvblJlY29yZChudWxscHRyKTsKIH0KIAog
dm9pZCBQYWdlVVJMUmVjb3JkOjpzZXRJY29uUmVjb3JkKFBhc3NSZWZQdHI8SWNvblJlY29yZD4g
aWNvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRl
ck1hYy5tbQkocmV2aXNpb24gMTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlTG9hZGVyOjp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygp
ID09IERvTm90U2VuZENhbGxiYWNrcykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPE5TQ2FjaGVkVVJMUmVzcG9uc2U+IG5zQ2FjaGVk
UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNwb25zZSBhbGxvY10gX2luaXRXaXRo
Q0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZV0pOwogICAgIHJldHVybiBbZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRl
bnRpZmllcigpLCBuc0NhY2hlZFJlc3BvbnNlLmdldCgpKSBfQ0ZDYWNoZWRVUkxSZXNwb25zZV07
CkBAIC01Niw3ICs1Niw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VMb2FkZXI6
OncKIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIFJlc291cmNlTG9hZGVyOjp3aWxsQ2FjaGVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAg
IGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MoKSA9PSBEb05vdFNlbmRDYWxsYmFja3Mp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkud2lsbENhY2hlUmVzcG9uc2UoZG9jdW1lbnRMb2FkZXIo
KSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9zb3VwL0NhY2hlZFJhd1Jlc291cmNlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL3NvdXAvQ2FjaGVkUmF3UmVzb3VyY2VTb3VwLmNwcAkocmV2aXNpb24g
MTkwMzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvQ2FjaGVkUmF3UmVzb3VyY2VT
b3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBjaGFyKiBDYWNoZWRSYXdS
ZXNvdXJjZTo6Z2V0T3JDcmVhdGVSZWFkCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyUHRyOwog
ICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>