<?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>195910</bug_id>
          
          <creation_ts>2019-03-18 14:07:16 -0700</creation_ts>
          <short_desc>Drop NetworkCacheStatistics code</short_desc>
          <delta_ts>2019-03-19 10:07:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517900</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-18 14:07:16 -0700</bug_when>
    <thetext>Drop NetworkCacheStatistics code. It was a temporary experiment and has not been used in a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517907</commentid>
    <comment_count>1</comment_count>
      <attachid>365060</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-18 14:12:43 -0700</bug_when>
    <thetext>Created attachment 365060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517911</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-18 14:15:30 -0700</bug_when>
    <thetext>Attachment 365060 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:179:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 4 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>1518283</commentid>
    <comment_count>3</comment_count>
      <attachid>365164</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-19 08:42:29 -0700</bug_when>
    <thetext>Created attachment 365164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518284</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-19 08:44:52 -0700</bug_when>
    <thetext>Attachment 365164 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:179:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 4 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>1518323</commentid>
    <comment_count>5</comment_count>
      <attachid>365164</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 10:06:01 -0700</bug_when>
    <thetext>Comment on attachment 365164
Patch

Clearing flags on attachment: 365164

Committed r243143: &lt;https://trac.webkit.org/changeset/243143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518324</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-19 10:06:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518326</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-19 10:07:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/49023116&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365060</attachid>
            <date>2019-03-18 14:12:43 -0700</date>
            <delta_ts>2019-03-19 08:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195910-20190318141242.patch</filename>
            <type>text/plain</type>
            <size>48261</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkYTdmNWM2ZWM1YmVkNjBh
NTY1ZTlmZDMzMDVlMTMzMjUzOWQ2MDMuLjE2NzQzOGEyYmYwODg4YmExMTAwZWEwYzVjYzY2ZWFh
ZTZlYjdjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDMtMTggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIE5ldHdvcmtDYWNoZVN0YXRp
c3RpY3MgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1OTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRHJvcCBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzIGNvZGUuIEl0IHdhcyBhIHRlbXBvcmFyeSBl
eHBlcmltZW50IGFuZCBoYXMgbm90IGJlZW4gdXNlZCBpbiBhIGxvbmcgdGltZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg6IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3RlclVzZXJEZWZhdWx0c0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
UG9vbFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE5LTAzLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsYXkgV2ViUHJvY2VzcyBsYXVuY2ggdW50aWwgYSBsb2FkIGlzIHRy
aWdnZXJlZCBpbiBhIFdlYiB2aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IDA4NzE1MGExZDUyMWE1MjRlY2JkOGI1ZDlhMWI0ODYzYWYxNmE1MTYuLmU2ZTAwNGUyNWE5
YWFhMzIwNDZhZGM3YjVhNzc5NTBiNTNhZDNhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC00NSw3ICs0NSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rl
ciA8PCBjYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbjsKICAgICBlbmNvZGVyIDw8
IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVm
ZmljYWN5TG9nZ2luZzsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbjsKICNlbmRpZgpAQCAtMTEyLDggKzExMSw2IEBAIGJvb2wgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IE5ldHdvcmtQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQuZGlza0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqZGlza0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
ICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggZmM5MDBjMmVkN2YwY2VmYjE4MjkwYzQwZjgwMzVjY2ZlNWQ5
NzhmOS4uZDVmNjAzYzg4ZGViZWZhMzhlODczZGQ4ODJiNjUxNzk4Mjg2MTQ2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTYsNyArNTYsNiBAQCBzdHJ1Y3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwotICAgIGJvb2wgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dn
aW5nIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCiAgICAgYm9vbCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCBhNmJhMmIyYWQwYTgwZWZm
YWU2YTFiZjViNzAwM2JhODEwZjRiZGY4Li5lZTMwNjI5Zjg2MGMyMDY4ZDU1OWZlYzUwYWMzYTky
Mjk1NGJiMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIgotI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVT
dG9yYWdlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NhY2hlVmFsaWRhdGlvbi5oPgpAQCAtOTksOSArOTgsNiBAQCBDYWNoZTo6Q2FjaGUoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25T
ZXQ8TwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG9wdGlvbnMuY29udGFpbnMoT3B0aW9uOjpF
ZmZpY2FjeUxvZ2dpbmcpKQotICAgICAgICBtX3N0YXRpc3RpY3MgPSBTdGF0aXN0aWNzOjpvcGVu
KCp0aGlzLCBtX3N0b3JhZ2UtPmJhc2VQYXRoKCkpOwotCiAgICAgaWYgKG9wdGlvbnMuY29udGFp
bnMoT3B0aW9uOjpSZWdpc3Rlck5vdGlmeSkpIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAg
ICAgLy8gVHJpZ2dlcnMgd2l0aCAibm90aWZ5dXRpbCAtcCBjb20uYXBwbGUuV2ViS2l0LkNhY2hl
LmR1bXAiLgpAQCAtMjc5LDkgKzI3NSw2IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAg
ICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSByZXRyaWV2aW5nICVzIHByaW9y
aXR5ICVkIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8aW50PihyZXF1ZXN0LnByaW9yaXR5KCkpKTsKIAotICAgIGlmIChtX3N0YXRpc3RpY3MpCi0g
ICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkUmV0cmlldmFsUmVxdWVzdChmcmFtZUlELmZpcnN0
KTsKLQogICAgIEtleSBzdG9yYWdlS2V5ID0gbWFrZUNhY2hlS2V5KHJlcXVlc3QpOwogICAgIGF1
dG8gcHJpb3JpdHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVxdWVzdC5wcmlvcml0eSgpKTsK
IApAQCAtMjk3LDkgKzI5MCw2IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAKICAgICBhdXRv
IHJldHJpZXZlRGVjaXNpb24gPSBtYWtlUmV0cmlldmVEZWNpc2lvbihyZXF1ZXN0KTsKICAgICBp
ZiAocmV0cmlldmVEZWNpc2lvbiAhPSBSZXRyaWV2ZURlY2lzaW9uOjpZZXMpIHsKLSAgICAgICAg
aWYgKG1fc3RhdGlzdGljcykKLSAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkTm90VXNp
bmdDYWNoZUZvclJlcXVlc3QoZnJhbWVJRC5maXJzdCwgc3RvcmFnZUtleSwgcmVxdWVzdCwgcmV0
cmlldmVEZWNpc2lvbik7Ci0KICAgICAgICAgY29tcGxldGVSZXRyaWV2ZShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbnVsbHB0ciwgaW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMTcsMTUgKzMwNywxMiBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogICAgIH0KICNlbmRp
ZgogCi0gICAgbV9zdG9yYWdlLT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHN0
b3JhZ2VLZXksIGZyYW1lSUQsIG5ldHdvcmtQcm9jZXNzID0gbWFrZVJlZihuZXR3b3JrUHJvY2Vz
cygpKV0oYXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdl
LT5yZXRyaWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3JlcXVlc3QsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBz
dG9yYWdlS2V5LCBuZXR3b3JrUHJvY2VzcyA9IG1ha2VSZWYobmV0d29ya1Byb2Nlc3MoKSldKGF1
dG8gcmVjb3JkLCBhdXRvIHRpbWluZ3MpIG11dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VU
aW1pbmdzID0gdGltaW5nczsKIAogICAgICAgICBpZiAoIXJlY29yZCkgewogICAgICAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgbm90IGZvdW5kIGluIHN0b3JhZ2Ui
KTsKIAotICAgICAgICAgICAgaWYgKG1fc3RhdGlzdGljcykKLSAgICAgICAgICAgICAgICBtX3N0
YXRpc3RpY3MtPnJlY29yZFJldHJpZXZhbEZhaWx1cmUoZnJhbWVJRC5maXJzdCwgc3RvcmFnZUtl
eSwgcmVxdWVzdCk7Ci0KICAgICAgICAgICAgIGNvbXBsZXRlUmV0cmlldmUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG51bGxwdHIsIGluZm8pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CkBAIC0zNTEsOCArMzM4LDYgQEAgdm9pZCBDYWNoZTo6cmV0cmlldmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkK
ICNlbmRpZgogICAgICAgICBjb21wbGV0ZVJldHJpZXZlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiAKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljcykK
LSAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkUmV0cmlldmVkQ2FjaGVkRW50cnkoZnJh
bWVJRC5maXJzdCwgc3RvcmFnZUtleSwgcmVxdWVzdCwgdXNlRGVjaXNpb24pOwogICAgICAgICBy
ZXR1cm4gdXNlRGVjaXNpb24gIT0gVXNlRGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOwog
ICAgIH0pOwogfQpAQCAtMzkwLDkgKzM3NSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uCiAg
ICAgICAgICAgICByZW1vdmUoa2V5KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtX3N0YXRp
c3RpY3MpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3MtPnJlY29yZE5vdENhY2hpbmdSZXNwb25z
ZShrZXksIHN0b3JlRGVjaXNpb24pOwotCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IApAQCAtNDIyLDEwICs0MDQsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9y
ZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdQogICAgIFN0b3Jl
RGVjaXNpb24gc3RvcmVEZWNpc2lvbiA9IG1ha2VTdG9yZURlY2lzaW9uKHJlcXVlc3QsIHJlc3Bv
bnNlLCAwKTsKICAgICBpZiAoc3RvcmVEZWNpc2lvbiAhPSBTdG9yZURlY2lzaW9uOjpZZXMpIHsK
ICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgZGlkbid0IHN0b3Jl
IHJlZGlyZWN0LCBzdG9yZURlY2lzaW9uPSVkIiwgc3RhdGljX2Nhc3Q8aW50PihzdG9yZURlY2lz
aW9uKSk7Ci0gICAgICAgIGF1dG8ga2V5ID0gbWFrZUNhY2hlS2V5KHJlcXVlc3QpOwotICAgICAg
ICBpZiAobV9zdGF0aXN0aWNzKQotICAgICAgICAgICAgbV9zdGF0aXN0aWNzLT5yZWNvcmROb3RD
YWNoaW5nUmVzcG9uc2Uoa2V5LCBzdG9yZURlY2lzaW9uKTsKLQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTQ1OSw5ICs0MzcsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cQogCiAgICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7CiAKLSAgICBpZiAo
bV9zdGF0aXN0aWNzKQotICAgICAgICBtX3N0YXRpc3RpY3MtPnJlY29yZFJldmFsaWRhdGlvblN1
Y2Nlc3MoZnJhbWVJRC5maXJzdCwgZXhpc3RpbmdFbnRyeS5rZXkoKSwgb3JpZ2luYWxSZXF1ZXN0
KTsKLQogICAgIHJldHVybiB1cGRhdGVFbnRyeTsKIH0KIApAQCAtNTgzLDkgKzU1OCw2IEBAIHZv
aWQgQ2FjaGU6OmNsZWFyKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBjbGVhcmluZyBjYWNoZSIpOwogCi0gICAgaWYgKG1fc3RhdGlzdGljcykKLSAgICAg
ICAgbV9zdGF0aXN0aWNzLT5jbGVhcigpOwotCiAgICAgU3RyaW5nIGFueVR5cGU7CiAgICAgbV9z
dG9yYWdlLT5jbGVhcihhbnlUeXBlLCBtb2RpZmllZFNpbmNlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oCmluZGV4IDNlNDc4NjFmMjBmMWE3YjhjZmE2YzllNmY5ZTc0NTBhZGI2YTFj
ZWQuLmM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDgs
NyArNDgsNiBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogY2xhc3MgQ2FjaGU7CiBjbGFz
cyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOwotY2xhc3MgU3RhdGlzdGljczsKIAogc3RydWN0IE1h
cHBlZEJvZHkgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC02NSwxMiArNjQs
MTAgQEAgZW51bSBjbGFzcyBSZXRyaWV2ZURlY2lzaW9uIHsKICAgICBOb0R1ZVRvU3RyZWFtaW5n
TWVkaWEsCiB9OwogCi0vLyBGSVhNRTogVGhpcyBlbnVtIGlzIHVzZWQgaW4gdGhlIFN0YXRpc3Rp
Y3MgY29kZSBpbiBhIHdheSB0aGF0IHByZXZlbnRzIHJlbW92aW5nIG9yIHJlb3JkZXJpbmcgYW55
dGhpbmcuCiBlbnVtIGNsYXNzIFN0b3JlRGVjaXNpb24gewogICAgIFllcywKICAgICBOb0R1ZVRv
UHJvdG9jb2wsCiAgICAgTm9EdWVUb0hUVFBNZXRob2QsCi0gICAgTm9EdWVUb0F0dGFjaG1lbnRS
ZXNwb25zZSwgLy8gVW51c2VkLgogICAgIE5vRHVlVG9Ob1N0b3JlUmVzcG9uc2UsCiAgICAgTm9E
dWVUb0hUVFBTdGF0dXNDb2RlLAogICAgIE5vRHVlVG9Ob1N0b3JlUmVxdWVzdCwKQEAgLTkyLDEy
ICs4OSwxMSBAQCB1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVpbnQ2NF90IC8qd2Vi
UGFnZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPgogY2xhc3MgQ2FjaGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxDYWNoZT4gewogcHVibGljOgogICAgIGVudW0gY2xhc3MgT3B0aW9uIHsKLSAg
ICAgICAgRWZmaWNhY3lMb2dnaW5nID0gMSA8PCAwLAogICAgICAgICAvLyBJbiB0ZXN0aW5nIG1v
ZGUgd2UgdHJ5IHRvIGVsaW1pbmF0ZSBzb3VyY2VzIG9mIHJhbmRvbW5lc3MuIENhY2hlIGRvZXMg
bm90IHNocmluayBhbmQgdGhlcmUgYXJlIG5vIHJlYWQgdGltZW91dHMuCi0gICAgICAgIFRlc3Rp
bmdNb2RlID0gMSA8PCAxLAotICAgICAgICBSZWdpc3Rlck5vdGlmeSA9IDEgPDwgMiwKKyAgICAg
ICAgVGVzdGluZ01vZGUgPSAxIDw8IDAsCisgICAgICAgIFJlZ2lzdGVyTm90aWZ5ID0gMSA8PCAx
LAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKLSAg
ICAgICAgU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24gPSAxIDw8IDMsCisgICAgICAgIFNwZWN1bGF0
aXZlUmV2YWxpZGF0aW9uID0gMSA8PCAyLAogI2VuZGlmCiAgICAgfTsKICAgICBzdGF0aWMgUmVm
UHRyPENhY2hlPiBvcGVuKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgs
IE9wdGlvblNldDxPcHRpb24+KTsKQEAgLTE2OSw3ICsxNjUsNiBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4gbV9sb3dQb3dlck1v
ZGVOb3RpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4g
bV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPFN0
YXRpc3RpY3M+IG1fc3RhdGlzdGljczsKIAogICAgIHVuc2lnbmVkIG1fdHJhdmVyc2VDb3VudCB7
IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjFiZWYxZTExYzNjZjgzNzVmNzM5MjViNzIzYjkxNmZiMzFlYjM3ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmgiCi0KLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0jaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCi0jaW5jbHVkZSAiTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNM
b2dnaW5nUmVzdWx0VHlwZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlVHJhbnNh
Y3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRz
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7Ci0KLXN0
YXRpYyBjb25zdCBjaGFyKiBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lID0gIldlYktpdENhY2hlU3Rh
dGlzdGljcy5kYiI7Ci1zdGF0aWMgY29uc3QgU2Vjb25kcyBtaW5pbnVtV3JpdGVJbnRlcnZhbCB7
IDEwX3MgfTsKLQotc3RhdGljIGJvb2wgZXhlY3V0ZVNRTENvbW1hbmQoV2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHNxbCkKLXsKLSAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7Ci0gICAgQVNTRVJUKGRhdGFiYXNlLmlz
T3BlbigpKTsKLQotICAgIGJvb2wgcmVzdWx0ID0gZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoc3Fs
KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgTE9HX0VSUk9SKCJOZXR3b3JrIGNhY2hlIHN0
YXRpc3RpY3M6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRlbWVudCBcIiVzXCIgZXJyb3IgXCIlc1wi
Iiwgc3FsLnV0ZjgoKS5kYXRhKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBib29sIGV4ZWN1dGVTUUxTdGF0ZW1lbnQoV2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50JiBzdGF0ZW1lbnQpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgQVNTRVJUKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwotICAgIEFTU0VSVChzdGF0ZW1lbnQuZGF0YWJhc2Uo
KS5pc09wZW4oKSk7Ci0KLSAgICBpZiAoc3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewotICAgICAgICBMT0dfRVJST1IoIk5ldHdvcmsgY2FjaGUgc3RhdGlzdGljczogZmFpbGVkIHRv
IGV4ZWN1dGUgc3RhdGVtZW50IFwiJXNcIiBlcnJvciBcIiVzXCIiLCBzdGF0ZW1lbnQucXVlcnko
KS51dGY4KCkuZGF0YSgpLCBzdGF0ZW1lbnQuZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3Rk
Ojp1bmlxdWVfcHRyPFN0YXRpc3RpY3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBj
b25zdCBTdHJpbmcmIGNhY2hlUGF0aCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpc3RpY3M+KGNhY2hlLCBkYXRhYmFzZVBhdGgpOwotfQot
Ci1TdGF0aXN0aWNzOjpTdGF0aXN0aWNzKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgpCi0gICAgOiBtX2NhY2hlKGNhY2hlKQotICAgICwgbV9zZXJpYWxCYWNrZ3JvdW5k
SU9RdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYWNoZS5TdGF0aXN0
aWNzLkJhY2tncm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6
OkJhY2tncm91bmQpKQotICAgICwgbV93cml0ZVRpbWVyKCp0aGlzLCAmU3RhdGlzdGljczo6d3Jp
dGVUaW1lckZpcmVkKQotewotICAgIGluaXRpYWxpemUoZGF0YWJhc2VQYXRoKTsKLX0KLQotdm9p
ZCBTdGF0aXN0aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIHN0YXJ0VGltZSA9IFdh
bGxUaW1lOjpub3coKTsKLQotICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2go
W3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlUGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29y
a0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1BhdGgoKSwgc3RhcnRUaW1lXSB7Ci0gICAgICAg
IFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0
aW9uQ291bnRlcjsKLQotICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE9w
ZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4uIiwgZGF0YWJh
c2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2RhdGFiYXNlLm9wZW4oZGF0YWJhc2VQ
YXRoKTsKLSAgICAgICAgbV9kYXRhYmFzZS5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7Ci0gICAg
ICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkgewotICAgICAgICAgICAgTE9HX0VSUk9SKCJO
ZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3M6IEZhaWxlZCB0byBvcGVuIC8gY3JlYXRlIHRoZSBuZXR3
b3JrIGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJhc2UiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGV4ZWN1dGVTUUxDb21tYW5kKG1fZGF0YWJhc2UsICJDUkVBVEUg
VEFCTEUgSUYgTk9UIEVYSVNUUyBBbHJlYWR5UmVxdWVzdGVkIChoYXNoIFRFWFQgUFJJTUFSWSBL
RVkpIl9zKTsKLSAgICAgICAgZXhlY3V0ZVNRTENvbW1hbmQobV9kYXRhYmFzZSwgIkNSRUFURSBU
QUJMRSBJRiBOT1QgRVhJU1RTIFVuY2FjaGVkUmVhc29uIChoYXNoIFRFWFQgUFJJTUFSWSBLRVks
IHJlYXNvbiBJTlRFR0VSKSJfcyk7Ci0KLSAgICAgICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50
IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIGNvdW50KCopIEZST00gQWxyZWFkeVJlcXVl
c3RlZCJfcyk7Ci0gICAgICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZUFuZFN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIk5ldHdvcmsgY2FjaGUgc3RhdGlzdGlj
czogRmFpbGVkIHRvIGNvdW50IHRoZSBudW1iZXIgb2Ygcm93cyBpbiBBbHJlYWR5UmVxdWVzdGVk
IHRhYmxlIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2Fw
cHJveGltYXRlRW50cnlDb3VudCA9IHN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7Ci0KLSNpZiAh
TE9HX0RJU0FCTEVECi0gICAgICAgIGF1dG8gZWxhcHNlZCA9IFdhbGxUaW1lOjpub3coKSAtIHN0
YXJ0VGltZTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShzdGFydFRpbWUpOwotI2VuZGlm
Ci0gICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE5ldHdvcmsgY2Fj
aGUgc3RhdGlzdGljcyBkYXRhYmFzZSBsb2FkIGNvbXBsZXRlLCBlbnRyaWVzPSVsdSB0aW1lPSUi
IFBSSWk2NCAibXMiLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYXBwcm94aW1hdGVFbnRyeUNvdW50
KSwgZWxhcHNlZC5taWxsaXNlY29uZHNBczxpbnQ2NF90PigpKTsKLQotICAgICAgICBpZiAoIW1f
YXBwcm94aW1hdGVFbnRyeUNvdW50KSB7Ci0gICAgICAgICAgICBib290c3RyYXBGcm9tTmV0d29y
a0NhY2hlKG5ldHdvcmtDYWNoZVBhdGgpOwotI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgICAg
IGVsYXBzZWQgPSBXYWxsVGltZTo6bm93KCkgLSBzdGFydFRpbWU7Ci0jZWxzZQotICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKHN0YXJ0VGltZSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIE5ldHdvcmsgY2FjaGUgc3RhdGlzdGljcyBkYXRh
YmFzZSBib290c3RyYXBwaW5nIGNvbXBsZXRlLCBlbnRyaWVzPSVsdSB0aW1lPSUiIFBSSWk2NCAi
bXMiLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYXBwcm94aW1hdGVFbnRyeUNvdW50KSwgZWxhcHNl
ZC5taWxsaXNlY29uZHNBczxpbnQ2NF90PigpKTsKLSAgICAgICAgfQotICAgIH0pOwotfQotCi12
b2lkIFN0YXRpc3RpY3M6OmJvb3RzdHJhcEZyb21OZXR3b3JrQ2FjaGUoY29uc3QgU3RyaW5nJiBu
ZXR3b3JrQ2FjaGVQYXRoKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0g
ICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgQm9vdHN0cmFwcGluZyB0aGUg
bmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGZyb20gdGhlIG5ldHdvcmsgY2FjaGUu
Li4iKTsKLQotICAgIEhhc2hTZXQ8U3RyaW5nPiBoYXNoZXM7Ci0gICAgdHJhdmVyc2VSZWNvcmRz
RmlsZXMobmV0d29ya0NhY2hlUGF0aCwgIlJlc291cmNlIl9zLCBbJmhhc2hlc10oY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGJvb2wgaXNCb2R5QmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7
Ci0gICAgICAgIGlmIChpc0JvZHlCbG9iKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEtleTo6SGFzaFR5cGUgaGFzaDsKLSAgICAgICAgaWYgKCFLZXk6OnN0cmluZ1RvSGFzaChoYXNo
U3RyaW5nLCBoYXNoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBoYXNoZXMuYWRk
KGhhc2hTdHJpbmcpOwotICAgIH0pOwotCi0gICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25J
blByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgIFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uIHdyaXRlVHJhbnNhY3Rpb24obV9kYXRhYmFzZSk7Ci0gICAgd3JpdGVU
cmFuc2FjdGlvbi5iZWdpbigpOwotCi0gICAgYWRkSGFzaGVzVG9EYXRhYmFzZShoYXNoZXMpOwot
Ci0gICAgd3JpdGVUcmFuc2FjdGlvbi5jb21taXQoKTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpz
aHJpbmtJZk5lZWRlZCgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBj
b25zdCBzaXplX3QgbWF4RW50cmllcyA9IDEwMDAwMDsKLQotICAgIGlmIChtX2FwcHJveGltYXRl
RW50cnlDb3VudCA8IG1heEVudHJpZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIExPRyhOZXR3
b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHNocmlua2luZyBzdGF0aXN0aWNzIGNhY2hlIG1f
YXBwcm94aW1hdGVFbnRyeUNvdW50PSVsdSwgbWF4RW50cmllcz0lbHUiLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1fYXBwcm94aW1hdGVFbnRyeUNvdW50KSwgbWF4RW50cmllcyk7Ci0KLSAgICBjbGVh
cigpOwotCi0gICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgbmV0
d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1BhdGgoKV0gewotICAgICAgICBib290c3Ry
YXBGcm9tTmV0d29ya0NhY2hlKG5ldHdvcmtDYWNoZVBhdGgpOwotICAgICAgICBMT0coTmV0d29y
a0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBzdGF0aXN0aWNzIGNhY2hlIHNocmluayBjb21wbGV0
ZWQgbV9hcHByb3hpbWF0ZUVudHJ5Q291bnQ9JWx1Iiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2Fw
cHJveGltYXRlRW50cnlDb3VudCkpOwotICAgIH0pOwotfQotCi12b2lkIFN0YXRpc3RpY3M6OnJl
Y29yZFJldHJpZXZhbFJlcXVlc3QodWludDY0X3Qgd2ViUGFnZUlEKQotewotICAgIG1fY2FjaGUu
bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsUmVxdWVzdEtleSgpLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGU6Olllcyk7Ci19Ci0KLXZvaWQgU3RhdGlzdGljczo6cmVjb3JkTm90Q2FjaGluZ1Jlc3Bv
bnNlKGNvbnN0IEtleSYga2V5LCBTdG9yZURlY2lzaW9uIHN0b3JlRGVjaXNpb24pCi17Ci0gICAg
QVNTRVJUKHN0b3JlRGVjaXNpb24gIT0gU3RvcmVEZWNpc2lvbjo6WWVzKTsKLQotICAgIG1fc3Rv
cmVEZWNpc2lvbnNUb0FkZC5zZXQoa2V5Lmhhc2hBc1N0cmluZygpLCBzdG9yZURlY2lzaW9uKTsK
LSAgICBpZiAoIW1fd3JpdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3dyaXRlVGltZXIu
c3RhcnRPbmVTaG90KG1pbmludW1Xcml0ZUludGVydmFsKTsKLX0KLQotc3RhdGljIFN0cmluZyBy
ZXRyaWV2ZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5KFJldHJpZXZlRGVjaXNpb24gcmV0cmlldmVE
ZWNpc2lvbikKLXsKLSAgICBzd2l0Y2ggKHJldHJpZXZlRGVjaXNpb24pIHsKLSAgICBjYXNlIFJl
dHJpZXZlRGVjaXNpb246Ok5vRHVlVG9IVFRQTWV0aG9kOgotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1bnN1cHBvcnRlZEhUVFBNZXRob2RLZXkoKTsKLSAg
ICBjYXNlIFJldHJpZXZlRGVjaXNpb246Ok5vRHVlVG9Db25kaXRpb25hbFJlcXVlc3Q6Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmlzQ29uZGl0aW9uYWxS
ZXF1ZXN0S2V5KCk7Ci0gICAgY2FzZSBSZXRyaWV2ZURlY2lzaW9uOjpOb0R1ZVRvUmVsb2FkSWdu
b3JpbmdDYWNoZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5
czo6aXNSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YUtleSgpOwotICAgIGNhc2UgUmV0cmlldmVEZWNp
c2lvbjo6Tm9EdWVUb1N0cmVhbWluZ01lZGlhOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpzdHJlYW1pbmdNZWRpYSgpOwotICAgIGNhc2UgUmV0cmlldmVE
ZWNpc2lvbjo6WWVzOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIFN0YXRpc3Rp
Y3M6OnJlY29yZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmV0
cmlldmVEZWNpc2lvbiByZXRyaWV2ZURlY2lzaW9uKQotewotICAgIEFTU0VSVChyZXRyaWV2ZURl
Y2lzaW9uICE9IFJldHJpZXZlRGVjaXNpb246Olllcyk7Ci0KLSAgICBhdXRvIGhhc2ggPSBrZXku
aGFzaEFzU3RyaW5nKCk7Ci0gICAgcXVlcnlXYXNFdmVyUmVxdWVzdGVkKGhhc2gsIE5lZWRVbmNh
Y2hlZFJlYXNvbjo6Tm8sIFt0aGlzLCBoYXNoLCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKSwg
d2ViUGFnZUlELCByZXRyaWV2ZURlY2lzaW9uXShib29sIHdhc0V2ZXJSZXF1ZXN0ZWQsIGNvbnN0
IE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+JikgewotICAgICAgICBpZiAod2FzRXZlclJlcXVlc3Rl
ZCkgewotICAgICAgICAgICAgU3RyaW5nIGRpYWdub3N0aWNLZXkgPSByZXRyaWV2ZURlY2lzaW9u
VG9EaWFnbm9zdGljS2V5KHJldHJpZXZlRGVjaXNpb24pOwotICAgICAgICAgICAgTE9HKE5ldHdv
cmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyB3YXMg
cHJldmlvdXNseSByZXF1ZXN0ZWQgYnV0IHdlIGFyZSBub3QgdXNpbmcgdGhlIGNhY2hlLCByZWFz
b246ICVzIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBk
aWFnbm9zdGljS2V5LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9jYWNoZS5uZXR3b3Jr
UHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVVbnVzZWRSZWFzb25LZXkoKSwgZGlhZ25vc3Rp
Y0tleSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdl
YlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVVbnVz
ZWRSZWFzb25LZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXZlclNlZW5C
ZWZvcmVLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwotICAgICAgICAgICAgbWFy
a0FzUmVxdWVzdGVkKGhhc2gpOwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KLXN0YXRpYyBTdHJp
bmcgc3RvcmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShTdG9yZURlY2lzaW9uIHN0b3JlRGVjaXNp
b24pCi17Ci0gICAgc3dpdGNoIChzdG9yZURlY2lzaW9uKSB7Ci0gICAgY2FzZSBTdG9yZURlY2lz
aW9uOjpOb0R1ZVRvUHJvdG9jb2w6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6Om5vdEhUVFBGYW1pbHlLZXkoKTsKLSAgICBjYXNlIFN0b3JlRGVjaXNpb246
Ok5vRHVlVG9IVFRQTWV0aG9kOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjp1bnN1cHBvcnRlZEhUVFBNZXRob2RLZXkoKTsKLSAgICBjYXNlIFN0b3JlRGVj
aXNpb246Ok5vRHVlVG9BdHRhY2htZW50UmVzcG9uc2U6Ci0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmlzQXR0YWNobWVudEtleSgpOwotICAgIGNhc2UgU3Rv
cmVEZWNpc2lvbjo6Tm9EdWVUb05vU3RvcmVSZXNwb25zZToKLSAgICBjYXNlIFN0b3JlRGVjaXNp
b246Ok5vRHVlVG9Ob1N0b3JlUmVxdWVzdDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVDb250cm9sTm9TdG9yZUtleSgpOwotICAgIGNhc2UgU3Rv
cmVEZWNpc2lvbjo6Tm9EdWVUb0hUVFBTdGF0dXNDb2RlOgotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1bmNhY2hlYWJsZVN0YXR1c0NvZGVLZXkoKTsKLSAg
ICBjYXNlIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9Vbmxpa2VseVRvUmV1c2U6Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnVubGlrZWx5VG9SZXVzZUtleSgp
OwotICAgIGNhc2UgU3RvcmVEZWNpc2lvbjo6Tm9EdWVUb1N0cmVhbWluZ01lZGlhOgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzdHJlYW1pbmdNZWRpYSgp
OwotICAgIGNhc2UgU3RvcmVEZWNpc2lvbjo6WWVzOgotICAgICAgICAvLyBJdCB3YXMgc3RvcmVk
IGJ1dCBjb3VsZCBub3QgYmUgcmV0cmlldmVkIHNvIGl0IG11c3QgaGF2ZSBiZWVuIHBydW5lZCBm
cm9tIHRoZSBjYWNoZS4KLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6bm9Mb25nZXJJbkNhY2hlS2V5KCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmcoKTsK
LX0KLQotdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXRyaWV2YWxGYWlsdXJlKHVpbnQ2NF90IHdl
YlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKLXsKLSAgICBhdXRvIGhhc2ggPSBrZXkuaGFzaEFzU3RyaW5nKCk7Ci0gICAgcXVl
cnlXYXNFdmVyUmVxdWVzdGVkKGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbjo6WWVzLCBbdGhpcywg
aGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRF0oYm9vbCB3YXNQcmV2
aW91c2x5UmVxdWVzdGVkLCBjb25zdCBPcHRpb25hbDxTdG9yZURlY2lzaW9uPiYgc3RvcmVEZWNp
c2lvbikgewotICAgICAgICBpZiAod2FzUHJldmlvdXNseVJlcXVlc3RlZCkgewotICAgICAgICAg
ICAgU3RyaW5nIGRpYWdub3N0aWNLZXkgPSBzdG9yZURlY2lzaW9uVG9EaWFnbm9zdGljS2V5KHN0
b3JlRGVjaXNpb24udmFsdWUoKSk7Ci0gICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5l
dHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBwcmV2aW91c2x5IHJl
cXVlc3QgYnV0IGlzIG5vdCBpbiB0aGUgY2FjaGUsIHJlYXNvbjogJXMiLCB3ZWJQYWdlSUQsIHJl
cXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIGRpYWdub3N0aWNLZXkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2Uod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdv
cmtDYWNoZUZhaWx1cmVSZWFzb25LZXkoKSwgZGlhZ25vc3RpY0tleSwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlOjpZZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9jYWNoZS5uZXR3
b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVGYWlsdXJlUmVhc29uS2V5KCksIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV2ZXJTZWVuQmVmb3JlS2V5KCksIFdlYkNvcmU6
OlNob3VsZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgICAgIG1hcmtBc1JlcXVlc3RlZChoYXNoKTsK
LSAgICAgICAgfQotICAgIH0pOwotfQotCi1zdGF0aWMgU3RyaW5nIGNhY2hlZEVudHJ5UmV1c2VG
YWlsdXJlVG9EaWFnbm9zdGljS2V5KFVzZURlY2lzaW9uIGRlY2lzaW9uKQotewotICAgIHN3aXRj
aCAoZGVjaXNpb24pIHsKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvVmFyeWluZ0hlYWRl
ck1pc21hdGNoOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
Ojp2YXJ5aW5nSGVhZGVyTWlzbWF0Y2hLZXkoKTsKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1
ZVRvTWlzc2luZ1ZhbGlkYXRvckZpZWxkczoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6bWlzc2luZ1ZhbGlkYXRvckZpZWxkc0tleSgpOwotICAgIGNhc2Ug
VXNlRGVjaXNpb246Ok5vRHVlVG9EZWNvZGVGYWlsdXJlOgotICAgIGNhc2UgVXNlRGVjaXNpb246
Ok5vRHVlVG9FeHBpcmVkUmVkaXJlY3Q6Ci0gICAgY2FzZSBVc2VEZWNpc2lvbjo6VXNlOgotICAg
IGNhc2UgVXNlRGVjaXNpb246OlZhbGlkYXRlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQot
Ci12b2lkIFN0YXRpc3RpY3M6OnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2NF90IHdl
YlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgVXNlRGVjaXNpb24gZGVjaXNpb24pCi17Ci0gICAgVVJMIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnVybCgpOwotICAgIGlmIChkZWNpc2lvbiA9PSBVc2VEZWNpc2lvbjo6VXNlKSB7Ci0g
ICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHdlYlBhZ2VJRCAlIiBQ
Ukl1NjQgIjogJXMgaXMgaW4gdGhlIGNhY2hlIGFuZCBpcyB1c2VkIiwgd2ViUGFnZUlELCByZXF1
ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgbV9jYWNoZS5uZXR3b3Jr
UHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6cmV0cmlldmFsS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGRlY2lzaW9uID09IFVzZURlY2lzaW9uOjpWYWxpZGF0
ZSkgewotICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdl
SUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBidXQgbmVlZHMgcmV2YWxpZGF0aW9u
Iiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAg
ICAgbV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJ
RCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVLZXkoKSwgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZWVkc1JldmFsaWRhdGlvbktleSgpLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Olllcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBT
dHJpbmcgZGlhZ25vc3RpY0tleSA9IGNhY2hlZEVudHJ5UmV1c2VGYWlsdXJlVG9EaWFnbm9zdGlj
S2V5KGRlY2lzaW9uKTsKLSAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3
ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRoZSBjYWNoZSBidXQgd2Fzbid0IHVzZWQs
IHJlYXNvbjogJXMiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCksIGRpYWdub3N0aWNLZXkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jYWNoZS5uZXR3b3JrUHJv
Y2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVSZXVzZUZhaWx1cmVLZXkoKSwgZGlhZ25vc3RpY0tl
eSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwotfQotCi12b2lkIFN0YXRpc3RpY3M6OnJl
Y29yZFJldmFsaWRhdGlvblN1Y2Nlc3ModWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmIGtl
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotICAgIFVSTCBy
ZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKLSAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdv
cmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIHdhcyBzdWNjZXNzZnVsbHkgcmV2
YWxpZGF0ZWQiLCB3ZWJQYWdlSUQsIHJlcXVlc3RVUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwotCi0gICAgbV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdCh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29y
a0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6cmV2YWxpZGF0aW5n
S2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0UGFzcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlOjpZZXMpOwotfQotCi12b2lkIFN0YXRpc3RpY3M6Om1hcmtBc1JlcXVlc3RlZChj
b25zdCBTdHJpbmcmIGhhc2gpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQot
ICAgIG1faGFzaGVzVG9BZGQuYWRkKGhhc2gpOwotICAgIGlmICghbV93cml0ZVRpbWVyLmlzQWN0
aXZlKCkpCi0gICAgICAgIG1fd3JpdGVUaW1lci5zdGFydE9uZVNob3QobWluaW51bVdyaXRlSW50
ZXJ2YWwpOwotfQotCi12b2lkIFN0YXRpc3RpY3M6OndyaXRlVGltZXJGaXJlZCgpCi17Ci0gICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVl
KCkuZGlzcGF0Y2goW3RoaXMsIGhhc2hlc1RvQWRkID0gV1RGTW92ZShtX2hhc2hlc1RvQWRkKSwg
c3RvcmVEZWNpc2lvbnNUb0FkZCA9IFdURk1vdmUobV9zdG9yZURlY2lzaW9uc1RvQWRkKV0gewot
ICAgICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIg
dHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiB3
cml0ZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UpOwotICAgICAgICB3cml0ZVRyYW5zYWN0aW9uLmJl
Z2luKCk7Ci0KLSAgICAgICAgYWRkSGFzaGVzVG9EYXRhYmFzZShoYXNoZXNUb0FkZCk7Ci0gICAg
ICAgIGFkZFN0b3JlRGVjaXNpb25zVG9EYXRhYmFzZShzdG9yZURlY2lzaW9uc1RvQWRkKTsKLQot
ICAgICAgICB3cml0ZVRyYW5zYWN0aW9uLmNvbW1pdCgpOwotICAgIH0pOwotCi0gICAgc2hyaW5r
SWZOZWVkZWQoKTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpxdWVyeVdhc0V2ZXJSZXF1ZXN0ZWQo
Y29uc3QgU3RyaW5nJiBoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb24gbmVlZFVuY2FjaGVkUmVhc29u
LCBSZXF1ZXN0ZWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICAvLyBRdWVyeSBwZW5kaW5nIHdyaXRl
cyBmaXJzdC4KLSAgICBib29sIHdhc0FscmVhZHlSZXF1ZXN0ZWQgPSBtX2hhc2hlc1RvQWRkLmNv
bnRhaW5zKGhhc2gpOwotICAgIGlmICh3YXNBbHJlYWR5UmVxdWVzdGVkICYmIG5lZWRVbmNhY2hl
ZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFzb246Ok5vKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHRydWUsIFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKG5lZWRVbmNhY2hlZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFzb246OlllcyAmJiBtX3N0
b3JlRGVjaXNpb25zVG9BZGQuY29udGFpbnMoaGFzaCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSwgbV9zdG9yZURlY2lzaW9uc1RvQWRkLmdldChoYXNoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBRdWVyeSB0aGUgZGF0YWJhc2UuCi0gICAgYXV0byBldmVy
UmVxdWVzdGVkUXVlcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZXJSZXF1ZXN0ZWRRdWVyeT4oRXZl
clJlcXVlc3RlZFF1ZXJ5IHsgaGFzaCwgbmVlZFVuY2FjaGVkUmVhc29uID09IE5lZWRVbmNhY2hl
ZFJlYXNvbjo6WWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKLSAgICBhdXRvJiBx
dWVyeSA9ICpldmVyUmVxdWVzdGVkUXVlcnk7Ci0gICAgbV9hY3RpdmVRdWVyaWVzLmFkZChXVEZN
b3ZlKGV2ZXJSZXF1ZXN0ZWRRdWVyeSkpOwotICAgIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCku
ZGlzcGF0Y2goW3RoaXMsIHdhc0FscmVhZHlSZXF1ZXN0ZWQsICZxdWVyeV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVy
IHRyYW5zYWN0aW9uQ291bnRlcjsKLSAgICAgICAgT3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4gc3Rv
cmVEZWNpc2lvbjsKLSAgICAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKLSAgICAgICAg
ICAgIGlmICghd2FzQWxyZWFkeVJlcXVlc3RlZCkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCBoYXNoIEZST00g
QWxyZWFkeVJlcXVlc3RlZCBXSEVSRSBoYXNoPT8iX3MpOwotICAgICAgICAgICAgICAgIGlmIChz
dGF0ZW1lbnQucHJlcGFyZSgpID09IFNRTElURV9PSykgewotICAgICAgICAgICAgICAgICAgICBz
dGF0ZW1lbnQuYmluZFRleHQoMSwgcXVlcnkuaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIHdh
c0FscmVhZHlSZXF1ZXN0ZWQgPSAoc3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAod2FzQWxyZWFk
eVJlcXVlc3RlZCAmJiBxdWVyeS5uZWVkVW5jYWNoZWRSZWFzb24pIHsKLSAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1Qg
cmVhc29uIEZST00gVW5jYWNoZWRSZWFzb24gV0hFUkUgaGFzaD0/Il9zKTsKLSAgICAgICAgICAg
ICAgICBzdG9yZURlY2lzaW9uID0gU3RvcmVEZWNpc2lvbjo6WWVzOwotICAgICAgICAgICAgICAg
IGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpID09IFNRTElURV9PSykgewotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgcXVlcnkuaGFzaCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdG9yZURlY2lzaW9uID0gc3RhdGljX2Nhc3Q8U3RvcmVEZWNpc2lvbj4oc3RhdGVt
ZW50LmdldENvbHVtbkludCgwKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgJnF1ZXJ5
LCB3YXNBbHJlYWR5UmVxdWVzdGVkLCBzdG9yZURlY2lzaW9uXSB7Ci0gICAgICAgICAgICBxdWVy
eS5jb21wbGV0aW9uSGFuZGxlcih3YXNBbHJlYWR5UmVxdWVzdGVkLCBzdG9yZURlY2lzaW9uKTsK
LSAgICAgICAgICAgIG1fYWN0aXZlUXVlcmllcy5yZW1vdmUoJnF1ZXJ5KTsKLSAgICAgICAgfSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RhdGlzdGljczo6Y2xlYXIoKQotewotICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3Bh
dGNoKFt0aGlzXSB7Ci0gICAgICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFu
c2FjdGlvbkNvdW50ZXI7Ci0gICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiBk
ZWxldGVUcmFuc2FjdGlvbihtX2RhdGFiYXNlKTsKLSAgICAgICAgICAgIGRlbGV0ZVRyYW5zYWN0
aW9uLmJlZ2luKCk7Ci0gICAgICAgICAgICBleGVjdXRlU1FMQ29tbWFuZChtX2RhdGFiYXNlLCAi
REVMRVRFIEZST00gQWxyZWFkeVJlcXVlc3RlZCJfcyk7Ci0gICAgICAgICAgICBleGVjdXRlU1FM
Q29tbWFuZChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gVW5jYWNoZWRSZWFzb24iX3MpOwotICAg
ICAgICAgICAgZGVsZXRlVHJhbnNhY3Rpb24uY29tbWl0KCk7Ci0gICAgICAgICAgICBtX2FwcHJv
eGltYXRlRW50cnlDb3VudCA9IDA7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9pZCBTdGF0
aXN0aWNzOjphZGRIYXNoZXNUb0RhdGFiYXNlKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaGFzaGVz
KQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKLSAg
ICBBU1NFUlQobV9kYXRhYmFzZS5pc09wZW4oKSk7Ci0KLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0
ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJJTlNFUlQgT1IgSUdOT1JFIElOVE8gQWxyZWFk
eVJlcXVlc3RlZCAoaGFzaCkgVkFMVUVTICg/KSJfcyk7Ci0gICAgaWYgKHN0YXRlbWVudC5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGhh
c2ggOiBoYXNoZXMpIHsKLSAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIGhhc2gpOwotICAg
ICAgICBpZiAoZXhlY3V0ZVNRTFN0YXRlbWVudChzdGF0ZW1lbnQpKQotICAgICAgICAgICAgKytt
X2FwcHJveGltYXRlRW50cnlDb3VudDsKLSAgICAgICAgc3RhdGVtZW50LnJlc2V0KCk7Ci0gICAg
fQotfQotCi12b2lkIFN0YXRpc3RpY3M6OmFkZFN0b3JlRGVjaXNpb25zVG9EYXRhYmFzZShjb25z
dCBIYXNoTWFwPFN0cmluZywgTmV0d29ya0NhY2hlOjpTdG9yZURlY2lzaW9uPiYgc3RvcmVEZWNp
c2lvbnMpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCkp
OwotICAgIEFTU0VSVChtX2RhdGFiYXNlLmlzT3BlbigpKTsKLQotICAgIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIklOU0VSVCBPUiBSRVBMQUNFIElOVE8g
VW5jYWNoZWRSZWFzb24gKGhhc2gsIHJlYXNvbikgVkFMVUVTICg/LCA/KSJfcyk7Ci0gICAgaWYg
KHN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBzdG9yZURlY2lzaW9ucykgewotICAgICAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgcGFpci5rZXkpOwotICAgICAgICBzdGF0ZW1lbnQuYmluZEludCgyLCBzdGF0
aWNfY2FzdDxpbnQ+KHBhaXIudmFsdWUpKTsKLSAgICAgICAgZXhlY3V0ZVNRTFN0YXRlbWVudChz
dGF0ZW1lbnQpOwotICAgICAgICBzdGF0ZW1lbnQucmVzZXQoKTsKLSAgICB9Ci19Ci0KLX0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MjAy
OGZhNjM3NjU1MjA5NzBkYTkxNzc1NTExY2U0ODkyY2RjYjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzX2gKLSNkZWZp
bmUgTmV0d29ya0NhY2hlU3RhdGlzdGljc19oCi0KLSNpbmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIK
LSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVLZXkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURh
dGFiYXNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgotI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLW5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewotCi1jbGFz
cyBTdGF0aXN0aWNzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN0YXRp
c3RpY3M+IG9wZW4oQ2FjaGUmLCBjb25zdCBTdHJpbmcmIGNhY2hlUGF0aCk7Ci0gICAgZXhwbGlj
aXQgU3RhdGlzdGljcyhDYWNoZSYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKTsKLQotICAg
IHZvaWQgY2xlYXIoKTsKLQotICAgIHZvaWQgcmVjb3JkUmV0cmlldmFsUmVxdWVzdCh1aW50NjRf
dCB3ZWJQYWdlSUQpOwotICAgIHZvaWQgcmVjb3JkTm90Q2FjaGluZ1Jlc3BvbnNlKGNvbnN0IEtl
eSYsIFN0b3JlRGVjaXNpb24pOwotICAgIHZvaWQgcmVjb3JkTm90VXNpbmdDYWNoZUZvclJlcXVl
c3QodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBSZXRyaWV2ZURlY2lzaW9uKTsKLSAgICB2b2lkIHJlY29yZFJldHJpZXZhbEZh
aWx1cmUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgVXNlRGVjaXNpb24pOwotICAgIHZvaWQgcmVjb3JkUmV2YWxpZGF0aW9uU3VjY2Vzcyh1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwotCi1wcml2YXRlOgotICAgIFdvcmtRdWV1ZSYgc2VyaWFsQmFja2dyb3VuZElPUXVldWUo
KSB7IHJldHVybiBtX3NlcmlhbEJhY2tncm91bmRJT1F1ZXVlLmdldCgpOyB9Ci0KLSAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOwotICAgIHZvaWQgYm9vdHN0
cmFwRnJvbU5ldHdvcmtDYWNoZShjb25zdCBTdHJpbmcmIG5ldHdvcmtDYWNoZVBhdGgpOwotICAg
IHZvaWQgc2hyaW5rSWZOZWVkZWQoKTsKLQotICAgIHZvaWQgYWRkSGFzaGVzVG9EYXRhYmFzZShj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGhhc2hlcyk7Ci0gICAgdm9pZCBhZGRTdG9yZURlY2lzaW9u
c1RvRGF0YWJhc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIE5ldHdvcmtDYWNoZTo6U3RvcmVEZWNp
c2lvbj4mKTsKLSAgICB2b2lkIHdyaXRlVGltZXJGaXJlZCgpOwotCi0gICAgdHlwZWRlZiBGdW5j
dGlvbjx2b2lkIChib29sIHdhc0V2ZXJSZXF1ZXN0ZWQsIGNvbnN0IE9wdGlvbmFsPFN0b3JlRGVj
aXNpb24+Jik+IFJlcXVlc3RlZENvbXBsZXRpb25IYW5kbGVyOwotICAgIGVudW0gY2xhc3MgTmVl
ZFVuY2FjaGVkUmVhc29uIHsgTm8sIFllcyB9OwotICAgIHZvaWQgcXVlcnlXYXNFdmVyUmVxdWVz
dGVkKGNvbnN0IFN0cmluZyYsIE5lZWRVbmNhY2hlZFJlYXNvbiwgUmVxdWVzdGVkQ29tcGxldGlv
bkhhbmRsZXImJik7Ci0gICAgdm9pZCBtYXJrQXNSZXF1ZXN0ZWQoY29uc3QgU3RyaW5nJiBoYXNo
KTsKLQotICAgIHN0cnVjdCBFdmVyUmVxdWVzdGVkUXVlcnkgewotICAgICAgICBTdHJpbmcgaGFz
aDsKLSAgICAgICAgYm9vbCBuZWVkVW5jYWNoZWRSZWFzb247Ci0gICAgICAgIFJlcXVlc3RlZENv
bXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwotICAgIH07Ci0KLSAgICBDYWNoZSYg
bV9jYWNoZTsKLQotICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV9hcHByb3hpbWF0ZUVudHJ5Q291
bnQgeyAwIH07Ci0KLSAgICBtdXRhYmxlIFJlZjxXb3JrUXVldWU+IG1fc2VyaWFsQmFja2dyb3Vu
ZElPUXVldWU7Ci0gICAgbXV0YWJsZSBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBFdmVy
UmVxdWVzdGVkUXVlcnk+PiBtX2FjdGl2ZVF1ZXJpZXM7Ci0gICAgV2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2UgbV9kYXRhYmFzZTsKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9oYXNoZXNUb0FkZDsKLSAg
ICBIYXNoTWFwPFN0cmluZywgTmV0d29ya0NhY2hlOjpTdG9yZURlY2lzaW9uPiBtX3N0b3JlRGVj
aXNpb25zVG9BZGQ7Ci0gICAgV2ViQ29yZTo6VGltZXIgbV93cml0ZVRpbWVyOwotfTsKLQotfQot
fQotCi0jZW5kaWYgLy8gTmV0d29ya0NhY2hlU3RhdGlzdGljc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCA4ZjRkNjFjNzE1ZDNkZDVkOGY2ZjdkZGU0YzE4MDA4NGE2ODRmYjQ3Li4xMzhjYmIw
ZGU2YTJlMzZmYTlmZjJhYmM5NzMzZGUyY2Q1MGI0YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
QEAgLTE3Niw3ICsxNzYsOCBAQCBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBT
dHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Rv
cmFnZShjYWNoZVBhdGgsIG1vZGUsICpzYWx0KSk7CiB9CiAKLXZvaWQgdHJhdmVyc2VSZWNvcmRz
RmlsZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFR5
cGUsIGNvbnN0IFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uJiBmdW5jdGlvbikKK3VzaW5nIFJl
Y29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9uID0gRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJv
b2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpPjsKK3N0YXRpYyB2
b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRUeXBlLCBjb25zdCBSZWNvcmRGaWxlVHJhdmVyc2VGdW5jdGlvbiYg
ZnVuY3Rpb24pCiB7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3Jkc1BhdGgsIFsmXShjb25z
dCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsK
ICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgKaW5kZXggYzM1NDU4MTZhZjBlMGFhYjkwMmUzMjQ0MjJmNDg0YzJkMmZl
MGJiNy4uNmViMzM1N2U4Mzg5MTBlZjcwZTdhNzJmNmU2MDFmM2I5MGFiMDY0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKQEAgLTIwOSw5ICsyMDksNSBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgbV9pbml0
aWFsV3JpdGVEZWxheSB7IDFfcyB9OwogfTsKIAotLy8gRklYTUU6IFJlbW92ZSwgdXNlZCBieSBO
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzIG9ubHkuCi11c2luZyBSZWNvcmRGaWxlVHJhdmVyc2VGdW5j
dGlvbiA9IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3Ry
aW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKT47Ci12b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNv
bnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgUmVjb3Jk
RmlsZVRyYXZlcnNlRnVuY3Rpb24mKTsKLQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IGMz
MDZjY2U0MzA2MWM0NTE5ZTI1NTViZGQ0ZjQ5ODI2MmYzYTE1NTEuLjcwYjM5YzlhN2JjNGE1OGQ3
MWRlNTVhNTc1NmU2ZGYwOWU1MThlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTExMiw4ICsx
MTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBjYWNo
ZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5IH07
Ci0gICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dn
aW5nKQotICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlv
bjo6RWZmaWNhY3lMb2dnaW5nKTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24pCiAgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hlOjpD
YWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZSk7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BF
Q1VMQVRJVkVfUkVWQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCBlYmFiZmIwNzJiNDlk
ZDViODRkZTVlYmRkZmJlMjczZTQwYzEyMWE0Li4zY2FiNTA2OThjMGUyODBjOWUwOWMxNWJlMGZk
Y2RiYTM4ZTJiOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTEyLDggKzExMiw2IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBD
YWNoZShGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CiAK
ICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBjYWNoZU9wdGlvbnMg
eyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5IH07Ci0gICAgaWYg
KHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nKQotICAg
ICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNh
Y3lMb2dnaW5nKTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElE
QVRJT04pCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24pCiAgICAgICAgIGNhY2hlT3B0aW9ucy5hZGQoTmV0d29ya0NhY2hl
OjpDYWNoZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCBlMjc1ODNlOWQwODE1ZGIzZjZkNDc1ZDMzYzRjNDEwYWEwNjE3NmVjLi45OGM0ODkzNzkxN2Ez
YmM0OTAzMDVlNzM4MzI1MTc2MzQ3ZjNhMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTc3LDcgKzc3LDYg
QEAgTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCi1OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCBlOTU5ZjY1MDUwNTMzNjdmZTFkODJlMzRl
YTc4MzdjNDZjZTJjNjk5Li5lNWU2MGViYTZkMTRhOTM1ZjY5YzhlMGFiYzVmNTI5ZTZhZjg2YTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTc1LDggKzc1LDYgQEAgTlNTdHJpbmcgKldlYktpdEpTQ0ZUTEpJVEVu
YWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2UKIHN0
YXRpYyBOU1N0cmluZyAqV2ViS2l0QXBwbGljYXRpb25EaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5o
YW5jZWRVc2VySW50ZXJmYWNlTm90aWZpY2F0aW9uID0gQCJOU0FwcGxpY2F0aW9uRGlkQ2hhbmdl
QWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlvbiI7CiAjZW5kaWYK
IAotc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dn
aW5nRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dp
bmdFbmFibGVkIjsKLQogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0U3VwcHJlc3NNZW1v
cnlQcmVzc3VyZUhhbmRsZXJEZWZhdWx0c0tleSA9IEAiV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVz
c3VyZUhhbmRsZXIiOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xMDMsOCArMTAxLDYgQEAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpCiAgICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkg
c2V0T2JqZWN0OkBZRVMgZm9yS2V5OldlYktpdEpTQ0pJVEVuYWJsZWREZWZhdWx0c0tleV07CiAg
ICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OldlYktpdEpT
Q0ZUTEpJVEVuYWJsZWREZWZhdWx0c0tleV07CiAKLSAgICBbcmVnaXN0cmF0aW9uRGljdGlvbmFy
eSBzZXRPYmplY3Q6QE5PIGZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdF
bmFibGVkRGVmYXVsdHNLZXldOwotCiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpyZWdpc3RyYXRpb25EaWN0aW9uYXJ5XTsKIH0KIApA
QCAtMjg3LDggKzI4Myw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAKICAgICBwYXJhbWV0
ZXJzLm5ldHdvcmtBVFNDb250ZXh0ID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUFUU0NvbnRleHQo
KSk7CiAKLSAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9n
Z2luZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9n
Z2luZ0VuYWJsZWREZWZhdWx0c0tleV07Ci0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHBhcmFtZXRlcnMuY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gbV9jb25maWd1cmF0aW9u
LT5jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGI0NDJm
NjcwMjUyM2U2MDE3NmVlYzk0YjdjNWZhMzhiMWJlYzdiMDkuLmVlNDI0OTE2ZmQwMmEwOTRjNzAw
ZTlmNTg4NDE2N2Q4MjQyNjA1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5p
dGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJv
cnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZyA9IGZhbHNlOwogICAgIHBhcmFtZXRlcnMucHJveHlTZXR0aW5n
cyA9IG1fbmV0d29ya1Byb3h5U2V0dGluZ3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdlMzk2N2YxMTM1NWQyMzE2OWZjNTM3
Zjg0ZTg2Yjc3ZTZlMWEyNzkuLjM0ZDE4MzVhMjY4NzFmNmMyYWRiYmFlMmRkZmJlNTA0ZjZiNWQy
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIwMiw3ICsxMjAyLDYgQEAKIAkJODMyQUUyNTIxQkUyRThDRDAwRkFBRTEwIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggKi87IH07CiAJCTgzMkVEMThDMUUyRkUx
NTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJFRDE4QTFFMkZFMTNCMDA2
QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovOyB9OwogCQk4MzRC
MjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MEUxQTgzMUE4RDAw
Q0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsKLQkJODM0QjI1MTIxQTg0
MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAv
KiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi87IH07CiAJCTgzNjAzNEEwMUFDQjM0RDYwMDYy
NjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLzsgfTsKIAkJODM3MkRCMjUxQTY3NEM4RjAwQzY5N0M1
IC8qIFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzcyREIyNDFBNjc0QzhGMDBDNjk3QzUgLyogV0tQ
YWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzcyREIyOTFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzcyREIyNzFBNjc1NjI4MDBDNjk3QzUgLyogV2ViUGFnZURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmggKi87IH07CkBAIC0zNzE1LDcgKzM3MTQsNiBAQAogCQk4MzM5
N0M2NjIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJvY2Vzc0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NDYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMzk3QzY3MjIxMjRCRDEwMEI2MjM4OCAvKiBXZWJQcm9jZXNz
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0NhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1
MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1
NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzJE
QjI0MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzczMyw3ICszNzMxLDYgQEAK
IAkJODM5QTJGMzAxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhpZ2hQZXJmb3Jt
YW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzQTBFRDMyMUY3NDdDQzYwMDMyOTlFQiAvKiBQcmVjb25uZWN0VGFzay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVjb25uZWN0VGFzay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29ubmVjdFRhc2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJlY29ubmVjdFRhc2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0JEQ0NCODFBQzVGREI2MDAzRjY0
NDEgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNENDU0RDYxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtMb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRUU1NzU5MURCN0Q2MDYwMEM3NEM1
MCAvKiBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRUU1NzVBMURCN0Q2MDYwMEM3NEM1MCAvKiBXZWJWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtODg2MSw4ICs4ODU4LDYgQEAKIAkJCQk4MzFFRUJCQjFCRDg1QzQzMDBCQjY0QzMgLyogTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggKi8sCiAJCQkJODMyQUUyNTExQkUyRThDRDAwRkFB
RTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwICovLAogCQkJCTgz
MkFFMjUwMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmggKi8sCi0JCQkJODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwICovLAotCQkJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmggKi8sCiAJCQkJRTQ0MzZFQzMxQTBDRkRCMjAwRUFEMjA0IC8qIE5l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwICovLAogCQkJCUU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAv
KiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmggKi8sCiAJCQkJODMxMDQyOEExQkQ2QjY2RjAwQTcxNUU0
IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCAqLywKQEAgLTkyNDMsNyArOTIz
OCw2IEBACiAJCQkJRTQ0MzZFQ0UxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODMxRUVCQkQxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyQUUyNTIxQkUyRThD
RDAwRkFBRTEwIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDRjFBMEQwNDBCMDBFQUQyMDQgLyog
TmV0d29ya0NhY2hlU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxMDQyOEIxQkQ2QjY2
RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTNBMTY0RDE2MzBBOUJGMDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNDEsOSArMTAyMzUsNiBAQAogCQkJCQkJ
Q3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gMTAuMTsKIAkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0g
QXV0b21hdGljOwogCQkJCQl9OwotCQkJCQlBMTc5OEI1OTIyMzQ2NEM0MDAwNzY0QkQgPSB7Ci0J
CQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSAxMC4yOwotCQkJCQl9OwogCQkJCQlFMUFDMkUy
NzIwRjdCOTRDMDBCMDg5N0QgPSB7CiAJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA5LjM7
CiAJCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IEF1dG9tYXRpYzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365164</attachid>
            <date>2019-03-19 08:42:29 -0700</date>
            <delta_ts>2019-03-19 10:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195910-20190319084228.patch</filename>
            <type>text/plain</type>
            <size>47943</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwYzA0MDY4YWQ5OTJjNTE0
MTg2YWJmMzdhYTcxYzA1NjkwZWRjNGQuLjRkMzZmMjllZjM0M2ZiMDlkZGVlYWEyMjBiN2NiNDVk
MDAwMGZjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDMtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIE5ldHdvcmtDYWNoZVN0YXRp
c3RpY3MgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1OTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRHJvcCBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzIGNvZGUuIEl0IHdhcyBhIHRlbXBvcmFyeSBl
eHBlcmltZW50IGFuZCBoYXMgbm90IGJlZW4gdXNlZCBpbiBhIGxvbmcgdGltZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OmNsZWFyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg6IFJlbW92ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpyZWdpc3RlclVzZXJEZWZhdWx0c0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
UG9vbFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE5LTAzLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjQzMTMy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBhM2RmZTYwYTcwYThiNDgy
ZjkyMDk5ZThmNmUxY2Q3YWFlZDIzMTRkLi4wMWVmMDlhNzcxYzhkNzg4ZTI2OWM0MjUzMWRkOTZl
OGRiMjhlMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNDUsNyAr
NDUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlSFRUUFNT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb247CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAg
ZW5jb2RlciA8PCBzaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmc7CiAjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGVuY29k
ZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb247CiAj
ZW5kaWYKQEAgLTExMyw4ICsxMTIsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0LmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZp
Y2FjeUxvZ2dpbmcpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKE5FVFdPUktf
Q0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IGI0Mjg3NDA5YWVlOTZjZTczMzk5ZDE0NDA1NDg0OTgzODg5NzhmNzYuLmNjMWFlN2ZiN2VlYzUx
NTFkM2M5NGQ4NDI5MmUwNGVhNGJhZmFkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKQEAgLTU2LDcgKzU2LDYgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHsKIAogICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBib29s
IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZyB7IGZhbHNlIH07CiAjaWYg
RU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGJvb2wg
c2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24geyBmYWxzZSB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKaW5kZXggYTZiYTJiMmFkMGE4MGVmZmFlNmExYmY1YjcwMDNiYTgxMGY0
YmRmOC4uZWUzMDYyOWY4NjBjMjA2OGQ1NTlmZWM1MGFjM2E5MjI5NTRiYjJjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApA
QCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCIKLSNpbmNsdWRlICJOZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVZhbGlkYXRpb24uaD4K
QEAgLTk5LDkgKzk4LDYgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PE8KICAgICB9CiAjZW5kaWYK
IAotICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKE9wdGlvbjo6RWZmaWNhY3lMb2dnaW5nKSkKLSAg
ICAgICAgbV9zdGF0aXN0aWNzID0gU3RhdGlzdGljczo6b3BlbigqdGhpcywgbV9zdG9yYWdlLT5i
YXNlUGF0aCgpKTsKLQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKE9wdGlvbjo6UmVnaXN0ZXJO
b3RpZnkpKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIC8vIFRyaWdnZXJzIHdpdGgg
Im5vdGlmeXV0aWwgLXAgY29tLmFwcGxlLldlYktpdC5DYWNoZS5kdW1wIi4KQEAgLTI3OSw5ICsy
NzUsNiBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogCiAgICAgTE9HKE5ldHdvcmtDYWNoZSwg
IihOZXR3b3JrUHJvY2VzcykgcmV0cmlldmluZyAlcyBwcmlvcml0eSAlZCIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVxdWVzdC5wcmlv
cml0eSgpKSk7CiAKLSAgICBpZiAobV9zdGF0aXN0aWNzKQotICAgICAgICBtX3N0YXRpc3RpY3Mt
PnJlY29yZFJldHJpZXZhbFJlcXVlc3QoZnJhbWVJRC5maXJzdCk7Ci0KICAgICBLZXkgc3RvcmFn
ZUtleSA9IG1ha2VDYWNoZUtleShyZXF1ZXN0KTsKICAgICBhdXRvIHByaW9yaXR5ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJlcXVlc3QucHJpb3JpdHkoKSk7CiAKQEAgLTI5Nyw5ICsyOTAsNiBA
QCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSQogCiAgICAgYXV0byByZXRyaWV2ZURlY2lzaW9uID0g
bWFrZVJldHJpZXZlRGVjaXNpb24ocmVxdWVzdCk7CiAgICAgaWYgKHJldHJpZXZlRGVjaXNpb24g
IT0gUmV0cmlldmVEZWNpc2lvbjo6WWVzKSB7Ci0gICAgICAgIGlmIChtX3N0YXRpc3RpY3MpCi0g
ICAgICAgICAgICBtX3N0YXRpc3RpY3MtPnJlY29yZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KGZy
YW1lSUQuZmlyc3QsIHN0b3JhZ2VLZXksIHJlcXVlc3QsIHJldHJpZXZlRGVjaXNpb24pOwotCiAg
ICAgICAgIGNvbXBsZXRlUmV0cmlldmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG51bGxw
dHIsIGluZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE3LDE1ICszMDcsMTIgQEAg
dm9pZCBDYWNoZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+
cmV0cmlldmUoc3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBmcmFtZUlELCBu
ZXR3b3JrUHJvY2VzcyA9IG1ha2VSZWYobmV0d29ya1Byb2Nlc3MoKSldKGF1dG8gcmVjb3JkLCBh
dXRvIHRpbWluZ3MpIG11dGFibGUgeworICAgIG1fc3RvcmFnZS0+cmV0cmlldmUoc3RvcmFnZUtl
eSwgcHJpb3JpdHksIFtyZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgbmV0d29ya1By
b2Nlc3MgPSBtYWtlUmVmKG5ldHdvcmtQcm9jZXNzKCkpXShhdXRvIHJlY29yZCwgYXV0byB0aW1p
bmdzKSBtdXRhYmxlIHsKICAgICAgICAgaW5mby5zdG9yYWdlVGltaW5ncyA9IHRpbWluZ3M7CiAK
ICAgICAgICAgaWYgKCFyZWNvcmQpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIo
TmV0d29ya1Byb2Nlc3MpIG5vdCBmb3VuZCBpbiBzdG9yYWdlIik7CiAKLSAgICAgICAgICAgIGlm
IChtX3N0YXRpc3RpY3MpCi0gICAgICAgICAgICAgICAgbV9zdGF0aXN0aWNzLT5yZWNvcmRSZXRy
aWV2YWxGYWlsdXJlKGZyYW1lSUQuZmlyc3QsIHN0b3JhZ2VLZXksIHJlcXVlc3QpOwotCiAgICAg
ICAgICAgICBjb21wbGV0ZVJldHJpZXZlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBudWxs
cHRyLCBpbmZvKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMzUx
LDggKzMzOCw2IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJCiAjZW5kaWYKICAgICAgICAgY29t
cGxldGVSZXRyaWV2ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShlbnRyeSks
IGluZm8pOwogCi0gICAgICAgIGlmIChtX3N0YXRpc3RpY3MpCi0gICAgICAgICAgICBtX3N0YXRp
c3RpY3MtPnJlY29yZFJldHJpZXZlZENhY2hlZEVudHJ5KGZyYW1lSUQuZmlyc3QsIHN0b3JhZ2VL
ZXksIHJlcXVlc3QsIHVzZURlY2lzaW9uKTsKICAgICAgICAgcmV0dXJuIHVzZURlY2lzaW9uICE9
IFVzZURlY2lzaW9uOjpOb0R1ZVRvRGVjb2RlRmFpbHVyZTsKICAgICB9KTsKIH0KQEAgLTM5MCw5
ICszNzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbgogICAgICAgICAgICAgcmVtb3ZlKGtl
eSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9zdGF0aXN0aWNzKQotICAgICAgICAgICAg
bV9zdGF0aXN0aWNzLT5yZWNvcmROb3RDYWNoaW5nUmVzcG9uc2Uoa2V5LCBzdG9yZURlY2lzaW9u
KTsKLQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQyMiwxMCArNDA0LDYg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICBTdG9yZURlY2lzaW9uIHN0b3JlRGVjaXNp
b24gPSBtYWtlU3RvcmVEZWNpc2lvbihyZXF1ZXN0LCByZXNwb25zZSwgMCk7CiAgICAgaWYgKHN0
b3JlRGVjaXNpb24gIT0gU3RvcmVEZWNpc2lvbjo6WWVzKSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGRpZG4ndCBzdG9yZSByZWRpcmVjdCwgc3RvcmVEZWNp
c2lvbj0lZCIsIHN0YXRpY19jYXN0PGludD4oc3RvcmVEZWNpc2lvbikpOwotICAgICAgICBhdXRv
IGtleSA9IG1ha2VDYWNoZUtleShyZXF1ZXN0KTsKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljcykK
LSAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkTm90Q2FjaGluZ1Jlc3BvbnNlKGtleSwg
c3RvcmVEZWNpc2lvbik7Ci0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC00
NTksOSArNDM3LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXEKIAogICAgIG1fc3RvcmFnZS0+
c3RvcmUodXBkYXRlUmVjb3JkLCB7IH0pOwogCi0gICAgaWYgKG1fc3RhdGlzdGljcykKLSAgICAg
ICAgbV9zdGF0aXN0aWNzLT5yZWNvcmRSZXZhbGlkYXRpb25TdWNjZXNzKGZyYW1lSUQuZmlyc3Qs
IGV4aXN0aW5nRW50cnkua2V5KCksIG9yaWdpbmFsUmVxdWVzdCk7Ci0KICAgICByZXR1cm4gdXBk
YXRlRW50cnk7CiB9CiAKQEAgLTU4Myw5ICs1NTgsNiBAQCB2b2lkIENhY2hlOjpjbGVhcihXYWxs
VGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgY2xlYXJpbmcgY2Fj
aGUiKTsKIAotICAgIGlmIChtX3N0YXRpc3RpY3MpCi0gICAgICAgIG1fc3RhdGlzdGljcy0+Y2xl
YXIoKTsKLQogICAgIFN0cmluZyBhbnlUeXBlOwogICAgIG1fc3RvcmFnZS0+Y2xlYXIoYW55VHlw
ZSwgbW9kaWZpZWRTaW5jZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAz
ZTQ3ODYxZjIwZjFhN2I4Y2ZhNmM5ZTZmOWU3NDUwYWRiNmExY2VkLi5jN2YzODZiM2Q3YzMxNDU1
ODBmMmFjMGUwZTM1MmVhNmI4NzE1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQ4LDcgKzQ4LDYgQEAgbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZSB7CiAKIGNsYXNzIENhY2hlOwogY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjsKLWNsYXNzIFN0YXRpc3RpY3M7CiAKIHN0cnVjdCBNYXBwZWRCb2R5IHsKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtNjUsMTIgKzY0LDEwIEBAIGVudW0gY2xhc3MgUmV0
cmlldmVEZWNpc2lvbiB7CiAgICAgTm9EdWVUb1N0cmVhbWluZ01lZGlhLAogfTsKIAotLy8gRklY
TUU6IFRoaXMgZW51bSBpcyB1c2VkIGluIHRoZSBTdGF0aXN0aWNzIGNvZGUgaW4gYSB3YXkgdGhh
dCBwcmV2ZW50cyByZW1vdmluZyBvciByZW9yZGVyaW5nIGFueXRoaW5nLgogZW51bSBjbGFzcyBT
dG9yZURlY2lzaW9uIHsKICAgICBZZXMsCiAgICAgTm9EdWVUb1Byb3RvY29sLAogICAgIE5vRHVl
VG9IVFRQTWV0aG9kLAotICAgIE5vRHVlVG9BdHRhY2htZW50UmVzcG9uc2UsIC8vIFVudXNlZC4K
ICAgICBOb0R1ZVRvTm9TdG9yZVJlc3BvbnNlLAogICAgIE5vRHVlVG9IVFRQU3RhdHVzQ29kZSwK
ICAgICBOb0R1ZVRvTm9TdG9yZVJlcXVlc3QsCkBAIC05MiwxMiArODksMTEgQEAgdXNpbmcgR2xv
YmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAv
KndlYkZyYW1lSUQqLz4KIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIE9wdGlvbiB7Ci0gICAgICAgIEVmZmljYWN5TG9nZ2lu
ZyA9IDEgPDwgMCwKICAgICAgICAgLy8gSW4gdGVzdGluZyBtb2RlIHdlIHRyeSB0byBlbGltaW5h
dGUgc291cmNlcyBvZiByYW5kb21uZXNzLiBDYWNoZSBkb2VzIG5vdCBzaHJpbmsgYW5kIHRoZXJl
IGFyZSBubyByZWFkIHRpbWVvdXRzLgotICAgICAgICBUZXN0aW5nTW9kZSA9IDEgPDwgMSwKLSAg
ICAgICAgUmVnaXN0ZXJOb3RpZnkgPSAxIDw8IDIsCisgICAgICAgIFRlc3RpbmdNb2RlID0gMSA8
PCAwLAorICAgICAgICBSZWdpc3Rlck5vdGlmeSA9IDEgPDwgMSwKICNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCi0gICAgICAgIFNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uID0gMSA8PCAzLAorICAgICAgICBTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IDEg
PDwgMiwKICNlbmRpZgogICAgIH07CiAgICAgc3RhdGljIFJlZlB0cjxDYWNoZT4gb3BlbihOZXR3
b3JrUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBPcHRpb25TZXQ8T3B0aW9uPik7
CkBAIC0xNjksNyArMTY1LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+IG1fbG93UG93ZXJNb2RlTm90aWZpZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+IG1fc3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBtX3N0YXRpc3Rp
Y3M7CiAKICAgICB1bnNpZ25lZCBtX3RyYXZlcnNlQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYmVmMWUxMWMz
Y2Y4Mzc1ZjczOTI1YjcyM2I5MTZmYjMxZWIzN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlU3RhdGlzdGljcy5oIgotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZS5oIgotI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1l
bnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVRyYW5zYWN0aW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLW5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewotCi1zdGF0aWMgY29uc3QgY2hhciogU3Rh
dGlzdGljc0RhdGFiYXNlTmFtZSA9ICJXZWJLaXRDYWNoZVN0YXRpc3RpY3MuZGIiOwotc3RhdGlj
IGNvbnN0IFNlY29uZHMgbWluaW51bVdyaXRlSW50ZXJ2YWwgeyAxMF9zIH07Ci0KLXN0YXRpYyBi
b29sIGV4ZWN1dGVTUUxDb21tYW5kKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBzcWwpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgQVNTRVJUKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25J
blByb2dyZXNzKCkpOwotICAgIEFTU0VSVChkYXRhYmFzZS5pc09wZW4oKSk7Ci0KLSAgICBib29s
IHJlc3VsdCA9IGRhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKHNxbCk7Ci0gICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIExPR19FUlJPUigiTmV0d29yayBjYWNoZSBzdGF0aXN0aWNzOiBmYWlsZWQgdG8g
ZXhlY3V0ZSBzdGF0ZW1lbnQgXCIlc1wiIGVycm9yIFwiJXNcIiIsIHNxbC51dGY4KCkuZGF0YSgp
LCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1z
dGF0aWMgYm9vbCBleGVjdXRlU1FMU3RhdGVtZW50KFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYg
c3RhdGVtZW50KQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VS
VChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZVRyYWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVz
cygpKTsKLSAgICBBU1NFUlQoc3RhdGVtZW50LmRhdGFiYXNlKCkuaXNPcGVuKCkpOwotCi0gICAg
aWYgKHN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJOZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3M6IGZhaWxlZCB0byBleGVjdXRlIHN0YXRlbWVudCBc
IiVzXCIgZXJyb3IgXCIlc1wiIiwgc3RhdGVtZW50LnF1ZXJ5KCkudXRmOCgpLmRhdGEoKSwgc3Rh
dGVtZW50LmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0
aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBh
dGgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIFN0cmluZyBkYXRh
YmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRo
LCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aXN0aWNzPihjYWNoZSwgZGF0YWJhc2VQYXRoKTsKLX0KLQotU3RhdGlzdGljczo6U3RhdGlz
dGljcyhDYWNoZSYgY2FjaGUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQotICAgIDogbV9j
YWNoZShjYWNoZSkKLSAgICAsIG1fc2VyaWFsQmFja2dyb3VuZElPUXVldWUoV29ya1F1ZXVlOjpj
cmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGUuU3RhdGlzdGljcy5CYWNrZ3JvdW5kIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5kKSkKLSAgICAs
IG1fd3JpdGVUaW1lcigqdGhpcywgJlN0YXRpc3RpY3M6OndyaXRlVGltZXJGaXJlZCkKLXsKLSAg
ICBpbml0aWFsaXplKGRhdGFiYXNlUGF0aCk7Ci19Ci0KLXZvaWQgU3RhdGlzdGljczo6aW5pdGlh
bGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgYXV0byBzdGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7Ci0KLSAg
ICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBkYXRhYmFzZVBhdGgg
PSBkYXRhYmFzZVBhdGguaXNvbGF0ZWRDb3B5KCksIG5ldHdvcmtDYWNoZVBhdGggPSBtX2NhY2hl
LnJlY29yZHNQYXRoKCksIHN0YXJ0VGltZV0gewotICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFu
c2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7Ci0KLSAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBM
T0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBPcGVuaW5nIG5ldHdvcmsgY2FjaGUg
c3RhdGlzdGljcyBkYXRhYmFzZSBhdCAlcy4uLiIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCk7Ci0gICAgICAgIG1fZGF0
YWJhc2UuZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwotICAgICAgICBpZiAoIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiTmV0d29yayBjYWNoZSBzdGF0aXN0
aWNzOiBGYWlsZWQgdG8gb3BlbiAvIGNyZWF0ZSB0aGUgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNz
IGRhdGFiYXNlIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBl
eGVjdXRlU1FMQ29tbWFuZChtX2RhdGFiYXNlLCAiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMg
QWxyZWFkeVJlcXVlc3RlZCAoaGFzaCBURVhUIFBSSU1BUlkgS0VZKSJfcyk7Ci0gICAgICAgIGV4
ZWN1dGVTUUxDb21tYW5kKG1fZGF0YWJhc2UsICJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBV
bmNhY2hlZFJlYXNvbiAoaGFzaCBURVhUIFBSSU1BUlkgS0VZLCByZWFzb24gSU5URUdFUikiX3Mp
OwotCi0gICAgICAgIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFz
ZSwgIlNFTEVDVCBjb3VudCgqKSBGUk9NIEFscmVhZHlSZXF1ZXN0ZWQiX3MpOwotICAgICAgICBp
ZiAoc3RhdGVtZW50LnByZXBhcmVBbmRTdGVwKCkgIT0gU1FMSVRFX1JPVykgewotICAgICAgICAg
ICAgTE9HX0VSUk9SKCJOZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3M6IEZhaWxlZCB0byBjb3VudCB0
aGUgbnVtYmVyIG9mIHJvd3MgaW4gQWxyZWFkeVJlcXVlc3RlZCB0YWJsZSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9hcHByb3hpbWF0ZUVudHJ5Q291bnQg
PSBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOwotCi0jaWYgIUxPR19ESVNBQkxFRAotICAgICAg
ICBhdXRvIGVsYXBzZWQgPSBXYWxsVGltZTo6bm93KCkgLSBzdGFydFRpbWU7Ci0jZWxzZQotICAg
ICAgICBVTlVTRURfUEFSQU0oc3RhcnRUaW1lKTsKLSNlbmRpZgotICAgICAgICBMT0coTmV0d29y
a0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJh
c2UgbG9hZCBjb21wbGV0ZSwgZW50cmllcz0lbHUgdGltZT0lIiBQUklpNjQgIm1zIiwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihtX2FwcHJveGltYXRlRW50cnlDb3VudCksIGVsYXBzZWQubWlsbGlzZWNv
bmRzQXM8aW50NjRfdD4oKSk7Ci0KLSAgICAgICAgaWYgKCFtX2FwcHJveGltYXRlRW50cnlDb3Vu
dCkgewotICAgICAgICAgICAgYm9vdHN0cmFwRnJvbU5ldHdvcmtDYWNoZShuZXR3b3JrQ2FjaGVQ
YXRoKTsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgICAgICAgICBlbGFwc2VkID0gV2FsbFRpbWU6
Om5vdygpIC0gc3RhcnRUaW1lOwotI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShzdGFy
dFRpbWUpOwotI2VuZGlmCi0gICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBOZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJhc2UgYm9vdHN0cmFwcGluZyBj
b21wbGV0ZSwgZW50cmllcz0lbHUgdGltZT0lIiBQUklpNjQgIm1zIiwgc3RhdGljX2Nhc3Q8c2l6
ZV90PihtX2FwcHJveGltYXRlRW50cnlDb3VudCksIGVsYXBzZWQubWlsbGlzZWNvbmRzQXM8aW50
NjRfdD4oKSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpib290
c3RyYXBGcm9tTmV0d29ya0NhY2hlKGNvbnN0IFN0cmluZyYgbmV0d29ya0NhY2hlUGF0aCkKLXsK
LSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIExPRyhOZXR3b3JrQ2FjaGUs
ICIoTmV0d29ya1Byb2Nlc3MpIEJvb3RzdHJhcHBpbmcgdGhlIG5ldHdvcmsgY2FjaGUgc3RhdGlz
dGljcyBkYXRhYmFzZSBmcm9tIHRoZSBuZXR3b3JrIGNhY2hlLi4uIik7Ci0KLSAgICBIYXNoU2V0
PFN0cmluZz4gaGFzaGVzOwotICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKG5ldHdvcmtDYWNoZVBh
dGgsICJSZXNvdXJjZSJfcywgWyZoYXNoZXNdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQm9keUJsb2Is
IGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICBpZiAoaXNCb2R5
QmxvYikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBLZXk6Okhhc2hUeXBlIGhhc2g7
Ci0gICAgICAgIGlmICghS2V5OjpzdHJpbmdUb0hhc2goaGFzaFN0cmluZywgaGFzaCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaGFzaGVzLmFkZChoYXNoU3RyaW5nKTsKLSAgICB9
KTsKLQotICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVy
IHRyYW5zYWN0aW9uQ291bnRlcjsKLSAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbiB3cml0
ZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UpOwotICAgIHdyaXRlVHJhbnNhY3Rpb24uYmVnaW4oKTsK
LQotICAgIGFkZEhhc2hlc1RvRGF0YWJhc2UoaGFzaGVzKTsKLQotICAgIHdyaXRlVHJhbnNhY3Rp
b24uY29tbWl0KCk7Ci19Ci0KLXZvaWQgU3RhdGlzdGljczo6c2hyaW5rSWZOZWVkZWQoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgY29uc3Qgc2l6ZV90IG1heEVudHJp
ZXMgPSAxMDAwMDA7Ci0KLSAgICBpZiAobV9hcHByb3hpbWF0ZUVudHJ5Q291bnQgPCBtYXhFbnRy
aWVzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBzaHJpbmtpbmcgc3RhdGlzdGljcyBjYWNoZSBtX2FwcHJveGltYXRlRW50cnlDb3Vu
dD0lbHUsIG1heEVudHJpZXM9JWx1Iiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2FwcHJveGltYXRl
RW50cnlDb3VudCksIG1heEVudHJpZXMpOwotCi0gICAgY2xlYXIoKTsKLQotICAgIHNlcmlhbEJh
Y2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIG5ldHdvcmtDYWNoZVBhdGggPSBtX2Nh
Y2hlLnJlY29yZHNQYXRoKCldIHsKLSAgICAgICAgYm9vdHN0cmFwRnJvbU5ldHdvcmtDYWNoZShu
ZXR3b3JrQ2FjaGVQYXRoKTsKLSAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJv
Y2Vzcykgc3RhdGlzdGljcyBjYWNoZSBzaHJpbmsgY29tcGxldGVkIG1fYXBwcm94aW1hdGVFbnRy
eUNvdW50PSVsdSIsIHN0YXRpY19jYXN0PHNpemVfdD4obV9hcHByb3hpbWF0ZUVudHJ5Q291bnQp
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXRyaWV2YWxSZXF1ZXN0
KHVpbnQ2NF90IHdlYlBhZ2VJRCkKLXsKLSAgICBtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCkubG9n
RGlhZ25vc3RpY01lc3NhZ2Uod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
dHJpZXZhbFJlcXVlc3RLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZZXMpOwotfQotCi12
b2lkIFN0YXRpc3RpY3M6OnJlY29yZE5vdENhY2hpbmdSZXNwb25zZShjb25zdCBLZXkmIGtleSwg
U3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9uKQotewotICAgIEFTU0VSVChzdG9yZURlY2lzaW9u
ICE9IFN0b3JlRGVjaXNpb246Olllcyk7Ci0KLSAgICBtX3N0b3JlRGVjaXNpb25zVG9BZGQuc2V0
KGtleS5oYXNoQXNTdHJpbmcoKSwgc3RvcmVEZWNpc2lvbik7Ci0gICAgaWYgKCFtX3dyaXRlVGlt
ZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV93cml0ZVRpbWVyLnN0YXJ0T25lU2hvdChtaW5pbnVt
V3JpdGVJbnRlcnZhbCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgcmV0cmlldmVEZWNpc2lvblRvRGlh
Z25vc3RpY0tleShSZXRyaWV2ZURlY2lzaW9uIHJldHJpZXZlRGVjaXNpb24pCi17Ci0gICAgc3dp
dGNoIChyZXRyaWV2ZURlY2lzaW9uKSB7Ci0gICAgY2FzZSBSZXRyaWV2ZURlY2lzaW9uOjpOb0R1
ZVRvSFRUUE1ldGhvZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6dW5zdXBwb3J0ZWRIVFRQTWV0aG9kS2V5KCk7Ci0gICAgY2FzZSBSZXRyaWV2ZURlY2lz
aW9uOjpOb0R1ZVRvQ29uZGl0aW9uYWxSZXF1ZXN0OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppc0NvbmRpdGlvbmFsUmVxdWVzdEtleSgpOwotICAgIGNh
c2UgUmV0cmlldmVEZWNpc2lvbjo6Tm9EdWVUb1JlbG9hZElnbm9yaW5nQ2FjaGU6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmlzUmVsb2FkSWdub3JpbmdD
YWNoZURhdGFLZXkoKTsKLSAgICBjYXNlIFJldHJpZXZlRGVjaXNpb246Ok5vRHVlVG9TdHJlYW1p
bmdNZWRpYToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
c3RyZWFtaW5nTWVkaWEoKTsKLSAgICBjYXNlIFJldHJpZXZlRGVjaXNpb246OlllczoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmROb3RVc2luZ0Nh
Y2hlRm9yUmVxdWVzdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYga2V5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJldHJpZXZlRGVjaXNpb24gcmV0cmll
dmVEZWNpc2lvbikKLXsKLSAgICBBU1NFUlQocmV0cmlldmVEZWNpc2lvbiAhPSBSZXRyaWV2ZURl
Y2lzaW9uOjpZZXMpOwotCi0gICAgYXV0byBoYXNoID0ga2V5Lmhhc2hBc1N0cmluZygpOwotICAg
IHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChoYXNoLCBOZWVkVW5jYWNoZWRSZWFzb246Ok5vLCBbdGhp
cywgaGFzaCwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCksIHdlYlBhZ2VJRCwgcmV0cmlldmVE
ZWNpc2lvbl0oYm9vbCB3YXNFdmVyUmVxdWVzdGVkLCBjb25zdCBPcHRpb25hbDxTdG9yZURlY2lz
aW9uPiYpIHsKLSAgICAgICAgaWYgKHdhc0V2ZXJSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIFN0
cmluZyBkaWFnbm9zdGljS2V5ID0gcmV0cmlldmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShyZXRy
aWV2ZURlY2lzaW9uKTsKLSAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1By
b2Nlc3MpIHdlYlBhZ2VJRCAlIiBQUkl1NjQgIjogJXMgd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVk
IGJ1dCB3ZSBhcmUgbm90IHVzaW5nIHRoZSBjYWNoZSwgcmVhc29uOiAlcyIsIHdlYlBhZ2VJRCwg
cmVxdWVzdFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgZGlhZ25vc3RpY0tleS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9z
dGljTWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0
d29ya0NhY2hlVW51c2VkUmVhc29uS2V5KCksIGRpYWdub3N0aWNLZXksIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlVW51c2VkUmVhc29uS2V5KCksIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV2ZXJTZWVuQmVmb3JlS2V5KCksIFdlYkNvcmU6
OlNob3VsZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgICAgIG1hcmtBc1JlcXVlc3RlZChoYXNoKTsK
LSAgICAgICAgfQotICAgIH0pOwotfQotCi1zdGF0aWMgU3RyaW5nIHN0b3JlRGVjaXNpb25Ub0Rp
YWdub3N0aWNLZXkoU3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9uKQotewotICAgIHN3aXRjaCAo
c3RvcmVEZWNpc2lvbikgewotICAgIGNhc2UgU3RvcmVEZWNpc2lvbjo6Tm9EdWVUb1Byb3RvY29s
OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpub3RIVFRQ
RmFtaWx5S2V5KCk7Ci0gICAgY2FzZSBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRUUE1ldGhvZDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6dW5zdXBwb3J0
ZWRIVFRQTWV0aG9kS2V5KCk7Ci0gICAgY2FzZSBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvQXR0YWNo
bWVudFJlc3BvbnNlOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjppc0F0dGFjaG1lbnRLZXkoKTsKLSAgICBjYXNlIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9O
b1N0b3JlUmVzcG9uc2U6Ci0gICAgY2FzZSBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvTm9TdG9yZVJl
cXVlc3Q6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNh
Y2hlQ29udHJvbE5vU3RvcmVLZXkoKTsKLSAgICBjYXNlIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9I
VFRQU3RhdHVzQ29kZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6dW5jYWNoZWFibGVTdGF0dXNDb2RlS2V5KCk7Ci0gICAgY2FzZSBTdG9yZURlY2lzaW9u
OjpOb0R1ZVRvVW5saWtlbHlUb1JldXNlOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjp1bmxpa2VseVRvUmV1c2VLZXkoKTsKLSAgICBjYXNlIFN0b3JlRGVj
aXNpb246Ok5vRHVlVG9TdHJlYW1pbmdNZWRpYToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6c3RyZWFtaW5nTWVkaWEoKTsKLSAgICBjYXNlIFN0b3JlRGVj
aXNpb246OlllczoKLSAgICAgICAgLy8gSXQgd2FzIHN0b3JlZCBidXQgY291bGQgbm90IGJlIHJl
dHJpZXZlZCBzbyBpdCBtdXN0IGhhdmUgYmVlbiBwcnVuZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vTG9uZ2VySW5DYWNo
ZUtleSgpOwotICAgIH0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgU3RhdGlzdGlj
czo6cmVjb3JkUmV0cmlldmFsRmFpbHVyZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgYXV0
byBoYXNoID0ga2V5Lmhhc2hBc1N0cmluZygpOwotICAgIHF1ZXJ5V2FzRXZlclJlcXVlc3RlZCho
YXNoLCBOZWVkVW5jYWNoZWRSZWFzb246OlllcywgW3RoaXMsIGhhc2gsIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnVybCgpLCB3ZWJQYWdlSURdKGJvb2wgd2FzUHJldmlvdXNseVJlcXVlc3RlZCwgY29u
c3QgT3B0aW9uYWw8U3RvcmVEZWNpc2lvbj4mIHN0b3JlRGVjaXNpb24pIHsKLSAgICAgICAgaWYg
KHdhc1ByZXZpb3VzbHlSZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgIFN0cmluZyBkaWFnbm9zdGlj
S2V5ID0gc3RvcmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleShzdG9yZURlY2lzaW9uLnZhbHVlKCkp
OwotICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFn
ZUlEICUiIFBSSXU2NCAiOiAlcyB3YXMgcHJldmlvdXNseSByZXF1ZXN0IGJ1dCBpcyBub3QgaW4g
dGhlIGNhY2hlLCByZWFzb246ICVzIiwgd2ViUGFnZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFz
Y2lpKCkuZGF0YSgpLCBkaWFnbm9zdGljS2V5LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAg
bV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwg
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpuZXR3b3JrQ2FjaGVGYWlsdXJlUmVhc29u
S2V5KCksIGRpYWdub3N0aWNLZXksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFn
bm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
bmV0d29ya0NhY2hlRmFpbHVyZVJlYXNvbktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6Om5ldmVyU2VlbkJlZm9yZUtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Olllcyk7
Ci0gICAgICAgICAgICBtYXJrQXNSZXF1ZXN0ZWQoaGFzaCk7Ci0gICAgICAgIH0KLSAgICB9KTsK
LX0KLQotc3RhdGljIFN0cmluZyBjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRvRGlhZ25vc3RpY0tl
eShVc2VEZWNpc2lvbiBkZWNpc2lvbikKLXsKLSAgICBzd2l0Y2ggKGRlY2lzaW9uKSB7Ci0gICAg
Y2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb1ZhcnlpbmdIZWFkZXJNaXNtYXRjaDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6dmFyeWluZ0hlYWRlck1pc21h
dGNoS2V5KCk7Ci0gICAgY2FzZSBVc2VEZWNpc2lvbjo6Tm9EdWVUb01pc3NpbmdWYWxpZGF0b3JG
aWVsZHM6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1p
c3NpbmdWYWxpZGF0b3JGaWVsZHNLZXkoKTsKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRv
RGVjb2RlRmFpbHVyZToKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpOb0R1ZVRvRXhwaXJlZFJlZGly
ZWN0OgotICAgIGNhc2UgVXNlRGVjaXNpb246OlVzZToKLSAgICBjYXNlIFVzZURlY2lzaW9uOjpW
YWxpZGF0ZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpy
ZWNvcmRSZXRyaWV2ZWRDYWNoZWRFbnRyeSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFVzZURlY2lzaW9u
IGRlY2lzaW9uKQotewotICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKLSAgICBp
ZiAoZGVjaXNpb24gPT0gVXNlRGVjaXNpb246OlVzZSkgewotICAgICAgICBMT0coTmV0d29ya0Nh
Y2hlLCAiKE5ldHdvcmtQcm9jZXNzKSB3ZWJQYWdlSUQgJSIgUFJJdTY0ICI6ICVzIGlzIGluIHRo
ZSBjYWNoZSBhbmQgaXMgdXNlZCIsIHdlYlBhZ2VJRCwgcmVxdWVzdFVSTC5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OnJldHJpZXZhbEtleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChkZWNpc2lvbiA9PSBVc2VEZWNpc2lvbjo6VmFsaWRhdGUpIHsKLSAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBSSXU2NCAiOiAlcyBp
cyBpbiB0aGUgY2FjaGUgYnV0IG5lZWRzIHJldmFsaWRhdGlvbiIsIHdlYlBhZ2VJRCwgcmVxdWVz
dFVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY2FjaGUubmV0d29ya1By
b2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6bmV0d29ya0NhY2hlS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6bmVlZHNSZXZhbGlkYXRpb25LZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpZ
ZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU3RyaW5nIGRpYWdub3N0aWNLZXkg
PSBjYWNoZWRFbnRyeVJldXNlRmFpbHVyZVRvRGlhZ25vc3RpY0tleShkZWNpc2lvbik7Ci0gICAg
TE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlEICUiIFBSSXU2NCAi
OiAlcyBpcyBpbiB0aGUgY2FjaGUgYnV0IHdhc24ndCB1c2VkLCByZWFzb246ICVzIiwgd2ViUGFn
ZUlELCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBkaWFnbm9zdGljS2V5LnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZSh3ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6bmV0d29y
a0NhY2hlUmV1c2VGYWlsdXJlS2V5KCksIGRpYWdub3N0aWNLZXksIFdlYkNvcmU6OlNob3VsZFNh
bXBsZTo6WWVzKTsKLX0KLQotdm9pZCBTdGF0aXN0aWNzOjpyZWNvcmRSZXZhbGlkYXRpb25TdWNj
ZXNzKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBVUkwgcmVxdWVzdFVSTCA9IHJlcXVlc3Qu
dXJsKCk7Ci0gICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgd2ViUGFnZUlE
ICUiIFBSSXU2NCAiOiAlcyB3YXMgc3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIiwgd2ViUGFnZUlE
LCByZXF1ZXN0VVJMLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLQotICAgIG1fY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBX
ZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5ldHdvcmtDYWNoZUtleSgpLCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldmFsaWRhdGluZ0tleSgpLCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MsIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6WWVzKTsKLX0K
LQotdm9pZCBTdGF0aXN0aWNzOjptYXJrQXNSZXF1ZXN0ZWQoY29uc3QgU3RyaW5nJiBoYXNoKQot
ewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBtX2hhc2hlc1RvQWRkLmFk
ZChoYXNoKTsKLSAgICBpZiAoIW1fd3JpdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3dy
aXRlVGltZXIuc3RhcnRPbmVTaG90KG1pbmludW1Xcml0ZUludGVydmFsKTsKLX0KLQotdm9pZCBT
dGF0aXN0aWNzOjp3cml0ZVRpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0KLSAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBo
YXNoZXNUb0FkZCA9IFdURk1vdmUobV9oYXNoZXNUb0FkZCksIHN0b3JlRGVjaXNpb25zVG9BZGQg
PSBXVEZNb3ZlKG1fc3RvcmVEZWNpc2lvbnNUb0FkZCldIHsKLSAgICAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFdlYkNvcmU6OlNR
TGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsK
LSAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24gd3JpdGVUcmFuc2FjdGlvbihtX2Rh
dGFiYXNlKTsKLSAgICAgICAgd3JpdGVUcmFuc2FjdGlvbi5iZWdpbigpOwotCi0gICAgICAgIGFk
ZEhhc2hlc1RvRGF0YWJhc2UoaGFzaGVzVG9BZGQpOwotICAgICAgICBhZGRTdG9yZURlY2lzaW9u
c1RvRGF0YWJhc2Uoc3RvcmVEZWNpc2lvbnNUb0FkZCk7Ci0KLSAgICAgICAgd3JpdGVUcmFuc2Fj
dGlvbi5jb21taXQoKTsKLSAgICB9KTsKLQotICAgIHNocmlua0lmTmVlZGVkKCk7Ci19Ci0KLXZv
aWQgU3RhdGlzdGljczo6cXVlcnlXYXNFdmVyUmVxdWVzdGVkKGNvbnN0IFN0cmluZyYgaGFzaCwg
TmVlZFVuY2FjaGVkUmVhc29uIG5lZWRVbmNhY2hlZFJlYXNvbiwgUmVxdWVzdGVkQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgLy8gUXVlcnkgcGVuZGluZyB3cml0ZXMgZmlyc3QuCi0gICAgYm9vbCB3
YXNBbHJlYWR5UmVxdWVzdGVkID0gbV9oYXNoZXNUb0FkZC5jb250YWlucyhoYXNoKTsKLSAgICBp
ZiAod2FzQWxyZWFkeVJlcXVlc3RlZCAmJiBuZWVkVW5jYWNoZWRSZWFzb24gPT0gTmVlZFVuY2Fj
aGVkUmVhc29uOjpObykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlLCBXVEY6Om51
bGxvcHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChuZWVkVW5jYWNoZWRSZWFz
b24gPT0gTmVlZFVuY2FjaGVkUmVhc29uOjpZZXMgJiYgbV9zdG9yZURlY2lzaW9uc1RvQWRkLmNv
bnRhaW5zKGhhc2gpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIG1fc3RvcmVE
ZWNpc2lvbnNUb0FkZC5nZXQoaGFzaCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gUXVlcnkgdGhlIGRhdGFiYXNlLgotICAgIGF1dG8gZXZlclJlcXVlc3RlZFF1ZXJ5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxFdmVyUmVxdWVzdGVkUXVlcnk+KEV2ZXJSZXF1ZXN0ZWRRdWVyeSB7IGhh
c2gsIG5lZWRVbmNhY2hlZFJlYXNvbiA9PSBOZWVkVW5jYWNoZWRSZWFzb246OlllcywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7Ci0gICAgYXV0byYgcXVlcnkgPSAqZXZlclJlcXVlc3Rl
ZFF1ZXJ5OwotICAgIG1fYWN0aXZlUXVlcmllcy5hZGQoV1RGTW92ZShldmVyUmVxdWVzdGVkUXVl
cnkpKTsKLSAgICBzZXJpYWxCYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCB3YXNB
bHJlYWR5UmVxdWVzdGVkLCAmcXVlcnldICgpIG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpT
UUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7
Ci0gICAgICAgIE9wdGlvbmFsPFN0b3JlRGVjaXNpb24+IHN0b3JlRGVjaXNpb247Ci0gICAgICAg
IGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhc0FscmVhZHlS
ZXF1ZXN0ZWQpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgc3Rh
dGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgaGFzaCBGUk9NIEFscmVhZHlSZXF1ZXN0ZWQgV0hF
UkUgaGFzaD0/Il9zKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSA9
PSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEs
IHF1ZXJ5Lmhhc2gpOwotICAgICAgICAgICAgICAgICAgICB3YXNBbHJlYWR5UmVxdWVzdGVkID0g
KHN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHdhc0FscmVhZHlSZXF1ZXN0ZWQgJiYgcXVlcnku
bmVlZFVuY2FjaGVkUmVhc29uKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUIHJlYXNvbiBGUk9NIFVuY2FjaGVk
UmVhc29uIFdIRVJFIGhhc2g9PyJfcyk7Ci0gICAgICAgICAgICAgICAgc3RvcmVEZWNpc2lvbiA9
IFN0b3JlRGVjaXNpb246OlllczsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnByZXBh
cmUoKSA9PSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRU
ZXh0KDEsIHF1ZXJ5Lmhhc2gpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50LnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVEZWNpc2lv
biA9IHN0YXRpY19jYXN0PFN0b3JlRGVjaXNpb24+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsICZxdWVyeSwgd2FzQWxyZWFkeVJlcXVlc3Rl
ZCwgc3RvcmVEZWNpc2lvbl0gewotICAgICAgICAgICAgcXVlcnkuY29tcGxldGlvbkhhbmRsZXIo
d2FzQWxyZWFkeVJlcXVlc3RlZCwgc3RvcmVEZWNpc2lvbik7Ci0gICAgICAgICAgICBtX2FjdGl2
ZVF1ZXJpZXMucmVtb3ZlKCZxdWVyeSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFN0YXRpc3RpY3M6OmNsZWFyKCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpc10gewotICAgICAg
ICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewotICAgICAgICAgICAgV2ViQ29yZTo6U1FMaXRl
VHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAg
ICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb24gZGVsZXRlVHJhbnNhY3Rpb24obV9k
YXRhYmFzZSk7Ci0gICAgICAgICAgICBkZWxldGVUcmFuc2FjdGlvbi5iZWdpbigpOwotICAgICAg
ICAgICAgZXhlY3V0ZVNRTENvbW1hbmQobV9kYXRhYmFzZSwgIkRFTEVURSBGUk9NIEFscmVhZHlS
ZXF1ZXN0ZWQiX3MpOwotICAgICAgICAgICAgZXhlY3V0ZVNRTENvbW1hbmQobV9kYXRhYmFzZSwg
IkRFTEVURSBGUk9NIFVuY2FjaGVkUmVhc29uIl9zKTsKLSAgICAgICAgICAgIGRlbGV0ZVRyYW5z
YWN0aW9uLmNvbW1pdCgpOwotICAgICAgICAgICAgbV9hcHByb3hpbWF0ZUVudHJ5Q291bnQgPSAw
OwotICAgICAgICB9Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU3RhdGlzdGljczo6YWRkSGFzaGVzVG9E
YXRhYmFzZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhhc2hlcykKLXsKLSAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFj
a2VyOjpoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpOwotCi0gICAgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2Rh
dGFiYXNlLCAiSU5TRVJUIE9SIElHTk9SRSBJTlRPIEFscmVhZHlSZXF1ZXN0ZWQgKGhhc2gpIFZB
TFVFUyAoPykiX3MpOwotICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBoYXNoIDogaGFzaGVzKSB7Ci0gICAg
ICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBoYXNoKTsKLSAgICAgICAgaWYgKGV4ZWN1dGVTUUxT
dGF0ZW1lbnQoc3RhdGVtZW50KSkKLSAgICAgICAgICAgICsrbV9hcHByb3hpbWF0ZUVudHJ5Q291
bnQ7Ci0gICAgICAgIHN0YXRlbWVudC5yZXNldCgpOwotICAgIH0KLX0KLQotdm9pZCBTdGF0aXN0
aWNzOjphZGRTdG9yZURlY2lzaW9uc1RvRGF0YWJhc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIE5l
dHdvcmtDYWNoZTo6U3RvcmVEZWNpc2lvbj4mIHN0b3JlRGVjaXNpb25zKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChXZWJDb3JlOjpTUUxpdGVEYXRhYmFz
ZVRyYWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKLSAgICBBU1NFUlQobV9kYXRh
YmFzZS5pc09wZW4oKSk7Ci0KLSAgICBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UsICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuY2FjaGVkUmVhc29uIChoYXNo
LCByZWFzb24pIFZBTFVFUyAoPywgPykiX3MpOwotICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBwYWlyIDog
c3RvcmVEZWNpc2lvbnMpIHsKLSAgICAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIHBhaXIua2V5
KTsKLSAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQoMiwgc3RhdGljX2Nhc3Q8aW50PihwYWlyLnZh
bHVlKSk7Ci0gICAgICAgIGV4ZWN1dGVTUUxTdGF0ZW1lbnQoc3RhdGVtZW50KTsKLSAgICAgICAg
c3RhdGVtZW50LnJlc2V0KCk7Ci0gICAgfQotfQotCi19Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTIwMjhmYTYzNzY1NTIwOTcwZGE5MTc3
NTUxMWNlNDg5MmNkY2I2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rh
dGlzdGljcy5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgTmV0d29ya0NhY2hlU3RhdGlzdGljc19oCi0jZGVmaW5lIE5ldHdvcmtDYWNoZVN0YXRp
c3RpY3NfaAotCi0jaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCi0jaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlS2V5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvVGltZXIuaD4KLSNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLX0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1uYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKLQotY2xhc3MgU3RhdGlzdGljcyB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNzPiBvcGVuKENhY2hlJiwg
Y29uc3QgU3RyaW5nJiBjYWNoZVBhdGgpOwotICAgIGV4cGxpY2l0IFN0YXRpc3RpY3MoQ2FjaGUm
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCk7Ci0KLSAgICB2b2lkIGNsZWFyKCk7Ci0KLSAg
ICB2b2lkIHJlY29yZFJldHJpZXZhbFJlcXVlc3QodWludDY0X3Qgd2ViUGFnZUlEKTsKLSAgICB2
b2lkIHJlY29yZE5vdENhY2hpbmdSZXNwb25zZShjb25zdCBLZXkmLCBTdG9yZURlY2lzaW9uKTsK
LSAgICB2b2lkIHJlY29yZE5vdFVzaW5nQ2FjaGVGb3JSZXF1ZXN0KHVpbnQ2NF90IHdlYlBhZ2VJ
RCwgY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmV0cmlldmVE
ZWNpc2lvbik7Ci0gICAgdm9pZCByZWNvcmRSZXRyaWV2YWxGYWlsdXJlKHVpbnQ2NF90IHdlYlBh
Z2VJRCwgY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAg
dm9pZCByZWNvcmRSZXRyaWV2ZWRDYWNoZWRFbnRyeSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFVzZURlY2lzaW9uKTsKLSAg
ICB2b2lkIHJlY29yZFJldmFsaWRhdGlvblN1Y2Nlc3ModWludDY0X3Qgd2ViUGFnZUlELCBjb25z
dCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLQotcHJpdmF0ZToKLSAg
ICBXb3JrUXVldWUmIHNlcmlhbEJhY2tncm91bmRJT1F1ZXVlKCkgeyByZXR1cm4gbV9zZXJpYWxC
YWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKTsgfQotCi0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VQYXRoKTsKLSAgICB2b2lkIGJvb3RzdHJhcEZyb21OZXR3b3JrQ2FjaGUo
Y29uc3QgU3RyaW5nJiBuZXR3b3JrQ2FjaGVQYXRoKTsKLSAgICB2b2lkIHNocmlua0lmTmVlZGVk
KCk7Ci0KLSAgICB2b2lkIGFkZEhhc2hlc1RvRGF0YWJhc2UoY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBoYXNoZXMpOwotICAgIHZvaWQgYWRkU3RvcmVEZWNpc2lvbnNUb0RhdGFiYXNlKGNvbnN0IEhh
c2hNYXA8U3RyaW5nLCBOZXR3b3JrQ2FjaGU6OlN0b3JlRGVjaXNpb24+Jik7Ci0gICAgdm9pZCB3
cml0ZVRpbWVyRmlyZWQoKTsKLQotICAgIHR5cGVkZWYgRnVuY3Rpb248dm9pZCAoYm9vbCB3YXNF
dmVyUmVxdWVzdGVkLCBjb25zdCBPcHRpb25hbDxTdG9yZURlY2lzaW9uPiYpPiBSZXF1ZXN0ZWRD
b21wbGV0aW9uSGFuZGxlcjsKLSAgICBlbnVtIGNsYXNzIE5lZWRVbmNhY2hlZFJlYXNvbiB7IE5v
LCBZZXMgfTsKLSAgICB2b2lkIHF1ZXJ5V2FzRXZlclJlcXVlc3RlZChjb25zdCBTdHJpbmcmLCBO
ZWVkVW5jYWNoZWRSZWFzb24sIFJlcXVlc3RlZENvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZv
aWQgbWFya0FzUmVxdWVzdGVkKGNvbnN0IFN0cmluZyYgaGFzaCk7Ci0KLSAgICBzdHJ1Y3QgRXZl
clJlcXVlc3RlZFF1ZXJ5IHsKLSAgICAgICAgU3RyaW5nIGhhc2g7Ci0gICAgICAgIGJvb2wgbmVl
ZFVuY2FjaGVkUmVhc29uOwotICAgICAgICBSZXF1ZXN0ZWRDb21wbGV0aW9uSGFuZGxlciBjb21w
bGV0aW9uSGFuZGxlcjsKLSAgICB9OwotCi0gICAgQ2FjaGUmIG1fY2FjaGU7Ci0KLSAgICBzdGQ6
OmF0b21pYzxzaXplX3Q+IG1fYXBwcm94aW1hdGVFbnRyeUNvdW50IHsgMCB9OwotCi0gICAgbXV0
YWJsZSBSZWY8V29ya1F1ZXVlPiBtX3NlcmlhbEJhY2tncm91bmRJT1F1ZXVlOwotICAgIG11dGFi
bGUgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgRXZlclJlcXVlc3RlZFF1ZXJ5Pj4gbV9h
Y3RpdmVRdWVyaWVzOwotICAgIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7Ci0g
ICAgSGFzaFNldDxTdHJpbmc+IG1faGFzaGVzVG9BZGQ7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIE5l
dHdvcmtDYWNoZTo6U3RvcmVEZWNpc2lvbj4gbV9zdG9yZURlY2lzaW9uc1RvQWRkOwotICAgIFdl
YkNvcmU6OlRpbWVyIG1fd3JpdGVUaW1lcjsKLX07Ci0KLX0KLX0KLQotI2VuZGlmIC8vIE5ldHdv
cmtDYWNoZVN0YXRpc3RpY3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggOGY0ZDYxYzcxNWQz
ZGQ1ZDhmNmY3ZGRlNGMxODAwODRhNjg0ZmI0Ny4uMTM4Y2JiMGRlNmEyZTM2ZmE5ZmYyYWJjOTcz
M2RlMmNkNTBiNGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xNzYsNyArMTc2LDggQEAg
UmVmUHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBjYWNoZVBhdGgsIE1v
ZGUgbW9kZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0b3JhZ2UoY2FjaGVQYXRoLCBtb2Rl
LCAqc2FsdCkpOwogfQogCi12b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYg
cmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLCBjb25zdCBSZWNvcmRGaWxl
VHJhdmVyc2VGdW5jdGlvbiYgZnVuY3Rpb24pCit1c2luZyBSZWNvcmRGaWxlVHJhdmVyc2VGdW5j
dGlvbiA9IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3Ry
aW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKT47CitzdGF0aWMgdm9pZCB0cmF2ZXJzZVJlY29yZHNG
aWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVHlw
ZSwgY29uc3QgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24mIGZ1bmN0aW9uKQogewogICAgIHRy
YXZlcnNlRGlyZWN0b3J5KHJlY29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25O
YW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5
cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4
IGMzNTQ1ODE2YWYwZTBhYWI5MDJlMzI0NDIyZjQ4NGMyZDJmZTBiYjcuLjZlYjMzNTdlODM4OTEw
ZWY3MGU3YTcyZjZlNjAxZjNiOTBhYjA2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0yMDksOSAr
MjA5LDUgQEAgcHJpdmF0ZToKICAgICBTZWNvbmRzIG1faW5pdGlhbFdyaXRlRGVsYXkgeyAxX3Mg
fTsKIH07CiAKLS8vIEZJWE1FOiBSZW1vdmUsIHVzZWQgYnkgTmV0d29ya0NhY2hlU3RhdGlzdGlj
cyBvbmx5LgotdXNpbmcgUmVjb3JkRmlsZVRyYXZlcnNlRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5
UGF0aCk+Owotdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQ
YXRoLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFJlY29yZEZpbGVUcmF2ZXJzZUZ1bmN0aW9u
Jik7Ci0KIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCBjMzA2Y2NlNDMwNjFjNDUxOWUyNTU1
YmRkNGY0OTgyNjJmM2ExNTUxLi43MGIzOWM5YTdiYzRhNThkNzFkZTU1YTU3NTZlNmRmMDllNTE4
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMTIsOCArMTEyLDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3
b3JrUHJvY2Vzc0MKIAogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgT3B0aW9u
U2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0Nh
Y2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwotICAgIGlmIChwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKLSAgICAgICAgY2FjaGVP
cHRpb25zLmFkZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZyk7
CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAg
ICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGlu
Z01vZGUpOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKaW5kZXggZWJhYmZiMDcyYjQ5ZGQ1Yjg0ZGU1ZWJkZGZiZTI3M2U0
MGMxMjFhNC4uM2NhYjUwNjk4YzBlMjgwYzllMDljMTViZTBmZGNkYmEzOGUyYjliYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKQEAgLTExMiw4ICsxMTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQog
ICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdv
cmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNo
ZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwotICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKLSAgICAgICAgY2FjaGVPcHRpb25zLmFk
ZChOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZyk7CiAjaWYgRU5B
QkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChwYXJh
bWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKQog
ICAgICAgICBjYWNoZU9wdGlvbnMuYWRkKE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6U3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGRlMTEyYjc1MTg2YmNkZmM0
MDAzNjJjY2JmNDI3MWJhNDUyOTQ5NC4uODUyN2NmYjlkMGM5ZTcwYmQ3NWJhZDBjZTQ2YjA1NGIz
MjdlZWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC03OCw3ICs3OCw2IEBAIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcAotTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5jcHAKIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KaW5kZXggM2Y4YjQ1OWNmZDIyM2Q0OWE4NzNmOTJkM2ZlYTJmMDhmYWQ2MmE4Yy4uOTU0
OTgzZjM3ZjI4M2QzY2Q0NzBmODhjMTg3OTE3NjFkZWM1ZGYyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC03OCw4
ICs3OCw2IEBAIE5TU3RyaW5nICpXZWJLaXRKU0NGVExKSVRFbmFibGVkRGVmYXVsdHNLZXkgPSBA
IldlYktpdEpTQ0ZUTEpJVEVuYWJsZWREZWZhdWx0c0tlCiBzdGF0aWMgTlNTdHJpbmcgKldlYktp
dEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5v
dGlmaWNhdGlvbiA9IEAiTlNBcHBsaWNhdGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNl
ZFVzZXJJbnRlcmZhY2VOb3RpZmljYXRpb24iOwogI2VuZGlmCiAKLXN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IFdlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZ0VuYWJsZWREZWZhdWx0c0tl
eSA9IEAiV2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZCI7Ci0KIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVm
YXVsdHNLZXkgPSBAIldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIjsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxF
RApAQCAtMTA2LDggKzEwNCw2IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZO
ZWVkZWQoKQogICAgIFtyZWdpc3RyYXRpb25EaWN0aW9uYXJ5IHNldE9iamVjdDpAWUVTIGZvcktl
eTpXZWJLaXRKU0NKSVRFbmFibGVkRGVmYXVsdHNLZXldOwogICAgIFtyZWdpc3RyYXRpb25EaWN0
aW9uYXJ5IHNldE9iamVjdDpAWUVTIGZvcktleTpXZWJLaXRKU0NGVExKSVRFbmFibGVkRGVmYXVs
dHNLZXldOwogCi0gICAgW3JlZ2lzdHJhdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OkBOTyBmb3JL
ZXk6V2ViS2l0TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nRW5hYmxlZERlZmF1bHRzS2V5XTsK
LQogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVm
YXVsdHM6cmVnaXN0cmF0aW9uRGljdGlvbmFyeV07CiB9CiAKQEAgLTI5MCw4ICsyODYsNiBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4
dCA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0KCkpOwogCi0gICAgcGFyYW1ldGVy
cy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBbZGVmYXVsdHMgYm9v
bEZvcktleTpXZWJLaXROZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmdFbmFibGVkRGVmYXVsdHNL
ZXldOwotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYXJhbWV0ZXJzLmN0RGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSA9IG1fY29uZmlndXJhdGlvbi0+Y3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Nv
dXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCBiNDQyZjY3MDI1MjNlNjAxNzZlZWM5NGI3
YzVmYTM4YjFiZWM3YjA5Li5lZTQyNDkxNmZkMDJhMDk0YzcwMGU5ZjU4ODQxNjdkODI0MjYwNTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29s
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9v
bFNvdXAuY3BwCkBAIC00NCw3ICs0NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAg
cGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0
UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJv
cnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
Ci0gICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcg
PSBmYWxzZTsKICAgICBwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MgPSBtX25ldHdvcmtQcm94eVNl
dHRpbmdzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4OWMxMDc2ODk1YTg5NTViYmE3MDRiYmM3NzliYzAyZWZkY2YxZWM4Li5k
NDhhNGRhNzg4ODc1ODQ0NjM5YzgzMGQwMDQ4ZGIxMjAwODJmYWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMDQsNyArMTIwNCw2
IEBACiAJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzJBRTI1MDFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5oICovOyB9OwogCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUw
IC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmggKi87IH07Ci0JCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3
b3JrQ2FjaGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlz
dGljcy5oICovOyB9OwogCQk4MzYwMzRBMDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmggKi87IH07CiAJCTgzNzJEQjI1MUE2NzRDOEYwMEM2OTdDNSAvKiBXS1BhZ2VEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3MkRCMjQxQTY3NEM4RjAwQzY5N0M1IC8qIFdLUGFnZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODM3MkRCMjkxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3
MkRCMjcxQTY3NTYyODAwQzY5N0M1IC8qIFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
ICovOyB9OwpAQCAtMzcyMyw3ICszNzIyLDYgQEAKIAkJODMzOTdDNjYyMjEyNEJEMTAwQjYyMzg4
IC8qIFdlYlByb2Nlc3NDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJQcm9jZXNzQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzM5N0M2NzIyMTI0QkQxMDBCNjIzODggLyogV2ViUHJvY2Vzc0NhY2hlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzNEIyNTEwMUE4NDJD
ODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzcyREIyNDFBNjc0QzhGMDBDNjk3QzUg
LyogV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM3NDEsNyArMzczOSw2IEBACiAJCTgzOUEyRjMwMUUyMDY3Mzkw
MDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2Ft
cGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0EwRUQzMjFGNzQ3Q0M2MDAz
Mjk5RUIgLyogUHJlY29ubmVjdFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJlY29ubmVjdFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBMEVE
MzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5lY3RUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZWNvbm5lY3RUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODNCRENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29y
a0NhY2hlU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRDQ1
NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0VFNTc1OTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1l
c3NhZ2VDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0VFNTc1QTFEQjdENjA2MDBDNzRDNTAgLyogV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NzUsOCArODg3Miw2IEBA
CiAJCQkJODMxRUVCQkIxQkQ4NUM0MzAwQkI2NEMzIC8qIE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oICovLAogCQkJCTgzMkFFMjUxMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCAqLywKIAkJCQk4MzJBRTI1MDFCRTJFOENEMDBGQUFF
MTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oICovLAotCQkJCTgzQkRD
Q0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCAqLywKLQkJ
CQk4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICov
LAogCQkJCUU0NDM2RUMzMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cCAqLywKIAkJCQlFNDQzNkVDMjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFn
ZS5oICovLAogCQkJCTgzMTA0MjhBMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJy
ZXNvdXJjZXNFbnRyeS5jcHAgKi8sCkBAIC05MjU3LDcgKzkyNTIsNiBAQAogCQkJCUU0NDM2RUNF
MUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzMUVFQkJEMUJEODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzMkFFMjUyMUJFMkU4Q0QwMEZBQUUxMCAvKiBOZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzRCMjUx
MjFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ0MzZFQ0YxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTA0MjhCMUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzQTE2NEQxNjMw
QTlCRjAwNUQ3RDIyIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVy
cyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>