<?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>170546</bug_id>
          
          <creation_ts>2017-04-06 06:52:33 -0700</creation_ts>
          <short_desc>[GCrypt] Implement raw and JWK imports and exports for EC keys</short_desc>
          <delta_ts>2017-04-07 00:36:42 -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>1294862</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 06:52:33 -0700</bug_when>
    <thetext>[GCrypt] Implement raw and JWK imports and exports for EC keys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294867</commentid>
    <comment_count>1</comment_count>
      <attachid>306381</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 07:19:11 -0700</bug_when>
    <thetext>Created attachment 306381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294883</commentid>
    <comment_count>2</comment_count>
      <attachid>306381</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-06 08:09:43 -0700</bug_when>
    <thetext>Comment on attachment 306381
Patch

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

Not really sure what you&apos;re doing here, so if Jiewen is able to sanity-check this, that would be great.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:60
&gt; +static size_t uncompressedPointSizeForCurve(CryptoKeyEC::NamedCurve curve)

Nit: I would make this return an unsigned (int). size_t is semantically not right here since it&apos;s not the size of a memory buffer. The type doesn&apos;t have to match how it&apos;s used elsewhere.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:70
&gt; +static size_t uncompressedFieldElementSizeForCurve(CryptoKeyEC::NamedCurve curve)

Ditto.

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:160
&gt; +    Vector&lt;uint8_t&gt; q;

Can you add a comment to explain what you&apos;re doing with q?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294963</commentid>
    <comment_count>3</comment_count>
      <attachid>306381</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-04-06 11:20:52 -0700</bug_when>
    <thetext>Comment on attachment 306381
Patch

Didn&apos;t check if calls to gcrypt library are correct or not. Looks good to me from the semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294965</commentid>
    <comment_count>4</comment_count>
      <attachid>306381</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-06 11:23:24 -0700</bug_when>
    <thetext>Comment on attachment 306381
Patch

OK then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295217</commentid>
    <comment_count>5</comment_count>
      <attachid>306381</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 23:26:57 -0700</bug_when>
    <thetext>Comment on attachment 306381
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:160
&gt;&gt; +    Vector&lt;uint8_t&gt; q;
&gt; 
&gt; Can you add a comment to explain what you&apos;re doing with q?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295218</commentid>
    <comment_count>6</comment_count>
      <attachid>306471</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-06 23:27:41 -0700</bug_when>
    <thetext>Created attachment 306471
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295233</commentid>
    <comment_count>7</comment_count>
      <attachid>306471</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 00:36:38 -0700</bug_when>
    <thetext>Comment on attachment 306471
Patch for landing

Clearing flags on attachment: 306471

Committed r215086: &lt;http://trac.webkit.org/changeset/215086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295234</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 00:36:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306381</attachid>
            <date>2017-04-06 07:19:11 -0700</date>
            <delta_ts>2017-04-06 23:27:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170546-20170406161910.patch</filename>
            <type>text/plain</type>
            <size>12253</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODYyNTg0MTc2Y2U3Y2Nm
ZmUzNmFhNGJkZWNjOTFhNGRiMDM4OTRiNS4uNzUxYThkNjg2OWI1ZTU5ZWM3MDFjNDIyZDQ3ODEy
ODdiODY4ZWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA0LTA2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgcmF3IGFuZCBKV0sgaW1wb3J0cyBhbmQgZXhwb3J0cyBmb3IgRUMga2V5cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTQ2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGltcG9y
dCBhbmQgZXhwb3J0IG9wZXJhdGlvbnMgZm9yIEVDIGtleXMsIGNvdmVyaW5nIHRoZSByYXcKKyAg
ICAgICAgYW5kIEpXSyBpbXBvcnQvZXhwb3J0IHR5cGVzLgorCisgICAgICAgIENyeXB0b0tleUVD
OjpwbGF0Zm9ybUltcG9ydFJhdygpIGJ1aWxkcyBhIHB1YmxpYy1rZXkgcy1leHByZXNzaW9uLAor
ICAgICAgICBwcm92aWRpbmcgdGhlIGN1cnZlIG5hbWUgYW5kIHRoZSBrZXkgZGF0YSwgYW5kIHlp
ZWxkcyB0aGUgZ2NyeV9zZXhwX3QKKyAgICAgICAgb2JqZWN0IHRvIHRoZSBuZXcgQ3J5cHRvS2V5
RUMuCisKKyAgICAgICAgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKCkgZmly
c3QgY29uc3RydWN0cyBhIFZlY3Rvcjx1aW50OF90PgorICAgICAgICBvYmplY3QgdGhhdCBjb250
YWlucyB0aGUgRUMgcG9pbnQgaW4gdGhlIHVuY29tcHJlc3NlZCBmb3JtYXQuIEl0IHRoZW4KKyAg
ICAgICAgcHV0cyB0aGF0IGRhdGEgaW50byBhIG5ld2x5LWNvbnN0cnVjdGVkIHB1YmxpYy1rZXkg
cy1leHByZXNzaW9uIHRoYXQgaXMKKyAgICAgICAgdGhlbiB1c2VkIHRvIGNvbnN0cnVjdCB0aGUg
bmV3IENyeXB0b0tleUVDIG9iamVjdC4KKworICAgICAgICBDcnlwdG9LZXlFQzo6cGxhdGZvcm1J
bXBvcnRKV0tQcml2YXRlKCkgY29uc3RydWN0cyB0aGUgRUMgcG9pbnQgZGF0YSBqdXN0CisgICAg
ICAgIHRoZSBzYW1lLCBidXQgaXQgYWxzbyBsYXlzIG91dCB0aGUgcHJpdmF0ZSBrZXkgZmllbGQg
ZWxlbWVudCBkYXRhIGludG8KKyAgICAgICAgdGhlIHByaXZhdGUta2V5IHMtZXhwcmVzc2lvbiB0
aGF0J3MgdGhlbiBoYW5kZWQgb2ZmIHRvIHRoZSBDcnlwdG9LZXlFQworICAgICAgICBvYmplY3Qu
CisKKyAgICAgICAgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3RydWN0cyBh
IG5ldyBFQyBvcGVyYXRpb25zIGNvbnRleHQKKyAgICAgICAgYW5kIHRoZW4gdXNlcyBpdCB0byBy
ZXRyaWV2ZSB0aGUgcSBwYXJhbWV0ZXIgYXMgYW4gTVBJLiBBIFZlY3Rvcjx1aW50OF90PgorICAg
ICAgICBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgTVBJIGRhdGEgdGhyb3VnaCB0aGUgZXh0cmFjdE1Q
SURhdGEoKSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgQ3J5cHRvS2V5RUM6
OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cygpIHNpbWlsYXJseSB1c2VzIHRoZSBFQyBvcGVyYXRp
b25zCisgICAgICAgIGNvbnRleHQgdG8gcmV0cmlldmUgdGhlIHEgcGFyYW1ldGVyIGRhdGEsIHdo
aWNoIGl0IHRoZW4gc3BsaXRzIGludG8gdGhlCisgICAgICAgIHggYW5kIHkgZmllbGQgZWxlbWVu
dHMgYW5kIEJhc2U2NCBVUkwtZW5jb2RlcyB0aGVtIGludG8gYSBmb3JtIHRoYXQgY2FuCisgICAg
ICAgIGJlIHBsYWNlZCBpbiBhIEpzb25XZWJLZXkuIElmIHRoZSBrZXkgaXMgcHJpdmF0ZSwgdGhl
IGQgcGFyYW1ldGVyIGlzCisgICAgICAgIHJldHJpZXZlZCBpbiB0aGUgc2FtZSBmYXNoaW9uIGFu
ZCBhZ2FpbiBCYXNlNjQgVVJMLWVuY29kZWQgYW5kIHN0b3JlZAorICAgICAgICBpbiB0aGUgSnNv
bldlYktleSBvYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIGN1cnJlbnQgb25lcyBj
b3ZlciB0aGlzIHN1ZmZpY2llbnRseSwgYnV0IGFyZSBub3QgeWV0CisgICAgICAgIGVuYWJsZWQg
ZHVlIHRvIG90aGVyIG1pc3NpbmcgcGxhdGZvcm0tc3BlY2lmaWMgU1VCVExFX0NSWVBUTworICAg
ICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tl
eUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuY29tcHJlc3NlZFBvaW50U2l6ZUZv
ckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OnVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemVG
b3JDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TVBJRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRSYXcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMpOgorCiAyMDE3LTA0LTA1ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBsYXN0
SGFuZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wIG9uIGFsbCBhbmNlc3RvciBkb2N1bWVudHMsIG5v
dCBqdXN0IHRoZSB0b3AgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGUxNDkzZTc2ZDA5
ZGQwMWRlY2MyMDE1OTAyOTc1YzFhOTU3OGJiYmIuLjNjYmZmNGNjMDIwMjI4MGU4OTE5YWRkYWJk
YjgwMjU1MjFmYzU4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTA0LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R0NyeXB0XSBJbXBsZW1lbnQgcmF3IGFuZCBKV0sgaW1wb3J0cyBhbmQgZXhwb3J0cyBmb3IgRUMg
a2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcw
NTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IEhhbmRsZURlbGV0ZXIgc3BlY2l6YWxpemF0aW9ucyBmb3IgZ2NyeV9jdHhfdCBhbmQgZ2NyeV9t
cGlfdCB0eXBlcy4KKworICAgICAgICAqIHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oOgorICAg
ICAgICAoUEFMOjpHQ3J5cHQ6OkhhbmRsZURlbGV0ZXI8Z2NyeV9jdHhfdD46Om9wZXJhdG9yKCkp
OgorICAgICAgICAoUEFMOjpHQ3J5cHQ6OkhhbmRsZURlbGV0ZXI8Z2NyeV9tcGlfdD46Om9wZXJh
dG9yKCkpOgorCiAyMDE3LTA0LTAzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZpeCBidWlsZCB3aXRo
IGxpYmdjcnlwdCA8IDEuNy4wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9nY3J5cHQvSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5
cHQvSGFuZGxlLmgKaW5kZXggMGQ2NjdmMzVhMTZiMDk1YTgwMzhlNjVhZjMyYzMxOTE1NTc1YWUy
NS4uNWNhZjljMzE1ZWEwYjRhZTg5NThkMGYzY2NlOTkxMTJkY2FlZWRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaApAQCAtOTEsNiArOTEsMTQg
QEAgc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jaXBoZXJfaGRfdD4gewogfTsKIAogdGVtcGxh
dGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jdHhfdD4geworICAgIHZvaWQgb3BlcmF0
b3IoKShnY3J5X2N0eF90IGhhbmRsZSkKKyAgICB7CisgICAgICAgIGdjcnlfY3R4X3JlbGVhc2Uo
aGFuZGxlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxn
Y3J5X21hY19oZF90PiB7CiAgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfbWFjX2hkX3QgaGFuZGxl
KQogICAgIHsKQEAgLTk5LDYgKzEwNywxNCBAQCBzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxnY3J5X21h
Y19oZF90PiB7CiB9OwogCiB0ZW1wbGF0ZTw+CitzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxnY3J5X21w
aV90PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfbXBpX3QgaGFuZGxlKQorICAgIHsKKyAg
ICAgICAgZ2NyeV9tcGlfcmVsZWFzZShoYW5kbGUpOworICAgIH0KK307CisKK3RlbXBsYXRlPD4K
IHN0cnVjdCBIYW5kbGVEZWxldGVyPGdjcnlfc2V4cF90PiB7CiAgICAgdm9pZCBvcGVyYXRvcigp
KGdjcnlfc2V4cF90IGhhbmRsZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IGMxMTEyNWQ2YWVhMjhhMTJkOWQ1
YjdhNzA4YWIzOWYxMTBjZTY2N2QuLmNkMWVjZDlkMWZlYzQ5NGY0ZTRjNGQ4OWJkOTU1YmZkNzBk
YWI5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5
RUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5
RUNHQ3J5cHQuY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgorI2luY2x1ZGUgIkpzb25XZWJLZXkuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0
L0hhbmRsZS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1
LDYgKzU3LDQ1IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZU5hbWUoQ3J5cHRvS2V5RUM6Ok5h
bWVkQ3VydmUgY3VydmUpCiAgICAgfQogfQogCitzdGF0aWMgc2l6ZV90IHVuY29tcHJlc3NlZFBv
aW50U2l6ZUZvckN1cnZlKENyeXB0b0tleUVDOjpOYW1lZEN1cnZlIGN1cnZlKQoreworICAgIHN3
aXRjaCAoY3VydmUpIHsKKyAgICBjYXNlIENyeXB0b0tleUVDOjpOYW1lZEN1cnZlOjpQMjU2Ogor
ICAgICAgICByZXR1cm4gNjU7CisgICAgY2FzZSBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDM4
NDoKKyAgICAgICAgcmV0dXJuIDk3OworICAgIH0KK30KKworc3RhdGljIHNpemVfdCB1bmNvbXBy
ZXNzZWRGaWVsZEVsZW1lbnRTaXplRm9yQ3VydmUoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3Vy
dmUpCit7CisgICAgc3dpdGNoIChjdXJ2ZSkgeworICAgIGNhc2UgQ3J5cHRvS2V5RUM6Ok5hbWVk
Q3VydmU6OlAyNTY6CisgICAgICAgIHJldHVybiAzMjsKKyAgICBjYXNlIENyeXB0b0tleUVDOjpO
YW1lZEN1cnZlOjpQMzg0OgorICAgICAgICByZXR1cm4gNDg7CisgICAgfQorfQorCitzdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RNUElEYXRhKGdjcnlfbXBpX3QgbXBpKQoreworICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gMDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9w
cmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIsIDAsICZkYXRhTGVuZ3RoLCBtcGkpOworICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEoZGF0YUxlbmd0aCk7CisgICAgZXJyb3IgPSBnY3J5X21waV9wcmludChH
Q1JZTVBJX0ZNVF9VU0csIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgbnVsbHB0ciwgbXBpKTsK
KyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJl
dHVybiBkYXRhOworfTsKKwogQ3J5cHRvS2V5RUM6On5DcnlwdG9LZXlFQygpCiB7CiAgICAgaWYg
KG1fcGxhdGZvcm1LZXkpCkBAIC05NCwyNSArMTM1LDY2IEBAIHN0ZDo6b3B0aW9uYWw8Q3J5cHRv
S2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRo
bUlkCiAgICAgcmV0dXJuIENyeXB0b0tleVBhaXIgeyBXVEZNb3ZlKHB1YmxpY0tleSksIFdURk1v
dmUocHJpdmF0ZUtleSkgfTsKIH0KIAotUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6
cGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwg
VmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwKQorUmVmUHRyPENy
eXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBWZWN0b3I8dWludDhfdD4m
JiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoa2V5RGF0YS5zaXplKCkgIT0gdW5j
b21wcmVzc2VkUG9pbnRTaXplRm9yQ3VydmUoY3VydmUpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9z
ZXhwX3Q+IHBsYXRmb3JtS2V5OworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9i
dWlsZCgmcGxhdGZvcm1LZXksIG51bGxwdHIsICIocHVibGljLWtleShlY2MoY3VydmUgJXMpKHEg
JWIpKSkiLAorICAgICAgICBjdXJ2ZU5hbWUoY3VydmUpLCBrZXlEYXRhLnNpemUoKSwga2V5RGF0
YS5kYXRhKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5
cGU6OlB1YmxpYywgcGxhdGZvcm1LZXkucmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
IH0KIAotUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQ
dWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK1Jl
ZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgc2l6ZV90IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUgPSB1bmNvbXByZXNzZWRGaWVs
ZEVsZW1lbnRTaXplRm9yQ3VydmUoY3VydmUpOworICAgIGlmICh4LnNpemUoKSAhPSB1bmNvbXBy
ZXNzZWRGaWVsZEVsZW1lbnRTaXplIHx8IHkuc2l6ZSgpICE9IHVuY29tcHJlc3NlZEZpZWxkRWxl
bWVudFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHE7CisgICAgcS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEg
KyAyICogdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSk7CisgICAgcS5hcHBlbmQoMHgwNCk7
CisgICAgcS5hcHBlbmRWZWN0b3IoeCk7CisgICAgcS5hcHBlbmRWZWN0b3IoeSk7CisKKyAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwbGF0Zm9ybUtleTsKKyAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBudWxscHRyLCAiKHB1
YmxpYy1rZXkoZWNjKGN1cnZlICVzKShxICViKSkpIiwKKyAgICAgICAgY3VydmVOYW1lKGN1cnZl
KSwgcS5zaXplKCksIHEuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKGlkZW50aWZpZXIsIGN1cnZl
LCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRm
b3JtSW1wb3J0SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBOYW1lZEN1cnZl
LCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYm
LCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkKK1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRv
S2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJpdmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rv
cjx1aW50OF90PiYmIHksIFZlY3Rvcjx1aW50OF90PiYmIGQsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHNpemVfdCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplID0gdW5jb21wcmVzc2VkRmllbGRF
bGVtZW50U2l6ZUZvckN1cnZlKGN1cnZlKTsKKyAgICBpZiAoeC5zaXplKCkgIT0gdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZSB8fCB5LnNpemUoKSAhPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1l
bnRTaXplIHx8IGQuc2l6ZSgpICE9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHE7CisgICAgcS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEgKyAyICogdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZSk7CisgICAgcS5hcHBlbmQoMHgwNCk7CisgICAgcS5hcHBlbmRW
ZWN0b3IoeCk7CisgICAgcS5hcHBlbmRWZWN0b3IoeSk7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfc2V4cF90PiBwbGF0Zm9ybUtleTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBudWxscHRyLCAiKHByaXZhdGUta2V5KGVjYyhj
dXJ2ZSAlcykocSAlYikoZCAlYikpKSIsCisgICAgICAgIGN1cnZlTmFtZShjdXJ2ZSksIHEuc2l6
ZSgpLCBxLmRhdGEoKSwgZC5zaXplKCksIGQuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKGlkZW50
aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBwbGF0Zm9ybUtleS5yZWxlYXNl
KCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0
b0tleUVDOjpwbGF0Zm9ybUltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFt
ZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGJvb2wsIENyeXB0b0tleVVzYWdlQml0bWFwKQpA
QCAtMTMxLDE0ICsyMTMsNTcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxh
dGZvcm1JbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLAogCiBWZWN0b3I8dWlu
dDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3QKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jdHhfdD4gY29udGV4
dDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9lY19uZXcoJmNvbnRleHQsIG1f
cGxhdGZvcm1LZXksIG51bGxwdHIpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVy
biB7IH07CisgICAgfQogCi0gICAgcmV0dXJuIHsgfTsKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfbXBpX3Q+IHFNUEkoZ2NyeV9tcGlfZWNfZ2V0X21waSgicSIsIGNvbnRleHQsIDApKTsK
KyAgICBpZiAoIXFNUEkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhf
dD4gcSA9IGV4dHJhY3RNUElEYXRhKHFNUEkpOworICAgIGlmIChxLnNpemUoKSAhPSB1bmNvbXBy
ZXNzZWRQb2ludFNpemVGb3JDdXJ2ZShtX2N1cnZlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIHJldHVybiBxOwogfQogCi12b2lkIENyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxl
bWVudHMoSnNvbldlYktleSYpIGNvbnN0Cit2b2lkIENyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZp
ZWxkRWxlbWVudHMoSnNvbldlYktleSYgandrKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2N0eF90PiBjb250ZXh0OworICAgIGdj
cnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX2VjX25ldygmY29udGV4dCwgbV9wbGF0Zm9ybUtl
eSwgbnVsbHB0cik7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNpemVfdCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplID0gdW5jb21wcmVzc2Vk
RmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKG1fY3VydmUpOworCisgICAgUEFMOjpHQ3J5cHQ6Okhh
bmRsZTxnY3J5X21waV90PiBxTVBJKGdjcnlfbXBpX2VjX2dldF9tcGkoInEiLCBjb250ZXh0LCAw
KSk7CisgICAgaWYgKHFNUEkpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHEgPSBleHRyYWN0
TVBJRGF0YShxTVBJKTsKKyAgICAgICAgaWYgKHEuc2l6ZSgpID09IHVuY29tcHJlc3NlZFBvaW50
U2l6ZUZvckN1cnZlKG1fY3VydmUpKSB7CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYTsK
KyAgICAgICAgICAgIGEuYXBwZW5kKHEuZGF0YSgpICsgMSwgdW5jb21wcmVzc2VkRmllbGRFbGVt
ZW50U2l6ZSk7CisgICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVuY29kZShhKTsKKworICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGI7CisgICAgICAgICAgICBiLmFwcGVuZChxLmRhdGEo
KSArIDEgKyB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVs
ZW1lbnRTaXplKTsKKyAgICAgICAgICAgIGp3ay55ID0gYmFzZTY0VVJMRW5jb2RlKGIpOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGUoKSA9PSBUeXBlOjpQcml2YXRlKSB7CisgICAg
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gZE1QSShnY3J5X21waV9lY19nZXRf
bXBpKCJkIiwgY29udGV4dCwgMCkpOworICAgICAgICBpZiAoZE1QSSkgeworICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGQgPSBleHRyYWN0TVBJRGF0YShkTVBJKTsKKyAgICAgICAgICAgIGlm
IChkLnNpemUoKSA9PSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKQorICAgICAgICAgICAg
ICAgIGp3ay5kID0gYmFzZTY0VVJMRW5jb2RlKGQpOworICAgICAgICB9CisgICAgfQogfQogCiBW
ZWN0b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0U3BraSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306471</attachid>
            <date>2017-04-06 23:27:41 -0700</date>
            <delta_ts>2017-04-06 23:27:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170546-20170407082739.patch</filename>
            <type>text/plain</type>
            <size>12433</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTExZmU1NmY5YjA1ODQ3
NDVhY2E0NWIyZDBlNzMzZjRkNjAyYTMyZi4uMTlkMWUyYWFkOTMyMzE0MDM2ZjMxYjFiZjc4NWM3
NzJlYjZlMjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE3LTA0LTA2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgcmF3IGFuZCBKV0sgaW1wb3J0cyBhbmQgZXhwb3J0cyBmb3IgRUMga2V5cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTQ2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgSW1wbGVtZW50IGlt
cG9ydCBhbmQgZXhwb3J0IG9wZXJhdGlvbnMgZm9yIEVDIGtleXMsIGNvdmVyaW5nIHRoZSByYXcK
KyAgICAgICAgYW5kIEpXSyBpbXBvcnQvZXhwb3J0IHR5cGVzLgorCisgICAgICAgIENyeXB0b0tl
eUVDOjpwbGF0Zm9ybUltcG9ydFJhdygpIGJ1aWxkcyBhIHB1YmxpYy1rZXkgcy1leHByZXNzaW9u
LAorICAgICAgICBwcm92aWRpbmcgdGhlIGN1cnZlIG5hbWUgYW5kIHRoZSBrZXkgZGF0YSwgYW5k
IHlpZWxkcyB0aGUgZ2NyeV9zZXhwX3QKKyAgICAgICAgb2JqZWN0IHRvIHRoZSBuZXcgQ3J5cHRv
S2V5RUMuCisKKyAgICAgICAgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKCkg
Zmlyc3QgY29uc3RydWN0cyBhIFZlY3Rvcjx1aW50OF90PgorICAgICAgICBvYmplY3QgdGhhdCBj
b250YWlucyB0aGUgRUMgcG9pbnQgaW4gdGhlIHVuY29tcHJlc3NlZCBmb3JtYXQuIEl0IHRoZW4K
KyAgICAgICAgcHV0cyB0aGF0IGRhdGEgaW50byBhIG5ld2x5LWNvbnN0cnVjdGVkIHB1YmxpYy1r
ZXkgcy1leHByZXNzaW9uIHRoYXQgaXMKKyAgICAgICAgdGhlbiB1c2VkIHRvIGNvbnN0cnVjdCB0
aGUgbmV3IENyeXB0b0tleUVDIG9iamVjdC4KKworICAgICAgICBDcnlwdG9LZXlFQzo6cGxhdGZv
cm1JbXBvcnRKV0tQcml2YXRlKCkgY29uc3RydWN0cyB0aGUgRUMgcG9pbnQgZGF0YSBqdXN0Cisg
ICAgICAgIHRoZSBzYW1lLCBidXQgaXQgYWxzbyBsYXlzIG91dCB0aGUgcHJpdmF0ZSBrZXkgZmll
bGQgZWxlbWVudCBkYXRhIGludG8KKyAgICAgICAgdGhlIHByaXZhdGUta2V5IHMtZXhwcmVzc2lv
biB0aGF0J3MgdGhlbiBoYW5kZWQgb2ZmIHRvIHRoZSBDcnlwdG9LZXlFQworICAgICAgICBvYmpl
Y3QuCisKKyAgICAgICAgQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3RydWN0
cyBhIG5ldyBFQyBvcGVyYXRpb25zIGNvbnRleHQKKyAgICAgICAgYW5kIHRoZW4gdXNlcyBpdCB0
byByZXRyaWV2ZSB0aGUgcSBwYXJhbWV0ZXIgYXMgYW4gTVBJLiBBIFZlY3Rvcjx1aW50OF90Pgor
ICAgICAgICBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgTVBJIGRhdGEgdGhyb3VnaCB0aGUgZXh0cmFj
dE1QSURhdGEoKSBoZWxwZXIKKyAgICAgICAgZnVuY3Rpb24uCisKKyAgICAgICAgQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cygpIHNpbWlsYXJseSB1c2VzIHRoZSBFQyBvcGVy
YXRpb25zCisgICAgICAgIGNvbnRleHQgdG8gcmV0cmlldmUgdGhlIHEgcGFyYW1ldGVyIGRhdGEs
IHdoaWNoIGl0IHRoZW4gc3BsaXRzIGludG8gdGhlCisgICAgICAgIHggYW5kIHkgZmllbGQgZWxl
bWVudHMgYW5kIEJhc2U2NCBVUkwtZW5jb2RlcyB0aGVtIGludG8gYSBmb3JtIHRoYXQgY2FuCisg
ICAgICAgIGJlIHBsYWNlZCBpbiBhIEpzb25XZWJLZXkuIElmIHRoZSBrZXkgaXMgcHJpdmF0ZSwg
dGhlIGQgcGFyYW1ldGVyIGlzCisgICAgICAgIHJldHJpZXZlZCBpbiB0aGUgc2FtZSBmYXNoaW9u
IGFuZCBhZ2FpbiBCYXNlNjQgVVJMLWVuY29kZWQgYW5kIHN0b3JlZAorICAgICAgICBpbiB0aGUg
SnNvbldlYktleSBvYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIGN1cnJlbnQgb25l
cyBjb3ZlciB0aGlzIHN1ZmZpY2llbnRseSwgYnV0IGFyZSBub3QgeWV0CisgICAgICAgIGVuYWJs
ZWQgZHVlIHRvIG90aGVyIG1pc3NpbmcgcGxhdGZvcm0tc3BlY2lmaWMgU1VCVExFX0NSWVBUTwor
ICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0
b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuY29tcHJlc3NlZFBvaW50U2l6
ZUZvckN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6OnVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNp
emVGb3JDdXJ2ZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0TVBJRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRSYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHVibGljKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMpOgorCiAyMDE3LTA0LTA2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbRGVidWddIEFT
U0VSVCghdGhyb3dTY29wZS5leGNlcHRpb24oKSkgb24gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1zdGF0dXMtd29ya2VyLmh0bWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDZhMDdmNzQwZTM3NTBkYmViYTI4OGE0NjRlZjk1NDMxMjJh
YTY2N2UuLjk3ZjBlMDBhN2UwZGI2NWM2ZjAxNTIyYTkxMzE2MTYzOGE4YzE2NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA0LTA2ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBsZW1lbnQgcmF3IGFu
ZCBKV0sgaW1wb3J0cyBhbmQgZXhwb3J0cyBmb3IgRUMga2V5cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAgQWRkIEhhbmRsZURlbGV0ZXIgc3BlY2l6
YWxpemF0aW9ucyBmb3IgZ2NyeV9jdHhfdCBhbmQgZ2NyeV9tcGlfdCB0eXBlcy4KKworICAgICAg
ICAqIHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oOgorICAgICAgICAoUEFMOjpHQ3J5cHQ6Okhh
bmRsZURlbGV0ZXI8Z2NyeV9jdHhfdD46Om9wZXJhdG9yKCkpOgorICAgICAgICAoUEFMOjpHQ3J5
cHQ6OkhhbmRsZURlbGV0ZXI8Z2NyeV9tcGlfdD46Om9wZXJhdG9yKCkpOgorCiAyMDE3LTA0LTA2
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyMTUwNDYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9nY3J5cHQvSGFuZGxlLmgKaW5kZXggMGQ2NjdmMzVhMTZiMDk1YTgwMzhlNjVhZjMyYzMxOTE1
NTc1YWUyNS4uNWNhZjljMzE1ZWEwYjRhZTg5NThkMGYzY2NlOTkxMTJkY2FlZWRiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaApAQCAtOTEsNiAr
OTEsMTQgQEAgc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jaXBoZXJfaGRfdD4gewogfTsKIAog
dGVtcGxhdGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jdHhfdD4geworICAgIHZvaWQg
b3BlcmF0b3IoKShnY3J5X2N0eF90IGhhbmRsZSkKKyAgICB7CisgICAgICAgIGdjcnlfY3R4X3Jl
bGVhc2UoaGFuZGxlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+CiBzdHJ1Y3QgSGFuZGxlRGVs
ZXRlcjxnY3J5X21hY19oZF90PiB7CiAgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfbWFjX2hkX3Qg
aGFuZGxlKQogICAgIHsKQEAgLTk5LDYgKzEwNywxNCBAQCBzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxn
Y3J5X21hY19oZF90PiB7CiB9OwogCiB0ZW1wbGF0ZTw+CitzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxn
Y3J5X21waV90PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfbXBpX3QgaGFuZGxlKQorICAg
IHsKKyAgICAgICAgZ2NyeV9tcGlfcmVsZWFzZShoYW5kbGUpOworICAgIH0KK307CisKK3RlbXBs
YXRlPD4KIHN0cnVjdCBIYW5kbGVEZWxldGVyPGdjcnlfc2V4cF90PiB7CiAgICAgdm9pZCBvcGVy
YXRvcigpKGdjcnlfc2V4cF90IGhhbmRsZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IGMxMTEyNWQ2YWVhMjhh
MTJkOWQ1YjdhNzA4YWIzOWYxMTBjZTY2N2QuLmFiZjI5NDcwZmYxNDZiMzE2MjQ4MTFmMTc3NGZj
OTRjZGM3N2U4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5RUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5RUNHQ3J5cHQuY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgorI2luY2x1ZGUgIkpzb25XZWJL
ZXkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8v
Z2NyeXB0L0hhbmRsZS5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU1LDYgKzU3LDQ1IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjdXJ2ZU5hbWUoQ3J5cHRvS2V5
RUM6Ok5hbWVkQ3VydmUgY3VydmUpCiAgICAgfQogfQogCitzdGF0aWMgdW5zaWduZWQgdW5jb21w
cmVzc2VkUG9pbnRTaXplRm9yQ3VydmUoQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmUgY3VydmUpCit7
CisgICAgc3dpdGNoIChjdXJ2ZSkgeworICAgIGNhc2UgQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU6
OlAyNTY6CisgICAgICAgIHJldHVybiA2NTsKKyAgICBjYXNlIENyeXB0b0tleUVDOjpOYW1lZEN1
cnZlOjpQMzg0OgorICAgICAgICByZXR1cm4gOTc7CisgICAgfQorfQorCitzdGF0aWMgdW5zaWdu
ZWQgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKENyeXB0b0tleUVDOjpOYW1l
ZEN1cnZlIGN1cnZlKQoreworICAgIHN3aXRjaCAoY3VydmUpIHsKKyAgICBjYXNlIENyeXB0b0tl
eUVDOjpOYW1lZEN1cnZlOjpQMjU2OgorICAgICAgICByZXR1cm4gMzI7CisgICAgY2FzZSBDcnlw
dG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDM4NDoKKyAgICAgICAgcmV0dXJuIDQ4OworICAgIH0KK30K
Kworc3RhdGljIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0TVBJRGF0YShnY3J5X21waV90IG1waSkK
K3sKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwg
bXBpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGRhdGFMZW5ndGgpOworICAgIGVycm9yID0gZ2NyeV9t
cGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIG51bGxw
dHIsIG1waSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICByZXR1cm4gZGF0YTsKK307CisKIENyeXB0b0tleUVDOjp+Q3J5cHRvS2V5RUMoKQog
ewogICAgIGlmIChtX3BsYXRmb3JtS2V5KQpAQCAtOTQsMjUgKzEzNSw2OCBAQCBzdGQ6Om9wdGlv
bmFsPENyeXB0b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlw
dG9BbGdvcml0aG1JZAogICAgIHJldHVybiBDcnlwdG9LZXlQYWlyIHsgV1RGTW92ZShwdWJsaWNL
ZXkpLCBXVEZNb3ZlKHByaXZhdGVLZXkpIH07CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5h
bWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCkK
K1JlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UmF3KENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgVmVjdG9y
PHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGtleURhdGEuc2l6
ZSgpICE9IHVuY29tcHJlc3NlZFBvaW50U2l6ZUZvckN1cnZlKGN1cnZlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfc2V4cF90PiBwbGF0Zm9ybUtleTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X3NleHBfYnVpbGQoJnBsYXRmb3JtS2V5LCBudWxscHRyLCAiKHB1YmxpYy1rZXkoZWNjKGN1
cnZlICVzKShxICViKSkpIiwKKyAgICAgICAgY3VydmVOYW1lKGN1cnZlKSwga2V5RGF0YS5zaXpl
KCksIGtleURhdGEuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gY3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBD
cnlwdG9LZXlUeXBlOjpQdWJsaWMsIHBsYXRmb3JtS2V5LnJlbGVhc2UoKSwgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CiB9CiAKLVJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3Jt
SW1wb3J0SldLUHVibGljKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIE5hbWVkQ3VydmUsIFZl
Y3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNhZ2VC
aXRtYXApCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpX
S1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUg
Y3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90PiYmIHksIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHVuc2lnbmVkIHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUgPSB1bmNv
bXByZXNzZWRGaWVsZEVsZW1lbnRTaXplRm9yQ3VydmUoY3VydmUpOworICAgIGlmICh4LnNpemUo
KSAhPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIHx8IHkuc2l6ZSgpICE9IHVuY29tcHJl
c3NlZEZpZWxkRWxlbWVudFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgLy8gQ29uc3RydWN0IHRoZSBWZWN0b3IgdGhhdCByZXByZXNlbnRz
IHRoZSBFQyBwb2ludCBpbiB1bmNvbXByZXNzZWQgZm9ybWF0LgorICAgIFZlY3Rvcjx1aW50OF90
PiBxOworICAgIHEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxICsgMiAqIHVuY29tcHJlc3NlZEZp
ZWxkRWxlbWVudFNpemUpOworICAgIHEuYXBwZW5kKDB4MDQpOworICAgIHEuYXBwZW5kVmVjdG9y
KHgpOworICAgIHEuYXBwZW5kVmVjdG9yKHkpOworCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X3NleHBfdD4gcGxhdGZvcm1LZXk7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9z
ZXhwX2J1aWxkKCZwbGF0Zm9ybUtleSwgbnVsbHB0ciwgIihwdWJsaWMta2V5KGVjYyhjdXJ2ZSAl
cykocSAlYikpKSIsCisgICAgICAgIGN1cnZlTmFtZShjdXJ2ZSksIHEuc2l6ZSgpLCBxLmRhdGEo
KSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgcmV0dXJuIGNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHVi
bGljLCBwbGF0Zm9ybUtleS5yZWxlYXNlKCksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogfQogCi1S
ZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgTmFtZWRDdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYs
IFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgYm9vbCwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXApCitSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9y
dEpXS1ByaXZhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1
cnZlIGN1cnZlLCBWZWN0b3I8dWludDhfdD4mJiB4LCBWZWN0b3I8dWludDhfdD4mJiB5LCBWZWN0
b3I8dWludDhfdD4mJiBkLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB1bnNpZ25lZCB1bmNvbXByZXNz
ZWRGaWVsZEVsZW1lbnRTaXplID0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZl
KGN1cnZlKTsKKyAgICBpZiAoeC5zaXplKCkgIT0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6
ZSB8fCB5LnNpemUoKSAhPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIHx8IGQuc2l6ZSgp
ICE9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gQ29uc3RydWN0IHRoZSBWZWN0b3IgdGhh
dCByZXByZXNlbnRzIHRoZSBFQyBwb2ludCBpbiB1bmNvbXByZXNzZWQgZm9ybWF0LgorICAgIFZl
Y3Rvcjx1aW50OF90PiBxOworICAgIHEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxICsgMiAqIHVu
Y29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUpOworICAgIHEuYXBwZW5kKDB4MDQpOworICAgIHEu
YXBwZW5kVmVjdG9yKHgpOworICAgIHEuYXBwZW5kVmVjdG9yKHkpOworCisgICAgUEFMOjpHQ3J5
cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gcGxhdGZvcm1LZXk7CisgICAgZ2NyeV9lcnJvcl90IGVy
cm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZwbGF0Zm9ybUtleSwgbnVsbHB0ciwgIihwcml2YXRlLWtl
eShlY2MoY3VydmUgJXMpKHEgJWIpKGQgJWIpKSkiLAorICAgICAgICBjdXJ2ZU5hbWUoY3VydmUp
LCBxLnNpemUoKSwgcS5kYXRhKCksIGQuc2l6ZSgpLCBkLmRhdGEoKSk7CisgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGNyZWF0
ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgcGxhdGZvcm1LZXku
cmVsZWFzZSgpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAogUmVmUHRyPENyeXB0b0tleUVD
PiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIsIE5hbWVkQ3VydmUsIFZlY3Rvcjx1aW50OF90PiYmLCBib29sLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCkKQEAgLTEzMSwxNCArMjE1LDU3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwKIAogVmVj
dG9yPHVpbnQ4X3Q+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFJhdygpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY3R4X3Q+
IGNvbnRleHQ7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfZWNfbmV3KCZjb250
ZXh0LCBtX3BsYXRmb3JtS2V5LCBudWxscHRyKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KIAotICAgIHJldHVybiB7IH07CisgICAgUEFMOjpHQ3J5cHQ6
OkhhbmRsZTxnY3J5X21waV90PiBxTVBJKGdjcnlfbXBpX2VjX2dldF9tcGkoInEiLCBjb250ZXh0
LCAwKSk7CisgICAgaWYgKCFxTVBJKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHEgPSBleHRyYWN0TVBJRGF0YShxTVBJKTsKKyAgICBpZiAocS5zaXplKCkgIT0g
dW5jb21wcmVzc2VkUG9pbnRTaXplRm9yQ3VydmUobV9jdXJ2ZSkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gcTsKIH0KIAotdm9pZCBDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRG
aWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmKSBjb25zdAordm9pZCBDcnlwdG9LZXlFQzo6cGxhdGZv
cm1BZGRGaWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmIGp3aykgY29uc3QKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jdHhfdD4gY29udGV4dDsK
KyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9lY19uZXcoJmNvbnRleHQsIG1fcGxh
dGZvcm1LZXksIG51bGxwdHIpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplID0gdW5j
b21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKG1fY3VydmUpOworCisgICAgUEFMOjpH
Q3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBxTVBJKGdjcnlfbXBpX2VjX2dldF9tcGkoInEiLCBj
b250ZXh0LCAwKSk7CisgICAgaWYgKHFNUEkpIHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHEg
PSBleHRyYWN0TVBJRGF0YShxTVBJKTsKKyAgICAgICAgaWYgKHEuc2l6ZSgpID09IHVuY29tcHJl
c3NlZFBvaW50U2l6ZUZvckN1cnZlKG1fY3VydmUpKSB7CisgICAgICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gYTsKKyAgICAgICAgICAgIGEuYXBwZW5kKHEuZGF0YSgpICsgMSwgdW5jb21wcmVzc2Vk
RmllbGRFbGVtZW50U2l6ZSk7CisgICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVuY29kZShh
KTsKKworICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGI7CisgICAgICAgICAgICBiLmFwcGVu
ZChxLmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNz
ZWRGaWVsZEVsZW1lbnRTaXplKTsKKyAgICAgICAgICAgIGp3ay55ID0gYmFzZTY0VVJMRW5jb2Rl
KGIpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGUoKSA9PSBUeXBlOjpQcml2YXRl
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gZE1QSShnY3J5X21w
aV9lY19nZXRfbXBpKCJkIiwgY29udGV4dCwgMCkpOworICAgICAgICBpZiAoZE1QSSkgeworICAg
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGQgPSBleHRyYWN0TVBJRGF0YShkTVBJKTsKKyAgICAg
ICAgICAgIGlmIChkLnNpemUoKSA9PSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKQorICAg
ICAgICAgICAgICAgIGp3ay5kID0gYmFzZTY0VVJMRW5jb2RlKGQpOworICAgICAgICB9CisgICAg
fQogfQogCiBWZWN0b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0U3BraSgp
IGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>