<?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>131461</bug_id>
          
          <creation_ts>2014-04-09 15:23:21 -0700</creation_ts>
          <short_desc>GenericHashTraits::peek() is producing copies of passed-in temporary values</short_desc>
          <delta_ts>2014-08-24 13:14:51 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>999327</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-09 15:23:21 -0700</bug_when>
    <thetext>Use an rvalue reference overload of GenericHashTraits::peek() for temporary values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>999329</commentid>
    <comment_count>1</comment_count>
      <attachid>228994</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-09 15:29:08 -0700</bug_when>
    <thetext>Created attachment 228994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000225</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-12 13:51:28 -0700</bug_when>
    <thetext>I don&apos;t get why this is a good idea. The getters should return a reference or a copy. By returning a rvalue reference, the call site could modify the value in the hash table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002402</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-20 10:49:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I don&apos;t get why this is a good idea. The getters should return a reference or a copy. By returning a rvalue reference, the call site could modify the value in the hash table.

The getters return an object of the PeekType type, which is never a reference. GenericHashTraits::peek() should simply pass through the value it receives through the parameter, much like std::forward&lt;&gt;(). Returning an rvalue reference here isn&apos;t a problem since it either gets RVO-ed or at worst produces a move constructor in the getter.

I&apos;ll propose making GenericHashTraits::peek() a template that would deal with universal references, like std::forward&lt;&gt;().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002404</commentid>
    <comment_count>4</comment_count>
      <attachid>229769</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-20 10:55:19 -0700</bug_when>
    <thetext>Created attachment 229769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002447</commentid>
    <comment_count>5</comment_count>
      <attachid>229769</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-20 20:38:00 -0700</bug_when>
    <thetext>Comment on attachment 229769
Patch

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

&gt; Source/WTF/wtf/HashTraits.h:70
&gt; +    template&lt;typename U&gt;
&gt; +    static U&amp;&amp; peek(U&amp;&amp; value) { return std::forward&lt;U&gt;(value); }

I’d suggest doing this all on one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002458</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-20 21:20:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; I don&apos;t get why this is a good idea. The getters should return a reference or a copy. By returning a rvalue reference, the call site could modify the value in the hash table.
&gt; 
&gt; The getters return an object of the PeekType type, which is never a reference. GenericHashTraits::peek() should simply pass through the value it receives through the parameter, much like std::forward&lt;&gt;(). Returning an rvalue reference here isn&apos;t a problem since it either gets RVO-ed or at worst produces a move constructor in the getter.

I still don&apos;t get how that would be correct.
If the compiler generates a move constructor in the getter, the real value can be invalidated. That would not only break the hash map, but create security vulnerabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002569</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-04-21 11:10:45 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; I don&apos;t get why this is a good idea. The getters should return a reference or a copy. By returning a rvalue reference, the call site could modify the value in the hash table.
&gt; &gt; 
&gt; &gt; The getters return an object of the PeekType type, which is never a reference. GenericHashTraits::peek() should simply pass through the value it receives through the parameter, much like std::forward&lt;&gt;(). Returning an rvalue reference here isn&apos;t a problem since it either gets RVO-ed or at worst produces a move constructor in the getter.
&gt; 
&gt; I still don&apos;t get how that would be correct.
&gt; If the compiler generates a move constructor in the getter, the real value can be invalidated. That would not only break the hash map, but create security vulnerabilities.

I don&apos;t think peek ever causes the move constructor to be invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002630</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-21 12:59:30 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; I don&apos;t get why this is a good idea. The getters should return a reference or a copy. By returning a rvalue reference, the call site could modify the value in the hash table.
&gt; &gt; &gt; 
&gt; &gt; &gt; The getters return an object of the PeekType type, which is never a reference. GenericHashTraits::peek() should simply pass through the value it receives through the parameter, much like std::forward&lt;&gt;(). Returning an rvalue reference here isn&apos;t a problem since it either gets RVO-ed or at worst produces a move constructor in the getter.
&gt; &gt; 
&gt; &gt; I still don&apos;t get how that would be correct.
&gt; &gt; If the compiler generates a move constructor in the getter, the real value can be invalidated. That would not only break the hash map, but create security vulnerabilities.
&gt; 
&gt; I don&apos;t think peek ever causes the move constructor to be invoked.

There is probably something I misunderstand about rvalue references. My understanding is rvalue can be consumed through move semantic, or collapsed to a reference.

In this case, if they were to be used with move, that would be semantically incorrect.
I don&apos;t understand when this change would ever be correct.

What am I missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002741</commentid>
    <comment_count>9</comment_count>
      <attachid>229769</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-21 18:08:59 -0700</bug_when>
    <thetext>Comment on attachment 229769
Patch

I discussed this with Darin a bit. This should have an API test that shows we avoid an extra copy with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002754</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-21 18:43:42 -0700</bug_when>
    <thetext>Ben suspects, and I think I agree, that there are no extra temporary copies caused by the existing code. We should only fix this problem if it is, indeed, a problem. I suggest adding API tests that demonstrate the copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005479</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-30 12:48:37 -0700</bug_when>
    <thetext>To recap, the extra copy I&apos;m trying remove here is the one performed when passing MappedTraits::emptyValue() through MappedTraits::peek() when there&apos;s no entry for the specific key.

Existing entries have their value copied when it&apos;s being returned, which is correct. The newly-constructed empty values that are being returned should simply be passed through MappedTraits::peek() and RVO-ed, without copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005484</commentid>
    <comment_count>12</comment_count>
      <attachid>230513</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-30 12:57:44 -0700</bug_when>
    <thetext>Created attachment 230513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030027</commentid>
    <comment_count>13</comment_count>
      <attachid>230513</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-08-19 08:45:28 -0700</bug_when>
    <thetext>Comment on attachment 230513
Patch

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

I think this patch is fine, but the test doesn’t yet compile on Mac.

&gt; Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:162
&gt; +        EXPECT_EQ(CopyMoveCounter::constructionCount, 0);
&gt; +        EXPECT_EQ(CopyMoveCounter::copyCount, 1);
&gt; +        EXPECT_EQ(CopyMoveCounter::moveCount, 0);

Two problems here. First, the expected value is supposed to come first, and the thing we are testing is supposed to come second. Second, the type needs to match, so these need to be 0U and 1U rather than 0 and 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030916</commentid>
    <comment_count>14</comment_count>
      <attachid>237029</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-08-23 01:02:30 -0700</bug_when>
    <thetext>Created attachment 237029
Patch

Addresses Mac build failures, EXPECT_EQ() argument orders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030987</commentid>
    <comment_count>15</comment_count>
      <attachid>237029</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-24 13:14:47 -0700</bug_when>
    <thetext>Comment on attachment 237029
Patch

Clearing flags on attachment: 237029

Committed r172895: &lt;http://trac.webkit.org/changeset/172895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030988</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-24 13:14:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228994</attachid>
            <date>2014-04-09 15:29:08 -0700</date>
            <delta_ts>2014-04-20 10:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131461-20140409152846.patch</filename>
            <type>text/plain</type>
            <size>1551</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjcwMzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBVc2UgYW4gcnZhbHVlIHJlZmVyZW5jZSBvdmVy
bG9hZCBvZiBHZW5lcmljSGFzaFRyYWl0czo6cGVlaygpIGZvciB0ZW1wb3JhcnkgdmFsdWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0NjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNo
VHJhaXRzLmg6CisgICAgICAgIChXVEY6OkdlbmVyaWNIYXNoVHJhaXRzOjpwZWVrKTogUmVwbGFj
ZSB0aGUgb3ZlcmxvYWQgdGFraW5nIGluIGEgY29uc3QgbHZhbHVlIHJlZmVyZW5jZQorICAgICAg
ICB3aXRoIHRoZSBvbmUgdGFraW5nIGluIGFuIHJ2YWx1ZSByZWZlcmVuY2UuIFRoZSBuZXcgdmVy
c2lvbiBtb3ZlcyB0aGUgcGFzc2VkLWluCisgICAgICAgIHZhbHVlIHRocm91Z2ggdGhlIHJldHVy
biBzdGF0ZW1lbnQgYW5kIGF2b2lkcyBhbnkgY29waWVzLCB1bmxpa2UgdGhlIG9sZCBvdmVybG9h
ZC4KKwogMjAxNC0wNC0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJvbGxlZCBiYWNrIG91dCByMTY2OTcyLgpJbmRleDogU291cmNlL1dURi93dGYvSGFz
aFRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaAkocmV2
aXNpb24gMTY2ODg2KQorKysgU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw4ICs2Niw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmlj
SGFzaFQKIAogICAgIC8vIFR5cGUgZm9yIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbnMgdGhhdCBk
byBub3QgdHJhbnNmZXIgb3duZXJzaGlwLCBzdWNoIGFzIGdldC4KICAgICB0eXBlZGVmIFQgUGVl
a1R5cGU7Ci0gICAgc3RhdGljIFBlZWtUeXBlIHBlZWsoY29uc3QgVCYgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlOyB9Ci0gICAgc3RhdGljIFQmIHBlZWsoVCYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9
IC8vIE92ZXJsb2FkZWQgdG8gYXZvaWQgY29weWluZyBvZiBub24tdGVtcG9yYXJ5IHZhbHVlcy4K
KyAgICBzdGF0aWMgVCYgcGVlayhUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBzdGF0
aWMgVCYmIHBlZWsoVCYmIHZhbHVlKSB7IHJldHVybiBzdGQ6Om1vdmUodmFsdWUpOyB9CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNoVHJh
aXRzPFQ+IHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229769</attachid>
            <date>2014-04-20 10:55:19 -0700</date>
            <delta_ts>2014-04-30 12:57:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131461-20140420105455.patch</filename>
            <type>text/plain</type>
            <size>1474</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNjc1NjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA0LTIwICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBHZW5lcmljSGFzaFRyYWl0czo6cGVlaygpIGlz
IHByb2R1Y2luZyBjb3BpZXMgb2YgcGFzc2VkLWluIHRlbXBvcmFyeSB2YWx1ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQ2MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0hhc2hUcmFpdHMu
aDoKKyAgICAgICAgKFdURjo6R2VuZXJpY0hhc2hUcmFpdHM6OnBlZWspOiBNYWtlIHRoaXMgbWV0
aG9kIGEgdGVtcGxhdGUgdGhhdCBwYXNzZXMgdGhyb3VnaCB0aGUKKyAgICAgICAgcGFzc2VkLWlu
IHZhbHVlIHdpdGhvdXQgY29weWluZywgd2l0aCB0aGUgaGVscCBvZiB1bml2ZXJzYWwgcmVmZXJl
bmNlcyBhbmQgc3RkOjpmb3J3YXJkPD4oKS4KKwogMjAxNC0wNC0xOSAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaXQgZWFzaWVyIHRvIGNoZWNrIGlmIGFu
IGludGVnZXIgc3VtIHdvdWxkIG92ZXJmbG93CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoVHJh
aXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCShyZXZpc2lv
biAxNjc1NjYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDggKzY2LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEdlbmVyaWNIYXNo
VAogCiAgICAgLy8gVHlwZSBmb3IgcmV0dXJuIHZhbHVlIG9mIGZ1bmN0aW9ucyB0aGF0IGRvIG5v
dCB0cmFuc2ZlciBvd25lcnNoaXAsIHN1Y2ggYXMgZ2V0LgogICAgIHR5cGVkZWYgVCBQZWVrVHlw
ZTsKLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBUJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWU7IH0KLSAgICBzdGF0aWMgVCYgcGVlayhUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0gLy8g
T3ZlcmxvYWRlZCB0byBhdm9pZCBjb3B5aW5nIG9mIG5vbi10ZW1wb3JhcnkgdmFsdWVzLgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIFUmJiBwZWVrKFUmJiB2YWx1ZSkgeyBy
ZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IEhhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230513</attachid>
            <date>2014-04-30 12:57:44 -0700</date>
            <delta_ts>2014-08-23 01:02:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131461-20140430125720.patch</filename>
            <type>text/plain</type>
            <size>6563</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmNzJkN2U0MGFmNWVhNTRkY2MwYmE1
ZGM0NWRiNTFiNzdkZmNmN2EuLjg1ZmVjOGU2ZWU1MDcwYzAwYjRkNjA5MDVkYmNlNWJjODNjNWUw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDQtMzAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEdlbmVyaWNIYXNoVHJhaXRzOjpwZWVrKCkgaXMg
cHJvZHVjaW5nIGNvcGllcyBvZiBwYXNzZWQtaW4gdGVtcG9yYXJ5IHZhbHVlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDYxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaFRyYWl0cy5o
OgorICAgICAgICAoV1RGOjpHZW5lcmljSGFzaFRyYWl0czo6cGVlayk6IE1ha2UgdGhpcyBtZXRo
b2QgYSB0ZW1wbGF0ZSB0aGF0IHBhc3NlcyB0aHJvdWdoCisgICAgICAgIHRoZSBwYXNzZWQtaW4g
dmFsdWUgd2l0aG91dCBjb3B5aW5nLCBhY2hpZXZlZCBieSB1c2luZyB1bml2ZXJzYWwgcmVmZXJl
bmNlcyBhbmQKKyAgICAgICAgc3RkOjpmb3J3YXJkPD4oKS4KKwogMjAxNC0wNC0yOSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXaW5DYWly
b10gU3dpdGNoIHZpZGVvIGZyb20gR1N0cmVhbWVyIHRvIE1lZGlhIEZvdW5kYXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VHJhaXRzLmgKaW5kZXggZjE0ODEwMDIxODJmZDU5YmZkMTBiZWMyZTMxZGJlYTg1YzI0ZGMyNy4u
ZTE0ODIxNzY1NTAzYTQyMzg5MzRkMjVjZDkxNDIzZTUxMjg1ZGFmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMu
aApAQCAtNjYsOCArNjYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hh
c2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8c3RkOjppc19pbgogCiAgICAgLy8gVHlw
ZSBmb3IgcmV0dXJuIHZhbHVlIG9mIGZ1bmN0aW9ucyB0aGF0IGRvIG5vdCB0cmFuc2ZlciBvd25l
cnNoaXAsIHN1Y2ggYXMgZ2V0LgogICAgIHR5cGVkZWYgVCBQZWVrVHlwZTsKLSAgICBzdGF0aWMg
UGVla1R5cGUgcGVlayhjb25zdCBUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0
aWMgVCYgcGVlayhUJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0gLy8gT3ZlcmxvYWRlZCB0byBh
dm9pZCBjb3B5aW5nIG9mIG5vbi10ZW1wb3JhcnkgdmFsdWVzLgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IHN0YXRpYyBVJiYgcGVlayhVJiYgdmFsdWUpIHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxV
Pih2YWx1ZSk7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRz
IDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geyB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk4OTZmNzA4M2QzNTkzZWUzNjI1ODM3MzM0MTRmNjlh
ZTIxN2E1NWUuLmMzOGM0NmUzYjQ4MDJiNmIzMTdiZmUyODhiMDVkYThjMjZmNWJiYzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxNC0wNC0zMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisK
KyAgICAgICAgR2VuZXJpY0hhc2hUcmFpdHM6OnBlZWsoKSBpcyBwcm9kdWNpbmcgY29waWVzIG9m
IHBhc3NlZC1pbiB0ZW1wb3JhcnkgdmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGNhc2UgdGhhdCBjaGVja3MgdGhlIG51bWJl
ciBvZiBjb3BpZXMgYW5kIG1vdmVzIG9mIHRoZSBtYXBwZWQgb2JqZWN0cworICAgICAgICB3aGVu
IGNhbGxpbmcgSGFzaE1hcDo6Z2V0KCkuIEV4YWN0bHkgb25lIGNvcHkgb2YgdGhlIG1hcHBlZCB2
YWx1ZSBzaG91bGQgYmUKKyAgICAgICAgcGVyZm9ybWVkIHdoZW4gdGhlcmUgZXhpc3RzIGEgdmFs
dWUgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIHNwZWNpZmllZCBrZXksIGFuZAorICAgICAgICBleGFj
dGx5IG9uZSBtb3ZlIGFuZCBubyBjb3BpZXMgb2YgdGhlIGVtcHR5IHZhbHVlIHNob3VsZCBiZSBw
ZXJmb3JtZWQgd2hlbiB0aGVyZQorICAgICAgICBpc24ndCBhbnkgbWFwcGVkIHZhbHVlIGZvciB0
aGUgc3BlY2lmaWVkIGtleS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
cHlNb3ZlQ291bnRlci5oOiBBZGRlZC4KKyAgICAgICAgKENvcHlNb3ZlQ291bnRlcjo6VGVzdGlu
Z1Njb3BlOjpUZXN0aW5nU2NvcGUpOgorICAgICAgICAoQ29weU1vdmVDb3VudGVyOjpDb3B5TW92
ZUNvdW50ZXIpOgorICAgICAgICAoQ29weU1vdmVDb3VudGVyOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMTQtMDQtMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1ha2UgaXQgZWFzaWVyIHRvIHJ1biBDTWFr
ZSBmb3IgZG93bnN0cmVhbXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0NvcHlNb3ZlQ291bnRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29w
eU1vdmVDb3VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNhMGU2NjRmZWJkZDAyNzkxNzhhMTlhMzZlN2Y3
MjM1ZDc3NzVlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0NvcHlNb3ZlQ291bnRlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3B5TW92ZUNvdW50ZXJf
aAorI2RlZmluZSBDb3B5TW92ZUNvdW50ZXJfaAorCitzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsK
KyAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CisgICAgc3RhdGljIHVuc2ln
bmVkIGNvcHlDb3VudDsKKyAgICBzdGF0aWMgdW5zaWduZWQgbW92ZUNvdW50OworCisgICAgc3Ry
dWN0IFRlc3RpbmdTY29wZSB7CisgICAgICAgIFRlc3RpbmdTY29wZSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0cnVjdGlvbkNvdW50ID0gMDsKKyAgICAgICAgICAgIGNvcHlDb3VudCA9
IDA7CisgICAgICAgICAgICBtb3ZlQ291bnQgPSAwOworICAgICAgICB9CisgICAgfTsKKworICAg
IENvcHlNb3ZlQ291bnRlcigpIHsgY29uc3RydWN0aW9uQ291bnQrKzsgfQorICAgIENvcHlNb3Zl
Q291bnRlcihjb25zdCBDb3B5TW92ZUNvdW50ZXImKSB7IGNvcHlDb3VudCsrOyB9CisgICAgQ29w
eU1vdmVDb3VudGVyJiBvcGVyYXRvcj0oY29uc3QgQ29weU1vdmVDb3VudGVyJikgeyBjb3B5Q291
bnQrKzsgcmV0dXJuICp0aGlzOyB9CisgICAgQ29weU1vdmVDb3VudGVyKENvcHlNb3ZlQ291bnRl
ciYmKSB7IG1vdmVDb3VudCsrOyB9CisgICAgQ29weU1vdmVDb3VudGVyJiBvcGVyYXRvcj0oQ29w
eU1vdmVDb3VudGVyJiYpIHsgbW92ZUNvdW50Kys7IHJldHVybiAqdGhpczsgfQorfTsKKwordW5z
aWduZWQgQ29weU1vdmVDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCA9IDA7Cit1bnNpZ25lZCBD
b3B5TW92ZUNvdW50ZXI6OmNvcHlDb3VudCA9IDA7Cit1bnNpZ25lZCBDb3B5TW92ZUNvdW50ZXI6
Om1vdmVDb3VudCA9IDA7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAppbmRleCBkMDNmYjk1OTQ0NjFiODI5NTZhNzBlYTJlZGY1M2NiZWE1ZDQ4YTQy
Li5kYjkwODJmMzM1NzA1MGMwZTBlZjQ4M2NmMDZmZTkwYjc1ZmJiYjNmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJDb3B5TW92ZUNvdW50ZXIuaCIKICNpbmNsdWRl
ICJNb3ZlT25seS5oIgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMTQ4LDQgKzE0OSwyNiBAQCBURVNUKFdURl9IYXNoTWFwLCBJbml0aWFsaXplckxpc3Qp
CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCksIG1hcC5nZXQoNSkpOwogfQogCitURVNUKFdU
Rl9IYXNoTWFwLCBFZmZpY2llbnRHZXR0ZXIpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQ29w
eU1vdmVDb3VudGVyPiBtYXA7CisgICAgbWFwLnNldCgxLCBDb3B5TW92ZUNvdW50ZXIoKSk7CisK
KyAgICB7CisgICAgICAgIENvcHlNb3ZlQ291bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3BlOworICAg
ICAgICBtYXAuZ2V0KDEpOworICAgICAgICBFWFBFQ1RfRVEoQ29weU1vdmVDb3VudGVyOjpjb25z
dHJ1Y3Rpb25Db3VudCwgMCk7CisgICAgICAgIEVYUEVDVF9FUShDb3B5TW92ZUNvdW50ZXI6OmNv
cHlDb3VudCwgMSk7CisgICAgICAgIEVYUEVDVF9FUShDb3B5TW92ZUNvdW50ZXI6Om1vdmVDb3Vu
dCwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBDb3B5TW92ZUNvdW50ZXI6OlRlc3RpbmdT
Y29wZSBzY29wZTsKKyAgICAgICAgbWFwLmdldCgyKTsKKyAgICAgICAgRVhQRUNUX0VRKENvcHlN
b3ZlQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQsIDEpOworICAgICAgICBFWFBFQ1RfRVEoQ29w
eU1vdmVDb3VudGVyOjpjb3B5Q291bnQsIDApOworICAgICAgICBFWFBFQ1RfRVEoQ29weU1vdmVD
b3VudGVyOjptb3ZlQ291bnQsIDEpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237029</attachid>
            <date>2014-08-23 01:02:30 -0700</date>
            <delta_ts>2014-08-24 13:14:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131461-20140823010221.patch</filename>
            <type>text/plain</type>
            <size>6563</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmOWQyODA0YzRlMjNiNzY5Y2I5YWE3
NGQ0MzcxYTAyYTFlN2ZkNjMuLmQ3YjAxYmEzYTQyNzQ5ZTE0NjIzMTM5NTRlNzU5YThkYTA4NDZl
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDgtMjMgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEdlbmVyaWNIYXNoVHJhaXRzOjpwZWVrKCkgaXMg
cHJvZHVjaW5nIGNvcGllcyBvZiBwYXNzZWQtaW4gdGVtcG9yYXJ5IHZhbHVlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDYxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaFRyYWl0cy5o
OgorICAgICAgICAoV1RGOjpHZW5lcmljSGFzaFRyYWl0czo6cGVlayk6IE1ha2UgdGhpcyBtZXRo
b2QgYSB0ZW1wbGF0ZSB0aGF0IHBhc3NlcyB0aHJvdWdoCisgICAgICAgIHRoZSBwYXNzZWQtaW4g
dmFsdWUgd2l0aG91dCBjb3B5aW5nLCBhY2hpZXZlZCBieSB1c2luZyB1bml2ZXJzYWwgcmVmZXJl
bmNlcyBhbmQKKyAgICAgICAgc3RkOjpmb3J3YXJkPD4oKS4KKwogMjAxNC0wOC0yMiAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRGlzYWJsZSBFTkFC
TEVfSU9TX3tHRVNUVVJFLCBUT1VDSH1fRVZFTlRTLCBhbmQgdGVtcG9yYXJpbHkgZGlzYWJsZSBF
TkFCTEVfVE9VQ0hfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRz
LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgKaW5kZXggZjE0ODEwMDIxODJmZDU5YmZk
MTBiZWMyZTMxZGJlYTg1YzI0ZGMyNy4uZTE0ODIxNzY1NTAzYTQyMzg5MzRkMjVjZDkxNDIzZTUx
Mjg1ZGFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRyYWl0cy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaApAQCAtNjYsOCArNjYsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0c0Jhc2U8
c3RkOjppc19pbgogCiAgICAgLy8gVHlwZSBmb3IgcmV0dXJuIHZhbHVlIG9mIGZ1bmN0aW9ucyB0
aGF0IGRvIG5vdCB0cmFuc2ZlciBvd25lcnNoaXAsIHN1Y2ggYXMgZ2V0LgogICAgIHR5cGVkZWYg
VCBQZWVrVHlwZTsKLSAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhjb25zdCBUJiB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWU7IH0KLSAgICBzdGF0aWMgVCYgcGVlayhUJiB2YWx1ZSkgeyByZXR1cm4gdmFs
dWU7IH0gLy8gT3ZlcmxvYWRlZCB0byBhdm9pZCBjb3B5aW5nIG9mIG5vbi10ZW1wb3JhcnkgdmFs
dWVzLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgcGVlayhVJiYgdmFsdWUp
IHsgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxVPih2YWx1ZSk7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4geyB9OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwM2YyMzNm
NTdjNzhmODViYTA0MDZhNWY4ZjhiMDU1YjU1MzQxMDAuLjJhMGJiY2JlYTVkOGRkYTM4ZGU2ZjE1
YWYyODNiYmJkYjdiZDE5YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wOC0yMyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgR2VuZXJpY0hhc2hUcmFpdHM6OnBlZWso
KSBpcyBwcm9kdWNpbmcgY29waWVzIG9mIHBhc3NlZC1pbiB0ZW1wb3JhcnkgdmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0NjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0IGNh
c2UgdGhhdCBjaGVja3MgdGhlIG51bWJlciBvZiBjb3BpZXMgYW5kIG1vdmVzIG9mIHRoZSBtYXBw
ZWQgb2JqZWN0cworICAgICAgICB3aGVuIGNhbGxpbmcgSGFzaE1hcDo6Z2V0KCkuIEV4YWN0bHkg
b25lIGNvcHkgb2YgdGhlIG1hcHBlZCB2YWx1ZSBzaG91bGQgYmUKKyAgICAgICAgcGVyZm9ybWVk
IHdoZW4gdGhlcmUgZXhpc3RzIGEgdmFsdWUgdGhhdCBpcyBtYXBwZWQgdG8gdGhlIHNwZWNpZmll
ZCBrZXksIGFuZAorICAgICAgICBleGFjdGx5IG9uZSBtb3ZlIGFuZCBubyBjb3BpZXMgb2YgdGhl
IGVtcHR5IHZhbHVlIHNob3VsZCBiZSBwZXJmb3JtZWQgd2hlbiB0aGVyZQorICAgICAgICBpc24n
dCBhbnkgbWFwcGVkIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvcHlNb3ZlQ291bnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KENvcHlNb3ZlQ291bnRlcjo6VGVzdGluZ1Njb3BlOjpUZXN0aW5nU2NvcGUpOgorICAgICAgICAo
Q29weU1vdmVDb3VudGVyOjpDb3B5TW92ZUNvdW50ZXIpOgorICAgICAgICAoQ29weU1vdmVDb3Vu
dGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hN
YXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTQtMDgtMjIgIFJl
bmF0byBOYWd5ICA8bmFneS5yZW5hdG9Ac3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZW1v
dmUgTGV2ZWxEQi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
cHlNb3ZlQ291bnRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29weU1vdmVD
b3VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNhMGU2NjRmZWJkZDAyNzkxNzhhMTlhMzZlN2Y3MjM1ZDc3
NzVlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
cHlNb3ZlQ291bnRlci5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3B5TW92ZUNvdW50ZXJfaAorI2Rl
ZmluZSBDb3B5TW92ZUNvdW50ZXJfaAorCitzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKKyAgICBz
dGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CisgICAgc3RhdGljIHVuc2lnbmVkIGNv
cHlDb3VudDsKKyAgICBzdGF0aWMgdW5zaWduZWQgbW92ZUNvdW50OworCisgICAgc3RydWN0IFRl
c3RpbmdTY29wZSB7CisgICAgICAgIFRlc3RpbmdTY29wZSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0cnVjdGlvbkNvdW50ID0gMDsKKyAgICAgICAgICAgIGNvcHlDb3VudCA9IDA7Cisg
ICAgICAgICAgICBtb3ZlQ291bnQgPSAwOworICAgICAgICB9CisgICAgfTsKKworICAgIENvcHlN
b3ZlQ291bnRlcigpIHsgY29uc3RydWN0aW9uQ291bnQrKzsgfQorICAgIENvcHlNb3ZlQ291bnRl
cihjb25zdCBDb3B5TW92ZUNvdW50ZXImKSB7IGNvcHlDb3VudCsrOyB9CisgICAgQ29weU1vdmVD
b3VudGVyJiBvcGVyYXRvcj0oY29uc3QgQ29weU1vdmVDb3VudGVyJikgeyBjb3B5Q291bnQrKzsg
cmV0dXJuICp0aGlzOyB9CisgICAgQ29weU1vdmVDb3VudGVyKENvcHlNb3ZlQ291bnRlciYmKSB7
IG1vdmVDb3VudCsrOyB9CisgICAgQ29weU1vdmVDb3VudGVyJiBvcGVyYXRvcj0oQ29weU1vdmVD
b3VudGVyJiYpIHsgbW92ZUNvdW50Kys7IHJldHVybiAqdGhpczsgfQorfTsKKwordW5zaWduZWQg
Q29weU1vdmVDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCA9IDA7Cit1bnNpZ25lZCBDb3B5TW92
ZUNvdW50ZXI6OmNvcHlDb3VudCA9IDA7Cit1bnNpZ25lZCBDb3B5TW92ZUNvdW50ZXI6Om1vdmVD
b3VudCA9IDA7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcAppbmRleCA0MjJiYTZkZDkwMjc5MWRkYWQ2MGVjYjVmZjc2MmViNjE3ZmMxYjc3Li5iNmVj
ZDk4ODFlNTA2YTEwZTY3MjExNGIwMDI4OGViNWEwOTRmMjYwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKKyNpbmNsdWRlICJDb3B5TW92ZUNvdW50ZXIuaCIKICNpbmNsdWRlICJNb3Zl
T25seS5oIgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
MTQ4LDQgKzE0OSwyNiBAQCBURVNUKFdURl9IYXNoTWFwLCBJbml0aWFsaXplckxpc3QpCiAgICAg
RVhQRUNUX0VRKHN0ZDo6c3RyaW5nKCksIG1hcC5nZXQoNSkpOwogfQogCitURVNUKFdURl9IYXNo
TWFwLCBFZmZpY2llbnRHZXR0ZXIpCit7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgQ29weU1vdmVD
b3VudGVyPiBtYXA7CisgICAgbWFwLnNldCgxLCBDb3B5TW92ZUNvdW50ZXIoKSk7CisKKyAgICB7
CisgICAgICAgIENvcHlNb3ZlQ291bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3BlOworICAgICAgICBt
YXAuZ2V0KDEpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIENvcHlNb3ZlQ291bnRlcjo6Y29uc3Ry
dWN0aW9uQ291bnQpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIENvcHlNb3ZlQ291bnRlcjo6Y29w
eUNvdW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBDb3B5TW92ZUNvdW50ZXI6Om1vdmVDb3Vu
dCk7CisgICAgfQorCisgICAgeworICAgICAgICBDb3B5TW92ZUNvdW50ZXI6OlRlc3RpbmdTY29w
ZSBzY29wZTsKKyAgICAgICAgbWFwLmdldCgyKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBDb3B5
TW92ZUNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBD
b3B5TW92ZUNvdW50ZXI6OmNvcHlDb3VudCk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgQ29weU1v
dmVDb3VudGVyOjptb3ZlQ291bnQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>