<?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>171220</bug_id>
          
          <creation_ts>2017-04-24 07:05:15 -0700</creation_ts>
          <short_desc>[GCrypt] RSASSA-PKCS1-v1_5 support</short_desc>
          <delta_ts>2017-05-30 20:30:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          <dependson>171213</dependson>
          <blocked>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300483</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 07:05:15 -0700</bug_when>
    <thetext>[GCrypt] RSASSA-PKCS1-v1_5 support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300485</commentid>
    <comment_count>1</comment_count>
      <attachid>307972</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-24 07:12:59 -0700</bug_when>
    <thetext>Created attachment 307972
Patch

Still has to enable the relevant layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300486</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-24 07:14:48 -0700</bug_when>
    <thetext>Attachment 307972 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:208:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:235:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301540</commentid>
    <comment_count>3</comment_count>
      <attachid>308232</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-26 01:12:52 -0700</bug_when>
    <thetext>Created attachment 308232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301543</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-26 01:15:18 -0700</bug_when>
    <thetext>Attachment 308232 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:208:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:235:  CryptoAlgorithmRSASSA_PKCS1_v1_5::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311478</commentid>
    <comment_count>5</comment_count>
      <attachid>308232</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-05-22 12:06:20 -0700</bug_when>
    <thetext>Comment on attachment 308232
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSASSA_PKCS1_v1_5GCrypt.cpp:199
&gt; +    error = gcry_pk_verify(signatureSexp, dataSexp, keySexp);

A crypto expert just pointed it out that we should not report any operation error if verification fails. Maybe you should consider just returning true/false for verification as well. I have filed: Bug 171983 for Apple ports.
Otherwise, looks good to me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313592</commentid>
    <comment_count>6</comment_count>
      <attachid>311476</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-29 09:24:58 -0700</bug_when>
    <thetext>Created attachment 311476
Patch for landing

Addresses the comments about the verification step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313657</commentid>
    <comment_count>7</comment_count>
      <attachid>311476</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-30 00:27:38 -0700</bug_when>
    <thetext>Comment on attachment 311476
Patch for landing

Clearing flags on attachment: 311476

Committed r217545: &lt;http://trac.webkit.org/changeset/217545&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313658</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-05-30 00:27:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314074</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:30:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479869&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307972</attachid>
            <date>2017-04-24 07:12:59 -0700</date>
            <delta_ts>2017-04-26 01:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171220-20170424161258.patch</filename>
            <type>text/plain</type>
            <size>12455</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQ3MDdjOTBlZWFlZjk3
NTRlNjYyMmE1NGY4NGMyZjFkOTNhNjJkZS4uMWVkYTQxYmE2MWExNWNmZTE3ZDU2NDcwNTZiOGQ3
Zjk5OWUyMGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA0LTI0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBSU0FT
U0EtUEtDUzEtdjFfNSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUlNBU1NBLVBLU0MxLVZfMTUgc3VwcG9ydCBmb3IgY29uZmlndXJh
dGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LgorCisgICAgICAgIFRoZSBzaWduaW5nIG9wZXJhdGlv
biBmaXJzdCBkaWdlc3RzIGRhdGEgd2l0aCB0aGUgc3BlY2lmaWVkIGhhc2ggYWxnb3JpdGhtLgor
ICAgICAgICBUaGF0J3MgdGhlbiBlbWJlZGRlZCBpbiB0aGUgZGF0YSBzLWV4cHJlc3Npb24uIFRo
YXQncyB0aGVuIHBhc3NlZCB0byB0aGUKKyAgICAgICAgZ2NyeV9wa19zaWduKCkgY2FsbCB0b2dl
dGhlciB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LCByZXR1cm5pbmcgYSBzaWctdmFsCisgICAgICAg
IHMtZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSBzaWduYXR1cmUuIFRoZSBzaWduYXR1cmUgZGF0
YSBpcyB0aGVuIHJldHJpZXZlZAorICAgICAgICBmcm9tIHRoZSByZWxldmFudCBNUEkgYW5kIHJl
dHVybmVkIHRvIHRoZSBjYWxsZXIuCisKKyAgICAgICAgVGhlIHZlcmlmaWNhdGlvbiBvcGVyYXRp
b24gZmlyc3QgZGlnZXN0cyBkYXRhIHdpdGggdGhlIHNwZWNpZmllZCBoYXNoCisgICAgICAgIGFs
Z29yaXRobS4gVGhhdCdzIHRoZW4gZW1iZWRkZWQgaW4gdGhlIGRhdGEgcy1leHByZXNzaW9uLiBB
IHNpZy12YWwKKyAgICAgICAgcy1leHByZXNzaW9uIGlzIGNvbnN0cnVjdGVkLCBlbWJlZGRpbmcg
dGhlIHNpZ25hdHVyZSBkYXRhLiBUaGUgZGF0YSBhbmQKKyAgICAgICAgc2lnLXZhbCBzLWV4cHJl
c3Npb25zIGFyZSBwYXNzZWQgdG8gdGhlIGdjcnlfc2V4cF92ZXJpZnkoKSBjYWxsIHdoaWNoIHJl
dHVybnMKKyAgICAgICAgdGhlIHJlc3VsdGluZyBlcnJvciBjb2RlLiBUaGUgdmVyaWZpY2F0aW9u
IHN1Y2NlZWRzIGlmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcworICAgICAgICBHUEdfRVJSX05PX0VS
Uk9SLCBmYWlscyBpZiBpdCdzIEdQR19FUlJfQkFEX1NJR05BVFVSRSwgb3IgZXJyb3JzIG91dCB3
aXRoIGFuCisgICAgICAgIE9wZXJhdGlvbkVycm9yIG90aGVyd2lzZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gdGhlIHJldmVsYW50IHRlc3RzIGFyZSBwYXNzaW5nIGFuZCBhcmUgdW5za2lw
cGVkIC0tIFRPRE8uCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hDcnlwdG9E
aWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRobU5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6bXBpRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWdu
KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlm
eSk6CisKIDIwMTctMDQtMjMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTU2NTcgYW5kIHIyMTU2NzYu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDNjNTM1
YWM1ZDI1M2E0ZTVmNDFkNTY0Nzg3YzQ5YzY0NjU4Y2ZlN2IuLjk5ZjM1ZGYzY2Y4NDBkNjNkNWQy
ZDEyMWJjMTFjNTcyNWM4MzcwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVHQ3J5cHQuY3BwCkBAIC0zMywxNyArMzMsMjMwIEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNB
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxl
Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxh
dGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29y
a1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgc3dpdGNoIChpZGVudGlm
aWVyKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAg
ICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOworICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8zODQ6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgQm9vbENhbGxi
YWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3Jr
UXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1O
YW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVybiAic2hhMSI7CisgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gInNo
YTIyNCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAg
ICAgICByZXR1cm4gInNoYTI1NiI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gInNoYTM4NCI7CisgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gInNoYTUxMiI7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJh
bVNleHApCit7CisgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMt
ZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5
X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElf
Rk1UX1VTRykpOworICAgIGlmICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICAvLyBRdWVyeSB0aGUgZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkgcHJl
cGFyZSB0aGUgYnVmZmVyLgorICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAs
ICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBNUEkg
ZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90PiBv
dXRwdXQoZGF0YUxlbmd0aCk7CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZN
VF9VU0csIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJKTsK
KyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0K
KworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNp
ZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFk
aWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3Jp
dGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgfQorCisg
ICAgLy8gQ29uc3RydWN0IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBLQ1Mj
MS1wYWRkZWQgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBf
dD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdv
cml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdv
cml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGdjcnlf
ZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0
YShmbGFncyBwa2NzMSkoaGFzaCAlcyAlYikpIiwKKyAgICAgICAgICAgICpzaGFBbGdvcml0aG0s
IGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gUGVyZm9ybSB0aGUgUEsgc2lnbmluZywgcmV0cmlldmluZyBhIHNpZy12YWwg
cy1leHByZXNzaW9uIG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAvLyAoc2lnLXZhbAorICAg
IC8vICAgKHJzYQorICAgIC8vICAgICAocyBzLW1waSkpKQorICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9wa19zaWduKCZzaWduYXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5U2V4cCk7CisgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAv
LyBSZXR1cm4gTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIHMgaW50ZWdlci4KKyAgICBQQUw6OkdD
cnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBzU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihzaWdu
YXR1cmVTZXhwLCAicyIsIDApKTsKKyAgICBpZiAoIXNTZXhwKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIG1waURhdGEoc1NleHApOworfQorCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllcikKK3sKKyAg
ICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRo
bSBvbiB0aGUgZ2l2ZW4gZGF0YS4KKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CisgICAg
eworICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0
aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRo
bSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpkaWdlc3RBbGdvcml0aG0pOworICAgICAg
ICBpZiAoIWRpZ2VzdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBk
YXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1
Y3QgdGhlIHNpZy12YWwgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMgdGhlIHNpZ25hdHVyZSBk
YXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7
CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZzaWduYXR1cmVTZXhw
LCBudWxscHRyLCAiKHNpZy12YWwocnNhKHMgJWIpKSkiLAorICAgICAgICBzaWduYXR1cmUuc2l6
ZSgpLCBzaWduYXR1cmUuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0YSBzLWV4
cHJlc3Npb24gdGhhdCBjb250YWlucyBQS0NTIzEtcGFkZGVkIGhhc2hlZCBkYXRhLgorICAgIFBB
TDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOworICAgIHsKKyAgICAgICAg
YXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRp
Zmllcik7CisgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAs
IG51bGxwdHIsICIoZGF0YShmbGFncyBwa2NzMSkoaGFzaCAlcyAlYikpIiwKKyAgICAgICAgICAg
ICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKKyAgICAg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUgUEsgdmVyaWZpY2F0aW9uLiBX
ZSByZXBvcnQgc3VjY2VzcyBpZiB0aGVyZSdzIG5vIGVycm9yIHJldHVybmVkLCBmYWlsdXJlCisg
ICAgLy8gaWYgdGhlIHJldHVybmVkIGVycm9yIGlzIEdQR19FUlJfQkFEX1NJR05BVFVSRSwgb3Ig
YW4gT3BlcmF0aW9uRXJyb3Igb3RoZXJ3aXNlLgorICAgIGVycm9yID0gZ2NyeV9wa192ZXJpZnko
c2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SICYmIGdjcnlfZXJyX2NvZGUoZXJyb3IpICE9IEdQR19FUlJfQkFEX1NJR05B
VFVSRSkgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiB7IGVycm9yID09IEdQR19F
UlJfTk9fRVJST1IgfTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRj
aCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0
byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOworCisgICAgICAg
ICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEs
IHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGlmICghb3V0
cHV0KSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgor
ICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29u
dGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
fQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlm
eShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0
b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3Jr
UXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9
IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91
dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRh
LCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBpZiAoIW91
dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3Ip
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1
dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6
OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3Rv
ckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308232</attachid>
            <date>2017-04-26 01:12:52 -0700</date>
            <delta_ts>2017-05-29 09:24:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171220-20170426101251.patch</filename>
            <type>text/plain</type>
            <size>15884</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA1NmExYjk2MjUxOTgw
NGM2MTkzOWVhM2E1YzM5MzViZDgxMGM2YS4uZjEwYjJkZWU3YTkxZGNkMGFiZWMwNzk5N2QwNGM0
MGJhMGYwMWQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDE3LTA0LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR0NyeXB0XSBSU0FT
U0EtUEtDUzEtdjFfNSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUlNBU1NBLVBLU0MxLVZfMTUgc3VwcG9ydCBmb3IgY29uZmlndXJh
dGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LgorCisgICAgICAgIFRoZSBzaWduaW5nIG9wZXJhdGlv
biBmaXJzdCBkaWdlc3RzIGRhdGEgd2l0aCB0aGUgc3BlY2lmaWVkIGhhc2ggYWxnb3JpdGhtLgor
ICAgICAgICBUaGF0J3MgdGhlbiBlbWJlZGRlZCBpbiB0aGUgZGF0YSBzLWV4cHJlc3Npb24uIFRo
YXQncyB0aGVuIHBhc3NlZCB0byB0aGUKKyAgICAgICAgZ2NyeV9wa19zaWduKCkgY2FsbCB0b2dl
dGhlciB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LCByZXR1cm5pbmcgYSBzaWctdmFsCisgICAgICAg
IHMtZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSBzaWduYXR1cmUuIFRoZSBzaWduYXR1cmUgZGF0
YSBpcyB0aGVuIHJldHJpZXZlZAorICAgICAgICBmcm9tIHRoZSByZWxldmFudCBNUEkgYW5kIHJl
dHVybmVkIHRvIHRoZSBjYWxsZXIuCisKKyAgICAgICAgVGhlIHZlcmlmaWNhdGlvbiBvcGVyYXRp
b24gZmlyc3QgZGlnZXN0cyBkYXRhIHdpdGggdGhlIHNwZWNpZmllZCBoYXNoCisgICAgICAgIGFs
Z29yaXRobS4gVGhhdCdzIHRoZW4gZW1iZWRkZWQgaW4gdGhlIGRhdGEgcy1leHByZXNzaW9uLiBB
IHNpZy12YWwKKyAgICAgICAgcy1leHByZXNzaW9uIGlzIGNvbnN0cnVjdGVkLCBlbWJlZGRpbmcg
dGhlIHNpZ25hdHVyZSBkYXRhLiBUaGUgZGF0YSBhbmQKKyAgICAgICAgc2lnLXZhbCBzLWV4cHJl
c3Npb25zIGFyZSBwYXNzZWQgdG8gdGhlIGdjcnlfc2V4cF92ZXJpZnkoKSBjYWxsIHdoaWNoIHJl
dHVybnMKKyAgICAgICAgdGhlIHJlc3VsdGluZyBlcnJvciBjb2RlLiBUaGUgdmVyaWZpY2F0aW9u
IHN1Y2NlZWRzIGlmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcworICAgICAgICBHUEdfRVJSX05PX0VS
Uk9SLCBmYWlscyBpZiBpdCdzIEdQR19FUlJfQkFEX1NJR05BVFVSRSwgb3IgZXJyb3JzIG91dCB3
aXRoIGFuCisgICAgICAgIE9wZXJhdGlvbkVycm9yIG90aGVyd2lzZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLS0gdGhlIHJldmVsYW50IHRlc3RzIGFyZSBwYXNzaW5nIGFuZCBhcmUgdW5za2lw
cGVkLCBhcGFydCBmcm9tCisgICAgICAgIHRoZSBvbmVzIHVzaW5nIFBLQ1MjOCBhbmQgU1BLSSBm
b3JtYXRzLgorCisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNoQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hBbGdvcml0aG1OYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1waURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkpOgor
CisyMDE3LTA0LTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAg
ICAgICBbR0NyeXB0XSBDcnlwdG9LZXlSU0E6IGltcGxlbWVudCBjcmVhdGUoKSwga2V5U2l6ZUlu
Qml0cygpLCBidWlsZEFsZ29yaXRobSgpLCBleHBvcnREYXRhKCkKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTIxMwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDNjNTM1YWM1ZDI1M2E0ZTVmNDFkNTY0
Nzg3YzQ5YzY0NjU4Y2ZlN2IuLjk5ZjM1ZGYzY2Y4NDBkNjNkNWQyZDEyMWJjMTFjNTcyNWM4Mzcw
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0z
MywxNyArMzMsMjMwIEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFs
L2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlw
dG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdl
c3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MjU2OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0dXJuIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1
aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNh
bGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN3
aXRjaCAoaWRlbnRpZmllcikgeworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzE6CisgICAgICAgIHJldHVybiAic2hhMSI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gInNoYTIyNCI7CisgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gInNoYTI1
NiI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAg
ICByZXR1cm4gInNoYTM4NCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfNTEyOgorICAgICAgICByZXR1cm4gInNoYTUxMiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCit7CisgICAgLy8g
UmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUg
bXBpLWRhdGEpCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShn
Y3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOworICAgIGlm
ICghcGFyYW1NUEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBRdWVy
eSB0aGUgZGF0YSBsZW5ndGggZmlyc3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVmZmVyLgor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5
X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBwYXJh
bU1QSSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVy
bHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxlbmd0aCk7
CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1dC5kYXRh
KCksIG91dHB1dC5zaXplKCksIG51bGxwdHIsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBvdXRw
dXQ7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2ln
bihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpCit7CisgICAgLy8g
UGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24g
dGhlIGdpdmVuIGRhdGEuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOworICAgIHsKKyAg
ICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhh
c2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGlnZXN0ID0g
UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKKyAgICAgICAgaWYg
KCFkaWdlc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGRp
Z2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgZGF0YUhh
c2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IHRo
ZSBkYXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBLQ1MjMS1wYWRkZWQgaGFzaGVkIGRh
dGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAg
eworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdj
cnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwa2NzMSkoaGFz
aCAlcyAlYikpIiwKKyAgICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwg
ZGF0YUhhc2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9y
bSB0aGUgUEsgc2lnbmluZywgcmV0cmlldmluZyBhIHNpZy12YWwgcy1leHByZXNzaW9uIG9mIHRo
ZSBmb2xsb3dpbmcgZm9ybToKKyAgICAvLyAoc2lnLXZhbAorICAgIC8vICAgKHJzYQorICAgIC8v
ICAgICAocyBzLW1waSkpKQorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNp
Z25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZzaWdu
YXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5U2V4cCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gTVBJIGRhdGEg
b2YgdGhlIGVtYmVkZGVkIHMgaW50ZWdlci4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
c2V4cF90PiBzU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihzaWduYXR1cmVTZXhwLCAicyIsIDAp
KTsKKyAgICBpZiAoIXNTZXhwKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIG1waURhdGEoc1NleHApOworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBn
Y3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
aWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllcikKK3sKKyAgICAvLyBQZXJmb3JtIGRpZ2Vz
dCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0
YS4KKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CisgICAgeworICAgICAgICBhdXRvIGRp
Z2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKCpkaWdlc3RBbGdvcml0aG0pOworICAgICAgICBpZiAoIWRpZ2VzdCkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRl
cyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+
Y29tcHV0ZUhhc2goKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIHNpZy12YWwgcy1l
eHByZXNzaW9uIHRoYXQgY29udGFpbnMgdGhlIHNpZ25hdHVyZSBkYXRhLgorICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90
IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12
YWwocnNhKHMgJWIpKSkiLAorICAgICAgICBzaWduYXR1cmUuc2l6ZSgpLCBzaWduYXR1cmUuZGF0
YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250
YWlucyBQS0NTIzEtcGFkZGVkIGhhc2hlZCBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOworICAgIHsKKyAgICAgICAgYXV0byBzaGFBbGdvcml0aG0g
PSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlm
ICghc2hhQWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShm
bGFncyBwa2NzMSkoaGFzaCAlcyAlYikpIiwKKyAgICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRh
dGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJv
cik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gUGVyZm9ybSB0aGUgUEsgdmVyaWZpY2F0aW9uLiBXZSByZXBvcnQgc3VjY2VzcyBp
ZiB0aGVyZSdzIG5vIGVycm9yIHJldHVybmVkLCBmYWlsdXJlCisgICAgLy8gaWYgdGhlIHJldHVy
bmVkIGVycm9yIGlzIEdQR19FUlJfQkFEX1NJR05BVFVSRSwgb3IgYW4gT3BlcmF0aW9uRXJyb3Ig
b3RoZXJ3aXNlLgorICAgIGVycm9yID0gZ2NyeV9wa192ZXJpZnkoc2lnbmF0dXJlU2V4cCwgZGF0
YVNleHAsIGtleVNleHApOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SICYmIGdj
cnlfZXJyX2NvZGUoZXJyb3IpICE9IEdQR19FUlJfQkFEX1NJR05BVFVSRSkgeworICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKworICAgIHJldHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKK30K
Kwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJl
ZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAg
ICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9
IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
ICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9
IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAg
ICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQorCit2b2lkIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYm
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3Jr
UXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisg
ICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJl
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlm
eShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29y
aXRobUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisg
ICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxs
YmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5
UlNBJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDkzNWRkNTg4YjUzNzRiY2Y3ZmFlNGEzOTQxMTA1ODUyMGZlODU3
ODEuLmEzZDhiZjkyMzYyMzVhNjZjOGQwOTJiMzM5Mzk2OGZhM2FjZWJmZTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNy0wNC0yNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dDcnlwdF0gUlNBU1NBLVBLQ1MxLXYxXzUgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRoZSBSU0FTU0EtUEtDUzEtdjFfNSBsYXlvdXQgdGVz
dHMgdGhhdCB3ZSBwYXNzLgorCiAyMDE3LTA0LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hYy13azEgRGVidWddIExheW91dFRlc3QgaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1zaXplcy1uZXR3b3JrLmh0bWwgaXMgYSBm
bGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGRhZjEwNDNlZGEzNzJhMTQxNzk2ODU4OWVmN2MzODQ4MzJiYjIxN2MuLmNhYzljNDgwNTU3
NGUyNjRkMGU2YWVmMGFkMmM0NTk1YjRjZWJlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCkBAIC03NjQsNiArNzY0LDMxIEBAIGNyeXB0by9zdWJ0bGUvaG1h
Yy1pbXBvcnQtcmF3LWtleS1jdXN0b21pemVkLWxlbmd0aC5odG1sIFsgUGFzcyBdCiBjcnlwdG8v
c3VidGxlL2htYWMtaW1wb3J0LXJhdy1rZXktZXhwb3J0LWp3ay1rZXkuaHRtbCBbIFBhc3MgXQog
Y3J5cHRvL3N1YnRsZS9obWFjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1yYXcta2V5Lmh0bWwgWyBQ
YXNzIF0KIGNyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtcmF3LWtleS5odG1sIFsgUGFzcyBdCitj
cnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNo
YTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0
ZS1leHBvcnQta2V5LWp3ay1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fz
c2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LWp3
ay1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1n
ZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1
YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXktc2lnbi12ZXJpZnkuaHRtbCBbIFBh
c3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXktd2l0aC1s
ZWFkaW5nLXplcm9lcy1pbi1leHBvbmVudC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3Jz
YXNzYS1wa2NzMS12MV81LWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXktZW1wdHkt
dXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1w
b3J0LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fz
c2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMjI0Lmh0bWwgWyBQYXNzIF0K
K2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNo
YTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9y
dC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fz
c2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhNTEyLmh0bWwgWyBQYXNzIF0K
K2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWtleS1zaWduLXNoYTEuaHRt
bCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQta2V5LXNp
Z24tc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUt
aW1wb3J0LWtleS1zaWduLXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNz
YS1wa2NzMS12MV81LWltcG9ydC1rZXktc2lnbi1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRv
L3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQta2V5LXNpZ24tc2hhNTEyLmh0bWwgWyBQ
YXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWtleS12ZXJpZnkt
c2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9y
dC1rZXktdmVyaWZ5LXNoYTIyNC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1w
a2NzMS12MV81LWltcG9ydC1rZXktdmVyaWZ5LXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXktdmVyaWZ5LXNoYTM4NC5odG1sIFsg
UGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXktdmVyaWZ5
LXNoYTUxMi5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTMzMzE5IGNyeXB0by93ZWJraXRT
dWJ0bGUvc2hhLTEuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEzMzMxOSBjcnlwdG8vd2Vi
a2l0U3VidGxlL3NoYS0yMjQuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEzMzMxOSBjcnlw
dG8vd2Via2l0U3VidGxlL3NoYS0yNTYuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311476</attachid>
            <date>2017-05-29 09:24:58 -0700</date>
            <delta_ts>2017-05-29 09:24:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171220-20170529182456.patch</filename>
            <type>text/plain</type>
            <size>15606</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAyOTRhMzEyMTlmY2Vm
MWY3YzYxMmVkYzEyNWNjNWY5NjEzNjVmYi4uYTFlZjE0NjA1MzNhZjY4NzhjOGZkNGEwYjE5YzY2
YTBkZjM3MzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE3LTA1LTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBSU0FT
U0EtUEtDUzEtdjFfNSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzEyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFu
emFyby4KKworICAgICAgICBBZGQgUlNBU1NBLVBLU0MxLVZfMTUgc3VwcG9ydCBmb3IgY29uZmln
dXJhdGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LgorCisgICAgICAgIFRoZSBzaWduaW5nIG9wZXJh
dGlvbiBmaXJzdCBkaWdlc3RzIGRhdGEgd2l0aCB0aGUgc3BlY2lmaWVkIGhhc2ggYWxnb3JpdGht
LgorICAgICAgICBUaGF0J3MgdGhlbiBlbWJlZGRlZCBpbiB0aGUgZGF0YSBzLWV4cHJlc3Npb24u
IFRoYXQncyB0aGVuIHBhc3NlZCB0byB0aGUKKyAgICAgICAgZ2NyeV9wa19zaWduKCkgY2FsbCB0
b2dldGhlciB3aXRoIHRoZSBzcGVjaWZpZWQga2V5LCByZXR1cm5pbmcgYSBzaWctdmFsCisgICAg
ICAgIHMtZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSBzaWduYXR1cmUuIFRoZSBzaWduYXR1cmUg
ZGF0YSBpcyB0aGVuIHJldHJpZXZlZAorICAgICAgICBmcm9tIHRoZSByZWxldmFudCBNUEkgYW5k
IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisKKyAgICAgICAgVGhlIHZlcmlmaWNhdGlvbiBvcGVy
YXRpb24gZmlyc3QgZGlnZXN0cyBkYXRhIHdpdGggdGhlIHNwZWNpZmllZCBoYXNoCisgICAgICAg
IGFsZ29yaXRobS4gVGhhdCdzIHRoZW4gZW1iZWRkZWQgaW4gdGhlIGRhdGEgcy1leHByZXNzaW9u
LiBBIHNpZy12YWwKKyAgICAgICAgcy1leHByZXNzaW9uIGlzIGNvbnN0cnVjdGVkLCBlbWJlZGRp
bmcgdGhlIHNpZ25hdHVyZSBkYXRhLiBUaGUgZGF0YSBhbmQKKyAgICAgICAgc2lnLXZhbCBzLWV4
cHJlc3Npb25zIGFyZSBwYXNzZWQgdG8gdGhlIGdjcnlfc2V4cF92ZXJpZnkoKSBjYWxsIHdoaWNo
IHJldHVybnMKKyAgICAgICAgdGhlIHJlc3VsdGluZyBlcnJvciBjb2RlLiBUaGUgdmVyaWZpY2F0
aW9uIHN1Y2NlZWRzIGlmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcworICAgICAgICBHUEdfRVJSX05P
X0VSUk9SLCBmYWlscyBpZiBpdCdzIEdQR19FUlJfQkFEX1NJR05BVFVSRSwgb3IgZXJyb3JzIG91
dCB3aXRoIGFuCisgICAgICAgIE9wZXJhdGlvbkVycm9yIG90aGVyd2lzZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gdGhlIHJldmVsYW50IHRlc3RzIGFyZSBwYXNzaW5nIGFuZCBhcmUgdW5z
a2lwcGVkLCBhcGFydCBmcm9tCisgICAgICAgIHRoZSBvbmVzIHVzaW5nIFBLQ1MjOCBhbmQgU1BL
SSBmb3JtYXRzLgorCisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNoQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hBbGdvcml0aG1OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1waURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6
CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1WZXJpZnkp
OgorCiAyMDE3LTA1LTI5ICBFbWlsaW8gQ29ib3Mgw4FsdmFyZXogIDxlY29ib3NAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVc2UgdGhlIHBhcmVudCBib3ggc3R5bGUgdG8gYWRqdXN0IFJlbmRlclN0
eWxlIGZvciBhbGlnbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5
cHQuY3BwCmluZGV4IDNjNTM1YWM1ZDI1M2E0ZTVmNDFkNTY0Nzg3YzQ5YzY0NjU4Y2ZlN2IuLjI3
OTM0ZTk1NWYxOTg2Mzc1ZGYwMzY4ZjBmZGFmNjBlOTk4N2RmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zMywxNyArMzMsMjI1IEBACiAjaW5j
bHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0
aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50
OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgc3dpdGNoIChpZGVudGlmaWVyKSB7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMToKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4g
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRm
b3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWlu
dDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgY2hh
cio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
cikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHN3aXRjaCAoaWRlbnRpZmllcikgewor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6CisgICAgICAgIHJldHVy
biAic2hhMSI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0Ogor
ICAgICAgICByZXR1cm4gInNoYTIyNCI7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgorICAgICAgICByZXR1cm4gInNoYTI1NiI7CisgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgorICAgICAgICByZXR1cm4gInNoYTM4NCI7Cisg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1
cm4gInNoYTUxMiI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0
YShnY3J5X3NleHBfdCBwYXJhbVNleHApCit7CisgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1
ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCisgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJh
bVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOworICAgIGlmICghcGFyYW1NUEkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBRdWVyeSB0aGUgZGF0YSBsZW5ndGggZmly
c3QgdG8gcHJvcGVybHkgcHJlcGFyZSB0aGUgYnVmZmVyLgorICAgIHNpemVfdCBkYXRhTGVuZ3Ro
ID0gMDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZN
VF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBwYXJhbU1QSSk7CisgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBGaW5h
bGx5LCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6ZWQgYnVmZmVyLgorICAg
IFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoZGF0YUxlbmd0aCk7CisgICAgZXJyb3IgPSBnY3J5X21w
aV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIG51
bGxwdHIsIHBhcmFtTVBJKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewor
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhw
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0
aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdv
cml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVI
YXNoKCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0
aGF0IGNvbnRhaW5zIFBLQ1MjMS1wYWRkZWQgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6
OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNoYUFs
Z29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAg
ICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNl
eHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwa2NzMSkoaGFzaCAlcyAlYikpIiwKKyAgICAgICAg
ICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKKyAg
ICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUgUEsgc2lnbmluZywgcmV0
cmlldmluZyBhIHNpZy12YWwgcy1leHByZXNzaW9uIG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAg
ICAvLyAoc2lnLXZhbAorICAgIC8vICAgKHJzYQorICAgIC8vICAgICAocyBzLW1waSkpKQorICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZzaWduYXR1cmVTZXhwLCBkYXRhU2V4cCwg
a2V5U2V4cCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIHMgaW50
ZWdlci4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBzU2V4cChnY3J5X3Nl
eHBfZmluZF90b2tlbihzaWduYXR1cmVTZXhwLCAicyIsIDApKTsKKyAgICBpZiAoIXNTZXhwKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1waURhdGEoc1NleHAp
OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGht
SWRlbnRpZmllcikKK3sKKyAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUg
c3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KKyAgICBWZWN0b3I8dWludDhf
dD4gZGF0YUhhc2g7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hD
cnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBp
ZiAoIWRpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpkaWdlc3RB
bGdvcml0aG0pOworICAgICAgICBpZiAoIWRpZ2VzdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKyAgICB9
CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIHNpZy12YWwgcy1leHByZXNzaW9uIHRoYXQgY29udGFp
bnMgdGhlIHNpZ25hdHVyZSBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhw
X3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1
aWxkKCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12YWwocnNhKHMgJWIpKSkiLAorICAg
ICAgICBzaWduYXR1cmUuc2l6ZSgpLCBzaWduYXR1cmUuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIENvbnN0
cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyBQS0NTIzEtcGFkZGVkIGhh
c2hlZCBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhw
OworICAgIHsKKyAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZSho
YXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBlcnJvciA9IGdjcnlfc2V4
cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwa2NzMSkoaGFzaCAlcyAl
YikpIiwKKyAgICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhh
c2guZGF0YSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAg
ICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGVyZm9ybSB0aGUg
UEsgdmVyaWZpY2F0aW9uLiBXZSByZXBvcnQgc3VjY2VzcyBpZiB0aGVyZSdzIG5vIGVycm9yIHJl
dHVybmVkLCBvcgorICAgIC8vIGEgZmFpbHVyZSBpbiBhbnkgb3RoZXIgY2FzZS4gT3BlcmF0aW9u
RXJyb3Igc2hvdWxkIG5vdCBiZSByZXR1cm5lZCBhdCB0aGlzIHBvaW50LgorICAgIGVycm9yID0g
Z2NyeV9wa192ZXJpZnkoc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAgIHJl
dHVybiB7IGVycm9yID09IEdQR19FUlJfTk9fRVJST1IgfTsKK30KKwordm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOwor
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgeworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihr
ZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5
LnBsYXRmb3JtS2V5KCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisg
ICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0
cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRw
dXQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29u
dGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZN
b3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAg
ICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOwor
CisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1L
ZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7
CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAor
ICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291
dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0
cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzU6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1S
c2FTc2FQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5UlNBJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDMyODRjMWFmZGI4M2M2MDUwNWJlYjQ0ZjA0YTJkNWViNzJjNmM0NWUuLjVlNTY4NmM2ZDhmNjIw
NGFhZWE1YWJjNDNkNzFkNjhiYTE4ZTE1MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0w
NS0yOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dD
cnlwdF0gUlNBU1NBLVBLQ1MxLXYxXzUgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWlj
aGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
czogRW5hYmxlIHRoZSBSU0FTU0EtUEtDUzEtdjFfNSBsYXlvdXQgdGVzdHMgdGhhdCB3ZSBwYXNz
LgorCiAyMDE3LTA1LTI5ICBFbWlsaW8gQ29ib3Mgw4FsdmFyZXogIDxlY29ib3NAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVc2UgdGhlIHBhcmVudCBib3ggc3R5bGUgdG8gYWRqdXN0IFJlbmRlclN0
eWxlIGZvciBhbGlnbm1lbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDQ2NzRmMDM0MjQ4NjQ4ZjNkODYyZTdlYjdkNzlmZDkzYzc3ZGM4MDkuLjM2Nzhl
ZmE2NDZmZGQ3ZjdkOTZjMTA0YjAwZDVjMjU3OGNkYTk2OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC04ODEsNiArODgxLDMxIEBAIGNyeXB0by9zdWJ0
bGUvaG1hYy1pbXBvcnQtcmF3LWtleS1jdXN0b21pemVkLWxlbmd0aC5odG1sIFsgUGFzcyBdCiBj
cnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LXJhdy1rZXktZXhwb3J0LWp3ay1rZXkuaHRtbCBbIFBh
c3MgXQogY3J5cHRvL3N1YnRsZS9obWFjLWltcG9ydC1yYXcta2V5LWV4cG9ydC1yYXcta2V5Lmh0
bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtcmF3LWtleS5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWdlbmVyYXRlLWV4cG9ydC1rZXkt
andrLXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1n
ZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBb
IFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1leHBvcnQt
a2V5LWp3ay1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEt
djFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5cHRv
L3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXktc2lnbi12ZXJpZnkuaHRt
bCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXkt
d2l0aC1sZWFkaW5nLXplcm9lcy1pbi1leHBvbmVudC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3Vi
dGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXkt
ZW1wdHktdXNhZ2VzLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYx
XzUtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNoYTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMjI0Lmh0bWwgWyBQ
YXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWp3ay1wdWJsaWMt
a2V5LXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81
LWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhNTEyLmh0bWwgWyBQ
YXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWtleS1zaWduLXNo
YTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQt
a2V5LXNpZ24tc2hhMjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3Mx
LXYxXzUtaW1wb3J0LWtleS1zaWduLXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxl
L3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXktc2lnbi1zaGEzODQuaHRtbCBbIFBhc3MgXQor
Y3J5cHRvL3N1YnRsZS9yc2Fzc2EtcGtjczEtdjFfNS1pbXBvcnQta2V5LXNpZ24tc2hhNTEyLmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhc3NhLXBrY3MxLXYxXzUtaW1wb3J0LWtleS12
ZXJpZnktc2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81
LWltcG9ydC1rZXktdmVyaWZ5LXNoYTIyNC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3Jz
YXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXktdmVyaWZ5LXNoYTI1Ni5odG1sIFsgUGFzcyBdCitj
cnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXktdmVyaWZ5LXNoYTM4NC5o
dG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYXNzYS1wa2NzMS12MV81LWltcG9ydC1rZXkt
dmVyaWZ5LXNoYTUxMi5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL2ltcG9ydC1rZXktbWFs
Zm9ybWVkLXBhcmFtZXRlcnMuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1YnRsZS9wYmtkZjItZGVy
aXZlLWJpdHMtbWFsZm9ybWVkLXBhcmFtZXRycy5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxl
L3Bia2RmMi1pbXBvcnQta2V5LWRlcml2ZS1iaXRzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>