<?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>66800</bug_id>
          
          <creation_ts>2011-08-23 12:50:51 -0700</creation_ts>
          <short_desc>[Chromium] Modify WebTouchEvent structure to match WebCore::TouchEvent</short_desc>
          <delta_ts>2011-09-09 14:51:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67704</dependson>
          <blocked>66687</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter>borenet</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>borenet</cc>
    
    <cc>brettw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>rjkroege</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455624</commentid>
    <comment_count>0</comment_count>
    <who name="">borenet</who>
    <bug_when>2011-08-23 12:50:51 -0700</bug_when>
    <thetext>Modify WebTouchEvent structure to match WebCore::TouchEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455638</commentid>
    <comment_count>1</comment_count>
      <attachid>104901</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-23 13:00:00 -0700</bug_when>
    <thetext>Created attachment 104901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455664</commentid>
    <comment_count>2</comment_count>
      <attachid>104901</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 13:38:41 -0700</bug_when>
    <thetext>Comment on attachment 104901
Patch

Attachment 104901 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9477520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455694</commentid>
    <comment_count>3</comment_count>
      <attachid>104911</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-23 14:07:16 -0700</bug_when>
    <thetext>Created attachment 104911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455697</commentid>
    <comment_count>4</comment_count>
      <attachid>104911</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-23 14:11:37 -0700</bug_when>
    <thetext>Comment on attachment 104911
Patch

Attachment 104911 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9479541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455700</commentid>
    <comment_count>5</comment_count>
      <attachid>104914</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-23 14:14:52 -0700</bug_when>
    <thetext>Created attachment 104914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456031</commentid>
    <comment_count>6</comment_count>
      <attachid>104914</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-24 02:44:22 -0700</bug_when>
    <thetext>Comment on attachment 104914
Patch

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

Mostly minor points.

Once these are fixed up, it would be good to get a Chromium person to take a look before I r+.

&gt; Source/WebKit/chromium/ChangeLog:3
&gt; +        Modify WebTouchEvent structure to match WebCore::TouchEvent

You should modify the bug title to include &apos;Chromium&apos;, as this touches only Chromium&apos;s WebKit layer. I think the pattern is to prefix the title with &apos;[Chromium]&apos;.

&gt; Source/WebKit/chromium/public/WebInputEvent.h:347
&gt; +    static const int touchPointsLengthCap = 8;

Should this be &apos;touchesLengthCap&apos; to match the other variable names?

&gt; Source/WebKit/chromium/public/WebTouchPoint.h:-45
&gt; -    };

Can you explain the reasons for and the consequences of removing this enum?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:46
&gt; +#endif // ENABLE(TOUCH_EVENTS)

It looks like the contents of these files are already guarded with ENABLE(TOUCH_EVENTS), so there&apos;s no need for a guard here. WebKit policy is generally to use as few guards as possible.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:270
&gt; +        m_touchPoints.append(PlatformTouchPointBuilder(widget, event.touches[i]));

Should you rename m_touchPoints to m_touches for consistency?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:394
&gt; +namespace {

It looks like other helpers in this file are static, rather than in an anonymous namespace. I think an anonymous namespace is now the preferred style, but I&apos;m not sure whether you should fix all other occurrences here, stick to &apos;static&apos; for consistency, or leave it as it is.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:397
&gt; +    for (unsigned int i = 0; i &lt; touches-&gt;length(); i++) {

What happens if touches-&gt;length() exceeds touchPointsLengthCap? Is touches-&gt;length() limited by WebCore? If so, is there a compile or run-time check to make sure that touchPointsLengthCap is at least this value?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:398
&gt; +        WebTouchPoint pt;

Use complete words for variable names.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:410
&gt; +        (*touchPointsLength)++;

Is there any reason to increment this, rather than just setting it to touches-&gt;length()? It seems strange to rely on the fact that it&apos;s zero-initialized. If it&apos;s not zero-initialized, the value will be wrong, as we always set touchPoints from index 0 onwards.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:426
&gt; +        type = Undefined;

Does WebCore use touch event types other than start/move/end/cancel? If so, mention in the header comment which ones we honour and the fallback case. If not, perhaps there should be an assert here?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:431
&gt; +    timeStampSeconds = event.timeStamp() * 1.0e-3;

Eeek! Surely there&apos;s an existing kMillisecondsToSeconds you could use? Or at least use a static constant in this file.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:48
&gt; +#endif // ENABLE(TOUCH_EVENTS)

Again, avoid guards unless required to build.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:127
&gt; +// Converts a WebCore::TouchEvent to a corresponding WebTouchEvent.

Might be nice to add a corresponding comment to PlatformTouchPointBuilder/PlatformTouchEventBuilder to make clear that these convert in the other direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456069</commentid>
    <comment_count>7</comment_count>
      <attachid>104914</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 06:24:07 -0700</bug_when>
    <thetext>Comment on attachment 104914
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebTouchPoint.h:-45
&gt;&gt; -    };
&gt; 
&gt; Can you explain the reasons for and the consequences of removing this enum?

The enum limits the number of possible id&apos;s for WebTouchPoints.  While it could be expanded, it will become difficult to keep this in sync with WebTouchEvent::touchPointsLengthCap - since we now have an upper bound of eight touch points, we could see as many as eight different id&apos;s.  Since the enum is never actually used, it makes more sense to me to remove it.

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:270
&gt;&gt; +        m_touchPoints.append(PlatformTouchPointBuilder(widget, event.touches[i]));
&gt; 
&gt; Should you rename m_touchPoints to m_touches for consistency?

Probably, but that&apos;s a part of PlatformTouchEvent, and changing it would make this a much higher-impact change.

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:426
&gt;&gt; +        type = Undefined;
&gt; 
&gt; Does WebCore use touch event types other than start/move/end/cancel? If so, mention in the header comment which ones we honour and the fallback case. If not, perhaps there should be an assert here?

Those are the only touch event types.  What is the preferred way to do assertions?

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:431
&gt;&gt; +    timeStampSeconds = event.timeStamp() * 1.0e-3;
&gt; 
&gt; Eeek! Surely there&apos;s an existing kMillisecondsToSeconds you could use? Or at least use a static constant in this file.

The best I&apos;m finding is in WebCore/icu/unicode/utypes.h.  That seems pretty far off - would it be better to define a constant here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456072</commentid>
    <comment_count>8</comment_count>
      <attachid>104988</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 06:41:24 -0700</bug_when>
    <thetext>Created attachment 104988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456076</commentid>
    <comment_count>9</comment_count>
      <attachid>104914</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-24 06:49:39 -0700</bug_when>
    <thetext>Comment on attachment 104914
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/public/WebTouchPoint.h:-45
&gt;&gt;&gt; -    };
&gt;&gt; 
&gt;&gt; Can you explain the reasons for and the consequences of removing this enum?
&gt; 
&gt; The enum limits the number of possible id&apos;s for WebTouchPoints.  While it could be expanded, it will become difficult to keep this in sync with WebTouchEvent::touchPointsLengthCap - since we now have an upper bound of eight touch points, we could see as many as eight different id&apos;s.  Since the enum is never actually used, it makes more sense to me to remove it.

OK, if it&apos;s just to identify the ordered points in the list, removing it seems reasonable.

&gt;&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:270
&gt;&gt;&gt; +        m_touchPoints.append(PlatformTouchPointBuilder(widget, event.touches[i]));
&gt;&gt; 
&gt;&gt; Should you rename m_touchPoints to m_touches for consistency?
&gt; 
&gt; Probably, but that&apos;s a part of PlatformTouchEvent, and changing it would make this a much higher-impact change.

OK

&gt;&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:426
&gt;&gt;&gt; +        type = Undefined;
&gt;&gt; 
&gt;&gt; Does WebCore use touch event types other than start/move/end/cancel? If so, mention in the header comment which ones we honour and the fallback case. If not, perhaps there should be an assert here?
&gt; 
&gt; Those are the only touch event types.  What is the preferred way to do assertions?

I think you should probably use ASSERT_UNREACHED(), then set the type to undefined and return, as you do now.

&gt;&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:431
&gt;&gt;&gt; +    timeStampSeconds = event.timeStamp() * 1.0e-3;
&gt;&gt; 
&gt;&gt; Eeek! Surely there&apos;s an existing kMillisecondsToSeconds you could use? Or at least use a static constant in this file.
&gt; 
&gt; The best I&apos;m finding is in WebCore/icu/unicode/utypes.h.  That seems pretty far off - would it be better to define a constant here?

In DateMath.h there&apos;s WTF::msPerSecond, or a local constant is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456083</commentid>
    <comment_count>10</comment_count>
      <attachid>104988</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-24 06:58:31 -0700</bug_when>
    <thetext>Comment on attachment 104988
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:304
&gt; +    timeStampSeconds = event.timeStamp() / MILLIS_PER_SECOND;

event.timeStamp() is an integer value, right, so you need to make MILLIS_PER_SECOND a floating-point value to force floating-point division.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:397
&gt; +    unsigned int maxWebTouches = static_cast&lt;unsigned int&gt;(WebTouchEvent::touchesLengthCap);

Any reason WebTouchEvent::touchesLengthCap isn&apos;t unsigned? Also, maybe add a comment here or at WebTouchEvent::touchesLengthCap that we limit the max number of touches and simply drop extra touches on the floor.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:399
&gt; +                                maxWebTouches : touches-&gt;length());

I think there&apos;s a min() macro you can use.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:429
&gt; +        type = Undefined;

Add ASSERT_UNREACHED()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456089</commentid>
    <comment_count>11</comment_count>
      <attachid>104995</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 07:26:17 -0700</bug_when>
    <thetext>Created attachment 104995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456092</commentid>
    <comment_count>12</comment_count>
      <attachid>104995</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-24 07:34:59 -0700</bug_when>
    <thetext>Comment on attachment 104995
Patch

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

LGTM, but please get a Chromium reviewer to take a look before I r+.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:427
&gt; +        ASSERT_NOT_REACHED();

I think it&apos;s Chromium policy to have code to gracefully fail after an ASSERT_NOT_REACHED(), as these don&apos;t cause a crash in release builds.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:126
&gt; +// NOTE: WebTouchEvents have a cap on number of WebTouchPoints. Any points

&apos;has a cap on the&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456094</commentid>
    <comment_count>13</comment_count>
      <attachid>104998</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 07:42:58 -0700</bug_when>
    <thetext>Created attachment 104998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456397</commentid>
    <comment_count>14</comment_count>
      <attachid>104998</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-08-24 14:00:45 -0700</bug_when>
    <thetext>Comment on attachment 104998
Patch

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

&gt; Source/WebKit/chromium/public/WebInputEvent.h:347
&gt; +    static const unsigned int touchesLengthCap = 8;

nit: we use &apos;unsigned&apos; instead of &apos;unsigned int&apos; in the WebKit API (just like the rest of WebKit).

&gt; Source/WebKit/chromium/public/WebInputEvent.h:349
&gt; +    unsigned int touchesLength;

it seems like it would be helpful to define the difference between
touches, changedTouches and targetTouches.

&gt; Source/WebKit/chromium/public/WebTouchPoint.h:42
&gt; +        : id(0)

What values can &quot;id&quot; have if not one of the pre-defined Finger enum values?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:53
&gt; +#define MILLIS_PER_SECOND 1000.0

please use a C++ constant

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:269
&gt; +    for (unsigned int i = 0; i &lt; event.touchesLength; ++i)

nit: &apos;unsigned int&apos; -&gt; &apos;unsigned&apos;

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:395
&gt; +void AddTouchPoints(TouchList* touches, WebTouchPoint* touchPoints,

nit: it is more common place in WebKit to just use the &apos;static&apos; keyword here.

can touches be declared as const?  &apos;const TouchList*&apos;?
or, can it be a &apos;const TouchList&amp;&apos; instead?  it doesn&apos;t look like this function
mutates the TouchList at all, so it should not be passed as a non-const pointer/
reference.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:396
&gt; +                    unsigned int* touchPointsLength, WebCore::IntPoint offset) {

nit: no need for WebCore:: prefix

it is usually better to list out parameters last and in parameters first.  i would
therefore move offset before touchPoints.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:404
&gt; +            touch-&gt;pageX() - offset.x(),

what is the offset used for?  does this represent scroll offset of the frame?  if so,
does this work properly with iframes?  we normally need to use one of the conversion
routines like convertToContainingWindow to map from widget coordinates and viewport
coordinates.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:130
&gt; +    WebTouchEventBuilder(const WebCore::Widget*, const WebCore::TouchEvent&amp;);

no need for WebCore:: prefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456467</commentid>
    <comment_count>15</comment_count>
      <attachid>104998</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 15:28:43 -0700</bug_when>
    <thetext>Comment on attachment 104998
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebTouchPoint.h:42
&gt;&gt; +        : id(0)
&gt; 
&gt; What values can &quot;id&quot; have if not one of the pre-defined Finger enum values?

&apos;id&apos; is just an integer in both WebCore::Touch and Pepper.  We never do any conversion of ids, and we don&apos;t require that the WebTouchPoint id is one of the enum values, so there really isn&apos;t much point in having it at all.

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:404
&gt;&gt; +            touch-&gt;pageX() - offset.x(),
&gt; 
&gt; what is the offset used for?  does this represent scroll offset of the frame?  if so,
&gt; does this work properly with iframes?  we normally need to use one of the conversion
&gt; routines like convertToContainingWindow to map from widget coordinates and viewport
&gt; coordinates.

Offset is the DOM (x, y) of the plugin widget.  The expression then results in the touch coordinate being the DOM coordinate within the plugin.  Is there a better method for this?

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.h:130
&gt;&gt; +    WebTouchEventBuilder(const WebCore::Widget*, const WebCore::TouchEvent&amp;);
&gt; 
&gt; no need for WebCore:: prefix

Removing this causes compile errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456502</commentid>
    <comment_count>16</comment_count>
      <attachid>104998</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-24 16:00:42 -0700</bug_when>
    <thetext>Comment on attachment 104998
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:395
&gt;&gt; +void AddTouchPoints(TouchList* touches, WebTouchPoint* touchPoints,
&gt; 
&gt; nit: it is more common place in WebKit to just use the &apos;static&apos; keyword here.
&gt; 
&gt; can touches be declared as const?  &apos;const TouchList*&apos;?
&gt; or, can it be a &apos;const TouchList&amp;&apos; instead?  it doesn&apos;t look like this function
&gt; mutates the TouchList at all, so it should not be passed as a non-const pointer/
&gt; reference.

This could be changed to be const TouchList&amp;, but we get a TouchList* from WebCore::TouchEvent and would have to make local copies in WebTouchEventBuilder().  Compiler complains about const-correctness when calling touches-&gt;item(i) if const TouchList* is used.  Without modifying the TouchList class, I&apos;m not sure if a const pointer can be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456773</commentid>
    <comment_count>17</comment_count>
      <attachid>105161</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-25 05:09:49 -0700</bug_when>
    <thetext>Created attachment 105161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457544</commentid>
    <comment_count>18</comment_count>
      <attachid>105358</attachid>
    <who name="">borenet</who>
    <bug_when>2011-08-26 07:00:55 -0700</bug_when>
    <thetext>Created attachment 105358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462240</commentid>
    <comment_count>19</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-05 13:18:28 -0700</bug_when>
    <thetext>*** Bug 67615 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462439</commentid>
    <comment_count>20</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-06 02:45:48 -0700</bug_when>
    <thetext>Eric was an intern who I believe has now left, so I&apos;m not sure whether he&apos;s still working on this bug. Adam, you might want to take over where he left off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462632</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 10:34:06 -0700</bug_when>
    <thetext>I would be happy to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462636</commentid>
    <comment_count>22</comment_count>
      <attachid>105358</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 10:37:17 -0700</bug_when>
    <thetext>Comment on attachment 105358
Patch

Looks like there are just a couple style things left to clean up, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462643</commentid>
    <comment_count>23</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-09-06 10:44:39 -0700</bug_when>
    <thetext>I already gave an LGTM and it looks like Eric addressed all of Darin&apos;s comments, so I think the last patch is good and just needs Darin&apos;s r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462655</commentid>
    <comment_count>24</comment_count>
      <attachid>105358</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 10:58:47 -0700</bug_when>
    <thetext>Comment on attachment 105358
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:394
&gt; +static void AddTouchPoints(TouchList* touches, const IntPoint&amp; offset, 

AddTouchPoints =&gt; addTouchPoints

There are a couple of other minor things like that.  I&apos;ll re-spin the patch and then we&apos;ll probably be good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462733</commentid>
    <comment_count>25</comment_count>
      <attachid>106462</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 12:19:15 -0700</bug_when>
    <thetext>Created attachment 106462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462815</commentid>
    <comment_count>26</comment_count>
      <attachid>106462</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-06 13:37:39 -0700</bug_when>
    <thetext>Comment on attachment 106462
Patch

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

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:53
&gt; +static const double kMillisPerSecond = 1000.0;

nit: I don&apos;t think WebKit uses the k* prefix for constants.  this should just be millisPerSecond.

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:385
&gt; +    unsigned numberOfCharacters = std::min(event.keyEvent()-&gt;text().length(), static_cast&lt;unsigned&gt;(WebKeyboardEvent::textLengthCap));

note: since WebKeyboardEventBuilder extends from WebKeyboardEvent, no need for
the WebKeyboardEvent:: prefix in front of textLengthCap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462842</commentid>
    <comment_count>27</comment_count>
      <attachid>106482</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 14:02:18 -0700</bug_when>
    <thetext>Created attachment 106482
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462866</commentid>
    <comment_count>28</comment_count>
      <attachid>106482</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 14:44:00 -0700</bug_when>
    <thetext>Comment on attachment 106482
Patch for landing

Rejecting attachment 106482 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
g/obj.target/Source/WebKit/chromium/libwebkit.a(out/Debug/obj.target/Source/WebKit/chromium/../../../webkit/Source/WebKit/chromium/src/WebInputEventConversion.o): in function WebKit::addTouchPoints(WebCore::TouchList*, WebCore::IntPoint const&amp;, WebKit::WebTouchPoint*, unsigned int*):Source/WebKit/chromium/src/WebInputEventConversion.cpp:396: error: undefined reference to &apos;WebKit::WebTouchEvent::touchesLengthCap&apos;
collect2: ld returned 1 exit status
make: *** [out/Debug/webkit_unit_tests] Error 1

Full output: http://queues.webkit.org/results/9599129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463110</commentid>
    <comment_count>29</comment_count>
      <attachid>106538</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 20:30:11 -0700</bug_when>
    <thetext>Created attachment 106538
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463116</commentid>
    <comment_count>30</comment_count>
      <attachid>106538</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 20:47:36 -0700</bug_when>
    <thetext>Comment on attachment 106538
Patch for landing

Rejecting attachment 106538 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
roller.o
  CXX(target) out/Debug/obj.target/DumpRenderTree/Tools/DumpRenderTree/chromium/Task.o
Tools/DumpRenderTree/chromium/EventSender.cpp: In member function &apos;void EventSender::sendCurrentTouchEvent(WebKit::WebInputEvent::Type)&apos;:
Tools/DumpRenderTree/chromium/EventSender.cpp:951: error: &apos;touchPointsLengthCap&apos; is not a member of &apos;WebKit::WebTouchEvent&apos;
make: *** [out/Debug/obj.target/DumpRenderTree/Tools/DumpRenderTree/chromium/EventSender.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/9599334</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463124</commentid>
    <comment_count>31</comment_count>
      <attachid>106541</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-06 21:20:37 -0700</bug_when>
    <thetext>Created attachment 106541
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463134</commentid>
    <comment_count>32</comment_count>
      <attachid>106541</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 21:34:54 -0700</bug_when>
    <thetext>Comment on attachment 106541
Patch for landing

Clearing flags on attachment: 106541

Committed r94635: &lt;http://trac.webkit.org/changeset/94635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463135</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 21:35:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463486</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-07 11:27:59 -0700</bug_when>
    <thetext>The build fix from the future is in http://codereview.chromium.org/7840035/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463493</commentid>
    <comment_count>35</comment_count>
      <attachid>106541</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-07 11:31:31 -0700</bug_when>
    <thetext>Comment on attachment 106541
Patch for landing

Clearing flags on attachment: 106541

Committed r94692: &lt;http://trac.webkit.org/changeset/94692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463494</commentid>
    <comment_count>36</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-07 11:31:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464955</commentid>
    <comment_count>37</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-09-09 11:52:56 -0700</bug_when>
    <thetext>I don&apos;t understand why this change made. Would someone be willing to explain?

In particular: 

* changedTouches and targetTouches fields don&apos;t ever appear to be set in the browser

* they get dropped on the floor when the WebTouchEvent is made into a PlatformTouchEvent

* they get re-created from the touch event stream in EventHandler::handleTouchEvent from PlatformTouchEvent

* their addition would seem to nearly triple the size of a WebTouchEvent

* it breaks what I have understood to be a Chromium WebKit API principle that Web&lt;*&gt;Event should map closely to Platform&lt;*&gt;Event.

So while the blocked bug suggests some possible purposes, the changes that I would imagine would be needed to go forward to completion on this would seem to require non-trivial surgery to EventHandler::handleTouchEvent -- surgery that I&apos;d like to discuss.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465039</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 14:51:14 -0700</bug_when>
    <thetext>&gt; I don&apos;t understand why this change made. Would someone be willing to explain?

This change is part of the landing the Android branch of the Chromium port.  I can connect you with the appropriate folks if you&apos;d like to discuss more with them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104901</attachid>
            <date>2011-08-23 13:00:00 -0700</date>
            <delta_ts>2011-08-23 14:07:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110823155958.patch</filename>
            <type>text/plain</type>
            <size>8088</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hF
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6Oldl
YlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtVG91
Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA4LTIzICBBbCBQYXRy
aWNrICA8YXBhdHJpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzaGFyZVJlc291cmNl
cyBmbGFnIHRvIDNEIGdyYXBoaWNzIGNvbnRleHQgYXR0cmlidXRlcwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkocmV2aXNpb24gOTM2MTkp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0NCwxNCArMzQ0LDIyIEBAIHB1YmxpYzoKIAogY2xhc3MgV2ViVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gNDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHRvdWNo
UG9pbnRzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0aDsKLSAgICBX
ZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKKyAgICB1bnNp
Z25lZCBpbnQgdG91Y2hlc0xlbmd0aDsKKyAgICBXZWJUb3VjaFBvaW50IHRvdWNoZXNbdG91Y2hQ
b2ludHNMZW5ndGhDYXBdOworCisgICAgdW5zaWduZWQgaW50IGNoYW5nZWRUb3VjaGVzTGVuZ3Ro
OworICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hQb2ludHNMZW5ndGhDYXBd
OworCisgICAgdW5zaWduZWQgaW50IHRhcmdldFRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQ
b2ludCB0YXJnZXRUb3VjaGVzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKIAogICAgIFdlYlRvdWNo
RXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYlRvdWNoRXZlbnQpKQogICAgICAg
ICA6IFdlYklucHV0RXZlbnQoc2l6ZVBhcmFtKQotICAgICAgICAsIHRvdWNoUG9pbnRzTGVuZ3Ro
KDApCisgICAgICAgICwgdG91Y2hlc0xlbmd0aCgwKQorICAgICAgICAsIGNoYW5nZWRUb3VjaGVz
TGVuZ3RoKDApCisgICAgICAgICwgdGFyZ2V0VG91Y2hlc0xlbmd0aCgwKQogICAgIHsKICAgICB9
CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9p
bnQuaAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUb3VjaFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCw4IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJUb3VjaFBvaW50IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZp
bmdlciB7Ci0gICAgICAgIEZpbmdlckZpcnN0LAotICAgICAgICBGaW5nZXJTZWNvbmQsCi0gICAg
ICAgIEZpbmdlclRoaXJkCi0gICAgfTsKLQogICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6
IGlkKEZpbmdlckZpcnN0KQorICAgICAgICA6IGlkKDApCiAgICAgICAgICwgc3RhdGUoU3RhdGVV
bmRlZmluZWQpCiAgICAgICAgICwgcmFkaXVzWCgwKQogICAgICAgICAsIHJhZGl1c1koMCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDkzNjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSwxMSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5o
IgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNp
bmNsdWRlICJXaWRnZXQuaCIKQEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYg
V2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFt
cFNlY29uZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVu
Z3RoOyArK2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2lu
dEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0aDsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hlc1tp
XSkpOwogfQogI2VuZGlmCiAKQEAgLTM4NSw0ICszOTAsNTAgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1
aWxkZXI6OldlYktleWJvYXJkRXZlbgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCituYW1lc3BhY2Ugewordm9pZCBBZGRUb3VjaFBvaW50cyhUb3VjaExpc3QqIHRvdWNoZXMs
IFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRzLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpIHsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHRvdWNoZXMtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAg
V2ViVG91Y2hQb2ludCBwdDsKKyAgICAgICAgV2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91Y2hl
cy0+aXRlbShpKTsKKyAgICAgICAgcHQuaWQgPSB0b3VjaC0+aWRlbnRpZmllcigpOworICAgICAg
ICBwdC5zY3JlZW5Qb3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5z
Y3JlZW5ZKCkpOworICAgICAgICBwdC5wb3NpdGlvbiA9IFdlYlBvaW50KAorICAgICAgICAgICAg
dG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VZKCkg
LSBvZmZzZXQueSgpKTsKKyAgICAgICAgcHQucmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNY
KCk7CisgICAgICAgIHB0LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAgICAg
ICBwdC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJvdGF0aW9uQW5nbGUoKTsKKyAgICAg
ICAgcHQuZm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2UoKTsKKyAgICAgICAgdG91Y2hQb2ludHNb
aV0gPSBwdDsKKyAgICAgICAgKCp0b3VjaFBvaW50c0xlbmd0aCkrKzsKKyAgICB9Cit9Cit9IC8v
IG5hbWVzcGFjZQorCitXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIo
Y29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlm
IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCkKKyAgICAgICAg
dHlwZSA9IFRvdWNoU3RhcnQ7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS50b3VjaG1vdmVFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNl
IGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAg
IHR5cGUgPSBUb3VjaEVuZDsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnRvdWNoY2FuY2VsRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaENhbmNlbDsKKyAgICBl
bHNlIHsKKyAgICAgICAgdHlwZSA9IFVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKKyAgICB0aW1l
U3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7CisKKyAgICBBZGRUb3Vj
aFBvaW50cyhldmVudC50b3VjaGVzKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCB3aWRnZXQt
PmxvY2F0aW9uKCkpOworICAgIEFkZFRvdWNoUG9pbnRzKGV2ZW50LmNoYW5nZWRUb3VjaGVzKCks
IGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRvdWNoZXNMZW5ndGgsIHdpZGdldC0+bG9jYXRpb24o
KSk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZlbnQudGFyZ2V0VG91Y2hlcygpLCB0YXJnZXRUb3Vj
aGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwgd2lkZ2V0LT5sb2NhdGlvbigpKTsKK30KKyNlbmRp
ZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uaAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBA
IGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmll
dzsKIGNsYXNzIFdoZWVsRXZlbnQ7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFRv
dWNoRXZlbnQ7CisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIGNsYXNzIFdpZGdldDsK
IH0KIApAQCAtNTEsNiArNTQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBXZWJUb3VjaEV2ZW50OworI2VuZGlm
IC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRo
ZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8gY29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xh
c3NlcyB0bwpAQCAtMTE3LDYgKzEyMywxNCBAQCBwdWJsaWM6CiAgICAgV2ViS2V5Ym9hcmRFdmVu
dEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCYpOwogfTsKIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6OlRvdWNoRXZlbnQgdG8gYSBj
b3JyZXNwb25kaW5nIFdlYlRvdWNoRXZlbnQuCitjbGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6
IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRl
cihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9
OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDkzNjI4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdt
YWlsLmNvbT4KKworICAgICAgICBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0
Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQpOgorCiAyMDExLTA4
LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIHdl
YmtpdC1wZXJsIHRlc3RzIGZhaWwgb24gd2luMzIgUGVybCBkdWUgdG8gbGFjayBvZiBsaXN0IGZv
cm0gb2YgcGlwZSBvcGVuIGltcGxlbWVudGF0aW9uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUxLDkgKzk1MSw5IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVu
dCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0eXBlOwogICAgIHRvdWNoRXZlbnQubW9kaWZpZXJz
ID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91Y2hFdmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0
Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAgIHRvdWNoRXZlbnQudG91Y2hQb2ludHNMZW5ndGgg
PSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAgdG91Y2hFdmVudC50b3VjaGVzTGVuZ3RoID0gdG91
Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50
cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91Y2hFdmVudC50b3VjaFBvaW50c1tpXSA9IHRvdWNo
UG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2ZW50LnRvdWNoZXNbaV0gPSB0b3VjaFBvaW50c1tp
XTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQodG91Y2hFdmVudCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104911</attachid>
            <date>2011-08-23 14:07:16 -0700</date>
            <delta_ts>2011-08-23 14:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110823170714.patch</filename>
            <type>text/plain</type>
            <size>8061</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hF
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6Oldl
YlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtVG91
Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA4LTIzICBBbCBQYXRy
aWNrICA8YXBhdHJpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzaGFyZVJlc291cmNl
cyBmbGFnIHRvIDNEIGdyYXBoaWNzIGNvbnRleHQgYXR0cmlidXRlcwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkocmV2aXNpb24gOTM2MTkp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0NCwxNCArMzQ0LDIyIEBAIHB1YmxpYzoKIAogY2xhc3MgV2ViVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gNDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHRvdWNo
UG9pbnRzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0aDsKLSAgICBX
ZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKKyAgICBpbnQg
dG91Y2hlc0xlbmd0aDsKKyAgICBXZWJUb3VjaFBvaW50IHRvdWNoZXNbdG91Y2hQb2ludHNMZW5n
dGhDYXBdOworCisgICAgaW50IGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAgIFdlYlRvdWNoUG9p
bnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hQb2ludHNMZW5ndGhDYXBdOworCisgICAgaW50IHRhcmdl
dFRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQb2ludCB0YXJnZXRUb3VjaGVzW3RvdWNoUG9p
bnRzTGVuZ3RoQ2FwXTsKIAogICAgIFdlYlRvdWNoRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0g
c2l6ZW9mKFdlYlRvdWNoRXZlbnQpKQogICAgICAgICA6IFdlYklucHV0RXZlbnQoc2l6ZVBhcmFt
KQotICAgICAgICAsIHRvdWNoUG9pbnRzTGVuZ3RoKDApCisgICAgICAgICwgdG91Y2hlc0xlbmd0
aCgwKQorICAgICAgICAsIGNoYW5nZWRUb3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgdGFyZ2V0
VG91Y2hlc0xlbmd0aCgwKQogICAgIHsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAkocmV2aXNpb24gOTM2MTkpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDE0ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJUb3Vj
aFBvaW50IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZpbmdlciB7Ci0gICAgICAgIEZpbmdlckZpcnN0
LAotICAgICAgICBGaW5nZXJTZWNvbmQsCi0gICAgICAgIEZpbmdlclRoaXJkCi0gICAgfTsKLQog
ICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6IGlkKEZpbmdlckZpcnN0KQorICAgICAgICA6
IGlkKDApCiAgICAgICAgICwgc3RhdGUoU3RhdGVVbmRlZmluZWQpCiAgICAgICAgICwgcmFkaXVz
WCgwKQogICAgICAgICAsIHJhZGl1c1koMCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDkz
NjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMSBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRv
dWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgor
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTI2MSw4
ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAg
bV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAg
ICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCi0gICAgICAgIG1fdG91Y2hQ
b2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3Vj
aFBvaW50c1tpXSkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0
aDsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRC
dWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hlc1tpXSkpOwogfQogI2VuZGlmCiAKQEAgLTM4NSw0
ICszOTAsNTAgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktleWJvYXJkRXZlbgogICAg
IH0KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCituYW1lc3BhY2Ugewordm9pZCBBZGRU
b3VjaFBvaW50cyhUb3VjaExpc3QqIHRvdWNoZXMsIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRz
LAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBX
ZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdWNo
ZXMtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgV2ViVG91Y2hQb2ludCBwdDsKKyAgICAgICAg
V2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbShpKTsKKyAgICAgICAgcHQuaWQg
PSB0b3VjaC0+aWRlbnRpZmllcigpOworICAgICAgICBwdC5zY3JlZW5Qb3NpdGlvbiA9IFdlYlBv
aW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5ZKCkpOworICAgICAgICBwdC5wb3Np
dGlvbiA9IFdlYlBvaW50KAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgp
LAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VZKCkgLSBvZmZzZXQueSgpKTsKKyAgICAgICAgcHQu
cmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNYKCk7CisgICAgICAgIHB0LnJhZGl1c1kgPSB0
b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAgICAgICBwdC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gt
PndlYmtpdFJvdGF0aW9uQW5nbGUoKTsKKyAgICAgICAgcHQuZm9yY2UgPSB0b3VjaC0+d2Via2l0
Rm9yY2UoKTsKKyAgICAgICAgdG91Y2hQb2ludHNbaV0gPSBwdDsKKyAgICAgICAgKCp0b3VjaFBv
aW50c0xlbmd0aCkrKzsKKyAgICB9Cit9Cit9IC8vIG5hbWVzcGFjZQorCitXZWJUb3VjaEV2ZW50
QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnRvdWNoc3RhcnRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoU3RhcnQ7CisgICAgZWxz
ZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCkKKyAgICAg
ICAgdHlwZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaEVuZDsKKyAgICBlbHNl
IGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpCisgICAg
ICAgIHR5cGUgPSBUb3VjaENhbmNlbDsKKyAgICBlbHNlIHsKKyAgICAgICAgdHlwZSA9IFVuZGVm
aW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1vZGlmaWVycyA9IGdldFdlYklu
cHV0TW9kaWZpZXJzKGV2ZW50KTsKKyAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0
YW1wKCkgKiAxLjBlLTM7CisKKyAgICBBZGRUb3VjaFBvaW50cyhldmVudC50b3VjaGVzKCksIHRv
dWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCB3aWRnZXQtPmxvY2F0aW9uKCkpOworICAgIEFkZFRvdWNo
UG9pbnRzKGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRv
dWNoZXNMZW5ndGgsIHdpZGdldC0+bG9jYXRpb24oKSk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZl
bnQudGFyZ2V0VG91Y2hlcygpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwg
d2lkZ2V0LT5sb2NhdGlvbigpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTM2MTkpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFz
cyBNb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFdoZWVsRXZlbnQ7CisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFRvdWNoRXZlbnQ7CisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKIGNsYXNzIFdpZGdldDsKIH0KIApAQCAtNTEsNiArNTQsOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVs
RXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitjbGFzcyBXZWJUb3VjaEV2ZW50OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBj
bGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8gY29u
dmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwpAQCAtMTE3LDYgKzEyMywxNCBA
QCBwdWJsaWM6CiAgICAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYpOwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0
cyBhIFdlYkNvcmU6OlRvdWNoRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYlRvdWNoRXZlbnQu
CitjbGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKK3B1
YmxpYzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBj
b25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNjI4KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAgICBNb2RpZnkg
V2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpzZW5k
Q3VycmVudFRvdWNoRXZlbnQpOgorCiAyMDExLTA4LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIHdlYmtpdC1wZXJsIHRlc3RzIGZhaWwgb24gd2lu
MzIgUGVybCBkdWUgdG8gbGFjayBvZiBsaXN0IGZvcm0gb2YgcGlwZSBvcGVuIGltcGxlbWVudGF0
aW9uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIu
Y3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUxLDkgKzk1MSw5IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0
eXBlOwogICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91
Y2hFdmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAg
IHRvdWNoRXZlbnQudG91Y2hQb2ludHNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAg
dG91Y2hFdmVudC50b3VjaGVzTGVuZ3RoID0gdG91Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91
Y2hFdmVudC50b3VjaFBvaW50c1tpXSA9IHRvdWNoUG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2
ZW50LnRvdWNoZXNbaV0gPSB0b3VjaFBvaW50c1tpXTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlu
cHV0RXZlbnQodG91Y2hFdmVudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91
Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104914</attachid>
            <date>2011-08-23 14:14:52 -0700</date>
            <delta_ts>2011-08-24 06:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110823171450.patch</filename>
            <type>text/plain</type>
            <size>8061</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hF
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6Oldl
YlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAgICAqIHNyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtVG91
Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA4LTIzICBBbCBQYXRy
aWNrICA8YXBhdHJpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzaGFyZVJlc291cmNl
cyBmbGFnIHRvIDNEIGdyYXBoaWNzIGNvbnRleHQgYXR0cmlidXRlcwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkocmV2aXNpb24gOTM2MTkp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0NCwxNCArMzQ0LDIyIEBAIHB1YmxpYzoKIAogY2xhc3MgV2ViVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gNDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHRvdWNo
UG9pbnRzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0aDsKLSAgICBX
ZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKKyAgICBpbnQg
dG91Y2hlc0xlbmd0aDsKKyAgICBXZWJUb3VjaFBvaW50IHRvdWNoZXNbdG91Y2hQb2ludHNMZW5n
dGhDYXBdOworCisgICAgaW50IGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAgIFdlYlRvdWNoUG9p
bnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hQb2ludHNMZW5ndGhDYXBdOworCisgICAgaW50IHRhcmdl
dFRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQb2ludCB0YXJnZXRUb3VjaGVzW3RvdWNoUG9p
bnRzTGVuZ3RoQ2FwXTsKIAogICAgIFdlYlRvdWNoRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0g
c2l6ZW9mKFdlYlRvdWNoRXZlbnQpKQogICAgICAgICA6IFdlYklucHV0RXZlbnQoc2l6ZVBhcmFt
KQotICAgICAgICAsIHRvdWNoUG9pbnRzTGVuZ3RoKDApCisgICAgICAgICwgdG91Y2hlc0xlbmd0
aCgwKQorICAgICAgICAsIGNoYW5nZWRUb3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgdGFyZ2V0
VG91Y2hlc0xlbmd0aCgwKQogICAgIHsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAkocmV2aXNpb24gOTM2MTkpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDE0ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJUb3Vj
aFBvaW50IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZpbmdlciB7Ci0gICAgICAgIEZpbmdlckZpcnN0
LAotICAgICAgICBGaW5nZXJTZWNvbmQsCi0gICAgICAgIEZpbmdlclRoaXJkCi0gICAgfTsKLQog
ICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6IGlkKEZpbmdlckZpcnN0KQorICAgICAgICA6
IGlkKDApCiAgICAgICAgICwgc3RhdGUoU3RhdGVVbmRlZmluZWQpCiAgICAgICAgICwgcmFkaXVz
WCgwKQogICAgICAgICAsIHJhZGl1c1koMCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDkz
NjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMSBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIlRv
dWNoLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgor
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTI2MSw4
ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAg
bV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAg
ICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCi0gICAgICAgIG1fdG91Y2hQ
b2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3Vj
aFBvaW50c1tpXSkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0
aDsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRC
dWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hlc1tpXSkpOwogfQogI2VuZGlmCiAKQEAgLTM4NSw0
ICszOTAsNTAgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktleWJvYXJkRXZlbgogICAg
IH0KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCituYW1lc3BhY2Ugewordm9pZCBBZGRU
b3VjaFBvaW50cyhUb3VjaExpc3QqIHRvdWNoZXMsIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRz
LAorICAgICAgICAgICAgICAgICAgICBpbnQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBXZWJDb3JlOjpJ
bnRQb2ludCBvZmZzZXQpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRvdWNo
ZXMtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgV2ViVG91Y2hQb2ludCBwdDsKKyAgICAgICAg
V2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbShpKTsKKyAgICAgICAgcHQuaWQg
PSB0b3VjaC0+aWRlbnRpZmllcigpOworICAgICAgICBwdC5zY3JlZW5Qb3NpdGlvbiA9IFdlYlBv
aW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5ZKCkpOworICAgICAgICBwdC5wb3Np
dGlvbiA9IFdlYlBvaW50KAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgp
LAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VZKCkgLSBvZmZzZXQueSgpKTsKKyAgICAgICAgcHQu
cmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNYKCk7CisgICAgICAgIHB0LnJhZGl1c1kgPSB0
b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAgICAgICBwdC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gt
PndlYmtpdFJvdGF0aW9uQW5nbGUoKTsKKyAgICAgICAgcHQuZm9yY2UgPSB0b3VjaC0+d2Via2l0
Rm9yY2UoKTsKKyAgICAgICAgdG91Y2hQb2ludHNbaV0gPSBwdDsKKyAgICAgICAgKCp0b3VjaFBv
aW50c0xlbmd0aCkrKzsKKyAgICB9Cit9Cit9IC8vIG5hbWVzcGFjZQorCitXZWJUb3VjaEV2ZW50
QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1l
cygpLnRvdWNoc3RhcnRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoU3RhcnQ7CisgICAgZWxz
ZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCkKKyAgICAg
ICAgdHlwZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaEVuZDsKKyAgICBlbHNl
IGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpCisgICAg
ICAgIHR5cGUgPSBUb3VjaENhbmNlbDsKKyAgICBlbHNlIHsKKyAgICAgICAgdHlwZSA9IFVuZGVm
aW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1vZGlmaWVycyA9IGdldFdlYklu
cHV0TW9kaWZpZXJzKGV2ZW50KTsKKyAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0
YW1wKCkgKiAxLjBlLTM7CisKKyAgICBBZGRUb3VjaFBvaW50cyhldmVudC50b3VjaGVzKCksIHRv
dWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCB3aWRnZXQtPmxvY2F0aW9uKCkpOworICAgIEFkZFRvdWNo
UG9pbnRzKGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRv
dWNoZXNMZW5ndGgsIHdpZGdldC0+bG9jYXRpb24oKSk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZl
bnQudGFyZ2V0VG91Y2hlcygpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwg
d2lkZ2V0LT5sb2NhdGlvbigpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTM2MTkpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFz
cyBNb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFdoZWVsRXZlbnQ7CisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIFRvdWNoRXZlbnQ7CisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKIGNsYXNzIFdpZGdldDsKIH0KIApAQCAtNTEsNiArNTQsOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVs
RXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitjbGFzcyBXZWJUb3VjaEV2ZW50OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBj
bGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8gY29u
dmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwpAQCAtMTE3LDYgKzEyMywxNCBA
QCBwdWJsaWM6CiAgICAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYpOwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0
cyBhIFdlYkNvcmU6OlRvdWNoRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYlRvdWNoRXZlbnQu
CitjbGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKK3B1
YmxpYzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBj
b25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNjI4KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAgICBNb2RpZnkg
V2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpzZW5k
Q3VycmVudFRvdWNoRXZlbnQpOgorCiAyMDExLTA4LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIHdlYmtpdC1wZXJsIHRlc3RzIGZhaWwgb24gd2lu
MzIgUGVybCBkdWUgdG8gbGFjayBvZiBsaXN0IGZvcm0gb2YgcGlwZSBvcGVuIGltcGxlbWVudGF0
aW9uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIu
Y3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUxLDkgKzk1MSw5IEBAIHZvaWQgRXZl
bnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0
eXBlOwogICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91
Y2hFdmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAg
IHRvdWNoRXZlbnQudG91Y2hQb2ludHNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAg
dG91Y2hFdmVudC50b3VjaGVzTGVuZ3RoID0gdG91Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91
Y2hFdmVudC50b3VjaFBvaW50c1tpXSA9IHRvdWNoUG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2
ZW50LnRvdWNoZXNbaV0gPSB0b3VjaFBvaW50c1tpXTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlu
cHV0RXZlbnQodG91Y2hFdmVudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91
Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104988</attachid>
            <date>2011-08-24 06:41:24 -0700</date>
            <delta_ts>2011-08-24 07:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110824094122.patch</filename>
            <type>text/plain</type>
            <size>9713</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDgt
MjMgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNo
YXJlUmVzb3VyY2VzIGZsYWcgdG8gM0QgZ3JhcGhpY3MgY29udGV4dCBhdHRyaWJ1dGVzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZp
c2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjIgQEAgcHVibGljOgogCiBjbGFz
cyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25z
dCBpbnQgdG91Y2hlc0xlbmd0aENhcCA9IDg7CiAKLSAgICBpbnQgdG91Y2hQb2ludHNMZW5ndGg7
Ci0gICAgV2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0aENhcF07Cisg
ICAgaW50IHRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQb2ludCB0b3VjaGVzW3RvdWNoZXNM
ZW5ndGhDYXBdOworCisgICAgaW50IGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAgIFdlYlRvdWNo
UG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hlc0xlbmd0aENhcF07CisKKyAgICBpbnQgdGFyZ2V0
VG91Y2hlc0xlbmd0aDsKKyAgICBXZWJUb3VjaFBvaW50IHRhcmdldFRvdWNoZXNbdG91Y2hlc0xl
bmd0aENhcF07CiAKICAgICBXZWJUb3VjaEV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVv
ZihXZWJUb3VjaEV2ZW50KSkKICAgICAgICAgOiBXZWJJbnB1dEV2ZW50KHNpemVQYXJhbSkKLSAg
ICAgICAgLCB0b3VjaFBvaW50c0xlbmd0aCgwKQorICAgICAgICAsIHRvdWNoZXNMZW5ndGgoMCkK
KyAgICAgICAgLCBjaGFuZ2VkVG91Y2hlc0xlbmd0aCgwKQorICAgICAgICAsIHRhcmdldFRvdWNo
ZXNMZW5ndGgoMCkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgJKHJldmlzaW9uIDkzNjE5KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxNCArMzgsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVG91Y2hQb2lu
dCB7CiBwdWJsaWM6Ci0gICAgZW51bSBGaW5nZXIgewotICAgICAgICBGaW5nZXJGaXJzdCwKLSAg
ICAgICAgRmluZ2VyU2Vjb25kLAotICAgICAgICBGaW5nZXJUaGlyZAotICAgIH07Ci0KICAgICBX
ZWJUb3VjaFBvaW50KCkKLSAgICAgICAgOiBpZChGaW5nZXJGaXJzdCkKKyAgICAgICAgOiBpZCgw
KQogICAgICAgICAsIHN0YXRlKFN0YXRlVW5kZWZpbmVkKQogICAgICAgICAsIHJhZGl1c1goMCkK
ICAgICAgICAgLCByYWRpdXNZKDApCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiA5MzYxOSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNj
cm9sbFZpZXcuaCIKKyNpbmNsdWRlICJUb3VjaC5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIK
KyNpbmNsdWRlICJUb3VjaExpc3QuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5j
bHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtNDcsNiArNTAsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZp
bmUgTUlMTElTX1BFUl9TRUNPTkQgMTAwMAorCiAvLyBNYWtlUGxhdGZvcm1Nb3VzZUV2ZW50IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoV2lkZ2V0
KiB3aWRnZXQsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGUpCkBAIC0yNjEsOCArMjY2LDggQEAgUGxh
dGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaAogICAgIG1fbWV0YUtleSA9IGV2
ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Ok1ldGFLZXk7CiAgICAgbV90aW1lc3RhbXAg
PSBldmVudC50aW1lU3RhbXBTZWNvbmRzOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBldmVu
dC50b3VjaFBvaW50c0xlbmd0aDsgKytpKQotICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQ
bGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91Y2hQb2ludHNbaV0pKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoZXNMZW5ndGg7ICsraSkKKyAgICAg
ICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcih3aWRnZXQs
IGV2ZW50LnRvdWNoZXNbaV0pKTsKIH0KICNlbmRpZgogCkBAIC0yOTYsNyArMzAxLDcgQEAgV2Vi
TW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRCdWlsZAogICAgICAgICB0eXBlID0gV2Vi
SW5wdXRFdmVudDo6Q29udGV4dE1lbnU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNr
aXAgYWxsIG90aGVyIG1vdXNlIGV2ZW50cy4KLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQu
dGltZVN0YW1wKCkgKiAxLjBlLTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVT
dGFtcCgpIC8gTUlMTElTX1BFUl9TRUNPTkQ7CiAgICAgc3dpdGNoIChldmVudC5idXR0b24oKSkg
ewogICAgIGNhc2UgTGVmdEJ1dHRvbjoKICAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6
QnV0dG9uTGVmdDsKQEAgLTM2OSw3ICszNzQsNyBAQCBXZWJLZXlib2FyZEV2ZW50QnVpbGRlcjo6
V2ViS2V5Ym9hcmRFdmVuCiAgICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNraXAgYWxsIG90
aGVyIGtleWJvYXJkIGV2ZW50cy4KICAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVy
cyhldmVudCk7Ci0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4w
ZS0zOworICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIE1JTExJU19Q
RVJfU0VDT05EOwogICAgIHdpbmRvd3NLZXlDb2RlID0gZXZlbnQua2V5Q29kZSgpOwogCiAgICAg
Ly8gVGhlIHBsYXRmb3JtIGtleWV2ZW50IGRvZXMgbm90IGV4aXN0IGlmIHRoZSBldmVudCB3YXMg
Y3JlYXRlZCB1c2luZwpAQCAtMzg1LDQgKzM5MCw1MyBAQCBXZWJLZXlib2FyZEV2ZW50QnVpbGRl
cjo6V2ViS2V5Ym9hcmRFdmVuCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
K25hbWVzcGFjZSB7Cit2b2lkIEFkZFRvdWNoUG9pbnRzKFRvdWNoTGlzdCogdG91Y2hlcywgV2Vi
VG91Y2hQb2ludCogdG91Y2hQb2ludHMsCisgICAgICAgICAgICAgICAgICAgIGludCogdG91Y2hQ
b2ludHNMZW5ndGgsIFdlYkNvcmU6OkludFBvaW50IG9mZnNldCkgeworICAgIHVuc2lnbmVkIGlu
dCBtYXhXZWJUb3VjaGVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihXZWJUb3VjaEV2ZW50
Ojp0b3VjaGVzTGVuZ3RoQ2FwKTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtVG91Y2hlcyA9ICh0b3Vj
aGVzLT5sZW5ndGgoKSA+IG1heFdlYlRvdWNoZXMgPworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhXZWJUb3VjaGVzIDogdG91Y2hlcy0+bGVuZ3RoKCkpOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbnVtVG91Y2hlczsgaSsrKSB7CisgICAgICAgIFdlYlRvdWNo
UG9pbnQgcG9pbnQ7CisgICAgICAgIFdlYkNvcmU6OlRvdWNoKiB0b3VjaCA9IHRvdWNoZXMtPml0
ZW0oaSk7CisgICAgICAgIHBvaW50LmlkID0gdG91Y2gtPmlkZW50aWZpZXIoKTsKKyAgICAgICAg
cG9pbnQuc2NyZWVuUG9zaXRpb24gPSBXZWJQb2ludCh0b3VjaC0+c2NyZWVuWCgpLCB0b3VjaC0+
c2NyZWVuWSgpKTsKKyAgICAgICAgcG9pbnQucG9zaXRpb24gPSBXZWJQb2ludCgKKyAgICAgICAg
ICAgIHRvdWNoLT5wYWdlWCgpIC0gb2Zmc2V0LngoKSwKKyAgICAgICAgICAgIHRvdWNoLT5wYWdl
WSgpIC0gb2Zmc2V0LnkoKSk7CisgICAgICAgIHBvaW50LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0
UmFkaXVzWCgpOworICAgICAgICBwb2ludC5yYWRpdXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1ko
KTsKKyAgICAgICAgcG9pbnQucm90YXRpb25BbmdsZSA9IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFu
Z2xlKCk7CisgICAgICAgIHBvaW50LmZvcmNlID0gdG91Y2gtPndlYmtpdEZvcmNlKCk7CisgICAg
ICAgIHRvdWNoUG9pbnRzW2ldID0gcG9pbnQ7CisgICAgfQorICAgICp0b3VjaFBvaW50c0xlbmd0
aCA9IG51bVRvdWNoZXM7Cit9Cit9IC8vIG5hbWVzcGFjZQorCitXZWJUb3VjaEV2ZW50QnVpbGRl
cjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFRvdWNo
RXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRv
dWNoc3RhcnRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoU3RhcnQ7CisgICAgZWxzZSBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCkKKyAgICAgICAgdHlw
ZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaEVuZDsKKyAgICBlbHNlIGlmIChl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpCisgICAgICAgIHR5
cGUgPSBUb3VjaENhbmNlbDsKKyAgICBlbHNlIHsKKyAgICAgICAgdHlwZSA9IFVuZGVmaW5lZDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9k
aWZpZXJzKGV2ZW50KTsKKyAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkg
LyBNSUxMSVNfUEVSX1NFQ09ORDsKKworICAgIEFkZFRvdWNoUG9pbnRzKGV2ZW50LnRvdWNoZXMo
KSwgdG91Y2hlcywgJnRvdWNoZXNMZW5ndGgsIHdpZGdldC0+bG9jYXRpb24oKSk7CisgICAgQWRk
VG91Y2hQb2ludHMoZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgY2hhbmdlZFRvdWNoZXMsICZjaGFu
Z2VkVG91Y2hlc0xlbmd0aCwgd2lkZ2V0LT5sb2NhdGlvbigpKTsKKyAgICBBZGRUb3VjaFBvaW50
cyhldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMsICZ0YXJnZXRUb3VjaGVzTGVu
Z3RoLCB3aWRnZXQtPmxvY2F0aW9uKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCShyZXZpc2lvbiA5MzYx
OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIE1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgV2hlZWxFdmVudDsK
K2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTUxLDYgKzUyLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VX
aGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7
CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8g
Y29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwpAQCAtODEsMTEgKzgzLDEz
IEBAIHB1YmxpYzoKIH07CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorLy8gQ29udmVydHMg
YSBXZWJUb3VjaFBvaW50IHRvIGEgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50LgogY2xhc3Mg
UGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
UG9pbnQgewogcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIoV2ViQ29yZTo6
V2lkZ2V0KiwgY29uc3QgV2ViVG91Y2hQb2ludCYpOwogfTsKIAorLy8gQ29udmVydHMgYSBXZWJU
b3VjaEV2ZW50IHRvIGEgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50LgogY2xhc3MgUGxhdGZv
cm1Ub3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQg
ewogcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0
KiwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwpAQCAtMTE3LDYgKzEyMSwxNCBAQCBwdWJsaWM6CiAg
ICAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCYp
OwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6
OlRvdWNoRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYlRvdWNoRXZlbnQuCitjbGFzcyBXZWJU
b3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBX
ZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3Jl
OjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNjI4KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjMgIEVyaWMg
Qm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAgICBbQ2hyb21pdW1dIE1vZGlmeSBX
ZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJDb3JlOjpUb3VjaEV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjgwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnNlbmRD
dXJyZW50VG91Y2hFdmVudCk6CisKIDIwMTEtMDgtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgd2Via2l0LXBlcmwgdGVzdHMgZmFpbCBvbiB3aW4z
MiBQZXJsIGR1ZSB0byBsYWNrIG9mIGxpc3QgZm9ybSBvZiBwaXBlIG9wZW4gaW1wbGVtZW50YXRp
b24KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5j
cHAJKHJldmlzaW9uIDkzNjE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZl
bnRTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTEsOSArOTUxLDkgQEAgdm9pZCBFdmVu
dFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2ZW50KAogICAgIHRvdWNoRXZlbnQudHlwZSA9IHR5
cGU7CiAgICAgdG91Y2hFdmVudC5tb2RpZmllcnMgPSB0b3VjaE1vZGlmaWVyczsKICAgICB0b3Vj
aEV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKCk7Ci0gICAg
dG91Y2hFdmVudC50b3VjaFBvaW50c0xlbmd0aCA9IHRvdWNoUG9pbnRzLnNpemUoKTsKKyAgICB0
b3VjaEV2ZW50LnRvdWNoZXNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9pbnRzLnNpemUoKTsgKytpKQotICAgICAgICB0b3Vj
aEV2ZW50LnRvdWNoUG9pbnRzW2ldID0gdG91Y2hQb2ludHNbaV07CisgICAgICAgIHRvdWNoRXZl
bnQudG91Y2hlc1tpXSA9IHRvdWNoUG9pbnRzW2ldOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5w
dXRFdmVudCh0b3VjaEV2ZW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3Vj
aFBvaW50cy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104995</attachid>
            <date>2011-08-24 07:26:17 -0700</date>
            <delta_ts>2011-08-24 07:42:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110824102615.patch</filename>
            <type>text/plain</type>
            <size>10142</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDgt
MjMgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNo
YXJlUmVzb3VyY2VzIGZsYWcgdG8gM0QgZ3JhcGhpY3MgY29udGV4dCBhdHRyaWJ1dGVzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZp
c2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjIgQEAgcHVibGljOgogCiBjbGFz
cyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQgdG91Y2hlc0xlbmd0aENhcCA9IDg7CiAKLSAgICBpbnQgdG91Y2hQb2lu
dHNMZW5ndGg7Ci0gICAgV2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0
aENhcF07CisgICAgdW5zaWduZWQgaW50IHRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQb2lu
dCB0b3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBdOworCisgICAgdW5zaWduZWQgaW50IGNoYW5nZWRU
b3VjaGVzTGVuZ3RoOworICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hlc0xl
bmd0aENhcF07CisKKyAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0VG91Y2hlc0xlbmd0aDsKKyAgICBX
ZWJUb3VjaFBvaW50IHRhcmdldFRvdWNoZXNbdG91Y2hlc0xlbmd0aENhcF07CiAKICAgICBXZWJU
b3VjaEV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJUb3VjaEV2ZW50KSkKICAg
ICAgICAgOiBXZWJJbnB1dEV2ZW50KHNpemVQYXJhbSkKLSAgICAgICAgLCB0b3VjaFBvaW50c0xl
bmd0aCgwKQorICAgICAgICAsIHRvdWNoZXNMZW5ndGgoMCkKKyAgICAgICAgLCBjaGFuZ2VkVG91
Y2hlc0xlbmd0aCgwKQorICAgICAgICAsIHRhcmdldFRvdWNoZXNMZW5ndGgoMCkKICAgICB7CiAg
ICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3Vj
aFBvaW50LmgJKHJldmlzaW9uIDkzNjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVG91Y2hQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVG91Y2hQb2ludCB7CiBwdWJsaWM6Ci0gICAgZW51
bSBGaW5nZXIgewotICAgICAgICBGaW5nZXJGaXJzdCwKLSAgICAgICAgRmluZ2VyU2Vjb25kLAot
ICAgICAgICBGaW5nZXJUaGlyZAotICAgIH07Ci0KICAgICBXZWJUb3VjaFBvaW50KCkKLSAgICAg
ICAgOiBpZChGaW5nZXJGaXJzdCkKKyAgICAgICAgOiBpZCgwKQogICAgICAgICAsIHN0YXRlKFN0
YXRlVW5kZWZpbmVkKQogICAgICAgICAsIHJhZGl1c1goMCkKICAgICAgICAgLCByYWRpdXNZKDAp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
dmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRl
ICJUb3VjaC5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExpc3Qu
aCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgog
I2luY2x1ZGUgIldpZGdldC5oIgpAQCAtNDcsNiArNTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgTUlMTElTX1BFUl9TRUNPTkQg
MTAwMC4wCisKIC8vIE1ha2VQbGF0Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2Vi
TW91c2VFdmVudCYgZSkKQEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWls
ZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2Vi
SW5wdXRFdmVudDo6TWV0YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNl
Y29uZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3Ro
OyArK2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1
aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0aDsgKytpKQorICAgICAgICBtX3RvdWNo
UG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91
Y2hlc1tpXSkpOwogfQogI2VuZGlmCiAKQEAgLTI5Niw3ICszMDEsNyBAQCBXZWJNb3VzZUV2ZW50
QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkCiAgICAgICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpDb250ZXh0TWVudTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3Ro
ZXIgbW91c2UgZXZlbnRzLgotICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAo
KSAqIDEuMGUtMzsKKyAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBN
SUxMSVNfUEVSX1NFQ09ORDsKICAgICBzd2l0Y2ggKGV2ZW50LmJ1dHRvbigpKSB7CiAgICAgY2Fz
ZSBMZWZ0QnV0dG9uOgogICAgICAgICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0
OwpAQCAtMzM5LDcgKzM0NCw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNl
V2hlZWwKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZl
bnQpCiAgICAgICAgIHJldHVybjsKICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVl
bDsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7Cisg
ICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gTUlMTElTX1BFUl9TRUNP
TkQ7CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNj
cm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3
LT5jb250ZW50c1RvV2luZG93KApAQCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRC
dWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tp
cCBhbGwgb3RoZXIga2V5Ym9hcmQgZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0
TW9kaWZpZXJzKGV2ZW50KTsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1w
KCkgKiAxLjBlLTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8g
TUlMTElTX1BFUl9TRUNPTkQ7CiAgICAgd2luZG93c0tleUNvZGUgPSBldmVudC5rZXlDb2RlKCk7
CiAKICAgICAvLyBUaGUgcGxhdGZvcm0ga2V5ZXZlbnQgZG9lcyBub3QgZXhpc3QgaWYgdGhlIGV2
ZW50IHdhcyBjcmVhdGVkIHVzaW5nCkBAIC0zODUsNCArMzkwLDQ5IEBAIFdlYktleWJvYXJkRXZl
bnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorbmFtZXNwYWNlIHsKK3ZvaWQgQWRkVG91Y2hQb2ludHMoVG91Y2hMaXN0KiB0b3Vj
aGVzLCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KiB0b3VjaFBvaW50c0xlbmd0aCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KSB7
CisgICAgdW5zaWduZWQgaW50IG51bVRvdWNoZXMgPSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5ndGgo
KSwgV2ViVG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCk7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1Ub3VjaGVzOyBpKyspIHsKKyAgICAgICAgV2ViVG91Y2hQb2ludCBw
b2ludDsKKyAgICAgICAgV2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbShpKTsK
KyAgICAgICAgcG9pbnQuaWQgPSB0b3VjaC0+aWRlbnRpZmllcigpOworICAgICAgICBwb2ludC5z
Y3JlZW5Qb3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5Z
KCkpOworICAgICAgICBwb2ludC5wb3NpdGlvbiA9IFdlYlBvaW50KAorICAgICAgICAgICAgdG91
Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VZKCkgLSBv
ZmZzZXQueSgpKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNY
KCk7CisgICAgICAgIHBvaW50LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAg
ICAgICBwb2ludC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJvdGF0aW9uQW5nbGUoKTsK
KyAgICAgICAgcG9pbnQuZm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2UoKTsKKyAgICAgICAgdG91
Y2hQb2ludHNbaV0gPSBwb2ludDsKKyAgICB9CisgICAgKnRvdWNoUG9pbnRzTGVuZ3RoID0gbnVt
VG91Y2hlczsKK30KK30gLy8gbmFtZXNwYWNlCisKK1dlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJU
b3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgVG91Y2hFdmVudCYg
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFy
dEV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hTdGFydDsKKyAgICBlbHNlIGlmIChldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50KQorICAgICAgICB0eXBlID0gVG91
Y2hNb3ZlOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hl
bmRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoRW5kOworICAgIGVsc2UgaWYgKGV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCkKKyAgICAgICAgdHlwZSA9IFRv
dWNoQ2FuY2VsOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CisgICAgdGltZVN0YW1w
U2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gTUlMTElTX1BFUl9TRUNPTkQ7CisKKyAgICBB
ZGRUb3VjaFBvaW50cyhldmVudC50b3VjaGVzKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCB3
aWRnZXQtPmxvY2F0aW9uKCkpOworICAgIEFkZFRvdWNoUG9pbnRzKGV2ZW50LmNoYW5nZWRUb3Vj
aGVzKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRvdWNoZXNMZW5ndGgsIHdpZGdldC0+bG9j
YXRpb24oKSk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZlbnQudGFyZ2V0VG91Y2hlcygpLCB0YXJn
ZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwgd2lkZ2V0LT5sb2NhdGlvbigpKTsKK30K
KyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uaAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgU2Ny
b2xsVmlldzsKIGNsYXNzIFdoZWVsRXZlbnQ7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3MgV2lk
Z2V0OwogfQogCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
TW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYktleWJvYXJk
RXZlbnQ7CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiAv
LyBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSBXZWJJbnB1dEV2ZW50IHN1
YmNsYXNzZXMgdG8KQEAgLTgxLDExICs4MywxMyBAQCBwdWJsaWM6CiB9OwogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hQb2ludCB0byBhIFdlYkNvcmU6
OlBsYXRmb3JtVG91Y2hQb2ludC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIgOiBw
dWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9y
bVRvdWNoUG9pbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoUG9pbnQm
KTsKIH07CiAKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hFdmVudCB0byBhIFdlYkNvcmU6OlBsYXRm
b3JtVG91Y2hFdmVudC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNo
RXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKQEAg
LTExNyw2ICsxMjEsMTYgQEAgcHVibGljOgogICAgIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyKGNv
bnN0IFdlYkNvcmU6OktleWJvYXJkRXZlbnQmKTsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorLy8gQ29udmVydHMgYSBXZWJDb3JlOjpUb3VjaEV2ZW50IHRvIGEgY29ycmVzcG9uZGlu
ZyBXZWJUb3VjaEV2ZW50LgorLy8gTk9URTogV2ViVG91Y2hFdmVudHMgaGF2ZSBhIGNhcCBvbiBu
dW1iZXIgb2YgV2ViVG91Y2hQb2ludHMuIEFueSBwb2ludHMKKy8vIGV4Y2VlZGluZyB0aGF0IGNh
cCB3aWxsIGJlIGRyb3BwZWQuCitjbGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBX
ZWJUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBX
ZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlm
IC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkzNjI4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4K
KworICAgICAgICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBt
YXRjaCBXZWJDb3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisKIDIwMTEt
MDgtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
d2Via2l0LXBlcmwgdGVzdHMgZmFpbCBvbiB3aW4zMiBQZXJsIGR1ZSB0byBsYWNrIG9mIGxpc3Qg
Zm9ybSBvZiBwaXBlIG9wZW4gaW1wbGVtZW50YXRpb24KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAJKHJldmlzaW9uIDkzNjE5KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NTEsOSArOTUxLDkgQEAgdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2
ZW50KAogICAgIHRvdWNoRXZlbnQudHlwZSA9IHR5cGU7CiAgICAgdG91Y2hFdmVudC5tb2RpZmll
cnMgPSB0b3VjaE1vZGlmaWVyczsKICAgICB0b3VjaEV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBn
ZXRDdXJyZW50RXZlbnRUaW1lU2VjKCk7Ci0gICAgdG91Y2hFdmVudC50b3VjaFBvaW50c0xlbmd0
aCA9IHRvdWNoUG9pbnRzLnNpemUoKTsKKyAgICB0b3VjaEV2ZW50LnRvdWNoZXNMZW5ndGggPSB0
b3VjaFBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9p
bnRzLnNpemUoKTsgKytpKQotICAgICAgICB0b3VjaEV2ZW50LnRvdWNoUG9pbnRzW2ldID0gdG91
Y2hQb2ludHNbaV07CisgICAgICAgIHRvdWNoRXZlbnQudG91Y2hlc1tpXSA9IHRvdWNoUG9pbnRz
W2ldOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudCh0b3VjaEV2ZW50KTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104998</attachid>
            <date>2011-08-24 07:42:58 -0700</date>
            <delta_ts>2011-08-25 05:09:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110824104256.patch</filename>
            <type>text/plain</type>
            <size>10199</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDgt
MjMgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNo
YXJlUmVzb3VyY2VzIGZsYWcgdG8gM0QgZ3JhcGhpY3MgY29udGV4dCBhdHRyaWJ1dGVzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZp
c2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjIgQEAgcHVibGljOgogCiBjbGFz
cyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQgdG91Y2hlc0xlbmd0aENhcCA9IDg7CiAKLSAgICBpbnQgdG91Y2hQb2lu
dHNMZW5ndGg7Ci0gICAgV2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0
aENhcF07CisgICAgdW5zaWduZWQgaW50IHRvdWNoZXNMZW5ndGg7CisgICAgV2ViVG91Y2hQb2lu
dCB0b3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBdOworCisgICAgdW5zaWduZWQgaW50IGNoYW5nZWRU
b3VjaGVzTGVuZ3RoOworICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hlc0xl
bmd0aENhcF07CisKKyAgICB1bnNpZ25lZCBpbnQgdGFyZ2V0VG91Y2hlc0xlbmd0aDsKKyAgICBX
ZWJUb3VjaFBvaW50IHRhcmdldFRvdWNoZXNbdG91Y2hlc0xlbmd0aENhcF07CiAKICAgICBXZWJU
b3VjaEV2ZW50KHVuc2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJUb3VjaEV2ZW50KSkKICAg
ICAgICAgOiBXZWJJbnB1dEV2ZW50KHNpemVQYXJhbSkKLSAgICAgICAgLCB0b3VjaFBvaW50c0xl
bmd0aCgwKQorICAgICAgICAsIHRvdWNoZXNMZW5ndGgoMCkKKyAgICAgICAgLCBjaGFuZ2VkVG91
Y2hlc0xlbmd0aCgwKQorICAgICAgICAsIHRhcmdldFRvdWNoZXNMZW5ndGgoMCkKICAgICB7CiAg
ICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3Vj
aFBvaW50LmgJKHJldmlzaW9uIDkzNjE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVG91Y2hQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVG91Y2hQb2ludCB7CiBwdWJsaWM6Ci0gICAgZW51
bSBGaW5nZXIgewotICAgICAgICBGaW5nZXJGaXJzdCwKLSAgICAgICAgRmluZ2VyU2Vjb25kLAot
ICAgICAgICBGaW5nZXJUaGlyZAotICAgIH07Ci0KICAgICBXZWJUb3VjaFBvaW50KCkKLSAgICAg
ICAgOiBpZChGaW5nZXJGaXJzdCkKKyAgICAgICAgOiBpZCgwKQogICAgICAgICAsIHN0YXRlKFN0
YXRlVW5kZWZpbmVkKQogICAgICAgICAsIHJhZGl1c1goMCkKICAgICAgICAgLCByYWRpdXNZKDAp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
dmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksOSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRl
ICJUb3VjaC5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExpc3Qu
aCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgog
I2luY2x1ZGUgIldpZGdldC5oIgpAQCAtNDcsNiArNTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgTUlMTElTX1BFUl9TRUNPTkQg
MTAwMC4wCisKIC8vIE1ha2VQbGF0Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2Vi
TW91c2VFdmVudCYgZSkKQEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWls
ZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2Vi
SW5wdXRFdmVudDo6TWV0YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNl
Y29uZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3Ro
OyArK2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1
aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hlc0xlbmd0aDsgKytpKQorICAgICAgICBtX3RvdWNo
UG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKHdpZGdldCwgZXZlbnQudG91
Y2hlc1tpXSkpOwogfQogI2VuZGlmCiAKQEAgLTI5Niw3ICszMDEsNyBAQCBXZWJNb3VzZUV2ZW50
QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkCiAgICAgICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpDb250ZXh0TWVudTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3Ro
ZXIgbW91c2UgZXZlbnRzLgotICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAo
KSAqIDEuMGUtMzsKKyAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBN
SUxMSVNfUEVSX1NFQ09ORDsKICAgICBzd2l0Y2ggKGV2ZW50LmJ1dHRvbigpKSB7CiAgICAgY2Fz
ZSBMZWZ0QnV0dG9uOgogICAgICAgICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0
OwpAQCAtMzM5LDcgKzM0NCw3IEBAIFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNl
V2hlZWwKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZl
bnQpCiAgICAgICAgIHJldHVybjsKICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVl
bDsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7Cisg
ICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gTUlMTElTX1BFUl9TRUNP
TkQ7CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNj
cm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3
LT5jb250ZW50c1RvV2luZG93KApAQCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRC
dWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tp
cCBhbGwgb3RoZXIga2V5Ym9hcmQgZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0
TW9kaWZpZXJzKGV2ZW50KTsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1w
KCkgKiAxLjBlLTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8g
TUlMTElTX1BFUl9TRUNPTkQ7CiAgICAgd2luZG93c0tleUNvZGUgPSBldmVudC5rZXlDb2RlKCk7
CiAKICAgICAvLyBUaGUgcGxhdGZvcm0ga2V5ZXZlbnQgZG9lcyBub3QgZXhpc3QgaWYgdGhlIGV2
ZW50IHdhcyBjcmVhdGVkIHVzaW5nCkBAIC0zODUsNCArMzkwLDUyIEBAIFdlYktleWJvYXJkRXZl
bnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorbmFtZXNwYWNlIHsKK3ZvaWQgQWRkVG91Y2hQb2ludHMoVG91Y2hMaXN0KiB0b3Vj
aGVzLCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50KiB0b3VjaFBvaW50c0xlbmd0aCwgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KSB7
CisgICAgdW5zaWduZWQgaW50IG51bVRvdWNoZXMgPSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5ndGgo
KSwgV2ViVG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCk7CisgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBudW1Ub3VjaGVzOyBpKyspIHsKKyAgICAgICAgV2ViVG91Y2hQb2ludCBw
b2ludDsKKyAgICAgICAgV2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbShpKTsK
KyAgICAgICAgcG9pbnQuaWQgPSB0b3VjaC0+aWRlbnRpZmllcigpOworICAgICAgICBwb2ludC5z
Y3JlZW5Qb3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5Z
KCkpOworICAgICAgICBwb2ludC5wb3NpdGlvbiA9IFdlYlBvaW50KAorICAgICAgICAgICAgdG91
Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLAorICAgICAgICAgICAgdG91Y2gtPnBhZ2VZKCkgLSBv
ZmZzZXQueSgpKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNY
KCk7CisgICAgICAgIHBvaW50LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAg
ICAgICBwb2ludC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJvdGF0aW9uQW5nbGUoKTsK
KyAgICAgICAgcG9pbnQuZm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2UoKTsKKyAgICAgICAgdG91
Y2hQb2ludHNbaV0gPSBwb2ludDsKKyAgICB9CisgICAgKnRvdWNoUG9pbnRzTGVuZ3RoID0gbnVt
VG91Y2hlczsKK30KK30gLy8gbmFtZXNwYWNlCisKK1dlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJU
b3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgVG91Y2hFdmVudCYg
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFy
dEV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hTdGFydDsKKyAgICBlbHNlIGlmIChldmVudC50
eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50KQorICAgICAgICB0eXBlID0gVG91
Y2hNb3ZlOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hl
bmRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoRW5kOworICAgIGVsc2UgaWYgKGV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCkKKyAgICAgICAgdHlwZSA9IFRv
dWNoQ2FuY2VsOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgdHlwZSA9IFVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1v
ZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKKyAgICB0aW1lU3RhbXBTZWNv
bmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBNSUxMSVNfUEVSX1NFQ09ORDsKKworICAgIEFkZFRv
dWNoUG9pbnRzKGV2ZW50LnRvdWNoZXMoKSwgdG91Y2hlcywgJnRvdWNoZXNMZW5ndGgsIHdpZGdl
dC0+bG9jYXRpb24oKSk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZlbnQuY2hhbmdlZFRvdWNoZXMo
KSwgY2hhbmdlZFRvdWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCwgd2lkZ2V0LT5sb2NhdGlv
bigpKTsKKyAgICBBZGRUb3VjaFBvaW50cyhldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRv
dWNoZXMsICZ0YXJnZXRUb3VjaGVzTGVuZ3RoLCB3aWRnZXQtPmxvY2F0aW9uKCkpOworfQorI2Vu
ZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5oCShyZXZpc2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxW
aWV3OwogY2xhc3MgV2hlZWxFdmVudDsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaWRnZXQ7
CiB9CiAKQEAgLTUxLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3Vz
ZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVu
dDsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRo
ZXNlIGNsYXNzZXMgYXJlIHVzZWQgdG8gY29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xh
c3NlcyB0bwpAQCAtODEsMTEgKzgzLDEzIEBAIHB1YmxpYzoKIH07CiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorLy8gQ29udmVydHMgYSBXZWJUb3VjaFBvaW50IHRvIGEgV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaFBvaW50LgogY2xhc3MgUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQgewogcHVibGljOgogICAgIFBsYXRmb3JtVG91
Y2hQb2ludEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViVG91Y2hQb2ludCYpOwog
fTsKIAorLy8gQ29udmVydHMgYSBXZWJUb3VjaEV2ZW50IHRvIGEgV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaEV2ZW50LgogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJD
b3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQgewogcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hFdmVu
dEJ1aWxkZXIoV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwpAQCAtMTE3
LDYgKzEyMSwxNiBAQCBwdWJsaWM6CiAgICAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3Qg
V2ViQ29yZTo6S2V5Ym9hcmRFdmVudCYpOwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisvLyBDb252ZXJ0cyBhIFdlYkNvcmU6OlRvdWNoRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdl
YlRvdWNoRXZlbnQuCisvLyBOT1RFOiBXZWJUb3VjaEV2ZW50cyBoYXZlIGEgY2FwIG9uIHRoZSBu
dW1iZXIgb2YgV2ViVG91Y2hQb2ludHMuIEFueSBwb2ludHMKKy8vIGV4Y2VlZGluZyB0aGF0IGNh
cCB3aWxsIGJlIGRyb3BwZWQuCitjbGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBX
ZWJUb3VjaEV2ZW50IHsKK3B1YmxpYzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBX
ZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlm
IC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDkzNjI4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4K
KworICAgICAgICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBt
YXRjaCBXZWJDb3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAoRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisKIDIwMTEt
MDgtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
d2Via2l0LXBlcmwgdGVzdHMgZmFpbCBvbiB3aW4zMiBQZXJsIGR1ZSB0byBsYWNrIG9mIGxpc3Qg
Zm9ybSBvZiBwaXBlIG9wZW4gaW1wbGVtZW50YXRpb24KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAJKHJldmlzaW9uIDkzNjE5KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NTEsOSArOTUxLDkgQEAgdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2
ZW50KAogICAgIHRvdWNoRXZlbnQudHlwZSA9IHR5cGU7CiAgICAgdG91Y2hFdmVudC5tb2RpZmll
cnMgPSB0b3VjaE1vZGlmaWVyczsKICAgICB0b3VjaEV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBn
ZXRDdXJyZW50RXZlbnRUaW1lU2VjKCk7Ci0gICAgdG91Y2hFdmVudC50b3VjaFBvaW50c0xlbmd0
aCA9IHRvdWNoUG9pbnRzLnNpemUoKTsKKyAgICB0b3VjaEV2ZW50LnRvdWNoZXNMZW5ndGggPSB0
b3VjaFBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9p
bnRzLnNpemUoKTsgKytpKQotICAgICAgICB0b3VjaEV2ZW50LnRvdWNoUG9pbnRzW2ldID0gdG91
Y2hQb2ludHNbaV07CisgICAgICAgIHRvdWNoRXZlbnQudG91Y2hlc1tpXSA9IHRvdWNoUG9pbnRz
W2ldOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudCh0b3VjaEV2ZW50KTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105161</attachid>
            <date>2011-08-25 05:09:49 -0700</date>
            <delta_ts>2011-08-26 07:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110825080948.patch</filename>
            <type>text/plain</type>
            <size>10406</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDgt
MjMgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNo
YXJlUmVzb3VyY2VzIGZsYWcgdG8gM0QgZ3JhcGhpY3MgY29udGV4dCBhdHRyaWJ1dGVzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZp
c2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjUgQEAgcHVibGljOgogCiBjbGFz
cyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xl
bmd0aDsKLSAgICBXZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2Fw
XTsKKyAgICB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNo
ZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duLgorICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hlc1t0
b3VjaGVzTGVuZ3RoQ2FwXTsKKworICAgIHVuc2lnbmVkIGNoYW5nZWRUb3VjaGVzTGVuZ3RoOwor
ICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hvc2Ugc3RhdGUgaGFzIGNoYW5nZWQgc2luY2Ug
dGhlIGxhc3QgV2ViVG91Y2hFdmVudAorICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNb
dG91Y2hlc0xlbmd0aENhcF07CisKKyAgICB1bnNpZ25lZCB0YXJnZXRUb3VjaGVzTGVuZ3RoOwor
ICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duIGFuZCBh
cmUgdGFyZ2V0aW5nIHRoZSBldmVudCByZWNpcGllbnQuCisgICAgV2ViVG91Y2hQb2ludCB0YXJn
ZXRUb3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBdOwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25l
ZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViVG91Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRF
dmVudChzaXplUGFyYW0pCi0gICAgICAgICwgdG91Y2hQb2ludHNMZW5ndGgoMCkKKyAgICAgICAg
LCB0b3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgY2hhbmdlZFRvdWNoZXNMZW5ndGgoMCkKKyAg
ICAgICAgLCB0YXJnZXRUb3VjaGVzTGVuZ3RoKDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCShyZXZpc2lv
biA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlRvdWNoUG9pbnQgewogcHVibGljOgotICAgIGVudW0gRmluZ2VyIHsKLSAgICAg
ICAgRmluZ2VyRmlyc3QsCi0gICAgICAgIEZpbmdlclNlY29uZCwKLSAgICAgICAgRmluZ2VyVGhp
cmQKLSAgICB9OwotCiAgICAgV2ViVG91Y2hQb2ludCgpCi0gICAgICAgIDogaWQoRmluZ2VyRmly
c3QpCisgICAgICAgIDogaWQoMCkKICAgICAgICAgLCBzdGF0ZShTdGF0ZVVuZGVmaW5lZCkKICAg
ICAgICAgLCByYWRpdXNYKDApCiAgICAgICAgICwgcmFkaXVzWSgwKQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKQEAgLTQ3LDYgKzUwLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitzdGF0aWMgY29uc3QgZG91YmxlIGtNaWxsaXNQZXJTZWNvbmQgPSAxMDAw
LjA7CisKIC8vIE1ha2VQbGF0Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW91
c2VFdmVudCYgZSkKQEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5w
dXRFdmVudDo6TWV0YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29u
ZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyAr
K2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxk
ZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBldmVudC50b3VjaGVzTGVuZ3RoOyArK2kpCisgICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaGVzW2ld
KSk7CiB9CiAjZW5kaWYKIApAQCAtMjk2LDcgKzMwMSw3IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVy
OjpXZWJNb3VzZUV2ZW50QnVpbGQKICAgICAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6OkNvbnRl
eHRNZW51OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGFsbCBvdGhlciBtb3Vz
ZSBldmVudHMuCi0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4w
ZS0zOworICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQ
ZXJTZWNvbmQ7CiAgICAgc3dpdGNoIChldmVudC5idXR0b24oKSkgewogICAgIGNhc2UgTGVmdEJ1
dHRvbjoKICAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTGVmdDsKQEAgLTMz
OSw3ICszNDQsNyBAQCBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsCiAg
ICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAg
dGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4wZS0zOworICAgIHRpbWVT
dGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQZXJTZWNvbmQ7CiAgICAg
bW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNjcm9sbFZpZXcq
IHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50
c1RvV2luZG93KApAQCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpX
ZWJLZXlib2FyZEV2ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3Ro
ZXIga2V5Ym9hcmQgZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJz
KGV2ZW50KTsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBl
LTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8ga01pbGxpc1Bl
clNlY29uZDsKICAgICB3aW5kb3dzS2V5Q29kZSA9IGV2ZW50LmtleUNvZGUoKTsKIAogICAgIC8v
IFRoZSBwbGF0Zm9ybSBrZXlldmVudCBkb2VzIG5vdCBleGlzdCBpZiB0aGUgZXZlbnQgd2FzIGNy
ZWF0ZWQgdXNpbmcKQEAgLTM4NSw0ICszOTAsNTAgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6
OldlYktleWJvYXJkRXZlbgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitz
dGF0aWMgdm9pZCBBZGRUb3VjaFBvaW50cyhUb3VjaExpc3QqIHRvdWNoZXMsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVG91Y2hQb2ludCog
dG91Y2hQb2ludHMsIHVuc2lnbmVkIGludCogdG91Y2hQb2ludHNMZW5ndGgpIHsKKyAgICB1bnNp
Z25lZCBpbnQgbnVtVG91Y2hlcyA9IHN0ZDo6bWluKHRvdWNoZXMtPmxlbmd0aCgpLCBXZWJUb3Vj
aEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG51bVRvdWNoZXM7IGkrKykgeworICAgICAgICBXZWJUb3VjaFBvaW50IHBvaW50OworICAg
ICAgICBjb25zdCBXZWJDb3JlOjpUb3VjaCogdG91Y2ggPSB0b3VjaGVzLT5pdGVtKGkpOworICAg
ICAgICBwb2ludC5pZCA9IHRvdWNoLT5pZGVudGlmaWVyKCk7CisgICAgICAgIHBvaW50LnNjcmVl
blBvc2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnNjcmVlblgoKSwgdG91Y2gtPnNjcmVlblkoKSk7
CisgICAgICAgIHBvaW50LnBvc2l0aW9uID0gV2ViUG9pbnQoCisgICAgICAgICAgICB0b3VjaC0+
cGFnZVgoKSAtIG9mZnNldC54KCksCisgICAgICAgICAgICB0b3VjaC0+cGFnZVkoKSAtIG9mZnNl
dC55KCkpOworICAgICAgICBwb2ludC5yYWRpdXNYID0gdG91Y2gtPndlYmtpdFJhZGl1c1goKTsK
KyAgICAgICAgcG9pbnQucmFkaXVzWSA9IHRvdWNoLT53ZWJraXRSYWRpdXNZKCk7CisgICAgICAg
IHBvaW50LnJvdGF0aW9uQW5nbGUgPSB0b3VjaC0+d2Via2l0Um90YXRpb25BbmdsZSgpOworICAg
ICAgICBwb2ludC5mb3JjZSA9IHRvdWNoLT53ZWJraXRGb3JjZSgpOworICAgICAgICB0b3VjaFBv
aW50c1tpXSA9IHBvaW50OworICAgIH0KKyAgICAqdG91Y2hQb2ludHNMZW5ndGggPSBudW1Ub3Vj
aGVzOworfQorCitXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29u
c3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCkKKyAgICAgICAgdHlw
ZSA9IFRvdWNoU3RhcnQ7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS50b3VjaG1vdmVFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNlIGlm
IChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHR5
cGUgPSBUb3VjaEVuZDsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygp
LnRvdWNoY2FuY2VsRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaENhbmNlbDsKKyAgICBlbHNl
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHR5cGUgPSBVbmRlZmlu
ZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1
dE1vZGlmaWVycyhldmVudCk7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFt
cCgpIC8ga01pbGxpc1BlclNlY29uZDsKKworICAgIEFkZFRvdWNoUG9pbnRzKGV2ZW50LnRvdWNo
ZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCB0b3VjaGVzLCAmdG91Y2hlc0xlbmd0aCk7CisgICAg
QWRkVG91Y2hQb2ludHMoZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigp
LCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVzTGVuZ3RoKTsKKyAgICBBZGRUb3VjaFBv
aW50cyhldmVudC50YXJnZXRUb3VjaGVzKCksIHdpZGdldC0+bG9jYXRpb24oKSwgdGFyZ2V0VG91
Y2hlcywgJnRhcmdldFRvdWNoZXNMZW5ndGgpOworfQorI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCShyZXZpc2lvbiA5
MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJz
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIE1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgV2hlZWxFdmVu
dDsKK2NsYXNzIFRvdWNoRXZlbnQ7CiBjbGFzcyBXaWRnZXQ7CiB9CiAKQEAgLTUxLDYgKzUyLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91
c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYlRvdWNoRXZl
bnQ7CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiAKIC8vIFRoZXNlIGNsYXNzZXMgYXJlIHVzZWQg
dG8gY29udmVydCBmcm9tIFdlYklucHV0RXZlbnQgc3ViY2xhc3NlcyB0bwpAQCAtODEsMTEgKzgz
LDEzIEBAIHB1YmxpYzoKIH07CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorLy8gQ29udmVy
dHMgYSBXZWJUb3VjaFBvaW50IHRvIGEgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50LgogY2xh
c3MgUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoUG9pbnQgewogcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIoV2ViQ29y
ZTo6V2lkZ2V0KiwgY29uc3QgV2ViVG91Y2hQb2ludCYpOwogfTsKIAorLy8gQ29udmVydHMgYSBX
ZWJUb3VjaEV2ZW50IHRvIGEgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50LgogY2xhc3MgUGxh
dGZvcm1Ub3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZl
bnQgewogcHVibGljOgogICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIoV2ViQ29yZTo6V2lk
Z2V0KiwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwpAQCAtMTE3LDYgKzEyMSwxNiBAQCBwdWJsaWM6
CiAgICAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVu
dCYpOwogfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0cyBhIFdlYkNv
cmU6OlRvdWNoRXZlbnQgdG8gYSBjb3JyZXNwb25kaW5nIFdlYlRvdWNoRXZlbnQuCisvLyBOT1RF
OiBXZWJUb3VjaEV2ZW50cyBoYXZlIGEgY2FwIG9uIHRoZSBudW1iZXIgb2YgV2ViVG91Y2hQb2lu
dHMuIEFueSBwb2ludHMKKy8vIGV4Y2VlZGluZyB0aGF0IGNhcCB3aWxsIGJlIGRyb3BwZWQuCitj
bGFzcyBXZWJUb3VjaEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJUb3VjaEV2ZW50IHsKK3B1Ymxp
YzoKKyAgICBXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3JlOjpXaWRnZXQqLCBjb25z
dCBXZWJDb3JlOjpUb3VjaEV2ZW50Jik7Cit9OworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNjI4KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgt
MjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAgICBbQ2hyb21pdW1d
IE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJDb3JlOjpUb3VjaEV2
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njgw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRXZlbnRTZW5k
ZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisKIDIwMTEtMDgtMjMgIFBhdHJpY2sgR2Fuc3Rl
cmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgd2Via2l0LXBlcmwgdGVzdHMgZmFp
bCBvbiB3aW4zMiBQZXJsIGR1ZSB0byBsYWNrIG9mIGxpc3QgZm9ybSBvZiBwaXBlIG9wZW4gaW1w
bGVtZW50YXRpb24KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2Vu
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVu
dFNlbmRlci5jcHAJKHJldmlzaW9uIDkzNjE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRXZlbnRTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTEsOSArOTUxLDkgQEAg
dm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2ZW50KAogICAgIHRvdWNoRXZlbnQu
dHlwZSA9IHR5cGU7CiAgICAgdG91Y2hFdmVudC5tb2RpZmllcnMgPSB0b3VjaE1vZGlmaWVyczsK
ICAgICB0b3VjaEV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBnZXRDdXJyZW50RXZlbnRUaW1lU2Vj
KCk7Ci0gICAgdG91Y2hFdmVudC50b3VjaFBvaW50c0xlbmd0aCA9IHRvdWNoUG9pbnRzLnNpemUo
KTsKKyAgICB0b3VjaEV2ZW50LnRvdWNoZXNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNoUG9pbnRzLnNpemUoKTsgKytpKQotICAg
ICAgICB0b3VjaEV2ZW50LnRvdWNoUG9pbnRzW2ldID0gdG91Y2hQb2ludHNbaV07CisgICAgICAg
IHRvdWNoRXZlbnQudG91Y2hlc1tpXSA9IHRvdWNoUG9pbnRzW2ldOwogICAgIHdlYnZpZXcoKS0+
aGFuZGxlSW5wdXRFdmVudCh0b3VjaEV2ZW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105358</attachid>
            <date>2011-08-26 07:00:55 -0700</date>
            <delta_ts>2011-09-06 12:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110826100054.patch</filename>
            <type>text/plain</type>
            <size>10995</size>
            <attacher>borenet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MzYyOCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDgtMjMgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDgt
MjMgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHNo
YXJlUmVzb3VyY2VzIGZsYWcgdG8gM0QgZ3JhcGhpY3MgY29udGV4dCBhdHRyaWJ1dGVzCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZp
c2lvbiA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjUgQEAgcHVibGljOgogCiBjbGFz
cyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xl
bmd0aDsKLSAgICBXZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2Fw
XTsKKyAgICB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNo
ZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duLgorICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hlc1t0
b3VjaGVzTGVuZ3RoQ2FwXTsKKworICAgIHVuc2lnbmVkIGNoYW5nZWRUb3VjaGVzTGVuZ3RoOwor
ICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hvc2Ugc3RhdGUgaGFzIGNoYW5nZWQgc2luY2Ug
dGhlIGxhc3QgV2ViVG91Y2hFdmVudAorICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNb
dG91Y2hlc0xlbmd0aENhcF07CisKKyAgICB1bnNpZ25lZCB0YXJnZXRUb3VjaGVzTGVuZ3RoOwor
ICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duIGFuZCBh
cmUgdGFyZ2V0aW5nIHRoZSBldmVudCByZWNpcGllbnQuCisgICAgV2ViVG91Y2hQb2ludCB0YXJn
ZXRUb3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBdOwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25l
ZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViVG91Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRF
dmVudChzaXplUGFyYW0pCi0gICAgICAgICwgdG91Y2hQb2ludHNMZW5ndGgoMCkKKyAgICAgICAg
LCB0b3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgY2hhbmdlZFRvdWNoZXNMZW5ndGgoMCkKKyAg
ICAgICAgLCB0YXJnZXRUb3VjaGVzTGVuZ3RoKDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCShyZXZpc2lv
biA5MzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlRvdWNoUG9pbnQgewogcHVibGljOgotICAgIGVudW0gRmluZ2VyIHsKLSAgICAg
ICAgRmluZ2VyRmlyc3QsCi0gICAgICAgIEZpbmdlclNlY29uZCwKLSAgICAgICAgRmluZ2VyVGhp
cmQKLSAgICB9OwotCiAgICAgV2ViVG91Y2hQb2ludCgpCi0gICAgICAgIDogaWQoRmluZ2VyRmly
c3QpCisgICAgICAgIDogaWQoMCkKICAgICAgICAgLCBzdGF0ZShTdGF0ZVVuZGVmaW5lZCkKICAg
ICAgICAgLCByYWRpdXNYKDApCiAgICAgICAgICwgcmFkaXVzWSgwKQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNs
dWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
SW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKQEAgLTQ3LDYgKzUwLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitzdGF0aWMgY29uc3QgZG91YmxlIGtNaWxsaXNQZXJTZWNvbmQgPSAxMDAw
LjA7CisKIC8vIE1ha2VQbGF0Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW91
c2VFdmVudCYgZSkKQEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5w
dXRFdmVudDo6TWV0YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29u
ZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyAr
K2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxk
ZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBldmVudC50b3VjaGVzTGVuZ3RoOyArK2kpCisgICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaGVzW2ld
KSk7CiB9CiAjZW5kaWYKIApAQCAtMjk2LDcgKzMwMSw3IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVy
OjpXZWJNb3VzZUV2ZW50QnVpbGQKICAgICAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6OkNvbnRl
eHRNZW51OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGFsbCBvdGhlciBtb3Vz
ZSBldmVudHMuCi0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4w
ZS0zOworICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQ
ZXJTZWNvbmQ7CiAgICAgc3dpdGNoIChldmVudC5idXR0b24oKSkgewogICAgIGNhc2UgTGVmdEJ1
dHRvbjoKICAgICAgICAgYnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTGVmdDsKQEAgLTMz
OSw3ICszNDQsNyBAQCBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsCiAg
ICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAg
dGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4wZS0zOworICAgIHRpbWVT
dGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQZXJTZWNvbmQ7CiAgICAg
bW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNjcm9sbFZpZXcq
IHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50
c1RvV2luZG93KApAQCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpX
ZWJLZXlib2FyZEV2ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3Ro
ZXIga2V5Ym9hcmQgZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJz
KGV2ZW50KTsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBl
LTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8ga01pbGxpc1Bl
clNlY29uZDsKICAgICB3aW5kb3dzS2V5Q29kZSA9IGV2ZW50LmtleUNvZGUoKTsKIAogICAgIC8v
IFRoZSBwbGF0Zm9ybSBrZXlldmVudCBkb2VzIG5vdCBleGlzdCBpZiB0aGUgZXZlbnQgd2FzIGNy
ZWF0ZWQgdXNpbmcKQEAgLTM3NywxMiArMzgyLDU4IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVy
OjpXZWJLZXlib2FyZEV2ZW4KICAgICBpZiAoIWV2ZW50LmtleUV2ZW50KCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBuYXRpdmVLZXlDb2RlID0gZXZlbnQua2V5RXZlbnQoKS0+bmF0aXZlVmlydHVh
bEtleUNvZGUoKTsKLSAgICB1bnNpZ25lZCBpbnQgbnVtQ2hhcnMgPSBzdGQ6Om1pbihldmVudC5r
ZXlFdmVudCgpLT50ZXh0KCkubGVuZ3RoKCksCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oV2ViS2V5Ym9hcmRFdmVudDo6dGV4dExlbmd0aENhcCkpOwotICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbnVtQ2hhcnM7IGkrKykgeworICAgIHVuc2lnbmVkIG51bUNoYXJz
ID0gc3RkOjptaW4oZXZlbnQua2V5RXZlbnQoKS0+dGV4dCgpLmxlbmd0aCgpLAorICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oV2ViS2V5Ym9hcmRFdmVudDo6dGV4dExlbmd0aENhcCkpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1DaGFyczsgaSsrKSB7CiAgICAgICAgIHRl
eHRbaV0gPSBldmVudC5rZXlFdmVudCgpLT50ZXh0KClbaV07CiAgICAgICAgIHVubW9kaWZpZWRU
ZXh0W2ldID0gZXZlbnQua2V5RXZlbnQoKS0+dW5tb2RpZmllZFRleHQoKVtpXTsKICAgICB9CiB9
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorc3RhdGljIHZvaWQgQWRkVG91Y2hQb2ludHMo
VG91Y2hMaXN0KiB0b3VjaGVzLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYlRvdWNoUG9pbnQqIHRvdWNoUG9pbnRzLCB1bnNpZ25lZCogdG91
Y2hQb2ludHNMZW5ndGgpIHsKKyAgICB1bnNpZ25lZCBudW1Ub3VjaGVzID0gc3RkOjptaW4odG91
Y2hlcy0+bGVuZ3RoKCksIFdlYlRvdWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhDYXApOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3VjaGVzOyBpKyspIHsKKyAgICAgICAgV2ViVG91
Y2hQb2ludCBwb2ludDsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6VG91Y2gqIHRvdWNoID0gdG91
Y2hlcy0+aXRlbShpKTsKKyAgICAgICAgcG9pbnQuaWQgPSB0b3VjaC0+aWRlbnRpZmllcigpOwor
ICAgICAgICBwb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdlYlBvaW50KHRvdWNoLT5zY3JlZW5YKCks
IHRvdWNoLT5zY3JlZW5ZKCkpOworICAgICAgICBwb2ludC5wb3NpdGlvbiA9IFdlYlBvaW50KAor
ICAgICAgICAgICAgdG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLAorICAgICAgICAgICAgdG91
Y2gtPnBhZ2VZKCkgLSBvZmZzZXQueSgpKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNo
LT53ZWJraXRSYWRpdXNYKCk7CisgICAgICAgIHBvaW50LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0
UmFkaXVzWSgpOworICAgICAgICBwb2ludC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJv
dGF0aW9uQW5nbGUoKTsKKyAgICAgICAgcG9pbnQuZm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2Uo
KTsKKyAgICAgICAgdG91Y2hQb2ludHNbaV0gPSBwb2ludDsKKyAgICB9CisgICAgKnRvdWNoUG9p
bnRzTGVuZ3RoID0gbnVtVG91Y2hlczsKK30KKworV2ViVG91Y2hFdmVudEJ1aWxkZXI6OldlYlRv
dWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBUb3VjaEV2ZW50JiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0
RXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaFN0YXJ0OworICAgIGVsc2UgaWYgKGV2ZW50LnR5
cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3Vj
aE1vdmU7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGVu
ZEV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hFbmQ7CisgICAgZWxzZSBpZiAoZXZlbnQudHlw
ZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50KQorICAgICAgICB0eXBlID0gVG91
Y2hDYW5jZWw7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB0eXBlID0gVW5kZWZpbmVkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbW9k
aWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOworICAgIHRpbWVTdGFtcFNlY29u
ZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQZXJTZWNvbmQ7CisKKyAgICBBZGRUb3Vj
aFBvaW50cyhldmVudC50b3VjaGVzKCksIHdpZGdldC0+bG9jYXRpb24oKSwgdG91Y2hlcywgJnRv
dWNoZXNMZW5ndGgpOworICAgIEFkZFRvdWNoUG9pbnRzKGV2ZW50LmNoYW5nZWRUb3VjaGVzKCks
IHdpZGdldC0+bG9jYXRpb24oKSwgY2hhbmdlZFRvdWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0
aCk7CisgICAgQWRkVG91Y2hQb2ludHMoZXZlbnQudGFyZ2V0VG91Y2hlcygpLCB3aWRnZXQtPmxv
Y2F0aW9uKCksIHRhcmdldFRvdWNoZXMsICZ0YXJnZXRUb3VjaGVzTGVuZ3RoKTsKK30KKyNlbmRp
ZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uaAkocmV2aXNpb24gOTM2MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmll
dzsKIGNsYXNzIFdoZWVsRXZlbnQ7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3MgV2lkZ2V0Owog
fQogCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTW91c2VF
dmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7
CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiAvLyBUaGVz
ZSBjbGFzc2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSBXZWJJbnB1dEV2ZW50IHN1YmNsYXNz
ZXMgdG8KQEAgLTgxLDExICs4MywxMyBAQCBwdWJsaWM6CiB9OwogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hQb2ludCB0byBhIFdlYkNvcmU6OlBsYXRm
b3JtVG91Y2hQb2ludC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNo
UG9pbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoUG9pbnQmKTsKIH07
CiAKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hFdmVudCB0byBhIFdlYkNvcmU6OlBsYXRmb3JtVG91
Y2hFdmVudC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKQEAgLTExNyw2
ICsxMjEsMTYgQEAgcHVibGljOgogICAgIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdl
YkNvcmU6OktleWJvYXJkRXZlbnQmKTsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
Ly8gQ29udmVydHMgYSBXZWJDb3JlOjpUb3VjaEV2ZW50IHRvIGEgY29ycmVzcG9uZGluZyBXZWJU
b3VjaEV2ZW50LgorLy8gTk9URTogV2ViVG91Y2hFdmVudHMgaGF2ZSBhIGNhcCBvbiB0aGUgbnVt
YmVyIG9mIFdlYlRvdWNoUG9pbnRzLiBBbnkgcG9pbnRzCisvLyBleGNlZWRpbmcgdGhhdCBjYXAg
d2lsbCBiZSBkcm9wcGVkLgorY2xhc3MgV2ViVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2Vi
VG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgV2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2Vi
Q29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6VG91Y2hFdmVudCYpOworfTsKKyNlbmRpZiAv
LyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5MzYyOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA4LTIzICBFcmljIEJvcmVuICA8Ym9yZW5ldEBnbWFpbC5jb20+CisK
KyAgICAgICAgW0Nocm9taXVtXSBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0
Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQpOgorCiAyMDExLTA4
LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIHdl
YmtpdC1wZXJsIHRlc3RzIGZhaWwgb24gd2luMzIgUGVybCBkdWUgdG8gbGFjayBvZiBsaXN0IGZv
cm0gb2YgcGlwZSBvcGVuIGltcGxlbWVudGF0aW9uCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCShyZXZpc2lvbiA5MzYxOSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUxLDkgKzk1MSw5IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVu
dCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0eXBlOwogICAgIHRvdWNoRXZlbnQubW9kaWZpZXJz
ID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91Y2hFdmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0
Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAgIHRvdWNoRXZlbnQudG91Y2hQb2ludHNMZW5ndGgg
PSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAgdG91Y2hFdmVudC50b3VjaGVzTGVuZ3RoID0gdG91
Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50
cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91Y2hFdmVudC50b3VjaFBvaW50c1tpXSA9IHRvdWNo
UG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2ZW50LnRvdWNoZXNbaV0gPSB0b3VjaFBvaW50c1tp
XTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQodG91Y2hFdmVudCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106462</attachid>
            <date>2011-09-06 12:19:15 -0700</date>
            <delta_ts>2011-09-06 14:02:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66800-20110906121914.patch</filename>
            <type>text/plain</type>
            <size>10962</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU4NykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMDYgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91
Y2hFdmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hQb2ludDo6V2ViVG91Y2hQb2ludCk6CisgICAg
ICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRl
cik6CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmg6CisKIDIwMTEtMDkt
MDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyOTQyNzQpOiBGb3JtTWFuYWdlclRlc3QuUHJldmlld0Zvcm0gYW5kIEZpbGxGb3JtTm9uRW1w
dHlGaWVsZCBmYWlsIG9uIGNocm9taXVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZpc2lvbiA5NDU4NykKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ0
LDE0ICszNDQsMjUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJUb3VjaEV2ZW50IDogcHVibGljIFdl
YklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBpbnQgdG91Y2hQb2ludHNM
ZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoQ2Fw
ID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0aDsKLSAgICBXZWJUb3VjaFBvaW50IHRv
dWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKKyAgICB1bnNpZ25lZCB0b3VjaGVzTGVu
Z3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3du
LgorICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hlc1t0b3VjaGVzTGVuZ3RoQ2FwXTsKKworICAgIHVu
c2lnbmVkIGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMg
d2hvc2Ugc3RhdGUgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgV2ViVG91Y2hFdmVudAorICAg
IFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hlc0xlbmd0aENhcF07CisKKyAgICB1
bnNpZ25lZCB0YXJnZXRUb3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMg
d2hpY2ggYXJlIGN1cnJlbnRseSBkb3duIGFuZCBhcmUgdGFyZ2V0aW5nIHRoZSBldmVudCByZWNp
cGllbnQuCisgICAgV2ViVG91Y2hQb2ludCB0YXJnZXRUb3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBd
OwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViVG91
Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRFdmVudChzaXplUGFyYW0pCi0gICAgICAgICwg
dG91Y2hQb2ludHNMZW5ndGgoMCkKKyAgICAgICAgLCB0b3VjaGVzTGVuZ3RoKDApCisgICAgICAg
ICwgY2hhbmdlZFRvdWNoZXNMZW5ndGgoMCkKKyAgICAgICAgLCB0YXJnZXRUb3VjaGVzTGVuZ3Ro
KDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJUb3VjaFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVG91Y2hQb2ludC5oCShyZXZpc2lvbiA5NDU4NykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTQg
KzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlRvdWNoUG9pbnQgewogcHVi
bGljOgotICAgIGVudW0gRmluZ2VyIHsKLSAgICAgICAgRmluZ2VyRmlyc3QsCi0gICAgICAgIEZp
bmdlclNlY29uZCwKLSAgICAgICAgRmluZ2VyVGhpcmQKLSAgICB9OwotCiAgICAgV2ViVG91Y2hQ
b2ludCgpCi0gICAgICAgIDogaWQoRmluZ2VyRmlyc3QpCisgICAgICAgIDogaWQoMCkKICAgICAg
ICAgLCBzdGF0ZShTdGF0ZVVuZGVmaW5lZCkKICAgICAgICAgLCByYWRpdXNYKDApCiAgICAgICAg
ICwgcmFkaXVzWSgwKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
dmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gOTQ1ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3
LmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjaW5jbHVk
ZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTQ3LDYgKzUwLDggQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgY29uc3Qg
ZG91YmxlIGtNaWxsaXNQZXJTZWNvbmQgPSAxMDAwLjA7CisKIC8vIE1ha2VQbGF0Zm9ybU1vdXNl
RXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW91c2VFdmVudCYgZSkKQEAgLTI2MSw4ICsyNjYs
OCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVRvdWNoCiAgICAgbV9tZXRh
S2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0YUtleTsKICAgICBtX3Rp
bWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCi0gICAgICAgIG1fdG91Y2hQb2ludHMu
YXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaFBvaW50
c1tpXSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudC50b3VjaGVzTGVuZ3Ro
OyArK2kpCisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1
aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaGVzW2ldKSk7CiB9CiAjZW5kaWYKIApAQCAtMjk2LDcg
KzMwMSw3IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGQKICAgICAg
ICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51OwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuOyAvLyBTa2lwIGFsbCBvdGhlciBtb3VzZSBldmVudHMuCi0gICAgdGltZVN0YW1wU2Vj
b25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4wZS0zOworICAgIHRpbWVTdGFtcFNlY29uZHMg
PSBldmVudC50aW1lU3RhbXAoKSAvIGtNaWxsaXNQZXJTZWNvbmQ7CiAgICAgc3dpdGNoIChldmVu
dC5idXR0b24oKSkgewogICAgIGNhc2UgTGVmdEJ1dHRvbjoKICAgICAgICAgYnV0dG9uID0gV2Vi
TW91c2VFdmVudDo6QnV0dG9uTGVmdDsKQEAgLTMzOSw3ICszNDQsNyBAQCBXZWJNb3VzZVdoZWVs
RXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVu
dE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgdHlwZSA9IFdl
YklucHV0RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRp
bWVTdGFtcCgpICogMS4wZS0zOworICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3Rh
bXAoKSAvIGtNaWxsaXNQZXJTZWNvbmQ7CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2Rp
ZmllcnMoZXZlbnQpOwogICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQtPnBhcmVudCgpOwog
ICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KApAQCAtMzY5LDcgKzM3NCw3
IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICBlbHNlCiAg
ICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3RoZXIga2V5Ym9hcmQgZXZlbnRzLgogICAgIG1v
ZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKLSAgICB0aW1lU3RhbXBTZWNv
bmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9
IGV2ZW50LnRpbWVTdGFtcCgpIC8ga01pbGxpc1BlclNlY29uZDsKICAgICB3aW5kb3dzS2V5Q29k
ZSA9IGV2ZW50LmtleUNvZGUoKTsKIAogICAgIC8vIFRoZSBwbGF0Zm9ybSBrZXlldmVudCBkb2Vz
IG5vdCBleGlzdCBpZiB0aGUgZXZlbnQgd2FzIGNyZWF0ZWQgdXNpbmcKQEAgLTM3NywxMiArMzgy
LDU5IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2ZW4KICAgICBpZiAo
IWV2ZW50LmtleUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBuYXRpdmVLZXlDb2RlID0g
ZXZlbnQua2V5RXZlbnQoKS0+bmF0aXZlVmlydHVhbEtleUNvZGUoKTsKLSAgICB1bnNpZ25lZCBp
bnQgbnVtQ2hhcnMgPSBzdGQ6Om1pbihldmVudC5rZXlFdmVudCgpLT50ZXh0KCkubGVuZ3RoKCks
Ci0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oV2ViS2V5Ym9hcmRFdmVudDo6dGV4
dExlbmd0aENhcCkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtQ2hhcnM7
IGkrKykgeworICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhcmFjdGVycyA9IHN0ZDo6bWluKGV2ZW50
LmtleUV2ZW50KCktPnRleHQoKS5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYktl
eWJvYXJkRXZlbnQ6OnRleHRMZW5ndGhDYXApKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDaGFyYWN0ZXJzOyArK2kpIHsKICAgICAgICAgdGV4dFtpXSA9IGV2ZW50Lmtl
eUV2ZW50KCktPnRleHQoKVtpXTsKICAgICAgICAgdW5tb2RpZmllZFRleHRbaV0gPSBldmVudC5r
ZXlFdmVudCgpLT51bm1vZGlmaWVkVGV4dCgpW2ldOwogICAgIH0KIH0KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisKK3N0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKFRvdWNoTGlzdCogdG91
Y2hlcywgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludHMs
IHVuc2lnbmVkKiB0b3VjaFBvaW50c0xlbmd0aCkKK3sKKyAgICB1bnNpZ25lZCBudW1iZXJPZlRv
dWNoZXMgPSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5ndGgoKSwgV2ViVG91Y2hFdmVudDo6dG91Y2hl
c0xlbmd0aENhcCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVG91Y2hl
czsgKytpKSB7CisgICAgICAgIGNvbnN0IFRvdWNoKiB0b3VjaCA9IHRvdWNoZXMtPml0ZW0oaSk7
CisKKyAgICAgICAgV2ViVG91Y2hQb2ludCBwb2ludDsKKyAgICAgICAgcG9pbnQuaWQgPSB0b3Vj
aC0+aWRlbnRpZmllcigpOworICAgICAgICBwb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdlYlBvaW50
KHRvdWNoLT5zY3JlZW5YKCksIHRvdWNoLT5zY3JlZW5ZKCkpOworICAgICAgICBwb2ludC5wb3Np
dGlvbiA9IFdlYlBvaW50KHRvdWNoLT5wYWdlWCgpIC0gb2Zmc2V0LngoKSwgdG91Y2gtPnBhZ2VZ
KCkgLSBvZmZzZXQueSgpKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNoLT53ZWJraXRS
YWRpdXNYKCk7CisgICAgICAgIHBvaW50LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0UmFkaXVzWSgp
OworICAgICAgICBwb2ludC5yb3RhdGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJvdGF0aW9uQW5n
bGUoKTsKKyAgICAgICAgcG9pbnQuZm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2UoKTsKKworICAg
ICAgICB0b3VjaFBvaW50c1tpXSA9IHBvaW50OworICAgIH0KKyAgICAqdG91Y2hQb2ludHNMZW5n
dGggPSBudW1iZXJPZlRvdWNoZXM7Cit9CisKK1dlYlRvdWNoRXZlbnRCdWlsZGVyOjpXZWJUb3Vj
aEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgVG91Y2hFdmVudCYgZXZl
bnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFydEV2
ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hTdGFydDsKKyAgICBlbHNlIGlmIChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hN
b3ZlOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRF
dmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoRW5kOworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUo
KSA9PSBldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNo
Q2FuY2VsOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgdHlwZSA9IFVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1vZGlm
aWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKKyAgICB0aW1lU3RhbXBTZWNvbmRz
ID0gZXZlbnQudGltZVN0YW1wKCkgLyBrTWlsbGlzUGVyU2Vjb25kOworCisgICAgYWRkVG91Y2hQ
b2ludHMoZXZlbnQudG91Y2hlcygpLCB3aWRnZXQtPmxvY2F0aW9uKCksIHRvdWNoZXMsICZ0b3Vj
aGVzTGVuZ3RoKTsKKyAgICBhZGRUb3VjaFBvaW50cyhldmVudC5jaGFuZ2VkVG91Y2hlcygpLCB3
aWRnZXQtPmxvY2F0aW9uKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRvdWNoZXNMZW5ndGgp
OworICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnRhcmdldFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2Nh
dGlvbigpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uaAkocmV2aXNpb24gOTQ1ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmll
dzsKIGNsYXNzIFdoZWVsRXZlbnQ7CitjbGFzcyBUb3VjaEV2ZW50OwogY2xhc3MgV2lkZ2V0Owog
fQogCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViTW91c2VF
dmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7
CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogCiAvLyBUaGVz
ZSBjbGFzc2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgZnJvbSBXZWJJbnB1dEV2ZW50IHN1YmNsYXNz
ZXMgdG8KQEAgLTgxLDExICs4MywxMyBAQCBwdWJsaWM6CiB9OwogCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hQb2ludCB0byBhIFdlYkNvcmU6OlBsYXRm
b3JtVG91Y2hQb2ludC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNo
UG9pbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoUG9pbnQmKTsKIH07
CiAKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hFdmVudCB0byBhIFdlYkNvcmU6OlBsYXRmb3JtVG91
Y2hFdmVudC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRC
dWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKQEAgLTExNyw2
ICsxMjEsMTYgQEAgcHVibGljOgogICAgIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdl
YkNvcmU6OktleWJvYXJkRXZlbnQmKTsKIH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
Ly8gQ29udmVydHMgYSBXZWJDb3JlOjpUb3VjaEV2ZW50IHRvIGEgY29ycmVzcG9uZGluZyBXZWJU
b3VjaEV2ZW50LgorLy8gTk9URTogV2ViVG91Y2hFdmVudHMgaGF2ZSBhIGNhcCBvbiB0aGUgbnVt
YmVyIG9mIFdlYlRvdWNoUG9pbnRzLiBBbnkgcG9pbnRzCisvLyBleGNlZWRpbmcgdGhhdCBjYXAg
d2lsbCBiZSBkcm9wcGVkLgorY2xhc3MgV2ViVG91Y2hFdmVudEJ1aWxkZXIgOiBwdWJsaWMgV2Vi
VG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgV2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2Vi
Q29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6VG91Y2hFdmVudCYpOworfTsKKyNlbmRpZiAv
LyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5NDU4NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA5LTA2ICBFcmljIEJvcmVuICA8Ym9yZW5ldEBnbWFpbC5jb20+CisK
KyAgICAgICAgW0Nocm9taXVtXSBNb2RpZnkgV2ViVG91Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0
Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoK
KyAgICAgICAgKEV2ZW50U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQpOgorCiAyMDExLTA5
LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIGEgaGll
cmFyY2hpYWwgc3RydWN0dXJlIGZvciB0aGUgZ2FyZGVuLW8tbWF0aWMgcmVzdWx0cyB2aWV3Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCShy
ZXZpc2lvbiA5NDU4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2Vu
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1LDkgKzk1NSw5IEBAIHZvaWQgRXZlbnRTZW5k
ZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0eXBlOwog
ICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91Y2hFdmVu
dC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAgIHRvdWNo
RXZlbnQudG91Y2hQb2ludHNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAgdG91Y2hF
dmVudC50b3VjaGVzTGVuZ3RoID0gdG91Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91Y2hFdmVu
dC50b3VjaFBvaW50c1tpXSA9IHRvdWNoUG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2ZW50LnRv
dWNoZXNbaV0gPSB0b3VjaFBvaW50c1tpXTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZl
bnQodG91Y2hFdmVudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2lu
dHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106482</attachid>
            <date>2011-09-06 14:02:18 -0700</date>
            <delta_ts>2011-09-06 20:30:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66800-20110906140216.patch</filename>
            <type>text/plain</type>
            <size>10890</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU5NSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMDYgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQ6OldlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIp
OgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA5LTA2
ICBBYXJvbiBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93
IE1lZGlhU291cmNlIEFQSSB0byBiZSBlbmFibGVkIGF0IHJ1bnRpbWUuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCShyZXZpc2lvbiA5NDU5
NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQ0LDE0ICszNDQsMjUgQEAgcHVibGljOgogCiBjbGFzcyBXZWJUb3Vj
aEV2ZW50IDogcHVibGljIFdlYklucHV0RXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBjb25z
dCBpbnQgdG91Y2hQb2ludHNMZW5ndGhDYXAgPSA0OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB0b3VjaGVzTGVuZ3RoQ2FwID0gODsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0aDsKLSAg
ICBXZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsKKyAgICB1
bnNpZ25lZCB0b3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2gg
YXJlIGN1cnJlbnRseSBkb3duLgorICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hlc1t0b3VjaGVzTGVu
Z3RoQ2FwXTsKKworICAgIHVuc2lnbmVkIGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAgIC8vIExp
c3Qgb2YgYWxsIHRvdWNoZXMgd2hvc2Ugc3RhdGUgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3Qg
V2ViVG91Y2hFdmVudAorICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91Y2hlc0xl
bmd0aENhcF07CisKKyAgICB1bnNpZ25lZCB0YXJnZXRUb3VjaGVzTGVuZ3RoOworICAgIC8vIExp
c3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duIGFuZCBhcmUgdGFyZ2V0
aW5nIHRoZSBldmVudCByZWNpcGllbnQuCisgICAgV2ViVG91Y2hQb2ludCB0YXJnZXRUb3VjaGVz
W3RvdWNoZXNMZW5ndGhDYXBdOwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25lZCBzaXplUGFy
YW0gPSBzaXplb2YoV2ViVG91Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRFdmVudChzaXpl
UGFyYW0pCi0gICAgICAgICwgdG91Y2hQb2ludHNMZW5ndGgoMCkKKyAgICAgICAgLCB0b3VjaGVz
TGVuZ3RoKDApCisgICAgICAgICwgY2hhbmdlZFRvdWNoZXNMZW5ndGgoMCkKKyAgICAgICAgLCB0
YXJnZXRUb3VjaGVzTGVuZ3RoKDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCShyZXZpc2lvbiA5NDU5NSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YlRvdWNoUG9pbnQgewogcHVibGljOgotICAgIGVudW0gRmluZ2VyIHsKLSAgICAgICAgRmluZ2Vy
Rmlyc3QsCi0gICAgICAgIEZpbmdlclNlY29uZCwKLSAgICAgICAgRmluZ2VyVGhpcmQKLSAgICB9
OwotCiAgICAgV2ViVG91Y2hQb2ludCgpCi0gICAgICAgIDogaWQoRmluZ2VyRmlyc3QpCisgICAg
ICAgIDogaWQoMCkKICAgICAgICAgLCBzdGF0ZShTdGF0ZVVuZGVmaW5lZCkKICAgICAgICAgLCBy
YWRpdXNYKDApCiAgICAgICAgICwgcmFkaXVzWSgwKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAkocmV2aXNp
b24gOTQ1OTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNp
bmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNsdWRlICJUb3Vj
aEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVu
dC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTQ3
LDYgKzUwLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbGxpc1BlclNlY29uZCA9IDEwMDAuMDsKKwogLy8g
TWFrZVBsYXRmb3JtTW91c2VFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0Zm9y
bU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNb3VzZUV2ZW50JiBl
KQpAQCAtMjYxLDggKzI2Niw4IEBAIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
VG91Y2gKICAgICBtX21ldGFLZXkgPSBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpN
ZXRhS2V5OwogICAgIG1fdGltZXN0YW1wID0gZXZlbnQudGltZVN0YW1wU2Vjb25kczsKIAotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hQb2ludHNMZW5ndGg7ICsraSkKLSAgICAg
ICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcih3aWRnZXQs
IGV2ZW50LnRvdWNoUG9pbnRzW2ldKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV2
ZW50LnRvdWNoZXNMZW5ndGg7ICsraSkKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxh
dGZvcm1Ub3VjaFBvaW50QnVpbGRlcih3aWRnZXQsIGV2ZW50LnRvdWNoZXNbaV0pKTsKIH0KICNl
bmRpZgogCkBAIC0yOTYsNyArMzAxLDcgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNl
RXZlbnRCdWlsZAogICAgICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNraXAgYWxsIG90aGVyIG1vdXNlIGV2ZW50cy4K
LSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7CisgICAg
dGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOwog
ICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9uKCkpIHsKICAgICBjYXNlIExlZnRCdXR0b246CiAgICAg
ICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbkxlZnQ7CkBAIC0zMzksNyArMzQ0LDcg
QEAgV2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcjo6V2ViTW91c2VXaGVlbAogICAgIGlmIChldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkKICAgICAgICAgcmV0dXJu
OwogICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAgIHRpbWVTdGFtcFNl
Y29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAqIDEuMGUtMzsKKyAgICB0aW1lU3RhbXBTZWNvbmRz
ID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7CiAgICAgbW9kaWZpZXJzID0g
Z2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRn
ZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50c1RvV2luZG93KApA
QCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2
ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3RoZXIga2V5Ym9hcmQg
ZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKLSAg
ICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7CisgICAgdGlt
ZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOwogICAg
IHdpbmRvd3NLZXlDb2RlID0gZXZlbnQua2V5Q29kZSgpOwogCiAgICAgLy8gVGhlIHBsYXRmb3Jt
IGtleWV2ZW50IGRvZXMgbm90IGV4aXN0IGlmIHRoZSBldmVudCB3YXMgY3JlYXRlZCB1c2luZwpA
QCAtMzc3LDEyICszODIsNTkgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktleWJvYXJk
RXZlbgogICAgIGlmICghZXZlbnQua2V5RXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG5h
dGl2ZUtleUNvZGUgPSBldmVudC5rZXlFdmVudCgpLT5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpOwot
ICAgIHVuc2lnbmVkIGludCBudW1DaGFycyA9IHN0ZDo6bWluKGV2ZW50LmtleUV2ZW50KCktPnRl
eHQoKS5sZW5ndGgoKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihXZWJLZXli
b2FyZEV2ZW50Ojp0ZXh0TGVuZ3RoQ2FwKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCBudW1DaGFyczsgaSsrKSB7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzID0g
c3RkOjptaW4oZXZlbnQua2V5RXZlbnQoKS0+dGV4dCgpLmxlbmd0aCgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGV4dExlbmd0aENhcCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYXJhY3RlcnM7ICsraSkgewogICAgICAgICB0ZXh0W2ldID0gZXZlbnQua2V5RXZl
bnQoKS0+dGV4dCgpW2ldOwogICAgICAgICB1bm1vZGlmaWVkVGV4dFtpXSA9IGV2ZW50LmtleUV2
ZW50KCktPnVubW9kaWZpZWRUZXh0KClbaV07CiAgICAgfQogfQogCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKworc3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoVG91Y2hMaXN0KiB0b3VjaGVz
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5z
aWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoKQoreworICAgIHVuc2lnbmVkIG51bWJlck9mVG91Y2hl
cyA9IHN0ZDo6bWluKHRvdWNoZXMtPmxlbmd0aCgpLCBXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVu
Z3RoQ2FwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZUb3VjaGVzOyAr
K2kpIHsKKyAgICAgICAgY29uc3QgVG91Y2gqIHRvdWNoID0gdG91Y2hlcy0+aXRlbShpKTsKKwor
ICAgICAgICBXZWJUb3VjaFBvaW50IHBvaW50OworICAgICAgICBwb2ludC5pZCA9IHRvdWNoLT5p
ZGVudGlmaWVyKCk7CisgICAgICAgIHBvaW50LnNjcmVlblBvc2l0aW9uID0gV2ViUG9pbnQodG91
Y2gtPnNjcmVlblgoKSwgdG91Y2gtPnNjcmVlblkoKSk7CisgICAgICAgIHBvaW50LnBvc2l0aW9u
ID0gV2ViUG9pbnQodG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQueCgpLCB0b3VjaC0+cGFnZVkoKSAt
IG9mZnNldC55KCkpOworICAgICAgICBwb2ludC5yYWRpdXNYID0gdG91Y2gtPndlYmtpdFJhZGl1
c1goKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWSA9IHRvdWNoLT53ZWJraXRSYWRpdXNZKCk7Cisg
ICAgICAgIHBvaW50LnJvdGF0aW9uQW5nbGUgPSB0b3VjaC0+d2Via2l0Um90YXRpb25BbmdsZSgp
OworICAgICAgICBwb2ludC5mb3JjZSA9IHRvdWNoLT53ZWJraXRGb3JjZSgpOworCisgICAgICAg
IHRvdWNoUG9pbnRzW2ldID0gcG9pbnQ7CisgICAgfQorICAgICp0b3VjaFBvaW50c0xlbmd0aCA9
IG51bWJlck9mVG91Y2hlczsKK30KKworV2ViVG91Y2hFdmVudEJ1aWxkZXI6OldlYlRvdWNoRXZl
bnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBUb3VjaEV2ZW50JiBldmVudCkK
K3sKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQp
CisgICAgICAgIHR5cGUgPSBUb3VjaFN0YXJ0OworICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9
PSBldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaE1vdmU7
CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50
KQorICAgICAgICB0eXBlID0gVG91Y2hFbmQ7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09
IGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hDYW5j
ZWw7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB0
eXBlID0gVW5kZWZpbmVkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbW9kaWZpZXJz
ID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOworICAgIHRpbWVTdGFtcFNlY29uZHMgPSBl
dmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKKworICAgIGFkZFRvdWNoUG9pbnRz
KGV2ZW50LnRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCB0b3VjaGVzLCAmdG91Y2hlc0xl
bmd0aCk7CisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgd2lkZ2V0
LT5sb2NhdGlvbigpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVzTGVuZ3RoKTsKKyAg
ICBhZGRUb3VjaFBvaW50cyhldmVudC50YXJnZXRUb3VjaGVzKCksIHdpZGdldC0+bG9jYXRpb24o
KSwgdGFyZ2V0VG91Y2hlcywgJnRhcmdldFRvdWNoZXNMZW5ndGgpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFRPVUNIX0VWRU5UUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmgJKHJldmlzaW9uIDk0NTk1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBjbGFz
cyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbFZpZXc7CiBj
bGFzcyBXaGVlbEV2ZW50OworY2xhc3MgVG91Y2hFdmVudDsKIGNsYXNzIFdpZGdldDsKIH0KIApA
QCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7
CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xh
c3MgV2ViVG91Y2hFdmVudDsKIGNsYXNzIFdlYkdlc3R1cmVFdmVudDsKIAogLy8gVGhlc2UgY2xh
c3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2ViSW5wdXRFdmVudCBzdWJjbGFzc2VzIHRv
CkBAIC04MSwxMSArODMsMTMgQEAgcHVibGljOgogfTsKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisvLyBDb252ZXJ0cyBhIFdlYlRvdWNoUG9pbnQgdG8gYSBXZWJDb3JlOjpQbGF0Zm9ybVRv
dWNoUG9pbnQuCiBjbGFzcyBQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyIDogcHVibGljIFdlYkNv
cmU6OlBsYXRmb3JtVG91Y2hQb2ludCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Ub3VjaFBvaW50
QnVpbGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJUb3VjaFBvaW50Jik7CiB9OwogCisv
LyBDb252ZXJ0cyBhIFdlYlRvdWNoRXZlbnQgdG8gYSBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZl
bnQuCiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtVG91Y2hFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRl
cihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CkBAIC0xMTcsNiArMTIx
LDE2IEBAIHB1YmxpYzoKICAgICBXZWJLZXlib2FyZEV2ZW50QnVpbGRlcihjb25zdCBXZWJDb3Jl
OjpLZXlib2FyZEV2ZW50Jik7CiB9OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKy8vIENv
bnZlcnRzIGEgV2ViQ29yZTo6VG91Y2hFdmVudCB0byBhIGNvcnJlc3BvbmRpbmcgV2ViVG91Y2hF
dmVudC4KKy8vIE5PVEU6IFdlYlRvdWNoRXZlbnRzIGhhdmUgYSBjYXAgb24gdGhlIG51bWJlciBv
ZiBXZWJUb3VjaFBvaW50cy4gQW55IHBvaW50cworLy8gZXhjZWVkaW5nIHRoYXQgY2FwIHdpbGwg
YmUgZHJvcHBlZC4KK2NsYXNzIFdlYlRvdWNoRXZlbnRCdWlsZGVyIDogcHVibGljIFdlYlRvdWNo
RXZlbnQgeworcHVibGljOgorICAgIFdlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6
OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlRvdWNoRXZlbnQmKTsKK307CisjZW5kaWYgLy8gRU5B
QkxFKFRPVUNIX0VWRU5UUykKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gOTQ1OTUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wOS0wNiAgRXJpYyBCb3JlbiAgPGJvcmVuZXRAZ21haWwuY29tPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gTW9kaWZ5IFdlYlRvdWNoRXZlbnQgc3RydWN0dXJlIHRvIG1hdGNoIFdl
YkNvcmU6OlRvdWNoRXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOgorICAgICAg
ICAoRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVudCk6CisKIDIwMTEtMDktMDYgIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENoZWNr
IGluICdidWlsZCcgZm9yIGNvbXBpbGVkIGJpbmFyaWVzIGZpcnN0CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCShyZXZpc2lvbiA5NDU5NSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTU1LDkgKzk1NSw5IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50
VG91Y2hFdmVudCgKICAgICB0b3VjaEV2ZW50LnR5cGUgPSB0eXBlOwogICAgIHRvdWNoRXZlbnQu
bW9kaWZpZXJzID0gdG91Y2hNb2RpZmllcnM7CiAgICAgdG91Y2hFdmVudC50aW1lU3RhbXBTZWNv
bmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwotICAgIHRvdWNoRXZlbnQudG91Y2hQb2lu
dHNMZW5ndGggPSB0b3VjaFBvaW50cy5zaXplKCk7CisgICAgdG91Y2hFdmVudC50b3VjaGVzTGVu
Z3RoID0gdG91Y2hQb2ludHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b3VjaFBvaW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgdG91Y2hFdmVudC50b3VjaFBvaW50c1tp
XSA9IHRvdWNoUG9pbnRzW2ldOworICAgICAgICB0b3VjaEV2ZW50LnRvdWNoZXNbaV0gPSB0b3Vj
aFBvaW50c1tpXTsKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQodG91Y2hFdmVudCk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kp
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106538</attachid>
            <date>2011-09-06 20:30:11 -0700</date>
            <delta_ts>2011-09-06 21:20:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66800-20110906203009.patch</filename>
            <type>text/plain</type>
            <size>10909</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDYxNSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMDYgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQ6OldlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIp
OgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA5LTA2
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBjb25m
aXJtQ29tcG9zaXRpb25XaXRob3V0RGlzdHVyYmluZ1NlbGVjdGlvbiB0byBjYW5jZWxDb21wb3Np
dGlvbgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaAkocmV2aXNpb24gOTQ2MTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0NCwxNCArMzQ0LDI1IEBAIHB1Ymxp
YzoKIAogY2xhc3MgV2ViVG91Y2hFdmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3QgaW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gNDsKKyAgICBl
bnVtIHsgdG91Y2hlc0xlbmd0aENhcCA9IDggfTsKIAotICAgIGludCB0b3VjaFBvaW50c0xlbmd0
aDsKLSAgICBXZWJUb3VjaFBvaW50IHRvdWNoUG9pbnRzW3RvdWNoUG9pbnRzTGVuZ3RoQ2FwXTsK
KyAgICB1bnNpZ25lZCB0b3VjaGVzTGVuZ3RoOworICAgIC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMg
d2hpY2ggYXJlIGN1cnJlbnRseSBkb3duLgorICAgIFdlYlRvdWNoUG9pbnQgdG91Y2hlc1t0b3Vj
aGVzTGVuZ3RoQ2FwXTsKKworICAgIHVuc2lnbmVkIGNoYW5nZWRUb3VjaGVzTGVuZ3RoOworICAg
IC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hvc2Ugc3RhdGUgaGFzIGNoYW5nZWQgc2luY2UgdGhl
IGxhc3QgV2ViVG91Y2hFdmVudAorICAgIFdlYlRvdWNoUG9pbnQgY2hhbmdlZFRvdWNoZXNbdG91
Y2hlc0xlbmd0aENhcF07CisKKyAgICB1bnNpZ25lZCB0YXJnZXRUb3VjaGVzTGVuZ3RoOworICAg
IC8vIExpc3Qgb2YgYWxsIHRvdWNoZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBkb3duIGFuZCBhcmUg
dGFyZ2V0aW5nIHRoZSBldmVudCByZWNpcGllbnQuCisgICAgV2ViVG91Y2hQb2ludCB0YXJnZXRU
b3VjaGVzW3RvdWNoZXNMZW5ndGhDYXBdOwogCiAgICAgV2ViVG91Y2hFdmVudCh1bnNpZ25lZCBz
aXplUGFyYW0gPSBzaXplb2YoV2ViVG91Y2hFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRFdmVu
dChzaXplUGFyYW0pCi0gICAgICAgICwgdG91Y2hQb2ludHNMZW5ndGgoMCkKKyAgICAgICAgLCB0
b3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgY2hhbmdlZFRvdWNoZXNMZW5ndGgoMCkKKyAgICAg
ICAgLCB0YXJnZXRUb3VjaGVzTGVuZ3RoKDApCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCShyZXZpc2lvbiA5
NDYxNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlRvdWNoUG9pbnQgewogcHVibGljOgotICAgIGVudW0gRmluZ2VyIHsKLSAgICAgICAg
RmluZ2VyRmlyc3QsCi0gICAgICAgIEZpbmdlclNlY29uZCwKLSAgICAgICAgRmluZ2VyVGhpcmQK
LSAgICB9OwotCiAgICAgV2ViVG91Y2hQb2ludCgpCi0gICAgICAgIDogaWQoRmluZ2VyRmlyc3Qp
CisgICAgICAgIDogaWQoMCkKICAgICAgICAgLCBzdGF0ZShTdGF0ZVVuZGVmaW5lZCkKICAgICAg
ICAgLCByYWRpdXNYKDApCiAgICAgICAgICwgcmFkaXVzWSgwKQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAko
cmV2aXNpb24gOTQ2MTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2
ZW50Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiVG91Y2guaCIKKyNpbmNsdWRl
ICJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIK
QEAgLTQ3LDYgKzUwLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbGxpc1BlclNlY29uZCA9IDEwMDAuMDsK
KwogLy8gTWFrZVBsYXRmb3JtTW91c2VFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNb3VzZUV2
ZW50JiBlKQpAQCAtMjYxLDggKzI2Niw4IEBAIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBs
YXRmb3JtVG91Y2gKICAgICBtX21ldGFLZXkgPSBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2
ZW50OjpNZXRhS2V5OwogICAgIG1fdGltZXN0YW1wID0gZXZlbnQudGltZVN0YW1wU2Vjb25kczsK
IAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXZlbnQudG91Y2hQb2ludHNMZW5ndGg7ICsraSkK
LSAgICAgICAgbV90b3VjaFBvaW50cy5hcHBlbmQoUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcih3
aWRnZXQsIGV2ZW50LnRvdWNoUG9pbnRzW2ldKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV2ZW50LnRvdWNoZXNMZW5ndGg7ICsraSkKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBl
bmQoUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcih3aWRnZXQsIGV2ZW50LnRvdWNoZXNbaV0pKTsK
IH0KICNlbmRpZgogCkBAIC0yOTYsNyArMzAxLDcgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6Oldl
Yk1vdXNlRXZlbnRCdWlsZAogICAgICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6Q29udGV4dE1l
bnU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNraXAgYWxsIG90aGVyIG1vdXNlIGV2
ZW50cy4KLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7
CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vj
b25kOwogICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9uKCkpIHsKICAgICBjYXNlIExlZnRCdXR0b246
CiAgICAgICAgIGJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbkxlZnQ7CkBAIC0zMzksNyAr
MzQ0LDcgQEAgV2ViTW91c2VXaGVlbEV2ZW50QnVpbGRlcjo6V2ViTW91c2VXaGVlbAogICAgIGlm
IChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIHR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOwotICAgIHRpbWVT
dGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAqIDEuMGUtMzsKKyAgICB0aW1lU3RhbXBT
ZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7CiAgICAgbW9kaWZp
ZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIFNjcm9sbFZpZXcqIHZpZXcg
PSB3aWRnZXQtPnBhcmVudCgpOwogICAgIEludFBvaW50IHAgPSB2aWV3LT5jb250ZW50c1RvV2lu
ZG93KApAQCAtMzY5LDcgKzM3NCw3IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXli
b2FyZEV2ZW4KICAgICBlbHNlCiAgICAgICAgIHJldHVybjsgLy8gU2tpcCBhbGwgb3RoZXIga2V5
Ym9hcmQgZXZlbnRzLgogICAgIG1vZGlmaWVycyA9IGdldFdlYklucHV0TW9kaWZpZXJzKGV2ZW50
KTsKLSAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7Cisg
ICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25k
OwogICAgIHdpbmRvd3NLZXlDb2RlID0gZXZlbnQua2V5Q29kZSgpOwogCiAgICAgLy8gVGhlIHBs
YXRmb3JtIGtleWV2ZW50IGRvZXMgbm90IGV4aXN0IGlmIHRoZSBldmVudCB3YXMgY3JlYXRlZCB1
c2luZwpAQCAtMzc3LDEyICszODIsNTkgQEAgV2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktl
eWJvYXJkRXZlbgogICAgIGlmICghZXZlbnQua2V5RXZlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG5hdGl2ZUtleUNvZGUgPSBldmVudC5rZXlFdmVudCgpLT5uYXRpdmVWaXJ0dWFsS2V5Q29k
ZSgpOwotICAgIHVuc2lnbmVkIGludCBudW1DaGFycyA9IHN0ZDo6bWluKGV2ZW50LmtleUV2ZW50
KCktPnRleHQoKS5sZW5ndGgoKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihX
ZWJLZXlib2FyZEV2ZW50Ojp0ZXh0TGVuZ3RoQ2FwKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBudW1DaGFyczsgaSsrKSB7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFyYWN0
ZXJzID0gc3RkOjptaW4oZXZlbnQua2V5RXZlbnQoKS0+dGV4dCgpLmxlbmd0aCgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odGV4dExlbmd0aENhcCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkNoYXJhY3RlcnM7ICsraSkgewogICAgICAgICB0ZXh0W2ldID0gZXZlbnQu
a2V5RXZlbnQoKS0+dGV4dCgpW2ldOwogICAgICAgICB1bm1vZGlmaWVkVGV4dFtpXSA9IGV2ZW50
LmtleUV2ZW50KCktPnVubW9kaWZpZWRUZXh0KClbaV07CiAgICAgfQogfQogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworc3RhdGljIHZvaWQgYWRkVG91Y2hQb2ludHMoVG91Y2hMaXN0KiB0
b3VjaGVzLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50
cywgdW5zaWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoKQoreworICAgIHVuc2lnbmVkIG51bWJlck9m
VG91Y2hlcyA9IHN0ZDo6bWluKHRvdWNoZXMtPmxlbmd0aCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oV2ViVG91Y2hFdmVudDo6dG91Y2hlc0xlbmd0aENhcCkpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZlRvdWNoZXM7ICsraSkgeworICAgICAgICBjb25zdCBUb3VjaCog
dG91Y2ggPSB0b3VjaGVzLT5pdGVtKGkpOworCisgICAgICAgIFdlYlRvdWNoUG9pbnQgcG9pbnQ7
CisgICAgICAgIHBvaW50LmlkID0gdG91Y2gtPmlkZW50aWZpZXIoKTsKKyAgICAgICAgcG9pbnQu
c2NyZWVuUG9zaXRpb24gPSBXZWJQb2ludCh0b3VjaC0+c2NyZWVuWCgpLCB0b3VjaC0+c2NyZWVu
WSgpKTsKKyAgICAgICAgcG9pbnQucG9zaXRpb24gPSBXZWJQb2ludCh0b3VjaC0+cGFnZVgoKSAt
IG9mZnNldC54KCksIHRvdWNoLT5wYWdlWSgpIC0gb2Zmc2V0LnkoKSk7CisgICAgICAgIHBvaW50
LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0UmFkaXVzWCgpOworICAgICAgICBwb2ludC5yYWRpdXNZ
ID0gdG91Y2gtPndlYmtpdFJhZGl1c1koKTsKKyAgICAgICAgcG9pbnQucm90YXRpb25BbmdsZSA9
IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFuZ2xlKCk7CisgICAgICAgIHBvaW50LmZvcmNlID0gdG91
Y2gtPndlYmtpdEZvcmNlKCk7CisKKyAgICAgICAgdG91Y2hQb2ludHNbaV0gPSBwb2ludDsKKyAg
ICB9CisgICAgKnRvdWNoUG9pbnRzTGVuZ3RoID0gbnVtYmVyT2ZUb3VjaGVzOworfQorCitXZWJU
b3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRn
ZXQsIGNvbnN0IFRvdWNoRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCkKKyAgICAgICAgdHlwZSA9IFRvdWNoU3RhcnQ7
CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVu
dCkKKyAgICAgICAgdHlwZSA9IFRvdWNoTW92ZTsKKyAgICBlbHNlIGlmIChldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaEVuZDsK
KyAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZl
bnQpCisgICAgICAgIHR5cGUgPSBUb3VjaENhbmNlbDsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHR5cGUgPSBVbmRlZmluZWQ7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVu
dCk7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVy
U2Vjb25kOworCisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudG91Y2hlcygpLCB3aWRnZXQtPmxv
Y2F0aW9uKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoKTsKKyAgICBhZGRUb3VjaFBvaW50cyhl
dmVudC5jaGFuZ2VkVG91Y2hlcygpLCB3aWRnZXQtPmxvY2F0aW9uKCksIGNoYW5nZWRUb3VjaGVz
LCAmY2hhbmdlZFRvdWNoZXNMZW5ndGgpOworICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnRhcmdl
dFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91
Y2hlc0xlbmd0aCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklu
cHV0RXZlbnRDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkocmV2aXNpb24gOTQ2MTUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3Vz
ZUV2ZW50OwogY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFdoZWVsRXZlbnQ7CitjbGFzcyBUb3Vj
aEV2ZW50OwogY2xhc3MgV2lkZ2V0OwogfQogCkBAIC01MSw2ICs1Miw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsK
IGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogY2xhc3MgV2Vi
R2VzdHVyZUV2ZW50OwogCiAvLyBUaGVzZSBjbGFzc2VzIGFyZSB1c2VkIHRvIGNvbnZlcnQgZnJv
bSBXZWJJbnB1dEV2ZW50IHN1YmNsYXNzZXMgdG8KQEAgLTgxLDExICs4MywxMyBAQCBwdWJsaWM6
CiB9OwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hQ
b2ludCB0byBhIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludC4KIGNsYXNzIFBsYXRmb3JtVG91
Y2hQb2ludEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50IHsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNv
bnN0IFdlYlRvdWNoUG9pbnQmKTsKIH07CiAKKy8vIENvbnZlcnRzIGEgV2ViVG91Y2hFdmVudCB0
byBhIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudC4KIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVu
dEJ1aWxkZXIgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50IHsKIHB1YmxpYzoK
ICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdl
YlRvdWNoRXZlbnQmKTsKQEAgLTExNyw2ICsxMjEsMTYgQEAgcHVibGljOgogICAgIFdlYktleWJv
YXJkRXZlbnRCdWlsZGVyKGNvbnN0IFdlYkNvcmU6OktleWJvYXJkRXZlbnQmKTsKIH07CiAKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorLy8gQ29udmVydHMgYSBXZWJDb3JlOjpUb3VjaEV2ZW50
IHRvIGEgY29ycmVzcG9uZGluZyBXZWJUb3VjaEV2ZW50LgorLy8gTk9URTogV2ViVG91Y2hFdmVu
dHMgaGF2ZSBhIGNhcCBvbiB0aGUgbnVtYmVyIG9mIFdlYlRvdWNoUG9pbnRzLiBBbnkgcG9pbnRz
CisvLyBleGNlZWRpbmcgdGhhdCBjYXAgd2lsbCBiZSBkcm9wcGVkLgorY2xhc3MgV2ViVG91Y2hF
dmVudEJ1aWxkZXIgOiBwdWJsaWMgV2ViVG91Y2hFdmVudCB7CitwdWJsaWM6CisgICAgV2ViVG91
Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2ViQ29yZTo6V2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6VG91
Y2hFdmVudCYpOworfTsKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDYxNSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA5LTA2ICBFcmljIEJvcmVu
ICA8Ym9yZW5ldEBnbWFpbC5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb2RpZnkgV2ViVG91
Y2hFdmVudCBzdHJ1Y3R1cmUgdG8gbWF0Y2ggV2ViQ29yZTo6VG91Y2hFdmVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRU
b3VjaEV2ZW50KToKKwogMjAxMS0wOS0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vdmUgTlBBUEkgaGVhZGVycyBpbiBicmlkZ2UgdG8gcGx1Z2lu
cwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNw
cAkocmV2aXNpb24gOTQ2MTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVu
dFNlbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NSw5ICs5NTUsOSBAQCB2b2lkIEV2ZW50
U2VuZGVyOjpzZW5kQ3VycmVudFRvdWNoRXZlbnQoCiAgICAgdG91Y2hFdmVudC50eXBlID0gdHlw
ZTsKICAgICB0b3VjaEV2ZW50Lm1vZGlmaWVycyA9IHRvdWNoTW9kaWZpZXJzOwogICAgIHRvdWNo
RXZlbnQudGltZVN0YW1wU2Vjb25kcyA9IGdldEN1cnJlbnRFdmVudFRpbWVTZWMoKTsKLSAgICB0
b3VjaEV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoID0gdG91Y2hQb2ludHMuc2l6ZSgpOworICAgIHRv
dWNoRXZlbnQudG91Y2hlc0xlbmd0aCA9IHRvdWNoUG9pbnRzLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHRvdWNo
RXZlbnQudG91Y2hQb2ludHNbaV0gPSB0b3VjaFBvaW50c1tpXTsKKyAgICAgICAgdG91Y2hFdmVu
dC50b3VjaGVzW2ldID0gdG91Y2hQb2ludHNbaV07CiAgICAgd2VidmlldygpLT5oYW5kbGVJbnB1
dEV2ZW50KHRvdWNoRXZlbnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdWNo
UG9pbnRzLnNpemUoKTsgKytpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106541</attachid>
            <date>2011-09-06 21:20:37 -0700</date>
            <delta_ts>2011-09-07 11:31:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66800-20110906212036.patch</filename>
            <type>text/plain</type>
            <size>11265</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDYzMSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMDYgIEVyaWMgQm9yZW4gIDxib3JlbmV0QGdtYWlsLmNvbT4KKworICAgICAg
ICBbQ2hyb21pdW1dIE1vZGlmeSBXZWJUb3VjaEV2ZW50IHN0cnVjdHVyZSB0byBtYXRjaCBXZWJD
b3JlOjpUb3VjaEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQ6OldlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9XZWJUb3VjaFBvaW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoUG9pbnQ6OldlYlRvdWNoUG9pbnQpOgorICAgICAg
ICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtVG91Y2hFdmVudEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIp
OgorICAgICAgICAqIHNyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oOgorCiAyMDExLTA5LTA2
ICBCZW4gU21pdGggIDxiaW5qaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBG
aXggV2ViRnJhbWVDbGllbnQgcmVjZWl2aW5nIGlzUmVkaXJlY3Qgd2hlbiByZWxvYWRpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgJKHJl
dmlzaW9uIDk0NjMxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsMTQgKzM0NCwyNSBAQCBwdWJsaWM6CiAKIGNs
YXNzIFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViSW5wdXRFdmVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0IGludCB0b3VjaFBvaW50c0xlbmd0aENhcCA9IDQ7CisgICAgZW51bSB7IHRv
dWNoZXNMZW5ndGhDYXAgPSA4IH07CiAKLSAgICBpbnQgdG91Y2hQb2ludHNMZW5ndGg7Ci0gICAg
V2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0aENhcF07CisgICAgdW5z
aWduZWQgdG91Y2hlc0xlbmd0aDsKKyAgICAvLyBMaXN0IG9mIGFsbCB0b3VjaGVzIHdoaWNoIGFy
ZSBjdXJyZW50bHkgZG93bi4KKyAgICBXZWJUb3VjaFBvaW50IHRvdWNoZXNbdG91Y2hlc0xlbmd0
aENhcF07CisKKyAgICB1bnNpZ25lZCBjaGFuZ2VkVG91Y2hlc0xlbmd0aDsKKyAgICAvLyBMaXN0
IG9mIGFsbCB0b3VjaGVzIHdob3NlIHN0YXRlIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IFdl
YlRvdWNoRXZlbnQKKyAgICBXZWJUb3VjaFBvaW50IGNoYW5nZWRUb3VjaGVzW3RvdWNoZXNMZW5n
dGhDYXBdOworCisgICAgdW5zaWduZWQgdGFyZ2V0VG91Y2hlc0xlbmd0aDsKKyAgICAvLyBMaXN0
IG9mIGFsbCB0b3VjaGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgZG93biBhbmQgYXJlIHRhcmdldGlu
ZyB0aGUgZXZlbnQgcmVjaXBpZW50LgorICAgIFdlYlRvdWNoUG9pbnQgdGFyZ2V0VG91Y2hlc1t0
b3VjaGVzTGVuZ3RoQ2FwXTsKIAogICAgIFdlYlRvdWNoRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFt
ID0gc2l6ZW9mKFdlYlRvdWNoRXZlbnQpKQogICAgICAgICA6IFdlYklucHV0RXZlbnQoc2l6ZVBh
cmFtKQotICAgICAgICAsIHRvdWNoUG9pbnRzTGVuZ3RoKDApCisgICAgICAgICwgdG91Y2hlc0xl
bmd0aCgwKQorICAgICAgICAsIGNoYW5nZWRUb3VjaGVzTGVuZ3RoKDApCisgICAgICAgICwgdGFy
Z2V0VG91Y2hlc0xlbmd0aCgwKQogICAgIHsKICAgICB9CiB9OwpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAkocmV2aXNpb24gOTQ2MzEpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUb3VjaFBvaW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDE0ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJU
b3VjaFBvaW50IHsKIHB1YmxpYzoKLSAgICBlbnVtIEZpbmdlciB7Ci0gICAgICAgIEZpbmdlckZp
cnN0LAotICAgICAgICBGaW5nZXJTZWNvbmQsCi0gICAgICAgIEZpbmdlclRoaXJkCi0gICAgfTsK
LQogICAgIFdlYlRvdWNoUG9pbnQoKQotICAgICAgICA6IGlkKEZpbmdlckZpcnN0KQorICAgICAg
ICA6IGlkKDApCiAgICAgICAgICwgc3RhdGUoU3RhdGVVbmRlZmluZWQpCiAgICAgICAgICwgcmFk
aXVzWCgwKQogICAgICAgICAsIHJhZGl1c1koMCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAJKHJldmlzaW9u
IDk0NjMxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZl
cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw5IEBACiAjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVmlldy5oIgorI2luY2x1ZGUgIlRvdWNoLmgiCisjaW5jbHVkZSAiVG91Y2hF
dmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC00Nyw2
ICs1MCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorc3RhdGljIGNvbnN0IGRvdWJsZSBtaWxsaXNQZXJTZWNvbmQgPSAxMDAwLjA7CisKIC8vIE1h
a2VQbGF0Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1N
b3VzZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW91c2VFdmVudCYgZSkK
QEAgLTI2MSw4ICsyNjYsOCBAQCBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVRv
dWNoCiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubW9kaWZpZXJzICYgV2ViSW5wdXRFdmVudDo6TWV0
YUtleTsKICAgICBtX3RpbWVzdGFtcCA9IGV2ZW50LnRpbWVTdGFtcFNlY29uZHM7CiAKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoUG9pbnRzTGVuZ3RoOyArK2kpCi0gICAgICAg
IG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBl
dmVudC50b3VjaFBvaW50c1tpXSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVu
dC50b3VjaGVzTGVuZ3RoOyArK2kpCisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRm
b3JtVG91Y2hQb2ludEJ1aWxkZXIod2lkZ2V0LCBldmVudC50b3VjaGVzW2ldKSk7CiB9CiAjZW5k
aWYKIApAQCAtMjk2LDcgKzMwMSw3IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2
ZW50QnVpbGQKICAgICAgICAgdHlwZSA9IFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51OwogICAg
IGVsc2UKICAgICAgICAgcmV0dXJuOyAvLyBTa2lwIGFsbCBvdGhlciBtb3VzZSBldmVudHMuCi0g
ICAgdGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4wZS0zOworICAgIHRp
bWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKICAg
ICBzd2l0Y2ggKGV2ZW50LmJ1dHRvbigpKSB7CiAgICAgY2FzZSBMZWZ0QnV0dG9uOgogICAgICAg
ICBidXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0OwpAQCAtMzM5LDcgKzM0NCw3IEBA
IFdlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWwKICAgICBpZiAoZXZlbnQu
dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpCiAgICAgICAgIHJldHVybjsK
ICAgICB0eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDsKLSAgICB0aW1lU3RhbXBTZWNv
bmRzID0gZXZlbnQudGltZVN0YW1wKCkgKiAxLjBlLTM7CisgICAgdGltZVN0YW1wU2Vjb25kcyA9
IGV2ZW50LnRpbWVTdGFtcCgpIC8gbWlsbGlzUGVyU2Vjb25kOwogICAgIG1vZGlmaWVycyA9IGdl
dFdlYklucHV0TW9kaWZpZXJzKGV2ZW50KTsKICAgICBTY3JvbGxWaWV3KiB2aWV3ID0gd2lkZ2V0
LT5wYXJlbnQoKTsKICAgICBJbnRQb2ludCBwID0gdmlldy0+Y29udGVudHNUb1dpbmRvdygKQEAg
LTM2OSw3ICszNzQsNyBAQCBXZWJLZXlib2FyZEV2ZW50QnVpbGRlcjo6V2ViS2V5Ym9hcmRFdmVu
CiAgICAgZWxzZQogICAgICAgICByZXR1cm47IC8vIFNraXAgYWxsIG90aGVyIGtleWJvYXJkIGV2
ZW50cy4KICAgICBtb2RpZmllcnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7Ci0gICAg
dGltZVN0YW1wU2Vjb25kcyA9IGV2ZW50LnRpbWVTdGFtcCgpICogMS4wZS0zOworICAgIHRpbWVT
dGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKICAgICB3
aW5kb3dzS2V5Q29kZSA9IGV2ZW50LmtleUNvZGUoKTsKIAogICAgIC8vIFRoZSBwbGF0Zm9ybSBr
ZXlldmVudCBkb2VzIG5vdCBleGlzdCBpZiB0aGUgZXZlbnQgd2FzIGNyZWF0ZWQgdXNpbmcKQEAg
LTM3NywxMiArMzgyLDU5IEBAIFdlYktleWJvYXJkRXZlbnRCdWlsZGVyOjpXZWJLZXlib2FyZEV2
ZW4KICAgICBpZiAoIWV2ZW50LmtleUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICBuYXRp
dmVLZXlDb2RlID0gZXZlbnQua2V5RXZlbnQoKS0+bmF0aXZlVmlydHVhbEtleUNvZGUoKTsKLSAg
ICB1bnNpZ25lZCBpbnQgbnVtQ2hhcnMgPSBzdGQ6Om1pbihldmVudC5rZXlFdmVudCgpLT50ZXh0
KCkubGVuZ3RoKCksCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oV2ViS2V5Ym9h
cmRFdmVudDo6dGV4dExlbmd0aENhcCkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgbnVtQ2hhcnM7IGkrKykgeworICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhcmFjdGVycyA9IHN0
ZDo6bWluKGV2ZW50LmtleUV2ZW50KCktPnRleHQoKS5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHRleHRMZW5ndGhDYXApKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZDaGFyYWN0ZXJzOyArK2kpIHsKICAgICAgICAgdGV4dFtpXSA9IGV2ZW50LmtleUV2ZW50
KCktPnRleHQoKVtpXTsKICAgICAgICAgdW5tb2RpZmllZFRleHRbaV0gPSBldmVudC5rZXlFdmVu
dCgpLT51bm1vZGlmaWVkVGV4dCgpW2ldOwogICAgIH0KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisKK3N0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKFRvdWNoTGlzdCogdG91Y2hlcywg
Y29uc3QgSW50UG9pbnQmIG9mZnNldCwgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludHMsIHVuc2ln
bmVkKiB0b3VjaFBvaW50c0xlbmd0aCkKK3sKKyAgICB1bnNpZ25lZCBudW1iZXJPZlRvdWNoZXMg
PSBzdGQ6Om1pbih0b3VjaGVzLT5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdlYlRv
dWNoRXZlbnQ6OnRvdWNoZXNMZW5ndGhDYXApKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZUb3VjaGVzOyArK2kpIHsKKyAgICAgICAgY29uc3QgVG91Y2gqIHRvdWNoID0g
dG91Y2hlcy0+aXRlbShpKTsKKworICAgICAgICBXZWJUb3VjaFBvaW50IHBvaW50OworICAgICAg
ICBwb2ludC5pZCA9IHRvdWNoLT5pZGVudGlmaWVyKCk7CisgICAgICAgIHBvaW50LnNjcmVlblBv
c2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnNjcmVlblgoKSwgdG91Y2gtPnNjcmVlblkoKSk7Cisg
ICAgICAgIHBvaW50LnBvc2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnBhZ2VYKCkgLSBvZmZzZXQu
eCgpLCB0b3VjaC0+cGFnZVkoKSAtIG9mZnNldC55KCkpOworICAgICAgICBwb2ludC5yYWRpdXNY
ID0gdG91Y2gtPndlYmtpdFJhZGl1c1goKTsKKyAgICAgICAgcG9pbnQucmFkaXVzWSA9IHRvdWNo
LT53ZWJraXRSYWRpdXNZKCk7CisgICAgICAgIHBvaW50LnJvdGF0aW9uQW5nbGUgPSB0b3VjaC0+
d2Via2l0Um90YXRpb25BbmdsZSgpOworICAgICAgICBwb2ludC5mb3JjZSA9IHRvdWNoLT53ZWJr
aXRGb3JjZSgpOworCisgICAgICAgIHRvdWNoUG9pbnRzW2ldID0gcG9pbnQ7CisgICAgfQorICAg
ICp0b3VjaFBvaW50c0xlbmd0aCA9IG51bWJlck9mVG91Y2hlczsKK30KKworV2ViVG91Y2hFdmVu
dEJ1aWxkZXI6OldlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25z
dCBUb3VjaEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFt
ZXMoKS50b3VjaHN0YXJ0RXZlbnQpCisgICAgICAgIHR5cGUgPSBUb3VjaFN0YXJ0OworICAgIGVs
c2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQpCisgICAg
ICAgIHR5cGUgPSBUb3VjaE1vdmU7CisgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50
TmFtZXMoKS50b3VjaGVuZEV2ZW50KQorICAgICAgICB0eXBlID0gVG91Y2hFbmQ7CisgICAgZWxz
ZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50KQorICAg
ICAgICB0eXBlID0gVG91Y2hDYW5jZWw7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB0eXBlID0gVW5kZWZpbmVkOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOworICAg
IHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsK
KworICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigp
LCB0b3VjaGVzLCAmdG91Y2hlc0xlbmd0aCk7CisgICAgYWRkVG91Y2hQb2ludHMoZXZlbnQuY2hh
bmdlZFRvdWNoZXMoKSwgd2lkZ2V0LT5sb2NhdGlvbigpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5n
ZWRUb3VjaGVzTGVuZ3RoKTsKKyAgICBhZGRUb3VjaFBvaW50cyhldmVudC50YXJnZXRUb3VjaGVz
KCksIHdpZGdldC0+bG9jYXRpb24oKSwgdGFyZ2V0VG91Y2hlcywgJnRhcmdldFRvdWNoZXNMZW5n
dGgpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50
Q29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklucHV0RXZlbnRDb252ZXJzaW9uLmgJKHJldmlzaW9uIDk0NjMxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91c2VFdmVudDsK
IGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBXaGVlbEV2ZW50OworY2xhc3MgVG91Y2hFdmVudDsK
IGNsYXNzIFdpZGdldDsKIH0KIApAQCAtNTEsNiArNTIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViVG91Y2hFdmVudDsKIGNsYXNzIFdlYkdlc3R1cmVF
dmVudDsKIAogLy8gVGhlc2UgY2xhc3NlcyBhcmUgdXNlZCB0byBjb252ZXJ0IGZyb20gV2ViSW5w
dXRFdmVudCBzdWJjbGFzc2VzIHRvCkBAIC04MSwxMSArODMsMTMgQEAgcHVibGljOgogfTsKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisvLyBDb252ZXJ0cyBhIFdlYlRvdWNoUG9pbnQgdG8g
YSBXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQuCiBjbGFzcyBQbGF0Zm9ybVRvdWNoUG9pbnRC
dWlsZGVyIDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludCB7CiBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJU
b3VjaFBvaW50Jik7CiB9OwogCisvLyBDb252ZXJ0cyBhIFdlYlRvdWNoRXZlbnQgdG8gYSBXZWJD
b3JlOjpQbGF0Zm9ybVRvdWNoRXZlbnQuCiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVy
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxh
dGZvcm1Ub3VjaEV2ZW50QnVpbGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJUb3VjaEV2
ZW50Jik7CkBAIC0xMTcsNiArMTIxLDE2IEBAIHB1YmxpYzoKICAgICBXZWJLZXlib2FyZEV2ZW50
QnVpbGRlcihjb25zdCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Jik7CiB9OwogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKy8vIENvbnZlcnRzIGEgV2ViQ29yZTo6VG91Y2hFdmVudCB0byBhIGNv
cnJlc3BvbmRpbmcgV2ViVG91Y2hFdmVudC4KKy8vIE5PVEU6IFdlYlRvdWNoRXZlbnRzIGhhdmUg
YSBjYXAgb24gdGhlIG51bWJlciBvZiBXZWJUb3VjaFBvaW50cy4gQW55IHBvaW50cworLy8gZXhj
ZWVkaW5nIHRoYXQgY2FwIHdpbGwgYmUgZHJvcHBlZC4KK2NsYXNzIFdlYlRvdWNoRXZlbnRCdWls
ZGVyIDogcHVibGljIFdlYlRvdWNoRXZlbnQgeworcHVibGljOgorICAgIFdlYlRvdWNoRXZlbnRC
dWlsZGVyKGNvbnN0IFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYkNvcmU6OlRvdWNoRXZlbnQm
KTsKK307CisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ2MzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wOS0wNiAgRXJpYyBCb3JlbiAgPGJvcmVu
ZXRAZ21haWwuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW9kaWZ5IFdlYlRvdWNoRXZlbnQg
c3RydWN0dXJlIHRvIG1hdGNoIFdlYkNvcmU6OlRvdWNoRXZlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODAwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZl
bnRTZW5kZXIuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnNlbmRDdXJyZW50VG91Y2hFdmVu
dCk6CisKIDIwMTEtMDktMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBnYXJkZW4tby1tYXRpYyBkZXRhaWxzIHZpZXcgc2hvdWxkIGhhdmluZyB3b3JraW5nIHJl
YmFzZWxpbmUgYW5kIG5leHQvcHJldmlvdXMgYnV0dG9ucwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAkocmV2aXNpb24gOTQ2MzEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk0OCwxNiArOTQ4LDE2IEBAIHZvaWQgRXZlbnRTZW5kZXI6OmNhbmNlbFRvdWNoUG9p
bnQoY29uc3QKIAogdm9pZCBFdmVudFNlbmRlcjo6c2VuZEN1cnJlbnRUb3VjaEV2ZW50KGNvbnN0
IFdlYklucHV0RXZlbnQ6OlR5cGUgdHlwZSkKIHsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFdlYlRvdWNoRXZlbnQ6OnRvdWNoUG9pbnRzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRz
LnNpemUoKSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50
Ojp0b3VjaGVzTGVuZ3RoQ2FwKSA+IHRvdWNoUG9pbnRzLnNpemUoKSk7CiAgICAgd2Vidmlldygp
LT5sYXlvdXQoKTsKIAogICAgIFdlYlRvdWNoRXZlbnQgdG91Y2hFdmVudDsKICAgICB0b3VjaEV2
ZW50LnR5cGUgPSB0eXBlOwogICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzID0gdG91Y2hNb2RpZmll
cnM7CiAgICAgdG91Y2hFdmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGlt
ZVNlYygpOwotICAgIHRvdWNoRXZlbnQudG91Y2hQb2ludHNMZW5ndGggPSB0b3VjaFBvaW50cy5z
aXplKCk7CisgICAgdG91Y2hFdmVudC50b3VjaGVzTGVuZ3RoID0gdG91Y2hQb2ludHMuc2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3VjaFBvaW50cy5zaXplKCk7ICsraSkK
LSAgICAgICAgdG91Y2hFdmVudC50b3VjaFBvaW50c1tpXSA9IHRvdWNoUG9pbnRzW2ldOworICAg
ICAgICB0b3VjaEV2ZW50LnRvdWNoZXNbaV0gPSB0b3VjaFBvaW50c1tpXTsKICAgICB3ZWJ2aWV3
KCktPmhhbmRsZUlucHV0RXZlbnQodG91Y2hFdmVudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdG91Y2hQb2ludHMuc2l6ZSgpOyArK2kpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>