<?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>130772</bug_id>
          
          <creation_ts>2014-03-26 05:25:24 -0700</creation_ts>
          <short_desc>[WTF] Add the move constructor, move assignment operator for HashTable</short_desc>
          <delta_ts>2014-07-19 03:11:34 -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>528+ (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>134831</dependson>
    
    <dependson>134869</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994554</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-26 05:25:24 -0700</bug_when>
    <thetext>[WTF] Add the move constructor, move assignment operator for HashTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994585</commentid>
    <comment_count>1</comment_count>
      <attachid>227851</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-26 08:51:50 -0700</bug_when>
    <thetext>Created attachment 227851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994595</commentid>
    <comment_count>2</comment_count>
      <attachid>227851</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-26 09:31:07 -0700</bug_when>
    <thetext>Comment on attachment 227851
Patch

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

&gt; Source/WTF/wtf/HashTable.h:1190
&gt; +        , m_iterators(std::move(other.m_iterators))

We need to invalidate other.m_iterators, not move them. The iterators point back to the table, and it’s not safe to just point the new table at them but leave them pointing to the old table.

Should initialize m_iterators to nullptr and call other.invalidateIterators() in the body of the constructor.

&gt; Source/WTF/wtf/HashTable.h:1201
&gt; +        std::swap(m_table, other.m_table);
&gt; +        std::swap(m_tableSize, other.m_tableSize);
&gt; +        std::swap(m_tableSizeMask, other.m_tableSizeMask);
&gt; +        std::swap(m_keyCount, other.m_keyCount);
&gt; +        std::swap(m_deletedCount, other.m_deletedCount);

I don’t think we need to write it like this. We should just copy the data members in the initialization section, and then zero them out here:

    other.m_table = nullptr;

Writing it with std::swap is unnecessarily oblique and doesn’t have any significant benefits that I can see.

&gt; Source/WTF/wtf/HashTable.h:1221
&gt; +    template&lt;typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits&gt;
&gt; +    inline auto HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::operator=(HashTable&amp;&amp; other) -&gt; HashTable&amp;
&gt; +    {
&gt; +        std::swap(m_table, other.m_table);
&gt; +        std::swap(m_tableSize, other.m_tableSize);
&gt; +        std::swap(m_tableSizeMask, other.m_tableSizeMask);
&gt; +        std::swap(m_keyCount, other.m_keyCount);
&gt; +        std::swap(m_deletedCount, other.m_deletedCount);
&gt; +
&gt; +#if CHECK_HASHTABLE_ITERATORS
&gt; +        std::swap(m_iterators, other.m_iterators);
&gt; +#endif
&gt; +#if DUMP_HASHTABLE_STATS_PER_TABLE
&gt; +        std::swap(m_stats, other.m_stats);
&gt; +#endif
&gt; +
&gt; +        return *this;
&gt; +    }

This is incorrect. It swaps, and doesn&apos;t move.

If we wanted to build move out of swap we’d need to clear out “this” first. But I see no reason to build move out of swap.

Also, it swaps incorrectly. If we wanted to swap correctly we could use the existing swap function above that does it correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994608</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-26 10:13:51 -0700</bug_when>
    <thetext>Ah, makes sense. Thanks for the review, I&apos;ll upload a new iteration shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994613</commentid>
    <comment_count>4</comment_count>
      <attachid>227858</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-26 10:21:41 -0700</bug_when>
    <thetext>Created attachment 227858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994624</commentid>
    <comment_count>5</comment_count>
      <attachid>227862</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-26 10:36:02 -0700</bug_when>
    <thetext>Created attachment 227862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994758</commentid>
    <comment_count>6</comment_count>
      <attachid>227862</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-26 17:45:26 -0700</bug_when>
    <thetext>Comment on attachment 227862
Patch

I don&apos;t think this is needed since we have move ctors and move assignment operators for both HashSet and HashMap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994960</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-27 10:25:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 227862 [details])
&gt; I don&apos;t think this is needed since we have move ctors and move assignment operators for both HashSet and HashMap.

Only a few of those are generated, and they all end up using the HashTable copy ctor, which kind of defeats the purpose.

Making HashTable move-constructible and move-assignable fixes that. In addition, more of HashSet and HashMap move ctors and move assignment operators are generated in place of analogous copy operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019332</commentid>
    <comment_count>8</comment_count>
      <attachid>227862</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-30 08:21:12 -0700</bug_when>
    <thetext>Comment on attachment 227862
Patch

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

&gt; Source/WTF/wtf/HashTable.h:1198
&gt; +    template&lt;typename Key, typename Value, typename Extractor, typename HashFunctions, typename Traits, typename KeyTraits&gt;
&gt; +    inline HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::HashTable(HashTable&amp;&amp; other)
&gt; +        : m_table(nullptr)
&gt; +        , m_tableSize(0)
&gt; +        , m_tableSizeMask(0)
&gt; +        , m_keyCount(0)
&gt; +        , m_deletedCount(0)
&gt; +#if CHECK_HASHTABLE_ITERATORS
&gt; +        , m_iterators(nullptr)
&gt; +        , m_mutex(std::make_unique&lt;std::mutex&gt;())
&gt; +#endif
&gt; +#if DUMP_HASHTABLE_STATS_PER_TABLE
&gt; +        , m_stats(nullptr)
&gt; +#endif
&gt; +    {
&gt; +        *this = std::move(other);
&gt; +    }

I don’t think it’s good to first make everything null and 0 and only then overwrite by moving. I suggest we instead just repeat the code from operator= below here.

&gt; Source/WTF/wtf/HashTable.h:1210
&gt; +        m_table = std::move(other.m_table);
&gt; +        m_tableSize = std::move(other.m_tableSize);
&gt; +        m_tableSizeMask = std::move(other.m_tableSizeMask);
&gt; +        m_keyCount = std::move(other.m_keyCount);
&gt; +        m_deletedCount = std::move(other.m_deletedCount);

These uses of std::move don’t accomplish anything. I wish that std::move worked with scalars in this fashion, but it doesn’t, and it’s not helpful to write code as if it did. Please omit the calls to std::move and just use normal assignment.

&gt; Source/WTF/wtf/HashTable.h:1219
&gt; +        m_stats = std::move(other.m_stats);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021136</commentid>
    <comment_count>9</comment_count>
      <attachid>227862</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-08 11:21:53 -0700</bug_when>
    <thetext>Comment on attachment 227862
Patch

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

I&apos;ll upload a new patch for re-review.

&gt;&gt; Source/WTF/wtf/HashTable.h:1198
&gt;&gt; +    }
&gt; 
&gt; I don’t think it’s good to first make everything null and 0 and only then overwrite by moving. I suggest we instead just repeat the code from operator= below here.

OK.

&gt;&gt; Source/WTF/wtf/HashTable.h:1210
&gt;&gt; +        m_deletedCount = std::move(other.m_deletedCount);
&gt; 
&gt; These uses of std::move don’t accomplish anything. I wish that std::move worked with scalars in this fashion, but it doesn’t, and it’s not helpful to write code as if it did. Please omit the calls to std::move and just use normal assignment.

OK.

&gt; Source/WTF/wtf/HashTable.h:1216
&gt; +        other.m_table = nullptr;
&gt; +        other.m_tableSize = 0;
&gt; +        other.m_tableSizeMask = 0;
&gt; +        other.m_keyCount = 0;
&gt; +        m_deletedCount = 0;

Oops!

&gt;&gt; Source/WTF/wtf/HashTable.h:1219
&gt;&gt; +        m_stats = std::move(other.m_stats);
&gt; 
&gt; Ditto.

m_stats is a std::unique_ptr&lt;&gt;, so the move is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021137</commentid>
    <comment_count>10</comment_count>
      <attachid>234576</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-08 11:31:29 -0700</bug_when>
    <thetext>Created attachment 234576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021252</commentid>
    <comment_count>11</comment_count>
      <attachid>234576</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-08 17:38:14 -0700</bug_when>
    <thetext>Comment on attachment 234576
Patch

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

I must admit I still don’t understand where this code will be used. Can you give an example of a source line that will end up calling this? Anders pointer out that we already have HashMap and HashSet move constructors and assignment operators.

&gt; Source/WTF/wtf/HashTable.h:1205
&gt; +        other.m_stats = nullptr;

This line of code isn’t needed. Moving out of the unique_ptr will null it out.

&gt; Source/WTF/wtf/HashTable.h:1229
&gt; +        other.m_stats = nullptr;

This line of code isn’t needed. Moving out of the unique_ptr will null it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021414</commentid>
    <comment_count>12</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-09 12:06:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 234576 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234576&amp;action=review
&gt; 
&gt; I must admit I still don’t understand where this code will be used. Can you give an example of a source line that will end up calling this? Anders pointer out that we already have HashMap and HashSet move constructors and assignment operators.
&gt; 

Move constructors and assignment operators for HashMap and HashSet are indeed implicitly defined, but those currently end up copying the HashTable instead of moving it, simply because HashTable is not movable.

This patch fixes that, so for every move of HashMap and HashSet the underlying HashTable is moved as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021793</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-11 01:17:08 -0700</bug_when>
    <thetext>Committed r170995: &lt;http://trac.webkit.org/changeset/170995&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021825</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-11 05:23:50 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 134831</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023452</commentid>
    <comment_count>15</comment_count>
      <attachid>234576</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-19 03:11:24 -0700</bug_when>
    <thetext>Comment on attachment 234576
Patch

Clearing flags on attachment: 234576

Committed r171262: &lt;http://trac.webkit.org/changeset/171262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023453</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-07-19 03:11:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227851</attachid>
            <date>2014-03-26 08:51:50 -0700</date>
            <delta_ts>2014-03-26 10:21:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130772-20140326085128.patch</filename>
            <type>text/plain</type>
            <size>3384</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjYyOTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgdGhlIG1vdmUgY29uc3RydWN0
b3IsIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvciBmb3IgSGFzaFRhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXNoVGFibGUgaGFzIGJvdGggY29w
eSBjb25zdHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yLCBtZWFuaW5nIHRoYXQg
dGhlIG1vdmUgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRv
ciBhcmUgaW1wbGljaXRseSBkZWxldGVkLiBUaGlzIHBhdGNoIGRlZmluZXMgYm90aCB0byBhdm9p
ZCB1bm5lY2Vzc2FyeQorICAgICAgICBjb3BpZXMgd2hlbiBtb3ZlcyBjYW4gYmUgcGVyZm9ybWVk
LgorCisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+
OjpIYXNoVGFibGUpOgorCiAyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmluZyB0aGUgcmVtYWluaW5nIEF1
dG9tYWtlIGNydWZ0LgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE2NjI5MCkKKysrIFNv
dXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiArMzYwLDkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHZvaWQgc3dhcChIYXNoVGFibGUmKTsKICAgICAg
ICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJik7CiAKKyAgICAgICAgSGFz
aFRhYmxlKEhhc2hUYWJsZSYmKTsKKyAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oSGFzaFRh
YmxlJiYpOworCiAgICAgICAgIC8vIFdoZW4gdGhlIGhhc2ggdGFibGUgaXMgZW1wdHksIGp1c3Qg
cmV0dXJuIHRoZSBzYW1lIGl0ZXJhdG9yIGZvciBlbmQgYXMgZm9yIGJlZ2luLgogICAgICAgICAv
LyBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0byBza2lwIGFs
bCB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQKICAgICAgICAgLy8gYnVja2V0cywgYW5kIGl0ZXJhdGlu
ZyBhbiBlbXB0eSB0YWJsZSBpcyBhIGNvbW1vbiBjYXNlIHRoYXQncyB3b3J0aCBvcHRpbWl6aW5n
LgpAQCAtMTE3Niw2ICsxMTc5LDQ3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFi
bGUoSGFzaFRhYmxlJiYgb3RoZXIpCisgICAgICAgIDogbV90YWJsZShudWxscHRyKQorICAgICAg
ICAsIG1fdGFibGVTaXplKDApCisgICAgICAgICwgbV90YWJsZVNpemVNYXNrKDApCisgICAgICAg
ICwgbV9rZXlDb3VudCgwKQorICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCisjaWYgQ0hFQ0tf
SEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICAsIG1faXRlcmF0b3JzKHN0ZDo6bW92ZShvdGhl
ci5tX2l0ZXJhdG9ycykpCisgICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6
bXV0ZXg+KCkpCisjZW5kaWYKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAg
ICAgICAgLCBtX3N0YXRzKHN0ZDo6bW92ZShvdGhlci5tX3N0YXRzKSkKKyNlbmRpZgorICAgIHsK
KyAgICAgICAgc3RkOjpzd2FwKG1fdGFibGUsIG90aGVyLm1fdGFibGUpOworICAgICAgICBzdGQ6
OnN3YXAobV90YWJsZVNpemUsIG90aGVyLm1fdGFibGVTaXplKTsKKyAgICAgICAgc3RkOjpzd2Fw
KG1fdGFibGVTaXplTWFzaywgb3RoZXIubV90YWJsZVNpemVNYXNrKTsKKyAgICAgICAgc3RkOjpz
d2FwKG1fa2V5Q291bnQsIG90aGVyLm1fa2V5Q291bnQpOworICAgICAgICBzdGQ6OnN3YXAobV9k
ZWxldGVkQ291bnQsIG90aGVyLm1fZGVsZXRlZENvdW50KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVu
YW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgor
ICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KEhhc2hUYWJsZSYmIG90aGVyKSAt
PiBIYXNoVGFibGUmCisgICAgeworICAgICAgICBzdGQ6OnN3YXAobV90YWJsZSwgb3RoZXIubV90
YWJsZSk7CisgICAgICAgIHN0ZDo6c3dhcChtX3RhYmxlU2l6ZSwgb3RoZXIubV90YWJsZVNpemUp
OworICAgICAgICBzdGQ6OnN3YXAobV90YWJsZVNpemVNYXNrLCBvdGhlci5tX3RhYmxlU2l6ZU1h
c2spOworICAgICAgICBzdGQ6OnN3YXAobV9rZXlDb3VudCwgb3RoZXIubV9rZXlDb3VudCk7Cisg
ICAgICAgIHN0ZDo6c3dhcChtX2RlbGV0ZWRDb3VudCwgb3RoZXIubV9kZWxldGVkQ291bnQpOwor
CisjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICBzdGQ6OnN3YXAobV9pdGVy
YXRvcnMsIG90aGVyLm1faXRlcmF0b3JzKTsKKyNlbmRpZgorI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTX1BFUl9UQUJMRQorICAgICAgICBzdGQ6OnN3YXAobV9zdGF0cywgb3RoZXIubV9zdGF0cyk7
CisjZW5kaWYKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227858</attachid>
            <date>2014-03-26 10:21:41 -0700</date>
            <delta_ts>2014-03-26 10:35:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130772-20140326102119.patch</filename>
            <type>text/plain</type>
            <size>3270</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjYzMDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgdGhlIG1vdmUgY29uc3RydWN0
b3IsIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvciBmb3IgSGFzaFRhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXNoVGFibGUgaGFzIGJvdGggY29w
eSBjb25zdHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yLCBtZWFuaW5nIHRoYXQg
dGhlIG1vdmUgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRv
ciBhcmUgaW1wbGljaXRseSBkZWxldGVkLiBUaGlzIHBhdGNoIGRlZmluZXMgYm90aCB0byBhdm9p
ZCB1bm5lY2Vzc2FyeQorICAgICAgICBjb3BpZXMgd2hlbiBtb3ZlcyBjYW4gYmUgcGVyZm9ybWVk
LgorCisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+
OjpIYXNoVGFibGUpOgorCiAyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmluZyB0aGUgcmVtYWluaW5nIEF1
dG9tYWtlIGNydWZ0LgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE2NjMwMCkKKysrIFNv
dXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiArMzYwLDkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHZvaWQgc3dhcChIYXNoVGFibGUmKTsKICAgICAg
ICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJik7CiAKKyAgICAgICAgSGFz
aFRhYmxlKEhhc2hUYWJsZSYmKTsKKyAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oSGFzaFRh
YmxlJiYpOworCiAgICAgICAgIC8vIFdoZW4gdGhlIGhhc2ggdGFibGUgaXMgZW1wdHksIGp1c3Qg
cmV0dXJuIHRoZSBzYW1lIGl0ZXJhdG9yIGZvciBlbmQgYXMgZm9yIGJlZ2luLgogICAgICAgICAv
LyBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0byBza2lwIGFs
bCB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQKICAgICAgICAgLy8gYnVja2V0cywgYW5kIGl0ZXJhdGlu
ZyBhbiBlbXB0eSB0YWJsZSBpcyBhIGNvbW1vbiBjYXNlIHRoYXQncyB3b3J0aCBvcHRpbWl6aW5n
LgpAQCAtMTE3Niw2ICsxMTc5LDQ5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFi
bGUoSGFzaFRhYmxlJiYgb3RoZXIpCisgICAgICAgIDogbV90YWJsZShudWxscHRyKQorICAgICAg
ICAsIG1fdGFibGVTaXplKDApCisgICAgICAgICwgbV90YWJsZVNpemVNYXNrKDApCisgICAgICAg
ICwgbV9rZXlDb3VudCgwKQorICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCisjaWYgQ0hFQ0tf
SEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIpCisgICAg
ICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCisjZW5kaWYKKyNp
ZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAgICAgICAgLCBtX3N0YXRzKG51bGxw
dHIpCisjZW5kaWYKKyAgICB7CisgICAgICAgICp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KEhh
c2hUYWJsZSYmIG90aGVyKSAtPiBIYXNoVGFibGUmCisgICAgeworICAgICAgICBvdGhlci5pbnZh
bGlkYXRlSXRlcmF0b3JzKCk7CisKKyAgICAgICAgbV90YWJsZSA9IHN0ZDo6bW92ZShvdGhlci5t
X3RhYmxlKTsKKyAgICAgICAgbV90YWJsZVNpemUgPSBzdGQ6Om1vdmUob3RoZXIubV90YWJsZVNp
emUpOworICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBzdGQ6Om1vdmUob3RoZXIubV90YWJsZVNp
emVNYXNrKTsKKyAgICAgICAgbV9rZXlDb3VudCA9IHN0ZDo6bW92ZShvdGhlci5tX2tleUNvdW50
KTsKKyAgICAgICAgbV9kZWxldGVkQ291bnQgPSBzdGQ6Om1vdmUob3RoZXIubV9kZWxldGVkQ291
bnQpOworCisgICAgICAgIG90aGVyLm1fdGFibGUgPSBudWxscHRyOworICAgICAgICBvdGhlci5t
X3RhYmxlU2l6ZSA9IDA7CisgICAgICAgIG90aGVyLm1fdGFibGVTaXplTWFzayA9IDA7CisgICAg
ICAgIG90aGVyLm1fa2V5Q291bnQgPSAwOworICAgICAgICBtX2RlbGV0ZWRDb3VudCA9IDA7CisK
KyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAgICAgICAgbV9zdGF0cyA9IHN0
ZDo6bW92ZShvdGhlci5tX3N0YXRzKTsKKyAgICAgICAgb3RoZXIubV9zdGF0cyA9IG51bGxwdHI7
CisjZW5kaWYKKworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227862</attachid>
            <date>2014-03-26 10:36:02 -0700</date>
            <delta_ts>2014-07-08 11:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130772-20140326103540.patch</filename>
            <type>text/plain</type>
            <size>3302</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjYzMDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgdGhlIG1vdmUgY29uc3RydWN0
b3IsIG1vdmUgYXNzaWdubWVudCBvcGVyYXRvciBmb3IgSGFzaFRhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXNoVGFibGUgaGFzIGJvdGggY29w
eSBjb25zdHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yLCBtZWFuaW5nIHRoYXQg
dGhlIG1vdmUgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIG1vdmUgYXNzaWdubWVudCBvcGVyYXRv
ciBhcmUgaW1wbGljaXRseSBkZWxldGVkLiBUaGlzIHBhdGNoIGRlZmluZXMgYm90aCB0byBhdm9p
ZCB1bm5lY2Vzc2FyeQorICAgICAgICBjb3BpZXMgd2hlbiBtb3ZlcyBjYW4gYmUgcGVyZm9ybWVk
LgorCisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+
OjpIYXNoVGFibGUpOgorCiAyMDE0LTAzLTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBSZW1vdmluZyB0aGUgcmVtYWluaW5nIEF1
dG9tYWtlIGNydWZ0LgpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE2NjMwMCkKKysrIFNv
dXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNiArMzYwLDkg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHZvaWQgc3dhcChIYXNoVGFibGUmKTsKICAgICAg
ICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oY29uc3QgSGFzaFRhYmxlJik7CiAKKyAgICAgICAgSGFz
aFRhYmxlKEhhc2hUYWJsZSYmKTsKKyAgICAgICAgSGFzaFRhYmxlJiBvcGVyYXRvcj0oSGFzaFRh
YmxlJiYpOworCiAgICAgICAgIC8vIFdoZW4gdGhlIGhhc2ggdGFibGUgaXMgZW1wdHksIGp1c3Qg
cmV0dXJuIHRoZSBzYW1lIGl0ZXJhdG9yIGZvciBlbmQgYXMgZm9yIGJlZ2luLgogICAgICAgICAv
LyBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0byBza2lwIGFs
bCB0aGUgZW1wdHkgYW5kIGRlbGV0ZWQKICAgICAgICAgLy8gYnVja2V0cywgYW5kIGl0ZXJhdGlu
ZyBhbiBlbXB0eSB0YWJsZSBpcyBhIGNvbW1vbiBjYXNlIHRoYXQncyB3b3J0aCBvcHRpbWl6aW5n
LgpAQCAtMTE3Niw2ICsxMTc5LDUwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KKyAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFs
dWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFi
bGUoSGFzaFRhYmxlJiYgb3RoZXIpCisgICAgICAgIDogbV90YWJsZShudWxscHRyKQorICAgICAg
ICAsIG1fdGFibGVTaXplKDApCisgICAgICAgICwgbV90YWJsZVNpemVNYXNrKDApCisgICAgICAg
ICwgbV9rZXlDb3VudCgwKQorICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCisjaWYgQ0hFQ0tf
SEFTSFRBQkxFX0lURVJBVE9SUworICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIpCisgICAg
ICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkpCisjZW5kaWYKKyNp
ZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKKyAgICAgICAgLCBtX3N0YXRzKG51bGxw
dHIpCisjZW5kaWYKKyAgICB7CisgICAgICAgICp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFt
ZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlw
ZW5hbWUgS2V5VHJhaXRzPgorICAgIGlubGluZSBhdXRvIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBF
eHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6b3BlcmF0b3I9KEhh
c2hUYWJsZSYmIG90aGVyKSAtPiBIYXNoVGFibGUmCisgICAgeworICAgICAgICBpbnZhbGlkYXRl
SXRlcmF0b3JzKCk7CisgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKKworICAg
ICAgICBtX3RhYmxlID0gc3RkOjptb3ZlKG90aGVyLm1fdGFibGUpOworICAgICAgICBtX3RhYmxl
U2l6ZSA9IHN0ZDo6bW92ZShvdGhlci5tX3RhYmxlU2l6ZSk7CisgICAgICAgIG1fdGFibGVTaXpl
TWFzayA9IHN0ZDo6bW92ZShvdGhlci5tX3RhYmxlU2l6ZU1hc2spOworICAgICAgICBtX2tleUNv
dW50ID0gc3RkOjptb3ZlKG90aGVyLm1fa2V5Q291bnQpOworICAgICAgICBtX2RlbGV0ZWRDb3Vu
dCA9IHN0ZDo6bW92ZShvdGhlci5tX2RlbGV0ZWRDb3VudCk7CisKKyAgICAgICAgb3RoZXIubV90
YWJsZSA9IG51bGxwdHI7CisgICAgICAgIG90aGVyLm1fdGFibGVTaXplID0gMDsKKyAgICAgICAg
b3RoZXIubV90YWJsZVNpemVNYXNrID0gMDsKKyAgICAgICAgb3RoZXIubV9rZXlDb3VudCA9IDA7
CisgICAgICAgIG1fZGVsZXRlZENvdW50ID0gMDsKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQorICAgICAgICBtX3N0YXRzID0gc3RkOjptb3ZlKG90aGVyLm1fc3RhdHMpOwor
ICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0cjsKKyNlbmRpZgorCisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234576</attachid>
            <date>2014-07-08 11:31:29 -0700</date>
            <delta_ts>2014-07-19 03:11:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130772-20140708113109.patch</filename>
            <type>text/plain</type>
            <size>3639</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM1YzZlMzE0ZmQ4YzFmYjhiNWY4MTZj
YzBiNjc1Yzk2YjRmNjNhMjMuLmExNmQ2OTg2NzZkYjU2ZDI4YTMwOTNjMDYxNjFjMWZhMmZkZGQy
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDctMDggIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCB0aGUgbW92ZSBjb25zdHJ1Y3Rv
ciwgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yIGZvciBIYXNoVGFibGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc3MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhc2hUYWJsZSBoYXMgYm90aCBjb3B5
IGNvbnN0cnVjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IsIG1lYW5pbmcgdGhhdCB0
aGUgbW92ZSBjb25zdHJ1Y3RvcgorICAgICAgICBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9y
IGFyZSBpbXBsaWNpdGx5IGRlbGV0ZWQuIFRoaXMgcGF0Y2ggZGVmaW5lcyBib3RoIHRvIGF2b2lk
IHVubmVjZXNzYXJ5CisgICAgICAgIGNvcGllcyB3aGVuIG1vdmVzIGNhbiBiZSBwZXJmb3JtZWQu
CisKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46
Okhhc2hUYWJsZSk6CisKIDIwMTQtMDctMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEVuYWJsZSBBUk12NyBkaXNhc3NlbWJsZXIgZm9yIHRoZSBHVEsg
cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVGFibGUuaAppbmRleCA3ODFiZmRiNzYyN2FiYWZlYWQ5M2ExMzNjNzgzZTYwZGMz
NTM5MTdmLi5jYmRiYjRmMGFiZWM2NmVhYzcwNDE3OTc4OTRhODU3NzQ3YmM1YzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VGFibGUuaApAQCAtMzYwLDYgKzM2MCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB2b2lk
IHN3YXAoSGFzaFRhYmxlJik7CiAgICAgICAgIEhhc2hUYWJsZSYgb3BlcmF0b3I9KGNvbnN0IEhh
c2hUYWJsZSYpOwogCisgICAgICAgIEhhc2hUYWJsZShIYXNoVGFibGUmJik7CisgICAgICAgIEhh
c2hUYWJsZSYgb3BlcmF0b3I9KEhhc2hUYWJsZSYmKTsKKwogICAgICAgICAvLyBXaGVuIHRoZSBo
YXNoIHRhYmxlIGlzIGVtcHR5LCBqdXN0IHJldHVybiB0aGUgc2FtZSBpdGVyYXRvciBmb3IgZW5k
IGFzIGZvciBiZWdpbi4KICAgICAgICAgLy8gVGhpcyBpcyBtb3JlIGVmZmljaWVudCBiZWNhdXNl
IHdlIGRvbid0IGhhdmUgdG8gc2tpcCBhbGwgdGhlIGVtcHR5IGFuZCBkZWxldGVkCiAgICAgICAg
IC8vIGJ1Y2tldHMsIGFuZCBpdGVyYXRpbmcgYW4gZW1wdHkgdGFibGUgaXMgYSBjb21tb24gY2Fz
ZSB0aGF0J3Mgd29ydGggb3B0aW1pemluZy4KQEAgLTExNzYsNiArMTE3OSw1OSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CisgICAg
aW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQorI2lmIENIRUNL
X0hBU0hUQUJMRV9JVEVSQVRPUlMKKyAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQorICAg
ICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6Om11dGV4PigpKQorI2VuZGlmCisg
ICAgeworICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRlcmF0b3JzKCk7CisKKyAgICAgICAgbV90
YWJsZSA9IG90aGVyLm1fdGFibGU7CisgICAgICAgIG1fdGFibGVTaXplID0gb3RoZXIubV90YWJs
ZVNpemU7CisgICAgICAgIG1fdGFibGVTaXplTWFzayA9IG90aGVyLm1fdGFibGVTaXplTWFzazsK
KyAgICAgICAgbV9rZXlDb3VudCA9IG90aGVyLm1fa2V5Q291bnQ7CisgICAgICAgIG1fZGVsZXRl
ZENvdW50ID0gb3RoZXIubV9kZWxldGVkQ291bnQ7CisKKyAgICAgICAgb3RoZXIubV90YWJsZSA9
IG51bGxwdHI7CisgICAgICAgIG90aGVyLm1fdGFibGVTaXplID0gMDsKKyAgICAgICAgb3RoZXIu
bV90YWJsZVNpemVNYXNrID0gMDsKKyAgICAgICAgb3RoZXIubV9rZXlDb3VudCA9IDA7CisgICAg
ICAgIG90aGVyLm1fZGVsZXRlZENvdW50ID0gMDsKKworI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQorICAgICAgICBtX3N0YXRzID0gc3RkOjptb3ZlKG90aGVyLm1fc3RhdHMpOwor
ICAgICAgICBvdGhlci5tX3N0YXRzID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CisgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpvcGVyYXRvcj0oSGFzaFRhYmxlJiYgb3Ro
ZXIpIC0+IEhhc2hUYWJsZSYKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsK
KyAgICAgICAgb3RoZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOworCisgICAgICAgIG1fdGFibGUg
PSBvdGhlci5tX3RhYmxlOworICAgICAgICBtX3RhYmxlU2l6ZSA9IG90aGVyLm1fdGFibGVTaXpl
OworICAgICAgICBtX3RhYmxlU2l6ZU1hc2sgPSBvdGhlci5tX3RhYmxlU2l6ZU1hc2s7CisgICAg
ICAgIG1fa2V5Q291bnQgPSBvdGhlci5tX2tleUNvdW50OworICAgICAgICBtX2RlbGV0ZWRDb3Vu
dCA9IG90aGVyLm1fZGVsZXRlZENvdW50OworCisgICAgICAgIG90aGVyLm1fdGFibGUgPSBudWxs
cHRyOworICAgICAgICBvdGhlci5tX3RhYmxlU2l6ZSA9IDA7CisgICAgICAgIG90aGVyLm1fdGFi
bGVTaXplTWFzayA9IDA7CisgICAgICAgIG90aGVyLm1fa2V5Q291bnQgPSAwOworICAgICAgICBv
dGhlci5tX2RlbGV0ZWRDb3VudCA9IDA7CisKKyNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJf
VEFCTEUKKyAgICAgICAgbV9zdGF0cyA9IHN0ZDo6bW92ZShvdGhlci5tX3N0YXRzKTsKKyAgICAg
ICAgb3RoZXIubV9zdGF0cyA9IG51bGxwdHI7CisjZW5kaWYKKworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNo
RnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>