<?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>99530</bug_id>
          
          <creation_ts>2012-10-16 18:58:51 -0700</creation_ts>
          <short_desc>cssText for cursor property doesn&apos;t include hotspot</short_desc>
          <delta_ts>2012-11-16 22:51:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99493</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rick Byers">rbyers</reporter>
          <assigned_to name="Rick Byers">rbyers</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>743783</commentid>
    <comment_count>0</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-16 18:58:51 -0700</bug_when>
    <thetext>For a CSS cursor rule with hotspot like &quot;cursor: foo.png 1 2, auto&quot;, the hotspot is omitted when converted back to cssText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743787</commentid>
    <comment_count>1</comment_count>
      <attachid>169070</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-16 19:01:51 -0700</bug_when>
    <thetext>Created attachment 169070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744430</commentid>
    <comment_count>2</comment_count>
      <attachid>169070</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-17 11:12:53 -0700</bug_when>
    <thetext>Comment on attachment 169070
Patch

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

Good catch, and a nice patch!

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

This line is useless. Please edit generated part to be human readable when prepare-ChangeLog gets it wrong.

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:87
&gt; +    if (m_hotSpot.x() &gt;= 0) {

Why are you only checking x coordinate? A hot spot like &quot;0 10&quot; would not be printed.

I think that you need &quot;m_hotSpot.x() || m_hotSpot.y()&quot; here. Please also add tests for &quot;0 10&quot;, &quot;10 0&quot;, and &quot;0 0&quot; (it would be interesting to check what other browsers do with the latter).

&gt; Source/WebCore/css/CSSCursorImageValue.h:44
&gt; +    String customCssText() const;

When overriding a virtual function, we keep &quot;virtual&quot; for clarity, and also now append OVERRIDE:

    virtual String customCssText() const OVERRIDE;

&gt; LayoutTests/fast/css/cursor-parsing-expected.txt:22
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;
&gt; +PASS div.style.cssText is &quot;&quot;

It&apos;s acceptable to leave as is, but a better test would have human readable results. E.g.:

PASS roundtrip(&quot;url(file:///foo.png) 12&quot;) is &quot;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744640</commentid>
    <comment_count>3</comment_count>
      <attachid>169264</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-17 14:47:31 -0700</bug_when>
    <thetext>Created attachment 169264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744645</commentid>
    <comment_count>4</comment_count>
      <attachid>169264</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-17 14:49:47 -0700</bug_when>
    <thetext>Comment on attachment 169264
Patch

Thanks Alexey!  Updated, please take another look.

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        (WebCore):
&gt; 
&gt; This line is useless. Please edit generated part to be human readable when prepare-ChangeLog gets it wrong.

Done

&gt;&gt; Source/WebCore/css/CSSCursorImageValue.cpp:87
&gt;&gt; +    if (m_hotSpot.x() &gt;= 0) {
&gt; 
&gt; Why are you only checking x coordinate? A hot spot like &quot;0 10&quot; would not be printed.
&gt; 
&gt; I think that you need &quot;m_hotSpot.x() || m_hotSpot.y()&quot; here. Please also add tests for &quot;0 10&quot;, &quot;10 0&quot;, and &quot;0 0&quot; (it would be interesting to check what other browsers do with the latter).

Note this is &gt;=, so 0 is valid, but (-1,-1) (our sentinel for no hotspot) isn&apos;t.  In platform/Cursor.cpp we ignore any hotspot that&apos;s outside the bounds of the image. (0,0) is actually a reasonable and presumably common hotspot.  I&apos;ve added comments and tests to make this more clear.  Anything else I can do?

&gt;&gt; Source/WebCore/css/CSSCursorImageValue.h:44
&gt;&gt; +    String customCssText() const;
&gt; 
&gt; When overriding a virtual function, we keep &quot;virtual&quot; for clarity, and also now append OVERRIDE:
&gt; 
&gt;     virtual String customCssText() const OVERRIDE;

This function is actually non-virtual.

&gt;&gt; LayoutTests/fast/css/cursor-parsing-expected.txt:22
&gt;&gt; +PASS div.style.cssText is &quot;&quot;
&gt; 
&gt; It&apos;s acceptable to leave as is, but a better test would have human readable results. E.g.:
&gt; 
&gt; PASS roundtrip(&quot;url(file:///foo.png) 12&quot;) is &quot;&quot;.

Agreed - updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746559</commentid>
    <comment_count>5</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-19 12:53:37 -0700</bug_when>
    <thetext>Ping, Alexey - how does this look now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747525</commentid>
    <comment_count>6</comment_count>
      <attachid>169264</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-22 07:32:10 -0700</bug_when>
    <thetext>Comment on attachment 169264
Patch

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

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:89
&gt; +    if (m_hotSpot.x() &gt;= 0 &amp;&amp; m_hotSpot.y() &gt;= 0) {

Yep, now the check is fine.

&gt; LayoutTests/fast/css/cursor-parsing-expected.txt:29
&gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;

Checking (3 -2) and (-2, -3) (I mean only the value signs here) is actually a good idea to make the test set full.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747729</commentid>
    <comment_count>7</comment_count>
      <attachid>169950</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 11:47:52 -0700</bug_when>
    <thetext>Created attachment 169950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747736</commentid>
    <comment_count>8</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 11:53:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 169264 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169264&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSCursorImageValue.cpp:89
&gt; &gt; +    if (m_hotSpot.x() &gt;= 0 &amp;&amp; m_hotSpot.y() &gt;= 0) {
&gt; 
&gt; Yep, now the check is fine.
&gt; 
&gt; &gt; LayoutTests/fast/css/cursor-parsing-expected.txt:29
&gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; 
&gt; Checking (3 -2) and (-2, -3) (I mean only the value signs here) is actually a good idea to make the test set full.

Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747742</commentid>
    <comment_count>9</comment_count>
      <attachid>169950</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 11:58:42 -0700</bug_when>
    <thetext>Comment on attachment 169950
Patch

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

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:91
&gt; +        result.append(String::number(m_hotSpot.x()));

Should use appendNumber, not append(String::number()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747754</commentid>
    <comment_count>10</comment_count>
      <attachid>169955</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 12:09:35 -0700</bug_when>
    <thetext>Created attachment 169955
tweak based on cr feedback from darin@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747755</commentid>
    <comment_count>11</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 12:09:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 169950 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169950&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSCursorImageValue.cpp:91
&gt; &gt; +        result.append(String::number(m_hotSpot.x()));
&gt; 
&gt; Should use appendNumber, not append(String::number()).

done, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747765</commentid>
    <comment_count>12</comment_count>
      <attachid>169955</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 12:18:21 -0700</bug_when>
    <thetext>Comment on attachment 169955
tweak based on cr feedback from darin@

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

Patch is OK, but there is a little room for improvement.

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:88
&gt; +    // Negative values are ignored as outside the bounds of the image, and so
&gt; +    // used to indicate no hotspot.

I understand that negative values are outside the bounds of the image. But large positive values can be outside the bounds of the image, too. This comment does not explain the reason behind the “don’t serialize” behavior here. Is there anything helpful in the specification that makes it clear what we should do for edge cases such as when one value is negative and the other is not?

I suspect that a correct implementation would require that we store the lack of a hot spot separately, explicitly, rather than using a special value to indicate there is no hot spot. And that a correct implementation would correctly re-serialize even negative numbers.

&gt; Source/WebCore/css/CSSCursorImageValue.h:44
&gt; +    String customCssText() const;

This should be:

    virtual String customCSSText() const OVERRIDE;

Also, it would be good to make this override a private function. I can’t think of a real reason to support calling this function directly on a CSSCursorImageValue.

&gt; LayoutTests/fast/css/cursor-parsing-expected.txt:31
&gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) 2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;

Is this really expected behavior? How do other browsers do on this test?

&gt; LayoutTests/fast/css/cursor-parsing.html:49
&gt; +testCursorRule(&apos;url(file:///foo.png)&apos;);   //  IE compatibility 

The use of file URLs in all these test cases is curious. If the test could use any arbitrary URL it seems a bit strange to chose a file URL since they are special in so many ways.

&gt; LayoutTests/fast/css/cursor-parsing.html:58
&gt; +testInvalidCursorRule(&apos;nonexistant&apos;);

The word nonexistent is misspelled here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747827</commentid>
    <comment_count>13</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 13:31:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 169955 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169955&amp;action=review
&gt; 
&gt; Patch is OK, but there is a little room for improvement.

Thanks!
 
&gt; &gt; Source/WebCore/css/CSSCursorImageValue.cpp:88
&gt; &gt; +    // Negative values are ignored as outside the bounds of the image, and so
&gt; &gt; +    // used to indicate no hotspot.
&gt; 
&gt; I understand that negative values are outside the bounds of the image. But large positive values can be outside the bounds of the image, too. This comment does not explain the reason behind the “don’t serialize” behavior here. Is there anything helpful in the specification that makes it clear what we should do for edge cases such as when one value is negative and the other is not?

No, as far as I can see there&apos;s nothing in the specification that talks about what should happen when these values are invalid.  I don&apos;t know what the original thinking was - it looks like this code has been around for awhile.

&gt; I suspect that a correct implementation would require that we store the lack of a hot spot separately, explicitly, rather than using a special value to indicate there is no hot spot. And that a correct implementation would correctly re-serialize even negative numbers.

Yes, that sounds better to me too.  I was shying away from actually changing parser behavior in this CL since that could potentially break sites (if I recall, the hotspot check downstream will ignore any cursor with an invalid hotspot, rather than just ignore the hotspot as is done with the negative check in the parser).  How about a file a separate bug for this?  To me changing the parser behavior is really a separate issue from fixing the serialization of the existing parser behavior.
 
&gt; &gt; Source/WebCore/css/CSSCursorImageValue.h:44
&gt; &gt; +    String customCssText() const;
&gt; 
&gt; This should be:
&gt; 
&gt;     virtual String customCSSText() const OVERRIDE;
&gt; 
&gt; Also, it would be good to make this override a private function. I can’t think of a real reason to support calling this function directly on a CSSCursorImageValue.

This isn&apos;t a virtual override - just a plain overload.  CSSValue::cssText calls it directly, so it must be public.  We use this pattern in a bunch of other places, eg. CSSImageSetValue, WebKitCSSTransformValue, etc.

&gt; &gt; LayoutTests/fast/css/cursor-parsing-expected.txt:31
&gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) 2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; 
&gt; Is this really expected behavior? How do other browsers do on this test?

I agree this was odd - my intention here was just to document the existing parsing behavior.  Good question about other browsers - I just did a quick test (http://jsfiddle.net/rbyers/AYHmy/):

Firefox 16.0.1: preserves and serializes arbitrary hotspot values as you suggest (but seems to have a bug on Windows where the hot spot isn&apos;t actually applied)
IE 10: doesn&apos;t support hot-spot being specified in CSS so not relevant

&gt; &gt; LayoutTests/fast/css/cursor-parsing.html:49
&gt; &gt; +testCursorRule(&apos;url(file:///foo.png)&apos;);   //  IE compatibility 
&gt; 
&gt; The use of file URLs in all these test cases is curious. If the test could use any arbitrary URL it seems a bit strange to chose a file URL since they are special in so many ways.

Agreed.  These need to be absolute URLs in order for the test results to be stable (since relative urls are converted to absolute).  I assumed we didn&apos;t want URLs in layout tests that would trigger network activity, hence file.  I could post-process the text to trim the absolute URLs, but parsing this string at all in the test seems error-prone (potential to mask certain types of bugs where the string doesn&apos;t match the format I expect).  I&apos;ve added a comment explaining this.  Is there something better I should be doing?

&gt; &gt; LayoutTests/fast/css/cursor-parsing.html:58
&gt; &gt; +testInvalidCursorRule(&apos;nonexistant&apos;);
&gt; 
&gt; The word nonexistent is misspelled here.

Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747829</commentid>
    <comment_count>14</comment_count>
      <attachid>169968</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 13:31:22 -0700</bug_when>
    <thetext>Created attachment 169968
a couple more tweaks based on cr feedback from darin@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747857</commentid>
    <comment_count>15</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-22 13:57:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 169955 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169955&amp;action=review
&gt; &gt; 
&gt; &gt; Patch is OK, but there is a little room for improvement.
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSCursorImageValue.cpp:88
&gt; &gt; &gt; +    // Negative values are ignored as outside the bounds of the image, and so
&gt; &gt; &gt; +    // used to indicate no hotspot.
&gt; &gt; 
&gt; &gt; I understand that negative values are outside the bounds of the image. But large positive values can be outside the bounds of the image, too. This comment does not explain the reason behind the “don’t serialize” behavior here. Is there anything helpful in the specification that makes it clear what we should do for edge cases such as when one value is negative and the other is not?
&gt; 
&gt; No, as far as I can see there&apos;s nothing in the specification that talks about what should happen when these values are invalid.  I don&apos;t know what the original thinking was - it looks like this code has been around for awhile.
&gt; 
&gt; &gt; I suspect that a correct implementation would require that we store the lack of a hot spot separately, explicitly, rather than using a special value to indicate there is no hot spot. And that a correct implementation would correctly re-serialize even negative numbers.
&gt; 
&gt; Yes, that sounds better to me too.  I was shying away from actually changing parser behavior in this CL since that could potentially break sites (if I recall, the hotspot check downstream will ignore any cursor with an invalid hotspot, rather than just ignore the hotspot as is done with the negative check in the parser).  How about a file a separate bug for this?  To me changing the parser behavior is really a separate issue from fixing the serialization of the existing parser behavior.
&gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSCursorImageValue.h:44
&gt; &gt; &gt; +    String customCssText() const;
&gt; &gt; 
&gt; &gt; This should be:
&gt; &gt; 
&gt; &gt;     virtual String customCSSText() const OVERRIDE;
&gt; &gt; 
&gt; &gt; Also, it would be good to make this override a private function. I can’t think of a real reason to support calling this function directly on a CSSCursorImageValue.
&gt; 
&gt; This isn&apos;t a virtual override - just a plain overload.  CSSValue::cssText calls it directly, so it must be public.  We use this pattern in a bunch of other places, eg. CSSImageSetValue, WebKitCSSTransformValue, etc.
&gt; 
&gt; &gt; &gt; LayoutTests/fast/css/cursor-parsing-expected.txt:31
&gt; &gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; &gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) 2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; &gt; &gt; +PASS roundtripCssRule(&quot;cursor: url(file:///foo.png) -2 -3;&quot;) is &quot;cursor: url(file:///foo.png);&quot;
&gt; &gt; 
&gt; &gt; Is this really expected behavior? How do other browsers do on this test?
&gt; 
&gt; I agree this was odd - my intention here was just to document the existing parsing behavior.  Good question about other browsers - I just did a quick test (http://jsfiddle.net/rbyers/AYHmy/):
&gt; 
&gt; Firefox 16.0.1: preserves and serializes arbitrary hotspot values as you suggest (but seems to have a bug on Windows where the hot spot isn&apos;t actually applied)

By the way, I also tested Firefox 16.0.1 on Linux.  It works perfectly there.  In particular: any out-of-range values (including negative) are preserved in serialization, but clamped to the image boundaries.

And I was wrong about the behavior for out-of-range hotspot values - we either reset to (0,0) (on ports using USE(LAZY_NATIVE_CURSOR) - see determineHotSpot in Cursor.cpp) or leave it up to the port (chromium clamps to the image boundaries in WebCursor::ClampHotspot).  I was thinking of the code in selectCursor that drops any large cursors  (&gt;128 width or height).

So it seems low risk to preserve negative values and rely on this existing out-of-range code.  It&apos;s a non-trivial amount of plumbing though - today we pass just IntPtrs around across a few places (CursorData, CSSCursorImageValue and Cursor including each port-specific implementation), I&apos;d have to add a bool to all those places.  Would you like me to change that in this CL, or just file a separate lower-priority bug?

&gt; IE 10: doesn&apos;t support hot-spot being specified in CSS so not relevant
&gt; 
&gt; &gt; &gt; LayoutTests/fast/css/cursor-parsing.html:49
&gt; &gt; &gt; +testCursorRule(&apos;url(file:///foo.png)&apos;);   //  IE compatibility 
&gt; &gt; 
&gt; &gt; The use of file URLs in all these test cases is curious. If the test could use any arbitrary URL it seems a bit strange to chose a file URL since they are special in so many ways.
&gt; 
&gt; Agreed.  These need to be absolute URLs in order for the test results to be stable (since relative urls are converted to absolute).  I assumed we didn&apos;t want URLs in layout tests that would trigger network activity, hence file.  I could post-process the text to trim the absolute URLs, but parsing this string at all in the test seems error-prone (potential to mask certain types of bugs where the string doesn&apos;t match the format I expect).  I&apos;ve added a comment explaining this.  Is there something better I should be doing?
&gt; 
&gt; &gt; &gt; LayoutTests/fast/css/cursor-parsing.html:58
&gt; &gt; &gt; +testInvalidCursorRule(&apos;nonexistant&apos;);
&gt; &gt; 
&gt; &gt; The word nonexistent is misspelled here.
&gt; 
&gt; Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747996</commentid>
    <comment_count>16</comment_count>
      <attachid>169968</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 15:46:39 -0700</bug_when>
    <thetext>Comment on attachment 169968
a couple more tweaks based on cr feedback from darin@

Attachment 169968 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14486684

New failing tests:
fast/css/cursor-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748117</commentid>
    <comment_count>17</comment_count>
      <attachid>169968</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 17:30:06 -0700</bug_when>
    <thetext>Comment on attachment 169968
a couple more tweaks based on cr feedback from darin@

Attachment 169968 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14484713

New failing tests:
fast/css/cursor-parsing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748150</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 18:13:57 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; To me changing the parser behavior is really a separate issue from fixing the serialization of the existing parser behavior.

This serialization is making what was previously hidden internal behavior have a visible effect. Before, I believe the parser behavior was not detectable, just a hidden implementation detail. That’s why I’m asking you to consider it now.

&gt; So it seems low risk to preserve negative values and rely on this existing out-of-range code. It&apos;s a non-trivial amount of plumbing though - today we pass just IntPtrs around across a few places (CursorData, CSSCursorImageValue and Cursor including each port-specific implementation), I&apos;d have to add a bool to all those places. Would you like me to change that in this CL, or just file a separate lower-priority bug?

While I think it’s fine for you to work on this in another bug report, I think you’re mistaken that we’d have to change things in so many places.

I think that only CSSCursorImageValue needs the boolean notion of hot spot specified. For all the other sites we could pass in -1,-1 when the hot spot is unspecified, taking advantage of the existing code path and acting the way the parser does now.

Later might want classes like CursorData and Cursor to have a concept of “no hot spot” for clarity and perhaps so some obscure edge cases worked better, but I think that’s a different issue and need not have as high a priority as being able to round trip through CSS.

I think that only CSSCursorImageValue and the cursor parsing section of CSSParser.cpp would need to change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748151</commentid>
    <comment_count>19</comment_count>
      <attachid>169968</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 18:14:59 -0700</bug_when>
    <thetext>Comment on attachment 169968
a couple more tweaks based on cr feedback from darin@

OK, but please deal with those test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748579</commentid>
    <comment_count>20</comment_count>
      <attachid>170148</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-23 06:37:18 -0700</bug_when>
    <thetext>Created attachment 170148
round-trip parsing of negative hotspot values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748587</commentid>
    <comment_count>21</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-23 06:45:25 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #15)
&gt; &gt; To me changing the parser behavior is really a separate issue from fixing the serialization of the existing parser behavior.
&gt; 
&gt; This serialization is making what was previously hidden internal behavior have a visible effect. Before, I believe the parser behavior was not detectable, just a hidden implementation detail. That’s why I’m asking you to consider it now.

Good point, I agree.
 
&gt; &gt; So it seems low risk to preserve negative values and rely on this existing out-of-range code. It&apos;s a non-trivial amount of plumbing though - today we pass just IntPtrs around across a few places (CursorData, CSSCursorImageValue and Cursor including each port-specific implementation), I&apos;d have to add a bool to all those places. Would you like me to change that in this CL, or just file a separate lower-priority bug?
&gt; 
&gt; While I think it’s fine for you to work on this in another bug report, I think you’re mistaken that we’d have to change things in so many places.
&gt; 
&gt; I think that only CSSCursorImageValue needs the boolean notion of hot spot specified. For all the other sites we could pass in -1,-1 when the hot spot is unspecified, taking advantage of the existing code path and acting the way the parser does now.
&gt; 
&gt; Later might want classes like CursorData and Cursor to have a concept of “no hot spot” for clarity and perhaps so some obscure edge cases worked better, but I think that’s a different issue and need not have as high a priority as being able to round trip through CSS.
&gt; 
&gt; I think that only CSSCursorImageValue and the cursor parsing section of CSSParser.cpp would need to change.

Yes, thank you.  I came to the same conclusion last night as well.  Plumbing the has-hotspot flag all the way down is perhaps the right way to fix bug 100059, but that&apos;s port-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752748</commentid>
    <comment_count>22</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-27 05:00:56 -0700</bug_when>
    <thetext>Ping - is this still R+ after the last tweak?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754524</commentid>
    <comment_count>23</comment_count>
      <attachid>171487</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-10-30 11:17:59 -0700</bug_when>
    <thetext>Created attachment 171487
Mark as reviewed by darin, last patch was only making a minor change he suggested after he r+ an earlier version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754804</commentid>
    <comment_count>24</comment_count>
      <attachid>171487</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 17:03:48 -0700</bug_when>
    <thetext>Comment on attachment 171487
Mark as reviewed by darin, last patch was only making a minor change he suggested after he r+ an earlier version

Clearing flags on attachment: 171487

Committed r132966: &lt;http://trac.webkit.org/changeset/132966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754805</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-30 17:03:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169070</attachid>
            <date>2012-10-16 19:01:51 -0700</date>
            <delta_ts>2012-10-17 14:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99530-20121016220039.patch</filename>
            <type>text/plain</type>
            <size>6401</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMxMmNkMDM5MjdhMGM3
Y2ZhOTYxNDBjYTQyMWFmNDRjYTdlMjAzYi4uODU0ZjM1ZDQ5ZmMwMTZkNTExNjgwM2NmODVmZDUy
ZDFlMmIwZWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3ZlcnJpZGUgY3VzdG9tQ3NzVGV4dCBpbiBDU1ND
dXJzb3JJbWFnZVZhbHVlIHRvIGluY2x1ZGUgdGhlIGhvdHNwb3Qgd2hlbiBwcmVzZW50LgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGNz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvcklt
YWdlVmFsdWU6OmN1c3RvbUNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0N1cnNvckltYWdlVmFsdWUp
OgorCiAyMDEyLTEwLTE2ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogV2hpdGVsaXN0IHNhZmUgc3R5bGVzIGZvciAnY29uc29sZS5sb2co
JyVjLi4uJywgLi4uKScuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAKaW5kZXggMDZkOTNlYTYwMTQ3ZDJiNzA2ZWYyYThkNTgyYjA0ZmJiYzJhYTY3OC4uNGQ2OTFm
M2Q4NDVmNjQyMzU1MmU1YzljODRlOTc0OGRlN2FmYWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtODAsNiArODAsMTkgQEAgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQogI2VuZGlmCiB9CiAKK1N0cmluZyBDU1ND
dXJzb3JJbWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKENTU0ltYWdlVmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSk7CisgICAgaWYgKG1faG90U3BvdC54KCkgPj0gMCkgeworICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV9ob3RTcG90
LngoKSkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nOjpudW1iZXIobV9ob3RTcG90LnkoKSkpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7Cit9CisKIGJvb2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlSWZT
VkdDdXJzb3JJc1VzZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICNpZiAhRU5BQkxFKFNWRykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IGRjOGQxZmY0Y2E1ZjU4
NjUyOGU5NzA2MmNkNWU5OGQ2NmY2YjEyZWIuLjM5NzEzN2RmMjc4NjE3MWYzZDc2MzAyZGY3MzRm
YzVmNDFkMDI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApA
QCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAgICBJbnRQb2ludCBob3RTcG90KCkgY29uc3Qg
eyByZXR1cm4gbV9ob3RTcG90OyB9CiAKKyAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
OworCiAgICAgYm9vbCB1cGRhdGVJZlNWR0N1cnNvcklzVXNlZChFbGVtZW50Kik7CiAgICAgU3R5
bGVDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDQyODI3ZjU0OTAzYmZmYmZhMjU4OGVlN2Q1MTRiOWVjMTdlNGM3ZTUuLmYyNmUyZTIxZmY5
NDY1YTY0ZWY1NzcxODdiYzk5MGM4ODFkYzk1MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMC0xNiAgUmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgY3Nz
VGV4dCBmb3IgY3Vyc29yIHByb3BlcnR5IGRvZXNuJ3QgaW5jbHVkZSBob3RzcG90CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTUzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzaW1wbGUgdGVzdCBm
b3IgcGFyc2luZyBvZiBDU1MgY3Vyc29yIHByb3BlcnR5LgorCisgICAgICAgICogZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9j
dXJzb3ItcGFyc2luZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0xNiAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRh
dGUgYmFzZWxpbmVzIGZvciBmYWlsaW5nIHN2ZyB0ZXN0IGFmdGVyIHIxMzE0MzUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYzE0MjNiMjczNTYzZTZhOGQ2MTJmM2I3NWQ3NDAxZDUwMjZlNTZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjYgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9wZXJ0eS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGl2LnN0eWxlLmNzc1RleHQg
aXMgImN1cnNvcjogYXV0bzsiCitQQVNTIGRpdi5zdHlsZS5jc3NUZXh0IGlzICJjdXJzb3I6IG5v
bmU7IgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAiY3Vyc29yOiBjb3B5OyIKK1BBU1MgZGl2
LnN0eWxlLmNzc1RleHQgaXMgImN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsiCitQQVNTIGRpdi5z
dHlsZS5jc3NUZXh0IGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1MgZGl2
LnN0eWxlLmNzc1RleHQgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyksIGNyb3NzaGFp
cjsiCitQQVNTIGRpdi5zdHlsZS5jc3NUZXh0IGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5w
bmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHBvaW50ZXI7IgorUEFTUyBkaXYuc3R5bGUuY3Nz
VGV4dCBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzOyIKK1BBU1MgZGl2LnN0
eWxlLmNzc1RleHQgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMywgdXJsKGZp
bGU6Ly8vZm9vMi5wbmcpLCB1cmwoZmlsZTovLy9mb28zLnBuZykgNiA3LCBjcm9zc2hhaXI7Igor
UEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAiIgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAi
IgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAiIgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBp
cyAiIgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAiIgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4
dCBpcyAiIgorUEFTUyBkaXYuc3R5bGUuY3NzVGV4dCBpcyAiIgorUEFTUyBkaXYuc3R5bGUuY3Nz
VGV4dCBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViMTM2OGQyYmYyZDViZjYwYjIzMGMwZDEwMDQwNTg5ZDYyN2ZiNjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCkBAIC0wLDAgKzEs
NjEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGUg
cGFyc2luZyBvZiB0aGUgY3Vyc29yIHByb3BlcnR5LiIpOworCit2YXIgY3NzVGV4dDsKK3ZhciBk
aXY7CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3JSdWxlKHJ1bGUpCit7CisgICAgY3NzVGV4dCA9ICJj
dXJzb3I6ICIgKyBydWxlICsgIjsiOworICAgIHRlc3RDdXJzb3JSdWxlRXhwZWN0ZWQoY3NzVGV4
dCwgY3NzVGV4dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkQ3Vyc29yUnVsZShydWxlKQor
eworICAgIGNzc1RleHQgPSAiY3Vyc29yOiAiICsgcnVsZSArICI7IjsKKyAgICB0ZXN0Q3Vyc29y
UnVsZUV4cGVjdGVkKGNzc1RleHQsICcnKTsKK30KKworZnVuY3Rpb24gdGVzdEN1cnNvclJ1bGVF
eHBlY3RlZChjc3NUZXh0LCBleHBlY3RlZCkKK3sKKyAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHlsZSIsIGNzc1RleHQpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnZGl2LnN0eWxlLmNzc1RleHQnLCBleHBlY3RlZCk7CisKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9CisKK3Rlc3RDdXJzb3JSdWxlKCdhdXRvJyk7Cit0ZXN0
Q3Vyc29yUnVsZSgnbm9uZScpOwordGVzdEN1cnNvclJ1bGUoJ2NvcHknKTsKK3Rlc3RDdXJzb3JS
dWxlKCctd2Via2l0LWdyYWJiaW5nJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9v
LnBuZyknKTsgICAvLyAgSUUgY29tcGF0aWJpbGl0eSAKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmls
ZTovLy9mb28ucG5nKSwgY3Jvc3NoYWlyJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8v
Zm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcicpOwordGVzdEN1cnNvclJ1
bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmls
ZTovLy9mb28ucG5nKSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2Zv
bzMucG5nKSA2IDcsIGNyb3NzaGFpcicpOworCit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ25vbmV4
aXN0YW50Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ2x0cicpOwordGVzdEludmFsaWRDdXJz
b3JSdWxlKCdpbmxpbmUnKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9v
LnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1
cmwoZmlsZTovLy9mb28ucG5nKSAxMicpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1cmwoZmls
ZTovLy9mb28ucG5nKSAxMiAzIDUnKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6
Ly8vZm9vLnBuZykgeCB5Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zv
by5wbmcpIGF1dG8nKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169264</attachid>
            <date>2012-10-17 14:47:31 -0700</date>
            <delta_ts>2012-10-22 11:47:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99530-20121017174618.patch</filename>
            <type>text/plain</type>
            <size>8081</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkNmY1MjFlZTgzODI3
MzdmZWRlYjk4YTRmNWYxZmRiZDhhYzBmOS4uMmJjOWU5ZjZjODJiZWYyOTc1MDliYzMxODcxYzMy
ZjIzZTViZDlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisKIDIwMTItMTAtMTcgIFBh
dHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4
IGZvciBXaW5DRSBhZnRlciByMTMxMzY1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuY3BwCmluZGV4IDA2ZDkzZWE2MDE0N2QyYjcwNmVmMmE4ZDU4MmIwNGZiYmMyYWE2
NzguLjBmN2U1ODc4Mjk2M2U5ZjA0ZDU4YzBkMTAwNTY0ZGE0YzE1ZDdkNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTgwLDYgKzgwLDIxIEBAIENT
U0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKICNlbmRpZgogfQogCitT
dHJpbmcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0Cit7CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChDU1NJbWFnZVZhbHVlOjpj
dXN0b21Dc3NUZXh0KCkpOworICAgIC8vIE5lZ2F0aXZlIHZhbHVlcyBhcmUgaWdub3JlZCBhcyBv
dXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGltYWdlLCBhbmQgc28KKyAgICAvLyB1c2VkIHRvIGlu
ZGljYXRlIG5vIGhvdHNwb3QuCisgICAgaWYgKG1faG90U3BvdC54KCkgPj0gMCAmJiBtX2hvdFNw
b3QueSgpID49IDApIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1faG90U3BvdC54KCkpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1faG90
U3BvdC55KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBi
b29sIENTU0N1cnNvckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAjaWYgIUVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuaAppbmRleCBkYzhkMWZmNGNhNWY1ODY1MjhlOTcwNjJjZDVlOThkNjZmNmIx
MmViLi4zOTcxMzdkZjI3ODYxNzFmM2Q3NjMwMmRmNzM0ZmM1ZjQxZDAyOTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGlj
OgogCiAgICAgSW50UG9pbnQgaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90U3BvdDsgfQog
CisgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKwogICAgIGJvb2wgdXBkYXRlSWZT
VkdDdXJzb3JJc1VzZWQoRWxlbWVudCopOwogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxOGQ4NDY5ZjY5ZTVhNWQyNDZm
YTkzNjkzOGUyNTFlMjhhYzNiYzE5Li45MWFiZDhlZTY2NWRkZDIxODllMDJlMDkyOGU2NDVmMTQ3
ODBkNTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTYgIFJpY2sgQnllcnMgIDxy
YnllcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGNzc1RleHQgZm9yIGN1cnNvciBwcm9wZXJ0
eSBkb2Vzbid0IGluY2x1ZGUgaG90c3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxlIHRlc3QgZm9yIHBhcnNpbmcgb2YgQ1NTIGN1cnNv
ciBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTAtMTcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVz
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMDIwN2FlYWM1ZGQ2YjQxYTAxMDIzNDEwMThhMzE4ZjI0Y2ZlYmFiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9wZXJ0
eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgYSBidW5jaCBvZiBjdXJz
b3IgcnVsZXMgd2hpY2ggc2hvdWxkIHJvdW5kLXRyaXAgZXhhY3RseS4KK1BBU1Mgcm91bmR0cmlw
Q3NzUnVsZSgiY3Vyc29yOiBhdXRvOyIpIGlzICJjdXJzb3I6IGF1dG87IgorUEFTUyByb3VuZHRy
aXBDc3NSdWxlKCJjdXJzb3I6IG5vbmU7IikgaXMgImN1cnNvcjogbm9uZTsiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogY29weTsiKSBpcyAiY3Vyc29yOiBjb3B5OyIKK1BBU1Mgcm91
bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOyIpIGlzICJjdXJzb3I6IC13
ZWJraXQtZ3JhYmJpbmc7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mg
cm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSwgY3Jvc3NoYWly
OyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IgorUEFTUyBy
b3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTov
Ly9mb28yLnBuZyksIHBvaW50ZXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyks
IHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUo
ImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMzsiKSBpcyAiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSAxMiAzOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwo
ZmlsZTovLy9mb28ucG5nKSAwIDA7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykg
MCAwOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5n
KSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcs
IGNyb3NzaGFpcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzLCB1cmwo
ZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcsIGNyb3NzaGFpcjsi
CisKK1Rlc3QgYSBidW5jaCBvZiBpbnZhbGlkIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGRuJ3Qg
cGFyc2UgYXQgYWxsLgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IG5vbmV4aXN0YW50
OyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogbHRyOyIpIGlzICIiCitQ
QVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogaW5saW5lOyIpIGlzICIiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2Zv
bzIucG5nKTsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpIDEyOyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjog
dXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMyA1OyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1
bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgeCB5OyIpIGlzICIiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgYXV0bzsiKSBpcyAiIgor
CitUZXN0IGN1cnNvciBydWxlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gcm91bmQtdHJpcCB3aXRo
IHNvbWUgY2hhbmdlcy4KK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTov
Ly9mb28ucG5nKSAtMiAzOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmJiMDFiNGY4MzQ0
M2JiYjRmYTQ1YzQwZTNjZTgyYzg4M2IzZDNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhl
IGN1cnNvciBwcm9wZXJ0eS4iKTsKKworZnVuY3Rpb24gbWFrZUN1cnNvclJ1bGUocnVsZSkKK3sK
KyAgICByZXR1cm4gImN1cnNvcjogIiArIHJ1bGUgKyAiOyI7Cit9CisKK2Z1bmN0aW9uIHRlc3RD
dXJzb3JSdWxlKHJ1bGUpCit7CisgICAgdmFyIGNzc1RleHQgPSBtYWtlQ3Vyc29yUnVsZShydWxl
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBjc3NU
ZXh0ICsgJyIpJywgY3NzVGV4dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkQ3Vyc29yUnVs
ZShydWxlKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncm91bmR0cmlwQ3NzUnVsZSgi
JyArIG1ha2VDdXJzb3JSdWxlKHJ1bGUpICsgJyIpJywgJycpOworfQorCitmdW5jdGlvbiB0ZXN0
Q3Vyc29yUnVsZUV4cGVjdGVkKHJ1bGUsIGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncm91bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJzb3JSdWxlKHJ1bGUpICsgJyIp
JywgbWFrZUN1cnNvclJ1bGUoZXhwZWN0ZWQpKTsKK30KKworCitmdW5jdGlvbiByb3VuZHRyaXBD
c3NSdWxlKGNzc1RleHQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgY3NzVGV4dCk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUu
Y3NzVGV4dDsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZGVidWcoJ1Rlc3QgYSBidW5jaCBvZiBjdXJzb3IgcnVsZXMgd2hpY2gg
c2hvdWxkIHJvdW5kLXRyaXAgZXhhY3RseS4nKTsKK3Rlc3RDdXJzb3JSdWxlKCdhdXRvJyk7Cit0
ZXN0Q3Vyc29yUnVsZSgnbm9uZScpOwordGVzdEN1cnNvclJ1bGUoJ2NvcHknKTsKK3Rlc3RDdXJz
b3JSdWxlKCctd2Via2l0LWdyYWJiaW5nJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8v
Zm9vLnBuZyknKTsgICAvLyAgSUUgY29tcGF0aWJpbGl0eSAKK3Rlc3RDdXJzb3JSdWxlKCd1cmwo
ZmlsZTovLy9mb28ucG5nKSwgY3Jvc3NoYWlyJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6
Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcicpOwordGVzdEN1cnNv
clJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwo
ZmlsZTovLy9mb28ucG5nKSAwIDAnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28u
cG5nKSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2
IDcsIGNyb3NzaGFpcicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnVGVzdCBhIGJ1bmNoIG9mIGlu
dmFsaWQgY3Vyc29yIHJ1bGVzIHdoaWNoIHNob3VsZG5cJ3QgcGFyc2UgYXQgYWxsLicpOwordGVz
dEludmFsaWRDdXJzb3JSdWxlKCdub25leGlzdGFudCcpOwordGVzdEludmFsaWRDdXJzb3JSdWxl
KCdsdHInKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgnaW5saW5lJyk7Cit0ZXN0SW52YWxpZEN1
cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyknKTsK
K3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTInKTsKK3Rlc3RJ
bnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMyA1Jyk7Cit0ZXN0SW52
YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIHggeScpOwordGVzdEludmFsaWRD
dXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSBhdXRvJyk7CisKK2RlYnVnKCcnKTsKK2Rl
YnVnKCdUZXN0IGN1cnNvciBydWxlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gcm91bmQtdHJpcCB3
aXRoIHNvbWUgY2hhbmdlcy4nKTsKK3Rlc3RDdXJzb3JSdWxlRXhwZWN0ZWQoJ3VybChmaWxlOi8v
L2Zvby5wbmcpIC0yIDMnLCAndXJsKGZpbGU6Ly8vZm9vLnBuZyknKTsKKworc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169950</attachid>
            <date>2012-10-22 11:47:52 -0700</date>
            <delta_ts>2012-10-22 12:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99530-20121022144630.patch</filename>
            <type>text/plain</type>
            <size>8431</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhkNmY1MjFlZTgzODI3
MzdmZWRlYjk4YTRmNWYxZmRiZDhhYzBmOS4uMmJjOWU5ZjZjODJiZWYyOTc1MDliYzMxODcxYzMy
ZjIzZTViZDlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisKIDIwMTItMTAtMTcgIFBh
dHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4
IGZvciBXaW5DRSBhZnRlciByMTMxMzY1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuY3BwCmluZGV4IDA2ZDkzZWE2MDE0N2QyYjcwNmVmMmE4ZDU4MmIwNGZiYmMyYWE2
NzguLjBmN2U1ODc4Mjk2M2U5ZjA0ZDU4YzBkMTAwNTY0ZGE0YzE1ZDdkNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTgwLDYgKzgwLDIxIEBAIENT
U0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKICNlbmRpZgogfQogCitT
dHJpbmcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0Cit7CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChDU1NJbWFnZVZhbHVlOjpj
dXN0b21Dc3NUZXh0KCkpOworICAgIC8vIE5lZ2F0aXZlIHZhbHVlcyBhcmUgaWdub3JlZCBhcyBv
dXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGltYWdlLCBhbmQgc28KKyAgICAvLyB1c2VkIHRvIGlu
ZGljYXRlIG5vIGhvdHNwb3QuCisgICAgaWYgKG1faG90U3BvdC54KCkgPj0gMCAmJiBtX2hvdFNw
b3QueSgpID49IDApIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1faG90U3BvdC54KCkpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1faG90
U3BvdC55KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBi
b29sIENTU0N1cnNvckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAjaWYgIUVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuaAppbmRleCBkYzhkMWZmNGNhNWY1ODY1MjhlOTcwNjJjZDVlOThkNjZmNmIx
MmViLi4zOTcxMzdkZjI3ODYxNzFmM2Q3NjMwMmRmNzM0ZmM1ZjQxZDAyOTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGlj
OgogCiAgICAgSW50UG9pbnQgaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90U3BvdDsgfQog
CisgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKwogICAgIGJvb2wgdXBkYXRlSWZT
VkdDdXJzb3JJc1VzZWQoRWxlbWVudCopOwogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxOGQ4NDY5ZjY5ZTVhNWQyNDZm
YTkzNjkzOGUyNTFlMjhhYzNiYzE5Li45MWFiZDhlZTY2NWRkZDIxODllMDJlMDkyOGU2NDVmMTQ3
ODBkNTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTYgIFJpY2sgQnllcnMgIDxy
YnllcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGNzc1RleHQgZm9yIGN1cnNvciBwcm9wZXJ0
eSBkb2Vzbid0IGluY2x1ZGUgaG90c3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxlIHRlc3QgZm9yIHBhcnNpbmcgb2YgQ1NTIGN1cnNv
ciBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbDogQWRk
ZWQuCisKIDIwMTItMTAtMTcgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWluaWsucm90dHNjaGVz
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YjBkNjIwOGU3ZWVmYjc0OGZmNDZjOWNkYzIxYjVmYzczMjEzOTlmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzUgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9wZXJ0
eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgYSBidW5jaCBvZiBjdXJz
b3IgcnVsZXMgd2hpY2ggc2hvdWxkIHJvdW5kLXRyaXAgZXhhY3RseS4KK1BBU1Mgcm91bmR0cmlw
Q3NzUnVsZSgiY3Vyc29yOiBhdXRvOyIpIGlzICJjdXJzb3I6IGF1dG87IgorUEFTUyByb3VuZHRy
aXBDc3NSdWxlKCJjdXJzb3I6IG5vbmU7IikgaXMgImN1cnNvcjogbm9uZTsiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogY29weTsiKSBpcyAiY3Vyc29yOiBjb3B5OyIKK1BBU1Mgcm91
bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOyIpIGlzICJjdXJzb3I6IC13
ZWJraXQtZ3JhYmJpbmc7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mg
cm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSwgY3Jvc3NoYWly
OyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IgorUEFTUyBy
b3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTov
Ly9mb28yLnBuZyksIHBvaW50ZXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyks
IHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUo
ImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMzsiKSBpcyAiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSAxMiAzOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwo
ZmlsZTovLy9mb28ucG5nKSAwIDA7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykg
MCAwOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5n
KSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcs
IGNyb3NzaGFpcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzLCB1cmwo
ZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcsIGNyb3NzaGFpcjsi
CisKK1Rlc3QgYSBidW5jaCBvZiBpbnZhbGlkIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGRuJ3Qg
cGFyc2UgYXQgYWxsLgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IG5vbmV4aXN0YW50
OyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogbHRyOyIpIGlzICIiCitQ
QVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogaW5saW5lOyIpIGlzICIiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2Zv
bzIucG5nKTsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpIDEyOyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjog
dXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMyA1OyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENzc1J1
bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgeCB5OyIpIGlzICIiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgYXV0bzsiKSBpcyAiIgor
CitUZXN0IGN1cnNvciBydWxlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gcm91bmQtdHJpcCB3aXRo
IHNvbWUgY2hhbmdlcy4KK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTov
Ly9mb28ucG5nKSAtMiAzOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BB
U1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAyIC0zOyIp
IGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVs
ZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAtMiAtMzsiKSBpcyAiY3Vyc29yOiB1cmwo
ZmlsZTovLy9mb28ucG5nKTsiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBh
cnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTY1ZjFiYTY4MjE3YmE2ZWY0YmJmYTU1NGU5N2YwOTI2YWI1MTdmOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5nLmh0bWwKQEAg
LTAsMCArMSw3NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IHRoZSBwYXJzaW5nIG9mIHRoZSBjdXJzb3IgcHJvcGVydHkuIik7CisKK2Z1bmN0aW9uIG1h
a2VDdXJzb3JSdWxlKHJ1bGUpCit7CisgICAgcmV0dXJuICJjdXJzb3I6ICIgKyBydWxlICsgIjsi
OworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yUnVsZShydWxlKQoreworICAgIHZhciBjc3NUZXh0
ID0gbWFrZUN1cnNvclJ1bGUocnVsZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyb3Vu
ZHRyaXBDc3NSdWxlKCInICsgY3NzVGV4dCArICciKScsIGNzc1RleHQpOworfQorCitmdW5jdGlv
biB0ZXN0SW52YWxpZEN1cnNvclJ1bGUocnVsZSkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBtYWtlQ3Vyc29yUnVsZShydWxlKSArICciKScsICcn
KTsKK30KKworZnVuY3Rpb24gdGVzdEN1cnNvclJ1bGVFeHBlY3RlZChydWxlLCBleHBlY3RlZCkK
K3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBtYWtl
Q3Vyc29yUnVsZShydWxlKSArICciKScsIG1ha2VDdXJzb3JSdWxlKGV4cGVjdGVkKSk7Cit9CisK
KworZnVuY3Rpb24gcm91bmR0cmlwQ3NzUnVsZShjc3NUZXh0KQoreworICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuc2V0QXR0cmlidXRlKCJzdHls
ZSIsIGNzc1RleHQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICB2
YXIgcmVzdWx0ID0gZGl2LnN0eWxlLmNzc1RleHQ7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkaXYpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2RlYnVnKCdUZXN0IGEgYnVuY2gg
b2YgY3Vyc29yIHJ1bGVzIHdoaWNoIHNob3VsZCByb3VuZC10cmlwIGV4YWN0bHkuJyk7Cit0ZXN0
Q3Vyc29yUnVsZSgnYXV0bycpOwordGVzdEN1cnNvclJ1bGUoJ25vbmUnKTsKK3Rlc3RDdXJzb3JS
dWxlKCdjb3B5Jyk7Cit0ZXN0Q3Vyc29yUnVsZSgnLXdlYmtpdC1ncmFiYmluZycpOwordGVzdEN1
cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpJyk7ICAgLy8gIElFIGNvbXBhdGliaWxpdHkg
Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZyksIGNyb3NzaGFpcicpOwordGVz
dEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyks
IHBvaW50ZXInKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzJyk7
Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMCAwJyk7Cit0ZXN0Q3Vyc29y
UnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMywgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpLCB1
cmwoZmlsZTovLy9mb28zLnBuZykgNiA3LCBjcm9zc2hhaXInKTsKKworZGVidWcoJycpOworZGVi
dWcoJ1Rlc3QgYSBidW5jaCBvZiBpbnZhbGlkIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGRuXCd0
IHBhcnNlIGF0IGFsbC4nKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgnbm9uZXhpc3RhbnQnKTsK
K3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgnbHRyJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ2lu
bGluZScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJs
KGZpbGU6Ly8vZm9vMi5wbmcpJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxlOi8v
L2Zvby5wbmcpIDEyJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5w
bmcpIDEyIDMgNScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5n
KSB4IHknKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgYXV0
bycpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnVGVzdCBjdXJzb3IgcnVsZXMgd2hpY2ggYXJlIGV4
cGVjdGVkIHRvIHJvdW5kLXRyaXAgd2l0aCBzb21lIGNoYW5nZXMuJyk7Cit0ZXN0Q3Vyc29yUnVs
ZUV4cGVjdGVkKCd1cmwoZmlsZTovLy9mb28ucG5nKSAtMiAzJywgJ3VybChmaWxlOi8vL2Zvby5w
bmcpJyk7Cit0ZXN0Q3Vyc29yUnVsZUV4cGVjdGVkKCd1cmwoZmlsZTovLy9mb28ucG5nKSAyIC0z
JywgJ3VybChmaWxlOi8vL2Zvby5wbmcpJyk7Cit0ZXN0Q3Vyc29yUnVsZUV4cGVjdGVkKCd1cmwo
ZmlsZTovLy9mb28ucG5nKSAtMiAtMycsICd1cmwoZmlsZTovLy9mb28ucG5nKScpOworCitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169955</attachid>
            <date>2012-10-22 12:09:35 -0700</date>
            <delta_ts>2012-10-22 13:31:18 -0700</delta_ts>
            <desc>tweak based on cr feedback from darin@</desc>
            <filename>bug-99530-20121022150813.patch</filename>
            <type>text/plain</type>
            <size>8454</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjNjMyNGY0MDg5MGU3
ODZhNDRlNzI4YjY2ZGNiNGM3ZDQzYzQ0Yy4uNjdlMjJmNTc4MDY3N2MxYWU3NDE2NDMxOGIzN2Iz
MzQ4ZWY4NjFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisKIDIwMTItMTAtMjIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIFZhc3RseSBzaW1w
bGlmeSBWOEdDQ29udHJvbGxlcidzIE5vZGVWaXNpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMDZkOTNlYTYwMTQ3ZDJiNzA2ZWYyYThkNTgyYjA0
ZmJiYzJhYTY3OC4uNWIzYTE1ZjQyMjFkYzIwOGFlMjRmODE1ZjY0ZjdiYmVjYWNhNmYxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtODAsNiArODAs
MjEgQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQogI2VuZGlm
CiB9CiAKK1N0cmluZyBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKENTU0ltYWdl
VmFsdWU6OmN1c3RvbUNzc1RleHQoKSk7CisgICAgLy8gTmVnYXRpdmUgdmFsdWVzIGFyZSBpZ25v
cmVkIGFzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UsIGFuZCBzbworICAgIC8vIHVz
ZWQgdG8gaW5kaWNhdGUgbm8gaG90c3BvdC4KKyAgICBpZiAobV9ob3RTcG90LngoKSA+PSAwICYm
IG1faG90U3BvdC55KCkgPj0gMCkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9ob3RTcG90LngoKSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX2hvdFNwb3QueSgpKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBib29sIENTU0N1cnNv
ckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAjaWYgIUVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aAppbmRleCBkYzhkMWZmNGNhNWY1ODY1MjhlOTcwNjJjZDVlOThkNjZmNmIxMmViLi4zOTcxMzdk
ZjI3ODYxNzFmM2Q3NjMwMmRmNzM0ZmM1ZjQxZDAyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgSW50
UG9pbnQgaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90U3BvdDsgfQogCisgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKwogICAgIGJvb2wgdXBkYXRlSWZTVkdDdXJzb3JJc1Vz
ZWQoRWxlbWVudCopOwogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKENhY2hlZFJl
c291cmNlTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyODUwZTUzNDZlNmM5NWY0NDM1YzMyMDVhOTJjNDI2
MmJlZWEwOTE0Li45ZjQxZGYwYmY0NmFlZjgxMzQxMWM5OThiZTFiOTYxMDY3ZTJkMjNmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTYgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGNzc1RleHQgZm9yIGN1cnNvciBwcm9wZXJ0eSBkb2Vzbid0IGlu
Y2x1ZGUgaG90c3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc2ltcGxlIHRlc3QgZm9yIHBhcnNpbmcgb2YgQ1NTIGN1cnNvciBwcm9wZXJ0eS4K
KworICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTAtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgZnVydGhlciBBcHBsZSBNYWMgYmFzZWxpbmVzIGZvciBzaGFkb3cgRE9NIGNoYW5nZXMg
dG8gUmVuZGVyU2xpZGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29y
LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMGQ2MjA4ZTdlZWZiNzQ4ZmY0NmM5Y2RjMjFi
NWZjNzMyMTM5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJz
b3ItcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCB0aGUgcGFyc2lu
ZyBvZiB0aGUgY3Vyc29yIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVGVzdCBhIGJ1bmNoIG9mIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGQgcm91bmQtdHJpcCBl
eGFjdGx5LgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IGF1dG87IikgaXMgImN1cnNv
cjogYXV0bzsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogbm9uZTsiKSBpcyAiY3Vy
c29yOiBub25lOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBjb3B5OyIpIGlzICJj
dXJzb3I6IGNvcHk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IC13ZWJraXQtZ3Jh
YmJpbmc7IikgaXMgImN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsiCitQQVNTIHJvdW5kdHJpcENz
c1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyk7IikgaXMgImN1cnNvcjogdXJsKGZp
bGU6Ly8vZm9vLnBuZyk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBu
ZyksIGNyb3NzaGFpcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6
Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcjsiKSBpcyAiY3Vyc29y
OiB1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpLCBwb2ludGVyOyIK
K1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAz
OyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDM7IgorUEFTUyByb3VuZHRy
aXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDAgMDsiKSBpcyAiY3Vyc29y
OiB1cmwoZmlsZTovLy9mb28ucG5nKSAwIDA7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJz
b3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJs
KGZpbGU6Ly8vZm9vMy5wbmcpIDYgNywgY3Jvc3NoYWlyOyIpIGlzICJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpIDEyIDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9v
My5wbmcpIDYgNywgY3Jvc3NoYWlyOyIKKworVGVzdCBhIGJ1bmNoIG9mIGludmFsaWQgY3Vyc29y
IHJ1bGVzIHdoaWNoIHNob3VsZG4ndCBwYXJzZSBhdCBhbGwuCitQQVNTIHJvdW5kdHJpcENzc1J1
bGUoImN1cnNvcjogbm9uZXhpc3RhbnQ7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgi
Y3Vyc29yOiBsdHI7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBpbmxp
bmU7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9m
b28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpOyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENz
c1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTI7IikgaXMgIiIKK1BBU1Mgcm91
bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzIDU7IikgaXMg
IiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSB4
IHk7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9m
b28ucG5nKSBhdXRvOyIpIGlzICIiCisKK1Rlc3QgY3Vyc29yIHJ1bGVzIHdoaWNoIGFyZSBleHBl
Y3RlZCB0byByb3VuZC10cmlwIHdpdGggc29tZSBjaGFuZ2VzLgorUEFTUyByb3VuZHRyaXBDc3NS
dWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIC0yIDM7IikgaXMgImN1cnNvcjogdXJs
KGZpbGU6Ly8vZm9vLnBuZyk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChm
aWxlOi8vL2Zvby5wbmcpIDIgLTM7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyk7
IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIC0y
IC0zOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjVmMWJhNjgyMTdiYTZlZjRiYmZhNTU0
ZTk3ZjA5MjZhYjUxN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9w
ZXJ0eS4iKTsKKworZnVuY3Rpb24gbWFrZUN1cnNvclJ1bGUocnVsZSkKK3sKKyAgICByZXR1cm4g
ImN1cnNvcjogIiArIHJ1bGUgKyAiOyI7Cit9CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3JSdWxlKHJ1
bGUpCit7CisgICAgdmFyIGNzc1RleHQgPSBtYWtlQ3Vyc29yUnVsZShydWxlKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBjc3NUZXh0ICsgJyIpJywg
Y3NzVGV4dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkQ3Vyc29yUnVsZShydWxlKQorewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncm91bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJz
b3JSdWxlKHJ1bGUpICsgJyIpJywgJycpOworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yUnVsZUV4
cGVjdGVkKHJ1bGUsIGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncm91
bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJzb3JSdWxlKHJ1bGUpICsgJyIpJywgbWFrZUN1cnNv
clJ1bGUoZXhwZWN0ZWQpKTsKK30KKworCitmdW5jdGlvbiByb3VuZHRyaXBDc3NSdWxlKGNzc1Rl
eHQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgY3NzVGV4dCk7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaXYpOworICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUuY3NzVGV4dDsKKyAg
ICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworZGVidWcoJ1Rlc3QgYSBidW5jaCBvZiBjdXJzb3IgcnVsZXMgd2hpY2ggc2hvdWxkIHJvdW5k
LXRyaXAgZXhhY3RseS4nKTsKK3Rlc3RDdXJzb3JSdWxlKCdhdXRvJyk7Cit0ZXN0Q3Vyc29yUnVs
ZSgnbm9uZScpOwordGVzdEN1cnNvclJ1bGUoJ2NvcHknKTsKK3Rlc3RDdXJzb3JSdWxlKCctd2Vi
a2l0LWdyYWJiaW5nJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZyknKTsg
ICAvLyAgSUUgY29tcGF0aWJpbGl0eSAKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28u
cG5nKSwgY3Jvc3NoYWlyJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZyks
IHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcicpOwordGVzdEN1cnNvclJ1bGUoJ3VybChm
aWxlOi8vL2Zvby5wbmcpIDEyIDMnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28u
cG5nKSAwIDAnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzLCB1
cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcsIGNyb3NzaGFp
cicpOworCitkZWJ1ZygnJyk7CitkZWJ1ZygnVGVzdCBhIGJ1bmNoIG9mIGludmFsaWQgY3Vyc29y
IHJ1bGVzIHdoaWNoIHNob3VsZG5cJ3QgcGFyc2UgYXQgYWxsLicpOwordGVzdEludmFsaWRDdXJz
b3JSdWxlKCdub25leGlzdGFudCcpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCdsdHInKTsKK3Rl
c3RJbnZhbGlkQ3Vyc29yUnVsZSgnaW5saW5lJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3Vy
bChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyknKTsKK3Rlc3RJbnZhbGlk
Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTInKTsKK3Rlc3RJbnZhbGlkQ3Vyc29y
UnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMyA1Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1
bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIHggeScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1
cmwoZmlsZTovLy9mb28ucG5nKSBhdXRvJyk7CisKK2RlYnVnKCcnKTsKK2RlYnVnKCdUZXN0IGN1
cnNvciBydWxlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gcm91bmQtdHJpcCB3aXRoIHNvbWUgY2hh
bmdlcy4nKTsKK3Rlc3RDdXJzb3JSdWxlRXhwZWN0ZWQoJ3VybChmaWxlOi8vL2Zvby5wbmcpIC0y
IDMnLCAndXJsKGZpbGU6Ly8vZm9vLnBuZyknKTsKK3Rlc3RDdXJzb3JSdWxlRXhwZWN0ZWQoJ3Vy
bChmaWxlOi8vL2Zvby5wbmcpIDIgLTMnLCAndXJsKGZpbGU6Ly8vZm9vLnBuZyknKTsKK3Rlc3RD
dXJzb3JSdWxlRXhwZWN0ZWQoJ3VybChmaWxlOi8vL2Zvby5wbmcpIC0yIC0zJywgJ3VybChmaWxl
Oi8vL2Zvby5wbmcpJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169968</attachid>
            <date>2012-10-22 13:31:22 -0700</date>
            <delta_ts>2012-10-23 06:37:14 -0700</delta_ts>
            <desc>a couple more tweaks based on cr feedback from darin@</desc>
            <filename>bug-99530-20121022163000.patch</filename>
            <type>text/plain</type>
            <size>8675</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjNjMyNGY0MDg5MGU3
ODZhNDRlNzI4YjY2ZGNiNGM3ZDQzYzQ0Yy4uNjdlMjJmNTc4MDY3N2MxYWU3NDE2NDMxOGIzN2Iz
MzQ4ZWY4NjFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sCisKKyAgICAgICAgKiBj
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6CisKIDIwMTItMTAtMjIgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbVjhdIFZhc3RseSBzaW1w
bGlmeSBWOEdDQ29udHJvbGxlcidzIE5vZGVWaXNpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMDZkOTNlYTYwMTQ3ZDJiNzA2ZWYyYThkNTgyYjA0
ZmJiYzJhYTY3OC4uNWIzYTE1ZjQyMjFkYzIwOGFlMjRmODE1ZjY0ZjdiYmVjYWNhNmYxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtODAsNiArODAs
MjEgQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQogI2VuZGlm
CiB9CiAKK1N0cmluZyBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QK
K3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKENTU0ltYWdl
VmFsdWU6OmN1c3RvbUNzc1RleHQoKSk7CisgICAgLy8gTmVnYXRpdmUgdmFsdWVzIGFyZSBpZ25v
cmVkIGFzIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgaW1hZ2UsIGFuZCBzbworICAgIC8vIHVz
ZWQgdG8gaW5kaWNhdGUgbm8gaG90c3BvdC4KKyAgICBpZiAobV9ob3RTcG90LngoKSA+PSAwICYm
IG1faG90U3BvdC55KCkgPj0gMCkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9ob3RTcG90LngoKSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX2hvdFNwb3QueSgpKTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBib29sIENTU0N1cnNv
ckltYWdlVmFsdWU6OnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAjaWYgIUVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
aAppbmRleCBkYzhkMWZmNGNhNWY1ODY1MjhlOTcwNjJjZDVlOThkNjZmNmIxMmViLi4zOTcxMzdk
ZjI3ODYxNzFmM2Q3NjMwMmRmNzM0ZmM1ZjQxZDAyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgSW50
UG9pbnQgaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90U3BvdDsgfQogCisgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKwogICAgIGJvb2wgdXBkYXRlSWZTVkdDdXJzb3JJc1Vz
ZWQoRWxlbWVudCopOwogICAgIFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKENhY2hlZFJl
c291cmNlTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyODUwZTUzNDZlNmM5NWY0NDM1YzMyMDVhOTJjNDI2
MmJlZWEwOTE0Li45ZjQxZGYwYmY0NmFlZjgxMzQxMWM5OThiZTFiOTYxMDY3ZTJkMjNmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTYgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIGNzc1RleHQgZm9yIGN1cnNvciBwcm9wZXJ0eSBkb2Vzbid0IGlu
Y2x1ZGUgaG90c3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc2ltcGxlIHRlc3QgZm9yIHBhcnNpbmcgb2YgQ1NTIGN1cnNvciBwcm9wZXJ0eS4K
KworICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTAtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgZnVydGhlciBBcHBsZSBNYWMgYmFzZWxpbmVzIGZvciBzaGFkb3cgRE9NIGNoYW5nZXMg
dG8gUmVuZGVyU2xpZGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29y
LXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMGQ2MjA4ZTdlZWZiNzQ4ZmY0NmM5Y2RjMjFi
NWZjNzMyMTM5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJz
b3ItcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorVGVzdCB0aGUgcGFyc2lu
ZyBvZiB0aGUgY3Vyc29yIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVGVzdCBhIGJ1bmNoIG9mIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGQgcm91bmQtdHJpcCBl
eGFjdGx5LgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IGF1dG87IikgaXMgImN1cnNv
cjogYXV0bzsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogbm9uZTsiKSBpcyAiY3Vy
c29yOiBub25lOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBjb3B5OyIpIGlzICJj
dXJzb3I6IGNvcHk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IC13ZWJraXQtZ3Jh
YmJpbmc7IikgaXMgImN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsiCitQQVNTIHJvdW5kdHJpcENz
c1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyk7IikgaXMgImN1cnNvcjogdXJsKGZp
bGU6Ly8vZm9vLnBuZyk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBu
ZyksIGNyb3NzaGFpcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6
Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcjsiKSBpcyAiY3Vyc29y
OiB1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpLCBwb2ludGVyOyIK
K1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAz
OyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDM7IgorUEFTUyByb3VuZHRy
aXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDAgMDsiKSBpcyAiY3Vyc29y
OiB1cmwoZmlsZTovLy9mb28ucG5nKSAwIDA7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJz
b3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJs
KGZpbGU6Ly8vZm9vMy5wbmcpIDYgNywgY3Jvc3NoYWlyOyIpIGlzICJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpIDEyIDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9v
My5wbmcpIDYgNywgY3Jvc3NoYWlyOyIKKworVGVzdCBhIGJ1bmNoIG9mIGludmFsaWQgY3Vyc29y
IHJ1bGVzIHdoaWNoIHNob3VsZG4ndCBwYXJzZSBhdCBhbGwuCitQQVNTIHJvdW5kdHJpcENzc1J1
bGUoImN1cnNvcjogbm9uZXhpc3RhbnQ7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgi
Y3Vyc29yOiBsdHI7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBpbmxp
bmU7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9m
b28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpOyIpIGlzICIiCitQQVNTIHJvdW5kdHJpcENz
c1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTI7IikgaXMgIiIKK1BBU1Mgcm91
bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzIDU7IikgaXMg
IiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSB4
IHk7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9m
b28ucG5nKSBhdXRvOyIpIGlzICIiCisKK1Rlc3QgY3Vyc29yIHJ1bGVzIHdoaWNoIGFyZSBleHBl
Y3RlZCB0byByb3VuZC10cmlwIHdpdGggc29tZSBjaGFuZ2VzLgorUEFTUyByb3VuZHRyaXBDc3NS
dWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIC0yIDM7IikgaXMgImN1cnNvcjogdXJs
KGZpbGU6Ly8vZm9vLnBuZyk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChm
aWxlOi8vL2Zvby5wbmcpIDIgLTM7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyk7
IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIC0y
IC0zOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTYyNzc0Zjk3MTM0Y2Y0MTBiZWM2YTY0
NTk0MzQ3ZmVlOWUxNWNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9w
ZXJ0eS4iKTsKKworZnVuY3Rpb24gbWFrZUN1cnNvclJ1bGUocnVsZSkKK3sKKyAgICByZXR1cm4g
ImN1cnNvcjogIiArIHJ1bGUgKyAiOyI7Cit9CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3JSdWxlKHJ1
bGUpCit7CisgICAgdmFyIGNzc1RleHQgPSBtYWtlQ3Vyc29yUnVsZShydWxlKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBjc3NUZXh0ICsgJyIpJywg
Y3NzVGV4dCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RJbnZhbGlkQ3Vyc29yUnVsZShydWxlKQorewor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncm91bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJz
b3JSdWxlKHJ1bGUpICsgJyIpJywgJycpOworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yUnVsZUV4
cGVjdGVkKHJ1bGUsIGV4cGVjdGVkKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncm91
bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJzb3JSdWxlKHJ1bGUpICsgJyIpJywgbWFrZUN1cnNv
clJ1bGUoZXhwZWN0ZWQpKTsKK30KKworCitmdW5jdGlvbiByb3VuZHRyaXBDc3NSdWxlKGNzc1Rl
eHQpCit7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IGRpdi5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgY3NzVGV4dCk7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaXYpOworICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUuY3NzVGV4dDsKKyAg
ICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworLy8gTm90ZSB0aGF0IGFueSBhYnNvbHV0ZSBVUkwgd2lsbCBzdWZmaWNlIGZvciB0aGVzZSB0
ZXN0cyAoY2FuJ3QgdXNlIHJlbGF0aXZlIFVSTHMKKy8vIHNpbmNlIHRoZXknbGwgYmUgY29udmVy
dGVkIHRvIGFic29sdXRlIGZvcm0gaW4gdGhlIG91dHB1dCkuICBJIGNob3NlIGZpbGUgVVJMcyBq
dXN0CisvLyB0byBhdm9pZCB0cmlnZ2VyaW5nIGFueSBuZXR3b3JrIGFjdGl2aXR5LgorCitkZWJ1
ZygnVGVzdCBhIGJ1bmNoIG9mIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGQgcm91bmQtdHJpcCBl
eGFjdGx5LicpOwordGVzdEN1cnNvclJ1bGUoJ2F1dG8nKTsKK3Rlc3RDdXJzb3JSdWxlKCdub25l
Jyk7Cit0ZXN0Q3Vyc29yUnVsZSgnY29weScpOwordGVzdEN1cnNvclJ1bGUoJy13ZWJraXQtZ3Jh
YmJpbmcnKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKScpOyAgIC8vICBJ
RSBjb21wYXRpYmlsaXR5IAordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpLCBj
cm9zc2hhaXInKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJsKGZp
bGU6Ly8vZm9vMi5wbmcpLCBwb2ludGVyJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8v
Zm9vLnBuZykgMTIgMycpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDAg
MCcpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMsIHVybChmaWxl
Oi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMy5wbmcpIDYgNywgY3Jvc3NoYWlyJyk7CisK
K2RlYnVnKCcnKTsKK2RlYnVnKCdUZXN0IGEgYnVuY2ggb2YgaW52YWxpZCBjdXJzb3IgcnVsZXMg
d2hpY2ggc2hvdWxkblwndCBwYXJzZSBhdCBhbGwuJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUo
J25vbmV4aXN0ZW50Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ2x0cicpOwordGVzdEludmFs
aWRDdXJzb3JSdWxlKCdpbmxpbmUnKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJsKGZpbGU6
Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKScpOwordGVzdEludmFsaWRDdXJzb3JS
dWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAxMicpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1
cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzIDUnKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJs
KGZpbGU6Ly8vZm9vLnBuZykgeCB5Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxl
Oi8vL2Zvby5wbmcpIGF1dG8nKTsKKworZGVidWcoJycpOworZGVidWcoJ1Rlc3QgY3Vyc29yIHJ1
bGVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byByb3VuZC10cmlwIHdpdGggc29tZSBjaGFuZ2VzLicp
OwordGVzdEN1cnNvclJ1bGVFeHBlY3RlZCgndXJsKGZpbGU6Ly8vZm9vLnBuZykgLTIgMycsICd1
cmwoZmlsZTovLy9mb28ucG5nKScpOwordGVzdEN1cnNvclJ1bGVFeHBlY3RlZCgndXJsKGZpbGU6
Ly8vZm9vLnBuZykgMiAtMycsICd1cmwoZmlsZTovLy9mb28ucG5nKScpOwordGVzdEN1cnNvclJ1
bGVFeHBlY3RlZCgndXJsKGZpbGU6Ly8vZm9vLnBuZykgLTIgLTMnLCAndXJsKGZpbGU6Ly8vZm9v
LnBuZyknKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170148</attachid>
            <date>2012-10-23 06:37:18 -0700</date>
            <delta_ts>2012-10-30 11:17:55 -0700</delta_ts>
            <desc>round-trip parsing of negative hotspot values</desc>
            <filename>bug-99530-20121023093555.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjNjMyNGY0MDg5MGU3
ODZhNDRlNzI4YjY2ZGNiNGM3ZDQzYzQ0Yy4uNjZjYWI1MWFiZmU4MDY2NmM4MTFmMzY1Yzk4MzEw
MDU4Yjk1NmJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKyAg
ICAgICAgQWxzbyBleHBsaWNpdGx5IHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgaG90c3BvdCB3YXMg
c3VwcGxpZWQgaW4gdGhlIHBhcnNlciwKKyAgICAgICAgd2hpbGUgc3RpbGwgdXNpbmcgdGhlIGV4
aXN0aW5nIGNvbnZlbnRpb24gb2YgKC0xLC0xKSB0byBkZW5vdGUgbm8gaG90c3BvdAorICAgICAg
ICBpbiB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2N1
cnNvci1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmN1c3RvbUNzc1RleHQp
OgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJz
b3JJbWFnZVZhbHVlKToKKwogMjAxMi0xMC0yMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtWOF0gVmFzdGx5IHNpbXBsaWZ5IFY4R0NDb250cm9sbGVyJ3MgTm9k
ZVZpc2l0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRl
eCAwNmQ5M2VhNjAxNDdkMmI3MDZlZjJhOGQ1ODJiMDRmYmJjMmFhNjc4Li4wZmFhODEzYjFlYmUx
MjdmMjVjM2I2YzU2NDc1NzZiNTU3YmZmNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwCkBAIC01Niw4ICs1Niw5IEBAIHN0YXRpYyBpbmxpbmUgU1ZHQ3Vy
c29yRWxlbWVudCogcmVzb3VyY2VSZWZlcmVuY2VkQnlDdXJzb3JFbGVtZW50KGNvbnN0IFN0cmlu
ZyYKIH0KICNlbmRpZgogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKK0NTU0N1cnNvcklt
YWdlVmFsdWU6OkNTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaGFz
SG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiAgICAgOiBDU1NJbWFnZVZhbHVlKEN1
cnNvckltYWdlQ2xhc3MsIHVybCkKKyAgICAsIG1faGFzSG90U3BvdChoYXNIb3RTcG90KQogICAg
ICwgbV9ob3RTcG90KGhvdFNwb3QpCiB7CiB9CkBAIC04MCw2ICs4MSwxOSBAQCBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCiAjZW5kaWYKIH0KIAorU3RyaW5nIENT
U0N1cnNvckltYWdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQoQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ3Nz
VGV4dCgpKTsKKyAgICBpZiAobV9oYXNIb3RTcG90KSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX2hvdFNwb3QueCgpKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1faG90
U3BvdC55KCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKIGJv
b2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoRWxlbWVudCog
ZWxlbWVudCkKIHsKICNpZiAhRU5BQkxFKFNWRykKQEAgLTk0LDYgKzEwOCw3IEBAIGJvb2wgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAoU1ZHQ3Vyc29yRWxlbWVudCogY3Vyc29yRWxlbWVudCA9IHJlc291cmNlUmVm
ZXJlbmNlZEJ5Q3Vyc29yRWxlbWVudCh1cmwoKSwgZWxlbWVudC0+ZG9jdW1lbnQoKSkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVycmlkZSBob3Qgc3BvdCBzcGVjaWZpZWQgaW4g
Q1NTLCB3aGljaCBpcyBwcm9iYWJseSBpbmNvcnJlY3QuCiAgICAgICAgIFNWR0xlbmd0aENvbnRl
eHQgbGVuZ3RoQ29udGV4dCgwKTsKKyAgICAgICAgbV9oYXNIb3RTcG90ID0gdHJ1ZTsKICAgICAg
ICAgZmxvYXQgeCA9IHJvdW5kZihjdXJzb3JFbGVtZW50LT54KCkudmFsdWUobGVuZ3RoQ29udGV4
dCkpOwogICAgICAgICBtX2hvdFNwb3Quc2V0WChzdGF0aWNfY2FzdDxpbnQ+KHgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKaW5kZXggZGM4ZDFmZjRjYTVmNTg2
NTI4ZTk3MDYyY2Q1ZTk4ZDY2ZjZiMTJlYi4uODBkM2YxNWUwMGQ1ZWFlNTI1ODBhMGU2OTQ5ZmYw
N2Q1Njc1MmQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBA
IC0zMiwxNCArMzIsMjMgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIAogY2xhc3MgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZVZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IEludFBvaW50JiBob3RTcG90KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU0N1cnNvcklt
YWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBoYXNIb3RTcG90LCBjb25z
dCBJbnRQb2ludCYgaG90U3BvdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSh1cmwsIGhvdFNwb3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKHVybCwgaGFzSG90U3BvdCwgaG90U3BvdCkpOwog
ICAgIH0KIAogICAgIH5DU1NDdXJzb3JJbWFnZVZhbHVlKCk7CiAKLSAgICBJbnRQb2ludCBob3RT
cG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RTcG90OyB9CisgICAgYm9vbCBoYXNIb3RTcG90KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNIb3RTcG90OyB9CisKKyAgICBJbnRQb2ludCBob3RTcG90KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2hhc0hvdFNwb3QpCisgICAgICAgICAgICByZXR1
cm4gbV9ob3RTcG90OworICAgICAgICByZXR1cm4gSW50UG9pbnQoLTEsIC0xKTsKKyAgICB9CisK
KyAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCiAgICAgYm9vbCB1cGRhdGVJZlNW
R0N1cnNvcklzVXNlZChFbGVtZW50Kik7CiAgICAgU3R5bGVDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKQEAgLTUxLDggKzYwLDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7
CiAKKyAgICBib29sIG1faGFzSG90U3BvdDsKICAgICBJbnRQb2ludCBtX2hvdFNwb3Q7CiAKICNp
ZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBhZjNiYWI2MDJhNTYy
NmZlZWY3ZTk4YTVmYmZmNWY2NDM2N2Q4YTMzLi4xMGI3NDBlZWY1ZTc4ZDQ2OWI2MWMxZGUwNjhk
ZDczNWQ5M2U1YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTg3NiwxNSArMTg3
NiwxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgY29vcmRzLmFwcGVuZChpbnQodmFsdWUt
PmZWYWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJvb2wgaGFzSG90U3BvdCA9IGZhbHNlOwogICAg
ICAgICAgICAgSW50UG9pbnQgaG90U3BvdCgtMSwgLTEpOwogICAgICAgICAgICAgaW50IG5yY29v
cmRzID0gY29vcmRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChucmNvb3JkcyA+IDAgJiYgbnJj
b29yZHMgIT0gMikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBp
ZiAobnJjb29yZHMgPT0gMikKKyAgICAgICAgICAgIGlmIChucmNvb3JkcyA9PSAyKSB7CisgICAg
ICAgICAgICAgICAgaGFzSG90U3BvdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaG90U3BvdCA9
IEludFBvaW50KGNvb3Jkc1swXSwgY29vcmRzWzFdKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKCF1cmkuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShjb21wbGV0ZVVSTCh1cmkpLCBob3RTcG90KSk7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShj
b21wbGV0ZVVSTCh1cmkpLCBoYXNIb3RTcG90LCBob3RTcG90KSk7CiAKICAgICAgICAgICAgIGlm
ICgoaW5TdHJpY3RNb2RlKCkgJiYgIXZhbHVlKSB8fCAodmFsdWUgJiYgISh2YWx1ZS0+dW5pdCA9
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLCcpKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjg1MGU1MzQ2ZTZjOTVmNDQzNWMz
MjA1YTkyYzQyNjJiZWVhMDkxNC4uOWY0MWRmMGJmNDZhZWY4MTM0MTFjOTk4YmUxYjk2MTA2N2Uy
ZDIzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTE2ICBSaWNrIEJ5ZXJzICA8cmJ5
ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJzb3IgcHJvcGVydHkg
ZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHNpbXBsZSB0ZXN0IGZvciBwYXJzaW5nIG9mIENTUyBjdXJzb3Ig
cHJvcGVydHkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTEwLTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIGZ1cnRoZXIgQXBwbGUgTWFjIGJhc2VsaW5lcyBmb3Igc2hhZG93IERP
TSBjaGFuZ2VzIHRvIFJlbmRlclNsaWRlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL2N1cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1
cnNvci1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2RmOTJjYzM1MTBlYTRjNjk3
MGVlNzBhYTMxMzRkN2QzMTRmM2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvY3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1Rlc3Qg
dGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1Rlc3QgYSBidW5jaCBvZiBjdXJzb3IgcnVsZXMgd2hpY2ggc2hvdWxkIHJv
dW5kLXRyaXAgZXhhY3RseS4KK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBhdXRvOyIp
IGlzICJjdXJzb3I6IGF1dG87IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IG5vbmU7
IikgaXMgImN1cnNvcjogbm9uZTsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogY29w
eTsiKSBpcyAiY3Vyc29yOiBjb3B5OyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiAt
d2Via2l0LWdyYWJiaW5nOyIpIGlzICJjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7IgorUEFTUyBy
b3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIpIGlzICJjdXJz
b3I6IHVybChmaWxlOi8vL2Zvby5wbmcpOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29y
OiB1cmwoZmlsZTovLy9mb28ucG5nKSwgY3Jvc3NoYWlyOyIpIGlzICJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6
IHVybChmaWxlOi8vL2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHBvaW50ZXI7Iikg
aXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwg
cG9pbnRlcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9v
LnBuZykgMTIgMywgcG9pbnRlcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAx
MiAzLCBwb2ludGVyOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTov
Ly9mb28ucG5nKSAwIDAsIHBvaW50ZXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBu
ZykgMCAwLCBwb2ludGVyOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2Zv
bzMucG5nKSA2IDcsIGNyb3NzaGFpcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5n
KSAxMiAzLCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcs
IGNyb3NzaGFpcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8v
Zm9vLnBuZykgLTIgMywgcG9pbnRlcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5n
KSAtMiAzLCBwb2ludGVyOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSAyIC0zLCBwb2ludGVyOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zv
by5wbmcpIDIgLTMsIHBvaW50ZXI7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVy
bChmaWxlOi8vL2Zvby5wbmcpIC0xIC0xLCBwb2ludGVyOyIpIGlzICJjdXJzb3I6IHVybChmaWxl
Oi8vL2Zvby5wbmcpIC0xIC0xLCBwb2ludGVyOyIKKworVGVzdCBhIGJ1bmNoIG9mIGludmFsaWQg
Y3Vyc29yIHJ1bGVzIHdoaWNoIHNob3VsZG4ndCBwYXJzZSBhdCBhbGwuCitQQVNTIHJvdW5kdHJp
cENzc1J1bGUoImN1cnNvcjogbm9uZXhpc3RlbnQ7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3Nz
UnVsZSgiY3Vyc29yOiBsdHI7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29y
OiBpbmxpbmU7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpOyIpIGlzICIiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZykgMTI7IikgaXMgIiIKK1BB
U1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAzIDU7
IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28u
cG5nKSB4IHk7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmls
ZTovLy9mb28ucG5nKSBhdXRvOyIpIGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODkyZjM5MTJjNTY2OTg0OTYyMzE5ZGNhYzM3OTY5ODgzNmZhNzli
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2N1cnNvci1wYXJzaW5n
Lmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRoZSBwYXJzaW5nIG9mIHRoZSBjdXJzb3IgcHJvcGVydHkuIik7CisKK2Z1
bmN0aW9uIG1ha2VDdXJzb3JSdWxlKHJ1bGUpCit7CisgICAgcmV0dXJuICJjdXJzb3I6ICIgKyBy
dWxlICsgIjsiOworfQorCitmdW5jdGlvbiB0ZXN0Q3Vyc29yUnVsZShydWxlKQoreworICAgIHZh
ciBjc3NUZXh0ID0gbWFrZUN1cnNvclJ1bGUocnVsZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdyb3VuZHRyaXBDc3NSdWxlKCInICsgY3NzVGV4dCArICciKScsIGNzc1RleHQpOworfQor
CitmdW5jdGlvbiB0ZXN0SW52YWxpZEN1cnNvclJ1bGUocnVsZSkKK3sKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ3JvdW5kdHJpcENzc1J1bGUoIicgKyBtYWtlQ3Vyc29yUnVsZShydWxlKSAr
ICciKScsICcnKTsKK30KKworZnVuY3Rpb24gcm91bmR0cmlwQ3NzUnVsZShjc3NUZXh0KQorewor
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBkaXYuc2V0
QXR0cmlidXRlKCJzdHlsZSIsIGNzc1RleHQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2KTsKKyAgICB2YXIgcmVzdWx0ID0gZGl2LnN0eWxlLmNzc1RleHQ7CisgICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIE5v
dGUgdGhhdCBhbnkgYWJzb2x1dGUgVVJMIHdpbGwgc3VmZmljZSBmb3IgdGhlc2UgdGVzdHMgKGNh
bid0IHVzZSByZWxhdGl2ZSBVUkxzCisvLyBzaW5jZSB0aGV5J2xsIGJlIGNvbnZlcnRlZCB0byBh
YnNvbHV0ZSBmb3JtIGluIHRoZSBvdXRwdXQpLiAgSSBjaG9zZSBmaWxlIFVSTHMganVzdAorLy8g
dG8gYXZvaWQgdHJpZ2dlcmluZyBhbnkgbmV0d29yayBhY3Rpdml0eS4KKworZGVidWcoJ1Rlc3Qg
YSBidW5jaCBvZiBjdXJzb3IgcnVsZXMgd2hpY2ggc2hvdWxkIHJvdW5kLXRyaXAgZXhhY3RseS4n
KTsKK3Rlc3RDdXJzb3JSdWxlKCdhdXRvJyk7Cit0ZXN0Q3Vyc29yUnVsZSgnbm9uZScpOwordGVz
dEN1cnNvclJ1bGUoJ2NvcHknKTsKK3Rlc3RDdXJzb3JSdWxlKCctd2Via2l0LWdyYWJiaW5nJyk7
Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZyknKTsgICAvLyAgSUUgY29tcGF0
aWJpbGl0eSAKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSwgY3Jvc3NoYWly
Jyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2Zv
bzIucG5nKSwgcG9pbnRlcicpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcp
IDEyIDMsIHBvaW50ZXInKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAw
IDAsIHBvaW50ZXInKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAxMiAz
LCB1cmwoZmlsZTovLy9mb28yLnBuZyksIHVybChmaWxlOi8vL2ZvbzMucG5nKSA2IDcsIGNyb3Nz
aGFpcicpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIC0yIDMsIHBvaW50
ZXInKTsKK3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAyIC0zLCBwb2ludGVy
Jyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgLTEgLTEsIHBvaW50ZXIn
KTsKKworZGVidWcoJycpOworZGVidWcoJ1Rlc3QgYSBidW5jaCBvZiBpbnZhbGlkIGN1cnNvciBy
dWxlcyB3aGljaCBzaG91bGRuXCd0IHBhcnNlIGF0IGFsbC4nKTsKK3Rlc3RJbnZhbGlkQ3Vyc29y
UnVsZSgnbm9uZXhpc3RlbnQnKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgnbHRyJyk7Cit0ZXN0
SW52YWxpZEN1cnNvclJ1bGUoJ2lubGluZScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1cmwo
ZmlsZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpJyk7Cit0ZXN0SW52YWxpZEN1
cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1
bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMgNScpOwordGVzdEludmFsaWRDdXJzb3JSdWxl
KCd1cmwoZmlsZTovLy9mb28ucG5nKSB4IHknKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgndXJs
KGZpbGU6Ly8vZm9vLnBuZykgYXV0bycpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171487</attachid>
            <date>2012-10-30 11:17:59 -0700</date>
            <delta_ts>2012-10-30 17:03:48 -0700</delta_ts>
            <desc>Mark as reviewed by darin, last patch was only making a minor change he suggested after he r+ an earlier version</desc>
            <filename>bug-99530-20121030141624.patch</filename>
            <type>text/plain</type>
            <size>11538</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY4ZjQ5OGY3NjYwNDJh
YjY3N2ZmN2ZiNDEwZDQ0ODY0MzI5OTg5OS4uNDNmYjE1ZTkyN2RlNzdmNWMzYTY5MjFjMmFiODgz
ZjVhNjZkZTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTE2ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBjc3NUZXh0IGZvciBjdXJz
b3IgcHJvcGVydHkgZG9lc24ndCBpbmNsdWRlIGhvdHNwb3QKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW1wbGVtZW50IGN1c3RvbUNzc1RleHQgaW4gQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZSB0byBpbmNsdWRlIHRoZSBob3RzcG90IHdoZW4gcHJlc2VudC4KKyAgICAg
ICAgQWxzbyBleHBsaWNpdGx5IHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgaG90c3BvdCB3YXMgc3Vw
cGxpZWQgaW4gdGhlIHBhcnNlciwKKyAgICAgICAgd2hpbGUgc3RpbGwgdXNpbmcgdGhlIGV4aXN0
aW5nIGNvbnZlbnRpb24gb2YgKC0xLC0xKSB0byBkZW5vdGUgbm8gaG90c3BvdAorICAgICAgICBp
biB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2N1cnNv
ci1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmN1c3RvbUNzc1RleHQpOgor
ICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJ
bWFnZVZhbHVlKToKKwogMjAxMi0xMC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWxsb3cgTG9hZGVyU3RyYXRlZ3kgdG8gb3ZlcnJpZGUgdGhlIFJlc291
cmNlTG9hZFNjaGVkdWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
Y3BwCmluZGV4IDA2ZDkzZWE2MDE0N2QyYjcwNmVmMmE4ZDU4MmIwNGZiYmMyYWE2NzguLjBmYWE4
MTNiMWViZTEyN2YyNWMzYjZjNTY0NzU3NmI1NTdiZmY0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTU2LDggKzU2LDkgQEAgc3RhdGljIGlubGlu
ZSBTVkdDdXJzb3JFbGVtZW50KiByZXNvdXJjZVJlZmVyZW5jZWRCeUN1cnNvckVsZW1lbnQoY29u
c3QgU3RyaW5nJgogfQogI2VuZGlmCiAKLUNTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvcklt
YWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQorQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShjb25zdCBTdHJpbmcmIHVybCwg
Ym9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCkKICAgICA6IENTU0ltYWdl
VmFsdWUoQ3Vyc29ySW1hZ2VDbGFzcywgdXJsKQorICAgICwgbV9oYXNIb3RTcG90KGhhc0hvdFNw
b3QpCiAgICAgLCBtX2hvdFNwb3QoaG90U3BvdCkKIHsKIH0KQEAgLTgwLDYgKzgxLDE5IEBAIENT
U0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKICNlbmRpZgogfQogCitT
dHJpbmcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0Cit7CisgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgcmVzdWx0LmFwcGVuZChDU1NJbWFnZVZhbHVlOjpj
dXN0b21Dc3NUZXh0KCkpOworICAgIGlmIChtX2hhc0hvdFNwb3QpIHsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1faG90U3BvdC54KCkp
OworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmROdW1i
ZXIobV9ob3RTcG90LnkoKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsK
K30KKwogYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjp1cGRhdGVJZlNWR0N1cnNvcklzVXNlZChF
bGVtZW50KiBlbGVtZW50KQogewogI2lmICFFTkFCTEUoU1ZHKQpAQCAtOTQsNiArMTA4LDcgQEAg
Ym9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjp1cGRhdGVJZlNWR0N1cnNvcklzVXNlZChFbGVtZW50
KiBlbGVtZW50KQogICAgIGlmIChTVkdDdXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50ID0gcmVz
b3VyY2VSZWZlcmVuY2VkQnlDdXJzb3JFbGVtZW50KHVybCgpLCBlbGVtZW50LT5kb2N1bWVudCgp
KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG92ZXJyaWRlIGhvdCBzcG90IHNwZWNp
ZmllZCBpbiBDU1MsIHdoaWNoIGlzIHByb2JhYmx5IGluY29ycmVjdC4KICAgICAgICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KDApOworICAgICAgICBtX2hhc0hvdFNwb3QgPSB0cnVl
OwogICAgICAgICBmbG9hdCB4ID0gcm91bmRmKGN1cnNvckVsZW1lbnQtPngoKS52YWx1ZShsZW5n
dGhDb250ZXh0KSk7CiAgICAgICAgIG1faG90U3BvdC5zZXRYKHN0YXRpY19jYXN0PGludD4oeCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAppbmRleCBkYzhkMWZm
NGNhNWY1ODY1MjhlOTcwNjJjZDVlOThkNjZmNmIxMmViLi44MGQzZjE1ZTAwZDVlYWU1MjU4MGEw
ZTY5NDlmZjA3ZDU2NzUyZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmgKQEAgLTMyLDE0ICszMiwyMyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBDU1ND
dXJzb3JJbWFnZVZhbHVlIDogcHVibGljIENTU0ltYWdlVmFsdWUgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU0N1cnNvckltYWdlVmFsdWU+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
Q3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGhhc0hvdFNw
b3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKHVybCwgaG90U3BvdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENTU0N1cnNvckltYWdlVmFsdWUodXJsLCBoYXNIb3RTcG90LCBob3RT
cG90KSk7CiAgICAgfQogCiAgICAgfkNTU0N1cnNvckltYWdlVmFsdWUoKTsKIAotICAgIEludFBv
aW50IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hvdFNwb3Q7IH0KKyAgICBib29sIGhhc0hv
dFNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0hvdFNwb3Q7IH0KKworICAgIEludFBvaW50IGhv
dFNwb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faGFzSG90U3BvdCkKKyAgICAgICAg
ICAgIHJldHVybiBtX2hvdFNwb3Q7CisgICAgICAgIHJldHVybiBJbnRQb2ludCgtMSwgLTEpOwor
ICAgIH0KKworICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKICAgICBib29sIHVw
ZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKEVsZW1lbnQqKTsKICAgICBTdHlsZUNhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciopOwpAQCAtNTEsOCArNjAsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKKyAgICBDU1NDdXJzb3JJbWFnZVZh
bHVlKGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBo
b3RTcG90KTsKIAorICAgIGJvb2wgbV9oYXNIb3RTcG90OwogICAgIEludFBvaW50IG1faG90U3Bv
dDsKIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDBmMDg4
NmYzNDNiYTdlMzNiZTJhN2RiMWNkN2RlZmFkMTlmZmVhZTkuLjhjMmU2NjVkZmEwNTFiM2MwNjk4
NGU3MjVlNTM5YTBmMWI3ZTYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xODc2
LDE1ICsxODc2LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICBjb29yZHMuYXBwZW5kKGlu
dCh2YWx1ZS0+ZlZhbHVlKSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+
bmV4dCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBoYXNIb3RTcG90ID0gZmFs
c2U7CiAgICAgICAgICAgICBJbnRQb2ludCBob3RTcG90KC0xLCAtMSk7CiAgICAgICAgICAgICBp
bnQgbnJjb29yZHMgPSBjb29yZHMuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5yY29vcmRzID4g
MCAmJiBucmNvb3JkcyAhPSAyKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmIChucmNvb3JkcyA9PSAyKQorICAgICAgICAgICAgaWYgKG5yY29vcmRzID09IDIp
IHsKKyAgICAgICAgICAgICAgICBoYXNIb3RTcG90ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBo
b3RTcG90ID0gSW50UG9pbnQoY29vcmRzWzBdLCBjb29yZHNbMV0pOworICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoIXVyaS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKHVyaSksIGhvdFNw
b3QpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6
Y3JlYXRlKGNvbXBsZXRlVVJMKHVyaSksIGhhc0hvdFNwb3QsIGhvdFNwb3QpKTsKIAogICAgICAg
ICAgICAgaWYgKChpblN0cmljdE1vZGUoKSAmJiAhdmFsdWUpIHx8ICh2YWx1ZSAmJiAhKHZhbHVl
LT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcs
JykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MzMzYWI0MmZkOGVi
YTE4NGQ3NTlkYWUwMjY1OThlMTY1ZjRhNDI4Li44YWFkZjBhZGFlY2IwYTdlOTViYzUwODEwZDFk
Y2FiNGJiNzZkNTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTYgIFJpY2sgQnll
cnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGNzc1RleHQgZm9yIGN1cnNvciBw
cm9wZXJ0eSBkb2Vzbid0IGluY2x1ZGUgaG90c3BvdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBBZGQgc2ltcGxlIHRlc3QgZm9yIHBhcnNpbmcgb2YgQ1NTIGN1
cnNvciBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2N1cnNvci1wYXJzaW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRtbDog
QWRkZWQuCisKIDIwMTItMTAtMjUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIGZhaWxpbmcgdGVz
dHMgdG8gc3BlZWR1cCB0ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3Vyc29yLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29y
LXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZGY5MmNjMzUxMGVhNGM2OTcwZWU3
MGFhMzEzNGQ3ZDMxNGYzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jdXJzb3ItcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdCB0aGUg
cGFyc2luZyBvZiB0aGUgY3Vyc29yIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworVGVzdCBhIGJ1bmNoIG9mIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGQgcm91bmQt
dHJpcCBleGFjdGx5LgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IGF1dG87IikgaXMg
ImN1cnNvcjogYXV0bzsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogbm9uZTsiKSBp
cyAiY3Vyc29yOiBub25lOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiBjb3B5OyIp
IGlzICJjdXJzb3I6IGNvcHk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IC13ZWJr
aXQtZ3JhYmJpbmc7IikgaXMgImN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsiCitQQVNTIHJvdW5k
dHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBuZyk7IikgaXMgImN1cnNvcjog
dXJsKGZpbGU6Ly8vZm9vLnBuZyk7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVy
bChmaWxlOi8vL2Zvby5wbmcpLCBjcm9zc2hhaXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8v
Zm9vLnBuZyksIGNyb3NzaGFpcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJs
KGZpbGU6Ly8vZm9vLnBuZyksIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgcG9pbnRlcjsiKSBpcyAi
Y3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5wbmcpLCBwb2lu
dGVyOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5n
KSAxMiAzLCBwb2ludGVyOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMs
IHBvaW50ZXI7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zv
by5wbmcpIDAgMCwgcG9pbnRlcjsiKSBpcyAiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAw
IDAsIHBvaW50ZXI7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8v
L2Zvby5wbmcpIDEyIDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMy5w
bmcpIDYgNywgY3Jvc3NoYWlyOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEy
IDMsIHVybChmaWxlOi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMy5wbmcpIDYgNywgY3Jv
c3NoYWlyOyIKK1BBU1Mgcm91bmR0cmlwQ3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28u
cG5nKSAtMiAzLCBwb2ludGVyOyIpIGlzICJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIC0y
IDMsIHBvaW50ZXI7IgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8v
L2Zvby5wbmcpIDIgLTMsIHBvaW50ZXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8vZm9vLnBu
ZykgMiAtMywgcG9pbnRlcjsiCitQQVNTIHJvdW5kdHJpcENzc1J1bGUoImN1cnNvcjogdXJsKGZp
bGU6Ly8vZm9vLnBuZykgLTEgLTEsIHBvaW50ZXI7IikgaXMgImN1cnNvcjogdXJsKGZpbGU6Ly8v
Zm9vLnBuZykgLTEgLTEsIHBvaW50ZXI7IgorCitUZXN0IGEgYnVuY2ggb2YgaW52YWxpZCBjdXJz
b3IgcnVsZXMgd2hpY2ggc2hvdWxkbid0IHBhcnNlIGF0IGFsbC4KK1BBU1Mgcm91bmR0cmlwQ3Nz
UnVsZSgiY3Vyc29yOiBub25leGlzdGVudDsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxl
KCJjdXJzb3I6IGx0cjsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IGlu
bGluZTsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8v
L2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyk7IikgaXMgIiIKK1BBU1Mgcm91bmR0cmlw
Q3NzUnVsZSgiY3Vyc29yOiB1cmwoZmlsZTovLy9mb28ucG5nKSAxMjsiKSBpcyAiIgorUEFTUyBy
b3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMgNTsiKSBp
cyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8vL2Zvby5wbmcp
IHggeTsiKSBpcyAiIgorUEFTUyByb3VuZHRyaXBDc3NSdWxlKCJjdXJzb3I6IHVybChmaWxlOi8v
L2Zvby5wbmcpIGF1dG87IikgaXMgIiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jdXJz
b3ItcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44OTJmMzkxMmM1NjY5ODQ5NjIzMTlkY2FjMzc5Njk4ODM2ZmE3OWIxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Vyc29yLXBhcnNpbmcuaHRt
bApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdGhlIGN1cnNvciBwcm9wZXJ0eS4iKTsKKworZnVuY3Rp
b24gbWFrZUN1cnNvclJ1bGUocnVsZSkKK3sKKyAgICByZXR1cm4gImN1cnNvcjogIiArIHJ1bGUg
KyAiOyI7Cit9CisKK2Z1bmN0aW9uIHRlc3RDdXJzb3JSdWxlKHJ1bGUpCit7CisgICAgdmFyIGNz
c1RleHQgPSBtYWtlQ3Vyc29yUnVsZShydWxlKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J3JvdW5kdHJpcENzc1J1bGUoIicgKyBjc3NUZXh0ICsgJyIpJywgY3NzVGV4dCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3RJbnZhbGlkQ3Vyc29yUnVsZShydWxlKQoreworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygncm91bmR0cmlwQ3NzUnVsZSgiJyArIG1ha2VDdXJzb3JSdWxlKHJ1bGUpICsgJyIp
JywgJycpOworfQorCitmdW5jdGlvbiByb3VuZHRyaXBDc3NSdWxlKGNzc1RleHQpCit7CisgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGRpdi5zZXRBdHRy
aWJ1dGUoInN0eWxlIiwgY3NzVGV4dCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
aXYpOworICAgIHZhciByZXN1bHQgPSBkaXYuc3R5bGUuY3NzVGV4dDsKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gTm90ZSB0
aGF0IGFueSBhYnNvbHV0ZSBVUkwgd2lsbCBzdWZmaWNlIGZvciB0aGVzZSB0ZXN0cyAoY2FuJ3Qg
dXNlIHJlbGF0aXZlIFVSTHMKKy8vIHNpbmNlIHRoZXknbGwgYmUgY29udmVydGVkIHRvIGFic29s
dXRlIGZvcm0gaW4gdGhlIG91dHB1dCkuICBJIGNob3NlIGZpbGUgVVJMcyBqdXN0CisvLyB0byBh
dm9pZCB0cmlnZ2VyaW5nIGFueSBuZXR3b3JrIGFjdGl2aXR5LgorCitkZWJ1ZygnVGVzdCBhIGJ1
bmNoIG9mIGN1cnNvciBydWxlcyB3aGljaCBzaG91bGQgcm91bmQtdHJpcCBleGFjdGx5LicpOwor
dGVzdEN1cnNvclJ1bGUoJ2F1dG8nKTsKK3Rlc3RDdXJzb3JSdWxlKCdub25lJyk7Cit0ZXN0Q3Vy
c29yUnVsZSgnY29weScpOwordGVzdEN1cnNvclJ1bGUoJy13ZWJraXQtZ3JhYmJpbmcnKTsKK3Rl
c3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKScpOyAgIC8vICBJRSBjb21wYXRpYmls
aXR5IAordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpLCBjcm9zc2hhaXInKTsK
K3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMi5w
bmcpLCBwb2ludGVyJyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIg
MywgcG9pbnRlcicpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDAgMCwg
cG9pbnRlcicpOwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDEyIDMsIHVy
bChmaWxlOi8vL2ZvbzIucG5nKSwgdXJsKGZpbGU6Ly8vZm9vMy5wbmcpIDYgNywgY3Jvc3NoYWly
Jyk7Cit0ZXN0Q3Vyc29yUnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgLTIgMywgcG9pbnRlcicp
OwordGVzdEN1cnNvclJ1bGUoJ3VybChmaWxlOi8vL2Zvby5wbmcpIDIgLTMsIHBvaW50ZXInKTsK
K3Rlc3RDdXJzb3JSdWxlKCd1cmwoZmlsZTovLy9mb28ucG5nKSAtMSAtMSwgcG9pbnRlcicpOwor
CitkZWJ1ZygnJyk7CitkZWJ1ZygnVGVzdCBhIGJ1bmNoIG9mIGludmFsaWQgY3Vyc29yIHJ1bGVz
IHdoaWNoIHNob3VsZG5cJ3QgcGFyc2UgYXQgYWxsLicpOwordGVzdEludmFsaWRDdXJzb3JSdWxl
KCdub25leGlzdGVudCcpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCdsdHInKTsKK3Rlc3RJbnZh
bGlkQ3Vyc29yUnVsZSgnaW5saW5lJyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3VybChmaWxl
Oi8vL2Zvby5wbmcpLCB1cmwoZmlsZTovLy9mb28yLnBuZyknKTsKK3Rlc3RJbnZhbGlkQ3Vyc29y
UnVsZSgndXJsKGZpbGU6Ly8vZm9vLnBuZykgMTInKTsKK3Rlc3RJbnZhbGlkQ3Vyc29yUnVsZSgn
dXJsKGZpbGU6Ly8vZm9vLnBuZykgMTIgMyA1Jyk7Cit0ZXN0SW52YWxpZEN1cnNvclJ1bGUoJ3Vy
bChmaWxlOi8vL2Zvby5wbmcpIHggeScpOwordGVzdEludmFsaWRDdXJzb3JSdWxlKCd1cmwoZmls
ZTovLy9mb28ucG5nKSBhdXRvJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>