<?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>170271</bug_id>
          
          <creation_ts>2017-03-29 23:48:09 -0700</creation_ts>
          <short_desc>[GCrypt] Implement AES_GCM support</short_desc>
          <delta_ts>2017-04-03 14:04:17 -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>
          <dependson>170269</dependson>
          <blocked>133122</blocked>
    
    <blocked>170274</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1292713</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-29 23:48:09 -0700</bug_when>
    <thetext>[GCrypt] Implement AES_GCM support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292715</commentid>
    <comment_count>1</comment_count>
      <attachid>305840</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-29 23:51:24 -0700</bug_when>
    <thetext>Created attachment 305840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292717</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-29 23:52:25 -0700</bug_when>
    <thetext>Attachment 305840 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:164:  CryptoAlgorithmAES_GCM::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:190:  CryptoAlgorithmAES_GCM::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gcrypt/Handle.h:86:  Missing space before {  [whitespace/braces] [5]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292729</commentid>
    <comment_count>3</comment_count>
      <attachid>305845</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-30 00:21:57 -0700</bug_when>
    <thetext>Created attachment 305845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292730</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-30 00:24:15 -0700</bug_when>
    <thetext>Attachment 305845 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:166:  CryptoAlgorithmAES_GCM::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:192:  CryptoAlgorithmAES_GCM::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292738</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-30 00:43:45 -0700</bug_when>
    <thetext>Depends on the Utilities.h header that&apos;s being added in bug #170269.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293107</commentid>
    <comment_count>6</comment_count>
      <attachid>305949</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-03-30 23:39:57 -0700</bug_when>
    <thetext>Created attachment 305949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293108</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-30 23:41:44 -0700</bug_when>
    <thetext>Attachment 305949 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:166:  CryptoAlgorithmAES_GCM::platformEncrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:192:  CryptoAlgorithmAES_GCM::platformDecrypt is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293502</commentid>
    <comment_count>8</comment_count>
      <attachid>305949</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-01 17:57:48 -0700</bug_when>
    <thetext>Comment on attachment 305949
Patch

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

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:39
&gt; +#include &lt;pal/crypto/gcrypt/Handle.h&gt;
&gt; +#include &lt;pal/crypto/gcrypt/Utilities.h&gt;

...

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:46
&gt; +    auto algorithm = PAL::GCrypt::aesAlgorithmForKeySize(key.size() * 8);

Ugh, there&apos;s no good way to avoid having to write PAL::GCrypt everywhere, is there? Because a simple &quot;using PAL::GCrypt&quot; is not going to work, right? This is unfortunate.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:51
&gt; +    gcry_error_t error = gcry_cipher_open(&amp;handle, *algorithm, GCRY_CIPHER_MODE_GCM, 0);

We should probably pass GCRY_CIPHER_SECURE instead of 0 to ensure the key doesn&apos;t get paged to disk...?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:98
&gt; +        output.appendVector(tag);

It feels confusing/fragile, but I guess it&apos;s hard to change the cross-platform interface for this? Or is this how the data is expected to be received by the JS API?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:101
&gt; +    return WTFMove(output);

Remove WTFMove.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:158
&gt; +        size_t offset = cipherText.size() - tagLength;

I&apos;d declare this up above gcry_cipher_decrypt() so that you can use it on the line following that too.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:163
&gt; +    return WTFMove(output);

No WTFMove.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:177
&gt; +                    [callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext&amp; context) {

Don&apos;t capture callback.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:185
&gt; +                [output = WTFMove(*output), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext&amp; context) mutable {

Don&apos;t capture exceptionCallback.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:203
&gt; +                    [callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext&amp; context) {

Ditto.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:211
&gt; +                [output = WTFMove(*output), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext&amp; context) mutable {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293587</commentid>
    <comment_count>9</comment_count>
      <attachid>305949</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-02 23:57:34 -0700</bug_when>
    <thetext>Comment on attachment 305949
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:46
&gt;&gt; +    auto algorithm = PAL::GCrypt::aesAlgorithmForKeySize(key.size() * 8);
&gt; 
&gt; Ugh, there&apos;s no good way to avoid having to write PAL::GCrypt everywhere, is there? Because a simple &quot;using PAL::GCrypt&quot; is not going to work, right? This is unfortunate.

I think it would work, but I would revisit this later, after the majority of changes lands.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:51
&gt;&gt; +    gcry_error_t error = gcry_cipher_open(&amp;handle, *algorithm, GCRY_CIPHER_MODE_GCM, 0);
&gt; 
&gt; We should probably pass GCRY_CIPHER_SECURE instead of 0 to ensure the key doesn&apos;t get paged to disk...?

OK.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:98
&gt;&gt; +        output.appendVector(tag);
&gt; 
&gt; It feels confusing/fragile, but I guess it&apos;s hard to change the cross-platform interface for this? Or is this how the data is expected to be received by the JS API?

Confusing/fragile how? Change it how? As it stands, the callback object in the custom JS bindings works with a Vector&lt;uint8_t&gt; object whose contents are then copied into an ArrayBuffer.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:158
&gt;&gt; +        size_t offset = cipherText.size() - tagLength;
&gt; 
&gt; I&apos;d declare this up above gcry_cipher_decrypt() so that you can use it on the line following that too.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293596</commentid>
    <comment_count>10</comment_count>
      <attachid>306065</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-03 00:38:52 -0700</bug_when>
    <thetext>Created attachment 306065
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293696</commentid>
    <comment_count>11</comment_count>
      <attachid>306065</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-03 11:12:56 -0700</bug_when>
    <thetext>Comment on attachment 306065
Patch for landing

Clearing flags on attachment: 306065

Committed r214822: &lt;http://trac.webkit.org/changeset/214822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293697</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-03 11:13:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293726</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-04-03 11:58:21 -0700</bug_when>
    <thetext>I think this broke the GTK EWS build? https://webkit-queues.webkit.org/results/3466261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293790</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-03 14:04:17 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #13)
&gt; I think this broke the GTK EWS build?
&gt; https://webkit-queues.webkit.org/results/3466261

Committed r214837: &lt;http://trac.webkit.org/changeset/214837&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305840</attachid>
            <date>2017-03-29 23:51:24 -0700</date>
            <delta_ts>2017-03-30 00:21:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170271-20170330085123.patch</filename>
            <type>text/plain</type>
            <size>11156</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJlYjc1YTI5MDk1N2Y4
OTY1ODEyMjI0YzE2ZmMxNzcxMDE3MDZlNS4uZTJkMzQyZGFhMGU1MDhiNDljZjQzMTZkMTQyY2M3
ODU3NDRkNDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTAzLTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQUVTX0dDTSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRm
b3Jte0VuY3J5cHQsRGVjcnlwdH0KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgY29uZmlndXJh
dGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LiBUaGlzIGlzIGRvbmUKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgZ2NyeV9jaXBoZXJfKiBBUElzIGZvciB0aGUgQUVTIGFsZ29yaXRobSB0aGF0J3MK
KyAgICAgICAgZGVkdWN0ZWQgYXBwcm9wcmlhdGVseSBmcm9tIHRoZSBrZXkgc2l6ZSBhbmQgdGhl
IEdDTSBjaXBoZXIgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY3VycmVudCBvbmVz
IGNvdmVyIHRoaXMgc3VmZmljaWVudGx5LCBidXQgYXJlIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxl
ZCBkdWUgdG8gb3RoZXIgbWlzc2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBTVUJUTEVfQ1JZUFRPCisg
ICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisKIDIwMTct
MDMtMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNaWdyYXRlIHRvIGtDVEZvbnRDU1NXaWR0aEF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggMGQ1OTRkMWNhMjkzNWRmODYxNjIzYzRiNTkwNDlkYTIyODUxYWQ2Yy4uYTllNzMwZjAwNzA5
Njc0NGQwMmVlMWJjNDhjMzRiZGMwYzNiZjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMTYgQEAKIDIwMTctMDMtMjkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBBRVNfR0NNIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDI3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5
cHQvSGFuZGxlLmg6CisgICAgICAgIChQQUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X2Np
cGhlcl9oZF90Pjo6b3BlcmF0b3IoKSk6IFNwZWNpYWxpemUKKyAgICAgICAgdGhlIEhhbmRsZURl
bGV0ZXI8PiB0ZW1wbGF0ZSBmb3IgdGhlIGdjcnlfY2lwaGVyX2hkX3QgdHlwZS4KKworMjAxNy0w
My0yOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dD
cnlwdF0gQWRkIGEgSGFuZGxlPD4gY2xhc3MgdG8gaGVscCB3aXRoIEdDcnlwdCBvYmplY3QgbGlm
ZXRpbWUgY29udHJvbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcwMjM4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2djcnlwdC9IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9I
YW5kbGUuaAppbmRleCA5MDYxZjI4YjU1MjE1Nzg3ODEzNTVmYjk5MWRjZDIzYWY2OGNkODI2Li40
MzRlODhkMzZkYzA2YmE1ODM1YTYxYzNhZWQ4OTE4Mjk5MDcyNzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCkBAIC04Myw2ICs4MywxNCBAQCBw
cml2YXRlOgogfTsKIAogdGVtcGxhdGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jaXBo
ZXJfaGRfdD57CisgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfY2lwaGVyX2hkX3QgaGFuZGxlKQor
ICAgIHsKKyAgICAgICAgZ2NyeV9jaXBoZXJfY2xvc2UoaGFuZGxlKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTw+CiBzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxnY3J5X21hY19oZF90PiB7CiAgICAgdm9p
ZCBvcGVyYXRvcigpKGdjcnlfbWFjX2hkX3QgaGFuZGxlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCmluZGV4IGJjNmZlMzgxOTA1OTAxODJmNTA5ZTg4Yzk1NGVkYTBmZGMzZmYxZTQu
LjkzZjQ2YzA2Y2U1ZmU4NWMwMGYwNDgwYTNkNGMxOTUyOTNiZDMwOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNf
R0NNR0NyeXB0LmNwcApAQCAtMjgsMTkgKzI4LDE4OSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCIKKyNpbmNs
dWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGls
aXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNh
bGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRF
bmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5
U2l6ZShrZXkuc2l6ZSgpICogOCk7CisgICAgaWYgKCFhbGdvcml0aG0pCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hk
X3Q+IGhhbmRsZTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZo
YW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKKyAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGVycm9y
ID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7Cisg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXpl
KCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgfQorCisgICAgaWYgKCFhZGRpdGlvbmFsRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZXJy
b3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRh
KCksIGFkZGl0aW9uYWxEYXRhLnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90
PiBvdXRwdXQocGxhaW5UZXh0LnNpemUoKSk7CisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNy
eXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgcGxhaW5UZXh0LmRhdGEo
KSwgcGxhaW5UZXh0LnNpemUoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAodGFnTGVuZ3RoKSB7CisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB0YWcodGFnTGVuZ3RoKTsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhl
cl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0YSgpLCB0YWcuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9
CisKKyAgICAgICAgb3V0cHV0LmFwcGVuZFZlY3Rvcih0YWcpOworICAgIH0KKworICAgIHJldHVy
biBXVEZNb3ZlKG91dHB1dCk7Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCit7CisgICAg
YXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXku
c2l6ZSgpICogOCk7CisgICAgaWYgKCFhbGdvcml0aG0pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRs
ZTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICph
bGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9j
aXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CisgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBlcnJv
ciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOworICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgaWYgKCFhZGRpdGlvbmFsRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZXJyb3IgPSBnY3J5
X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0
aW9uYWxEYXRhLnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGVycm9yID0g
Z2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQo
Y2lwaGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGgpOworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJf
ZGVjcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIGNpcGhlclRleHQu
ZGF0YSgpLCBjaXBoZXJUZXh0LnNpemUoKSAtIHRhZ0xlbmd0aCk7CisgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAodGFnTGVu
Z3RoKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWcodGFnTGVuZ3RoKTsKKyAgICAgICAg
ZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0YSgpLCB0YWdMZW5ndGgp
OworICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gY2lwaGVyVGV4dC5z
aXplKCkgLSB0YWdMZW5ndGg7CisgICAgICAgIGlmIChjb25zdGFudFRpbWVNZW1jbXAodGFnLmRh
dGEoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBvZmZzZXQsIHRhZ0xlbmd0aCkpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKG91dHB1
dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5
PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJh
Y2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpCit2b2lkIENyeXB0b0Fs
Z29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBb
cGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgcGxh
aW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
IGF1dG8mIGFlc0tleSA9IGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5LmdldCgpKTsKKworICAg
ICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGFlc0tleS5rZXkoKSwgYWVzUGFy
YW1ldGVycy5pdlZlY3RvcigpLCBXVEZNb3ZlKHBsYWluVGV4dCksIGFlc1BhcmFtZXRlcnMuYWRk
aXRpb25hbERhdGFWZWN0b3IoKSwgYWVzUGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkg
LyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybURlY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGNpcGhlclRleHQsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAg
ICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwg
Y2lwaGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgYWVzUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oKnBhcmFtZXRlcnMpOworICAgICAg
ICAgICAgYXV0byYgYWVzS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkuZ2V0KCkpOwor
CisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQoYWVzS2V5LmtleSgpLCBh
ZXNQYXJhbWV0ZXJzLml2VmVjdG9yKCksIFdURk1vdmUoY2lwaGVyVGV4dCksIGFlc1BhcmFtZXRl
cnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgYWVzUGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVf
b3IoMCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQpKTsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305845</attachid>
            <date>2017-03-30 00:21:57 -0700</date>
            <delta_ts>2017-03-30 23:39:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170271-20170330092155.patch</filename>
            <type>text/plain</type>
            <size>11402</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJlYjc1YTI5MDk1N2Y4
OTY1ODEyMjI0YzE2ZmMxNzcxMDE3MDZlNS4uN2ZkNTU1YWI5N2VhOWNjODE3YzRjZDRmYzdjNzFj
N2VkOThjMWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTAzLTMwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQUVTX0dDTSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRm
b3Jte0VuY3J5cHQsRGVjcnlwdH0KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgY29uZmlndXJh
dGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LiBUaGlzIGlzIGRvbmUKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgZ2NyeV9jaXBoZXJfKiBBUElzIGZvciB0aGUgQUVTIGFsZ29yaXRobSB0aGF0J3MK
KyAgICAgICAgZGVkdWN0ZWQgYXBwcm9wcmlhdGVseSBmcm9tIHRoZSBrZXkgc2l6ZSBhbmQgdGhl
IEdDTSBjaXBoZXIgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY3VycmVudCBvbmVz
IGNvdmVyIHRoaXMgc3VmZmljaWVudGx5LCBidXQgYXJlIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxl
ZCBkdWUgdG8gb3RoZXIgbWlzc2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBTVUJUTEVfQ1JZUFRPCisg
ICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisKIDIwMTct
MDMtMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNaWdyYXRlIHRvIGtDVEZvbnRDU1NXaWR0aEF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggMGQ1OTRkMWNhMjkzNWRmODYxNjIzYzRiNTkwNDlkYTIyODUxYWQ2Yy4uMzgxYjMzMzdiNTE0
NWQ3M2Q3M2IzOTZjMDIzZWFkNTI3NzkxYTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTctMDMtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHQ3J5cHRdIEltcGxlbWVudCBBRVNfR0NNIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDI3MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5
cHQvSGFuZGxlLmg6CisgICAgICAgIChQQUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X2Np
cGhlcl9oZF90Pjo6b3BlcmF0b3IoKSk6IFNwZWNpYWxpemUKKyAgICAgICAgdGhlIEhhbmRsZURl
bGV0ZXI8PiB0ZW1wbGF0ZSBmb3IgdGhlIGdjcnlfY2lwaGVyX2hkX3QgdHlwZS4KKwogMjAxNy0w
My0yOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dD
cnlwdF0gQWRkIGEgSGFuZGxlPD4gY2xhc3MgdG8gaGVscCB3aXRoIEdDcnlwdCBvYmplY3QgbGlm
ZXRpbWUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z2NyeXB0L0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hh
bmRsZS5oCmluZGV4IDkwNjFmMjhiNTUyMTU3ODc4MTM1NWZiOTkxZGNkMjNhZjY4Y2Q4MjYuLmEx
NWIwOTlmNDQ1NzhlNzA0ZDlhNjFlOGZkOTAwZmM2ZTg0YTQ4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgKQEAgLTgzLDYgKzgzLDE0IEBAIHBy
aXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTw+CitzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxnY3J5X2NpcGhl
cl9oZF90PiB7CisgICAgdm9pZCBvcGVyYXRvcigpKGdjcnlfY2lwaGVyX2hkX3QgaGFuZGxlKQor
ICAgIHsKKyAgICAgICAgZ2NyeV9jaXBoZXJfY2xvc2UoaGFuZGxlKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTw+CiBzdHJ1Y3QgSGFuZGxlRGVsZXRlcjxnY3J5X21hY19oZF90PiB7CiAgICAgdm9p
ZCBvcGVyYXRvcigpKGdjcnlfbWFjX2hkX3QgaGFuZGxlKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCmluZGV4IGJjNmZlMzgxOTA1OTAxODJmNTA5ZTg4Yzk1NGVkYTBmZGMzZmYxZTQu
LjYwODZlMzJkNzhmOWExZGQ0NTYyOGMxMzU2YWJlY2MyZjcyZDBjYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNf
R0NNR0NyeXB0LmNwcApAQCAtMSw1ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IE1l
dHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTkgKzMwLDE4OSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNH
Y21QYXJhbXMuaCIKKyNpbmNsdWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+
CisjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3Rm
L0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVp
bnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6
YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CisgICAgaWYgKCFhbGdvcml0
aG0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NN
LCAwKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEo
KSwga2V5LnNpemUoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwg
aXYuZGF0YSgpLCBpdi5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKCFhZGRpdGlvbmFsRGF0YS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBh
ZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUoKSk7CisgICAgICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKKyAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQocGxhaW5UZXh0LnNpemUoKSk7CisgICAgZXJyb3Ig
PSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUo
KSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CisgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAodGFnTGVu
Z3RoKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWcodGFnTGVuZ3RoKTsKKyAgICAgICAg
ZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0YSgpLCB0YWcuc2l6ZSgp
KTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgb3V0cHV0LmFwcGVuZFZlY3Rvcih0YWcpOwor
ICAgIH0KKworICAgIHJldHVybiBXVEZNb3ZlKG91dHB1dCk7Cit9CisKK3N0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY2lw
aGVyVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWludDhfdCB0
YWdMZW5ndGgpCit7CisgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3Jp
dGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CisgICAgaWYgKCFhbGdvcml0aG0pCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
Y2lwaGVyX2hkX3Q+IGhhbmRsZTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhl
cl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKKyAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNp
emUoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwgaXYuZGF0YSgp
LCBpdi5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgaWYgKCFhZGRpdGlvbmFsRGF0YS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFs
RGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAh
PSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKKyAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFZlY3Rv
cjx1aW50OF90PiBvdXRwdXQoY2lwaGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGgpOworICAgIGVy
cm9yID0gZ2NyeV9jaXBoZXJfZGVjcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5z
aXplKCksIGNpcGhlclRleHQuZGF0YSgpLCBjaXBoZXJUZXh0LnNpemUoKSAtIHRhZ0xlbmd0aCk7
CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
CisKKyAgICBpZiAodGFnTGVuZ3RoKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWcodGFn
TGVuZ3RoKTsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcu
ZGF0YSgpLCB0YWdMZW5ndGgpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gY2lwaGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGg7CisgICAgICAgIGlmIChjb25zdGFu
dFRpbWVNZW1jbXAodGFnLmRhdGEoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBvZmZzZXQsIHRhZ0xl
bmd0aCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJl
dHVybiBXVEZNb3ZlKG91dHB1dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6
cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1
ZSYpCit2b2lkIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRp
c3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9
IFdURk1vdmUoa2V5KSwgcGxhaW5UZXh0ID0gV1RGTW92ZShwbGFpblRleHQpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8mIGFlc1Bh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KCpwYXJhbWV0
ZXJzKTsKKyAgICAgICAgICAgIGF1dG8mIGFlc0tleSA9IGRvd25jYXN0PENyeXB0b0tleUFFUz4o
a2V5LmdldCgpKTsKKworICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRFbmNyeXB0KGFl
c0tleS5rZXkoKSwgYWVzUGFyYW1ldGVycy5pdlZlY3RvcigpLCBXVEZNb3ZlKHBsYWluVGV4dCks
IGFlc1BhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgYWVzUGFyYW1ldGVycy50YWdM
ZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3Zl
KCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShv
dXRwdXQpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfR0NN
OjpwbGF0Zm9ybURlY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYm
IGNpcGhlclRleHQsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtl
eSA9IFdURk1vdmUoa2V5KSwgY2lwaGVyVGV4dCA9IFdURk1vdmUoY2lwaGVyVGV4dCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byYg
YWVzUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oKnBh
cmFtZXRlcnMpOworICAgICAgICAgICAgYXV0byYgYWVzS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
QUVTPihrZXkuZ2V0KCkpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5
cHQoYWVzS2V5LmtleSgpLCBhZXNQYXJhbWV0ZXJzLml2VmVjdG9yKCksIFdURk1vdmUoY2lwaGVy
VGV4dCksIGFlc1BhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgYWVzUGFyYW1ldGVy
cy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7
CisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBX
VEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShvdXRwdXQpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305949</attachid>
            <date>2017-03-30 23:39:57 -0700</date>
            <delta_ts>2017-04-03 00:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170271-20170331083956.patch</filename>
            <type>text/plain</type>
            <size>11466</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDcxMTcwZjA1MGE1YTA5
Y2QzOTUzMGU2NGZmZWNiMTFjNDdkYWNkYi4uMjBhMTNlYzk1NWJmNDIyYTY5ODExZDllMjhlNzFl
OTJjYzAzNjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDE3LTAzLTMwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQUVTX0dDTSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRm
b3Jte0VuY3J5cHQsRGVjcnlwdH0KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgY29uZmlndXJh
dGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LiBUaGlzIGlzIGRvbmUKKyAgICAgICAgYnkgbGV2ZXJh
Z2luZyB0aGUgZ2NyeV9jaXBoZXJfKiBBUElzIGZvciB0aGUgQUVTIGFsZ29yaXRobSB0aGF0J3MK
KyAgICAgICAgZGVkdWN0ZWQgYXBwcm9wcmlhdGVseSBmcm9tIHRoZSBrZXkgc2l6ZSBhbmQgdGhl
IEdDTSBjaXBoZXIgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY3VycmVudCBvbmVz
IGNvdmVyIHRoaXMgc3VmZmljaWVudGx5LCBidXQgYXJlIG5vdCB5ZXQKKyAgICAgICAgZW5hYmxl
ZCBkdWUgdG8gb3RoZXIgbWlzc2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBTVUJUTEVfQ1JZUFRPCisg
ICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisKKzIwMTct
MDMtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFVu
cmV2aWV3ZWQgR1RLKyBidWlsZCBmaXguIEFkZCBtaXNzaW5nIEFOR0xFIGJ1aWxkIHRhcmdldHMK
ICAgICAgICAgdG8gdGhlIGJ1aWxkLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBkMDY0OGJiZjUz
YTVjNzEyNjYzMzQ1YzEwMGExMDZjNThkNTA2YTUxLi4wMmY1YWJjNzI2MGRiMzgzZTgzOTBmYWFm
MTIyZjU5NzU0ZjQ3YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAx
Ny0wMy0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKKyAgICAgICAg
W0dDcnlwdF0gSW1wbGVtZW50IEFFU19HQ00gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaDoK
KyAgICAgICAgKFBBTDo6R0NyeXB0OjpIYW5kbGVEZWxldGVyPGdjcnlfY2lwaGVyX2hkX3Q+Ojpv
cGVyYXRvcigpKTogU3BlY2lhbGl6ZQorICAgICAgICB0aGUgSGFuZGxlRGVsZXRlcjw+IHRlbXBs
YXRlIGZvciB0aGUgZ2NyeV9jaXBoZXJfaGRfdCB0eXBlLgorCisyMDE3LTAzLTMwICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR0NyeXB0XSBBZGQgdGhl
IFV0aWxpdGllcy5oIGhlYWRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMjY5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y3J5cHRvL2djcnlwdC9IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dj
cnlwdC9IYW5kbGUuaAppbmRleCA5MDYxZjI4YjU1MjE1Nzg3ODEzNTVmYjk5MWRjZDIzYWY2OGNk
ODI2Li5hMTViMDk5ZjQ0NTc4ZTcwNGQ5YTYxZThmZDkwMGZjNmU4NGE0OGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCkBAIC04Myw2ICs4Mywx
NCBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2Ny
eV9jaXBoZXJfaGRfdD4geworICAgIHZvaWQgb3BlcmF0b3IoKShnY3J5X2NpcGhlcl9oZF90IGhh
bmRsZSkKKyAgICB7CisgICAgICAgIGdjcnlfY2lwaGVyX2Nsb3NlKGhhbmRsZSk7CisgICAgfQor
fTsKKwordGVtcGxhdGU8Pgogc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9tYWNfaGRfdD4gewog
ICAgIHZvaWQgb3BlcmF0b3IoKShnY3J5X21hY19oZF90IGhhbmRsZSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfR0NNR0NyeXB0LmNwcAppbmRleCBiYzZmZTM4MTkwNTkwMTgyZjUwOWU4OGM5NTRlZGEwZmRj
M2ZmMWU0Li42MDg2ZTMyZDc4ZjlhMWRkNDU2MjhjMTM1NmFiZWNjMmY3MmQwY2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01H
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTUdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxp
YSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE5ICszMCwxODkg
QEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtQWVzR2NtUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hh
bmRsZS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgorI2luY2x1
ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZl
Y3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0
aCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpH
Q3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOworICAgIGlmICgh
YWxnb3JpdGhtKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgUEFMOjpHQ3J5
cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CisgICAgZ2NyeV9lcnJvcl90IGVy
cm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9N
T0RFX0dDTSwgMCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtl
eS5kYXRhKCksIGtleS5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRpdiho
YW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGlmICghYWRkaXRpb25hbERhdGEu
aXNFbXB0eSgpKSB7CisgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfYXV0aGVudGljYXRlKGhh
bmRsZSwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5zaXplKCkpOworICAg
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRs
ZSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KHBsYWluVGV4dC5zaXplKCkpOworICAg
IGVycm9yID0gZ2NyeV9jaXBoZXJfZW5jcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1
dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOworICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYg
KHRhZ0xlbmd0aCkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4gdGFnKHRhZ0xlbmd0aCk7Cisg
ICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhhbmRsZSwgdGFnLmRhdGEoKSwgdGFn
LnNpemUoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3Io
dGFnKTsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGTW92ZShvdXRwdXQpOworfQorCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90
PiYmIGNpcGhlclRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVp
bnQ4X3QgdGFnTGVuZ3RoKQoreworICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFl
c0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOworICAgIGlmICghYWxnb3JpdGht
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRs
ZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2Ny
eV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0dDTSwg
MCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5kYXRhKCks
IGtleS5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAg
ICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRpdihoYW5kbGUsIGl2
LmRhdGEoKSwgaXYuc2l6ZSgpKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGlmICghYWRkaXRpb25hbERhdGEuaXNFbXB0eSgp
KSB7CisgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfYXV0aGVudGljYXRlKGhhbmRsZSwgYWRk
aXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5zaXplKCkpOworICAgICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CisgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KGNpcGhlclRleHQuc2l6ZSgpIC0gdGFnTGVuZ3RoKTsK
KyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2RlY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBv
dXRwdXQuc2l6ZSgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVyVGV4dC5zaXplKCkgLSB0YWdM
ZW5ndGgpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorCisgICAgaWYgKHRhZ0xlbmd0aCkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4g
dGFnKHRhZ0xlbmd0aCk7CisgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhhbmRs
ZSwgdGFnLmRhdGEoKSwgdGFnTGVuZ3RoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG9mZnNldCA9IGNpcGhlclRleHQuc2l6ZSgpIC0gdGFnTGVuZ3RoOworICAgICAgICBpZiAo
Y29uc3RhbnRUaW1lTWVtY21wKHRhZy5kYXRhKCksIGNpcGhlclRleHQuZGF0YSgpICsgb2Zmc2V0
LCB0YWdMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICByZXR1cm4gV1RGTW92ZShvdXRwdXQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUFF
U19HQ006OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNh
bGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrUXVldWUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdURk1vdmUocGxhaW5UZXh0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRv
JiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPigq
cGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxDcnlwdG9L
ZXlBRVM+KGtleS5nZXQoKSk7CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5j
cnlwdChhZXNLZXkua2V5KCksIGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKSwgV1RGTW92ZShwbGFp
blRleHQpLCBhZXNQYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIGFlc1BhcmFtZXRl
cnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkg
eworICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAg
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0g
V1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUob3V0cHV0KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBjaXBoZXJUZXh0LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdv
cmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGNpcGhlclRleHQgPSBXVEZNb3ZlKGNpcGhlclRleHQp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGF1dG8mIGFlc1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJh
bXM+KCpwYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIGF1dG8mIGFlc0tleSA9IGRvd25jYXN0PENy
eXB0b0tleUFFUz4oa2V5LmdldCgpKTsKKworICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5
cHREZWNyeXB0KGFlc0tleS5rZXkoKSwgYWVzUGFyYW1ldGVycy5pdlZlY3RvcigpLCBXVEZNb3Zl
KGNpcGhlclRleHQpLCBhZXNQYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIGFlc1Bh
cmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CisgICAgICAgICAgICBpZiAoIW91
dHB1dCkgeworICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAg
ICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0
cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUob3V0cHV0KSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306065</attachid>
            <date>2017-04-03 00:38:52 -0700</date>
            <delta_ts>2017-04-03 00:38:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170271-20170403093851.patch</filename>
            <type>text/plain</type>
            <size>11732</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlmYjk4NWYxNTNhM2M1
OWFkNmI3ZGRkMWM3MTRmNzBjMzJhYzVlZC4uNzdjMTY5OWZiZTdjMjJhMzdmODY2NTc4YzQxOWQ2
OGVhMzk1MzljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA0LTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBJbXBs
ZW1lbnQgQUVTX0dDTSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFu
emFyby4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBs
YXRmb3Jte0VuY3J5cHQsRGVjcnlwdH0KKyAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgY29uZmln
dXJhdGlvbnMgdGhhdCB1c2UgbGliZ2NyeXB0LiBUaGlzIGlzIGRvbmUKKyAgICAgICAgYnkgbGV2
ZXJhZ2luZyB0aGUgZ2NyeV9jaXBoZXJfKiBBUElzIGZvciB0aGUgQUVTIGFsZ29yaXRobSB0aGF0
J3MKKyAgICAgICAgZGVkdWN0ZWQgYXBwcm9wcmlhdGVseSBmcm9tIHRoZSBrZXkgc2l6ZSBhbmQg
dGhlIEdDTSBjaXBoZXIgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY3VycmVudCBv
bmVzIGNvdmVyIHRoaXMgc3VmZmljaWVudGx5LCBidXQgYXJlIG5vdCB5ZXQKKyAgICAgICAgZW5h
YmxlZCBkdWUgdG8gb3RoZXIgbWlzc2luZyBwbGF0Zm9ybS1zcGVjaWZpYyBTVUJUTEVfQ1JZUFRP
CisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRF
bmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdCk6CisKIDIw
MTctMDQtMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbGQgZml4IGZvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggZDA2NDhiYmY1M2E1YzcxMjY2MzM0
NWMxMDBhMTA2YzU4ZDUwNmE1MS4uNzY3MWRkYzIzN2Y1YjkwMjZlMmQ2YTI1MDBkMTlhYTcxZDBi
ZjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDQtMDMgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIElt
cGxlbWVudCBBRVNfR0NNIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0
YW56YXJvLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg6CisgICAgICAg
IChQQUw6OkdDcnlwdDo6SGFuZGxlRGVsZXRlcjxnY3J5X2NpcGhlcl9oZF90Pjo6b3BlcmF0b3Io
KSk6IFNwZWNpYWxpemUKKyAgICAgICAgdGhlIEhhbmRsZURlbGV0ZXI8PiB0ZW1wbGF0ZSBmb3Ig
dGhlIGdjcnlfY2lwaGVyX2hkX3QgdHlwZS4KKwogMjAxNy0wMy0zMCAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dDcnlwdF0gQWRkIHRoZSBVdGlsaXRp
ZXMuaCBoZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dj
cnlwdC9IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9IYW5k
bGUuaAppbmRleCA5MDYxZjI4YjU1MjE1Nzg3ODEzNTVmYjk5MWRjZDIzYWY2OGNkODI2Li5hMTVi
MDk5ZjQ0NTc4ZTcwNGQ5YTYxZThmZDkwMGZjNmU4NGE0OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oCkBAIC04Myw2ICs4MywxNCBAQCBwcml2
YXRlOgogfTsKIAogdGVtcGxhdGU8Pgorc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9jaXBoZXJf
aGRfdD4geworICAgIHZvaWQgb3BlcmF0b3IoKShnY3J5X2NpcGhlcl9oZF90IGhhbmRsZSkKKyAg
ICB7CisgICAgICAgIGdjcnlfY2lwaGVyX2Nsb3NlKGhhbmRsZSk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8Pgogc3RydWN0IEhhbmRsZURlbGV0ZXI8Z2NyeV9tYWNfaGRfdD4gewogICAgIHZvaWQg
b3BlcmF0b3IoKShnY3J5X21hY19oZF90IGhhbmRsZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0Ny
eXB0LmNwcAppbmRleCBiYzZmZTM4MTkwNTkwMTgyZjUwOWU4OGM5NTRlZGEwZmRjM2ZmMWU0Li5h
ZTlhMjliOTQwOGZhNmJiY2YwYjg5OTBhMzM1ZTg3Yjc1ZGQ5NjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TUdDcnlwdC5jcHAKQEAgLTEsNSArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRy
b2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE5ICszMCwxOTMgQEAKIAogI2lm
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCisjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzR2Nt
UGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgor
I2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9D
cnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50
OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+JiYgcGxhaW5UZXh0LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRhZ0xlbmd0aCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFl
c0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOworICAgIGlmICghYWxnb3JpdGht
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRs
ZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2Ny
eV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0dDTSwg
R0NSWV9DSVBIRVJfU0VDVVJFKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
eworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhh
bmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVy
X3NldGl2KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKCFhZGRpdGlv
bmFsRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50
aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUo
KSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAg
ICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmlu
YWwoaGFuZGxlKTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAg
ICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQocGxhaW5UZXh0LnNpemUo
KSk7CisgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEo
KSwgb3V0cHV0LnNpemUoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7Cisg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBpZiAodGFnTGVuZ3RoKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWcodGFnTGVu
Z3RoKTsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0
YSgpLCB0YWcuc2l6ZSgpKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKKyAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAgb3V0cHV0LmFwcGVu
ZFZlY3Rvcih0YWcpOworICAgIH0KKworICAgIHJldHVybiBvdXRwdXQ7Cit9CisKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9yPHVpbnQ4X3Q+
JiYgY2lwaGVyVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFsRGF0YSwgdWlu
dDhfdCB0YWdMZW5ndGgpCit7CisgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVz
QWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CisgICAgaWYgKCFhbGdvcml0aG0p
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5
X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAw
KTsKKyAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwg
a2V5LnNpemUoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICB9CisKKyAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwgaXYu
ZGF0YSgpLCBpdi5zaXplKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKCFhZGRpdGlvbmFsRGF0YS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRp
dGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUoKSk7CisgICAgICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKKyAgICBp
ZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IHNpemVfdCBjaXBoZXJMZW5ndGggPSBjaXBoZXJUZXh0LnNpemUoKSAtIHRhZ0xlbmd0aDsKKyAg
ICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KGNpcGhlckxlbmd0aCk7CisgICAgZXJyb3IgPSBnY3J5
X2NpcGhlcl9kZWNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgY2lw
aGVyVGV4dC5kYXRhKCksIGNpcGhlckxlbmd0aCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAodGFnTGVuZ3RoKSB7Cisg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB0YWcodGFnTGVuZ3RoKTsKKyAgICAgICAgZXJyb3IgPSBn
Y3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0YSgpLCB0YWdMZW5ndGgpOworICAgICAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3RhbnRUaW1lTWVtY21wKHRhZy5kYXRhKCksIGNp
cGhlclRleHQuZGF0YSgpICsgY2lwaGVyTGVuZ3RoLCB0YWdMZW5ndGgpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gb3V0cHV0OwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKQordm9pZCBDcnlwdG9BbGdvcml0aG1BRVNf
R0NNOjpwbGF0Zm9ybUVuY3J5cHQoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90
PiYmIHBsYWluVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb250
ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHBsYWluVGV4dCA9IFdU
Rk1vdmUocGxhaW5UZXh0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtQWVzR2NtUGFyYW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiBhZXNL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleS5nZXQoKSk7CisKKyAgICAgICAgICAgIGF1
dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChhZXNLZXkua2V5KCksIGFlc1BhcmFtZXRlcnMuaXZW
ZWN0b3IoKSwgV1RGTW92ZShwbGFpblRleHQpLCBhZXNQYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRh
VmVjdG9yKCksIGFlc1BhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CisgICAg
ICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
T3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1dCA9
IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKG91dHB1dCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQorCit2b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgY2lwaGVyVGV4dCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3
b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0
ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBjaXBoZXJUZXh0ID0gV1RGTW92ZShjaXBoZXJUZXh0
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBhdXRvJiBhZXNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFy
YW1zPigqcGFyYW1ldGVycyk7CisgICAgICAgICAgICBhdXRvJiBhZXNLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlBRVM+KGtleS5nZXQoKSk7CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2Ny
eXB0RGVjcnlwdChhZXNLZXkua2V5KCksIGFlc1BhcmFtZXRlcnMuaXZWZWN0b3IoKSwgV1RGTW92
ZShjaXBoZXJUZXh0KSwgYWVzUGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBhZXNQ
YXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOworICAgICAgICAgICAgaWYgKCFv
dXRwdXQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
CisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRw
dXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQp
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>