<?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>170350</bug_id>
          
          <creation_ts>2017-03-31 11:30:19 -0700</creation_ts>
          <short_desc>[GCrypt] Implement CryptoKeyRSA::generatePair()</short_desc>
          <delta_ts>2017-04-07 00:35:28 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293217</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-31 11:30:19 -0700</bug_when>
    <thetext>[GCrypt] Implement CryptoKeyRSA::generatePair()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293220</commentid>
    <comment_count>1</comment_count>
      <attachid>305988</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-31 11:49:26 -0700</bug_when>
    <thetext>Created attachment 305988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293510</commentid>
    <comment_count>2</comment_count>
      <attachid>305988</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-01 18:50:16 -0700</bug_when>
    <thetext>Comment on attachment 305988
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:89
&gt; +    if (exponent.size() &gt; 4) {
&gt; +        if (std::any_of(exponent.begin(), exponent.end() - 4, [](uint8_t element) { return !!element; }))
&gt; +            return std::nullopt;
&gt; +    }

Can you explain this please?

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:95
&gt; +    uint32_t result = 0;
&gt; +    for (size_t size = exponent.size(), i = std::min&lt;size_t&gt;(4, size); i &gt; 0; --i) {
&gt; +        result &lt;&lt;= 8;
&gt; +        result += exponent[size - i];
&gt; +    }

This too.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:102
&gt; +    // libgcrypt doesn&apos;t report an error if the exponent is smaller than three or even.

Wow. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293707</commentid>
    <comment_count>3</comment_count>
      <attachid>305988</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-03 11:34:15 -0700</bug_when>
    <thetext>Comment on attachment 305988
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:95
&gt;&gt; +    }
&gt; 
&gt; This too.

The public exponent is passed as a BigInteger, a Uint8Array in big-endian order. This helper function limits it to 32 bits, and checks that any larger value causes a failure.
https://w3c.github.io/webcrypto/Overview.html#dfn-BigInteger

The 32-bit limit was lifted from the Mac implementation, but we&apos;re not limited to it with libgcrypt. The only resulting difference would be how the exponent data is loaded into the genkey s-expression.

Let me test it out, it might be relatively easy to get this working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293742</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-03 12:34:49 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #3)
&gt; Comment on attachment 305988 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305988&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:95
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; This too.
&gt; 
&gt; The public exponent is passed as a BigInteger, a Uint8Array in big-endian
&gt; order. This helper function limits it to 32 bits, and checks that any larger
&gt; value causes a failure.
&gt; https://w3c.github.io/webcrypto/Overview.html#dfn-BigInteger
&gt; 
&gt; The 32-bit limit was lifted from the Mac implementation, but we&apos;re not
&gt; limited to it with libgcrypt. The only resulting difference would be how the
&gt; exponent data is loaded into the genkey s-expression.
&gt; 
&gt; Let me test it out, it might be relatively easy to get this working.

No, this won&apos;t work.

Internally, libgcrypt scrapes the data from the s-expression and converts it to an unsigned long (8 bytes in size) via strtoul(). Feeding hex data into the s-expression won&apos;t work, since strtoul(), as used in libgcrypt, will default to a base-10 converion.

I would recommend sticking to converting the public exponent array into a 32-bit integer for now, adding a FIXME explaining we can stretch it out to 8 bytes. I can add that comment in the next iteration of the patch, or before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294885</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-06 08:14:12 -0700</bug_when>
    <thetext>I don&apos;t think it requires any FIXME, because normal public exponents are very small (3, 5, 17). Nobody should be using something more than four bytes unless they&apos;re doing strange research, and it&apos;s not WebKit&apos;s job to support that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294886</commentid>
    <comment_count>6</comment_count>
      <attachid>305988</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-06 08:18:00 -0700</bug_when>
    <thetext>Comment on attachment 305988
Patch

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

OK.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:88
&gt; +    if (exponent.size() &gt; 4) {
&gt; +        if (std::any_of(exponent.begin(), exponent.end() - 4, [](uint8_t element) { return !!element; }))
&gt; +            return std::nullopt;

I&apos;d add a comment here: &quot;ensure exponent is limited to four bytes&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295209</commentid>
    <comment_count>7</comment_count>
      <attachid>305988</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 22:31:08 -0700</bug_when>
    <thetext>Comment on attachment 305988
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:88
&gt;&gt; +            return std::nullopt;
&gt; 
&gt; I&apos;d add a comment here: &quot;ensure exponent is limited to four bytes&quot;

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295210</commentid>
    <comment_count>8</comment_count>
      <attachid>306469</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 22:47:19 -0700</bug_when>
    <thetext>Created attachment 306469
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295228</commentid>
    <comment_count>9</comment_count>
      <attachid>306475</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 00:17:06 -0700</bug_when>
    <thetext>Created attachment 306475
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295231</commentid>
    <comment_count>10</comment_count>
      <attachid>306475</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 00:35:24 -0700</bug_when>
    <thetext>Comment on attachment 306475
Patch for landing

Clearing flags on attachment: 306475

Committed r215085: &lt;http://trac.webkit.org/changeset/215085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295232</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 00:35:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305988</attachid>
            <date>2017-03-31 11:49:26 -0700</date>
            <delta_ts>2017-04-06 22:47:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170350-20170331204924.patch</filename>
            <type>text/plain</type>
            <size>11752</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE1YjhhOTJjM2U4ZWYy
NDY4ZmNjOWYyNmI2OWUyNzE1OThiNmQzMi4uODM4ODM4ZTQ2ZWQ5YmMyYTNlZWE2MzQ3ZGRjMjdk
YWM2YzAyZGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTAzLTMxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgaW1wbGVtZW50aW5nIHRoZSBsaWJnY3J5
cHQtYmFzZWQgcGxhdGZvcm0gYml0cyBvZiBDcnlwdG9LZXlSU0EuCisKKyAgICAgICAgSW1wbGVt
ZW50IGdlbmVyYXRlUGFpcigpIGJ5IGNvbnN0cnVjdGluZyBhIGdlbmtleSBzLWV4cHJlc3Npb24K
KyAgICAgICAgdGhhdCByZXF1ZXN0cyBhIGdlbmVyYXRpb24gb2YgYW4gUlNBIGtleSB0aGF0IHNo
b3VsZCB1c2UgYSBtb2R1bHVzCisgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgYml0LWxlbmd0aCBh
bmQgdGhlIHNwZWNpZmllZCBleHBvbmVudC4gVGhlIGV4cG9uZW50CisgICAgICAgIGlzIGV4dHJh
Y3RlZCBmcm9tIGFuIHVpbnQ4X3QgYXJyYXkgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4gVGhl
CisgICAgICAgIG1vZHVsdXMgbGVuZ3RoIHZhbHVlIGlzIGNoZWNrZWQgdG8gYmUgYXQgbGVhc3Qg
MTYsIHNpbmNlIGxpYmdjcnlwdAorICAgICAgICBkb2VzIG5vdCBzdXBwb3J0IGdlbmVyYXRpbmcg
cHJpbWVzIG9mIGxlc3MgdGhhbiB0aGF0IGxlbmd0aCBpbiBiaXRzLgorCisgICAgICAgIFRoZSBy
ZXR1cm5lZCBzLWV4cHJlc3Npb24gdXBvbiByZXF1ZXN0IHdpbGwgY29udGFpbiB0aGUgZGF0YSBm
b3IKKyAgICAgICAgYm90aCB0aGUgcHVibGljIGFuZCB0aGUgcHJpdmF0ZSBrZXkuIGdjcnlfc2V4
cF90IGhhbmRsZXMgcmVwcmVzZW50aW5nCisgICAgICAgIHRob3NlIHMtZXhwcmVzc2lvbnMgYXJl
IHRoZW4gcGFzc2VkIHRvIENyeXB0b0tleVJTQTo6Y3JlYXRlKCkgYmVmb3JlCisgICAgICAgIGlu
dm9raW5nIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHdpdGggYSBuZXcgQ3J5cHRvS2V5UGFpciBvYmpl
Y3QgaW4gYQorICAgICAgICBzZXBhcmF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRhc2suCisK
KyAgICAgICAgVGhlIENyeXB0b0tleVJTQSBjb25zdHJ1Y3RvciBzaW1wbHkgaGFzIHRoZSBub3RJ
bXBsZW1lbnRlZCgpIGNhbGwKKyAgICAgICAgcmVtb3ZlZC4gVGhlIGRlc3RydWN0b3Igbm93IGlu
dm9rZXMgdGhlIEhhbmRsZURlbGV0ZXI8Z2NyeV9zZXhwX3Q+CisgICAgICAgIG9iamVjdCBpbnN0
YW5jZSB0byBkZXN0cm95IHRoZSBvYmplY3QgcmVwcmVzZW50ZWQgYnkgdGhlCisgICAgICAgIG1f
cGxhdGZvcm1LZXkgaGFuZGxlLgorCisgICAgICAgIFRoZSBtZXRob2RzIGluIENyeXB0b0tleVJT
QS5jcHAgYXJlIGFsc28gcmVvcmRlcmVkIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgZGVjbGFyYXRp
b24gb3JkZXIgdXNlZCBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBj
dXJyZW50IG9uZXMgY292ZXIgdGhpcyBzdWZmaWNpZW50bHksIGJ1dCBhcmUgbm90IHlldAorICAg
ICAgICBlbmFibGVkIGR1ZSB0byBvdGhlciBtaXNzaW5nIHBsYXRmb3JtLXNwZWNpZmljIFNVQlRM
RV9DUllQVE8KKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpDcnlwdG9LZXlSU0EpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjp+Q3J5
cHRvS2V5UlNBKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9uZW50VmVjdG9yVG9VSW50MzIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNB
OjpleHBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmJ1aWxkQWxn
b3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSk6Cisg
ICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisKIDIwMTctMDMtMzEgIFJvbWFp
biBCZWxsZXNzb3J0ICA8cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAg
IFtSZWFkYWJsZSBTdHJlYW1zIEFQSV0gSW1wbGVtZW50IGNsb25lQXJyYXlCdWZmZXIgaW4gV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZDA2NDhiYmY1M2E1YzcxMjY2MzM0NWMxMDBhMTA2
YzU4ZDUwNmE1MS4uMmRiZjJlZWY3YWFiNjVmZTUzNmM1OTlhMmNlMTE0YzRmYjIxMjQ5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMzEgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBD
cnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oOgorICAgICAg
ICAoUEFMOjpHQ3J5cHQ6OkhhbmRsZURlbGV0ZXI8Z2NyeV9zZXhwX3Q+OjpvcGVyYXRvcigpKTog
QWRkIGEgSGFuZGxlRGVsZXRlcgorICAgICAgICBzcGVjaWFsaXphdGlvbiBmb3IgdGhlIGdjcnlf
c2V4cF90IHR5cGUuCisKIDIwMTctMDMtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHQ3J5cHRdIEFkZCB0aGUgVXRpbGl0aWVzLmggaGVhZGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgKaW5kZXggOTA2
MWYyOGI1NTIxNTc4NzgxMzU1ZmI5OTFkY2QyM2FmNjhjZDgyNi4uZjQ4NjYzNjA4N2MwNjdjM2Vl
ZGRhZGIxYjZhNGU4YjVmZTJlNDIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL2djcnlwdC9IYW5kbGUuaApAQCAtOTAsNSArOTAsMTMgQEAgc3RydWN0IEhhbmRsZURlbGV0
ZXI8Z2NyeV9tYWNfaGRfdD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4KK3N0cnVjdCBIYW5k
bGVEZWxldGVyPGdjcnlfc2V4cF90PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfc2V4cF90
IGhhbmRsZSkKKyAgICB7CisgICAgICAgIGdjcnlfc2V4cF9yZWxlYXNlKGhhbmRsZSk7CisgICAg
fQorfTsKKwogfSAvLyBuYW1lc3BhY2UgR0NyeXB0CiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcApp
bmRleCAwYzc3Mzc0MjdmYjZkZWQ1ZWIwZGE5MTQ5NjUzNTVhYTIxMzI3YjkwLi4yMTIxOTAwMzkw
NjNkNWYzMGJkNmY3ZmQ4ZWVhNjc0MDU2MGVkMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC0zMywyMSArMzMsMTIg
QEAKICNpbmNsdWRlICJDcnlwdG9LZXlQYWlyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgorI2luY2x1
ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0cnVjdCBfUGxhdGZvcm1SU0FLZXlHbnVUTFMgewotfTsKLQotQ3J5cHRvS2V5UlNBOjpD
cnlwdG9LZXlSU0EoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgQ3J5cHRvS2V5VHlwZSB0eXBl
LCBQbGF0Zm9ybVJTQUtleSBwbGF0Zm9ybUtleSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2UpCi0gICAgOiBDcnlwdG9LZXkoaWRlbnRpZmllciwgdHlwZSwgZXh0
cmFjdGFibGUsIHVzYWdlKQotICAgICwgbV9wbGF0Zm9ybUtleShwbGF0Zm9ybUtleSkKLSAgICAs
IG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKGhhc0hhc2gpCi0gICAgLCBtX2hhc2goaGFzaCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlw
dG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBjb25zdCBDcnlwdG9L
ZXlEYXRhUlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAgdXNhZ2UpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTYxLDkgKzUy
LDE4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
Q3J5cHRvS2V5UlNBOjpDcnlwdG9LZXlSU0EoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wgaGFzSGFzaCwgQ3J5
cHRvS2V5VHlwZSB0eXBlLCBQbGF0Zm9ybVJTQUtleSBwbGF0Zm9ybUtleSwgYm9vbCBleHRyYWN0
YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2UpCisgICAgOiBDcnlwdG9LZXkoaWRlbnRp
ZmllciwgdHlwZSwgZXh0cmFjdGFibGUsIHVzYWdlKQorICAgICwgbV9wbGF0Zm9ybUtleShwbGF0
Zm9ybUtleSkKKyAgICAsIG1fcmVzdHJpY3RlZFRvU3BlY2lmaWNIYXNoKGhhc0hhc2gpCisgICAg
LCBtX2hhc2goaGFzaCkKK3sKK30KKwogQ3J5cHRvS2V5UlNBOjp+Q3J5cHRvS2V5UlNBKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3BsYXRmb3JtS2V5KQorICAgICAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X3NleHBfdD4oKShtX3BsYXRmb3JtS2V5KTsK
IH0KIAogYm9vbCBDcnlwdG9LZXlSU0E6OmlzUmVzdHJpY3RlZFRvSGFzaChDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyJiBpZGVudGlmaWVyKSBjb25zdApAQCAtODEsMzggKzgxLDc5IEBAIHNpemVf
dCBDcnlwdG9LZXlSU0E6OmtleVNpemVJbkJpdHMoKSBjb25zdAogICAgIHJldHVybiAwOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8S2V5QWxnb3JpdGhtPiBDcnlwdG9LZXlSU0E6OmJ1aWxkQWxnb3Jp
dGhtKCkgY29uc3QKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBvbmVudFZlY3Rv
clRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihlbXB0eVN0cmluZygpLCAwLCBX
VEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7CisgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsK
KyAgICAgICAgaWYgKHN0ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgp
IC0gNCwgW10odWludDhfdCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICB1aW50MzJfdCByZXN1bHQg
PSAwOworICAgIGZvciAoc2l6ZV90IHNpemUgPSBleHBvbmVudC5zaXplKCksIGkgPSBzdGQ6Om1p
bjxzaXplX3Q+KDQsIHNpemUpOyBpID4gMDsgLS1pKSB7CisgICAgICAgIHJlc3VsdCA8PD0gODsK
KyAgICAgICAgcmVzdWx0ICs9IGV4cG9uZW50W3NpemUgLSBpXTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5
UlNBOjpleHBvcnREYXRhKCkgY29uc3QKK3ZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
IHsKLSAgICBBU1NFUlQoZXh0cmFjdGFibGUoKSk7Ci0KLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBudWxscHRyOworICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHJlcG9ydCBhbiBl
cnJvciBpZiB0aGUgZXhwb25lbnQgaXMgc21hbGxlciB0aGFuIHRocmVlIG9yIGV2ZW4uCisgICAg
YXV0byBlID0gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihwdWJsaWNFeHBvbmVudCk7CisgICAgaWYg
KCFlIHx8ICplIDwgMyB8fCAhKCplICYgMHgxKSkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHN1
cHBvcnQgZ2VuZXJhdGluZyBwcmltZXMgb2YgbGVzcyB0aGFuIDE2IGJpdHMuCisgICAgaWYgKG1v
ZHVsdXNMZW5ndGggPCAxNikgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGdl
bmtleVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZnZW5r
ZXlTZXhwLCBudWxscHRyLCAiKGdlbmtleShyc2EobmJpdHMgJWQpKHJzYS11c2UtZSAlZCkpKSIs
IG1vZHVsdXNMZW5ndGgsICplKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICBmYWlsdXJl
Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6R0NyeXB0OjpI
YW5kbGU8Z2NyeV9zZXhwX3Q+IGtleVBhaXJTZXhwOworICAgIGVycm9yID0gZ2NyeV9wa19nZW5r
ZXkoJmtleVBhaXJTZXhwLCBnZW5rZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHB1YmxpY0tleVNleHAoZ2NyeV9zZXhwX2ZpbmRf
dG9rZW4oa2V5UGFpclNleHAsICJwdWJsaWMta2V5IiwgMCkpOworICAgIFBBTDo6R0NyeXB0OjpI
YW5kbGU8Z2NyeV9zZXhwX3Q+IHByaXZhdGVLZXlTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGtl
eVBhaXJTZXhwLCAicHJpdmF0ZS1rZXkiLCAwKSk7CisgICAgaWYgKCFwdWJsaWNLZXlTZXhwIHx8
ICFwcml2YXRlS2V5U2V4cCkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnJlZigpOworICAgIGNvbnRleHQtPnBvc3RU
YXNrKAorICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNh
Z2UsIHB1YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJpdmF0ZUtleVNl
eHAgPSBwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gs
IGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNh
Z2UpOworICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUo
YWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRl
S2V5U2V4cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKKworICAgICAgICAgICAgY2FsbGJhY2soQ3J5
cHRvS2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsK
KyAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0
aG0sIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25l
ZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXApCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBmYWlsdXJlQ2Fs
bGJhY2soKTsKIAotICAgIFVOVVNFRF9QQVJBTShhbGdvcml0aG0pOwotICAgIFVOVVNFRF9QQVJB
TShoYXNoKTsKLSAgICBVTlVTRURfUEFSQU0oaGFzSGFzaCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1v
ZHVsdXNMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShwdWJsaWNFeHBvbmVudCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGV4dHJhY3RhYmxlKTsKLSAgICBVTlVTRURfUEFSQU0odXNhZ2UpOwotICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyPiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVz
YWdlQml0bWFwKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXApCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIApAQCAtMTI2LDE4ICsxNjcsMjYgQEAgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25z
dAogICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi1SZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4sIFZl
Y3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK0V4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBF
eGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtjczgoKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgpIGNvbnN0CiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25l
bnQ7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihlbXB0eVN0
cmluZygpLCAwLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7Cit9CiAKLSAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAoreworICAgIEFTU0VSVChleHRy
YWN0YWJsZSgpKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMv
Q3J5cHRvS2V5UlNBLmgKaW5kZXggMGY4Y2U3YzRmZjVmMjE4YzY5MGZjNjUzODNkOTI0NjBhYjkx
NGI1My4uMzA1YmQ0YzQzYTA0YzBmYTYyZGZlMmYzNzdmN2IyNGJkMzkyNjg2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKQEAgLTM3LDggKzM3LDkgQEAgdHlw
ZWRlZiBDQ1JTQUNyeXB0b3JSZWYgUGxhdGZvcm1SU0FLZXk7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKLXR5cGVkZWYgc3RydWN0IF9QbGF0Zm9ybVJTQUtleUdudVRMUyBQbGF0Zm9ybVJT
QUtleUdudVRMUzsKLXR5cGVkZWYgUGxhdGZvcm1SU0FLZXlHbnVUTFMgKlBsYXRmb3JtUlNBS2V5
OworLy8gZ2NyeV9zZXhwKiBlcXVhdGVzIGdjcnlfc2V4cF90Lgorc3RydWN0IGdjcnlfc2V4cDsK
K3R5cGVkZWYgZ2NyeV9zZXhwKiBQbGF0Zm9ybVJTQUtleTsKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306469</attachid>
            <date>2017-04-06 22:47:19 -0700</date>
            <delta_ts>2017-04-07 00:17:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170350-20170407074718.patch</filename>
            <type>text/plain</type>
            <size>11863</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTExZmU1NmY5YjA1ODQ3
NDVhY2E0NWIyZDBlNzMzZjRkNjAyYTMyZi4uMGIwNDMwNjI1ZjNlNmVlMDkwYWNlZTdmMTg0OGFj
YjkwYzQ4MTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA0LTA2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgU3RhcnQgaW1wbGVtZW50aW5nIHRoZSBsaWJn
Y3J5cHQtYmFzZWQgcGxhdGZvcm0gYml0cyBvZiBDcnlwdG9LZXlSU0EuCisKKyAgICAgICAgSW1w
bGVtZW50IGdlbmVyYXRlUGFpcigpIGJ5IGNvbnN0cnVjdGluZyBhIGdlbmtleSBzLWV4cHJlc3Np
b24KKyAgICAgICAgdGhhdCByZXF1ZXN0cyBhIGdlbmVyYXRpb24gb2YgYW4gUlNBIGtleSB0aGF0
IHNob3VsZCB1c2UgYSBtb2R1bHVzCisgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgYml0LWxlbmd0
aCBhbmQgdGhlIHNwZWNpZmllZCBleHBvbmVudC4gVGhlIGV4cG9uZW50CisgICAgICAgIGlzIGV4
dHJhY3RlZCBmcm9tIGFuIHVpbnQ4X3QgYXJyYXkgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4g
VGhlCisgICAgICAgIG1vZHVsdXMgbGVuZ3RoIHZhbHVlIGlzIGNoZWNrZWQgdG8gYmUgYXQgbGVh
c3QgMTYsIHNpbmNlIGxpYmdjcnlwdAorICAgICAgICBkb2VzIG5vdCBzdXBwb3J0IGdlbmVyYXRp
bmcgcHJpbWVzIG9mIGxlc3MgdGhhbiB0aGF0IGxlbmd0aCBpbiBiaXRzLgorCisgICAgICAgIFRo
ZSByZXR1cm5lZCBzLWV4cHJlc3Npb24gdXBvbiByZXF1ZXN0IHdpbGwgY29udGFpbiB0aGUgZGF0
YSBmb3IKKyAgICAgICAgYm90aCB0aGUgcHVibGljIGFuZCB0aGUgcHJpdmF0ZSBrZXkuIGdjcnlf
c2V4cF90IGhhbmRsZXMgcmVwcmVzZW50aW5nCisgICAgICAgIHRob3NlIHMtZXhwcmVzc2lvbnMg
YXJlIHRoZW4gcGFzc2VkIHRvIENyeXB0b0tleVJTQTo6Y3JlYXRlKCkgYmVmb3JlCisgICAgICAg
IGludm9raW5nIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHdpdGggYSBuZXcgQ3J5cHRvS2V5UGFpciBv
YmplY3QgaW4gYQorICAgICAgICBzZXBhcmF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRhc2su
CisKKyAgICAgICAgVGhlIENyeXB0b0tleVJTQSBjb25zdHJ1Y3RvciBzaW1wbHkgaGFzIHRoZSBu
b3RJbXBsZW1lbnRlZCgpIGNhbGwKKyAgICAgICAgcmVtb3ZlZC4gVGhlIGRlc3RydWN0b3Igbm93
IGludm9rZXMgdGhlIEhhbmRsZURlbGV0ZXI8Z2NyeV9zZXhwX3Q+CisgICAgICAgIG9iamVjdCBp
bnN0YW5jZSB0byBkZXN0cm95IHRoZSBvYmplY3QgcmVwcmVzZW50ZWQgYnkgdGhlCisgICAgICAg
IG1fcGxhdGZvcm1LZXkgaGFuZGxlLgorCisgICAgICAgIFRoZSBtZXRob2RzIGluIENyeXB0b0tl
eVJTQS5jcHAgYXJlIGFsc28gcmVvcmRlcmVkIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgZGVjbGFy
YXRpb24gb3JkZXIgdXNlZCBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAt
LSBjdXJyZW50IG9uZXMgY292ZXIgdGhpcyBzdWZmaWNpZW50bHksIGJ1dCBhcmUgbm90IHlldAor
ICAgICAgICBlbmFibGVkIGR1ZSB0byBvdGhlciBtaXNzaW5nIHBsYXRmb3JtLXNwZWNpZmljIFNV
QlRMRV9DUllQVE8KKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5UlNBOjpDcnlwdG9LZXlSU0EpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjp+
Q3J5cHRvS2V5UlNBKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9uZW50VmVjdG9yVG9VSW50MzIp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpleHBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmJ1aWxk
QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisKIDIwMTctMDQtMDYgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtEZWJ1Z10gQVNTRVJU
KCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSBvbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXN0YXR1cy13b3JrZXIuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggNmEwN2Y3NDBlMzc1MGRiZWJhMjg4YTQ2NGVmOTU0MzEyMmFhNjY3
ZS4uYmU4NDM1YjYzYmM1MzEwZjQwYmJkMGYxMDA1ZTQ2ZGI2ZjAyYzg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMDYgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBDcnlwdG9LZXlS
U0E6OmdlbmVyYXRlUGFpcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzAzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFy
by4KKworICAgICAgICAqIHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oOgorICAgICAgICAoUEFM
OjpHQ3J5cHQ6OkhhbmRsZURlbGV0ZXI8Z2NyeV9zZXhwX3Q+OjpvcGVyYXRvcigpKTogQWRkIGEg
SGFuZGxlRGVsZXRlcgorICAgICAgICBzcGVjaWFsaXphdGlvbiBmb3IgdGhlIGdjcnlfc2V4cF90
IHR5cGUuCisKIDIwMTctMDQtMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTA0Ni4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaAppbmRleCAwZDY2N2YzNWExNmIw
OTVhODAzOGU2NWFmMzJjMzE5MTU1NzVhZTI1Li5kY2VlYWJmNzZjOWFmMTU3Y2ZmZjZkNjA0NTUw
NDY0NGE2ODZhNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0
L0hhbmRsZS5oCkBAIC0xMDYsNSArMTA2LDEzIEBAIHN0cnVjdCBIYW5kbGVEZWxldGVyPGdjcnlf
c2V4cF90PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8
Z2NyeV9zZXhwX3Q+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoZ2NyeV9zZXhwX3QgaGFuZGxlKQor
ICAgIHsKKyAgICAgICAgZ2NyeV9zZXhwX3JlbGVhc2UoaGFuZGxlKTsKKyAgICB9Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBHQ3J5cHQKIH0gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmluZGV4IDBjNzcz
NzQyN2ZiNmRlZDVlYjBkYTkxNDk2NTM1NWFhMjEzMjdiOTAuLjA3ZWIzMTg4YTk4MGQ1MmMxYTZk
YzEwNTFmNmFjYzA0ZjJlYTIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKQEAgLTMzLDIxICszMywxMiBAQAogI2luY2x1
ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0
IF9QbGF0Zm9ybVJTQUtleUdudVRMUyB7Ci19OwotCi1DcnlwdG9LZXlSU0E6OkNyeXB0b0tleVJT
QShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlIHR5cGUsIFBsYXRmb3Jt
UlNBS2V5IHBsYXRmb3JtS2V5LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZSkKLSAgICA6IENyeXB0b0tleShpZGVudGlmaWVyLCB0eXBlLCBleHRyYWN0YWJsZSwg
dXNhZ2UpCi0gICAgLCBtX3BsYXRmb3JtS2V5KHBsYXRmb3JtS2V5KQotICAgICwgbV9yZXN0cmlj
dGVkVG9TcGVjaWZpY0hhc2goaGFzSGFzaCkKLSAgICAsIG1faGFzaChoYXNoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6
Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNjEsOSArNTIsMTggQEAgUmVm
UHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLAogICAgIHJldHVybiBudWxscHRyOwogfQogCitDcnlwdG9LZXlS
U0E6OkNyeXB0b0tleVJTQShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBl
IHR5cGUsIFBsYXRmb3JtUlNBS2V5IHBsYXRmb3JtS2V5LCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkKKyAgICA6IENyeXB0b0tleShpZGVudGlmaWVyLCB0eXBl
LCBleHRyYWN0YWJsZSwgdXNhZ2UpCisgICAgLCBtX3BsYXRmb3JtS2V5KHBsYXRmb3JtS2V5KQor
ICAgICwgbV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2goaGFzSGFzaCkKKyAgICAsIG1faGFzaCho
YXNoKQoreworfQorCiBDcnlwdG9LZXlSU0E6On5DcnlwdG9LZXlSU0EoKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgaWYgKG1fcGxhdGZvcm1LZXkpCisgICAgICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGVEZWxldGVyPGdjcnlfc2V4cF90PigpKG1fcGxhdGZvcm1LZXkpOwogfQogCiBib29s
IENyeXB0b0tleVJTQTo6aXNSZXN0cmljdGVkVG9IYXNoKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC04MSwzOCArODEsODAgQEAgc2l6ZV90IENyeXB0b0tl
eVJTQTo6a2V5U2l6ZUluQml0cygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVJTQTo6YnVpbGRBbGdvcml0aG0oKSBjb25z
dAorLy8gQ29udmVydCB0aGUgZXhwb25lbnQgdmVjdG9yIHRvIGEgMzItYml0IHZhbHVlLCBpZiBw
b3NzaWJsZS4KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBvbmVudFZlY3RvclRv
VUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihlbXB0eVN0cmluZygpLCAwLCBXVEZN
b3ZlKHB1YmxpY0V4cG9uZW50KSk7CisgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsKKyAg
ICAgICAgaWYgKHN0ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgpIC0g
NCwgW10odWludDhfdCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICB1aW50MzJfdCByZXN1bHQgPSAw
OworICAgIGZvciAoc2l6ZV90IHNpemUgPSBleHBvbmVudC5zaXplKCksIGkgPSBzdGQ6Om1pbjxz
aXplX3Q+KDQsIHNpemUpOyBpID4gMDsgLS1pKSB7CisgICAgICAgIHJlc3VsdCA8PD0gODsKKyAg
ICAgICAgcmVzdWx0ICs9IGV4cG9uZW50W3NpemUgLSBpXTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5UlNB
OjpleHBvcnREYXRhKCkgY29uc3QKK3ZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBBU1NFUlQoZXh0cmFjdGFibGUoKSk7Ci0KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHJlcG9ydCBhbiBlcnJv
ciBpZiB0aGUgZXhwb25lbnQgaXMgc21hbGxlciB0aGFuIHRocmVlIG9yIGV2ZW4uCisgICAgYXV0
byBlID0gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihwdWJsaWNFeHBvbmVudCk7CisgICAgaWYgKCFl
IHx8ICplIDwgMyB8fCAhKCplICYgMHgxKSkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHN1cHBv
cnQgZ2VuZXJhdGluZyBwcmltZXMgb2YgbGVzcyB0aGFuIDE2IGJpdHMuCisgICAgaWYgKG1vZHVs
dXNMZW5ndGggPCAxNikgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGdlbmtl
eVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZnZW5rZXlT
ZXhwLCBudWxscHRyLCAiKGdlbmtleShyc2EobmJpdHMgJWQpKHJzYS11c2UtZSAlZCkpKSIsIG1v
ZHVsdXNMZW5ndGgsICplKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewor
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICBmYWlsdXJlQ2Fs
bGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IGtleVBhaXJTZXhwOworICAgIGVycm9yID0gZ2NyeV9wa19nZW5rZXko
JmtleVBhaXJTZXhwLCBnZW5rZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHB1YmxpY0tleVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9r
ZW4oa2V5UGFpclNleHAsICJwdWJsaWMta2V5IiwgMCkpOworICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IHByaXZhdGVLZXlTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGtleVBh
aXJTZXhwLCAicHJpdmF0ZS1rZXkiLCAwKSk7CisgICAgaWYgKCFwdWJsaWNLZXlTZXhwIHx8ICFw
cml2YXRlS2V5U2V4cCkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnJlZigpOworICAgIGNvbnRleHQtPnBvc3RUYXNr
KAorICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0YWJsZSwgdXNhZ2Us
IHB1YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJpdmF0ZUtleVNleHAg
PSBwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAg
YXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gsIGhh
c0hhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwgdHJ1ZSwgdXNhZ2Up
OworICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxn
b3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwcml2YXRlS2V5
U2V4cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKKworICAgICAgICAgICAgY2FsbGJhY2soQ3J5cHRv
S2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRlS2V5KSB9KTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ3J5cHRv
S2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0s
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBt
b2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6
aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXApCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKIAotICAgIFVOVVNFRF9QQVJBTShhbGdvcml0aG0pOwotICAgIFVOVVNFRF9QQVJBTSho
YXNoKTsKLSAgICBVTlVTRURfUEFSQU0oaGFzSGFzaCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1vZHVs
dXNMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShwdWJsaWNFeHBvbmVudCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGV4dHJhY3RhYmxlKTsKLSAgICBVTlVTRURfUEFSQU0odXNhZ2UpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9y
dFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyPiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdl
Qml0bWFwKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIApAQCAtMTI2LDE4ICsxNjgsMjYgQEAgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25zdAog
ICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi1SZWZQdHI8
Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4sIFZlY3Rv
cjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtjczgoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRy
PEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgpIGNvbnN0CiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7
CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihlbXB0eVN0cmlu
ZygpLCAwLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7Cit9CiAKLSAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRh
PiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAoreworICAgIEFTU0VSVChleHRyYWN0
YWJsZSgpKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5UlNBLmgKaW5kZXggMGY4Y2U3YzRmZjVmMjE4YzY5MGZjNjUzODNkOTI0NjBhYjkxNGI1
My4uMzA1YmQ0YzQzYTA0YzBmYTYyZGZlMmYzNzdmN2IyNGJkMzkyNjg2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKQEAgLTM3LDggKzM3LDkgQEAgdHlwZWRl
ZiBDQ1JTQUNyeXB0b3JSZWYgUGxhdGZvcm1SU0FLZXk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykKLXR5cGVkZWYgc3RydWN0IF9QbGF0Zm9ybVJTQUtleUdudVRMUyBQbGF0Zm9ybVJTQUtl
eUdudVRMUzsKLXR5cGVkZWYgUGxhdGZvcm1SU0FLZXlHbnVUTFMgKlBsYXRmb3JtUlNBS2V5Owor
Ly8gZ2NyeV9zZXhwKiBlcXVhdGVzIGdjcnlfc2V4cF90Lgorc3RydWN0IGdjcnlfc2V4cDsKK3R5
cGVkZWYgZ2NyeV9zZXhwKiBQbGF0Zm9ybVJTQUtleTsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306475</attachid>
            <date>2017-04-07 00:17:06 -0700</date>
            <delta_ts>2017-04-07 00:17:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170350-20170407091705.patch</filename>
            <type>text/plain</type>
            <size>10564</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTExZmU1NmY5YjA1ODQ3
NDVhY2E0NWIyZDBlNzMzZjRkNjAyYTMyZi4uYWFlNTc2NTgzYWUyZmQ3YzQxMDMxZTg1YWM0OThj
NGU4MTYyNWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTA0LTA3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgU3RhcnQgaW1wbGVtZW50aW5nIHRoZSBsaWJn
Y3J5cHQtYmFzZWQgcGxhdGZvcm0gYml0cyBvZiBDcnlwdG9LZXlSU0EuCisKKyAgICAgICAgSW1w
bGVtZW50IGdlbmVyYXRlUGFpcigpIGJ5IGNvbnN0cnVjdGluZyBhIGdlbmtleSBzLWV4cHJlc3Np
b24KKyAgICAgICAgdGhhdCByZXF1ZXN0cyBhIGdlbmVyYXRpb24gb2YgYW4gUlNBIGtleSB0aGF0
IHNob3VsZCB1c2UgYSBtb2R1bHVzCisgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgYml0LWxlbmd0
aCBhbmQgdGhlIHNwZWNpZmllZCBleHBvbmVudC4gVGhlIGV4cG9uZW50CisgICAgICAgIGlzIGV4
dHJhY3RlZCBmcm9tIGFuIHVpbnQ4X3QgYXJyYXkgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4g
VGhlCisgICAgICAgIG1vZHVsdXMgbGVuZ3RoIHZhbHVlIGlzIGNoZWNrZWQgdG8gYmUgYXQgbGVh
c3QgMTYsIHNpbmNlIGxpYmdjcnlwdAorICAgICAgICBkb2VzIG5vdCBzdXBwb3J0IGdlbmVyYXRp
bmcgcHJpbWVzIG9mIGxlc3MgdGhhbiB0aGF0IGxlbmd0aCBpbiBiaXRzLgorCisgICAgICAgIFRo
ZSByZXR1cm5lZCBzLWV4cHJlc3Npb24gdXBvbiByZXF1ZXN0IHdpbGwgY29udGFpbiB0aGUgZGF0
YSBmb3IKKyAgICAgICAgYm90aCB0aGUgcHVibGljIGFuZCB0aGUgcHJpdmF0ZSBrZXkuIGdjcnlf
c2V4cF90IGhhbmRsZXMgcmVwcmVzZW50aW5nCisgICAgICAgIHRob3NlIHMtZXhwcmVzc2lvbnMg
YXJlIHRoZW4gcGFzc2VkIHRvIENyeXB0b0tleVJTQTo6Y3JlYXRlKCkgYmVmb3JlCisgICAgICAg
IGludm9raW5nIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHdpdGggYSBuZXcgQ3J5cHRvS2V5UGFpciBv
YmplY3QgaW4gYQorICAgICAgICBzZXBhcmF0ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRhc2su
CisKKyAgICAgICAgVGhlIENyeXB0b0tleVJTQSBjb25zdHJ1Y3RvciBzaW1wbHkgaGFzIHRoZSBu
b3RJbXBsZW1lbnRlZCgpIGNhbGwKKyAgICAgICAgcmVtb3ZlZC4gVGhlIGRlc3RydWN0b3Igbm93
IGludm9rZXMgdGhlIEhhbmRsZURlbGV0ZXI8Z2NyeV9zZXhwX3Q+CisgICAgICAgIG9iamVjdCBp
bnN0YW5jZSB0byBkZXN0cm95IHRoZSBvYmplY3QgcmVwcmVzZW50ZWQgYnkgdGhlCisgICAgICAg
IG1fcGxhdGZvcm1LZXkgaGFuZGxlLgorCisgICAgICAgIFRoZSBtZXRob2RzIGluIENyeXB0b0tl
eVJTQS5jcHAgYXJlIGFsc28gcmVvcmRlcmVkIHRvIGZvbGxvdyB0aGUKKyAgICAgICAgZGVjbGFy
YXRpb24gb3JkZXIgdXNlZCBpbiB0aGUgaGVhZGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAt
LSBjdXJyZW50IG9uZXMgY292ZXIgdGhpcyBzdWZmaWNpZW50bHksIGJ1dCBhcmUgbm90IHlldAor
ICAgICAgICBlbmFibGVkIGR1ZSB0byBvdGhlciBtaXNzaW5nIHBsYXRmb3JtLXNwZWNpZmljIFNV
QlRMRV9DUllQVE8KKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
S2V5UlNBOjpDcnlwdG9LZXlSU0EpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjp+
Q3J5cHRvS2V5UlNBKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9uZW50VmVjdG9yVG9VSW50MzIp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5
UlNBOjpleHBvcnRQa2NzOCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmJ1aWxk
QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmg6CisKIDIwMTctMDQtMDYgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtEZWJ1Z10gQVNTRVJU
KCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSBvbiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcHJlZmxpZ2h0LXN0YXR1cy13b3JrZXIuaHRtbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
CmluZGV4IDBjNzczNzQyN2ZiNmRlZDVlYjBkYTkxNDk2NTM1NWFhMjEzMjdiOTAuLjA3ZWIzMTg4
YTk4MGQ1MmMxYTZkYzEwNTFmNmFjYzA0ZjJlYTIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKQEAgLTMzLDIxICszMywx
MiBAQAogI2luY2x1ZGUgIkNyeXB0b0tleVBhaXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5j
bHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IF9QbGF0Zm9ybVJTQUtleUdudVRMUyB7Ci19OwotCi1DcnlwdG9LZXlSU0E6
OkNyeXB0b0tleVJTQShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlIHR5
cGUsIFBsYXRmb3JtUlNBS2V5IHBsYXRmb3JtS2V5LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZSkKLSAgICA6IENyeXB0b0tleShpZGVudGlmaWVyLCB0eXBlLCBl
eHRyYWN0YWJsZSwgdXNhZ2UpCi0gICAgLCBtX3BsYXRmb3JtS2V5KHBsYXRmb3JtS2V5KQotICAg
ICwgbV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2goaGFzSGFzaCkKLSAgICAsIG1faGFzaChoYXNo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENy
eXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0IENyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNjEsOSAr
NTIsMTggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHJldHVybiBudWxscHRyOwogfQog
CitDcnlwdG9LZXlSU0E6OkNyeXB0b0tleVJTQShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCBD
cnlwdG9LZXlUeXBlIHR5cGUsIFBsYXRmb3JtUlNBS2V5IHBsYXRmb3JtS2V5LCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSkKKyAgICA6IENyeXB0b0tleShpZGVu
dGlmaWVyLCB0eXBlLCBleHRyYWN0YWJsZSwgdXNhZ2UpCisgICAgLCBtX3BsYXRmb3JtS2V5KHBs
YXRmb3JtS2V5KQorICAgICwgbV9yZXN0cmljdGVkVG9TcGVjaWZpY0hhc2goaGFzSGFzaCkKKyAg
ICAsIG1faGFzaChoYXNoKQoreworfQorCiBDcnlwdG9LZXlSU0E6On5DcnlwdG9LZXlSU0EoKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fcGxhdGZvcm1LZXkpCisgICAgICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGVEZWxldGVyPGdjcnlfc2V4cF90PigpKG1fcGxhdGZvcm1LZXkp
OwogfQogCiBib29sIENyeXB0b0tleVJTQTo6aXNSZXN0cmljdGVkVG9IYXNoKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXImIGlkZW50aWZpZXIpIGNvbnN0CkBAIC04MSwzOCArODEsODAgQEAgc2l6
ZV90IENyeXB0b0tleVJTQTo6a2V5U2l6ZUluQml0cygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVJTQTo6YnVpbGRBbGdv
cml0aG0oKSBjb25zdAorLy8gQ29udmVydCB0aGUgZXhwb25lbnQgdmVjdG9yIHRvIGEgMzItYml0
IHZhbHVlLCBpZiBwb3NzaWJsZS4KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBv
bmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcHVibGljRXhwb25lbnQ7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGhtPihlbXB0eVN0cmlu
ZygpLCAwLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7CisgICAgaWYgKGV4cG9uZW50LnNpemUo
KSA+IDQpIHsKKyAgICAgICAgaWYgKHN0ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9u
ZW50LmVuZCgpIC0gNCwgW10odWludDhfdCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0p
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICB1aW50MzJf
dCByZXN1bHQgPSAwOworICAgIGZvciAoc2l6ZV90IHNpemUgPSBleHBvbmVudC5zaXplKCksIGkg
PSBzdGQ6Om1pbjxzaXplX3Q+KDQsIHNpemUpOyBpID4gMDsgLS1pKSB7CisgICAgICAgIHJlc3Vs
dCA8PD0gODsKKyAgICAgICAgcmVzdWx0ICs9IGV4cG9uZW50W3NpemUgLSBpXTsKKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4g
Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKK3ZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5l
cmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0sIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3Ro
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKIHsKLSAgICBBU1NFUlQoZXh0cmFjdGFibGUoKSk7Ci0KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHJl
cG9ydCBhbiBlcnJvciBpZiB0aGUgZXhwb25lbnQgaXMgc21hbGxlciB0aGFuIHRocmVlIG9yIGV2
ZW4uCisgICAgYXV0byBlID0gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihwdWJsaWNFeHBvbmVudCk7
CisgICAgaWYgKCFlIHx8ICplIDwgMyB8fCAhKCplICYgMHgxKSkgeworICAgICAgICBmYWlsdXJl
Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGxpYmdjcnlwdCBk
b2Vzbid0IHN1cHBvcnQgZ2VuZXJhdGluZyBwcmltZXMgb2YgbGVzcyB0aGFuIDE2IGJpdHMuCisg
ICAgaWYgKG1vZHVsdXNMZW5ndGggPCAxNikgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9z
ZXhwX3Q+IGdlbmtleVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1
aWxkKCZnZW5rZXlTZXhwLCBudWxscHRyLCAiKGdlbmtleShyc2EobmJpdHMgJWQpKHJzYS11c2Ut
ZSAlZCkpKSIsIG1vZHVsdXNMZW5ndGgsICplKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGtleVBhaXJTZXhwOworICAgIGVycm9yID0gZ2Ny
eV9wa19nZW5rZXkoJmtleVBhaXJTZXhwLCBnZW5rZXlTZXhwKTsKKyAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHB1YmxpY0tleVNleHAoZ2NyeV9z
ZXhwX2ZpbmRfdG9rZW4oa2V5UGFpclNleHAsICJwdWJsaWMta2V5IiwgMCkpOworICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHByaXZhdGVLZXlTZXhwKGdjcnlfc2V4cF9maW5k
X3Rva2VuKGtleVBhaXJTZXhwLCAicHJpdmF0ZS1rZXkiLCAwKSk7CisgICAgaWYgKCFwdWJsaWNL
ZXlTZXhwIHx8ICFwcml2YXRlS2V5U2V4cCkgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnJlZigpOworICAgIGNvbnRl
eHQtPnBvc3RUYXNrKAorICAgICAgICBbYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBleHRyYWN0
YWJsZSwgdXNhZ2UsIHB1YmxpY0tleVNleHAgPSBwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSwgcHJp
dmF0ZUtleVNleHAgPSBwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0
aG0sIGhhc2gsIGhhc0hhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgcHVibGljS2V5U2V4cCwg
dHJ1ZSwgdXNhZ2UpOworICAgICAgICAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLCBoYXNIYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRl
LCBwcml2YXRlS2V5U2V4cCwgZXh0cmFjdGFibGUsIHVzYWdlKTsKKworICAgICAgICAgICAgY2Fs
bGJhY2soQ3J5cHRvS2V5UGFpciB7IFdURk1vdmUocHVibGljS2V5KSwgV1RGTW92ZShwcml2YXRl
S2V5KSB9KTsKKyAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgfSk7CiB9CiAK
LXZvaWQgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBhbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNo
LCB1bnNpZ25lZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4
cG9uZW50LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5
UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxDcnlwdG9LZXlSU0E+IENy
eXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9w
dGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9v
bCwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXApCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKIAotICAgIFVOVVNFRF9QQVJBTShhbGdvcml0aG0pOwotICAgIFVO
VVNFRF9QQVJBTShoYXNoKTsKLSAgICBVTlVTRURfUEFSQU0oaGFzSGFzaCk7Ci0gICAgVU5VU0VE
X1BBUkFNKG1vZHVsdXNMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShwdWJsaWNFeHBvbmVudCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGV4dHJhY3RhYmxlKTsKLSAgICBVTlVTRURfUEFSQU0odXNhZ2Up
OwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9L
ZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENy
eXB0b0tleVVzYWdlQml0bWFwKQorUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI+LCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXApCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIApAQCAtMTI2LDE4ICsxNjgs
MjYgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNw
a2koKSBjb25zdAogICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owog
fQogCi1SZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcj4sIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK0V4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNv
bnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIAotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogfQogCi1FeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0UGtjczgoKSBjb25zdAorc3Rk
Ojp1bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgp
IGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcHVi
bGljRXhwb25lbnQ7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UnNhS2V5QWxnb3JpdGht
PihlbXB0eVN0cmluZygpLCAwLCBXVEZNb3ZlKHB1YmxpY0V4cG9uZW50KSk7Cit9CiAKLSAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKK3N0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAoreworICAgIEFT
U0VSVChleHRyYWN0YWJsZSgpKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKaW5kZXggMGY4Y2U3YzRmZjVmMjE4YzY5MGZjNjUzODNk
OTI0NjBhYjkxNGI1My4uMzA1YmQ0YzQzYTA0YzBmYTYyZGZlMmYzNzdmN2IyNGJkMzkyNjg2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmgKQEAgLTM3LDggKzM3
LDkgQEAgdHlwZWRlZiBDQ1JTQUNyeXB0b3JSZWYgUGxhdGZvcm1SU0FLZXk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKEdUSykKLXR5cGVkZWYgc3RydWN0IF9QbGF0Zm9ybVJTQUtleUdudVRMUyBQ
bGF0Zm9ybVJTQUtleUdudVRMUzsKLXR5cGVkZWYgUGxhdGZvcm1SU0FLZXlHbnVUTFMgKlBsYXRm
b3JtUlNBS2V5OworLy8gZ2NyeV9zZXhwKiBlcXVhdGVzIGdjcnlfc2V4cF90Lgorc3RydWN0IGdj
cnlfc2V4cDsKK3R5cGVkZWYgZ2NyeV9zZXhwKiBQbGF0Zm9ybVJTQUtleTsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>