<?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>169806</bug_id>
          
          <creation_ts>2017-03-16 20:38:19 -0700</creation_ts>
          <short_desc>[WebCrypto] Get rid of CryptoKeyData class and all its subclasses</short_desc>
          <delta_ts>2017-08-18 18:42:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164938</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288917</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-03-16 20:38:19 -0700</bug_when>
    <thetext>Since every CryptoKey class now has its own way to export/import bytes, we can get rid of CryptoKeyData which serves a middle layer of serializing CryptoKeys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340314</commentid>
    <comment_count>1</comment_count>
      <attachid>318558</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-18 16:45:33 -0700</bug_when>
    <thetext>Created attachment 318558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340321</commentid>
    <comment_count>2</comment_count>
      <attachid>318561</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-18 17:03:00 -0700</bug_when>
    <thetext>Created attachment 318561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340351</commentid>
    <comment_count>3</comment_count>
      <attachid>318561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 18:31:37 -0700</bug_when>
    <thetext>Comment on attachment 318561
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +          the implementations except the on on CryptoKeyRSA, which now is

typo: the one on</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340354</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-08-18 18:40:56 -0700</bug_when>
    <thetext>Committed r220949: &lt;http://trac.webkit.org/changeset/220949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340355</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-18 18:41:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/33974719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340356</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-18 18:42:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/33974720&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318558</attachid>
            <date>2017-08-18 16:45:33 -0700</date>
            <delta_ts>2017-08-18 16:57:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169806-20170818164532.patch</filename>
            <type>text/plain</type>
            <size>86761</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDk0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE3LTA4LTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYkNyeXB0b10gR2V0IHJpZCBvZiBD
cnlwdG9LZXlEYXRhIGNsYXNzIGFuZCBhbGwgaXRzIHN1YmNsYXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTgwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVwbGFjZXMgdGhlIENyeXB0b0tl
eURhdGEgdHlwZSBoaWVyYXJjaHkgCisKKyAgICAgICAgICAgIENyeXB0b0tleURhdGEKKyAgICAg
ICAgICAgICAgLSBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZQorICAgICAgICAgICAgICAtIENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzCisKKyAgICAgICAgICB3aXRoIHRoZSByZW5hbWVkIENy
eXB0b0tleVJTQUNvbXBvbmVudHMuCisKKyAgICAgICAgLSBSZW1vdmVzIHB1cmUgdmlydHVhbCBl
eHBvcnREYXRhIGZ1bmN0aW9uIG9uIENyeXB0b0tleSwgYW5kIGFsbAorICAgICAgICAgIHRoZSBp
bXBsZW1lbnRhdGlvbnMgZXhjZXB0IHRoZSBvbiBvbiBDcnlwdG9LZXlSU0EsIHdoaWNoIG5vdyBp
cworICAgICAgICAgIG5vbi12aXJ0dWFsLCBhbmQgcmV0dXJucyBhIENyeXB0b0tleVJTQUNvbXBv
bmVudHMuIFVwZGF0ZSB0aGUgb25lCisgICAgICAgICAgZXh0ZXJuYWwgY2FsbGVyLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHRvIGhhbmRsZSB0aGlzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogY3J5
cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAg
ICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5RGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoK
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9LZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0
b0tleUFFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlBRVM6OmV4cG9ydERhdGEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oOgor
ICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpleHBvcnREYXRhIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oOgorICAgICAgICAq
IGNyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5SE1BQzo6ZXhwb3J0RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5oOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydEp3ayBjb25zdCk6CisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5
UlNBQ29tcG9uZW50cy5jcHA6IENvcGllZCBmcm9tIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQUNvbXBvbmVu
dHM6OkNyeXB0b0tleVJTQUNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBQ29tcG9uZW50czo6fkNyeXB0b0tleVJTQUNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
Ojp+Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0
by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuaDogQ29waWVkIGZyb20gY3J5cHRvL2tleXMv
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEpOgorICAg
ICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9LZXlSYXc6OmV4cG9ydERhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0
by9rZXlzL0NyeXB0b0tleVJhdy5oOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNB
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByaXZhdGVLZXlDb21wb25lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSBjb25zdCk6CisKIDIwMTctMDgtMTggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgV2Vi
S2l0U3VidGxlQ3J5cHRvIGludGVyZmFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMzM0LDExICsxMzM0LDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCiAKICAgICBjcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuY3BwCi0gICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2Vx
dWVuY2UuY3BwCi0gICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3Bw
CiAgICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCiAgICAgY3J5cHRvL2tleXMvQ3J5cHRv
S2V5SE1BQy5jcHAKICAgICBjcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCisgICAgY3J5cHRv
L2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHAKICAgICBjcnlwdG8va2V5cy9DcnlwdG9L
ZXlSYXcuY3BwCiAKICAgICBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ5Myw5ICs2NDkzLDYgQEAKIAkJRTEyNUY4NDUx
ODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NDMxODI0MjVDOTAw
RDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwICovOyB9OwogCQlFMTI1Rjg0
RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODRCMTgyNDI4OUQwMEQ4NENEOSAvKiBD
cnlwdG9LZXlBRVMuY3BwICovOyB9OwogCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5
cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTI1Rjg0QzE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmggKi87IH07Ci0JCUUx
MjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1RDE4MkMyREY2MDBEODRDRDkg
LyogQ3J5cHRvS2V5RGF0YS5oICovOyB9OwotCQlFMTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkgLyog
Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NjExODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tl
eURhdGFPY3RldFNlcXVlbmNlLmNwcCAqLzsgfTsKLQkJRTEyNUY4NjQxODJDMzAzQTAwRDg0Q0Q5
IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg2MjE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLzsgfTsKIAkJRTEyNzE5QzcwRUVFQzE2ODAwRjYxMjEz
IC8qIE5hdmlnYXRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxMjcxOUM2MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggKi87
IH07CiAJCUUxMjcxOUNBMEVFRUMyMTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjcxOUM5MEVFRUMy
MTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCAqLzsgfTsKIAkJRTEyNzFBMEIwRUVFQzc3
QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNzFBMEEwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5h
dmlnYXRvci5oICovOyB9OwpAQCAtNjYwNCw4ICs2NjAxLDggQEAKIAkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJFNTEyQjBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmNwcCAqLzsgfTsKIAkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oICovOyB9Owog
CQlFMUMyNjZEODE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFDMjY2RDYxODMxN0FCNDAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81TWFjLmNwcCAqLzsgfTsKLQkJRTFDMjY2REUxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cy5jcHAgKi87IH07Ci0JCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIzMyAvKiBD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMjY2REQxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzLmggKi87IH07CisJCUUxQzI2NkRFMTgzMTlGMzEwMDNGOEIzMyAvKiBD
cnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FD
b21wb25lbnRzLmNwcCAqLzsgfTsKKwkJRTFDMjY2REYxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0
b0tleVJTQUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FDb21wb25l
bnRzLmggKi87IH07CiAJCUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMz
NjJFRDBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQlFMUMz
NjJGMDBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNjJFRTBFQUYyQUE5MDA3NDEw
QkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgKi87IH07CiAJCUUxQzM2QzAzMEVCMDc2RDYwMDc0
MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFs
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE1MDc3LDkgKzE1MDc0LDYgQEAKIAkJRTEyNUY4NDMxODI0MjVDOTAwRDg0Q0Q5IC8qIENy
eXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxMjVGODRCMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5QUVTLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4NEMxODI0Mjg5RDAwRDg0Q0Q5IC8q
IENyeXB0b0tleUFFUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9L
ZXlBRVMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEyNUY4NUQxODJDMkRGNjAw
RDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvS2V5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1Rjg2
MTE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVu
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1Rjg2MjE4MkMzMDNBMDBE
ODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNzE5QzYwRUVFQzE2ODAwRjYxMjEzIC8qIE5hdmlnYXRvckJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI3MTlDOTBFRUVDMjEzMDBGNjEyMTMgLyog
TmF2aWdhdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
YXZpZ2F0b3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNzFBMEEw
RUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1MjAxLDggKzE1MTk1LDggQEAKIAkJRTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBYU0xUVW5pY29kZVNvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJF
NTEyQzBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRVbmljb2RlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUMyNjZENjE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMUMyNjZEQzE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUMyNjZERDE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFDMjY2REMxODMxOUYz
MTAwM0Y4QjMzIC8qIENyeXB0b0tleVJTQUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9L
ZXlSU0FDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0
b0tleVJTQUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzYy
RUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUMzNjJFRTBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckxvY2F0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzZDMDIwRUIwNzZENjAwNzQx
MEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRE9NR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU2MCwxMCArMjQ1NTQsOCBAQAogCQkJCUUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlw
dG9LZXlBRVMuaCAqLywKIAkJCQk3QzlBQ0E4RjFGM0NDMEFBMDBGM0FBMDkgLyogQ3J5cHRvS2V5
QWxnb3JpdGhtLmggKi8sCiAJCQkJN0M5QUNBOTExRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tl
eUFsZ29yaXRobS5pZGwgKi8sCi0JCQkJRTEyNUY4NjExODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCAqLywKLQkJCQlFMTI1Rjg2MjE4MkMzMDNBMDBEODRD
RDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLywKLQkJCQlFMUMyNjZEQzE4MzE5
RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3BwICovLAotCQkJCUUx
QzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oICov
LAorCQkJCUUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRz
LmNwcCAqLywKKwkJCQlFMUMyNjZERDE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cy5oICovLAogCQkJCTU3NTBBOTcyMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlF
Qy5jcHAgKi8sCiAJCQkJNTc1MEE5NzMxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tleUVDLmgg
Ki8sCiAJCQkJRTEyNUY4MzMxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuY3BwICov
LApAQCAtMjQ3NDEsNyArMjQ3MzMsNiBAQAogCQkJCUUxNTdBOEUyMTgxNzNBM0EwMDlGODIxRCAv
KiBDcnlwdG9LZXkuY3BwICovLAogCQkJCUUxNTdBOEUzMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlw
dG9LZXkuaCAqLywKIAkJCQlFMTU3QThEQzE4MTcyQzJDMDA5RjgyMUQgLyogQ3J5cHRvS2V5Lmlk
bCAqLywKLQkJCQlFMTI1Rjg1RDE4MkMyREY2MDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oICov
LAogCQkJCTdDOUFDQUM5MUY0MEI5NkEwMEYzQUEwOSAvKiBDcnlwdG9LZXlGb3JtYXQuaCAqLywK
IAkJCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovLAogCQkJ
CUUxRjgwQjg0MTgzMTcyNDcwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmlkbCAqLywKQEAgLTI2
ODg2LDkgKzI2ODc3LDcgQEAKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRv
S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5
cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzlBQ0E5MjFGM0NDMEFBMDBGM0FBMDkg
LyogQ3J5cHRvS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTI1Rjg1RTE4MkMy
REY2MDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEyNUY4
NjQxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFMUMyNjZERjE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIz
MyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzUwQTk3
NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MjVGODM2MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUY4MEI4ODE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDkzNyw4ICszMDkyNiw3IEBACiAJCQkJRTE5QUMzRjQxODI0REM3OTAwMzQ5
NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3
QThFNDE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxMjVGODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxQzI2NkRFMTgzMTlGMzEwMDNGOEIzMyAv
KiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUMy
NjZERTE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1NzUwQTk3NDFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTc1MEE5N0IxRTY5MTYxNjAwNzA1QzRBIC8qIENyeXB0b0tl
eUVDTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODM1MTgyMkYxOEEwMEQ4NENEOSAv
KiBDcnlwdG9LZXlITUFDLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lv
biAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTAgQEAKICNpbmNsdWRlICJC
bG9iLmgiCiAjaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVT
LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKLSNpbmNsdWRlICJD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0tleVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcu
aCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKQEAgLTEzMTUsMjQg
KzEzMTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgd3JpdGUo
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKKyAgICB2b2lkIHdyaXRlKENy
eXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQ
dWJsaWM6CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGlj
OgogICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWc6OlB1Ymxp
Yyk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlR5cGU6OlByaXZhdGU6CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50czo6VHlwZTo6UHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleUFzeW1tZXRy
aWNUeXBlU3VidGFnOjpQcml2YXRlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZvaWQgd3JpdGUoY29uc3QgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMm
IGtleSkKKyAgICB2b2lkIHdyaXRlKGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmIGtleSkK
ICAgICB7CiAgICAgICAgIHdyaXRlKGtleS50eXBlKCkpOwogICAgICAgICB3cml0ZShrZXkubW9k
dWx1cygpKTsKICAgICAgICAgd3JpdGUoa2V5LmV4cG9uZW50KCkpOwotICAgICAgICBpZiAoa2V5
LnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGljKQorICAg
ICAgICBpZiAoa2V5LnR5cGUoKSA9PSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJs
aWMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgd3JpdGUoa2V5LnByaXZhdGVFeHBv
bmVudCgpKTsKQEAgLTE0MjcsNyArMTQyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZShpc1Jlc3RyaWN0ZWRUb0hhc2gpOwogICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFRvSGFz
aCkKICAgICAgICAgICAgICAgICB3cml0ZShoYXNoKTsKLSAgICAgICAgICAgIHdyaXRlKGRvd25j
YXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPigqa2V5LT5leHBvcnREYXRhKCkpKTsKKyAg
ICAgICAgICAgIHdyaXRlKGRvd25jYXN0PENyeXB0b0tleVJTQT4oKmtleSktPmV4cG9ydERhdGEo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjkzLDcgKzIy
OTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlm
ICh0eXBlID09IENyeXB0b0tleUFzeW1tZXRyaWNUeXBlU3VidGFnOjpQdWJsaWMpIHsKLSAgICAg
ICAgICAgIGF1dG8ga2V5RGF0YSA9IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQ
dWJsaWMobW9kdWx1cywgZXhwb25lbnQpOworICAgICAgICAgICAgYXV0byBrZXlEYXRhID0gQ3J5
cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHVibGljKG1vZHVsdXMsIGV4cG9uZW50KTsKICAg
ICAgICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNo
LCBpc1Jlc3RyaWN0ZWRUb0hhc2gsICprZXlEYXRhLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAg
ICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoa2V5KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMjMwOCw3ICsyMzA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgICAgICBpZiAoIXByaW1lQ291bnQpIHsKLSAgICAgICAgICAgIGF1dG8ga2V5RGF0
YSA9IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKG1vZHVsdXMsIGV4
cG9uZW50LCBwcml2YXRlRXhwb25lbnQpOworICAgICAgICAgICAgYXV0byBrZXlEYXRhID0gQ3J5
cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZShtb2R1bHVzLCBleHBvbmVudCwgcHJp
dmF0ZUV4cG9uZW50KTsKICAgICAgICAgICAgIGF1dG8ga2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoYWxnb3JpdGhtLCBoYXNoLCBpc1Jlc3RyaWN0ZWRUb0hhc2gsICprZXlEYXRhLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoa2V5KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjMxNyw5ICsyMzE2LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKHByaW1lQ291bnQgPCAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8gZmlyc3RQcmltZUluZm87
Ci0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8gc2Vjb25kUHJp
bWVJbmZvOwotICAgICAgICBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1l
SW5mbz4gb3RoZXJQcmltZUluZm9zKHByaW1lQ291bnQgLSAyKTsKKyAgICAgICAgQ3J5cHRvS2V5
UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZpcnN0UHJpbWVJbmZvOworICAgICAgICBDcnlwdG9L
ZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8gc2Vjb25kUHJpbWVJbmZvOworICAgICAgICBWZWN0
b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3MocHJp
bWVDb3VudCAtIDIpOwogCiAgICAgICAgIGlmICghcmVhZChmaXJzdFByaW1lSW5mby5wcmltZUZh
Y3RvcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzQwLDcgKzIzMzksNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGF1dG8ga2V5RGF0YSA9IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2
YXRlV2l0aEFkZGl0aW9uYWxEYXRhKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2YXRlRXhwb25lbnQs
IGZpcnN0UHJpbWVJbmZvLCBzZWNvbmRQcmltZUluZm8sIG90aGVyUHJpbWVJbmZvcyk7CisgICAg
ICAgIGF1dG8ga2V5RGF0YSA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVX
aXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmly
c3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQcmltZUluZm9zKTsKICAgICAgICAg
YXV0byBrZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGlzUmVzdHJp
Y3RlZFRvSGFzaCwgKmtleURhdGEsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICByZXN1
bHQgPSBXVEZNb3ZlKGtleSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG0uaAkocmV2aXNpb24gMjIwOTQxKQorKysgU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyczsKIGNsYXNzIENyeXB0b0tleTsKLWNsYXNzIENyeXB0b0tleURhdGE7CiBjbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiB1c2luZyBLZXlEYXRhID0gVmFyaWFudDxWZWN0b3I8
dWludDhfdD4sIEpzb25XZWJLZXk+OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0
b0tleS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaAko
cmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlcjsKLWNsYXNzIENyeXB0b0tleURh
dGE7CiAKIGVudW0gY2xhc3MgQ3J5cHRvS2V5Q2xhc3MgewogICAgIEFFUywKQEAgLTEwNiw4ICsx
MDUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2FnZXNCaXRtYXAoQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2UpIHsgbV91c2FnZXMgPSB1c2FnZTsgfTsKICAgICBib29sIGFsbG93cyhDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkgY29uc3QgeyByZXR1cm4gdXNhZ2UgPT0gKG1fdXNhZ2Vz
ICYgdXNhZ2UpOyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRh
PiBleHBvcnREYXRhKCkgY29uc3QgPSAwOwotCiAgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBy
YW5kb21EYXRhKHNpemVfdCk7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9D
cnlwdG9LZXlEYXRhLmgJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9LZXlEYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDcnlwdG9LZXlEYXRhIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDcnlwdG9LZXlEYXRhKTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEZvcm1h
dCB7Ci0gICAgICAgIE9jdGV0U2VxdWVuY2UsCi0gICAgICAgIFJTQUNvbXBvbmVudHMKLSAgICB9
OwotCi0gICAgQ3J5cHRvS2V5RGF0YShGb3JtYXQgZm9ybWF0KQotICAgICAgICA6IG1fZm9ybWF0
KGZvcm1hdCkKLSAgICB7Ci0gICAgfQotICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGEoKSB7IH0K
LQotICAgIEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQotCi1wcml2
YXRlOgotICAgIEZvcm1hdCBtX2Zvcm1hdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NSWVBUT19LRVlfREFUQShUb0NsYXNz
TmFtZSwgRm9ybWF0KSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRv
Q2xhc3NOYW1lKSBcCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkNyeXB0
b0tleURhdGEmIGtleURhdGEpIHsgcmV0dXJuIGtleURhdGEuZm9ybWF0KCkgPT0gV2ViQ29yZTo6
Rm9ybWF0OyB9IFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotI2VuZGlmIC8vIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL0NyeXB0b0tleURhdGEuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUK
IyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19D
QkMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCShyZXZpc2lvbiAyMjA5NDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcy5oIgog
I2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cu
Y3BwCShyZXZpc2lvbiAyMjA5NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2
IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXMuaCIKICNpbmNsdWRl
ICJDcnlwdG9LZXlBRVMuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5o
IgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhNQUMuY3BwCShyZXZpc2lvbiAyMjA5NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNiBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3Rl
dFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3Bw
CShyZXZpc2lvbiAyMjA5NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zLmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
S2V5UlNBLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAJKHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zLmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
S2V5UlNBLmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUC5jcHAJKHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zLmgi
Ci0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0tleVJTQUdDcnlwdC5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksOCArMjksOCBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlS
U0FDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hh
bmRsZS5oPgpAQCAtNjksMTAgKzY5LDEwIEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZ2V0UlNB
S2V5UGFyYW1ldGUKICAgICByZXR1cm4gV1RGTW92ZShkYXRhLnZhbHVlKCkpOwogfQogCi1SZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBo
YXNIYXNoLCBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQorUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgY29u
c3QgQ3J5cHRvS2V5UlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewogICAgIC8vIFdoZW4gY3JlYXRpbmcgYSBwcml2
YXRlIGtleSwgd2UgcmVxdWlyZSB0aGUgcCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KLSAgICBp
ZiAoa2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6OlBy
aXZhdGUgJiYgIWtleURhdGEuaGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKCkpCisg
ICAgaWYgKGtleURhdGEudHlwZSgpID09IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlBy
aXZhdGUgJiYgIWtleURhdGEuaGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQnV0IHdlIGRvbid0IGN1cnJlbnRseSBz
dXBwb3J0IGNyZWF0aW5nIGtleXMgd2l0aCBhbnkgYWRkaXRpb25hbCBwcmltZSBpbmZvcm1hdGlv
bi4KQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpj
cmVhdAogICAgICAgICB2YWxpZCAmPSAha2V5RGF0YS5tb2R1bHVzKCkuaXNFbXB0eSgpICYmICFr
ZXlEYXRhLmV4cG9uZW50KCkuaXNFbXB0eSgpOwogCiAgICAgICAgIC8vIEZvciBwcml2YXRlIGtl
eXMsIHdlIHJlcXVpcmUgdGhlIHByaXZhdGUgZXhwb25lbnQsIGFzIHdlbGwgYXMgcCBhbmQgcSBw
cmltZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgaWYgKGtleURhdGEudHlwZSgpID09IENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlKQorICAgICAgICBpZiAoa2V5RGF0YS50
eXBlKCkgPT0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZSkKICAgICAgICAg
ICAgIHZhbGlkICY9ICFrZXlEYXRhLnByaXZhdGVFeHBvbmVudCgpLmlzRW1wdHkoKSAmJiAha2V5
RGF0YS5maXJzdFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmlzRW1wdHkoKSAmJiAha2V5RGF0YS5z
ZWNvbmRQcmltZUluZm8oKS5wcmltZUZhY3Rvci5pc0VtcHR5KCk7CiAKICAgICAgICAgaWYgKCF2
YWxpZCkKQEAgLTk2LDEwICs5NiwxMCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlS
U0E6OmNyZWF0CiAKICAgICBDcnlwdG9LZXlUeXBlIGtleVR5cGU7CiAgICAgc3dpdGNoIChrZXlE
YXRhLnR5cGUoKSkgewotICAgIGNhc2UgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6
OlB1YmxpYzoKKyAgICBjYXNlIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYzoK
ICAgICAgICAga2V5VHlwZSA9IENyeXB0b0tleVR5cGU6OlB1YmxpYzsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZToKKyAg
ICBjYXNlIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlByaXZhdGU6CiAgICAgICAgIGtl
eVR5cGUgPSBDcnlwdG9LZXlUeXBlOjpQcml2YXRlOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC02MzAsMTMgKzYzMCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9L
ZXlSCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihuYW1lLCBt
b2R1bHVzTGVuZ3RoLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAorc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+IENyeXB0b0tleVJTQTo6ZXhwb3J0
RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGV4dHJhY3RhYmxlKCkpOwogCiAgICAgc3dpdGNo
ICh0eXBlKCkpIHsKICAgICBjYXNlIENyeXB0b0tleVR5cGU6OlB1YmxpYzoKLSAgICAgICAgcmV0
dXJuIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoZ2V0UlNBS2V5UGFy
YW1ldGVyKG1fcGxhdGZvcm1LZXksICJuIiksIGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3Jt
S2V5LCAiZSIpKTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0
ZVB1YmxpYyhnZXRSU0FLZXlQYXJhbWV0ZXIobV9wbGF0Zm9ybUtleSwgIm4iKSwgZ2V0UlNBS2V5
UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJlIikpOwogICAgIGNhc2UgQ3J5cHRvS2V5VHlwZTo6
UHJpdmF0ZTogewogICAgICAgICBhdXRvIHBhcmFtZXRlck1QSSA9CiAgICAgICAgICAgICBbXShn
Y3J5X3NleHBfdCBzZXhwLCBjb25zdCBjaGFyKiBuYW1lKSAtPiBnY3J5X21waV90IHsKQEAgLTY1
NCwxMSArNjU0LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXkK
ICAgICAgICAgaWYgKCFkTVBJIHx8ICFwTVBJIHx8ICFxTVBJKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5m
byBmaXJzdFByaW1lSW5mbzsKKyAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJ
bmZvIGZpcnN0UHJpbWVJbmZvOwogICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShwTVBJ
KSkKICAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLnByaW1lRmFjdG9yID0gV1RGTW92ZShkYXRh
LnZhbHVlKCkpOwogCi0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUlu
Zm8gc2Vjb25kUHJpbWVJbmZvOworICAgICAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmlt
ZUluZm8gc2Vjb25kUHJpbWVJbmZvOwogICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShx
TVBJKSkKICAgICAgICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IFdURk1vdmUo
ZGF0YS52YWx1ZSgpKTsKIApAQCAtNjk3LDkgKzY5Nyw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlEYXRhPiBDcnlwdG9LZXkKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IG1waURhdGEoZE1Q
SSkpCiAgICAgICAgICAgICBwcml2YXRlRXhwb25lbnQgPSBXVEZNb3ZlKGRhdGEudmFsdWUoKSk7
CiAKLSAgICAgICAgcmV0dXJuIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2
YXRlV2l0aEFkZGl0aW9uYWxEYXRhKAorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YSgKICAgICAgICAgICAgIGdldFJT
QUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAibiIpLCBnZXRSU0FLZXlQYXJhbWV0ZXIobV9w
bGF0Zm9ybUtleSwgImUiKSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpLAotICAgICAgICAgICAg
V1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSwgVmVjdG9y
PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CisgICAgICAgICAg
ICBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0
b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiB7IH0pOwogICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAkocmV2aXNpb24gMjIwOTQwKQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFy
YW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJD
cnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiSnNvbldlYktleS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAt
MTM2LDExICsxMzUsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlB
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QWVzS2V5QWxnb3JpdGhtPihDcnlwdG9BbGdv
cml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVyKCkpLCBt
X2tleS5zaXplKCkgKiA4KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENy
eXB0b0tleUFFUzo6ZXhwb3J0RGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U+KG1fa2V5KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAkocmV2aXNpb24gMjIwOTQw
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4LDcgKzg4LDYgQEAgcHJpdmF0ZToKICAgICBDcnlwdG9LZXlBRVMoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5LCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxn
b3JpdGhtPiBidWlsZEFsZ29yaXRobSgpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9LZXlEYXRhPiBleHBvcnREYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8
dWludDhfdD4gbV9rZXk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjIw
OTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2Vx
dWVuY2UuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5o
IgotCi0jaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U6OkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKLSAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5
RGF0YTo6Rm9ybWF0OjpPY3RldFNlcXVlbmNlKQotICAgICwgbV9rZXlEYXRhKGRhdGEpCi17Ci19
Ci0KLUNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlOjp+Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVu
Y2UoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
U1VCVExFX0NSWVBUTykKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURh
dGFPY3RldFNlcXVlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaAkocmV2aXNpb24gMjIwOTQwKQorKysgU291
cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkNyeXB0b0tleURhdGEuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBD
cnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSBmaW5hbCA6IHB1YmxpYyBDcnlwdG9LZXlEYXRhIHsK
LXB1YmxpYzoKLSAgICBleHBsaWNpdCBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mKTsKLSAgICB2aXJ0dWFsIH5DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5j
ZSgpOwotCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBvY3RldFNlcXVlbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlEYXRhOyB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
a2V5RGF0YTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19DUllQVE9fS0VZX0RBVEEoQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UsIENyeXB0
b0tleURhdGE6OkZvcm1hdDo6T2N0ZXRTZXF1ZW5jZSkKLQotI2VuZGlmIC8vIEVOQUJMRShTVUJU
TEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpl
b2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmNwcAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmgiCi0KLSNpZiBFTkFC
TEUoU1VCVExFX0NSWVBUTykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQotICAgIDog
Q3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVudHMpCi0gICAg
LCBtX3R5cGUoVHlwZTo6UHVibGljKQotICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCi0gICAgLCBt
X2V4cG9uZW50KGV4cG9uZW50KQotewotfQotCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVj
dG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURh
dGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQdWJsaWMpCi0g
ICAgLCBtX21vZHVsdXMoV1RGTW92ZShtb2R1bHVzKSkKLSAgICAsIG1fZXhwb25lbnQoV1RGTW92
ZShleHBvbmVudCkpCi17Ci19Ci0KLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0
ZUV4cG9uZW50KQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6OlJT
QUNvbXBvbmVudHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKLSAgICAsIG1fbW9kdWx1
cyhtb2R1bHVzKQotICAgICwgbV9leHBvbmVudChleHBvbmVudCkKLSAgICAsIG1fcHJpdmF0ZUV4
cG9uZW50KHByaXZhdGVFeHBvbmVudCkKLSAgICAsIG1faGFzQWRkaXRpb25hbFByaXZhdGVLZXlQ
YXJhbWV0ZXJzKGZhbHNlKQotewotfQotCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9y
PHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCkK
LSAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRz
KQotICAgICwgbV90eXBlKFR5cGU6OlByaXZhdGUpCi0gICAgLCBtX21vZHVsdXMoV1RGTW92ZSht
b2R1bHVzKSkKLSAgICAsIG1fZXhwb25lbnQoV1RGTW92ZShleHBvbmVudCkpCi0gICAgLCBtX3By
aXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCkpCi0gICAgLCBtX2hhc0FkZGl0
aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycyhmYWxzZSkKLXsKLX0KLQotQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQsIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmlt
ZUluZm8sIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvLCBjb25zdCBWZWN0b3I8UHJp
bWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlE
YXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVudHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkK
LSAgICAsIG1fbW9kdWx1cyhtb2R1bHVzKQotICAgICwgbV9leHBvbmVudChleHBvbmVudCkKLSAg
ICAsIG1fcHJpdmF0ZUV4cG9uZW50KHByaXZhdGVFeHBvbmVudCkKLSAgICAsIG1faGFzQWRkaXRp
b25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKHRydWUpCi0gICAgLCBtX2ZpcnN0UHJpbWVJbmZvKGZp
cnN0UHJpbWVJbmZvKQotICAgICwgbV9zZWNvbmRQcmltZUluZm8oc2Vjb25kUHJpbWVJbmZvKQot
ICAgICwgbV9vdGhlclByaW1lSW5mb3Mob3RoZXJQcmltZUluZm9zKQotewotfQotCi1DcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVp
bnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50
OF90PiYmIHByaXZhdGVFeHBvbmVudCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFByaW1l
SW5mbyYmIHNlY29uZFByaW1lSW5mbywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1lSW5m
b3MpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9u
ZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQotICAgICwgbV9tb2R1bHVzKFdURk1v
dmUobW9kdWx1cykpCi0gICAgLCBtX2V4cG9uZW50KFdURk1vdmUoZXhwb25lbnQpKQotICAgICwg
bV9wcml2YXRlRXhwb25lbnQoV1RGTW92ZShwcml2YXRlRXhwb25lbnQpKQotICAgICwgbV9oYXNB
ZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnModHJ1ZSkKLSAgICAsIG1fZmlyc3RQcmltZUlu
Zm8oV1RGTW92ZShmaXJzdFByaW1lSW5mbykpCi0gICAgLCBtX3NlY29uZFByaW1lSW5mbyhXVEZN
b3ZlKHNlY29uZFByaW1lSW5mbykpCi0gICAgLCBtX290aGVyUHJpbWVJbmZvcyhXVEZNb3ZlKG90
aGVyUHJpbWVJbmZvcykpCi17Ci19Ci0KLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjp+Q3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaAko
cmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDExOCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCi0jaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0jaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMgZmluYWwg
OiBwdWJsaWMgQ3J5cHRvS2V5RGF0YSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsK
LSAgICAgICAgUHVibGljLAotICAgICAgICBQcml2YXRlCi0gICAgfTsKLQotICAgIHN0cnVjdCBQ
cmltZUluZm8gewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcHJpbWVGYWN0b3I7Ci0gICAgICAg
IFZlY3Rvcjx1aW50OF90PiBmYWN0b3JDUlRFeHBvbmVudDsKLSAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGZhY3RvckNSVENvZWZmaWNpZW50OwotICAgIH07Ci0KLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPiBjcmVhdGVQdWJsaWMoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50
KSk7Ci0gICAgfQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+IGNyZWF0ZVB1YmxpYyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8
dWludDhfdD4mJiBleHBvbmVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSkpOwotICAgIH0KLQotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0
ZVByaXZhdGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhtb2R1bHVzLCBleHBvbmVu
dCwgcHJpdmF0ZUV4cG9uZW50KSk7Ci0gICAgfQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGUoVmVjdG9yPHVpbnQ4X3Q+
JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYm
IHByaXZhdGVFeHBvbmVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhw
b25lbnQpKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBjb25zdCBQcmltZUluZm8m
IGZpcnN0UHJpbWVJbmZvLCBjb25zdCBQcmltZUluZm8mIHNlY29uZFByaW1lSW5mbywgY29uc3Qg
VmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50cyhtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50LCBm
aXJzdFByaW1lSW5mbywgc2Vjb25kUHJpbWVJbmZvLCBvdGhlclByaW1lSW5mb3MpKTsKLSAgICB9
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4g
Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVz
LCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4
cG9uZW50LCBQcmltZUluZm8mJiBmaXJzdFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJp
bWVJbmZvLCBWZWN0b3I8UHJpbWVJbmZvPiYmIG90aGVyUHJpbWVJbmZvcykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5l
dyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4
cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZv
KSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygpOwotCi0g
ICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICAvLyBQcml2YXRl
IGFuZCBwdWJsaWMga2V5cy4KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsdXM7IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4
cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQotCi0gICAgLy8gT25seSBwcml2
YXRlIGtleXMuCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVFeHBvbmVudDsgfQotICAgIGJvb2wgaGFzQWRkaXRpb25h
bFByaXZhdGVLZXlQYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBZGRpdGlvbmFsUHJp
dmF0ZUtleVBhcmFtZXRlcnM7IH0KLSAgICBjb25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFByaW1lSW5mbzsgfQotICAgIGNvbnN0IFByaW1lSW5m
byYgc2Vjb25kUHJpbWVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmRQcmltZUluZm87IH0K
LSAgICBjb25zdCBWZWN0b3I8UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdGhlclByaW1lSW5mb3M7IH0KLQotcHJpdmF0ZToKLSAgICBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZXhwb25lbnQpOwotICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KTsKLQot
ICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9k
dWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBwcml2YXRlRXhwb25lbnQpOwotICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0
b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQpOwotCi0gICAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwg
Y29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQ
cmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpOwotICAg
IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZl
Y3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25l
bnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUlu
Zm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQcmltZUluZm9zKTsKLQotICAgIFR5cGUgbV90
eXBlOwotCi0gICAgLy8gUHJpdmF0ZSBhbmQgcHVibGljIGtleXMuCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fbW9kdWx1czsKLSAgICBWZWN0b3I8dWludDhfdD4gbV9leHBvbmVudDsKLQotICAgIC8v
IE9ubHkgcHJpdmF0ZSBrZXlzLgotICAgIFZlY3Rvcjx1aW50OF90PiBtX3ByaXZhdGVFeHBvbmVu
dDsKLSAgICBib29sIG1faGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzOwotICAgIFBy
aW1lSW5mbyBtX2ZpcnN0UHJpbWVJbmZvOwotICAgIFByaW1lSW5mbyBtX3NlY29uZFByaW1lSW5m
bzsKLSAgICBWZWN0b3I8UHJpbWVJbmZvPiBtX290aGVyUHJpbWVJbmZvczsgLy8gV2hlbiB0aHJl
ZSBvciBtb3JlIHByaW1lcyBoYXZlIGJlZW4gdXNlZCwgdGhlIG51bWJlciBvZiBhcnJheSBlbGVt
ZW50cyBpcyBiZSB0aGUgbnVtYmVyIG9mIHByaW1lcyB1c2VkIG1pbnVzIHR3by4KLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DUllQVE9fS0VZ
X0RBVEEoQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMsIENyeXB0b0tleURhdGE6OkZvcm1hdDo6
UlNBQ29tcG9uZW50cykKLQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcAkocmV2aXNpb24gMjIw
OTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIkNyeXB0b0tl
eURhdGEuaCIKICNpbmNsdWRlICJKc29uV2ViS2V5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAKQEAgLTIyMiwxMiArMjIxLDYgQEAgc3RkOjp1bmlxdWVfcHRyPEtleUFsZ29yaXRo
bT4gQ3J5cHRvS2V5RQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5RUM6OmV4cG9ydERhdGEoKSBjb25zdAotewotICAgIC8v
IEEgZHVtbXkgaW1wbGVtZW50YXRpb24gZm9yIG5vdy4KLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9LZXlEYXRhPihDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6Ok9jdGV0U2VxdWVuY2Up
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExF
X0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAko
cmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
RUMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgQ3J5
cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDcnlwdG9LZXlDbGFz
czo6RUM7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IGJ1aWxkQWxnb3Jp
dGhtKCkgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IGV4
cG9ydERhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENyeXB0
b0tleVBhaXI+IHBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IE5hbWVkQ3VydmUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKICAg
ICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleUVDPiBwbGF0Zm9ybUltcG9ydFJhdyhDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAkocmV2aXNpb24gMjIwOTQwKQor
KysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgotI2luY2x1
ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJKc29uV2ViS2V5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CkBAIC0xNTcsMTEgKzE1Niw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0
b0tleUgKICAgICAgICAgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUo
bV9oYXNoKSwgbV9rZXkuc2l6ZSgpICogOCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9L
ZXlEYXRhPiBDcnlwdG9LZXlITUFDOjpleHBvcnREYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4obV9rZXkpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBU
TykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgJKHJl
dmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhN
QUMuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNiBAQCBwcml2YXRlOgogICAgIENyeXB0
b0tleUhNQUMoVmVjdG9yPHVpbnQ4X3Q+JiYga2V5LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGhhc2gsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IGJ1aWxkQWxnb3JpdGhtKCkgY29uc3QgZmluYWw7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IGV4cG9ydERhdGEoKSBjb25zdCBm
aW5hbDsKIAogICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgbV9oYXNoOwogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2tleTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleVJTQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmNwcAkocmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5UlNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogCi0jaW5jbHVk
ZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0FD
b21wb25lbnRzLmgiCiAjaW5jbHVkZSAiSnNvbldlYktleS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KQEAgLTc4LDcgKzc4LDcg
QEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAoa2V5RGF0YS5kLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIGlt
cG9ydCBwdWJsaWMga2V5Ci0gICAgICAgIGF1dG8gcHVibGljS2V5Q29tcG9uZW50cyA9IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoV1RGTW92ZShtb2R1bHVzKSwgV1RG
TW92ZShleHBvbmVudCkpOworICAgICAgICBhdXRvIHB1YmxpY0tleUNvbXBvbmVudHMgPSBDcnlw
dG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92
ZShleHBvbmVudCkpOwogICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBl
ZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlS
U0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsICpwdWJsaWNLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKTsKICAgICB9CkBAIC04OCwxNSArODgsMTUgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4g
Q3J5cHRvS2V5UlNBOjppbXBvcgogICAgIGlmICghV1RGOjpiYXNlNjRVUkxEZWNvZGUoa2V5RGF0
YS5kLCBwcml2YXRlRXhwb25lbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
a2V5RGF0YS5wLmlzTnVsbCgpICYmIGtleURhdGEucS5pc051bGwoKSAmJiBrZXlEYXRhLmRwLmlz
TnVsbCgpICYmIGtleURhdGEuZHAuaXNOdWxsKCkgJiYga2V5RGF0YS5xaS5pc051bGwoKSkgewot
ICAgICAgICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHM6OmNyZWF0ZVByaXZhdGUoV1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCks
IFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSk7CisgICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBv
bmVudHMgPSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKFdURk1vdmUobW9k
dWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCkpOwogICAg
ICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3Qg
YSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBz
dGQ6Om51bGxvcHQuCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0
aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhh
c2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgfQog
CiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSB8fCBrZXlEYXRhLnEuaXNOdWxsKCkgfHwga2V5
RGF0YS5kcC5pc051bGwoKSB8fCBrZXlEYXRhLmRxLmlzTnVsbCgpIHx8IGtleURhdGEucWkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIENyeXB0b0tleURhdGFSU0FDb21w
b25lbnRzOjpQcmltZUluZm8gZmlyc3RQcmltZUluZm87Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87CisgICAgQ3J5cHRvS2V5UlNBQ29t
cG9uZW50czo6UHJpbWVJbmZvIGZpcnN0UHJpbWVJbmZvOworICAgIENyeXB0b0tleVJTQUNvbXBv
bmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87CiAgICAgaWYgKCFXVEY6OmJhc2U2NFVS
TERlY29kZShrZXlEYXRhLnAsIGZpcnN0UHJpbWVJbmZvLnByaW1lRmFjdG9yKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFXVEY6OmJhc2U2NFVSTERlY29kZShrZXlEYXRhLmRw
LCBmaXJzdFByaW1lSW5mby5mYWN0b3JDUlRFeHBvbmVudCkpCkBAIC0xMDgsMTQgKzEwOCwxNCBA
QCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9yCiAgICAgaWYgKCFXVEY6
OmJhc2U2NFVSTERlY29kZShrZXlEYXRhLnFpLCBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JUQ29l
ZmZpY2llbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWtleURhdGEub3Ro
KSB7Ci0gICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShXVEZNb3ZlKG1vZHVs
dXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpLCBXVEZNb3Zl
KGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCB7IH0pOworICAgICAg
ICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3Jl
YXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4
cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZv
KSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCB7IH0pOwogICAgICAgICAvLyBOb3RpY2U6IENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQg
c2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCiAgICAg
ICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3Io
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29t
cG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgfQogCi0gICAgVmVjdG9yPENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvczsKKyAgICBW
ZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3M7
CiAgICAgZm9yIChhdXRvIHZhbHVlIDoga2V5RGF0YS5vdGgudmFsdWUoKSkgewotICAgICAgICBD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGluZm87CisgICAgICAgIENyeXB0
b0tleVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBpbmZvOwogICAgICAgICBpZiAoIVdURjo6YmFz
ZTY0VVJMRGVjb2RlKHZhbHVlLnIsIGluZm8ucHJpbWVGYWN0b3IpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIGlmICghV1RGOjpiYXNlNjRVUkxEZWNvZGUodmFsdWUuZCwg
aW5mby5mYWN0b3JDUlRFeHBvbmVudCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgUmVmUHRyPENyeXB0
b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcgogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBw
ZW5kKGluZm8pOwogICAgIH0KIAotICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShX
VEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25l
bnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBX
VEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpOworICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMg
PSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRh
KFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBv
bmVudCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyks
IFdURk1vdmUob3RoZXJQcmltZUluZm9zKSk7CiAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3Qg
aGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgc3RkOjpudWxsb3B0LgogICAgIHJldHVybiBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiB9CkBAIC0xMzcsMTIgKzEzNywxMiBAQCBKc29uV2ViS2V5IENyeXB0
b0tleVJTQTo6ZXhwb3J0SndrKCkgY29uCiAgICAgcmVzdWx0LmtleV9vcHMgPSB1c2FnZXMoKTsK
ICAgICByZXN1bHQuZXh0ID0gZXh0cmFjdGFibGUoKTsKIAotICAgIGF1dG8ga2V5RGF0YSA9IGV4
cG9ydERhdGEoKTsKLSAgICBjb25zdCBhdXRvJiByc2FLZXlEYXRhID0gZG93bmNhc3Q8Q3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHM+KCprZXlEYXRhKTsKKyAgICBhdXRvIHJzYUtleURhdGEgPSBl
eHBvcnREYXRhKCk7CisKICAgICAvLyBwdWJsaWMga2V5CiAgICAgcmVzdWx0Lm4gPSBiYXNlNjRV
UkxFbmNvZGUocnNhS2V5RGF0YS5tb2R1bHVzKCkpOwogICAgIHJlc3VsdC5lID0gYmFzZTY0VVJM
RW5jb2RlKHJzYUtleURhdGEuZXhwb25lbnQoKSk7Ci0gICAgaWYgKHJzYUtleURhdGEudHlwZSgp
ID09IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJsaWMpCisgICAgaWYgKHJz
YUtleURhdGEudHlwZSgpID09IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYykK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8vIHByaXZhdGUga2V5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAkocmV2aXNpb24gMjIwOTQwKQor
KysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgdHlwZWRlZiBnY3J5X3NleHAqIFBsYXRmb3JtUlNBS2V5Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
OworY2xhc3MgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czsKIGNsYXNzIFByb21pc2VXcmFwcGVyOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9LZXlSU0EoaWRlbnRp
ZmllciwgaGFzaCwgaGFzSGFzaCwgdHlwZSwgcGxhdGZvcm1LZXksIGV4dHJhY3RhYmxlLCB1c2Fn
ZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleVJTQT4gY3JlYXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9v
bCBoYXNIYXNoLCBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eVJTQT4gY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBDcnlwdG9LZXlSU0FDb21wb25lbnRz
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHZpcnR1YWwg
fkNyeXB0b0tleVJTQSgpOwogCiAgICAgYm9vbCBpc1Jlc3RyaWN0ZWRUb0hhc2goQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciYpIGNvbnN0OwpAQCAtMTE1LDYgKzExNSw4IEBAIHB1YmxpYzoKICAg
ICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGV4cG9ydFNwa2koKSBjb25zdDsKICAgICBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGV4cG9ydFBrY3M4KCkgY29uc3Q7CiAKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gZXhwb3J0RGF0YSgpIGNvbnN0
OworCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQogCiBwcml2YXRlOgpAQCAtMTIzLDcgKzEyNSw2
IEBAIHByaXZhdGU6CiAgICAgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBDcnlwdG9LZXlDbGFzczo6UlNBOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5
QWxnb3JpdGhtPiBidWlsZEFsZ29yaXRobSgpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlEYXRhPiBleHBvcnREYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBQbGF0
Zm9ybVJTQUtleSBtX3BsYXRmb3JtS2V5OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcAkocmV2aXNpb24gMjIw
OTQwKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5jcHA6MjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZXhwb25lbnQpCisgICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZv
cm1hdDo6UlNBQ29tcG9uZW50cykKKyAgICAsIG1fdHlwZShUeXBlOjpQdWJsaWMpCisgICAgLCBt
X21vZHVsdXMobW9kdWx1cykKKyAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCit7Cit9CisKK0Ny
eXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0
b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCkKKyAgICA6
IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQorICAg
ICwgbV90eXBlKFR5cGU6OlB1YmxpYykKKyAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMp
KQorICAgICwgbV9leHBvbmVudChXVEZNb3ZlKGV4cG9uZW50KSkKK3sKK30KKworQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCisgICAgOiBDcnlwdG9LZXlEYXRh
KENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKyAgICAsIG1fdHlwZShUeXBl
OjpQcml2YXRlKQorICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCisgICAgLCBtX2V4cG9uZW50KGV4
cG9uZW50KQorICAgICwgbV9wcml2YXRlRXhwb25lbnQocHJpdmF0ZUV4cG9uZW50KQorICAgICwg
bV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnMoZmFsc2UpCit7Cit9CisKK0NyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlE
YXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVudHMpCisgICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkK
KyAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMpKQorICAgICwgbV9leHBvbmVudChXVEZN
b3ZlKGV4cG9uZW50KSkKKyAgICAsIG1fcHJpdmF0ZUV4cG9uZW50KFdURk1vdmUocHJpdmF0ZUV4
cG9uZW50KSkKKyAgICAsIG1faGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKGZhbHNl
KQoreworfQorCitDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwg
Y29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQ
cmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpCisgICAg
OiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKyAg
ICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQorICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCisgICAg
LCBtX2V4cG9uZW50KGV4cG9uZW50KQorICAgICwgbV9wcml2YXRlRXhwb25lbnQocHJpdmF0ZUV4
cG9uZW50KQorICAgICwgbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnModHJ1ZSkK
KyAgICAsIG1fZmlyc3RQcmltZUluZm8oZmlyc3RQcmltZUluZm8pCisgICAgLCBtX3NlY29uZFBy
aW1lSW5mbyhzZWNvbmRQcmltZUluZm8pCisgICAgLCBtX290aGVyUHJpbWVJbmZvcyhvdGhlclBy
aW1lSW5mb3MpCit7Cit9CisKK0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhf
dD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUlu
Zm8mJiBmaXJzdFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8
UHJpbWVJbmZvPiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRv
S2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQorICAgICwgbV90eXBlKFR5cGU6OlByaXZh
dGUpCisgICAgLCBtX21vZHVsdXMoV1RGTW92ZShtb2R1bHVzKSkKKyAgICAsIG1fZXhwb25lbnQo
V1RGTW92ZShleHBvbmVudCkpCisgICAgLCBtX3ByaXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZh
dGVFeHBvbmVudCkpCisgICAgLCBtX2hhc0FkZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycyh0
cnVlKQorICAgICwgbV9maXJzdFByaW1lSW5mbyhXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSkKKyAg
ICAsIG1fc2Vjb25kUHJpbWVJbmZvKFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSkKKyAgICAsIG1f
b3RoZXJQcmltZUluZm9zKFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkKK3sKK30KKworQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHM6On5DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwzMSArMjQsMjggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0FDb21w
b25lbnRzLmgiCiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGV4cG9uZW50KQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6
OlJTQUNvbXBvbmVudHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHVibGljKQorQ3J5cHRvS2V5UlNB
Q29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4m
IG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCisgICAgOiBtX3R5cGUo
VHlwZTo6UHVibGljKQogICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCiAgICAgLCBtX2V4cG9uZW50
KGV4cG9uZW50KQogewogfQogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4
X3Q+JiYgZXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1h
dDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQdWJsaWMpCitDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlB1
YmxpYykKICAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMpKQogICAgICwgbV9leHBvbmVu
dChXVEZNb3ZlKGV4cG9uZW50KSkKIHsKIH0KIAotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6
OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1
cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBwcml2YXRlRXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZv
cm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQorQ3J5cHRv
S2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlByaXZh
dGUpCiAgICAgLCBtX21vZHVsdXMobW9kdWx1cykKICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQp
CiAgICAgLCBtX3ByaXZhdGVFeHBvbmVudChwcml2YXRlRXhwb25lbnQpCkBAIC01Niw5ICs1Myw4
IEBAIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXQKIHsKIH0KIAotQ3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rv
cjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8
dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tl
eURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRl
KQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlByaXZhdGUpCiAg
ICAgLCBtX21vZHVsdXMoV1RGTW92ZShtb2R1bHVzKSkKICAgICAsIG1fZXhwb25lbnQoV1RGTW92
ZShleHBvbmVudCkpCiAgICAgLCBtX3ByaXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZhdGVFeHBv
bmVudCkpCkBAIC02Niw5ICs2Miw4IEBAIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlw
dG9LZXlEYXQKIHsKIH0KIAotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhw
b25lbnQsIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmltZUluZm8sIGNvbnN0IFByaW1lSW5mbyYg
c2Vjb25kUHJpbWVJbmZvLCBjb25zdCBWZWN0b3I8UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9z
KQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVu
dHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKK0NyeXB0b0tleVJTQUNvbXBvbmVudHM6
OkNyeXB0b0tleVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBy
aXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJp
bWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclBy
aW1lSW5mb3MpCisgICAgOiBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKICAgICAsIG1fbW9kdWx1cyht
b2R1bHVzKQogICAgICwgbV9leHBvbmVudChleHBvbmVudCkKICAgICAsIG1fcHJpdmF0ZUV4cG9u
ZW50KHByaXZhdGVFeHBvbmVudCkKQEAgLTc5LDkgKzc0LDggQEAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OkNyeXB0b0tleURhdAogewogfQogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywg
VmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBv
bmVudCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFByaW1lSW5mbyYmIHNlY29uZFByaW1l
SW5mbywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1lSW5mb3MpCi0gICAgOiBDcnlwdG9L
ZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlw
ZShUeXBlOjpQcml2YXRlKQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29t
cG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBv
bmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUluZm8mJiBmaXJz
dFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8UHJpbWVJbmZv
PiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICA6IG1fdHlwZShUeXBlOjpQcml2YXRlKQogICAgICwg
bV9tb2R1bHVzKFdURk1vdmUobW9kdWx1cykpCiAgICAgLCBtX2V4cG9uZW50KFdURk1vdmUoZXhw
b25lbnQpKQogICAgICwgbV9wcml2YXRlRXhwb25lbnQoV1RGTW92ZShwcml2YXRlRXhwb25lbnQp
KQpAQCAtOTIsNyArODYsNyBAQCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5
RGF0CiB7CiB9CiAKLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjp+Q3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMoKQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6fkNyeXB0b0tleVJTQUNvbXBv
bmVudHMoKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlSU0FDb21wb25lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyMjA5NDApCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmg6MjIwOTQw
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5
RGF0YSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgUHVibGljLAor
ICAgICAgICBQcml2YXRlCisgICAgfTsKKworICAgIHN0cnVjdCBQcmltZUluZm8geworICAgICAg
ICBWZWN0b3I8dWludDhfdD4gcHJpbWVGYWN0b3I7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBm
YWN0b3JDUlRFeHBvbmVudDsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGZhY3RvckNSVENvZWZm
aWNpZW50OworICAgIH07CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzPiBjcmVhdGVQdWJsaWMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1
bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50KSk7CisgICAgfQorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVB1
YmxpYyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhXVEZNb3ZlKG1vZHVs
dXMpLCBXVEZNb3ZlKGV4cG9uZW50KSkpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGUoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cyhtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50
KSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+IGNyZWF0ZVByaXZhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9y
PHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMp
LCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpKSk7CisgICAgfQor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4g
Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1v
ZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBjb25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZvLCBj
b25zdCBQcmltZUluZm8mIHNlY29uZFByaW1lSW5mbywgY29uc3QgVmVjdG9yPFByaW1lSW5mbz4m
IG90aGVyUHJpbWVJbmZvcykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cyhtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50LCBmaXJzdFByaW1lSW5mbywgc2Vj
b25kUHJpbWVJbmZvLCBvdGhlclByaW1lSW5mb3MpKTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZVdpdGhB
ZGRpdGlvbmFsRGF0YShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4m
JiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUluZm8m
JiBmaXJzdFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8UHJp
bWVJbmZvPiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShw
cml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQ
cmltZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygpOworCisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICAvLyBQcml2YXRlIGFuZCBwdWJsaWMga2V5cy4K
KyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsdXM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBvbmVudDsgfQorCisgICAgLy8gT25seSBwcml2YXRlIGtleXMuCisgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVFeHBvbmVudDsgfQorICAgIGJvb2wgaGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnM7
IH0KKyAgICBjb25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdFByaW1lSW5mbzsgfQorICAgIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmRQcmltZUluZm87IH0KKyAgICBjb25zdCBWZWN0b3I8
UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9vdGhlclByaW1l
SW5mb3M7IH0KKworcHJpdmF0ZToKKyAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25l
bnQpOworICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KTsKKworICAgIENyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25l
bnQpOworICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2
YXRlRXhwb25lbnQpOworCisgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBm
aXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZl
Y3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpOworICAgIENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4
cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZp
cnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUlu
Zm8+JiYgb3RoZXJQcmltZUluZm9zKTsKKworICAgIFR5cGUgbV90eXBlOworCisgICAgLy8gUHJp
dmF0ZSBhbmQgcHVibGljIGtleXMuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fbW9kdWx1czsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9leHBvbmVudDsKKworICAgIC8vIE9ubHkgcHJpdmF0ZSBrZXlz
LgorICAgIFZlY3Rvcjx1aW50OF90PiBtX3ByaXZhdGVFeHBvbmVudDsKKyAgICBib29sIG1faGFz
QWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzOworICAgIFByaW1lSW5mbyBtX2ZpcnN0UHJp
bWVJbmZvOworICAgIFByaW1lSW5mbyBtX3NlY29uZFByaW1lSW5mbzsKKyAgICBWZWN0b3I8UHJp
bWVJbmZvPiBtX290aGVyUHJpbWVJbmZvczsgLy8gV2hlbiB0aHJlZSBvciBtb3JlIHByaW1lcyBo
YXZlIGJlZW4gdXNlZCwgdGhlIG51bWJlciBvZiBhcnJheSBlbGVtZW50cyBpcyBiZSB0aGUgbnVt
YmVyIG9mIHByaW1lcyB1c2VkIG1pbnVzIHR3by4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DUllQVE9fS0VZX0RBVEEoQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMsIENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKwor
I2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuaAkocmV2aXNpb24gMjIw
OTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5RGF0YSB7
CitjbGFzcyBDcnlwdG9LZXlSU0FDb21wb25lbnRzIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IFR5cGUgewogICAgICAgICBQdWJsaWMsCkBAIC00NSwzNCArNDQsMzQgQEAgcHVibGljOgogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZmFjdG9yQ1JUQ29lZmZpY2llbnQ7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0
ZVB1YmxpYyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZXhwb25lbnQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FD
b21wb25lbnRzPiBjcmVhdGVQdWJsaWMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50KSk7CisgICAgICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBv
bmVudHMobW9kdWx1cywgZXhwb25lbnQpKTsKICAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHVibGljKFZlY3Rvcjx1aW50
OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gY3JlYXRlUHVibGljKFZlY3Rv
cjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1v
dmUoZXhwb25lbnQpKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
UlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBvbmVudHMoV1RGTW92ZShtb2R1bHVz
KSwgV1RGTW92ZShleHBvbmVudCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPiBjcmVhdGVQcml2YXRlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzPiBjcmVhdGVQcml2YXRlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihuZXcgQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCkp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+
KG5ldyBDcnlwdG9LZXlSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2YXRlRXhw
b25lbnQpKTsKICAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBW
ZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9u
ZW50KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4g
Y3JlYXRlUHJpdmF0ZShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4m
JiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4o
bmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUo
ZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCkpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzPihuZXcgQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2
YXRlRXhwb25lbnQpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShj
b25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhw
b25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBjb25zdCBQcmlt
ZUluZm8mIGZpcnN0UHJpbWVJbmZvLCBjb25zdCBQcmltZUluZm8mIHNlY29uZFByaW1lSW5mbywg
Y29uc3QgVmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcykKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGVXaXRoQWRk
aXRpb25hbERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVu
dCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNv
bmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21w
b25lbnRzPihuZXcgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQs
IHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQ
cmltZUluZm9zKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNB
Q29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQs
IHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQ
cmltZUluZm9zKSk7CiAgICAgfQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEoVmVjdG9y
PHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1
aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFBy
aW1lSW5mbyYmIHNlY29uZFByaW1lSW5mbywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1l
SW5mb3MpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRz
PiBjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVs
dXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRl
RXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQ
cmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQcmltZUluZm9zKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4o
bmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUo
ZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUlu
Zm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+
KG5ldyBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhw
b25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8p
LCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKCk7CisgICAg
dmlydHVhbCB+Q3J5cHRvS2V5UlNBQ29tcG9uZW50cygpOwogCiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKQEAgLTg4LDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcygpIGNvbnN0IHsgcmV0dXJu
IG1fb3RoZXJQcmltZUluZm9zOyB9CiAKIHByaXZhdGU6Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50KTsKLSAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCk7CisgICAgQ3J5
cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpOworICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHMo
VmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQpOwog
Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBt
b2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHByaXZhdGVFeHBvbmVudCk7Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMo
VmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZl
Y3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCk7CisgICAgQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50KTsKKyAg
ICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rv
cjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQp
OwogCi0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5m
bywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUlu
Zm8+JiBvdGhlclByaW1lSW5mb3MpOwotICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0
b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZv
LCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQ
cmltZUluZm9zKTsKKyAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQsIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmlt
ZUluZm8sIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvLCBjb25zdCBWZWN0b3I8UHJp
bWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKTsKKyAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0
b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZv
LCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQ
cmltZUluZm9zKTsKIAogICAgIFR5cGUgbV90eXBlOwogCkBAIC0xMTMsNiArMTEyLDQgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0NSWVBUT19LRVlfREFUQShDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cywgQ3J5cHRvS2V5RGF0
YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQotCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSYXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5jcHAJ
KHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eVJhdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5j
bHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01MSwxMiArNTAsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlw
dG9LZXlSCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmF3S2V5QWxnb3JpdGhtPihDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVy
KCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENyeXB0b0tleVJhdzo6
ZXhwb3J0RGF0YSgpIGNvbnN0Ci17Ci0KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4obV9rZXkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5oCShyZXZpc2lvbiAyMjA5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSYXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNiBAQCBwcml2YXRlOgogICAgIENyeXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6OlJhdzsgfQogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEtleUFsZ29yaXRobT4gYnVpbGRBbGdvcml0aG0oKSBjb25zdCBmaW5hbDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fa2V5OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBDQ0NyeXB0b3JT
dGF0dXMgZ2V0UHVibGljS2V5Q29tcG8KICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMg
Q0NDcnlwdG9yU3RhdHVzIGdldFByaXZhdGVLZXlDb21wb25lbnRzKENDUlNBQ3J5cHRvclJlZiBy
c2FLZXksIFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50czo6UHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvKQorc3RhdGljIENDQ3J5cHRvclN0
YXR1cyBnZXRQcml2YXRlS2V5Q29tcG9uZW50cyhDQ1JTQUNyeXB0b3JSZWYgcnNhS2V5LCBWZWN0
b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJp
bWVJbmZvJiBmaXJzdFByaW1lSW5mbywgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
JiBzZWNvbmRQcmltZUluZm8pCiB7CiAgICAgQVNTRVJUKENDUlNBR2V0S2V5VHlwZShyc2FLZXkp
ID09IGNjUlNBS2V5UHJpdmF0ZSk7CiAKQEAgLTExMCw5ICsxMTAsOSBAQCBDcnlwdG9LZXlSU0E6
OkNyeXB0b0tleVJTQShDcnlwdG9BbGdvcml0CiB7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+
IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNv
bXBvbmVudHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlKQogewotICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50czo6VHlwZTo6UHJpdmF0ZSAmJiAha2V5RGF0YS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtl
eVBhcmFtZXRlcnMoKSkgeworICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlSU0FD
b21wb25lbnRzOjpUeXBlOjpQcml2YXRlICYmICFrZXlEYXRhLmhhc0FkZGl0aW9uYWxQcml2YXRl
S2V5UGFyYW1ldGVycygpKSB7CiAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ1MjMyND4g
dHJhY2tzIGFkZGluZyBzdXBwb3J0LgogICAgICAgICBXVEZMb2dBbHdheXMoIlByaXZhdGUga2V5
cyB3aXRob3V0IGFkZGl0aW9uYWwgZGF0YSBhcmUgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmNyZWF0CiAgICAgfQogICAgIC8vIFdoZW4gYW4gZW1wdHkgdmVjdG9yIHAg
aXMgcHJvdmlkZWQgdG8gQ0NSU0FDcnlwdG9yQ3JlYXRlRnJvbURhdGEgdG8gY3JlYXRlIGEgcHJp
dmF0ZSBrZXksIGl0IGNyYXNoZXMuCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwNTUwMjI4PiB0
cmFja3MgdGhlIGlzc3VlLgotICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZSAmJiBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCku
cHJpbWVGYWN0b3IuaXNFbXB0eSgpKQorICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9L
ZXlSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlICYmIGtleURhdGEuZmlyc3RQcmltZUluZm8o
KS5wcmltZUZhY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Q0NSU0FDcnlwdG9yUmVmIGNyeXB0b3I7CkBAIC0xMzIsNyArMTMyLDcgQEAgUmVmUHRyPENyeXB0
b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdAogICAgIC8vIGdpdmVuIHRoZSBmYWN0IHRoYXQg
d2UgaGF2ZSBhbHJlYWR5IGhhZCBpdC4gQWxzbywgdGhlIHJlLWNhY3VsYXRlZCBwcml2YXRlIGV4
cG9uZW50IG1heSBub3QgbWF0Y2ggdGhlIGdpdmVuIG9uZS4KICAgICAvLyBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzE1NDUyMzI0Pi4KICAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlw
dG9yQ3JlYXRlRnJvbURhdGEoCi0gICAgICAgIGtleURhdGEudHlwZSgpID09IENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJsaWMgPyBjY1JTQUtleVB1YmxpYyA6IGNjUlNBS2V5
UHJpdmF0ZSwKKyAgICAgICAga2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50
czo6VHlwZTo6UHVibGljID8gY2NSU0FLZXlQdWJsaWMgOiBjY1JTQUtleVByaXZhdGUsCiAgICAg
ICAgICh1aW50OF90KilrZXlEYXRhLm1vZHVsdXMoKS5kYXRhKCksIGtleURhdGEubW9kdWx1cygp
LnNpemUoKSwKICAgICAgICAgKHVpbnQ4X3QqKWtleURhdGEuZXhwb25lbnQoKS5kYXRhKCksIGtl
eURhdGEuZXhwb25lbnQoKS5zaXplKCksCiAgICAgICAgICh1aW50OF90KilrZXlEYXRhLmZpcnN0
UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IuZGF0YSgpLCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCku
cHJpbWVGYWN0b3Iuc2l6ZSgpLApAQCAtMTQ0LDcgKzE0NCw3IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6Y3JlYXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaCwg
aGFzSGFzaCwga2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5
cGU6OlB1YmxpYyA/IENyeXB0b0tleVR5cGU6OlB1YmxpYyA6IENyeXB0b0tleVR5cGU6OlByaXZh
dGUsIGNyeXB0b3IsIGV4dHJhY3RhYmxlLCB1c2FnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gsIGhhc0hhc2gsIGtleURhdGEudHlwZSgp
ID09IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYyA/IENyeXB0b0tleVR5cGU6
OlB1YmxpYyA6IENyeXB0b0tleVR5cGU6OlByaXZhdGUsIGNyeXB0b3IsIGV4dHJhY3RhYmxlLCB1
c2FnZSkpOwogfQogCiBDcnlwdG9LZXlSU0E6On5DcnlwdG9LZXlSU0EoKQpAQCAtMTkyLDcgKzE5
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVIKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgs
IFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tl
eURhdGE+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKENDUlNBR2V0S2V5VHlwZShtX3BsYXRmb3JtS2V5KSkgewogICAgIGNh
c2UgY2NSU0FLZXlQdWJsaWM6IHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxk
bid0IGdldCBSU0Ega2V5IGNvbXBvbmVudHMsIHN0YXR1cyAlZCIsIHN0YXR1cyk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhtb2R1bHVzLCBwdWJsaWNFeHBvbmVudCk7
CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMobW9k
dWx1cywgcHVibGljRXhwb25lbnQpOwogICAgIH0KICAgICBjYXNlIGNjUlNBS2V5UHJpdmF0ZTog
ewogICAgICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1czsKQEAgLTIxNCwxNSArMjE0LDE1IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwcml2YXRl
RXhwb25lbnQ7Ci0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8g
Zmlyc3RQcmltZUluZm87Ci0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmlt
ZUluZm8gc2Vjb25kUHJpbWVJbmZvOwotICAgICAgICBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbz4gb3RoZXJQcmltZUluZm9zOyAvLyBBbHdheXMgZW1wdHksIENv
bW1vbkNyeXB0byBvbmx5IHN1cHBvcnRzIHR3byBwcmltZXMgKGNmLiA8cmRhcjovL3Byb2JsZW0v
MTU0NDQwNzQ+KS4KKyAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZp
cnN0UHJpbWVJbmZvOworICAgICAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8g
c2Vjb25kUHJpbWVJbmZvOworICAgICAgICBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6
UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3M7IC8vIEFsd2F5cyBlbXB0eSwgQ29tbW9uQ3J5cHRv
IG9ubHkgc3VwcG9ydHMgdHdvIHByaW1lcyAoY2YuIDxyZGFyOi8vcHJvYmxlbS8xNTQ0NDA3ND4p
LgogICAgICAgICBzdGF0dXMgPSBnZXRQcml2YXRlS2V5Q29tcG9uZW50cyhtX3BsYXRmb3JtS2V5
LCBwcml2YXRlRXhwb25lbnQsIGZpcnN0UHJpbWVJbmZvLCBzZWNvbmRQcmltZUluZm8pOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkbid0IGdl
dCBSU0Ega2V5IGNvbXBvbmVudHMsIHN0YXR1cyAlZCIsIHN0YXR1cyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgcHVi
bGljRXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1l
SW5mbywgb3RoZXJQcmltZUluZm9zKTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBv
bmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgcHVibGljRXhw
b25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywg
b3RoZXJQcmltZUluZm9zKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318561</attachid>
            <date>2017-08-18 17:03:00 -0700</date>
            <delta_ts>2017-08-18 18:41:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169806-20170818170259.patch</filename>
            <type>text/plain</type>
            <size>88414</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDk0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE3LTA4LTE4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYkNyeXB0b10gR2V0IHJpZCBvZiBD
cnlwdG9LZXlEYXRhIGNsYXNzIGFuZCBhbGwgaXRzIHN1YmNsYXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTgwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVwbGFjZXMgdGhlIENyeXB0b0tl
eURhdGEgdHlwZSBoaWVyYXJjaHkgCisKKyAgICAgICAgICAgIENyeXB0b0tleURhdGEKKyAgICAg
ICAgICAgICAgLSBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZQorICAgICAgICAgICAgICAtIENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzCisKKyAgICAgICAgICB3aXRoIHRoZSByZW5hbWVkIENy
eXB0b0tleVJTQUNvbXBvbmVudHMuCisKKyAgICAgICAgLSBSZW1vdmVzIHB1cmUgdmlydHVhbCBl
eHBvcnREYXRhIGZ1bmN0aW9uIG9uIENyeXB0b0tleSwgYW5kIGFsbAorICAgICAgICAgIHRoZSBp
bXBsZW1lbnRhdGlvbnMgZXhjZXB0IHRoZSBvbiBvbiBDcnlwdG9LZXlSU0EsIHdoaWNoIG5vdyBp
cworICAgICAgICAgIG5vbi12aXJ0dWFsLCBhbmQgcmV0dXJucyBhIENyeXB0b0tleVJTQUNvbXBv
bmVudHMuIFVwZGF0ZSB0aGUgb25lCisgICAgICAgICAgZXh0ZXJuYWwgY2FsbGVyLCBTZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHRvIGhhbmRsZSB0aGlzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogY3J5
cHRvL0NyeXB0b0FsZ29yaXRobS5oOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDoKKyAg
ICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5RGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHA6CisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoK
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9LZXlSU0E6OmV4cG9ydERhdGEgY29uc3QpOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0
b0tleUFFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlBRVM6OmV4cG9ydERhdGEg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oOgor
ICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpleHBvcnREYXRhIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oOgorICAgICAgICAq
IGNyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5SE1BQzo6ZXhwb3J0RGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5SE1BQy5oOgorICAgICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydEp3ayBjb25zdCk6CisgICAgICAgICogY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5
UlNBQ29tcG9uZW50cy5jcHA6IENvcGllZCBmcm9tIGNyeXB0by9rZXlzL0NyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQUNvbXBvbmVu
dHM6OkNyeXB0b0tleVJTQUNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBQ29tcG9uZW50czo6fkNyeXB0b0tleVJTQUNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
Ojp+Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0
by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuaDogQ29waWVkIGZyb20gY3J5cHRvL2tleXMv
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEpOgorICAg
ICAgICAqIGNyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9LZXlSYXc6OmV4cG9ydERhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGNyeXB0
by9rZXlzL0NyeXB0b0tleVJhdy5oOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNB
TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFByaXZhdGVLZXlDb21wb25lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSBjb25zdCk6CisKIDIwMTctMDgtMTggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgV2Vi
S2l0U3VidGxlQ3J5cHRvIGludGVyZmFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMzM0LDExICsxMzM0LDEwIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCiAKICAgICBjcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuY3BwCi0gICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2Vx
dWVuY2UuY3BwCi0gICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3Bw
CiAgICAgY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCiAgICAgY3J5cHRvL2tleXMvQ3J5cHRv
S2V5SE1BQy5jcHAKICAgICBjcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCisgICAgY3J5cHRv
L2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHAKICAgICBjcnlwdG8va2V5cy9DcnlwdG9L
ZXlSYXcuY3BwCiAKICAgICBjc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQ5Myw5ICs2NDkzLDYgQEAKIAkJRTEyNUY4NDUx
ODI0MjVDOTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NDMxODI0MjVDOTAw
RDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwICovOyB9OwogCQlFMTI1Rjg0
RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjVGODRCMTgyNDI4OUQwMEQ4NENEOSAvKiBD
cnlwdG9LZXlBRVMuY3BwICovOyB9OwogCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5
cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMTI1Rjg0QzE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmggKi87IH07Ci0JCUUx
MjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg1RDE4MkMyREY2MDBEODRDRDkg
LyogQ3J5cHRvS2V5RGF0YS5oICovOyB9OwotCQlFMTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkgLyog
Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNUY4NjExODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tl
eURhdGFPY3RldFNlcXVlbmNlLmNwcCAqLzsgfTsKLQkJRTEyNUY4NjQxODJDMzAzQTAwRDg0Q0Q5
IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI1Rjg2MjE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRv
S2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLzsgfTsKIAkJRTEyNzE5QzcwRUVFQzE2ODAwRjYxMjEz
IC8qIE5hdmlnYXRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxMjcxOUM2MEVFRUMxNjgwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmggKi87
IH07CiAJCUUxMjcxOUNBMEVFRUMyMTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjcxOUM5MEVFRUMy
MTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNlLmNwcCAqLzsgfTsKIAkJRTEyNzFBMEIwRUVFQzc3
QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNzFBMEEwRUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5h
dmlnYXRvci5oICovOyB9OwpAQCAtNjYwNCw4ICs2NjAxLDggQEAKIAkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJFNTEyQjBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVu
aWNvZGVTb3J0LmNwcCAqLzsgfTsKIAkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRV
bmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFCRTUxMkMwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oICovOyB9Owog
CQlFMUMyNjZEODE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFDMjY2RDYxODMxN0FCNDAwM0Y4QjMzIC8qIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81TWFjLmNwcCAqLzsgfTsKLQkJRTFDMjY2REUxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cy5jcHAgKi87IH07Ci0JCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIzMyAvKiBD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMjY2REQxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzLmggKi87IH07CisJCUUxQzI2NkRFMTgzMTlGMzEwMDNGOEIzMyAvKiBD
cnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FD
b21wb25lbnRzLmNwcCAqLzsgfTsKKwkJRTFDMjY2REYxODMxOUYzMTAwM0Y4QjMzIC8qIENyeXB0
b0tleVJTQUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FDb21wb25l
bnRzLmggKi87IH07CiAJCUUxQzM2MkVGMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtlckxvY2F0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMz
NjJFRDBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oICovOyB9OwogCQlFMUMz
NjJGMDBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNjJFRTBFQUYyQUE5MDA3NDEw
QkMgLyogSlNXb3JrZXJMb2NhdGlvbi5jcHAgKi87IH07CiAJCUUxQzM2QzAzMEVCMDc2RDYwMDc0
MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFs
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE1MDc3LDkgKzE1MDc0LDYgQEAKIAkJRTEyNUY4NDMxODI0MjVDOTAwRDg0Q0Q5IC8qIENy
eXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxMjVGODRCMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5QUVTLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNUY4NEMxODI0Mjg5RDAwRDg0Q0Q5IC8q
IENyeXB0b0tleUFFUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9L
ZXlBRVMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTEyNUY4NUQxODJDMkRGNjAw
RDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvS2V5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1Rjg2
MTE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVu
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTI1Rjg2MjE4MkMzMDNBMDBE
ODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNzE5QzYwRUVFQzE2ODAwRjYxMjEzIC8qIE5hdmlnYXRvckJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTI3MTlDOTBFRUVDMjEzMDBGNjEyMTMgLyog
TmF2aWdhdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
YXZpZ2F0b3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyNzFBMEEw
RUVFQzc3QTAwRjYxMjEzIC8qIFdvcmtlck5hdmlnYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXb3JrZXJOYXZpZ2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1MjAxLDggKzE1MTk1LDggQEAKIAkJRTFCRTUxMkIwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBYU0xUVW5pY29kZVNvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUJF
NTEyQzBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFRVbmljb2RlU29ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUMyNjZENjE4MzE3QUI0MDAzRjhCMzMgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlFMUMyNjZEQzE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUMyNjZERDE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFDMjY2REMxODMxOUYz
MTAwM0Y4QjMzIC8qIENyeXB0b0tleVJTQUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9L
ZXlSU0FDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0
b0tleVJTQUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzYy
RUQwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUMzNjJFRTBFQUYyQUE5MDA3NDEwQkMgLyogSlNXb3JrZXJMb2NhdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckxvY2F0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzZDMDIwRUIwNzZENjAwNzQx
MEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRE9NR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU2MCwxMCArMjQ1NTQsOCBAQAogCQkJCUUxMjVGODRDMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlw
dG9LZXlBRVMuaCAqLywKIAkJCQk3QzlBQ0E4RjFGM0NDMEFBMDBGM0FBMDkgLyogQ3J5cHRvS2V5
QWxnb3JpdGhtLmggKi8sCiAJCQkJN0M5QUNBOTExRjNDQzBBQTAwRjNBQTA5IC8qIENyeXB0b0tl
eUFsZ29yaXRobS5pZGwgKi8sCi0JCQkJRTEyNUY4NjExODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0
b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCAqLywKLQkJCQlFMTI1Rjg2MjE4MkMzMDNBMDBEODRD
RDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCAqLywKLQkJCQlFMUMyNjZEQzE4MzE5
RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3BwICovLAotCQkJCUUx
QzI2NkREMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oICov
LAorCQkJCUUxQzI2NkRDMTgzMTlGMzEwMDNGOEIzMyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRz
LmNwcCAqLywKKwkJCQlFMUMyNjZERDE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cy5oICovLAogCQkJCTU3NTBBOTcyMUU2OEQwMDAwMDcwNUM0QSAvKiBDcnlwdG9LZXlF
Qy5jcHAgKi8sCiAJCQkJNTc1MEE5NzMxRTY4RDAwMDAwNzA1QzRBIC8qIENyeXB0b0tleUVDLmgg
Ki8sCiAJCQkJRTEyNUY4MzMxODIyRjE4QTAwRDg0Q0Q5IC8qIENyeXB0b0tleUhNQUMuY3BwICov
LApAQCAtMjQ3NDEsNyArMjQ3MzMsNiBAQAogCQkJCUUxNTdBOEUyMTgxNzNBM0EwMDlGODIxRCAv
KiBDcnlwdG9LZXkuY3BwICovLAogCQkJCUUxNTdBOEUzMTgxNzNBM0EwMDlGODIxRCAvKiBDcnlw
dG9LZXkuaCAqLywKIAkJCQlFMTU3QThEQzE4MTcyQzJDMDA5RjgyMUQgLyogQ3J5cHRvS2V5Lmlk
bCAqLywKLQkJCQlFMTI1Rjg1RDE4MkMyREY2MDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oICov
LAogCQkJCTdDOUFDQUM5MUY0MEI5NkEwMEYzQUEwOSAvKiBDcnlwdG9LZXlGb3JtYXQuaCAqLywK
IAkJCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovLAogCQkJ
CUUxRjgwQjg0MTgzMTcyNDcwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmlkbCAqLywKQEAgLTI2
ODg2LDkgKzI2ODc3LDcgQEAKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRv
S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkgLyogQ3J5
cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzlBQ0E5MjFGM0NDMEFBMDBGM0FBMDkg
LyogQ3J5cHRvS2V5QWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKLQkJCQlFMTI1Rjg1RTE4MkMy
REY2MDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTEyNUY4
NjQxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlFMUMyNjZERjE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxQzI2NkRGMTgzMTlGMzEwMDNGOEIz
MyAvKiBDcnlwdG9LZXlSU0FDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzUwQTk3
NTFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MjVGODM2MTgyMkYxOEEwMEQ4NENEOSAvKiBDcnlwdG9LZXlITUFDLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUY4MEI4ODE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDkzNyw4ICszMDkyNiw3IEBACiAJCQkJRTE5QUMzRjQxODI0REM3OTAwMzQ5
NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3
QThFNDE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxMjVGODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNl
cXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxQzI2NkRFMTgzMTlGMzEwMDNGOEIzMyAv
KiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUMy
NjZERTE4MzE5RjMxMDAzRjhCMzMgLyogQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1NzUwQTk3NDFFNjhEMDAwMDA3MDVDNEEgLyogQ3J5cHRvS2V5RUMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTc1MEE5N0IxRTY5MTYxNjAwNzA1QzRBIC8qIENyeXB0b0tl
eUVDTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODM1MTgyMkYxOEEwMEQ4NENEOSAv
KiBDcnlwdG9LZXlITUFDLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lv
biAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsMTAgQEAKICNpbmNsdWRlICJC
bG9iLmgiCiAjaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVT
LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKLSNpbmNsdWRlICJD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUVDLmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0tleVJTQUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcu
aCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKQEAgLTEzMTUsMjQg
KzEzMTQsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgd3JpdGUo
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKKyAgICB2b2lkIHdyaXRlKENy
eXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQ
dWJsaWM6CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGlj
OgogICAgICAgICAgICAgd3JpdGUoQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWc6OlB1Ymxp
Yyk7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlR5cGU6OlByaXZhdGU6CisgICAgICAgIGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50czo6VHlwZTo6UHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlKENyeXB0b0tleUFzeW1tZXRy
aWNUeXBlU3VidGFnOjpQcml2YXRlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHZvaWQgd3JpdGUoY29uc3QgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMm
IGtleSkKKyAgICB2b2lkIHdyaXRlKGNvbnN0IENyeXB0b0tleVJTQUNvbXBvbmVudHMmIGtleSkK
ICAgICB7CiAgICAgICAgIHdyaXRlKGtleS50eXBlKCkpOwogICAgICAgICB3cml0ZShrZXkubW9k
dWx1cygpKTsKICAgICAgICAgd3JpdGUoa2V5LmV4cG9uZW50KCkpOwotICAgICAgICBpZiAoa2V5
LnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGljKQorICAg
ICAgICBpZiAoa2V5LnR5cGUoKSA9PSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJs
aWMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgd3JpdGUoa2V5LnByaXZhdGVFeHBv
bmVudCgpKTsKQEAgLTE0MjcsNyArMTQyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0
ZShpc1Jlc3RyaWN0ZWRUb0hhc2gpOwogICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFRvSGFz
aCkKICAgICAgICAgICAgICAgICB3cml0ZShoYXNoKTsKLSAgICAgICAgICAgIHdyaXRlKGRvd25j
YXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPigqa2V5LT5leHBvcnREYXRhKCkpKTsKKyAg
ICAgICAgICAgIHdyaXRlKCpkb3duY2FzdDxDcnlwdG9LZXlSU0E+KCprZXkpLmV4cG9ydERhdGEo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTIyOTMsNyArMjI5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYg
KHR5cGUgPT0gQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVTdWJ0YWc6OlB1YmxpYykgewotICAgICAg
ICAgICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1
YmxpYyhtb2R1bHVzLCBleHBvbmVudCk7CisgICAgICAgICAgICBhdXRvIGtleURhdGEgPSBDcnlw
dG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMobW9kdWx1cywgZXhwb25lbnQpOwogICAg
ICAgICAgICAgYXV0byBrZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gs
IGlzUmVzdHJpY3RlZFRvSGFzaCwgKmtleURhdGEsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAg
ICAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShrZXkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yMzA4LDcgKzIzMDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGlmICghcHJpbWVDb3VudCkgewotICAgICAgICAgICAgYXV0byBrZXlEYXRh
ID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGUobW9kdWx1cywgZXhw
b25lbnQsIHByaXZhdGVFeHBvbmVudCk7CisgICAgICAgICAgICBhdXRvIGtleURhdGEgPSBDcnlw
dG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2
YXRlRXhwb25lbnQpOwogICAgICAgICAgICAgYXV0byBrZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0
ZShhbGdvcml0aG0sIGhhc2gsIGlzUmVzdHJpY3RlZFRvSGFzaCwgKmtleURhdGEsIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOwogICAgICAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShrZXkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMzE3LDkgKzIzMTYsOSBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAocHJpbWVDb3VudCA8IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsK
LSAgICAgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmlt
ZUluZm87Ci0gICAgICAgIFZlY3RvcjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJ
bmZvPiBvdGhlclByaW1lSW5mb3MocHJpbWVDb3VudCAtIDIpOworICAgICAgICBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpQcmltZUluZm8gZmlyc3RQcmltZUluZm87CisgICAgICAgIENyeXB0b0tl
eVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbyBzZWNvbmRQcmltZUluZm87CisgICAgICAgIFZlY3Rv
cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvcyhwcmlt
ZUNvdW50IC0gMik7CiAKICAgICAgICAgaWYgKCFyZWFkKGZpcnN0UHJpbWVJbmZvLnByaW1lRmFj
dG9yKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNDAsNyArMjMzOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZh
dGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCwg
Zmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQcmltZUluZm9zKTsKKyAgICAg
ICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdp
dGhBZGRpdGlvbmFsRGF0YShtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50LCBmaXJz
dFByaW1lSW5mbywgc2Vjb25kUHJpbWVJbmZvLCBvdGhlclByaW1lSW5mb3MpOwogICAgICAgICBh
dXRvIGtleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaXNSZXN0cmlj
dGVkVG9IYXNoLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIHJlc3Vs
dCA9IFdURk1vdmUoa2V5KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5oCShyZXZpc2lvbiAyMjA5NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzOwogY2xhc3MgQ3J5cHRvS2V5OwotY2xhc3MgQ3J5cHRvS2V5RGF0YTsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIHVzaW5nIEtleURhdGEgPSBWYXJpYW50PFZlY3Rvcjx1
aW50OF90PiwgSnNvbldlYktleT47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRv
S2V5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCShy
ZXZpc2lvbiAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyOwotY2xhc3MgQ3J5cHRvS2V5RGF0
YTsKIAogZW51bSBjbGFzcyBDcnlwdG9LZXlDbGFzcyB7CiAgICAgQUVTLApAQCAtMTA2LDggKzEw
NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzYWdlc0JpdG1hcChDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZSkgeyBtX3VzYWdlcyA9IHVzYWdlOyB9OwogICAgIGJvb2wgYWxsb3dzKENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlKSBjb25zdCB7IHJldHVybiB1c2FnZSA9PSAobV91c2FnZXMg
JiB1c2FnZSk7IH0KIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+
IGV4cG9ydERhdGEoKSBjb25zdCA9IDA7Ci0KICAgICBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHJh
bmRvbURhdGEoc2l6ZV90KTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9LZXlEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL0Ny
eXB0b0tleURhdGEuaAkocmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0tleURhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotCi0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENyeXB0b0tleURhdGEgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENyeXB0b0tleURhdGEpOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgRm9ybWF0
IHsKLSAgICAgICAgT2N0ZXRTZXF1ZW5jZSwKLSAgICAgICAgUlNBQ29tcG9uZW50cwotICAgIH07
Ci0KLSAgICBDcnlwdG9LZXlEYXRhKEZvcm1hdCBmb3JtYXQpCi0gICAgICAgIDogbV9mb3JtYXQo
Zm9ybWF0KQotICAgIHsKLSAgICB9Ci0gICAgdmlydHVhbCB+Q3J5cHRvS2V5RGF0YSgpIHsgfQot
Ci0gICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9Ci0KLXByaXZh
dGU6Ci0gICAgRm9ybWF0IG1fZm9ybWF0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1JZUFRPX0tFWV9EQVRBKFRvQ2xhc3NO
YW1lLCBGb3JtYXQpIFwKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VG9D
bGFzc05hbWUpIFwKLSAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6Q3J5cHRv
S2V5RGF0YSYga2V5RGF0YSkgeyByZXR1cm4ga2V5RGF0YS5mb3JtYXQoKSA9PSBXZWJDb3JlOjpG
b3JtYXQ7IH0gXAotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNVQlRMRV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvS2V5RGF0YS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQoj
IyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAJKHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
Q2ZiUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zLmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2Vx
dWVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5j
cHAJKHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYg
QEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcy5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleUFFUy5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5jcHAJKHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zLmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0
U2VxdWVuY2UuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCiAjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAJ
KHJldmlzaW9uIDIyMDk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3
ICsyOSw2IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlSU0EuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAkocmV2aXNpb24gMjIwOTQxKQorKysgU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXMuaCIKLSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlSU0EuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmNwcAkocmV2aXNpb24gMjIwOTQxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3
ICszMCw2IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXMuaCIK
LSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkNyeXB0
b0tleVBhaXIuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FH
Q3J5cHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5UlNBR0NyeXB0LmNwcAkocmV2aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJT
QUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFu
ZGxlLmg+CkBAIC02OSwxMCArNjksMTAgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBnZXRSU0FL
ZXlQYXJhbWV0ZQogICAgIHJldHVybiBXVEZNb3ZlKGRhdGEudmFsdWUoKSk7CiB9CiAKLVJlZlB0
cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhh
c0hhc2gsIGNvbnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCitSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50
aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25z
dCBDcnlwdG9LZXlSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CiAgICAgLy8gV2hlbiBjcmVhdGluZyBhIHByaXZh
dGUga2V5LCB3ZSByZXF1aXJlIHRoZSBwIGFuZCBxIHByaW1lIGluZm9ybWF0aW9uLgotICAgIGlm
IChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6UHJp
dmF0ZSAmJiAha2V5RGF0YS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnMoKSkKKyAg
ICBpZiAoa2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHJp
dmF0ZSAmJiAha2V5RGF0YS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnMoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdXQgd2UgZG9uJ3QgY3VycmVudGx5IHN1
cHBvcnQgY3JlYXRpbmcga2V5cyB3aXRoIGFueSBhZGRpdGlvbmFsIHByaW1lIGluZm9ybWF0aW9u
LgpAQCAtODcsNyArODcsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNy
ZWF0CiAgICAgICAgIHZhbGlkICY9ICFrZXlEYXRhLm1vZHVsdXMoKS5pc0VtcHR5KCkgJiYgIWtl
eURhdGEuZXhwb25lbnQoKS5pc0VtcHR5KCk7CiAKICAgICAgICAgLy8gRm9yIHByaXZhdGUga2V5
cywgd2UgcmVxdWlyZSB0aGUgcHJpdmF0ZSBleHBvbmVudCwgYXMgd2VsbCBhcyBwIGFuZCBxIHBy
aW1lIGluZm9ybWF0aW9uLgotICAgICAgICBpZiAoa2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6OlByaXZhdGUpCisgICAgICAgIGlmIChrZXlEYXRhLnR5
cGUoKSA9PSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlKQogICAgICAgICAg
ICAgdmFsaWQgJj0gIWtleURhdGEucHJpdmF0ZUV4cG9uZW50KCkuaXNFbXB0eSgpICYmICFrZXlE
YXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IuaXNFbXB0eSgpICYmICFrZXlEYXRhLnNl
Y29uZFByaW1lSW5mbygpLnByaW1lRmFjdG9yLmlzRW1wdHkoKTsKIAogICAgICAgICBpZiAoIXZh
bGlkKQpAQCAtOTYsMTAgKzk2LDEwIEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6Y3JlYXQKIAogICAgIENyeXB0b0tleVR5cGUga2V5VHlwZTsKICAgICBzd2l0Y2ggKGtleURh
dGEudHlwZSgpKSB7Ci0gICAgY2FzZSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6VHlwZTo6
UHVibGljOgorICAgIGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHVibGljOgog
ICAgICAgICBrZXlUeXBlID0gQ3J5cHRvS2V5VHlwZTo6UHVibGljOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlOgorICAg
IGNhc2UgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZToKICAgICAgICAga2V5
VHlwZSA9IENyeXB0b0tleVR5cGU6OlByaXZhdGU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTYzMCwxMyArNjMwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tl
eVIKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0aG0+KG5hbWUsIG1v
ZHVsdXNMZW5ndGgsIFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGE+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CitzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnRE
YXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZXh0cmFjdGFibGUoKSk7CiAKICAgICBzd2l0Y2gg
KHR5cGUoKSkgewogICAgIGNhc2UgQ3J5cHRvS2V5VHlwZTo6UHVibGljOgotICAgICAgICByZXR1
cm4gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhnZXRSU0FLZXlQYXJh
bWV0ZXIobV9wbGF0Zm9ybUtleSwgIm4iKSwgZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1L
ZXksICJlIikpOworICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRl
UHVibGljKGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAibiIpLCBnZXRSU0FLZXlQ
YXJhbWV0ZXIobV9wbGF0Zm9ybUtleSwgImUiKSk7CiAgICAgY2FzZSBDcnlwdG9LZXlUeXBlOjpQ
cml2YXRlOiB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVyTVBJID0KICAgICAgICAgICAgIFtdKGdj
cnlfc2V4cF90IHNleHAsIGNvbnN0IGNoYXIqIG5hbWUpIC0+IGdjcnlfbXBpX3QgewpAQCAtNjU0
LDExICs2NTQsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENyeXB0b0tleQog
ICAgICAgICBpZiAoIWRNUEkgfHwgIXBNUEkgfHwgIXFNUEkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
IGZpcnN0UHJpbWVJbmZvOworICAgICAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUlu
Zm8gZmlyc3RQcmltZUluZm87CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBtcGlEYXRhKHBNUEkp
KQogICAgICAgICAgICAgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IgPSBXVEZNb3ZlKGRhdGEu
dmFsdWUoKSk7CiAKLSAgICAgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5m
byBzZWNvbmRQcmltZUluZm87CisgICAgICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlByaW1l
SW5mbyBzZWNvbmRQcmltZUluZm87CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBtcGlEYXRhKHFN
UEkpKQogICAgICAgICAgICAgc2Vjb25kUHJpbWVJbmZvLnByaW1lRmFjdG9yID0gV1RGTW92ZShk
YXRhLnZhbHVlKCkpOwogCkBAIC02OTcsOSArNjk3LDkgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0tleURhdGE+IENyeXB0b0tleQogICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShkTVBJ
KSkKICAgICAgICAgICAgIHByaXZhdGVFeHBvbmVudCA9IFdURk1vdmUoZGF0YS52YWx1ZSgpKTsK
IAotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZh
dGVXaXRoQWRkaXRpb25hbERhdGEoCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25l
bnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKAogICAgICAgICAgICAgZ2V0UlNB
S2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJuIiksIGdldFJTQUtleVBhcmFtZXRlcihtX3Bs
YXRmb3JtS2V5LCAiZSIpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksCi0gICAgICAgICAgICBX
VEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBWZWN0b3I8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbz4geyB9KTsKKyAgICAgICAgICAg
IFdURk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFZlY3Rv
cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IHsgfSk7CiAgICAgfQogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCShyZXZpc2lvbiAyMjA5NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5oIgotI2luY2x1ZGUgIkNy
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJKc29uV2ViS2V5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0x
MzYsMTEgKzEzNSw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleUEK
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBZXNLZXlBbGdvcml0aG0+KENyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFsZ29yaXRobUlkZW50aWZpZXIoKSksIG1f
a2V5LnNpemUoKSAqIDgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5
cHRvS2V5QUVTOjpleHBvcnREYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4obV9rZXkpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUFFUy5oCShyZXZpc2lvbiAyMjA5NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAkod29ya2luZyBj
b3B5KQpAQCAtODgsNyArODgsNiBAQCBwcml2YXRlOgogICAgIENyeXB0b0tleUFFUyhDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBrZXksIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdv
cml0aG0+IGJ1aWxkQWxnb3JpdGhtKCkgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleURhdGE+IGV4cG9ydERhdGEoKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3Rvcjx1
aW50OF90PiBtX2tleTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMjA5
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1
ZW5jZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgi
Ci0KLSNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1D
cnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZTo6Q3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlE
YXRhOjpGb3JtYXQ6Ok9jdGV0U2VxdWVuY2UpCi0gICAgLCBtX2tleURhdGEoZGF0YSkKLXsKLX0K
LQotQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2U6On5DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5j
ZSgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0
YU9jdGV0U2VxdWVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oCShyZXZpc2lvbiAyMjA5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oCShub25l
eGlzdGVudCkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQ3J5cHRvS2V5RGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lm
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENy
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlIGZpbmFsIDogcHVibGljIENyeXB0b0tleURhdGEgewot
cHVibGljOgotICAgIGV4cGxpY2l0IENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOwotICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNl
KCk7Ci0KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG9jdGV0U2VxdWVuY2UoKSBjb25zdCB7
IHJldHVybiBtX2tleURhdGE7IH0KLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8dWludDhfdD4gbV9r
ZXlEYXRhOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0NSWVBUT19LRVlfREFUQShDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZSwgQ3J5cHRv
S2V5RGF0YTo6Rm9ybWF0OjpPY3RldFNlcXVlbmNlKQotCi0jZW5kaWYgLy8gRU5BQkxFKFNVQlRM
RV9DUllQVE8pCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleURhdGFSU0FDb21wb25lbnRzLmNwcAkocmV2aXNpb24gMjIwOTQwKQorKysgU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuY3BwCShub25l
eGlzdGVudCkKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKLQotI2lmIEVOQUJM
RShTVUJUTEVfQ1JZUFRPKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCi0gICAgOiBD
cnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAs
IG1fdHlwZShUeXBlOjpQdWJsaWMpCi0gICAgLCBtX21vZHVsdXMobW9kdWx1cykKLSAgICAsIG1f
ZXhwb25lbnQoZXhwb25lbnQpCi17Ci19Ci0KLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0
b3I8dWludDhfdD4mJiBleHBvbmVudCkKLSAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5RGF0
YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQotICAgICwgbV90eXBlKFR5cGU6OlB1YmxpYykKLSAg
ICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMpKQotICAgICwgbV9leHBvbmVudChXVEZNb3Zl
KGV4cG9uZW50KSkKLXsKLX0KLQotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRl
RXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNB
Q29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQotICAgICwgbV9tb2R1bHVz
KG1vZHVsdXMpCi0gICAgLCBtX2V4cG9uZW50KGV4cG9uZW50KQotICAgICwgbV9wcml2YXRlRXhw
b25lbnQocHJpdmF0ZUV4cG9uZW50KQotICAgICwgbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBh
cmFtZXRlcnMoZmFsc2UpCi17Ci19Ci0KLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8
dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQot
ICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVudHMp
Ci0gICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKLSAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1v
ZHVsdXMpKQotICAgICwgbV9leHBvbmVudChXVEZNb3ZlKGV4cG9uZW50KSkKLSAgICAsIG1fcHJp
dmF0ZUV4cG9uZW50KFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSkKLSAgICAsIG1faGFzQWRkaXRp
b25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKGZhbHNlKQotewotfQotCi1DcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1l
SW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmlt
ZUluZm8+JiBvdGhlclByaW1lSW5mb3MpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURh
dGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQot
ICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCi0gICAgLCBtX2V4cG9uZW50KGV4cG9uZW50KQotICAg
ICwgbV9wcml2YXRlRXhwb25lbnQocHJpdmF0ZUV4cG9uZW50KQotICAgICwgbV9oYXNBZGRpdGlv
bmFsUHJpdmF0ZUtleVBhcmFtZXRlcnModHJ1ZSkKLSAgICAsIG1fZmlyc3RQcmltZUluZm8oZmly
c3RQcmltZUluZm8pCi0gICAgLCBtX3NlY29uZFByaW1lSW5mbyhzZWNvbmRQcmltZUluZm8pCi0g
ICAgLCBtX290aGVyUHJpbWVJbmZvcyhvdGhlclByaW1lSW5mb3MpCi17Ci19Ci0KLUNyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8dWlu
dDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4
X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUluZm8mJiBmaXJzdFByaW1lSW5mbywgUHJpbWVJ
bmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8UHJpbWVJbmZvPiYmIG90aGVyUHJpbWVJbmZv
cykKLSAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25l
bnRzKQotICAgICwgbV90eXBlKFR5cGU6OlByaXZhdGUpCi0gICAgLCBtX21vZHVsdXMoV1RGTW92
ZShtb2R1bHVzKSkKLSAgICAsIG1fZXhwb25lbnQoV1RGTW92ZShleHBvbmVudCkpCi0gICAgLCBt
X3ByaXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCkpCi0gICAgLCBtX2hhc0Fk
ZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycyh0cnVlKQotICAgICwgbV9maXJzdFByaW1lSW5m
byhXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSkKLSAgICAsIG1fc2Vjb25kUHJpbWVJbmZvKFdURk1v
dmUoc2Vjb25kUHJpbWVJbmZvKSkKLSAgICAsIG1fb3RoZXJQcmltZUluZm9zKFdURk1vdmUob3Ro
ZXJQcmltZUluZm9zKSkKLXsKLX0KLQotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6On5Dcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cygpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oCShy
ZXZpc2lvbiAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cy5oCShub25leGlzdGVudCkKQEAgLTEsMTE4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNyeXB0b0tleURhdGEuaCIKLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyBmaW5hbCA6
IHB1YmxpYyBDcnlwdG9LZXlEYXRhIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgewot
ICAgICAgICBQdWJsaWMsCi0gICAgICAgIFByaXZhdGUKLSAgICB9OwotCi0gICAgc3RydWN0IFBy
aW1lSW5mbyB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBwcmltZUZhY3RvcjsKLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGZhY3RvckNSVEV4cG9uZW50OwotICAgICAgICBWZWN0b3I8dWludDhf
dD4gZmFjdG9yQ1JUQ29lZmZpY2llbnQ7Ci0gICAgfTsKLQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVB1YmxpYyhjb25zdCBWZWN0
b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21w
b25lbnRzPihuZXcgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQp
KTsKLSAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cz4gY3JlYXRlUHVibGljKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1
aW50OF90PiYmIGV4cG9uZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25l
bnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRl
UHJpdmF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50
LCBwcml2YXRlRXhwb25lbnQpKTsKLSAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZShWZWN0b3I8dWludDhfdD4m
JiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYg
cHJpdmF0ZUV4cG9uZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
KFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBv
bmVudCkpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzPiBjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQsIGNvbnN0IFByaW1lSW5mbyYg
Zmlyc3RQcmltZUluZm8sIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvLCBjb25zdCBW
ZWN0b3I8UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tl
eURhdGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2YXRlRXhwb25lbnQsIGZp
cnN0UHJpbWVJbmZvLCBzZWNvbmRQcmltZUluZm8sIG90aGVyUHJpbWVJbmZvcykpOwotICAgIH0K
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPiBj
cmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMs
IFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhw
b25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQcmlt
ZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQcmltZUluZm9zKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3
IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhw
b25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8p
LCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkpOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKCk7Ci0KLSAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIC8vIFByaXZhdGUg
YW5kIHB1YmxpYyBrZXlzLgotICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cygpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kdWx1czsgfQotICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhw
b25lbnQoKSBjb25zdCB7IHJldHVybiBtX2V4cG9uZW50OyB9Ci0KLSAgICAvLyBPbmx5IHByaXZh
dGUga2V5cy4KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUV4cG9uZW50OyB9Ci0gICAgYm9vbCBoYXNBZGRpdGlvbmFs
UHJpdmF0ZUtleVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FkZGl0aW9uYWxQcml2
YXRlS2V5UGFyYW1ldGVyczsgfQotICAgIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmltZUluZm8o
KSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UHJpbWVJbmZvOyB9Ci0gICAgY29uc3QgUHJpbWVJbmZv
JiBzZWNvbmRQcmltZUluZm8oKSBjb25zdCB7IHJldHVybiBtX3NlY29uZFByaW1lSW5mbzsgfQot
ICAgIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MoKSBjb25zdCB7IHJl
dHVybiBtX290aGVyUHJpbWVJbmZvczsgfQotCi1wcml2YXRlOgotICAgIENyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBleHBvbmVudCk7Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVj
dG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQpOwotCi0g
ICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1
bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHByaXZhdGVFeHBvbmVudCk7Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVj
dG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rv
cjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCk7Ci0KLSAgICBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBj
b25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZvLCBjb25zdCBQcmltZUluZm8mIHNlY29uZFBy
aW1lSW5mbywgY29uc3QgVmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcyk7Ci0gICAg
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVj
dG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVu
dCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFByaW1lSW5mbyYmIHNlY29uZFByaW1lSW5m
bywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1lSW5mb3MpOwotCi0gICAgVHlwZSBtX3R5
cGU7Ci0KLSAgICAvLyBQcml2YXRlIGFuZCBwdWJsaWMga2V5cy4KLSAgICBWZWN0b3I8dWludDhf
dD4gbV9tb2R1bHVzOwotICAgIFZlY3Rvcjx1aW50OF90PiBtX2V4cG9uZW50OwotCi0gICAgLy8g
T25seSBwcml2YXRlIGtleXMuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcHJpdmF0ZUV4cG9uZW50
OwotICAgIGJvb2wgbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnM7Ci0gICAgUHJp
bWVJbmZvIG1fZmlyc3RQcmltZUluZm87Ci0gICAgUHJpbWVJbmZvIG1fc2Vjb25kUHJpbWVJbmZv
OwotICAgIFZlY3RvcjxQcmltZUluZm8+IG1fb3RoZXJQcmltZUluZm9zOyAvLyBXaGVuIHRocmVl
IG9yIG1vcmUgcHJpbWVzIGhhdmUgYmVlbiB1c2VkLCB0aGUgbnVtYmVyIG9mIGFycmF5IGVsZW1l
bnRzIGlzIGJlIHRoZSBudW1iZXIgb2YgcHJpbWVzIHVzZWQgbWludXMgdHdvLgotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NSWVBUT19LRVlf
REFUQShDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cywgQ3J5cHRvS2V5RGF0YTo6Rm9ybWF0OjpS
U0FDb21wb25lbnRzKQotCi0jZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCShyZXZpc2lvbiAyMjA5
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5
RGF0YS5oIgogI2luY2x1ZGUgIkpzb25XZWJLZXkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KIApAQCAtMjIyLDEyICsyMjEsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGht
PiBDcnlwdG9LZXlFCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlFQzo6ZXhwb3J0RGF0YSgpIGNvbnN0Ci17Ci0gICAgLy8g
QSBkdW1teSBpbXBsZW1lbnRhdGlvbiBmb3Igbm93LgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0tleURhdGE+KENyeXB0b0tleURhdGE6OkZvcm1hdDo6T2N0ZXRTZXF1ZW5jZSk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oCShy
ZXZpc2lvbiAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlF
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDYgQEAgcHJpdmF0ZToKICAgICBDcnlw
dG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENyeXB0b0tleUNsYXNz
OjpFQzsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gYnVpbGRBbGdvcml0
aG0oKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhw
b3J0RGF0YSgpIGNvbnN0IGZpbmFsOwogCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q3J5cHRv
S2V5UGFpcj4gcGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwg
TmFtZWRDdXJ2ZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAg
IHN0YXRpYyBSZWZQdHI8Q3J5cHRvS2V5RUM+IHBsYXRmb3JtSW1wb3J0UmF3KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuY3BwCShyZXZpc2lvbiAyMjA5NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5jbHVk
ZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgIkpzb25XZWJLZXkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
QEAgLTE1NywxMSArMTU2LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gQ3J5cHRv
S2V5SAogICAgICAgICBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZSht
X2hhc2gpLCBtX2tleS5zaXplKCkgKiA4KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tl
eURhdGE+IENyeXB0b0tleUhNQUM6OmV4cG9ydERhdGEoKSBjb25zdAotewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlPihtX2tleSk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUhNQUMuaAkocmV2
aXNpb24gMjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1B
Qy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgQ3J5cHRv
S2V5SE1BQyhWZWN0b3I8dWludDhfdD4mJiBrZXksIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gYnVpbGRBbGdvcml0aG0oKSBjb25zdCBmaW5hbDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2hhc2g7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fa2V5OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlSU0EuY3BwCShyZXZpc2lvbiAyMjA5NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlSU0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAKLSNpbmNsdWRl
ICJDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQUNv
bXBvbmVudHMuaCIKICNpbmNsdWRlICJKc29uV2ViS2V5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgpAQCAtNzgsNyArNzgsNyBA
QCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9yCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmIChrZXlEYXRhLmQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gaW1w
b3J0IHB1YmxpYyBrZXkKLSAgICAgICAgYXV0byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZN
b3ZlKGV4cG9uZW50KSk7CisgICAgICAgIGF1dG8gcHVibGljS2V5Q29tcG9uZW50cyA9IENyeXB0
b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3Zl
KGV4cG9uZW50KSk7CiAgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVm
ZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KICAgICAgICAgcmV0dXJuIENyeXB0b0tleVJT
QTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOwogICAgIH0KQEAgLTg4LDE1ICs4OCwxNSBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9yCiAgICAgaWYgKCFXVEY6OmJhc2U2NFVSTERlY29kZShrZXlEYXRh
LmQsIHByaXZhdGVFeHBvbmVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChr
ZXlEYXRhLnAuaXNOdWxsKCkgJiYga2V5RGF0YS5xLmlzTnVsbCgpICYmIGtleURhdGEuZHAuaXNO
dWxsKCkgJiYga2V5RGF0YS5kcC5pc051bGwoKSAmJiBrZXlEYXRhLnFpLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50czo6Y3JlYXRlUHJpdmF0ZShXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwg
V1RGTW92ZShwcml2YXRlRXhwb25lbnQpKTsKKyAgICAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9u
ZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGUoV1RGTW92ZShtb2R1
bHVzKSwgV1RGTW92ZShleHBvbmVudCksIFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSk7CiAgICAg
ICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBh
IHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0
ZDo6bnVsbG9wdC4KICAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRo
bSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFz
aCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAK
ICAgICBpZiAoa2V5RGF0YS5wLmlzTnVsbCgpIHx8IGtleURhdGEucS5pc051bGwoKSB8fCBrZXlE
YXRhLmRwLmlzTnVsbCgpIHx8IGtleURhdGEuZHEuaXNOdWxsKCkgfHwga2V5RGF0YS5xaS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHM6OlByaW1lSW5mbyBmaXJzdFByaW1lSW5mbzsKLSAgICBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsKKyAgICBDcnlwdG9LZXlSU0FDb21w
b25lbnRzOjpQcmltZUluZm8gZmlyc3RQcmltZUluZm87CisgICAgQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50czo6UHJpbWVJbmZvIHNlY29uZFByaW1lSW5mbzsKICAgICBpZiAoIVdURjo6YmFzZTY0VVJM
RGVjb2RlKGtleURhdGEucCwgZmlyc3RQcmltZUluZm8ucHJpbWVGYWN0b3IpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIVdURjo6YmFzZTY0VVJMRGVjb2RlKGtleURhdGEuZHAs
IGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50KSkKQEAgLTEwOCwxNCArMTA4LDE0IEBA
IFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3IKICAgICBpZiAoIVdURjo6
YmFzZTY0VVJMRGVjb2RlKGtleURhdGEucWksIHNlY29uZFByaW1lSW5mby5mYWN0b3JDUlRDb2Vm
ZmljaWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgha2V5RGF0YS5vdGgp
IHsKLSAgICAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUobW9kdWx1
cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUo
Zmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIHsgfSk7CisgICAgICAg
IGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVh
dGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhw
b25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8p
LCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIHsgfSk7CiAgICAgICAgIC8vIE5vdGljZTogQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBz
aG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KICAgICAg
ICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21w
b25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKLSAgICBWZWN0b3I8Q3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1lSW5mbz4gb3RoZXJQcmltZUluZm9zOworICAgIFZl
Y3RvcjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+IG90aGVyUHJpbWVJbmZvczsK
ICAgICBmb3IgKGF1dG8gdmFsdWUgOiBrZXlEYXRhLm90aC52YWx1ZSgpKSB7Ci0gICAgICAgIENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8gaW5mbzsKKyAgICAgICAgQ3J5cHRv
S2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGluZm87CiAgICAgICAgIGlmICghV1RGOjpiYXNl
NjRVUkxEZWNvZGUodmFsdWUuciwgaW5mby5wcmltZUZhY3RvcikpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCFXVEY6OmJhc2U2NFVSTERlY29kZSh2YWx1ZS5kLCBp
bmZvLmZhY3RvckNSVEV4cG9uZW50KSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBSZWZQdHI8Q3J5cHRv
S2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9yCiAgICAgICAgIG90aGVyUHJpbWVJbmZvcy5hcHBl
bmQoaW5mbyk7CiAgICAgfQogCi0gICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdU
Rk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVu
dCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdU
Rk1vdmUob3RoZXJQcmltZUluZm9zKSk7CisgICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9
IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEo
V1RGTW92ZShtb2R1bHVzKSwgV1RGTW92ZShleHBvbmVudCksIFdURk1vdmUocHJpdmF0ZUV4cG9u
ZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSwg
V1RGTW92ZShvdGhlclByaW1lSW5mb3MpKTsKICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBo
YXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCiAgICAgcmV0dXJuIENyeXB0
b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKIH0KQEAgLTEzNywyOSArMTM3LDI5IEBAIEpzb25XZWJLZXkgQ3J5cHRv
S2V5UlNBOjpleHBvcnRKd2soKSBjb24KICAgICByZXN1bHQua2V5X29wcyA9IHVzYWdlcygpOwog
ICAgIHJlc3VsdC5leHQgPSBleHRyYWN0YWJsZSgpOwogCi0gICAgYXV0byBrZXlEYXRhID0gZXhw
b3J0RGF0YSgpOwotICAgIGNvbnN0IGF1dG8mIHJzYUtleURhdGEgPSBkb3duY2FzdDxDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpOworICAgIGF1dG8gcnNhQ29tcG9uZW50cyA9
IGV4cG9ydERhdGEoKTsKKwogICAgIC8vIHB1YmxpYyBrZXkKLSAgICByZXN1bHQubiA9IGJhc2U2
NFVSTEVuY29kZShyc2FLZXlEYXRhLm1vZHVsdXMoKSk7Ci0gICAgcmVzdWx0LmUgPSBiYXNlNjRV
UkxFbmNvZGUocnNhS2V5RGF0YS5leHBvbmVudCgpKTsKLSAgICBpZiAocnNhS2V5RGF0YS50eXBl
KCkgPT0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYykKKyAgICByZXN1
bHQubiA9IGJhc2U2NFVSTEVuY29kZShyc2FDb21wb25lbnRzLT5tb2R1bHVzKCkpOworICAgIHJl
c3VsdC5lID0gYmFzZTY0VVJMRW5jb2RlKHJzYUNvbXBvbmVudHMtPmV4cG9uZW50KCkpOworICAg
IGlmIChyc2FDb21wb25lbnRzLT50eXBlKCkgPT0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6VHlw
ZTo6UHVibGljKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gcHJpdmF0ZSBrZXkK
LSAgICByZXN1bHQuZCA9IGJhc2U2NFVSTEVuY29kZShyc2FLZXlEYXRhLnByaXZhdGVFeHBvbmVu
dCgpKTsKLSAgICBpZiAoIXJzYUtleURhdGEuaGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0
ZXJzKCkpCisgICAgcmVzdWx0LmQgPSBiYXNlNjRVUkxFbmNvZGUocnNhQ29tcG9uZW50cy0+cHJp
dmF0ZUV4cG9uZW50KCkpOworICAgIGlmICghcnNhQ29tcG9uZW50cy0+aGFzQWRkaXRpb25hbFBy
aXZhdGVLZXlQYXJhbWV0ZXJzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICByZXN1
bHQucCA9IGJhc2U2NFVSTEVuY29kZShyc2FLZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkucHJpbWVG
YWN0b3IpOwotICAgIHJlc3VsdC5xID0gYmFzZTY0VVJMRW5jb2RlKHJzYUtleURhdGEuc2Vjb25k
UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IpOwotICAgIHJlc3VsdC5kcCA9IGJhc2U2NFVSTEVuY29k
ZShyc2FLZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCkuZmFjdG9yQ1JURXhwb25lbnQpOwotICAgIHJl
c3VsdC5kcSA9IGJhc2U2NFVSTEVuY29kZShyc2FLZXlEYXRhLnNlY29uZFByaW1lSW5mbygpLmZh
Y3RvckNSVEV4cG9uZW50KTsKLSAgICByZXN1bHQucWkgPSBiYXNlNjRVUkxFbmNvZGUocnNhS2V5
RGF0YS5zZWNvbmRQcmltZUluZm8oKS5mYWN0b3JDUlRDb2VmZmljaWVudCk7Ci0gICAgaWYgKHJz
YUtleURhdGEub3RoZXJQcmltZUluZm9zKCkuaXNFbXB0eSgpKQorICAgIHJlc3VsdC5wID0gYmFz
ZTY0VVJMRW5jb2RlKHJzYUNvbXBvbmVudHMtPmZpcnN0UHJpbWVJbmZvKCkucHJpbWVGYWN0b3Ip
OworICAgIHJlc3VsdC5xID0gYmFzZTY0VVJMRW5jb2RlKHJzYUNvbXBvbmVudHMtPnNlY29uZFBy
aW1lSW5mbygpLnByaW1lRmFjdG9yKTsKKyAgICByZXN1bHQuZHAgPSBiYXNlNjRVUkxFbmNvZGUo
cnNhQ29tcG9uZW50cy0+Zmlyc3RQcmltZUluZm8oKS5mYWN0b3JDUlRFeHBvbmVudCk7CisgICAg
cmVzdWx0LmRxID0gYmFzZTY0VVJMRW5jb2RlKHJzYUNvbXBvbmVudHMtPnNlY29uZFByaW1lSW5m
bygpLmZhY3RvckNSVEV4cG9uZW50KTsKKyAgICByZXN1bHQucWkgPSBiYXNlNjRVUkxFbmNvZGUo
cnNhQ29tcG9uZW50cy0+c2Vjb25kUHJpbWVJbmZvKCkuZmFjdG9yQ1JUQ29lZmZpY2llbnQpOwor
ICAgIGlmIChyc2FDb21wb25lbnRzLT5vdGhlclByaW1lSW5mb3MoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBWZWN0b3I8UnNhT3RoZXJQcmltZXNJbmZvPiBvdGg7
Ci0gICAgZm9yIChhdXRvIGluZm8gOiByc2FLZXlEYXRhLm90aGVyUHJpbWVJbmZvcygpKSB7Cisg
ICAgZm9yIChhdXRvIGluZm8gOiByc2FDb21wb25lbnRzLT5vdGhlclByaW1lSW5mb3MoKSkgewog
ICAgICAgICBSc2FPdGhlclByaW1lc0luZm8gb3RoZXJJbmZvOwogICAgICAgICBvdGhlckluZm8u
ciA9IGJhc2U2NFVSTEVuY29kZShpbmZvLnByaW1lRmFjdG9yKTsKICAgICAgICAgb3RoZXJJbmZv
LmQgPSBiYXNlNjRVUkxFbmNvZGUoaW5mby5mYWN0b3JDUlRFeHBvbmVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaAkocmV2aXNpb24gMjIwOTQwKQor
KysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAgdHlwZWRlZiBnY3J5X3NleHAqIFBsYXRmb3JtUlNBS2V5Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
OworY2xhc3MgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czsKIGNsYXNzIFByb21pc2VXcmFwcGVyOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9LZXlSU0EoaWRlbnRp
ZmllciwgaGFzaCwgaGFzSGFzaCwgdHlwZSwgcGxhdGZvcm1LZXksIGV4dHJhY3RhYmxlLCB1c2Fn
ZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tleVJTQT4gY3JlYXRlKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9v
bCBoYXNIYXNoLCBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwKTsKKyAgICBzdGF0aWMgUmVmUHRyPENyeXB0b0tl
eVJTQT4gY3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBDcnlwdG9LZXlSU0FDb21wb25lbnRz
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApOwogICAgIHZpcnR1YWwg
fkNyeXB0b0tleVJTQSgpOwogCiAgICAgYm9vbCBpc1Jlc3RyaWN0ZWRUb0hhc2goQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciYpIGNvbnN0OwpAQCAtMTE1LDYgKzExNSw4IEBAIHB1YmxpYzoKICAg
ICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGV4cG9ydFNwa2koKSBjb25zdDsKICAgICBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGV4cG9ydFBrY3M4KCkgY29uc3Q7CiAKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gZXhwb3J0RGF0YSgpIGNvbnN0
OworCiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQogCiBwcml2YXRlOgpAQCAtMTIzLDcgKzEyNSw2
IEBAIHByaXZhdGU6CiAgICAgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBDcnlwdG9LZXlDbGFzczo6UlNBOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8S2V5
QWxnb3JpdGhtPiBidWlsZEFsZ29yaXRobSgpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlEYXRhPiBleHBvcnREYXRhKCkgY29uc3QgZmluYWw7CiAKICAgICBQbGF0
Zm9ybVJTQUtleSBtX3BsYXRmb3JtS2V5OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
a2V5cy9DcnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0FDb21wb25lbnRzLmNwcAkocmV2aXNpb24gMjIw
OTQwKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50cy5jcHA6MjIwOTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMuaCIKKworI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZXhwb25lbnQpCisgICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZv
cm1hdDo6UlNBQ29tcG9uZW50cykKKyAgICAsIG1fdHlwZShUeXBlOjpQdWJsaWMpCisgICAgLCBt
X21vZHVsdXMobW9kdWx1cykKKyAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQpCit7Cit9CisKK0Ny
eXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0
b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCkKKyAgICA6
IENyeXB0b0tleURhdGEoQ3J5cHRvS2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQorICAg
ICwgbV90eXBlKFR5cGU6OlB1YmxpYykKKyAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMp
KQorICAgICwgbV9leHBvbmVudChXVEZNb3ZlKGV4cG9uZW50KSkKK3sKK30KKworQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCisgICAgOiBDcnlwdG9LZXlEYXRh
KENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKyAgICAsIG1fdHlwZShUeXBl
OjpQcml2YXRlKQorICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCisgICAgLCBtX2V4cG9uZW50KGV4
cG9uZW50KQorICAgICwgbV9wcml2YXRlRXhwb25lbnQocHJpdmF0ZUV4cG9uZW50KQorICAgICwg
bV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnMoZmFsc2UpCit7Cit9CisKK0NyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlE
YXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVudHMpCisgICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkK
KyAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMpKQorICAgICwgbV9leHBvbmVudChXVEZN
b3ZlKGV4cG9uZW50KSkKKyAgICAsIG1fcHJpdmF0ZUV4cG9uZW50KFdURk1vdmUocHJpdmF0ZUV4
cG9uZW50KSkKKyAgICAsIG1faGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKGZhbHNl
KQoreworfQorCitDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwg
Y29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQ
cmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpCisgICAg
OiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKyAg
ICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQorICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCisgICAg
LCBtX2V4cG9uZW50KGV4cG9uZW50KQorICAgICwgbV9wcml2YXRlRXhwb25lbnQocHJpdmF0ZUV4
cG9uZW50KQorICAgICwgbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnModHJ1ZSkK
KyAgICAsIG1fZmlyc3RQcmltZUluZm8oZmlyc3RQcmltZUluZm8pCisgICAgLCBtX3NlY29uZFBy
aW1lSW5mbyhzZWNvbmRQcmltZUluZm8pCisgICAgLCBtX290aGVyUHJpbWVJbmZvcyhvdGhlclBy
aW1lSW5mb3MpCit7Cit9CisKK0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhf
dD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUlu
Zm8mJiBmaXJzdFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8
UHJpbWVJbmZvPiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICA6IENyeXB0b0tleURhdGEoQ3J5cHRv
S2V5RGF0YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQorICAgICwgbV90eXBlKFR5cGU6OlByaXZh
dGUpCisgICAgLCBtX21vZHVsdXMoV1RGTW92ZShtb2R1bHVzKSkKKyAgICAsIG1fZXhwb25lbnQo
V1RGTW92ZShleHBvbmVudCkpCisgICAgLCBtX3ByaXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZh
dGVFeHBvbmVudCkpCisgICAgLCBtX2hhc0FkZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycyh0
cnVlKQorICAgICwgbV9maXJzdFByaW1lSW5mbyhXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSkKKyAg
ICAsIG1fc2Vjb25kUHJpbWVJbmZvKFdURk1vdmUoc2Vjb25kUHJpbWVJbmZvKSkKKyAgICAsIG1f
b3RoZXJQcmltZUluZm9zKFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkKK3sKK30KKworQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHM6On5DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5UlNBQ29tcG9uZW50cy5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCwzMSArMjQsMjggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlSU0FDb21w
b25lbnRzLmgiCiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBv
bmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGV4cG9uZW50KQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6
OlJTQUNvbXBvbmVudHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHVibGljKQorQ3J5cHRvS2V5UlNB
Q29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4m
IG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCisgICAgOiBtX3R5cGUo
VHlwZTo6UHVibGljKQogICAgICwgbV9tb2R1bHVzKG1vZHVsdXMpCiAgICAgLCBtX2V4cG9uZW50
KGV4cG9uZW50KQogewogfQogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4
X3Q+JiYgZXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1h
dDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQdWJsaWMpCitDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlB1
YmxpYykKICAgICAsIG1fbW9kdWx1cyhXVEZNb3ZlKG1vZHVsdXMpKQogICAgICwgbV9leHBvbmVu
dChXVEZNb3ZlKGV4cG9uZW50KSkKIHsKIH0KIAotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6
OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1
cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBwcml2YXRlRXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tleURhdGE6OkZv
cm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRlKQorQ3J5cHRv
S2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlByaXZh
dGUpCiAgICAgLCBtX21vZHVsdXMobW9kdWx1cykKICAgICAsIG1fZXhwb25lbnQoZXhwb25lbnQp
CiAgICAgLCBtX3ByaXZhdGVFeHBvbmVudChwcml2YXRlRXhwb25lbnQpCkBAIC01Niw5ICs1Myw4
IEBAIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlwdG9LZXlEYXQKIHsKIH0KIAotQ3J5
cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rv
cjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8
dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQpCi0gICAgOiBDcnlwdG9LZXlEYXRhKENyeXB0b0tl
eURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlwZShUeXBlOjpQcml2YXRl
KQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVp
bnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQorICAgIDogbV90eXBlKFR5cGU6OlByaXZhdGUpCiAg
ICAgLCBtX21vZHVsdXMoV1RGTW92ZShtb2R1bHVzKSkKICAgICAsIG1fZXhwb25lbnQoV1RGTW92
ZShleHBvbmVudCkpCiAgICAgLCBtX3ByaXZhdGVFeHBvbmVudChXVEZNb3ZlKHByaXZhdGVFeHBv
bmVudCkpCkBAIC02Niw5ICs2Miw4IEBAIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpDcnlw
dG9LZXlEYXQKIHsKIH0KIAotQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OkNyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhw
b25lbnQsIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmltZUluZm8sIGNvbnN0IFByaW1lSW5mbyYg
c2Vjb25kUHJpbWVJbmZvLCBjb25zdCBWZWN0b3I8UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9z
KQotICAgIDogQ3J5cHRvS2V5RGF0YShDcnlwdG9LZXlEYXRhOjpGb3JtYXQ6OlJTQUNvbXBvbmVu
dHMpCi0gICAgLCBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKK0NyeXB0b0tleVJTQUNvbXBvbmVudHM6
OkNyeXB0b0tleVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBy
aXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJp
bWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclBy
aW1lSW5mb3MpCisgICAgOiBtX3R5cGUoVHlwZTo6UHJpdmF0ZSkKICAgICAsIG1fbW9kdWx1cyht
b2R1bHVzKQogICAgICwgbV9leHBvbmVudChleHBvbmVudCkKICAgICAsIG1fcHJpdmF0ZUV4cG9u
ZW50KHByaXZhdGVFeHBvbmVudCkKQEAgLTc5LDkgKzc0LDggQEAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OkNyeXB0b0tleURhdAogewogfQogCi1DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
czo6Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywg
VmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBv
bmVudCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFByaW1lSW5mbyYmIHNlY29uZFByaW1l
SW5mbywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1lSW5mb3MpCi0gICAgOiBDcnlwdG9L
ZXlEYXRhKENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKLSAgICAsIG1fdHlw
ZShUeXBlOjpQcml2YXRlKQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5UlNBQ29t
cG9uZW50cyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBv
bmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUluZm8mJiBmaXJz
dFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8UHJpbWVJbmZv
PiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICA6IG1fdHlwZShUeXBlOjpQcml2YXRlKQogICAgICwg
bV9tb2R1bHVzKFdURk1vdmUobW9kdWx1cykpCiAgICAgLCBtX2V4cG9uZW50KFdURk1vdmUoZXhw
b25lbnQpKQogICAgICwgbV9wcml2YXRlRXhwb25lbnQoV1RGTW92ZShwcml2YXRlRXhwb25lbnQp
KQpAQCAtOTIsNyArODYsNyBAQCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6Q3J5cHRvS2V5
RGF0CiB7CiB9CiAKLUNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjp+Q3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHMoKQorQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6fkNyeXB0b0tleVJTQUNvbXBv
bmVudHMoKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlSU0FDb21wb25lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyMjA5NDApCShmcm9tIFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleURhdGFSU0FDb21wb25lbnRzLmg6MjIwOTQw
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5
RGF0YSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgUHVibGljLAor
ICAgICAgICBQcml2YXRlCisgICAgfTsKKworICAgIHN0cnVjdCBQcmltZUluZm8geworICAgICAg
ICBWZWN0b3I8dWludDhfdD4gcHJpbWVGYWN0b3I7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBm
YWN0b3JDUlRFeHBvbmVudDsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGZhY3RvckNSVENvZWZm
aWNpZW50OworICAgIH07CisKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzPiBjcmVhdGVQdWJsaWMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1
bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50KSk7CisgICAgfQorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVB1
YmxpYyhWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVu
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhXVEZNb3ZlKG1vZHVs
dXMpLCBXVEZNb3ZlKGV4cG9uZW50KSkpOworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGUoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cyhtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50
KSk7CisgICAgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+IGNyZWF0ZVByaXZhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9y
PHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMp
LCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2YXRlRXhwb25lbnQpKSk7CisgICAgfQor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4g
Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1v
ZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBjb25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZvLCBj
b25zdCBQcmltZUluZm8mIHNlY29uZFByaW1lSW5mbywgY29uc3QgVmVjdG9yPFByaW1lSW5mbz4m
IG90aGVyUHJpbWVJbmZvcykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cyhtb2R1bHVzLCBleHBvbmVudCwgcHJpdmF0ZUV4cG9uZW50LCBmaXJzdFByaW1lSW5mbywgc2Vj
b25kUHJpbWVJbmZvLCBvdGhlclByaW1lSW5mb3MpKTsKKyAgICB9CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZVdpdGhB
ZGRpdGlvbmFsRGF0YShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4m
JiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50LCBQcmltZUluZm8m
JiBmaXJzdFByaW1lSW5mbywgUHJpbWVJbmZvJiYgc2Vjb25kUHJpbWVJbmZvLCBWZWN0b3I8UHJp
bWVJbmZvPiYmIG90aGVyUHJpbWVJbmZvcykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KG5ldyBDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShw
cml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQ
cmltZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIH5DcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cygpOworCisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICAvLyBQcml2YXRlIGFuZCBwdWJsaWMga2V5cy4K
KyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsdXM7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBvbmVudDsgfQorCisgICAgLy8gT25seSBwcml2YXRlIGtleXMuCisgICAgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVFeHBvbmVudDsgfQorICAgIGJvb2wgaGFzQWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBZGRpdGlvbmFsUHJpdmF0ZUtleVBhcmFtZXRlcnM7
IH0KKyAgICBjb25zdCBQcmltZUluZm8mIGZpcnN0UHJpbWVJbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdFByaW1lSW5mbzsgfQorICAgIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmRQcmltZUluZm87IH0KKyAgICBjb25zdCBWZWN0b3I8
UHJpbWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKCkgY29uc3QgeyByZXR1cm4gbV9vdGhlclByaW1l
SW5mb3M7IH0KKworcHJpdmF0ZToKKyAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25l
bnQpOworICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KTsKKworICAgIENyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25l
bnQpOworICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1v
ZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2
YXRlRXhwb25lbnQpOworCisgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBm
aXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZl
Y3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpOworICAgIENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4
cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZp
cnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUlu
Zm8+JiYgb3RoZXJQcmltZUluZm9zKTsKKworICAgIFR5cGUgbV90eXBlOworCisgICAgLy8gUHJp
dmF0ZSBhbmQgcHVibGljIGtleXMuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fbW9kdWx1czsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9leHBvbmVudDsKKworICAgIC8vIE9ubHkgcHJpdmF0ZSBrZXlz
LgorICAgIFZlY3Rvcjx1aW50OF90PiBtX3ByaXZhdGVFeHBvbmVudDsKKyAgICBib29sIG1faGFz
QWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzOworICAgIFByaW1lSW5mbyBtX2ZpcnN0UHJp
bWVJbmZvOworICAgIFByaW1lSW5mbyBtX3NlY29uZFByaW1lSW5mbzsKKyAgICBWZWN0b3I8UHJp
bWVJbmZvPiBtX290aGVyUHJpbWVJbmZvczsgLy8gV2hlbiB0aHJlZSBvciBtb3JlIHByaW1lcyBo
YXZlIGJlZW4gdXNlZCwgdGhlIG51bWJlciBvZiBhcnJheSBlbGVtZW50cyBpcyBiZSB0aGUgbnVt
YmVyIG9mIHByaW1lcyB1c2VkIG1pbnVzIHR3by4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DUllQVE9fS0VZX0RBVEEoQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHMsIENyeXB0b0tleURhdGE6OkZvcm1hdDo6UlNBQ29tcG9uZW50cykKKwor
I2VuZGlmIC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQUNvbXBvbmVudHMuaAkocmV2aXNpb24gMjIw
OTQwKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBQ29tcG9uZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJDcnlwdG9LZXlEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMgZmluYWwgOiBwdWJsaWMgQ3J5cHRvS2V5RGF0YSB7
CitjbGFzcyBDcnlwdG9LZXlSU0FDb21wb25lbnRzIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IFR5cGUgewogICAgICAgICBQdWJsaWMsCkBAIC00NSwzNCArNDQsMzQgQEAgcHVibGljOgogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZmFjdG9yQ1JUQ29lZmZpY2llbnQ7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0
ZVB1YmxpYyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZXhwb25lbnQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FD
b21wb25lbnRzPiBjcmVhdGVQdWJsaWMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50KSk7CisgICAgICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBv
bmVudHMobW9kdWx1cywgZXhwb25lbnQpKTsKICAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHVibGljKFZlY3Rvcjx1aW50
OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gY3JlYXRlUHVibGljKFZlY3Rv
cjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50
cz4obmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1v
dmUoZXhwb25lbnQpKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
UlNBQ29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBvbmVudHMoV1RGTW92ZShtb2R1bHVz
KSwgV1RGTW92ZShleHBvbmVudCkpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPiBjcmVhdGVQcml2YXRlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzPiBjcmVhdGVQcml2YXRlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPihuZXcgQ3J5cHRv
S2V5RGF0YVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCkp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+
KG5ldyBDcnlwdG9LZXlSU0FDb21wb25lbnRzKG1vZHVsdXMsIGV4cG9uZW50LCBwcml2YXRlRXhw
b25lbnQpKTsKICAgICB9Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBW
ZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9u
ZW50KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4g
Y3JlYXRlUHJpdmF0ZShWZWN0b3I8dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4m
JiBleHBvbmVudCwgVmVjdG9yPHVpbnQ4X3Q+JiYgcHJpdmF0ZUV4cG9uZW50KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4o
bmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUo
ZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCkpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRzPihuZXcgQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cyhXVEZNb3ZlKG1vZHVsdXMpLCBXVEZNb3ZlKGV4cG9uZW50KSwgV1RGTW92ZShwcml2
YXRlRXhwb25lbnQpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9LZXlEYXRhUlNBQ29tcG9uZW50cz4gY3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShj
b25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhw
b25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBjb25zdCBQcmlt
ZUluZm8mIGZpcnN0UHJpbWVJbmZvLCBjb25zdCBQcmltZUluZm8mIHNlY29uZFByaW1lSW5mbywg
Y29uc3QgVmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcykKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGVXaXRoQWRk
aXRpb25hbERhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVu
dCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgY29uc3QgUHJpbWVJbmZvJiBzZWNv
bmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUluZm8+JiBvdGhlclByaW1lSW5mb3MpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGFSU0FDb21w
b25lbnRzPihuZXcgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQs
IHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQ
cmltZUluZm9zKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5UlNB
Q29tcG9uZW50cz4obmV3IENyeXB0b0tleVJTQUNvbXBvbmVudHMobW9kdWx1cywgZXhwb25lbnQs
IHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywgb3RoZXJQ
cmltZUluZm9zKSk7CiAgICAgfQotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM+IGNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEoVmVjdG9y
PHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZlY3Rvcjx1
aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCwgUHJpbWVJbmZvJiYgZmlyc3RQcmltZUluZm8sIFBy
aW1lSW5mbyYmIHNlY29uZFByaW1lSW5mbywgVmVjdG9yPFByaW1lSW5mbz4mJiBvdGhlclByaW1l
SW5mb3MpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlSU0FDb21wb25lbnRz
PiBjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVs
dXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRl
RXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZvLCBQcmltZUluZm8mJiBzZWNvbmRQ
cmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQcmltZUluZm9zKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4o
bmV3IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUo
ZXhwb25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUlu
Zm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkp
OworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVJTQUNvbXBvbmVudHM+
KG5ldyBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFdURk1vdmUobW9kdWx1cyksIFdURk1vdmUoZXhw
b25lbnQpLCBXVEZNb3ZlKHByaXZhdGVFeHBvbmVudCksIFdURk1vdmUoZmlyc3RQcmltZUluZm8p
LCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUob3RoZXJQcmltZUluZm9zKSkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgfkNyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKCk7CisgICAg
dmlydHVhbCB+Q3J5cHRvS2V5UlNBQ29tcG9uZW50cygpOwogCiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKQEAgLTg4LDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPFByaW1lSW5mbz4mIG90aGVyUHJpbWVJbmZvcygpIGNvbnN0IHsgcmV0dXJu
IG1fb3RoZXJQcmltZUluZm9zOyB9CiAKIHByaXZhdGU6Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGV4cG9uZW50KTsKLSAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyhWZWN0b3I8
dWludDhfdD4mJiBtb2R1bHVzLCBWZWN0b3I8dWludDhfdD4mJiBleHBvbmVudCk7CisgICAgQ3J5
cHRvS2V5UlNBQ29tcG9uZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpOworICAgIENyeXB0b0tleVJTQUNvbXBvbmVudHMo
VmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQpOwog
Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBt
b2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHByaXZhdGVFeHBvbmVudCk7Ci0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMo
VmVjdG9yPHVpbnQ4X3Q+JiYgbW9kdWx1cywgVmVjdG9yPHVpbnQ4X3Q+JiYgZXhwb25lbnQsIFZl
Y3Rvcjx1aW50OF90PiYmIHByaXZhdGVFeHBvbmVudCk7CisgICAgQ3J5cHRvS2V5UlNBQ29tcG9u
ZW50cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIG1vZHVsdXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZXhwb25lbnQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50KTsKKyAg
ICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rv
cjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQp
OwogCi0gICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBtb2R1bHVzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9uZW50LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgY29uc3QgUHJpbWVJbmZvJiBmaXJzdFByaW1lSW5m
bywgY29uc3QgUHJpbWVJbmZvJiBzZWNvbmRQcmltZUluZm8sIGNvbnN0IFZlY3RvcjxQcmltZUlu
Zm8+JiBvdGhlclByaW1lSW5mb3MpOwotICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0
b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZv
LCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQ
cmltZUluZm9zKTsKKyAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgbW9kdWx1cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBwcml2YXRlRXhwb25lbnQsIGNvbnN0IFByaW1lSW5mbyYgZmlyc3RQcmlt
ZUluZm8sIGNvbnN0IFByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvLCBjb25zdCBWZWN0b3I8UHJp
bWVJbmZvPiYgb3RoZXJQcmltZUluZm9zKTsKKyAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzKFZl
Y3Rvcjx1aW50OF90PiYmIG1vZHVsdXMsIFZlY3Rvcjx1aW50OF90PiYmIGV4cG9uZW50LCBWZWN0
b3I8dWludDhfdD4mJiBwcml2YXRlRXhwb25lbnQsIFByaW1lSW5mbyYmIGZpcnN0UHJpbWVJbmZv
LCBQcmltZUluZm8mJiBzZWNvbmRQcmltZUluZm8sIFZlY3RvcjxQcmltZUluZm8+JiYgb3RoZXJQ
cmltZUluZm9zKTsKIAogICAgIFR5cGUgbV90eXBlOwogCkBAIC0xMTMsNiArMTEyLDQgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0NSWVBUT19LRVlfREFUQShDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cywgQ3J5cHRvS2V5RGF0
YTo6Rm9ybWF0OjpSU0FDb21wb25lbnRzKQotCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSYXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5jcHAJ
KHJldmlzaW9uIDIyMDk0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eVJhdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5j
bHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01MSwxMiArNTAsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlw
dG9LZXlSCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmF3S2V5QWxnb3JpdGhtPihDcnlw
dG9BbGdvcml0aG1SZWdpc3RyeTo6c2luZ2xldG9uKCkubmFtZShhbGdvcml0aG1JZGVudGlmaWVy
KCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IENyeXB0b0tleVJhdzo6
ZXhwb3J0RGF0YSgpIGNvbnN0Ci17Ci0KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZT4obV9rZXkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJhdy5oCShyZXZpc2lvbiAyMjA5NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSYXcuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNiBAQCBwcml2YXRlOgogICAgIENyeXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6OlJhdzsgfQogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEtleUFsZ29yaXRobT4gYnVpbGRBbGdvcml0aG0oKSBjb25zdCBmaW5hbDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fa2V5OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAJKHJldmlzaW9uIDIyMDk0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsOCBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b0RFUlV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBDQ0NyeXB0b3JT
dGF0dXMgZ2V0UHVibGljS2V5Q29tcG8KICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMg
Q0NDcnlwdG9yU3RhdHVzIGdldFByaXZhdGVLZXlDb21wb25lbnRzKENDUlNBQ3J5cHRvclJlZiBy
c2FLZXksIFZlY3Rvcjx1aW50OF90PiYgcHJpdmF0ZUV4cG9uZW50LCBDcnlwdG9LZXlEYXRhUlNB
Q29tcG9uZW50czo6UHJpbWVJbmZvJiBmaXJzdFByaW1lSW5mbywgQ3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbyYgc2Vjb25kUHJpbWVJbmZvKQorc3RhdGljIENDQ3J5cHRvclN0
YXR1cyBnZXRQcml2YXRlS2V5Q29tcG9uZW50cyhDQ1JTQUNyeXB0b3JSZWYgcnNhS2V5LCBWZWN0
b3I8dWludDhfdD4mIHByaXZhdGVFeHBvbmVudCwgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJp
bWVJbmZvJiBmaXJzdFByaW1lSW5mbywgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
JiBzZWNvbmRQcmltZUluZm8pCiB7CiAgICAgQVNTRVJUKENDUlNBR2V0S2V5VHlwZShyc2FLZXkp
ID09IGNjUlNBS2V5UHJpdmF0ZSk7CiAKQEAgLTExMCw5ICsxMTAsOSBAQCBDcnlwdG9LZXlSU0E6
OkNyeXB0b0tleVJTQShDcnlwdG9BbGdvcml0CiB7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlSU0E+
IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleVJTQUNv
bXBvbmVudHMmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlKQogewotICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRhUlNBQ29t
cG9uZW50czo6VHlwZTo6UHJpdmF0ZSAmJiAha2V5RGF0YS5oYXNBZGRpdGlvbmFsUHJpdmF0ZUtl
eVBhcmFtZXRlcnMoKSkgeworICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlSU0FD
b21wb25lbnRzOjpUeXBlOjpQcml2YXRlICYmICFrZXlEYXRhLmhhc0FkZGl0aW9uYWxQcml2YXRl
S2V5UGFyYW1ldGVycygpKSB7CiAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xNTQ1MjMyND4g
dHJhY2tzIGFkZGluZyBzdXBwb3J0LgogICAgICAgICBXVEZMb2dBbHdheXMoIlByaXZhdGUga2V5
cyB3aXRob3V0IGFkZGl0aW9uYWwgZGF0YSBhcmUgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmNyZWF0CiAgICAgfQogICAgIC8vIFdoZW4gYW4gZW1wdHkgdmVjdG9yIHAg
aXMgcHJvdmlkZWQgdG8gQ0NSU0FDcnlwdG9yQ3JlYXRlRnJvbURhdGEgdG8gY3JlYXRlIGEgcHJp
dmF0ZSBrZXksIGl0IGNyYXNoZXMuCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMwNTUwMjI4PiB0
cmFja3MgdGhlIGlzc3VlLgotICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50czo6VHlwZTo6UHJpdmF0ZSAmJiBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCku
cHJpbWVGYWN0b3IuaXNFbXB0eSgpKQorICAgIGlmIChrZXlEYXRhLnR5cGUoKSA9PSBDcnlwdG9L
ZXlSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRlICYmIGtleURhdGEuZmlyc3RQcmltZUluZm8o
KS5wcmltZUZhY3Rvci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Q0NSU0FDcnlwdG9yUmVmIGNyeXB0b3I7CkBAIC0xMzIsNyArMTMyLDcgQEAgUmVmUHRyPENyeXB0
b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdAogICAgIC8vIGdpdmVuIHRoZSBmYWN0IHRoYXQg
d2UgaGF2ZSBhbHJlYWR5IGhhZCBpdC4gQWxzbywgdGhlIHJlLWNhY3VsYXRlZCBwcml2YXRlIGV4
cG9uZW50IG1heSBub3QgbWF0Y2ggdGhlIGdpdmVuIG9uZS4KICAgICAvLyBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzE1NDUyMzI0Pi4KICAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NSU0FDcnlw
dG9yQ3JlYXRlRnJvbURhdGEoCi0gICAgICAgIGtleURhdGEudHlwZSgpID09IENyeXB0b0tleURh
dGFSU0FDb21wb25lbnRzOjpUeXBlOjpQdWJsaWMgPyBjY1JTQUtleVB1YmxpYyA6IGNjUlNBS2V5
UHJpdmF0ZSwKKyAgICAgICAga2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50
czo6VHlwZTo6UHVibGljID8gY2NSU0FLZXlQdWJsaWMgOiBjY1JTQUtleVByaXZhdGUsCiAgICAg
ICAgICh1aW50OF90KilrZXlEYXRhLm1vZHVsdXMoKS5kYXRhKCksIGtleURhdGEubW9kdWx1cygp
LnNpemUoKSwKICAgICAgICAgKHVpbnQ4X3QqKWtleURhdGEuZXhwb25lbnQoKS5kYXRhKCksIGtl
eURhdGEuZXhwb25lbnQoKS5zaXplKCksCiAgICAgICAgICh1aW50OF90KilrZXlEYXRhLmZpcnN0
UHJpbWVJbmZvKCkucHJpbWVGYWN0b3IuZGF0YSgpLCBrZXlEYXRhLmZpcnN0UHJpbWVJbmZvKCku
cHJpbWVGYWN0b3Iuc2l6ZSgpLApAQCAtMTQ0LDcgKzE0NCw3IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6Y3JlYXQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaCwg
aGFzSGFzaCwga2V5RGF0YS50eXBlKCkgPT0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5
cGU6OlB1YmxpYyA/IENyeXB0b0tleVR5cGU6OlB1YmxpYyA6IENyeXB0b0tleVR5cGU6OlByaXZh
dGUsIGNyeXB0b3IsIGV4dHJhY3RhYmxlLCB1c2FnZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gsIGhhc0hhc2gsIGtleURhdGEudHlwZSgp
ID09IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OlR5cGU6OlB1YmxpYyA/IENyeXB0b0tleVR5cGU6
OlB1YmxpYyA6IENyeXB0b0tleVR5cGU6OlByaXZhdGUsIGNyeXB0b3IsIGV4dHJhY3RhYmxlLCB1
c2FnZSkpOwogfQogCiBDcnlwdG9LZXlSU0E6On5DcnlwdG9LZXlSU0EoKQpAQCAtMTkyLDcgKzE5
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVIKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSc2FLZXlBbGdvcml0aG0+KG5hbWUsIG1vZHVsdXNMZW5ndGgs
IFdURk1vdmUocHVibGljRXhwb25lbnQpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tl
eURhdGE+IENyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5UlNBQ29tcG9uZW50cz4gQ3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKENDUlNBR2V0S2V5VHlwZShtX3BsYXRmb3JtS2V5KSkgewogICAgIGNh
c2UgY2NSU0FLZXlQdWJsaWM6IHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxk
bid0IGdldCBSU0Ega2V5IGNvbXBvbmVudHMsIHN0YXR1cyAlZCIsIHN0YXR1cyk7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhtb2R1bHVzLCBwdWJsaWNFeHBvbmVudCk7
CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQdWJsaWMobW9k
dWx1cywgcHVibGljRXhwb25lbnQpOwogICAgIH0KICAgICBjYXNlIGNjUlNBS2V5UHJpdmF0ZTog
ewogICAgICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1czsKQEAgLTIxNCwxNSArMjE0LDE1IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBwcml2YXRl
RXhwb25lbnQ7Ci0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8g
Zmlyc3RQcmltZUluZm87Ci0gICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmlt
ZUluZm8gc2Vjb25kUHJpbWVJbmZvOwotICAgICAgICBWZWN0b3I8Q3J5cHRvS2V5RGF0YVJTQUNv
bXBvbmVudHM6OlByaW1lSW5mbz4gb3RoZXJQcmltZUluZm9zOyAvLyBBbHdheXMgZW1wdHksIENv
bW1vbkNyeXB0byBvbmx5IHN1cHBvcnRzIHR3byBwcmltZXMgKGNmLiA8cmRhcjovL3Byb2JsZW0v
MTU0NDQwNzQ+KS4KKyAgICAgICAgQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZp
cnN0UHJpbWVJbmZvOworICAgICAgICBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8g
c2Vjb25kUHJpbWVJbmZvOworICAgICAgICBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6
UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3M7IC8vIEFsd2F5cyBlbXB0eSwgQ29tbW9uQ3J5cHRv
IG9ubHkgc3VwcG9ydHMgdHdvIHByaW1lcyAoY2YuIDxyZGFyOi8vcHJvYmxlbS8xNTQ0NDA3ND4p
LgogICAgICAgICBzdGF0dXMgPSBnZXRQcml2YXRlS2V5Q29tcG9uZW50cyhtX3BsYXRmb3JtS2V5
LCBwcml2YXRlRXhwb25lbnQsIGZpcnN0UHJpbWVJbmZvLCBzZWNvbmRQcmltZUluZm8pOwogICAg
ICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkbid0IGdl
dCBSU0Ega2V5IGNvbXBvbmVudHMsIHN0YXR1cyAlZCIsIHN0YXR1cyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgcHVi
bGljRXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1l
SW5mbywgb3RoZXJQcmltZUluZm9zKTsKKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQUNvbXBv
bmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgcHVibGljRXhw
b25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywg
b3RoZXJQcmltZUluZm9zKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Cg==
</data>
<flag name="review"
          id="338937"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>