<?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>91891</bug_id>
          
          <creation_ts>2012-07-20 12:28:45 -0700</creation_ts>
          <short_desc>QualifiedName&apos;s HashSet should be big enough to hold at least all the static names</short_desc>
          <delta_ts>2012-07-25 00:24:03 -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>WebCore Misc.</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>gustavo</cc>
    
    <cc>mjs</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674844</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-20 12:28:45 -0700</bug_when>
    <thetext>QualifiedName&apos;s table has a standard size of 64 buckets. When initializing WebKit, we create 850 static QualifiedName for the standard names (HTMLNames, SVGNames etc).

The small base size forces us to grow and rehash the table several time on startup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674848</commentid>
    <comment_count>1</comment_count>
      <attachid>153566</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-20 12:34:41 -0700</bug_when>
    <thetext>Created attachment 153566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674850</commentid>
    <comment_count>2</comment_count>
      <attachid>153566</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-20 12:37:48 -0700</bug_when>
    <thetext>Comment on attachment 153566
Patch

What is SVG is compiled out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675098</commentid>
    <comment_count>3</comment_count>
      <attachid>153627</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-20 17:07:08 -0700</bug_when>
    <thetext>Created attachment 153627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675099</commentid>
    <comment_count>4</comment_count>
      <attachid>153627</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-20 17:09:41 -0700</bug_when>
    <thetext>Comment on attachment 153627
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        This allow us to create HashTraints giving the minimumSize without hardcoding the values.

HashTraints</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675106</commentid>
    <comment_count>5</comment_count>
      <attachid>153628</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-20 17:17:31 -0700</bug_when>
    <thetext>Created attachment 153628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675182</commentid>
    <comment_count>6</comment_count>
      <attachid>153628</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-07-20 23:11:21 -0700</bug_when>
    <thetext>Comment on attachment 153628
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        This allow us to create HashTraints giving the minimumSize without hardcoding the values.

Nit (typo): &quot;HashTraints&quot; =&gt; &quot;HashTraits&quot;

&gt; Source/WTF/wtf/HashTable.h:458
&gt; +    // The following compute the upper power of two capacity to hold the size parameter.

Nit (typo): &quot;compute&quot; =&gt; &quot;computes&quot;

&gt; Source/WTF/wtf/HashTable.h:468
&gt; +    template&lt;unsigned size, unsigned shift&gt; struct hashTableCapacityShifts;
&gt; +    template&lt;unsigned size&gt;
&gt; +    struct hashTableCapacityShifts&lt;size, 1&gt; {
&gt; +        static const unsigned value = (size - 1) | (size - 1) &gt;&gt; 1;
&gt; +    };
&gt; +    template&lt;unsigned size, unsigned shift&gt;
&gt; +    struct hashTableCapacityShifts {
&gt; +        static const unsigned value = hashTableCapacityShifts&lt;size, (shift / 2)&gt;::value | hashTableCapacityShifts&lt;size, (shift / 2)&gt;::value &gt;&gt; shift;
&gt; +    };

So, I think I finally understand this. You&apos;re doing the round up to power of 2 algorithm on wikipedia, but without assignment you need to do some tricks?
&lt;http://en.wikipedia.org/wiki/Power_of_two#Algorithm_to_round_up_to_power_of_two&gt;

&gt;     n = n - 1;
&gt;     n = n | (n &gt;&gt; 1);
&gt;     n = n | (n &gt;&gt; 2);
&gt;     n = n | (n &gt;&gt; 4);
&gt;     n = n | (n &gt;&gt; 8);
&gt;     n = n | (n &gt;&gt; 16);
&gt;     ...
&gt;     n = n | (n &gt;&gt; (bitspace / 2));
&gt;     n = n + 1;

It looks like because you can&apos;t re-assign a value of n in each step that you&apos;re actually computing what that assigned value of n would be at each step. Causing double recursion, which the original algorithm does not have. The right side of your recursion is the same as the wikipedia algorithm. The left side of the recursion is this added complexity. This seems unnecessarily complex. You can get away with something much simpler by walk the high bit down to the end and OR it all up. With assignment you can calculate the result in log2(bitspace) assignments and ORs, but with the simple approach without assignment you can compute it in max(bitspace) ORs, and I think your approach is 2^log2(bitspace) ORs.

I think this approach is significantly easier to follow this. It special cases an input size of 0, but with your compiler assert that value should never be input. So that is just for completeness:

    template&lt;unsigned size&gt; struct simpleHashTableCapacityForSizeUpperPowerOfTwoMinusOne;
    template&lt;&gt;
    struct simpleHashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;0&gt; {
        static const unsigned value = 0;
    };
    template&lt;unsigned size&gt;
    struct simpleHashTableCapacityForSizeUpperPowerOfTwoMinusOne {
        static const unsigned value = size | simpleHashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;(size &gt;&gt; 1)&gt;::value;
    };

    template&lt;unsigned size&gt; struct simpleHashTableCapacityForSize;
    template&lt;&gt;
    struct simpleHashTableCapacityForSize&lt;0&gt; {
        static const unsigned value = 0;
    };
    template&lt;unsigned size&gt;
    struct simpleHashTableCapacityForSize {
        static const unsigned value = (simpleHashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;size - 1&gt;::value + 1) &lt;&lt; 1;
    };

I&apos;ll attach a sample program you can test with.

&gt; Source/WTF/wtf/HashTable.h:472
&gt; +        static const unsigned value = hashTableCapacityShifts&lt;size, 16&gt;::value;

If you do decide to go this route, instead of the alternative, this 16 should not be hardcoded. It would be &quot;sizeof(unsigned) * 8 / 2&quot;.

&gt; Source/WebCore/dom/make_names.pl:603
&gt; +        print F &quot;const size_t $parameters{namespace}TagsCount = &quot;, scalar(keys %allTags), &quot;;\n&quot;;

How about unsigned instead of size_t? Then you might not need to cast when you&apos;re adding up these values. It would also be ridiculous for this to be too big =)

&gt; Source/WebCore/dom/make_names.pl:608
&gt; +        print F &quot;const size_t $parameters{namespace}AttrsCount = &quot;, scalar(keys %allAttrs), &quot;;\n&quot;;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675183</commentid>
    <comment_count>7</comment_count>
      <attachid>153649</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2012-07-20 23:15:24 -0700</bug_when>
    <thetext>Created attachment 153649
[PROGRAM] Simple cpp program comparing the two approaches

Here is a small C++ program that compares the two approaches. I prefer the simple approach. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675900</commentid>
    <comment_count>8</comment_count>
      <attachid>153839</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 12:28:19 -0700</bug_when>
    <thetext>Created attachment 153839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676040</commentid>
    <comment_count>9</comment_count>
      <attachid>153870</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 14:58:54 -0700</bug_when>
    <thetext>Created attachment 153870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676079</commentid>
    <comment_count>10</comment_count>
      <attachid>153870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 15:30:13 -0700</bug_when>
    <thetext>Comment on attachment 153870
Patch

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

r=me, but I think there is some room for improvement

&gt; Source/WTF/wtf/HashTable.h:478
&gt; +    // The following computes the upper power of two capacity to hold the size parameter.
&gt; +    // This is done at compile time to initialize the HashTraits.
&gt; +    template&lt;unsigned size&gt; struct hashTableCapacityForSizeUpperPowerOfTwoMinusOne;
&gt; +    template&lt;&gt;
&gt; +    struct hashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;0&gt; {
&gt; +        static const unsigned value = 0;
&gt; +    };
&gt; +    template&lt;unsigned size&gt;
&gt; +    struct hashTableCapacityForSizeUpperPowerOfTwoMinusOne {
&gt; +        static const unsigned value = size | hashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;(size &gt;&gt; 1)&gt;::value;
&gt; +    };
&gt; +
&gt; +    template&lt;unsigned size, bool isPowerOfTwo&gt; struct hashTableCapacityForSizeDecider;
&gt; +    template&lt;unsigned size&gt;
&gt; +    struct hashTableCapacityForSizeDecider&lt;size, true&gt; {
&gt; +        static const unsigned value = size &lt;&lt; 2;
&gt; +    };
&gt; +    template&lt;unsigned size&gt;
&gt; +    struct hashTableCapacityForSizeDecider&lt;size, false&gt; {
&gt; +        static const unsigned value = (hashTableCapacityForSizeUpperPowerOfTwoMinusOne&lt;size - 1&gt;::value + 1) &lt;&lt; 1;
&gt; +    };

There must be a less confusing way to code this.

I have no idea what “upper power of two minus one” means, nor do I why powers of two need a special case. I think the code is doing some kind of smearing technique to construct a binary integer of all ones, but this is so non-obvious that it requires a comment.

I suggest not repeating “ForSize” in all these struct names, and there seems no reason for hashTableCapacityForSizeUpperPowerOfTwoMinusOne to have hashTableCapacity in its name. It’s just an arithmetic function.

&gt; Source/WTF/wtf/HashTable.h:481
&gt; +    struct hashTableCapacityForSize {

Name should be capitalized. All the other traits structs and classes are. Even though they are “function-like”.

&gt; Source/WTF/wtf/HashTable.h:485
&gt; +        COMPILE_ASSERT(value &gt; (2 * size), HashTableCapacityHoldsContentSize);

Shouldn’t this be &gt;=?

&gt; Source/WebCore/dom/QualifiedName.cpp:35
&gt; +#if ENABLE(MATHML)
&gt; +#include &quot;MathMLNames.h&quot;
&gt; +#endif
&gt; +#if ENABLE(SVG)
&gt; +#include &quot;SVGNames.h&quot;
&gt; +#endif

Normally we put conditional includes in their own separate paragraphs.

&gt; Source/WebCore/dom/QualifiedName.cpp:47
&gt; +    static_cast&lt;const unsigned&gt;(HTMLNames::HTMLTagsCount + HTMLNames::HTMLAttrsCount

I don’t think the const here is needed.

&gt; Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:54
&gt; +    // Adding one more item may change the capacity.
&gt; +    testSet.add(initialCapacity);
&gt; +    EXPECT_GE(static_cast&lt;unsigned&gt;(testSet.capacity()), initialCapacity);

I think this would be a better test if it added more than just one more item. In fact, might be good to keep adding until the capacity goes up and make some assertion about when that happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676100</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 15:44:02 -0700</bug_when>
    <thetext>This approach, setting minimum table size when creating the hash table, is going to cut down on code sharing and increase code bloat for these templates, because the entire template will be separate. I don’t think our tools are smart enough to coalesce the many, many identical functions in otherwise-identical HashSet and HashTable templates.

An alternate approach might be to come up with some sort of “reserve initial capacity” function that we could call at runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676119</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 15:53:51 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This approach, setting minimum table size when creating the hash table, is going to cut down on code sharing and increase code bloat for these templates, because the entire template will be separate. I don’t think our tools are smart enough to coalesce the many, many identical functions in otherwise-identical HashSet and HashTable templates.
&gt; 
&gt; An alternate approach might be to come up with some sort of “reserve initial capacity” function that we could call at runtime.

That is a good point.

A “reserve initial capacity” would increase the size of every HashTable by 32bits, I am not sure that is a better trade off.

I think sparingly using the KeyTraits should be ok. In this case, the usage is unique, there is no other HashSet instantiated for the same types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676164</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 16:41:42 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; A “reserve initial capacity” would increase the size of every HashTable by 32bits

Are you sure? I think there’s a way to do it without changing the size of HashTable.

&gt; In this case, the usage is unique, there is no other HashSet instantiated for the same types.

Good point. No worries then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676169</commentid>
    <comment_count>14</comment_count>
      <attachid>153897</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 16:44:44 -0700</bug_when>
    <thetext>Created attachment 153897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676173</commentid>
    <comment_count>15</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 16:48:53 -0700</bug_when>
    <thetext>This alternative greatly simplify the problem by changing HashTable::shouldExpand(). I also tried to make the template clearer.

The OneifyLowBits is a bit poor. What is does is set all the bits to one after the most significant bit:
00110101010 -&gt; 00111111111
I welcome any better name for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676183</commentid>
    <comment_count>16</comment_count>
      <attachid>153897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 16:57:09 -0700</bug_when>
    <thetext>Comment on attachment 153897
Patch

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

Somehow this version of the patch is missing the HashSet.cpp unit test source file.

&gt; Source/WTF/ChangeLog:20
&gt; +        (WTF):

You should remove junk lines like this from the ChangeLog.

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore):

Another pure-junk line.

&gt; Source/WTF/wtf/HashTable.h:408
&gt; -        bool shouldExpand() const { return (m_keyCount + m_deletedCount) * m_maxLoad &gt;= m_tableSize; }
&gt; +        bool shouldExpand() const { return (m_keyCount + m_deletedCount) * m_maxLoad &gt; m_tableSize; }

Despite my suggestion below that you should change the COMPILE_ASSERT, I was not proposing we change the HashTable class’s own rule! I suggest backing this out to make the change lower risk. Unless there is some significant benefit of making this change that I didn’t notice.

&gt; Source/WTF/wtf/HashTable.h:472
&gt; +    template&lt;unsigned number&gt;
&gt; +    struct UpperPowerOfTwoBound {
&gt; +        static const unsigned value = (OneifyLowBits&lt;number - 1&gt;::value + 1) &lt;&lt; 1;
&gt; +    };

It’s nice to have this function name for documentation. But note that we don’t really need this template. We could just have this same code below in HashTableCapacityForSize. I think it’s clearer like this, not sure.

&gt; Source/WebCore/dom/QualifiedName.cpp:41
&gt;  #include &quot;QualifiedName.h&quot;
&gt; +#include &quot;HTMLNames.h&quot;
&gt; +#if ENABLE(MATHML)
&gt; +#include &quot;MathMLNames.h&quot;
&gt; +#endif
&gt; +#if ENABLE(SVG)
&gt; +#include &quot;SVGNames.h&quot;
&gt; +#endif
&gt; +#include &quot;XLinkNames.h&quot;
&gt; +#include &quot;XMLNSNames.h&quot;
&gt; +#include &quot;XMLNames.h&quot;
&gt;  #include &lt;wtf/Assertions.h&gt;
&gt;  #include &lt;wtf/HashSet.h&gt;
&gt;  #include &lt;wtf/StaticConstructors.h&gt;

My comment about paragraphs means that I’d put them like this:

...
#include &lt;wtf/StaticConstructors.h&gt;

#if ENABLE(MATHML)
#include &quot;MathMLNames.h&quot;
#endif

#if ENABLE(SVG)
#include &quot;SVGNames.h&quot;
#endif

&gt; Source/WebCore/dom/QualifiedName.cpp:56
&gt; +    static_cast&lt;const unsigned&gt;(HTMLNames::HTMLTagsCount + HTMLNames::HTMLAttrsCount
&gt; +#if ENABLE(MATHML)
&gt; +        + MathMLNames::MathMLTagsCount + MathMLNames::MathMLAttrsCount
&gt; +#endif
&gt; +#if ENABLE(SVG)
&gt; +        + SVGNames::SVGTagsCount + SVGNames::SVGAttrsCount
&gt; +#endif
&gt; +        + XLinkNames::XLinkAttrsCount
&gt; +        + XMLNSNames::XMLNSAttrsCount
&gt; +        + XMLNames::XMLAttrsCount)&gt;::value;

Might be cleaner to have the total number of qualified names be a separate named constant outside the struct. That would eliminate the need for static_cast and make this easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676200</commentid>
    <comment_count>17</comment_count>
      <attachid>153897</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 17:11:19 -0700</bug_when>
    <thetext>Comment on attachment 153897
Patch

Oh, I am sorry. I just wanted your opinion on basing the change on shouldExpand().

I&apos;ll make a real patch addressing your other comments.

&gt; It’s nice to have this function name for documentation. But note that we don’t really need this template. We could just have this same code below in HashTableCapacityForSize. I think it’s clearer like this, not sure.

It was purely for documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676251</commentid>
    <comment_count>18</comment_count>
      <attachid>153922</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-23 17:55:15 -0700</bug_when>
    <thetext>Created attachment 153922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676267</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-07-23 18:06:44 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Oh, I am sorry. I just wanted your opinion on basing the change on shouldExpand().

I think we should do/consider that longer term. Since it’s a higher risk change to do that, I like having this lower risk first change in the bag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677732</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-07-25 00:24:03 -0700</bug_when>
    <thetext>Committed r123582: &lt;http://trac.webkit.org/changeset/123582&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153566</attachid>
            <date>2012-07-20 12:34:41 -0700</date>
            <delta_ts>2012-07-20 17:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120720123437.patch</filename>
            <type>text/plain</type>
            <size>1937</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4MGI1MTkwMmY0YTdh
NjE5MjhkYTYwNGQ4ZjBjNmExYjU0N2NiOC4uOWQ0ZjAyZTRhODUwNjMxZDg5OGYxMGQwZThiMjI5
YTI0YjBkMjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA3LTIwICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUXVhbGlmaWVkTmFtZSdzIEhhc2hTZXQgc2hv
dWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwgdGhlIHN0YXRpYyBuYW1lcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4OTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRdWFsaWZpZWRO
YW1lJ3MgdGFibGUgaGFzIGEgc3RhbmRhcmQgc2l6ZSBvZiA2NCBidWNrZXRzLiBXaGVuIGluaXRp
YWxpemluZyBXZWJLaXQsCisgICAgICAgIHdlIGNyZWF0ZSA4NTAgc3RhdGljIFF1YWxpZmllZE5h
bWUgZm9yIHRoZSBzdGFuZGFyZCBuYW1lcyAoSFRNTE5hbWVzLCBTVkdOYW1lcyBldGMpLgorCisg
ICAgICAgIFRoZSBzbWFsbCBiYXNlIHNpemUgZm9yY2VzIHVzIHRvIGdyb3cgYW5kIHJlaGFzaCB0
aGUgdGFibGUgc2V2ZXJhbCB0aW1lIG9uIHN0YXJ0dXAuCisKKyAgICAgICAgVGhpcyBwYXRjaCBz
b2x2ZXMgdGhlIGlzc3VlIGJ5IGRlZmluaW5nIHRoZSBpbml0aWFsIHRhYmxlIHNpemUgdG8gdGhl
IG1pbmltdW0gc2l6ZSB0aGF0CisgICAgICAgIGNhbiBob2xkIGFsbCB0aGUgc3RhdGljIFF1YWxp
ZmllZE5hbWUuCisKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChR
dWFsaWZpZWROYW1lSGFzaFRyYWl0cyk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0y
MCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIxMjI4NzMpOiAxNSUgcmVncmVzc2lvbiBvbiBEcm9tYWVvL2RvbS1hdHRyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2
NjdkYTMxOWYxNS4uNjJkNWIyNzg4NmE0YmZhMjU2Njg2ZWQ0Mzk5MjNhZWZhZjk3NjQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMzIsNyArMzIsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZTo6UXVhbGlm
aWVkTmFtZUltcGwqLCBRdWFsaWZpZWROYW1lSGFzaD4gUU5hbWVTZXQ7CitzdHJ1Y3QgUXVhbGlm
aWVkTmFtZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRyYWl0czxRdWFsaWZpZWROYW1lOjpRdWFs
aWZpZWROYW1lSW1wbCo+IHsKKyAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1UYWJsZVNpemUg
PSAyMDQ4OworfTsKKwordHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5h
bWVJbXBsKiwgUXVhbGlmaWVkTmFtZUhhc2gsIFF1YWxpZmllZE5hbWVIYXNoVHJhaXRzPiBRTmFt
ZVNldDsKIAogc3RydWN0IFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3IgewogICAgIHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBjb21wb25lbnRzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153627</attachid>
            <date>2012-07-20 17:07:08 -0700</date>
            <delta_ts>2012-07-20 17:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120720170704.patch</filename>
            <type>text/plain</type>
            <size>6208</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRhOTY1NzE0M2Q2
NjdiMzA1ZWE0NGZjNTVhZjAuLmNkNjU3OTVlMDIzOTEzMDRkMmEwYTE5ZTg4MjliMGFiODZhYTA4
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0YXRpYyBzdHJ1Y3QgdG8gY29t
cHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGZvciBhbnkgZ2l2ZW4gc2l6ZSBhdCBjb21waWxl
IHRpbWUuCisgICAgICAgIFRoaXMgYWxsb3cgdXMgdG8gY3JlYXRlIEhhc2hUcmFpbnRzIGdpdmlu
ZyB0aGUgbWluaW11bVNpemUgd2l0aG91dCBoYXJkY29kaW5nIHRoZSB2YWx1ZXMuCisKKyAgICAg
ICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoaGFzaFRhYmxl
Q2FwYWNpdHlTaGlmdHMpOgorICAgICAgICAoaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQ
b3dlck9mVHdvTWludXNPbmUpOgorICAgICAgICAoaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplKToK
KwogMjAxMi0wNy0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRoZSBBVFNVSS1iYXNlZCBjb21wbGV4IHRleHQgY29kZSBpcyB1bnVzZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzYzgwYjUxOTAyZjRhN2E2MTkyOGRhNjA0ZDhmMGM2YTFiNTQ3Y2I4Li45ZDRmMDJlNGE4NTA2
MzFkODk4ZjEwZDBlOGIyMjlhMjRiMGQyOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+ICYmIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBRdWFsaWZpZWRO
YW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3VnaCB0byBob2xkIGF0IGxlYXN0IGFsbCB0
aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFF1YWxpZmllZE5hbWUncyB0YWJsZSBoYXMgYSBzdGFuZGFyZCBzaXplIG9mIDY0IGJ1
Y2tldHMuIFdoZW4gaW5pdGlhbGl6aW5nIFdlYktpdCwKKyAgICAgICAgd2UgY3JlYXRlIDg1MCBz
dGF0aWMgUXVhbGlmaWVkTmFtZSBmb3IgdGhlIHN0YW5kYXJkIG5hbWVzIChIVE1MTmFtZXMsIFNW
R05hbWVzIGV0YykuCisKKyAgICAgICAgVGhlIHNtYWxsIGJhc2Ugc2l6ZSBmb3JjZXMgdXMgdG8g
Z3JvdyBhbmQgcmVoYXNoIHRoZSB0YWJsZSBzZXZlcmFsIHRpbWUgb24gc3RhcnR1cC4KKworICAg
ICAgICBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgaXNzdWUgYnkgZGVmaW5pbmcgdGhlIGluaXRpYWwg
dGFibGUgc2l6ZSB0byB0aGUgbWluaW11bSBzaXplIHRoYXQKKyAgICAgICAgY2FuIGhvbGQgYWxs
IHRoZSBzdGF0aWMgUXVhbGlmaWVkTmFtZS4KKworICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1l
LmNwcDoKKyAgICAgICAgKFF1YWxpZmllZE5hbWVIYXNoVHJhaXRzKToKKyAgICAgICAgKFdlYkNv
cmUpOgorCiAyMDEyLTA3LTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjEyMjg3Myk6IDE1JSByZWdyZXNzaW9uIG9uIERyb21hZW8vZG9t
LWF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKaW5kZXggY2NmNjJkYzAwYjgxYjUzYWM3YjNmZGRhODNlNWQxZmQz
MjE2OTA1ZS4uZDdlMDAwODc1M2ZjYzdkNGE4ZmE4OWJmNjNmZjgxY2MxZmRmNjUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgKQEAgLTQ1NSw2ICs0NTUsMzEgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCisgICAgLy8gVGhlIGZvbGxvd2luZyBjb21wdXRlIHRoZSB1cHBlciBwb3dlciBvZiB0
d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAgLy8gVGhpcyBpcyBk
b25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJhaXRzLgorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIHNoaWZ0PiBzdHJ1Y3QgaGFzaFRhYmxlQ2Fw
YWNpdHlTaGlmdHM7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAgICBzdHJ1Y3QgaGFz
aFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwgMT4geworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgdmFsdWUgPSAoc2l6ZSAtIDEpIHwgKHNpemUgLSAxKSA+PiAxOworICAgIH07CisgICAg
dGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc2hpZnQ+CisgICAgc3RydWN0IGhhc2hU
YWJsZUNhcGFjaXR5U2hpZnRzIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVl
ID0gaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwgKHNoaWZ0IC8gMik+Ojp2YWx1ZSB8IGhh
c2hUYWJsZUNhcGFjaXR5U2hpZnRzPHNpemUsIChzaGlmdCAvIDIpPjo6dmFsdWUgPj4gc2hpZnQ7
CisgICAgfTsKKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IGhhc2hU
YWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJPZlR3b01pbnVzT25lIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwg
MTY+Ojp2YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAgICBz
dHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZSwgSGFzaFRhYmxlTm9DYXBhY2l0eUZvck51bGxTaXplKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZhbHVlID0gKGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJP
ZlR3b01pbnVzT25lPHNpemU+Ojp2YWx1ZSArIDEpIDw8IDE7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKCFzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlID4+IDMwKSwgSGFzaFRhYmxlTm9DYXBhY2l0eU92
ZXJmbG93KTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQodmFsdWUgPiAoMiAqIHNpemUpLCBIYXNo
VGFibGVOb0NhcGFjaXR5T3ZlcmZsb3cpOworICAgIH07CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIGlubGlu
ZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz46Okhhc2hUYWJsZSgpCiAgICAgICAgIDogbV90YWJsZSgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGUwODU1MDcwYTdjYjMyNTM0Y2NiZjhhYjhkMDUy
NjY3ZGEzMTlmMTUuLjBhMDZiYWExNmQ4ODdkYmJkY2FkNmM2OGExMGE5OGIyYWY2MTViNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTI2LDEzICsyNiwzNyBAQAogI2Vu
ZGlmCiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2VuZGlmCisj
aWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisjaW5jbHVkZSAi
WExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKKyNpbmNsdWRlICJYTUxOYW1l
cy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3JzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBs
KiwgUXVhbGlmaWVkTmFtZUhhc2g+IFFOYW1lU2V0Oworc3RydWN0IFF1YWxpZmllZE5hbWVIYXNo
VHJhaXRzIDogcHVibGljIEhhc2hUcmFpdHM8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUlt
cGwqPiB7CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gV1RGOjpoYXNo
VGFibGVDYXBhY2l0eUZvclNpemU8CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQ+KEhU
TUxOYW1lczo6SFRNTFRhZ3NDb3VudCArIEhUTUxOYW1lczo6SFRNTEF0dHJzQ291bnQKKyNpZiBF
TkFCTEUoTUFUSE1MKQorICAgICAgICArIE1hdGhNTE5hbWVzOjpNYXRoTUxUYWdzQ291bnQgKyBN
YXRoTUxOYW1lczo6TWF0aE1MQXR0cnNDb3VudAorI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAg
ICAgICAgKyBTVkdOYW1lczo6U1ZHVGFnc0NvdW50ICsgU1ZHTmFtZXM6OlNWR0F0dHJzQ291bnQK
KyNlbmRpZgorICAgICAgICArIFhMaW5rTmFtZXM6OlhMaW5rQXR0cnNDb3VudAorICAgICAgICAr
IFhNTE5TTmFtZXM6OlhNTE5TQXR0cnNDb3VudAorICAgICAgICArIFhNTE5hbWVzOjpYTUxBdHRy
c0NvdW50KT46OnZhbHVlOworfTsKKwordHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1
YWxpZmllZE5hbWVJbXBsKiwgUXVhbGlmaWVkTmFtZUhhc2gsIFF1YWxpZmllZE5hbWVIYXNoVHJh
aXRzPiBRTmFtZVNldDsKIAogc3RydWN0IFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3IgewogICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBjb21w
b25lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA2ZTBhMDYxYzg2ZjkzMzYzMTdm
OTA1NWRhNjQxN2JlMDEzOGJiYzRhLi41ZDdhMjZkODM4NDhjZmI0Nzk5NmRjNWI3MzZiMGYyYjU3
ZjZjOGZmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjAwLDEwICs2MDAsMTIgQEAg
c3ViIHByaW50TmFtZXNIZWFkZXJGaWxlCiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7CiAKICAg
ICBpZiAoa2V5cyAlYWxsVGFncykgeworICAgICAgICBwcmludCBGICJjb25zdCBzaXplX3QgJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxUYWdzKSwg
IjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKICAgICB9CiAKICAgICBp
ZiAoa2V5cyAlYWxsQXR0cnMpIHsKKyAgICAgICAgcHJpbnQgRiAiY29uc3Qgc2l6ZV90ICRwYXJh
bWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50ID0gIiwgc2NhbGFyKGtleXMgJWFsbEF0dHJzKSwg
IjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153628</attachid>
            <date>2012-07-20 17:17:31 -0700</date>
            <delta_ts>2012-07-23 12:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120720171727.patch</filename>
            <type>text/plain</type>
            <size>6214</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRhOTY1NzE0M2Q2
NjdiMzA1ZWE0NGZjNTVhZjAuLmNkNjU3OTVlMDIzOTEzMDRkMmEwYTE5ZTg4MjliMGFiODZhYTA4
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0YXRpYyBzdHJ1Y3QgdG8gY29t
cHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGZvciBhbnkgZ2l2ZW4gc2l6ZSBhdCBjb21waWxl
IHRpbWUuCisgICAgICAgIFRoaXMgYWxsb3cgdXMgdG8gY3JlYXRlIEhhc2hUcmFpbnRzIGdpdmlu
ZyB0aGUgbWluaW11bVNpemUgd2l0aG91dCBoYXJkY29kaW5nIHRoZSB2YWx1ZXMuCisKKyAgICAg
ICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEYpOgorICAgICAgICAoaGFzaFRhYmxl
Q2FwYWNpdHlTaGlmdHMpOgorICAgICAgICAoaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQ
b3dlck9mVHdvTWludXNPbmUpOgorICAgICAgICAoaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplKToK
KwogMjAxMi0wNy0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IFRoZSBBVFNVSS1iYXNlZCBjb21wbGV4IHRleHQgY29kZSBpcyB1bnVzZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAzYzgwYjUxOTAyZjRhN2E2MTkyOGRhNjA0ZDhmMGM2YTFiNTQ3Y2I4Li45ZDRmMDJlNGE4NTA2
MzFkODk4ZjEwZDBlOGIyMjlhMjRiMGQyOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+ICYmIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBRdWFsaWZpZWRO
YW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3VnaCB0byBob2xkIGF0IGxlYXN0IGFsbCB0
aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFF1YWxpZmllZE5hbWUncyB0YWJsZSBoYXMgYSBzdGFuZGFyZCBzaXplIG9mIDY0IGJ1
Y2tldHMuIFdoZW4gaW5pdGlhbGl6aW5nIFdlYktpdCwKKyAgICAgICAgd2UgY3JlYXRlIDg1MCBz
dGF0aWMgUXVhbGlmaWVkTmFtZSBmb3IgdGhlIHN0YW5kYXJkIG5hbWVzIChIVE1MTmFtZXMsIFNW
R05hbWVzIGV0YykuCisKKyAgICAgICAgVGhlIHNtYWxsIGJhc2Ugc2l6ZSBmb3JjZXMgdXMgdG8g
Z3JvdyBhbmQgcmVoYXNoIHRoZSB0YWJsZSBzZXZlcmFsIHRpbWUgb24gc3RhcnR1cC4KKworICAg
ICAgICBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgaXNzdWUgYnkgZGVmaW5pbmcgdGhlIGluaXRpYWwg
dGFibGUgc2l6ZSB0byB0aGUgbWluaW11bSBzaXplIHRoYXQKKyAgICAgICAgY2FuIGhvbGQgYWxs
IHRoZSBzdGF0aWMgUXVhbGlmaWVkTmFtZS4KKworICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1l
LmNwcDoKKyAgICAgICAgKFF1YWxpZmllZE5hbWVIYXNoVHJhaXRzKToKKyAgICAgICAgKFdlYkNv
cmUpOgorCiAyMDEyLTA3LTIwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjEyMjg3Myk6IDE1JSByZWdyZXNzaW9uIG9uIERyb21hZW8vZG9t
LWF0dHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKaW5kZXggY2NmNjJkYzAwYjgxYjUzYWM3YjNmZGRhODNlNWQxZmQz
MjE2OTA1ZS4uMGQ1ODMyYzY1ZjJmOTkxNGE1OWU1OGMwYjBmZTY1MTIxZmQ0MTQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgKQEAgLTQ1NSw2ICs0NTUsMzEgQEAgbmFtZXNwYWNlIFdURiB7CiAjZW5kaWYKICAg
ICB9OwogCisgICAgLy8gVGhlIGZvbGxvd2luZyBjb21wdXRlIHRoZSB1cHBlciBwb3dlciBvZiB0
d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAgLy8gVGhpcyBpcyBk
b25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJhaXRzLgorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIHNoaWZ0PiBzdHJ1Y3QgaGFzaFRhYmxlQ2Fw
YWNpdHlTaGlmdHM7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAgICBzdHJ1Y3QgaGFz
aFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwgMT4geworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgdmFsdWUgPSAoc2l6ZSAtIDEpIHwgKHNpemUgLSAxKSA+PiAxOworICAgIH07CisgICAg
dGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc2hpZnQ+CisgICAgc3RydWN0IGhhc2hU
YWJsZUNhcGFjaXR5U2hpZnRzIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVl
ID0gaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwgKHNoaWZ0IC8gMik+Ojp2YWx1ZSB8IGhh
c2hUYWJsZUNhcGFjaXR5U2hpZnRzPHNpemUsIChzaGlmdCAvIDIpPjo6dmFsdWUgPj4gc2hpZnQ7
CisgICAgfTsKKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IGhhc2hU
YWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJPZlR3b01pbnVzT25lIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwg
MTY+Ojp2YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAgICBz
dHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZSwgSGFzaFRhYmxlTm9DYXBhY2l0eUZvck51bGxTaXplKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZhbHVlID0gKGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJP
ZlR3b01pbnVzT25lPHNpemU+Ojp2YWx1ZSArIDEpIDw8IDE7CisgICAgICAgIENPTVBJTEVfQVNT
RVJUKCFzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlID4+IDMwKSwgSGFzaFRhYmxlTm9DYXBhY2l0eU92
ZXJmbG93KTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQodmFsdWUgPiAoMiAqIHNpemUpLCBIYXNo
VGFibGVDYXBhY2l0eUhvbGRzQ29udGVudFNpemUpOworICAgIH07CisKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1l
IEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAg
IGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZSgpCiAgICAgICAgIDogbV90YWJsZSgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGUwODU1MDcwYTdjYjMyNTM0Y2NiZjhh
YjhkMDUyNjY3ZGEzMTlmMTUuLjBhMDZiYWExNmQ4ODdkYmJkY2FkNmM2OGExMGE5OGIyYWY2MTVi
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTI2LDEzICsyNiwzNyBA
QAogI2VuZGlmCiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2Vu
ZGlmCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisjaW5j
bHVkZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKKyNpbmNsdWRlICJY
TUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3JzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5h
bWVJbXBsKiwgUXVhbGlmaWVkTmFtZUhhc2g+IFFOYW1lU2V0Oworc3RydWN0IFF1YWxpZmllZE5h
bWVIYXNoVHJhaXRzIDogcHVibGljIEhhc2hUcmFpdHM8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVk
TmFtZUltcGwqPiB7CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gV1RG
OjpoYXNoVGFibGVDYXBhY2l0eUZvclNpemU8CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQ+KEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudCArIEhUTUxOYW1lczo6SFRNTEF0dHJzQ291bnQK
KyNpZiBFTkFCTEUoTUFUSE1MKQorICAgICAgICArIE1hdGhNTE5hbWVzOjpNYXRoTUxUYWdzQ291
bnQgKyBNYXRoTUxOYW1lczo6TWF0aE1MQXR0cnNDb3VudAorI2VuZGlmCisjaWYgRU5BQkxFKFNW
RykKKyAgICAgICAgKyBTVkdOYW1lczo6U1ZHVGFnc0NvdW50ICsgU1ZHTmFtZXM6OlNWR0F0dHJz
Q291bnQKKyNlbmRpZgorICAgICAgICArIFhMaW5rTmFtZXM6OlhMaW5rQXR0cnNDb3VudAorICAg
ICAgICArIFhNTE5TTmFtZXM6OlhNTE5TQXR0cnNDb3VudAorICAgICAgICArIFhNTE5hbWVzOjpY
TUxBdHRyc0NvdW50KT46OnZhbHVlOworfTsKKwordHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5h
bWU6OlF1YWxpZmllZE5hbWVJbXBsKiwgUXVhbGlmaWVkTmFtZUhhc2gsIFF1YWxpZmllZE5hbWVI
YXNoVHJhaXRzPiBRTmFtZVNldDsKIAogc3RydWN0IFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3Ig
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWVDb21wb25lbnRz
JiBjb21wb25lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA2ZTBhMDYxYzg2Zjkz
MzYzMTdmOTA1NWRhNjQxN2JlMDEzOGJiYzRhLi41ZDdhMjZkODM4NDhjZmI0Nzk5NmRjNWI3MzZi
MGYyYjU3ZjZjOGZmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5w
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjAwLDEwICs2MDAs
MTIgQEAgc3ViIHByaW50TmFtZXNIZWFkZXJGaWxlCiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7
CiAKICAgICBpZiAoa2V5cyAlYWxsVGFncykgeworICAgICAgICBwcmludCBGICJjb25zdCBzaXpl
X3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxU
YWdzKSwgIjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBn
ZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKICAgICB9CiAK
ICAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKKyAgICAgICAgcHJpbnQgRiAiY29uc3Qgc2l6ZV90
ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50ID0gIiwgc2NhbGFyKGtleXMgJWFsbEF0
dHJzKSwgIjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBn
ZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CiAgICAgfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>153649</attachid>
            <date>2012-07-20 23:15:24 -0700</date>
            <delta_ts>2012-07-20 23:15:24 -0700</delta_ts>
            <desc>[PROGRAM] Simple cpp program comparing the two approaches</desc>
            <filename>x.cpp</filename>
            <type>application/octet-stream</type>
            <size>3461</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">LyoKICogQ29tcGlsZSB3aXRoOgogKiB4Y3J1biBjbGFuZyB4LmNwcAogKi8KCiNpbmNsdWRlIDxz
dGRpby5oPgoKLy8gU2ltcGxlIHZlcnNpb246Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBzdHJ1
Y3Qgc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQb3dlck9mVHdvTWludXNPbmU7
CnRlbXBsYXRlPD4Kc3RydWN0IHNpbXBsZUhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93
ZXJPZlR3b01pbnVzT25lPDA+IHsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IDA7
Cn07CnRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CnN0cnVjdCBzaW1wbGVIYXNoVGFibGVDYXBhY2l0
eUZvclNpemVVcHBlclBvd2VyT2ZUd29NaW51c09uZSB7CiAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgdmFsdWUgPSBzaXplIHwgc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQb3dl
ck9mVHdvTWludXNPbmU8KHNpemUgPj4gMSk+Ojp2YWx1ZTsKfTsKCnRlbXBsYXRlPHVuc2lnbmVk
IHNpemU+IHN0cnVjdCBzaW1wbGVIYXNoVGFibGVDYXBhY2l0eUZvclNpemU7CnRlbXBsYXRlPD4K
c3RydWN0IHNpbXBsZUhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwwPiB7CiAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgdmFsdWUgPSAwOwp9Owp0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPgpzdHJ1Y3Qg
c2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB2YWx1ZSA9IChzaW1wbGVIYXNoVGFibGVDYXBhY2l0eUZvclNpemVVcHBlclBvd2VyT2ZUd29N
aW51c09uZTxzaXplIC0gMT46OnZhbHVlICsgMSkgPDwgMTsKfTsKCgovLyBZb3VyIHZlcnNpb246
CgojZGVmaW5lIEJJVFNfSU5fVU5TSUdORUQgKHNpemVvZih1bnNpZ25lZCkgKiA4KQoKdGVtcGxh
dGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgc2hpZnQ+IHN0cnVjdCBoYXNoVGFibGVDYXBhY2l0
eVNoaWZ0czsKdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4Kc3RydWN0IGhhc2hUYWJsZUNhcGFjaXR5
U2hpZnRzPHNpemUsIDE+IHsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IChzaXpl
IC0gMSkgfCAoc2l6ZSAtIDEpID4+IDE7Cn07CnRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2ln
bmVkIHNoaWZ0PgpzdHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHMgewogICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHZhbHVlID0gaGFzaFRhYmxlQ2FwYWNpdHlTaGlmdHM8c2l6ZSwgKHNoaWZ0
IC8gMik+Ojp2YWx1ZSB8IGhhc2hUYWJsZUNhcGFjaXR5U2hpZnRzPHNpemUsIChzaGlmdCAvIDIp
Pjo6dmFsdWUgPj4gc2hpZnQ7Cn07CnRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CnN0cnVjdCBoYXNo
VGFibGVDYXBhY2l0eUZvclNpemVVcHBlclBvd2VyT2ZUd29NaW51c09uZSB7CiAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgdmFsdWUgPSBoYXNoVGFibGVDYXBhY2l0eVNoaWZ0czxzaXplLCAoQklU
U19JTl9VTlNJR05FRCAvIDIpPjo6dmFsdWU7Cn07Cgp0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPgpz
dHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB2YWx1ZSA9IChoYXNoVGFibGVDYXBhY2l0eUZvclNpemVVcHBlclBvd2VyT2ZUd29NaW51c09u
ZTxzaXplPjo6dmFsdWUgKyAxKSA8PCAxOwp9OwoKCi8vIFRlc3RzCgpzdHJ1Y3QgU2ltcGxlVGVz
dCB7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUxID0gc2ltcGxlSGFzaFRhYmxlQ2Fw
YWNpdHlGb3JTaXplPDB1Pjo6dmFsdWU7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUy
ID0gc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPDF1Pjo6dmFsdWU7CiAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgdmFsdWUzID0gc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPDJ1
Pjo6dmFsdWU7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWU0ID0gc2ltcGxlSGFzaFRh
YmxlQ2FwYWNpdHlGb3JTaXplPDd1Pjo6dmFsdWU7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmFsdWU1ID0gc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPDh1Pjo6dmFsdWU7CiAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWU2ID0gc2ltcGxlSGFzaFRhYmxlQ2FwYWNpdHlGb3JT
aXplPDEwMHU+Ojp2YWx1ZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZTcgPSBzaW1w
bGVIYXNoVGFibGVDYXBhY2l0eUZvclNpemU8ODUwdT46OnZhbHVlOwogICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHZhbHVlOCA9IHNpbXBsZUhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwxMTExdT46
OnZhbHVlOwp9OwoKc3RydWN0IEJldHRlclRlc3QgewogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHZhbHVlMSA9IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwwdT46OnZhbHVlOwogICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHZhbHVlMiA9IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwxdT46OnZh
bHVlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlMyA9IGhhc2hUYWJsZUNhcGFjaXR5
Rm9yU2l6ZTwydT46OnZhbHVlOwogICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlNCA9IGhh
c2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTw3dT46OnZhbHVlOwogICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHZhbHVlNSA9IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTw4dT46OnZhbHVlOwogICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlNiA9IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwxMDB1
Pjo6dmFsdWU7CiAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWU3ID0gaGFzaFRhYmxlQ2Fw
YWNpdHlGb3JTaXplPDg1MHU+Ojp2YWx1ZTsKICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1
ZTggPSBoYXNoVGFibGVDYXBhY2l0eUZvclNpemU8MTExMXU+Ojp2YWx1ZTsKfTsKCi8vIFRlc3Qg
UnVubmVyCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBwcmludGYoIlNp
bXBsZVRlc3QgdmFsdWVzICV1ICV1ICV1ICV1ICV1ICV1ICV1ICV1XG4iLCBTaW1wbGVUZXN0Ojp2
YWx1ZTEsIFNpbXBsZVRlc3Q6OnZhbHVlMiwgU2ltcGxlVGVzdDo6dmFsdWUzLCBTaW1wbGVUZXN0
Ojp2YWx1ZTQsIFNpbXBsZVRlc3Q6OnZhbHVlNSwgU2ltcGxlVGVzdDo6dmFsdWU2LCBTaW1wbGVU
ZXN0Ojp2YWx1ZTcsIFNpbXBsZVRlc3Q6OnZhbHVlOCk7CiAgICBwcmludGYoIkJldHRlclRlc3Qg
dmFsdWVzICV1ICV1ICV1ICV1ICV1ICV1ICV1ICV1XG4iLCBCZXR0ZXJUZXN0Ojp2YWx1ZTEsIEJl
dHRlclRlc3Q6OnZhbHVlMiwgQmV0dGVyVGVzdDo6dmFsdWUzLCBCZXR0ZXJUZXN0Ojp2YWx1ZTQs
IEJldHRlclRlc3Q6OnZhbHVlNSwgQmV0dGVyVGVzdDo6dmFsdWU2LCBCZXR0ZXJUZXN0Ojp2YWx1
ZTcsIEJldHRlclRlc3Q6OnZhbHVlOCk7CiAgICByZXR1cm4gMDsKfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153839</attachid>
            <date>2012-07-23 12:28:19 -0700</date>
            <delta_ts>2012-07-23 14:58:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120723122811.patch</filename>
            <type>text/plain</type>
            <size>6105</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRhOTY1NzE0M2Q2
NjdiMzA1ZWE0NGZjNTVhZjAuLjU2MTk1MThiYzY3NzJiMzJjMDkxMDliNDc2M2Q2Y2I0ZjBjOGRh
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0YXRpYyBzdHJ1Y3QgdG8gY29t
cHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGZvciBhbnkgZ2l2ZW4gc2l6ZSBhdCBjb21waWxl
IHRpbWUuCisgICAgICAgIFRoaXMgYWxsb3cgdXMgdG8gY3JlYXRlIEhhc2hUcmFpdHMgZ2l2aW5n
IHRoZSBtaW5pbXVtU2l6ZSB3aXRob3V0IGhhcmRjb2RpbmcgdGhlIHZhbHVlcy4KKworICAgICAg
ICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChoYXNoVGFibGVD
YXBhY2l0eVNoaWZ0cyk6CisgICAgICAgIChoYXNoVGFibGVDYXBhY2l0eUZvclNpemVVcHBlclBv
d2VyT2ZUd29NaW51c09uZSk6CisgICAgICAgIChoYXNoVGFibGVDYXBhY2l0eUZvclNpemUpOgor
CiAyMDEyLTA3LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
VGhlIEFUU1VJLWJhc2VkIGNvbXBsZXggdGV4dCBjb2RlIGlzIHVudXNlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDNjODBiNTE5MDJmNGE3YTYxOTI4ZGE2MDRkOGYwYzZhMWI1NDdjYjguLjlkNGYwMmU0YTg1MDYz
MWQ4OThmMTBkMGU4YjIyOWEyNGIwZDI5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wNy0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4gJiYgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFF1YWxpZmllZE5h
bWUncyBIYXNoU2V0IHNob3VsZCBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYXQgbGVhc3QgYWxsIHRo
ZSBzdGF0aWMgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUXVhbGlmaWVkTmFtZSdzIHRhYmxlIGhhcyBhIHN0YW5kYXJkIHNpemUgb2YgNjQgYnVj
a2V0cy4gV2hlbiBpbml0aWFsaXppbmcgV2ViS2l0LAorICAgICAgICB3ZSBjcmVhdGUgODUwIHN0
YXRpYyBRdWFsaWZpZWROYW1lIGZvciB0aGUgc3RhbmRhcmQgbmFtZXMgKEhUTUxOYW1lcywgU1ZH
TmFtZXMgZXRjKS4KKworICAgICAgICBUaGUgc21hbGwgYmFzZSBzaXplIGZvcmNlcyB1cyB0byBn
cm93IGFuZCByZWhhc2ggdGhlIHRhYmxlIHNldmVyYWwgdGltZSBvbiBzdGFydHVwLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc29sdmVzIHRoZSBpc3N1ZSBieSBkZWZpbmluZyB0aGUgaW5pdGlhbCB0
YWJsZSBzaXplIHRvIHRoZSBtaW5pbXVtIHNpemUgdGhhdAorICAgICAgICBjYW4gaG9sZCBhbGwg
dGhlIHN0YXRpYyBRdWFsaWZpZWROYW1lLgorCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUu
Y3BwOgorICAgICAgICAoUXVhbGlmaWVkTmFtZUhhc2hUcmFpdHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisKIDIwMTItMDctMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTIyODczKTogMTUlIHJlZ3Jlc3Npb24gb24gRHJvbWFlby9kb20t
YXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoVGFibGUuaAppbmRleCBjY2Y2MmRjMDBiODFiNTNhYzdiM2ZkZGE4M2U1ZDFmZDMy
MTY5MDVlLi43MzlmYmYzMjlhZGIxZDc0MWY3Yjg4MWM4OGJiY2QwZjkzYTAxNmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VGFibGUuaApAQCAtNDU1LDYgKzQ1NSwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICNlbmRpZgogICAg
IH07CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIGNvbXB1dGVzIHRoZSB1cHBlciBwb3dlciBvZiB0
d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAgLy8gVGhpcyBpcyBk
b25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJhaXRzLgorICAgIHRl
bXBsYXRlPHVuc2lnbmVkIHNpemU+IHN0cnVjdCBoYXNoVGFibGVDYXBhY2l0eUZvclNpemVVcHBl
clBvd2VyT2ZUd29NaW51c09uZTsKKyAgICB0ZW1wbGF0ZTw+CisgICAgc3RydWN0IGhhc2hUYWJs
ZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJPZlR3b01pbnVzT25lPDA+IHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gMDsKKyAgICB9OworICAgIHRlbXBsYXRlPHVuc2ln
bmVkIHNpemU+CisgICAgc3RydWN0IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJP
ZlR3b01pbnVzT25lIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gc2l6
ZSB8IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJPZlR3b01pbnVzT25lPChzaXpl
ID4+IDEpPjo6dmFsdWU7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+IHN0
cnVjdCBoYXNoVGFibGVDYXBhY2l0eUZvclNpemU7CisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVj
dCBoYXNoVGFibGVDYXBhY2l0eUZvclNpemU8MD4geworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgdmFsdWUgPSAwOworICAgIH07CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAg
ICBzdHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHZhbHVlID0gKGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVwcGVyUG93ZXJPZlR3
b01pbnVzT25lPHNpemUgLSAxPjo6dmFsdWUgKyAxKSA8PCAxOworICAgICAgICBDT01QSUxFX0FT
U0VSVCghc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSA+PiAzMCksIEhhc2hUYWJsZU5vQ2FwYWNpdHlP
dmVyZmxvdyk7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHZhbHVlID4gKDIgKiBzaXplKSwgSGFz
aFRhYmxlQ2FwYWNpdHlIb2xkc0NvbnRlbnRTaXplKTsKKyAgICB9OworCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAg
ICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoKQogICAgICAgICA6IG1fdGFibGUoMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAppbmRleCBlMDg1NTA3MGE3Y2IzMjUzNGNjYmY4
YWI4ZDA1MjY2N2RhMzE5ZjE1Li4wYTA2YmFhMTZkODg3ZGJiZGNhZDZjNjhhMTBhOThiMmFmNjE1
YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC0yNiwxMyArMjYsMzcg
QEAKICNlbmRpZgogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNl
bmRpZgorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNlbmRpZgorI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJYTUxOU05hbWVzLmgiCisjaW5jbHVkZSAi
WE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N0YXRpY0NvbnN0cnVjdG9ycy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaFNldDxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWRO
YW1lSW1wbCosIFF1YWxpZmllZE5hbWVIYXNoPiBRTmFtZVNldDsKK3N0cnVjdCBRdWFsaWZpZWRO
YW1lSGFzaFRyYWl0cyA6IHB1YmxpYyBIYXNoVHJhaXRzPFF1YWxpZmllZE5hbWU6OlF1YWxpZmll
ZE5hbWVJbXBsKj4geworICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bVRhYmxlU2l6ZSA9IFdU
Rjo6aGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPAorICAgIHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkPihIVE1MTmFtZXM6OkhUTUxUYWdzQ291bnQgKyBIVE1MTmFtZXM6OkhUTUxBdHRyc0NvdW50
CisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICAgICAgKyBNYXRoTUxOYW1lczo6TWF0aE1MVGFnc0Nv
dW50ICsgTWF0aE1MTmFtZXM6Ok1hdGhNTEF0dHJzQ291bnQKKyNlbmRpZgorI2lmIEVOQUJMRShT
VkcpCisgICAgICAgICsgU1ZHTmFtZXM6OlNWR1RhZ3NDb3VudCArIFNWR05hbWVzOjpTVkdBdHRy
c0NvdW50CisjZW5kaWYKKyAgICAgICAgKyBYTGlua05hbWVzOjpYTGlua0F0dHJzQ291bnQKKyAg
ICAgICAgKyBYTUxOU05hbWVzOjpYTUxOU0F0dHJzQ291bnQKKyAgICAgICAgKyBYTUxOYW1lczo6
WE1MQXR0cnNDb3VudCk+Ojp2YWx1ZTsKK307CisKK3R5cGVkZWYgSGFzaFNldDxRdWFsaWZpZWRO
YW1lOjpRdWFsaWZpZWROYW1lSW1wbCosIFF1YWxpZmllZE5hbWVIYXNoLCBRdWFsaWZpZWROYW1l
SGFzaFRyYWl0cz4gUU5hbWVTZXQ7CiAKIHN0cnVjdCBRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9y
IHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBRdWFsaWZpZWROYW1lQ29tcG9uZW50
cyYgY29tcG9uZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVz
LnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXggNmUwYTA2MWM4NmY5
MzM2MzE3ZjkwNTVkYTY0MTdiZTAxMzhiYmM0YS4uODEyYWIyYjJlMmE0NGY2ZWQ1Y2JhY2UxOTUx
ZjAyZTE3MmU4NjQ1MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTYwMCwxMCArNjAw
LDEyIEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogICAgIHByaW50IEYgIiNlbmRpZlxuXG4i
OwogCiAgICAgaWYgKGtleXMgJWFsbFRhZ3MpIHsKKyAgICAgICAgcHJpbnQgRiAiY29uc3QgdW5z
aWduZWQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3NDb3VudCA9ICIsIHNjYWxhcihrZXlzICVh
bGxUYWdzKSwgIjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUq
KiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKICAgICB9
CiAKICAgICBpZiAoa2V5cyAlYWxsQXR0cnMpIHsKKyAgICAgICAgcHJpbnQgRiAiY29uc3QgdW5z
aWduZWQgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzQ291bnQgPSAiLCBzY2FsYXIoa2V5cyAl
YWxsQXR0cnMpLCAiO1xuIjsKICAgICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVhbGlmaWVkTmFt
ZSoqIGdldCRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRycyhzaXplX3QqIHNpemUpO1xuIjsKICAg
ICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153870</attachid>
            <date>2012-07-23 14:58:54 -0700</date>
            <delta_ts>2012-07-23 16:44:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120723145846.patch</filename>
            <type>text/plain</type>
            <size>14316</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRhOTY1NzE0M2Q2
NjdiMzA1ZWE0NGZjNTVhZjAuLjRiMTcxMTgxZmM5NjNjYjdmYTc4NmEyMzE0NjUzZWYyMzk2MGRh
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0YXRpYyBzdHJ1Y3QgdG8gY29t
cHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGZvciBhbnkgZ2l2ZW4gc2l6ZSBhdCBjb21waWxl
IHRpbWUuCisgICAgICAgIFRoaXMgYWxsb3cgdXMgdG8gY3JlYXRlIEhhc2hUcmFpdHMgZ2l2aW5n
IHRoZSBtaW5pbXVtU2l6ZSB3aXRob3V0IGhhcmRjb2RpbmcgdGhlIHZhbHVlcy4KKworICAgICAg
ICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZSk6
CisKIDIwMTItMDctMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaGUgQVRTVUktYmFzZWQgY29tcGxleCB0ZXh0IGNvZGUgaXMgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggM2M4MGI1MTkwMmY0YTdhNjE5MjhkYTYwNGQ4ZjBjNmExYjU0N2NiOC4uOWQ0ZjAyZTRhODUw
NjMxZDg5OGYxMGQwZThiMjI5YTI0YjBkMjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDEyLTA3LTIwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUXVhbGlmaWVk
TmFtZSdzIEhhc2hTZXQgc2hvdWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwg
dGhlIHN0YXRpYyBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBRdWFsaWZpZWROYW1lJ3MgdGFibGUgaGFzIGEgc3RhbmRhcmQgc2l6ZSBvZiA2NCBi
dWNrZXRzLiBXaGVuIGluaXRpYWxpemluZyBXZWJLaXQsCisgICAgICAgIHdlIGNyZWF0ZSA4NTAg
c3RhdGljIFF1YWxpZmllZE5hbWUgZm9yIHRoZSBzdGFuZGFyZCBuYW1lcyAoSFRNTE5hbWVzLCBT
VkdOYW1lcyBldGMpLgorCisgICAgICAgIFRoZSBzbWFsbCBiYXNlIHNpemUgZm9yY2VzIHVzIHRv
IGdyb3cgYW5kIHJlaGFzaCB0aGUgdGFibGUgc2V2ZXJhbCB0aW1lIG9uIHN0YXJ0dXAuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBzb2x2ZXMgdGhlIGlzc3VlIGJ5IGRlZmluaW5nIHRoZSBpbml0aWFs
IHRhYmxlIHNpemUgdG8gdGhlIG1pbmltdW0gc2l6ZSB0aGF0CisgICAgICAgIGNhbiBob2xkIGFs
bCB0aGUgc3RhdGljIFF1YWxpZmllZE5hbWUuCisKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFt
ZS5jcHA6CisgICAgICAgIChRdWFsaWZpZWROYW1lSGFzaFRyYWl0cyk6CisgICAgICAgIChXZWJD
b3JlKToKKwogMjAxMi0wNy0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIxMjI4NzMpOiAxNSUgcmVncmVzc2lvbiBvbiBEcm9tYWVvL2Rv
bS1hdHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IGNjZjYyZGMwMGI4MWI1M2FjN2IzZmRkYTgzZTVkMWZk
MzIxNjkwNWUuLmZmOTc0YzAzNzNiYTZiNjA1Y2I0NGIxNWRiMzI3ZGJlMDFlZjdhMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hUYWJsZS5oCkBAIC00NTUsNiArNDU1LDM2IEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlmCiAg
ICAgfTsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY29tcHV0ZXMgdGhlIHVwcGVyIHBvd2VyIG9m
IHR3byBjYXBhY2l0eSB0byBob2xkIHRoZSBzaXplIHBhcmFtZXRlci4KKyAgICAvLyBUaGlzIGlz
IGRvbmUgYXQgY29tcGlsZSB0aW1lIHRvIGluaXRpYWxpemUgdGhlIEhhc2hUcmFpdHMuCisgICAg
dGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gc3RydWN0IGhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVVw
cGVyUG93ZXJPZlR3b01pbnVzT25lOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1Y3QgaGFzaFRh
YmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQb3dlck9mVHdvTWludXNPbmU8MD4geworICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSAwOworICAgIH07CisgICAgdGVtcGxhdGU8dW5z
aWduZWQgc2l6ZT4KKyAgICBzdHJ1Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQb3dl
ck9mVHdvTWludXNPbmUgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBz
aXplIHwgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplVXBwZXJQb3dlck9mVHdvTWludXNPbmU8KHNp
emUgPj4gMSk+Ojp2YWx1ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwg
Ym9vbCBpc1Bvd2VyT2ZUd28+IHN0cnVjdCBoYXNoVGFibGVDYXBhY2l0eUZvclNpemVEZWNpZGVy
OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IGhhc2hUYWJsZUNhcGFj
aXR5Rm9yU2l6ZURlY2lkZXI8c2l6ZSwgdHJ1ZT4geworICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgdmFsdWUgPSBzaXplIDw8IDI7CisgICAgfTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBz
aXplPgorICAgIHN0cnVjdCBoYXNoVGFibGVDYXBhY2l0eUZvclNpemVEZWNpZGVyPHNpemUsIGZh
bHNlPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IChoYXNoVGFibGVD
YXBhY2l0eUZvclNpemVVcHBlclBvd2VyT2ZUd29NaW51c09uZTxzaXplIC0gMT46OnZhbHVlICsg
MSkgPDwgMTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KKyAgICBzdHJ1
Y3QgaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHZhbHVlID0gaGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplRGVjaWRlcjxzaXplLCAhKHNpemUg
JiAoc2l6ZSAtIDEpKT46OnZhbHVlOworICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplID4gMCwg
SGFzaFRhYmxlTm9uWmVyb01pbmltdW1DYXBhY2l0eSk7CisgICAgICAgIENPTVBJTEVfQVNTRVJU
KCFzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlID4+IDMwKSwgSGFzaFRhYmxlTm9DYXBhY2l0eU92ZXJm
bG93KTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQodmFsdWUgPiAoMiAqIHNpemUpLCBIYXNoVGFi
bGVDYXBhY2l0eUhvbGRzQ29udGVudFNpemUpOworICAgIH07CisKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIGlu
bGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZSgpCiAgICAgICAgIDogbV90YWJsZSgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IGUwODU1MDcwYTdjYjMyNTM0Y2NiZjhhYjhk
MDUyNjY3ZGEzMTlmMTUuLjBhMDZiYWExNmQ4ODdkYmJkY2FkNmM2OGExMGE5OGIyYWY2MTViNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTI2LDEzICsyNiwzNyBAQAog
I2VuZGlmCiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2VuZGlm
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisjaW5jbHVk
ZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKKyNpbmNsdWRlICJYTUxO
YW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvU3RhdGljQ29uc3RydWN0b3JzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJ
bXBsKiwgUXVhbGlmaWVkTmFtZUhhc2g+IFFOYW1lU2V0Oworc3RydWN0IFF1YWxpZmllZE5hbWVI
YXNoVHJhaXRzIDogcHVibGljIEhhc2hUcmFpdHM8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFt
ZUltcGwqPiB7CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gV1RGOjpo
YXNoVGFibGVDYXBhY2l0eUZvclNpemU8CisgICAgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQ+
KEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudCArIEhUTUxOYW1lczo6SFRNTEF0dHJzQ291bnQKKyNp
ZiBFTkFCTEUoTUFUSE1MKQorICAgICAgICArIE1hdGhNTE5hbWVzOjpNYXRoTUxUYWdzQ291bnQg
KyBNYXRoTUxOYW1lczo6TWF0aE1MQXR0cnNDb3VudAorI2VuZGlmCisjaWYgRU5BQkxFKFNWRykK
KyAgICAgICAgKyBTVkdOYW1lczo6U1ZHVGFnc0NvdW50ICsgU1ZHTmFtZXM6OlNWR0F0dHJzQ291
bnQKKyNlbmRpZgorICAgICAgICArIFhMaW5rTmFtZXM6OlhMaW5rQXR0cnNDb3VudAorICAgICAg
ICArIFhNTE5TTmFtZXM6OlhNTE5TQXR0cnNDb3VudAorICAgICAgICArIFhNTE5hbWVzOjpYTUxB
dHRyc0NvdW50KT46OnZhbHVlOworfTsKKwordHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6
OlF1YWxpZmllZE5hbWVJbXBsKiwgUXVhbGlmaWVkTmFtZUhhc2gsIFF1YWxpZmllZE5hbWVIYXNo
VHJhaXRzPiBRTmFtZVNldDsKIAogc3RydWN0IFFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3Igewog
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBj
b21wb25lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA2ZTBhMDYxYzg2ZjkzMzYz
MTdmOTA1NWRhNjQxN2JlMDEzOGJiYzRhLi44MTJhYjJiMmUyYTQ0ZjZlZDVjYmFjZTE5NTFmMDJl
MTcyZTg2NDUxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjAwLDEwICs2MDAsMTIg
QEAgc3ViIHByaW50TmFtZXNIZWFkZXJGaWxlCiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7CiAK
ICAgICBpZiAoa2V5cyAlYWxsVGFncykgeworICAgICAgICBwcmludCBGICJjb25zdCB1bnNpZ25l
ZCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnc0NvdW50ID0gIiwgc2NhbGFyKGtleXMgJWFsbFRh
Z3MpLCAiO1xuIjsKICAgICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdl
dCRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzKHNpemVfdCogc2l6ZSk7XG4iOwogICAgIH0KIAog
ICAgIGlmIChrZXlzICVhbGxBdHRycykgeworICAgICAgICBwcmludCBGICJjb25zdCB1bnNpZ25l
ZCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnNDb3VudCA9ICIsIHNjYWxhcihrZXlzICVhbGxB
dHRycyksICI7XG4iOwogICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiog
Z2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKHNpemVfdCogc2l6ZSk7XG4iOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVm
NTg3NDY0ZWI0ODI0MmJjMmFhZjgzZjQ0NmRhZGNjNjM3MTZkN2YuLmQ1ZDFhMGI0MjNmZWE1ODk0
YjJmOTliNmVlMGIyMmQzOTgzMzk4OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0yMCAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4gJiYgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFF1YWxpZmllZE5hbWUncyBIYXNoU2V0IHNob3VsZCBi
ZSBiaWcgZW5vdWdoIHRvIGhvbGQgYXQgbGVhc3QgYWxsIHRoZSBzdGF0aWMgbmFtZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODkxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3Ig
V1RGOjpoYXNoVGFibGVDYXBhY2l0eUZvclNpemUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJKToKKyAgICAgICAgKEluaXRpYWxDYXBhY2l0eVRlc3RIYXNoVHJhaXRzKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RJbml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Z2VuZXJhdGVUZXN0Q2FwYWNpdHlVcFRvU2l6ZSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxMi0wNy0yMCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvbid0IGluY2x1ZGUgV2ViQ29yZSBo
ZWFkZXJzIGluIFRlc3RJbnRlcmZhY2VzIHNvIGl0J3Mgc2FmZSB0byBpbmNsdWRlIGZyb20gb3V0
c2lkZSBvZiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2Mzg0ZTNiYjRmZjcw
ZGYwNTJhNmM4ZTk0OTFkMWMxN2RiZjcyYTQuLmM1OGNiNmFhMjFmZTk4OWMwNmEwMmI0OTA2ZTY5
Y2NkNjA5NjhhNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMSw2ICsyMSw3IEBACiAJ
CTFBREJFRkUzMTMwQzZBQTEwMEQ2MUQxOSAvKiBzaW1wbGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRp
bmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQURCRUZCQzEzMEM2QTAxMDBENjFEMTkgLyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBv
c2l0aW5nLmh0bWwgKi87IH07CiAJCTFBRURFMjI2MTNFNUU3RTcwMEU2MkZFOCAvKiBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUVERTIyNDEzRTVFN0EwMDBFNjJGRTggLyogSW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyTWFjLm1tICovOyB9OwogCQkyNjE1MTZENjE1QjBFNjA1MDBBMkMyMDEgLyogU2V0
QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDI2MTUxNkQ1MTVCMEU2MDUwMEEyQzIwMSAvKiBTZXRBbmRVcGRhdGVDYWNo
ZU1vZGVsLm1tICovOyB9OworCQkyNkIyREZGOTE1QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkIyREZG
ODE1QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNldC5jcHAgKi87IH07CiAJCTI2REY1QTVFMTVBMjlC
QUEwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjZERjVBNUQxNUEyOUJB
QTAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07
CiAJCTI2REY1QTYzMTVBMkEyN0UwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjZERjVBNjExNUEyQTIyQjAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJMzMzQjlDRTIxMjc3RjIzMTAwRkVGQ0Uz
IC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVt
cHR5VXNlckFnZW50LmNwcCAqLzsgfTsKQEAgLTI0NSw2ICsyNDYsNyBAQAogCQkxQURCRUZCQzEz
MEM2QTAxMDBENjFEMTkgLyogc2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAic2ltcGxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5n
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUVERTIyNDEzRTVFN0EwMDBF
NjJGRTggLyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjE1MTZENTE1QjBFNjA1MDBBMkMyMDEgLyog
U2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhhc2hTZXQuY3BwOyBwYXRoID0gV1RGL0hh
c2hTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNkRGNUE1RDE1QTI5QkFB
MDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENhbmNlbExvYWRGcm9tUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2REY1QTYxMTVB
MkEyMkIwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzM0I5Q0UxMTI3N0Yy
MzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMCw2ICs2MjIsNyBAQAogCQkJCUE3QTk2NkRBMTQwRUND
QzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTFB
QTlFNTU3MTQ5ODBBOTkwMDAwMUE4QSAvKiBGdW5jdGlvbmFsLmNwcCAqLywKIAkJCQkwQkNEODMz
NDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi8sCisJCQkJMjZCMkRGRjgxNUJERTU5
OTAwNEY2OTFEIC8qIEhhc2hTZXQuY3BwICovLAogCQkJCTgxQjUwMTkyMTQwRjIzMjMwMEQ5RUI1
OCAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLywKIAkJCQlDMDEzNjNDNzEzQzM5OTczMDBFRjM5NjQg
LyogU3RyaW5nT3BlcmF0b3JzLmNwcCAqLywKIAkJCQkwQkNEODU2OTE0ODVDOThCMDBFQTIwMDMg
LyogVGVtcG9yYXJ5Q2hhbmdlLmNwcCAqLywKQEAgLTk0NSw2ICs5NDgsNyBAQAogCQkJCTBGMTdC
QkQ2MTVBRjZDNEQwMDdBQjc1MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjYxNTE2RDYxNUIwRTYwNTAwQTJDMjAxIC8qIFNldEFu
ZFVwZGF0ZUNhY2hlTW9kZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUUyMDI3MzE1QjIxODE5
MDBDMTNFMTQgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gaW4gU291cmNlcyAqLywK
KwkJCQkyNkIyREZGOTE1QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTUzYmE3NzU5ZGU4ZTIxYTkzYjZlOGQ0Yzg5ZTZiMTRjNjQxOWU0MgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3RlbXBsYXRlPGludCBp
bml0aWFsQ2FwYWNpdHk+CisgICAgc3RydWN0IEluaXRpYWxDYXBhY2l0eVRlc3RIYXNoVHJhaXRz
IDogcHVibGljIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50PiB7CisgICAg
c3RhdGljIGNvbnN0IGludCBtaW5pbXVtVGFibGVTaXplID0gaW5pdGlhbENhcGFjaXR5OworfTsK
KwordGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4KK3ZvaWQgdGVzdEluaXRpYWxDYXBhY2l0eSgpCit7
CisgICAgY29uc3QgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5ID0gV1RGOjpoYXNoVGFibGVDYXBh
Y2l0eUZvclNpemU8c2l6ZT46OnZhbHVlOworICAgIEhhc2hTZXQ8aW50LCBEZWZhdWx0SGFzaDxp
bnQ+OjpIYXNoLCBJbml0aWFsQ2FwYWNpdHlUZXN0SGFzaFRyYWl0czxpbml0aWFsQ2FwYWNpdHk+
ID4gdGVzdFNldDsKKworICAgIC8vIEluaXRpYWwgY2FwYWNpdHkgaXMgbnVsbC4KKyAgICBBU1NF
UlRfRVEoMCwgdGVzdFNldC5jYXBhY2l0eSgpKTsKKworICAgIC8vIEFkZGluZyBpdGVtcyB1cCB0
byBzaXplIHNob3VsZCBuZXZlciBjaGFuZ2UgdGhlIGNhcGFjaXR5LgorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIHRlc3RTZXQuYWRkKGkpOworICAgICAg
ICBBU1NFUlRfRVEoaW5pdGlhbENhcGFjaXR5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGVzdFNl
dC5jYXBhY2l0eSgpKSk7CisgICAgfQorCisgICAgLy8gQWRkaW5nIG9uZSBtb3JlIGl0ZW0gbWF5
IGNoYW5nZSB0aGUgY2FwYWNpdHkuCisgICAgdGVzdFNldC5hZGQoaW5pdGlhbENhcGFjaXR5KTsK
KyAgICBFWFBFQ1RfR0Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRlc3RTZXQuY2FwYWNpdHkoKSks
IGluaXRpYWxDYXBhY2l0eSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIHNpemU+IHZvaWQgZ2Vu
ZXJhdGVUZXN0Q2FwYWNpdHlVcFRvU2l6ZSgpOwordGVtcGxhdGU8PiB2b2lkIGdlbmVyYXRlVGVz
dENhcGFjaXR5VXBUb1NpemU8MD4oKQoreworfQordGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gdm9p
ZCBnZW5lcmF0ZVRlc3RDYXBhY2l0eVVwVG9TaXplKCkKK3sKKyAgICBnZW5lcmF0ZVRlc3RDYXBh
Y2l0eVVwVG9TaXplPHNpemUgLSAxPigpOworICAgIHRlc3RJbml0aWFsQ2FwYWNpdHk8c2l6ZT4o
KTsKK30KKworVEVTVChXVEYsIEhhc2hTZXRJbml0aWFsQ2FwYWNpdHkpCit7CisgICAgZ2VuZXJh
dGVUZXN0Q2FwYWNpdHlVcFRvU2l6ZTwxMjg+KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153897</attachid>
            <date>2012-07-23 16:44:44 -0700</date>
            <delta_ts>2012-07-23 17:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120723164436.patch</filename>
            <type>text/plain</type>
            <size>11939</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgxNTM1OTc4NDI2NjRhOTY1NzE0M2Q2
NjdiMzA1ZWE0NGZjNTVhZjAuLjBjMzMzZjRlNWQ2M2IwZWMxNmJhYjZmZjAyNTRhNTU2ODA3Zjdk
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDctMjAgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBIYXNoVGFibGUgY29uZGl0aW9u
IHNob3VsZEV4cGFuZCgpIHRvIGV4cGFuZCB3aGVuIHRoZSB3ZSBhcmUgb3ZlciB0aGUgbV9tYXhM
b2FkIGluc3RlYWQKKyAgICAgICAgb2YgYmVpbmcgYXQgdGhlIG1heCBsb2FkLgorICAgICAgICBU
aGlzIGNoYW5nZSBpcyBtYWRlIHRvOgorICAgICAgICAtQXZvaWQgY3JlYXRpbmcgdGFibGUgd2l0
aCBhIGNhcGFjaXR5IG9mIDQgdGltZSB0aGUgc2l6ZSBmb3IgcG93ZXIgb2YgdHdvIHNpemVzLgor
ICAgICAgICAtU2ltcGxpZnkgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBiZXN0IGNhcGFjaXR5IGZv
ciBhIGdpdmVuIHNpemUuCisKKyAgICAgICAgQWRkIGEgc3RhdGljIHN0cnVjdCB0byBjb21wdXRl
IHRoZSBIYXNoVGFibGUgY2FwYWNpdHkgZm9yIGFueSBnaXZlbiBzaXplIGF0IGNvbXBpbGUgdGlt
ZS4KKyAgICAgICAgVGhpcyBhbGxvdyB1cyB0byBjcmVhdGUgSGFzaFRyYWl0cyBnaXZpbmcgdGhl
IG1pbmltdW1TaXplIHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgdmFsdWVzLgorCisgICAgICAgICog
d3RmL0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpIYXNoVGFibGU6OnNob3VsZEV4cGFuZCk6
IENoYW5nZSB0aGUgY29uZGl0aW9uIHRvIG9ubHkgZXhwZW5kIHdoZW4gZ29pbmcgb3ZlcgorICAg
ICAgICB0aGUgbWF4IGxvYWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoT25laWZ5TG93Qml0
cyk6CisgICAgICAgIChVcHBlclBvd2VyT2ZUd29Cb3VuZCk6CisgICAgICAgIChIYXNoVGFibGVD
YXBhY2l0eUZvclNpemUpOgorCiAyMDEyLTA3LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVGhlIEFUU1VJLWJhc2VkIGNvbXBsZXggdGV4dCBjb2RlIGlzIHVu
dXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDNjODBiNTE5MDJmNGE3YTYxOTI4ZGE2MDRkOGYwYzZhMWI1NDdj
YjguLjlkNGYwMmU0YTg1MDYzMWQ4OThmMTBkMGU4YjIyOWEyNGIwZDI5MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNy0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4gJiYgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFF1YWxpZmllZE5hbWUncyBIYXNoU2V0IHNob3VsZCBiZSBiaWcgZW5vdWdoIHRvIGhv
bGQgYXQgbGVhc3QgYWxsIHRoZSBzdGF0aWMgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxODkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUXVhbGlmaWVkTmFtZSdzIHRhYmxlIGhhcyBhIHN0YW5k
YXJkIHNpemUgb2YgNjQgYnVja2V0cy4gV2hlbiBpbml0aWFsaXppbmcgV2ViS2l0LAorICAgICAg
ICB3ZSBjcmVhdGUgODUwIHN0YXRpYyBRdWFsaWZpZWROYW1lIGZvciB0aGUgc3RhbmRhcmQgbmFt
ZXMgKEhUTUxOYW1lcywgU1ZHTmFtZXMgZXRjKS4KKworICAgICAgICBUaGUgc21hbGwgYmFzZSBz
aXplIGZvcmNlcyB1cyB0byBncm93IGFuZCByZWhhc2ggdGhlIHRhYmxlIHNldmVyYWwgdGltZSBv
biBzdGFydHVwLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc29sdmVzIHRoZSBpc3N1ZSBieSBkZWZp
bmluZyB0aGUgaW5pdGlhbCB0YWJsZSBzaXplIHRvIHRoZSBtaW5pbXVtIHNpemUgdGhhdAorICAg
ICAgICBjYW4gaG9sZCBhbGwgdGhlIHN0YXRpYyBRdWFsaWZpZWROYW1lLgorCisgICAgICAgICog
ZG9tL1F1YWxpZmllZE5hbWUuY3BwOgorICAgICAgICAoUXVhbGlmaWVkTmFtZUhhc2hUcmFpdHMp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDctMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTIyODczKTogMTUlIHJlZ3Jlc3Np
b24gb24gRHJvbWFlby9kb20tYXR0cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCBjY2Y2MmRjMDBiODFiNTNh
YzdiM2ZkZGE4M2U1ZDFmZDMyMTY5MDVlLi5lNThiOTllN2ExNDRkMWMzZWY1OTNiY2Q2ZjkyOGVi
ZDMyODAyMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNDA1LDcgKzQwNSw3IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgICAgICB2b2lkIHJlbW92ZUFuZEludmFsaWRhdGUoVmFsdWVUeXBlKik7CiAgICAg
ICAgIHZvaWQgcmVtb3ZlKFZhbHVlVHlwZSopOwogCi0gICAgICAgIGJvb2wgc2hvdWxkRXhwYW5k
KCkgY29uc3QgeyByZXR1cm4gKG1fa2V5Q291bnQgKyBtX2RlbGV0ZWRDb3VudCkgKiBtX21heExv
YWQgPj0gbV90YWJsZVNpemU7IH0KKyAgICAgICAgYm9vbCBzaG91bGRFeHBhbmQoKSBjb25zdCB7
IHJldHVybiAobV9rZXlDb3VudCArIG1fZGVsZXRlZENvdW50KSAqIG1fbWF4TG9hZCA+IG1fdGFi
bGVTaXplOyB9CiAgICAgICAgIGJvb2wgbXVzdFJlaGFzaEluUGxhY2UoKSBjb25zdCB7IHJldHVy
biBtX2tleUNvdW50ICogbV9taW5Mb2FkIDwgbV90YWJsZVNpemUgKiAyOyB9CiAgICAgICAgIGJv
b2wgc2hvdWxkU2hyaW5rKCkgY29uc3QgeyByZXR1cm4gbV9rZXlDb3VudCAqIG1fbWluTG9hZCA8
IG1fdGFibGVTaXplICYmIG1fdGFibGVTaXplID4gS2V5VHJhaXRzOjptaW5pbXVtVGFibGVTaXpl
OyB9CiAgICAgICAgIHZvaWQgZXhwYW5kKCk7CkBAIC00NTUsNiArNDU1LDMwIEBAIG5hbWVzcGFj
ZSBXVEYgewogI2VuZGlmCiAgICAgfTsKIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgY29tcHV0ZXMg
dGhlIHVwcGVyIHBvd2VyIG9mIHR3byBjYXBhY2l0eSB0byBob2xkIHRoZSBzaXplIHBhcmFtZXRl
ci4KKyAgICAvLyBUaGlzIGlzIGRvbmUgYXQgY29tcGlsZSB0aW1lIHRvIGluaXRpYWxpemUgdGhl
IEhhc2hUcmFpdHMuCisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gc3RydWN0IE9uZWlmeUxv
d0JpdHM7CisgICAgdGVtcGxhdGU8PgorICAgIHN0cnVjdCBPbmVpZnlMb3dCaXRzPDA+IHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gMDsKKyAgICB9OworICAgIHRlbXBs
YXRlPHVuc2lnbmVkIG51bWJlcj4KKyAgICBzdHJ1Y3QgT25laWZ5TG93Qml0cyB7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IG51bWJlciB8IE9uZWlmeUxvd0JpdHM8KG51
bWJlciA+PiAxKT46OnZhbHVlOworICAgIH07CisgICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtYmVy
PgorICAgIHN0cnVjdCBVcHBlclBvd2VyT2ZUd29Cb3VuZCB7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB2YWx1ZSA9IChPbmVpZnlMb3dCaXRzPG51bWJlciAtIDE+Ojp2YWx1ZSArIDEp
IDw8IDE7CisgICAgfTsKKworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0
IEhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB2YWx1ZSA9IFVwcGVyUG93ZXJPZlR3b0JvdW5kPHNpemU+Ojp2YWx1ZTsKKyAgICAgICAgQ09N
UElMRV9BU1NFUlQoc2l6ZSA+IDAsIEhhc2hUYWJsZU5vblplcm9NaW5pbXVtQ2FwYWNpdHkpOwor
ICAgICAgICBDT01QSUxFX0FTU0VSVCghc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSA+PiAzMSksIEhh
c2hUYWJsZU5vQ2FwYWNpdHlPdmVyZmxvdyk7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHZhbHVl
ID49ICgyICogc2l6ZSksIEhhc2hUYWJsZUNhcGFjaXR5SG9sZHNDb250ZW50U2l6ZSk7CisgICAg
fTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1l
IEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBl
bmFtZSBLZXlUcmFpdHM+CiAgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKCkKICAgICAg
ICAgOiBtX3RhYmxlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggZTA4
NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYxNS4uMTUxNjA4NDlkMmU0OTU3MTIz
YjMxNzk0NDkzN2MwOGE5OTNkODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cApAQCAtMjYsMTMgKzI2LDM3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUg
Ik1hdGhNTE5hbWVzLmgiCisjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR05h
bWVzLmgiCisjZW5kaWYKKyNpbmNsdWRlICJYTGlua05hbWVzLmgiCisjaW5jbHVkZSAiWE1MTlNO
YW1lcy5oIgorI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdGF0aWNDb25zdHJ1
Y3RvcnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hTZXQ8UXVhbGlm
aWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqLCBRdWFsaWZpZWROYW1lSGFzaD4gUU5hbWVTZXQ7
CitzdHJ1Y3QgUXVhbGlmaWVkTmFtZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRyYWl0czxRdWFs
aWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCo+IHsKKyAgICBzdGF0aWMgY29uc3QgaW50IG1p
bmltdW1UYWJsZVNpemUgPSBXVEY6Okhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTwKKyAgICBzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZD4oSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50ICsgSFRNTE5h
bWVzOjpIVE1MQXR0cnNDb3VudAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgICAgICsgTWF0aE1M
TmFtZXM6Ok1hdGhNTFRhZ3NDb3VudCArIE1hdGhNTE5hbWVzOjpNYXRoTUxBdHRyc0NvdW50Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICArIFNWR05hbWVzOjpTVkdUYWdzQ291bnQg
KyBTVkdOYW1lczo6U1ZHQXR0cnNDb3VudAorI2VuZGlmCisgICAgICAgICsgWExpbmtOYW1lczo6
WExpbmtBdHRyc0NvdW50CisgICAgICAgICsgWE1MTlNOYW1lczo6WE1MTlNBdHRyc0NvdW50Cisg
ICAgICAgICsgWE1MTmFtZXM6OlhNTEF0dHJzQ291bnQpPjo6dmFsdWU7Cit9OworCit0eXBlZGVm
IEhhc2hTZXQ8UXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqLCBRdWFsaWZpZWROYW1l
SGFzaCwgUXVhbGlmaWVkTmFtZUhhc2hUcmFpdHM+IFFOYW1lU2V0OwogCiBzdHJ1Y3QgUU5hbWVD
b21wb25lbnRzVHJhbnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUXVh
bGlmaWVkTmFtZUNvbXBvbmVudHMmIGNvbXBvbmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
CmluZGV4IDZlMGEwNjFjODZmOTMzNjMxN2Y5MDU1ZGE2NDE3YmUwMTM4YmJjNGEuLjgxMmFiMmIy
ZTJhNDRmNmVkNWNiYWNlMTk1MWYwMmUxNzJlODY0NTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVz
LnBsCkBAIC02MDAsMTAgKzYwMCwxMiBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKICAgICBw
cmludCBGICIjZW5kaWZcblxuIjsKIAogICAgIGlmIChrZXlzICVhbGxUYWdzKSB7CisgICAgICAg
IHByaW50IEYgImNvbnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzQ291bnQg
PSAiLCBzY2FsYXIoa2V5cyAlYWxsVGFncyksICI7XG4iOwogICAgICAgICBwcmludCBGICJXZWJD
b3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3Moc2l6ZV90
KiBzaXplKTtcbiI7CiAgICAgfQogCiAgICAgaWYgKGtleXMgJWFsbEF0dHJzKSB7CisgICAgICAg
IHByaW50IEYgImNvbnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50
ID0gIiwgc2NhbGFyKGtleXMgJWFsbEF0dHJzKSwgIjtcbiI7CiAgICAgICAgIHByaW50IEYgIldl
YkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoc2l6
ZV90KiBzaXplKTtcbiI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZWY1ODc0NjRlYjQ4MjQyYmMyYWFmODNmNDQ2ZGFkY2M2Mzcx
NmQ3Zi4uZDVkMWEwYjQyM2ZlYTU4OTRiMmY5OWI2ZWUwYjIyZDM5ODMzOTg4ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDEyLTA3LTIwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUXVhbGlmaWVk
TmFtZSdzIEhhc2hTZXQgc2hvdWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwg
dGhlIHN0YXRpYyBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE4OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSB0ZXN0IGZvciBXVEY6Omhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoSW5pdGlhbENhcGFjaXR5
VGVzdEhhc2hUcmFpdHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdEluaXRpYWxDYXBh
Y2l0eSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZW5lcmF0ZVRlc3RDYXBhY2l0eVVwVG9T
aXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDEyLTA3LTIwICBKb2No
ZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
RG9uJ3QgaW5jbHVkZSBXZWJDb3JlIGhlYWRlcnMgaW4gVGVzdEludGVyZmFjZXMgc28gaXQncyBz
YWZlIHRvIGluY2x1ZGUgZnJvbSBvdXRzaWRlIG9mIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMjYzODRlM2JiNGZmNzBkZjA1MmE2YzhlOTQ5MWQxYzE3ZGJmNzJhNC4uYzU4Y2I2
YWEyMWZlOTg5YzA2YTAyYjQ5MDZlNjljY2Q2MDk2OGE3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxLDYgKzIxLDcgQEAKIAkJMUFEQkVGRTMxMzBDNkFBMTAwRDYxRDE5IC8qIHNpbXBs
ZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBREJFRkJDMTMwQzZBMDEwMEQ2MUQxOSAvKiBz
aW1wbGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcuaHRtbCAqLzsgfTsKIAkJMUFFREUyMjYxM0U1
RTdFNzAwRTYyRkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRURFMjI0MTNFNUU3QTAwMEU2
MkZFOCAvKiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCTI2MTUxNkQ2
MTVCMEU2MDUwMEEyQzIwMSAvKiBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYxNTE2RDUxNUIwRTYwNTAwQTJD
MjAxIC8qIFNldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0gKi87IH07CisJCTI2QjJERkY5MTVCREU1
OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAq
LzsgfTsKIAkJMjZERjVBNUUxNUEyOUJBQTAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNkRGNUE1RDE1QTI5QkFBMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJMjZERjVBNjMxNUEyQTI3RTAwMzY4OUMyIC8qIENh
bmNlbExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNkRGNUE2MTE1QTJBMjJCMDAzNjg5
QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQkz
MzNCOUNFMjEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0I5Q0UxMTI3N0Yy
MzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwICovOyB9OwpAQCAtMjQ1LDYg
KzI0Niw3IEBACiAJCTFBREJFRkJDMTMwQzZBMDEwMEQ2MUQxOSAvKiBzaW1wbGUtYWNjZWxlcmF0
ZWQtY29tcG9zaXRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaW1wbGUt
YWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBRURFMjI0MTNFNUU3QTAwMEU2MkZFOCAvKiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MTUx
NkQ1MTVCMEU2MDUwMEEyQzIwMSAvKiBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZCMkRGRjgxNUJERTU5OTAwNEY2OTFE
IC8qIEhhc2hTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGFz
aFNldC5jcHA7IHBhdGggPSBXVEYvSGFzaFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI2REY1QTVEMTVBMjlCQUEwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNl
TG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q2FuY2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjZERjVBNjExNUEyQTIyQjAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENhbmNl
bExvYWRGcm9tUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlV
c2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwLDYgKzYyMiw3
IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgKi8sCiAJCQkJMUFBOUU1NTcxNDk4MEE5OTAwMDAxQThBIC8qIEZ1bmN0aW9u
YWwuY3BwICovLAogCQkJCTBCQ0Q4MzM0MTQ4NTdDRTQwMEVBMjAwMyAvKiBIYXNoTWFwLmNwcCAq
LywKKwkJCQkyNkIyREZGODE1QkRFNTk5MDA0RjY5MUQgLyogSGFzaFNldC5jcHAgKi8sCiAJCQkJ
ODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovLAogCQkJCUMw
MTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwICovLAogCQkJCTBC
Q0Q4NTY5MTQ4NUM5OEIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuY3BwICovLApAQCAtOTQ1
LDYgKzk0OCw3IEBACiAJCQkJMEYxN0JCRDYxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0
aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjE1MTZENjE1
QjBFNjA1MDBBMkMyMDEgLyogU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE1RTIwMjczMTVCMjE4MTkwMEMxM0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhN
ZWRpYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTI2QjJERkY5MTVCREU1OTkwMDRGNjkxRCAvKiBI
YXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153922</attachid>
            <date>2012-07-23 17:55:15 -0700</date>
            <delta_ts>2012-07-23 18:05:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91891-20120723175507.patch</filename>
            <type>text/plain</type>
            <size>15044</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDgzZDA5YzI4ZDlhNzg1ODI3ZjIwZWE4
ZDk3ZTY2YzliNzlkMTFiYmEuLjA2Yzg0NmU3YTY5Njc0Y2MwYzc0YTYzZWY5Nzc2MTAyMWE0ZDZl
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMjMgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+ICYmIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBRdWFsaWZpZWROYW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3Vn
aCB0byBob2xkIGF0IGxlYXN0IGFsbCB0aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN0YXRpYyBzdHJ1Y3QgdG8gY29t
cHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGZvciBhbnkgZ2l2ZW4gc2l6ZSBhdCBjb21waWxl
IHRpbWUuCisgICAgICAgIFRoaXMgYWxsb3cgdXMgdG8gY3JlYXRlIEhhc2hUcmFpdHMgZ2l2aW5n
IHRoZSBtaW5pbXVtU2l6ZSB3aXRob3V0IGhhcmRjb2RpbmcgdGhlIHZhbHVlcy4KKworICAgICAg
ICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKE9uZWlmeUxvd0JpdHMpOgorICAgICAgICAo
VXBwZXJQb3dlck9mVHdvQm91bmQpOgorICAgICAgICAoSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXpl
KTogQ29tcHV0ZSB0aGUgSGFzaFRhYmxlIGNhcGFjaXR5IGF0IGNvbXBpbGUgdGltZS4KKwogMjAx
Mi0wNy0yMyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBNZXJnZSBjcmVhdGVUaHJlYWRJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxODY5MjAzYzY5MTQ5Zjc2YTQ5N2U2OWE5MmI0Y2UyYTJmMThlYWI1Li4yODlkNTY2YmE1MDIy
ZDYxMWIzMDJjOWQ3ZmNjMzYwMjYzMTMyODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTItMDctMjMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+ICYmIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBRdWFsaWZpZWRO
YW1lJ3MgSGFzaFNldCBzaG91bGQgYmUgYmlnIGVub3VnaCB0byBob2xkIGF0IGxlYXN0IGFsbCB0
aGUgc3RhdGljIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFF1YWxpZmllZE5hbWUncyB0YWJsZSBoYXMgYSBzdGFuZGFyZCBzaXplIG9mIDY0IGJ1
Y2tldHMuIFdoZW4gaW5pdGlhbGl6aW5nIFdlYktpdCwKKyAgICAgICAgd2UgY3JlYXRlIDg1MCBz
dGF0aWMgUXVhbGlmaWVkTmFtZSBmb3IgdGhlIHN0YW5kYXJkIG5hbWVzIChIVE1MTmFtZXMsIFNW
R05hbWVzIGV0YykuCisKKyAgICAgICAgVGhlIHNtYWxsIGJhc2Ugc2l6ZSBmb3JjZXMgdXMgdG8g
Z3JvdyBhbmQgcmVoYXNoIHRoZSB0YWJsZSBzZXZlcmFsIHRpbWUgb24gc3RhcnR1cC4KKworICAg
ICAgICBUaGlzIHBhdGNoIHNvbHZlcyB0aGUgaXNzdWUgYnkgZGVmaW5pbmcgdGhlIGluaXRpYWwg
dGFibGUgc2l6ZSB0byB0aGUgbWluaW11bSBzaXplIHRoYXQKKyAgICAgICAgY2FuIGhvbGQgYWxs
IHRoZSBzdGF0aWMgUXVhbGlmaWVkTmFtZS4KKworICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1l
LmNwcDoKKyAgICAgICAgKFF1YWxpZmllZE5hbWVIYXNoVHJhaXRzKToKKyAgICAgICAgKiBkb20v
bWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50TmFtZXNIZWFkZXJGaWxlKToKKwogMjAxMi0w
Ny0yMyAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQSBGb2N1
c1Njb3BlIGZvciBhIGRpc3RyaWJ1dGVkIG5vZGUgc2hvdWxkIG5vdCBiZSBpdHMgVHJlZVNjb3Bl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaAppbmRleCBjY2Y2MmRjMDBiODFiNTNhYzdiM2ZkZGE4M2U1ZDFmZDMyMTY5
MDVlLi5kMDQzM2FjYmI3MmQwMGY5MjMxYzYwYzMyNWY2YmZlMGI3NzYwYTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFi
bGUuaApAQCAtNDU1LDYgKzQ1NSw0NCBAQCBuYW1lc3BhY2UgV1RGIHsKICNlbmRpZgogICAgIH07
CiAKKyAgICAvLyBTZXQgYWxsIHRoZSBiaXRzIHRvIG9uZSBhZnRlciB0aGUgbW9zdCBzaWduaWZp
Y2FudCBiaXQ6IDAwMTEwMTAxMDEwIC0+IDAwMTExMTExMTExLgorICAgIHRlbXBsYXRlPHVuc2ln
bmVkIHNpemU+IHN0cnVjdCBPbmVpZnlMb3dCaXRzOworICAgIHRlbXBsYXRlPD4KKyAgICBzdHJ1
Y3QgT25laWZ5TG93Qml0czwwPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1
ZSA9IDA7CisgICAgfTsKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1iZXI+CisgICAgc3RydWN0
IE9uZWlmeUxvd0JpdHMgeworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBu
dW1iZXIgfCBPbmVpZnlMb3dCaXRzPChudW1iZXIgPj4gMSk+Ojp2YWx1ZTsKKyAgICB9OworICAg
IC8vIENvbXB1dGUgdGhlIGZpcnN0IHBvd2VyIG9mIHR3byBpbnRlZ2VyIHRoYXQgaXMgYW4gdXBw
ZXIgYm91bmQgb2YgdGhlIHBhcmFtZXRlciAnbnVtYmVyJy4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1iZXI+CisgICAgc3RydWN0IFVwcGVyUG93ZXJPZlR3b0JvdW5kIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHZhbHVlID0gKE9uZWlmeUxvd0JpdHM8bnVtYmVyIC0gMT46OnZh
bHVlICsgMSkgKiAyOworICAgIH07CisKKyAgICAvLyBCZWNhdXNlIHBvd2VyIG9mIHR3byBudW1i
ZXJzIGFyZSB0aGUgbGltaXQgb2YgbWF4TG9hZCwgdGhlaXIgY2FwYWNpdHkgaXMgdHdpY2UgdGhl
CisgICAgLy8gVXBwZXJQb3dlck9mVHdvQm91bmQsIG9yIDQgdGltZXMgdGhlaXIgdmFsdWVzLgor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIGJvb2wgaXNQb3dlck9mVHdvPiBzdHJ1Y3QgSGFz
aFRhYmxlQ2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI7CisgICAgdGVtcGxhdGU8dW5zaWduZWQgc2l6
ZT4KKyAgICBzdHJ1Y3QgSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplU3BsaXR0ZXI8c2l6ZSwgdHJ1
ZT4geworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmFsdWUgPSBzaXplICogNDsKKyAg
ICB9OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNh
cGFjaXR5Rm9yU2l6ZVNwbGl0dGVyPHNpemUsIGZhbHNlPiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB2YWx1ZSA9IFVwcGVyUG93ZXJPZlR3b0JvdW5kPHNpemU+Ojp2YWx1ZTsKKyAg
ICB9OworCisgICAgLy8gSGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplIGNvbXB1dGVzIHRoZSB1cHBl
ciBwb3dlciBvZiB0d28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgc2l6ZSBwYXJhbWV0ZXIuCisgICAg
Ly8gVGhpcyBpcyBkb25lIGF0IGNvbXBpbGUgdGltZSB0byBpbml0aWFsaXplIHRoZSBIYXNoVHJh
aXRzLgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+CisgICAgc3RydWN0IEhhc2hUYWJsZUNh
cGFjaXR5Rm9yU2l6ZSB7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2YWx1ZSA9IEhh
c2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZVNwbGl0dGVyPHNpemUsICEoc2l6ZSAmIChzaXplIC0gMSkp
Pjo6dmFsdWU7CisgICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemUgPiAwLCBIYXNoVGFibGVOb25a
ZXJvTWluaW11bUNhcGFjaXR5KTsKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoIXN0YXRpY19jYXN0
PGludD4odmFsdWUgPj4gMzEpLCBIYXNoVGFibGVOb0NhcGFjaXR5T3ZlcmZsb3cpOworICAgICAg
ICBDT01QSUxFX0FTU0VSVCh2YWx1ZSA+ICgyICogc2l6ZSksIEhhc2hUYWJsZUNhcGFjaXR5SG9s
ZHNDb250ZW50U2l6ZSk7CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlw
ZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywg
dHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgaW5saW5lIEhhc2hUYWJs
ZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
Pjo6SGFzaFRhYmxlKCkKICAgICAgICAgOiBtX3RhYmxlKDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5jcHAKaW5kZXggZTA4NTUwNzBhN2NiMzI1MzRjY2JmOGFiOGQwNTI2NjdkYTMxOWYx
NS4uYzFjOTBlMzJjOGJmZDUxZjgyZjExYTIwMjI0NzY0MGE1ZGI5YmY1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMjYsMTMgKzI2LDQwIEBACiAjZW5kaWYKIAogI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJYTGlua05hbWVzLmgiCisjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgorI2luY2x1ZGUgIlhNTE5h
bWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaD4KIAorI2lmIEVOQUJMRShN
QVRITUwpCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNW
RykKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdHlwZWRlZiBIYXNoU2V0PFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiwgUXVh
bGlmaWVkTmFtZUhhc2g+IFFOYW1lU2V0Oworc3RhdGljIGNvbnN0IGludCBzdGF0aWNRdWFsaWZp
ZWROYW1lc0NvdW50ID0gSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50ICsgSFRNTE5hbWVzOjpIVE1M
QXR0cnNDb3VudAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgKyBNYXRoTUxOYW1lczo6TWF0aE1M
VGFnc0NvdW50ICsgTWF0aE1MTmFtZXM6Ok1hdGhNTEF0dHJzQ291bnQKKyNlbmRpZgorI2lmIEVO
QUJMRShTVkcpCisgICAgKyBTVkdOYW1lczo6U1ZHVGFnc0NvdW50ICsgU1ZHTmFtZXM6OlNWR0F0
dHJzQ291bnQKKyNlbmRpZgorICAgICsgWExpbmtOYW1lczo6WExpbmtBdHRyc0NvdW50CisgICAg
KyBYTUxOU05hbWVzOjpYTUxOU0F0dHJzQ291bnQKKyAgICArIFhNTE5hbWVzOjpYTUxBdHRyc0Nv
dW50OworCitzdHJ1Y3QgUXVhbGlmaWVkTmFtZUhhc2hUcmFpdHMgOiBwdWJsaWMgSGFzaFRyYWl0
czxRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbCo+IHsKKyAgICBzdGF0aWMgY29uc3Qg
aW50IG1pbmltdW1UYWJsZVNpemUgPSBXVEY6Okhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZTxzdGF0
aWNRdWFsaWZpZWROYW1lc0NvdW50Pjo6dmFsdWU7Cit9OworCit0eXBlZGVmIEhhc2hTZXQ8UXVh
bGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqLCBRdWFsaWZpZWROYW1lSGFzaCwgUXVhbGlm
aWVkTmFtZUhhc2hUcmFpdHM+IFFOYW1lU2V0OwogCiBzdHJ1Y3QgUU5hbWVDb21wb25lbnRzVHJh
bnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUXVhbGlmaWVkTmFtZUNv
bXBvbmVudHMmIGNvbXBvbmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDZlMGEw
NjFjODZmOTMzNjMxN2Y5MDU1ZGE2NDE3YmUwMTM4YmJjNGEuLjgxMmFiMmIyZTJhNDRmNmVkNWNi
YWNlMTk1MWYwMmUxNzJlODY0NTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtl
X25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02MDAs
MTAgKzYwMCwxMiBAQCBzdWIgcHJpbnROYW1lc0hlYWRlckZpbGUKICAgICBwcmludCBGICIjZW5k
aWZcblxuIjsKIAogICAgIGlmIChrZXlzICVhbGxUYWdzKSB7CisgICAgICAgIHByaW50IEYgImNv
bnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1UYWdzQ291bnQgPSAiLCBzY2FsYXIo
a2V5cyAlYWxsVGFncyksICI7XG4iOwogICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZp
ZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ3Moc2l6ZV90KiBzaXplKTtcbiI7
CiAgICAgfQogCiAgICAgaWYgKGtleXMgJWFsbEF0dHJzKSB7CisgICAgICAgIHByaW50IEYgImNv
bnN0IHVuc2lnbmVkICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyc0NvdW50ID0gIiwgc2NhbGFy
KGtleXMgJWFsbEF0dHJzKSwgIjtcbiI7CiAgICAgICAgIHByaW50IEYgIldlYkNvcmU6OlF1YWxp
ZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9QXR0cnMoc2l6ZV90KiBzaXplKTtc
biI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNjhlMDNlN2U2N2QxNjBmY2QzMzEyODRiYjkzMjkzNzc0N2NhYzlmZS4uMTgzOWEy
YTk5YTFlYmI4NDA0YjYzYzQ4YWQxZmM0NGVhNjJkMDRmMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTIz
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPiAmJiBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgUXVhbGlmaWVkTmFtZSdzIEhhc2hT
ZXQgc2hvdWxkIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBhdCBsZWFzdCBhbGwgdGhlIHN0YXRpYyBu
YW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSB0ZXN0IGZvciBXVEY6Omhhc2hUYWJsZUNhcGFjaXR5Rm9yU2l6ZS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEluaXRpYWxDYXBhY2l0eVRlc3RIYXNoVHJhaXRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnRlc3RJbml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2VuZXJh
dGVUZXN0Q2FwYWNpdHlVcFRvU2l6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KwogMjAxMi0wNy0yMyAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzMzYwLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyNjM4NGUzYmI0ZmY3MGRmMDUyYTZjOGU5NDkxZDFjMTdkYmY3MmE0Li5jNThjYjZh
YTIxZmU5ODljMDZhMDJiNDkwNmU2OWNjZDYwOTY4YTcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjEsNiArMjEsNyBAQAogCQkxQURCRUZFMzEzMEM2QUExMDBENjFEMTkgLyogc2ltcGxl
LWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEQkVGQkMxMzBDNkEwMTAwRDYxRDE5IC8qIHNp
bXBsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sICovOyB9OwogCQkxQUVERTIyNjEzRTVF
N0U3MDBFNjJGRTggLyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFREUyMjQxM0U1RTdBMDAwRTYy
RkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJMjYxNTE2RDYx
NUIwRTYwNTAwQTJDMjAxIC8qIFNldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjE1MTZENTE1QjBFNjA1MDBBMkMy
MDEgLyogU2V0QW5kVXBkYXRlQ2FjaGVNb2RlbC5tbSAqLzsgfTsKKwkJMjZCMkRGRjkxNUJERTU5
OTAwNEY2OTFEIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjZCMkRGRjgxNUJERTU5OTAwNEY2OTFEIC8qIEhhc2hTZXQuY3BwICov
OyB9OwogCQkyNkRGNUE1RTE1QTI5QkFBMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI2REY1QTVEMTVBMjlCQUEwMDM2ODlDMiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNl
TG9hZERlbGVnYXRlLm1tICovOyB9OwogCQkyNkRGNUE2MzE1QTJBMjdFMDAzNjg5QzIgLyogQ2Fu
Y2VsTG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2REY1QTYxMTVBMkEyMkIwMDM2ODlD
MiAvKiBDYW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCTMz
M0I5Q0UyMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMzQjlDRTExMjc3RjIz
MTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi87IH07CkBAIC0yNDUsNiAr
MjQ2LDcgQEAKIAkJMUFEQkVGQkMxMzBDNkEwMTAwRDYxRDE5IC8qIHNpbXBsZS1hY2NlbGVyYXRl
ZC1jb21wb3NpdGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpbXBsZS1h
Y2NlbGVyYXRlZC1jb21wb3NpdGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFFREUyMjQxM0U1RTdBMDAwRTYyRkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluamVjdGVkQnVu
ZGxlQ29udHJvbGxlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYxNTE2
RDUxNUIwRTYwNTAwQTJDMjAxIC8qIFNldEFuZFVwZGF0ZUNhY2hlTW9kZWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNkIyREZGODE1QkRFNTk5MDA0RjY5MUQg
LyogSGFzaFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIYXNo
U2V0LmNwcDsgcGF0aCA9IFdURi9IYXNoU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjZERjVBNUQxNUEyOUJBQTAwMzY4OUMyIC8qIENhbmNlbExvYWRGcm9tUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
YW5jZWxMb2FkRnJvbVJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyNkRGNUE2MTE1QTJBMjJCMDAzNjg5QzIgLyogQ2FuY2VsTG9hZEZyb21SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ2FuY2Vs
TG9hZEZyb21SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVz
ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjAsNiArNjIyLDcg
QEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVy
YXRpb25zLmNwcCAqLywKIAkJCQkxQUE5RTU1NzE0OTgwQTk5MDAwMDFBOEEgLyogRnVuY3Rpb25h
bC5jcHAgKi8sCiAJCQkJMEJDRDgzMzQxNDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICov
LAorCQkJCTI2QjJERkY4MTVCREU1OTkwMDRGNjkxRCAvKiBIYXNoU2V0LmNwcCAqLywKIAkJCQk4
MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCiAJCQkJQzAx
MzYzQzcxM0MzOTk3MzAwRUYzOTY0IC8qIFN0cmluZ09wZXJhdG9ycy5jcHAgKi8sCiAJCQkJMEJD
RDg1NjkxNDg1Qzk4QjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5jcHAgKi8sCkBAIC05NDUs
NiArOTQ4LDcgQEAKIAkJCQkwRjE3QkJENjE1QUY2QzREMDA3QUI3NTMgLyogV2ViQ29yZVN0YXRp
c3RpY3NXaXRoTm9XZWJQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MTUxNkQ2MTVC
MEU2MDUwMEEyQzIwMSAvKiBTZXRBbmRVcGRhdGVDYWNoZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTVFMjAyNzMxNUIyMTgxOTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1l
ZGlhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMjZCMkRGRjkxNUJERTU5OTAwNEY2OTFEIC8qIEhh
c2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hTZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxZTIxYWEyODNhNzE1MGZiYTVkODhhNjRjN2VkYTg2N2Yy
MDg4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCit0ZW1wbGF0ZTxpbnQgaW5pdGlhbENhcGFjaXR5PgorICAgIHN0cnVjdCBJbml0aWFs
Q2FwYWNpdHlUZXN0SGFzaFRyYWl0cyA6IHB1YmxpYyBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludD4geworICAgIHN0YXRpYyBjb25zdCBpbnQgbWluaW11bVRhYmxlU2l6ZSA9
IGluaXRpYWxDYXBhY2l0eTsKK307CisKK3RlbXBsYXRlPHVuc2lnbmVkIHNpemU+Cit2b2lkIHRl
c3RJbml0aWFsQ2FwYWNpdHkoKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSA9IFdURjo6SGFzaFRhYmxlQ2FwYWNpdHlGb3JTaXplPHNpemU+Ojp2YWx1ZTsKKyAgICBIYXNo
U2V0PGludCwgRGVmYXVsdEhhc2g8aW50Pjo6SGFzaCwgSW5pdGlhbENhcGFjaXR5VGVzdEhhc2hU
cmFpdHM8aW5pdGlhbENhcGFjaXR5PiA+IHRlc3RTZXQ7CisKKyAgICAvLyBJbml0aWFsIGNhcGFj
aXR5IGlzIG51bGwuCisgICAgQVNTRVJUX0VRKDAsIHRlc3RTZXQuY2FwYWNpdHkoKSk7CisKKyAg
ICAvLyBBZGRpbmcgaXRlbXMgdXAgdG8gc2l6ZSBzaG91bGQgbmV2ZXIgY2hhbmdlIHRoZSBjYXBh
Y2l0eS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICB0
ZXN0U2V0LmFkZChpKTsKKyAgICAgICAgQVNTRVJUX0VRKGluaXRpYWxDYXBhY2l0eSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRlc3RTZXQuY2FwYWNpdHkoKSkpOworICAgIH0KKworICAgIC8vIEFk
ZGluZyBpdGVtcyB1cCB0byBsZXNzIHRoYW4gaGFsZiB0aGUgY2FwYWNpdHkgc2hvdWxkIG5vdCBj
aGFuZ2UgdGhlIGNhcGFjaXR5LgorICAgIHVuc2lnbmVkIGNhcGFjaXR5TGltaXQgPSBpbml0aWFs
Q2FwYWNpdHkgLyAyIC0gMTsKKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZTsgaSA8IGNhcGFjaXR5
TGltaXQ7ICsraSkgeworICAgICAgICB0ZXN0U2V0LmFkZChpKTsKKyAgICAgICAgQVNTRVJUX0VR
KGluaXRpYWxDYXBhY2l0eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRlc3RTZXQuY2FwYWNpdHko
KSkpOworICAgIH0KKworICAgIC8vIEFkZGluZyBvbmUgbW9yZSBpdGVtIGluY3JlYXNlIHRoZSBj
YXBhY2l0eS4KKyAgICB0ZXN0U2V0LmFkZChpbml0aWFsQ2FwYWNpdHkpOworICAgIEVYUEVDVF9H
VChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGVzdFNldC5jYXBhY2l0eSgpKSwgaW5pdGlhbENhcGFj
aXR5KTsKK30KKwordGVtcGxhdGU8dW5zaWduZWQgc2l6ZT4gdm9pZCBnZW5lcmF0ZVRlc3RDYXBh
Y2l0eVVwVG9TaXplKCk7Cit0ZW1wbGF0ZTw+IHZvaWQgZ2VuZXJhdGVUZXN0Q2FwYWNpdHlVcFRv
U2l6ZTwwPigpCit7Cit9Cit0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiB2b2lkIGdlbmVyYXRlVGVz
dENhcGFjaXR5VXBUb1NpemUoKQoreworICAgIGdlbmVyYXRlVGVzdENhcGFjaXR5VXBUb1NpemU8
c2l6ZSAtIDE+KCk7CisgICAgdGVzdEluaXRpYWxDYXBhY2l0eTxzaXplPigpOworfQorCitURVNU
KFdURiwgSGFzaFNldEluaXRpYWxDYXBhY2l0eSkKK3sKKyAgICBnZW5lcmF0ZVRlc3RDYXBhY2l0
eVVwVG9TaXplPDEyOD4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="163003"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>